diff options
642 files changed, 19535 insertions, 7074 deletions
diff --git a/api/current.txt b/api/current.txt index 3ec7f447e8b9..cd78602d9cd9 100644 --- a/api/current.txt +++ b/api/current.txt @@ -9808,6 +9808,7 @@ package android.content { field public static final int BIND_IMPORTANT = 64; // 0x40 field public static final int BIND_INCLUDE_CAPABILITIES = 4096; // 0x1000 field public static final int BIND_NOT_FOREGROUND = 4; // 0x4 + field public static final int BIND_NOT_PERCEPTIBLE = 256; // 0x100 field public static final int BIND_WAIVE_PRIORITY = 32; // 0x20 field public static final String BIOMETRIC_SERVICE = "biometric"; field public static final String BLUETOOTH_SERVICE = "bluetooth"; @@ -47843,6 +47844,7 @@ package android.util { field public static final int DENSITY_400 = 400; // 0x190 field public static final int DENSITY_420 = 420; // 0x1a4 field public static final int DENSITY_440 = 440; // 0x1b8 + field public static final int DENSITY_450 = 450; // 0x1c2 field public static final int DENSITY_560 = 560; // 0x230 field public static final int DENSITY_600 = 600; // 0x258 field public static final int DENSITY_DEFAULT = 160; // 0xa0 diff --git a/api/test-current.txt b/api/test-current.txt index 1a912a1c69b1..1dc6faad3764 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -646,6 +646,7 @@ package android.content { method public void setContentCaptureOptions(@Nullable android.content.ContentCaptureOptions); field public static final String BUGREPORT_SERVICE = "bugreport"; field public static final String CONTENT_CAPTURE_MANAGER_SERVICE = "content_capture"; + field public static final String PERMISSION_SERVICE = "permission"; field public static final String ROLLBACK_SERVICE = "rollback"; field public static final String STATUS_BAR_SERVICE = "statusbar"; field public static final String TEST_NETWORK_SERVICE = "test_network"; @@ -2214,6 +2215,18 @@ package android.permission { method public abstract void onRevokeRuntimePermissions(@NonNull java.util.Map<java.lang.String,java.util.List<java.lang.String>>); } + public final class PermissionManager { + method @IntRange(from=0) @RequiresPermission("android.permission.ADJUST_RUNTIME_PERMISSIONS_POLICY") public int getRuntimePermissionsVersion(); + method @NonNull public java.util.List<android.permission.PermissionManager.SplitPermissionInfo> getSplitPermissions(); + method @RequiresPermission("android.permission.ADJUST_RUNTIME_PERMISSIONS_POLICY") public void setRuntimePermissionsVersion(@IntRange(from=0) int); + } + + public static final class PermissionManager.SplitPermissionInfo { + method @NonNull public java.util.List<java.lang.String> getNewPermissions(); + method @NonNull public String getSplitPermission(); + method public int getTargetSdk(); + } + public final class RuntimePermissionPresentationInfo implements android.os.Parcelable { ctor public RuntimePermissionPresentationInfo(@NonNull CharSequence, boolean, boolean); method public int describeContents(); @@ -2281,6 +2294,7 @@ package android.provider { field public static final String NAMESPACE_PRIVACY = "privacy"; field public static final String NAMESPACE_ROLLBACK = "rollback"; field public static final String NAMESPACE_ROLLBACK_BOOT = "rollback_boot"; + field public static final String NAMESPACE_WINDOW_MANAGER = "android:window_manager"; } public static interface DeviceConfig.OnPropertiesChangedListener { @@ -2297,6 +2311,10 @@ package android.provider { method @Nullable public String getString(@NonNull String, @Nullable String); } + public static interface DeviceConfig.WindowManager { + field public static final String KEY_SYSTEM_GESTURE_EXCLUSION_LIMIT_DP = "system_gesture_exclusion_limit_dp"; + } + public final class MediaStore { method @RequiresPermission(android.Manifest.permission.CLEAR_APP_USER_DATA) public static void deleteContributedMedia(android.content.Context, String, android.os.UserHandle) throws java.io.IOException; method @RequiresPermission(android.Manifest.permission.CLEAR_APP_USER_DATA) public static long getContributedMediaSize(android.content.Context, String, android.os.UserHandle) throws java.io.IOException; @@ -3460,6 +3478,11 @@ package android.view.inputmethod { method public boolean isInputMethodPickerShown(); } + public class InputMethodSystemProperty { + ctor public InputMethodSystemProperty(); + field public static final boolean MULTI_CLIENT_IME_ENABLED; + } + } package android.view.inspector { diff --git a/cmds/app_process/Android.mk b/cmds/app_process/Android.mk index 72fe0516f480..570d74048e03 100644 --- a/cmds/app_process/Android.mk +++ b/cmds/app_process/Android.mk @@ -5,7 +5,7 @@ app_process_common_shared_libs := \ libbinder \ libcutils \ libdl \ - libhwbinder \ + libhidlbase \ liblog \ libnativeloader \ libutils \ diff --git a/cmds/incident_helper/src/main.cpp b/cmds/incident_helper/src/main.cpp index 809a77163fb4..ff5fd86cf11e 100644 --- a/cmds/incident_helper/src/main.cpp +++ b/cmds/incident_helper/src/main.cpp @@ -72,6 +72,8 @@ static TextParserBase* selectParser(int section) { return new PsParser(); case 2006: return new BatteryTypeParser(); + case 3026: // system_trace is already a serialized protobuf + return new NoopParser(); default: // Return no op parser when no specific ones are implemented. return new NoopParser(); diff --git a/cmds/incidentd/src/Section.cpp b/cmds/incidentd/src/Section.cpp index 85c5a20174c3..1572114c639f 100644 --- a/cmds/incidentd/src/Section.cpp +++ b/cmds/incidentd/src/Section.cpp @@ -67,6 +67,8 @@ bool section_requires_specific_mention(int sectionId) { switch (sectionId) { case 3025: // restricted_images return true; + case 3026: // system_trace + return true; default: return false; } diff --git a/cmds/statsd/src/StatsLogProcessor.cpp b/cmds/statsd/src/StatsLogProcessor.cpp index 4e0a8ebdf380..ff7416c4b9e0 100644 --- a/cmds/statsd/src/StatsLogProcessor.cpp +++ b/cmds/statsd/src/StatsLogProcessor.cpp @@ -269,6 +269,7 @@ void StatsLogProcessor::OnLogEvent(LogEvent* event) { if (lastBroadcastTime != mLastActivationBroadcastTimes.end()) { if (currentTimestampNs - lastBroadcastTime->second < StatsdStats::kMinActivationBroadcastPeriodNs) { + StatsdStats::getInstance().noteActivationBroadcastGuardrailHit(uid); VLOG("StatsD would've sent an activation broadcast but the rate limit stopped us."); return; } diff --git a/cmds/statsd/src/atoms.proto b/cmds/statsd/src/atoms.proto index 495a09f2e99a..eed7f62eac34 100644 --- a/cmds/statsd/src/atoms.proto +++ b/cmds/statsd/src/atoms.proto @@ -303,10 +303,26 @@ message Atom { ContentCaptureSessionEvents content_capture_session_events = 208; ContentCaptureFlushed content_capture_flushed = 209; LocationManagerApiUsageReported location_manager_api_usage_reported = 210; + ReviewPermissionsFragmentResultReported review_permissions_fragment_result_reported = + 211 [(log_from_module) = "permissioncontroller"]; + RuntimePermissionsUpgradeResult runtime_permissions_upgrade_result = + 212 [(log_from_module) = "permissioncontroller"]; + GrantPermissionsActivityButtonActions grant_permissions_activity_button_actions = + 213 [(log_from_module) = "permissioncontroller"]; + LocationAccessCheckNotificationAction location_access_check_notification_action = + 214 [(log_from_module) = "permissioncontroller"]; + AppPermissionFragmentActionReported app_permission_fragment_action_reported = + 215 [(log_from_module) = "permissioncontroller"]; + AppPermissionFragmentViewed app_permission_fragment_viewed = + 216 [(log_from_module) = "permissioncontroller"]; + AppPermissionsFragmentViewed app_permissions_fragment_viewed = + 217 [(log_from_module) = "permissioncontroller"]; + PermissionAppsFragmentViewed permission_apps_fragment_viewed = + 218 [(log_from_module) = "permissioncontroller"]; } // Pulled events will start at field 10000. - // Next: 10059 + // Next: 10062 oneof pulled { WifiBytesTransfer wifi_bytes_transfer = 10000; WifiBytesTransferByFgBg wifi_bytes_transfer_by_fg_bg = 10001; @@ -369,6 +385,7 @@ message Atom { FaceSettings face_settings = 10058; CoolingDevice cooling_device = 10059; AppOps app_ops = 10060; + ProcessSystemIonHeapSize process_system_ion_heap_size = 10061; } // DO NOT USE field numbers above 100,000 in AOSP. @@ -3942,7 +3959,7 @@ message ProcessMemoryState { optional int64 page_major_fault = 5; // RSS - // Value is read from /proc/PID/stat, field 24. Or from memory.stat, field + // Value is read from /proc/PID/status. Or from memory.stat, field // total_rss if per-app memory cgroups are enabled. optional int64 rss_in_bytes = 6; @@ -3962,6 +3979,9 @@ message ProcessMemoryState { // Elapsed real time when the process started. // Value is read from /proc/PID/stat, field 22. 0 if read from per-app memory cgroups. optional int64 start_time_nanos = 10; + + // Anonymous page size plus swap size. Values are read from /proc/PID/status. + optional int32 anon_rss_and_swap_in_kilobytes = 11; } /* @@ -3984,7 +4004,7 @@ message NativeProcessMemoryState { optional int64 page_major_fault = 4; // RSS - // Value read from /proc/PID/stat, field 24. + // Value read from /proc/PID/status. optional int64 rss_in_bytes = 5; // Deprecated: use ProcessMemoryHighWaterMark atom instead. Always 0. @@ -3997,6 +4017,9 @@ message NativeProcessMemoryState { // SWAP // Value read from /proc/PID/status, field VmSwap. optional int64 swap_in_bytes = 8; + + // Anonymous page size plus swap size. Values are read from /proc/PID/status. + optional int32 anon_rss_and_swap_in_kilobytes = 9; } /* @@ -6347,6 +6370,28 @@ message SystemIonHeapSize { optional int64 size_in_bytes = 1; } +/* + * Logs the per-process size of the system ion heap. + * + * Pulled from StatsCompanionService. + */ +message ProcessSystemIonHeapSize { + // The uid if available. -1 means not available. + optional int32 uid = 1 [(is_uid) = true]; + + // The process name (from /proc/PID/cmdline). + optional string process_name = 2; + + // Sum of sizes of all allocations. + optional int32 total_size_in_kilobytes = 3; + + // Number of allocations. + optional int32 allocation_count = 4; + + // Size of the largest allocation. + optional int32 max_size_in_kilobytes = 5; +} + /** * Push network stack events. * @@ -6544,3 +6589,190 @@ message LocationManagerApiUsageReported { // Categorized to 3 types that are interesting from location's perspective. optional android.stats.location.ActivityImportance activiy_importance = 12; } + +/** + * Information about a permission grant or denial made by user inside ReviewPermissionsFragment + */ +message ReviewPermissionsFragmentResultReported { + // unique value identifying a permission group change. A permission group change might result + // in multiple of these atoms + optional int64 change_id = 1; + + // UID of package the permission belongs to + optional int32 uid = 2 [(is_uid) = true]; + + // Name of package the permission belongs to + optional string package_name = 3; + + // The permission to be granted + optional string permission_name = 4; + + // The result of the permission grant + optional bool permission_granted = 5; +} + +/** +* Information about results of permission upgrade by RuntimePermissionsUpgradeController +* Logged from: RuntimePermissionUpdgradeController +*/ +message RuntimePermissionsUpgradeResult { + // Permission granted as result of upgrade + optional string permission_name = 1; + + // UID of package granted permission + optional int32 uid = 2 [(is_uid) = true]; + + // Name of package granted permission + optional string package_name = 3; +} + +/** +* Information about a buttons presented in GrantPermissionsActivty and choice made by user +*/ +message GrantPermissionsActivityButtonActions { + // Permission granted as result of upgrade + optional string permission_group_name = 1; + + // UID of package granted permission + optional int32 uid = 2 [(is_uid) = true]; + + // Name of package requesting permission + optional string package_name = 3; + + // Buttons presented in the dialog - bit flags, bit numbers are in accordance with + // LABEL_ constants in GrantPermissionActivity.java + optional int32 buttons_presented = 4; + + // Button clicked by user - same as bit flags in buttons_presented with only single bit set + optional int32 button_clicked = 5; +} + +/** + * Information about LocationAccessCheck notification presented to user + */ +message LocationAccessCheckNotificationAction { + + // id which identifies single session of user interacting with permission controller + optional int64 session_id = 1; + + // Uid of package for which location access check is presented + optional int32 package_uid = 2; + + // Name of package for which location access check is presented + optional string package_name = 3; + + enum Result { + UNDEFINED = 0; + // notification was presented to the user + NOTIFICATION_PRESENTED = 1; + // notification was declined by the user + NOTIFICATION_DECLINED = 2; + // notification was clicked by the user + NOTIFICATION_CLICKED = 3; + } + + // View / interaction recorded + optional Result result = 4; +} + +/** + * Information about a permission grant or revoke made by user inside AppPermissionFragment + */ +message AppPermissionFragmentActionReported { + // id which identifies single session of user interacting with permission controller + optional int64 session_id = 1; + + // unique value identifying a permission group change. A permission group change might result + // in multiple of these atoms + optional int64 change_id = 2; + + // UID of package the permission belongs to + optional int32 uid = 3 [(is_uid) = true]; + + // Name of package the permission belongs to + optional string package_name = 4; + + // The permission to be granted + optional string permission_name = 5; + + // The result of the permission grant + optional bool permission_granted = 6; +} + +/** +* Information about a AppPermissionFragment viewed by user +*/ +message AppPermissionFragmentViewed { + // id which identifies single session of user interacting with permission controller + optional int64 session_id = 1; + + // UID of package for which permissions are viewed + optional int32 uid = 2 [(is_uid) = true]; + + // Name of package for which permissions are viewed + optional string package_name = 3; + + // Permission group viewed + optional string permission_group_name = 4; +} + +/** +* Information about a AppPermissionsFragment viewed by user +*/ +message AppPermissionsFragmentViewed { + // id which identifies single session of user interacting with permission controller + optional int64 session_id = 1; + + // id which identifies single view as every view might have several logging records + // with different package information attached + optional int64 view_id = 2; + + // Permission group viewed + optional string permission_group_name = 3; + + // UID of package for which permissions are viewed + optional int32 uid = 4 [(is_uid) = true]; + + // Name of package for which permissions are viewed + optional string package_name = 5; + + // Category in which permission is included + enum Category { + UNDEFINED = 0; + ALLOWED = 1; + ALLOWED_FOREGROUND = 2; + DENIED = 3; + } + optional Category category = 6; +} + +/** +* Information about a PermissionAppsFragment viewed by user. +* Logged from ui/handheld/PermissionAppsFragment.java +*/ +message PermissionAppsFragmentViewed { + // id which identifies single session of user interacting with permission controller + optional int64 session_id = 1; + + // id which identifies single view as every view might have several logging records + // with different package information attached + optional int64 view_id = 2; + + // Permission group viewed + optional string permission_group_name = 3; + + // UID of package for which permissions are viewed + optional int32 uid = 4 [(is_uid) = true]; + + // Name of package for which permissions are viewed + optional string package_name = 5; + + // Category in which app is included + enum Category { + UNDEFINED = 0; + ALLOWED = 1; + ALLOWED_FOREGROUND = 2; + DENIED = 3; + } + optional Category category = 6; +} diff --git a/cmds/statsd/src/external/StatsPullerManager.cpp b/cmds/statsd/src/external/StatsPullerManager.cpp index 914d60d3daca..475f18a9b0b8 100644 --- a/cmds/statsd/src/external/StatsPullerManager.cpp +++ b/cmds/statsd/src/external/StatsPullerManager.cpp @@ -156,6 +156,9 @@ std::map<int, PullAtomInfo> StatsPullerManager::kAllPullAtomInfo = { // system_ion_heap_size {android::util::SYSTEM_ION_HEAP_SIZE, {.puller = new StatsCompanionServicePuller(android::util::SYSTEM_ION_HEAP_SIZE)}}, + // process_system_ion_heap_size + {android::util::PROCESS_SYSTEM_ION_HEAP_SIZE, + {.puller = new StatsCompanionServicePuller(android::util::PROCESS_SYSTEM_ION_HEAP_SIZE)}}, // temperature {android::util::TEMPERATURE, {.puller = new StatsCompanionServicePuller(android::util::TEMPERATURE)}}, diff --git a/cmds/statsd/src/guardrail/StatsdStats.cpp b/cmds/statsd/src/guardrail/StatsdStats.cpp index ce0e561f291b..a836bd14c012 100644 --- a/cmds/statsd/src/guardrail/StatsdStats.cpp +++ b/cmds/statsd/src/guardrail/StatsdStats.cpp @@ -51,6 +51,7 @@ const int FIELD_ID_PERIODIC_ALARM_STATS = 12; const int FIELD_ID_SYSTEM_SERVER_RESTART = 15; const int FIELD_ID_LOGGER_ERROR_STATS = 16; const int FIELD_ID_OVERFLOW = 18; +const int FIELD_ID_ACTIVATION_BROADCAST_GUARDRAIL = 19; const int FIELD_ID_ATOM_STATS_TAG = 1; const int FIELD_ID_ATOM_STATS_COUNT = 2; @@ -109,6 +110,9 @@ const int FIELD_ID_UID_MAP_BYTES_USED = 2; const int FIELD_ID_UID_MAP_DROPPED_CHANGES = 3; const int FIELD_ID_UID_MAP_DELETED_APPS = 4; +const int FIELD_ID_ACTIVATION_BROADCAST_GUARDRAIL_UID = 1; +const int FIELD_ID_ACTIVATION_BROADCAST_GUARDRAIL_TIME = 2; + const std::map<int, std::pair<size_t, size_t>> StatsdStats::kAtomDimensionKeySizeLimitMap = { {android::util::BINDER_CALLS, {6000, 10000}}, {android::util::LOOPER_STATS, {1500, 2500}}, @@ -236,6 +240,19 @@ void StatsdStats::noteActiveStatusChanged(const ConfigKey& key, bool activated, vec.push_back(timeSec); } +void StatsdStats::noteActivationBroadcastGuardrailHit(const int uid) { + noteActivationBroadcastGuardrailHit(uid, getWallClockSec()); +} + +void StatsdStats::noteActivationBroadcastGuardrailHit(const int uid, const int32_t timeSec) { + lock_guard<std::mutex> lock(mLock); + auto& guardrailTimes = mActivationBroadcastGuardrailStats[uid]; + if (guardrailTimes.size() == kMaxTimestampCount) { + guardrailTimes.pop_front(); + } + guardrailTimes.push_back(timeSec); +} + void StatsdStats::noteDataDropped(const ConfigKey& key, const size_t totalBytes) { noteDataDropped(key, totalBytes, getWallClockSec()); } @@ -590,6 +607,7 @@ void StatsdStats::resetInternalLocked() { pullStats.second.unregisteredCount = 0; } mAtomMetricStats.clear(); + mActivationBroadcastGuardrailStats.clear(); } string buildTimeString(int64_t timeSec) { @@ -758,6 +776,17 @@ void StatsdStats::dumpStats(int out) const { dprintf(out, "Event queue overflow: %d; MaxHistoryNs: %lld; MinHistoryNs: %lld\n", mOverflowCount, (long long)mMaxQueueHistoryNs, (long long)mMinQueueHistoryNs); + + if (mActivationBroadcastGuardrailStats.size() > 0) { + dprintf(out, "********mActivationBroadcastGuardrail stats***********\n"); + for (const auto& pair: mActivationBroadcastGuardrailStats) { + dprintf(out, "Uid %d: Times: ", pair.first); + for (const auto& guardrailHitTime : pair.second) { + dprintf(out, "%d ", guardrailHitTime); + } + } + dprintf(out, "\n"); + } } void addConfigStatsToProto(const ConfigStats& configStats, ProtoOutputStream* proto) { @@ -959,6 +988,20 @@ void StatsdStats::dumpStats(std::vector<uint8_t>* output, bool reset) { restart); } + for (const auto& pair: mActivationBroadcastGuardrailStats) { + uint64_t token = proto.start(FIELD_TYPE_MESSAGE | + FIELD_ID_ACTIVATION_BROADCAST_GUARDRAIL | + FIELD_COUNT_REPEATED); + proto.write(FIELD_TYPE_INT32 | FIELD_ID_ACTIVATION_BROADCAST_GUARDRAIL_UID, + (int32_t) pair.first); + for (const auto& guardrailHitTime : pair.second) { + proto.write(FIELD_TYPE_INT32 | FIELD_ID_ACTIVATION_BROADCAST_GUARDRAIL_TIME | + FIELD_COUNT_REPEATED, + guardrailHitTime); + } + proto.end(token); + } + output->clear(); size_t bufferSize = proto.size(); output->resize(bufferSize); diff --git a/cmds/statsd/src/guardrail/StatsdStats.h b/cmds/statsd/src/guardrail/StatsdStats.h index 8b39f5f3f37c..23d2aceb4fc3 100644 --- a/cmds/statsd/src/guardrail/StatsdStats.h +++ b/cmds/statsd/src/guardrail/StatsdStats.h @@ -170,6 +170,12 @@ public: // Vendor pulled atom start id. static const int32_t kVendorPulledAtomStartTag = 150000; + // Beginning of range for timestamp truncation. + static const int32_t kTimestampTruncationStartTag = 300000; + + // End of range for timestamp truncation. + static const int32_t kTimestampTruncationEndTag = 304999; + // Max accepted atom id. static const int32_t kMaxAtomTag = 200000; @@ -439,6 +445,12 @@ public: void noteEventQueueOverflow(int64_t oldestEventTimestampNs); /** + * Reports that the activation broadcast guardrail was hit for this uid. Namely, the broadcast + * should have been sent, but instead was skipped due to hitting the guardrail. + */ + void noteActivationBroadcastGuardrailHit(const int uid); + + /** * Reset the historical stats. Including all stats in icebox, and the tracked stats about * metrics, matchers, and atoms. The active configs will be kept and StatsdStats will continue * to collect stats after reset() has been called. @@ -526,6 +538,10 @@ private: // Maps metric ID to its stats. The size is capped by the number of metrics. std::map<int64_t, AtomMetricStats> mAtomMetricStats; + // Maps uids to times when the activation changed broadcast not sent due to hitting the + // guardrail. The size is capped by the number of configs, and up to 20 times per uid. + std::map<int, std::list<int32_t>> mActivationBroadcastGuardrailStats; + struct LogLossStats { LogLossStats(int32_t sec, int32_t count, int32_t error, int32_t tag, int32_t uid, int32_t pid) @@ -582,6 +598,8 @@ private: void noteActiveStatusChanged(const ConfigKey& key, bool activate, int32_t timeSec); + void noteActivationBroadcastGuardrailHit(const int uid, int32_t timeSec); + void addToIceBoxLocked(std::shared_ptr<ConfigStats>& stats); /** @@ -601,6 +619,7 @@ private: FRIEND_TEST(StatsdStatsTest, TestSystemServerCrash); FRIEND_TEST(StatsdStatsTest, TestPullAtomStats); FRIEND_TEST(StatsdStatsTest, TestAtomMetricsStats); + FRIEND_TEST(StatsdStatsTest, TestActivationBroadcastGuardrailHit); }; } // namespace statsd diff --git a/cmds/statsd/src/metrics/EventMetricProducer.cpp b/cmds/statsd/src/metrics/EventMetricProducer.cpp index 69816cbbd92f..96133bd0a38d 100644 --- a/cmds/statsd/src/metrics/EventMetricProducer.cpp +++ b/cmds/statsd/src/metrics/EventMetricProducer.cpp @@ -146,16 +146,9 @@ void EventMetricProducer::onMatchedLogEventInternalLocked( uint64_t wrapperToken = mProto->start(FIELD_TYPE_MESSAGE | FIELD_COUNT_REPEATED | FIELD_ID_DATA); - const bool truncateTimestamp = - android::util::AtomsInfo::kNotTruncatingTimestampAtomWhiteList.find(event.GetTagId()) == - android::util::AtomsInfo::kNotTruncatingTimestampAtomWhiteList.end(); - if (truncateTimestamp) { - mProto->write(FIELD_TYPE_INT64 | FIELD_ID_ELAPSED_TIMESTAMP_NANOS, - (long long)truncateTimestampNsToFiveMinutes(event.GetElapsedTimestampNs())); - } else { - mProto->write(FIELD_TYPE_INT64 | FIELD_ID_ELAPSED_TIMESTAMP_NANOS, - (long long)event.GetElapsedTimestampNs()); - } + const int64_t elapsedTimeNs = truncateTimestampIfNecessary( + event.GetTagId(), event.GetElapsedTimestampNs()); + mProto->write(FIELD_TYPE_INT64 | FIELD_ID_ELAPSED_TIMESTAMP_NANOS, (long long) elapsedTimeNs); uint64_t eventToken = mProto->start(FIELD_TYPE_MESSAGE | FIELD_ID_ATOMS); event.ToProto(*mProto); diff --git a/cmds/statsd/src/metrics/GaugeMetricProducer.cpp b/cmds/statsd/src/metrics/GaugeMetricProducer.cpp index 7a87f0381676..a64bbc1056e0 100644 --- a/cmds/statsd/src/metrics/GaugeMetricProducer.cpp +++ b/cmds/statsd/src/metrics/GaugeMetricProducer.cpp @@ -283,14 +283,9 @@ void GaugeMetricProducer::onDumpReportLocked(const int64_t dumpTimeNs, writeFieldValueTreeToStream(mAtomId, *(atom.mFields), protoOutput); protoOutput->end(atomsToken); } - const bool truncateTimestamp = - android::util::AtomsInfo::kNotTruncatingTimestampAtomWhiteList.find( - mAtomId) == - android::util::AtomsInfo::kNotTruncatingTimestampAtomWhiteList.end(); for (const auto& atom : bucket.mGaugeAtoms) { - const int64_t elapsedTimestampNs = truncateTimestamp ? - truncateTimestampNsToFiveMinutes(atom.mElapsedTimestamps) : - atom.mElapsedTimestamps; + const int64_t elapsedTimestampNs = + truncateTimestampIfNecessary(mAtomId, atom.mElapsedTimestamps); protoOutput->write( FIELD_TYPE_INT64 | FIELD_COUNT_REPEATED | FIELD_ID_ELAPSED_ATOM_TIMESTAMP, (long long)elapsedTimestampNs); diff --git a/cmds/statsd/src/metrics/MetricProducer.cpp b/cmds/statsd/src/metrics/MetricProducer.cpp index 0e3cde5364b1..92752b29ecda 100644 --- a/cmds/statsd/src/metrics/MetricProducer.cpp +++ b/cmds/statsd/src/metrics/MetricProducer.cpp @@ -174,7 +174,9 @@ void MetricProducer::loadActiveMetricLocked(const ActiveMetric& activeMetric, continue; } auto& activation = it->second; - if (activeEventActivation.state() == ActiveEventActivation::ACTIVE) { + // If the event activation does not have a state, assume it is active. + if (!activeEventActivation.has_state() || + activeEventActivation.state() == ActiveEventActivation::ACTIVE) { // We don't want to change the ttl for future activations, so we set the start_ns // such that start_ns + ttl_ns == currentTimeNs + remaining_ttl_nanos activation->start_ns = diff --git a/cmds/statsd/src/metrics/MetricsManager.cpp b/cmds/statsd/src/metrics/MetricsManager.cpp index 207a7dd87215..963205ee56f4 100644 --- a/cmds/statsd/src/metrics/MetricsManager.cpp +++ b/cmds/statsd/src/metrics/MetricsManager.cpp @@ -521,6 +521,10 @@ void MetricsManager::loadActiveConfig(const ActiveConfig& config, int64_t curren if (metric->getMetricId() == activeMetric.id()) { VLOG("Setting active metric: %lld", (long long)metric->getMetricId()); metric->loadActiveMetric(activeMetric, currentTimeNs); + if (!mIsActive && metric->isActive()) { + StatsdStats::getInstance().noteActiveStatusChanged(mConfigKey, + /*activate=*/ true); + } mIsActive |= metric->isActive(); } } diff --git a/cmds/statsd/src/stats_log.proto b/cmds/statsd/src/stats_log.proto index 54ca757f5f61..b87547056ad3 100644 --- a/cmds/statsd/src/stats_log.proto +++ b/cmds/statsd/src/stats_log.proto @@ -470,6 +470,13 @@ message StatsdStatsReport { } optional EventQueueOverflow queue_overflow = 18; + + message ActivationBroadcastGuardrail { + optional int32 uid = 1; + repeated int32 guardrail_met_sec = 2; + } + + repeated ActivationBroadcastGuardrail activation_guardrail_stats = 19; } message AlertTriggerDetails { diff --git a/cmds/statsd/src/stats_log_util.cpp b/cmds/statsd/src/stats_log_util.cpp index 31f160d99944..67625eb82454 100644 --- a/cmds/statsd/src/stats_log_util.cpp +++ b/cmds/statsd/src/stats_log_util.cpp @@ -545,8 +545,15 @@ int64_t getWallClockMillis() { return time(nullptr) * MS_PER_SEC; } -int64_t truncateTimestampNsToFiveMinutes(int64_t timestampNs) { - return timestampNs / NS_PER_SEC / (5 * 60) * NS_PER_SEC * (5 * 60); +int64_t truncateTimestampIfNecessary(int atomId, int64_t timestampNs) { + if (AtomsInfo::kTruncatingTimestampAtomBlackList.find(atomId) != + AtomsInfo::kTruncatingTimestampAtomBlackList.end() || + (atomId >= StatsdStats::kTimestampTruncationStartTag && + atomId <= StatsdStats::kTimestampTruncationEndTag)) { + return timestampNs / NS_PER_SEC / (5 * 60) * NS_PER_SEC * (5 * 60); + } else { + return timestampNs; + } } int64_t NanoToMillis(const int64_t nano) { diff --git a/cmds/statsd/src/stats_log_util.h b/cmds/statsd/src/stats_log_util.h index 53dd5b792539..bfb84cf4d1b9 100644 --- a/cmds/statsd/src/stats_log_util.h +++ b/cmds/statsd/src/stats_log_util.h @@ -89,8 +89,9 @@ bool parseProtoOutputStream(util::ProtoOutputStream& protoOutput, T* message) { return message->ParseFromArray(pbBytes.c_str(), pbBytes.size()); } -// Returns the truncated timestamp. -int64_t truncateTimestampNsToFiveMinutes(int64_t timestampNs); +// Checks the blacklist of atoms as well as the blacklisted range of 300,000 - 304,999. +// Returns the truncated timestamp to the nearest 5 minutes if needed. +int64_t truncateTimestampIfNecessary(int atomId, int64_t timestampNs); inline bool isVendorPulledAtom(int atomId) { return atomId >= StatsdStats::kVendorPulledAtomStartTag && atomId < StatsdStats::kMaxAtomTag; diff --git a/cmds/statsd/tests/guardrail/StatsdStats_test.cpp b/cmds/statsd/tests/guardrail/StatsdStats_test.cpp index 1b8a3b543a49..2a43d9ba3984 100644 --- a/cmds/statsd/tests/guardrail/StatsdStats_test.cpp +++ b/cmds/statsd/tests/guardrail/StatsdStats_test.cpp @@ -445,6 +445,47 @@ TEST(StatsdStatsTest, TestSystemServerCrash) { EXPECT_EQ(StatsdStats::kMaxSystemServerRestarts + 1, report.system_restart_sec(maxCount - 1)); } +TEST(StatsdStatsTest, TestActivationBroadcastGuardrailHit) { + StatsdStats stats; + int uid1 = 1; + int uid2 = 2; + stats.noteActivationBroadcastGuardrailHit(uid1, 10); + stats.noteActivationBroadcastGuardrailHit(uid1, 20); + + // Test that we only keep 20 timestamps. + for (int i = 0; i < 100; i++) { + stats.noteActivationBroadcastGuardrailHit(uid2, i); + } + + vector<uint8_t> output; + stats.dumpStats(&output, false); + StatsdStatsReport report; + EXPECT_TRUE(report.ParseFromArray(&output[0], output.size())); + + EXPECT_EQ(2, report.activation_guardrail_stats_size()); + bool uid1Good = false; + bool uid2Good = false; + for (const auto& guardrailTimes : report.activation_guardrail_stats()) { + if (uid1 == guardrailTimes.uid()) { + uid1Good = true; + EXPECT_EQ(2, guardrailTimes.guardrail_met_sec_size()); + EXPECT_EQ(10, guardrailTimes.guardrail_met_sec(0)); + EXPECT_EQ(20, guardrailTimes.guardrail_met_sec(1)); + } else if (uid2 == guardrailTimes.uid()) { + int maxCount = StatsdStats::kMaxTimestampCount; + uid2Good = true; + EXPECT_EQ(maxCount, guardrailTimes.guardrail_met_sec_size()); + for (int i = 0; i < maxCount; i++) { + EXPECT_EQ(100 - maxCount + i, guardrailTimes.guardrail_met_sec(i)); + } + } else { + FAIL() << "Unexpected uid."; + } + } + EXPECT_TRUE(uid1Good); + EXPECT_TRUE(uid2Good); +} + } // namespace statsd } // namespace os } // namespace android diff --git a/config/boot-image-profile.txt b/config/boot-image-profile.txt index 09a854662740..2ac8409f8e1a 100644 --- a/config/boot-image-profile.txt +++ b/config/boot-image-profile.txt @@ -24,6 +24,7 @@ HSPLandroid/accessibilityservice/AccessibilityServiceInfo;->getId()Ljava/lang/St HSPLandroid/accessibilityservice/AccessibilityServiceInfo;->getResolveInfo()Landroid/content/pm/ResolveInfo; HSPLandroid/accessibilityservice/AccessibilityServiceInfo;->initFromParcel(Landroid/os/Parcel;)V HSPLandroid/accessibilityservice/AccessibilityServiceInfo;->isDirectBootAware()Z +HSPLandroid/accessibilityservice/AccessibilityServiceInfo;->loadSummary(Landroid/content/pm/PackageManager;)Ljava/lang/CharSequence; HSPLandroid/accessibilityservice/AccessibilityServiceInfo;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/accounts/Account$1;-><init>()V HSPLandroid/accounts/Account$1;->createFromParcel(Landroid/os/Parcel;)Landroid/accounts/Account; @@ -36,6 +37,8 @@ HSPLandroid/accounts/Account;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/ HSPLandroid/accounts/Account;->equals(Ljava/lang/Object;)Z HPLandroid/accounts/Account;->getAccessId()Ljava/lang/String; HSPLandroid/accounts/Account;->hashCode()I +HPLandroid/accounts/Account;->toSafeName(Ljava/lang/String;C)Ljava/lang/String; +HPLandroid/accounts/Account;->toSafeString()Ljava/lang/String; HSPLandroid/accounts/Account;->toString()Ljava/lang/String; HSPLandroid/accounts/Account;->writeToParcel(Landroid/os/Parcel;I)V HPLandroid/accounts/AccountAndUser;-><init>(Landroid/accounts/Account;I)V @@ -76,6 +79,7 @@ HSPLandroid/accounts/AccountManager;->getAuthToken(Landroid/accounts/Account;Lja HSPLandroid/accounts/AccountManager;->getAuthToken(Landroid/accounts/Account;Ljava/lang/String;ZLandroid/accounts/AccountManagerCallback;Landroid/os/Handler;)Landroid/accounts/AccountManagerFuture; HPLandroid/accounts/AccountManager;->hasAccountAccess(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/UserHandle;)Z HSPLandroid/accounts/AccountManager;->hasFeatures(Landroid/accounts/Account;[Ljava/lang/String;Landroid/accounts/AccountManagerCallback;Landroid/os/Handler;)Landroid/accounts/AccountManagerFuture; +HSPLandroid/accounts/AccountManager;->invalidateAuthToken(Ljava/lang/String;Ljava/lang/String;)V HSPLandroid/accounts/AuthenticatorDescription$1;-><init>()V HSPLandroid/accounts/AuthenticatorDescription$1;->createFromParcel(Landroid/os/Parcel;)Landroid/accounts/AuthenticatorDescription; HSPLandroid/accounts/AuthenticatorDescription$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; @@ -98,10 +102,11 @@ HSPLandroid/accounts/IAccountManager$Stub$Proxy;->getAccountsAsUser(Ljava/lang/S HSPLandroid/accounts/IAccountManager$Stub$Proxy;->getAuthToken(Landroid/accounts/IAccountManagerResponse;Landroid/accounts/Account;Ljava/lang/String;ZZLandroid/os/Bundle;)V HSPLandroid/accounts/IAccountManager$Stub$Proxy;->getAuthenticatorTypes(I)[Landroid/accounts/AuthenticatorDescription; HSPLandroid/accounts/IAccountManager$Stub$Proxy;->hasFeatures(Landroid/accounts/IAccountManagerResponse;Landroid/accounts/Account;[Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/accounts/IAccountManager$Stub$Proxy;->invalidateAuthToken(Ljava/lang/String;Ljava/lang/String;)V HSPLandroid/accounts/IAccountManager$Stub$Proxy;->onAccountAccessed(Ljava/lang/String;)V HSPLandroid/accounts/IAccountManager$Stub$Proxy;->registerAccountListener([Ljava/lang/String;Ljava/lang/String;)V HSPLandroid/accounts/IAccountManager$Stub;-><init>()V -PLandroid/accounts/IAccountManager$Stub;->getDefaultTransactionName(I)Ljava/lang/String; +HPLandroid/accounts/IAccountManager$Stub;->getDefaultTransactionName(I)Ljava/lang/String; HPLandroid/accounts/IAccountManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HPLandroid/accounts/IAccountManagerResponse$Stub$Proxy;->asBinder()Landroid/os/IBinder; HPLandroid/accounts/IAccountManagerResponse$Stub$Proxy;->onResult(Landroid/os/Bundle;)V @@ -129,6 +134,7 @@ HSPLandroid/animation/Animator;->clone()Landroid/animation/Animator; HSPLandroid/animation/Animator;->createConstantState()Landroid/content/res/ConstantState; HSPLandroid/animation/Animator;->getChangingConfigurations()I HSPLandroid/animation/Animator;->getListeners()Ljava/util/ArrayList; +HSPLandroid/animation/Animator;->pause()V HSPLandroid/animation/Animator;->removeAllListeners()V HSPLandroid/animation/Animator;->removeListener(Landroid/animation/Animator$AnimatorListener;)V HSPLandroid/animation/Animator;->setAllowRunningAsynchronously(Z)V @@ -154,6 +160,7 @@ HSPLandroid/animation/AnimatorSet$2;->onAnimationEnd(Landroid/animation/Animator HSPLandroid/animation/AnimatorSet$3;->compare(Landroid/animation/AnimatorSet$AnimationEvent;Landroid/animation/AnimatorSet$AnimationEvent;)I HSPLandroid/animation/AnimatorSet$3;->compare(Ljava/lang/Object;Ljava/lang/Object;)I HSPLandroid/animation/AnimatorSet$AnimationEvent;->getTime()J +HSPLandroid/animation/AnimatorSet$Builder;->after(Landroid/animation/Animator;)Landroid/animation/AnimatorSet$Builder; HSPLandroid/animation/AnimatorSet$Builder;->before(Landroid/animation/Animator;)Landroid/animation/AnimatorSet$Builder; HSPLandroid/animation/AnimatorSet$Builder;->with(Landroid/animation/Animator;)Landroid/animation/AnimatorSet$Builder; HSPLandroid/animation/AnimatorSet$Node;->addChild(Landroid/animation/AnimatorSet$Node;)V @@ -185,10 +192,12 @@ HSPLandroid/animation/AnimatorSet;->isInitialized()Z HSPLandroid/animation/AnimatorSet;->isStarted()Z HSPLandroid/animation/AnimatorSet;->play(Landroid/animation/Animator;)Landroid/animation/AnimatorSet$Builder; HSPLandroid/animation/AnimatorSet;->playSequentially([Landroid/animation/Animator;)V +HSPLandroid/animation/AnimatorSet;->playTogether(Ljava/util/Collection;)V HSPLandroid/animation/AnimatorSet;->playTogether([Landroid/animation/Animator;)V HSPLandroid/animation/AnimatorSet;->pulseAnimationFrame(J)Z HSPLandroid/animation/AnimatorSet;->setDuration(J)Landroid/animation/AnimatorSet; HSPLandroid/animation/AnimatorSet;->setInterpolator(Landroid/animation/TimeInterpolator;)V +HSPLandroid/animation/AnimatorSet;->setStartDelay(J)V HSPLandroid/animation/AnimatorSet;->setTarget(Ljava/lang/Object;)V HSPLandroid/animation/AnimatorSet;->shouldPlayTogether()Z HSPLandroid/animation/AnimatorSet;->skipToEndValue(Z)V @@ -279,6 +288,7 @@ HSPLandroid/animation/ObjectAnimator;->initAnimation()V HSPLandroid/animation/ObjectAnimator;->isInitialized()Z HSPLandroid/animation/ObjectAnimator;->ofFloat(Ljava/lang/Object;Landroid/util/Property;[F)Landroid/animation/ObjectAnimator; HSPLandroid/animation/ObjectAnimator;->ofFloat(Ljava/lang/Object;Ljava/lang/String;[F)Landroid/animation/ObjectAnimator; +HSPLandroid/animation/ObjectAnimator;->ofInt(Ljava/lang/Object;Landroid/util/Property;[I)Landroid/animation/ObjectAnimator; HSPLandroid/animation/ObjectAnimator;->ofInt(Ljava/lang/Object;Ljava/lang/String;[I)Landroid/animation/ObjectAnimator; HSPLandroid/animation/ObjectAnimator;->ofPropertyValuesHolder(Ljava/lang/Object;[Landroid/animation/PropertyValuesHolder;)Landroid/animation/ObjectAnimator; HSPLandroid/animation/ObjectAnimator;->setDuration(J)Landroid/animation/Animator; @@ -286,13 +296,19 @@ HSPLandroid/animation/ObjectAnimator;->setDuration(J)Landroid/animation/ObjectAn HSPLandroid/animation/ObjectAnimator;->setDuration(J)Landroid/animation/ValueAnimator; HSPLandroid/animation/ObjectAnimator;->setFloatValues([F)V HSPLandroid/animation/ObjectAnimator;->setIntValues([I)V +HSPLandroid/animation/ObjectAnimator;->setObjectValues([Ljava/lang/Object;)V HSPLandroid/animation/ObjectAnimator;->setProperty(Landroid/util/Property;)V HSPLandroid/animation/ObjectAnimator;->setTarget(Ljava/lang/Object;)V HSPLandroid/animation/ObjectAnimator;->setupEndValues()V HSPLandroid/animation/ObjectAnimator;->setupStartValues()V HSPLandroid/animation/ObjectAnimator;->start()V +HSPLandroid/animation/PathKeyframes$1;->getFloatValue(F)F +HSPLandroid/animation/PathKeyframes$2;->getFloatValue(F)F +HSPLandroid/animation/PathKeyframes$FloatKeyframesBase;->getValue(F)Ljava/lang/Object; HSPLandroid/animation/PathKeyframes$SimpleKeyframes;->clone()Landroid/animation/Keyframes; HSPLandroid/animation/PathKeyframes;-><init>(Landroid/graphics/Path;F)V +HSPLandroid/animation/PathKeyframes;->getValue(F)Ljava/lang/Object; +HSPLandroid/animation/PathKeyframes;->interpolateInRange(FII)Landroid/graphics/PointF; HSPLandroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;->calculateValue(F)V HSPLandroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;->clone()Landroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder; HSPLandroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;->clone()Landroid/animation/PropertyValuesHolder; @@ -333,6 +349,7 @@ HSPLandroid/animation/PropertyValuesHolder;->setupStartValue(Ljava/lang/Object;) HSPLandroid/animation/PropertyValuesHolder;->setupValue(Ljava/lang/Object;Landroid/animation/Keyframe;)V HSPLandroid/animation/RectEvaluator;-><init>()V HSPLandroid/animation/StateListAnimator$1;->onAnimationEnd(Landroid/animation/Animator;)V +HSPLandroid/animation/StateListAnimator$StateListAnimatorConstantState;->getChangingConfigurations()I HSPLandroid/animation/StateListAnimator$StateListAnimatorConstantState;->newInstance()Landroid/animation/StateListAnimator; HSPLandroid/animation/StateListAnimator$StateListAnimatorConstantState;->newInstance()Ljava/lang/Object; HSPLandroid/animation/StateListAnimator;-><init>()V @@ -347,6 +364,12 @@ HSPLandroid/animation/StateListAnimator;->jumpToCurrentState()V HSPLandroid/animation/StateListAnimator;->setChangingConfigurations(I)V HSPLandroid/animation/StateListAnimator;->setState([I)V HSPLandroid/animation/StateListAnimator;->setTarget(Landroid/view/View;)V +HSPLandroid/animation/TimeAnimator;-><init>()V +HSPLandroid/animation/TimeAnimator;->animateBasedOnTime(J)Z +HSPLandroid/animation/TimeAnimator;->initAnimation()V +HSPLandroid/animation/TimeAnimator;->setCurrentPlayTime(J)V +HSPLandroid/animation/TimeAnimator;->setTimeListener(Landroid/animation/TimeAnimator$TimeListener;)V +HSPLandroid/animation/TimeAnimator;->start()V HSPLandroid/animation/ValueAnimator;-><init>()V HSPLandroid/animation/ValueAnimator;->addUpdateListener(Landroid/animation/ValueAnimator$AnimatorUpdateListener;)V HSPLandroid/animation/ValueAnimator;->animateBasedOnTime(J)Z @@ -378,6 +401,7 @@ HSPLandroid/animation/ValueAnimator;->ofFloat([F)Landroid/animation/ValueAnimato HSPLandroid/animation/ValueAnimator;->ofInt([I)Landroid/animation/ValueAnimator; HSPLandroid/animation/ValueAnimator;->ofObject(Landroid/animation/TypeEvaluator;[Ljava/lang/Object;)Landroid/animation/ValueAnimator; HSPLandroid/animation/ValueAnimator;->overrideDurationScale(F)V +HSPLandroid/animation/ValueAnimator;->pause()V HSPLandroid/animation/ValueAnimator;->pulseAnimationFrame(J)Z HSPLandroid/animation/ValueAnimator;->setAllowRunningAsynchronously(Z)V HSPLandroid/animation/ValueAnimator;->setCurrentFraction(F)V @@ -406,7 +430,7 @@ PLandroid/apex/ApexInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Obje PLandroid/apex/ApexInfo$1;->newArray(I)[Landroid/apex/ApexInfo; PLandroid/apex/ApexInfo$1;->newArray(I)[Ljava/lang/Object; PLandroid/apex/ApexInfo;->readFromParcel(Landroid/os/Parcel;)V -PLandroid/apex/IApexService$Stub$Proxy;->getActivePackages()[Landroid/apex/ApexInfo; +HPLandroid/apex/IApexService$Stub$Proxy;->getActivePackages()[Landroid/apex/ApexInfo; HSPLandroid/apex/IApexService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/apex/IApexService; HSPLandroid/app/-$$Lambda$ActivityThread$ActivityClientRecord$HOrG1qglSjSUHSjKBn2rXtX0gGg;->onConfigurationChanged(Landroid/content/res/Configuration;I)V HSPLandroid/app/-$$Lambda$ActivityThread$ApplicationThread$tUGFX7CUhzB4Pg5wFd5yeqOnu38;-><init>()V @@ -421,12 +445,16 @@ HSPLandroid/app/-$$Lambda$ResourcesManager$QJ7UiVk_XS90KuXAsIjIEym1DnM;-><init>( HSPLandroid/app/-$$Lambda$ResourcesManager$QJ7UiVk_XS90KuXAsIjIEym1DnM;->test(Ljava/lang/Object;)Z HSPLandroid/app/-$$Lambda$SharedPreferencesImpl$EditorImpl$3CAjkhzA131V3V-sLfP2uy0FWZ0;->run()V HSPLandroid/app/ActionBar$LayoutParams;-><init>(II)V +HSPLandroid/app/ActionBar$LayoutParams;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V HSPLandroid/app/Activity$HostCallbacks;->onAttachFragment(Landroid/app/Fragment;)V +HSPLandroid/app/Activity$HostCallbacks;->onFindViewById(I)Landroid/view/View; HSPLandroid/app/Activity$HostCallbacks;->onGetLayoutInflater()Landroid/view/LayoutInflater; +HSPLandroid/app/Activity$HostCallbacks;->onHasView()Z HSPLandroid/app/Activity$HostCallbacks;->onUseFragmentManagerInflaterFactory()Z HSPLandroid/app/Activity;-><init>()V HSPLandroid/app/Activity;->attach(Landroid/content/Context;Landroid/app/ActivityThread;Landroid/app/Instrumentation;Landroid/os/IBinder;ILandroid/app/Application;Landroid/content/Intent;Landroid/content/pm/ActivityInfo;Ljava/lang/CharSequence;Landroid/app/Activity;Ljava/lang/String;Landroid/app/Activity$NonConfigurationInstances;Landroid/content/res/Configuration;Ljava/lang/String;Lcom/android/internal/app/IVoiceInteractor;Landroid/view/Window;Landroid/view/ViewRootImpl$ActivityConfigCallback;)V HSPLandroid/app/Activity;->attachBaseContext(Landroid/content/Context;)V +HSPLandroid/app/Activity;->autofillClientGetComponentName()Landroid/content/ComponentName; HSPLandroid/app/Activity;->autofillClientIsFillUiShowing()Z HSPLandroid/app/Activity;->autofillClientRequestHideFillUi()Z HSPLandroid/app/Activity;->collectActivityLifecycleCallbacks()[Ljava/lang/Object; @@ -437,6 +465,7 @@ HSPLandroid/app/Activity;->findViewById(I)Landroid/view/View; HSPLandroid/app/Activity;->finish()V HSPLandroid/app/Activity;->finish(I)V HSPLandroid/app/Activity;->finishAfterTransition()V +HSPLandroid/app/Activity;->finishAndRemoveTask()V HSPLandroid/app/Activity;->getActionBar()Landroid/app/ActionBar; HSPLandroid/app/Activity;->getActivityOptions()Landroid/app/ActivityOptions; HSPLandroid/app/Activity;->getApplication()Landroid/app/Application; @@ -454,6 +483,7 @@ HSPLandroid/app/Activity;->getTaskId()I HSPLandroid/app/Activity;->getTitle()Ljava/lang/CharSequence; HSPLandroid/app/Activity;->getWindow()Landroid/view/Window; HSPLandroid/app/Activity;->getWindowManager()Landroid/view/WindowManager; +HSPLandroid/app/Activity;->hasWindowFocus()Z HSPLandroid/app/Activity;->initWindowDecorActionBar()V HSPLandroid/app/Activity;->invalidateOptionsMenu()V HSPLandroid/app/Activity;->isChangingConfigurations()Z @@ -478,6 +508,7 @@ HSPLandroid/app/Activity;->onDetachedFromWindow()V HSPLandroid/app/Activity;->onEnterAnimationComplete()V HSPLandroid/app/Activity;->onKeyDown(ILandroid/view/KeyEvent;)Z HSPLandroid/app/Activity;->onKeyUp(ILandroid/view/KeyEvent;)Z +HSPLandroid/app/Activity;->onNewIntent(Landroid/content/Intent;)V HSPLandroid/app/Activity;->onPause()V HSPLandroid/app/Activity;->onPostCreate(Landroid/os/Bundle;)V HSPLandroid/app/Activity;->onPostResume()V @@ -485,12 +516,15 @@ HSPLandroid/app/Activity;->onPrepareOptionsMenu(Landroid/view/Menu;)Z HSPLandroid/app/Activity;->onPreparePanel(ILandroid/view/View;Landroid/view/Menu;)Z HSPLandroid/app/Activity;->onProvideReferrer()Landroid/net/Uri; HSPLandroid/app/Activity;->onRestart()V +HSPLandroid/app/Activity;->onRestoreInstanceState(Landroid/os/Bundle;)V HSPLandroid/app/Activity;->onResume()V HSPLandroid/app/Activity;->onSaveInstanceState(Landroid/os/Bundle;)V HSPLandroid/app/Activity;->onStart()V +HSPLandroid/app/Activity;->onStateNotSaved()V HSPLandroid/app/Activity;->onStop()V HSPLandroid/app/Activity;->onTitleChanged(Ljava/lang/CharSequence;I)V HSPLandroid/app/Activity;->onTopResumedActivityChanged(Z)V +HSPLandroid/app/Activity;->onTouchEvent(Landroid/view/MotionEvent;)Z HSPLandroid/app/Activity;->onTrimMemory(I)V HSPLandroid/app/Activity;->onUserInteraction()V HSPLandroid/app/Activity;->onUserLeaveHint()V @@ -505,11 +539,15 @@ HSPLandroid/app/Activity;->performResume(ZLjava/lang/String;)V HSPLandroid/app/Activity;->performStart(Ljava/lang/String;)V HSPLandroid/app/Activity;->performStop(ZLjava/lang/String;)V HSPLandroid/app/Activity;->reportFullyDrawn()V +HSPLandroid/app/Activity;->requestWindowFeature(I)Z +HSPLandroid/app/Activity;->restoreManagedDialogs(Landroid/os/Bundle;)V HSPLandroid/app/Activity;->saveManagedDialogs(Landroid/os/Bundle;)V +HSPLandroid/app/Activity;->setActionBar(Landroid/widget/Toolbar;)V HSPLandroid/app/Activity;->setContentView(I)V HSPLandroid/app/Activity;->setIntent(Landroid/content/Intent;)V HSPLandroid/app/Activity;->setTaskDescription(Landroid/app/ActivityManager$TaskDescription;)V HSPLandroid/app/Activity;->setTheme(I)V +HSPLandroid/app/Activity;->setTitle(I)V HSPLandroid/app/Activity;->setTitle(Ljava/lang/CharSequence;)V HSPLandroid/app/Activity;->startActivity(Landroid/content/Intent;)V HSPLandroid/app/Activity;->startActivity(Landroid/content/Intent;Landroid/os/Bundle;)V @@ -572,7 +610,7 @@ HPLandroid/app/ActivityManager$TaskDescription;->saveToXml(Lorg/xmlpull/v1/XmlSe HSPLandroid/app/ActivityManager$TaskDescription;->setBackgroundColor(I)V HSPLandroid/app/ActivityManager$TaskDescription;->setIcon(I)V HSPLandroid/app/ActivityManager$TaskDescription;->setIconFilename(Ljava/lang/String;)V -PLandroid/app/ActivityManager$TaskDescription;->setLabel(Ljava/lang/String;)V +HPLandroid/app/ActivityManager$TaskDescription;->setLabel(Ljava/lang/String;)V HSPLandroid/app/ActivityManager$TaskDescription;->setNavigationBarColor(I)V HSPLandroid/app/ActivityManager$TaskDescription;->setPrimaryColor(I)V HSPLandroid/app/ActivityManager$TaskDescription;->setStatusBarColor(I)V @@ -600,6 +638,7 @@ HSPLandroid/app/ActivityManager;->checkComponentPermission(Ljava/lang/String;IIZ HSPLandroid/app/ActivityManager;->checkUidPermission(Ljava/lang/String;I)I HSPLandroid/app/ActivityManager;->getAppTasks()Ljava/util/List; HSPLandroid/app/ActivityManager;->getCurrentUser()I +HSPLandroid/app/ActivityManager;->getLargeMemoryClass()I HSPLandroid/app/ActivityManager;->getMemoryClass()I HSPLandroid/app/ActivityManager;->getMemoryInfo(Landroid/app/ActivityManager$MemoryInfo;)V HSPLandroid/app/ActivityManager;->getMyMemoryState(Landroid/app/ActivityManager$RunningAppProcessInfo;)V @@ -607,14 +646,14 @@ HSPLandroid/app/ActivityManager;->getPackageImportance(Ljava/lang/String;)I HSPLandroid/app/ActivityManager;->getProcessMemoryInfo([I)[Landroid/os/Debug$MemoryInfo; HSPLandroid/app/ActivityManager;->getRunningAppProcesses()Ljava/util/List; HSPLandroid/app/ActivityManager;->getService()Landroid/app/IActivityManager; -PLandroid/app/ActivityManager;->getUidImportance(I)I +HPLandroid/app/ActivityManager;->getUidImportance(I)I HSPLandroid/app/ActivityManager;->handleIncomingUser(IIIZZLjava/lang/String;Ljava/lang/String;)I HSPLandroid/app/ActivityManager;->isHighEndGfx()Z HSPLandroid/app/ActivityManager;->isLowRamDevice()Z HSPLandroid/app/ActivityManager;->isLowRamDeviceStatic()Z HSPLandroid/app/ActivityManager;->isRunningInTestHarness()Z HSPLandroid/app/ActivityManager;->isSmallBatteryDevice()Z -PLandroid/app/ActivityManager;->isSystemReady()Z +HPLandroid/app/ActivityManager;->isSystemReady()Z HSPLandroid/app/ActivityManager;->isUserAMonkey()Z HSPLandroid/app/ActivityManager;->isUserRunning(I)Z HSPLandroid/app/ActivityManager;->noteAlarmFinish(Landroid/app/PendingIntent;Landroid/os/WorkSource;ILjava/lang/String;)V @@ -623,24 +662,24 @@ HSPLandroid/app/ActivityManager;->noteWakeupAlarm(Landroid/app/PendingIntent;Lan HSPLandroid/app/ActivityManager;->processStateAmToProto(I)I HSPLandroid/app/ActivityManager;->staticGetMemoryClass()I HSPLandroid/app/ActivityOptions;-><init>(Landroid/os/Bundle;)V -PLandroid/app/ActivityOptions;->abort()V +HPLandroid/app/ActivityOptions;->abort()V HSPLandroid/app/ActivityOptions;->abort(Landroid/app/ActivityOptions;)V HSPLandroid/app/ActivityOptions;->disallowEnterPictureInPictureWhileLaunching()Z -PLandroid/app/ActivityOptions;->freezeRecentTasksReordering()Z +HPLandroid/app/ActivityOptions;->freezeRecentTasksReordering()Z HSPLandroid/app/ActivityOptions;->fromBundle(Landroid/os/Bundle;)Landroid/app/ActivityOptions; HSPLandroid/app/ActivityOptions;->getAnimationType()I HSPLandroid/app/ActivityOptions;->getAvoidMoveToFront()Z -PLandroid/app/ActivityOptions;->getCustomEnterResId()I -PLandroid/app/ActivityOptions;->getCustomExitResId()I -PLandroid/app/ActivityOptions;->getLaunchActivityType()I +HPLandroid/app/ActivityOptions;->getCustomEnterResId()I +HPLandroid/app/ActivityOptions;->getCustomExitResId()I +HPLandroid/app/ActivityOptions;->getLaunchActivityType()I HSPLandroid/app/ActivityOptions;->getLaunchBounds()Landroid/graphics/Rect; HSPLandroid/app/ActivityOptions;->getLaunchDisplayId()I HSPLandroid/app/ActivityOptions;->getLaunchTaskBehind()Z HSPLandroid/app/ActivityOptions;->getLaunchTaskId()I HSPLandroid/app/ActivityOptions;->getLaunchWindowingMode()I HSPLandroid/app/ActivityOptions;->getLockTaskMode()Z -PLandroid/app/ActivityOptions;->getOnAnimationStartListener()Landroid/os/IRemoteCallback; -PLandroid/app/ActivityOptions;->getPackageName()Ljava/lang/String; +HPLandroid/app/ActivityOptions;->getOnAnimationStartListener()Landroid/os/IRemoteCallback; +HPLandroid/app/ActivityOptions;->getPackageName()Ljava/lang/String; HPLandroid/app/ActivityOptions;->getPendingIntentLaunchFlags()I HSPLandroid/app/ActivityOptions;->getRemoteAnimationAdapter()Landroid/view/RemoteAnimationAdapter; HSPLandroid/app/ActivityOptions;->getRotationAnimationHint()I @@ -651,7 +690,7 @@ HSPLandroid/app/ActivityOptions;->popAppVerificationBundle()Landroid/os/Bundle; HSPLandroid/app/ActivityOptions;->setLaunchActivityType(I)V HSPLandroid/app/ActivityOptions;->setLaunchDisplayId(I)Landroid/app/ActivityOptions; HSPLandroid/app/ActivityOptions;->setLaunchWindowingMode(I)V -PLandroid/app/ActivityOptions;->setRemoteAnimationAdapter(Landroid/view/RemoteAnimationAdapter;)V +HPLandroid/app/ActivityOptions;->setRemoteAnimationAdapter(Landroid/view/RemoteAnimationAdapter;)V HSPLandroid/app/ActivityOptions;->toBundle()Landroid/os/Bundle; HSPLandroid/app/ActivityTaskManager$1;-><init>()V HSPLandroid/app/ActivityTaskManager$1;->create()Landroid/app/IActivityTaskManager; @@ -677,10 +716,11 @@ HSPLandroid/app/ActivityThread$ApplicationThread;->bindApplication(Ljava/lang/St HSPLandroid/app/ActivityThread$ApplicationThread;->clearDnsCache()V HSPLandroid/app/ActivityThread$ApplicationThread;->dispatchPackageBroadcast(I[Ljava/lang/String;)V HSPLandroid/app/ActivityThread$ApplicationThread;->dumpDbInfo(Landroid/os/ParcelFileDescriptor;[Ljava/lang/String;)V -PLandroid/app/ActivityThread$ApplicationThread;->dumpGfxInfo(Landroid/os/ParcelFileDescriptor;[Ljava/lang/String;)V +HPLandroid/app/ActivityThread$ApplicationThread;->dumpGfxInfo(Landroid/os/ParcelFileDescriptor;[Ljava/lang/String;)V HSPLandroid/app/ActivityThread$ApplicationThread;->dumpMemInfo(Landroid/os/ParcelFileDescriptor;Landroid/os/Debug$MemoryInfo;ZZZZZ[Ljava/lang/String;)V HSPLandroid/app/ActivityThread$ApplicationThread;->dumpMemInfo(Ljava/io/PrintWriter;Landroid/os/Debug$MemoryInfo;ZZZZZ)V -PLandroid/app/ActivityThread$ApplicationThread;->dumpService(Landroid/os/ParcelFileDescriptor;Landroid/os/IBinder;[Ljava/lang/String;)V +HSPLandroid/app/ActivityThread$ApplicationThread;->dumpProvider(Landroid/os/ParcelFileDescriptor;Landroid/os/IBinder;[Ljava/lang/String;)V +HPLandroid/app/ActivityThread$ApplicationThread;->dumpService(Landroid/os/ParcelFileDescriptor;Landroid/os/IBinder;[Ljava/lang/String;)V HSPLandroid/app/ActivityThread$ApplicationThread;->requestAssistContextExtras(Landroid/os/IBinder;Landroid/os/IBinder;III)V HSPLandroid/app/ActivityThread$ApplicationThread;->scheduleApplicationInfoChanged(Landroid/content/pm/ApplicationInfo;)V HSPLandroid/app/ActivityThread$ApplicationThread;->scheduleBindService(Landroid/os/IBinder;Landroid/content/Intent;ZI)V @@ -688,7 +728,8 @@ HSPLandroid/app/ActivityThread$ApplicationThread;->scheduleCreateBackupAgent(Lan HSPLandroid/app/ActivityThread$ApplicationThread;->scheduleCreateService(Landroid/os/IBinder;Landroid/content/pm/ServiceInfo;Landroid/content/res/CompatibilityInfo;I)V HSPLandroid/app/ActivityThread$ApplicationThread;->scheduleDestroyBackupAgent(Landroid/content/pm/ApplicationInfo;Landroid/content/res/CompatibilityInfo;I)V HSPLandroid/app/ActivityThread$ApplicationThread;->scheduleEnterAnimationComplete(Landroid/os/IBinder;)V -PLandroid/app/ActivityThread$ApplicationThread;->scheduleLowMemory()V +HSPLandroid/app/ActivityThread$ApplicationThread;->scheduleInstallProvider(Landroid/content/pm/ProviderInfo;)V +HPLandroid/app/ActivityThread$ApplicationThread;->scheduleLowMemory()V HSPLandroid/app/ActivityThread$ApplicationThread;->scheduleReceiver(Landroid/content/Intent;Landroid/content/pm/ActivityInfo;Landroid/content/res/CompatibilityInfo;ILjava/lang/String;Landroid/os/Bundle;ZII)V HSPLandroid/app/ActivityThread$ApplicationThread;->scheduleRegisteredReceiver(Landroid/content/IIntentReceiver;Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZII)V HSPLandroid/app/ActivityThread$ApplicationThread;->scheduleServiceArgs(Landroid/os/IBinder;Landroid/content/pm/ParceledListSlice;)V @@ -728,6 +769,7 @@ HSPLandroid/app/ActivityThread;->currentActivityThread()Landroid/app/ActivityThr HSPLandroid/app/ActivityThread;->currentApplication()Landroid/app/Application; HSPLandroid/app/ActivityThread;->currentOpPackageName()Ljava/lang/String; HSPLandroid/app/ActivityThread;->currentPackageName()Ljava/lang/String; +HSPLandroid/app/ActivityThread;->currentProcessName()Ljava/lang/String; HSPLandroid/app/ActivityThread;->deliverNewIntents(Landroid/app/ActivityThread$ActivityClientRecord;Ljava/util/List;)V HSPLandroid/app/ActivityThread;->dumpMemInfoTable(Ljava/io/PrintWriter;Landroid/os/Debug$MemoryInfo;ZZZZILjava/lang/String;JJJJJJ)V HSPLandroid/app/ActivityThread;->getActivitiesToBeDestroyed()Ljava/util/Map; @@ -753,7 +795,9 @@ HSPLandroid/app/ActivityThread;->handleCreateService(Landroid/app/ActivityThread HSPLandroid/app/ActivityThread;->handleDestroyActivity(Landroid/os/IBinder;ZIZLjava/lang/String;)V HSPLandroid/app/ActivityThread;->handleDestroyBackupAgent(Landroid/app/ActivityThread$CreateBackupAgentData;)V HSPLandroid/app/ActivityThread;->handleDispatchPackageBroadcast(I[Ljava/lang/String;)V -PLandroid/app/ActivityThread;->handleDumpService(Landroid/app/ActivityThread$DumpComponentInfo;)V +HSPLandroid/app/ActivityThread;->handleDumpProvider(Landroid/app/ActivityThread$DumpComponentInfo;)V +HPLandroid/app/ActivityThread;->handleDumpService(Landroid/app/ActivityThread$DumpComponentInfo;)V +HSPLandroid/app/ActivityThread;->handleInstallProvider(Landroid/content/pm/ProviderInfo;)V HSPLandroid/app/ActivityThread;->handleLaunchActivity(Landroid/app/ActivityThread$ActivityClientRecord;Landroid/app/servertransaction/PendingTransactionActions;Landroid/content/Intent;)Landroid/app/Activity; HPLandroid/app/ActivityThread;->handleLowMemory()V HSPLandroid/app/ActivityThread;->handleNewIntent(Landroid/os/IBinder;Ljava/util/List;Z)V @@ -824,14 +868,14 @@ HSPLandroid/app/AlarmManager;-><init>(Landroid/app/IAlarmManager;Landroid/conten HSPLandroid/app/AlarmManager;->cancel(Landroid/app/AlarmManager$OnAlarmListener;)V HSPLandroid/app/AlarmManager;->cancel(Landroid/app/PendingIntent;)V HSPLandroid/app/AlarmManager;->getNextAlarmClock(I)Landroid/app/AlarmManager$AlarmClockInfo; -PLandroid/app/AlarmManager;->getNextWakeFromIdleTime()J +HPLandroid/app/AlarmManager;->getNextWakeFromIdleTime()J HSPLandroid/app/AlarmManager;->set(IJJJLjava/lang/String;Landroid/app/AlarmManager$OnAlarmListener;Landroid/os/Handler;Landroid/os/WorkSource;)V HSPLandroid/app/AlarmManager;->set(IJLandroid/app/PendingIntent;)V HSPLandroid/app/AlarmManager;->set(IJLjava/lang/String;Landroid/app/AlarmManager$OnAlarmListener;Landroid/os/Handler;)V HSPLandroid/app/AlarmManager;->setExact(IJLandroid/app/PendingIntent;)V HSPLandroid/app/AlarmManager;->setExact(IJLjava/lang/String;Landroid/app/AlarmManager$OnAlarmListener;Landroid/os/Handler;)V HSPLandroid/app/AlarmManager;->setExactAndAllowWhileIdle(IJLandroid/app/PendingIntent;)V -PLandroid/app/AlarmManager;->setIdleUntil(IJLjava/lang/String;Landroid/app/AlarmManager$OnAlarmListener;Landroid/os/Handler;)V +HPLandroid/app/AlarmManager;->setIdleUntil(IJLjava/lang/String;Landroid/app/AlarmManager$OnAlarmListener;Landroid/os/Handler;)V HSPLandroid/app/AlarmManager;->setImpl(IJJJILandroid/app/PendingIntent;Landroid/app/AlarmManager$OnAlarmListener;Ljava/lang/String;Landroid/os/Handler;Landroid/os/WorkSource;Landroid/app/AlarmManager$AlarmClockInfo;)V HSPLandroid/app/AlarmManager;->setInexactRepeating(IJJLandroid/app/PendingIntent;)V HSPLandroid/app/AlarmManager;->setTime(J)V @@ -869,7 +913,7 @@ HSPLandroid/app/AppOpsManager$HistoricalOps;->isEmpty()Z HSPLandroid/app/AppOpsManager$HistoricalOps;->merge(Landroid/app/AppOpsManager$HistoricalOps;)V HSPLandroid/app/AppOpsManager$HistoricalOps;->round(D)D HPLandroid/app/AppOpsManager$HistoricalOps;->splice(DZ)Landroid/app/AppOpsManager$HistoricalOps; -PLandroid/app/AppOpsManager$HistoricalOps;->spliceFromEnd(D)Landroid/app/AppOpsManager$HistoricalOps; +HPLandroid/app/AppOpsManager$HistoricalOps;->spliceFromEnd(D)Landroid/app/AppOpsManager$HistoricalOps; HSPLandroid/app/AppOpsManager$HistoricalPackageOps$1;-><init>()V HSPLandroid/app/AppOpsManager$HistoricalPackageOps;->access$2700(Landroid/app/AppOpsManager$HistoricalPackageOps;IIIJ)V HSPLandroid/app/AppOpsManager$HistoricalPackageOps;->access$2800(Landroid/app/AppOpsManager$HistoricalPackageOps;IIIJ)V @@ -904,7 +948,7 @@ HSPLandroid/app/AppOpsManager;->finishOp(IILjava/lang/String;)V HSPLandroid/app/AppOpsManager;->getPackagesForOps([I)Ljava/util/List; HSPLandroid/app/AppOpsManager;->getSystemAlertWindowDefault()I HSPLandroid/app/AppOpsManager;->getToken(Lcom/android/internal/app/IAppOpsService;)Landroid/os/IBinder; -PLandroid/app/AppOpsManager;->isOperationActive(IILjava/lang/String;)Z +HPLandroid/app/AppOpsManager;->isOperationActive(IILjava/lang/String;)Z HSPLandroid/app/AppOpsManager;->logOperationIfNeeded(ILjava/lang/String;Ljava/lang/String;)V HSPLandroid/app/AppOpsManager;->maxForFlagsInStates(Landroid/util/LongSparseLongArray;III)J HSPLandroid/app/AppOpsManager;->noteOp(IILjava/lang/String;)I @@ -973,11 +1017,12 @@ HSPLandroid/app/Application;->dispatchActivityStopped(Landroid/app/Activity;)V HSPLandroid/app/Application;->getAutofillClient()Landroid/view/autofill/AutofillManager$AutofillClient; HSPLandroid/app/Application;->onConfigurationChanged(Landroid/content/res/Configuration;)V HSPLandroid/app/Application;->onCreate()V -PLandroid/app/Application;->onLowMemory()V +HPLandroid/app/Application;->onLowMemory()V HSPLandroid/app/Application;->onTrimMemory(I)V HSPLandroid/app/Application;->registerActivityLifecycleCallbacks(Landroid/app/Application$ActivityLifecycleCallbacks;)V HSPLandroid/app/Application;->registerComponentCallbacks(Landroid/content/ComponentCallbacks;)V HSPLandroid/app/Application;->unregisterActivityLifecycleCallbacks(Landroid/app/Application$ActivityLifecycleCallbacks;)V +HSPLandroid/app/Application;->unregisterComponentCallbacks(Landroid/content/ComponentCallbacks;)V HSPLandroid/app/ApplicationErrorReport$1;-><init>()V HSPLandroid/app/ApplicationErrorReport$CrashInfo;-><init>(Landroid/os/Parcel;)V HSPLandroid/app/ApplicationErrorReport$CrashInfo;-><init>(Ljava/lang/Throwable;)V @@ -999,6 +1044,7 @@ HSPLandroid/app/ApplicationPackageManager$ResourceName;->equals(Ljava/lang/Objec HSPLandroid/app/ApplicationPackageManager$ResourceName;->hashCode()I HSPLandroid/app/ApplicationPackageManager;-><init>(Landroid/app/ContextImpl;Landroid/content/pm/IPackageManager;)V HSPLandroid/app/ApplicationPackageManager;->addOnPermissionsChangeListener(Landroid/content/pm/PackageManager$OnPermissionsChangedListener;)V +HSPLandroid/app/ApplicationPackageManager;->canonicalToCurrentPackageNames([Ljava/lang/String;)[Ljava/lang/String; HSPLandroid/app/ApplicationPackageManager;->checkPermission(Ljava/lang/String;Ljava/lang/String;)I HSPLandroid/app/ApplicationPackageManager;->checkSignatures(Ljava/lang/String;Ljava/lang/String;)I HSPLandroid/app/ApplicationPackageManager;->configurationChanged()V @@ -1010,6 +1056,7 @@ HSPLandroid/app/ApplicationPackageManager;->getApplicationLabel(Landroid/content HSPLandroid/app/ApplicationPackageManager;->getCachedIcon(Landroid/app/ApplicationPackageManager$ResourceName;)Landroid/graphics/drawable/Drawable; HSPLandroid/app/ApplicationPackageManager;->getCachedString(Landroid/app/ApplicationPackageManager$ResourceName;)Ljava/lang/CharSequence; HSPLandroid/app/ApplicationPackageManager;->getComponentEnabledSetting(Landroid/content/ComponentName;)I +HSPLandroid/app/ApplicationPackageManager;->getDefaultActivityIcon()Landroid/graphics/drawable/Drawable; HSPLandroid/app/ApplicationPackageManager;->getDrawable(Ljava/lang/String;ILandroid/content/pm/ApplicationInfo;)Landroid/graphics/drawable/Drawable; HSPLandroid/app/ApplicationPackageManager;->getHomeActivities(Ljava/util/List;)Landroid/content/ComponentName; HSPLandroid/app/ApplicationPackageManager;->getInstalledApplications(I)Ljava/util/List; @@ -1018,6 +1065,7 @@ HSPLandroid/app/ApplicationPackageManager;->getInstalledModules(I)Ljava/util/Lis HSPLandroid/app/ApplicationPackageManager;->getInstalledPackages(I)Ljava/util/List; HSPLandroid/app/ApplicationPackageManager;->getInstalledPackagesAsUser(II)Ljava/util/List; HSPLandroid/app/ApplicationPackageManager;->getInstallerPackageName(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/app/ApplicationPackageManager;->getInstantAppResolverSettingsComponent()Landroid/content/ComponentName; HSPLandroid/app/ApplicationPackageManager;->getLaunchIntentForPackage(Ljava/lang/String;)Landroid/content/Intent; HSPLandroid/app/ApplicationPackageManager;->getModuleInfo(Ljava/lang/String;I)Landroid/content/pm/ModuleInfo; HSPLandroid/app/ApplicationPackageManager;->getNameForUid(I)Ljava/lang/String; @@ -1032,7 +1080,7 @@ HSPLandroid/app/ApplicationPackageManager;->getPackagesHoldingPermissions([Ljava HSPLandroid/app/ApplicationPackageManager;->getPermissionControllerPackageName()Ljava/lang/String; HSPLandroid/app/ApplicationPackageManager;->getPermissionFlags(Ljava/lang/String;Ljava/lang/String;Landroid/os/UserHandle;)I HSPLandroid/app/ApplicationPackageManager;->getPermissionInfo(Ljava/lang/String;I)Landroid/content/pm/PermissionInfo; -PLandroid/app/ApplicationPackageManager;->getPrimaryStorageCurrentVolume()Landroid/os/storage/VolumeInfo; +HPLandroid/app/ApplicationPackageManager;->getPrimaryStorageCurrentVolume()Landroid/os/storage/VolumeInfo; HSPLandroid/app/ApplicationPackageManager;->getReceiverInfo(Landroid/content/ComponentName;I)Landroid/content/pm/ActivityInfo; HSPLandroid/app/ApplicationPackageManager;->getResourcesForApplication(Landroid/content/pm/ApplicationInfo;)Landroid/content/res/Resources; HSPLandroid/app/ApplicationPackageManager;->getResourcesForApplication(Ljava/lang/String;)Landroid/content/res/Resources; @@ -1086,6 +1134,7 @@ HSPLandroid/app/BackStackRecord;->executeOps()V HSPLandroid/app/BackStackRecord;->expandOps(Ljava/util/ArrayList;Landroid/app/Fragment;)Landroid/app/Fragment; HSPLandroid/app/BackStackRecord;->generateOps(Ljava/util/ArrayList;Ljava/util/ArrayList;)Z HSPLandroid/app/BackStackRecord;->interactsWith(I)Z +HSPLandroid/app/BackStackRecord;->isEmpty()Z HSPLandroid/app/BroadcastOptions;-><init>(Landroid/os/Bundle;)V HSPLandroid/app/BroadcastOptions;->allowsBackgroundActivityStarts()Z HSPLandroid/app/BroadcastOptions;->getMaxManifestReceiverApiLevel()I @@ -1094,6 +1143,7 @@ HSPLandroid/app/BroadcastOptions;->getTemporaryAppWhitelistDuration()J HSPLandroid/app/BroadcastOptions;->isDontSendToRestrictedApps()Z HSPLandroid/app/BroadcastOptions;->makeBasic()Landroid/app/BroadcastOptions; HSPLandroid/app/BroadcastOptions;->setBackgroundActivityStartsAllowed(Z)V +HPLandroid/app/BroadcastOptions;->setDontSendToRestrictedApps(Z)V HSPLandroid/app/BroadcastOptions;->setMaxManifestReceiverApiLevel(I)V HSPLandroid/app/BroadcastOptions;->setTemporaryAppWhitelistDuration(J)V HSPLandroid/app/BroadcastOptions;->toBundle()Landroid/os/Bundle; @@ -1201,7 +1251,7 @@ HSPLandroid/app/ContextImpl;->sendBroadcast(Landroid/content/Intent;Ljava/lang/S HSPLandroid/app/ContextImpl;->sendBroadcastAsUser(Landroid/content/Intent;Landroid/os/UserHandle;)V HSPLandroid/app/ContextImpl;->sendBroadcastAsUser(Landroid/content/Intent;Landroid/os/UserHandle;Ljava/lang/String;)V HSPLandroid/app/ContextImpl;->sendBroadcastAsUser(Landroid/content/Intent;Landroid/os/UserHandle;Ljava/lang/String;I)V -PLandroid/app/ContextImpl;->sendBroadcastAsUser(Landroid/content/Intent;Landroid/os/UserHandle;Ljava/lang/String;Landroid/os/Bundle;)V +HPLandroid/app/ContextImpl;->sendBroadcastAsUser(Landroid/content/Intent;Landroid/os/UserHandle;Ljava/lang/String;Landroid/os/Bundle;)V HSPLandroid/app/ContextImpl;->sendBroadcastAsUserMultiplePermissions(Landroid/content/Intent;Landroid/os/UserHandle;[Ljava/lang/String;)V HSPLandroid/app/ContextImpl;->sendOrderedBroadcastAsUser(Landroid/content/Intent;Landroid/os/UserHandle;Ljava/lang/String;ILandroid/os/Bundle;Landroid/content/BroadcastReceiver;Landroid/os/Handler;ILjava/lang/String;Landroid/os/Bundle;)V HSPLandroid/app/ContextImpl;->sendOrderedBroadcastAsUser(Landroid/content/Intent;Landroid/os/UserHandle;Ljava/lang/String;Landroid/content/BroadcastReceiver;Landroid/os/Handler;ILjava/lang/String;Landroid/os/Bundle;)V @@ -1239,6 +1289,8 @@ HSPLandroid/app/Dialog;->dismiss()V HSPLandroid/app/Dialog;->dismissDialog()V HSPLandroid/app/Dialog;->dispatchOnCreate(Landroid/os/Bundle;)V HSPLandroid/app/Dialog;->dispatchTouchEvent(Landroid/view/MotionEvent;)Z +HSPLandroid/app/Dialog;->findViewById(I)Landroid/view/View; +HSPLandroid/app/Dialog;->getContext()Landroid/content/Context; HSPLandroid/app/Dialog;->getWindow()Landroid/view/Window; HSPLandroid/app/Dialog;->hide()V HSPLandroid/app/Dialog;->onAttachedToWindow()V @@ -1247,6 +1299,7 @@ HSPLandroid/app/Dialog;->onCreate(Landroid/os/Bundle;)V HSPLandroid/app/Dialog;->onDetachedFromWindow()V HSPLandroid/app/Dialog;->onStart()V HSPLandroid/app/Dialog;->onStop()V +HSPLandroid/app/Dialog;->onTouchEvent(Landroid/view/MotionEvent;)Z HSPLandroid/app/Dialog;->onWindowAttributesChanged(Landroid/view/WindowManager$LayoutParams;)V HSPLandroid/app/Dialog;->onWindowFocusChanged(Z)V HSPLandroid/app/Dialog;->setCancelable(Z)V @@ -1314,6 +1367,7 @@ HSPLandroid/app/Fragment;->restoreViewState(Landroid/os/Bundle;)V HSPLandroid/app/Fragment;->setIndex(ILandroid/app/Fragment;)V HSPLandroid/app/Fragment;->setNextAnim(I)V HSPLandroid/app/Fragment;->setNextTransition(II)V +HSPLandroid/app/Fragment;->setRetainInstance(Z)V HSPLandroid/app/FragmentContainer;->instantiate(Landroid/content/Context;Ljava/lang/String;Landroid/os/Bundle;)Landroid/app/Fragment; HSPLandroid/app/FragmentController;->attachHost(Landroid/app/Fragment;)V HSPLandroid/app/FragmentController;->createController(Landroid/app/FragmentHostCallback;)Landroid/app/FragmentController; @@ -1346,6 +1400,7 @@ HSPLandroid/app/FragmentHostCallback;->getContext()Landroid/content/Context; HSPLandroid/app/FragmentHostCallback;->getFragmentManagerImpl()Landroid/app/FragmentManagerImpl; HSPLandroid/app/FragmentHostCallback;->getHandler()Landroid/os/Handler; HSPLandroid/app/FragmentHostCallback;->getLoaderManager(Ljava/lang/String;ZZ)Landroid/app/LoaderManagerImpl; +HSPLandroid/app/FragmentHostCallback;->getRetainLoaders()Z HSPLandroid/app/FragmentHostCallback;->inactivateFragment(Ljava/lang/String;)V HSPLandroid/app/FragmentHostCallback;->reportLoaderStart()V HSPLandroid/app/FragmentManagerImpl$1;->run()V @@ -1401,6 +1456,7 @@ HSPLandroid/app/FragmentManagerImpl;->removeRedundantOperationsAndExecute(Ljava/ HSPLandroid/app/FragmentManagerImpl;->restoreAllState(Landroid/os/Parcelable;Landroid/app/FragmentManagerNonConfig;)V HSPLandroid/app/FragmentManagerImpl;->saveAllState()Landroid/os/Parcelable; HSPLandroid/app/FragmentManagerImpl;->saveFragmentBasicState(Landroid/app/Fragment;)Landroid/os/Bundle; +HSPLandroid/app/FragmentManagerImpl;->saveFragmentViewState(Landroid/app/Fragment;)V HSPLandroid/app/FragmentManagerImpl;->saveNonConfig()V HSPLandroid/app/FragmentManagerImpl;->scheduleCommit()V HSPLandroid/app/FragmentManagerState$1;-><init>()V @@ -1432,6 +1488,7 @@ HSPLandroid/app/IActivityManager$Stub$Proxy;->getPackageForIntentSender(Landroid HSPLandroid/app/IActivityManager$Stub$Proxy;->getProcessMemoryInfo([I)[Landroid/os/Debug$MemoryInfo; HSPLandroid/app/IActivityManager$Stub$Proxy;->getProviderMimeType(Landroid/net/Uri;I)Ljava/lang/String; HSPLandroid/app/IActivityManager$Stub$Proxy;->getRunningAppProcesses()Ljava/util/List; +HSPLandroid/app/IActivityManager$Stub$Proxy;->handleApplicationStrictModeViolation(Landroid/os/IBinder;ILandroid/os/StrictMode$ViolationInfo;)V HSPLandroid/app/IActivityManager$Stub$Proxy;->isUserAMonkey()Z HSPLandroid/app/IActivityManager$Stub$Proxy;->publishContentProviders(Landroid/app/IApplicationThread;Ljava/util/List;)V HSPLandroid/app/IActivityManager$Stub$Proxy;->publishService(Landroid/os/IBinder;Landroid/content/Intent;Landroid/os/IBinder;)V @@ -1469,12 +1526,13 @@ HSPLandroid/app/IActivityTaskManager$Stub$Proxy;->getRequestedOrientation(Landro HSPLandroid/app/IActivityTaskManager$Stub$Proxy;->getTaskForActivity(Landroid/os/IBinder;Z)I HSPLandroid/app/IActivityTaskManager$Stub$Proxy;->isInMultiWindowMode(Landroid/os/IBinder;)Z HSPLandroid/app/IActivityTaskManager$Stub$Proxy;->overridePendingTransition(Landroid/os/IBinder;Ljava/lang/String;II)V +HSPLandroid/app/IActivityTaskManager$Stub$Proxy;->reportActivityFullyDrawn(Landroid/os/IBinder;Z)V HSPLandroid/app/IActivityTaskManager$Stub$Proxy;->reportAssistContextExtras(Landroid/os/IBinder;Landroid/os/Bundle;Landroid/app/assist/AssistStructure;Landroid/app/assist/AssistContent;Landroid/net/Uri;)V HSPLandroid/app/IActivityTaskManager$Stub$Proxy;->reportSizeConfigurations(Landroid/os/IBinder;[I[I[I)V HSPLandroid/app/IActivityTaskManager$Stub$Proxy;->setTaskDescription(Landroid/os/IBinder;Landroid/app/ActivityManager$TaskDescription;)V HSPLandroid/app/IActivityTaskManager$Stub$Proxy;->startActivity(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IILandroid/app/ProfilerInfo;Landroid/os/Bundle;)I HSPLandroid/app/IActivityTaskManager$Stub;-><init>()V -PLandroid/app/IActivityTaskManager$Stub;->getDefaultTransactionName(I)Ljava/lang/String; +HPLandroid/app/IActivityTaskManager$Stub;->getDefaultTransactionName(I)Ljava/lang/String; HSPLandroid/app/IActivityTaskManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HSPLandroid/app/IAlarmCompleteListener$Stub$Proxy;->alarmComplete(Landroid/os/IBinder;)V HSPLandroid/app/IAlarmCompleteListener$Stub;-><init>()V @@ -1491,19 +1549,19 @@ HSPLandroid/app/IAlarmManager$Stub$Proxy;->set(Ljava/lang/String;IJJJILandroid/a HSPLandroid/app/IAlarmManager$Stub$Proxy;->setTimeZone(Ljava/lang/String;)V HSPLandroid/app/IAlarmManager$Stub;-><init>()V HSPLandroid/app/IAlarmManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/IAlarmManager; -PLandroid/app/IAlarmManager$Stub;->getDefaultTransactionName(I)Ljava/lang/String; +HPLandroid/app/IAlarmManager$Stub;->getDefaultTransactionName(I)Ljava/lang/String; HSPLandroid/app/IAlarmManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HSPLandroid/app/IAppTask$Stub$Proxy;->getTaskInfo()Landroid/app/ActivityManager$RecentTaskInfo; HSPLandroid/app/IAppTask$Stub$Proxy;->setExcludeFromRecents(Z)V -PLandroid/app/IAppTask$Stub;-><init>()V +HPLandroid/app/IAppTask$Stub;-><init>()V HPLandroid/app/IAppTask$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HSPLandroid/app/IApplicationThread$Stub$Proxy;-><init>(Landroid/os/IBinder;)V HSPLandroid/app/IApplicationThread$Stub$Proxy;->asBinder()Landroid/os/IBinder; HSPLandroid/app/IApplicationThread$Stub$Proxy;->bindApplication(Ljava/lang/String;Landroid/content/pm/ApplicationInfo;Ljava/util/List;Landroid/content/ComponentName;Landroid/app/ProfilerInfo;Landroid/os/Bundle;Landroid/app/IInstrumentationWatcher;Landroid/app/IUiAutomationConnection;IZZZZLandroid/content/res/Configuration;Landroid/content/res/CompatibilityInfo;Ljava/util/Map;Landroid/os/Bundle;Ljava/lang/String;Landroid/content/AutofillOptions;Landroid/content/ContentCaptureOptions;)V HSPLandroid/app/IApplicationThread$Stub$Proxy;->clearDnsCache()V HSPLandroid/app/IApplicationThread$Stub$Proxy;->dispatchPackageBroadcast(I[Ljava/lang/String;)V -PLandroid/app/IApplicationThread$Stub$Proxy;->dumpService(Landroid/os/ParcelFileDescriptor;Landroid/os/IBinder;[Ljava/lang/String;)V -PLandroid/app/IApplicationThread$Stub$Proxy;->requestAssistContextExtras(Landroid/os/IBinder;Landroid/os/IBinder;III)V +HPLandroid/app/IApplicationThread$Stub$Proxy;->dumpService(Landroid/os/ParcelFileDescriptor;Landroid/os/IBinder;[Ljava/lang/String;)V +HPLandroid/app/IApplicationThread$Stub$Proxy;->requestAssistContextExtras(Landroid/os/IBinder;Landroid/os/IBinder;III)V HSPLandroid/app/IApplicationThread$Stub$Proxy;->runIsolatedEntryPoint(Ljava/lang/String;[Ljava/lang/String;)V HSPLandroid/app/IApplicationThread$Stub$Proxy;->scheduleBindService(Landroid/os/IBinder;Landroid/content/Intent;ZI)V HPLandroid/app/IApplicationThread$Stub$Proxy;->scheduleCreateBackupAgent(Landroid/content/pm/ApplicationInfo;Landroid/content/res/CompatibilityInfo;II)V @@ -1511,18 +1569,19 @@ HSPLandroid/app/IApplicationThread$Stub$Proxy;->scheduleCreateService(Landroid/o HPLandroid/app/IApplicationThread$Stub$Proxy;->scheduleDestroyBackupAgent(Landroid/content/pm/ApplicationInfo;Landroid/content/res/CompatibilityInfo;I)V HSPLandroid/app/IApplicationThread$Stub$Proxy;->scheduleEnterAnimationComplete(Landroid/os/IBinder;)V HSPLandroid/app/IApplicationThread$Stub$Proxy;->scheduleInstallProvider(Landroid/content/pm/ProviderInfo;)V +HPLandroid/app/IApplicationThread$Stub$Proxy;->scheduleLowMemory()V HSPLandroid/app/IApplicationThread$Stub$Proxy;->scheduleReceiver(Landroid/content/Intent;Landroid/content/pm/ActivityInfo;Landroid/content/res/CompatibilityInfo;ILjava/lang/String;Landroid/os/Bundle;ZII)V HSPLandroid/app/IApplicationThread$Stub$Proxy;->scheduleRegisteredReceiver(Landroid/content/IIntentReceiver;Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZII)V HSPLandroid/app/IApplicationThread$Stub$Proxy;->scheduleServiceArgs(Landroid/os/IBinder;Landroid/content/pm/ParceledListSlice;)V HSPLandroid/app/IApplicationThread$Stub$Proxy;->scheduleSleeping(Landroid/os/IBinder;Z)V HSPLandroid/app/IApplicationThread$Stub$Proxy;->scheduleStopService(Landroid/os/IBinder;)V -PLandroid/app/IApplicationThread$Stub$Proxy;->scheduleSuicide()V +HPLandroid/app/IApplicationThread$Stub$Proxy;->scheduleSuicide()V HSPLandroid/app/IApplicationThread$Stub$Proxy;->scheduleTransaction(Landroid/app/servertransaction/ClientTransaction;)V HSPLandroid/app/IApplicationThread$Stub$Proxy;->scheduleTrimMemory(I)V HSPLandroid/app/IApplicationThread$Stub$Proxy;->scheduleUnbindService(Landroid/os/IBinder;Landroid/content/Intent;)V HSPLandroid/app/IApplicationThread$Stub$Proxy;->setNetworkBlockSeq(J)V HSPLandroid/app/IApplicationThread$Stub$Proxy;->setProcessState(I)V -PLandroid/app/IApplicationThread$Stub$Proxy;->unstableProviderDied(Landroid/os/IBinder;)V +HPLandroid/app/IApplicationThread$Stub$Proxy;->unstableProviderDied(Landroid/os/IBinder;)V HSPLandroid/app/IApplicationThread$Stub;->asBinder()Landroid/os/IBinder; HSPLandroid/app/IApplicationThread$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/IApplicationThread; HSPLandroid/app/IApplicationThread$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z @@ -1531,7 +1590,7 @@ PLandroid/app/IAssistDataReceiver$Stub;->asInterface(Landroid/os/IBinder;)Landro HPLandroid/app/IBackupAgent$Stub$Proxy;->doBackup(Landroid/os/ParcelFileDescriptor;Landroid/os/ParcelFileDescriptor;Landroid/os/ParcelFileDescriptor;JLandroid/app/backup/IBackupCallback;I)V PLandroid/app/IBackupAgent$Stub$Proxy;->doFullBackup(Landroid/os/ParcelFileDescriptor;JILandroid/app/backup/IBackupManager;I)V HPLandroid/app/IBackupAgent$Stub$Proxy;->doMeasureFullBackup(JILandroid/app/backup/IBackupManager;I)V -PLandroid/app/IBackupAgent$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/IBackupAgent; +HPLandroid/app/IBackupAgent$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/IBackupAgent; HSPLandroid/app/IBackupAgent$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HPLandroid/app/IInstantAppResolver$Stub$Proxy;->getInstantAppResolveInfoList(Landroid/content/Intent;[IILjava/lang/String;ILandroid/os/IRemoteCallback;)V PLandroid/app/IInstantAppResolver$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/IInstantAppResolver; @@ -1549,7 +1608,7 @@ HSPLandroid/app/INotificationManager$Stub$Proxy;->getNotificationChannels(Ljava/ HSPLandroid/app/INotificationManager$Stub$Proxy;->getZenMode()I HSPLandroid/app/INotificationManager$Stub;-><init>()V HSPLandroid/app/INotificationManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/INotificationManager; -PLandroid/app/INotificationManager$Stub;->getDefaultTransactionName(I)Ljava/lang/String; +HPLandroid/app/INotificationManager$Stub;->getDefaultTransactionName(I)Ljava/lang/String; HSPLandroid/app/INotificationManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HSPLandroid/app/IProcessObserver$Stub$Proxy;->asBinder()Landroid/os/IBinder; HPLandroid/app/IProcessObserver$Stub$Proxy;->onForegroundActivitiesChanged(IIZ)V @@ -1557,6 +1616,7 @@ HPLandroid/app/IProcessObserver$Stub$Proxy;->onForegroundServicesChanged(III)V HPLandroid/app/IProcessObserver$Stub$Proxy;->onProcessDied(II)V HSPLandroid/app/IProcessObserver$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/IProcessObserver; HSPLandroid/app/ISearchManager$Stub;-><init>()V +HPLandroid/app/ISearchManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HSPLandroid/app/IServiceConnection$Stub$Proxy;->asBinder()Landroid/os/IBinder; HSPLandroid/app/IServiceConnection$Stub$Proxy;->connected(Landroid/content/ComponentName;Landroid/os/IBinder;Z)V HSPLandroid/app/IServiceConnection$Stub;->asBinder()Landroid/os/IBinder; @@ -1577,8 +1637,9 @@ PLandroid/app/ITransientNotification$Stub$Proxy;->hide()V PLandroid/app/ITransientNotification$Stub$Proxy;->show(Landroid/os/IBinder;)V HSPLandroid/app/ITransientNotification$Stub;-><init>()V HSPLandroid/app/ITransientNotification$Stub;->asBinder()Landroid/os/IBinder; -PLandroid/app/ITransientNotification$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/ITransientNotification; +HPLandroid/app/ITransientNotification$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/ITransientNotification; HSPLandroid/app/IUiAutomationConnection$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/IUiAutomationConnection; +HSPLandroid/app/IUiModeManager$Stub$Proxy;->getCurrentModeType()I HSPLandroid/app/IUiModeManager$Stub$Proxy;->getNightMode()I HSPLandroid/app/IUiModeManager$Stub;-><init>()V HSPLandroid/app/IUiModeManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/IUiModeManager; @@ -1592,13 +1653,14 @@ HSPLandroid/app/IUidObserver$Stub;-><init>()V HSPLandroid/app/IUidObserver$Stub;->asBinder()Landroid/os/IBinder; HSPLandroid/app/IUidObserver$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/IUidObserver; HSPLandroid/app/IUriGrantsManager$Stub;-><init>()V -PLandroid/app/IUriGrantsManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/app/IUriGrantsManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HSPLandroid/app/IUserSwitchObserver$Stub$Proxy;->asBinder()Landroid/os/IBinder; -PLandroid/app/IUserSwitchObserver$Stub$Proxy;->onForegroundProfileSwitch(I)V +HPLandroid/app/IUserSwitchObserver$Stub$Proxy;->onForegroundProfileSwitch(I)V HSPLandroid/app/IUserSwitchObserver$Stub$Proxy;->onLockedBootComplete(I)V HSPLandroid/app/IUserSwitchObserver$Stub;->asBinder()Landroid/os/IBinder; HSPLandroid/app/IUserSwitchObserver$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/IUserSwitchObserver; HSPLandroid/app/IUserSwitchObserver$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLandroid/app/IWallpaperManager$Stub$Proxy;->getWallpaperColors(III)Landroid/app/WallpaperColors; HSPLandroid/app/IWallpaperManager$Stub;-><init>()V HSPLandroid/app/IWallpaperManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HSPLandroid/app/IWallpaperManagerCallback$Stub$Proxy;->asBinder()Landroid/os/IBinder; @@ -1612,6 +1674,7 @@ HSPLandroid/app/Instrumentation;->callActivityOnNewIntent(Landroid/app/Activity; HSPLandroid/app/Instrumentation;->callActivityOnPause(Landroid/app/Activity;)V HSPLandroid/app/Instrumentation;->callActivityOnPostCreate(Landroid/app/Activity;Landroid/os/Bundle;)V HSPLandroid/app/Instrumentation;->callActivityOnRestart(Landroid/app/Activity;)V +HSPLandroid/app/Instrumentation;->callActivityOnRestoreInstanceState(Landroid/app/Activity;Landroid/os/Bundle;)V HSPLandroid/app/Instrumentation;->callActivityOnResume(Landroid/app/Activity;)V HSPLandroid/app/Instrumentation;->callActivityOnSaveInstanceState(Landroid/app/Activity;Landroid/os/Bundle;)V HSPLandroid/app/Instrumentation;->callActivityOnStart(Landroid/app/Activity;)V @@ -1641,8 +1704,8 @@ HSPLandroid/app/JobSchedulerImpl;->getPendingJob(I)Landroid/app/job/JobInfo; HSPLandroid/app/JobSchedulerImpl;->schedule(Landroid/app/job/JobInfo;)I HSPLandroid/app/JobSchedulerImpl;->scheduleAsPackage(Landroid/app/job/JobInfo;Ljava/lang/String;ILjava/lang/String;)I HSPLandroid/app/KeyguardManager;-><init>(Landroid/content/Context;)V -PLandroid/app/KeyguardManager;->createConfirmDeviceCredentialIntent(Ljava/lang/CharSequence;Ljava/lang/CharSequence;I)Landroid/content/Intent; -PLandroid/app/KeyguardManager;->getSettingsPackageForIntent(Landroid/content/Intent;)Ljava/lang/String; +HPLandroid/app/KeyguardManager;->createConfirmDeviceCredentialIntent(Ljava/lang/CharSequence;Ljava/lang/CharSequence;I)Landroid/content/Intent; +HPLandroid/app/KeyguardManager;->getSettingsPackageForIntent(Landroid/content/Intent;)Ljava/lang/String; HSPLandroid/app/KeyguardManager;->inKeyguardRestrictedInputMode()Z HSPLandroid/app/KeyguardManager;->isDeviceLocked()Z HSPLandroid/app/KeyguardManager;->isDeviceLocked(I)Z @@ -1702,7 +1765,8 @@ HSPLandroid/app/Notification$Action$Builder;-><init>(Landroid/graphics/drawable/ HSPLandroid/app/Notification$Action$Builder;->addExtras(Landroid/os/Bundle;)Landroid/app/Notification$Action$Builder; HSPLandroid/app/Notification$Action$Builder;->build()Landroid/app/Notification$Action; HSPLandroid/app/Notification$Action$Builder;->setAllowGeneratedReplies(Z)Landroid/app/Notification$Action$Builder; -PLandroid/app/Notification$Action$Builder;->setContextual(Z)Landroid/app/Notification$Action$Builder; +HPLandroid/app/Notification$Action$Builder;->setContextual(Z)Landroid/app/Notification$Action$Builder; +HSPLandroid/app/Notification$Action$Builder;->setSemanticAction(I)Landroid/app/Notification$Action$Builder; HSPLandroid/app/Notification$Action;-><init>(Landroid/graphics/drawable/Icon;Ljava/lang/CharSequence;Landroid/app/PendingIntent;Landroid/os/Bundle;[Landroid/app/RemoteInput;ZIZ)V HSPLandroid/app/Notification$Action;-><init>(Landroid/os/Parcel;)V HSPLandroid/app/Notification$Action;->clone()Landroid/app/Notification$Action; @@ -1713,11 +1777,13 @@ HSPLandroid/app/Notification$Action;->getSemanticAction()I HSPLandroid/app/Notification$Action;->isContextual()Z HSPLandroid/app/Notification$Action;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/app/Notification$BigTextStyle;-><init>()V +HSPLandroid/app/Notification$BigTextStyle;-><init>(Landroid/app/Notification$Builder;)V HSPLandroid/app/Notification$BigTextStyle;->addExtras(Landroid/os/Bundle;)V HPLandroid/app/Notification$BigTextStyle;->areNotificationsVisiblyDifferent(Landroid/app/Notification$Style;)Z HSPLandroid/app/Notification$BigTextStyle;->bigText(Ljava/lang/CharSequence;)Landroid/app/Notification$BigTextStyle; -PLandroid/app/Notification$BigTextStyle;->getBigText()Ljava/lang/CharSequence; +HPLandroid/app/Notification$BigTextStyle;->getBigText()Ljava/lang/CharSequence; HSPLandroid/app/Notification$BigTextStyle;->restoreFromExtras(Landroid/os/Bundle;)V +HSPLandroid/app/Notification$BigTextStyle;->setBigContentTitle(Ljava/lang/CharSequence;)Landroid/app/Notification$BigTextStyle; HSPLandroid/app/Notification$Builder;-><init>(Landroid/content/Context;)V HSPLandroid/app/Notification$Builder;-><init>(Landroid/content/Context;Landroid/app/Notification;)V HSPLandroid/app/Notification$Builder;-><init>(Landroid/content/Context;Ljava/lang/String;)V @@ -1737,6 +1803,7 @@ HSPLandroid/app/Notification$Builder;->setBadgeIconType(I)Landroid/app/Notificat HSPLandroid/app/Notification$Builder;->setCategory(Ljava/lang/String;)Landroid/app/Notification$Builder; HSPLandroid/app/Notification$Builder;->setChannelId(Ljava/lang/String;)Landroid/app/Notification$Builder; HSPLandroid/app/Notification$Builder;->setColor(I)Landroid/app/Notification$Builder; +HSPLandroid/app/Notification$Builder;->setColorized(Z)Landroid/app/Notification$Builder; HSPLandroid/app/Notification$Builder;->setContent(Landroid/widget/RemoteViews;)Landroid/app/Notification$Builder; HSPLandroid/app/Notification$Builder;->setContentInfo(Ljava/lang/CharSequence;)Landroid/app/Notification$Builder; HSPLandroid/app/Notification$Builder;->setContentIntent(Landroid/app/PendingIntent;)Landroid/app/Notification$Builder; @@ -1780,15 +1847,19 @@ HSPLandroid/app/Notification$Builder;->setVibrate([J)Landroid/app/Notification$B HSPLandroid/app/Notification$Builder;->setVisibility(I)Landroid/app/Notification$Builder; HSPLandroid/app/Notification$Builder;->setWhen(J)Landroid/app/Notification$Builder; HSPLandroid/app/Notification$Builder;->usesStandardHeader()Z +HSPLandroid/app/Notification$InboxStyle;-><init>()V +HSPLandroid/app/Notification$InboxStyle;->restoreFromExtras(Landroid/os/Bundle;)V HSPLandroid/app/Notification$MediaStyle;-><init>()V +HPLandroid/app/Notification$MediaStyle;->areNotificationsVisiblyDifferent(Landroid/app/Notification$Style;)Z +HSPLandroid/app/Notification$MediaStyle;->restoreFromExtras(Landroid/os/Bundle;)V HSPLandroid/app/Notification$MessagingStyle$Message;->getMessageFromBundle(Landroid/os/Bundle;)Landroid/app/Notification$MessagingStyle$Message; HSPLandroid/app/Notification$MessagingStyle$Message;->getMessagesFromBundleArray([Landroid/os/Parcelable;)Ljava/util/List; -PLandroid/app/Notification$MessagingStyle$Message;->getSenderPerson()Landroid/app/Person; -PLandroid/app/Notification$MessagingStyle$Message;->getText()Ljava/lang/CharSequence; -PLandroid/app/Notification$MessagingStyle$Message;->getTimestamp()J +HPLandroid/app/Notification$MessagingStyle$Message;->getSenderPerson()Landroid/app/Person; +HPLandroid/app/Notification$MessagingStyle$Message;->getText()Ljava/lang/CharSequence; +HPLandroid/app/Notification$MessagingStyle$Message;->getTimestamp()J HSPLandroid/app/Notification$MessagingStyle;-><init>()V HPLandroid/app/Notification$MessagingStyle;->areNotificationsVisiblyDifferent(Landroid/app/Notification$Style;)Z -PLandroid/app/Notification$MessagingStyle;->getMessages()Ljava/util/List; +HPLandroid/app/Notification$MessagingStyle;->getMessages()Ljava/util/List; HSPLandroid/app/Notification$MessagingStyle;->restoreFromExtras(Landroid/os/Bundle;)V HSPLandroid/app/Notification$Style;->addExtras(Landroid/os/Bundle;)V HSPLandroid/app/Notification$Style;->buildStyled(Landroid/app/Notification;)Landroid/app/Notification; @@ -1808,7 +1879,7 @@ HSPLandroid/app/Notification;->areStyledNotificationsVisiblyDifferent(Landroid/a HSPLandroid/app/Notification;->clone()Landroid/app/Notification; HSPLandroid/app/Notification;->cloneInto(Landroid/app/Notification;Z)V HSPLandroid/app/Notification;->findRemoteInputActionPair(Z)Landroid/util/Pair; -PLandroid/app/Notification;->getAllowSystemGeneratedContextualActions()Z +HPLandroid/app/Notification;->getAllowSystemGeneratedContextualActions()Z HSPLandroid/app/Notification;->getChannelId()Ljava/lang/String; HSPLandroid/app/Notification;->getContextualActions()Ljava/util/List; HSPLandroid/app/Notification;->getGroup()Ljava/lang/String; @@ -1883,6 +1954,7 @@ HSPLandroid/app/NotificationManager$Policy$1;->createFromParcel(Landroid/os/Parc HSPLandroid/app/NotificationManager$Policy;->allowAlarms()Z HSPLandroid/app/NotificationManager$Policy;->allowCalls()Z HSPLandroid/app/NotificationManager$Policy;->allowMedia()Z +HPLandroid/app/NotificationManager$Policy;->allowMessages()Z HSPLandroid/app/NotificationManager$Policy;->allowRepeatCallers()Z HSPLandroid/app/NotificationManager$Policy;->allowSystem()Z HSPLandroid/app/NotificationManager$Policy;->areAllVisualEffectsSuppressed(I)Z @@ -1914,6 +1986,7 @@ HSPLandroid/app/NotificationManager;->getNotificationChannel(Ljava/lang/String;) HSPLandroid/app/NotificationManager;->getNotificationChannels()Ljava/util/List; HSPLandroid/app/NotificationManager;->getService()Landroid/app/INotificationManager; HSPLandroid/app/NotificationManager;->getZenMode()I +HPLandroid/app/NotificationManager;->matchesCallFilter(Landroid/os/Bundle;)Z HSPLandroid/app/NotificationManager;->notify(ILandroid/app/Notification;)V HSPLandroid/app/NotificationManager;->notify(Ljava/lang/String;ILandroid/app/Notification;)V HSPLandroid/app/NotificationManager;->notifyAsUser(Ljava/lang/String;ILandroid/app/Notification;Landroid/os/UserHandle;)V @@ -1937,7 +2010,7 @@ HSPLandroid/app/PendingIntent;->getBroadcast(Landroid/content/Context;ILandroid/ HSPLandroid/app/PendingIntent;->getBroadcastAsUser(Landroid/content/Context;ILandroid/content/Intent;ILandroid/os/UserHandle;)Landroid/app/PendingIntent; HSPLandroid/app/PendingIntent;->getCreatorPackage()Ljava/lang/String; HSPLandroid/app/PendingIntent;->getCreatorUid()I -PLandroid/app/PendingIntent;->getIntent()Landroid/content/Intent; +HPLandroid/app/PendingIntent;->getIntent()Landroid/content/Intent; HSPLandroid/app/PendingIntent;->getService(Landroid/content/Context;ILandroid/content/Intent;I)Landroid/app/PendingIntent; HSPLandroid/app/PendingIntent;->getTag(Ljava/lang/String;)Ljava/lang/String; HSPLandroid/app/PendingIntent;->hashCode()I @@ -1960,9 +2033,9 @@ HSPLandroid/app/Person$Builder;->build()Landroid/app/Person; HSPLandroid/app/Person$Builder;->setKey(Ljava/lang/String;)Landroid/app/Person$Builder; HSPLandroid/app/Person;-><init>(Landroid/app/Person$Builder;)V HSPLandroid/app/Person;-><init>(Landroid/os/Parcel;)V -PLandroid/app/Person;->equals(Ljava/lang/Object;)Z -PLandroid/app/Person;->getKey()Ljava/lang/String; -PLandroid/app/Person;->getName()Ljava/lang/CharSequence; +HPLandroid/app/Person;->equals(Ljava/lang/Object;)Z +HPLandroid/app/Person;->getKey()Ljava/lang/String; +HPLandroid/app/Person;->getName()Ljava/lang/CharSequence; HPLandroid/app/Person;->hashCode()I HPLandroid/app/Person;->resolveToLegacyUri()Ljava/lang/String; HSPLandroid/app/Person;->writeToParcel(Landroid/os/Parcel;I)V @@ -1993,8 +2066,8 @@ HSPLandroid/app/RemoteInput$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/ HSPLandroid/app/RemoteInput$1;->newArray(I)[Landroid/app/RemoteInput; HSPLandroid/app/RemoteInput$1;->newArray(I)[Ljava/lang/Object; HSPLandroid/app/RemoteInput;-><init>(Landroid/os/Parcel;)V -PLandroid/app/RemoteInput;->getAllowFreeFormInput()Z -PLandroid/app/RemoteInput;->getChoices()[Ljava/lang/CharSequence; +HPLandroid/app/RemoteInput;->getAllowFreeFormInput()Z +HPLandroid/app/RemoteInput;->getChoices()[Ljava/lang/CharSequence; HSPLandroid/app/RemoteInput;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/app/ResourcesManager$ApkKey;->equals(Ljava/lang/Object;)Z HSPLandroid/app/ResourcesManager$ApkKey;->hashCode()I @@ -2005,6 +2078,7 @@ HSPLandroid/app/ResourcesManager;->applyNewResourceDirsLocked(Ljava/lang/String; HSPLandroid/app/ResourcesManager;->createAssetManager(Landroid/content/res/ResourcesKey;)Landroid/content/res/AssetManager; HSPLandroid/app/ResourcesManager;->createBaseActivityResources(Landroid/os/IBinder;Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;ILandroid/content/res/Configuration;Landroid/content/res/CompatibilityInfo;Ljava/lang/ClassLoader;)Landroid/content/res/Resources; HSPLandroid/app/ResourcesManager;->createResourcesImpl(Landroid/content/res/ResourcesKey;)Landroid/content/res/ResourcesImpl; +HSPLandroid/app/ResourcesManager;->findKeyForResourceImplLocked(Landroid/content/res/ResourcesImpl;)Landroid/content/res/ResourcesKey; HSPLandroid/app/ResourcesManager;->findResourcesImplForKeyLocked(Landroid/content/res/ResourcesKey;)Landroid/content/res/ResourcesImpl; HSPLandroid/app/ResourcesManager;->generateConfig(Landroid/content/res/ResourcesKey;Landroid/util/DisplayMetrics;)Landroid/content/res/Configuration; HSPLandroid/app/ResourcesManager;->getAdjustedDisplay(ILandroid/content/res/Resources;)Landroid/view/Display; @@ -2023,19 +2097,19 @@ HSPLandroid/app/ResourcesManager;->overlayPathToIdmapPath(Ljava/lang/String;)Lja HSPLandroid/app/ResourcesManager;->redirectResourcesToNewImplLocked(Landroid/util/ArrayMap;)V HSPLandroid/app/ResourcesManager;->updateResourcesForActivity(Landroid/os/IBinder;Landroid/content/res/Configuration;IZ)V HSPLandroid/app/ResultInfo$1;-><init>()V -PLandroid/app/ResultInfo;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/app/ResultInfo;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/app/SearchableInfo$1;-><init>()V HSPLandroid/app/SearchableInfo;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;Landroid/content/ComponentName;)V HSPLandroid/app/SearchableInfo;->createActivityContext(Landroid/content/Context;Landroid/content/ComponentName;)Landroid/content/Context; HSPLandroid/app/SearchableInfo;->getActivityMetaData(Landroid/content/Context;Landroid/content/pm/ActivityInfo;I)Landroid/app/SearchableInfo; HSPLandroid/app/SearchableInfo;->getActivityMetaData(Landroid/content/Context;Lorg/xmlpull/v1/XmlPullParser;Landroid/content/ComponentName;)Landroid/app/SearchableInfo; HSPLandroid/app/Service;-><init>()V -PLandroid/app/Service;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V +HPLandroid/app/Service;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V HSPLandroid/app/Service;->getApplication()Landroid/app/Application; HSPLandroid/app/Service;->onConfigurationChanged(Landroid/content/res/Configuration;)V HSPLandroid/app/Service;->onCreate()V HSPLandroid/app/Service;->onDestroy()V -PLandroid/app/Service;->onLowMemory()V +HPLandroid/app/Service;->onLowMemory()V HSPLandroid/app/Service;->onStart(Landroid/content/Intent;I)V HSPLandroid/app/Service;->onStartCommand(Landroid/content/Intent;II)I HSPLandroid/app/Service;->onTrimMemory(I)V @@ -2088,6 +2162,7 @@ HSPLandroid/app/SharedPreferencesImpl;->startLoadFromDisk()V HSPLandroid/app/SharedPreferencesImpl;->startReloadIfChangedUnexpectedly()V HSPLandroid/app/SharedPreferencesImpl;->unregisterOnSharedPreferenceChangeListener(Landroid/content/SharedPreferences$OnSharedPreferenceChangeListener;)V HSPLandroid/app/SharedPreferencesImpl;->writeToFile(Landroid/app/SharedPreferencesImpl$MemoryCommitResult;Z)V +HSPLandroid/app/StatsManager;->getIStatsManagerLocked()Landroid/os/IStatsManager; HSPLandroid/app/StatusBarManager;->getService()Lcom/android/internal/statusbar/IStatusBarService; HSPLandroid/app/SynchronousUserSwitchObserver;-><init>()V HSPLandroid/app/SystemServiceRegistry$100;-><init>()V @@ -2107,6 +2182,8 @@ HSPLandroid/app/SystemServiceRegistry$108;->createService(Landroid/app/ContextIm HSPLandroid/app/SystemServiceRegistry$108;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$109;-><init>()V HSPLandroid/app/SystemServiceRegistry$10;-><init>()V +HSPLandroid/app/SystemServiceRegistry$10;->createService(Landroid/app/ContextImpl;)Landroid/bluetooth/BluetoothManager; +HSPLandroid/app/SystemServiceRegistry$10;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$110;-><init>()V HSPLandroid/app/SystemServiceRegistry$110;->createService(Landroid/app/ContextImpl;)Landroid/app/timedetector/TimeDetector; HSPLandroid/app/SystemServiceRegistry$110;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; @@ -2203,6 +2280,8 @@ HSPLandroid/app/SystemServiceRegistry$3;-><init>()V HSPLandroid/app/SystemServiceRegistry$3;->createService(Landroid/app/ContextImpl;)Landroid/accounts/AccountManager; HSPLandroid/app/SystemServiceRegistry$3;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$40;-><init>()V +HSPLandroid/app/SystemServiceRegistry$40;->createService(Landroid/app/ContextImpl;)Landroid/app/StatsManager; +HSPLandroid/app/SystemServiceRegistry$40;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$41;-><init>()V HSPLandroid/app/SystemServiceRegistry$41;->createService(Landroid/app/ContextImpl;)Landroid/app/StatusBarManager; HSPLandroid/app/SystemServiceRegistry$41;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; @@ -2257,6 +2336,8 @@ HSPLandroid/app/SystemServiceRegistry$5;-><init>()V HSPLandroid/app/SystemServiceRegistry$5;->createService(Landroid/app/ContextImpl;)Landroid/app/ActivityTaskManager; HSPLandroid/app/SystemServiceRegistry$5;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$60;-><init>()V +HSPLandroid/app/SystemServiceRegistry$60;->createService()Landroid/net/wifi/p2p/WifiP2pManager; +HSPLandroid/app/SystemServiceRegistry$60;->createService()Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$61;-><init>()V HSPLandroid/app/SystemServiceRegistry$62;-><init>()V HSPLandroid/app/SystemServiceRegistry$63;-><init>()V @@ -2276,6 +2357,8 @@ HSPLandroid/app/SystemServiceRegistry$69;->createService(Landroid/app/ContextImp HSPLandroid/app/SystemServiceRegistry$69;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$6;-><init>()V HSPLandroid/app/SystemServiceRegistry$70;-><init>()V +HSPLandroid/app/SystemServiceRegistry$70;->createService(Landroid/app/ContextImpl;)Landroid/content/pm/LauncherApps; +HSPLandroid/app/SystemServiceRegistry$70;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$71;-><init>()V HSPLandroid/app/SystemServiceRegistry$71;->createService(Landroid/app/ContextImpl;)Landroid/content/RestrictionsManager; HSPLandroid/app/SystemServiceRegistry$71;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; @@ -2331,6 +2414,8 @@ HSPLandroid/app/SystemServiceRegistry$94;->createService(Landroid/app/ContextImp HSPLandroid/app/SystemServiceRegistry$95;-><init>()V HSPLandroid/app/SystemServiceRegistry$96;-><init>()V HSPLandroid/app/SystemServiceRegistry$97;-><init>()V +HSPLandroid/app/SystemServiceRegistry$97;->createService(Landroid/app/ContextImpl;)Landroid/os/health/SystemHealthManager; +HSPLandroid/app/SystemServiceRegistry$97;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$98;-><init>()V HSPLandroid/app/SystemServiceRegistry$99;-><init>()V HSPLandroid/app/SystemServiceRegistry$9;-><init>()V @@ -2347,12 +2432,12 @@ HSPLandroid/app/TaskStackListener;->onActivityRequestedOrientationChanged(II)V HSPLandroid/app/TaskStackListener;->onTaskCreated(ILandroid/content/ComponentName;)V HSPLandroid/app/TaskStackListener;->onTaskDescriptionChanged(ILandroid/app/ActivityManager$TaskDescription;)V HSPLandroid/app/TaskStackListener;->onTaskDescriptionChanged(Landroid/app/ActivityManager$RunningTaskInfo;)V -PLandroid/app/TaskStackListener;->onTaskMovedToFront(I)V -PLandroid/app/TaskStackListener;->onTaskMovedToFront(Landroid/app/ActivityManager$RunningTaskInfo;)V +HPLandroid/app/TaskStackListener;->onTaskMovedToFront(I)V +HPLandroid/app/TaskStackListener;->onTaskMovedToFront(Landroid/app/ActivityManager$RunningTaskInfo;)V HSPLandroid/app/TaskStackListener;->onTaskRemovalStarted(I)V HSPLandroid/app/TaskStackListener;->onTaskRemovalStarted(Landroid/app/ActivityManager$RunningTaskInfo;)V HSPLandroid/app/TaskStackListener;->onTaskRemoved(I)V -PLandroid/app/TaskStackListener;->onTaskSnapshotChanged(ILandroid/app/ActivityManager$TaskSnapshot;)V +HPLandroid/app/TaskStackListener;->onTaskSnapshotChanged(ILandroid/app/ActivityManager$TaskSnapshot;)V HSPLandroid/app/UiModeManager;->getCurrentModeType()I HSPLandroid/app/UiModeManager;->getNightMode()I HSPLandroid/app/UriGrantsManager$1;-><init>()V @@ -2360,7 +2445,7 @@ HSPLandroid/app/UriGrantsManager$1;->create()Landroid/app/IUriGrantsManager; HSPLandroid/app/UriGrantsManager$1;->create()Ljava/lang/Object; HSPLandroid/app/UriGrantsManager;->getService()Landroid/app/IUriGrantsManager; HSPLandroid/app/UserSwitchObserver;-><init>()V -PLandroid/app/UserSwitchObserver;->onForegroundProfileSwitch(I)V +HPLandroid/app/UserSwitchObserver;->onForegroundProfileSwitch(I)V HSPLandroid/app/UserSwitchObserver;->onLockedBootComplete(I)V HSPLandroid/app/WallpaperColors$1;-><init>()V HSPLandroid/app/WallpaperColors$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/WallpaperColors; @@ -2374,16 +2459,21 @@ HSPLandroid/app/WallpaperInfo;-><init>(Landroid/content/Context;Landroid/content HSPLandroid/app/WallpaperInfo;->getPackageName()Ljava/lang/String; HSPLandroid/app/WallpaperInfo;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/app/WallpaperManager$Globals;->forgetLoadedWallpaper()V +HSPLandroid/app/WallpaperManager$Globals;->getWallpaperColors(III)Landroid/app/WallpaperColors; HSPLandroid/app/WallpaperManager;->getDefaultWallpaperComponent(Landroid/content/Context;)Landroid/content/ComponentName; +HSPLandroid/app/WallpaperManager;->getWallpaperColors(I)Landroid/app/WallpaperColors; +HSPLandroid/app/WallpaperManager;->getWallpaperColors(II)Landroid/app/WallpaperColors; HSPLandroid/app/WallpaperManager;->getWallpaperFile(II)Landroid/os/ParcelFileDescriptor; HSPLandroid/app/WallpaperManager;->getWallpaperIdForUser(II)I HSPLandroid/app/WallpaperManager;->initGlobals(Landroid/app/IWallpaperManager;Landroid/os/Looper;)V +HPLandroid/app/WallpaperManager;->isWallpaperBackupEligible(I)Z HSPLandroid/app/WindowConfiguration$1;-><init>()V HSPLandroid/app/WindowConfiguration$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/WindowConfiguration; HSPLandroid/app/WindowConfiguration$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/app/WindowConfiguration;-><init>()V HSPLandroid/app/WindowConfiguration;->activityTypeToString(I)Ljava/lang/String; HSPLandroid/app/WindowConfiguration;->canReceiveKeys()Z +HPLandroid/app/WindowConfiguration;->canResizeTask()Z HSPLandroid/app/WindowConfiguration;->compareTo(Landroid/app/WindowConfiguration;)I HSPLandroid/app/WindowConfiguration;->diff(Landroid/app/WindowConfiguration;Z)J HSPLandroid/app/WindowConfiguration;->equals(Ljava/lang/Object;)Z @@ -2430,24 +2520,26 @@ HSPLandroid/app/admin/DevicePolicyCache;->getInstance()Landroid/app/admin/Device PLandroid/app/admin/DevicePolicyEventLogger;->createEvent(I)Landroid/app/admin/DevicePolicyEventLogger; PLandroid/app/admin/DevicePolicyEventLogger;->write()V HSPLandroid/app/admin/DevicePolicyManager;->checkDeviceIdentifierAccessAsUser(Ljava/lang/String;I)Z +HPLandroid/app/admin/DevicePolicyManager;->getAccountTypesWithManagementDisabledAsUser(I)[Ljava/lang/String; HSPLandroid/app/admin/DevicePolicyManager;->getDeviceOwnerComponentInner(Z)Landroid/content/ComponentName; HSPLandroid/app/admin/DevicePolicyManager;->getDeviceOwnerComponentOnAnyUser()Landroid/content/ComponentName; HSPLandroid/app/admin/DevicePolicyManager;->getGuestUserDisabled(Landroid/content/ComponentName;)Z HSPLandroid/app/admin/DevicePolicyManager;->getKeyguardDisabledFeatures(Landroid/content/ComponentName;I)I HSPLandroid/app/admin/DevicePolicyManager;->getMaximumTimeToLock(Landroid/content/ComponentName;I)J +HSPLandroid/app/admin/DevicePolicyManager;->getPasswordQuality(Landroid/content/ComponentName;I)I HSPLandroid/app/admin/DevicePolicyManager;->getProfileOwnerAsUser(I)Landroid/content/ComponentName; -PLandroid/app/admin/DevicePolicyManager;->getProfileOwnerAsUser(Landroid/os/UserHandle;)Landroid/content/ComponentName; -PLandroid/app/admin/DevicePolicyManager;->getRequiredStrongAuthTimeout(Landroid/content/ComponentName;I)J +HPLandroid/app/admin/DevicePolicyManager;->getProfileOwnerAsUser(Landroid/os/UserHandle;)Landroid/content/ComponentName; +HPLandroid/app/admin/DevicePolicyManager;->getRequiredStrongAuthTimeout(Landroid/content/ComponentName;I)J HSPLandroid/app/admin/DevicePolicyManager;->getStorageEncryptionStatus()I HSPLandroid/app/admin/DevicePolicyManager;->getStorageEncryptionStatus(I)I HSPLandroid/app/admin/DevicePolicyManager;->isDeviceManaged()Z HSPLandroid/app/admin/DevicePolicyManager;->isDeviceOwnerApp(Ljava/lang/String;)Z HSPLandroid/app/admin/DevicePolicyManager;->isDeviceOwnerAppOnCallingUser(Ljava/lang/String;)Z -PLandroid/app/admin/DevicePolicyManager;->isDeviceProvisioned()Z -PLandroid/app/admin/DevicePolicyManager;->isNotificationListenerServicePermitted(Ljava/lang/String;I)Z +HPLandroid/app/admin/DevicePolicyManager;->isDeviceProvisioned()Z +HPLandroid/app/admin/DevicePolicyManager;->isNotificationListenerServicePermitted(Ljava/lang/String;I)Z HSPLandroid/app/admin/DevicePolicyManager;->isProfileOwnerApp(Ljava/lang/String;)Z HSPLandroid/app/admin/DevicePolicyManager;->myUserId()I -PLandroid/app/admin/DevicePolicyManager;->setActivePasswordState(Landroid/app/admin/PasswordMetrics;I)V +HPLandroid/app/admin/DevicePolicyManager;->setActivePasswordState(Landroid/app/admin/PasswordMetrics;I)V PLandroid/app/admin/IDeviceAdminService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/admin/IDeviceAdminService; HSPLandroid/app/admin/IDevicePolicyManager$Stub$Proxy;->checkDeviceIdentifierAccess(Ljava/lang/String;III)Z HSPLandroid/app/admin/IDevicePolicyManager$Stub$Proxy;->getDeviceOwnerComponent(Z)Landroid/content/ComponentName; @@ -2457,10 +2549,10 @@ HSPLandroid/app/admin/IDevicePolicyManager$Stub$Proxy;->getStorageEncryptionStat HSPLandroid/app/admin/IDevicePolicyManager$Stub$Proxy;->hasDeviceOwner()Z HSPLandroid/app/admin/IDevicePolicyManager$Stub;-><init>()V HSPLandroid/app/admin/IDevicePolicyManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/admin/IDevicePolicyManager; -PLandroid/app/admin/IDevicePolicyManager$Stub;->getDefaultTransactionName(I)Ljava/lang/String; +HPLandroid/app/admin/IDevicePolicyManager$Stub;->getDefaultTransactionName(I)Ljava/lang/String; HSPLandroid/app/admin/IDevicePolicyManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HSPLandroid/app/admin/PasswordMetrics$1;-><init>()V -PLandroid/app/admin/PasswordMetrics;->computeForCredential(I[B)Landroid/app/admin/PasswordMetrics; +HPLandroid/app/admin/PasswordMetrics;->computeForCredential(I[B)Landroid/app/admin/PasswordMetrics; HSPLandroid/app/admin/PasswordMetrics;->computeForPassword([B)Landroid/app/admin/PasswordMetrics; HSPLandroid/app/admin/PasswordMetrics;->maxLengthSequence([B)I HSPLandroid/app/admin/SecurityLog$SecurityEvent$1;-><init>()V @@ -2473,8 +2565,8 @@ HSPLandroid/app/assist/AssistContent$1;->createFromParcel(Landroid/os/Parcel;)Lj HSPLandroid/app/assist/AssistContent;-><init>(Landroid/os/Parcel;)V HSPLandroid/app/assist/AssistContent;->getClipData()Landroid/content/ClipData; HSPLandroid/app/assist/AssistContent;->getIntent()Landroid/content/Intent; -PLandroid/app/assist/AssistContent;->writeToParcel(Landroid/os/Parcel;I)V -PLandroid/app/assist/AssistContent;->writeToParcelInternal(Landroid/os/Parcel;I)V +HPLandroid/app/assist/AssistContent;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/app/assist/AssistContent;->writeToParcelInternal(Landroid/os/Parcel;I)V HSPLandroid/app/assist/AssistStructure$1;-><init>()V HSPLandroid/app/assist/AssistStructure$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/assist/AssistStructure; HSPLandroid/app/assist/AssistStructure$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; @@ -2489,11 +2581,11 @@ HSPLandroid/app/assist/AssistStructure$ParcelTransferWriter;->writeToParcelInner HSPLandroid/app/assist/AssistStructure$ParcelTransferWriter;->writeView(Landroid/app/assist/AssistStructure$ViewNode;Landroid/os/Parcel;Landroid/os/PooledStringWriter;I)V HSPLandroid/app/assist/AssistStructure$SendChannel;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HSPLandroid/app/assist/AssistStructure$ViewNode;-><init>(Landroid/app/assist/AssistStructure$ParcelTransferReader;I)V -PLandroid/app/assist/AssistStructure$ViewNode;->getAutofillId()Landroid/view/autofill/AutofillId; +HPLandroid/app/assist/AssistStructure$ViewNode;->getAutofillId()Landroid/view/autofill/AutofillId; HPLandroid/app/assist/AssistStructure$ViewNode;->getAutofillType()I HSPLandroid/app/assist/AssistStructure$ViewNode;->getChildAt(I)Landroid/app/assist/AssistStructure$ViewNode; HSPLandroid/app/assist/AssistStructure$ViewNode;->getChildCount()I -PLandroid/app/assist/AssistStructure$ViewNode;->setAutofillOverlay(Landroid/app/assist/AssistStructure$AutofillOverlay;)V +HPLandroid/app/assist/AssistStructure$ViewNode;->setAutofillOverlay(Landroid/app/assist/AssistStructure$AutofillOverlay;)V HSPLandroid/app/assist/AssistStructure$ViewNode;->writeSelfToParcel(Landroid/os/Parcel;Landroid/os/PooledStringWriter;Z[F)I HSPLandroid/app/assist/AssistStructure$ViewNodeBuilder;->getChildCount()I HSPLandroid/app/assist/AssistStructure$ViewNodeBuilder;->newChild(I)Landroid/view/ViewStructure; @@ -2510,6 +2602,7 @@ HSPLandroid/app/assist/AssistStructure$ViewNodeBuilder;->setHint(Ljava/lang/Char HSPLandroid/app/assist/AssistStructure$ViewNodeBuilder;->setId(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V HSPLandroid/app/assist/AssistStructure$ViewNodeBuilder;->setImportantForAutofill(I)V HSPLandroid/app/assist/AssistStructure$ViewNodeBuilder;->setInputType(I)V +HSPLandroid/app/assist/AssistStructure$ViewNodeBuilder;->setLongClickable(Z)V HSPLandroid/app/assist/AssistStructure$ViewNodeBuilder;->setMaxTextEms(I)V HSPLandroid/app/assist/AssistStructure$ViewNodeBuilder;->setMaxTextLength(I)V HSPLandroid/app/assist/AssistStructure$ViewNodeBuilder;->setMinTextEms(I)V @@ -2528,19 +2621,19 @@ HSPLandroid/app/assist/AssistStructure$WindowNode;->writeSelfToParcel(Landroid/o HSPLandroid/app/assist/AssistStructure;-><init>(Landroid/app/Activity;ZI)V HSPLandroid/app/assist/AssistStructure;-><init>(Landroid/os/Parcel;)V HSPLandroid/app/assist/AssistStructure;->ensureData()V -PLandroid/app/assist/AssistStructure;->ensureDataForAutofill()V -PLandroid/app/assist/AssistStructure;->getFlags()I +HPLandroid/app/assist/AssistStructure;->ensureDataForAutofill()V +HPLandroid/app/assist/AssistStructure;->getFlags()I HSPLandroid/app/assist/AssistStructure;->getWindowNodeAt(I)Landroid/app/assist/AssistStructure$WindowNode; HSPLandroid/app/assist/AssistStructure;->getWindowNodeCount()I -PLandroid/app/assist/AssistStructure;->sanitizeForParceling(Z)V -PLandroid/app/assist/AssistStructure;->setActivityComponent(Landroid/content/ComponentName;)V -PLandroid/app/assist/AssistStructure;->setHomeActivity(Z)V -PLandroid/app/assist/AssistStructure;->setTaskId(I)V +HPLandroid/app/assist/AssistStructure;->sanitizeForParceling(Z)V +HPLandroid/app/assist/AssistStructure;->setActivityComponent(Landroid/content/ComponentName;)V +HPLandroid/app/assist/AssistStructure;->setHomeActivity(Z)V +HPLandroid/app/assist/AssistStructure;->setTaskId(I)V HSPLandroid/app/assist/AssistStructure;->waitForReady()Z HSPLandroid/app/assist/AssistStructure;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/app/backup/BackupAgent$BackupServiceBinder;->doBackup(Landroid/os/ParcelFileDescriptor;Landroid/os/ParcelFileDescriptor;Landroid/os/ParcelFileDescriptor;JLandroid/app/backup/IBackupCallback;I)V -PLandroid/app/backup/BackupAgent$BackupServiceBinder;->doFullBackup(Landroid/os/ParcelFileDescriptor;JILandroid/app/backup/IBackupManager;I)V -PLandroid/app/backup/BackupAgent$BackupServiceBinder;->doMeasureFullBackup(JILandroid/app/backup/IBackupManager;I)V +HPLandroid/app/backup/BackupAgent$BackupServiceBinder;->doFullBackup(Landroid/os/ParcelFileDescriptor;JILandroid/app/backup/IBackupManager;I)V +HPLandroid/app/backup/BackupAgent$BackupServiceBinder;->doMeasureFullBackup(JILandroid/app/backup/IBackupManager;I)V HSPLandroid/app/backup/BackupAgent$SharedPrefsSynchronizer;->run()V HSPLandroid/app/backup/BackupAgent;-><init>()V HSPLandroid/app/backup/BackupAgent;->attach(Landroid/content/Context;)V @@ -2553,11 +2646,11 @@ HSPLandroid/app/backup/BackupAgent;->waitForSharedPrefs()V HSPLandroid/app/backup/BackupAgentHelper;-><init>()V HSPLandroid/app/backup/BackupAgentHelper;->addHelper(Ljava/lang/String;Landroid/app/backup/BackupHelper;)V HSPLandroid/app/backup/BackupAgentHelper;->onBackup(Landroid/os/ParcelFileDescriptor;Landroid/app/backup/BackupDataOutput;Landroid/os/ParcelFileDescriptor;)V -PLandroid/app/backup/BackupDataInput;-><init>(Ljava/io/FileDescriptor;)V -PLandroid/app/backup/BackupDataInput;->finalize()V -PLandroid/app/backup/BackupDataInput;->getKey()Ljava/lang/String; -PLandroid/app/backup/BackupDataInput;->readNextHeader()Z -PLandroid/app/backup/BackupDataInput;->skipEntityData()V +HPLandroid/app/backup/BackupDataInput;-><init>(Ljava/io/FileDescriptor;)V +HPLandroid/app/backup/BackupDataInput;->finalize()V +HPLandroid/app/backup/BackupDataInput;->getKey()Ljava/lang/String; +HPLandroid/app/backup/BackupDataInput;->readNextHeader()Z +HPLandroid/app/backup/BackupDataInput;->skipEntityData()V HSPLandroid/app/backup/BackupDataOutput;-><init>(Ljava/io/FileDescriptor;JI)V HSPLandroid/app/backup/BackupDataOutput;->finalize()V HSPLandroid/app/backup/BackupDataOutput;->setKeyPrefix(Ljava/lang/String;)V @@ -2574,22 +2667,30 @@ PLandroid/app/backup/BlobBackupHelper;->deflate([B)[B PLandroid/app/backup/BlobBackupHelper;->performBackup(Landroid/os/ParcelFileDescriptor;Landroid/app/backup/BackupDataOutput;Landroid/os/ParcelFileDescriptor;)V PLandroid/app/backup/BlobBackupHelper;->readOldState(Landroid/os/ParcelFileDescriptor;)Landroid/util/ArrayMap; PLandroid/app/backup/BlobBackupHelper;->writeBackupState(Landroid/util/ArrayMap;Landroid/os/ParcelFileDescriptor;)V -PLandroid/app/backup/FullBackupDataOutput;-><init>(Landroid/os/ParcelFileDescriptor;JI)V -PLandroid/app/backup/FullBackupDataOutput;->addSize(J)V +HSPLandroid/app/backup/FileBackupHelperBase;->finalize()V +HSPLandroid/app/backup/FileBackupHelperBase;->performBackup_checked(Landroid/os/ParcelFileDescriptor;Landroid/app/backup/BackupDataOutput;Landroid/os/ParcelFileDescriptor;[Ljava/lang/String;[Ljava/lang/String;)V +HPLandroid/app/backup/FullBackupDataOutput;-><init>(Landroid/os/ParcelFileDescriptor;JI)V +HPLandroid/app/backup/FullBackupDataOutput;->addSize(J)V PLandroid/app/backup/IBackupCallback$Stub;-><init>()V PLandroid/app/backup/IBackupCallback$Stub;->asBinder()Landroid/os/IBinder; PLandroid/app/backup/IBackupCallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HSPLandroid/app/backup/IBackupManager$Stub$Proxy;->dataChanged(Ljava/lang/String;)V +HSPLandroid/app/backup/IBackupManager$Stub$Proxy;->isBackupServiceActive(I)Z +HPLandroid/app/backup/IBackupManager$Stub$Proxy;->opCompleteForUser(IIJ)V HSPLandroid/app/backup/IBackupManager$Stub;-><init>()V HSPLandroid/app/backup/IBackupManager$Stub;->asBinder()Landroid/os/IBinder; HSPLandroid/app/backup/IBackupManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/backup/IBackupManager; HSPLandroid/app/backup/IBackupManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLandroid/app/backup/SharedPreferencesBackupHelper;-><init>(Landroid/content/Context;[Ljava/lang/String;)V +HSPLandroid/app/backup/SharedPreferencesBackupHelper;->performBackup(Landroid/os/ParcelFileDescriptor;Landroid/app/backup/BackupDataOutput;Landroid/os/ParcelFileDescriptor;)V HSPLandroid/app/contentsuggestions/IContentSuggestionsManager$Stub;-><init>()V HSPLandroid/app/job/IJobCallback$Stub$Proxy;->acknowledgeStartMessage(IZ)V HSPLandroid/app/job/IJobCallback$Stub$Proxy;->acknowledgeStopMessage(IZ)V +HSPLandroid/app/job/IJobCallback$Stub$Proxy;->completeWork(II)Z +HSPLandroid/app/job/IJobCallback$Stub$Proxy;->dequeueWork(I)Landroid/app/job/JobWorkItem; HSPLandroid/app/job/IJobCallback$Stub$Proxy;->jobFinished(IZ)V HSPLandroid/app/job/IJobCallback$Stub;-><init>()V -PLandroid/app/job/IJobCallback$Stub;->getDefaultTransactionName(I)Ljava/lang/String; +HPLandroid/app/job/IJobCallback$Stub;->getDefaultTransactionName(I)Ljava/lang/String; HSPLandroid/app/job/IJobCallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HSPLandroid/app/job/IJobScheduler$Stub$Proxy;->cancel(I)V HSPLandroid/app/job/IJobScheduler$Stub$Proxy;->enqueue(Landroid/app/job/JobInfo;Landroid/app/job/JobWorkItem;)I @@ -2597,7 +2698,7 @@ HSPLandroid/app/job/IJobScheduler$Stub$Proxy;->getAllPendingJobs()Ljava/util/Lis HSPLandroid/app/job/IJobScheduler$Stub$Proxy;->getPendingJob(I)Landroid/app/job/JobInfo; HSPLandroid/app/job/IJobScheduler$Stub$Proxy;->schedule(Landroid/app/job/JobInfo;)I HSPLandroid/app/job/IJobScheduler$Stub;-><init>()V -PLandroid/app/job/IJobScheduler$Stub;->getDefaultTransactionName(I)Ljava/lang/String; +HPLandroid/app/job/IJobScheduler$Stub;->getDefaultTransactionName(I)Ljava/lang/String; HSPLandroid/app/job/IJobScheduler$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HSPLandroid/app/job/IJobService$Stub$Proxy;->startJob(Landroid/app/job/JobParameters;)V HPLandroid/app/job/IJobService$Stub$Proxy;->stopJob(Landroid/app/job/JobParameters;)V @@ -2620,11 +2721,13 @@ HSPLandroid/app/job/JobInfo$Builder;->setPersisted(Z)Landroid/app/job/JobInfo$Bu HSPLandroid/app/job/JobInfo$Builder;->setRequiredNetworkType(I)Landroid/app/job/JobInfo$Builder; HSPLandroid/app/job/JobInfo$Builder;->setRequiresCharging(Z)Landroid/app/job/JobInfo$Builder; HSPLandroid/app/job/JobInfo$Builder;->setRequiresDeviceIdle(Z)Landroid/app/job/JobInfo$Builder; +HSPLandroid/app/job/JobInfo$Builder;->setTriggerContentMaxDelay(J)Landroid/app/job/JobInfo$Builder; HSPLandroid/app/job/JobInfo$TriggerContentUri$1;-><init>()V HSPLandroid/app/job/JobInfo$TriggerContentUri$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/job/JobInfo$TriggerContentUri; HSPLandroid/app/job/JobInfo$TriggerContentUri$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/app/job/JobInfo$TriggerContentUri$1;->newArray(I)[Landroid/app/job/JobInfo$TriggerContentUri; HSPLandroid/app/job/JobInfo$TriggerContentUri$1;->newArray(I)[Ljava/lang/Object; +HSPLandroid/app/job/JobInfo$TriggerContentUri;-><init>(Landroid/net/Uri;I)V HPLandroid/app/job/JobInfo$TriggerContentUri;->equals(Ljava/lang/Object;)Z HPLandroid/app/job/JobInfo$TriggerContentUri;->hashCode()I HSPLandroid/app/job/JobInfo$TriggerContentUri;->writeToParcel(Landroid/os/Parcel;I)V @@ -2662,6 +2765,8 @@ HSPLandroid/app/job/JobParameters$1;-><init>()V HSPLandroid/app/job/JobParameters$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/job/JobParameters; HSPLandroid/app/job/JobParameters$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/app/job/JobParameters;-><init>(Landroid/os/Parcel;)V +HSPLandroid/app/job/JobParameters;->completeWork(Landroid/app/job/JobWorkItem;)V +HSPLandroid/app/job/JobParameters;->dequeueWork()Landroid/app/job/JobWorkItem; HSPLandroid/app/job/JobParameters;->getCallback()Landroid/app/job/IJobCallback; HPLandroid/app/job/JobParameters;->getDebugStopReason()Ljava/lang/String; HSPLandroid/app/job/JobParameters;->getExtras()Landroid/os/PersistableBundle; @@ -2684,7 +2789,9 @@ HSPLandroid/app/job/JobServiceEngine;->jobFinished(Landroid/app/job/JobParameter HSPLandroid/app/job/JobWorkItem$1;-><init>()V HSPLandroid/app/job/JobWorkItem$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/job/JobWorkItem; HSPLandroid/app/job/JobWorkItem$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/app/job/JobWorkItem;-><init>(Landroid/content/Intent;)V HSPLandroid/app/job/JobWorkItem;-><init>(Landroid/os/Parcel;)V +HSPLandroid/app/job/JobWorkItem;->getIntent()Landroid/content/Intent; HSPLandroid/app/job/JobWorkItem;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/app/prediction/AppPredictionContext$1;-><init>()V HSPLandroid/app/prediction/AppPredictionContext$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/prediction/AppPredictionContext; @@ -2709,7 +2816,7 @@ HSPLandroid/app/prediction/AppTargetId$1;->createFromParcel(Landroid/os/Parcel;) HSPLandroid/app/prediction/AppTargetId;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/app/prediction/IPredictionCallback$Stub$Proxy;->asBinder()Landroid/os/IBinder; HSPLandroid/app/prediction/IPredictionManager$Stub;-><init>()V -PLandroid/app/prediction/IPredictionManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/app/prediction/IPredictionManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HSPLandroid/app/role/-$$Lambda$RoleControllerManager$GrantDefaultRolesRequest$Qrnu382yknLH4_TvruMvYuK_N8M;->run()V HSPLandroid/app/role/-$$Lambda$RoleControllerManager$GrantDefaultRolesRequest$uMND2yv3BzXWyrtureF8K8b0f0A;->onResult(Landroid/os/Bundle;)V HSPLandroid/app/role/-$$Lambda$RoleControllerManager$RemoteService$45dMO3SdHJhfBB_YKrC44Sznmoo;-><init>()V @@ -2742,9 +2849,9 @@ HSPLandroid/app/servertransaction/ActivityRelaunchItem;->obtain(Ljava/util/List; HSPLandroid/app/servertransaction/ActivityRelaunchItem;->recycle()V HSPLandroid/app/servertransaction/ActivityRelaunchItem;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/app/servertransaction/ActivityResultItem$1;-><init>()V -PLandroid/app/servertransaction/ActivityResultItem;->obtain(Ljava/util/List;)Landroid/app/servertransaction/ActivityResultItem; -PLandroid/app/servertransaction/ActivityResultItem;->recycle()V -PLandroid/app/servertransaction/ActivityResultItem;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/app/servertransaction/ActivityResultItem;->obtain(Ljava/util/List;)Landroid/app/servertransaction/ActivityResultItem; +HPLandroid/app/servertransaction/ActivityResultItem;->recycle()V +HPLandroid/app/servertransaction/ActivityResultItem;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/app/servertransaction/BaseClientRequest;->postExecute(Landroid/app/ClientTransactionHandler;Landroid/os/IBinder;Landroid/app/servertransaction/PendingTransactionActions;)V HSPLandroid/app/servertransaction/BaseClientRequest;->preExecute(Landroid/app/ClientTransactionHandler;Landroid/os/IBinder;)V HSPLandroid/app/servertransaction/ClientTransaction$1;-><init>()V @@ -2864,6 +2971,7 @@ HSPLandroid/app/servertransaction/WindowVisibilityItem;->recycle()V HSPLandroid/app/servertransaction/WindowVisibilityItem;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/app/slice/ISliceManager$Stub$Proxy;->checkSlicePermission(Landroid/net/Uri;Ljava/lang/String;Ljava/lang/String;II[Ljava/lang/String;)I HSPLandroid/app/slice/ISliceManager$Stub$Proxy;->getPinnedSlices(Ljava/lang/String;)[Landroid/net/Uri; +HSPLandroid/app/slice/ISliceManager$Stub$Proxy;->getPinnedSpecs(Landroid/net/Uri;Ljava/lang/String;)[Landroid/app/slice/SliceSpec; HSPLandroid/app/slice/ISliceManager$Stub$Proxy;->grantSlicePermission(Ljava/lang/String;Ljava/lang/String;Landroid/net/Uri;)V HSPLandroid/app/slice/ISliceManager$Stub$Proxy;->pinSlice(Ljava/lang/String;Landroid/net/Uri;[Landroid/app/slice/SliceSpec;Landroid/os/IBinder;)V HSPLandroid/app/slice/ISliceManager$Stub;-><init>()V @@ -2881,18 +2989,25 @@ HSPLandroid/app/slice/Slice$Builder;->addText(Ljava/lang/CharSequence;Ljava/lang HSPLandroid/app/slice/Slice$Builder;->build()Landroid/app/slice/Slice; HSPLandroid/app/slice/Slice;->getHints()Ljava/util/List; HSPLandroid/app/slice/Slice;->getItems()Ljava/util/List; +HSPLandroid/app/slice/Slice;->getSpec()Landroid/app/slice/SliceSpec; +HSPLandroid/app/slice/Slice;->getUri()Landroid/net/Uri; +HSPLandroid/app/slice/Slice;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/app/slice/SliceItem$1;-><init>()V HSPLandroid/app/slice/SliceItem;->getAction()Landroid/app/PendingIntent; +HSPLandroid/app/slice/SliceItem;->getFormat()Ljava/lang/String; HSPLandroid/app/slice/SliceItem;->getHints()Ljava/util/List; HSPLandroid/app/slice/SliceItem;->getIcon()Landroid/graphics/drawable/Icon; HSPLandroid/app/slice/SliceItem;->getLong()J HSPLandroid/app/slice/SliceItem;->getSlice()Landroid/app/slice/Slice; +HSPLandroid/app/slice/SliceItem;->getSubType()Ljava/lang/String; HSPLandroid/app/slice/SliceItem;->getText()Ljava/lang/CharSequence; +HSPLandroid/app/slice/SliceItem;->writeObj(Landroid/os/Parcel;ILjava/lang/Object;Ljava/lang/String;)V HSPLandroid/app/slice/SliceManager;->$closeResource(Ljava/lang/Throwable;Ljava/lang/AutoCloseable;)V HSPLandroid/app/slice/SliceManager;->bindSlice(Landroid/net/Uri;Ljava/util/Set;)Landroid/app/slice/Slice; HSPLandroid/app/slice/SliceManager;->checkSlicePermission(Landroid/net/Uri;II)I HSPLandroid/app/slice/SliceManager;->enforceSlicePermission(Landroid/net/Uri;Ljava/lang/String;II[Ljava/lang/String;)V HSPLandroid/app/slice/SliceManager;->getPinnedSlices()Ljava/util/List; +HSPLandroid/app/slice/SliceManager;->getPinnedSpecs(Landroid/net/Uri;)Ljava/util/Set; HSPLandroid/app/slice/SliceManager;->grantSlicePermission(Ljava/lang/String;Landroid/net/Uri;)V HSPLandroid/app/slice/SliceManager;->pinSlice(Landroid/net/Uri;Ljava/util/Set;)V HSPLandroid/app/slice/SliceProvider;-><init>([Ljava/lang/String;)V @@ -2927,6 +3042,7 @@ HSPLandroid/app/trust/ITrustListener$Stub$Proxy;->onTrustChanged(ZII)V HSPLandroid/app/trust/ITrustListener$Stub$Proxy;->onTrustManagedChanged(ZI)V HSPLandroid/app/trust/ITrustManager$Stub$Proxy;->isDeviceLocked(I)Z HSPLandroid/app/trust/ITrustManager$Stub;-><init>()V +HPLandroid/app/trust/ITrustManager$Stub;->getDefaultTransactionName(I)Ljava/lang/String; HSPLandroid/app/trust/ITrustManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HSPLandroid/app/usage/AppStandbyInfo$1;-><init>()V HSPLandroid/app/usage/AppStandbyInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/usage/AppStandbyInfo; @@ -2960,6 +3076,7 @@ PLandroid/app/usage/ExternalStorageStats$1;-><init>()V HSPLandroid/app/usage/ICacheQuotaService$Stub$Proxy;->computeCacheQuotaHints(Landroid/os/RemoteCallback;Ljava/util/List;)V HSPLandroid/app/usage/ICacheQuotaService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/usage/ICacheQuotaService; HSPLandroid/app/usage/ICacheQuotaService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLandroid/app/usage/IStorageStatsManager$Stub$Proxy;->getFreeBytes(Ljava/lang/String;Ljava/lang/String;)J HSPLandroid/app/usage/IStorageStatsManager$Stub$Proxy;->queryStatsForPackage(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;)Landroid/app/usage/StorageStats; HSPLandroid/app/usage/IStorageStatsManager$Stub;-><init>()V HPLandroid/app/usage/IStorageStatsManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z @@ -2967,23 +3084,24 @@ HSPLandroid/app/usage/IUsageStatsManager$Stub$Proxy;->onCarrierPrivilegedAppsCha HSPLandroid/app/usage/IUsageStatsManager$Stub$Proxy;->queryUsageStats(IJJLjava/lang/String;)Landroid/content/pm/ParceledListSlice; HSPLandroid/app/usage/IUsageStatsManager$Stub;-><init>()V HSPLandroid/app/usage/IUsageStatsManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/usage/IUsageStatsManager; -PLandroid/app/usage/IUsageStatsManager$Stub;->getDefaultTransactionName(I)Ljava/lang/String; +HPLandroid/app/usage/IUsageStatsManager$Stub;->getDefaultTransactionName(I)Ljava/lang/String; HSPLandroid/app/usage/IUsageStatsManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z PLandroid/app/usage/NetworkStatsManager$CallbackHandler;->handleMessage(Landroid/os/Message;)V HSPLandroid/app/usage/NetworkStatsManager;->registerUsageCallback(Landroid/net/NetworkTemplate;IJLandroid/app/usage/NetworkStatsManager$UsageCallback;Landroid/os/Handler;)V -PLandroid/app/usage/NetworkStatsManager;->unregisterUsageCallback(Landroid/app/usage/NetworkStatsManager$UsageCallback;)V +HPLandroid/app/usage/NetworkStatsManager;->unregisterUsageCallback(Landroid/app/usage/NetworkStatsManager$UsageCallback;)V HSPLandroid/app/usage/StorageStats$1;-><init>()V HSPLandroid/app/usage/StorageStats$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/usage/StorageStats; HSPLandroid/app/usage/StorageStats$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/app/usage/StorageStats;->getAppBytes()J HSPLandroid/app/usage/StorageStats;->getCacheBytes()J HSPLandroid/app/usage/StorageStats;->getDataBytes()J -PLandroid/app/usage/StorageStatsManager;->getCacheBytes(Ljava/lang/String;)J -PLandroid/app/usage/StorageStatsManager;->getCacheBytes(Ljava/util/UUID;)J -PLandroid/app/usage/StorageStatsManager;->isQuotaSupported(Ljava/lang/String;)Z -PLandroid/app/usage/StorageStatsManager;->isQuotaSupported(Ljava/util/UUID;)Z -PLandroid/app/usage/StorageStatsManager;->queryExternalStatsForUser(Ljava/lang/String;Landroid/os/UserHandle;)Landroid/app/usage/ExternalStorageStats; -PLandroid/app/usage/StorageStatsManager;->queryExternalStatsForUser(Ljava/util/UUID;Landroid/os/UserHandle;)Landroid/app/usage/ExternalStorageStats; +HPLandroid/app/usage/StorageStatsManager;->getCacheBytes(Ljava/lang/String;)J +HPLandroid/app/usage/StorageStatsManager;->getCacheBytes(Ljava/util/UUID;)J +HSPLandroid/app/usage/StorageStatsManager;->getFreeBytes(Ljava/util/UUID;)J +HPLandroid/app/usage/StorageStatsManager;->isQuotaSupported(Ljava/lang/String;)Z +HPLandroid/app/usage/StorageStatsManager;->isQuotaSupported(Ljava/util/UUID;)Z +HPLandroid/app/usage/StorageStatsManager;->queryExternalStatsForUser(Ljava/lang/String;Landroid/os/UserHandle;)Landroid/app/usage/ExternalStorageStats; +HPLandroid/app/usage/StorageStatsManager;->queryExternalStatsForUser(Ljava/util/UUID;Landroid/os/UserHandle;)Landroid/app/usage/ExternalStorageStats; HSPLandroid/app/usage/StorageStatsManager;->queryStatsForPackage(Ljava/util/UUID;Ljava/lang/String;Landroid/os/UserHandle;)Landroid/app/usage/StorageStats; HSPLandroid/app/usage/TimeSparseArray;-><init>()V HSPLandroid/app/usage/TimeSparseArray;->closestIndexOnOrAfter(J)I @@ -3004,6 +3122,7 @@ HSPLandroid/app/usage/UsageStats$1;->readBundleToEventMap(Landroid/os/Bundle;Lan HSPLandroid/app/usage/UsageStats;-><init>()V HSPLandroid/app/usage/UsageStats;-><init>(Landroid/app/usage/UsageStats;)V HSPLandroid/app/usage/UsageStats;->eventMapToBundle(Landroid/util/ArrayMap;)Landroid/os/Bundle; +HSPLandroid/app/usage/UsageStats;->getLastTimeUsed()J HSPLandroid/app/usage/UsageStats;->getPackageName()Ljava/lang/String; HSPLandroid/app/usage/UsageStats;->getTotalTimeInForeground()J HSPLandroid/app/usage/UsageStats;->update(Ljava/lang/String;JII)V @@ -3013,7 +3132,7 @@ HSPLandroid/app/usage/UsageStats;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/app/usage/UsageStatsManager;->onCarrierPrivilegedAppsChanged()V HSPLandroid/app/usage/UsageStatsManager;->queryUsageStats(IJJ)Ljava/util/List; HPLandroid/app/usage/UsageStatsManager;->reasonToString(I)Ljava/lang/String; -PLandroid/app/usage/UsageStatsManager;->usageSourceToString(I)Ljava/lang/String; +HPLandroid/app/usage/UsageStatsManager;->usageSourceToString(I)Ljava/lang/String; HSPLandroid/app/usage/UsageStatsManagerInternal$AppIdleStateChangeListener;->onUserInteractionStarted(Ljava/lang/String;I)V HSPLandroid/appwidget/AppWidgetManager;->getAppWidgetIds(Landroid/content/ComponentName;)[I HSPLandroid/appwidget/AppWidgetManager;->getInstance(Landroid/content/Context;)Landroid/appwidget/AppWidgetManager; @@ -3027,10 +3146,11 @@ HSPLandroid/bluetooth/BluetoothA2dp$2;->onServiceConnected(Landroid/content/Comp HSPLandroid/bluetooth/BluetoothA2dp;-><init>(Landroid/content/Context;Landroid/bluetooth/BluetoothProfile$ServiceListener;)V HSPLandroid/bluetooth/BluetoothA2dp;->doBind()Z HSPLandroid/bluetooth/BluetoothA2dp;->getActiveDevice()Landroid/bluetooth/BluetoothDevice; +HPLandroid/bluetooth/BluetoothA2dp;->getCodecStatus(Landroid/bluetooth/BluetoothDevice;)Landroid/bluetooth/BluetoothCodecStatus; HSPLandroid/bluetooth/BluetoothA2dp;->getConnectedDevices()Ljava/util/List; HSPLandroid/bluetooth/BluetoothActivityEnergyInfo$1;-><init>()V -PLandroid/bluetooth/BluetoothActivityEnergyInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/bluetooth/BluetoothActivityEnergyInfo; -PLandroid/bluetooth/BluetoothActivityEnergyInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/bluetooth/BluetoothActivityEnergyInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/bluetooth/BluetoothActivityEnergyInfo; +HPLandroid/bluetooth/BluetoothActivityEnergyInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HPLandroid/bluetooth/BluetoothActivityEnergyInfo;-><init>(Landroid/os/Parcel;)V HSPLandroid/bluetooth/BluetoothAdapter$1;-><init>()V HSPLandroid/bluetooth/BluetoothAdapter$2;->onBluetoothServiceUp(Landroid/bluetooth/IBluetooth;)V @@ -3050,6 +3170,10 @@ HSPLandroid/bluetooth/BluetoothAdapter;->requestControllerActivityEnergyInfo(Lan HSPLandroid/bluetooth/BluetoothClass$1;-><init>()V HSPLandroid/bluetooth/BluetoothClass;->toString()Ljava/lang/String; HSPLandroid/bluetooth/BluetoothCodecConfig$1;-><init>()V +HPLandroid/bluetooth/BluetoothCodecConfig$1;->createFromParcel(Landroid/os/Parcel;)Landroid/bluetooth/BluetoothCodecConfig; +HPLandroid/bluetooth/BluetoothCodecConfig$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/bluetooth/BluetoothCodecConfig$1;->newArray(I)[Landroid/bluetooth/BluetoothCodecConfig; +HPLandroid/bluetooth/BluetoothCodecConfig$1;->newArray(I)[Ljava/lang/Object; HSPLandroid/bluetooth/BluetoothDevice$1;-><init>()V HSPLandroid/bluetooth/BluetoothDevice$2;-><init>()V HSPLandroid/bluetooth/BluetoothDevice$2;->createFromParcel(Landroid/os/Parcel;)Landroid/bluetooth/BluetoothDevice; @@ -3068,12 +3192,15 @@ HSPLandroid/bluetooth/BluetoothDevice;->getPhonebookAccessPermission()I HSPLandroid/bluetooth/BluetoothDevice;->getService()Landroid/bluetooth/IBluetooth; HSPLandroid/bluetooth/BluetoothDevice;->getUuids()[Landroid/os/ParcelUuid; HSPLandroid/bluetooth/BluetoothDevice;->hashCode()I +HSPLandroid/bluetooth/BluetoothDevice;->isConnected()Z HSPLandroid/bluetooth/BluetoothDevice;->toString()Ljava/lang/String; HSPLandroid/bluetooth/BluetoothHeadset$1;->onBluetoothStateChange(Z)V HSPLandroid/bluetooth/BluetoothHeadset$2;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V +HSPLandroid/bluetooth/BluetoothHeadset$2;->onServiceDisconnected(Landroid/content/ComponentName;)V HSPLandroid/bluetooth/BluetoothHeadset$3;->handleMessage(Landroid/os/Message;)V HSPLandroid/bluetooth/BluetoothHeadset;-><init>(Landroid/content/Context;Landroid/bluetooth/BluetoothProfile$ServiceListener;)V HSPLandroid/bluetooth/BluetoothHeadset;->doBind()Z +HSPLandroid/bluetooth/BluetoothHeadset;->doUnbind()V HSPLandroid/bluetooth/BluetoothHeadset;->getActiveDevice()Landroid/bluetooth/BluetoothDevice; HSPLandroid/bluetooth/BluetoothHeadset;->getConnectedDevices()Ljava/util/List; HSPLandroid/bluetooth/BluetoothHeadset;->phoneStateChanged(IIILjava/lang/String;ILjava/lang/String;)V @@ -3088,6 +3215,7 @@ HSPLandroid/bluetooth/BluetoothHidDevice$2;->onServiceConnected(Landroid/content HSPLandroid/bluetooth/BluetoothHidDevice;-><init>(Landroid/content/Context;Landroid/bluetooth/BluetoothProfile$ServiceListener;)V HSPLandroid/bluetooth/BluetoothHidDevice;->doBind()Z HSPLandroid/bluetooth/BluetoothHidDevice;->getConnectedDevices()Ljava/util/List; +HSPLandroid/bluetooth/BluetoothHidDevice;->getConnectionState(Landroid/bluetooth/BluetoothDevice;)I HSPLandroid/bluetooth/BluetoothHidHost$2;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V HSPLandroid/bluetooth/BluetoothHidHost;-><init>(Landroid/content/Context;Landroid/bluetooth/BluetoothProfile$ServiceListener;)V HSPLandroid/bluetooth/BluetoothHidHost;->doBind()Z @@ -3096,12 +3224,15 @@ HSPLandroid/bluetooth/BluetoothMap$2;->onServiceConnected(Landroid/content/Compo HSPLandroid/bluetooth/BluetoothMap;-><init>(Landroid/content/Context;Landroid/bluetooth/BluetoothProfile$ServiceListener;)V HSPLandroid/bluetooth/BluetoothMap;->doBind()Z HSPLandroid/bluetooth/BluetoothMap;->getConnectedDevices()Ljava/util/List; +HSPLandroid/bluetooth/BluetoothMap;->getConnectionState(Landroid/bluetooth/BluetoothDevice;)I HSPLandroid/bluetooth/BluetoothPan$2;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V HSPLandroid/bluetooth/BluetoothPan;-><init>(Landroid/content/Context;Landroid/bluetooth/BluetoothProfile$ServiceListener;)V HSPLandroid/bluetooth/BluetoothPan;->doBind()Z HSPLandroid/bluetooth/BluetoothPbap$2;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V HSPLandroid/bluetooth/BluetoothPbap;-><init>(Landroid/content/Context;Landroid/bluetooth/BluetoothPbap$ServiceListener;)V HSPLandroid/bluetooth/BluetoothPbap;->doBind()Z +HSPLandroid/bluetooth/BluetoothPbap;->getConnectionState(Landroid/bluetooth/BluetoothDevice;)I +HSPLandroid/bluetooth/BluetoothPbap;->isConnected(Landroid/bluetooth/BluetoothDevice;)Z HSPLandroid/bluetooth/BluetoothSap$2;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V HSPLandroid/bluetooth/BluetoothSap;-><init>(Landroid/content/Context;Landroid/bluetooth/BluetoothProfile$ServiceListener;)V HSPLandroid/bluetooth/BluetoothSap;->doBind()Z @@ -3113,6 +3244,7 @@ HSPLandroid/bluetooth/IBluetooth$Stub$Proxy;->asBinder()Landroid/os/IBinder; HSPLandroid/bluetooth/IBluetooth$Stub$Proxy;->enable()Z HSPLandroid/bluetooth/IBluetooth$Stub$Proxy;->getBondState(Landroid/bluetooth/BluetoothDevice;)I HSPLandroid/bluetooth/IBluetooth$Stub$Proxy;->getBondedDevices()[Landroid/bluetooth/BluetoothDevice; +HSPLandroid/bluetooth/IBluetooth$Stub$Proxy;->getConnectionState(Landroid/bluetooth/BluetoothDevice;)I HSPLandroid/bluetooth/IBluetooth$Stub$Proxy;->getName()Ljava/lang/String; HSPLandroid/bluetooth/IBluetooth$Stub$Proxy;->getPhonebookAccessPermission(Landroid/bluetooth/BluetoothDevice;)I HSPLandroid/bluetooth/IBluetooth$Stub$Proxy;->getRemoteAlias(Landroid/bluetooth/BluetoothDevice;)Ljava/lang/String; @@ -3128,6 +3260,7 @@ HSPLandroid/bluetooth/IBluetooth$Stub$Proxy;->registerCallback(Landroid/bluetoot HPLandroid/bluetooth/IBluetooth$Stub$Proxy;->requestActivityInfo(Landroid/os/ResultReceiver;)V HSPLandroid/bluetooth/IBluetooth$Stub;->asInterface(Landroid/os/IBinder;)Landroid/bluetooth/IBluetooth; HSPLandroid/bluetooth/IBluetoothA2dp$Stub$Proxy;->getActiveDevice()Landroid/bluetooth/BluetoothDevice; +HPLandroid/bluetooth/IBluetoothA2dp$Stub$Proxy;->getCodecStatus(Landroid/bluetooth/BluetoothDevice;)Landroid/bluetooth/BluetoothCodecStatus; HSPLandroid/bluetooth/IBluetoothA2dp$Stub$Proxy;->getConnectedDevices()Ljava/util/List; HSPLandroid/bluetooth/IBluetoothCallback$Stub;-><init>()V HSPLandroid/bluetooth/IBluetoothCallback$Stub;->asBinder()Landroid/os/IBinder; @@ -3138,6 +3271,7 @@ HSPLandroid/bluetooth/IBluetoothHeadset$Stub$Proxy;->getActiveDevice()Landroid/b HSPLandroid/bluetooth/IBluetoothHeadset$Stub$Proxy;->getConnectedDevices()Ljava/util/List; HSPLandroid/bluetooth/IBluetoothHeadset$Stub$Proxy;->phoneStateChanged(IIILjava/lang/String;ILjava/lang/String;)V HSPLandroid/bluetooth/IBluetoothHeadsetPhone$Stub;-><init>()V +HPLandroid/bluetooth/IBluetoothHeadsetPhone$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HSPLandroid/bluetooth/IBluetoothHearingAid$Stub$Proxy;->getActiveDevices()Ljava/util/List; HSPLandroid/bluetooth/IBluetoothHearingAid$Stub$Proxy;->getConnectedDevices()Ljava/util/List; HSPLandroid/bluetooth/IBluetoothHearingAid$Stub$Proxy;->getHiSyncId(Landroid/bluetooth/BluetoothDevice;)J @@ -3148,6 +3282,7 @@ HSPLandroid/bluetooth/IBluetoothManager$Stub$Proxy;->isHearingAidProfileSupporte HSPLandroid/bluetooth/IBluetoothManager$Stub$Proxy;->registerAdapter(Landroid/bluetooth/IBluetoothManagerCallback;)Landroid/bluetooth/IBluetooth; HSPLandroid/bluetooth/IBluetoothManager$Stub$Proxy;->registerStateChangeCallback(Landroid/bluetooth/IBluetoothStateChangeCallback;)V HSPLandroid/bluetooth/IBluetoothManager$Stub;-><init>()V +HPLandroid/bluetooth/IBluetoothManager$Stub;->getDefaultTransactionName(I)Ljava/lang/String; HSPLandroid/bluetooth/IBluetoothManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HSPLandroid/bluetooth/IBluetoothManagerCallback$Stub$Proxy;->asBinder()Landroid/os/IBinder; HSPLandroid/bluetooth/IBluetoothManagerCallback$Stub$Proxy;->onBluetoothServiceUp(Landroid/bluetooth/IBluetooth;)V @@ -3171,6 +3306,7 @@ HSPLandroid/bluetooth/le/ScanResult$1;-><init>()V HSPLandroid/bluetooth/le/ScanSettings$1;-><init>()V HSPLandroid/companion/ICompanionDeviceManager$Stub;-><init>()V HSPLandroid/companion/ICompanionDeviceManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/companion/ICompanionDeviceManager; +HPLandroid/companion/ICompanionDeviceManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HSPLandroid/content/-$$Lambda$AbstractThreadedSyncAdapter$ISyncAdapterImpl$L6ZtOCe8gjKwJj0908ytPlrD8Rc;-><init>()V HSPLandroid/content/AsyncQueryHandler$WorkerHandler;-><init>(Landroid/content/AsyncQueryHandler;Landroid/os/Looper;)V HSPLandroid/content/AsyncQueryHandler$WorkerHandler;->handleMessage(Landroid/os/Message;)V @@ -3178,6 +3314,14 @@ HSPLandroid/content/AsyncQueryHandler;-><init>(Landroid/content/ContentResolver; HSPLandroid/content/AsyncQueryHandler;->createHandler(Landroid/os/Looper;)Landroid/os/Handler; HSPLandroid/content/AsyncQueryHandler;->handleMessage(Landroid/os/Message;)V HSPLandroid/content/AsyncQueryHandler;->startQuery(ILjava/lang/Object;Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/content/AsyncTaskLoader$LoadTask;->doInBackground([Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroid/content/AsyncTaskLoader$LoadTask;->doInBackground([Ljava/lang/Void;)Ljava/lang/Object; +HSPLandroid/content/AsyncTaskLoader$LoadTask;->onPostExecute(Ljava/lang/Object;)V +HSPLandroid/content/AsyncTaskLoader;->dispatchOnLoadComplete(Landroid/content/AsyncTaskLoader$LoadTask;Ljava/lang/Object;)V +HSPLandroid/content/AsyncTaskLoader;->executePendingTask()V +HSPLandroid/content/AsyncTaskLoader;->onCancelLoad()Z +HSPLandroid/content/AsyncTaskLoader;->onForceLoad()V +HSPLandroid/content/AsyncTaskLoader;->onLoadInBackground()Ljava/lang/Object; HSPLandroid/content/AutofillOptions$1;-><init>()V HSPLandroid/content/AutofillOptions$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/AutofillOptions; HSPLandroid/content/AutofillOptions$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; @@ -3186,12 +3330,13 @@ HSPLandroid/content/AutofillOptions;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/content/BroadcastReceiver$PendingResult$1;->run()V HSPLandroid/content/BroadcastReceiver$PendingResult;-><init>(ILjava/lang/String;Landroid/os/Bundle;IZZLandroid/os/IBinder;II)V HSPLandroid/content/BroadcastReceiver$PendingResult;->finish()V -PLandroid/content/BroadcastReceiver$PendingResult;->getSendingUserId()I +HPLandroid/content/BroadcastReceiver$PendingResult;->getSendingUserId()I HSPLandroid/content/BroadcastReceiver$PendingResult;->sendFinished(Landroid/app/IActivityManager;)V HSPLandroid/content/BroadcastReceiver;-><init>()V HSPLandroid/content/BroadcastReceiver;->checkSynchronousHint()V HSPLandroid/content/BroadcastReceiver;->getSendingUserId()I HSPLandroid/content/BroadcastReceiver;->goAsync()Landroid/content/BroadcastReceiver$PendingResult; +HSPLandroid/content/BroadcastReceiver;->isInitialStickyBroadcast()Z HSPLandroid/content/BroadcastReceiver;->isOrderedBroadcast()Z HSPLandroid/content/BroadcastReceiver;->setResultCode(I)V HSPLandroid/content/ClipData$1;-><init>()V @@ -3217,12 +3362,12 @@ HSPLandroid/content/ComponentName;-><init>(Landroid/content/Context;Ljava/lang/C HSPLandroid/content/ComponentName;-><init>(Landroid/content/Context;Ljava/lang/String;)V HSPLandroid/content/ComponentName;-><init>(Landroid/os/Parcel;)V HSPLandroid/content/ComponentName;-><init>(Ljava/lang/String;Ljava/lang/String;)V -PLandroid/content/ComponentName;->appendShortString(Ljava/lang/StringBuilder;)V +HPLandroid/content/ComponentName;->appendShortString(Ljava/lang/StringBuilder;)V HSPLandroid/content/ComponentName;->compareTo(Landroid/content/ComponentName;)I HSPLandroid/content/ComponentName;->createRelative(Ljava/lang/String;Ljava/lang/String;)Landroid/content/ComponentName; HSPLandroid/content/ComponentName;->equals(Ljava/lang/Object;)Z HSPLandroid/content/ComponentName;->flattenToShortString()Ljava/lang/String; -PLandroid/content/ComponentName;->flattenToShortString(Landroid/content/ComponentName;)Ljava/lang/String; +HPLandroid/content/ComponentName;->flattenToShortString(Landroid/content/ComponentName;)Ljava/lang/String; HSPLandroid/content/ComponentName;->flattenToString()Ljava/lang/String; HSPLandroid/content/ComponentName;->getClassName()Ljava/lang/String; HSPLandroid/content/ComponentName;->getPackageName()Ljava/lang/String; @@ -3238,6 +3383,7 @@ HSPLandroid/content/ContentProvider$Transport;->applyBatch(Ljava/lang/String;Lja HSPLandroid/content/ContentProvider$Transport;->bulkInsert(Ljava/lang/String;Landroid/net/Uri;[Landroid/content/ContentValues;)I HSPLandroid/content/ContentProvider$Transport;->call(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;)Landroid/os/Bundle; HSPLandroid/content/ContentProvider$Transport;->canonicalize(Ljava/lang/String;Landroid/net/Uri;)Landroid/net/Uri; +HSPLandroid/content/ContentProvider$Transport;->createCancellationSignal()Landroid/os/ICancellationSignal; HSPLandroid/content/ContentProvider$Transport;->delete(Ljava/lang/String;Landroid/net/Uri;Ljava/lang/String;[Ljava/lang/String;)I HSPLandroid/content/ContentProvider$Transport;->enforceFilePermission(Ljava/lang/String;Landroid/net/Uri;Ljava/lang/String;Landroid/os/IBinder;)V HSPLandroid/content/ContentProvider$Transport;->getContentProvider()Landroid/content/ContentProvider; @@ -3255,6 +3401,7 @@ HSPLandroid/content/ContentProvider;->attachInfo(Landroid/content/Context;Landro HSPLandroid/content/ContentProvider;->call(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;)Landroid/os/Bundle; HPLandroid/content/ContentProvider;->canonicalize(Landroid/net/Uri;)Landroid/net/Uri; HSPLandroid/content/ContentProvider;->checkUser(IILandroid/content/Context;)Z +HSPLandroid/content/ContentProvider;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V HSPLandroid/content/ContentProvider;->enforceReadPermissionInner(Landroid/net/Uri;Ljava/lang/String;Landroid/os/IBinder;)I HSPLandroid/content/ContentProvider;->enforceWritePermissionInner(Landroid/net/Uri;Ljava/lang/String;Landroid/os/IBinder;)I HSPLandroid/content/ContentProvider;->getAuthorityWithoutUserId(Ljava/lang/String;)Ljava/lang/String; @@ -3268,7 +3415,7 @@ HSPLandroid/content/ContentProvider;->getUserIdFromUri(Landroid/net/Uri;I)I HSPLandroid/content/ContentProvider;->matchesOurAuthorities(Ljava/lang/String;)Z HSPLandroid/content/ContentProvider;->maybeAddUserId(Landroid/net/Uri;I)Landroid/net/Uri; HSPLandroid/content/ContentProvider;->onConfigurationChanged(Landroid/content/res/Configuration;)V -PLandroid/content/ContentProvider;->onLowMemory()V +HPLandroid/content/ContentProvider;->onLowMemory()V HSPLandroid/content/ContentProvider;->onTrimMemory(I)V HSPLandroid/content/ContentProvider;->openAssetFile(Landroid/net/Uri;Ljava/lang/String;)Landroid/content/res/AssetFileDescriptor; HSPLandroid/content/ContentProvider;->openTypedAssetFile(Landroid/net/Uri;Ljava/lang/String;Landroid/os/Bundle;)Landroid/content/res/AssetFileDescriptor; @@ -3286,15 +3433,27 @@ HSPLandroid/content/ContentProviderClient;->call(Ljava/lang/String;Ljava/lang/St HSPLandroid/content/ContentProviderClient;->close()V HSPLandroid/content/ContentProviderClient;->closeInternal()Z HSPLandroid/content/ContentProviderClient;->finalize()V +HSPLandroid/content/ContentProviderClient;->query(Landroid/net/Uri;[Ljava/lang/String;Landroid/os/Bundle;Landroid/os/CancellationSignal;)Landroid/database/Cursor; +HSPLandroid/content/ContentProviderClient;->query(Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor; +HSPLandroid/content/ContentProviderClient;->query(Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Landroid/os/CancellationSignal;)Landroid/database/Cursor; HSPLandroid/content/ContentProviderClient;->release()Z HSPLandroid/content/ContentProviderClient;->setDetectNotResponding(J)V HSPLandroid/content/ContentProviderNative;->asBinder()Landroid/os/IBinder; HSPLandroid/content/ContentProviderNative;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HSPLandroid/content/ContentProviderOperation$1;-><init>()V +HSPLandroid/content/ContentProviderOperation$Builder;->build()Landroid/content/ContentProviderOperation; +HSPLandroid/content/ContentProviderOperation$Builder;->withValue(Ljava/lang/String;Ljava/lang/Object;)Landroid/content/ContentProviderOperation$Builder; +HSPLandroid/content/ContentProviderOperation;-><init>(Landroid/content/ContentProviderOperation$Builder;)V +HSPLandroid/content/ContentProviderOperation;->apply(Landroid/content/ContentProvider;[Landroid/content/ContentProviderResult;I)Landroid/content/ContentProviderResult; HSPLandroid/content/ContentProviderOperation;->getUri()Landroid/net/Uri; +HSPLandroid/content/ContentProviderOperation;->isReadOperation()Z +HSPLandroid/content/ContentProviderOperation;->isWriteOperation()Z +HSPLandroid/content/ContentProviderOperation;->newInsert(Landroid/net/Uri;)Landroid/content/ContentProviderOperation$Builder; +HSPLandroid/content/ContentProviderOperation;->resolveSelectionArgsBackReferences([Landroid/content/ContentProviderResult;I)[Ljava/lang/String; +HSPLandroid/content/ContentProviderOperation;->resolveValueBackReferences([Landroid/content/ContentProviderResult;I)Landroid/content/ContentValues; HSPLandroid/content/ContentProviderProxy;->asBinder()Landroid/os/IBinder; HSPLandroid/content/ContentProviderProxy;->call(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;)Landroid/os/Bundle; -PLandroid/content/ContentProviderProxy;->canonicalize(Ljava/lang/String;Landroid/net/Uri;)Landroid/net/Uri; +HPLandroid/content/ContentProviderProxy;->canonicalize(Ljava/lang/String;Landroid/net/Uri;)Landroid/net/Uri; HSPLandroid/content/ContentProviderProxy;->createCancellationSignal()Landroid/os/ICancellationSignal; HSPLandroid/content/ContentProviderProxy;->delete(Ljava/lang/String;Landroid/net/Uri;Ljava/lang/String;[Ljava/lang/String;)I HSPLandroid/content/ContentProviderProxy;->getType(Landroid/net/Uri;)Ljava/lang/String; @@ -3317,12 +3476,13 @@ HSPLandroid/content/ContentResolver;->call(Ljava/lang/String;Ljava/lang/String;L HPLandroid/content/ContentResolver;->canonicalize(Landroid/net/Uri;)Landroid/net/Uri; HSPLandroid/content/ContentResolver;->createSqlQueryBundle(Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)Landroid/os/Bundle; HSPLandroid/content/ContentResolver;->delete(Landroid/net/Uri;Ljava/lang/String;[Ljava/lang/String;)I -PLandroid/content/ContentResolver;->getIsSyncableAsUser(Landroid/accounts/Account;Ljava/lang/String;I)I -PLandroid/content/ContentResolver;->getMasterSyncAutomaticallyAsUser(I)Z +HSPLandroid/content/ContentResolver;->getIsSyncable(Landroid/accounts/Account;Ljava/lang/String;)I +HPLandroid/content/ContentResolver;->getIsSyncableAsUser(Landroid/accounts/Account;Ljava/lang/String;I)I +HPLandroid/content/ContentResolver;->getMasterSyncAutomaticallyAsUser(I)Z HSPLandroid/content/ContentResolver;->getPackageName()Ljava/lang/String; HSPLandroid/content/ContentResolver;->getSyncAdapterPackagesForAuthorityAsUser(Ljava/lang/String;I)[Ljava/lang/String; HSPLandroid/content/ContentResolver;->getSyncAdapterTypesAsUser(I)[Landroid/content/SyncAdapterType; -PLandroid/content/ContentResolver;->getSyncAutomaticallyAsUser(Landroid/accounts/Account;Ljava/lang/String;I)Z +HPLandroid/content/ContentResolver;->getSyncAutomaticallyAsUser(Landroid/accounts/Account;Ljava/lang/String;I)Z HSPLandroid/content/ContentResolver;->getType(Landroid/net/Uri;)Ljava/lang/String; HSPLandroid/content/ContentResolver;->getUserId()I HSPLandroid/content/ContentResolver;->insert(Landroid/net/Uri;Landroid/content/ContentValues;)Landroid/net/Uri; @@ -3342,7 +3502,7 @@ HSPLandroid/content/ContentResolver;->query(Landroid/net/Uri;[Ljava/lang/String; HSPLandroid/content/ContentResolver;->registerContentObserver(Landroid/net/Uri;ZLandroid/database/ContentObserver;)V HSPLandroid/content/ContentResolver;->registerContentObserver(Landroid/net/Uri;ZLandroid/database/ContentObserver;I)V HSPLandroid/content/ContentResolver;->resolveUserId(Landroid/net/Uri;)I -PLandroid/content/ContentResolver;->syncErrorToString(I)Ljava/lang/String; +HPLandroid/content/ContentResolver;->syncErrorToString(I)Ljava/lang/String; HSPLandroid/content/ContentResolver;->unregisterContentObserver(Landroid/database/ContentObserver;)V HSPLandroid/content/ContentResolver;->update(Landroid/net/Uri;Landroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/String;)I HSPLandroid/content/ContentUris;->appendId(Landroid/net/Uri$Builder;J)Landroid/net/Uri$Builder; @@ -3364,6 +3524,8 @@ HSPLandroid/content/ContentValues;->getAsLong(Ljava/lang/String;)Ljava/lang/Long HSPLandroid/content/ContentValues;->getAsString(Ljava/lang/String;)Ljava/lang/String; HSPLandroid/content/ContentValues;->keySet()Ljava/util/Set; HSPLandroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Boolean;)V +HSPLandroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Double;)V +HSPLandroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Float;)V HSPLandroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Integer;)V HSPLandroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Long;)V HSPLandroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/String;)V @@ -3371,11 +3533,13 @@ HSPLandroid/content/ContentValues;->put(Ljava/lang/String;[B)V HSPLandroid/content/ContentValues;->putNull(Ljava/lang/String;)V HSPLandroid/content/ContentValues;->remove(Ljava/lang/String;)V HSPLandroid/content/ContentValues;->size()I +HSPLandroid/content/ContentValues;->toString()Ljava/lang/String; HSPLandroid/content/Context;->assertRuntimeOverlayThemable()V HSPLandroid/content/Context;->getColor(I)I HSPLandroid/content/Context;->getColorStateList(I)Landroid/content/res/ColorStateList; HSPLandroid/content/Context;->getDrawable(I)Landroid/graphics/drawable/Drawable; HSPLandroid/content/Context;->getNextAutofillId()I +HSPLandroid/content/Context;->getSharedPrefsFile(Ljava/lang/String;)Ljava/io/File; HSPLandroid/content/Context;->getString(I)Ljava/lang/String; HSPLandroid/content/Context;->getString(I[Ljava/lang/Object;)Ljava/lang/String; HSPLandroid/content/Context;->getSystemService(Ljava/lang/Class;)Ljava/lang/Object; @@ -3421,6 +3585,7 @@ HSPLandroid/content/ContextWrapper;->getContentResolver()Landroid/content/Conten HSPLandroid/content/ContextWrapper;->getDataDir()Ljava/io/File; HSPLandroid/content/ContextWrapper;->getDatabasePath(Ljava/lang/String;)Ljava/io/File; HSPLandroid/content/ContextWrapper;->getDir(Ljava/lang/String;I)Ljava/io/File; +HSPLandroid/content/ContextWrapper;->getDisplay()Landroid/view/Display; HSPLandroid/content/ContextWrapper;->getDisplayId()I HSPLandroid/content/ContextWrapper;->getExternalCacheDir()Ljava/io/File; HSPLandroid/content/ContextWrapper;->getExternalFilesDir(Ljava/lang/String;)Ljava/io/File; @@ -3436,6 +3601,7 @@ HSPLandroid/content/ContextWrapper;->getOpPackageName()Ljava/lang/String; HSPLandroid/content/ContextWrapper;->getPackageManager()Landroid/content/pm/PackageManager; HSPLandroid/content/ContextWrapper;->getPackageName()Ljava/lang/String; HSPLandroid/content/ContextWrapper;->getResources()Landroid/content/res/Resources; +HPLandroid/content/ContextWrapper;->getSharedPreferences(Ljava/io/File;I)Landroid/content/SharedPreferences; HSPLandroid/content/ContextWrapper;->getSharedPreferences(Ljava/lang/String;I)Landroid/content/SharedPreferences; HSPLandroid/content/ContextWrapper;->getSharedPreferencesPath(Ljava/lang/String;)Ljava/io/File; HSPLandroid/content/ContextWrapper;->getSystemService(Ljava/lang/String;)Ljava/lang/Object; @@ -3454,9 +3620,10 @@ HSPLandroid/content/ContextWrapper;->sendBroadcast(Landroid/content/Intent;Ljava HSPLandroid/content/ContextWrapper;->sendBroadcast(Landroid/content/Intent;Ljava/lang/String;Landroid/os/Bundle;)V HSPLandroid/content/ContextWrapper;->sendBroadcastAsUser(Landroid/content/Intent;Landroid/os/UserHandle;)V HSPLandroid/content/ContextWrapper;->sendBroadcastAsUser(Landroid/content/Intent;Landroid/os/UserHandle;Ljava/lang/String;)V -PLandroid/content/ContextWrapper;->sendOrderedBroadcastAsUser(Landroid/content/Intent;Landroid/os/UserHandle;Ljava/lang/String;ILandroid/os/Bundle;Landroid/content/BroadcastReceiver;Landroid/os/Handler;ILjava/lang/String;Landroid/os/Bundle;)V +HPLandroid/content/ContextWrapper;->sendOrderedBroadcastAsUser(Landroid/content/Intent;Landroid/os/UserHandle;Ljava/lang/String;ILandroid/os/Bundle;Landroid/content/BroadcastReceiver;Landroid/os/Handler;ILjava/lang/String;Landroid/os/Bundle;)V HSPLandroid/content/ContextWrapper;->sendStickyBroadcast(Landroid/content/Intent;)V HSPLandroid/content/ContextWrapper;->sendStickyBroadcastAsUser(Landroid/content/Intent;Landroid/os/UserHandle;)V +HSPLandroid/content/ContextWrapper;->setAutofillClient(Landroid/view/autofill/AutofillManager$AutofillClient;)V HSPLandroid/content/ContextWrapper;->setAutofillOptions(Landroid/content/AutofillOptions;)V HSPLandroid/content/ContextWrapper;->setContentCaptureOptions(Landroid/content/ContentCaptureOptions;)V HSPLandroid/content/ContextWrapper;->setTheme(I)V @@ -3469,11 +3636,12 @@ HSPLandroid/content/ContextWrapper;->unregisterReceiver(Landroid/content/Broadca HSPLandroid/content/IClipboard$Stub$Proxy;->addPrimaryClipChangedListener(Landroid/content/IOnPrimaryClipChangedListener;Ljava/lang/String;)V HSPLandroid/content/IClipboard$Stub;-><init>()V HPLandroid/content/IClipboard$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLandroid/content/IContentService$Stub$Proxy;->getIsSyncable(Landroid/accounts/Account;Ljava/lang/String;)I HSPLandroid/content/IContentService$Stub$Proxy;->notifyChange(Landroid/net/Uri;Landroid/database/IContentObserver;ZIIILjava/lang/String;)V HSPLandroid/content/IContentService$Stub$Proxy;->registerContentObserver(Landroid/net/Uri;ZLandroid/database/IContentObserver;II)V HSPLandroid/content/IContentService$Stub$Proxy;->unregisterContentObserver(Landroid/database/IContentObserver;)V HSPLandroid/content/IContentService$Stub;-><init>()V -PLandroid/content/IContentService$Stub;->getDefaultTransactionName(I)Ljava/lang/String; +HPLandroid/content/IContentService$Stub;->getDefaultTransactionName(I)Ljava/lang/String; HSPLandroid/content/IContentService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HSPLandroid/content/IIntentReceiver$Stub$Proxy;->asBinder()Landroid/os/IBinder; HSPLandroid/content/IIntentReceiver$Stub$Proxy;->performReceive(Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZI)V @@ -3493,15 +3661,15 @@ PLandroid/content/ISyncAdapter$Stub$Proxy;->cancelSync(Landroid/content/ISyncCon PLandroid/content/ISyncAdapter$Stub$Proxy;->onUnsyncableAccount(Landroid/content/ISyncAdapterUnsyncableAccountCallback;)V HPLandroid/content/ISyncAdapter$Stub$Proxy;->startSync(Landroid/content/ISyncContext;Ljava/lang/String;Landroid/accounts/Account;Landroid/os/Bundle;)V HPLandroid/content/ISyncAdapter$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/ISyncAdapter; -PLandroid/content/ISyncAdapterUnsyncableAccountCallback$Stub;-><init>()V -PLandroid/content/ISyncAdapterUnsyncableAccountCallback$Stub;->asBinder()Landroid/os/IBinder; -PLandroid/content/ISyncAdapterUnsyncableAccountCallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/content/ISyncAdapterUnsyncableAccountCallback$Stub;-><init>()V +HPLandroid/content/ISyncAdapterUnsyncableAccountCallback$Stub;->asBinder()Landroid/os/IBinder; +HPLandroid/content/ISyncAdapterUnsyncableAccountCallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HPLandroid/content/ISyncContext$Stub;-><init>()V HPLandroid/content/ISyncContext$Stub;->asBinder()Landroid/os/IBinder; HPLandroid/content/ISyncContext$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z PLandroid/content/ISyncStatusObserver$Stub$Proxy;->asBinder()Landroid/os/IBinder; HPLandroid/content/ISyncStatusObserver$Stub$Proxy;->onStatusChanged(I)V -PLandroid/content/ISyncStatusObserver$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/ISyncStatusObserver; +HPLandroid/content/ISyncStatusObserver$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/ISyncStatusObserver; HSPLandroid/content/Intent$1;-><init>()V HSPLandroid/content/Intent$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/Intent; HSPLandroid/content/Intent$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; @@ -3545,6 +3713,7 @@ HSPLandroid/content/Intent;->getLaunchToken()Ljava/lang/String; HSPLandroid/content/Intent;->getLongExtra(Ljava/lang/String;J)J HSPLandroid/content/Intent;->getPackage()Ljava/lang/String; HSPLandroid/content/Intent;->getParcelableArrayExtra(Ljava/lang/String;)[Landroid/os/Parcelable; +HSPLandroid/content/Intent;->getParcelableArrayListExtra(Ljava/lang/String;)Ljava/util/ArrayList; HSPLandroid/content/Intent;->getParcelableExtra(Ljava/lang/String;)Landroid/os/Parcelable; HSPLandroid/content/Intent;->getScheme()Ljava/lang/String; HSPLandroid/content/Intent;->getSelector()Landroid/content/Intent; @@ -3586,7 +3755,7 @@ HSPLandroid/content/Intent;->putParcelableArrayListExtra(Ljava/lang/String;Ljava HSPLandroid/content/Intent;->putStringArrayListExtra(Ljava/lang/String;Ljava/util/ArrayList;)Landroid/content/Intent; HSPLandroid/content/Intent;->readFromParcel(Landroid/os/Parcel;)V HSPLandroid/content/Intent;->removeExtra(Ljava/lang/String;)V -PLandroid/content/Intent;->removeFlags(I)V +HPLandroid/content/Intent;->removeFlags(I)V HSPLandroid/content/Intent;->replaceExtras(Landroid/content/Intent;)Landroid/content/Intent; HSPLandroid/content/Intent;->replaceExtras(Landroid/os/Bundle;)Landroid/content/Intent; HSPLandroid/content/Intent;->resolveActivity(Landroid/content/pm/PackageManager;)Landroid/content/ComponentName; @@ -3608,6 +3777,7 @@ HSPLandroid/content/Intent;->setExtrasClassLoader(Ljava/lang/ClassLoader;)V HSPLandroid/content/Intent;->setFlags(I)Landroid/content/Intent; HSPLandroid/content/Intent;->setPackage(Ljava/lang/String;)Landroid/content/Intent; HSPLandroid/content/Intent;->setSourceBounds(Landroid/graphics/Rect;)V +HSPLandroid/content/Intent;->setType(Ljava/lang/String;)Landroid/content/Intent; HSPLandroid/content/Intent;->toInsecureString()Ljava/lang/String; HSPLandroid/content/Intent;->toShortString(Ljava/lang/StringBuilder;ZZZZ)V HSPLandroid/content/Intent;->toShortString(ZZZZ)Ljava/lang/String; @@ -3651,7 +3821,7 @@ HSPLandroid/content/IntentFilter;->getCategory(I)Ljava/lang/String; HSPLandroid/content/IntentFilter;->getDataAuthority(I)Landroid/content/IntentFilter$AuthorityEntry; HSPLandroid/content/IntentFilter;->getDataPath(I)Landroid/os/PatternMatcher; HSPLandroid/content/IntentFilter;->getDataScheme(I)Ljava/lang/String; -PLandroid/content/IntentFilter;->getDataSchemeSpecificPart(I)Landroid/os/PatternMatcher; +HPLandroid/content/IntentFilter;->getDataSchemeSpecificPart(I)Landroid/os/PatternMatcher; HSPLandroid/content/IntentFilter;->getHostsList()Ljava/util/ArrayList; HSPLandroid/content/IntentFilter;->getPriority()I HSPLandroid/content/IntentFilter;->handleAllWebDataURI()Z @@ -3662,16 +3832,17 @@ HSPLandroid/content/IntentFilter;->hasDataAuthority(Landroid/content/IntentFilte HSPLandroid/content/IntentFilter;->hasDataPath(Landroid/os/PatternMatcher;)Z HPLandroid/content/IntentFilter;->hasDataPath(Ljava/lang/String;)Z HSPLandroid/content/IntentFilter;->hasDataScheme(Ljava/lang/String;)Z -PLandroid/content/IntentFilter;->hasDataSchemeSpecificPart(Landroid/os/PatternMatcher;)Z +HPLandroid/content/IntentFilter;->hasDataSchemeSpecificPart(Landroid/os/PatternMatcher;)Z HSPLandroid/content/IntentFilter;->hasDataSchemeSpecificPart(Ljava/lang/String;)Z HSPLandroid/content/IntentFilter;->match(Landroid/content/ContentResolver;Landroid/content/Intent;ZLjava/lang/String;)I HSPLandroid/content/IntentFilter;->match(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/net/Uri;Ljava/util/Set;Ljava/lang/String;)I HSPLandroid/content/IntentFilter;->matchCategories(Ljava/util/Set;)Ljava/lang/String; HSPLandroid/content/IntentFilter;->matchData(Ljava/lang/String;Ljava/lang/String;Landroid/net/Uri;)I HSPLandroid/content/IntentFilter;->matchDataAuthority(Landroid/net/Uri;)I -PLandroid/content/IntentFilter;->needsVerification()Z +HPLandroid/content/IntentFilter;->needsVerification()Z HSPLandroid/content/IntentFilter;->readFromXml(Lorg/xmlpull/v1/XmlPullParser;)V HSPLandroid/content/IntentFilter;->schemesIterator()Ljava/util/Iterator; +HSPLandroid/content/IntentFilter;->setPriority(I)V HSPLandroid/content/IntentFilter;->setVisibilityToInstantApp(I)V HSPLandroid/content/IntentFilter;->typesIterator()Ljava/util/Iterator; HSPLandroid/content/IntentFilter;->writeToParcel(Landroid/os/Parcel;I)V @@ -3680,8 +3851,15 @@ HSPLandroid/content/IntentSender$1;-><init>()V HSPLandroid/content/IntentSender$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/IntentSender; HSPLandroid/content/IntentSender$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HPLandroid/content/IntentSender;-><init>(Landroid/os/IBinder;)V -PLandroid/content/IntentSender;->sendIntent(Landroid/content/Context;ILandroid/content/Intent;Landroid/content/IntentSender$OnFinished;Landroid/os/Handler;)V +HPLandroid/content/IntentSender;->sendIntent(Landroid/content/Context;ILandroid/content/Intent;Landroid/content/IntentSender$OnFinished;Landroid/os/Handler;)V HPLandroid/content/IntentSender;->sendIntent(Landroid/content/Context;ILandroid/content/Intent;Landroid/content/IntentSender$OnFinished;Landroid/os/Handler;Ljava/lang/String;)V +HSPLandroid/content/Loader;->cancelLoad()Z +HSPLandroid/content/Loader;->commitContentChanged()V +HSPLandroid/content/Loader;->forceLoad()V +HSPLandroid/content/Loader;->getContext()Landroid/content/Context; +HSPLandroid/content/Loader;->isAbandoned()Z +HSPLandroid/content/Loader;->registerListener(ILandroid/content/Loader$OnLoadCompleteListener;)V +HSPLandroid/content/Loader;->reset()V HSPLandroid/content/PeriodicSync$1;-><init>()V PLandroid/content/PeriodicSync;-><init>(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;JJ)V PLandroid/content/PeriodicSync;->writeToParcel(Landroid/os/Parcel;I)V @@ -3699,7 +3877,7 @@ HPLandroid/content/SyncAdapterType;->allowParallelSyncs()Z HSPLandroid/content/SyncAdapterType;->equals(Ljava/lang/Object;)Z HSPLandroid/content/SyncAdapterType;->hashCode()I HPLandroid/content/SyncAdapterType;->isAlwaysSyncable()Z -PLandroid/content/SyncAdapterType;->isUserVisible()Z +HPLandroid/content/SyncAdapterType;->isUserVisible()Z HSPLandroid/content/SyncAdapterType;->newKey(Ljava/lang/String;Ljava/lang/String;)Landroid/content/SyncAdapterType; HPLandroid/content/SyncAdapterType;->supportsUploading()Z HPLandroid/content/SyncAdapterType;->writeToParcel(Landroid/os/Parcel;I)V @@ -3713,7 +3891,7 @@ HSPLandroid/content/SyncAdaptersCache;->parseServiceAttributes(Landroid/content/ HSPLandroid/content/SyncAdaptersCache;->parseServiceAttributes(Landroid/content/res/Resources;Ljava/lang/String;Landroid/util/AttributeSet;)Ljava/lang/Object; PLandroid/content/SyncInfo$1;-><init>()V HSPLandroid/content/SyncRequest$1;-><init>()V -PLandroid/content/SyncRequest$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/SyncRequest; +HPLandroid/content/SyncRequest$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/SyncRequest; HPLandroid/content/SyncRequest$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HPLandroid/content/SyncRequest;-><init>(Landroid/os/Parcel;)V HPLandroid/content/SyncRequest;->getAccount()Landroid/accounts/Account; @@ -3723,37 +3901,40 @@ HPLandroid/content/SyncRequest;->getSyncFlexTime()J HPLandroid/content/SyncRequest;->getSyncRunTime()J HPLandroid/content/SyncRequest;->isPeriodic()Z HSPLandroid/content/SyncResult$1;-><init>()V -PLandroid/content/SyncResult$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/SyncResult; -PLandroid/content/SyncResult$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/content/SyncResult$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/SyncResult; +HPLandroid/content/SyncResult$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HPLandroid/content/SyncResult;-><init>(Landroid/os/Parcel;)V HSPLandroid/content/SyncResult;-><init>(Z)V HSPLandroid/content/SyncResult;->hasError()Z HSPLandroid/content/SyncResult;->hasHardError()Z HSPLandroid/content/SyncResult;->hasSoftError()Z -PLandroid/content/SyncResult;->madeSomeProgress()Z +HPLandroid/content/SyncResult;->madeSomeProgress()Z HSPLandroid/content/SyncResult;->toString()Ljava/lang/String; HSPLandroid/content/SyncStats$1;-><init>()V HPLandroid/content/SyncStats;-><init>(Landroid/os/Parcel;)V HSPLandroid/content/SyncStats;->toString()Ljava/lang/String; HSPLandroid/content/SyncStatusInfo$1;-><init>()V -PLandroid/content/SyncStatusInfo$Stats;->clear()V -PLandroid/content/SyncStatusInfo$Stats;->copyTo(Landroid/content/SyncStatusInfo$Stats;)V +HPLandroid/content/SyncStatusInfo$Stats;->clear()V +HPLandroid/content/SyncStatusInfo$Stats;->copyTo(Landroid/content/SyncStatusInfo$Stats;)V HSPLandroid/content/SyncStatusInfo$Stats;->readFromParcel(Landroid/os/Parcel;)V HPLandroid/content/SyncStatusInfo$Stats;->writeToParcel(Landroid/os/Parcel;)V +HPLandroid/content/SyncStatusInfo;-><init>(I)V HSPLandroid/content/SyncStatusInfo;-><init>(Landroid/os/Parcel;)V HPLandroid/content/SyncStatusInfo;->addEvent(Ljava/lang/String;)V HPLandroid/content/SyncStatusInfo;->areSameDates(JJ)Z HPLandroid/content/SyncStatusInfo;->maybeResetTodayStats(ZZ)V -PLandroid/content/SyncStatusInfo;->setLastFailure(IJLjava/lang/String;)V +HPLandroid/content/SyncStatusInfo;->setLastFailure(IJLjava/lang/String;)V HPLandroid/content/SyncStatusInfo;->setLastSuccess(IJ)V HPLandroid/content/SyncStatusInfo;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/content/UndoManager$UndoState;->addOperation(Landroid/content/UndoOperation;)V HSPLandroid/content/UndoManager$UndoState;->destroy()V HSPLandroid/content/UndoManager$UndoState;->getLastOperation(Ljava/lang/Class;Landroid/content/UndoOwner;)Landroid/content/UndoOperation; HSPLandroid/content/UndoManager$UndoState;->hasMultipleOwners()Z +HSPLandroid/content/UndoManager$UndoState;->hasOperation(Landroid/content/UndoOwner;)Z HSPLandroid/content/UndoManager;-><init>()V HSPLandroid/content/UndoManager;->addOperation(Landroid/content/UndoOperation;I)V HSPLandroid/content/UndoManager;->beginUpdate(Ljava/lang/CharSequence;)V +HSPLandroid/content/UndoManager;->commitState(Landroid/content/UndoOwner;)I HSPLandroid/content/UndoManager;->endUpdate()V HSPLandroid/content/UndoManager;->findPrevState(Ljava/util/ArrayList;[Landroid/content/UndoOwner;I)I HSPLandroid/content/UndoManager;->forgetRedos([Landroid/content/UndoOwner;I)I @@ -3762,11 +3943,14 @@ HSPLandroid/content/UndoManager;->getLastOperation(Ljava/lang/Class;Landroid/con HSPLandroid/content/UndoManager;->getOwner(Ljava/lang/String;Ljava/lang/Object;)Landroid/content/UndoOwner; HSPLandroid/content/UndoManager;->getTopUndo([Landroid/content/UndoOwner;)Landroid/content/UndoManager$UndoState; HSPLandroid/content/UndoManager;->isInUndo()Z +HSPLandroid/content/UndoManager;->matchOwners(Landroid/content/UndoManager$UndoState;[Landroid/content/UndoOwner;)Z HSPLandroid/content/UndoManager;->pushWorkingState()V +HSPLandroid/content/UndoManager;->removeOwner(Landroid/content/UndoOwner;)V HSPLandroid/content/UndoManager;->saveInstanceState(Landroid/os/Parcel;)V HSPLandroid/content/UndoOperation;->allowMerge()Z HSPLandroid/content/UndoOperation;->getOwner()Landroid/content/UndoOwner; HSPLandroid/content/UndoOperation;->hasData()Z +HSPLandroid/content/UndoOperation;->matchOwner(Landroid/content/UndoOwner;)Z HSPLandroid/content/UriMatcher;-><init>(I)V HSPLandroid/content/UriMatcher;->addURI(Ljava/lang/String;Ljava/lang/String;I)V HSPLandroid/content/UriMatcher;->createChild(Ljava/lang/String;)Landroid/content/UriMatcher; @@ -3823,7 +4007,7 @@ HPLandroid/content/pm/ApplicationInfo;->getSplitCodePaths()[Ljava/lang/String; HSPLandroid/content/pm/ApplicationInfo;->hasRtlSupport()Z HSPLandroid/content/pm/ApplicationInfo;->initForUser(I)V HSPLandroid/content/pm/ApplicationInfo;->isAllowedToUseHiddenApis()Z -PLandroid/content/pm/ApplicationInfo;->isAudioPlaybackCaptureAllowed()Z +HPLandroid/content/pm/ApplicationInfo;->isAudioPlaybackCaptureAllowed()Z HSPLandroid/content/pm/ApplicationInfo;->isDirectBootAware()Z HSPLandroid/content/pm/ApplicationInfo;->isEmbeddedDexUsed()Z HSPLandroid/content/pm/ApplicationInfo;->isEncryptionAware()Z @@ -3885,9 +4069,9 @@ HSPLandroid/content/pm/FeatureInfo$1;->createFromParcel(Landroid/os/Parcel;)Land HSPLandroid/content/pm/FeatureInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/content/pm/FeatureInfo;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/content/pm/ICrossProfileApps$Stub;-><init>()V -PLandroid/content/pm/ICrossProfileApps$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/content/pm/ICrossProfileApps$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HSPLandroid/content/pm/ILauncherApps$Stub;-><init>()V -PLandroid/content/pm/ILauncherApps$Stub;->getDefaultTransactionName(I)Ljava/lang/String; +HPLandroid/content/pm/ILauncherApps$Stub;->getDefaultTransactionName(I)Ljava/lang/String; HSPLandroid/content/pm/ILauncherApps$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z PLandroid/content/pm/IOnAppsChangedListener$Stub$Proxy;-><init>(Landroid/os/IBinder;)V PLandroid/content/pm/IOnAppsChangedListener$Stub$Proxy;->asBinder()Landroid/os/IBinder; @@ -3899,10 +4083,10 @@ HSPLandroid/content/pm/IOnPermissionsChangeListener$Stub;->asBinder()Landroid/os HSPLandroid/content/pm/IOnPermissionsChangeListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/pm/IOnPermissionsChangeListener; HSPLandroid/content/pm/IOtaDexopt$Stub;-><init>()V PLandroid/content/pm/IPackageDataObserver$Stub$Proxy;->onRemoveCompleted(Ljava/lang/String;Z)V -PLandroid/content/pm/IPackageDataObserver$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/pm/IPackageDataObserver; +HPLandroid/content/pm/IPackageDataObserver$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/pm/IPackageDataObserver; PLandroid/content/pm/IPackageInstallObserver2$Stub;-><init>()V HSPLandroid/content/pm/IPackageInstaller$Stub;-><init>()V -PLandroid/content/pm/IPackageInstaller$Stub;->asBinder()Landroid/os/IBinder; +HPLandroid/content/pm/IPackageInstaller$Stub;->asBinder()Landroid/os/IBinder; HPLandroid/content/pm/IPackageInstaller$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z PLandroid/content/pm/IPackageInstallerCallback$Stub$Proxy;->asBinder()Landroid/os/IBinder; PLandroid/content/pm/IPackageInstallerCallback$Stub$Proxy;->onSessionActiveChanged(IZ)V @@ -3922,6 +4106,7 @@ HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getInstalledApplications(II) HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getInstalledModules(I)Ljava/util/List; HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getInstalledPackages(II)Landroid/content/pm/ParceledListSlice; HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getInstallerPackageName(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getInstantAppResolverSettingsComponent()Landroid/content/ComponentName; HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getNameForUid(I)Ljava/lang/String; HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getPackageInfo(Ljava/lang/String;II)Landroid/content/pm/PackageInfo; HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getPackageUid(Ljava/lang/String;II)I @@ -3953,7 +4138,7 @@ HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->setComponentEnabledSetting(L HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->setSystemAppHiddenUntilInstalled(Ljava/lang/String;Z)V HSPLandroid/content/pm/IPackageManager$Stub;-><init>()V HSPLandroid/content/pm/IPackageManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/pm/IPackageManager; -PLandroid/content/pm/IPackageManager$Stub;->getDefaultTransactionName(I)Ljava/lang/String; +HPLandroid/content/pm/IPackageManager$Stub;->getDefaultTransactionName(I)Ljava/lang/String; HSPLandroid/content/pm/IPackageManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HSPLandroid/content/pm/IPackageManagerNative$Stub;-><init>()V HSPLandroid/content/pm/IPackageManagerNative$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z @@ -3991,9 +4176,12 @@ HSPLandroid/content/pm/IntentFilterVerificationInfo;->getIntFromXml(Lorg/xmlpull HSPLandroid/content/pm/IntentFilterVerificationInfo;->getStringFromXml(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; HSPLandroid/content/pm/IntentFilterVerificationInfo;->readFromXml(Lorg/xmlpull/v1/XmlPullParser;)V HSPLandroid/content/pm/IntentFilterVerificationInfo;->writeToXml(Lorg/xmlpull/v1/XmlSerializer;)V +HSPLandroid/content/pm/LauncherApps;-><init>(Landroid/content/Context;Landroid/content/pm/ILauncherApps;)V HSPLandroid/content/pm/ModuleInfo$1;-><init>()V HSPLandroid/content/pm/ModuleInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/ModuleInfo; HSPLandroid/content/pm/ModuleInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/content/pm/ModuleInfo;->getPackageName()Ljava/lang/String; +HSPLandroid/content/pm/ModuleInfo;->isHidden()Z HPLandroid/content/pm/ModuleInfo;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/content/pm/OrgApacheHttpLegacyUpdater;-><init>()V HSPLandroid/content/pm/OrgApacheHttpLegacyUpdater;->updatePackage(Landroid/content/pm/PackageParser$Package;)V @@ -4016,19 +4204,21 @@ HSPLandroid/content/pm/PackageInfo;->toString()Ljava/lang/String; HSPLandroid/content/pm/PackageInfo;->writeToParcel(Landroid/os/Parcel;I)V PLandroid/content/pm/PackageInfoLite$1;-><init>()V PLandroid/content/pm/PackageInfoLite;->getLongVersionCode()J -PLandroid/content/pm/PackageInstaller$SessionCallbackDelegate;->onSessionActiveChanged(IZ)V -PLandroid/content/pm/PackageInstaller$SessionCallbackDelegate;->onSessionCreated(I)V -PLandroid/content/pm/PackageInstaller$SessionCallbackDelegate;->onSessionFinished(IZ)V +HPLandroid/content/pm/PackageInstaller$SessionCallbackDelegate;->onSessionActiveChanged(IZ)V +HPLandroid/content/pm/PackageInstaller$SessionCallbackDelegate;->onSessionCreated(I)V +HPLandroid/content/pm/PackageInstaller$SessionCallbackDelegate;->onSessionFinished(IZ)V HPLandroid/content/pm/PackageInstaller$SessionCallbackDelegate;->onSessionProgressChanged(IF)V HSPLandroid/content/pm/PackageInstaller$SessionInfo$1;-><init>()V -PLandroid/content/pm/PackageInstaller$SessionInfo;-><init>()V +HPLandroid/content/pm/PackageInstaller$SessionInfo;-><init>()V +HPLandroid/content/pm/PackageInstaller$SessionInfo;->describeContents()I HSPLandroid/content/pm/PackageInstaller$SessionInfo;->getInstallerPackageName()Ljava/lang/String; HPLandroid/content/pm/PackageInstaller$SessionInfo;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/content/pm/PackageInstaller$SessionParams$1;-><init>()V -PLandroid/content/pm/PackageInstaller$SessionParams$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/PackageInstaller$SessionParams; -PLandroid/content/pm/PackageInstaller$SessionParams$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; -PLandroid/content/pm/PackageInstaller$SessionParams;-><init>(Landroid/os/Parcel;)V +HPLandroid/content/pm/PackageInstaller$SessionParams$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/PackageInstaller$SessionParams; +HPLandroid/content/pm/PackageInstaller$SessionParams$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/content/pm/PackageInstaller$SessionParams;-><init>(Landroid/os/Parcel;)V HSPLandroid/content/pm/PackageInstaller$SessionParams;->dump(Lcom/android/internal/util/IndentingPrintWriter;)V +HSPLandroid/content/pm/PackageInstaller;->getSessionInfo(I)Landroid/content/pm/PackageInstaller$SessionInfo; HSPLandroid/content/pm/PackageInstaller;->registerSessionCallback(Landroid/content/pm/PackageInstaller$SessionCallback;Landroid/os/Handler;)V HSPLandroid/content/pm/PackageItemInfo;-><init>(Landroid/content/pm/PackageItemInfo;)V HSPLandroid/content/pm/PackageItemInfo;-><init>(Landroid/os/Parcel;)V @@ -4040,9 +4230,9 @@ HSPLandroid/content/pm/PackageItemInfo;->loadUnsafeLabel(Landroid/content/pm/Pac HSPLandroid/content/pm/PackageItemInfo;->loadXmlMetaData(Landroid/content/pm/PackageManager;Ljava/lang/String;)Landroid/content/res/XmlResourceParser; HSPLandroid/content/pm/PackageItemInfo;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/content/pm/PackageList;->getPackageNames()Ljava/util/List; -PLandroid/content/pm/PackageManager;->installStatusToPublicStatus(I)I -PLandroid/content/pm/PackageManager;->installStatusToString(I)Ljava/lang/String; -PLandroid/content/pm/PackageManager;->installStatusToString(ILjava/lang/String;)Ljava/lang/String; +HPLandroid/content/pm/PackageManager;->installStatusToPublicStatus(I)I +HPLandroid/content/pm/PackageManager;->installStatusToString(I)Ljava/lang/String; +HPLandroid/content/pm/PackageManager;->installStatusToString(ILjava/lang/String;)Ljava/lang/String; HSPLandroid/content/pm/PackageManager;->queryBroadcastReceiversAsUser(Landroid/content/Intent;ILandroid/os/UserHandle;)Ljava/util/List; HSPLandroid/content/pm/PackageParser$Activity$1;-><init>()V HSPLandroid/content/pm/PackageParser$Activity$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/PackageParser$Activity; @@ -4054,6 +4244,7 @@ HSPLandroid/content/pm/PackageParser$Activity;->setMaxAspectRatio(F)V HSPLandroid/content/pm/PackageParser$Activity;->setMinAspectRatio(F)V HSPLandroid/content/pm/PackageParser$Activity;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/content/pm/PackageParser$ActivityIntentInfo;-><init>(Landroid/content/pm/PackageParser$Activity;)V +HSPLandroid/content/pm/PackageParser$ActivityIntentInfo;-><init>(Landroid/os/Parcel;)V HSPLandroid/content/pm/PackageParser$ApkLite;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZLjava/lang/String;Ljava/lang/String;ZIIIILjava/util/List;Landroid/content/pm/PackageParser$SigningDetails;ZZZZZZZII)V HSPLandroid/content/pm/PackageParser$ApkLite;->getLongVersionCode()J HSPLandroid/content/pm/PackageParser$CachedComponentArgs;-><init>()V @@ -4076,7 +4267,7 @@ HSPLandroid/content/pm/PackageParser$Package;-><init>(Ljava/lang/String;)V HPLandroid/content/pm/PackageParser$Package;->canHaveOatDir()Z HSPLandroid/content/pm/PackageParser$Package;->fixupOwner(Ljava/util/List;)V HSPLandroid/content/pm/PackageParser$Package;->getAllCodePaths()Ljava/util/List; -PLandroid/content/pm/PackageParser$Package;->getAllCodePathsExcludingResourceOnly()Ljava/util/List; +HPLandroid/content/pm/PackageParser$Package;->getAllCodePathsExcludingResourceOnly()Ljava/util/List; HSPLandroid/content/pm/PackageParser$Package;->getChildPackageNames()Ljava/util/List; HPLandroid/content/pm/PackageParser$Package;->getLatestForegroundPackageUseTimeInMills()J HSPLandroid/content/pm/PackageParser$Package;->getLatestPackageUseTimeInMills()J @@ -4095,7 +4286,7 @@ HSPLandroid/content/pm/PackageParser$Package;->readKeySetMapping(Landroid/os/Par HSPLandroid/content/pm/PackageParser$Package;->setApplicationInfoBaseCodePath(Ljava/lang/String;)V HSPLandroid/content/pm/PackageParser$Package;->setApplicationInfoBaseResourcePath(Ljava/lang/String;)V HSPLandroid/content/pm/PackageParser$Package;->setApplicationInfoCodePath(Ljava/lang/String;)V -PLandroid/content/pm/PackageParser$Package;->setApplicationInfoFlags(II)V +HPLandroid/content/pm/PackageParser$Package;->setApplicationInfoFlags(II)V HSPLandroid/content/pm/PackageParser$Package;->setApplicationInfoResourcePath(Ljava/lang/String;)V HSPLandroid/content/pm/PackageParser$Package;->setApplicationInfoSplitCodePaths([Ljava/lang/String;)V HSPLandroid/content/pm/PackageParser$Package;->setApplicationInfoSplitResourcePaths([Ljava/lang/String;)V @@ -4114,12 +4305,18 @@ HSPLandroid/content/pm/PackageParser$Permission$1;-><init>()V HSPLandroid/content/pm/PackageParser$Permission$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/PackageParser$Permission; HSPLandroid/content/pm/PackageParser$Permission$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/content/pm/PackageParser$Permission;-><init>(Landroid/os/Parcel;)V -PLandroid/content/pm/PackageParser$Permission;->isAppOp()Z +HPLandroid/content/pm/PackageParser$Permission;->isAppOp()Z HSPLandroid/content/pm/PackageParser$Permission;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/content/pm/PackageParser$PermissionGroup$1;-><init>()V +HSPLandroid/content/pm/PackageParser$PermissionGroup$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/PackageParser$PermissionGroup; +HSPLandroid/content/pm/PackageParser$PermissionGroup$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/content/pm/PackageParser$PermissionGroup;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/content/pm/PackageParser$Provider$1;-><init>()V +HSPLandroid/content/pm/PackageParser$Provider$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/PackageParser$Provider; +HSPLandroid/content/pm/PackageParser$Provider$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/content/pm/PackageParser$Provider;-><init>(Landroid/os/Parcel;)V HSPLandroid/content/pm/PackageParser$Provider;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/content/pm/PackageParser$ProviderIntentInfo;-><init>(Landroid/os/Parcel;)V HSPLandroid/content/pm/PackageParser$Service$1;-><init>()V HSPLandroid/content/pm/PackageParser$Service$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/PackageParser$Service; HSPLandroid/content/pm/PackageParser$Service$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; @@ -4166,7 +4363,7 @@ HSPLandroid/content/pm/PackageParser;->generateActivityInfo(Landroid/content/pm/ HSPLandroid/content/pm/PackageParser;->generateAppDetailsHiddenActivity(Landroid/content/pm/PackageParser$Package;I[Ljava/lang/String;Z)Landroid/content/pm/PackageParser$Activity; HSPLandroid/content/pm/PackageParser;->generateApplicationInfo(Landroid/content/pm/PackageParser$Package;ILandroid/content/pm/PackageUserState;I)Landroid/content/pm/ApplicationInfo; HSPLandroid/content/pm/PackageParser;->generatePackageInfo(Landroid/content/pm/PackageParser$Package;[IIJJLjava/util/Set;Landroid/content/pm/PackageUserState;I)Landroid/content/pm/PackageInfo; -PLandroid/content/pm/PackageParser;->generatePackageInfoFromApex(Ljava/io/File;Z)Landroid/content/pm/PackageInfo; +HPLandroid/content/pm/PackageParser;->generatePackageInfoFromApex(Ljava/io/File;Z)Landroid/content/pm/PackageInfo; HSPLandroid/content/pm/PackageParser;->generatePermissionGroupInfo(Landroid/content/pm/PackageParser$PermissionGroup;I)Landroid/content/pm/PermissionGroupInfo; HSPLandroid/content/pm/PackageParser;->generatePermissionInfo(Landroid/content/pm/PackageParser$Permission;I)Landroid/content/pm/PermissionInfo; HSPLandroid/content/pm/PackageParser;->generateProviderInfo(Landroid/content/pm/PackageParser$Provider;ILandroid/content/pm/PackageUserState;I)Landroid/content/pm/ProviderInfo; @@ -4274,7 +4471,7 @@ HSPLandroid/content/pm/PermissionInfo;-><init>(Landroid/content/pm/PermissionInf HSPLandroid/content/pm/PermissionInfo;-><init>(Landroid/os/Parcel;)V HSPLandroid/content/pm/PermissionInfo;->getProtection()I HSPLandroid/content/pm/PermissionInfo;->getProtectionFlags()I -PLandroid/content/pm/PermissionInfo;->isAppOp()Z +HPLandroid/content/pm/PermissionInfo;->isAppOp()Z HSPLandroid/content/pm/PermissionInfo;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/content/pm/ProviderInfo$1;-><init>()V HSPLandroid/content/pm/ProviderInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/ProviderInfo; @@ -4310,6 +4507,7 @@ HSPLandroid/content/pm/ResolveInfo;-><init>()V HSPLandroid/content/pm/ResolveInfo;-><init>(Landroid/content/pm/ResolveInfo;)V HSPLandroid/content/pm/ResolveInfo;-><init>(Landroid/os/Parcel;)V HSPLandroid/content/pm/ResolveInfo;->getComponentInfo()Landroid/content/pm/ComponentInfo; +HSPLandroid/content/pm/ResolveInfo;->getIconResource()I HSPLandroid/content/pm/ResolveInfo;->loadIcon(Landroid/content/pm/PackageManager;)Landroid/graphics/drawable/Drawable; HSPLandroid/content/pm/ResolveInfo;->loadLabel(Landroid/content/pm/PackageManager;)Ljava/lang/CharSequence; HSPLandroid/content/pm/ResolveInfo;->toString()Ljava/lang/String; @@ -4341,6 +4539,7 @@ HSPLandroid/content/pm/ShortcutInfo$1;->createFromParcel(Landroid/os/Parcel;)Lan HSPLandroid/content/pm/ShortcutInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/content/pm/ShortcutInfo$Builder;-><init>(Landroid/content/Context;Ljava/lang/String;)V HSPLandroid/content/pm/ShortcutInfo$Builder;->build()Landroid/content/pm/ShortcutInfo; +HSPLandroid/content/pm/ShortcutInfo$Builder;->setActivity(Landroid/content/ComponentName;)Landroid/content/pm/ShortcutInfo$Builder; HSPLandroid/content/pm/ShortcutInfo$Builder;->setIcon(Landroid/graphics/drawable/Icon;)Landroid/content/pm/ShortcutInfo$Builder; HSPLandroid/content/pm/ShortcutInfo$Builder;->setIntent(Landroid/content/Intent;)Landroid/content/pm/ShortcutInfo$Builder; HSPLandroid/content/pm/ShortcutInfo$Builder;->setIntents([Landroid/content/Intent;)Landroid/content/pm/ShortcutInfo$Builder; @@ -4353,7 +4552,7 @@ HSPLandroid/content/pm/ShortcutInfo;->clone(I)Landroid/content/pm/ShortcutInfo; HSPLandroid/content/pm/ShortcutInfo;->cloneCategories(Ljava/util/Set;)Landroid/util/ArraySet; HSPLandroid/content/pm/ShortcutInfo;->cloneIntents([Landroid/content/Intent;)[Landroid/content/Intent; HSPLandroid/content/pm/ShortcutInfo;->clonePersons([Landroid/app/Person;)[Landroid/app/Person; -PLandroid/content/pm/ShortcutInfo;->copyNonNullFieldsFrom(Landroid/content/pm/ShortcutInfo;)V +HPLandroid/content/pm/ShortcutInfo;->copyNonNullFieldsFrom(Landroid/content/pm/ShortcutInfo;)V HPLandroid/content/pm/ShortcutInfo;->enforceMandatoryFields(Z)V HPLandroid/content/pm/ShortcutInfo;->ensureUpdatableWith(Landroid/content/pm/ShortcutInfo;Z)V HSPLandroid/content/pm/ShortcutInfo;->fixUpIntentExtras()V @@ -4362,11 +4561,11 @@ HPLandroid/content/pm/ShortcutInfo;->getPersons()[Landroid/app/Person; HSPLandroid/content/pm/ShortcutInfo;->getResourceString(Landroid/content/res/Resources;ILjava/lang/CharSequence;)Ljava/lang/CharSequence; HPLandroid/content/pm/ShortcutInfo;->isDynamicVisible()Z HPLandroid/content/pm/ShortcutInfo;->isManifestVisible()Z -PLandroid/content/pm/ShortcutInfo;->isPinnedVisible()Z +HPLandroid/content/pm/ShortcutInfo;->isPinnedVisible()Z HPLandroid/content/pm/ShortcutInfo;->isVisibleToPublisher()Z -PLandroid/content/pm/ShortcutInfo;->lookUpResourceId(Landroid/content/res/Resources;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I +HPLandroid/content/pm/ShortcutInfo;->lookUpResourceId(Landroid/content/res/Resources;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I HSPLandroid/content/pm/ShortcutInfo;->lookUpResourceName(Landroid/content/res/Resources;IZLjava/lang/String;)Ljava/lang/String; -PLandroid/content/pm/ShortcutInfo;->lookupAndFillInResourceIds(Landroid/content/res/Resources;)V +HPLandroid/content/pm/ShortcutInfo;->lookupAndFillInResourceIds(Landroid/content/res/Resources;)V HSPLandroid/content/pm/ShortcutInfo;->lookupAndFillInResourceNames(Landroid/content/res/Resources;)V HSPLandroid/content/pm/ShortcutInfo;->resolveResourceStrings(Landroid/content/res/Resources;)V HSPLandroid/content/pm/ShortcutInfo;->setCategories(Ljava/util/Set;)V @@ -4374,6 +4573,7 @@ HSPLandroid/content/pm/ShortcutInfo;->setIntentExtras(Landroid/content/Intent;La HSPLandroid/content/pm/ShortcutInfo;->setIntents([Landroid/content/Intent;)V HSPLandroid/content/pm/ShortcutInfo;->validateIcon(Landroid/graphics/drawable/Icon;)Landroid/graphics/drawable/Icon; HSPLandroid/content/pm/ShortcutInfo;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/content/pm/ShortcutManager;->disableShortcuts(Ljava/util/List;)V HSPLandroid/content/pm/ShortcutManager;->getDynamicShortcuts()Ljava/util/List; HSPLandroid/content/pm/ShortcutManager;->injectMyUserId()I HSPLandroid/content/pm/ShortcutManager;->setDynamicShortcuts(Ljava/util/List;)Z @@ -4407,7 +4607,7 @@ HSPLandroid/content/pm/UserInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/l HSPLandroid/content/pm/UserInfo;-><init>(ILjava/lang/String;Ljava/lang/String;I)V HSPLandroid/content/pm/UserInfo;-><init>(Landroid/content/pm/UserInfo;)V HSPLandroid/content/pm/UserInfo;-><init>(Landroid/os/Parcel;)V -PLandroid/content/pm/UserInfo;->canHaveProfile()Z +HPLandroid/content/pm/UserInfo;->canHaveProfile()Z HSPLandroid/content/pm/UserInfo;->getUserHandle()Landroid/os/UserHandle; HSPLandroid/content/pm/UserInfo;->isAdmin()Z HSPLandroid/content/pm/UserInfo;->isDemo()Z @@ -4430,7 +4630,7 @@ HSPLandroid/content/pm/VersionedPackage$1;->createFromParcel(Landroid/os/Parcel; HSPLandroid/content/pm/VersionedPackage$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/content/pm/VersionedPackage;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/content/pm/dex/ArtManager;->getProfileName(Ljava/lang/String;)Ljava/lang/String; -PLandroid/content/pm/dex/ArtManager;->getProfileSnapshotFileForName(Ljava/lang/String;Ljava/lang/String;)Ljava/io/File; +HPLandroid/content/pm/dex/ArtManager;->getProfileSnapshotFileForName(Ljava/lang/String;Ljava/lang/String;)Ljava/io/File; HSPLandroid/content/pm/dex/DexMetadataHelper;->buildDexMetadataPathForApk(Ljava/lang/String;)Ljava/lang/String; HSPLandroid/content/pm/dex/DexMetadataHelper;->buildDexMetadataPathForFile(Ljava/io/File;)Ljava/lang/String; PLandroid/content/pm/dex/DexMetadataHelper;->buildPackageApkToDexMetadataMap(Ljava/util/List;)Ljava/util/Map; @@ -4440,8 +4640,8 @@ HSPLandroid/content/pm/dex/DexMetadataHelper;->isDexMetadataFile(Ljava/io/File;) PLandroid/content/pm/dex/DexMetadataHelper;->validateDexMetadataFile(Ljava/lang/String;)V PLandroid/content/pm/dex/DexMetadataHelper;->validatePackageDexMetadata(Landroid/content/pm/PackageParser$Package;)V HSPLandroid/content/pm/dex/IArtManager$Stub;-><init>()V -PLandroid/content/pm/dex/IArtManager$Stub;->asBinder()Landroid/os/IBinder; -PLandroid/content/pm/dex/IArtManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/content/pm/dex/IArtManager$Stub;->asBinder()Landroid/os/IBinder; +HPLandroid/content/pm/dex/IArtManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z PLandroid/content/pm/dex/ISnapshotRuntimeProfileCallback$Stub$Proxy;->onError(I)V PLandroid/content/pm/dex/ISnapshotRuntimeProfileCallback$Stub$Proxy;->onSuccess(Landroid/os/ParcelFileDescriptor;)V HSPLandroid/content/pm/dex/PackageOptimizationInfo;->getCompilationFilter()I @@ -4581,11 +4781,11 @@ HSPLandroid/content/res/Configuration;->generateDelta(Landroid/content/res/Confi HSPLandroid/content/res/Configuration;->getLayoutDirection()I HSPLandroid/content/res/Configuration;->getLocales()Landroid/os/LocaleList; HSPLandroid/content/res/Configuration;->hashCode()I -PLandroid/content/res/Configuration;->localesToResourceQualifier(Landroid/os/LocaleList;)Ljava/lang/String; +HPLandroid/content/res/Configuration;->localesToResourceQualifier(Landroid/os/LocaleList;)Ljava/lang/String; HSPLandroid/content/res/Configuration;->readFromParcel(Landroid/os/Parcel;)V HSPLandroid/content/res/Configuration;->readFromProto(Landroid/util/proto/ProtoInputStream;J)V HSPLandroid/content/res/Configuration;->reduceScreenLayout(III)I -PLandroid/content/res/Configuration;->resourceQualifierString(Landroid/content/res/Configuration;)Ljava/lang/String; +HPLandroid/content/res/Configuration;->resourceQualifierString(Landroid/content/res/Configuration;)Ljava/lang/String; HPLandroid/content/res/Configuration;->resourceQualifierString(Landroid/content/res/Configuration;Landroid/util/DisplayMetrics;)Ljava/lang/String; HSPLandroid/content/res/Configuration;->setLocales(Landroid/os/LocaleList;)V HSPLandroid/content/res/Configuration;->setTo(Landroid/content/res/Configuration;)V @@ -4658,6 +4858,7 @@ HSPLandroid/content/res/Resources;->getImpl()Landroid/content/res/ResourcesImpl; HSPLandroid/content/res/Resources;->getIntArray(I)[I HSPLandroid/content/res/Resources;->getInteger(I)I HSPLandroid/content/res/Resources;->getLayout(I)Landroid/content/res/XmlResourceParser; +HSPLandroid/content/res/Resources;->getQuantityString(II)Ljava/lang/String; HSPLandroid/content/res/Resources;->getQuantityString(II[Ljava/lang/Object;)Ljava/lang/String; HSPLandroid/content/res/Resources;->getQuantityText(II)Ljava/lang/CharSequence; HSPLandroid/content/res/Resources;->getResourceEntryName(I)Ljava/lang/String; @@ -4671,7 +4872,7 @@ HSPLandroid/content/res/Resources;->getString(I[Ljava/lang/Object;)Ljava/lang/St HSPLandroid/content/res/Resources;->getStringArray(I)[Ljava/lang/String; HSPLandroid/content/res/Resources;->getSystem()Landroid/content/res/Resources; HSPLandroid/content/res/Resources;->getText(I)Ljava/lang/CharSequence; -PLandroid/content/res/Resources;->getText(ILjava/lang/CharSequence;)Ljava/lang/CharSequence; +HPLandroid/content/res/Resources;->getText(ILjava/lang/CharSequence;)Ljava/lang/CharSequence; HSPLandroid/content/res/Resources;->getTextArray(I)[Ljava/lang/CharSequence; HSPLandroid/content/res/Resources;->getValue(ILandroid/util/TypedValue;Z)V HSPLandroid/content/res/Resources;->getValueForDensity(IILandroid/util/TypedValue;Z)V @@ -4834,7 +5035,7 @@ HSPLandroid/content/res/XmlBlock;->close()V HSPLandroid/content/res/XmlBlock;->finalize()V HSPLandroid/content/res/XmlBlock;->newParser(I)Landroid/content/res/XmlResourceParser; HSPLandroid/content/rollback/IRollbackManager$Stub;-><init>()V -PLandroid/content/rollback/IRollbackManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/rollback/IRollbackManager; +HPLandroid/content/rollback/IRollbackManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/rollback/IRollbackManager; HSPLandroid/database/AbstractCursor$SelfContentObserver;->onChange(Z)V HSPLandroid/database/AbstractCursor;->close()V HSPLandroid/database/AbstractCursor;->fillWindow(ILandroid/database/CursorWindow;)V @@ -4853,10 +5054,12 @@ HSPLandroid/database/AbstractCursor;->isLast()Z HSPLandroid/database/AbstractCursor;->moveToFirst()Z HSPLandroid/database/AbstractCursor;->moveToNext()Z HSPLandroid/database/AbstractCursor;->moveToPosition(I)Z +HSPLandroid/database/AbstractCursor;->moveToPrevious()Z HSPLandroid/database/AbstractCursor;->onChange(Z)V HSPLandroid/database/AbstractCursor;->onDeactivateOrClose()V HSPLandroid/database/AbstractCursor;->onMove(II)Z HSPLandroid/database/AbstractCursor;->registerContentObserver(Landroid/database/ContentObserver;)V +HSPLandroid/database/AbstractCursor;->registerDataSetObserver(Landroid/database/DataSetObserver;)V HSPLandroid/database/AbstractCursor;->setNotificationUri(Landroid/content/ContentResolver;Landroid/net/Uri;)V HSPLandroid/database/AbstractCursor;->setNotificationUris(Landroid/content/ContentResolver;Ljava/util/List;)V HSPLandroid/database/AbstractCursor;->setNotificationUris(Landroid/content/ContentResolver;Ljava/util/List;I)V @@ -4916,6 +5119,7 @@ HSPLandroid/database/CursorWindow;->allocRow()Z HSPLandroid/database/CursorWindow;->clear()V HSPLandroid/database/CursorWindow;->finalize()V HSPLandroid/database/CursorWindow;->getBlob(II)[B +HSPLandroid/database/CursorWindow;->getCursorWindowSize()I HSPLandroid/database/CursorWindow;->getDouble(II)D HSPLandroid/database/CursorWindow;->getInt(II)I HSPLandroid/database/CursorWindow;->getLong(II)J @@ -4939,6 +5143,7 @@ HSPLandroid/database/CursorWrapper;->getColumnCount()I HSPLandroid/database/CursorWrapper;->getColumnIndex(Ljava/lang/String;)I HSPLandroid/database/CursorWrapper;->getColumnIndexOrThrow(Ljava/lang/String;)I HSPLandroid/database/CursorWrapper;->getColumnName(I)Ljava/lang/String; +HSPLandroid/database/CursorWrapper;->getColumnNames()[Ljava/lang/String; HSPLandroid/database/CursorWrapper;->getCount()I HSPLandroid/database/CursorWrapper;->getInt(I)I HSPLandroid/database/CursorWrapper;->getLong(I)J @@ -4957,11 +5162,13 @@ HSPLandroid/database/DataSetObservable;-><init>()V HSPLandroid/database/DataSetObservable;->notifyChanged()V HSPLandroid/database/DataSetObservable;->notifyInvalidated()V HSPLandroid/database/DataSetObserver;-><init>()V +HSPLandroid/database/DatabaseUtils;->appendEscapedSQLString(Ljava/lang/StringBuilder;Ljava/lang/String;)V HSPLandroid/database/DatabaseUtils;->cursorFillWindow(Landroid/database/Cursor;ILandroid/database/CursorWindow;)V HSPLandroid/database/DatabaseUtils;->getSqlStatementType(Ljava/lang/String;)I HSPLandroid/database/DatabaseUtils;->getTypeOfObject(Ljava/lang/Object;)I HSPLandroid/database/DatabaseUtils;->longForQuery(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;[Ljava/lang/String;)J HSPLandroid/database/DatabaseUtils;->readExceptionWithFileNotFoundExceptionFromParcel(Landroid/os/Parcel;)V +HSPLandroid/database/DatabaseUtils;->sqlEscapeString(Ljava/lang/String;)Ljava/lang/String; HSPLandroid/database/DefaultDatabaseErrorHandler;-><init>()V HSPLandroid/database/IContentObserver$Stub$Proxy;->asBinder()Landroid/os/IBinder; HSPLandroid/database/IContentObserver$Stub$Proxy;->onChange(ZLandroid/net/Uri;I)V @@ -4980,6 +5187,7 @@ HSPLandroid/database/MatrixCursor;->getInt(I)I HSPLandroid/database/MatrixCursor;->getLong(I)J HSPLandroid/database/MatrixCursor;->getString(I)Ljava/lang/String; HSPLandroid/database/MatrixCursor;->getType(I)I +HSPLandroid/database/MatrixCursor;->newRow()Landroid/database/MatrixCursor$RowBuilder; HSPLandroid/database/Observable;-><init>()V HSPLandroid/database/Observable;->registerObserver(Ljava/lang/Object;)V HSPLandroid/database/Observable;->unregisterAll()V @@ -5095,6 +5303,7 @@ HSPLandroid/database/sqlite/SQLiteDatabase;->isOpen()Z HSPLandroid/database/sqlite/SQLiteDatabase;->isReadOnly()Z HSPLandroid/database/sqlite/SQLiteDatabase;->onAllReferencesReleased()V HSPLandroid/database/sqlite/SQLiteDatabase;->open()V +HSPLandroid/database/sqlite/SQLiteDatabase;->openDatabase(Ljava/lang/String;Landroid/database/sqlite/SQLiteDatabase$CursorFactory;I)Landroid/database/sqlite/SQLiteDatabase; HSPLandroid/database/sqlite/SQLiteDatabase;->openDatabase(Ljava/lang/String;Landroid/database/sqlite/SQLiteDatabase$CursorFactory;ILandroid/database/DatabaseErrorHandler;)Landroid/database/sqlite/SQLiteDatabase; HSPLandroid/database/sqlite/SQLiteDatabase;->openDatabase(Ljava/lang/String;Landroid/database/sqlite/SQLiteDatabase$OpenParams;)Landroid/database/sqlite/SQLiteDatabase; HSPLandroid/database/sqlite/SQLiteDatabase;->openInner()V @@ -5134,6 +5343,7 @@ HSPLandroid/database/sqlite/SQLiteOpenHelper;->setIdleConnectionTimeout(J)V HSPLandroid/database/sqlite/SQLiteOpenHelper;->setWriteAheadLoggingEnabled(Z)V HSPLandroid/database/sqlite/SQLiteProgram;-><init>(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;[Ljava/lang/Object;Landroid/os/CancellationSignal;)V HSPLandroid/database/sqlite/SQLiteProgram;->bind(ILjava/lang/Object;)V +HSPLandroid/database/sqlite/SQLiteProgram;->bindBlob(I[B)V HSPLandroid/database/sqlite/SQLiteProgram;->bindDouble(ID)V HSPLandroid/database/sqlite/SQLiteProgram;->bindLong(IJ)V HSPLandroid/database/sqlite/SQLiteProgram;->bindString(ILjava/lang/String;)V @@ -5228,6 +5438,7 @@ HSPLandroid/graphics/BaseRecordingCanvas;->drawCircle(FFFLandroid/graphics/Paint HSPLandroid/graphics/BaseRecordingCanvas;->drawColor(I)V HSPLandroid/graphics/BaseRecordingCanvas;->drawLine(FFFFLandroid/graphics/Paint;)V HSPLandroid/graphics/BaseRecordingCanvas;->drawOval(Landroid/graphics/RectF;Landroid/graphics/Paint;)V +HSPLandroid/graphics/BaseRecordingCanvas;->drawPaint(Landroid/graphics/Paint;)V HSPLandroid/graphics/BaseRecordingCanvas;->drawPatch(Landroid/graphics/NinePatch;Landroid/graphics/Rect;Landroid/graphics/Paint;)V HSPLandroid/graphics/BaseRecordingCanvas;->drawPath(Landroid/graphics/Path;Landroid/graphics/Paint;)V HSPLandroid/graphics/BaseRecordingCanvas;->drawRect(FFFFLandroid/graphics/Paint;)V @@ -5236,6 +5447,7 @@ HSPLandroid/graphics/BaseRecordingCanvas;->drawRect(Landroid/graphics/RectF;Land HSPLandroid/graphics/BaseRecordingCanvas;->drawRoundRect(Landroid/graphics/RectF;FFLandroid/graphics/Paint;)V HSPLandroid/graphics/BaseRecordingCanvas;->drawText(Ljava/lang/CharSequence;IIFFLandroid/graphics/Paint;)V HSPLandroid/graphics/BaseRecordingCanvas;->drawText(Ljava/lang/String;FFLandroid/graphics/Paint;)V +HSPLandroid/graphics/BaseRecordingCanvas;->drawText([CIIFFLandroid/graphics/Paint;)V HSPLandroid/graphics/BaseRecordingCanvas;->drawTextRun(Ljava/lang/CharSequence;IIIIFFZLandroid/graphics/Paint;)V HSPLandroid/graphics/BaseRecordingCanvas;->drawTextRun([CIIIIFFZLandroid/graphics/Paint;)V HSPLandroid/graphics/Bitmap$1;-><init>()V @@ -5254,11 +5466,12 @@ HSPLandroid/graphics/Bitmap;->checkWidthHeight(II)V HSPLandroid/graphics/Bitmap;->checkXYSign(II)V HSPLandroid/graphics/Bitmap;->compress(Landroid/graphics/Bitmap$CompressFormat;ILjava/io/OutputStream;)Z HSPLandroid/graphics/Bitmap;->copy(Landroid/graphics/Bitmap$Config;Z)Landroid/graphics/Bitmap; +HPLandroid/graphics/Bitmap;->createAshmemBitmap(Landroid/graphics/Bitmap$Config;)Landroid/graphics/Bitmap; HSPLandroid/graphics/Bitmap;->createBitmap(IILandroid/graphics/Bitmap$Config;)Landroid/graphics/Bitmap; HSPLandroid/graphics/Bitmap;->createBitmap(Landroid/graphics/Bitmap;IIIILandroid/graphics/Matrix;Z)Landroid/graphics/Bitmap; HSPLandroid/graphics/Bitmap;->createBitmap(Landroid/util/DisplayMetrics;IILandroid/graphics/Bitmap$Config;)Landroid/graphics/Bitmap; HSPLandroid/graphics/Bitmap;->createBitmap(Landroid/util/DisplayMetrics;IILandroid/graphics/Bitmap$Config;ZLandroid/graphics/ColorSpace;)Landroid/graphics/Bitmap; -PLandroid/graphics/Bitmap;->createGraphicBufferHandle()Landroid/graphics/GraphicBuffer; +HPLandroid/graphics/Bitmap;->createGraphicBufferHandle()Landroid/graphics/GraphicBuffer; HSPLandroid/graphics/Bitmap;->createScaledBitmap(Landroid/graphics/Bitmap;IIZ)Landroid/graphics/Bitmap; HSPLandroid/graphics/Bitmap;->eraseColor(I)V HSPLandroid/graphics/Bitmap;->getAllocationByteCount()I @@ -5266,6 +5479,7 @@ HSPLandroid/graphics/Bitmap;->getByteCount()I HSPLandroid/graphics/Bitmap;->getColorSpace()Landroid/graphics/ColorSpace; HSPLandroid/graphics/Bitmap;->getConfig()Landroid/graphics/Bitmap$Config; HSPLandroid/graphics/Bitmap;->getHeight()I +HSPLandroid/graphics/Bitmap;->getPixel(II)I HSPLandroid/graphics/Bitmap;->getPixels([IIIIIII)V HSPLandroid/graphics/Bitmap;->getScaledHeight(I)I HSPLandroid/graphics/Bitmap;->getScaledWidth(I)I @@ -5274,8 +5488,10 @@ HSPLandroid/graphics/Bitmap;->hasAlpha()Z HSPLandroid/graphics/Bitmap;->isMutable()Z HSPLandroid/graphics/Bitmap;->isRecycled()Z HSPLandroid/graphics/Bitmap;->prepareToDraw()V +HSPLandroid/graphics/Bitmap;->reconfigure(IILandroid/graphics/Bitmap$Config;)V HSPLandroid/graphics/Bitmap;->recycle()V HSPLandroid/graphics/Bitmap;->reinit(IIZ)V +HSPLandroid/graphics/Bitmap;->sameAs(Landroid/graphics/Bitmap;)Z HSPLandroid/graphics/Bitmap;->scaleFromDensity(III)I HSPLandroid/graphics/Bitmap;->setDensity(I)V HSPLandroid/graphics/Bitmap;->setHasAlpha(Z)V @@ -5290,6 +5506,7 @@ HSPLandroid/graphics/BitmapFactory;->decodeFile(Ljava/lang/String;Landroid/graph HSPLandroid/graphics/BitmapFactory;->decodeResource(Landroid/content/res/Resources;I)Landroid/graphics/Bitmap; HSPLandroid/graphics/BitmapFactory;->decodeResource(Landroid/content/res/Resources;ILandroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap; HSPLandroid/graphics/BitmapFactory;->decodeResourceStream(Landroid/content/res/Resources;Landroid/util/TypedValue;Ljava/io/InputStream;Landroid/graphics/Rect;Landroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap; +HSPLandroid/graphics/BitmapFactory;->decodeStream(Ljava/io/InputStream;)Landroid/graphics/Bitmap; HSPLandroid/graphics/BitmapFactory;->decodeStream(Ljava/io/InputStream;Landroid/graphics/Rect;Landroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap; HSPLandroid/graphics/BitmapFactory;->setDensityFromOptions(Landroid/graphics/Bitmap;Landroid/graphics/BitmapFactory$Options;)V HSPLandroid/graphics/BitmapShader;-><init>(Landroid/graphics/Bitmap;II)V @@ -5298,6 +5515,7 @@ HSPLandroid/graphics/BitmapShader;->createNativeInstance(J)J HSPLandroid/graphics/BlendMode;-><init>(Ljava/lang/String;II)V HSPLandroid/graphics/BlendMode;->values()[Landroid/graphics/BlendMode; HSPLandroid/graphics/BlurMaskFilter$Blur;-><init>(Ljava/lang/String;II)V +HSPLandroid/graphics/BlurMaskFilter;-><init>(FLandroid/graphics/BlurMaskFilter$Blur;)V HSPLandroid/graphics/Canvas$EdgeType;-><init>(Ljava/lang/String;II)V HSPLandroid/graphics/Canvas;-><init>()V HSPLandroid/graphics/Canvas;-><init>(J)V @@ -5309,6 +5527,7 @@ HSPLandroid/graphics/Canvas;->clipPath(Landroid/graphics/Path;Landroid/graphics/ HSPLandroid/graphics/Canvas;->clipRect(FFFF)Z HSPLandroid/graphics/Canvas;->clipRect(IIII)Z HSPLandroid/graphics/Canvas;->clipRect(Landroid/graphics/Rect;)Z +HSPLandroid/graphics/Canvas;->clipRect(Landroid/graphics/Rect;Landroid/graphics/Region$Op;)Z HSPLandroid/graphics/Canvas;->concat(Landroid/graphics/Matrix;)V HSPLandroid/graphics/Canvas;->drawARGB(IIII)V HSPLandroid/graphics/Canvas;->drawBitmap(Landroid/graphics/Bitmap;FFLandroid/graphics/Paint;)V @@ -5345,6 +5564,8 @@ HSPLandroid/graphics/Canvas;->rotate(F)V HSPLandroid/graphics/Canvas;->rotate(FFF)V HSPLandroid/graphics/Canvas;->save()I HSPLandroid/graphics/Canvas;->save(I)I +HSPLandroid/graphics/Canvas;->saveLayerAlpha(FFFFI)I +HSPLandroid/graphics/Canvas;->saveLayerAlpha(FFFFII)I HSPLandroid/graphics/Canvas;->scale(FF)V HSPLandroid/graphics/Canvas;->scale(FFFF)V HSPLandroid/graphics/Canvas;->setBitmap(Landroid/graphics/Bitmap;)V @@ -5354,6 +5575,7 @@ HSPLandroid/graphics/Canvas;->setDrawFilter(Landroid/graphics/DrawFilter;)V HSPLandroid/graphics/Canvas;->setScreenDensity(I)V HSPLandroid/graphics/Canvas;->translate(FF)V HSPLandroid/graphics/CanvasProperty;->getNativeContainer()J +HSPLandroid/graphics/Color;->HSVToColor([F)I HSPLandroid/graphics/Color;->alpha(I)I HSPLandroid/graphics/Color;->alpha(J)F HSPLandroid/graphics/Color;->argb(IIII)I @@ -5372,6 +5594,9 @@ HSPLandroid/graphics/Color;->toArgb(J)I HSPLandroid/graphics/Color;->valueOf(I)Landroid/graphics/Color; HSPLandroid/graphics/ColorFilter;->access$000()J HSPLandroid/graphics/ColorFilter;->getNativeInstance()J +HSPLandroid/graphics/ColorMatrix;-><init>()V +HSPLandroid/graphics/ColorMatrix;-><init>([F)V +HSPLandroid/graphics/ColorMatrix;->reset()V HSPLandroid/graphics/ColorMatrix;->set(Landroid/graphics/ColorMatrix;)V HSPLandroid/graphics/ColorMatrixColorFilter;-><init>(Landroid/graphics/ColorMatrix;)V HSPLandroid/graphics/ColorMatrixColorFilter;->createNativeInstance()J @@ -5434,7 +5659,7 @@ HSPLandroid/graphics/GraphicBuffer$1;-><init>()V HPLandroid/graphics/GraphicBuffer;-><init>(IIIIJ)V HSPLandroid/graphics/GraphicBuffer;->createFromExisting(IIIIJ)Landroid/graphics/GraphicBuffer; HSPLandroid/graphics/GraphicBuffer;->finalize()V -PLandroid/graphics/GraphicBuffer;->getFormat()I +HPLandroid/graphics/GraphicBuffer;->getFormat()I HPLandroid/graphics/GraphicBuffer;->getHeight()I HPLandroid/graphics/GraphicBuffer;->getWidth()I HPLandroid/graphics/GraphicBuffer;->writeToParcel(Landroid/os/Parcel;I)V @@ -5449,7 +5674,7 @@ HSPLandroid/graphics/HardwareRenderer$ProcessInitializer;->setPackageName(Ljava/ HSPLandroid/graphics/HardwareRenderer;-><init>()V HSPLandroid/graphics/HardwareRenderer;->allocateBuffers()V HSPLandroid/graphics/HardwareRenderer;->clearContent()V -PLandroid/graphics/HardwareRenderer;->createHardwareBitmap(Landroid/graphics/RenderNode;II)Landroid/graphics/Bitmap; +HPLandroid/graphics/HardwareRenderer;->createHardwareBitmap(Landroid/graphics/RenderNode;II)Landroid/graphics/Bitmap; HSPLandroid/graphics/HardwareRenderer;->destroy()V HSPLandroid/graphics/HardwareRenderer;->loadSystemProperties()Z HSPLandroid/graphics/HardwareRenderer;->notifyFramePending()V @@ -5489,6 +5714,7 @@ HSPLandroid/graphics/ImageDecoder;->close()V HSPLandroid/graphics/ImageDecoder;->computeDensity(Landroid/graphics/ImageDecoder$Source;)I HSPLandroid/graphics/ImageDecoder;->createFromAsset(Landroid/content/res/AssetManager$AssetInputStream;Landroid/graphics/ImageDecoder$Source;)Landroid/graphics/ImageDecoder; HSPLandroid/graphics/ImageDecoder;->createFromStream(Ljava/io/InputStream;ZLandroid/graphics/ImageDecoder$Source;)Landroid/graphics/ImageDecoder; +HSPLandroid/graphics/ImageDecoder;->createSource(Landroid/content/res/Resources;Ljava/io/InputStream;)Landroid/graphics/ImageDecoder$Source; HSPLandroid/graphics/ImageDecoder;->createSource(Landroid/content/res/Resources;Ljava/io/InputStream;I)Landroid/graphics/ImageDecoder$Source; HSPLandroid/graphics/ImageDecoder;->decodeBitmap(Landroid/graphics/ImageDecoder$Source;Landroid/graphics/ImageDecoder$OnHeaderDecodedListener;)Landroid/graphics/Bitmap; HSPLandroid/graphics/ImageDecoder;->decodeBitmapImpl(Landroid/graphics/ImageDecoder$Source;Landroid/graphics/ImageDecoder$OnHeaderDecodedListener;)Landroid/graphics/Bitmap; @@ -5549,6 +5775,7 @@ HSPLandroid/graphics/Matrix;->setRotate(FFF)V HSPLandroid/graphics/Matrix;->setScale(FF)V HSPLandroid/graphics/Matrix;->setScale(FFFF)V HSPLandroid/graphics/Matrix;->setTranslate(FF)V +HSPLandroid/graphics/Matrix;->setValues([F)V HSPLandroid/graphics/NinePatch$InsetStruct;-><init>(IIIIIIIIFIF)V HSPLandroid/graphics/NinePatch$InsetStruct;->scaleInsets(IIIIF)Landroid/graphics/Rect; HSPLandroid/graphics/NinePatch;->draw(Landroid/graphics/Canvas;Landroid/graphics/Rect;Landroid/graphics/Paint;)V @@ -5558,6 +5785,7 @@ HSPLandroid/graphics/NinePatch;->getDensity()I HSPLandroid/graphics/NinePatch;->getHeight()I HSPLandroid/graphics/NinePatch;->getWidth()I HSPLandroid/graphics/Outline;-><init>()V +HSPLandroid/graphics/Outline;->setAlpha(F)V HSPLandroid/graphics/Outline;->setConvexPath(Landroid/graphics/Path;)V HSPLandroid/graphics/Outline;->setEmpty()V HSPLandroid/graphics/Outline;->setOval(IIII)V @@ -5566,6 +5794,7 @@ HSPLandroid/graphics/Outline;->setRoundRect(IIIIF)V HSPLandroid/graphics/Outline;->setRoundRect(Landroid/graphics/Rect;F)V HSPLandroid/graphics/Paint$Align;-><init>(Ljava/lang/String;II)V HSPLandroid/graphics/Paint$Cap;-><init>(Ljava/lang/String;II)V +HSPLandroid/graphics/Paint$FontMetrics;-><init>()V HSPLandroid/graphics/Paint$Join;-><init>(Ljava/lang/String;II)V HSPLandroid/graphics/Paint$Style;-><init>(Ljava/lang/String;II)V HSPLandroid/graphics/Paint;-><init>()V @@ -5607,6 +5836,8 @@ HSPLandroid/graphics/Paint;->getTextRunAdvances([CIIIIZ[FI)F HSPLandroid/graphics/Paint;->getTextScaleX()F HSPLandroid/graphics/Paint;->getTextSize()F HSPLandroid/graphics/Paint;->getTypeface()Landroid/graphics/Typeface; +HSPLandroid/graphics/Paint;->getUnderlinePosition()F +HSPLandroid/graphics/Paint;->getUnderlineThickness()F HSPLandroid/graphics/Paint;->getXfermode()Landroid/graphics/Xfermode; HSPLandroid/graphics/Paint;->hasGlyph(Ljava/lang/String;)Z HSPLandroid/graphics/Paint;->isAntiAlias()Z @@ -5631,6 +5862,7 @@ HSPLandroid/graphics/Paint;->setFakeBoldText(Z)V HSPLandroid/graphics/Paint;->setFilterBitmap(Z)V HSPLandroid/graphics/Paint;->setFlags(I)V HSPLandroid/graphics/Paint;->setLetterSpacing(F)V +HSPLandroid/graphics/Paint;->setMaskFilter(Landroid/graphics/MaskFilter;)Landroid/graphics/MaskFilter; HSPLandroid/graphics/Paint;->setPathEffect(Landroid/graphics/PathEffect;)Landroid/graphics/PathEffect; HSPLandroid/graphics/Paint;->setShader(Landroid/graphics/Shader;)Landroid/graphics/Shader; HSPLandroid/graphics/Paint;->setShadowLayer(FFFI)V @@ -5654,7 +5886,9 @@ HSPLandroid/graphics/Path$Direction;-><init>(Ljava/lang/String;II)V HSPLandroid/graphics/Path$FillType;-><init>(Ljava/lang/String;II)V HSPLandroid/graphics/Path;-><init>()V HSPLandroid/graphics/Path;-><init>(Landroid/graphics/Path;)V +HSPLandroid/graphics/Path;->addOval(FFFFLandroid/graphics/Path$Direction;)V HSPLandroid/graphics/Path;->addRect(FFFFLandroid/graphics/Path$Direction;)V +HSPLandroid/graphics/Path;->addRect(Landroid/graphics/RectF;Landroid/graphics/Path$Direction;)V HSPLandroid/graphics/Path;->addRoundRect(FFFF[FLandroid/graphics/Path$Direction;)V HSPLandroid/graphics/Path;->addRoundRect(Landroid/graphics/RectF;[FLandroid/graphics/Path$Direction;)V HSPLandroid/graphics/Path;->approximate(F)[F @@ -5687,6 +5921,7 @@ HSPLandroid/graphics/Point;->set(II)V HSPLandroid/graphics/Point;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/graphics/PointF$1;-><init>()V HSPLandroid/graphics/PointF;-><init>()V +HSPLandroid/graphics/PointF;-><init>(FF)V HSPLandroid/graphics/PointF;->length(FF)F HSPLandroid/graphics/PointF;->set(FF)V HSPLandroid/graphics/PorterDuff$Mode;-><init>(Ljava/lang/String;II)V @@ -5717,6 +5952,7 @@ HSPLandroid/graphics/Rect;-><init>(Landroid/graphics/Rect;)V HSPLandroid/graphics/Rect;->centerX()I HSPLandroid/graphics/Rect;->centerY()I HSPLandroid/graphics/Rect;->contains(II)Z +HSPLandroid/graphics/Rect;->contains(Landroid/graphics/Rect;)Z HSPLandroid/graphics/Rect;->equals(Ljava/lang/Object;)Z HSPLandroid/graphics/Rect;->exactCenterX()F HSPLandroid/graphics/Rect;->exactCenterY()F @@ -5788,7 +6024,7 @@ HSPLandroid/graphics/RenderNode;->addPositionUpdateListener(Landroid/graphics/Re HSPLandroid/graphics/RenderNode;->beginRecording(II)Landroid/graphics/RecordingCanvas; HSPLandroid/graphics/RenderNode;->create(Ljava/lang/String;Landroid/graphics/RenderNode$AnimationHost;)Landroid/graphics/RenderNode; HSPLandroid/graphics/RenderNode;->discardDisplayList()V -PLandroid/graphics/RenderNode;->end(Landroid/graphics/RecordingCanvas;)V +HPLandroid/graphics/RenderNode;->end(Landroid/graphics/RecordingCanvas;)V HSPLandroid/graphics/RenderNode;->endRecording()V HSPLandroid/graphics/RenderNode;->getClipToOutline()Z HSPLandroid/graphics/RenderNode;->getElevation()F @@ -5811,6 +6047,7 @@ HSPLandroid/graphics/RenderNode;->offsetTopAndBottom(I)Z HSPLandroid/graphics/RenderNode;->setAlpha(F)Z HSPLandroid/graphics/RenderNode;->setAnimationMatrix(Landroid/graphics/Matrix;)Z HSPLandroid/graphics/RenderNode;->setBottom(I)Z +HSPLandroid/graphics/RenderNode;->setClipRect(Landroid/graphics/Rect;)Z HSPLandroid/graphics/RenderNode;->setClipToBounds(Z)Z HSPLandroid/graphics/RenderNode;->setClipToOutline(Z)Z HSPLandroid/graphics/RenderNode;->setElevation(F)Z @@ -5834,7 +6071,7 @@ HSPLandroid/graphics/RenderNode;->setTranslationX(F)Z HSPLandroid/graphics/RenderNode;->setTranslationY(F)Z HSPLandroid/graphics/RenderNode;->setTranslationZ(F)Z HSPLandroid/graphics/RenderNode;->setUsageHint(I)V -PLandroid/graphics/RenderNode;->start(II)Landroid/graphics/RecordingCanvas; +HPLandroid/graphics/RenderNode;->start(II)Landroid/graphics/RecordingCanvas; HSPLandroid/graphics/Shader$TileMode;-><init>(Ljava/lang/String;II)V HSPLandroid/graphics/Shader;->access$000()J HSPLandroid/graphics/Shader;->colorSpace()Landroid/graphics/ColorSpace; @@ -5852,6 +6089,7 @@ HSPLandroid/graphics/SurfaceTexture;->release()V HSPLandroid/graphics/SurfaceTexture;->updateTexImage()V HSPLandroid/graphics/TemporaryBuffer;->obtain(I)[C HSPLandroid/graphics/TemporaryBuffer;->recycle([C)V +HSPLandroid/graphics/Typeface$Builder;->build()Landroid/graphics/Typeface; HSPLandroid/graphics/Typeface$Builder;->createAssetUid(Landroid/content/res/AssetManager;Ljava/lang/String;I[Landroid/graphics/fonts/FontVariationAxis;IILjava/lang/String;)Ljava/lang/String; HSPLandroid/graphics/Typeface$CustomFallbackBuilder;-><init>(Landroid/graphics/fonts/FontFamily;)V HSPLandroid/graphics/Typeface$CustomFallbackBuilder;->build()Landroid/graphics/Typeface; @@ -5860,6 +6098,7 @@ HSPLandroid/graphics/Typeface;->create(Landroid/graphics/Typeface;I)Landroid/gra HSPLandroid/graphics/Typeface;->create(Ljava/lang/String;I)Landroid/graphics/Typeface; HSPLandroid/graphics/Typeface;->createFromFamiliesWithDefault([Landroid/graphics/FontFamily;Ljava/lang/String;II)Landroid/graphics/Typeface; HSPLandroid/graphics/Typeface;->createFromResources(Landroid/content/res/FontResourcesParser$FamilyResourceEntry;Landroid/content/res/AssetManager;Ljava/lang/String;)Landroid/graphics/Typeface; +HSPLandroid/graphics/Typeface;->defaultFromStyle(I)Landroid/graphics/Typeface; HSPLandroid/graphics/Typeface;->findFromCache(Landroid/content/res/AssetManager;Ljava/lang/String;)Landroid/graphics/Typeface; HSPLandroid/graphics/Typeface;->getStyle()I HSPLandroid/graphics/Typeface;->getSystemDefaultTypeface(Ljava/lang/String;)Landroid/graphics/Typeface; @@ -5877,6 +6116,7 @@ HSPLandroid/graphics/drawable/AdaptiveIconDrawable$LayerState;->canApplyTheme()Z HSPLandroid/graphics/drawable/AdaptiveIconDrawable$LayerState;->getChangingConfigurations()I HSPLandroid/graphics/drawable/AdaptiveIconDrawable$LayerState;->invalidateCache()V HSPLandroid/graphics/drawable/AdaptiveIconDrawable$LayerState;->isStateful()Z +HSPLandroid/graphics/drawable/AdaptiveIconDrawable$LayerState;->newDrawable()Landroid/graphics/drawable/Drawable; HSPLandroid/graphics/drawable/AdaptiveIconDrawable$LayerState;->newDrawable(Landroid/content/res/Resources;)Landroid/graphics/drawable/Drawable; HSPLandroid/graphics/drawable/AdaptiveIconDrawable;-><init>(Landroid/graphics/drawable/AdaptiveIconDrawable$LayerState;Landroid/content/res/Resources;)V HSPLandroid/graphics/drawable/AdaptiveIconDrawable;->canApplyTheme()Z @@ -5886,11 +6126,13 @@ HSPLandroid/graphics/drawable/AdaptiveIconDrawable;->getChangingConfigurations() HSPLandroid/graphics/drawable/AdaptiveIconDrawable;->getConstantState()Landroid/graphics/drawable/Drawable$ConstantState; HSPLandroid/graphics/drawable/AdaptiveIconDrawable;->getIntrinsicHeight()I HSPLandroid/graphics/drawable/AdaptiveIconDrawable;->getIntrinsicWidth()I +HSPLandroid/graphics/drawable/AdaptiveIconDrawable;->getOpacity()I HSPLandroid/graphics/drawable/AdaptiveIconDrawable;->inflate(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V HSPLandroid/graphics/drawable/AdaptiveIconDrawable;->inflateLayers(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V HSPLandroid/graphics/drawable/AdaptiveIconDrawable;->invalidateDrawable(Landroid/graphics/drawable/Drawable;)V HSPLandroid/graphics/drawable/AdaptiveIconDrawable;->invalidateSelf()V HSPLandroid/graphics/drawable/AdaptiveIconDrawable;->isStateful()Z +HSPLandroid/graphics/drawable/AdaptiveIconDrawable;->jumpToCurrentState()V HSPLandroid/graphics/drawable/AdaptiveIconDrawable;->onBoundsChange(Landroid/graphics/Rect;)V HSPLandroid/graphics/drawable/AdaptiveIconDrawable;->setVisible(ZZ)Z HSPLandroid/graphics/drawable/AdaptiveIconDrawable;->updateLayerBounds(Landroid/graphics/Rect;)V @@ -5908,6 +6150,8 @@ HSPLandroid/graphics/drawable/AnimatedStateListDrawable$AnimatedStateListState;- HSPLandroid/graphics/drawable/AnimatedStateListDrawable$AnimatedStateListState;->mutate()V HSPLandroid/graphics/drawable/AnimatedStateListDrawable$AnimatedStateListState;->newDrawable(Landroid/content/res/Resources;)Landroid/graphics/drawable/Drawable; HSPLandroid/graphics/drawable/AnimatedStateListDrawable$AnimatedStateListState;->transitionHasReversibleFlag(II)Z +HSPLandroid/graphics/drawable/AnimatedStateListDrawable$AnimatedVectorDrawableTransition;->start()V +HSPLandroid/graphics/drawable/AnimatedStateListDrawable$AnimatedVectorDrawableTransition;->stop()V HSPLandroid/graphics/drawable/AnimatedStateListDrawable;->applyTheme(Landroid/content/res/Resources$Theme;)V HSPLandroid/graphics/drawable/AnimatedStateListDrawable;->clearMutated()V HSPLandroid/graphics/drawable/AnimatedStateListDrawable;->cloneConstantState()Landroid/graphics/drawable/AnimatedStateListDrawable$AnimatedStateListState; @@ -5944,6 +6188,7 @@ HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;-> HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->createRTAnimatorForPath(Landroid/animation/ObjectAnimator;Landroid/graphics/drawable/VectorDrawable$VPath;J)V HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->end()V HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->getAnimatorNativePtr()J +HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->getFrameCount(J)I HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->handlePendingAction(I)V HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->init(Landroid/animation/AnimatorSet;)V HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->isInfinite()Z @@ -5970,7 +6215,9 @@ HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->isStateful()Z HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->mutate()Landroid/graphics/drawable/Drawable; HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->onBoundsChange(Landroid/graphics/Rect;)V HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->onStateChange([I)Z +HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->setHotspot(FF)V HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->setTintList(Landroid/content/res/ColorStateList;)V +HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->setTintMode(Landroid/graphics/PorterDuff$Mode;)V HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->setVisible(ZZ)Z HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->start()V HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->stop()V @@ -5986,10 +6233,13 @@ HSPLandroid/graphics/drawable/AnimationDrawable;->inflate(Landroid/content/res/R HSPLandroid/graphics/drawable/AnimationDrawable;->inflateChildElements(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V HSPLandroid/graphics/drawable/AnimationDrawable;->isRunning()Z HSPLandroid/graphics/drawable/AnimationDrawable;->mutate()Landroid/graphics/drawable/Drawable; +HSPLandroid/graphics/drawable/AnimationDrawable;->nextFrame(Z)V +HSPLandroid/graphics/drawable/AnimationDrawable;->run()V HSPLandroid/graphics/drawable/AnimationDrawable;->setConstantState(Landroid/graphics/drawable/DrawableContainer$DrawableContainerState;)V HSPLandroid/graphics/drawable/AnimationDrawable;->setFrame(IZZ)V HSPLandroid/graphics/drawable/AnimationDrawable;->setVisible(ZZ)Z HSPLandroid/graphics/drawable/AnimationDrawable;->start()V +HSPLandroid/graphics/drawable/AnimationDrawable;->stop()V HSPLandroid/graphics/drawable/AnimationDrawable;->unscheduleSelf(Ljava/lang/Runnable;)V HSPLandroid/graphics/drawable/BitmapDrawable$BitmapState;-><init>(Landroid/graphics/Bitmap;)V HSPLandroid/graphics/drawable/BitmapDrawable$BitmapState;-><init>(Landroid/graphics/drawable/BitmapDrawable$BitmapState;)V @@ -6056,9 +6306,16 @@ HSPLandroid/graphics/drawable/ColorDrawable;->setColorFilter(Landroid/graphics/C HSPLandroid/graphics/drawable/Drawable$ConstantState;-><init>()V HSPLandroid/graphics/drawable/Drawable$ConstantState;->newDrawable(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;)Landroid/graphics/drawable/Drawable; HSPLandroid/graphics/drawable/Drawable;-><init>()V +HSPLandroid/graphics/drawable/Drawable;->canApplyTheme()Z +HSPLandroid/graphics/drawable/Drawable;->clearColorFilter()V +HSPLandroid/graphics/drawable/Drawable;->copyBounds()Landroid/graphics/Rect; HSPLandroid/graphics/drawable/Drawable;->copyBounds(Landroid/graphics/Rect;)V +HSPLandroid/graphics/drawable/Drawable;->createFromResourceStream(Landroid/content/res/Resources;Landroid/util/TypedValue;Ljava/io/InputStream;Ljava/lang/String;)Landroid/graphics/drawable/Drawable; +HSPLandroid/graphics/drawable/Drawable;->createFromResourceStream(Landroid/content/res/Resources;Landroid/util/TypedValue;Ljava/io/InputStream;Ljava/lang/String;Landroid/graphics/BitmapFactory$Options;)Landroid/graphics/drawable/Drawable; +HSPLandroid/graphics/drawable/Drawable;->createFromStream(Ljava/io/InputStream;Ljava/lang/String;)Landroid/graphics/drawable/Drawable; HSPLandroid/graphics/drawable/Drawable;->createFromXmlForDensity(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;ILandroid/content/res/Resources$Theme;)Landroid/graphics/drawable/Drawable; HSPLandroid/graphics/drawable/Drawable;->createFromXmlInner(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)Landroid/graphics/drawable/Drawable; +HSPLandroid/graphics/drawable/Drawable;->getBitmapDrawable(Landroid/content/res/Resources;Landroid/util/TypedValue;Ljava/io/InputStream;)Landroid/graphics/drawable/Drawable; HSPLandroid/graphics/drawable/Drawable;->getBounds()Landroid/graphics/Rect; HSPLandroid/graphics/drawable/Drawable;->getCallback()Landroid/graphics/drawable/Drawable$Callback; HSPLandroid/graphics/drawable/Drawable;->getChangingConfigurations()I @@ -6102,6 +6359,7 @@ HSPLandroid/graphics/drawable/Drawable;->setVisible(ZZ)Z HSPLandroid/graphics/drawable/Drawable;->unscheduleSelf(Ljava/lang/Runnable;)V HSPLandroid/graphics/drawable/Drawable;->updateTintFilter(Landroid/graphics/PorterDuffColorFilter;Landroid/content/res/ColorStateList;Landroid/graphics/PorterDuff$Mode;)Landroid/graphics/PorterDuffColorFilter; HSPLandroid/graphics/drawable/DrawableContainer$BlockInvalidateCallback;->invalidateDrawable(Landroid/graphics/drawable/Drawable;)V +HSPLandroid/graphics/drawable/DrawableContainer$BlockInvalidateCallback;->unscheduleDrawable(Landroid/graphics/drawable/Drawable;Ljava/lang/Runnable;)V HSPLandroid/graphics/drawable/DrawableContainer$BlockInvalidateCallback;->unwrap()Landroid/graphics/drawable/Drawable$Callback; HSPLandroid/graphics/drawable/DrawableContainer$BlockInvalidateCallback;->wrap(Landroid/graphics/drawable/Drawable$Callback;)Landroid/graphics/drawable/DrawableContainer$BlockInvalidateCallback; HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;-><init>(Landroid/graphics/drawable/DrawableContainer$DrawableContainerState;Landroid/graphics/drawable/DrawableContainer;Landroid/content/res/Resources;)V @@ -6142,6 +6400,7 @@ HSPLandroid/graphics/drawable/DrawableContainer;->isStateful()Z HSPLandroid/graphics/drawable/DrawableContainer;->jumpToCurrentState()V HSPLandroid/graphics/drawable/DrawableContainer;->mutate()Landroid/graphics/drawable/Drawable; HSPLandroid/graphics/drawable/DrawableContainer;->onBoundsChange(Landroid/graphics/Rect;)V +HSPLandroid/graphics/drawable/DrawableContainer;->onLevelChange(I)Z HSPLandroid/graphics/drawable/DrawableContainer;->onStateChange([I)Z HSPLandroid/graphics/drawable/DrawableContainer;->selectDrawable(I)Z HSPLandroid/graphics/drawable/DrawableContainer;->setAlpha(I)V @@ -6153,6 +6412,7 @@ HSPLandroid/graphics/drawable/DrawableContainer;->setHotspot(FF)V HSPLandroid/graphics/drawable/DrawableContainer;->setTintList(Landroid/content/res/ColorStateList;)V HSPLandroid/graphics/drawable/DrawableContainer;->setTintMode(Landroid/graphics/PorterDuff$Mode;)V HSPLandroid/graphics/drawable/DrawableContainer;->setVisible(ZZ)Z +HSPLandroid/graphics/drawable/DrawableContainer;->unscheduleDrawable(Landroid/graphics/drawable/Drawable;Ljava/lang/Runnable;)V HSPLandroid/graphics/drawable/DrawableContainer;->updateDensity(Landroid/content/res/Resources;)V HSPLandroid/graphics/drawable/DrawableInflater;->inflateFromClass(Ljava/lang/String;)Landroid/graphics/drawable/Drawable; HSPLandroid/graphics/drawable/DrawableInflater;->inflateFromTag(Ljava/lang/String;)Landroid/graphics/drawable/Drawable; @@ -6185,6 +6445,7 @@ HSPLandroid/graphics/drawable/DrawableWrapper;->setAlpha(I)V HSPLandroid/graphics/drawable/DrawableWrapper;->setColorFilter(Landroid/graphics/ColorFilter;)V HSPLandroid/graphics/drawable/DrawableWrapper;->setDrawable(Landroid/graphics/drawable/Drawable;)V HSPLandroid/graphics/drawable/DrawableWrapper;->setHotspot(FF)V +HSPLandroid/graphics/drawable/DrawableWrapper;->setTintList(Landroid/content/res/ColorStateList;)V HSPLandroid/graphics/drawable/DrawableWrapper;->setVisible(ZZ)Z HSPLandroid/graphics/drawable/DrawableWrapper;->updateLocalState(Landroid/content/res/Resources;)V HSPLandroid/graphics/drawable/DrawableWrapper;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V @@ -6200,6 +6461,7 @@ HSPLandroid/graphics/drawable/GradientDrawable$Orientation;-><init>(Ljava/lang/S HSPLandroid/graphics/drawable/GradientDrawable$Orientation;->values()[Landroid/graphics/drawable/GradientDrawable$Orientation; HSPLandroid/graphics/drawable/GradientDrawable;-><init>()V HSPLandroid/graphics/drawable/GradientDrawable;-><init>(Landroid/graphics/drawable/GradientDrawable$GradientState;Landroid/content/res/Resources;)V +HSPLandroid/graphics/drawable/GradientDrawable;-><init>(Landroid/graphics/drawable/GradientDrawable$Orientation;[I)V HSPLandroid/graphics/drawable/GradientDrawable;->applyTheme(Landroid/content/res/Resources$Theme;)V HSPLandroid/graphics/drawable/GradientDrawable;->applyThemeChildElements(Landroid/content/res/Resources$Theme;)V HSPLandroid/graphics/drawable/GradientDrawable;->canApplyTheme()Z @@ -6229,6 +6491,8 @@ HSPLandroid/graphics/drawable/GradientDrawable;->setColorFilter(Landroid/graphic HSPLandroid/graphics/drawable/GradientDrawable;->setCornerRadii([F)V HSPLandroid/graphics/drawable/GradientDrawable;->setCornerRadius(F)V HSPLandroid/graphics/drawable/GradientDrawable;->setDither(Z)V +HSPLandroid/graphics/drawable/GradientDrawable;->setGradientRadius(F)V +HSPLandroid/graphics/drawable/GradientDrawable;->setGradientType(I)V HSPLandroid/graphics/drawable/GradientDrawable;->setShape(I)V HSPLandroid/graphics/drawable/GradientDrawable;->setStroke(II)V HSPLandroid/graphics/drawable/GradientDrawable;->setStroke(IIFF)V @@ -6332,6 +6596,7 @@ HSPLandroid/graphics/drawable/LayerDrawable;->setAlpha(I)V HSPLandroid/graphics/drawable/LayerDrawable;->setAutoMirrored(Z)V HSPLandroid/graphics/drawable/LayerDrawable;->setColorFilter(Landroid/graphics/ColorFilter;)V HSPLandroid/graphics/drawable/LayerDrawable;->setDither(Z)V +HSPLandroid/graphics/drawable/LayerDrawable;->setDrawable(ILandroid/graphics/drawable/Drawable;)V HSPLandroid/graphics/drawable/LayerDrawable;->setHotspot(FF)V HSPLandroid/graphics/drawable/LayerDrawable;->setId(II)V HSPLandroid/graphics/drawable/LayerDrawable;->setLayerInset(IIIII)V @@ -6344,6 +6609,7 @@ HSPLandroid/graphics/drawable/LayerDrawable;->updateStateFromTypedArray(Landroid HSPLandroid/graphics/drawable/NinePatchDrawable$NinePatchState;-><init>()V HSPLandroid/graphics/drawable/NinePatchDrawable$NinePatchState;-><init>(Landroid/graphics/NinePatch;Landroid/graphics/Rect;Landroid/graphics/Rect;ZZ)V HSPLandroid/graphics/drawable/NinePatchDrawable$NinePatchState;-><init>(Landroid/graphics/drawable/NinePatchDrawable$NinePatchState;)V +HSPLandroid/graphics/drawable/NinePatchDrawable$NinePatchState;->getChangingConfigurations()I HSPLandroid/graphics/drawable/NinePatchDrawable$NinePatchState;->newDrawable()Landroid/graphics/drawable/Drawable; HSPLandroid/graphics/drawable/NinePatchDrawable$NinePatchState;->newDrawable(Landroid/content/res/Resources;)Landroid/graphics/drawable/Drawable; HSPLandroid/graphics/drawable/NinePatchDrawable;->applyTheme(Landroid/content/res/Resources$Theme;)V @@ -6432,6 +6698,7 @@ HSPLandroid/graphics/drawable/RippleForeground$4;->setValue(Ljava/lang/Object;F) HSPLandroid/graphics/drawable/RippleForeground;-><init>(Landroid/graphics/drawable/RippleDrawable;Landroid/graphics/Rect;FFZ)V HSPLandroid/graphics/drawable/RippleForeground;->clampStartingPosition()V HSPLandroid/graphics/drawable/RippleForeground;->draw(Landroid/graphics/Canvas;Landroid/graphics/Paint;)V +HSPLandroid/graphics/drawable/RippleForeground;->drawSoftware(Landroid/graphics/Canvas;Landroid/graphics/Paint;)V HSPLandroid/graphics/drawable/RippleForeground;->end()V HSPLandroid/graphics/drawable/RippleForeground;->getBounds(Landroid/graphics/Rect;)V HSPLandroid/graphics/drawable/RippleForeground;->hasFinishedExit()Z @@ -6461,10 +6728,13 @@ HSPLandroid/graphics/drawable/ScaleDrawable;->onBoundsChange(Landroid/graphics/R HSPLandroid/graphics/drawable/ScaleDrawable;->onLevelChange(I)Z HSPLandroid/graphics/drawable/ScaleDrawable;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V HSPLandroid/graphics/drawable/ScaleDrawable;->verifyRequiredAttributes(Landroid/content/res/TypedArray;)V +HSPLandroid/graphics/drawable/ShapeDrawable$ShapeState;-><init>(Landroid/graphics/drawable/ShapeDrawable$ShapeState;)V +HSPLandroid/graphics/drawable/ShapeDrawable;-><init>()V HSPLandroid/graphics/drawable/ShapeDrawable;-><init>(Landroid/graphics/drawable/shapes/Shape;)V HSPLandroid/graphics/drawable/ShapeDrawable;->draw(Landroid/graphics/Canvas;)V HSPLandroid/graphics/drawable/ShapeDrawable;->getAlpha()I HSPLandroid/graphics/drawable/ShapeDrawable;->getChangingConfigurations()I +HSPLandroid/graphics/drawable/ShapeDrawable;->getConstantState()Landroid/graphics/drawable/Drawable$ConstantState; HSPLandroid/graphics/drawable/ShapeDrawable;->getIntrinsicHeight()I HSPLandroid/graphics/drawable/ShapeDrawable;->getIntrinsicWidth()I HSPLandroid/graphics/drawable/ShapeDrawable;->getOpacity()I @@ -6472,10 +6742,13 @@ HSPLandroid/graphics/drawable/ShapeDrawable;->getOutline(Landroid/graphics/Outli HSPLandroid/graphics/drawable/ShapeDrawable;->getPadding(Landroid/graphics/Rect;)Z HSPLandroid/graphics/drawable/ShapeDrawable;->getPaint()Landroid/graphics/Paint; HSPLandroid/graphics/drawable/ShapeDrawable;->isStateful()Z +HSPLandroid/graphics/drawable/ShapeDrawable;->mutate()Landroid/graphics/drawable/Drawable; HSPLandroid/graphics/drawable/ShapeDrawable;->onBoundsChange(Landroid/graphics/Rect;)V HSPLandroid/graphics/drawable/ShapeDrawable;->onDraw(Landroid/graphics/drawable/shapes/Shape;Landroid/graphics/Canvas;Landroid/graphics/Paint;)V HSPLandroid/graphics/drawable/ShapeDrawable;->setAlpha(I)V HSPLandroid/graphics/drawable/ShapeDrawable;->setColorFilter(Landroid/graphics/ColorFilter;)V +HSPLandroid/graphics/drawable/ShapeDrawable;->setIntrinsicHeight(I)V +HSPLandroid/graphics/drawable/ShapeDrawable;->setIntrinsicWidth(I)V HSPLandroid/graphics/drawable/ShapeDrawable;->setShape(Landroid/graphics/drawable/shapes/Shape;)V HSPLandroid/graphics/drawable/ShapeDrawable;->updateShape()V HSPLandroid/graphics/drawable/StateListDrawable$StateListState;->addStateSet([ILandroid/graphics/drawable/Drawable;)I @@ -6496,6 +6769,7 @@ HSPLandroid/graphics/drawable/StateListDrawable;->mutate()Landroid/graphics/draw HSPLandroid/graphics/drawable/StateListDrawable;->onStateChange([I)Z HSPLandroid/graphics/drawable/StateListDrawable;->setConstantState(Landroid/graphics/drawable/DrawableContainer$DrawableContainerState;)V HSPLandroid/graphics/drawable/StateListDrawable;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V +HSPLandroid/graphics/drawable/TransitionDrawable$TransitionState;->getChangingConfigurations()I HSPLandroid/graphics/drawable/TransitionDrawable;-><init>([Landroid/graphics/drawable/Drawable;)V HSPLandroid/graphics/drawable/TransitionDrawable;->createConstantState(Landroid/graphics/drawable/LayerDrawable$LayerState;Landroid/content/res/Resources;)Landroid/graphics/drawable/LayerDrawable$LayerState; HSPLandroid/graphics/drawable/TransitionDrawable;->draw(Landroid/graphics/Canvas;)V @@ -6517,6 +6791,7 @@ HSPLandroid/graphics/drawable/VectorDrawable$VFullPath$8;-><init>(Ljava/lang/Str HSPLandroid/graphics/drawable/VectorDrawable$VFullPath$9;-><init>(Ljava/lang/String;)V HSPLandroid/graphics/drawable/VectorDrawable$VFullPath;->applyTheme(Landroid/content/res/Resources$Theme;)V HSPLandroid/graphics/drawable/VectorDrawable$VFullPath;->canApplyTheme()Z +HSPLandroid/graphics/drawable/VectorDrawable$VFullPath;->getFillColor()I HSPLandroid/graphics/drawable/VectorDrawable$VFullPath;->getNativePtr()J HSPLandroid/graphics/drawable/VectorDrawable$VFullPath;->getNativeSize()I HSPLandroid/graphics/drawable/VectorDrawable$VFullPath;->getProperty(Ljava/lang/String;)Landroid/util/Property; @@ -6544,6 +6819,7 @@ HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->isStateful()Z HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->onStateChange([I)Z HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->setTree(Lcom/android/internal/util/VirtualRefBasePtr;)V HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V +HSPLandroid/graphics/drawable/VectorDrawable$VObject;->isTreeValid()Z HSPLandroid/graphics/drawable/VectorDrawable$VObject;->setTree(Lcom/android/internal/util/VirtualRefBasePtr;)V HSPLandroid/graphics/drawable/VectorDrawable$VPath$1;-><init>(Ljava/lang/Class;Ljava/lang/String;)V HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState$1;-><init>(Ljava/lang/String;)V @@ -6592,6 +6868,7 @@ HSPLandroid/graphics/drawable/VectorDrawable;->isStateful()Z HSPLandroid/graphics/drawable/VectorDrawable;->mutate()Landroid/graphics/drawable/Drawable; HSPLandroid/graphics/drawable/VectorDrawable;->onStateChange([I)Z HSPLandroid/graphics/drawable/VectorDrawable;->setAllowCaching(Z)V +HSPLandroid/graphics/drawable/VectorDrawable;->setAlpha(I)V HSPLandroid/graphics/drawable/VectorDrawable;->setAutoMirrored(Z)V HSPLandroid/graphics/drawable/VectorDrawable;->setColorFilter(Landroid/graphics/ColorFilter;)V HSPLandroid/graphics/drawable/VectorDrawable;->setTintList(Landroid/content/res/ColorStateList;)V @@ -6606,6 +6883,7 @@ HSPLandroid/graphics/drawable/shapes/PathShape;->draw(Landroid/graphics/Canvas;L HSPLandroid/graphics/drawable/shapes/PathShape;->onResize(FF)V HSPLandroid/graphics/drawable/shapes/RectShape;->onResize(FF)V HSPLandroid/graphics/drawable/shapes/RoundRectShape;-><init>([FLandroid/graphics/RectF;[F)V +HSPLandroid/graphics/drawable/shapes/RoundRectShape;->draw(Landroid/graphics/Canvas;Landroid/graphics/Paint;)V HSPLandroid/graphics/drawable/shapes/RoundRectShape;->onResize(FF)V HSPLandroid/graphics/fonts/Font$Builder;-><init>(Ljava/nio/ByteBuffer;)V HSPLandroid/graphics/fonts/Font$Builder;->build()Landroid/graphics/fonts/Font; @@ -6648,6 +6926,7 @@ HSPLandroid/graphics/text/LineBreaker$Result;->hasLineTab(I)Z HSPLandroid/graphics/text/LineBreaker;->access$100()J HSPLandroid/graphics/text/LineBreaker;->computeLineBreaks(Landroid/graphics/text/MeasuredText;Landroid/graphics/text/LineBreaker$ParagraphConstraints;I)Landroid/graphics/text/LineBreaker$Result; HSPLandroid/graphics/text/MeasuredText$Builder;-><init>([C)V +HSPLandroid/graphics/text/MeasuredText$Builder;->appendReplacementRun(Landroid/graphics/Paint;IF)Landroid/graphics/text/MeasuredText$Builder; HSPLandroid/graphics/text/MeasuredText$Builder;->appendStyleRun(Landroid/graphics/Paint;IZ)Landroid/graphics/text/MeasuredText$Builder; HSPLandroid/graphics/text/MeasuredText$Builder;->build()Landroid/graphics/text/MeasuredText; HSPLandroid/graphics/text/MeasuredText;->access$000()J @@ -6657,6 +6936,7 @@ HSPLandroid/graphics/text/MeasuredText;->getNativePtr()J PLandroid/gsi/IGsiService$Stub$Proxy;->isGsiInstalled()Z PLandroid/gsi/IGsiService$Stub$Proxy;->isGsiRunning()Z PLandroid/gsi/IGsiService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/gsi/IGsiService; +HSPLandroid/hardware/Camera;->getCameraInfo(ILandroid/hardware/Camera$CameraInfo;)V HSPLandroid/hardware/CameraStatus$1;-><init>()V HSPLandroid/hardware/CameraStatus$1;->createFromParcel(Landroid/os/Parcel;)Landroid/hardware/CameraStatus; HSPLandroid/hardware/CameraStatus$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; @@ -6669,7 +6949,7 @@ HSPLandroid/hardware/GeomagneticField;->computeSchmidtQuasiNormFactors(I)[[F HSPLandroid/hardware/GeomagneticField;->getDeclination()F HSPLandroid/hardware/GeomagneticField;->getFieldStrength()F HSPLandroid/hardware/GeomagneticField;->getHorizontalStrength()F -PLandroid/hardware/GeomagneticField;->getInclination()F +HPLandroid/hardware/GeomagneticField;->getInclination()F HSPLandroid/hardware/HardwareBuffer$1;-><init>()V HSPLandroid/hardware/HardwareBuffer;-><init>(J)V HSPLandroid/hardware/HardwareBuffer;->createFromGraphicBuffer(Landroid/graphics/GraphicBuffer;)Landroid/hardware/HardwareBuffer; @@ -6689,6 +6969,7 @@ HSPLandroid/hardware/ISensorPrivacyManager$Stub;-><init>()V HSPLandroid/hardware/ISensorPrivacyManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HSPLandroid/hardware/ISerialManager$Stub;-><init>()V HSPLandroid/hardware/Sensor;->getName()Ljava/lang/String; +HSPLandroid/hardware/Sensor;->getVendor()Ljava/lang/String; HSPLandroid/hardware/Sensor;->setType(I)Z HSPLandroid/hardware/Sensor;->setUuid(JJ)V PLandroid/hardware/SensorAdditionalInfo;->createLocalGeomagneticField(FFF)Landroid/hardware/SensorAdditionalInfo; @@ -6699,7 +6980,7 @@ HSPLandroid/hardware/SensorManager;->getSensorList(I)Ljava/util/List; HSPLandroid/hardware/SensorManager;->registerListener(Landroid/hardware/SensorEventListener;Landroid/hardware/Sensor;I)Z HSPLandroid/hardware/SensorManager;->registerListener(Landroid/hardware/SensorEventListener;Landroid/hardware/Sensor;ILandroid/os/Handler;)Z HSPLandroid/hardware/SensorManager;->requestTriggerSensor(Landroid/hardware/TriggerEventListener;Landroid/hardware/Sensor;)Z -PLandroid/hardware/SensorManager;->setOperationParameter(Landroid/hardware/SensorAdditionalInfo;)Z +HPLandroid/hardware/SensorManager;->setOperationParameter(Landroid/hardware/SensorAdditionalInfo;)Z HSPLandroid/hardware/SensorManager;->unregisterListener(Landroid/hardware/SensorEventListener;)V HSPLandroid/hardware/SystemSensorManager$BaseEventQueue;-><init>(Landroid/os/Looper;Landroid/hardware/SystemSensorManager;ILjava/lang/String;)V HSPLandroid/hardware/SystemSensorManager$BaseEventQueue;->addSensor(Landroid/hardware/Sensor;II)Z @@ -6717,11 +6998,11 @@ HSPLandroid/hardware/SystemSensorManager;->cancelTriggerSensorImpl(Landroid/hard HSPLandroid/hardware/SystemSensorManager;->getFullSensorList()Ljava/util/List; HSPLandroid/hardware/SystemSensorManager;->registerListenerImpl(Landroid/hardware/SensorEventListener;Landroid/hardware/Sensor;ILandroid/os/Handler;II)Z HSPLandroid/hardware/SystemSensorManager;->requestTriggerSensorImpl(Landroid/hardware/TriggerEventListener;Landroid/hardware/Sensor;)Z -PLandroid/hardware/SystemSensorManager;->setOperationParameterImpl(Landroid/hardware/SensorAdditionalInfo;)Z +HPLandroid/hardware/SystemSensorManager;->setOperationParameterImpl(Landroid/hardware/SensorAdditionalInfo;)Z HSPLandroid/hardware/SystemSensorManager;->unregisterListenerImpl(Landroid/hardware/SensorEventListener;Landroid/hardware/Sensor;)V HSPLandroid/hardware/biometrics/BiometricAuthenticator$Identifier;->getBiometricId()I HSPLandroid/hardware/biometrics/BiometricManager;->hasBiometrics(Landroid/content/Context;)Z -PLandroid/hardware/biometrics/BiometricManager;->resetLockout([B)V +HPLandroid/hardware/biometrics/BiometricManager;->resetLockout([B)V HSPLandroid/hardware/biometrics/BiometricSourceType$1;-><init>()V HSPLandroid/hardware/biometrics/BiometricSourceType$1;->createFromParcel(Landroid/os/Parcel;)Landroid/hardware/biometrics/BiometricSourceType; HSPLandroid/hardware/biometrics/BiometricSourceType$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; @@ -6809,6 +7090,7 @@ HSPLandroid/hardware/camera2/impl/CameraMetadataNative;->setCameraId(I)V HSPLandroid/hardware/camera2/impl/CameraMetadataNative;->setDisplaySize(Landroid/util/Size;)V HSPLandroid/hardware/camera2/impl/CameraMetadataNative;->setupGlobalVendorTagDescriptor()V HSPLandroid/hardware/camera2/marshal/MarshalHelpers;->checkNativeType(I)I +HSPLandroid/hardware/camera2/marshal/MarshalRegistry$MarshalToken;->equals(Ljava/lang/Object;)Z HSPLandroid/hardware/camera2/marshal/MarshalRegistry$MarshalToken;->hashCode()I HSPLandroid/hardware/camera2/marshal/MarshalRegistry;->getMarshaler(Landroid/hardware/camera2/utils/TypeReference;I)Landroid/hardware/camera2/marshal/Marshaler; HSPLandroid/hardware/camera2/marshal/MarshalRegistry;->registerMarshalQueryable(Landroid/hardware/camera2/marshal/MarshalQueryable;)V @@ -6829,6 +7111,7 @@ HSPLandroid/hardware/camera2/params/MandatoryStreamCombination$StreamTemplate;-> PLandroid/hardware/camera2/utils/ArrayUtils;->contains([Ljava/lang/Object;Ljava/lang/Object;)Z HSPLandroid/hardware/camera2/utils/TypeReference;-><init>()V HSPLandroid/hardware/camera2/utils/TypeReference;->containsTypeVariable(Ljava/lang/reflect/Type;)Z +HSPLandroid/hardware/camera2/utils/TypeReference;->equals(Ljava/lang/Object;)Z HSPLandroid/hardware/camera2/utils/TypeReference;->getRawType(Ljava/lang/reflect/Type;)Ljava/lang/Class; HSPLandroid/hardware/camera2/utils/TypeReference;->getType()Ljava/lang/reflect/Type; HSPLandroid/hardware/camera2/utils/TypeReference;->hashCode()I @@ -6841,11 +7124,11 @@ HSPLandroid/hardware/contexthub/V1_0/HubAppInfo;->readEmbeddedFromParcel(Landroi HSPLandroid/hardware/contexthub/V1_0/HubAppInfo;->readVectorFromParcel(Landroid/os/HwParcel;)Ljava/util/ArrayList; HSPLandroid/hardware/contexthub/V1_0/IContexthub$Proxy;->getHubs()Ljava/util/ArrayList; HSPLandroid/hardware/contexthub/V1_0/IContexthub$Proxy;->interfaceChain()Ljava/util/ArrayList; -PLandroid/hardware/contexthub/V1_0/IContexthub$Proxy;->loadNanoApp(ILandroid/hardware/contexthub/V1_0/NanoAppBinary;I)I +HPLandroid/hardware/contexthub/V1_0/IContexthub$Proxy;->loadNanoApp(ILandroid/hardware/contexthub/V1_0/NanoAppBinary;I)I HSPLandroid/hardware/contexthub/V1_0/IContexthub$Proxy;->queryApps(I)I HSPLandroid/hardware/contexthub/V1_0/IContexthub$Proxy;->registerCallback(ILandroid/hardware/contexthub/V1_0/IContexthubCallback;)I HSPLandroid/hardware/contexthub/V1_0/IContexthub$Proxy;->sendMessageToHub(ILandroid/hardware/contexthub/V1_0/ContextHubMsg;)I -PLandroid/hardware/contexthub/V1_0/IContexthub$Proxy;->unloadNanoApp(IJI)I +HPLandroid/hardware/contexthub/V1_0/IContexthub$Proxy;->unloadNanoApp(IJI)I HSPLandroid/hardware/contexthub/V1_0/IContexthub;->asInterface(Landroid/os/IHwBinder;)Landroid/hardware/contexthub/V1_0/IContexthub; HSPLandroid/hardware/contexthub/V1_0/IContexthub;->getService(Z)Landroid/hardware/contexthub/V1_0/IContexthub; HSPLandroid/hardware/contexthub/V1_0/IContexthubCallback$Stub;-><init>()V @@ -6858,10 +7141,11 @@ HSPLandroid/hardware/display/AmbientBrightnessDayStats;-><init>(Ljava/time/Local HSPLandroid/hardware/display/AmbientBrightnessDayStats;-><init>(Ljava/time/LocalDate;[F[F)V HSPLandroid/hardware/display/AmbientBrightnessDayStats;->getBucketIndex(F)I HSPLandroid/hardware/display/AmbientBrightnessDayStats;->log(FF)V -PLandroid/hardware/display/AmbientBrightnessDayStats;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/hardware/display/AmbientBrightnessDayStats;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/hardware/display/AmbientDisplayConfiguration;-><init>(Landroid/content/Context;)V HSPLandroid/hardware/display/AmbientDisplayConfiguration;->accessibilityInversionEnabled(I)Z HSPLandroid/hardware/display/AmbientDisplayConfiguration;->alwaysOnAvailable()Z +HSPLandroid/hardware/display/AmbientDisplayConfiguration;->alwaysOnAvailableForUser(I)Z HSPLandroid/hardware/display/AmbientDisplayConfiguration;->alwaysOnEnabled(I)Z HSPLandroid/hardware/display/AmbientDisplayConfiguration;->ambientDisplayAvailable()Z HSPLandroid/hardware/display/AmbientDisplayConfiguration;->ambientDisplayComponent()Ljava/lang/String; @@ -6870,6 +7154,8 @@ HSPLandroid/hardware/display/AmbientDisplayConfiguration;->doubleTapSensorAvaila HSPLandroid/hardware/display/AmbientDisplayConfiguration;->doubleTapSensorType()Ljava/lang/String; HSPLandroid/hardware/display/AmbientDisplayConfiguration;->dozePickupSensorAvailable()Z HSPLandroid/hardware/display/AmbientDisplayConfiguration;->enabled(I)Z +HSPLandroid/hardware/display/AmbientDisplayConfiguration;->longPressSensorType()Ljava/lang/String; +HSPLandroid/hardware/display/AmbientDisplayConfiguration;->pickupGestureEnabled(I)Z HSPLandroid/hardware/display/AmbientDisplayConfiguration;->pulseOnNotificationAvailable()Z HSPLandroid/hardware/display/AmbientDisplayConfiguration;->pulseOnNotificationEnabled(I)Z HSPLandroid/hardware/display/AmbientDisplayConfiguration;->tapSensorAvailable()Z @@ -6880,9 +7166,10 @@ HSPLandroid/hardware/display/BrightnessChangeEvent$Builder;-><init>()V HSPLandroid/hardware/display/BrightnessChangeEvent$Builder;->build()Landroid/hardware/display/BrightnessChangeEvent; HSPLandroid/hardware/display/BrightnessChangeEvent$Builder;->setColorValues([JJ)Landroid/hardware/display/BrightnessChangeEvent$Builder; HSPLandroid/hardware/display/BrightnessChangeEvent;-><init>(FJLjava/lang/String;I[F[JFFZIFZZ[JJ)V +HPLandroid/hardware/display/BrightnessChangeEvent;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/hardware/display/BrightnessConfiguration$1;-><init>()V -PLandroid/hardware/display/BrightnessConfiguration$1;->createFromParcel(Landroid/os/Parcel;)Landroid/hardware/display/BrightnessConfiguration; -PLandroid/hardware/display/BrightnessConfiguration$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/hardware/display/BrightnessConfiguration$1;->createFromParcel(Landroid/os/Parcel;)Landroid/hardware/display/BrightnessConfiguration; +HPLandroid/hardware/display/BrightnessConfiguration$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/hardware/display/BrightnessConfiguration$Builder;-><init>([F[F)V HSPLandroid/hardware/display/BrightnessConfiguration$Builder;->addCorrectionByCategory(ILandroid/hardware/display/BrightnessCorrection;)Landroid/hardware/display/BrightnessConfiguration$Builder; HSPLandroid/hardware/display/BrightnessConfiguration$Builder;->addCorrectionByPackageName(Ljava/lang/String;Landroid/hardware/display/BrightnessCorrection;)Landroid/hardware/display/BrightnessConfiguration$Builder; @@ -6891,12 +7178,15 @@ HSPLandroid/hardware/display/BrightnessConfiguration$Builder;->checkMonotonic([F HSPLandroid/hardware/display/BrightnessConfiguration$Builder;->getMaxCorrectionsByCategory()I HSPLandroid/hardware/display/BrightnessConfiguration$Builder;->getMaxCorrectionsByPackageName()I HSPLandroid/hardware/display/BrightnessConfiguration;->equals(Ljava/lang/Object;)Z -PLandroid/hardware/display/BrightnessConfiguration;->getCorrectionByCategory(I)Landroid/hardware/display/BrightnessCorrection; +HPLandroid/hardware/display/BrightnessConfiguration;->getCorrectionByCategory(I)Landroid/hardware/display/BrightnessCorrection; HSPLandroid/hardware/display/BrightnessConfiguration;->getCorrectionByPackageName(Ljava/lang/String;)Landroid/hardware/display/BrightnessCorrection; HSPLandroid/hardware/display/BrightnessConfiguration;->getCurve()Landroid/util/Pair; HSPLandroid/hardware/display/BrightnessConfiguration;->loadFloatFromXml(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)F HSPLandroid/hardware/display/BrightnessConfiguration;->loadFromXml(Lorg/xmlpull/v1/XmlPullParser;)Landroid/hardware/display/BrightnessConfiguration; +HPLandroid/hardware/display/BrightnessConfiguration;->saveToXml(Lorg/xmlpull/v1/XmlSerializer;)V HSPLandroid/hardware/display/BrightnessCorrection$1;-><init>()V +HPLandroid/hardware/display/BrightnessCorrection$1;->createFromParcel(Landroid/os/Parcel;)Landroid/hardware/display/BrightnessCorrection; +HPLandroid/hardware/display/BrightnessCorrection$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/hardware/display/BrightnessCorrection$ScaleAndTranslateLog;-><init>(FF)V HSPLandroid/hardware/display/BrightnessCorrection$ScaleAndTranslateLog;->apply(F)F HSPLandroid/hardware/display/BrightnessCorrection;->apply(F)F @@ -6950,7 +7240,7 @@ HSPLandroid/hardware/display/IDisplayManager$Stub$Proxy;->getPreferredWideGamutC HSPLandroid/hardware/display/IDisplayManager$Stub$Proxy;->getWifiDisplayStatus()Landroid/hardware/display/WifiDisplayStatus; HSPLandroid/hardware/display/IDisplayManager$Stub$Proxy;->registerCallback(Landroid/hardware/display/IDisplayManagerCallback;)V HSPLandroid/hardware/display/IDisplayManager$Stub;-><init>()V -PLandroid/hardware/display/IDisplayManager$Stub;->getDefaultTransactionName(I)Ljava/lang/String; +HPLandroid/hardware/display/IDisplayManager$Stub;->getDefaultTransactionName(I)Ljava/lang/String; HSPLandroid/hardware/display/IDisplayManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HSPLandroid/hardware/display/IDisplayManagerCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V HSPLandroid/hardware/display/IDisplayManagerCallback$Stub$Proxy;->asBinder()Landroid/os/IBinder; @@ -6978,8 +7268,10 @@ HSPLandroid/hardware/display/WifiDisplayStatus;->writeToParcel(Landroid/os/Parce HSPLandroid/hardware/fingerprint/Fingerprint$1;-><init>()V HSPLandroid/hardware/fingerprint/Fingerprint;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/hardware/fingerprint/FingerprintManager;-><init>(Landroid/content/Context;Landroid/hardware/fingerprint/IFingerprintService;)V +HSPLandroid/hardware/fingerprint/FingerprintManager;->getAcquiredString(Landroid/content/Context;II)Ljava/lang/String; HSPLandroid/hardware/fingerprint/FingerprintManager;->getEnrolledFingerprints(I)Ljava/util/List; HSPLandroid/hardware/fingerprint/FingerprintManager;->isHardwareDetected()Z +HSPLandroid/hardware/fingerprint/IFingerprintService$Stub$Proxy;->getEnrolledFingerprints(ILjava/lang/String;)Ljava/util/List; HSPLandroid/hardware/fingerprint/IFingerprintService$Stub$Proxy;->isHardwareDetected(JLjava/lang/String;)Z HSPLandroid/hardware/fingerprint/IFingerprintService$Stub;-><init>()V HSPLandroid/hardware/fingerprint/IFingerprintService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/fingerprint/IFingerprintService; @@ -7002,9 +7294,11 @@ HSPLandroid/hardware/input/InputDeviceIdentifier$1;-><init>()V HSPLandroid/hardware/input/InputDeviceIdentifier;-><init>(Ljava/lang/String;II)V HSPLandroid/hardware/input/InputManager$InputDevicesChangedListener;->onInputDevicesChanged([I)V HSPLandroid/hardware/input/InputManager;->getInputDevice(I)Landroid/view/InputDevice; +HSPLandroid/hardware/input/InputManager;->getInputDeviceIds()[I HSPLandroid/hardware/input/InputManager;->getInstance()Landroid/hardware/input/InputManager; HSPLandroid/hardware/input/InputManager;->onInputDevicesChanged([I)V HSPLandroid/hardware/input/InputManager;->populateInputDevicesLocked()V +HSPLandroid/hardware/input/InputManager;->registerInputDeviceListener(Landroid/hardware/input/InputManager$InputDeviceListener;Landroid/os/Handler;)V HSPLandroid/hardware/input/KeyboardLayout$1;-><init>()V HSPLandroid/hardware/input/TouchCalibration$1;-><init>()V HSPLandroid/hardware/input/TouchCalibration;-><init>()V @@ -7099,7 +7393,7 @@ HSPLandroid/hardware/location/NanoAppInstanceInfo;->getAppId()J HSPLandroid/hardware/location/NanoAppInstanceInfo;->getAppVersion()I HSPLandroid/hardware/location/NanoAppInstanceInfo;->getContexthubId()I HSPLandroid/hardware/location/NanoAppInstanceInfo;->getHandle()I -PLandroid/hardware/location/NanoAppInstanceInfo;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/hardware/location/NanoAppInstanceInfo;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/hardware/location/NanoAppMessage$1;-><init>()V HSPLandroid/hardware/location/NanoAppMessage$1;->createFromParcel(Landroid/os/Parcel;)Landroid/hardware/location/NanoAppMessage; HSPLandroid/hardware/location/NanoAppMessage$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; @@ -7199,8 +7493,10 @@ HSPLandroid/hardware/radio/V1_3/IRadio$Proxy;->getRadioCapability(I)V HSPLandroid/hardware/radio/V1_3/IRadio$Proxy;->getSignalStrength(I)V HSPLandroid/hardware/radio/V1_3/IRadio$Proxy;->getVoiceRadioTechnology(I)V HSPLandroid/hardware/radio/V1_3/IRadio$Proxy;->getVoiceRegistrationState(I)V +HSPLandroid/hardware/radio/V1_3/IRadio$Proxy;->iccCloseLogicalChannel(II)V HSPLandroid/hardware/radio/V1_3/IRadio$Proxy;->iccIOForApp(ILandroid/hardware/radio/V1_0/IccIo;)V HSPLandroid/hardware/radio/V1_3/IRadio$Proxy;->iccOpenLogicalChannel(ILjava/lang/String;I)V +HSPLandroid/hardware/radio/V1_3/IRadio$Proxy;->iccTransmitApduLogicalChannel(ILandroid/hardware/radio/V1_0/SimApdu;)V HSPLandroid/hardware/radio/V1_3/IRadio$Proxy;->interfaceChain()Ljava/util/ArrayList; HSPLandroid/hardware/radio/V1_3/IRadio$Proxy;->linkToDeath(Landroid/os/IHwBinder$DeathRecipient;J)Z HSPLandroid/hardware/radio/V1_3/IRadio$Proxy;->reportStkServiceIsRunning(I)V @@ -7252,39 +7548,42 @@ HSPLandroid/hardware/soundtrigger/IRecognitionStatusCallback$Stub;-><init>()V HSPLandroid/hardware/soundtrigger/IRecognitionStatusCallback$Stub;->asBinder()Landroid/os/IBinder; PLandroid/hardware/soundtrigger/IRecognitionStatusCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/soundtrigger/IRecognitionStatusCallback; HSPLandroid/hardware/soundtrigger/SoundTrigger$ConfidenceLevel$1;-><init>()V -PLandroid/hardware/soundtrigger/SoundTrigger$ConfidenceLevel$1;->newArray(I)[Landroid/hardware/soundtrigger/SoundTrigger$ConfidenceLevel; -PLandroid/hardware/soundtrigger/SoundTrigger$ConfidenceLevel$1;->newArray(I)[Ljava/lang/Object; +HPLandroid/hardware/soundtrigger/SoundTrigger$ConfidenceLevel$1;->newArray(I)[Landroid/hardware/soundtrigger/SoundTrigger$ConfidenceLevel; +HPLandroid/hardware/soundtrigger/SoundTrigger$ConfidenceLevel$1;->newArray(I)[Ljava/lang/Object; HSPLandroid/hardware/soundtrigger/SoundTrigger$GenericRecognitionEvent$1;-><init>()V -PLandroid/hardware/soundtrigger/SoundTrigger$GenericRecognitionEvent;-><init>(IIZIIIZLandroid/media/AudioFormat;[B)V +HPLandroid/hardware/soundtrigger/SoundTrigger$GenericRecognitionEvent;-><init>(IIZIIIZLandroid/media/AudioFormat;[B)V +HPLandroid/hardware/soundtrigger/SoundTrigger$GenericRecognitionEvent;->toString()Ljava/lang/String; HSPLandroid/hardware/soundtrigger/SoundTrigger$GenericSoundModel$1;-><init>()V -PLandroid/hardware/soundtrigger/SoundTrigger$GenericSoundModel$1;->createFromParcel(Landroid/os/Parcel;)Landroid/hardware/soundtrigger/SoundTrigger$GenericSoundModel; -PLandroid/hardware/soundtrigger/SoundTrigger$GenericSoundModel$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; -PLandroid/hardware/soundtrigger/SoundTrigger$GenericSoundModel;->fromParcel(Landroid/os/Parcel;)Landroid/hardware/soundtrigger/SoundTrigger$GenericSoundModel; +HPLandroid/hardware/soundtrigger/SoundTrigger$GenericSoundModel$1;->createFromParcel(Landroid/os/Parcel;)Landroid/hardware/soundtrigger/SoundTrigger$GenericSoundModel; +HPLandroid/hardware/soundtrigger/SoundTrigger$GenericSoundModel$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/hardware/soundtrigger/SoundTrigger$GenericSoundModel;->fromParcel(Landroid/os/Parcel;)Landroid/hardware/soundtrigger/SoundTrigger$GenericSoundModel; HSPLandroid/hardware/soundtrigger/SoundTrigger$Keyphrase$1;-><init>()V -PLandroid/hardware/soundtrigger/SoundTrigger$Keyphrase;->equals(Ljava/lang/Object;)Z +HPLandroid/hardware/soundtrigger/SoundTrigger$Keyphrase;->equals(Ljava/lang/Object;)Z HSPLandroid/hardware/soundtrigger/SoundTrigger$KeyphraseRecognitionEvent$1;-><init>()V -PLandroid/hardware/soundtrigger/SoundTrigger$KeyphraseRecognitionEvent;-><init>(IIZIIIZLandroid/media/AudioFormat;[B[Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseRecognitionExtra;)V -PLandroid/hardware/soundtrigger/SoundTrigger$KeyphraseRecognitionEvent;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/hardware/soundtrigger/SoundTrigger$KeyphraseRecognitionEvent;-><init>(IIZIIIZLandroid/media/AudioFormat;[B[Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseRecognitionExtra;)V +HPLandroid/hardware/soundtrigger/SoundTrigger$KeyphraseRecognitionEvent;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/hardware/soundtrigger/SoundTrigger$KeyphraseRecognitionExtra$1;-><init>()V -PLandroid/hardware/soundtrigger/SoundTrigger$KeyphraseRecognitionExtra$1;->createFromParcel(Landroid/os/Parcel;)Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseRecognitionExtra; -PLandroid/hardware/soundtrigger/SoundTrigger$KeyphraseRecognitionExtra$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; -PLandroid/hardware/soundtrigger/SoundTrigger$KeyphraseRecognitionExtra$1;->newArray(I)[Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseRecognitionExtra; -PLandroid/hardware/soundtrigger/SoundTrigger$KeyphraseRecognitionExtra$1;->newArray(I)[Ljava/lang/Object; +HPLandroid/hardware/soundtrigger/SoundTrigger$KeyphraseRecognitionExtra$1;->createFromParcel(Landroid/os/Parcel;)Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseRecognitionExtra; +HPLandroid/hardware/soundtrigger/SoundTrigger$KeyphraseRecognitionExtra$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/hardware/soundtrigger/SoundTrigger$KeyphraseRecognitionExtra$1;->newArray(I)[Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseRecognitionExtra; +HPLandroid/hardware/soundtrigger/SoundTrigger$KeyphraseRecognitionExtra$1;->newArray(I)[Ljava/lang/Object; HSPLandroid/hardware/soundtrigger/SoundTrigger$KeyphraseRecognitionExtra;-><init>(III[Landroid/hardware/soundtrigger/SoundTrigger$ConfidenceLevel;)V HSPLandroid/hardware/soundtrigger/SoundTrigger$KeyphraseRecognitionExtra;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/hardware/soundtrigger/SoundTrigger$KeyphraseSoundModel$1;-><init>()V -PLandroid/hardware/soundtrigger/SoundTrigger$KeyphraseSoundModel;->equals(Ljava/lang/Object;)Z +HPLandroid/hardware/soundtrigger/SoundTrigger$KeyphraseSoundModel;->equals(Ljava/lang/Object;)Z HSPLandroid/hardware/soundtrigger/SoundTrigger$ModuleProperties$1;-><init>()V HSPLandroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;-><init>(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;IIIIIZIZIZ)V -PLandroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/hardware/soundtrigger/SoundTrigger$RecognitionConfig$1;-><init>()V -PLandroid/hardware/soundtrigger/SoundTrigger$RecognitionConfig$1;->createFromParcel(Landroid/os/Parcel;)Landroid/hardware/soundtrigger/SoundTrigger$RecognitionConfig; -PLandroid/hardware/soundtrigger/SoundTrigger$RecognitionConfig$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; -PLandroid/hardware/soundtrigger/SoundTrigger$RecognitionConfig;->fromParcel(Landroid/os/Parcel;)Landroid/hardware/soundtrigger/SoundTrigger$RecognitionConfig; +HPLandroid/hardware/soundtrigger/SoundTrigger$RecognitionConfig$1;->createFromParcel(Landroid/os/Parcel;)Landroid/hardware/soundtrigger/SoundTrigger$RecognitionConfig; +HPLandroid/hardware/soundtrigger/SoundTrigger$RecognitionConfig$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/hardware/soundtrigger/SoundTrigger$RecognitionConfig;->fromParcel(Landroid/os/Parcel;)Landroid/hardware/soundtrigger/SoundTrigger$RecognitionConfig; HSPLandroid/hardware/soundtrigger/SoundTrigger$RecognitionEvent$1;-><init>()V -PLandroid/hardware/soundtrigger/SoundTrigger$SoundModel;->equals(Ljava/lang/Object;)Z +HPLandroid/hardware/soundtrigger/SoundTrigger$RecognitionEvent;->toString()Ljava/lang/String; +HPLandroid/hardware/soundtrigger/SoundTrigger$RecognitionEvent;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/hardware/soundtrigger/SoundTrigger$SoundModel;->equals(Ljava/lang/Object;)Z HSPLandroid/hardware/soundtrigger/SoundTrigger$SoundModelEvent$1;-><init>()V -PLandroid/hardware/soundtrigger/SoundTrigger;->attachModule(ILandroid/hardware/soundtrigger/SoundTrigger$StatusListener;Landroid/os/Handler;)Landroid/hardware/soundtrigger/SoundTriggerModule; +HPLandroid/hardware/soundtrigger/SoundTrigger;->attachModule(ILandroid/hardware/soundtrigger/SoundTrigger$StatusListener;Landroid/os/Handler;)Landroid/hardware/soundtrigger/SoundTriggerModule; PLandroid/hardware/soundtrigger/SoundTriggerModule$NativeEventHandlerDelegate$1;->handleMessage(Landroid/os/Message;)V PLandroid/hardware/soundtrigger/SoundTriggerModule$NativeEventHandlerDelegate;->handler()Landroid/os/Handler; HPLandroid/hardware/soundtrigger/SoundTriggerModule;->postEventFromNative(Ljava/lang/Object;IIILjava/lang/Object;)V @@ -7300,6 +7599,7 @@ HSPLandroid/hardware/thermal/V2_0/IThermalChangedCallback$Stub;->asBinder()Landr HSPLandroid/hardware/thermal/V2_0/IThermalChangedCallback$Stub;->onTransact(ILandroid/os/HwParcel;Landroid/os/HwParcel;I)V HSPLandroid/hardware/thermal/V2_0/Temperature;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V HSPLandroid/hardware/thermal/V2_0/Temperature;->readVectorFromParcel(Landroid/os/HwParcel;)Ljava/util/ArrayList; +HSPLandroid/hardware/usb/IUsbManager$Stub$Proxy;->getDeviceList(Landroid/os/Bundle;)V HSPLandroid/hardware/usb/IUsbManager$Stub;-><init>()V HSPLandroid/hardware/usb/IUsbManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HSPLandroid/hardware/usb/ParcelableUsbPort$1;-><init>()V @@ -7551,8 +7851,11 @@ HSPLandroid/icu/impl/ICUService;->isDefault()Z HSPLandroid/icu/impl/ICUService;->markDefault()V HSPLandroid/icu/impl/ICUService;->registerFactory(Landroid/icu/impl/ICUService$Factory;)Landroid/icu/impl/ICUService$Factory; HSPLandroid/icu/impl/IDNA2003;->convertIDNToASCII(Ljava/lang/String;I)Ljava/lang/StringBuffer; +HSPLandroid/icu/impl/IDNA2003;->convertIDNToUnicode(Ljava/lang/String;I)Ljava/lang/StringBuffer; HSPLandroid/icu/impl/IDNA2003;->convertToASCII(Landroid/icu/text/UCharacterIterator;I)Ljava/lang/StringBuffer; +HSPLandroid/icu/impl/IDNA2003;->convertToUnicode(Landroid/icu/text/UCharacterIterator;I)Ljava/lang/StringBuffer; HSPLandroid/icu/impl/IDNA2003;->isLDHChar(I)Z +HSPLandroid/icu/impl/IDNA2003;->startsWithPrefix(Ljava/lang/StringBuffer;)Z HSPLandroid/icu/impl/JavaTimeZone;->clone()Ljava/lang/Object; HSPLandroid/icu/impl/JavaTimeZone;->getOffset(JZ[I)V HSPLandroid/icu/impl/JavaTimeZone;->hashCode()I @@ -7578,6 +7881,7 @@ HSPLandroid/icu/impl/Normalizer2Impl$1;-><init>()V HSPLandroid/icu/impl/Normalizer2Impl$IsAcceptable;-><init>(Landroid/icu/impl/Normalizer2Impl$1;)V HSPLandroid/icu/impl/Normalizer2Impl$IsAcceptable;->isDataVersionAcceptable([B)Z HSPLandroid/icu/impl/Normalizer2Impl;->addLcccChars(Landroid/icu/text/UnicodeSet;)V +HSPLandroid/icu/impl/Normalizer2Impl;->composeQuickCheck(Ljava/lang/CharSequence;IIZZ)I HSPLandroid/icu/impl/Normalizer2Impl;->decompose(Ljava/lang/CharSequence;IILandroid/icu/impl/Normalizer2Impl$ReorderingBuffer;)I HSPLandroid/icu/impl/Normalizer2Impl;->getFCD16FromNormData(I)I HSPLandroid/icu/impl/Normalizer2Impl;->load(Ljava/nio/ByteBuffer;)Landroid/icu/impl/Normalizer2Impl; @@ -7610,6 +7914,7 @@ HSPLandroid/icu/impl/RBBIDataWrapper$IsAcceptable;-><init>(Landroid/icu/impl/RBB HSPLandroid/icu/impl/RBBIDataWrapper$IsAcceptable;->isDataVersionAcceptable([B)Z HSPLandroid/icu/impl/RBBIDataWrapper$RBBIStateTable;->get(Ljava/nio/ByteBuffer;I)Landroid/icu/impl/RBBIDataWrapper$RBBIStateTable; HSPLandroid/icu/impl/RBBIDataWrapper;->get(Ljava/nio/ByteBuffer;)Landroid/icu/impl/RBBIDataWrapper; +HSPLandroid/icu/impl/ReplaceableUCharacterIterator;->getIndex()I HSPLandroid/icu/impl/ReplaceableUCharacterIterator;->getLength()I HSPLandroid/icu/impl/ReplaceableUCharacterIterator;->getText([CI)I HSPLandroid/icu/impl/ReplaceableUCharacterIterator;->next()I @@ -7630,6 +7935,7 @@ HSPLandroid/icu/impl/SimpleCache;->put(Ljava/lang/Object;Ljava/lang/Object;)V HSPLandroid/icu/impl/SimpleFormatterImpl;->compileToStringMinMaxArguments(Ljava/lang/CharSequence;Ljava/lang/StringBuilder;II)Ljava/lang/String; HSPLandroid/icu/impl/SimpleFormatterImpl;->format(Ljava/lang/String;[Ljava/lang/CharSequence;Ljava/lang/StringBuilder;Ljava/lang/String;Z[I)Ljava/lang/StringBuilder; HSPLandroid/icu/impl/SimpleFormatterImpl;->formatAndReplace(Ljava/lang/String;Ljava/lang/StringBuilder;[I[Ljava/lang/CharSequence;)Ljava/lang/StringBuilder; +HSPLandroid/icu/impl/SimpleFormatterImpl;->formatCompiledPattern(Ljava/lang/String;[Ljava/lang/CharSequence;)Ljava/lang/String; HSPLandroid/icu/impl/SimpleFormatterImpl;->getArgumentLimit(Ljava/lang/String;)I HSPLandroid/icu/impl/SoftCache;->getInstance(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; HSPLandroid/icu/impl/StandardPlural;-><init>(Ljava/lang/String;ILjava/lang/String;)V @@ -7768,6 +8074,7 @@ HSPLandroid/icu/impl/coll/CollationFastLatin;->compareUTF16([C[CILjava/lang/Char HSPLandroid/icu/impl/coll/CollationFastLatin;->getOptions(Landroid/icu/impl/coll/CollationData;Landroid/icu/impl/coll/CollationSettings;[C)I HSPLandroid/icu/impl/coll/CollationLoader;->loadTailoring(Landroid/icu/util/ULocale;Landroid/icu/util/Output;)Landroid/icu/impl/coll/CollationTailoring; HSPLandroid/icu/impl/coll/CollationSettings;->clone()Landroid/icu/impl/coll/SharedObject; +HSPLandroid/icu/impl/coll/CollationSettings;->setStrength(I)V HSPLandroid/icu/impl/coll/CollationTailoring;-><init>(Landroid/icu/impl/coll/SharedObject$Reference;)V HSPLandroid/icu/impl/coll/CollationTailoring;->ensureOwnedData()V HSPLandroid/icu/impl/coll/SharedObject$Reference;->clone()Landroid/icu/impl/coll/SharedObject$Reference; @@ -7956,6 +8263,7 @@ HSPLandroid/icu/impl/number/PropertiesAffixPatternProvider;->length(I)I HSPLandroid/icu/impl/number/PropertiesAffixPatternProvider;->negativeHasMinusSign()Z HSPLandroid/icu/impl/number/RoundingUtils;->getMathContextOrUnlimited(Landroid/icu/impl/number/DecimalFormatProperties;)Ljava/math/MathContext; HSPLandroid/icu/impl/number/RoundingUtils;->scaleFromProperties(Landroid/icu/impl/number/DecimalFormatProperties;)Landroid/icu/number/Scale; +HSPLandroid/icu/lang/UCharacter;->codePointAt(Ljava/lang/CharSequence;I)I HSPLandroid/icu/lang/UCharacter;->getIntPropertyMaxValue(I)I HSPLandroid/icu/lang/UCharacter;->getPropertyEnum(Ljava/lang/CharSequence;)I HSPLandroid/icu/lang/UCharacter;->getPropertyValueEnum(ILjava/lang/CharSequence;)I @@ -8022,6 +8330,7 @@ HSPLandroid/icu/text/BreakIterator;->clone()Ljava/lang/Object; HSPLandroid/icu/text/BreakIterator;->getBreakInstance(Landroid/icu/util/ULocale;I)Landroid/icu/text/BreakIterator; HSPLandroid/icu/text/BreakIterator;->getShim()Landroid/icu/text/BreakIterator$BreakIteratorServiceShim; HSPLandroid/icu/text/BreakIterator;->getWordInstance(Ljava/util/Locale;)Landroid/icu/text/BreakIterator; +HSPLandroid/icu/text/BreakIterator;->setText(Ljava/lang/String;)V HSPLandroid/icu/text/BreakIteratorFactory$BFService;-><init>()V HSPLandroid/icu/text/BreakIteratorFactory;-><init>()V HSPLandroid/icu/text/BreakIteratorFactory;->createBreakInstance(Landroid/icu/util/ULocale;I)Landroid/icu/text/BreakIterator; @@ -8049,6 +8358,7 @@ HSPLandroid/icu/text/DateFormat;->format(Ljava/util/Date;Ljava/lang/StringBuffer HSPLandroid/icu/text/DateFormat;->get(IILandroid/icu/util/ULocale;Landroid/icu/util/Calendar;)Landroid/icu/text/DateFormat; HSPLandroid/icu/text/DateFormat;->getCalendar()Landroid/icu/util/Calendar; HSPLandroid/icu/text/DateFormat;->getContext(Landroid/icu/text/DisplayContext$Type;)Landroid/icu/text/DisplayContext; +HSPLandroid/icu/text/DateFormat;->getInstanceForSkeleton(Ljava/lang/String;)Landroid/icu/text/DateFormat; HSPLandroid/icu/text/DateFormat;->setCalendar(Landroid/icu/util/Calendar;)V HSPLandroid/icu/text/DateFormat;->setTimeZone(Landroid/icu/util/TimeZone;)V HSPLandroid/icu/text/DateFormatSymbols$1;-><init>()V @@ -8159,6 +8469,7 @@ HSPLandroid/icu/text/DateTimePatternGenerator;->mapSkeletonMetacharacters(Ljava/ HSPLandroid/icu/text/DateTimePatternGenerator;->setAppendItemFormat(ILjava/lang/String;)V HSPLandroid/icu/text/DecimalFormat;-><init>(Ljava/lang/String;Landroid/icu/text/DecimalFormatSymbols;I)V HSPLandroid/icu/text/DecimalFormat;->clone()Ljava/lang/Object; +HSPLandroid/icu/text/DecimalFormat;->format(DLjava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer; HSPLandroid/icu/text/DecimalFormat;->refreshFormatter()V HSPLandroid/icu/text/DecimalFormat;->setPropertiesFromPattern(Ljava/lang/String;I)V HSPLandroid/icu/text/DecimalFormatSymbols$1;-><init>()V @@ -8285,6 +8596,7 @@ HSPLandroid/icu/text/Edits;-><init>()V HSPLandroid/icu/text/Edits;->addReplace(II)V HSPLandroid/icu/text/Edits;->addUnchanged(I)V HSPLandroid/icu/text/IDNA;->convertIDNToASCII(Ljava/lang/String;I)Ljava/lang/StringBuffer; +HSPLandroid/icu/text/IDNA;->convertIDNToUnicode(Ljava/lang/String;I)Ljava/lang/StringBuffer; HSPLandroid/icu/text/ListFormatter$Cache;-><init>(Landroid/icu/text/ListFormatter$1;)V HSPLandroid/icu/text/ListFormatter$Cache;->get(Landroid/icu/util/ULocale;Ljava/lang/String;)Landroid/icu/text/ListFormatter; HSPLandroid/icu/text/ListFormatter$Cache;->load(Landroid/icu/util/ULocale;Ljava/lang/String;)Landroid/icu/text/ListFormatter; @@ -8295,17 +8607,20 @@ HSPLandroid/icu/text/Normalizer$FCDMode;-><init>(Landroid/icu/text/Normalizer$1; HSPLandroid/icu/text/Normalizer$ModeImpl;-><init>(Landroid/icu/text/Normalizer2;Landroid/icu/text/Normalizer$1;)V HSPLandroid/icu/text/Normalizer$NFCMode;-><init>(Landroid/icu/text/Normalizer$1;)V HSPLandroid/icu/text/Normalizer$NFDMode;-><init>(Landroid/icu/text/Normalizer$1;)V +HSPLandroid/icu/text/Normalizer$NFDMode;->getNormalizer2(I)Landroid/icu/text/Normalizer2; HSPLandroid/icu/text/Normalizer$NFKCMode;-><init>(Landroid/icu/text/Normalizer$1;)V HSPLandroid/icu/text/Normalizer$NFKDMode;-><init>(Landroid/icu/text/Normalizer$1;)V HSPLandroid/icu/text/Normalizer$NFKDMode;->getNormalizer2(I)Landroid/icu/text/Normalizer2; HSPLandroid/icu/text/Normalizer$NONEMode;-><init>(Landroid/icu/text/Normalizer$1;)V HSPLandroid/icu/text/Normalizer$QuickCheckResult;-><init>(ILandroid/icu/text/Normalizer$1;)V +HSPLandroid/icu/text/Normalizer2;->getNFDInstance()Landroid/icu/text/Normalizer2; HSPLandroid/icu/text/Normalizer2;->getNFKDInstance()Landroid/icu/text/Normalizer2; HSPLandroid/icu/text/Normalizer2;->normalize(Ljava/lang/CharSequence;)Ljava/lang/String; HSPLandroid/icu/text/Normalizer;->normalize(Ljava/lang/String;Landroid/icu/text/Normalizer$Mode;)Ljava/lang/String; HSPLandroid/icu/text/NumberFormat$Field;-><init>(Ljava/lang/String;)V HSPLandroid/icu/text/NumberFormat;-><init>()V HSPLandroid/icu/text/NumberFormat;->createInstance(Landroid/icu/util/ULocale;I)Landroid/icu/text/NumberFormat; +HSPLandroid/icu/text/NumberFormat;->format(Ljava/lang/Object;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer; HSPLandroid/icu/text/NumberFormat;->getMaximumFractionDigits()I HSPLandroid/icu/text/NumberFormat;->getMaximumIntegerDigits()I HSPLandroid/icu/text/NumberFormat;->getMinimumFractionDigits()I @@ -8377,6 +8692,19 @@ HSPLandroid/icu/text/PluralRules;->parseRule(Ljava/lang/String;)Landroid/icu/tex HSPLandroid/icu/text/PluralRules;->parseRuleChain(Ljava/lang/String;)Landroid/icu/text/PluralRules$RuleList; HSPLandroid/icu/text/PluralRules;->select(D)Ljava/lang/String; HSPLandroid/icu/text/PluralRules;->select(Landroid/icu/text/PluralRules$IFixedDecimal;)Ljava/lang/String; +HSPLandroid/icu/text/RelativeDateTimeFormatter$Cache$1;->createInstance(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroid/icu/text/RelativeDateTimeFormatter$Cache$1;->createInstance(Ljava/lang/String;Landroid/icu/util/ULocale;)Landroid/icu/text/RelativeDateTimeFormatter$RelativeDateTimeFormatterData; +HSPLandroid/icu/text/RelativeDateTimeFormatter$Cache;-><init>(Landroid/icu/text/RelativeDateTimeFormatter$1;)V +HSPLandroid/icu/text/RelativeDateTimeFormatter$Cache;->get(Landroid/icu/util/ULocale;)Landroid/icu/text/RelativeDateTimeFormatter$RelativeDateTimeFormatterData; +HSPLandroid/icu/text/RelativeDateTimeFormatter$Loader;->getDateTimePattern(Landroid/icu/impl/ICUResourceBundle;)Ljava/lang/String; +HSPLandroid/icu/text/RelativeDateTimeFormatter$Loader;->load()Landroid/icu/text/RelativeDateTimeFormatter$RelativeDateTimeFormatterData; +HSPLandroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink;->consumeTableRelative(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;)V +HSPLandroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink;->consumeTableRelativeTime(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;)V +HSPLandroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink;->consumeTimeDetail(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;)V +HSPLandroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink;->consumeTimeUnit(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;)V +HSPLandroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink;->handleAlias(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;Z)V +HSPLandroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink;->handlePlainDirection(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;)V +HSPLandroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink;->put(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;Z)V HSPLandroid/icu/text/ReplaceableString;->charAt(I)C HSPLandroid/icu/text/ReplaceableString;->getChars(II[CI)V HSPLandroid/icu/text/ReplaceableString;->length()I @@ -8400,12 +8728,14 @@ HSPLandroid/icu/text/RuleBasedBreakIterator;->clone()Ljava/lang/Object; HSPLandroid/icu/text/RuleBasedBreakIterator;->first()I HSPLandroid/icu/text/RuleBasedBreakIterator;->following(I)I HSPLandroid/icu/text/RuleBasedBreakIterator;->handleNext()I +HSPLandroid/icu/text/RuleBasedBreakIterator;->next()I HSPLandroid/icu/text/RuleBasedBreakIterator;->preceding(I)I HSPLandroid/icu/text/RuleBasedBreakIterator;->setText(Ljava/text/CharacterIterator;)V HSPLandroid/icu/text/RuleBasedCollator;->clone()Ljava/lang/Object; HSPLandroid/icu/text/RuleBasedCollator;->cloneAsThawed()Landroid/icu/text/RuleBasedCollator; HSPLandroid/icu/text/RuleBasedCollator;->compare(Ljava/lang/String;Ljava/lang/String;)I HSPLandroid/icu/text/RuleBasedCollator;->doCompare(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)I +HSPLandroid/icu/text/RuleBasedCollator;->setStrength(I)V HSPLandroid/icu/text/SimpleDateFormat;->fastZeroPaddingNumber(Ljava/lang/StringBuffer;III)V HSPLandroid/icu/text/SimpleDateFormat;->format(Landroid/icu/util/Calendar;Landroid/icu/text/DisplayContext;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;Ljava/util/List;)Ljava/lang/StringBuffer; HSPLandroid/icu/text/SimpleDateFormat;->format(Landroid/icu/util/Calendar;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer; @@ -8420,6 +8750,7 @@ HSPLandroid/icu/text/SimpleDateFormat;->isFieldUnitIgnored(Ljava/lang/String;I)Z HSPLandroid/icu/text/SimpleDateFormat;->parsePattern()V HSPLandroid/icu/text/SimpleDateFormat;->safeAppend([Ljava/lang/String;ILjava/lang/StringBuffer;)V HSPLandroid/icu/text/SimpleDateFormat;->safeAppendWithMonthPattern([Ljava/lang/String;ILjava/lang/StringBuffer;Ljava/lang/String;)V +HSPLandroid/icu/text/SimpleDateFormat;->setContext(Landroid/icu/text/DisplayContext;)V HSPLandroid/icu/text/SimpleDateFormat;->subFormat(Ljava/lang/StringBuffer;CIIILandroid/icu/text/DisplayContext;Ljava/text/FieldPosition;Landroid/icu/util/Calendar;)V HSPLandroid/icu/text/SimpleDateFormat;->toPattern()Ljava/lang/String; HSPLandroid/icu/text/SimpleDateFormat;->zeroPaddingNumber(Landroid/icu/text/NumberFormat;Ljava/lang/StringBuffer;III)V @@ -8434,6 +8765,7 @@ HSPLandroid/icu/text/TimeZoneNames;->getDisplayName(Ljava/lang/String;Landroid/i HSPLandroid/icu/text/TimeZoneNames;->getInstance(Ljava/util/Locale;)Landroid/icu/text/TimeZoneNames; HSPLandroid/icu/text/UCharacterIterator;->getText()Ljava/lang/String; HSPLandroid/icu/text/UCharacterIterator;->setToStart()V +HSPLandroid/icu/text/UFieldPosition;->setFractionDigits(IJ)V HSPLandroid/icu/text/UFormat;-><init>()V HSPLandroid/icu/text/UFormat;->setLocale(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;)V HSPLandroid/icu/text/UTF16;->append(Ljava/lang/StringBuffer;I)Ljava/lang/StringBuffer; @@ -8762,7 +9094,7 @@ HSPLandroid/location/Address$1;-><init>()V HSPLandroid/location/Address$1;->createFromParcel(Landroid/os/Parcel;)Landroid/location/Address; HSPLandroid/location/Address$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/location/Address;->getCountryCode()Ljava/lang/String; -PLandroid/location/Address;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/location/Address;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/location/Country$1;-><init>()V HSPLandroid/location/Country$1;->createFromParcel(Landroid/os/Parcel;)Landroid/location/Country; HSPLandroid/location/Country$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; @@ -8773,7 +9105,7 @@ HSPLandroid/location/CountryDetector;->addCountryListener(Landroid/location/Coun HSPLandroid/location/CountryDetector;->detectCountry()Landroid/location/Country; HSPLandroid/location/Criteria$1;-><init>()V HPLandroid/location/Criteria$1;->createFromParcel(Landroid/os/Parcel;)Landroid/location/Criteria; -PLandroid/location/Criteria$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/location/Criteria$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; PLandroid/location/Criteria;->getAccuracy()I PLandroid/location/Criteria;->getPowerRequirement()I PLandroid/location/Criteria;->isAltitudeRequired()Z @@ -8785,8 +9117,8 @@ HSPLandroid/location/Geocoder;-><init>(Landroid/content/Context;Ljava/util/Local HSPLandroid/location/Geocoder;->getFromLocation(DDI)Ljava/util/List; HSPLandroid/location/Geocoder;->isPresent()Z HSPLandroid/location/GeocoderParams$1;-><init>()V -PLandroid/location/GeocoderParams$1;->createFromParcel(Landroid/os/Parcel;)Landroid/location/GeocoderParams; -PLandroid/location/GeocoderParams$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/location/GeocoderParams$1;->createFromParcel(Landroid/os/Parcel;)Landroid/location/GeocoderParams; +HPLandroid/location/GeocoderParams$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/location/GeocoderParams;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/location/GnssClock$1;-><init>()V PLandroid/location/GnssClock;-><init>()V @@ -8832,7 +9164,7 @@ PLandroid/location/IGeofenceProvider$Stub;->asInterface(Landroid/os/IBinder;)Lan PLandroid/location/IGnssMeasurementsListener$Stub$Proxy;->asBinder()Landroid/os/IBinder; PLandroid/location/IGnssMeasurementsListener$Stub$Proxy;->onGnssMeasurementsReceived(Landroid/location/GnssMeasurementsEvent;)V PLandroid/location/IGnssMeasurementsListener$Stub$Proxy;->onStatusChanged(I)V -PLandroid/location/IGnssMeasurementsListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/location/IGnssMeasurementsListener; +HPLandroid/location/IGnssMeasurementsListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/location/IGnssMeasurementsListener; HSPLandroid/location/IGpsGeofenceHardware$Stub;-><init>()V HPLandroid/location/ILocationListener$Stub$Proxy;->asBinder()Landroid/os/IBinder; HPLandroid/location/ILocationListener$Stub$Proxy;->onLocationChanged(Landroid/location/Location;)V @@ -8846,7 +9178,7 @@ HSPLandroid/location/ILocationManager$Stub$Proxy;->isLocationEnabledForUser(I)Z HSPLandroid/location/ILocationManager$Stub$Proxy;->requestLocationUpdates(Landroid/location/LocationRequest;Landroid/location/ILocationListener;Landroid/app/PendingIntent;Ljava/lang/String;)V HSPLandroid/location/ILocationManager$Stub;-><init>()V HSPLandroid/location/ILocationManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/location/ILocationManager; -PLandroid/location/ILocationManager$Stub;->getDefaultTransactionName(I)Ljava/lang/String; +HPLandroid/location/ILocationManager$Stub;->getDefaultTransactionName(I)Ljava/lang/String; HSPLandroid/location/ILocationManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HSPLandroid/location/INetInitiatedListener$Stub;-><init>()V HSPLandroid/location/Location$1;-><init>()V @@ -8865,11 +9197,13 @@ HSPLandroid/location/Location$BearingDistanceCache;->access$702(Landroid/locatio HSPLandroid/location/Location;-><init>(Landroid/location/Location;)V HSPLandroid/location/Location;-><init>(Ljava/lang/String;)V HSPLandroid/location/Location;->computeDistanceAndBearing(DDDDLandroid/location/Location$BearingDistanceCache;)V +HPLandroid/location/Location;->describeContents()I HSPLandroid/location/Location;->distanceTo(Landroid/location/Location;)F HSPLandroid/location/Location;->getAccuracy()F HSPLandroid/location/Location;->getAltitude()D HSPLandroid/location/Location;->getElapsedRealtimeNanos()J HPLandroid/location/Location;->getExtraLocation(Ljava/lang/String;)Landroid/location/Location; +HSPLandroid/location/Location;->getExtras()Landroid/os/Bundle; HSPLandroid/location/Location;->getLatitude()D HSPLandroid/location/Location;->getLongitude()D HSPLandroid/location/Location;->getProvider()Ljava/lang/String; @@ -8948,6 +9282,7 @@ HSPLandroid/media/AudioAttributes;->getUsage()I HSPLandroid/media/AudioAttributes;->toLegacyStreamType(Landroid/media/AudioAttributes;)I HSPLandroid/media/AudioAttributes;->toVolumeStreamType(ZLandroid/media/AudioAttributes;)I HSPLandroid/media/AudioAttributes;->usageForStreamType(I)I +HSPLandroid/media/AudioAttributes;->usageToString(I)Ljava/lang/String; HSPLandroid/media/AudioAttributes;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/media/AudioDeviceCallback;-><init>()V HSPLandroid/media/AudioDeviceInfo;->getType()I @@ -8958,13 +9293,14 @@ HSPLandroid/media/AudioDevicePort;->type()I HSPLandroid/media/AudioDevicePortConfig;-><init>(Landroid/media/AudioDevicePort;IIILandroid/media/AudioGainConfig;)V HSPLandroid/media/AudioFocusInfo$1;-><init>()V HSPLandroid/media/AudioFocusInfo;-><init>(Landroid/media/AudioAttributes;ILjava/lang/String;Ljava/lang/String;IIII)V +HSPLandroid/media/AudioFocusRequest$Builder;->build()Landroid/media/AudioFocusRequest; HSPLandroid/media/AudioFormat$1;-><init>()V HSPLandroid/media/AudioFormat$Builder;-><init>()V HSPLandroid/media/AudioFormat$Builder;->build()Landroid/media/AudioFormat; HSPLandroid/media/AudioFormat$Builder;->setChannelMask(I)Landroid/media/AudioFormat$Builder; HSPLandroid/media/AudioFormat$Builder;->setEncoding(I)Landroid/media/AudioFormat$Builder; HSPLandroid/media/AudioFormat$Builder;->setSampleRate(I)Landroid/media/AudioFormat$Builder; -PLandroid/media/AudioFormat;-><init>(IIII)V +HPLandroid/media/AudioFormat;-><init>(IIII)V HSPLandroid/media/AudioFormat;-><init>(IIIII)V HSPLandroid/media/AudioFormat;->getBytesPerSample(I)I HSPLandroid/media/AudioHandle;-><init>(I)V @@ -8976,19 +9312,21 @@ HSPLandroid/media/AudioManager$OnAmPortUpdateListener;->onAudioPatchListUpdate([ HSPLandroid/media/AudioManager$OnAmPortUpdateListener;->onAudioPortListUpdate([Landroid/media/AudioPort;)V HSPLandroid/media/AudioManager$ServiceEventHandlerDelegate;-><init>(Landroid/media/AudioManager;Landroid/os/Handler;)V HSPLandroid/media/AudioManager;-><init>(Landroid/content/Context;)V -PLandroid/media/AudioManager;->abandonAudioFocusForCall()V +HPLandroid/media/AudioManager;->abandonAudioFocusForCall()V HSPLandroid/media/AudioManager;->broadcastDeviceListChange_sync(Landroid/os/Handler;)V HSPLandroid/media/AudioManager;->calcListDeltas(Ljava/util/ArrayList;Ljava/util/ArrayList;I)[Landroid/media/AudioDeviceInfo; HSPLandroid/media/AudioManager;->getDevices(I)[Landroid/media/AudioDeviceInfo; HSPLandroid/media/AudioManager;->getDevicesForStream(I)I HSPLandroid/media/AudioManager;->getFocusRampTimeMs(ILandroid/media/AudioAttributes;)I HSPLandroid/media/AudioManager;->getIdForAudioFocusListener(Landroid/media/AudioManager$OnAudioFocusChangeListener;)Ljava/lang/String; +HSPLandroid/media/AudioManager;->getRingerMode()I HSPLandroid/media/AudioManager;->getRingerModeInternal()I HSPLandroid/media/AudioManager;->getRingtonePlayer()Landroid/media/IRingtonePlayer; HSPLandroid/media/AudioManager;->getStreamMaxVolume(I)I HSPLandroid/media/AudioManager;->getStreamVolume(I)I HSPLandroid/media/AudioManager;->infoListFromPortList(Ljava/util/ArrayList;I)[Landroid/media/AudioDeviceInfo; HSPLandroid/media/AudioManager;->isAudioFocusExclusive()Z +HSPLandroid/media/AudioManager;->isBluetoothA2dpOn()Z HSPLandroid/media/AudioManager;->isBluetoothScoOn()Z HSPLandroid/media/AudioManager;->isMicrophoneMute()Z HSPLandroid/media/AudioManager;->isStreamMute(I)Z @@ -8997,7 +9335,12 @@ HSPLandroid/media/AudioManager;->isWiredHeadsetOn()Z HSPLandroid/media/AudioManager;->playSoundEffect(I)V HSPLandroid/media/AudioManager;->preDispatchKeyEvent(Landroid/view/KeyEvent;I)V HSPLandroid/media/AudioManager;->registerAudioDeviceCallback(Landroid/media/AudioDeviceCallback;Landroid/os/Handler;)V +HSPLandroid/media/AudioManager;->registerAudioFocusRequest(Landroid/media/AudioFocusRequest;)V HSPLandroid/media/AudioManager;->registerAudioPortUpdateListener(Landroid/media/AudioManager$OnAudioPortUpdateListener;)V +HSPLandroid/media/AudioManager;->requestAudioFocus(Landroid/media/AudioFocusRequest;Landroid/media/audiopolicy/AudioPolicy;)I +HSPLandroid/media/AudioManager;->requestAudioFocus(Landroid/media/AudioManager$OnAudioFocusChangeListener;Landroid/media/AudioAttributes;II)I +HSPLandroid/media/AudioManager;->requestAudioFocus(Landroid/media/AudioManager$OnAudioFocusChangeListener;Landroid/media/AudioAttributes;IILandroid/media/audiopolicy/AudioPolicy;)I +HPLandroid/media/AudioManager;->requestAudioFocusForCall(II)V HSPLandroid/media/AudioManager;->resetAudioPortGeneration()I HSPLandroid/media/AudioManager;->setMode(I)V HSPLandroid/media/AudioManager;->setParameter(Ljava/lang/String;Ljava/lang/String;)V @@ -9017,7 +9360,7 @@ HSPLandroid/media/AudioPlaybackConfiguration$IPlayerShell;->binderDied()V HSPLandroid/media/AudioPlaybackConfiguration$IPlayerShell;->monitorDeath()V HSPLandroid/media/AudioPlaybackConfiguration$IPlayerShell;->release()V HSPLandroid/media/AudioPlaybackConfiguration;-><init>(Landroid/media/PlayerBase$PlayerIdCard;III)V -PLandroid/media/AudioPlaybackConfiguration;->anonymizedCopy(Landroid/media/AudioPlaybackConfiguration;)Landroid/media/AudioPlaybackConfiguration; +HPLandroid/media/AudioPlaybackConfiguration;->anonymizedCopy(Landroid/media/AudioPlaybackConfiguration;)Landroid/media/AudioPlaybackConfiguration; HSPLandroid/media/AudioPlaybackConfiguration;->handleAudioAttributesEvent(Landroid/media/AudioAttributes;)Z HSPLandroid/media/AudioPlaybackConfiguration;->handleStateEvent(I)Z HSPLandroid/media/AudioPlaybackConfiguration;->init()V @@ -9038,6 +9381,14 @@ HSPLandroid/media/AudioPortEventHandler;->handler()Landroid/os/Handler; HSPLandroid/media/AudioPortEventHandler;->init()V HSPLandroid/media/AudioPortEventHandler;->postEventFromNative(Ljava/lang/Object;IIILjava/lang/Object;)V HSPLandroid/media/AudioPortEventHandler;->registerListener(Landroid/media/AudioManager$OnAudioPortUpdateListener;)V +HSPLandroid/media/AudioRecord;-><init>(Landroid/media/AudioAttributes;Landroid/media/AudioFormat;II)V +HSPLandroid/media/AudioRecord;->audioBuffSizeCheck(I)V +HSPLandroid/media/AudioRecord;->audioParamCheck(III)V +HSPLandroid/media/AudioRecord;->getChannelMaskFromLegacyConfig(IZ)I +HSPLandroid/media/AudioRecord;->handleFullVolumeRec(Z)V +HSPLandroid/media/AudioRecord;->release()V +HSPLandroid/media/AudioRecord;->startRecording()V +HSPLandroid/media/AudioRecord;->stop()V PLandroid/media/AudioRecordingConfiguration$1;-><init>()V PLandroid/media/AudioRecordingConfiguration;-><init>(IIILandroid/media/AudioFormat;Landroid/media/AudioFormat;ILjava/lang/String;IZI[Landroid/media/audiofx/AudioEffect$Descriptor;[Landroid/media/audiofx/AudioEffect$Descriptor;)V HSPLandroid/media/AudioRoutesInfo$1;-><init>()V @@ -9050,10 +9401,11 @@ HSPLandroid/media/AudioRoutesInfo;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/media/AudioSystem;->getOutputDeviceName(I)Ljava/lang/String; HSPLandroid/media/AudioSystem;->getPlatformType(Landroid/content/Context;)I HSPLandroid/media/AudioSystem;->isSingleVolume(Landroid/content/Context;)Z -PLandroid/media/AudioSystem;->recordingCallbackFromNative(IIIIIZ[I[Landroid/media/audiofx/AudioEffect$Descriptor;[Landroid/media/audiofx/AudioEffect$Descriptor;I)V +HPLandroid/media/AudioSystem;->recordingCallbackFromNative(IIIIIZ[I[Landroid/media/audiofx/AudioEffect$Descriptor;[Landroid/media/audiofx/AudioEffect$Descriptor;I)V HSPLandroid/media/AudioSystem;->setErrorCallback(Landroid/media/AudioSystem$ErrorCallback;)V HSPLandroid/media/AudioSystem;->setRecordingCallback(Landroid/media/AudioSystem$AudioRecordingCallback;)V HSPLandroid/media/AudioSystem;->setStreamVolumeIndexAS(III)I +HSPLandroid/media/AudioTrack;->getNativeOutputSampleRate(I)I HSPLandroid/media/ExifInterface$ByteOrderedDataInputStream;-><init>(Ljava/io/InputStream;)V HSPLandroid/media/ExifInterface$ByteOrderedDataInputStream;->read()I HSPLandroid/media/ExifInterface$ByteOrderedDataInputStream;->readByte()B @@ -9091,28 +9443,33 @@ HSPLandroid/media/IAudioRoutesObserver$Stub;-><init>()V HSPLandroid/media/IAudioRoutesObserver$Stub;->asBinder()Landroid/os/IBinder; HSPLandroid/media/IAudioRoutesObserver$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/IAudioRoutesObserver; PLandroid/media/IAudioServerStateDispatcher$Stub$Proxy;->asBinder()Landroid/os/IBinder; -PLandroid/media/IAudioServerStateDispatcher$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/IAudioServerStateDispatcher; +HPLandroid/media/IAudioServerStateDispatcher$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/IAudioServerStateDispatcher; +HSPLandroid/media/IAudioService$Stub$Proxy;->getRingerModeExternal()I HSPLandroid/media/IAudioService$Stub$Proxy;->getRingerModeInternal()I HSPLandroid/media/IAudioService$Stub$Proxy;->getStreamMaxVolume(I)I HSPLandroid/media/IAudioService$Stub$Proxy;->getStreamVolume(I)I HSPLandroid/media/IAudioService$Stub$Proxy;->isBluetoothScoOn()Z +HSPLandroid/media/IAudioService$Stub$Proxy;->isCameraSoundForced()Z HSPLandroid/media/IAudioService$Stub$Proxy;->isStreamMute(I)Z HSPLandroid/media/IAudioService$Stub$Proxy;->playSoundEffect(I)V +HSPLandroid/media/IAudioService$Stub$Proxy;->playerAttributes(ILandroid/media/AudioAttributes;)V HSPLandroid/media/IAudioService$Stub$Proxy;->playerEvent(II)V HSPLandroid/media/IAudioService$Stub$Proxy;->playerHasOpPlayAudio(IZ)V HSPLandroid/media/IAudioService$Stub$Proxy;->releasePlayer(I)V +HSPLandroid/media/IAudioService$Stub$Proxy;->requestAudioFocus(Landroid/media/AudioAttributes;ILandroid/os/IBinder;Landroid/media/IAudioFocusDispatcher;Ljava/lang/String;Ljava/lang/String;ILandroid/media/audiopolicy/IAudioPolicyCallback;I)I HSPLandroid/media/IAudioService$Stub$Proxy;->startWatchingRoutes(Landroid/media/IAudioRoutesObserver;)Landroid/media/AudioRoutesInfo; HSPLandroid/media/IAudioService$Stub$Proxy;->trackPlayer(Landroid/media/PlayerBase$PlayerIdCard;)I HSPLandroid/media/IAudioService$Stub;-><init>()V HSPLandroid/media/IAudioService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/IAudioService; -PLandroid/media/IAudioService$Stub;->getDefaultTransactionName(I)Ljava/lang/String; +HPLandroid/media/IAudioService$Stub;->getDefaultTransactionName(I)Ljava/lang/String; HSPLandroid/media/IAudioService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HSPLandroid/media/IMediaResourceMonitor$Stub;-><init>()V HPLandroid/media/IMediaResourceMonitor$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HSPLandroid/media/IMediaRouterClient$Stub$Proxy;->asBinder()Landroid/os/IBinder; HPLandroid/media/IMediaRouterClient$Stub$Proxy;->onRestoreRoute()V -PLandroid/media/IMediaRouterClient$Stub$Proxy;->onStateChanged()V +HPLandroid/media/IMediaRouterClient$Stub$Proxy;->onStateChanged()V HSPLandroid/media/IMediaRouterClient$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/media/IMediaRouterClient$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HSPLandroid/media/IMediaRouterService$Stub$Proxy;->getState(Landroid/media/IMediaRouterClient;)Landroid/media/MediaRouterClientState; HSPLandroid/media/IMediaRouterService$Stub$Proxy;->isPlaybackActive(Landroid/media/IMediaRouterClient;)Z HSPLandroid/media/IMediaRouterService$Stub$Proxy;->registerClientAsUser(Landroid/media/IMediaRouterClient;Ljava/lang/String;I)V @@ -9127,10 +9484,12 @@ HSPLandroid/media/IPlaybackConfigDispatcher$Stub;->asBinder()Landroid/os/IBinder HSPLandroid/media/IPlaybackConfigDispatcher$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/IPlaybackConfigDispatcher; HSPLandroid/media/IPlayer$Stub$Proxy;->asBinder()Landroid/os/IBinder; HSPLandroid/media/IPlayer$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/media/IRecordingConfigDispatcher$Stub;-><init>()V HSPLandroid/media/IRemoteVolumeController$Stub$Proxy;->asBinder()Landroid/os/IBinder; HSPLandroid/media/IRemoteVolumeController$Stub$Proxy;->updateRemoteController(Landroid/media/session/MediaSession$Token;)V HSPLandroid/media/IRemoteVolumeController$Stub;-><init>()V HSPLandroid/media/IRingtonePlayer$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HSPLandroid/media/IRingtonePlayer$Stub$Proxy;->playAsync(Landroid/net/Uri;Landroid/os/UserHandle;ZLandroid/media/AudioAttributes;)V HSPLandroid/media/IRingtonePlayer$Stub$Proxy;->stopAsync()V HSPLandroid/media/IRingtonePlayer$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/IRingtonePlayer; HSPLandroid/media/IVolumeController$Stub$Proxy;->asBinder()Landroid/os/IBinder; @@ -9138,6 +9497,25 @@ HSPLandroid/media/IVolumeController$Stub$Proxy;->setLayoutDirection(I)V HSPLandroid/media/IVolumeController$Stub$Proxy;->volumeChanged(II)V HSPLandroid/media/IVolumeController$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/IVolumeController; HSPLandroid/media/MediaCodec$BufferInfo;-><init>()V +HSPLandroid/media/MediaCodec$BufferInfo;->set(IIJI)V +HSPLandroid/media/MediaCodec$BufferMap;->clear()V +HSPLandroid/media/MediaCodec$BufferMap;->remove(I)V +HSPLandroid/media/MediaCodec$CryptoInfo;-><init>()V +HSPLandroid/media/MediaCodec;-><init>(Ljava/lang/String;ZZ)V +HSPLandroid/media/MediaCodec;->cacheBuffers(Z)V +HSPLandroid/media/MediaCodec;->configure(Landroid/media/MediaFormat;Landroid/view/Surface;Landroid/media/MediaCrypto;I)V +HSPLandroid/media/MediaCodec;->configure(Landroid/media/MediaFormat;Landroid/view/Surface;Landroid/media/MediaCrypto;Landroid/os/IHwBinder;I)V +HSPLandroid/media/MediaCodec;->dequeueInputBuffer(J)I +HSPLandroid/media/MediaCodec;->dequeueOutputBuffer(Landroid/media/MediaCodec$BufferInfo;J)I +HSPLandroid/media/MediaCodec;->finalize()V +HSPLandroid/media/MediaCodec;->freeAllTrackedBuffers()V +HSPLandroid/media/MediaCodec;->lockAndGetContext()J +HSPLandroid/media/MediaCodec;->queueInputBuffer(IIIJI)V +HSPLandroid/media/MediaCodec;->release()V +HSPLandroid/media/MediaCodec;->releaseOutputBuffer(IZ)V +HSPLandroid/media/MediaCodec;->setAndUnlockContext(J)V +HSPLandroid/media/MediaCodec;->start()V +HSPLandroid/media/MediaCodec;->stop()V HSPLandroid/media/MediaCodecInfo$AudioCapabilities;->applyLevelLimits()V HSPLandroid/media/MediaCodecInfo$AudioCapabilities;->applyLimits(ILandroid/util/Range;)V HSPLandroid/media/MediaCodecInfo$AudioCapabilities;->createDiscreteSampleRates()V @@ -9186,6 +9564,9 @@ HSPLandroid/media/MediaDescription$1;->createFromParcel(Landroid/os/Parcel;)Ljav HSPLandroid/media/MediaDescription;-><init>(Landroid/os/Parcel;)V HSPLandroid/media/MediaDescription;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/media/MediaDrm;->getMaxSecurityLevel()I +HSPLandroid/media/MediaFormat;->getInteger(Ljava/lang/String;)I +HSPLandroid/media/MediaFormat;->getString(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/media/MediaFormat;->setInteger(Ljava/lang/String;I)V HSPLandroid/media/MediaMetadata$1;-><init>()V HSPLandroid/media/MediaMetadata$1;->createFromParcel(Landroid/os/Parcel;)Landroid/media/MediaMetadata; HSPLandroid/media/MediaMetadata$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; @@ -9193,6 +9574,13 @@ HPLandroid/media/MediaMetadata$Builder;-><init>(Landroid/media/MediaMetadata;)V HSPLandroid/media/MediaMetadata$Builder;->build()Landroid/media/MediaMetadata; HPLandroid/media/MediaMetadata;->size()I HSPLandroid/media/MediaMetadata;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/media/MediaParceledListSlice$2;-><init>()V +HSPLandroid/media/MediaParceledListSlice$2;->createFromParcel(Landroid/os/Parcel;)Landroid/media/MediaParceledListSlice; +HSPLandroid/media/MediaParceledListSlice$2;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/media/MediaParceledListSlice;-><init>(Landroid/os/Parcel;)V +HPLandroid/media/MediaParceledListSlice;-><init>(Ljava/util/List;)V +HSPLandroid/media/MediaParceledListSlice;->getList()Ljava/util/List; +HSPLandroid/media/MediaParceledListSlice;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/media/MediaPlayer$2$1;->getSubtitleLooper()Landroid/os/Looper; HSPLandroid/media/MediaPlayer$2$1;->setSubtitleWidget(Landroid/media/SubtitleTrack$RenderingWidget;)V HSPLandroid/media/MediaPlayer$2;->run()V @@ -9244,7 +9632,7 @@ HSPLandroid/media/MediaPlayer;->setVolume(F)V HSPLandroid/media/MediaPlayer;->setVolume(FF)V HSPLandroid/media/MediaPlayer;->start()V HSPLandroid/media/MediaPlayer;->stayAwake(Z)V -PLandroid/media/MediaRecorder;->isSystemOnlyAudioSource(I)Z +HPLandroid/media/MediaRecorder;->isSystemOnlyAudioSource(I)Z HSPLandroid/media/MediaRouter$Callback;-><init>()V HSPLandroid/media/MediaRouter$CallbackInfo;->filterRouteEvent(I)Z HSPLandroid/media/MediaRouter$CallbackInfo;->filterRouteEvent(Landroid/media/MediaRouter$RouteInfo;)Z @@ -9256,10 +9644,21 @@ HSPLandroid/media/MediaRouter$RouteInfo;-><init>(Landroid/media/MediaRouter$Rout HSPLandroid/media/MediaRouter$RouteInfo;->choosePresentationDisplay()Landroid/view/Display; HSPLandroid/media/MediaRouter$RouteInfo;->getCategory()Landroid/media/MediaRouter$RouteCategory; HSPLandroid/media/MediaRouter$RouteInfo;->getDescription()Ljava/lang/CharSequence; +HSPLandroid/media/MediaRouter$RouteInfo;->getDeviceType()I HSPLandroid/media/MediaRouter$RouteInfo;->getName()Ljava/lang/CharSequence; +HSPLandroid/media/MediaRouter$RouteInfo;->getName(Landroid/content/Context;)Ljava/lang/CharSequence; HSPLandroid/media/MediaRouter$RouteInfo;->getName(Landroid/content/res/Resources;)Ljava/lang/CharSequence; +HSPLandroid/media/MediaRouter$RouteInfo;->getPlaybackStream()I +HSPLandroid/media/MediaRouter$RouteInfo;->getPlaybackType()I +HSPLandroid/media/MediaRouter$RouteInfo;->getPresentationDisplay()Landroid/view/Display; HSPLandroid/media/MediaRouter$RouteInfo;->getStatus()Ljava/lang/CharSequence; HSPLandroid/media/MediaRouter$RouteInfo;->getSupportedTypes()I +HSPLandroid/media/MediaRouter$RouteInfo;->getTag()Ljava/lang/Object; +HSPLandroid/media/MediaRouter$RouteInfo;->getVolume()I +HSPLandroid/media/MediaRouter$RouteInfo;->getVolumeHandling()I +HSPLandroid/media/MediaRouter$RouteInfo;->getVolumeMax()I +HSPLandroid/media/MediaRouter$RouteInfo;->isConnecting()Z +HSPLandroid/media/MediaRouter$RouteInfo;->isEnabled()Z HSPLandroid/media/MediaRouter$RouteInfo;->isSelected()Z HSPLandroid/media/MediaRouter$RouteInfo;->matchesTypes(I)Z HSPLandroid/media/MediaRouter$RouteInfo;->resolveStatusCode()Z @@ -9290,14 +9689,21 @@ HSPLandroid/media/MediaRouter$VolumeChangeReceiver;->onReceive(Landroid/content/ HSPLandroid/media/MediaRouter;-><init>(Landroid/content/Context;)V HSPLandroid/media/MediaRouter;->addCallback(ILandroid/media/MediaRouter$Callback;I)V HSPLandroid/media/MediaRouter;->addRouteStatic(Landroid/media/MediaRouter$RouteInfo;)V +HSPLandroid/media/MediaRouter;->createRouteCategory(Ljava/lang/CharSequence;Z)Landroid/media/MediaRouter$RouteCategory; HSPLandroid/media/MediaRouter;->dispatchRouteAdded(Landroid/media/MediaRouter$RouteInfo;)V +HSPLandroid/media/MediaRouter;->dispatchRouteChanged(Landroid/media/MediaRouter$RouteInfo;I)V HSPLandroid/media/MediaRouter;->dispatchRouteRemoved(Landroid/media/MediaRouter$RouteInfo;)V HSPLandroid/media/MediaRouter;->dispatchRouteSelected(ILandroid/media/MediaRouter$RouteInfo;)V HSPLandroid/media/MediaRouter;->dispatchRouteUnselected(ILandroid/media/MediaRouter$RouteInfo;)V HSPLandroid/media/MediaRouter;->dispatchRouteVolumeChanged(Landroid/media/MediaRouter$RouteInfo;)V +HSPLandroid/media/MediaRouter;->getDefaultRoute()Landroid/media/MediaRouter$RouteInfo; +HSPLandroid/media/MediaRouter;->getRouteAt(I)Landroid/media/MediaRouter$RouteInfo; +HSPLandroid/media/MediaRouter;->getRouteCount()I +HSPLandroid/media/MediaRouter;->getSelectedRoute(I)Landroid/media/MediaRouter$RouteInfo; HSPLandroid/media/MediaRouter;->removeCallback(Landroid/media/MediaRouter$Callback;)V HSPLandroid/media/MediaRouter;->removeRouteStatic(Landroid/media/MediaRouter$RouteInfo;)V HSPLandroid/media/MediaRouter;->selectDefaultRouteStatic()V +HSPLandroid/media/MediaRouter;->selectRoute(ILandroid/media/MediaRouter$RouteInfo;)V HSPLandroid/media/MediaRouter;->selectRouteStatic(ILandroid/media/MediaRouter$RouteInfo;Z)V HSPLandroid/media/MediaRouter;->systemVolumeChanged(I)V HSPLandroid/media/MediaRouter;->typesToString(I)Ljava/lang/String; @@ -9330,6 +9736,9 @@ HSPLandroid/media/PlayerBase;->updateAppOpsPlayAudio()V HSPLandroid/media/PlayerBase;->updateAppOpsPlayAudio_sync(Z)V HSPLandroid/media/PlayerBase;->updatePlayerVolume()V HSPLandroid/media/PlayerBase;->updateState(I)V +HSPLandroid/media/Rating$1;-><init>()V +HSPLandroid/media/Rating$1;->createFromParcel(Landroid/os/Parcel;)Landroid/media/Rating; +HSPLandroid/media/Rating$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/media/Ringtone;-><init>(Landroid/content/Context;Z)V HSPLandroid/media/Ringtone;->applyPlaybackProperties_sync()V HSPLandroid/media/Ringtone;->destroyLocalPlayer()V @@ -9342,11 +9751,13 @@ HSPLandroid/media/RingtoneManager;->getActualDefaultRingtoneUri(Landroid/content HSPLandroid/media/RingtoneManager;->getDefaultUri(I)Landroid/net/Uri; HSPLandroid/media/RingtoneManager;->getRingtone(Landroid/content/Context;Landroid/net/Uri;)Landroid/media/Ringtone; HSPLandroid/media/RingtoneManager;->getRingtone(Landroid/content/Context;Landroid/net/Uri;ILandroid/media/VolumeShaper$Configuration;)Landroid/media/Ringtone; +HPLandroid/media/RingtoneManager;->getRingtone(Landroid/content/Context;Landroid/net/Uri;Landroid/media/VolumeShaper$Configuration;)Landroid/media/Ringtone; HSPLandroid/media/SoundPool$Builder;->build()Landroid/media/SoundPool; HSPLandroid/media/SoundPool$Builder;->setAudioAttributes(Landroid/media/AudioAttributes;)Landroid/media/SoundPool$Builder; HSPLandroid/media/SoundPool$EventHandler;->handleMessage(Landroid/os/Message;)V HSPLandroid/media/SoundPool;-><init>(ILandroid/media/AudioAttributes;)V HSPLandroid/media/SoundPool;->load(Ljava/lang/String;I)I +HSPLandroid/media/SoundPool;->play(IFFIIF)I HSPLandroid/media/SoundPool;->playerSetAuxEffectSendLevel(ZF)I HSPLandroid/media/SoundPool;->playerSetVolume(ZFF)V HSPLandroid/media/SoundPool;->postEventFromNative(Ljava/lang/Object;IIILjava/lang/Object;)V @@ -9364,7 +9775,7 @@ HSPLandroid/media/SubtitleController;->selectTrack(Landroid/media/SubtitleTrack; HSPLandroid/media/SubtitleController;->setAnchor(Landroid/media/SubtitleController$Anchor;)V HSPLandroid/media/ToneGenerator;-><init>(II)V HSPLandroid/media/ToneGenerator;->finalize()V -PLandroid/media/ToneGenerator;->startTone(I)Z +HPLandroid/media/ToneGenerator;->startTone(I)Z HSPLandroid/media/Utils$1;->compare(Landroid/util/Range;Landroid/util/Range;)I HSPLandroid/media/Utils$1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I HSPLandroid/media/Utils$2;->compare(Landroid/util/Range;Landroid/util/Range;)I @@ -9429,17 +9840,18 @@ HSPLandroid/media/session/ICallback$Stub$Proxy;->onAddressedPlayerChangedToMedia PLandroid/media/session/ICallback$Stub$Proxy;->onAddressedPlayerChangedToMediaSession(Landroid/media/session/MediaSession$Token;)V HSPLandroid/media/session/ICallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/session/ICallback; HSPLandroid/media/session/ISession$Stub;-><init>()V -PLandroid/media/session/ISession$Stub;->asBinder()Landroid/os/IBinder; +HPLandroid/media/session/ISession$Stub;->asBinder()Landroid/os/IBinder; HPLandroid/media/session/ISession$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z PLandroid/media/session/ISessionCallback$Stub$Proxy;->asBinder()Landroid/os/IBinder; HSPLandroid/media/session/ISessionCallback$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/media/session/ISessionController$Stub$Proxy;->asBinder()Landroid/os/IBinder; HSPLandroid/media/session/ISessionController$Stub;-><init>()V HPLandroid/media/session/ISessionController$Stub;->asBinder()Landroid/os/IBinder; HPLandroid/media/session/ISessionController$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HPLandroid/media/session/ISessionControllerCallback$Stub$Proxy;->asBinder()Landroid/os/IBinder; HPLandroid/media/session/ISessionControllerCallback$Stub$Proxy;->onMetadataChanged(Landroid/media/MediaMetadata;)V HPLandroid/media/session/ISessionControllerCallback$Stub$Proxy;->onPlaybackStateChanged(Landroid/media/session/PlaybackState;)V -HPLandroid/media/session/ISessionControllerCallback$Stub$Proxy;->onQueueChanged(Landroid/media/ParceledListSlice;)V +HPLandroid/media/session/ISessionControllerCallback$Stub$Proxy;->onQueueChanged(Landroid/media/MediaParceledListSlice;)V HPLandroid/media/session/ISessionControllerCallback$Stub$Proxy;->onSessionDestroyed()V HSPLandroid/media/session/ISessionManager$Stub$Proxy;->getSessions(Landroid/content/ComponentName;I)Ljava/util/List; HSPLandroid/media/session/ISessionManager$Stub;-><init>()V @@ -9553,12 +9965,12 @@ HSPLandroid/net/ConnectivityManager;->requestNetwork(Landroid/net/NetworkRequest HSPLandroid/net/ConnectivityManager;->requestNetwork(Landroid/net/NetworkRequest;Landroid/net/ConnectivityManager$NetworkCallback;IILandroid/os/Handler;)V HSPLandroid/net/ConnectivityManager;->requestNetwork(Landroid/net/NetworkRequest;Landroid/net/ConnectivityManager$NetworkCallback;Landroid/os/Handler;)V HSPLandroid/net/ConnectivityManager;->requestNetwork(Landroid/net/NetworkRequest;Landroid/net/ConnectivityManager$NetworkCallback;Landroid/os/Handler;I)V -PLandroid/net/ConnectivityManager;->requestRouteToHostAddress(ILjava/net/InetAddress;)Z +HPLandroid/net/ConnectivityManager;->requestRouteToHostAddress(ILjava/net/InetAddress;)Z HSPLandroid/net/ConnectivityManager;->sendRequestForNetwork(Landroid/net/NetworkCapabilities;Landroid/net/ConnectivityManager$NetworkCallback;IIILandroid/net/ConnectivityManager$CallbackHandler;)Landroid/net/NetworkRequest; HSPLandroid/net/ConnectivityManager;->setProcessDefaultNetwork(Landroid/net/Network;)Z HSPLandroid/net/ConnectivityManager;->setProvisioningNotificationVisible(ZILjava/lang/String;)V HSPLandroid/net/ConnectivityManager;->unregisterNetworkCallback(Landroid/net/ConnectivityManager$NetworkCallback;)V -PLandroid/net/ConnectivityManager;->unsupportedStartingFrom(I)V +HPLandroid/net/ConnectivityManager;->unsupportedStartingFrom(I)V HSPLandroid/net/ConnectivityMetricsEvent$1;-><init>()V HSPLandroid/net/ConnectivityMetricsEvent$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/ConnectivityMetricsEvent; HSPLandroid/net/ConnectivityMetricsEvent$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; @@ -9572,10 +9984,10 @@ HSPLandroid/net/DataUsageRequest$1;-><init>()V HSPLandroid/net/DhcpInfo$1;-><init>()V HPLandroid/net/DhcpInfo;->writeToParcel(Landroid/os/Parcel;I)V PLandroid/net/DhcpResults$1;-><init>()V -PLandroid/net/DhcpResults;-><init>(Landroid/net/DhcpResults;)V +HPLandroid/net/DhcpResults;-><init>(Landroid/net/DhcpResults;)V HPLandroid/net/DhcpResults;-><init>(Landroid/net/StaticIpConfiguration;)V -PLandroid/net/DhcpResults;->clear()V -PLandroid/net/DhcpResults;->hasMeteredHint()Z +HPLandroid/net/DhcpResults;->clear()V +HPLandroid/net/DhcpResults;->hasMeteredHint()Z HPLandroid/net/DhcpResults;->toStaticIpConfiguration()Landroid/net/StaticIpConfiguration; HPLandroid/net/DhcpResults;->toString()Ljava/lang/String; HSPLandroid/net/EventLogTags;->writeNtpSuccess(Ljava/lang/String;JJ)V @@ -9598,7 +10010,7 @@ HSPLandroid/net/IConnectivityManager$Stub$Proxy;->requestNetwork(Landroid/net/Ne HSPLandroid/net/IConnectivityManager$Stub$Proxy;->setProvisioningNotificationVisible(ZILjava/lang/String;)V HSPLandroid/net/IConnectivityManager$Stub;-><init>()V HSPLandroid/net/IConnectivityManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/IConnectivityManager; -PLandroid/net/IConnectivityManager$Stub;->getDefaultTransactionName(I)Ljava/lang/String; +HPLandroid/net/IConnectivityManager$Stub;->getDefaultTransactionName(I)Ljava/lang/String; HSPLandroid/net/IConnectivityManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HSPLandroid/net/IEthernetManager$Stub;-><init>()V HSPLandroid/net/IIpConnectivityMetrics$Stub;-><init>()V @@ -9633,7 +10045,7 @@ HSPLandroid/net/INetworkStatsService$Stub$Proxy;->getIfaceStats(Ljava/lang/Strin HSPLandroid/net/INetworkStatsService$Stub$Proxy;->getMobileIfaces()[Ljava/lang/String; HSPLandroid/net/INetworkStatsService$Stub;-><init>()V HSPLandroid/net/INetworkStatsService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/INetworkStatsService; -PLandroid/net/INetworkStatsService$Stub;->getDefaultTransactionName(I)Ljava/lang/String; +HPLandroid/net/INetworkStatsService$Stub;->getDefaultTransactionName(I)Ljava/lang/String; HSPLandroid/net/INetworkStatsService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HPLandroid/net/INetworkStatsSession$Stub;-><init>()V HPLandroid/net/INetworkStatsSession$Stub;->asBinder()Landroid/os/IBinder; @@ -9642,7 +10054,7 @@ HSPLandroid/net/ITetheringStatsProvider$Stub;-><init>()V HSPLandroid/net/InetAddresses;->parseNumericAddress(Ljava/lang/String;)Ljava/net/InetAddress; HSPLandroid/net/InterfaceConfiguration$1;-><init>()V HSPLandroid/net/InterfaceConfiguration;-><init>()V -PLandroid/net/InterfaceConfiguration;->getLinkAddress()Landroid/net/LinkAddress; +HPLandroid/net/InterfaceConfiguration;->getLinkAddress()Landroid/net/LinkAddress; HSPLandroid/net/InterfaceConfiguration;->hasFlag(Ljava/lang/String;)Z HSPLandroid/net/InterfaceConfiguration;->isUp()Z HSPLandroid/net/InterfaceConfiguration;->setFlag(Ljava/lang/String;)V @@ -9698,6 +10110,7 @@ HSPLandroid/net/LinkProperties;->addDnsServer(Ljava/net/InetAddress;)Z HSPLandroid/net/LinkProperties;->addLinkAddress(Landroid/net/LinkAddress;)Z HSPLandroid/net/LinkProperties;->addPcscfServer(Ljava/net/InetAddress;)Z HSPLandroid/net/LinkProperties;->addRoute(Landroid/net/RouteInfo;)Z +HSPLandroid/net/LinkProperties;->addStackedLink(Landroid/net/LinkProperties;)Z HSPLandroid/net/LinkProperties;->addValidatedPrivateDnsServer(Ljava/net/InetAddress;)Z HSPLandroid/net/LinkProperties;->clear()V HSPLandroid/net/LinkProperties;->describeContents()I @@ -9712,6 +10125,7 @@ HSPLandroid/net/LinkProperties;->getHttpProxy()Landroid/net/ProxyInfo; HSPLandroid/net/LinkProperties;->getInterfaceName()Ljava/lang/String; HSPLandroid/net/LinkProperties;->getLinkAddresses()Ljava/util/List; HSPLandroid/net/LinkProperties;->getMtu()I +HSPLandroid/net/LinkProperties;->getPrivateDnsServerName()Ljava/lang/String; HSPLandroid/net/LinkProperties;->getRoutes()Ljava/util/List; HSPLandroid/net/LinkProperties;->getStackedLinks()Ljava/util/List; HSPLandroid/net/LinkProperties;->hasGlobalIPv6Address()Z @@ -9726,6 +10140,7 @@ HSPLandroid/net/LinkProperties;->hasIpv4DefaultRoute()Z HSPLandroid/net/LinkProperties;->hasIpv6DefaultRoute()Z HSPLandroid/net/LinkProperties;->isIdenticalAddresses(Landroid/net/LinkProperties;)Z HSPLandroid/net/LinkProperties;->isIdenticalDnses(Landroid/net/LinkProperties;)Z +HSPLandroid/net/LinkProperties;->isIdenticalInterfaceName(Landroid/net/LinkProperties;)Z HSPLandroid/net/LinkProperties;->isIdenticalRoutes(Landroid/net/LinkProperties;)Z HSPLandroid/net/LinkProperties;->isIdenticalStackedLinks(Landroid/net/LinkProperties;)Z HSPLandroid/net/LinkProperties;->isPrivateDnsActive()Z @@ -9803,14 +10218,18 @@ HSPLandroid/net/Network$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/Ne HSPLandroid/net/Network$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/net/Network$1;->newArray(I)[Landroid/net/Network; HSPLandroid/net/Network$1;->newArray(I)[Ljava/lang/Object; +HSPLandroid/net/Network$NetworkBoundSocketFactory;->createSocket()Ljava/net/Socket; HSPLandroid/net/Network;-><init>(I)V HSPLandroid/net/Network;->bindSocket(Ljava/io/FileDescriptor;)V HSPLandroid/net/Network;->bindSocket(Ljava/net/DatagramSocket;)V +HSPLandroid/net/Network;->bindSocket(Ljava/net/Socket;)V HSPLandroid/net/Network;->equals(Ljava/lang/Object;)Z +HSPLandroid/net/Network;->getAllByName(Ljava/lang/String;)[Ljava/net/InetAddress; HSPLandroid/net/Network;->getByName(Ljava/lang/String;)Ljava/net/InetAddress; HSPLandroid/net/Network;->getNetIdForResolv()I HSPLandroid/net/Network;->getNetworkHandle()J HSPLandroid/net/Network;->getPrivateDnsBypassingCopy()Landroid/net/Network; +HSPLandroid/net/Network;->getSocketFactory()Ljavax/net/SocketFactory; HSPLandroid/net/Network;->hashCode()I HSPLandroid/net/Network;->toString()Ljava/lang/String; HSPLandroid/net/Network;->writeToParcel(Landroid/os/Parcel;I)V @@ -9947,6 +10366,7 @@ HSPLandroid/net/NetworkPolicy;->equals(Ljava/lang/Object;)Z HSPLandroid/net/NetworkPolicy;->hasCycle()Z HSPLandroid/net/NetworkPolicy;->isOverLimit(J)Z HSPLandroid/net/NetworkPolicy;->isOverWarning(J)Z +HSPLandroid/net/NetworkPolicy;->toString()Ljava/lang/String; HSPLandroid/net/NetworkPolicyManager$1;->hasNext()Z HSPLandroid/net/NetworkPolicyManager$1;->next()Landroid/util/Pair; HSPLandroid/net/NetworkPolicyManager$1;->next()Ljava/lang/Object; @@ -10063,9 +10483,12 @@ HSPLandroid/net/NetworkTemplate$1;->createFromParcel(Landroid/os/Parcel;)Ljava/l HSPLandroid/net/NetworkTemplate;-><init>(ILjava/lang/String;Ljava/lang/String;)V HSPLandroid/net/NetworkTemplate;-><init>(ILjava/lang/String;[Ljava/lang/String;Ljava/lang/String;III)V HSPLandroid/net/NetworkTemplate;-><init>(Landroid/os/Parcel;)V +HSPLandroid/net/NetworkTemplate;->buildTemplateMobileAll(Ljava/lang/String;)Landroid/net/NetworkTemplate; HSPLandroid/net/NetworkTemplate;->buildTemplateMobileWildcard()Landroid/net/NetworkTemplate; HSPLandroid/net/NetworkTemplate;->buildTemplateWifiWildcard()Landroid/net/NetworkTemplate; +HSPLandroid/net/NetworkTemplate;->equals(Ljava/lang/Object;)Z HSPLandroid/net/NetworkTemplate;->getMatchRule()I +HSPLandroid/net/NetworkTemplate;->getMatchRuleName(I)Ljava/lang/String; HSPLandroid/net/NetworkTemplate;->getNetworkId()Ljava/lang/String; HSPLandroid/net/NetworkTemplate;->getSubscriberId()Ljava/lang/String; HSPLandroid/net/NetworkTemplate;->hashCode()I @@ -10074,14 +10497,15 @@ HSPLandroid/net/NetworkTemplate;->isPersistable()Z HSPLandroid/net/NetworkTemplate;->matches(Landroid/net/NetworkIdentity;)Z HSPLandroid/net/NetworkTemplate;->matchesMobile(Landroid/net/NetworkIdentity;)Z HSPLandroid/net/NetworkTemplate;->normalize(Landroid/net/NetworkTemplate;[Ljava/lang/String;)Landroid/net/NetworkTemplate; +HSPLandroid/net/NetworkTemplate;->toString()Ljava/lang/String; HSPLandroid/net/NetworkTemplate;->writeToParcel(Landroid/os/Parcel;I)V HPLandroid/net/NetworkUtils;->inetAddressToInt(Ljava/net/Inet4Address;)I HSPLandroid/net/NetworkUtils;->makeStrings(Ljava/util/Collection;)[Ljava/lang/String; HSPLandroid/net/NetworkUtils;->maskRawAddress([BI)V HSPLandroid/net/NetworkUtils;->numericToInetAddress(Ljava/lang/String;)Ljava/net/InetAddress; HSPLandroid/net/NetworkUtils;->parseIpAndMask(Ljava/lang/String;)Landroid/util/Pair; -PLandroid/net/NetworkWatchlistManager;-><init>(Landroid/content/Context;)V -PLandroid/net/NetworkWatchlistManager;->reportWatchlistIfNecessary()V +HPLandroid/net/NetworkWatchlistManager;-><init>(Landroid/content/Context;)V +HPLandroid/net/NetworkWatchlistManager;->reportWatchlistIfNecessary()V HSPLandroid/net/Proxy;->setHttpProxySystemProperty(Landroid/net/ProxyInfo;)V HSPLandroid/net/Proxy;->setHttpProxySystemProperty(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/net/Uri;)V HSPLandroid/net/ProxyInfo$1;-><init>()V @@ -10090,6 +10514,7 @@ HSPLandroid/net/RouteInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/ HSPLandroid/net/RouteInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/net/RouteInfo;-><init>(Landroid/net/IpPrefix;Ljava/net/InetAddress;Ljava/lang/String;)V HSPLandroid/net/RouteInfo;-><init>(Landroid/net/IpPrefix;Ljava/net/InetAddress;Ljava/lang/String;I)V +HPLandroid/net/RouteInfo;-><init>(Landroid/net/LinkAddress;Ljava/net/InetAddress;Ljava/lang/String;)V HSPLandroid/net/RouteInfo;-><init>(Ljava/net/InetAddress;)V HSPLandroid/net/RouteInfo;->equals(Ljava/lang/Object;)Z HSPLandroid/net/RouteInfo;->isHost()Z @@ -10099,6 +10524,8 @@ HSPLandroid/net/SSLCertificateSocketFactory$1;-><init>()V HSPLandroid/net/ScoredNetwork$1;-><init>()V HSPLandroid/net/ScoredNetwork$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/ScoredNetwork; HSPLandroid/net/ScoredNetwork$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/net/ScoredNetwork$1;->newArray(I)[Landroid/net/ScoredNetwork; +HPLandroid/net/ScoredNetwork$1;->newArray(I)[Ljava/lang/Object; HSPLandroid/net/ScoredNetwork;-><init>(Landroid/os/Parcel;)V HSPLandroid/net/SntpClient;->checkValidServerReply(BBIJ)V HSPLandroid/net/SntpClient;->read32([BI)J @@ -10168,6 +10595,7 @@ HSPLandroid/net/Uri$Builder;->encodedQuery(Ljava/lang/String;)Landroid/net/Uri$B HSPLandroid/net/Uri$Builder;->fragment(Ljava/lang/String;)Landroid/net/Uri$Builder; HSPLandroid/net/Uri$Builder;->path(Ljava/lang/String;)Landroid/net/Uri$Builder; HSPLandroid/net/Uri$Builder;->scheme(Ljava/lang/String;)Landroid/net/Uri$Builder; +HSPLandroid/net/Uri$Builder;->toString()Ljava/lang/String; HSPLandroid/net/Uri$HierarchicalUri;-><init>(Ljava/lang/String;Landroid/net/Uri$Part;Landroid/net/Uri$PathPart;Landroid/net/Uri$Part;Landroid/net/Uri$Part;)V HSPLandroid/net/Uri$HierarchicalUri;-><init>(Ljava/lang/String;Landroid/net/Uri$Part;Landroid/net/Uri$PathPart;Landroid/net/Uri$Part;Landroid/net/Uri$Part;Landroid/net/Uri$1;)V HSPLandroid/net/Uri$HierarchicalUri;->appendSspTo(Ljava/lang/StringBuilder;)V @@ -10218,6 +10646,7 @@ HSPLandroid/net/Uri$StringUri;->getAuthority()Ljava/lang/String; HSPLandroid/net/Uri$StringUri;->getEncodedAuthority()Ljava/lang/String; HSPLandroid/net/Uri$StringUri;->getEncodedPath()Ljava/lang/String; HSPLandroid/net/Uri$StringUri;->getEncodedQuery()Ljava/lang/String; +HSPLandroid/net/Uri$StringUri;->getFragment()Ljava/lang/String; HSPLandroid/net/Uri$StringUri;->getPath()Ljava/lang/String; HSPLandroid/net/Uri$StringUri;->getPathSegments()Ljava/util/List; HSPLandroid/net/Uri$StringUri;->getScheme()Ljava/lang/String; @@ -10243,6 +10672,7 @@ HSPLandroid/net/Uri;->getQueryParameter(Ljava/lang/String;)Ljava/lang/String; HSPLandroid/net/Uri;->getQueryParameterNames()Ljava/util/Set; HSPLandroid/net/Uri;->getQueryParameters(Ljava/lang/String;)Ljava/util/List; HSPLandroid/net/Uri;->hashCode()I +HSPLandroid/net/Uri;->isAbsolute()Z HSPLandroid/net/Uri;->isAllowed(CLjava/lang/String;)Z HSPLandroid/net/Uri;->isOpaque()Z HSPLandroid/net/Uri;->isPathPrefixMatch(Landroid/net/Uri;)Z @@ -10318,7 +10748,7 @@ PLandroid/net/metrics/WakeupStats;-><init>(Ljava/lang/String;)V PLandroid/net/metrics/WakeupStats;->countEvent(Landroid/net/metrics/WakeupEvent;)V PLandroid/net/metrics/WakeupStats;->updateDuration()V HSPLandroid/net/nsd/INsdManager$Stub;-><init>()V -PLandroid/net/nsd/INsdManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/net/nsd/INsdManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HSPLandroid/net/shared/Inet4AddressUtils;->inet4AddressToIntHTH(Ljava/net/Inet4Address;)I HSPLandroid/net/sip/SipManager;->newInstance(Landroid/content/Context;)Landroid/net/sip/SipManager; HSPLandroid/net/util/-$$Lambda$MultinetworkPolicyTracker$0siHK6f4lHJz8hbdHbT6G4Kp-V4;->run()V @@ -10347,17 +10777,18 @@ HSPLandroid/net/wifi/IWifiManager$Stub$Proxy;->getMatchingPasspointConfigsForOsu HSPLandroid/net/wifi/IWifiManager$Stub$Proxy;->getScanResults(Ljava/lang/String;)Ljava/util/List; HSPLandroid/net/wifi/IWifiManager$Stub$Proxy;->getSupportedFeatures()J HSPLandroid/net/wifi/IWifiManager$Stub$Proxy;->getVerboseLoggingLevel()I +HSPLandroid/net/wifi/IWifiManager$Stub$Proxy;->getWifiApEnabledState()I HSPLandroid/net/wifi/IWifiManager$Stub$Proxy;->getWifiEnabledState()I HSPLandroid/net/wifi/IWifiManager$Stub$Proxy;->isScanAlwaysAvailable()Z HSPLandroid/net/wifi/IWifiManager$Stub$Proxy;->setCountryCode(Ljava/lang/String;)V HSPLandroid/net/wifi/IWifiManager$Stub$Proxy;->startScan(Ljava/lang/String;)Z HSPLandroid/net/wifi/IWifiManager$Stub;-><init>()V HSPLandroid/net/wifi/IWifiManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/wifi/IWifiManager; -PLandroid/net/wifi/IWifiManager$Stub;->getDefaultTransactionName(I)Ljava/lang/String; +HPLandroid/net/wifi/IWifiManager$Stub;->getDefaultTransactionName(I)Ljava/lang/String; HSPLandroid/net/wifi/IWifiManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HSPLandroid/net/wifi/IWifiScanner$Stub;-><init>()V HSPLandroid/net/wifi/IWifiScanner$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/wifi/IWifiScanner; -PLandroid/net/wifi/IWifiScanner$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/net/wifi/IWifiScanner$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HSPLandroid/net/wifi/ParcelUtil;->readPrivateKey(Landroid/os/Parcel;)Ljava/security/PrivateKey; HSPLandroid/net/wifi/ScanResult$1;-><init>()V HSPLandroid/net/wifi/ScanResult$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/wifi/ScanResult; @@ -10368,7 +10799,7 @@ HSPLandroid/net/wifi/ScanResult;-><init>(Ljava/lang/String;Ljava/lang/String;JIL HPLandroid/net/wifi/ScanResult;->is24GHz()Z HPLandroid/net/wifi/ScanResult;->is5GHz()Z HPLandroid/net/wifi/ScanResult;->isPasspointNetwork()Z -PLandroid/net/wifi/ScanResult;->setFlag(J)V +HPLandroid/net/wifi/ScanResult;->setFlag(J)V HSPLandroid/net/wifi/ScanResult;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/net/wifi/SupplicantState$1;-><init>()V HSPLandroid/net/wifi/SupplicantState$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/wifi/SupplicantState; @@ -10378,16 +10809,16 @@ HSPLandroid/net/wifi/SupplicantState;->describeContents()I HSPLandroid/net/wifi/SupplicantState;->isConnecting(Landroid/net/wifi/SupplicantState;)Z HSPLandroid/net/wifi/SupplicantState;->isHandshakeState(Landroid/net/wifi/SupplicantState;)Z HSPLandroid/net/wifi/SupplicantState;->values()[Landroid/net/wifi/SupplicantState; -PLandroid/net/wifi/SupplicantState;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/net/wifi/SupplicantState;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/net/wifi/WifiActivityEnergyInfo$1;-><init>()V HSPLandroid/net/wifi/WifiActivityEnergyInfo;-><init>(JIJ[JJJJJ)V -PLandroid/net/wifi/WifiActivityEnergyInfo;->toString()Ljava/lang/String; +HPLandroid/net/wifi/WifiActivityEnergyInfo;->toString()Ljava/lang/String; HSPLandroid/net/wifi/WifiConfiguration$1;-><init>()V HSPLandroid/net/wifi/WifiConfiguration$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/wifi/WifiConfiguration; HSPLandroid/net/wifi/WifiConfiguration$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;-><init>()V -PLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->clearDisableReasonCounter()V -PLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->clearDisableReasonCounter(I)V +HPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->clearDisableReasonCounter()V +HPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->clearDisableReasonCounter(I)V HSPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->copy(Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;)V HSPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->getCandidate()Landroid/net/wifi/ScanResult; HSPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->getCandidateScore()I @@ -10402,6 +10833,7 @@ HSPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->getNetworkSelect HSPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->getNetworkSelectionStatus()I HSPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->getNetworkStatusString()Ljava/lang/String; HSPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->getSeenInLastQualifiedNetworkSelection()Z +HPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->incrementDisableReasonCounter(I)V HPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->isDisabledByReason(I)Z HSPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->isNetworkEnabled()Z HSPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->isNetworkPermanentlyDisabled()Z @@ -10421,28 +10853,28 @@ HSPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->setNetworkSelect HSPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->setNotRecommended(Z)V HSPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->setSeenInLastQualifiedNetworkSelection(Z)V HSPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->writeToParcel(Landroid/os/Parcel;)V -PLandroid/net/wifi/WifiConfiguration$RecentFailure;->clear()V +HPLandroid/net/wifi/WifiConfiguration$RecentFailure;->clear()V HSPLandroid/net/wifi/WifiConfiguration$RecentFailure;->getAssociationStatus()I HSPLandroid/net/wifi/WifiConfiguration$RecentFailure;->setAssociationStatus(I)V HSPLandroid/net/wifi/WifiConfiguration;-><init>()V HSPLandroid/net/wifi/WifiConfiguration;-><init>(Landroid/net/wifi/WifiConfiguration;)V HSPLandroid/net/wifi/WifiConfiguration;->configKey()Ljava/lang/String; HSPLandroid/net/wifi/WifiConfiguration;->configKey(Z)Ljava/lang/String; -PLandroid/net/wifi/WifiConfiguration;->describeContents()I +HPLandroid/net/wifi/WifiConfiguration;->describeContents()I HSPLandroid/net/wifi/WifiConfiguration;->getAuthType()I -PLandroid/net/wifi/WifiConfiguration;->getBytesForBackup()[B -PLandroid/net/wifi/WifiConfiguration;->getHttpProxy()Landroid/net/ProxyInfo; +HPLandroid/net/wifi/WifiConfiguration;->getBytesForBackup()[B +HPLandroid/net/wifi/WifiConfiguration;->getHttpProxy()Landroid/net/ProxyInfo; HSPLandroid/net/wifi/WifiConfiguration;->getIpAssignment()Landroid/net/IpConfiguration$IpAssignment; HSPLandroid/net/wifi/WifiConfiguration;->getIpConfiguration()Landroid/net/IpConfiguration; HSPLandroid/net/wifi/WifiConfiguration;->getNetworkSelectionStatus()Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus; HSPLandroid/net/wifi/WifiConfiguration;->getOrCreateRandomizedMacAddress()Landroid/net/MacAddress; -PLandroid/net/wifi/WifiConfiguration;->getPrintableSsid()Ljava/lang/String; +HPLandroid/net/wifi/WifiConfiguration;->getPrintableSsid()Ljava/lang/String; HSPLandroid/net/wifi/WifiConfiguration;->getRandomizedMacAddress()Landroid/net/MacAddress; HPLandroid/net/wifi/WifiConfiguration;->isEnterprise()Z HSPLandroid/net/wifi/WifiConfiguration;->isEphemeral()Z HSPLandroid/net/wifi/WifiConfiguration;->isMetered(Landroid/net/wifi/WifiConfiguration;Landroid/net/wifi/WifiInfo;)Z HSPLandroid/net/wifi/WifiConfiguration;->isPasspoint()Z -PLandroid/net/wifi/WifiConfiguration;->isValidMacAddressForRandomization(Landroid/net/MacAddress;)Z +HPLandroid/net/wifi/WifiConfiguration;->isValidMacAddressForRandomization(Landroid/net/MacAddress;)Z HSPLandroid/net/wifi/WifiConfiguration;->setIpConfiguration(Landroid/net/IpConfiguration;)V HSPLandroid/net/wifi/WifiConfiguration;->setNetworkSelectionStatus(Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;)V HSPLandroid/net/wifi/WifiConfiguration;->setRandomizedMacAddress(Landroid/net/MacAddress;)V @@ -10451,12 +10883,12 @@ HSPLandroid/net/wifi/WifiEnterpriseConfig$1;-><init>()V HSPLandroid/net/wifi/WifiEnterpriseConfig$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/wifi/WifiEnterpriseConfig; HSPLandroid/net/wifi/WifiEnterpriseConfig$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/net/wifi/WifiEnterpriseConfig;->copyFrom(Landroid/net/wifi/WifiEnterpriseConfig;ZLjava/lang/String;)V -PLandroid/net/wifi/WifiEnterpriseConfig;->getAnonymousIdentity()Ljava/lang/String; -PLandroid/net/wifi/WifiEnterpriseConfig;->getCaCertificates()[Ljava/security/cert/X509Certificate; +HPLandroid/net/wifi/WifiEnterpriseConfig;->getAnonymousIdentity()Ljava/lang/String; +HPLandroid/net/wifi/WifiEnterpriseConfig;->getCaCertificates()[Ljava/security/cert/X509Certificate; HSPLandroid/net/wifi/WifiEnterpriseConfig;->getEapMethod()I HSPLandroid/net/wifi/WifiEnterpriseConfig;->getFieldValue(Ljava/lang/String;)Ljava/lang/String; HSPLandroid/net/wifi/WifiEnterpriseConfig;->getFieldValue(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; -PLandroid/net/wifi/WifiEnterpriseConfig;->getIdentity()Ljava/lang/String; +HPLandroid/net/wifi/WifiEnterpriseConfig;->getIdentity()Ljava/lang/String; HSPLandroid/net/wifi/WifiEnterpriseConfig;->getPassword()Ljava/lang/String; HSPLandroid/net/wifi/WifiEnterpriseConfig;->getPhase2Method()I HSPLandroid/net/wifi/WifiEnterpriseConfig;->writeToParcel(Landroid/os/Parcel;I)V @@ -10475,7 +10907,7 @@ HSPLandroid/net/wifi/WifiInfo;->getRssi()I HPLandroid/net/wifi/WifiInfo;->getRxLinkSpeedMbps()I HSPLandroid/net/wifi/WifiInfo;->getSSID()Ljava/lang/String; HSPLandroid/net/wifi/WifiInfo;->getSupplicantState()Landroid/net/wifi/SupplicantState; -PLandroid/net/wifi/WifiInfo;->getWifiSsid()Landroid/net/wifi/WifiSsid; +HPLandroid/net/wifi/WifiInfo;->getWifiSsid()Landroid/net/wifi/WifiSsid; HPLandroid/net/wifi/WifiInfo;->is24GHz()Z HSPLandroid/net/wifi/WifiInfo;->is5GHz()Z HSPLandroid/net/wifi/WifiInfo;->isEphemeral()Z @@ -10519,13 +10951,15 @@ HSPLandroid/net/wifi/WifiManager;->getScanResults()Ljava/util/List; HSPLandroid/net/wifi/WifiManager;->getSupportedFeatures()J HSPLandroid/net/wifi/WifiManager;->getVerboseLoggingLevel()I HSPLandroid/net/wifi/WifiManager;->getWifiApConfiguration()Landroid/net/wifi/WifiConfiguration; +HSPLandroid/net/wifi/WifiManager;->getWifiApState()I HSPLandroid/net/wifi/WifiManager;->getWifiState()I HSPLandroid/net/wifi/WifiManager;->isEnhancedOpenSupported()Z HSPLandroid/net/wifi/WifiManager;->isScanAlwaysAvailable()Z +HSPLandroid/net/wifi/WifiManager;->isWifiApEnabled()Z HSPLandroid/net/wifi/WifiManager;->isWifiEnabled()Z HSPLandroid/net/wifi/WifiManager;->isWpa3SaeSupported()Z HSPLandroid/net/wifi/WifiManager;->isWpa3SuiteBSupported()Z -PLandroid/net/wifi/WifiManager;->retrieveBackupData()[B +HPLandroid/net/wifi/WifiManager;->retrieveBackupData()[B HSPLandroid/net/wifi/WifiManager;->setCountryCode(Ljava/lang/String;)V HSPLandroid/net/wifi/WifiManager;->startScan()Z HSPLandroid/net/wifi/WifiManager;->startScan(Landroid/os/WorkSource;)Z @@ -10556,8 +10990,8 @@ HPLandroid/net/wifi/WifiScanner$PnoSettings$PnoNetwork;-><init>(Ljava/lang/Strin HSPLandroid/net/wifi/WifiScanner$ScanData$1;-><init>()V HPLandroid/net/wifi/WifiScanner$ScanData;->getBandScanned()I HPLandroid/net/wifi/WifiScanner$ScanData;->getBucketsScanned()I -PLandroid/net/wifi/WifiScanner$ScanData;->getFlags()I -PLandroid/net/wifi/WifiScanner$ScanData;->getId()I +HPLandroid/net/wifi/WifiScanner$ScanData;->getFlags()I +HPLandroid/net/wifi/WifiScanner$ScanData;->getId()I HPLandroid/net/wifi/WifiScanner$ScanData;->getResults()[Landroid/net/wifi/ScanResult; HPLandroid/net/wifi/WifiScanner$ScanData;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/net/wifi/WifiScanner$ScanSettings$1;-><init>()V @@ -10575,9 +11009,9 @@ HSPLandroid/net/wifi/WifiScanner;->registerScanListener(Landroid/net/wifi/WifiSc HSPLandroid/net/wifi/WifiScanner;->removeListener(I)Ljava/lang/Object; HSPLandroid/net/wifi/WifiScanner;->removeListener(Ljava/lang/Object;)I HSPLandroid/net/wifi/WifiScanner;->setScanningEnabled(Z)V -PLandroid/net/wifi/WifiScanner;->startDisconnectedPnoScan(Landroid/net/wifi/WifiScanner$ScanSettings;Landroid/net/wifi/WifiScanner$PnoSettings;Landroid/net/wifi/WifiScanner$PnoScanListener;)V +HPLandroid/net/wifi/WifiScanner;->startDisconnectedPnoScan(Landroid/net/wifi/WifiScanner$ScanSettings;Landroid/net/wifi/WifiScanner$PnoSettings;Landroid/net/wifi/WifiScanner$PnoScanListener;)V HSPLandroid/net/wifi/WifiScanner;->startScan(Landroid/net/wifi/WifiScanner$ScanSettings;Landroid/net/wifi/WifiScanner$ScanListener;Landroid/os/WorkSource;)V -PLandroid/net/wifi/WifiScanner;->stopPnoScan(Landroid/net/wifi/WifiScanner$ScanListener;)V +HPLandroid/net/wifi/WifiScanner;->stopPnoScan(Landroid/net/wifi/WifiScanner$ScanListener;)V HSPLandroid/net/wifi/WifiSsid$1;-><init>()V HSPLandroid/net/wifi/WifiSsid$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/wifi/WifiSsid; HSPLandroid/net/wifi/WifiSsid$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; @@ -10603,16 +11037,20 @@ HSPLandroid/net/wifi/p2p/WifiP2pGroupList$2;-><init>()V HSPLandroid/net/wifi/p2p/WifiP2pGroupList;-><init>(Landroid/net/wifi/p2p/WifiP2pGroupList;Landroid/net/wifi/p2p/WifiP2pGroupList$GroupDeleteListener;)V HSPLandroid/net/wifi/p2p/WifiP2pInfo$1;-><init>()V HSPLandroid/net/wifi/rtt/IWifiRttManager$Stub;-><init>()V -PLandroid/net/wifi/rtt/IWifiRttManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/net/wifi/rtt/IWifiRttManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLandroid/nfc/INfcAdapter$Stub$Proxy;->deviceSupportsNfcSecure()Z HSPLandroid/nfc/INfcAdapter$Stub$Proxy;->getNfcCardEmulationInterface()Landroid/nfc/INfcCardEmulation; HSPLandroid/nfc/INfcAdapter$Stub$Proxy;->getNfcFCardEmulationInterface()Landroid/nfc/INfcFCardEmulation; HSPLandroid/nfc/INfcAdapter$Stub$Proxy;->getNfcTagInterface()Landroid/nfc/INfcTag; +HSPLandroid/nfc/INfcAdapter$Stub$Proxy;->getState()I HSPLandroid/nfc/NfcAdapter;-><init>(Landroid/content/Context;)V HSPLandroid/nfc/NfcAdapter;->getDefaultAdapter(Landroid/content/Context;)Landroid/nfc/NfcAdapter; HSPLandroid/nfc/NfcAdapter;->getNfcAdapter(Landroid/content/Context;)Landroid/nfc/NfcAdapter; HSPLandroid/nfc/NfcAdapter;->hasBeamFeature()Z HSPLandroid/nfc/NfcAdapter;->hasNfcFeature()Z HSPLandroid/nfc/NfcAdapter;->hasNfcHceFeature()Z +HSPLandroid/nfc/NfcAdapter;->isEnabled()Z +HSPLandroid/nfc/NfcAdapter;->isSecureNfcSupported()Z HSPLandroid/nfc/NfcManager;-><init>(Landroid/content/Context;)V HSPLandroid/opengl/EGL14;->eglCreateWindowSurface(Landroid/opengl/EGLDisplay;Landroid/opengl/EGLConfig;Ljava/lang/Object;[II)Landroid/opengl/EGLSurface; HSPLandroid/opengl/EGLConfig;-><init>(J)V @@ -10742,6 +11180,7 @@ HPLandroid/os/BatteryStats$LevelStepTracker;->getLevelAt(I)I HPLandroid/os/BatteryStats$LevelStepTracker;->getModModeAt(I)I HSPLandroid/os/BatteryStats$LevelStepTracker;->readFromParcel(Landroid/os/Parcel;)V HSPLandroid/os/BatteryStats$LevelStepTracker;->writeToParcel(Landroid/os/Parcel;)V +HSPLandroid/os/BatteryStats$Timer;-><init>()V HPLandroid/os/BatteryStats$Timer;->getCurrentDurationMsLocked(J)J HPLandroid/os/BatteryStats$Timer;->getMaxDurationMsLocked(J)J HPLandroid/os/BatteryStats$Timer;->getTotalDurationMsLocked(J)J @@ -10763,12 +11202,14 @@ HSPLandroid/os/BestClock;->millis()J HSPLandroid/os/Binder$PropagateWorkSourceTransactListener;->onTransactEnded(Ljava/lang/Object;)V HSPLandroid/os/Binder$PropagateWorkSourceTransactListener;->onTransactStarted(Landroid/os/IBinder;I)Ljava/lang/Object; HSPLandroid/os/Binder;-><init>()V +HSPLandroid/os/Binder;-><init>(Ljava/lang/String;)V HSPLandroid/os/Binder;->access$000()J HSPLandroid/os/Binder;->allowBlocking(Landroid/os/IBinder;)Landroid/os/IBinder; HSPLandroid/os/Binder;->attachInterface(Landroid/os/IInterface;Ljava/lang/String;)V HSPLandroid/os/Binder;->copyAllowBlocking(Landroid/os/IBinder;Landroid/os/IBinder;)V HSPLandroid/os/Binder;->defaultBlocking(Landroid/os/IBinder;)Landroid/os/IBinder; HSPLandroid/os/Binder;->doDump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V +HPLandroid/os/Binder;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V HSPLandroid/os/Binder;->dump(Ljava/io/FileDescriptor;[Ljava/lang/String;)V HSPLandroid/os/Binder;->execTransact(IJJI)Z HSPLandroid/os/Binder;->execTransactInternal(IJJII)Z @@ -10784,6 +11225,7 @@ HSPLandroid/os/Binder;->setObserver(Lcom/android/internal/os/BinderInternal$Obse HSPLandroid/os/Binder;->setProxyTransactListener(Landroid/os/Binder$ProxyTransactListener;)V HSPLandroid/os/Binder;->setWarnOnBlocking(Z)V HSPLandroid/os/Binder;->setWorkSourceProvider(Lcom/android/internal/os/BinderInternal$WorkSourceProvider;)V +HSPLandroid/os/Binder;->shellCommand(Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;[Ljava/lang/String;Landroid/os/ShellCallback;Landroid/os/ResultReceiver;)V HSPLandroid/os/Binder;->transact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HSPLandroid/os/Binder;->unlinkToDeath(Landroid/os/IBinder$DeathRecipient;I)Z HSPLandroid/os/Binder;->withCleanCallingIdentity(Lcom/android/internal/util/FunctionalUtils$ThrowingRunnable;)V @@ -10811,6 +11253,8 @@ HSPLandroid/os/Build;->isBuildConsistent()Z HSPLandroid/os/Bundle$1;-><init>()V HSPLandroid/os/Bundle$1;->createFromParcel(Landroid/os/Parcel;)Landroid/os/Bundle; HSPLandroid/os/Bundle$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/os/Bundle$1;->newArray(I)[Landroid/os/Bundle; +HSPLandroid/os/Bundle$1;->newArray(I)[Ljava/lang/Object; HSPLandroid/os/Bundle;-><init>()V HSPLandroid/os/Bundle;-><init>(I)V HSPLandroid/os/Bundle;-><init>(Landroid/os/Bundle;)V @@ -10858,6 +11302,8 @@ HSPLandroid/os/Bundle;->setDefusable(Landroid/os/Bundle;Z)Landroid/os/Bundle; HSPLandroid/os/Bundle;->toString()Ljava/lang/String; HSPLandroid/os/Bundle;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/os/CancellationSignal;-><init>()V +HSPLandroid/os/CancellationSignal;->cancel()V +HSPLandroid/os/CancellationSignal;->createTransport()Landroid/os/ICancellationSignal; HSPLandroid/os/CancellationSignal;->fromTransport(Landroid/os/ICancellationSignal;)Landroid/os/CancellationSignal; HSPLandroid/os/CancellationSignal;->isCanceled()Z HSPLandroid/os/CancellationSignal;->setOnCancelListener(Landroid/os/CancellationSignal$OnCancelListener;)V @@ -10869,6 +11315,7 @@ HSPLandroid/os/ConditionVariable;-><init>()V HSPLandroid/os/ConditionVariable;-><init>(Z)V HSPLandroid/os/ConditionVariable;->block()V HSPLandroid/os/ConditionVariable;->block(J)Z +HSPLandroid/os/ConditionVariable;->close()V HSPLandroid/os/ConditionVariable;->open()V HSPLandroid/os/CpuUsageInfo$1;-><init>()V HSPLandroid/os/DeadObjectException;-><init>()V @@ -10878,6 +11325,7 @@ HSPLandroid/os/Debug$MemoryInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/l HSPLandroid/os/Debug$MemoryInfo$1;->newArray(I)[Landroid/os/Debug$MemoryInfo; HSPLandroid/os/Debug$MemoryInfo$1;->newArray(I)[Ljava/lang/Object; HSPLandroid/os/Debug$MemoryInfo;-><init>()V +HSPLandroid/os/Debug$MemoryInfo;->getMemoryStats()Ljava/util/Map; HSPLandroid/os/Debug$MemoryInfo;->getOtherLabel(I)Ljava/lang/String; HSPLandroid/os/Debug$MemoryInfo;->getOtherPrivate(I)I HSPLandroid/os/Debug$MemoryInfo;->getOtherPrivateClean(I)I @@ -10896,6 +11344,7 @@ HSPLandroid/os/Debug$MemoryInfo;->getSummaryPrivateOther()I HSPLandroid/os/Debug$MemoryInfo;->getSummaryStack()I HSPLandroid/os/Debug$MemoryInfo;->getSummarySystem()I HSPLandroid/os/Debug$MemoryInfo;->getSummaryTotalPss()I +HSPLandroid/os/Debug$MemoryInfo;->getSummaryTotalSwap()I HSPLandroid/os/Debug$MemoryInfo;->getSummaryTotalSwapPss()I HSPLandroid/os/Debug$MemoryInfo;->getTotalPrivateClean()I HSPLandroid/os/Debug$MemoryInfo;->getTotalPrivateDirty()I @@ -10938,10 +11387,11 @@ HSPLandroid/os/Environment$UserEnvironment;->buildExternalStorageAppCacheDirs(Lj HSPLandroid/os/Environment$UserEnvironment;->buildExternalStorageAppFilesDirs(Ljava/lang/String;)[Ljava/io/File; HSPLandroid/os/Environment$UserEnvironment;->buildExternalStoragePublicDirs(Ljava/lang/String;)[Ljava/io/File; HSPLandroid/os/Environment$UserEnvironment;->getExternalDirs()[Ljava/io/File; -PLandroid/os/Environment$UserEnvironment;->getExternalStoragePublicDirectory(Ljava/lang/String;)Ljava/io/File; +HPLandroid/os/Environment$UserEnvironment;->getExternalStoragePublicDirectory(Ljava/lang/String;)Ljava/io/File; HSPLandroid/os/Environment;->buildExternalStorageAppCacheDirs(Ljava/lang/String;)[Ljava/io/File; HSPLandroid/os/Environment;->buildExternalStorageAppFilesDirs(Ljava/lang/String;)[Ljava/io/File; HSPLandroid/os/Environment;->buildPath(Ljava/io/File;[Ljava/lang/String;)Ljava/io/File; +HSPLandroid/os/Environment;->buildPaths([Ljava/io/File;[Ljava/lang/String;)[Ljava/io/File; HSPLandroid/os/Environment;->getDataAppDirectory(Ljava/lang/String;)Ljava/io/File; HSPLandroid/os/Environment;->getDataDirectory()Ljava/io/File; HSPLandroid/os/Environment;->getDataMiscCeDirectory()Ljava/io/File; @@ -10949,7 +11399,7 @@ HSPLandroid/os/Environment;->getDataMiscCeDirectory(I)Ljava/io/File; HSPLandroid/os/Environment;->getDataMiscDirectory()Ljava/io/File; HSPLandroid/os/Environment;->getDataProfilesDeDirectory(I)Ljava/io/File; HSPLandroid/os/Environment;->getDataProfilesDePackageDirectory(ILjava/lang/String;)Ljava/io/File; -PLandroid/os/Environment;->getDataRefProfilesDePackageDirectory(Ljava/lang/String;)Ljava/io/File; +HPLandroid/os/Environment;->getDataRefProfilesDePackageDirectory(Ljava/lang/String;)Ljava/io/File; HSPLandroid/os/Environment;->getDataSystemCeDirectory()Ljava/io/File; HSPLandroid/os/Environment;->getDataSystemCeDirectory(I)Ljava/io/File; HSPLandroid/os/Environment;->getDataSystemDeDirectory()Ljava/io/File; @@ -10981,7 +11431,7 @@ HSPLandroid/os/Environment;->isExternalStorageEmulated()Z HSPLandroid/os/Environment;->isExternalStorageEmulated(Ljava/io/File;)Z HSPLandroid/os/Environment;->setUserRequired(Z)V HSPLandroid/os/FactoryTest;->getMode()I -PLandroid/os/FactoryTest;->isLongPressOnPowerOffEnabled()Z +HPLandroid/os/FactoryTest;->isLongPressOnPowerOffEnabled()Z PLandroid/os/FileBridge;-><init>()V PLandroid/os/FileBridge;->forceClose()V PLandroid/os/FileBridge;->isClosed()Z @@ -11009,10 +11459,10 @@ HSPLandroid/os/FileUtils;->isValidExtFilename(Ljava/lang/String;)Z HSPLandroid/os/FileUtils;->listFilesOrEmpty(Ljava/io/File;)[Ljava/io/File; HSPLandroid/os/FileUtils;->newFileOrNull(Ljava/lang/String;)Ljava/io/File; HSPLandroid/os/FileUtils;->readTextFile(Ljava/io/File;ILjava/lang/String;)Ljava/lang/String; -PLandroid/os/FileUtils;->rewriteAfterRename(Ljava/io/File;Ljava/io/File;Ljava/io/File;)Ljava/io/File; -PLandroid/os/FileUtils;->rewriteAfterRename(Ljava/io/File;Ljava/io/File;Ljava/lang/String;)Ljava/lang/String; -PLandroid/os/FileUtils;->rewriteAfterRename(Ljava/io/File;Ljava/io/File;[Ljava/lang/String;)[Ljava/lang/String; -PLandroid/os/FileUtils;->roundStorageSize(J)J +HPLandroid/os/FileUtils;->rewriteAfterRename(Ljava/io/File;Ljava/io/File;Ljava/io/File;)Ljava/io/File; +HPLandroid/os/FileUtils;->rewriteAfterRename(Ljava/io/File;Ljava/io/File;Ljava/lang/String;)Ljava/lang/String; +HPLandroid/os/FileUtils;->rewriteAfterRename(Ljava/io/File;Ljava/io/File;[Ljava/lang/String;)[Ljava/lang/String; +HPLandroid/os/FileUtils;->roundStorageSize(J)J HSPLandroid/os/FileUtils;->setPermissions(Ljava/io/File;III)I HSPLandroid/os/FileUtils;->setPermissions(Ljava/io/FileDescriptor;III)I HSPLandroid/os/FileUtils;->setPermissions(Ljava/lang/String;III)I @@ -11103,7 +11553,7 @@ HSPLandroid/os/HwParcel;-><init>(Z)V HSPLandroid/os/HwParcel;->readInt32Vector()Ljava/util/ArrayList; HSPLandroid/os/HwParcel;->readInt8Vector()Ljava/util/ArrayList; HSPLandroid/os/HwParcel;->readStringVector()Ljava/util/ArrayList; -PLandroid/os/HwParcel;->writeInt16Vector(Ljava/util/ArrayList;)V +HPLandroid/os/HwParcel;->writeInt16Vector(Ljava/util/ArrayList;)V HSPLandroid/os/HwParcel;->writeInt32Vector(Ljava/util/ArrayList;)V HSPLandroid/os/HwParcel;->writeInt8Vector(Ljava/util/ArrayList;)V HSPLandroid/os/HwParcel;->writeStringVector(Ljava/util/ArrayList;)V @@ -11131,21 +11581,22 @@ HSPLandroid/os/IIncidentManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid HSPLandroid/os/IInstalld$Stub$Proxy;->assertFsverityRootHashMatches(Ljava/lang/String;[B)V HSPLandroid/os/IInstalld$Stub$Proxy;->clearAppData(Ljava/lang/String;Ljava/lang/String;IIJ)V HSPLandroid/os/IInstalld$Stub$Proxy;->clearAppProfiles(Ljava/lang/String;Ljava/lang/String;)V -PLandroid/os/IInstalld$Stub$Proxy;->copySystemProfile(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)Z +HPLandroid/os/IInstalld$Stub$Proxy;->copySystemProfile(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)Z HSPLandroid/os/IInstalld$Stub$Proxy;->createAppData(Ljava/lang/String;Ljava/lang/String;IIILjava/lang/String;I)J HPLandroid/os/IInstalld$Stub$Proxy;->createOatDir(Ljava/lang/String;Ljava/lang/String;)V -PLandroid/os/IInstalld$Stub$Proxy;->createProfileSnapshot(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z +HPLandroid/os/IInstalld$Stub$Proxy;->createProfileSnapshot(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z HSPLandroid/os/IInstalld$Stub$Proxy;->createUserData(Ljava/lang/String;III)V HSPLandroid/os/IInstalld$Stub$Proxy;->destroyAppData(Ljava/lang/String;Ljava/lang/String;IIJ)V -PLandroid/os/IInstalld$Stub$Proxy;->destroyProfileSnapshot(Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/os/IInstalld$Stub$Proxy;->destroyAppProfiles(Ljava/lang/String;)V +HPLandroid/os/IInstalld$Stub$Proxy;->destroyProfileSnapshot(Ljava/lang/String;Ljava/lang/String;)V HSPLandroid/os/IInstalld$Stub$Proxy;->dexopt(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;ILjava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V HSPLandroid/os/IInstalld$Stub$Proxy;->fixupAppData(Ljava/lang/String;I)V HPLandroid/os/IInstalld$Stub$Proxy;->getAppSize(Ljava/lang/String;[Ljava/lang/String;III[J[Ljava/lang/String;)[J -PLandroid/os/IInstalld$Stub$Proxy;->getExternalSize(Ljava/lang/String;II[I)[J +HPLandroid/os/IInstalld$Stub$Proxy;->getExternalSize(Ljava/lang/String;II[I)[J HPLandroid/os/IInstalld$Stub$Proxy;->getUserSize(Ljava/lang/String;II[I)[J HPLandroid/os/IInstalld$Stub$Proxy;->hashSecondaryDexFile(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;I)[B HSPLandroid/os/IInstalld$Stub$Proxy;->idmap(Ljava/lang/String;Ljava/lang/String;I)V -PLandroid/os/IInstalld$Stub$Proxy;->installApkVerity(Ljava/lang/String;Ljava/io/FileDescriptor;I)V +HPLandroid/os/IInstalld$Stub$Proxy;->installApkVerity(Ljava/lang/String;Ljava/io/FileDescriptor;I)V HSPLandroid/os/IInstalld$Stub$Proxy;->invalidateMounts()V HPLandroid/os/IInstalld$Stub$Proxy;->isQuotaSupported(Ljava/lang/String;)Z HSPLandroid/os/IInstalld$Stub$Proxy;->linkNativeLibraryDirectory(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V @@ -11153,7 +11604,7 @@ HSPLandroid/os/IInstalld$Stub$Proxy;->markBootComplete(Ljava/lang/String;)V HPLandroid/os/IInstalld$Stub$Proxy;->mergeProfiles(ILjava/lang/String;Ljava/lang/String;)Z HPLandroid/os/IInstalld$Stub$Proxy;->moveAb(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V HSPLandroid/os/IInstalld$Stub$Proxy;->prepareAppProfile(Ljava/lang/String;IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z -PLandroid/os/IInstalld$Stub$Proxy;->reconcileSecondaryDexFile(Ljava/lang/String;Ljava/lang/String;I[Ljava/lang/String;Ljava/lang/String;I)Z +HPLandroid/os/IInstalld$Stub$Proxy;->reconcileSecondaryDexFile(Ljava/lang/String;Ljava/lang/String;I[Ljava/lang/String;Ljava/lang/String;I)Z HSPLandroid/os/IInstalld$Stub$Proxy;->rmPackageDir(Ljava/lang/String;)V HSPLandroid/os/IInstalld$Stub$Proxy;->rmdex(Ljava/lang/String;Ljava/lang/String;)V HSPLandroid/os/IInstalld$Stub$Proxy;->setAppQuota(Ljava/lang/String;IIJ)V @@ -11165,10 +11616,11 @@ HSPLandroid/os/IMessenger$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parc PLandroid/os/INetworkActivityListener$Stub$Proxy;->asBinder()Landroid/os/IBinder; HPLandroid/os/INetworkActivityListener$Stub$Proxy;->onNetworkActive()V PLandroid/os/INetworkActivityListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/INetworkActivityListener; +HSPLandroid/os/INetworkManagementService$Stub$Proxy;->isBandwidthControlEnabled()Z HSPLandroid/os/INetworkManagementService$Stub$Proxy;->setUidCleartextNetworkPolicy(II)V HSPLandroid/os/INetworkManagementService$Stub;-><init>()V HSPLandroid/os/INetworkManagementService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/INetworkManagementService; -PLandroid/os/INetworkManagementService$Stub;->getDefaultTransactionName(I)Ljava/lang/String; +HPLandroid/os/INetworkManagementService$Stub;->getDefaultTransactionName(I)Ljava/lang/String; HSPLandroid/os/INetworkManagementService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HSPLandroid/os/IPermissionController$Stub;-><init>()V HSPLandroid/os/IPermissionController$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z @@ -11176,14 +11628,16 @@ HSPLandroid/os/IPowerManager$Stub$Proxy;->acquireWakeLock(Landroid/os/IBinder;IL HSPLandroid/os/IPowerManager$Stub$Proxy;->isDeviceIdleMode()Z HSPLandroid/os/IPowerManager$Stub$Proxy;->isInteractive()Z HSPLandroid/os/IPowerManager$Stub$Proxy;->isPowerSaveMode()Z +HSPLandroid/os/IPowerManager$Stub$Proxy;->isWakeLockLevelSupported(I)Z HSPLandroid/os/IPowerManager$Stub$Proxy;->releaseWakeLock(Landroid/os/IBinder;I)V HSPLandroid/os/IPowerManager$Stub$Proxy;->updateWakeLockWorkSource(Landroid/os/IBinder;Landroid/os/WorkSource;Ljava/lang/String;)V +HSPLandroid/os/IPowerManager$Stub$Proxy;->userActivity(JII)V HSPLandroid/os/IPowerManager$Stub;-><init>()V HSPLandroid/os/IPowerManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IPowerManager; -PLandroid/os/IPowerManager$Stub;->getDefaultTransactionName(I)Ljava/lang/String; +HPLandroid/os/IPowerManager$Stub;->getDefaultTransactionName(I)Ljava/lang/String; HSPLandroid/os/IPowerManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HSPLandroid/os/IProcessInfoService$Stub;-><init>()V -PLandroid/os/IProcessInfoService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/os/IProcessInfoService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HSPLandroid/os/IProgressListener$Stub;-><init>()V HSPLandroid/os/IProgressListener$Stub;->asBinder()Landroid/os/IBinder; HSPLandroid/os/IRecoverySystem$Stub;-><init>()V @@ -11195,10 +11649,11 @@ HSPLandroid/os/IRemoteCallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os HSPLandroid/os/ISchedulingPolicyService$Stub;-><init>()V HSPLandroid/os/ISchedulingPolicyService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HSPLandroid/os/IStatsCompanionService$Stub;-><init>()V +HPLandroid/os/IStatsCompanionService$Stub;->getDefaultTransactionName(I)Ljava/lang/String; HSPLandroid/os/IStatsCompanionService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HSPLandroid/os/IStatsManager$Stub$Proxy;->asBinder()Landroid/os/IBinder; HSPLandroid/os/IStatsManager$Stub$Proxy;->informAllUidData([I[J[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;)V -PLandroid/os/IStatsManager$Stub$Proxy;->informOnePackage(Ljava/lang/String;IJLjava/lang/String;Ljava/lang/String;)V +HPLandroid/os/IStatsManager$Stub$Proxy;->informOnePackage(Ljava/lang/String;IJLjava/lang/String;Ljava/lang/String;)V HSPLandroid/os/IStatsManager$Stub$Proxy;->informPollAlarmFired()V HSPLandroid/os/IStatsManager$Stub$Proxy;->statsCompanionReady()V HSPLandroid/os/IStatsManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IStatsManager; @@ -11207,7 +11662,7 @@ HSPLandroid/os/IStoraged$Stub$Proxy;->onUserStarted(I)V HSPLandroid/os/IStoraged$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IStoraged; HSPLandroid/os/ISystemUpdateManager$Stub;-><init>()V HSPLandroid/os/ISystemUpdateManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/ISystemUpdateManager; -PLandroid/os/ISystemUpdateManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/os/ISystemUpdateManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HSPLandroid/os/IThermalEventListener$Stub$Proxy;->asBinder()Landroid/os/IBinder; HSPLandroid/os/IThermalEventListener$Stub$Proxy;->notifyThrottling(Landroid/os/Temperature;)V HSPLandroid/os/IThermalEventListener$Stub;-><init>()V @@ -11233,12 +11688,13 @@ HSPLandroid/os/IUserManager$Stub$Proxy;->isUserUnlocked(I)Z HSPLandroid/os/IUserManager$Stub$Proxy;->isUserUnlockingOrUnlocked(I)Z HSPLandroid/os/IUserManager$Stub;-><init>()V HSPLandroid/os/IUserManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IUserManager; -PLandroid/os/IUserManager$Stub;->getDefaultTransactionName(I)Ljava/lang/String; +HPLandroid/os/IUserManager$Stub;->getDefaultTransactionName(I)Ljava/lang/String; HSPLandroid/os/IUserManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HSPLandroid/os/IVibratorService$Stub$Proxy;->hasVibrator()Z HSPLandroid/os/IVibratorService$Stub;-><init>()V HSPLandroid/os/IVibratorService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HSPLandroid/os/IVold$Stub$Proxy;->commitChanges()V +HSPLandroid/os/IVold$Stub$Proxy;->destroySandboxForApp(Ljava/lang/String;Ljava/lang/String;I)V HSPLandroid/os/IVold$Stub$Proxy;->fdeClearPassword()V HSPLandroid/os/IVold$Stub$Proxy;->fdeGetPassword()Ljava/lang/String; HSPLandroid/os/IVold$Stub$Proxy;->monitor()V @@ -11248,6 +11704,7 @@ HSPLandroid/os/IVold$Stub$Proxy;->onUserAdded(II)V HSPLandroid/os/IVold$Stub$Proxy;->onUserStarted(I[Ljava/lang/String;[I[Ljava/lang/String;)V HSPLandroid/os/IVold$Stub$Proxy;->prepareUserStorage(Ljava/lang/String;III)V HSPLandroid/os/IVold$Stub$Proxy;->reset()V +HPLandroid/os/IVold$Stub$Proxy;->runIdleMaint(Landroid/os/IVoldTaskListener;)V HSPLandroid/os/IVold$Stub$Proxy;->setListener(Landroid/os/IVoldListener;)V HSPLandroid/os/IVold$Stub$Proxy;->unlockUserKey(IILjava/lang/String;Ljava/lang/String;)V HSPLandroid/os/IVold$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IVold; @@ -11297,12 +11754,15 @@ HSPLandroid/os/MemoryFile;-><init>(Ljava/lang/String;I)V HSPLandroid/os/MemoryFile;->close()V HSPLandroid/os/MemoryFile;->deactivate()V HSPLandroid/os/MemoryFile;->getFileDescriptor()Ljava/io/FileDescriptor; +HSPLandroid/os/MemoryFile;->getSize(Ljava/io/FileDescriptor;)I HSPLandroid/os/MemoryFile;->readBytes([BIII)I HSPLandroid/os/MemoryFile;->writeBytes([BIII)V HSPLandroid/os/Message$1;-><init>()V HSPLandroid/os/Message$1;->createFromParcel(Landroid/os/Parcel;)Landroid/os/Message; HSPLandroid/os/Message$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/os/Message;-><init>()V HSPLandroid/os/Message;->copyFrom(Landroid/os/Message;)V +HSPLandroid/os/Message;->getCallback()Ljava/lang/Runnable; HSPLandroid/os/Message;->getData()Landroid/os/Bundle; HSPLandroid/os/Message;->getTarget()Landroid/os/Handler; HSPLandroid/os/Message;->obtain()Landroid/os/Message; @@ -11358,6 +11818,7 @@ HSPLandroid/os/Parcel;->appendFrom(Landroid/os/Parcel;II)V HSPLandroid/os/Parcel;->copyClassCookies()Ljava/util/Map; HSPLandroid/os/Parcel;->createBinderArrayList()Ljava/util/ArrayList; HSPLandroid/os/Parcel;->createByteArray()[B +HSPLandroid/os/Parcel;->createDoubleArray()[D HSPLandroid/os/Parcel;->createException(ILjava/lang/String;)Ljava/lang/Exception; HSPLandroid/os/Parcel;->createFloatArray()[F HSPLandroid/os/Parcel;->createIntArray()[I @@ -11455,6 +11916,7 @@ HSPLandroid/os/Parcel;->writeParcelableList(Ljava/util/List;I)V HSPLandroid/os/Parcel;->writePersistableBundle(Landroid/os/PersistableBundle;)V HSPLandroid/os/Parcel;->writeSerializable(Ljava/io/Serializable;)V HSPLandroid/os/Parcel;->writeSparseArray(Landroid/util/SparseArray;)V +HSPLandroid/os/Parcel;->writeSparseBooleanArray(Landroid/util/SparseBooleanArray;)V HSPLandroid/os/Parcel;->writeString(Ljava/lang/String;)V HSPLandroid/os/Parcel;->writeStringArray([Ljava/lang/String;)V HSPLandroid/os/Parcel;->writeStringList(Ljava/util/List;)V @@ -11484,7 +11946,7 @@ HSPLandroid/os/ParcelFileDescriptor;->detachFd()I HSPLandroid/os/ParcelFileDescriptor;->dup()Landroid/os/ParcelFileDescriptor; HSPLandroid/os/ParcelFileDescriptor;->dup(Ljava/io/FileDescriptor;)Landroid/os/ParcelFileDescriptor; HSPLandroid/os/ParcelFileDescriptor;->finalize()V -PLandroid/os/ParcelFileDescriptor;->fromData([BLjava/lang/String;)Landroid/os/ParcelFileDescriptor; +HPLandroid/os/ParcelFileDescriptor;->fromData([BLjava/lang/String;)Landroid/os/ParcelFileDescriptor; HSPLandroid/os/ParcelFileDescriptor;->getFd()I HSPLandroid/os/ParcelFileDescriptor;->getFile(Ljava/io/FileDescriptor;)Ljava/io/File; HSPLandroid/os/ParcelFileDescriptor;->getFileDescriptor()Ljava/io/FileDescriptor; @@ -11550,20 +12012,20 @@ HSPLandroid/os/PowerManager$WakeLock;->acquire(J)V HSPLandroid/os/PowerManager$WakeLock;->acquireLocked()V HSPLandroid/os/PowerManager$WakeLock;->finalize()V HSPLandroid/os/PowerManager$WakeLock;->isHeld()Z -PLandroid/os/PowerManager$WakeLock;->lambda$wrap$0$PowerManager$WakeLock(Ljava/lang/Runnable;)V +HPLandroid/os/PowerManager$WakeLock;->lambda$wrap$0$PowerManager$WakeLock(Ljava/lang/Runnable;)V HSPLandroid/os/PowerManager$WakeLock;->release()V HSPLandroid/os/PowerManager$WakeLock;->release(I)V HSPLandroid/os/PowerManager$WakeLock;->setReferenceCounted(Z)V HSPLandroid/os/PowerManager$WakeLock;->setWorkSource(Landroid/os/WorkSource;)V HSPLandroid/os/PowerManager$WakeLock;->toString()Ljava/lang/String; -PLandroid/os/PowerManager$WakeLock;->wrap(Ljava/lang/Runnable;)Ljava/lang/Runnable; +HPLandroid/os/PowerManager$WakeLock;->wrap(Ljava/lang/Runnable;)Ljava/lang/Runnable; HSPLandroid/os/PowerManager;-><init>(Landroid/content/Context;Landroid/os/IPowerManager;Landroid/os/Handler;)V HSPLandroid/os/PowerManager;->getDefaultScreenBrightnessSetting()I HSPLandroid/os/PowerManager;->getLocationPowerSaveMode()I HSPLandroid/os/PowerManager;->getMaximumScreenBrightnessSetting()I HSPLandroid/os/PowerManager;->getMinimumScreenBrightnessSetting()I HSPLandroid/os/PowerManager;->getPowerSaveState(I)Landroid/os/PowerSaveState; -PLandroid/os/PowerManager;->goToSleep(JII)V +HPLandroid/os/PowerManager;->goToSleep(JII)V HSPLandroid/os/PowerManager;->isDeviceIdleMode()Z HSPLandroid/os/PowerManager;->isInteractive()Z HSPLandroid/os/PowerManager;->isLightDeviceIdleMode()Z @@ -11571,11 +12033,11 @@ HSPLandroid/os/PowerManager;->isPowerSaveMode()Z HSPLandroid/os/PowerManager;->isScreenOn()Z HSPLandroid/os/PowerManager;->isWakeLockLevelSupported(I)Z HSPLandroid/os/PowerManager;->newWakeLock(ILjava/lang/String;)Landroid/os/PowerManager$WakeLock; -PLandroid/os/PowerManager;->sleepReasonToString(I)Ljava/lang/String; +HPLandroid/os/PowerManager;->sleepReasonToString(I)Ljava/lang/String; HSPLandroid/os/PowerManager;->userActivity(JII)V HSPLandroid/os/PowerManager;->userActivity(JZ)V HSPLandroid/os/PowerManager;->validateWakeLockParameters(ILjava/lang/String;)V -PLandroid/os/PowerManager;->wakeReasonToString(I)Ljava/lang/String; +HPLandroid/os/PowerManager;->wakeReasonToString(I)Ljava/lang/String; HSPLandroid/os/PowerManager;->wakeUp(JILjava/lang/String;)V HSPLandroid/os/PowerManagerInternal;->registerLowPowerModeObserver(ILjava/util/function/Consumer;)V HSPLandroid/os/PowerManagerInternal;->wakefulnessToString(I)Ljava/lang/String; @@ -11597,8 +12059,8 @@ HSPLandroid/os/Process;->myUid()I HSPLandroid/os/Process;->myUserHandle()Landroid/os/UserHandle; HSPLandroid/os/Process;->setStartTimes(JJ)V HSPLandroid/os/Process;->start(Ljava/lang/String;Ljava/lang/String;II[IIIILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)Landroid/os/Process$ProcessStartResult; -PLandroid/os/Process;->startWebView(Ljava/lang/String;Ljava/lang/String;II[IIIILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)Landroid/os/Process$ProcessStartResult; -PLandroid/os/RecoverySystem;->handleAftermath(Landroid/content/Context;)Ljava/lang/String; +HPLandroid/os/Process;->startWebView(Ljava/lang/String;Ljava/lang/String;II[IIIILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)Landroid/os/Process$ProcessStartResult; +HPLandroid/os/RecoverySystem;->handleAftermath(Landroid/content/Context;)Ljava/lang/String; HSPLandroid/os/Registrant;-><init>(Landroid/os/Handler;ILjava/lang/Object;)V HSPLandroid/os/Registrant;->clear()V HSPLandroid/os/Registrant;->getHandler()Landroid/os/Handler; @@ -11651,7 +12113,7 @@ HSPLandroid/os/ResultReceiver;-><init>(Landroid/os/Handler;)V HSPLandroid/os/ResultReceiver;->send(ILandroid/os/Bundle;)V HSPLandroid/os/ResultReceiver;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/os/SELinux;->restorecon(Ljava/io/File;)Z -PLandroid/os/SELinux;->restoreconRecursive(Ljava/io/File;)Z +HPLandroid/os/SELinux;->restoreconRecursive(Ljava/io/File;)Z HSPLandroid/os/ServiceManager;->addService(Ljava/lang/String;Landroid/os/IBinder;)V HSPLandroid/os/ServiceManager;->addService(Ljava/lang/String;Landroid/os/IBinder;ZI)V HSPLandroid/os/ServiceManager;->checkService(Ljava/lang/String;)Landroid/os/IBinder; @@ -11669,13 +12131,21 @@ HSPLandroid/os/SharedMemory$MemoryRegistration;->acquire()Landroid/os/SharedMemo HSPLandroid/os/SharedMemory$MemoryRegistration;->release()V HSPLandroid/os/SharedMemory$Unmapper;->run()V HSPLandroid/os/SharedMemory;-><init>(Ljava/io/FileDescriptor;)V -PLandroid/os/SharedMemory;->close()V +HPLandroid/os/SharedMemory;->close()V HSPLandroid/os/SharedMemory;->create(Ljava/lang/String;I)Landroid/os/SharedMemory; HSPLandroid/os/SharedMemory;->map(III)Ljava/nio/ByteBuffer; HSPLandroid/os/SharedMemory;->mapReadWrite()Ljava/nio/ByteBuffer; -PLandroid/os/SharedMemory;->setProtect(I)Z -PLandroid/os/SharedMemory;->unmap(Ljava/nio/ByteBuffer;)V +HPLandroid/os/SharedMemory;->setProtect(I)Z +HPLandroid/os/SharedMemory;->unmap(Ljava/nio/ByteBuffer;)V HSPLandroid/os/ShellCallback$1;-><init>()V +HSPLandroid/os/ShellCallback$1;->createFromParcel(Landroid/os/Parcel;)Landroid/os/ShellCallback; +HSPLandroid/os/ShellCallback$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/os/ShellCommand;->exec(Landroid/os/Binder;Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;[Ljava/lang/String;Landroid/os/ShellCallback;Landroid/os/ResultReceiver;)I +HSPLandroid/os/ShellCommand;->getNextArg()Ljava/lang/String; +HSPLandroid/os/ShellCommand;->getNextOption()Ljava/lang/String; +HSPLandroid/os/ShellCommand;->getOutPrintWriter()Ljava/io/PrintWriter; +HSPLandroid/os/ShellCommand;->getRawOutputStream()Ljava/io/OutputStream; +HSPLandroid/os/ShellCommand;->init(Landroid/os/Binder;Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;[Ljava/lang/String;Landroid/os/ShellCallback;I)V HSPLandroid/os/SimpleClock;->instant()Ljava/time/Instant; HSPLandroid/os/StatFs;-><init>(Ljava/lang/String;)V HSPLandroid/os/StatFs;->doStat(Ljava/lang/String;)Landroid/system/StructStatVfs; @@ -11720,6 +12190,7 @@ HSPLandroid/os/StrictMode$AndroidBlockGuardPolicy;->lambda$handleViolationWithTi HSPLandroid/os/StrictMode$AndroidBlockGuardPolicy;->onCustomSlowCall(Ljava/lang/String;)V HSPLandroid/os/StrictMode$AndroidBlockGuardPolicy;->onExplicitGc()V HSPLandroid/os/StrictMode$AndroidBlockGuardPolicy;->onReadFromDisk()V +HSPLandroid/os/StrictMode$AndroidBlockGuardPolicy;->onResourceMismatch(Ljava/lang/Object;)V HSPLandroid/os/StrictMode$AndroidBlockGuardPolicy;->onThreadPolicyViolation(Landroid/os/StrictMode$ViolationInfo;)V HSPLandroid/os/StrictMode$AndroidBlockGuardPolicy;->onUnbufferedIO()V HSPLandroid/os/StrictMode$AndroidBlockGuardPolicy;->onWriteToDisk()V @@ -11810,6 +12281,7 @@ HSPLandroid/os/SystemService$State;-><init>(Ljava/lang/String;ILjava/lang/String HSPLandroid/os/SystemService;->getState(Ljava/lang/String;)Landroid/os/SystemService$State; HSPLandroid/os/SystemService;->isRunning(Ljava/lang/String;)Z HSPLandroid/os/SystemUpdateManager;-><init>(Landroid/os/ISystemUpdateManager;)V +HPLandroid/os/SystemVibrator;-><init>()V HSPLandroid/os/SystemVibrator;-><init>(Landroid/content/Context;)V HSPLandroid/os/SystemVibrator;->cancel()V HSPLandroid/os/SystemVibrator;->hasVibrator()Z @@ -11828,7 +12300,7 @@ HSPLandroid/os/Trace;->setTracingEnabled(ZI)V HSPLandroid/os/Trace;->traceBegin(JLjava/lang/String;)V HSPLandroid/os/Trace;->traceCounter(JLjava/lang/String;I)V HSPLandroid/os/Trace;->traceEnd(J)V -PLandroid/os/TransactionTooLargeException;-><init>(Ljava/lang/String;)V +HPLandroid/os/TransactionTooLargeException;-><init>(Ljava/lang/String;)V HSPLandroid/os/UEventObserver$UEventThread;->addObserver(Ljava/lang/String;Landroid/os/UEventObserver;)V HSPLandroid/os/UEventObserver$UEventThread;->removeObserver(Landroid/os/UEventObserver;)V HSPLandroid/os/UEventObserver$UEventThread;->run()V @@ -11842,7 +12314,7 @@ HSPLandroid/os/UserHandle$1;-><init>()V HSPLandroid/os/UserHandle$1;->createFromParcel(Landroid/os/Parcel;)Landroid/os/UserHandle; HSPLandroid/os/UserHandle$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/os/UserHandle;-><init>(I)V -PLandroid/os/UserHandle;->describeContents()I +HPLandroid/os/UserHandle;->describeContents()I HSPLandroid/os/UserHandle;->equals(Ljava/lang/Object;)Z HSPLandroid/os/UserHandle;->formatUid(Ljava/io/PrintWriter;I)V HSPLandroid/os/UserHandle;->formatUid(Ljava/lang/StringBuilder;I)V @@ -11870,7 +12342,7 @@ HSPLandroid/os/UserHandle;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/os/UserHandle;->writeToParcel(Landroid/os/UserHandle;Landroid/os/Parcel;)V HSPLandroid/os/UserManager$EnforcingUser$1;-><init>()V HSPLandroid/os/UserManager;-><init>(Landroid/content/Context;Landroid/os/IUserManager;)V -PLandroid/os/UserManager;->canAddMoreManagedProfiles(IZ)Z +HPLandroid/os/UserManager;->canAddMoreManagedProfiles(IZ)Z HSPLandroid/os/UserManager;->get(Landroid/content/Context;)Landroid/os/UserManager; HSPLandroid/os/UserManager;->getApplicationRestrictions(Ljava/lang/String;)Landroid/os/Bundle; HSPLandroid/os/UserManager;->getCredentialOwnerProfile(I)I @@ -11905,6 +12377,7 @@ HSPLandroid/os/UserManager;->isPrimaryUser()Z HSPLandroid/os/UserManager;->isQuietModeEnabled(Landroid/os/UserHandle;)Z HSPLandroid/os/UserManager;->isSameProfileGroup(II)Z HSPLandroid/os/UserManager;->isSplitSystemUser()Z +HSPLandroid/os/UserManager;->isSystemUser()Z HSPLandroid/os/UserManager;->isUserAdmin(I)Z HSPLandroid/os/UserManager;->isUserRunning(I)Z HSPLandroid/os/UserManager;->isUserRunning(Landroid/os/UserHandle;)Z @@ -11913,26 +12386,31 @@ HSPLandroid/os/UserManager;->isUserUnlocked()Z HSPLandroid/os/UserManager;->isUserUnlocked(I)Z HSPLandroid/os/UserManager;->isUserUnlocked(Landroid/os/UserHandle;)Z HSPLandroid/os/UserManager;->isUserUnlockingOrUnlocked(I)Z -PLandroid/os/UserManager;->isUserUnlockingOrUnlocked(Landroid/os/UserHandle;)Z +HPLandroid/os/UserManager;->isUserUnlockingOrUnlocked(Landroid/os/UserHandle;)Z HSPLandroid/os/UserManager;->supportsMultipleUsers()Z HSPLandroid/os/VibrationEffect$1;-><init>()V -PLandroid/os/VibrationEffect$1;->createFromParcel(Landroid/os/Parcel;)Landroid/os/VibrationEffect; -PLandroid/os/VibrationEffect$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/os/VibrationEffect$1;->createFromParcel(Landroid/os/Parcel;)Landroid/os/VibrationEffect; +HPLandroid/os/VibrationEffect$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/os/VibrationEffect$OneShot$1;-><init>()V +HPLandroid/os/VibrationEffect$OneShot;->getAmplitude()I +HPLandroid/os/VibrationEffect$OneShot;->getDuration()J +HPLandroid/os/VibrationEffect$OneShot;->resolve(I)Landroid/os/VibrationEffect$OneShot; +HPLandroid/os/VibrationEffect$OneShot;->scale(FI)Landroid/os/VibrationEffect$OneShot; HSPLandroid/os/VibrationEffect$OneShot;->validate()V HSPLandroid/os/VibrationEffect$Prebaked$1;-><init>()V HPLandroid/os/VibrationEffect$Prebaked;->getDuration()J HPLandroid/os/VibrationEffect$Prebaked;->getEffectStrength()I HPLandroid/os/VibrationEffect$Prebaked;->getId()I HPLandroid/os/VibrationEffect$Prebaked;->setEffectStrength(I)V +HPLandroid/os/VibrationEffect$Prebaked;->shouldFallback()Z HSPLandroid/os/VibrationEffect$Prebaked;->validate()V HSPLandroid/os/VibrationEffect$Waveform$1;-><init>()V -PLandroid/os/VibrationEffect$Waveform;->getAmplitudes()[I -PLandroid/os/VibrationEffect$Waveform;->getDuration()J -PLandroid/os/VibrationEffect$Waveform;->getRepeatIndex()I -PLandroid/os/VibrationEffect$Waveform;->getTimings()[J -PLandroid/os/VibrationEffect$Waveform;->resolve(I)Landroid/os/VibrationEffect$Waveform; -PLandroid/os/VibrationEffect$Waveform;->scale(FI)Landroid/os/VibrationEffect$Waveform; +HPLandroid/os/VibrationEffect$Waveform;->getAmplitudes()[I +HPLandroid/os/VibrationEffect$Waveform;->getDuration()J +HPLandroid/os/VibrationEffect$Waveform;->getRepeatIndex()I +HPLandroid/os/VibrationEffect$Waveform;->getTimings()[J +HPLandroid/os/VibrationEffect$Waveform;->resolve(I)Landroid/os/VibrationEffect$Waveform; +HPLandroid/os/VibrationEffect$Waveform;->scale(FI)Landroid/os/VibrationEffect$Waveform; HSPLandroid/os/VibrationEffect$Waveform;->validate()V HSPLandroid/os/VibrationEffect;->createOneShot(JI)Landroid/os/VibrationEffect; HSPLandroid/os/VibrationEffect;->createWaveform([JI)Landroid/os/VibrationEffect; @@ -11947,17 +12425,17 @@ HSPLandroid/os/WorkSource$1;-><init>()V HSPLandroid/os/WorkSource$1;->createFromParcel(Landroid/os/Parcel;)Landroid/os/WorkSource; HSPLandroid/os/WorkSource$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/os/WorkSource$WorkChain$1;-><init>()V -PLandroid/os/WorkSource$WorkChain$1;->createFromParcel(Landroid/os/Parcel;)Landroid/os/WorkSource$WorkChain; +HPLandroid/os/WorkSource$WorkChain$1;->createFromParcel(Landroid/os/Parcel;)Landroid/os/WorkSource$WorkChain; HPLandroid/os/WorkSource$WorkChain$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/os/WorkSource$WorkChain;->equals(Ljava/lang/Object;)Z -PLandroid/os/WorkSource$WorkChain;->getAttributionUid()I -PLandroid/os/WorkSource$WorkChain;->getTags()[Ljava/lang/String; -PLandroid/os/WorkSource$WorkChain;->getUids()[I +HPLandroid/os/WorkSource$WorkChain;->getAttributionUid()I +HPLandroid/os/WorkSource$WorkChain;->getTags()[Ljava/lang/String; +HPLandroid/os/WorkSource$WorkChain;->getUids()[I HSPLandroid/os/WorkSource;-><init>(I)V HSPLandroid/os/WorkSource;-><init>(ILjava/lang/String;)V HSPLandroid/os/WorkSource;-><init>(Landroid/os/Parcel;)V HSPLandroid/os/WorkSource;-><init>(Landroid/os/WorkSource;)V -PLandroid/os/WorkSource;->add(I)Z +HPLandroid/os/WorkSource;->add(I)Z HSPLandroid/os/WorkSource;->add(ILjava/lang/String;)Z HSPLandroid/os/WorkSource;->add(Landroid/os/WorkSource;)Z HSPLandroid/os/WorkSource;->clearNames()V @@ -11968,13 +12446,13 @@ HSPLandroid/os/WorkSource;->get(I)I HSPLandroid/os/WorkSource;->getAttributionUid()I HSPLandroid/os/WorkSource;->getName(I)Ljava/lang/String; HSPLandroid/os/WorkSource;->getWorkChains()Ljava/util/ArrayList; -PLandroid/os/WorkSource;->insert(II)V +HPLandroid/os/WorkSource;->insert(II)V HSPLandroid/os/WorkSource;->insert(IILjava/lang/String;)V HSPLandroid/os/WorkSource;->isChainedBatteryAttributionEnabled(Landroid/content/Context;)Z HSPLandroid/os/WorkSource;->isEmpty()Z HSPLandroid/os/WorkSource;->remove(Landroid/os/WorkSource;)Z HSPLandroid/os/WorkSource;->removeUidsAndNames(Landroid/os/WorkSource;)Z -PLandroid/os/WorkSource;->set(I)V +HPLandroid/os/WorkSource;->set(I)V HSPLandroid/os/WorkSource;->set(Landroid/os/WorkSource;)V HSPLandroid/os/WorkSource;->setReturningDiffs(Landroid/os/WorkSource;)[Landroid/os/WorkSource; HSPLandroid/os/WorkSource;->size()I @@ -12038,7 +12516,20 @@ PLandroid/os/health/HealthKeys$Constants;->getKeys(I)[I PLandroid/os/health/HealthKeys$Constants;->getSize(I)I PLandroid/os/health/HealthKeys$SortedIntArray;->addValue(I)V PLandroid/os/health/HealthKeys$SortedIntArray;->getArray()[I +HSPLandroid/os/health/HealthStats;-><init>(Landroid/os/Parcel;)V +HSPLandroid/os/health/HealthStats;->getMeasurement(I)J +HSPLandroid/os/health/HealthStats;->getStats(I)Ljava/util/Map; +HSPLandroid/os/health/HealthStats;->getTimer(I)Landroid/os/health/TimerStat; +HSPLandroid/os/health/HealthStats;->getTimers(I)Ljava/util/Map; +HSPLandroid/os/health/HealthStats;->hasMeasurement(I)Z +HSPLandroid/os/health/HealthStats;->hasMeasurements(I)Z +HSPLandroid/os/health/HealthStats;->hasStats(I)Z +HSPLandroid/os/health/HealthStats;->hasTimer(I)Z +HSPLandroid/os/health/HealthStats;->hasTimers(I)Z HSPLandroid/os/health/HealthStatsParceler$1;-><init>()V +HSPLandroid/os/health/HealthStatsParceler$1;->createFromParcel(Landroid/os/Parcel;)Landroid/os/health/HealthStatsParceler; +HSPLandroid/os/health/HealthStatsParceler$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/os/health/HealthStatsParceler;->getHealthStats()Landroid/os/health/HealthStats; HPLandroid/os/health/HealthStatsParceler;->writeToParcel(Landroid/os/Parcel;I)V HPLandroid/os/health/HealthStatsWriter;-><init>(Landroid/os/health/HealthKeys$Constants;)V HPLandroid/os/health/HealthStatsWriter;->addMeasurement(IJ)V @@ -12049,11 +12540,15 @@ HPLandroid/os/health/HealthStatsWriter;->addTimers(ILjava/lang/String;Landroid/o HPLandroid/os/health/HealthStatsWriter;->flattenToParcel(Landroid/os/Parcel;)V HPLandroid/os/health/HealthStatsWriter;->writeLongsMap(Landroid/os/Parcel;Landroid/util/ArrayMap;)V HPLandroid/os/health/HealthStatsWriter;->writeParcelableMap(Landroid/os/Parcel;Landroid/util/ArrayMap;)V +HSPLandroid/os/health/SystemHealthManager;->takeMyUidSnapshot()Landroid/os/health/HealthStats; +HSPLandroid/os/health/SystemHealthManager;->takeUidSnapshot(I)Landroid/os/health/HealthStats; HSPLandroid/os/health/TimerStat$1;-><init>()V +HSPLandroid/os/health/TimerStat$1;->createFromParcel(Landroid/os/Parcel;)Landroid/os/health/TimerStat; +HSPLandroid/os/health/TimerStat$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/os/health/TimerStat;-><init>(IJ)V HPLandroid/os/health/TimerStat;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/os/image/IDynamicSystemService$Stub;-><init>()V -PLandroid/os/image/IDynamicSystemService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/os/image/IDynamicSystemService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HSPLandroid/os/storage/IStorageEventListener$Stub$Proxy;->asBinder()Landroid/os/IBinder; HSPLandroid/os/storage/IStorageEventListener$Stub$Proxy;->onStorageStateChanged(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V HSPLandroid/os/storage/IStorageEventListener$Stub$Proxy;->onVolumeStateChanged(Landroid/os/storage/VolumeInfo;II)V @@ -12063,7 +12558,7 @@ HSPLandroid/os/storage/IStorageManager$Stub$Proxy;->getVolumes(I)[Landroid/os/st HSPLandroid/os/storage/IStorageManager$Stub$Proxy;->isUserKeyUnlocked(I)Z HSPLandroid/os/storage/IStorageManager$Stub;-><init>()V HSPLandroid/os/storage/IStorageManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/storage/IStorageManager; -PLandroid/os/storage/IStorageManager$Stub;->getDefaultTransactionName(I)Ljava/lang/String; +HPLandroid/os/storage/IStorageManager$Stub;->getDefaultTransactionName(I)Ljava/lang/String; HSPLandroid/os/storage/IStorageManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HSPLandroid/os/storage/StorageEventListener;->onStorageStateChanged(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V HSPLandroid/os/storage/StorageManager$StorageEventListenerDelegate;->handleMessage(Landroid/os/Message;)Z @@ -12084,8 +12579,8 @@ HSPLandroid/os/storage/StorageManager;->findVolumeByQualifiedUuid(Ljava/lang/Str HSPLandroid/os/storage/StorageManager;->from(Landroid/content/Context;)Landroid/os/storage/StorageManager; HSPLandroid/os/storage/StorageManager;->getAllocatableBytes(Ljava/util/UUID;I)J HSPLandroid/os/storage/StorageManager;->getBestVolumeDescription(Landroid/os/storage/VolumeInfo;)Ljava/lang/String; -PLandroid/os/storage/StorageManager;->getPrimaryStorageSize()J -PLandroid/os/storage/StorageManager;->getPrimaryStorageUuid()Ljava/lang/String; +HPLandroid/os/storage/StorageManager;->getPrimaryStorageSize()J +HPLandroid/os/storage/StorageManager;->getPrimaryStorageUuid()Ljava/lang/String; HSPLandroid/os/storage/StorageManager;->getPrimaryVolume()Landroid/os/storage/StorageVolume; HSPLandroid/os/storage/StorageManager;->getStorageCacheBytes(Ljava/io/File;I)J HSPLandroid/os/storage/StorageManager;->getStorageFullBytes(Ljava/io/File;)J @@ -12152,8 +12647,8 @@ HSPLandroid/os/storage/VolumeInfo;->toString()Ljava/lang/String; HSPLandroid/os/storage/VolumeInfo;->writeToParcel(Landroid/os/Parcel;I)V PLandroid/permission/-$$Lambda$PermissionControllerManager$PendingGetRuntimePermissionBackup$TnLX6gxZCMF3D0czwj_XwNhPIgE;->run()V HSPLandroid/permission/-$$Lambda$PermissionControllerManager$RemoteService$L8N-TbqIPWKu7tyiOxbu_00YKss;-><init>()V -PLandroid/permission/IPermissionController$Stub$Proxy;->asBinder()Landroid/os/IBinder; -PLandroid/permission/IPermissionController$Stub$Proxy;->getRuntimePermissionBackup(Landroid/os/UserHandle;Landroid/os/ParcelFileDescriptor;)V +HPLandroid/permission/IPermissionController$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HPLandroid/permission/IPermissionController$Stub$Proxy;->getRuntimePermissionBackup(Landroid/os/UserHandle;Landroid/os/ParcelFileDescriptor;)V PLandroid/permission/PermissionControllerManager$FileReaderTask;->doInBackground([Ljava/lang/Object;)Ljava/lang/Object; PLandroid/permission/PermissionControllerManager$FileReaderTask;->doInBackground([Ljava/lang/Void;)[B PLandroid/permission/PermissionControllerManager$FileReaderTask;->getRemotePipe()Landroid/os/ParcelFileDescriptor; @@ -12167,7 +12662,7 @@ HSPLandroid/permission/PermissionControllerManager$RemoteService;->getRemoteRequ HSPLandroid/permission/PermissionControllerManager$RemoteService;->getServiceInterface(Landroid/os/IBinder;)Landroid/os/IInterface; HSPLandroid/permission/PermissionControllerManager$RemoteService;->getTimeoutIdleBindMillis()J HSPLandroid/permission/PermissionControllerManager;-><init>(Landroid/content/Context;)V -PLandroid/permission/PermissionControllerManager;->getRuntimePermissionBackup(Landroid/os/UserHandle;Ljava/util/concurrent/Executor;Landroid/permission/PermissionControllerManager$OnGetRuntimePermissionBackupCallback;)V +HPLandroid/permission/PermissionControllerManager;->getRuntimePermissionBackup(Landroid/os/UserHandle;Ljava/util/concurrent/Executor;Landroid/permission/PermissionControllerManager$OnGetRuntimePermissionBackupCallback;)V HSPLandroid/permission/PermissionManager$SplitPermissionInfo;->getNewPermissions()Ljava/util/List; HSPLandroid/permission/PermissionManager$SplitPermissionInfo;->getSplitPermission()Ljava/lang/String; HSPLandroid/permission/PermissionManager$SplitPermissionInfo;->getTargetSdk()I @@ -12205,17 +12700,19 @@ HSPLandroid/provider/-$$Lambda$FontsContract$rqfIZKvP1frnI9vP1hVA8jQN_RE;->run() HSPLandroid/provider/BlockedNumberContract$SystemContract;->shouldShowEmergencyCallNotification(Landroid/content/Context;)Z PLandroid/provider/BlockedNumberContract$SystemContract;->shouldSystemBlockNumber(Landroid/content/Context;Ljava/lang/String;Landroid/os/Bundle;)I HPLandroid/provider/CallLog$Calls;->addCall(Lcom/android/internal/telephony/CallerInfo;Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IIILandroid/telecom/PhoneAccountHandle;JILjava/lang/Long;ZLandroid/os/UserHandle;ZILjava/lang/CharSequence;Ljava/lang/String;Landroid/telecom/CallIdentification;)Landroid/net/Uri; -PLandroid/provider/CallLog$Calls;->addEntryAndRemoveExpiredEntries(Landroid/content/Context;Landroid/os/UserManager;Landroid/os/UserHandle;Landroid/content/ContentValues;)Landroid/net/Uri; -PLandroid/provider/CallLog$Calls;->charSequenceToString(Ljava/lang/CharSequence;)Ljava/lang/String; -PLandroid/provider/CallLog$Calls;->getLogAccountAddress(Landroid/content/Context;Landroid/telecom/PhoneAccountHandle;)Ljava/lang/String; -PLandroid/provider/CallLog$Calls;->getLogNumberPresentation(Ljava/lang/String;I)I +HPLandroid/provider/CallLog$Calls;->addEntryAndRemoveExpiredEntries(Landroid/content/Context;Landroid/os/UserManager;Landroid/os/UserHandle;Landroid/content/ContentValues;)Landroid/net/Uri; +HPLandroid/provider/CallLog$Calls;->charSequenceToString(Ljava/lang/CharSequence;)Ljava/lang/String; +HPLandroid/provider/CallLog$Calls;->getLogAccountAddress(Landroid/content/Context;Landroid/telecom/PhoneAccountHandle;)Ljava/lang/String; +HPLandroid/provider/CallLog$Calls;->getLogNumberPresentation(Ljava/lang/String;I)I +HSPLandroid/provider/CallLog$Calls;->shouldHaveSharedCallLogEntries(Landroid/content/Context;Landroid/os/UserManager;I)Z HSPLandroid/provider/ContactsContract$CommonDataKinds$Phone;->getTypeLabel(Landroid/content/res/Resources;ILjava/lang/CharSequence;)Ljava/lang/CharSequence; HSPLandroid/provider/ContactsContract$CommonDataKinds$Phone;->getTypeLabelResource(I)I HSPLandroid/provider/ContactsContract$Contacts;->getLookupUri(JLjava/lang/String;)Landroid/net/Uri; HSPLandroid/provider/ContactsContract$Contacts;->isEnterpriseContactId(J)Z -PLandroid/provider/DeviceConfig$1;->onChange(ZLandroid/net/Uri;)V +HPLandroid/provider/DeviceConfig$1;->onChange(ZLandroid/net/Uri;)V PLandroid/provider/DeviceConfig$3;->run()V HSPLandroid/provider/DeviceConfig;->addOnPropertyChangedListener(Ljava/lang/String;Ljava/util/concurrent/Executor;Landroid/provider/DeviceConfig$OnPropertyChangedListener;)V +HSPLandroid/provider/DeviceConfig;->decrementNamespace(Ljava/lang/String;)V HSPLandroid/provider/DeviceConfig;->enforceReadPermission(Landroid/content/Context;Ljava/lang/String;)V HSPLandroid/provider/DeviceConfig;->getBoolean(Ljava/lang/String;Ljava/lang/String;Z)Z HSPLandroid/provider/DeviceConfig;->getFloat(Ljava/lang/String;Ljava/lang/String;F)F @@ -12225,10 +12722,11 @@ HSPLandroid/provider/DeviceConfig;->getProperty(Ljava/lang/String;Ljava/lang/Str HSPLandroid/provider/DeviceConfig;->getString(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; HPLandroid/provider/DeviceConfig;->handleChange(Landroid/net/Uri;)V HSPLandroid/provider/DeviceConfig;->incrementNamespace(Ljava/lang/String;)V +HSPLandroid/provider/DeviceConfig;->removeOnPropertyChangedListener(Landroid/provider/DeviceConfig$OnPropertyChangedListener;)V PLandroid/provider/Downloads;->removeAllDownloadsByPackage(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;)V HSPLandroid/provider/FontRequest;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;)V HSPLandroid/provider/FontsContract$1;-><init>()V -PLandroid/provider/FontsContract$1;->run()V +HPLandroid/provider/FontsContract$1;->run()V HSPLandroid/provider/FontsContract$FontFamilyResult;->getFonts()[Landroid/provider/FontsContract$FontInfo; HSPLandroid/provider/FontsContract$FontFamilyResult;->getStatusCode()I HSPLandroid/provider/FontsContract$FontInfo;->getAxes()[Landroid/graphics/fonts/FontVariationAxis; @@ -12250,6 +12748,7 @@ HSPLandroid/provider/MediaStore$Audio$Media;->getContentUri(Ljava/lang/String;)L HSPLandroid/provider/MediaStore$Files;->getContentUri(Ljava/lang/String;)Landroid/net/Uri; HSPLandroid/provider/MediaStore$Images$Media;->getContentUri(Ljava/lang/String;)Landroid/net/Uri; HSPLandroid/provider/MediaStore$Video$Media;->getContentUri(Ljava/lang/String;)Landroid/net/Uri; +HSPLandroid/provider/SearchIndexableResource;-><init>(Landroid/content/Context;)V HSPLandroid/provider/SearchIndexablesProvider;-><init>()V HSPLandroid/provider/SearchIndexablesProvider;->attachInfo(Landroid/content/Context;Landroid/content/pm/ProviderInfo;)V HSPLandroid/provider/Settings$ContentProviderHolder;-><init>(Landroid/net/Uri;)V @@ -12364,8 +12863,9 @@ HSPLandroid/security/KeyStore$KeystoreResultPromise;->onFinished(Landroid/securi HSPLandroid/security/KeyStore$OperationPromise;->onFinished(Landroid/security/keymaster/OperationResult;)V HSPLandroid/security/KeyStore$State;-><init>(Ljava/lang/String;I)V HSPLandroid/security/KeyStore;->abort(Landroid/os/IBinder;)I -PLandroid/security/KeyStore;->addAuthToken([B)I +HPLandroid/security/KeyStore;->addAuthToken([B)I HSPLandroid/security/KeyStore;->begin(Ljava/lang/String;IZLandroid/security/keymaster/KeymasterArguments;[BI)Landroid/security/keymaster/OperationResult; +HSPLandroid/security/KeyStore;->clearUid(I)Z HSPLandroid/security/KeyStore;->contains(Ljava/lang/String;)Z HSPLandroid/security/KeyStore;->contains(Ljava/lang/String;I)Z HSPLandroid/security/KeyStore;->finish(Landroid/os/IBinder;Landroid/security/keymaster/KeymasterArguments;[B[B)Landroid/security/keymaster/OperationResult; @@ -12374,13 +12874,13 @@ HSPLandroid/security/KeyStore;->getKeyCharacteristics(Ljava/lang/String;Landroid HSPLandroid/security/KeyStore;->getToken()Landroid/os/IBinder; HPLandroid/security/KeyStore;->grant(Ljava/lang/String;I)Ljava/lang/String; HSPLandroid/security/KeyStore;->state(I)Landroid/security/KeyStore$State; -PLandroid/security/KeyStore;->unlock(ILjava/lang/String;)Z +HPLandroid/security/KeyStore;->unlock(ILjava/lang/String;)Z HSPLandroid/security/KeyStore;->update(Landroid/os/IBinder;Landroid/security/keymaster/KeymasterArguments;[B)Landroid/security/keymaster/OperationResult; HSPLandroid/security/NetworkSecurityPolicy;-><init>()V -PLandroid/security/Scrypt;-><init>()V -PLandroid/security/Scrypt;->scrypt([B[BIIII)[B +HPLandroid/security/Scrypt;-><init>()V +HPLandroid/security/Scrypt;->scrypt([B[BIIII)[B HSPLandroid/security/keymaster/IKeyAttestationApplicationIdProvider$Stub;-><init>()V -PLandroid/security/keymaster/IKeyAttestationApplicationIdProvider$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/security/keymaster/IKeyAttestationApplicationIdProvider$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z PLandroid/security/keymaster/KeyAttestationApplicationId$1;-><init>()V PLandroid/security/keymaster/KeyAttestationApplicationId;->writeToParcel(Landroid/os/Parcel;I)V PLandroid/security/keymaster/KeyAttestationPackageInfo$1;-><init>()V @@ -12476,13 +12976,14 @@ HSPLandroid/security/keystore/IKeystoreResponseCallback$Stub;->onTransact(ILandr HSPLandroid/security/keystore/IKeystoreService$Stub$Proxy;->abort(Landroid/security/keystore/IKeystoreResponseCallback;Landroid/os/IBinder;)I HPLandroid/security/keystore/IKeystoreService$Stub$Proxy;->addAuthToken([B)I HSPLandroid/security/keystore/IKeystoreService$Stub$Proxy;->begin(Landroid/security/keystore/IKeystoreOperationResultCallback;Landroid/os/IBinder;Ljava/lang/String;IZLandroid/security/keymaster/KeymasterArguments;[BI)I +HSPLandroid/security/keystore/IKeystoreService$Stub$Proxy;->clear_uid(J)I HSPLandroid/security/keystore/IKeystoreService$Stub$Proxy;->exist(Ljava/lang/String;I)I HSPLandroid/security/keystore/IKeystoreService$Stub$Proxy;->finish(Landroid/security/keystore/IKeystoreOperationResultCallback;Landroid/os/IBinder;Landroid/security/keymaster/KeymasterArguments;[B[B)I HSPLandroid/security/keystore/IKeystoreService$Stub$Proxy;->getKeyCharacteristics(Landroid/security/keystore/IKeystoreKeyCharacteristicsCallback;Ljava/lang/String;Landroid/security/keymaster/KeymasterBlob;Landroid/security/keymaster/KeymasterBlob;I)I HSPLandroid/security/keystore/IKeystoreService$Stub$Proxy;->getState(I)I HPLandroid/security/keystore/IKeystoreService$Stub$Proxy;->grant(Ljava/lang/String;I)Ljava/lang/String; HSPLandroid/security/keystore/IKeystoreService$Stub$Proxy;->onKeyguardVisibilityChanged(ZI)I -PLandroid/security/keystore/IKeystoreService$Stub$Proxy;->unlock(ILjava/lang/String;)I +HPLandroid/security/keystore/IKeystoreService$Stub$Proxy;->unlock(ILjava/lang/String;)I HSPLandroid/security/keystore/IKeystoreService$Stub$Proxy;->update(Landroid/security/keystore/IKeystoreOperationResultCallback;Landroid/os/IBinder;Landroid/security/keymaster/KeymasterArguments;[B)I HSPLandroid/security/keystore/IKeystoreService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/security/keystore/IKeystoreService; HSPLandroid/security/keystore/KeyProperties$KeyAlgorithm;->fromKeymasterSecretKeyAlgorithm(II)Ljava/lang/String; @@ -12533,6 +13034,7 @@ HSPLandroid/security/net/config/ApplicationConfig;->getConfigForHostname(Ljava/l HSPLandroid/security/net/config/ApplicationConfig;->getDefaultInstance()Landroid/security/net/config/ApplicationConfig; HSPLandroid/security/net/config/ApplicationConfig;->setDefaultInstance(Landroid/security/net/config/ApplicationConfig;)V HSPLandroid/security/net/config/ConfigNetworkSecurityPolicy;->isCertificateTransparencyVerificationRequired(Ljava/lang/String;)Z +HSPLandroid/security/net/config/ConfigNetworkSecurityPolicy;->isCleartextTrafficPermitted(Ljava/lang/String;)Z HSPLandroid/security/net/config/DirectoryCertificateSource$3;->match(Ljava/security/cert/X509Certificate;)Z HSPLandroid/security/net/config/DirectoryCertificateSource;-><init>(Ljava/io/File;)V HSPLandroid/security/net/config/DirectoryCertificateSource;->findCert(Ljavax/security/auth/x500/X500Principal;Landroid/security/net/config/DirectoryCertificateSource$CertSelector;)Ljava/security/cert/X509Certificate; @@ -12582,6 +13084,7 @@ HSPLandroid/security/net/config/XmlConfigSource;->getDefaultConfig()Landroid/sec HSPLandroid/security/net/config/XmlConfigSource;->getPerDomainConfigs()Ljava/util/Set; HSPLandroid/security/net/config/XmlConfigSource;->parseCertificatesEntry(Landroid/content/res/XmlResourceParser;Z)Landroid/security/net/config/CertificatesEntryRef; HSPLandroid/security/net/config/XmlConfigSource;->parseConfigEntry(Landroid/content/res/XmlResourceParser;Ljava/util/Set;Landroid/security/net/config/NetworkSecurityConfig$Builder;I)Ljava/util/List; +HSPLandroid/security/net/config/XmlConfigSource;->parseDomain(Landroid/content/res/XmlResourceParser;Ljava/util/Set;)Landroid/security/net/config/Domain; HSPLandroid/security/net/config/XmlConfigSource;->parseNetworkSecurityConfig(Landroid/content/res/XmlResourceParser;)V HSPLandroid/security/net/config/XmlConfigSource;->parseTrustAnchors(Landroid/content/res/XmlResourceParser;Z)Ljava/util/Collection; PLandroid/service/appprediction/IPredictionService$Stub$Proxy;->notifyAppTargetEvent(Landroid/app/prediction/AppPredictionSessionId;Landroid/app/prediction/AppTargetEvent;)V @@ -12633,6 +13136,7 @@ HSPLandroid/service/contentcapture/IContentCaptureServiceCallback$Stub;-><init>( HSPLandroid/service/contentcapture/IContentCaptureServiceCallback$Stub;->asBinder()Landroid/os/IBinder; PLandroid/service/contentcapture/IContentCaptureServiceCallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z PLandroid/service/contentcapture/SnapshotData$1;-><init>()V +HSPLandroid/service/dreams/IDreamManager$Stub$Proxy;->getDefaultDreamComponent()Landroid/content/ComponentName; HSPLandroid/service/dreams/IDreamManager$Stub;-><init>()V HSPLandroid/service/dreams/IDreamManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/dreams/IDreamManager; HSPLandroid/service/dreams/IDreamManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z @@ -12654,8 +13158,15 @@ HSPLandroid/service/euicc/IGetEuiccProfileInfoListCallback$Stub;->onTransact(ILa PLandroid/service/gatekeeper/GateKeeperResponse$1;-><init>()V PLandroid/service/gatekeeper/GateKeeperResponse$1;->createFromParcel(Landroid/os/Parcel;)Landroid/service/gatekeeper/GateKeeperResponse; PLandroid/service/gatekeeper/GateKeeperResponse$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; -PLandroid/service/gatekeeper/IGateKeeperService$Stub$Proxy;->verifyChallenge(IJ[B[B)Landroid/service/gatekeeper/GateKeeperResponse; +HPLandroid/service/gatekeeper/IGateKeeperService$Stub$Proxy;->verifyChallenge(IJ[B[B)Landroid/service/gatekeeper/GateKeeperResponse; HSPLandroid/service/gatekeeper/IGateKeeperService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/gatekeeper/IGateKeeperService; +HSPLandroid/service/media/IMediaBrowserService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLandroid/service/media/IMediaBrowserServiceCallbacks$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HSPLandroid/service/media/MediaBrowserService$ServiceBinder$1;->run()V +HSPLandroid/service/media/MediaBrowserService$ServiceBinder;->connect(Ljava/lang/String;Landroid/os/Bundle;Landroid/service/media/IMediaBrowserServiceCallbacks;)V +HSPLandroid/service/media/MediaBrowserService;-><init>()V +HSPLandroid/service/media/MediaBrowserService;->onBind(Landroid/content/Intent;)Landroid/os/IBinder; +HSPLandroid/service/media/MediaBrowserService;->onCreate()V HSPLandroid/service/notification/Adjustment$1;-><init>()V HSPLandroid/service/notification/Adjustment$1;->createFromParcel(Landroid/os/Parcel;)Landroid/service/notification/Adjustment; HSPLandroid/service/notification/Adjustment$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; @@ -12703,9 +13214,10 @@ HSPLandroid/service/notification/INotificationListener$Stub;->onTransact(ILandro HSPLandroid/service/notification/IStatusBarNotificationHolder$Stub$Proxy;->get()Landroid/service/notification/StatusBarNotification; HSPLandroid/service/notification/IStatusBarNotificationHolder$Stub;-><init>()V HSPLandroid/service/notification/IStatusBarNotificationHolder$Stub;->asBinder()Landroid/os/IBinder; +HPLandroid/service/notification/IStatusBarNotificationHolder$Stub;->getDefaultTransactionName(I)Ljava/lang/String; HSPLandroid/service/notification/IStatusBarNotificationHolder$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HSPLandroid/service/notification/NotificationAssistantService$MyHandler;->handleMessage(Landroid/os/Message;)V -PLandroid/service/notification/NotificationAssistantService$NotificationAssistantServiceWrapper;->onActionClicked(Ljava/lang/String;Landroid/app/Notification$Action;I)V +HPLandroid/service/notification/NotificationAssistantService$NotificationAssistantServiceWrapper;->onActionClicked(Ljava/lang/String;Landroid/app/Notification$Action;I)V HSPLandroid/service/notification/NotificationAssistantService$NotificationAssistantServiceWrapper;->onNotificationEnqueuedWithChannel(Landroid/service/notification/IStatusBarNotificationHolder;Landroid/app/NotificationChannel;)V HSPLandroid/service/notification/NotificationAssistantService$NotificationAssistantServiceWrapper;->onNotificationExpansionChanged(Ljava/lang/String;ZZ)V HSPLandroid/service/notification/NotificationAssistantService$NotificationAssistantServiceWrapper;->onNotificationsSeen(Ljava/util/List;)V @@ -12755,6 +13267,7 @@ HSPLandroid/service/notification/NotificationListenerService$RankingMap;->getSup HSPLandroid/service/notification/NotificationListenerService$RankingMap;->getUserSentiment(Ljava/lang/String;)I HSPLandroid/service/notification/NotificationListenerService$RankingMap;->getVisibilityOverride(Ljava/lang/String;)I HSPLandroid/service/notification/NotificationListenerService$RankingMap;->isIntercepted(Ljava/lang/String;)Z +HSPLandroid/service/notification/NotificationListenerService;-><init>()V HSPLandroid/service/notification/NotificationListenerService;->cleanUpNotificationList(Landroid/content/pm/ParceledListSlice;)[Landroid/service/notification/StatusBarNotification; HSPLandroid/service/notification/NotificationListenerService;->createLegacyIconExtras(Landroid/app/Notification;)V HSPLandroid/service/notification/NotificationListenerService;->getActiveNotifications()[Landroid/service/notification/StatusBarNotification; @@ -12767,6 +13280,8 @@ HSPLandroid/service/notification/NotificationListenerService;->onDestroy()V HSPLandroid/service/notification/NotificationListenerService;->onInterruptionFilterChanged(I)V HSPLandroid/service/notification/NotificationListenerService;->onNotificationPosted(Landroid/service/notification/StatusBarNotification;)V HSPLandroid/service/notification/NotificationListenerService;->onNotificationRankingUpdate(Landroid/service/notification/NotificationListenerService$RankingMap;)V +HSPLandroid/service/notification/NotificationListenerService;->onNotificationRemoved(Landroid/service/notification/StatusBarNotification;Landroid/service/notification/NotificationListenerService$RankingMap;I)V +HSPLandroid/service/notification/NotificationListenerService;->onNotificationRemoved(Landroid/service/notification/StatusBarNotification;Landroid/service/notification/NotificationListenerService$RankingMap;Landroid/service/notification/NotificationStats;I)V HSPLandroid/service/notification/NotificationRankingUpdate$1;-><init>()V HSPLandroid/service/notification/NotificationRankingUpdate$1;->createFromParcel(Landroid/os/Parcel;)Landroid/service/notification/NotificationRankingUpdate; HSPLandroid/service/notification/NotificationRankingUpdate$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; @@ -12795,6 +13310,7 @@ HSPLandroid/service/notification/NotificationStats$1;-><init>()V HSPLandroid/service/notification/NotificationStats$1;->createFromParcel(Landroid/os/Parcel;)Landroid/service/notification/NotificationStats; HSPLandroid/service/notification/NotificationStats$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/service/notification/NotificationStats;-><init>(Landroid/os/Parcel;)V +HPLandroid/service/notification/NotificationStats;->hasInteracted()Z HSPLandroid/service/notification/NotificationStats;->hasSeen()Z HSPLandroid/service/notification/NotificationStats;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/service/notification/NotifyingApp$1;-><init>()V @@ -12832,7 +13348,7 @@ HSPLandroid/service/notification/StatusBarNotification;->groupKey()Ljava/lang/St HSPLandroid/service/notification/StatusBarNotification;->isAppGroup()Z HSPLandroid/service/notification/StatusBarNotification;->isGroup()Z HSPLandroid/service/notification/StatusBarNotification;->key()Ljava/lang/String; -PLandroid/service/notification/StatusBarNotification;->setOverrideGroupKey(Ljava/lang/String;)V +HPLandroid/service/notification/StatusBarNotification;->setOverrideGroupKey(Ljava/lang/String;)V HSPLandroid/service/notification/StatusBarNotification;->shortenTag(Ljava/lang/String;)Ljava/lang/String; HSPLandroid/service/notification/StatusBarNotification;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/service/notification/ZenModeConfig$1;-><init>()V @@ -12894,12 +13410,14 @@ HSPLandroid/service/notification/ZenPolicy;->apply(Landroid/service/notification HSPLandroid/service/notification/ZenPolicy;->getZenPolicyPriorityCategoryState(I)I HSPLandroid/service/notification/ZenPolicy;->getZenPolicyVisualEffectState(I)I HSPLandroid/service/oemlock/IOemLockService$Stub;-><init>()V +HPLandroid/service/oemlock/IOemLockService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HSPLandroid/service/persistentdata/IPersistentDataBlockService$Stub;-><init>()V -PLandroid/service/persistentdata/IPersistentDataBlockService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/service/persistentdata/IPersistentDataBlockService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z PLandroid/service/textclassifier/ITextClassifierCallback$Stub$Proxy;->asBinder()Landroid/os/IBinder; HSPLandroid/service/textclassifier/ITextClassifierCallback$Stub;-><init>()V HSPLandroid/service/textclassifier/ITextClassifierCallback$Stub;->asBinder()Landroid/os/IBinder; HSPLandroid/service/textclassifier/ITextClassifierCallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLandroid/service/textclassifier/ITextClassifierService$Stub$Proxy;->onGenerateLinks(Landroid/view/textclassifier/TextClassificationSessionId;Landroid/view/textclassifier/TextLinks$Request;Landroid/service/textclassifier/ITextClassifierCallback;)V HPLandroid/service/textclassifier/ITextClassifierService$Stub$Proxy;->onSuggestConversationActions(Landroid/view/textclassifier/TextClassificationSessionId;Landroid/view/textclassifier/ConversationActions$Request;Landroid/service/textclassifier/ITextClassifierCallback;)V HPLandroid/service/textclassifier/ITextClassifierService$Stub$Proxy;->onTextClassifierEvent(Landroid/view/textclassifier/TextClassificationSessionId;Landroid/view/textclassifier/TextClassifierEvent;)V HSPLandroid/service/textclassifier/ITextClassifierService$Stub;-><init>()V @@ -12917,7 +13435,7 @@ PLandroid/service/trust/ITrustAgentServiceCallback$Stub;-><init>()V PLandroid/service/trust/ITrustAgentServiceCallback$Stub;->asBinder()Landroid/os/IBinder; PLandroid/service/voice/IVoiceInteractionService$Stub$Proxy;->asBinder()Landroid/os/IBinder; PLandroid/service/voice/IVoiceInteractionService$Stub$Proxy;->ready()V -PLandroid/service/voice/IVoiceInteractionService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/voice/IVoiceInteractionService; +HPLandroid/service/voice/IVoiceInteractionService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/voice/IVoiceInteractionService; PLandroid/service/voice/IVoiceInteractionSession$Stub$Proxy;->asBinder()Landroid/os/IBinder; PLandroid/service/voice/IVoiceInteractionSession$Stub$Proxy;->closeSystemDialogs()V PLandroid/service/voice/IVoiceInteractionSession$Stub$Proxy;->handleAssist(Landroid/os/Bundle;Landroid/app/assist/AssistStructure;Landroid/app/assist/AssistContent;II)V @@ -12927,7 +13445,7 @@ PLandroid/service/voice/IVoiceInteractionSession$Stub$Proxy;->onLockscreenShown( PLandroid/service/voice/IVoiceInteractionSession$Stub$Proxy;->show(Landroid/os/Bundle;ILcom/android/internal/app/IVoiceInteractionSessionShowCallback;)V PLandroid/service/voice/IVoiceInteractionSession$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/voice/IVoiceInteractionSession; PLandroid/service/voice/IVoiceInteractionSessionService$Stub$Proxy;->newSession(Landroid/os/IBinder;Landroid/os/Bundle;I)V -PLandroid/service/voice/IVoiceInteractionSessionService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/voice/IVoiceInteractionSessionService; +HPLandroid/service/voice/IVoiceInteractionSessionService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/voice/IVoiceInteractionSessionService; HSPLandroid/service/voice/VoiceInteractionServiceInfo;-><init>(Landroid/content/pm/PackageManager;Landroid/content/ComponentName;I)V HSPLandroid/service/voice/VoiceInteractionServiceInfo;-><init>(Landroid/content/pm/PackageManager;Landroid/content/pm/ServiceInfo;)V HSPLandroid/service/voice/VoiceInteractionServiceInfo;->getParseError()Ljava/lang/String; @@ -12977,12 +13495,13 @@ HSPLandroid/system/Os;->capget(Landroid/system/StructCapUserHeader;)[Landroid/sy HSPLandroid/system/Os;->chmod(Ljava/lang/String;I)V HSPLandroid/system/Os;->chown(Ljava/lang/String;II)V HSPLandroid/system/Os;->close(Ljava/io/FileDescriptor;)V -PLandroid/system/Os;->dup(Ljava/io/FileDescriptor;)Ljava/io/FileDescriptor; +HPLandroid/system/Os;->dup(Ljava/io/FileDescriptor;)Ljava/io/FileDescriptor; HSPLandroid/system/Os;->fchmod(Ljava/io/FileDescriptor;I)V HSPLandroid/system/Os;->fchown(Ljava/io/FileDescriptor;II)V HSPLandroid/system/Os;->fcntlInt(Ljava/io/FileDescriptor;II)I +HSPLandroid/system/Os;->fdatasync(Ljava/io/FileDescriptor;)V HSPLandroid/system/Os;->fstat(Ljava/io/FileDescriptor;)Landroid/system/StructStat; -PLandroid/system/Os;->fsync(Ljava/io/FileDescriptor;)V +HPLandroid/system/Os;->fsync(Ljava/io/FileDescriptor;)V HSPLandroid/system/Os;->getenv(Ljava/lang/String;)Ljava/lang/String; HSPLandroid/system/Os;->getgid()I HSPLandroid/system/Os;->getpeername(Ljava/io/FileDescriptor;)Ljava/net/SocketAddress; @@ -13039,8 +13558,12 @@ HSPLandroid/telecom/AudioState$1;-><init>()V HSPLandroid/telecom/CallAudioState$1;-><init>()V HSPLandroid/telecom/CallAudioState$1;->createFromParcel(Landroid/os/Parcel;)Landroid/telecom/CallAudioState; HSPLandroid/telecom/CallAudioState$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/telecom/CallAudioState;-><init>(Landroid/telecom/CallAudioState;)V +HSPLandroid/telecom/CallAudioState;-><init>(ZII)V HSPLandroid/telecom/CallAudioState;->audioRouteToString(I)Ljava/lang/String; HSPLandroid/telecom/CallAudioState;->equals(Ljava/lang/Object;)Z +HSPLandroid/telecom/CallAudioState;->getRoute()I +HSPLandroid/telecom/CallAudioState;->getSupportedRouteMask()I HSPLandroid/telecom/CallAudioState;->toString()Ljava/lang/String; HPLandroid/telecom/CallAudioState;->writeToParcel(Landroid/os/Parcel;I)V PLandroid/telecom/Connection;->capabilitiesToString(I)Ljava/lang/String; @@ -13054,15 +13577,33 @@ PLandroid/telecom/ConnectionRequest$1;->createFromParcel(Landroid/os/Parcel;)Lja PLandroid/telecom/ConnectionRequest$Builder;->build()Landroid/telecom/ConnectionRequest; PLandroid/telecom/ConnectionRequest;-><init>(Landroid/os/Parcel;)V PLandroid/telecom/ConnectionRequest;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/telecom/ConnectionService;-><init>()V +HPLandroid/telecom/ConnectionService;->access$100(Landroid/telecom/ConnectionService;)Landroid/telecom/ConnectionServiceAdapter; +HPLandroid/telecom/ConnectionService;->access$1900(Landroid/telecom/ConnectionService;Ljava/lang/String;Landroid/telecom/CallAudioState;)V +HPLandroid/telecom/ConnectionService;->access$200(Landroid/telecom/ConnectionService;)V +HPLandroid/telecom/ConnectionService;->access$300(Landroid/telecom/ConnectionService;)Z +HPLandroid/telecom/ConnectionService;->access$500(Landroid/telecom/ConnectionService;)Ljava/util/List; +HPLandroid/telecom/ConnectionService;->access$600(Landroid/telecom/ConnectionService;Ljava/lang/String;)V +HPLandroid/telecom/ConnectionService;->addConnection(Landroid/telecom/PhoneAccountHandle;Ljava/lang/String;Landroid/telecom/Connection;)V +HPLandroid/telecom/ConnectionService;->createConnection(Landroid/telecom/PhoneAccountHandle;Ljava/lang/String;Landroid/telecom/ConnectionRequest;ZZ)V +HPLandroid/telecom/ConnectionService;->createIdList(Ljava/util/List;)Ljava/util/List; +HPLandroid/telecom/ConnectionService;->endAllConnections()V +HPLandroid/telecom/ConnectionService;->findConnectionForAction(Ljava/lang/String;Ljava/lang/String;)Landroid/telecom/Connection; +HPLandroid/telecom/ConnectionService;->getAllConnections()Ljava/util/Collection; +HPLandroid/telecom/ConnectionService;->notifyCreateConnectionComplete(Ljava/lang/String;)V +HPLandroid/telecom/ConnectionService;->onBind(Landroid/content/Intent;)Landroid/os/IBinder; +HPLandroid/telecom/ConnectionService;->onCallAudioStateChanged(Ljava/lang/String;Landroid/telecom/CallAudioState;)V +HPLandroid/telecom/ConnectionService;->onUnbind(Landroid/content/Intent;)Z +HPLandroid/telecom/ConnectionService;->removeConnection(Landroid/telecom/Connection;)V HSPLandroid/telecom/DefaultDialerManager;->getDefaultDialerApplication(Landroid/content/Context;I)Ljava/lang/String; HSPLandroid/telecom/DisconnectCause$1;-><init>()V HSPLandroid/telecom/DisconnectCause$1;->createFromParcel(Landroid/os/Parcel;)Landroid/telecom/DisconnectCause; HSPLandroid/telecom/DisconnectCause$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/telecom/DisconnectCause;-><init>(I)V HPLandroid/telecom/DisconnectCause;->toString()Ljava/lang/String; -PLandroid/telecom/Log;->addEvent(Landroid/telecom/Logging/EventManager$Loggable;Ljava/lang/String;)V +HPLandroid/telecom/Log;->addEvent(Landroid/telecom/Logging/EventManager$Loggable;Ljava/lang/String;)V HSPLandroid/telecom/Log;->addEvent(Landroid/telecom/Logging/EventManager$Loggable;Ljava/lang/String;Ljava/lang/Object;)V -PLandroid/telecom/Log;->addEvent(Landroid/telecom/Logging/EventManager$Loggable;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V +HPLandroid/telecom/Log;->addEvent(Landroid/telecom/Logging/EventManager$Loggable;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V HSPLandroid/telecom/Log;->addRequestResponsePair(Landroid/telecom/Logging/EventManager$TimedEventPair;)V HSPLandroid/telecom/Log;->buildMessage(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; HSPLandroid/telecom/Log;->continueSession(Landroid/telecom/Logging/Session;Ljava/lang/String;)V @@ -13071,7 +13612,7 @@ HSPLandroid/telecom/Log;->d(Ljava/lang/Object;Ljava/lang/String;[Ljava/lang/Obje HSPLandroid/telecom/Log;->d(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V HSPLandroid/telecom/Log;->endSession()V HSPLandroid/telecom/Log;->getEventManager()Landroid/telecom/Logging/EventManager; -PLandroid/telecom/Log;->getExternalSession()Landroid/telecom/Logging/Session$Info; +HPLandroid/telecom/Log;->getExternalSession()Landroid/telecom/Logging/Session$Info; HSPLandroid/telecom/Log;->getSessionId()Ljava/lang/String; HSPLandroid/telecom/Log;->getSessionManager()Landroid/telecom/Logging/SessionManager; HSPLandroid/telecom/Log;->i(Ljava/lang/Object;Ljava/lang/String;[Ljava/lang/Object;)V @@ -13086,8 +13627,9 @@ HSPLandroid/telecom/Log;->setSessionContext(Landroid/content/Context;)V HSPLandroid/telecom/Log;->setTag(Ljava/lang/String;)V HPLandroid/telecom/Log;->startSession(Landroid/telecom/Logging/Session$Info;Ljava/lang/String;)V HSPLandroid/telecom/Log;->startSession(Ljava/lang/String;)V +HPLandroid/telecom/Log;->startSession(Ljava/lang/String;Ljava/lang/String;)V HSPLandroid/telecom/Log;->v(Ljava/lang/Object;Ljava/lang/String;[Ljava/lang/Object;)V -PLandroid/telecom/Log;->w(Ljava/lang/Object;Ljava/lang/String;[Ljava/lang/Object;)V +HPLandroid/telecom/Log;->w(Ljava/lang/Object;Ljava/lang/String;[Ljava/lang/Object;)V HSPLandroid/telecom/Logging/-$$Lambda$L5F_SL2jOCUETYvgdB36aGwY50E;-><init>()V HSPLandroid/telecom/Logging/-$$Lambda$L5F_SL2jOCUETYvgdB36aGwY50E;->get()I HPLandroid/telecom/Logging/-$$Lambda$SessionManager$VyH2gT1EjIvzDy_C9JfTT60CISM;->run()V @@ -13188,6 +13730,7 @@ HSPLandroid/telecom/PhoneAccount;->builder(Landroid/telecom/PhoneAccountHandle;L HSPLandroid/telecom/PhoneAccount;->capabilitiesToString()Ljava/lang/String; HSPLandroid/telecom/PhoneAccount;->equals(Ljava/lang/Object;)Z HSPLandroid/telecom/PhoneAccount;->getAccountHandle()Landroid/telecom/PhoneAccountHandle; +HSPLandroid/telecom/PhoneAccount;->getExtras()Landroid/os/Bundle; HSPLandroid/telecom/PhoneAccount;->hasCapabilities(I)Z HSPLandroid/telecom/PhoneAccount;->supportsUriScheme(Ljava/lang/String;)Z HSPLandroid/telecom/PhoneAccount;->toString()Ljava/lang/String; @@ -13207,6 +13750,7 @@ HSPLandroid/telecom/PhoneAccountHandle;->toString()Ljava/lang/String; HSPLandroid/telecom/PhoneAccountHandle;->writeToParcel(Landroid/os/Parcel;I)V PLandroid/telecom/TelecomAnalytics$SessionTiming$1;-><init>()V HSPLandroid/telecom/TelecomManager;-><init>(Landroid/content/Context;)V +HPLandroid/telecom/TelecomManager;->addNewIncomingCall(Landroid/telecom/PhoneAccountHandle;Landroid/os/Bundle;)V HSPLandroid/telecom/TelecomManager;->from(Landroid/content/Context;)Landroid/telecom/TelecomManager; HSPLandroid/telecom/TelecomManager;->getCallCapablePhoneAccounts()Ljava/util/List; HSPLandroid/telecom/TelecomManager;->getCallCapablePhoneAccounts(Z)Ljava/util/List; @@ -13221,6 +13765,7 @@ HSPLandroid/telecom/TelecomManager;->getSystemDialerPackage()Ljava/lang/String; HSPLandroid/telecom/TelecomManager;->getUserSelectedOutgoingPhoneAccount()Landroid/telecom/PhoneAccountHandle; HSPLandroid/telecom/TelecomManager;->isInCall()Z HSPLandroid/telecom/TelecomManager;->isRinging()Z +HSPLandroid/telecom/TelecomManager;->isVoiceMailNumber(Landroid/telecom/PhoneAccountHandle;Ljava/lang/String;)Z HSPLandroid/telecom/TelecomManager;->registerPhoneAccount(Landroid/telecom/PhoneAccount;)V HSPLandroid/telecom/TelecomManager;->unregisterPhoneAccount(Landroid/telecom/PhoneAccountHandle;)V HSPLandroid/telecom/VideoProfile$1;-><init>()V @@ -13260,13 +13805,14 @@ HSPLandroid/telephony/AnomalyReporter;->initialize(Landroid/content/Context;)V HSPLandroid/telephony/CallAttributes$1;-><init>()V HPLandroid/telephony/CallAttributes;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/telephony/CallQuality$1;-><init>()V +HPLandroid/telephony/CallQuality;->toString()Ljava/lang/String; HPLandroid/telephony/CallQuality;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/telephony/CarrierConfigManager$Gps;->access$000()Landroid/os/PersistableBundle; HSPLandroid/telephony/CarrierConfigManager$Gps;->getDefaults()Landroid/os/PersistableBundle; HSPLandroid/telephony/CarrierConfigManager;-><init>(Landroid/content/Context;)V HSPLandroid/telephony/CarrierConfigManager;->getConfig()Landroid/os/PersistableBundle; HSPLandroid/telephony/CarrierConfigManager;->getConfigForSubId(I)Landroid/os/PersistableBundle; -PLandroid/telephony/CarrierConfigManager;->getDefaultCarrierServicePackageName()Ljava/lang/String; +HPLandroid/telephony/CarrierConfigManager;->getDefaultCarrierServicePackageName()Ljava/lang/String; HSPLandroid/telephony/CarrierConfigManager;->getDefaultConfig()Landroid/os/PersistableBundle; HSPLandroid/telephony/CarrierConfigManager;->isConfigForIdentifiedCarrier(Landroid/os/PersistableBundle;)Z HSPLandroid/telephony/CarrierConfigManager;->updateConfigForPhoneId(ILjava/lang/String;)V @@ -13346,6 +13892,7 @@ HSPLandroid/telephony/CellSignalStrengthGsm;-><init>()V HSPLandroid/telephony/CellSignalStrengthGsm;-><init>(III)V HSPLandroid/telephony/CellSignalStrengthGsm;->describeContents()I HSPLandroid/telephony/CellSignalStrengthGsm;->equals(Ljava/lang/Object;)Z +HSPLandroid/telephony/CellSignalStrengthGsm;->getLevel()I HSPLandroid/telephony/CellSignalStrengthGsm;->toString()Ljava/lang/String; HSPLandroid/telephony/CellSignalStrengthGsm;->updateLevel(Landroid/os/PersistableBundle;Landroid/telephony/ServiceState;)V HSPLandroid/telephony/CellSignalStrengthLte$1;-><init>()V @@ -13392,6 +13939,7 @@ HSPLandroid/telephony/CellSignalStrengthWcdma;-><init>(Landroid/hardware/radio/V HSPLandroid/telephony/CellSignalStrengthWcdma;-><init>(Landroid/os/Parcel;)V HSPLandroid/telephony/CellSignalStrengthWcdma;->describeContents()I HSPLandroid/telephony/CellSignalStrengthWcdma;->equals(Ljava/lang/Object;)Z +HPLandroid/telephony/CellSignalStrengthWcdma;->getDbm()I HSPLandroid/telephony/CellSignalStrengthWcdma;->getLevel()I HSPLandroid/telephony/CellSignalStrengthWcdma;->toString()Ljava/lang/String; HSPLandroid/telephony/CellSignalStrengthWcdma;->updateLevel(Landroid/os/PersistableBundle;Landroid/telephony/ServiceState;)V @@ -13497,12 +14045,15 @@ HSPLandroid/telephony/PhoneCapability;->toString()Ljava/lang/String; HSPLandroid/telephony/PhoneCapability;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/telephony/PhoneNumberUtils;->bcdToChar(BI)C HSPLandroid/telephony/PhoneNumberUtils;->calledPartyBCDToString([BIII)Ljava/lang/String; +HSPLandroid/telephony/PhoneNumberUtils;->compare(Ljava/lang/String;Ljava/lang/String;)Z HSPLandroid/telephony/PhoneNumberUtils;->compareLoosely(Ljava/lang/String;Ljava/lang/String;)Z HSPLandroid/telephony/PhoneNumberUtils;->convertKeypadLettersToDigits(Ljava/lang/String;)Ljava/lang/String; HSPLandroid/telephony/PhoneNumberUtils;->createTtsSpan(Ljava/lang/String;)Landroid/text/style/TtsSpan; +HSPLandroid/telephony/PhoneNumberUtils;->createTtsSpannable(Ljava/lang/CharSequence;)Ljava/lang/CharSequence; HSPLandroid/telephony/PhoneNumberUtils;->extractNetworkPortion(Ljava/lang/String;)Ljava/lang/String; HSPLandroid/telephony/PhoneNumberUtils;->extractNetworkPortionAlt(Ljava/lang/String;)Ljava/lang/String; HSPLandroid/telephony/PhoneNumberUtils;->extractPostDialPortion(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/telephony/PhoneNumberUtils;->formatNumber(Landroid/text/Editable;I)V HSPLandroid/telephony/PhoneNumberUtils;->formatNumber(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; HSPLandroid/telephony/PhoneNumberUtils;->formatNumber(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; HSPLandroid/telephony/PhoneNumberUtils;->formatNumberInternal(Ljava/lang/String;Ljava/lang/String;Lcom/android/i18n/phonenumbers/PhoneNumberUtil$PhoneNumberFormat;)Ljava/lang/String; @@ -13514,10 +14065,13 @@ HSPLandroid/telephony/PhoneNumberUtils;->isGlobalPhoneNumber(Ljava/lang/String;) HSPLandroid/telephony/PhoneNumberUtils;->isLocalEmergencyNumber(Landroid/content/Context;Ljava/lang/String;)Z HSPLandroid/telephony/PhoneNumberUtils;->isLocalEmergencyNumberInternal(ILjava/lang/String;Landroid/content/Context;Z)Z HSPLandroid/telephony/PhoneNumberUtils;->isNonSeparator(C)Z -PLandroid/telephony/PhoneNumberUtils;->isUriNumber(Ljava/lang/String;)Z -PLandroid/telephony/PhoneNumberUtils;->isVoiceMailNumber(Landroid/content/Context;ILjava/lang/String;)Z +HPLandroid/telephony/PhoneNumberUtils;->isUriNumber(Ljava/lang/String;)Z +HPLandroid/telephony/PhoneNumberUtils;->isVoiceMailNumber(Landroid/content/Context;ILjava/lang/String;)Z HSPLandroid/telephony/PhoneNumberUtils;->normalizeNumber(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/telephony/PhoneNumberUtils;->splitAtNonNumerics(Ljava/lang/CharSequence;)Ljava/lang/String; +HPLandroid/telephony/PhoneNumberUtils;->stringFromStringAndTOA(Ljava/lang/String;I)Ljava/lang/String; HSPLandroid/telephony/PhoneNumberUtils;->stripSeparators(Ljava/lang/String;)Ljava/lang/String; +HPLandroid/telephony/PhoneNumberUtils;->toaFromString(Ljava/lang/String;)I HSPLandroid/telephony/PhoneStateListener$IPhoneStateListenerStub;->lambda$onCallForwardingIndicatorChanged$7$PhoneStateListener$IPhoneStateListenerStub(Landroid/telephony/PhoneStateListener;Z)V HSPLandroid/telephony/PhoneStateListener$IPhoneStateListenerStub;->lambda$onCallStateChanged$11$PhoneStateListener$IPhoneStateListenerStub(Landroid/telephony/PhoneStateListener;ILjava/lang/String;)V HSPLandroid/telephony/PhoneStateListener$IPhoneStateListenerStub;->lambda$onCellInfoChanged$21$PhoneStateListener$IPhoneStateListenerStub(Landroid/telephony/PhoneStateListener;Ljava/util/List;)V @@ -13678,11 +14232,14 @@ HPLandroid/telephony/SignalStrength;->getCellSignalStrengths()Ljava/util/List; HPLandroid/telephony/SignalStrength;->getCellSignalStrengths(Ljava/lang/Class;)Ljava/util/List; HSPLandroid/telephony/SignalStrength;->getLevel()I HSPLandroid/telephony/SignalStrength;->getPrimary()Landroid/telephony/CellSignalStrength; +HSPLandroid/telephony/SignalStrength;->isGsm()Z HSPLandroid/telephony/SignalStrength;->toString()Ljava/lang/String; HSPLandroid/telephony/SignalStrength;->updateLevel(Landroid/os/PersistableBundle;Landroid/telephony/ServiceState;)V HSPLandroid/telephony/SignalStrength;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/telephony/SmsManager;-><init>(I)V +HPLandroid/telephony/SmsManager;->getAutoPersisting()Z HSPLandroid/telephony/SmsManager;->getDefault()Landroid/telephony/SmsManager; +HSPLandroid/telephony/SmsManager;->getMmsConfig(Landroid/os/BaseBundle;)Landroid/os/Bundle; PLandroid/telephony/SmsMessage;->createFromPdu([BLjava/lang/String;)Landroid/telephony/SmsMessage; HSPLandroid/telephony/SmsMessage;->createFromPdu([BLjava/lang/String;Z)Landroid/telephony/SmsMessage; HSPLandroid/telephony/SubscriptionInfo$1;-><init>()V @@ -13690,6 +14247,7 @@ HSPLandroid/telephony/SubscriptionInfo$1;->createFromParcel(Landroid/os/Parcel;) HSPLandroid/telephony/SubscriptionInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/telephony/SubscriptionInfo;-><init>(ILjava/lang/String;ILjava/lang/CharSequence;Ljava/lang/CharSequence;IILjava/lang/String;ILandroid/graphics/Bitmap;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z[Landroid/telephony/UiccAccessRule;Ljava/lang/String;IZLjava/lang/String;ZIII)V HSPLandroid/telephony/SubscriptionInfo;->getCarrierId()I +HSPLandroid/telephony/SubscriptionInfo;->getCarrierName()Ljava/lang/CharSequence; HSPLandroid/telephony/SubscriptionInfo;->getCountryIso()Ljava/lang/String; HSPLandroid/telephony/SubscriptionInfo;->getDisplayName()Ljava/lang/CharSequence; HSPLandroid/telephony/SubscriptionInfo;->getGroupUuid()Landroid/os/ParcelUuid; @@ -13720,7 +14278,9 @@ HSPLandroid/telephony/SubscriptionManager;->getActiveSubscriptionInfo(I)Landroid HSPLandroid/telephony/SubscriptionManager;->getActiveSubscriptionInfoForSimSlotIndex(I)Landroid/telephony/SubscriptionInfo; HSPLandroid/telephony/SubscriptionManager;->getActiveSubscriptionInfoList()Ljava/util/List; HSPLandroid/telephony/SubscriptionManager;->getActiveSubscriptionInfoList(Z)Ljava/util/List; +HSPLandroid/telephony/SubscriptionManager;->getDefaultDataPhoneId()I HSPLandroid/telephony/SubscriptionManager;->getDefaultDataSubscriptionId()I +HSPLandroid/telephony/SubscriptionManager;->getDefaultDataSubscriptionInfo()Landroid/telephony/SubscriptionInfo; HSPLandroid/telephony/SubscriptionManager;->getDefaultSmsSubscriptionId()I HSPLandroid/telephony/SubscriptionManager;->getDefaultSubscriptionId()I HSPLandroid/telephony/SubscriptionManager;->getDefaultVoicePhoneId()I @@ -13751,10 +14311,10 @@ HSPLandroid/telephony/SubscriptionPlan$1;->newArray(I)[Landroid/telephony/Subscr HSPLandroid/telephony/SubscriptionPlan$1;->newArray(I)[Ljava/lang/Object; HSPLandroid/telephony/TelephonyHistogram$1;-><init>()V HSPLandroid/telephony/TelephonyHistogram;-><init>(III)V -PLandroid/telephony/TelephonyHistogram;-><init>(Landroid/telephony/TelephonyHistogram;)V +HPLandroid/telephony/TelephonyHistogram;-><init>(Landroid/telephony/TelephonyHistogram;)V HSPLandroid/telephony/TelephonyHistogram;->addTimeTaken(I)V -PLandroid/telephony/TelephonyHistogram;->getBucketCounters()[I -PLandroid/telephony/TelephonyHistogram;->getBucketEndPoints()[I +HPLandroid/telephony/TelephonyHistogram;->getBucketCounters()[I +HPLandroid/telephony/TelephonyHistogram;->getBucketEndPoints()[I HSPLandroid/telephony/TelephonyManager$MultiSimVariants;-><init>(Ljava/lang/String;I)V HSPLandroid/telephony/TelephonyManager$MultiSimVariants;->values()[Landroid/telephony/TelephonyManager$MultiSimVariants; HSPLandroid/telephony/TelephonyManager;-><init>()V @@ -13766,6 +14326,7 @@ HSPLandroid/telephony/TelephonyManager;->createForPhoneAccountHandle(Landroid/te HSPLandroid/telephony/TelephonyManager;->createForSubscriptionId(I)Landroid/telephony/TelephonyManager; HSPLandroid/telephony/TelephonyManager;->enableIms(I)V HSPLandroid/telephony/TelephonyManager;->from(Landroid/content/Context;)Landroid/telephony/TelephonyManager; +HPLandroid/telephony/TelephonyManager;->getActiveVisualVoicemailSmsFilterSettings(I)Landroid/telephony/VisualVoicemailSmsFilterSettings; HSPLandroid/telephony/TelephonyManager;->getAllCellInfo()Ljava/util/List; HSPLandroid/telephony/TelephonyManager;->getCallState()I HSPLandroid/telephony/TelephonyManager;->getCardIdForDefaultEuicc()I @@ -13790,6 +14351,7 @@ HSPLandroid/telephony/TelephonyManager;->getImei(I)Ljava/lang/String; HSPLandroid/telephony/TelephonyManager;->getImsConfig(II)Landroid/telephony/ims/aidl/IImsConfig; HSPLandroid/telephony/TelephonyManager;->getImsMmTelFeatureAndListen(ILcom/android/ims/internal/IImsServiceFeatureCallback;)Landroid/telephony/ims/aidl/IImsMmTelFeature; HSPLandroid/telephony/TelephonyManager;->getImsRegistration(II)Landroid/telephony/ims/aidl/IImsRegistration; +HSPLandroid/telephony/TelephonyManager;->getIsimIst()Ljava/lang/String; HSPLandroid/telephony/TelephonyManager;->getLine1Number()Ljava/lang/String; HSPLandroid/telephony/TelephonyManager;->getLine1Number(I)Ljava/lang/String; HSPLandroid/telephony/TelephonyManager;->getMergedSubscriberIds()[Ljava/lang/String; @@ -13841,6 +14403,7 @@ HSPLandroid/telephony/TelephonyManager;->getTetherApnRequired(I)Z HSPLandroid/telephony/TelephonyManager;->getUiccCardsInfo()Ljava/util/List; HSPLandroid/telephony/TelephonyManager;->getVisualVoicemailPackageName()Ljava/lang/String; HSPLandroid/telephony/TelephonyManager;->getVoiceMailNumber(I)Ljava/lang/String; +HSPLandroid/telephony/TelephonyManager;->getVoiceNetworkType()I HSPLandroid/telephony/TelephonyManager;->getVoiceNetworkType(I)I HSPLandroid/telephony/TelephonyManager;->getVtDataUsage(I)Landroid/net/NetworkStats; HSPLandroid/telephony/TelephonyManager;->isDataCapable()Z @@ -13991,6 +14554,7 @@ HSPLandroid/telephony/emergency/EmergencyNumber;->writeToParcel(Landroid/os/Parc HSPLandroid/telephony/euicc/EuiccManager;-><init>(Landroid/content/Context;)V HSPLandroid/telephony/euicc/EuiccManager;->isEnabled()Z HSPLandroid/telephony/gsm/GsmCellLocation;->fillInNotifierBundle(Landroid/os/Bundle;)V +HSPLandroid/telephony/gsm/GsmCellLocation;->getCid()I HSPLandroid/telephony/ims/-$$Lambda$ImsMmTelManager$CapabilityCallback$CapabilityBinder$4YNlUy9HsD02E7Sbv2VeVtbao08;->run()V HSPLandroid/telephony/ims/-$$Lambda$ImsMmTelManager$CapabilityCallback$CapabilityBinder$gK2iK9ZQ3GDeuMTfhRd7yjiYlO8;->runOrThrow()V HSPLandroid/telephony/ims/-$$Lambda$ImsMmTelManager$RegistrationCallback$RegistrationBinder$8xq93ap6i0L56Aegaj-ZEUt9ISc;->runOrThrow()V @@ -14057,6 +14621,7 @@ HSPLandroid/telephony/ims/aidl/IImsCapabilityCallback$Stub$Proxy;->onCapabilitie HSPLandroid/telephony/ims/aidl/IImsCapabilityCallback$Stub;-><init>()V HSPLandroid/telephony/ims/aidl/IImsCapabilityCallback$Stub;->asBinder()Landroid/os/IBinder; HSPLandroid/telephony/ims/aidl/IImsConfig$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/telephony/ims/aidl/IImsConfig$Stub;->asInterface(Landroid/os/IBinder;)Landroid/telephony/ims/aidl/IImsConfig; HSPLandroid/telephony/ims/aidl/IImsConfig$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HSPLandroid/telephony/ims/aidl/IImsConfigCallback$Stub;->asBinder()Landroid/os/IBinder; HSPLandroid/telephony/ims/aidl/IImsMmTelFeature$Stub$Proxy;->asBinder()Landroid/os/IBinder; @@ -14072,6 +14637,7 @@ PLandroid/telephony/ims/aidl/IImsRegistrationCallback$Stub$Proxy;->onRegistered( HSPLandroid/telephony/ims/aidl/IImsRegistrationCallback$Stub;->asBinder()Landroid/os/IBinder; HSPLandroid/telephony/ims/aidl/IImsRegistrationCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/telephony/ims/aidl/IImsRegistrationCallback; HSPLandroid/telephony/ims/aidl/IImsServiceController$Stub;->asInterface(Landroid/os/IBinder;)Landroid/telephony/ims/aidl/IImsServiceController; +HSPLandroid/telephony/ims/aidl/IImsServiceControllerListener$Stub;->asBinder()Landroid/os/IBinder; HSPLandroid/telephony/ims/aidl/IImsSmsListener$Stub;-><init>()V HSPLandroid/telephony/ims/aidl/IRcs$Stub;-><init>()V HSPLandroid/telephony/ims/feature/CapabilityChangeRequest$1;-><init>()V @@ -14111,7 +14677,9 @@ HSPLandroid/telephony/ims/feature/MmTelFeature$1;->setUiTtyMode(ILandroid/os/Mes HSPLandroid/telephony/ims/feature/MmTelFeature$Listener;-><init>()V HSPLandroid/telephony/ims/feature/MmTelFeature$MmTelCapabilities;-><init>()V HSPLandroid/telephony/ims/feature/MmTelFeature$MmTelCapabilities;-><init>(Landroid/telephony/ims/feature/ImsFeature$Capabilities;)V +HSPLandroid/telephony/ims/feature/MmTelFeature$MmTelCapabilities;->addCapabilities(I)V HSPLandroid/telephony/ims/feature/MmTelFeature$MmTelCapabilities;->isCapable(I)Z +HSPLandroid/telephony/ims/feature/MmTelFeature$MmTelCapabilities;->removeCapabilities(I)V HSPLandroid/telephony/ims/feature/MmTelFeature$MmTelCapabilities;->toString()Ljava/lang/String; HSPLandroid/telephony/ims/feature/MmTelFeature;-><init>()V HSPLandroid/telephony/ims/feature/MmTelFeature;->getEcbmInterface()Lcom/android/ims/internal/IImsEcbm; @@ -14127,6 +14695,7 @@ HSPLandroid/telephony/ims/stub/-$$Lambda$ImsRegistrationImplBase$s7PspXVbCf1Q_WS HSPLandroid/telephony/ims/stub/-$$Lambda$ImsRegistrationImplBase$sbjuTvW-brOSWMR74UInSZEIQB0;->accept(Ljava/lang/Object;)V HSPLandroid/telephony/ims/stub/-$$Lambda$ImsRegistrationImplBase$wwtkoeOtGwMjG5I0-ZTfjNpGU-s;->accept(Ljava/lang/Object;)V HSPLandroid/telephony/ims/stub/ImsConfigImplBase$ImsConfigStub;->addImsConfigCallback(Landroid/telephony/ims/aidl/IImsConfigCallback;)V +HPLandroid/telephony/ims/stub/ImsConfigImplBase$ImsConfigStub;->getConfigInt(I)I HSPLandroid/telephony/ims/stub/ImsConfigImplBase$ImsConfigStub;->getImsConfigImpl()Landroid/telephony/ims/stub/ImsConfigImplBase; HSPLandroid/telephony/ims/stub/ImsConfigImplBase$ImsConfigStub;->notifyImsConfigChanged(II)V HSPLandroid/telephony/ims/stub/ImsConfigImplBase$ImsConfigStub;->setConfigInt(II)I @@ -14139,6 +14708,8 @@ HSPLandroid/telephony/ims/stub/ImsEcbmImplBase;-><init>()V HSPLandroid/telephony/ims/stub/ImsEcbmImplBase;->getImsEcbm()Lcom/android/ims/internal/IImsEcbm; HSPLandroid/telephony/ims/stub/ImsFeatureConfiguration$FeatureSlotPair;->hashCode()I HSPLandroid/telephony/ims/stub/ImsFeatureConfiguration$FeatureSlotPair;->toString()Ljava/lang/String; +HSPLandroid/telephony/ims/stub/ImsFeatureConfiguration;-><init>(Landroid/os/Parcel;)V +HSPLandroid/telephony/ims/stub/ImsFeatureConfiguration;->getServiceFeatures()Ljava/util/Set; HSPLandroid/telephony/ims/stub/ImsMultiEndpointImplBase$1;->setListener(Lcom/android/ims/internal/IImsExternalCallStateListener;)V HSPLandroid/telephony/ims/stub/ImsMultiEndpointImplBase;-><init>()V HSPLandroid/telephony/ims/stub/ImsMultiEndpointImplBase;->getIImsMultiEndpoint()Lcom/android/ims/internal/IImsMultiEndpoint; @@ -14302,6 +14873,7 @@ HSPLandroid/text/Layout;->getDesiredWidthWithLimit(Ljava/lang/CharSequence;IILan HSPLandroid/text/Layout;->getEndHyphenEdit(I)I HSPLandroid/text/Layout;->getHeight()I HSPLandroid/text/Layout;->getHeight(Z)I +HSPLandroid/text/Layout;->getHorizontal(IZ)F HSPLandroid/text/Layout;->getHorizontal(IZIZ)F HSPLandroid/text/Layout;->getIndentAdjust(ILandroid/text/Layout$Alignment;)I HSPLandroid/text/Layout;->getLineBaseline(I)I @@ -14320,6 +14892,8 @@ HSPLandroid/text/Layout;->getLineStartPos(III)I HSPLandroid/text/Layout;->getLineVisibleEnd(I)I HSPLandroid/text/Layout;->getLineVisibleEnd(III)I HSPLandroid/text/Layout;->getLineWidth(I)F +HSPLandroid/text/Layout;->getOffsetForHorizontal(IF)I +HSPLandroid/text/Layout;->getOffsetForHorizontal(IFZ)I HSPLandroid/text/Layout;->getParagraphAlignment(I)Landroid/text/Layout$Alignment; HSPLandroid/text/Layout;->getParagraphLeadingMargin(I)I HSPLandroid/text/Layout;->getParagraphSpans(Landroid/text/Spanned;IILjava/lang/Class;)[Ljava/lang/Object; @@ -14335,6 +14909,7 @@ HSPLandroid/text/Layout;->setJustificationMode(I)V HSPLandroid/text/Layout;->shouldClampCursor(I)Z HSPLandroid/text/MeasuredParagraph;-><init>()V HSPLandroid/text/MeasuredParagraph;->applyMetricsAffectingSpan(Landroid/text/TextPaint;[Landroid/text/style/MetricAffectingSpan;IILandroid/graphics/text/MeasuredText$Builder;)V +HSPLandroid/text/MeasuredParagraph;->applyReplacementRun(Landroid/text/style/ReplacementSpan;IILandroid/graphics/text/MeasuredText$Builder;)V HSPLandroid/text/MeasuredParagraph;->applyStyleRun(IILandroid/graphics/text/MeasuredText$Builder;)V HSPLandroid/text/MeasuredParagraph;->breakText(IZF)I HSPLandroid/text/MeasuredParagraph;->buildForBidi(Ljava/lang/CharSequence;IILandroid/text/TextDirectionHeuristic;Landroid/text/MeasuredParagraph;)Landroid/text/MeasuredParagraph; @@ -14401,6 +14976,7 @@ HSPLandroid/text/SpannableString;->subSequence(II)Ljava/lang/CharSequence; HSPLandroid/text/SpannableStringBuilder;-><init>()V HSPLandroid/text/SpannableStringBuilder;-><init>(Ljava/lang/CharSequence;)V HSPLandroid/text/SpannableStringBuilder;-><init>(Ljava/lang/CharSequence;II)V +HSPLandroid/text/SpannableStringBuilder;->append(C)Landroid/text/SpannableStringBuilder; HSPLandroid/text/SpannableStringBuilder;->append(Ljava/lang/CharSequence;)Landroid/text/Editable; HSPLandroid/text/SpannableStringBuilder;->append(Ljava/lang/CharSequence;)Landroid/text/SpannableStringBuilder; HSPLandroid/text/SpannableStringBuilder;->calcMax(I)I @@ -14459,9 +15035,11 @@ HSPLandroid/text/SpannableStringInternal;->getSpans(IILjava/lang/Class;)[Ljava/l HSPLandroid/text/SpannableStringInternal;->length()I HSPLandroid/text/SpannableStringInternal;->nextSpanTransition(IILjava/lang/Class;)I HSPLandroid/text/SpannableStringInternal;->removeSpan(Ljava/lang/Object;I)V +HSPLandroid/text/SpannableStringInternal;->sendSpanChanged(Ljava/lang/Object;IIII)V HSPLandroid/text/SpannableStringInternal;->setSpan(Ljava/lang/Object;IIIZ)V HSPLandroid/text/SpannableStringInternal;->toString()Ljava/lang/String; HSPLandroid/text/SpannedString;-><init>(Ljava/lang/CharSequence;)V +HSPLandroid/text/SpannedString;->equals(Ljava/lang/Object;)Z HSPLandroid/text/SpannedString;->getSpanEnd(Ljava/lang/Object;)I HSPLandroid/text/SpannedString;->getSpanFlags(Ljava/lang/Object;)I HSPLandroid/text/SpannedString;->getSpanStart(Ljava/lang/Object;)I @@ -14521,6 +15099,7 @@ HSPLandroid/text/TextLine$DecorationInfo;->copyInfo()Landroid/text/TextLine$Deco HSPLandroid/text/TextLine;-><init>()V HSPLandroid/text/TextLine;->draw(Landroid/graphics/Canvas;FIII)V HSPLandroid/text/TextLine;->drawRun(Landroid/graphics/Canvas;IIZFIIIZ)F +HSPLandroid/text/TextLine;->drawStroke(Landroid/text/TextPaint;Landroid/graphics/Canvas;IFFFFF)V HSPLandroid/text/TextLine;->drawTextRun(Landroid/graphics/Canvas;Landroid/text/TextPaint;IIIIZFI)V HSPLandroid/text/TextLine;->equalAttributes(Landroid/text/TextPaint;Landroid/text/TextPaint;)Z HSPLandroid/text/TextLine;->expandMetricsFromPaint(Landroid/graphics/Paint$FontMetricsInt;Landroid/text/TextPaint;)V @@ -14539,6 +15118,7 @@ HSPLandroid/text/TextLine;->updateMetrics(Landroid/graphics/Paint$FontMetricsInt HSPLandroid/text/TextPaint;-><init>()V HSPLandroid/text/TextPaint;-><init>(I)V HSPLandroid/text/TextPaint;-><init>(Landroid/graphics/Paint;)V +HSPLandroid/text/TextPaint;->getUnderlineThickness()F HSPLandroid/text/TextPaint;->set(Landroid/text/TextPaint;)V HSPLandroid/text/TextPaint;->setUnderlineText(IF)V HSPLandroid/text/TextUtils$1;-><init>()V @@ -14553,6 +15133,7 @@ HSPLandroid/text/TextUtils$SimpleStringSplitter;->setString(Ljava/lang/String;)V HSPLandroid/text/TextUtils$StringWithRemovedChars;->toString()Ljava/lang/String; HSPLandroid/text/TextUtils$TruncateAt;-><init>(Ljava/lang/String;I)V HSPLandroid/text/TextUtils;->concat([Ljava/lang/CharSequence;)Ljava/lang/CharSequence; +HSPLandroid/text/TextUtils;->copySpansFrom(Landroid/text/Spanned;IILjava/lang/Class;Landroid/text/Spannable;I)V HSPLandroid/text/TextUtils;->couldAffectRtl(C)Z HSPLandroid/text/TextUtils;->delimitedStringContains(Ljava/lang/String;CLjava/lang/String;)Z HSPLandroid/text/TextUtils;->ellipsize(Ljava/lang/CharSequence;Landroid/text/TextPaint;FLandroid/text/TextUtils$TruncateAt;ZLandroid/text/TextUtils$EllipsizeCallback;)Ljava/lang/CharSequence; @@ -14586,10 +15167,12 @@ HSPLandroid/text/TextUtils;->trimToSize(Ljava/lang/CharSequence;I)Ljava/lang/Cha HSPLandroid/text/TextUtils;->writeToParcel(Ljava/lang/CharSequence;Landroid/os/Parcel;I)V HSPLandroid/text/format/DateFormat;->format(Ljava/lang/CharSequence;J)Ljava/lang/CharSequence; HSPLandroid/text/format/DateFormat;->format(Ljava/lang/CharSequence;Ljava/util/Calendar;)Ljava/lang/CharSequence; +HSPLandroid/text/format/DateFormat;->format(Ljava/lang/CharSequence;Ljava/util/Date;)Ljava/lang/CharSequence; HSPLandroid/text/format/DateFormat;->getBestDateTimePattern(Ljava/util/Locale;Ljava/lang/String;)Ljava/lang/String; HSPLandroid/text/format/DateFormat;->getDayOfWeekString(Llibcore/icu/LocaleData;III)Ljava/lang/String; HSPLandroid/text/format/DateFormat;->getMonthString(Llibcore/icu/LocaleData;III)Ljava/lang/String; HSPLandroid/text/format/DateFormat;->getTimeFormat(Landroid/content/Context;)Ljava/text/DateFormat; +HSPLandroid/text/format/DateFormat;->getTimeFormatString(Landroid/content/Context;)Ljava/lang/String; HSPLandroid/text/format/DateFormat;->hasDesignator(Ljava/lang/CharSequence;C)Z HSPLandroid/text/format/DateFormat;->is24HourFormat(Landroid/content/Context;)Z HSPLandroid/text/format/DateFormat;->is24HourFormat(Landroid/content/Context;I)Z @@ -14612,6 +15195,7 @@ HSPLandroid/text/format/Time$TimeCalculator;->toMillis(Z)J HSPLandroid/text/format/Time;-><init>()V HSPLandroid/text/format/Time;-><init>(Ljava/lang/String;)V HSPLandroid/text/format/Time;->format(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/text/format/Time;->getJulianDay(JJ)I HSPLandroid/text/format/Time;->set(J)V HSPLandroid/text/format/Time;->setToNow()V HSPLandroid/text/format/Time;->toMillis(Z)J @@ -14651,9 +15235,11 @@ HSPLandroid/text/method/TextKeyListener;->onSpanAdded(Landroid/text/Spannable;Lj HSPLandroid/text/method/TextKeyListener;->onSpanChanged(Landroid/text/Spannable;Ljava/lang/Object;IIII)V HSPLandroid/text/method/TextKeyListener;->onSpanRemoved(Landroid/text/Spannable;Ljava/lang/Object;II)V HSPLandroid/text/method/WordIterator;->checkOffsetIsValid(I)V +HSPLandroid/text/method/WordIterator;->following(I)I HSPLandroid/text/method/WordIterator;->getBeginning(I)I HSPLandroid/text/method/WordIterator;->getBeginning(IZ)I HSPLandroid/text/method/WordIterator;->setCharSequence(Ljava/lang/CharSequence;II)V +HSPLandroid/text/style/BackgroundColorSpan;-><init>(I)V HSPLandroid/text/style/CharacterStyle;->getUnderlying()Landroid/text/style/CharacterStyle; HSPLandroid/text/style/DynamicDrawableSpan;->getSize(Landroid/graphics/Paint;Ljava/lang/CharSequence;IILandroid/graphics/Paint$FontMetricsInt;)I HSPLandroid/text/style/ForegroundColorSpan;-><init>(I)V @@ -14667,8 +15253,10 @@ HSPLandroid/text/style/StyleSpan;-><init>(I)V HSPLandroid/text/style/StyleSpan;->apply(Landroid/graphics/Paint;I)V HSPLandroid/text/style/StyleSpan;->getSpanTypeIdInternal()I HSPLandroid/text/style/StyleSpan;->updateDrawState(Landroid/text/TextPaint;)V +HSPLandroid/text/style/StyleSpan;->updateMeasureState(Landroid/text/TextPaint;)V HSPLandroid/text/style/StyleSpan;->writeToParcelInternal(Landroid/os/Parcel;I)V HSPLandroid/text/style/SuggestionSpan$1;-><init>()V +HSPLandroid/text/style/SuggestionSpan;-><init>(Landroid/os/Parcel;)V HSPLandroid/text/style/TextAppearanceSpan;-><init>(Landroid/content/Context;I)V HSPLandroid/text/style/TextAppearanceSpan;-><init>(Landroid/content/Context;II)V HSPLandroid/text/style/TextAppearanceSpan;-><init>(Landroid/os/Parcel;)V @@ -14677,6 +15265,9 @@ HSPLandroid/text/style/TextAppearanceSpan;->writeToParcelInternal(Landroid/os/Pa HSPLandroid/text/style/TtsSpan;->getSpanTypeIdInternal()I HSPLandroid/text/style/TtsSpan;->writeToParcelInternal(Landroid/os/Parcel;I)V HSPLandroid/text/style/UnderlineSpan;-><init>()V +HSPLandroid/text/style/UnderlineSpan;->getSpanTypeIdInternal()I +HSPLandroid/text/style/UnderlineSpan;->updateDrawState(Landroid/text/TextPaint;)V +HSPLandroid/text/style/UnderlineSpan;->writeToParcelInternal(Landroid/os/Parcel;I)V HSPLandroid/transition/AutoTransition;-><init>()V HSPLandroid/transition/ChangeBounds$1;-><init>(Ljava/lang/Class;Ljava/lang/String;)V HSPLandroid/transition/ChangeBounds$2;-><init>(Ljava/lang/Class;Ljava/lang/String;)V @@ -14697,6 +15288,7 @@ HSPLandroid/transition/TransitionInflater;->createTransitionFromXml(Lorg/xmlpull HSPLandroid/transition/TransitionInflater;->from(Landroid/content/Context;)Landroid/transition/TransitionInflater; HSPLandroid/transition/TransitionInflater;->inflateTransition(I)Landroid/transition/Transition; HSPLandroid/transition/TransitionManager;-><init>()V +HSPLandroid/transition/TransitionManager;->beginDelayedTransition(Landroid/view/ViewGroup;)V HSPLandroid/transition/TransitionManager;->beginDelayedTransition(Landroid/view/ViewGroup;Landroid/transition/Transition;)V HSPLandroid/transition/TransitionManager;->getRunningTransitions()Landroid/util/ArrayMap; HSPLandroid/transition/TransitionSet;-><init>()V @@ -14741,7 +15333,7 @@ HSPLandroid/util/ArrayMap;->putAll(Landroid/util/ArrayMap;)V HSPLandroid/util/ArrayMap;->putAll(Ljava/util/Map;)V HSPLandroid/util/ArrayMap;->remove(Ljava/lang/Object;)Ljava/lang/Object; HSPLandroid/util/ArrayMap;->removeAt(I)Ljava/lang/Object; -PLandroid/util/ArrayMap;->setValueAt(ILjava/lang/Object;)Ljava/lang/Object; +HPLandroid/util/ArrayMap;->setValueAt(ILjava/lang/Object;)Ljava/lang/Object; HSPLandroid/util/ArrayMap;->size()I HSPLandroid/util/ArrayMap;->toString()Ljava/lang/String; HSPLandroid/util/ArrayMap;->validate()V @@ -14813,6 +15405,7 @@ HSPLandroid/util/DataUnit$5;-><init>(Ljava/lang/String;I)V HSPLandroid/util/DataUnit$5;->toBytes(J)J HSPLandroid/util/DataUnit$6;-><init>(Ljava/lang/String;I)V HSPLandroid/util/DataUnit$6;->toBytes(J)J +HSPLandroid/util/DebugUtils;->buildShortClassTag(Ljava/lang/Object;Ljava/lang/StringBuilder;)V HSPLandroid/util/DebugUtils;->flagsToString(Ljava/lang/Class;Ljava/lang/String;I)Ljava/lang/String; HSPLandroid/util/DebugUtils;->valueToString(Ljava/lang/Class;Ljava/lang/String;I)Ljava/lang/String; HSPLandroid/util/DisplayMetrics;-><init>()V @@ -14825,7 +15418,7 @@ HSPLandroid/util/EventLog$Event;->getData()Ljava/lang/Object; HPLandroid/util/EventLog$Event;->getUid()I HSPLandroid/util/EventLog;->getTagCode(Ljava/lang/String;)I HSPLandroid/util/EventLog;->readTagsFile()V -PLandroid/util/ExceptionUtils;->propagate(Ljava/lang/Throwable;)Ljava/lang/RuntimeException; +HPLandroid/util/ExceptionUtils;->propagate(Ljava/lang/Throwable;)Ljava/lang/RuntimeException; HSPLandroid/util/FastImmutableArraySet$FastIterator;->hasNext()Z HSPLandroid/util/FastImmutableArraySet$FastIterator;->next()Ljava/lang/Object; HSPLandroid/util/FastImmutableArraySet;->iterator()Ljava/util/Iterator; @@ -14856,8 +15449,10 @@ HSPLandroid/util/JsonReader;->endObject()V HSPLandroid/util/JsonReader;->expect(Landroid/util/JsonToken;)V HSPLandroid/util/JsonReader;->fillBuffer(I)Z HSPLandroid/util/JsonReader;->hasNext()Z +HSPLandroid/util/JsonReader;->nextBoolean()Z HSPLandroid/util/JsonReader;->nextInArray(Z)Landroid/util/JsonToken; HSPLandroid/util/JsonReader;->nextInObject(Z)Landroid/util/JsonToken; +HSPLandroid/util/JsonReader;->nextInt()I HSPLandroid/util/JsonReader;->nextLiteral(Z)Ljava/lang/String; HSPLandroid/util/JsonReader;->nextLong()J HSPLandroid/util/JsonReader;->nextName()Ljava/lang/String; @@ -14884,7 +15479,9 @@ HSPLandroid/util/JsonWriter;->close(Landroid/util/JsonScope;Landroid/util/JsonSc HSPLandroid/util/JsonWriter;->endArray()Landroid/util/JsonWriter; HSPLandroid/util/JsonWriter;->endObject()Landroid/util/JsonWriter; HSPLandroid/util/JsonWriter;->name(Ljava/lang/String;)Landroid/util/JsonWriter; +HSPLandroid/util/JsonWriter;->open(Landroid/util/JsonScope;Ljava/lang/String;)Landroid/util/JsonWriter; HSPLandroid/util/JsonWriter;->string(Ljava/lang/String;)V +HSPLandroid/util/JsonWriter;->value(J)Landroid/util/JsonWriter; HSPLandroid/util/JsonWriter;->value(Ljava/lang/String;)Landroid/util/JsonWriter; HSPLandroid/util/KeyValueListParser$IntValue;-><init>(Ljava/lang/String;I)V HSPLandroid/util/KeyValueListParser$IntValue;->getValue()I @@ -14974,6 +15571,8 @@ HSPLandroid/util/LruCache;->create(Ljava/lang/Object;)Ljava/lang/Object; HSPLandroid/util/LruCache;->entryRemoved(ZLjava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V HSPLandroid/util/LruCache;->evictAll()V HSPLandroid/util/LruCache;->get(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroid/util/LruCache;->hitCount()I +HSPLandroid/util/LruCache;->missCount()I HSPLandroid/util/LruCache;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; HSPLandroid/util/LruCache;->remove(Ljava/lang/Object;)Ljava/lang/Object; HSPLandroid/util/LruCache;->resize(I)V @@ -15050,7 +15649,7 @@ HSPLandroid/util/NtpTrustedTime;->getInstance(Landroid/content/Context;)Landroid HSPLandroid/util/NtpTrustedTime;->hasCache()Z HSPLandroid/util/PackageUtils;->computeSha256Digest([B)Ljava/lang/String; HSPLandroid/util/PackageUtils;->computeSha256DigestBytes([B)[B -PLandroid/util/PackageUtils;->computeSignaturesSha256Digest([Landroid/content/pm/Signature;)Ljava/lang/String; +HPLandroid/util/PackageUtils;->computeSignaturesSha256Digest([Landroid/content/pm/Signature;)Ljava/lang/String; HSPLandroid/util/Pair;-><init>(Ljava/lang/Object;Ljava/lang/Object;)V HSPLandroid/util/Pair;->create(Ljava/lang/Object;Ljava/lang/Object;)Landroid/util/Pair; HSPLandroid/util/Pair;->equals(Ljava/lang/Object;)Z @@ -15175,7 +15774,7 @@ HSPLandroid/util/SparseLongArray;->clear()V HSPLandroid/util/SparseLongArray;->delete(I)V HSPLandroid/util/SparseLongArray;->get(I)J HSPLandroid/util/SparseLongArray;->get(IJ)J -PLandroid/util/SparseLongArray;->indexOfKey(I)I +HPLandroid/util/SparseLongArray;->indexOfKey(I)I HSPLandroid/util/SparseLongArray;->keyAt(I)I HSPLandroid/util/SparseLongArray;->put(IJ)V HSPLandroid/util/SparseLongArray;->removeAt(I)V @@ -15194,17 +15793,17 @@ HSPLandroid/util/StateSet;->get(I)[I HSPLandroid/util/StateSet;->stateSetMatches([I[I)Z HSPLandroid/util/StateSet;->trimStateSet([II)[I HSPLandroid/util/StatsLogInternal;->write(ILandroid/os/WorkSource;I)V -PLandroid/util/StatsLogInternal;->write(ILandroid/os/WorkSource;II)V +HPLandroid/util/StatsLogInternal;->write(ILandroid/os/WorkSource;II)V HSPLandroid/util/StatsLogInternal;->write(ILandroid/os/WorkSource;Ljava/lang/String;Ljava/lang/String;)V HPLandroid/util/StatsLogInternal;->write(ILandroid/os/WorkSource;Ljava/lang/String;Ljava/lang/String;I)V HPLandroid/util/StringBuilderPrinter;->println(Ljava/lang/String;)V HSPLandroid/util/TimeUtils;->formatDuration(J)Ljava/lang/String; HSPLandroid/util/TimeUtils;->formatDuration(JJLjava/io/PrintWriter;)V -PLandroid/util/TimeUtils;->formatDuration(JLjava/io/PrintWriter;)V +HPLandroid/util/TimeUtils;->formatDuration(JLjava/io/PrintWriter;)V HSPLandroid/util/TimeUtils;->formatDuration(JLjava/io/PrintWriter;I)V HSPLandroid/util/TimeUtils;->formatDuration(JLjava/lang/StringBuilder;)V HSPLandroid/util/TimeUtils;->formatDurationLocked(JI)I -PLandroid/util/TimeUtils;->formatForLogging(J)Ljava/lang/String; +HPLandroid/util/TimeUtils;->formatForLogging(J)Ljava/lang/String; HSPLandroid/util/TimeUtils;->printFieldLocked([CICIZI)I HSPLandroid/util/TimedRemoteCaller;-><init>(J)V HPLandroid/util/TimedRemoteCaller;->getResultTimed(I)Ljava/lang/Object; @@ -15214,6 +15813,11 @@ HSPLandroid/util/TimestampedValue;->readFromParcel(Landroid/os/Parcel;Ljava/lang HSPLandroid/util/TimestampedValue;->referenceTimeDifference(Landroid/util/TimestampedValue;Landroid/util/TimestampedValue;)J HSPLandroid/util/TimestampedValue;->toString()Ljava/lang/String; HSPLandroid/util/TimestampedValue;->writeToParcel(Landroid/os/Parcel;Landroid/util/TimestampedValue;)V +HSPLandroid/util/TimingLogger;-><init>(Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/util/TimingLogger;->addSplit(Ljava/lang/String;)V +HSPLandroid/util/TimingLogger;->dumpToLog()V +HSPLandroid/util/TimingLogger;->reset()V +HSPLandroid/util/TimingLogger;->reset(Ljava/lang/String;Ljava/lang/String;)V HSPLandroid/util/TimingsTraceLog;-><init>(Ljava/lang/String;J)V HSPLandroid/util/TimingsTraceLog;->assertSameThread()V HSPLandroid/util/TimingsTraceLog;->logDuration(Ljava/lang/String;J)V @@ -15243,18 +15847,18 @@ HSPLandroid/util/apk/ApkSignatureSchemeV2Verifier;->verify(Ljava/lang/String;Z)L HSPLandroid/util/apk/ApkSignatureSchemeV2Verifier;->verifyAdditionalAttributes(Ljava/nio/ByteBuffer;)V HSPLandroid/util/apk/ApkSignatureSchemeV2Verifier;->verifySigner(Ljava/nio/ByteBuffer;Ljava/util/Map;Ljava/security/cert/CertificateFactory;)[Ljava/security/cert/X509Certificate; HSPLandroid/util/apk/ApkSignatureSchemeV3Verifier;->$closeResource(Ljava/lang/Throwable;Ljava/lang/AutoCloseable;)V -PLandroid/util/apk/ApkSignatureSchemeV3Verifier;->generateApkVerity(Ljava/lang/String;Landroid/util/apk/ByteBufferFactory;)[B +HPLandroid/util/apk/ApkSignatureSchemeV3Verifier;->generateApkVerity(Ljava/lang/String;Landroid/util/apk/ByteBufferFactory;)[B HSPLandroid/util/apk/ApkSignatureSchemeV3Verifier;->generateApkVerityRootHash(Ljava/lang/String;)[B -PLandroid/util/apk/ApkSignatureSchemeV3Verifier;->getVerityRootHash(Ljava/lang/String;)[B +HPLandroid/util/apk/ApkSignatureSchemeV3Verifier;->getVerityRootHash(Ljava/lang/String;)[B HSPLandroid/util/apk/ApkSignatureSchemeV3Verifier;->isSupportedSignatureAlgorithm(I)Z HSPLandroid/util/apk/ApkSignatureSchemeV3Verifier;->verify(Ljava/io/RandomAccessFile;Landroid/util/apk/SignatureInfo;Z)Landroid/util/apk/ApkSignatureSchemeV3Verifier$VerifiedSigner; HSPLandroid/util/apk/ApkSignatureSchemeV3Verifier;->verify(Ljava/lang/String;Z)Landroid/util/apk/ApkSignatureSchemeV3Verifier$VerifiedSigner; HSPLandroid/util/apk/ApkSignatureSchemeV3Verifier;->verifyAdditionalAttributes(Ljava/nio/ByteBuffer;Ljava/util/List;Ljava/security/cert/CertificateFactory;)Landroid/util/apk/ApkSignatureSchemeV3Verifier$VerifiedSigner; HSPLandroid/util/apk/ApkSignatureSchemeV3Verifier;->verifySigner(Ljava/nio/ByteBuffer;Ljava/util/Map;Ljava/security/cert/CertificateFactory;)Landroid/util/apk/ApkSignatureSchemeV3Verifier$VerifiedSigner; HSPLandroid/util/apk/ApkSignatureVerifier;->closeQuietly(Landroid/util/jar/StrictJarFile;)V -PLandroid/util/apk/ApkSignatureVerifier;->generateApkVerity(Ljava/lang/String;Landroid/util/apk/ByteBufferFactory;)[B +HPLandroid/util/apk/ApkSignatureVerifier;->generateApkVerity(Ljava/lang/String;Landroid/util/apk/ByteBufferFactory;)[B HSPLandroid/util/apk/ApkSignatureVerifier;->generateApkVerityRootHash(Ljava/lang/String;)[B -PLandroid/util/apk/ApkSignatureVerifier;->getVerityRootHash(Ljava/lang/String;)[B +HPLandroid/util/apk/ApkSignatureVerifier;->getVerityRootHash(Ljava/lang/String;)[B HSPLandroid/util/apk/ApkSignatureVerifier;->loadCertificates(Landroid/util/jar/StrictJarFile;Ljava/util/zip/ZipEntry;)[[Ljava/security/cert/Certificate; HSPLandroid/util/apk/ApkSignatureVerifier;->readFullyIgnoringContents(Ljava/io/InputStream;)V HSPLandroid/util/apk/ApkSignatureVerifier;->unsafeGetCertsWithoutVerification(Ljava/lang/String;I)Landroid/content/pm/PackageParser$SigningDetails; @@ -15293,7 +15897,7 @@ HSPLandroid/util/apk/VerityBuilder$BufferedDigester;-><init>([BLjava/nio/ByteBuf HSPLandroid/util/apk/VerityBuilder$BufferedDigester;->consume(Ljava/nio/ByteBuffer;)V HSPLandroid/util/apk/VerityBuilder;->assertSigningBlockAlignedAndHasFullPages(Landroid/util/apk/SignatureInfo;)V HSPLandroid/util/apk/VerityBuilder;->calculateVerityLevelOffset(J)[I -PLandroid/util/apk/VerityBuilder;->generateApkVerity(Ljava/lang/String;Landroid/util/apk/ByteBufferFactory;Landroid/util/apk/SignatureInfo;)[B +HPLandroid/util/apk/VerityBuilder;->generateApkVerity(Ljava/lang/String;Landroid/util/apk/ByteBufferFactory;Landroid/util/apk/SignatureInfo;)[B HSPLandroid/util/apk/VerityBuilder;->generateApkVerityDigestAtLeafLevel(Ljava/io/RandomAccessFile;Landroid/util/apk/SignatureInfo;[BLjava/nio/ByteBuffer;)V HSPLandroid/util/apk/VerityBuilder;->generateApkVerityExtensions(Ljava/nio/ByteBuffer;JJJ)Ljava/nio/ByteBuffer; HSPLandroid/util/apk/VerityBuilder;->generateApkVerityHeader(Ljava/nio/ByteBuffer;J[B)Ljava/nio/ByteBuffer; @@ -15371,6 +15975,7 @@ HSPLandroid/util/proto/ProtoInputStream;->readTag()V HSPLandroid/util/proto/ProtoInputStream;->readVarint()J HSPLandroid/util/proto/ProtoInputStream;->start(J)J HSPLandroid/util/proto/ProtoOutputStream;-><init>(I)V +HPLandroid/util/proto/ProtoOutputStream;-><init>(Ljava/io/FileDescriptor;)V HSPLandroid/util/proto/ProtoOutputStream;-><init>(Ljava/io/OutputStream;)V HSPLandroid/util/proto/ProtoOutputStream;->compactIfNecessary()V HSPLandroid/util/proto/ProtoOutputStream;->compactSizes(I)V @@ -15402,6 +16007,7 @@ HSPLandroid/view/-$$Lambda$cZhmLzK8aetUdx4VlP9w5jR7En0;->apply(Ljava/lang/Object HSPLandroid/view/AbsSavedState$1;-><init>()V HSPLandroid/view/AbsSavedState$2;-><init>()V HSPLandroid/view/AbsSavedState;-><init>(Landroid/os/Parcelable;)V +HSPLandroid/view/AbsSavedState;->getSuperState()Landroid/os/Parcelable; HSPLandroid/view/AbsSavedState;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/view/Choreographer$1;-><init>()V HSPLandroid/view/Choreographer$1;->initialValue()Landroid/view/Choreographer; @@ -15437,6 +16043,7 @@ HSPLandroid/view/Choreographer;->scheduleFrameLocked(J)V HSPLandroid/view/ContextThemeWrapper;-><init>(Landroid/content/Context;I)V HSPLandroid/view/ContextThemeWrapper;->applyOverrideConfiguration(Landroid/content/res/Configuration;)V HSPLandroid/view/ContextThemeWrapper;->attachBaseContext(Landroid/content/Context;)V +HSPLandroid/view/ContextThemeWrapper;->getAssets()Landroid/content/res/AssetManager; HSPLandroid/view/ContextThemeWrapper;->getResources()Landroid/content/res/Resources; HSPLandroid/view/ContextThemeWrapper;->getSystemService(Ljava/lang/String;)Ljava/lang/Object; HSPLandroid/view/ContextThemeWrapper;->getTheme()Landroid/content/res/Resources$Theme; @@ -15460,6 +16067,7 @@ HSPLandroid/view/Display;-><init>(Landroid/hardware/display/DisplayManagerGlobal HSPLandroid/view/Display;-><init>(Landroid/hardware/display/DisplayManagerGlobal;ILandroid/view/DisplayInfo;Landroid/view/DisplayAdjustments;)V HSPLandroid/view/Display;-><init>(Landroid/hardware/display/DisplayManagerGlobal;ILandroid/view/DisplayInfo;Landroid/view/DisplayAdjustments;Landroid/content/res/Resources;)V HSPLandroid/view/Display;->getDisplayAdjustments()Landroid/view/DisplayAdjustments; +HSPLandroid/view/Display;->getDisplayId()I HSPLandroid/view/Display;->getDisplayInfo(Landroid/view/DisplayInfo;)Z HSPLandroid/view/Display;->getHeight()I HSPLandroid/view/Display;->getMaximumSizeDimension()I @@ -15551,6 +16159,8 @@ HSPLandroid/view/FocusFinder;->findNextFocus(Landroid/view/ViewGroup;Landroid/vi HSPLandroid/view/FocusFinder;->findNextFocusInAbsoluteDirection(Ljava/util/ArrayList;Landroid/view/ViewGroup;Landroid/view/View;Landroid/graphics/Rect;I)Landroid/view/View; HSPLandroid/view/FocusFinder;->findNextUserSpecifiedFocus(Landroid/view/ViewGroup;Landroid/view/View;I)Landroid/view/View; HSPLandroid/view/FocusFinder;->getEffectiveRoot(Landroid/view/ViewGroup;Landroid/view/View;)Landroid/view/ViewGroup; +HSPLandroid/view/FocusFinder;->isBetterCandidate(ILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;)Z +HSPLandroid/view/FocusFinder;->isCandidate(Landroid/graphics/Rect;Landroid/graphics/Rect;I)Z HSPLandroid/view/GestureDetector$GestureHandler;->handleMessage(Landroid/os/Message;)V HSPLandroid/view/GestureDetector$SimpleOnGestureListener;-><init>()V HSPLandroid/view/GestureDetector$SimpleOnGestureListener;->onDoubleTap(Landroid/view/MotionEvent;)Z @@ -15572,6 +16182,7 @@ HSPLandroid/view/GestureDetector;->onTouchEvent(Landroid/view/MotionEvent;)Z HSPLandroid/view/GestureDetector;->setContextClickListener(Landroid/view/GestureDetector$OnContextClickListener;)V HSPLandroid/view/GestureDetector;->setOnDoubleTapListener(Landroid/view/GestureDetector$OnDoubleTapListener;)V HSPLandroid/view/Gravity;->apply(IIILandroid/graphics/Rect;IILandroid/graphics/Rect;)V +HSPLandroid/view/Gravity;->apply(IIILandroid/graphics/Rect;Landroid/graphics/Rect;)V HSPLandroid/view/Gravity;->apply(IIILandroid/graphics/Rect;Landroid/graphics/Rect;I)V HSPLandroid/view/Gravity;->applyDisplay(ILandroid/graphics/Rect;Landroid/graphics/Rect;)V HSPLandroid/view/Gravity;->getAbsoluteGravity(II)I @@ -15649,10 +16260,11 @@ HSPLandroid/view/IWindowManager$Stub$Proxy;->isKeyguardSecure(I)Z HSPLandroid/view/IWindowManager$Stub$Proxy;->openSession(Landroid/view/IWindowSessionCallback;)Landroid/view/IWindowSession; HSPLandroid/view/IWindowManager$Stub;-><init>()V HSPLandroid/view/IWindowManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/view/IWindowManager; -PLandroid/view/IWindowManager$Stub;->getDefaultTransactionName(I)Ljava/lang/String; +HPLandroid/view/IWindowManager$Stub;->getDefaultTransactionName(I)Ljava/lang/String; HSPLandroid/view/IWindowManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HSPLandroid/view/IWindowSession$Stub$Proxy;->addToDisplay(Landroid/view/IWindow;ILandroid/view/WindowManager$LayoutParams;IILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/view/DisplayCutout$ParcelableWrapper;Landroid/view/InputChannel;Landroid/view/InsetsState;)I HSPLandroid/view/IWindowSession$Stub$Proxy;->finishDrawing(Landroid/view/IWindow;)V +HSPLandroid/view/IWindowSession$Stub$Proxy;->getDisplayFrame(Landroid/view/IWindow;Landroid/graphics/Rect;)V HSPLandroid/view/IWindowSession$Stub$Proxy;->getInTouchMode()Z HSPLandroid/view/IWindowSession$Stub$Proxy;->onRectangleOnScreenRequested(Landroid/os/IBinder;Landroid/graphics/Rect;)V HSPLandroid/view/IWindowSession$Stub$Proxy;->performHapticFeedback(IZ)Z @@ -15662,7 +16274,7 @@ HSPLandroid/view/IWindowSession$Stub$Proxy;->remove(Landroid/view/IWindow;)V HSPLandroid/view/IWindowSession$Stub$Proxy;->setInsets(Landroid/view/IWindow;ILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Region;)V HSPLandroid/view/IWindowSession$Stub;-><init>()V HSPLandroid/view/IWindowSession$Stub;->asBinder()Landroid/os/IBinder; -PLandroid/view/IWindowSession$Stub;->getDefaultTransactionName(I)Ljava/lang/String; +HPLandroid/view/IWindowSession$Stub;->getDefaultTransactionName(I)Ljava/lang/String; HSPLandroid/view/IWindowSession$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HSPLandroid/view/IWindowSessionCallback$Stub$Proxy;->asBinder()Landroid/os/IBinder; HSPLandroid/view/IWindowSessionCallback$Stub;->asBinder()Landroid/os/IBinder; @@ -15686,6 +16298,7 @@ HSPLandroid/view/InputChannel;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/view/InputDevice$1;-><init>()V HSPLandroid/view/InputDevice$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/InputDevice; HSPLandroid/view/InputDevice$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/view/InputDevice$MotionRange;-><init>(IIFFFFFLandroid/view/InputDevice$1;)V HSPLandroid/view/InputDevice;-><init>(IIILjava/lang/String;IILjava/lang/String;ZIILandroid/view/KeyCharacterMap;ZZZ)V HSPLandroid/view/InputDevice;-><init>(Landroid/os/Parcel;)V HSPLandroid/view/InputDevice;->addMotionRange(IIFFFFF)V @@ -15751,6 +16364,7 @@ HSPLandroid/view/KeyCharacterMap;->addCombining(II)V HSPLandroid/view/KeyCharacterMap;->addDeadKey(III)V HSPLandroid/view/KeyCharacterMap;->finalize()V HSPLandroid/view/KeyCharacterMap;->get(II)I +HSPLandroid/view/KeyCharacterMap;->getKeyboardType()I HSPLandroid/view/KeyCharacterMap;->load(I)Landroid/view/KeyCharacterMap; HSPLandroid/view/KeyCharacterMap;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/view/KeyEvent$1;-><init>()V @@ -15758,25 +16372,29 @@ HSPLandroid/view/KeyEvent$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view HSPLandroid/view/KeyEvent$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/view/KeyEvent$DispatcherState;-><init>()V HSPLandroid/view/KeyEvent$DispatcherState;->handleUpEvent(Landroid/view/KeyEvent;)V +HSPLandroid/view/KeyEvent$DispatcherState;->isTracking(Landroid/view/KeyEvent;)Z HSPLandroid/view/KeyEvent$DispatcherState;->reset()V HSPLandroid/view/KeyEvent$DispatcherState;->reset(Ljava/lang/Object;)V HSPLandroid/view/KeyEvent$DispatcherState;->startTracking(Landroid/view/KeyEvent;Ljava/lang/Object;)V +HSPLandroid/view/KeyEvent;-><init>(JJIIIIIII)V HSPLandroid/view/KeyEvent;-><init>(Landroid/os/Parcel;)V HPLandroid/view/KeyEvent;->actionToString(I)Ljava/lang/String; HSPLandroid/view/KeyEvent;->dispatch(Landroid/view/KeyEvent$Callback;Landroid/view/KeyEvent$DispatcherState;Ljava/lang/Object;)Z HSPLandroid/view/KeyEvent;->getAction()I HSPLandroid/view/KeyEvent;->getDeviceId()I HSPLandroid/view/KeyEvent;->getEventTimeNano()J +HSPLandroid/view/KeyEvent;->getFlags()I HSPLandroid/view/KeyEvent;->getKeyCharacterMap()Landroid/view/KeyCharacterMap; HSPLandroid/view/KeyEvent;->getKeyCode()I +HSPLandroid/view/KeyEvent;->getMetaState()I HSPLandroid/view/KeyEvent;->getUnicodeChar()I HSPLandroid/view/KeyEvent;->getUnicodeChar(I)I -PLandroid/view/KeyEvent;->isAltPressed()Z +HPLandroid/view/KeyEvent;->isAltPressed()Z HSPLandroid/view/KeyEvent;->isCtrlPressed()Z HPLandroid/view/KeyEvent;->isMetaKey(I)Z -PLandroid/view/KeyEvent;->isMetaPressed()Z +HPLandroid/view/KeyEvent;->isMetaPressed()Z HSPLandroid/view/KeyEvent;->isModifierKey(I)Z -PLandroid/view/KeyEvent;->isShiftPressed()Z +HPLandroid/view/KeyEvent;->isShiftPressed()Z HSPLandroid/view/KeyEvent;->isSystem()Z HSPLandroid/view/KeyEvent;->isSystemKey(I)Z HSPLandroid/view/KeyEvent;->isWakeKey()Z @@ -15829,6 +16447,7 @@ HSPLandroid/view/MotionEvent;->getEventTime()J HSPLandroid/view/MotionEvent;->getEventTimeNano()J HSPLandroid/view/MotionEvent;->getFlags()I HSPLandroid/view/MotionEvent;->getHistoricalEventTime(I)J +HSPLandroid/view/MotionEvent;->getHistoricalPressure(II)F HSPLandroid/view/MotionEvent;->getHistoricalX(II)F HSPLandroid/view/MotionEvent;->getHistoricalY(II)F HSPLandroid/view/MotionEvent;->getHistorySize()I @@ -15854,20 +16473,23 @@ HSPLandroid/view/MotionEvent;->offsetLocation(FF)V HSPLandroid/view/MotionEvent;->recycle()V HSPLandroid/view/MotionEvent;->setAction(I)V HSPLandroid/view/MotionEvent;->setLocation(FF)V +HSPLandroid/view/MotionEvent;->split(I)Landroid/view/MotionEvent; HSPLandroid/view/MotionEvent;->transform(Landroid/graphics/Matrix;)V HSPLandroid/view/OrientationEventListener;-><init>(Landroid/content/Context;)V HSPLandroid/view/OrientationEventListener;-><init>(Landroid/content/Context;I)V HSPLandroid/view/PointerIcon$1;-><init>()V HSPLandroid/view/PointerIcon;-><init>(I)V +HSPLandroid/view/PointerIcon;->getSystemIcon(Landroid/content/Context;I)Landroid/view/PointerIcon; +HSPLandroid/view/PointerIcon;->getSystemIconTypeIndex(I)I HSPLandroid/view/PointerIcon;->setUseLargeIcons(Z)V HSPLandroid/view/RemoteAnimationAdapter$1;-><init>()V PLandroid/view/RemoteAnimationAdapter$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/RemoteAnimationAdapter; PLandroid/view/RemoteAnimationAdapter$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; -PLandroid/view/RemoteAnimationAdapter;->getCallingPid()I -PLandroid/view/RemoteAnimationAdapter;->getDuration()J -PLandroid/view/RemoteAnimationAdapter;->getRunner()Landroid/view/IRemoteAnimationRunner; -PLandroid/view/RemoteAnimationAdapter;->getStatusBarTransitionDelay()J -PLandroid/view/RemoteAnimationAdapter;->setCallingPid(I)V +HPLandroid/view/RemoteAnimationAdapter;->getCallingPid()I +HPLandroid/view/RemoteAnimationAdapter;->getDuration()J +HPLandroid/view/RemoteAnimationAdapter;->getRunner()Landroid/view/IRemoteAnimationRunner; +HPLandroid/view/RemoteAnimationAdapter;->getStatusBarTransitionDelay()J +HPLandroid/view/RemoteAnimationAdapter;->setCallingPid(I)V HSPLandroid/view/RemoteAnimationDefinition$1;-><init>()V PLandroid/view/RemoteAnimationDefinition$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/RemoteAnimationDefinition; PLandroid/view/RemoteAnimationDefinition$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; @@ -15900,6 +16522,7 @@ HSPLandroid/view/RenderNodeAnimatorSetHelper;->createNativeInterpolator(Landroid HSPLandroid/view/RenderNodeAnimatorSetHelper;->getTarget(Landroid/graphics/RecordingCanvas;)Landroid/graphics/RenderNode; HSPLandroid/view/ScaleGestureDetector;-><init>(Landroid/content/Context;Landroid/view/ScaleGestureDetector$OnScaleGestureListener;)V HSPLandroid/view/ScaleGestureDetector;-><init>(Landroid/content/Context;Landroid/view/ScaleGestureDetector$OnScaleGestureListener;Landroid/os/Handler;)V +HSPLandroid/view/ScaleGestureDetector;->onTouchEvent(Landroid/view/MotionEvent;)Z HSPLandroid/view/ScaleGestureDetector;->setQuickScaleEnabled(Z)V HSPLandroid/view/ScaleGestureDetector;->setStylusScaleEnabled(Z)V HSPLandroid/view/Surface$1;-><init>()V @@ -15933,6 +16556,7 @@ HSPLandroid/view/SurfaceControl$Builder;->setParent(Landroid/view/SurfaceControl HSPLandroid/view/SurfaceControl$Builder;->setSecure(Z)Landroid/view/SurfaceControl$Builder; HSPLandroid/view/SurfaceControl$PhysicalDisplayInfo;-><init>()V HSPLandroid/view/SurfaceControl$ScreenshotGraphicBuffer;->createFromNative(IIIIJI)Landroid/view/SurfaceControl$ScreenshotGraphicBuffer; +HPLandroid/view/SurfaceControl$ScreenshotGraphicBuffer;->getColorSpace()Landroid/graphics/ColorSpace; HSPLandroid/view/SurfaceControl$ScreenshotGraphicBuffer;->getGraphicBuffer()Landroid/graphics/GraphicBuffer; HSPLandroid/view/SurfaceControl$Transaction;-><init>()V HSPLandroid/view/SurfaceControl$Transaction;->apply()V @@ -15947,7 +16571,7 @@ HSPLandroid/view/SurfaceControl$Transaction;->reparent(Landroid/view/SurfaceCont HSPLandroid/view/SurfaceControl$Transaction;->setAlpha(Landroid/view/SurfaceControl;F)Landroid/view/SurfaceControl$Transaction; HSPLandroid/view/SurfaceControl$Transaction;->setAnimationTransaction()Landroid/view/SurfaceControl$Transaction; HSPLandroid/view/SurfaceControl$Transaction;->setBufferSize(Landroid/view/SurfaceControl;II)Landroid/view/SurfaceControl$Transaction; -PLandroid/view/SurfaceControl$Transaction;->setColor(Landroid/view/SurfaceControl;[F)Landroid/view/SurfaceControl$Transaction; +HPLandroid/view/SurfaceControl$Transaction;->setColor(Landroid/view/SurfaceControl;[F)Landroid/view/SurfaceControl$Transaction; HSPLandroid/view/SurfaceControl$Transaction;->setColorSpaceAgnostic(Landroid/view/SurfaceControl;Z)Landroid/view/SurfaceControl$Transaction; HSPLandroid/view/SurfaceControl$Transaction;->setCornerRadius(Landroid/view/SurfaceControl;F)Landroid/view/SurfaceControl$Transaction; HSPLandroid/view/SurfaceControl$Transaction;->setDisplayLayerStack(Landroid/os/IBinder;I)Landroid/view/SurfaceControl$Transaction; @@ -15996,13 +16620,14 @@ HSPLandroid/view/SurfaceControl;->openTransaction()V HSPLandroid/view/SurfaceControl;->readFromParcel(Landroid/os/Parcel;)V HSPLandroid/view/SurfaceControl;->release()V HSPLandroid/view/SurfaceControl;->remove()V -PLandroid/view/SurfaceControl;->screenshot(Landroid/os/IBinder;Landroid/view/Surface;)V -PLandroid/view/SurfaceControl;->screenshot(Landroid/os/IBinder;Landroid/view/Surface;Landroid/graphics/Rect;IIZI)V +HPLandroid/view/SurfaceControl;->screenshot(Landroid/graphics/Rect;IIZI)Landroid/graphics/Bitmap; +HPLandroid/view/SurfaceControl;->screenshot(Landroid/os/IBinder;Landroid/view/Surface;)V +HPLandroid/view/SurfaceControl;->screenshot(Landroid/os/IBinder;Landroid/view/Surface;Landroid/graphics/Rect;IIZI)V HSPLandroid/view/SurfaceControl;->screenshotToBufferWithSecureLayersUnsafe(Landroid/os/IBinder;Landroid/graphics/Rect;IIZI)Landroid/view/SurfaceControl$ScreenshotGraphicBuffer; HSPLandroid/view/SurfaceControl;->setAllowedDisplayConfigs(Landroid/os/IBinder;[I)Z HSPLandroid/view/SurfaceControl;->setAlpha(F)V HSPLandroid/view/SurfaceControl;->setBufferSize(II)V -PLandroid/view/SurfaceControl;->setColor([F)V +HPLandroid/view/SurfaceControl;->setColor([F)V HSPLandroid/view/SurfaceControl;->setColorSpaceAgnostic(Z)V HSPLandroid/view/SurfaceControl;->setDisplayPowerMode(Landroid/os/IBinder;I)V HSPLandroid/view/SurfaceControl;->setDisplayedContentSamplingEnabled(Landroid/os/IBinder;ZII)Z @@ -16020,11 +16645,18 @@ HSPLandroid/view/SurfaceSession;-><init>()V HSPLandroid/view/SurfaceSession;->finalize()V HSPLandroid/view/SurfaceSession;->kill()V HSPLandroid/view/SurfaceView$2;->onPreDraw()Z +HSPLandroid/view/SurfaceView;-><init>(Landroid/content/Context;)V HSPLandroid/view/SurfaceView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V HSPLandroid/view/SurfaceView;->onAttachedToWindow()V HSPLandroid/view/SurfaceView;->onDetachedFromWindow()V HSPLandroid/view/SurfaceView;->onWindowVisibilityChanged(I)V HSPLandroid/view/SurfaceView;->updateSurface()V +HSPLandroid/view/SurfaceView;->windowStopped(Z)V +HSPLandroid/view/TextureView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLandroid/view/TextureView;->onAttachedToWindow()V +HSPLandroid/view/TextureView;->onDetachedFromWindowInternal()V +HSPLandroid/view/TextureView;->onVisibilityChanged(Landroid/view/View;I)V +HSPLandroid/view/TextureView;->releaseSurfaceTexture()V HSPLandroid/view/ThreadedRenderer;-><init>(Landroid/content/Context;ZLjava/lang/String;)V HSPLandroid/view/ThreadedRenderer;->draw(Landroid/view/View;Landroid/view/View$AttachInfo;Landroid/view/ThreadedRenderer$DrawCallbacks;)V HSPLandroid/view/ThreadedRenderer;->enableForegroundTrimming()V @@ -16040,9 +16672,12 @@ HSPLandroid/view/ThreadedRenderer;->updateViewTreeDisplayList(Landroid/view/View HSPLandroid/view/TouchDelegate;-><init>(Landroid/graphics/Rect;Landroid/view/View;)V HSPLandroid/view/VelocityTracker;->addMovement(Landroid/view/MotionEvent;)V HSPLandroid/view/VelocityTracker;->clear()V +HSPLandroid/view/VelocityTracker;->computeCurrentVelocity(I)V HSPLandroid/view/VelocityTracker;->computeCurrentVelocity(IF)V HSPLandroid/view/VelocityTracker;->finalize()V +HSPLandroid/view/VelocityTracker;->getXVelocity()F HSPLandroid/view/VelocityTracker;->getXVelocity(I)F +HSPLandroid/view/VelocityTracker;->getYVelocity()F HSPLandroid/view/VelocityTracker;->getYVelocity(I)F HSPLandroid/view/VelocityTracker;->obtain()Landroid/view/VelocityTracker; HSPLandroid/view/VelocityTracker;->recycle()V @@ -16078,6 +16713,8 @@ HSPLandroid/view/View$6;->get(Ljava/lang/Object;)Ljava/lang/Object; HSPLandroid/view/View$6;->setValue(Landroid/view/View;F)V HSPLandroid/view/View$6;->setValue(Ljava/lang/Object;F)V HSPLandroid/view/View$7;-><init>(Ljava/lang/String;)V +HSPLandroid/view/View$7;->setValue(Landroid/view/View;F)V +HSPLandroid/view/View$7;->setValue(Ljava/lang/Object;F)V HSPLandroid/view/View$8;-><init>(Ljava/lang/String;)V HSPLandroid/view/View$9;-><init>(Ljava/lang/String;)V HSPLandroid/view/View$AccessibilityDelegate;-><init>()V @@ -16119,11 +16756,13 @@ HSPLandroid/view/View;->awakenScrollBars(IZ)Z HSPLandroid/view/View;->bringToFront()V HSPLandroid/view/View;->buildDrawingCache(Z)V HSPLandroid/view/View;->buildDrawingCacheImpl(Z)V +HSPLandroid/view/View;->buildLayer()V HSPLandroid/view/View;->calculateIsImportantForContentCapture()Z HSPLandroid/view/View;->canHaveDisplayList()Z HSPLandroid/view/View;->canNotifyAutofillEnterExitEvent()Z HSPLandroid/view/View;->canResolveLayoutDirection()Z HSPLandroid/view/View;->canResolveTextDirection()Z +HSPLandroid/view/View;->canScrollHorizontally(I)Z HSPLandroid/view/View;->canScrollVertically(I)Z HSPLandroid/view/View;->canTakeFocus()Z HSPLandroid/view/View;->cancelLongPress()V @@ -16140,6 +16779,7 @@ HSPLandroid/view/View;->combineMeasuredStates(II)I HSPLandroid/view/View;->combineVisibility(II)I HSPLandroid/view/View;->computeFitSystemWindows(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z HSPLandroid/view/View;->computeHorizontalScrollExtent()I +HSPLandroid/view/View;->computeHorizontalScrollRange()I HSPLandroid/view/View;->computeOpaqueFlags()V HSPLandroid/view/View;->computeScroll()V HSPLandroid/view/View;->computeSystemWindowInsets(Landroid/view/WindowInsets;Landroid/graphics/Rect;)Landroid/view/WindowInsets; @@ -16160,6 +16800,8 @@ HSPLandroid/view/View;->dispatchDraw(Landroid/graphics/Canvas;)V HSPLandroid/view/View;->dispatchDrawableHotspotChanged(FF)V HSPLandroid/view/View;->dispatchFinishTemporaryDetach()V HSPLandroid/view/View;->dispatchKeyEvent(Landroid/view/KeyEvent;)Z +HSPLandroid/view/View;->dispatchPopulateAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;)Z +HSPLandroid/view/View;->dispatchPopulateAccessibilityEventInternal(Landroid/view/accessibility/AccessibilityEvent;)Z HSPLandroid/view/View;->dispatchProvideAutofillStructure(Landroid/view/ViewStructure;I)V HSPLandroid/view/View;->dispatchProvideStructure(Landroid/view/ViewStructure;II)V HSPLandroid/view/View;->dispatchRestoreInstanceState(Landroid/util/SparseArray;)V @@ -16200,8 +16842,10 @@ HSPLandroid/view/View;->getAccessibilityClassName()Ljava/lang/CharSequence; HSPLandroid/view/View;->getAccessibilityLiveRegion()I HSPLandroid/view/View;->getAccessibilityNodeProvider()Landroid/view/accessibility/AccessibilityNodeProvider; HSPLandroid/view/View;->getAccessibilityViewId()I +HSPLandroid/view/View;->getAccessibilityWindowId()I HSPLandroid/view/View;->getAlpha()F HSPLandroid/view/View;->getAnimation()Landroid/view/animation/Animation; +HSPLandroid/view/View;->getApplicationWindowToken()Landroid/os/IBinder; HSPLandroid/view/View;->getAutofillHints()[Ljava/lang/String; HSPLandroid/view/View;->getAutofillType()I HSPLandroid/view/View;->getAutofillViewId()I @@ -16223,6 +16867,7 @@ HSPLandroid/view/View;->getElevation()F HSPLandroid/view/View;->getFitsSystemWindows()Z HSPLandroid/view/View;->getFocusable()I HSPLandroid/view/View;->getFocusableAttribute(Landroid/content/res/TypedArray;)I +HSPLandroid/view/View;->getFocusedRect(Landroid/graphics/Rect;)V HSPLandroid/view/View;->getForeground()Landroid/graphics/drawable/Drawable; HSPLandroid/view/View;->getForegroundGravity()I HSPLandroid/view/View;->getGlobalVisibleRect(Landroid/graphics/Rect;)Z @@ -16242,6 +16887,7 @@ HSPLandroid/view/View;->getLayoutParams()Landroid/view/ViewGroup$LayoutParams; HSPLandroid/view/View;->getLeft()I HSPLandroid/view/View;->getListenerInfo()Landroid/view/View$ListenerInfo; HSPLandroid/view/View;->getLocationInWindow([I)V +HSPLandroid/view/View;->getLocationOnScreen()[I HSPLandroid/view/View;->getLocationOnScreen([I)V HSPLandroid/view/View;->getMatrix()Landroid/graphics/Matrix; HSPLandroid/view/View;->getMeasuredHeight()I @@ -16258,6 +16904,7 @@ HSPLandroid/view/View;->getPaddingRight()I HSPLandroid/view/View;->getPaddingStart()I HSPLandroid/view/View;->getPaddingTop()I HSPLandroid/view/View;->getParent()Landroid/view/ViewParent; +HSPLandroid/view/View;->getParentForAccessibility()Landroid/view/ViewParent; HSPLandroid/view/View;->getPivotX()F HSPLandroid/view/View;->getPivotY()F HSPLandroid/view/View;->getRawLayoutDirection()I @@ -16270,10 +16917,12 @@ HSPLandroid/view/View;->getRootWindowInsets()Landroid/view/WindowInsets; HSPLandroid/view/View;->getRotation()F HSPLandroid/view/View;->getRotationX()F HSPLandroid/view/View;->getRotationY()F +HSPLandroid/view/View;->getRunQueue()Landroid/view/HandlerActionQueue; HSPLandroid/view/View;->getScaleX()F HSPLandroid/view/View;->getScaleY()F HSPLandroid/view/View;->getScrollX()I HSPLandroid/view/View;->getScrollY()I +HSPLandroid/view/View;->getSelfOrParentImportantForA11y()Landroid/view/View; HSPLandroid/view/View;->getStraightVerticalScrollBarBounds(Landroid/graphics/Rect;Landroid/graphics/Rect;)V HSPLandroid/view/View;->getSuggestedMinimumHeight()I HSPLandroid/view/View;->getSuggestedMinimumWidth()I @@ -16292,9 +16941,11 @@ HSPLandroid/view/View;->getViewRootImpl()Landroid/view/ViewRootImpl; HSPLandroid/view/View;->getViewTreeObserver()Landroid/view/ViewTreeObserver; HSPLandroid/view/View;->getVisibility()I HSPLandroid/view/View;->getWidth()I +HSPLandroid/view/View;->getWindowAttachCount()I HSPLandroid/view/View;->getWindowSystemUiVisibility()I HSPLandroid/view/View;->getWindowToken()Landroid/os/IBinder; HSPLandroid/view/View;->getWindowVisibility()I +HSPLandroid/view/View;->getWindowVisibleDisplayFrame(Landroid/graphics/Rect;)V HSPLandroid/view/View;->getX()F HSPLandroid/view/View;->getY()F HSPLandroid/view/View;->getZ()F @@ -16302,6 +16953,7 @@ HSPLandroid/view/View;->handleFocusGainInternal(ILandroid/graphics/Rect;)V HSPLandroid/view/View;->handleScrollBarDragging(Landroid/view/MotionEvent;)Z HSPLandroid/view/View;->hasAncestorThatBlocksDescendantFocus()Z HSPLandroid/view/View;->hasDefaultFocus()Z +HSPLandroid/view/View;->hasExplicitFocusable()Z HSPLandroid/view/View;->hasFocus()Z HSPLandroid/view/View;->hasFocusable()Z HSPLandroid/view/View;->hasFocusable(ZZ)Z @@ -16400,6 +17052,7 @@ HSPLandroid/view/View;->onApplyWindowInsets(Landroid/view/WindowInsets;)Landroid HSPLandroid/view/View;->onAttachedToWindow()V HSPLandroid/view/View;->onCancelPendingInputEvents()V HSPLandroid/view/View;->onCheckIsTextEditor()Z +HSPLandroid/view/View;->onCloseSystemDialogs(Ljava/lang/String;)V HSPLandroid/view/View;->onConfigurationChanged(Landroid/content/res/Configuration;)V HSPLandroid/view/View;->onCreateDrawableState(I)[I HSPLandroid/view/View;->onCreateInputConnection(Landroid/view/inputmethod/EditorInfo;)Landroid/view/inputmethod/InputConnection; @@ -16415,10 +17068,14 @@ HSPLandroid/view/View;->onFinishInflate()V HSPLandroid/view/View;->onFinishTemporaryDetach()V HSPLandroid/view/View;->onFocusChanged(ZILandroid/graphics/Rect;)V HSPLandroid/view/View;->onFocusLost()V +HSPLandroid/view/View;->onInitializeAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;)V +HSPLandroid/view/View;->onInitializeAccessibilityEventInternal(Landroid/view/accessibility/AccessibilityEvent;)V HSPLandroid/view/View;->onKeyDown(ILandroid/view/KeyEvent;)Z HSPLandroid/view/View;->onKeyUp(ILandroid/view/KeyEvent;)Z HSPLandroid/view/View;->onLayout(ZIIII)V HSPLandroid/view/View;->onMeasure(II)V +HSPLandroid/view/View;->onPopulateAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;)V +HSPLandroid/view/View;->onPopulateAccessibilityEventInternal(Landroid/view/accessibility/AccessibilityEvent;)V HSPLandroid/view/View;->onProvideAutofillStructure(Landroid/view/ViewStructure;I)V HSPLandroid/view/View;->onProvideAutofillVirtualStructure(Landroid/view/ViewStructure;I)V HSPLandroid/view/View;->onProvideStructure(Landroid/view/ViewStructure;II)V @@ -16495,6 +17152,8 @@ HSPLandroid/view/View;->scheduleDrawable(Landroid/graphics/drawable/Drawable;Lja HSPLandroid/view/View;->scrollTo(II)V HSPLandroid/view/View;->sendAccessibilityEvent(I)V HSPLandroid/view/View;->sendAccessibilityEventInternal(I)V +HSPLandroid/view/View;->sendAccessibilityEventUnchecked(Landroid/view/accessibility/AccessibilityEvent;)V +HSPLandroid/view/View;->sendAccessibilityEventUncheckedInternal(Landroid/view/accessibility/AccessibilityEvent;)V HSPLandroid/view/View;->setAccessibilityDelegate(Landroid/view/View$AccessibilityDelegate;)V HSPLandroid/view/View;->setAccessibilityHeading(Z)V HSPLandroid/view/View;->setAccessibilityLiveRegion(I)V @@ -16509,8 +17168,10 @@ HSPLandroid/view/View;->setBackgroundBounds()V HSPLandroid/view/View;->setBackgroundColor(I)V HSPLandroid/view/View;->setBackgroundDrawable(Landroid/graphics/drawable/Drawable;)V HSPLandroid/view/View;->setBackgroundResource(I)V +HSPLandroid/view/View;->setBackgroundTintList(Landroid/content/res/ColorStateList;)V HSPLandroid/view/View;->setBottom(I)V HSPLandroid/view/View;->setClickable(Z)V +HSPLandroid/view/View;->setClipBounds(Landroid/graphics/Rect;)V HSPLandroid/view/View;->setClipToOutline(Z)V HSPLandroid/view/View;->setContentDescription(Ljava/lang/CharSequence;)V HSPLandroid/view/View;->setDefaultFocusHighlightEnabled(Z)V @@ -16534,7 +17195,9 @@ HSPLandroid/view/View;->setImportantForAccessibility(I)V HSPLandroid/view/View;->setImportantForAutofill(I)V HSPLandroid/view/View;->setImportantForContentCapture(I)V HSPLandroid/view/View;->setIsRootNamespace(Z)V +HSPLandroid/view/View;->setKeepScreenOn(Z)V HSPLandroid/view/View;->setKeyboardNavigationCluster(Z)V +HSPLandroid/view/View;->setLayerPaint(Landroid/graphics/Paint;)V HSPLandroid/view/View;->setLayerType(ILandroid/graphics/Paint;)V HSPLandroid/view/View;->setLayoutDirection(I)V HSPLandroid/view/View;->setLayoutParams(Landroid/view/ViewGroup$LayoutParams;)V @@ -16544,6 +17207,10 @@ HSPLandroid/view/View;->setMeasuredDimension(II)V HSPLandroid/view/View;->setMinimumHeight(I)V HSPLandroid/view/View;->setMinimumWidth(I)V HSPLandroid/view/View;->setNextFocusDownId(I)V +HSPLandroid/view/View;->setNextFocusForwardId(I)V +HSPLandroid/view/View;->setNextFocusLeftId(I)V +HSPLandroid/view/View;->setNextFocusRightId(I)V +HSPLandroid/view/View;->setNextFocusUpId(I)V HSPLandroid/view/View;->setOnApplyWindowInsetsListener(Landroid/view/View$OnApplyWindowInsetsListener;)V HSPLandroid/view/View;->setOnClickListener(Landroid/view/View$OnClickListener;)V HSPLandroid/view/View;->setOnCreateContextMenuListener(Landroid/view/View$OnCreateContextMenuListener;)V @@ -16559,6 +17226,7 @@ HSPLandroid/view/View;->setPadding(IIII)V HSPLandroid/view/View;->setPaddingRelative(IIII)V HSPLandroid/view/View;->setPivotX(F)V HSPLandroid/view/View;->setPivotY(F)V +HSPLandroid/view/View;->setPointerIcon(Landroid/view/PointerIcon;)V HSPLandroid/view/View;->setPressed(Z)V HSPLandroid/view/View;->setRight(I)V HSPLandroid/view/View;->setRotation(F)V @@ -16569,6 +17237,7 @@ HSPLandroid/view/View;->setSaveFromParentEnabled(Z)V HSPLandroid/view/View;->setScaleX(F)V HSPLandroid/view/View;->setScaleY(F)V HSPLandroid/view/View;->setScrollContainer(Z)V +HSPLandroid/view/View;->setScrollIndicators(II)V HSPLandroid/view/View;->setScrollX(I)V HSPLandroid/view/View;->setScrollY(I)V HSPLandroid/view/View;->setSelected(Z)V @@ -16577,6 +17246,7 @@ HSPLandroid/view/View;->setSystemUiVisibility(I)V HSPLandroid/view/View;->setTag(ILjava/lang/Object;)V HSPLandroid/view/View;->setTag(Ljava/lang/Object;)V HSPLandroid/view/View;->setTagInternal(ILjava/lang/Object;)V +HSPLandroid/view/View;->setTextAlignment(I)V HSPLandroid/view/View;->setTextDirection(I)V HSPLandroid/view/View;->setTooltipText(Ljava/lang/CharSequence;)V HSPLandroid/view/View;->setTop(I)V @@ -16585,6 +17255,7 @@ HSPLandroid/view/View;->setTransitionAlpha(F)V HSPLandroid/view/View;->setTranslationX(F)V HSPLandroid/view/View;->setTranslationY(F)V HSPLandroid/view/View;->setTranslationZ(F)V +HSPLandroid/view/View;->setVerticalScrollBarEnabled(Z)V HSPLandroid/view/View;->setVisibility(I)V HSPLandroid/view/View;->setWillNotDraw(Z)V HSPLandroid/view/View;->setX(F)V @@ -16608,7 +17279,7 @@ HSPLandroid/view/ViewAnimationHostBridge;->registerAnimatingRenderNode(Landroid/ HSPLandroid/view/ViewAnimationHostBridge;->registerVectorDrawableAnimator(Landroid/view/NativeVectorDrawableAnimator;)V HSPLandroid/view/ViewConfiguration;-><init>(Landroid/content/Context;)V HSPLandroid/view/ViewConfiguration;->get(Landroid/content/Context;)Landroid/view/ViewConfiguration; -PLandroid/view/ViewConfiguration;->getDeviceGlobalActionKeyTimeout()J +HPLandroid/view/ViewConfiguration;->getDeviceGlobalActionKeyTimeout()J HSPLandroid/view/ViewConfiguration;->getDoubleTapMinTime()I HSPLandroid/view/ViewConfiguration;->getDoubleTapTimeout()I HSPLandroid/view/ViewConfiguration;->getKeyRepeatTimeout()I @@ -16629,6 +17300,7 @@ HSPLandroid/view/ViewConfiguration;->getScaledPagingTouchSlop()I HSPLandroid/view/ViewConfiguration;->getScaledScrollBarSize()I HSPLandroid/view/ViewConfiguration;->getScaledTouchSlop()I HSPLandroid/view/ViewConfiguration;->getScaledVerticalScrollFactor()F +HSPLandroid/view/ViewConfiguration;->getScaledWindowTouchSlop()I HSPLandroid/view/ViewConfiguration;->getTapTimeout()I HSPLandroid/view/ViewConfiguration;->isFadingMarqueeEnabled()Z HSPLandroid/view/ViewDebug;->getViewInstanceCount()J @@ -16698,16 +17370,19 @@ HSPLandroid/view/ViewGroup;->dispatchConfigurationChanged(Landroid/content/res/C HSPLandroid/view/ViewGroup;->dispatchDetachedFromWindow()V HSPLandroid/view/ViewGroup;->dispatchDraw(Landroid/graphics/Canvas;)V HSPLandroid/view/ViewGroup;->dispatchDrawableHotspotChanged(FF)V +HSPLandroid/view/ViewGroup;->dispatchFinishTemporaryDetach()V HSPLandroid/view/ViewGroup;->dispatchFreezeSelfOnly(Landroid/util/SparseArray;)V HSPLandroid/view/ViewGroup;->dispatchGetDisplayList()V HSPLandroid/view/ViewGroup;->dispatchKeyEvent(Landroid/view/KeyEvent;)Z HSPLandroid/view/ViewGroup;->dispatchKeyEventPreIme(Landroid/view/KeyEvent;)Z +HSPLandroid/view/ViewGroup;->dispatchPopulateAccessibilityEventInternal(Landroid/view/accessibility/AccessibilityEvent;)Z HSPLandroid/view/ViewGroup;->dispatchProvideAutofillStructure(Landroid/view/ViewStructure;I)V HSPLandroid/view/ViewGroup;->dispatchRestoreInstanceState(Landroid/util/SparseArray;)V HSPLandroid/view/ViewGroup;->dispatchSaveInstanceState(Landroid/util/SparseArray;)V HSPLandroid/view/ViewGroup;->dispatchScreenStateChanged(I)V HSPLandroid/view/ViewGroup;->dispatchSetPressed(Z)V HSPLandroid/view/ViewGroup;->dispatchSetSelected(Z)V +HSPLandroid/view/ViewGroup;->dispatchStartTemporaryDetach()V HSPLandroid/view/ViewGroup;->dispatchThawSelfOnly(Landroid/util/SparseArray;)V HSPLandroid/view/ViewGroup;->dispatchTouchEvent(Landroid/view/MotionEvent;)Z HSPLandroid/view/ViewGroup;->dispatchTransformedTouchEvent(Landroid/view/MotionEvent;ZLandroid/view/View;I)Z @@ -16748,6 +17423,7 @@ HSPLandroid/view/ViewGroup;->getDescendantFocusability()I HSPLandroid/view/ViewGroup;->getFocusedChild()Landroid/view/View; HSPLandroid/view/ViewGroup;->getLayoutMode()I HSPLandroid/view/ViewGroup;->getLayoutTransition()Landroid/animation/LayoutTransition; +HSPLandroid/view/ViewGroup;->getScrollIndicatorBounds(Landroid/graphics/Rect;)V HSPLandroid/view/ViewGroup;->getTouchscreenBlocksFocus()Z HSPLandroid/view/ViewGroup;->handleFocusGainInternal(ILandroid/graphics/Rect;)V HSPLandroid/view/ViewGroup;->hasDefaultFocus()Z @@ -16773,6 +17449,7 @@ HSPLandroid/view/ViewGroup;->makeOptionalFitsSystemWindows()V HSPLandroid/view/ViewGroup;->measureChild(Landroid/view/View;II)V HSPLandroid/view/ViewGroup;->measureChildWithMargins(Landroid/view/View;IIII)V HSPLandroid/view/ViewGroup;->measureChildren(II)V +HSPLandroid/view/ViewGroup;->notifySubtreeAccessibilityStateChanged(Landroid/view/View;Landroid/view/View;I)V HSPLandroid/view/ViewGroup;->notifySubtreeAccessibilityStateChangedIfNeeded()V HSPLandroid/view/ViewGroup;->offsetRectBetweenParentAndChild(Landroid/view/View;Landroid/graphics/Rect;ZZ)V HSPLandroid/view/ViewGroup;->onAttachedToWindow()V @@ -16782,11 +17459,14 @@ HSPLandroid/view/ViewGroup;->onDescendantInvalidated(Landroid/view/View;Landroid HSPLandroid/view/ViewGroup;->onDetachedFromWindow()V HSPLandroid/view/ViewGroup;->onInterceptTouchEvent(Landroid/view/MotionEvent;)Z HSPLandroid/view/ViewGroup;->onRequestFocusInDescendants(ILandroid/graphics/Rect;)Z +HSPLandroid/view/ViewGroup;->onRequestSendAccessibilityEvent(Landroid/view/View;Landroid/view/accessibility/AccessibilityEvent;)Z +HSPLandroid/view/ViewGroup;->onRequestSendAccessibilityEventInternal(Landroid/view/View;Landroid/view/accessibility/AccessibilityEvent;)Z HSPLandroid/view/ViewGroup;->onSetLayoutParams(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V HSPLandroid/view/ViewGroup;->onStartNestedScroll(Landroid/view/View;Landroid/view/View;I)Z HSPLandroid/view/ViewGroup;->onViewAdded(Landroid/view/View;)V HSPLandroid/view/ViewGroup;->onViewRemoved(Landroid/view/View;)V HSPLandroid/view/ViewGroup;->populateChildrenForAutofill(Ljava/util/ArrayList;I)V +HSPLandroid/view/ViewGroup;->recomputeViewAttributes(Landroid/view/View;)V HSPLandroid/view/ViewGroup;->removeAllViews()V HSPLandroid/view/ViewGroup;->removeAllViewsInLayout()V HSPLandroid/view/ViewGroup;->removeDetachedView(Landroid/view/View;Z)V @@ -16800,6 +17480,7 @@ HSPLandroid/view/ViewGroup;->requestChildFocus(Landroid/view/View;Landroid/view/ HSPLandroid/view/ViewGroup;->requestChildRectangleOnScreen(Landroid/view/View;Landroid/graphics/Rect;Z)Z HSPLandroid/view/ViewGroup;->requestDisallowInterceptTouchEvent(Z)V HSPLandroid/view/ViewGroup;->requestFocus(ILandroid/graphics/Rect;)Z +HSPLandroid/view/ViewGroup;->requestSendAccessibilityEvent(Landroid/view/View;Landroid/view/accessibility/AccessibilityEvent;)Z HSPLandroid/view/ViewGroup;->requestTransitionStart(Landroid/animation/LayoutTransition;)V HSPLandroid/view/ViewGroup;->requestTransparentRegion(Landroid/view/View;)V HSPLandroid/view/ViewGroup;->resetResolvedDrawables()V @@ -16822,6 +17503,7 @@ HSPLandroid/view/ViewGroup;->setChildrenDrawingOrderEnabled(Z)V HSPLandroid/view/ViewGroup;->setClipChildren(Z)V HSPLandroid/view/ViewGroup;->setClipToPadding(Z)V HSPLandroid/view/ViewGroup;->setDescendantFocusability(I)V +HSPLandroid/view/ViewGroup;->setLayoutAnimation(Landroid/view/animation/LayoutAnimationController;)V HSPLandroid/view/ViewGroup;->setLayoutTransition(Landroid/animation/LayoutTransition;)V HSPLandroid/view/ViewGroup;->setMotionEventSplittingEnabled(Z)V HSPLandroid/view/ViewGroup;->setOnHierarchyChangeListener(Landroid/view/ViewGroup$OnHierarchyChangeListener;)V @@ -16861,6 +17543,7 @@ HSPLandroid/view/ViewPropertyAnimator;->translationY(F)Landroid/view/ViewPropert HSPLandroid/view/ViewPropertyAnimator;->withEndAction(Ljava/lang/Runnable;)Landroid/view/ViewPropertyAnimator; HSPLandroid/view/ViewRootImpl$1;->onDisplayChanged(I)V HSPLandroid/view/ViewRootImpl$4;->run()V +HSPLandroid/view/ViewRootImpl$AccessibilityInteractionConnectionManager;->ensureConnection()V HSPLandroid/view/ViewRootImpl$AsyncInputStage;->apply(Landroid/view/ViewRootImpl$QueuedInputEvent;I)V HSPLandroid/view/ViewRootImpl$AsyncInputStage;->defer(Landroid/view/ViewRootImpl$QueuedInputEvent;)V HSPLandroid/view/ViewRootImpl$AsyncInputStage;->dequeue(Landroid/view/ViewRootImpl$QueuedInputEvent;Landroid/view/ViewRootImpl$QueuedInputEvent;)V @@ -16886,6 +17569,9 @@ HSPLandroid/view/ViewRootImpl$InvalidateOnAnimationRunnable;->run()V HSPLandroid/view/ViewRootImpl$NativePostImeInputStage;->onProcess(Landroid/view/ViewRootImpl$QueuedInputEvent;)I HSPLandroid/view/ViewRootImpl$NativePreImeInputStage;->onProcess(Landroid/view/ViewRootImpl$QueuedInputEvent;)I HSPLandroid/view/ViewRootImpl$QueuedInputEvent;->shouldSkipIme()Z +HSPLandroid/view/ViewRootImpl$SendWindowContentChangedAccessibilityEvent;->removeCallbacksAndRun()V +HSPLandroid/view/ViewRootImpl$SendWindowContentChangedAccessibilityEvent;->run()V +HSPLandroid/view/ViewRootImpl$SendWindowContentChangedAccessibilityEvent;->runOrPost(Landroid/view/View;I)V HSPLandroid/view/ViewRootImpl$SyntheticInputStage;-><init>(Landroid/view/ViewRootImpl;)V HSPLandroid/view/ViewRootImpl$SyntheticInputStage;->onDeliverToNext(Landroid/view/ViewRootImpl$QueuedInputEvent;)V HSPLandroid/view/ViewRootImpl$SyntheticInputStage;->onDetachedFromWindow()V @@ -16907,6 +17593,7 @@ HSPLandroid/view/ViewRootImpl$ViewRootHandler;->handleMessage(Landroid/os/Messag HSPLandroid/view/ViewRootImpl$ViewRootHandler;->sendMessageAtTime(Landroid/os/Message;J)Z HSPLandroid/view/ViewRootImpl$W;->closeSystemDialogs(Ljava/lang/String;)V HSPLandroid/view/ViewRootImpl$W;->dispatchAppVisibility(Z)V +HSPLandroid/view/ViewRootImpl$W;->dispatchSystemUiVisibilityChanged(IIII)V HSPLandroid/view/ViewRootImpl$W;->dispatchWindowShown()V HSPLandroid/view/ViewRootImpl$W;->insetsChanged(Landroid/view/InsetsState;)V HSPLandroid/view/ViewRootImpl$W;->moved(II)V @@ -16956,6 +17643,7 @@ HSPLandroid/view/ViewRootImpl;->getAccessibilityFocusedRect(Landroid/graphics/Re HSPLandroid/view/ViewRootImpl;->getAudioManager()Landroid/media/AudioManager; HSPLandroid/view/ViewRootImpl;->getAutofillManager()Landroid/view/autofill/AutofillManager; HSPLandroid/view/ViewRootImpl;->getChildVisibleRect(Landroid/view/View;Landroid/graphics/Rect;Landroid/graphics/Point;)Z +HSPLandroid/view/ViewRootImpl;->getCommonPredecessor(Landroid/view/View;Landroid/view/View;)Landroid/view/View; HSPLandroid/view/ViewRootImpl;->getDisplayId()I HSPLandroid/view/ViewRootImpl;->getHostVisibility()I HSPLandroid/view/ViewRootImpl;->getParent()Landroid/view/ViewParent; @@ -16967,7 +17655,9 @@ HSPLandroid/view/ViewRootImpl;->getValidLayoutRequesters(Ljava/util/ArrayList;Z) HSPLandroid/view/ViewRootImpl;->getWindowFlags()I HSPLandroid/view/ViewRootImpl;->getWindowInsets(Z)Landroid/view/WindowInsets; HSPLandroid/view/ViewRootImpl;->handleContentCaptureFlush()V +HSPLandroid/view/ViewRootImpl;->handleDispatchSystemUiVisibilityChanged(Landroid/view/ViewRootImpl$SystemUiVisibilityInfo;)V HSPLandroid/view/ViewRootImpl;->handleDispatchWindowShown()V +HSPLandroid/view/ViewRootImpl;->handleWindowContentChangedEvent(Landroid/view/accessibility/AccessibilityEvent;)V HSPLandroid/view/ViewRootImpl;->handleWindowFocusChanged()V HSPLandroid/view/ViewRootImpl;->hasColorModeChanged(I)Z HSPLandroid/view/ViewRootImpl;->invalidateChild(Landroid/view/View;Landroid/graphics/Rect;)V @@ -16982,6 +17672,7 @@ HSPLandroid/view/ViewRootImpl;->isTextDirectionResolved()Z HSPLandroid/view/ViewRootImpl;->maybeHandleWindowMove(Landroid/graphics/Rect;)V HSPLandroid/view/ViewRootImpl;->maybeUpdateTooltip(Landroid/view/MotionEvent;)V HSPLandroid/view/ViewRootImpl;->measureHierarchy(Landroid/view/View;Landroid/view/WindowManager$LayoutParams;Landroid/content/res/Resources;II)Z +HSPLandroid/view/ViewRootImpl;->notifySubtreeAccessibilityStateChanged(Landroid/view/View;Landroid/view/View;I)V HSPLandroid/view/ViewRootImpl;->onDescendantInvalidated(Landroid/view/View;Landroid/view/View;)V HSPLandroid/view/ViewRootImpl;->onPostDraw(Landroid/graphics/RecordingCanvas;)V HSPLandroid/view/ViewRootImpl;->onPreDraw(Landroid/graphics/RecordingCanvas;)V @@ -17007,6 +17698,7 @@ HSPLandroid/view/ViewRootImpl;->requestChildRectangleOnScreen(Landroid/view/View HSPLandroid/view/ViewRootImpl;->requestDisallowInterceptTouchEvent(Z)V HSPLandroid/view/ViewRootImpl;->requestFitSystemWindows()V HSPLandroid/view/ViewRootImpl;->requestLayout()V +HSPLandroid/view/ViewRootImpl;->requestSendAccessibilityEvent(Landroid/view/View;Landroid/view/accessibility/AccessibilityEvent;)Z HSPLandroid/view/ViewRootImpl;->requestTransparentRegion(Landroid/view/View;)V HSPLandroid/view/ViewRootImpl;->scheduleTraversals()V HSPLandroid/view/ViewRootImpl;->scrollToRectOrFocus(Landroid/graphics/Rect;Z)Z @@ -17070,6 +17762,7 @@ HSPLandroid/view/Window;->getWindowManager()Landroid/view/WindowManager; HSPLandroid/view/Window;->getWindowStyle()Landroid/content/res/TypedArray; HSPLandroid/view/Window;->hasFeature(I)Z HSPLandroid/view/Window;->haveDimAmount()Z +HSPLandroid/view/Window;->isOutOfBounds(Landroid/content/Context;Landroid/view/MotionEvent;)Z HSPLandroid/view/Window;->makeActive()V HSPLandroid/view/Window;->setCallback(Landroid/view/Window$Callback;)V HSPLandroid/view/Window;->setCloseOnTouchOutside(Z)V @@ -17096,13 +17789,18 @@ HSPLandroid/view/WindowInsets;->consumeDisplayCutout()Landroid/view/WindowInsets HSPLandroid/view/WindowInsets;->createCompatTypeMap(Landroid/graphics/Rect;)[Landroid/graphics/Insets; HSPLandroid/view/WindowInsets;->displayCutoutCopyConstructorArgument(Landroid/view/WindowInsets;)Landroid/view/DisplayCutout; HSPLandroid/view/WindowInsets;->equals(Ljava/lang/Object;)Z +HSPLandroid/view/WindowInsets;->getDisplayCutout()Landroid/view/DisplayCutout; HSPLandroid/view/WindowInsets;->getInsets([Landroid/graphics/Insets;I)Landroid/graphics/Insets; +HSPLandroid/view/WindowInsets;->getStableInsetBottom()I +HSPLandroid/view/WindowInsets;->getStableInsetLeft()I +HSPLandroid/view/WindowInsets;->getStableInsetRight()I HSPLandroid/view/WindowInsets;->getSystemWindowInsetBottom()I HSPLandroid/view/WindowInsets;->getSystemWindowInsetLeft()I HSPLandroid/view/WindowInsets;->getSystemWindowInsetRight()I HSPLandroid/view/WindowInsets;->getSystemWindowInsetTop()I HSPLandroid/view/WindowInsets;->inset(IIII)Landroid/view/WindowInsets; HSPLandroid/view/WindowInsets;->insetInsets(Landroid/graphics/Insets;IIII)Landroid/graphics/Insets; +HSPLandroid/view/WindowInsets;->isConsumed()Z HSPLandroid/view/WindowInsets;->replaceSystemWindowInsets(IIII)Landroid/view/WindowInsets; HSPLandroid/view/WindowManager$LayoutParams$1;-><init>()V HSPLandroid/view/WindowManager$LayoutParams$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/WindowManager$LayoutParams; @@ -17123,7 +17821,7 @@ HSPLandroid/view/WindowManagerGlobal;->closeAll(Landroid/os/IBinder;Ljava/lang/S HSPLandroid/view/WindowManagerGlobal;->closeAllExceptView(Landroid/os/IBinder;Landroid/view/View;Ljava/lang/String;Ljava/lang/String;)V HSPLandroid/view/WindowManagerGlobal;->doRemoveView(Landroid/view/ViewRootImpl;)V HSPLandroid/view/WindowManagerGlobal;->doTrimForeground()V -PLandroid/view/WindowManagerGlobal;->dumpGfxInfo(Ljava/io/FileDescriptor;[Ljava/lang/String;)V +HPLandroid/view/WindowManagerGlobal;->dumpGfxInfo(Ljava/io/FileDescriptor;[Ljava/lang/String;)V HSPLandroid/view/WindowManagerGlobal;->findViewLocked(Landroid/view/View;Z)I HSPLandroid/view/WindowManagerGlobal;->getInstance()Landroid/view/WindowManagerGlobal; HSPLandroid/view/WindowManagerGlobal;->getRootViews(Landroid/os/IBinder;)Ljava/util/ArrayList; @@ -17145,11 +17843,17 @@ HSPLandroid/view/WindowManagerImpl;->removeViewImmediate(Landroid/view/View;)V HSPLandroid/view/WindowManagerImpl;->updateViewLayout(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V HSPLandroid/view/accessibility/-$$Lambda$AccessibilityManager$1$o7fCplskH9NlBwJvkl6NoZ0L_BA;->run()V HSPLandroid/view/accessibility/AccessibilityEvent$1;-><init>()V +HSPLandroid/view/accessibility/AccessibilityEvent;->clear()V +HSPLandroid/view/accessibility/AccessibilityEvent;->setEventTime(J)V +HSPLandroid/view/accessibility/AccessibilityEvent;->setPackageName(Ljava/lang/CharSequence;)V +HSPLandroid/view/accessibility/AccessibilityEvent;->writeAccessibilityRecordToParcel(Landroid/view/accessibility/AccessibilityRecord;Landroid/os/Parcel;I)V +HSPLandroid/view/accessibility/AccessibilityEvent;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/view/accessibility/AccessibilityManager$1;->lambda$notifyServicesStateChanged$0$AccessibilityManager$1(Landroid/view/accessibility/AccessibilityManager$AccessibilityServicesStateChangeListener;)V HSPLandroid/view/accessibility/AccessibilityManager$1;->notifyServicesStateChanged(J)V HSPLandroid/view/accessibility/AccessibilityManager$1;->setState(I)V HSPLandroid/view/accessibility/AccessibilityManager$MyCallback;->handleMessage(Landroid/os/Message;)Z HSPLandroid/view/accessibility/AccessibilityManager;-><init>(Landroid/content/Context;Landroid/view/accessibility/IAccessibilityManager;I)V +HSPLandroid/view/accessibility/AccessibilityManager;->addAccessibilityInteractionConnection(Landroid/view/IWindow;Ljava/lang/String;Landroid/view/accessibility/IAccessibilityInteractionConnection;)I HSPLandroid/view/accessibility/AccessibilityManager;->addAccessibilityServicesStateChangeListener(Landroid/view/accessibility/AccessibilityManager$AccessibilityServicesStateChangeListener;Landroid/os/Handler;)V HSPLandroid/view/accessibility/AccessibilityManager;->addAccessibilityStateChangeListener(Landroid/view/accessibility/AccessibilityManager$AccessibilityStateChangeListener;)Z HSPLandroid/view/accessibility/AccessibilityManager;->addAccessibilityStateChangeListener(Landroid/view/accessibility/AccessibilityManager$AccessibilityStateChangeListener;Landroid/os/Handler;)V @@ -17157,6 +17861,7 @@ HSPLandroid/view/accessibility/AccessibilityManager;->addHighTextContrastStateCh HSPLandroid/view/accessibility/AccessibilityManager;->addTouchExplorationStateChangeListener(Landroid/view/accessibility/AccessibilityManager$TouchExplorationStateChangeListener;)Z HSPLandroid/view/accessibility/AccessibilityManager;->addTouchExplorationStateChangeListener(Landroid/view/accessibility/AccessibilityManager$TouchExplorationStateChangeListener;Landroid/os/Handler;)V HSPLandroid/view/accessibility/AccessibilityManager;->getEnabledAccessibilityServiceList(I)Ljava/util/List; +HSPLandroid/view/accessibility/AccessibilityManager;->getInstalledAccessibilityServiceList()Ljava/util/List; HSPLandroid/view/accessibility/AccessibilityManager;->getInstance(Landroid/content/Context;)Landroid/view/accessibility/AccessibilityManager; HSPLandroid/view/accessibility/AccessibilityManager;->getRecommendedTimeoutMillis(II)I HSPLandroid/view/accessibility/AccessibilityManager;->isAccessibilityVolumeStreamActive()Z @@ -17165,10 +17870,13 @@ HSPLandroid/view/accessibility/AccessibilityManager;->isHighTextContrastEnabled( HSPLandroid/view/accessibility/AccessibilityManager;->isTouchExplorationEnabled()Z HSPLandroid/view/accessibility/AccessibilityManager;->notifyAccessibilityButtonVisibilityChanged(Z)V HSPLandroid/view/accessibility/AccessibilityManager;->notifyAccessibilityStateChanged()V +HSPLandroid/view/accessibility/AccessibilityManager;->removeAccessibilityInteractionConnection(Landroid/view/IWindow;)V HSPLandroid/view/accessibility/AccessibilityManager;->removeAccessibilityStateChangeListener(Landroid/view/accessibility/AccessibilityManager$AccessibilityStateChangeListener;)Z HSPLandroid/view/accessibility/AccessibilityManager;->removeHighTextContrastStateChangeListener(Landroid/view/accessibility/AccessibilityManager$HighTextContrastChangeListener;)V +HSPLandroid/view/accessibility/AccessibilityManager;->sendAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;)V HSPLandroid/view/accessibility/AccessibilityManager;->setStateLocked(I)V HSPLandroid/view/accessibility/AccessibilityManager;->tryConnectToServiceLocked(Landroid/view/accessibility/IAccessibilityManager;)V +HSPLandroid/view/accessibility/AccessibilityNodeIdManager;->findView(I)Landroid/view/View; HSPLandroid/view/accessibility/AccessibilityNodeIdManager;->getInstance()Landroid/view/accessibility/AccessibilityNodeIdManager; HSPLandroid/view/accessibility/AccessibilityNodeIdManager;->registerViewWithId(Landroid/view/View;I)V HSPLandroid/view/accessibility/AccessibilityNodeIdManager;->unregisterViewWithId(I)V @@ -17179,15 +17887,25 @@ HSPLandroid/view/accessibility/AccessibilityNodeInfo$AccessibilityAction;->hashC HSPLandroid/view/accessibility/AccessibilityNodeInfo;-><init>()V HSPLandroid/view/accessibility/AccessibilityNodeInfo;->makeNodeId(II)J HSPLandroid/view/accessibility/AccessibilityRecord;-><init>()V +HSPLandroid/view/accessibility/AccessibilityRecord;->clear()V +HSPLandroid/view/accessibility/AccessibilityRecord;->enforceNotSealed()V +HSPLandroid/view/accessibility/AccessibilityRecord;->isSealed()Z +HSPLandroid/view/accessibility/AccessibilityRecord;->setClassName(Ljava/lang/CharSequence;)V +HSPLandroid/view/accessibility/AccessibilityRecord;->setSource(Landroid/view/View;I)V HSPLandroid/view/accessibility/CaptioningManager$CaptionStyle;-><init>(IIIIILjava/lang/String;)V HSPLandroid/view/accessibility/CaptioningManager;-><init>(Landroid/content/Context;)V +HSPLandroid/view/accessibility/CaptioningManager;->addCaptioningChangeListener(Landroid/view/accessibility/CaptioningManager$CaptioningChangeListener;)V +HSPLandroid/view/accessibility/CaptioningManager;->getFontScale()F HSPLandroid/view/accessibility/CaptioningManager;->getLocale()Ljava/util/Locale; +HSPLandroid/view/accessibility/CaptioningManager;->getRawUserStyle()I +HSPLandroid/view/accessibility/CaptioningManager;->getUserStyle()Landroid/view/accessibility/CaptioningManager$CaptionStyle; HSPLandroid/view/accessibility/CaptioningManager;->isEnabled()Z HSPLandroid/view/accessibility/CaptioningManager;->removeCaptioningChangeListener(Landroid/view/accessibility/CaptioningManager$CaptioningChangeListener;)V HSPLandroid/view/accessibility/IAccessibilityInteractionConnection$Stub$Proxy;->asBinder()Landroid/os/IBinder; HSPLandroid/view/accessibility/IAccessibilityInteractionConnection$Stub;->asBinder()Landroid/os/IBinder; HSPLandroid/view/accessibility/IAccessibilityManager$Stub$Proxy;->addClient(Landroid/view/accessibility/IAccessibilityManagerClient;I)J HSPLandroid/view/accessibility/IAccessibilityManager$Stub$Proxy;->getEnabledAccessibilityServiceList(II)Ljava/util/List; +HSPLandroid/view/accessibility/IAccessibilityManager$Stub$Proxy;->getInstalledAccessibilityServiceList(I)Ljava/util/List; HSPLandroid/view/accessibility/IAccessibilityManager$Stub$Proxy;->getRecommendedTimeoutMillis()J HSPLandroid/view/accessibility/IAccessibilityManager$Stub;-><init>()V HSPLandroid/view/accessibility/IAccessibilityManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z @@ -17195,7 +17913,9 @@ HSPLandroid/view/accessibility/IAccessibilityManagerClient$Stub$Proxy;->asBinder HSPLandroid/view/accessibility/IAccessibilityManagerClient$Stub$Proxy;->notifyServicesStateChanged(J)V HSPLandroid/view/accessibility/IAccessibilityManagerClient$Stub$Proxy;->setState(I)V HSPLandroid/view/accessibility/IAccessibilityManagerClient$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/view/accessibility/IAccessibilityManagerClient$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HSPLandroid/view/animation/AccelerateDecelerateInterpolator;-><init>()V +HSPLandroid/view/animation/AccelerateDecelerateInterpolator;->createNativeInterpolator()J HSPLandroid/view/animation/AccelerateDecelerateInterpolator;->getInterpolation(F)F HSPLandroid/view/animation/AccelerateInterpolator;-><init>()V HSPLandroid/view/animation/AccelerateInterpolator;-><init>(F)V @@ -17221,7 +17941,7 @@ HSPLandroid/view/animation/Animation;->finalize()V HSPLandroid/view/animation/Animation;->getBackgroundColor()I HSPLandroid/view/animation/Animation;->getDuration()J HSPLandroid/view/animation/Animation;->getFillAfter()Z -PLandroid/view/animation/Animation;->getInterpolator()Landroid/view/animation/Interpolator; +HPLandroid/view/animation/Animation;->getInterpolator()Landroid/view/animation/Interpolator; HSPLandroid/view/animation/Animation;->getInvalidateRegion(IIIILandroid/graphics/RectF;Landroid/view/animation/Transformation;)V HSPLandroid/view/animation/Animation;->getRepeatCount()I HSPLandroid/view/animation/Animation;->getScaleFactor()F @@ -17289,10 +18009,12 @@ HSPLandroid/view/animation/AnimationUtils$1;->initialValue()Landroid/view/animat HSPLandroid/view/animation/AnimationUtils$1;->initialValue()Ljava/lang/Object; HSPLandroid/view/animation/AnimationUtils;->createAnimationFromXml(Landroid/content/Context;Lorg/xmlpull/v1/XmlPullParser;Landroid/view/animation/AnimationSet;Landroid/util/AttributeSet;)Landroid/view/animation/Animation; HSPLandroid/view/animation/AnimationUtils;->createInterpolatorFromXml(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;Lorg/xmlpull/v1/XmlPullParser;)Landroid/view/animation/Interpolator; +HSPLandroid/view/animation/AnimationUtils;->createLayoutAnimationFromXml(Landroid/content/Context;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;)Landroid/view/animation/LayoutAnimationController; HSPLandroid/view/animation/AnimationUtils;->currentAnimationTimeMillis()J HSPLandroid/view/animation/AnimationUtils;->loadAnimation(Landroid/content/Context;I)Landroid/view/animation/Animation; HSPLandroid/view/animation/AnimationUtils;->loadInterpolator(Landroid/content/Context;I)Landroid/view/animation/Interpolator; HSPLandroid/view/animation/AnimationUtils;->loadInterpolator(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;I)Landroid/view/animation/Interpolator; +HSPLandroid/view/animation/AnimationUtils;->loadLayoutAnimation(Landroid/content/Context;I)Landroid/view/animation/LayoutAnimationController; HSPLandroid/view/animation/BaseInterpolator;->getChangingConfiguration()I HSPLandroid/view/animation/BaseInterpolator;->setChangingConfiguration(I)V HPLandroid/view/animation/ClipRectAnimation;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V @@ -17302,9 +18024,13 @@ HSPLandroid/view/animation/DecelerateInterpolator;-><init>()V HSPLandroid/view/animation/DecelerateInterpolator;-><init>(F)V HSPLandroid/view/animation/DecelerateInterpolator;-><init>(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;Landroid/util/AttributeSet;)V HSPLandroid/view/animation/DecelerateInterpolator;->getInterpolation(F)F +HSPLandroid/view/animation/LayoutAnimationController;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLandroid/view/animation/LayoutAnimationController;->setAnimation(Landroid/content/Context;I)V +HSPLandroid/view/animation/LayoutAnimationController;->setAnimation(Landroid/view/animation/Animation;)V HSPLandroid/view/animation/LinearInterpolator;-><init>()V HSPLandroid/view/animation/LinearInterpolator;->createNativeInterpolator()J HSPLandroid/view/animation/LinearInterpolator;->getInterpolation(F)F +HSPLandroid/view/animation/OvershootInterpolator;-><init>()V HSPLandroid/view/animation/PathInterpolator;-><init>(FFFF)V HSPLandroid/view/animation/PathInterpolator;-><init>(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;Landroid/util/AttributeSet;)V HSPLandroid/view/animation/PathInterpolator;->createNativeInterpolator()J @@ -17328,7 +18054,8 @@ HSPLandroid/view/animation/Transformation;->getTransformationType()I HSPLandroid/view/animation/Transformation;->set(Landroid/view/animation/Transformation;)V HSPLandroid/view/animation/Transformation;->setAlpha(F)V HPLandroid/view/animation/Transformation;->setClipRect(IIII)V -PLandroid/view/animation/Transformation;->setClipRect(Landroid/graphics/Rect;)V +HPLandroid/view/animation/Transformation;->setClipRect(Landroid/graphics/Rect;)V +HSPLandroid/view/animation/TranslateAnimation;-><init>(FFFF)V HSPLandroid/view/animation/TranslateAnimation;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V HSPLandroid/view/animation/TranslateAnimation;->applyTransformation(FLandroid/view/animation/Transformation;)V HSPLandroid/view/animation/TranslateAnimation;->initialize(IIII)V @@ -17342,18 +18069,20 @@ HSPLandroid/view/autofill/AutofillId;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/view/autofill/AutofillManager;-><init>(Landroid/content/Context;Landroid/view/autofill/IAutoFillManager;)V HSPLandroid/view/autofill/AutofillManager;->ensureServiceClientAddedIfNeededLocked()V HSPLandroid/view/autofill/AutofillManager;->getClient()Landroid/view/autofill/AutofillManager$AutofillClient; +HSPLandroid/view/autofill/AutofillManager;->isEnabled()Z HSPLandroid/view/autofill/AutofillManager;->notifyValueChanged(Landroid/view/View;)V HSPLandroid/view/autofill/AutofillManager;->notifyViewVisibilityChangedInternal(Landroid/view/View;IZZ)V HSPLandroid/view/autofill/AutofillManager;->requestHideFillUi(Landroid/view/autofill/AutofillId;Z)V HSPLandroid/view/autofill/AutofillValue$1;-><init>()V HPLandroid/view/autofill/AutofillValue$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/autofill/AutofillValue; -PLandroid/view/autofill/AutofillValue$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/view/autofill/AutofillValue$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HPLandroid/view/autofill/AutofillValue;-><init>(Landroid/os/Parcel;)V HPLandroid/view/autofill/AutofillValue;->equals(Ljava/lang/Object;)Z HPLandroid/view/autofill/AutofillValue;->getTextValue()Ljava/lang/CharSequence; HPLandroid/view/autofill/AutofillValue;->isEmpty()Z HSPLandroid/view/autofill/AutofillValue;->writeToParcel(Landroid/os/Parcel;I)V -PLandroid/view/autofill/Helper;->toList(Ljava/util/Set;)Ljava/util/ArrayList; +HPLandroid/view/autofill/Helper;->toList(Ljava/util/Set;)Ljava/util/ArrayList; +HSPLandroid/view/autofill/IAutoFillManager$Stub$Proxy;->addClient(Landroid/view/autofill/IAutoFillManagerClient;Landroid/content/ComponentName;ILcom/android/internal/os/IResultReceiver;)V HSPLandroid/view/autofill/IAutoFillManager$Stub;-><init>()V HSPLandroid/view/autofill/IAutoFillManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/view/autofill/IAutoFillManager; HPLandroid/view/autofill/IAutoFillManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z @@ -17361,7 +18090,8 @@ PLandroid/view/autofill/IAutoFillManagerClient$Stub$Proxy;-><init>(Landroid/os/I PLandroid/view/autofill/IAutoFillManagerClient$Stub$Proxy;->asBinder()Landroid/os/IBinder; PLandroid/view/autofill/IAutoFillManagerClient$Stub$Proxy;->getAugmentedAutofillClient(Lcom/android/internal/os/IResultReceiver;)V PLandroid/view/autofill/IAutoFillManagerClient$Stub$Proxy;->setSessionFinished(ILjava/util/List;)V -PLandroid/view/autofill/IAutoFillManagerClient$Stub;->asInterface(Landroid/os/IBinder;)Landroid/view/autofill/IAutoFillManagerClient; +HSPLandroid/view/autofill/IAutoFillManagerClient$Stub;->asBinder()Landroid/os/IBinder; +HPLandroid/view/autofill/IAutoFillManagerClient$Stub;->asInterface(Landroid/os/IBinder;)Landroid/view/autofill/IAutoFillManagerClient; HSPLandroid/view/contentcapture/ContentCaptureContext$1;-><init>()V HSPLandroid/view/contentcapture/ContentCaptureContext;-><init>(Landroid/view/contentcapture/ContentCaptureContext;Landroid/content/ComponentName;III)V PLandroid/view/contentcapture/ContentCaptureContext;->writeToParcel(Landroid/os/Parcel;I)V @@ -17369,7 +18099,7 @@ HSPLandroid/view/contentcapture/ContentCaptureHelper;->getDefaultLoggingLevel()I HSPLandroid/view/contentcapture/ContentCaptureHelper;->getLoggingLevelAsString(I)Ljava/lang/String; HSPLandroid/view/contentcapture/ContentCaptureHelper;->setLoggingLevel(I)V HSPLandroid/view/contentcapture/IContentCaptureManager$Stub;-><init>()V -PLandroid/view/contentcapture/IContentCaptureManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/view/contentcapture/IContentCaptureManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HSPLandroid/view/inputmethod/BaseInputConnection;->beginBatchEdit()Z HSPLandroid/view/inputmethod/BaseInputConnection;->endBatchEdit()Z HSPLandroid/view/inputmethod/BaseInputConnection;->finishComposingText()Z @@ -17397,6 +18127,7 @@ HSPLandroid/view/inputmethod/InputBinding$1;-><init>()V HSPLandroid/view/inputmethod/InputBinding$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/inputmethod/InputBinding; HSPLandroid/view/inputmethod/InputBinding$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/view/inputmethod/InputBinding;-><init>(Landroid/view/inputmethod/InputConnection;Landroid/view/inputmethod/InputBinding;)V +HSPLandroid/view/inputmethod/InputBinding;->getConnection()Landroid/view/inputmethod/InputConnection; HSPLandroid/view/inputmethod/InputConnectionInspector;->getMissingMethodFlags(Landroid/view/inputmethod/InputConnection;)I HSPLandroid/view/inputmethod/InputMethodInfo$1;-><init>()V HSPLandroid/view/inputmethod/InputMethodInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/inputmethod/InputMethodInfo; @@ -17425,6 +18156,7 @@ HSPLandroid/view/inputmethod/InputMethodManager$ImeInputEventSender;->onInputEve HSPLandroid/view/inputmethod/InputMethodManager$PendingEvent;->run()V HSPLandroid/view/inputmethod/InputMethodManager;-><init>(Lcom/android/internal/view/IInputMethodManager;ILandroid/os/Looper;)V HSPLandroid/view/inputmethod/InputMethodManager;->checkFocusNoStartInput(Z)Z +HSPLandroid/view/inputmethod/InputMethodManager;->closeCurrentInput()V HSPLandroid/view/inputmethod/InputMethodManager;->createRealInstance(ILandroid/os/Looper;)Landroid/view/inputmethod/InputMethodManager; HSPLandroid/view/inputmethod/InputMethodManager;->dispatchInputEvent(Landroid/view/InputEvent;Ljava/lang/Object;Landroid/view/inputmethod/InputMethodManager$FinishedInputEventCallback;Landroid/os/Handler;)I HSPLandroid/view/inputmethod/InputMethodManager;->finishedInputEvent(IZZ)V @@ -17450,6 +18182,7 @@ HSPLandroid/view/inputmethod/InputMethodManager;->registerImeConsumer(Landroid/v HSPLandroid/view/inputmethod/InputMethodManager;->restartInput(Landroid/view/View;)V HSPLandroid/view/inputmethod/InputMethodManager;->sendInputEventOnMainLooperLocked(Landroid/view/inputmethod/InputMethodManager$PendingEvent;)I HSPLandroid/view/inputmethod/InputMethodManager;->setInputChannelLocked(Landroid/view/InputChannel;)V +HSPLandroid/view/inputmethod/InputMethodManager;->showSoftInput(Landroid/view/View;I)Z HSPLandroid/view/inputmethod/InputMethodManager;->showSoftInput(Landroid/view/View;ILandroid/os/ResultReceiver;)Z HSPLandroid/view/inputmethod/InputMethodManager;->startInputInner(ILandroid/os/IBinder;III)Z HSPLandroid/view/inputmethod/InputMethodManager;->updateSelection(Landroid/view/View;IIII)V @@ -17477,7 +18210,7 @@ HSPLandroid/view/inputmethod/InputMethodSystemProperty;->getMultiClientImeCompon HSPLandroid/view/textclassifier/-$$Lambda$0biFK4yZBmWN1EO2wtnXskzuEcE;-><init>()V HSPLandroid/view/textclassifier/-$$Lambda$0biFK4yZBmWN1EO2wtnXskzuEcE;->apply(Ljava/lang/Object;)Ljava/lang/Object; HSPLandroid/view/textclassifier/-$$Lambda$9N8WImc0VBjy2oxI_Gk5_Pbye_A;-><init>()V -PLandroid/view/textclassifier/-$$Lambda$9N8WImc0VBjy2oxI_Gk5_Pbye_A;->apply(Ljava/lang/Object;)Ljava/lang/Object; +HPLandroid/view/textclassifier/-$$Lambda$9N8WImc0VBjy2oxI_Gk5_Pbye_A;->apply(Ljava/lang/Object;)Ljava/lang/Object; PLandroid/view/textclassifier/-$$Lambda$ActionsSuggestionsHelper$6oTtcn9bDE-u-8FbiyGdntqoQG0;-><init>()V PLandroid/view/textclassifier/-$$Lambda$ActionsSuggestionsHelper$6oTtcn9bDE-u-8FbiyGdntqoQG0;->test(Ljava/lang/Object;)Z PLandroid/view/textclassifier/-$$Lambda$ActionsSuggestionsHelper$YTQv8oPvlmJL4tITUFD4z4JWKRk;-><init>()V @@ -17493,7 +18226,7 @@ HSPLandroid/view/textclassifier/-$$Lambda$TextClassifierImpl$RRbXefHgcUymI9-P95A HSPLandroid/view/textclassifier/-$$Lambda$TextClassifierImpl$RRbXefHgcUymI9-P95ArUyMvfbw;->apply(Ljava/lang/Object;)Ljava/lang/Object; PLandroid/view/textclassifier/-$$Lambda$TextClassifierImpl$ftq-sQqJYwUdrdbbr9jz3p4AWos;->apply(Ljava/lang/Object;)Ljava/lang/Object; HSPLandroid/view/textclassifier/-$$Lambda$XeE_KI7QgMKzF9vYRSoFWAolyuA;-><init>()V -PLandroid/view/textclassifier/-$$Lambda$XeE_KI7QgMKzF9vYRSoFWAolyuA;->apply(Ljava/lang/Object;)Ljava/lang/Object; +HPLandroid/view/textclassifier/-$$Lambda$XeE_KI7QgMKzF9vYRSoFWAolyuA;->apply(Ljava/lang/Object;)Ljava/lang/Object; HSPLandroid/view/textclassifier/-$$Lambda$jJq8RXuVdjYF3lPq-77PEw1NJLM;-><init>()V HSPLandroid/view/textclassifier/-$$Lambda$jJq8RXuVdjYF3lPq-77PEw1NJLM;->apply(Ljava/lang/Object;)Ljava/lang/Object; HPLandroid/view/textclassifier/ActionsSuggestionsHelper$PersonEncoder;->encode(Landroid/app/Person;)I @@ -17547,8 +18280,8 @@ HSPLandroid/view/textclassifier/ModelFileManager;->listModelFiles()Ljava/util/Li HSPLandroid/view/textclassifier/SystemTextClassifier$BlockingCallback;->onSuccess(Landroid/os/Bundle;)V HSPLandroid/view/textclassifier/SystemTextClassifier$ResponseReceiver;->get()Ljava/lang/Object; HSPLandroid/view/textclassifier/SystemTextClassifier;-><init>(Landroid/content/Context;Landroid/view/textclassifier/TextClassificationConstants;)V -PLandroid/view/textclassifier/SystemTextClassifier;->onTextClassifierEvent(Landroid/view/textclassifier/TextClassifierEvent;)V -PLandroid/view/textclassifier/SystemTextClassifier;->suggestConversationActions(Landroid/view/textclassifier/ConversationActions$Request;)Landroid/view/textclassifier/ConversationActions; +HPLandroid/view/textclassifier/SystemTextClassifier;->onTextClassifierEvent(Landroid/view/textclassifier/TextClassifierEvent;)V +HPLandroid/view/textclassifier/SystemTextClassifier;->suggestConversationActions(Landroid/view/textclassifier/ConversationActions$Request;)Landroid/view/textclassifier/ConversationActions; HSPLandroid/view/textclassifier/TextClassification$1;-><init>()V HSPLandroid/view/textclassifier/TextClassification$Builder;-><init>()V HSPLandroid/view/textclassifier/TextClassification$Builder;->build()Landroid/view/textclassifier/TextClassification; @@ -17564,6 +18297,7 @@ PLandroid/view/textclassifier/TextClassificationContext;->writeToParcel(Landroid HSPLandroid/view/textclassifier/TextClassificationManager$SettingsObserver;-><init>(Landroid/view/textclassifier/TextClassificationManager;)V HSPLandroid/view/textclassifier/TextClassificationManager$SettingsObserver;->onChange(Z)V HSPLandroid/view/textclassifier/TextClassificationManager;-><init>(Landroid/content/Context;)V +HSPLandroid/view/textclassifier/TextClassificationManager;->finalize()V HSPLandroid/view/textclassifier/TextClassificationManager;->getLocalTextClassifier()Landroid/view/textclassifier/TextClassifier; HSPLandroid/view/textclassifier/TextClassificationManager;->getSettings()Landroid/view/textclassifier/TextClassificationConstants; HSPLandroid/view/textclassifier/TextClassificationManager;->getSettings(Landroid/content/Context;)Landroid/view/textclassifier/TextClassificationConstants; @@ -17594,14 +18328,14 @@ HSPLandroid/view/textclassifier/TextClassifierImpl;-><init>(Landroid/content/Con HPLandroid/view/textclassifier/TextClassifierImpl;->createConversationActionResult(Landroid/view/textclassifier/ConversationActions$Request;[Lcom/google/android/textclassifier/ActionsSuggestionsModel$ActionSuggestion;)Landroid/view/textclassifier/ConversationActions; HSPLandroid/view/textclassifier/TextClassifierImpl;->detectLanguage(Landroid/view/textclassifier/TextLanguage$Request;)Landroid/view/textclassifier/TextLanguage; HSPLandroid/view/textclassifier/TextClassifierImpl;->detectLanguageTagsFromText(Ljava/lang/CharSequence;)Ljava/lang/String; -PLandroid/view/textclassifier/TextClassifierImpl;->getActionsImpl()Lcom/google/android/textclassifier/ActionsSuggestionsModel; +HPLandroid/view/textclassifier/TextClassifierImpl;->getActionsImpl()Lcom/google/android/textclassifier/ActionsSuggestionsModel; HSPLandroid/view/textclassifier/TextClassifierImpl;->getAnnotatorImpl(Landroid/os/LocaleList;)Lcom/google/android/textclassifier/AnnotatorModel; HSPLandroid/view/textclassifier/TextClassifierImpl;->getLangIdImpl()Lcom/google/android/textclassifier/LangIdModel; HSPLandroid/view/textclassifier/TextClassifierImpl;->getLangIdThreshold()F HSPLandroid/view/textclassifier/TextClassifierImpl;->getResourceLocalesString()Ljava/lang/String; HSPLandroid/view/textclassifier/TextClassifierImpl;->maybeCloseAndLogError(Landroid/os/ParcelFileDescriptor;)V -PLandroid/view/textclassifier/TextClassifierImpl;->resolveActionTypesFromRequest(Landroid/view/textclassifier/ConversationActions$Request;)Ljava/util/Collection; -PLandroid/view/textclassifier/TextClassifierImpl;->suggestConversationActions(Landroid/view/textclassifier/ConversationActions$Request;)Landroid/view/textclassifier/ConversationActions; +HPLandroid/view/textclassifier/TextClassifierImpl;->resolveActionTypesFromRequest(Landroid/view/textclassifier/ConversationActions$Request;)Ljava/util/Collection; +HPLandroid/view/textclassifier/TextClassifierImpl;->suggestConversationActions(Landroid/view/textclassifier/ConversationActions$Request;)Landroid/view/textclassifier/ConversationActions; HSPLandroid/view/textclassifier/TextLanguage$1;-><init>()V HSPLandroid/view/textclassifier/TextLanguage$Builder;-><init>()V HSPLandroid/view/textclassifier/TextLanguage$Builder;->build()Landroid/view/textclassifier/TextLanguage; @@ -17611,14 +18345,14 @@ HSPLandroid/view/textclassifier/TextSelection$1;-><init>()V PLandroid/view/textclassifier/intent/-$$Lambda$LabeledIntent$LaL7EfxShgNu4lrdo3mv85g49Jg;-><init>()V PLandroid/view/textclassifier/intent/LabeledIntent;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/content/Intent;I)V PLandroid/view/textclassifier/intent/LabeledIntent;->resolve(Landroid/content/Context;Landroid/view/textclassifier/intent/LabeledIntent$TitleChooser;Landroid/os/Bundle;)Landroid/view/textclassifier/intent/LabeledIntent$Result; -PLandroid/view/textclassifier/intent/TemplateIntentFactory;->create([Lcom/google/android/textclassifier/RemoteActionTemplate;)Ljava/util/List; -PLandroid/view/textclassifier/intent/TemplateIntentFactory;->createIntent(Lcom/google/android/textclassifier/RemoteActionTemplate;)Landroid/content/Intent; -PLandroid/view/textclassifier/intent/TemplateIntentFactory;->isValidTemplate(Lcom/google/android/textclassifier/RemoteActionTemplate;)Z -PLandroid/view/textclassifier/intent/TemplateIntentFactory;->nameVariantsToBundle([Lcom/google/android/textclassifier/NamedVariant;)Landroid/os/Bundle; +HPLandroid/view/textclassifier/intent/TemplateIntentFactory;->create([Lcom/google/android/textclassifier/RemoteActionTemplate;)Ljava/util/List; +HPLandroid/view/textclassifier/intent/TemplateIntentFactory;->createIntent(Lcom/google/android/textclassifier/RemoteActionTemplate;)Landroid/content/Intent; +HPLandroid/view/textclassifier/intent/TemplateIntentFactory;->isValidTemplate(Lcom/google/android/textclassifier/RemoteActionTemplate;)Z +HPLandroid/view/textclassifier/intent/TemplateIntentFactory;->nameVariantsToBundle([Lcom/google/android/textclassifier/NamedVariant;)Landroid/os/Bundle; HSPLandroid/view/textservice/SpellCheckerInfo$1;-><init>()V HSPLandroid/view/textservice/SpellCheckerInfo;-><init>(Landroid/content/Context;Landroid/content/pm/ResolveInfo;)V -PLandroid/view/textservice/SpellCheckerInfo;->getComponent()Landroid/content/ComponentName; -PLandroid/view/textservice/SpellCheckerInfo;->getPackageName()Ljava/lang/String; +HPLandroid/view/textservice/SpellCheckerInfo;->getComponent()Landroid/content/ComponentName; +HPLandroid/view/textservice/SpellCheckerInfo;->getPackageName()Ljava/lang/String; HSPLandroid/view/textservice/SpellCheckerInfo;->getSubtypeAt(I)Landroid/view/textservice/SpellCheckerSubtype; HSPLandroid/view/textservice/SpellCheckerInfo;->getSubtypeCount()I HSPLandroid/view/textservice/SpellCheckerSubtype$1;-><init>()V @@ -17695,28 +18429,47 @@ HSPLandroid/widget/AbsListView$RecycleBin;->scrapActiveViews()V HSPLandroid/widget/AbsListView$RecycleBin;->setViewTypeCount(I)V HSPLandroid/widget/AbsListView$RecycleBin;->shouldRecycleViewType(I)Z HSPLandroid/widget/AbsListView$SavedState$1;-><init>()V +HSPLandroid/widget/AbsListView$SavedState;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/widget/AbsListView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V HSPLandroid/widget/AbsListView;->checkLayoutParams(Landroid/view/ViewGroup$LayoutParams;)Z HSPLandroid/widget/AbsListView;->clearChoices()V +HSPLandroid/widget/AbsListView;->computeVerticalScrollExtent()I +HSPLandroid/widget/AbsListView;->computeVerticalScrollOffset()I +HSPLandroid/widget/AbsListView;->computeVerticalScrollRange()I HSPLandroid/widget/AbsListView;->dispatchDraw(Landroid/graphics/Canvas;)V +HSPLandroid/widget/AbsListView;->dispatchSetPressed(Z)V HSPLandroid/widget/AbsListView;->draw(Landroid/graphics/Canvas;)V HSPLandroid/widget/AbsListView;->drawableStateChanged()V +HSPLandroid/widget/AbsListView;->generateLayoutParams(Landroid/util/AttributeSet;)Landroid/view/ViewGroup$LayoutParams; +HSPLandroid/widget/AbsListView;->generateLayoutParams(Landroid/util/AttributeSet;)Landroid/widget/AbsListView$LayoutParams; +HSPLandroid/widget/AbsListView;->getVerticalScrollbarWidth()I HSPLandroid/widget/AbsListView;->handleBoundsChange()V HSPLandroid/widget/AbsListView;->handleDataChanged()V +HSPLandroid/widget/AbsListView;->handleScrollBarDragging(Landroid/view/MotionEvent;)Z HSPLandroid/widget/AbsListView;->hideSelector()V HSPLandroid/widget/AbsListView;->initAbsListView()V HSPLandroid/widget/AbsListView;->internalSetPadding(IIII)V HSPLandroid/widget/AbsListView;->invokeOnItemScrollListener()V +HSPLandroid/widget/AbsListView;->isFastScrollEnabled()Z HSPLandroid/widget/AbsListView;->isInFilterMode()Z +HSPLandroid/widget/AbsListView;->isVerticalScrollBarHidden()Z HSPLandroid/widget/AbsListView;->jumpDrawablesToCurrentState()V HSPLandroid/widget/AbsListView;->obtainView(I[Z)Landroid/view/View; HSPLandroid/widget/AbsListView;->onAttachedToWindow()V HSPLandroid/widget/AbsListView;->onDetachedFromWindow()V +HSPLandroid/widget/AbsListView;->onInterceptTouchEvent(Landroid/view/MotionEvent;)Z HSPLandroid/widget/AbsListView;->onLayout(ZIIII)V HSPLandroid/widget/AbsListView;->onMeasure(II)V HSPLandroid/widget/AbsListView;->onRtlPropertiesChanged(I)V +HSPLandroid/widget/AbsListView;->onSaveInstanceState()Landroid/os/Parcelable; +HSPLandroid/widget/AbsListView;->onTouchDown(Landroid/view/MotionEvent;)V +HSPLandroid/widget/AbsListView;->onTouchEvent(Landroid/view/MotionEvent;)Z HSPLandroid/widget/AbsListView;->onTouchModeChanged(Z)V +HSPLandroid/widget/AbsListView;->onTouchUp(Landroid/view/MotionEvent;)V HSPLandroid/widget/AbsListView;->onWindowFocusChanged(Z)V +HSPLandroid/widget/AbsListView;->pointToPosition(II)I +HSPLandroid/widget/AbsListView;->positionSelector(ILandroid/view/View;)V +HSPLandroid/widget/AbsListView;->positionSelector(ILandroid/view/View;ZFF)V HSPLandroid/widget/AbsListView;->requestLayout()V HSPLandroid/widget/AbsListView;->resetList()V HSPLandroid/widget/AbsListView;->setAdapter(Landroid/widget/ListAdapter;)V @@ -17741,11 +18494,17 @@ HSPLandroid/widget/AbsListView;->verifyDrawable(Landroid/graphics/drawable/Drawa HSPLandroid/widget/AbsSeekBar;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V HSPLandroid/widget/AbsSeekBar;->applyThumbTint()V HSPLandroid/widget/AbsSeekBar;->applyTickMarkTint()V +HSPLandroid/widget/AbsSeekBar;->drawThumb(Landroid/graphics/Canvas;)V +HSPLandroid/widget/AbsSeekBar;->drawTickMarks(Landroid/graphics/Canvas;)V +HSPLandroid/widget/AbsSeekBar;->drawTrack(Landroid/graphics/Canvas;)V HSPLandroid/widget/AbsSeekBar;->drawableStateChanged()V HSPLandroid/widget/AbsSeekBar;->getThumbOffset()I HSPLandroid/widget/AbsSeekBar;->jumpDrawablesToCurrentState()V +HSPLandroid/widget/AbsSeekBar;->onDraw(Landroid/graphics/Canvas;)V +HSPLandroid/widget/AbsSeekBar;->onMeasure(II)V HSPLandroid/widget/AbsSeekBar;->onResolveDrawables(I)V HSPLandroid/widget/AbsSeekBar;->onRtlPropertiesChanged(I)V +HSPLandroid/widget/AbsSeekBar;->onSizeChanged(IIII)V HSPLandroid/widget/AbsSeekBar;->onVisualProgressChanged(IF)V HSPLandroid/widget/AbsSeekBar;->setKeyProgressIncrement(I)V HSPLandroid/widget/AbsSeekBar;->setMax(I)V @@ -17754,11 +18513,16 @@ HSPLandroid/widget/AbsSeekBar;->setThumb(Landroid/graphics/drawable/Drawable;)V HSPLandroid/widget/AbsSeekBar;->setThumbOffset(I)V HSPLandroid/widget/AbsSeekBar;->setThumbPos(ILandroid/graphics/drawable/Drawable;FI)V HSPLandroid/widget/AbsSeekBar;->setTickMark(Landroid/graphics/drawable/Drawable;)V +HSPLandroid/widget/AbsSeekBar;->updateThumbAndTrackPos(II)V HSPLandroid/widget/AbsSeekBar;->verifyDrawable(Landroid/graphics/drawable/Drawable;)Z +HSPLandroid/widget/ActionMenuPresenter$2;->onViewDetachedFromWindow(Landroid/view/View;)V HSPLandroid/widget/ActionMenuPresenter;-><init>(Landroid/content/Context;)V HSPLandroid/widget/ActionMenuPresenter;->bindItemView(Lcom/android/internal/view/menu/MenuItemImpl;Lcom/android/internal/view/menu/MenuView$ItemView;)V +HSPLandroid/widget/ActionMenuPresenter;->dismissPopupMenus()Z HSPLandroid/widget/ActionMenuPresenter;->flagActionItems()Z HSPLandroid/widget/ActionMenuPresenter;->getItemView(Lcom/android/internal/view/menu/MenuItemImpl;Landroid/view/View;Landroid/view/ViewGroup;)Landroid/view/View; +HSPLandroid/widget/ActionMenuPresenter;->hideOverflowMenu()Z +HSPLandroid/widget/ActionMenuPresenter;->hideSubMenus()Z HSPLandroid/widget/ActionMenuPresenter;->initForMenu(Landroid/content/Context;Lcom/android/internal/view/menu/MenuBuilder;)V HSPLandroid/widget/ActionMenuPresenter;->isOverflowMenuShowing()Z HSPLandroid/widget/ActionMenuPresenter;->setExpandedActionViewsExclusive(Z)V @@ -17768,12 +18532,16 @@ HSPLandroid/widget/ActionMenuPresenter;->shouldIncludeItem(ILcom/android/interna HSPLandroid/widget/ActionMenuPresenter;->updateMenuView(Z)V HSPLandroid/widget/ActionMenuView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V HSPLandroid/widget/ActionMenuView;->checkLayoutParams(Landroid/view/ViewGroup$LayoutParams;)Z +HSPLandroid/widget/ActionMenuView;->dismissPopupMenus()V +HSPLandroid/widget/ActionMenuView;->generateDefaultLayoutParams()Landroid/widget/ActionMenuView$LayoutParams; HSPLandroid/widget/ActionMenuView;->generateLayoutParams(Landroid/util/AttributeSet;)Landroid/view/ViewGroup$LayoutParams; HSPLandroid/widget/ActionMenuView;->generateLayoutParams(Landroid/util/AttributeSet;)Landroid/widget/ActionMenuView$LayoutParams; +HSPLandroid/widget/ActionMenuView;->generateOverflowButtonLayoutParams()Landroid/widget/ActionMenuView$LayoutParams; HSPLandroid/widget/ActionMenuView;->getMenu()Landroid/view/Menu; HSPLandroid/widget/ActionMenuView;->hasDividerBeforeChildAt(I)Z HSPLandroid/widget/ActionMenuView;->initialize(Lcom/android/internal/view/menu/MenuBuilder;)V HSPLandroid/widget/ActionMenuView;->isOverflowMenuShowing()Z +HSPLandroid/widget/ActionMenuView;->onDetachedFromWindow()V HSPLandroid/widget/ActionMenuView;->onLayout(ZIIII)V HSPLandroid/widget/ActionMenuView;->onMeasure(II)V HSPLandroid/widget/ActionMenuView;->peekMenu()Lcom/android/internal/view/menu/MenuBuilder; @@ -17801,11 +18569,14 @@ HSPLandroid/widget/BaseAdapter;->areAllItemsEnabled()Z HSPLandroid/widget/BaseAdapter;->getItemViewType(I)I HSPLandroid/widget/BaseAdapter;->getViewTypeCount()I HSPLandroid/widget/BaseAdapter;->hasStableIds()Z +HSPLandroid/widget/BaseAdapter;->isEnabled(I)Z HSPLandroid/widget/BaseAdapter;->notifyDataSetChanged()V HSPLandroid/widget/BaseAdapter;->registerDataSetObserver(Landroid/database/DataSetObserver;)V HSPLandroid/widget/BaseAdapter;->unregisterDataSetObserver(Landroid/database/DataSetObserver;)V HSPLandroid/widget/Button;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V HSPLandroid/widget/Button;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V +HSPLandroid/widget/Button;->getAccessibilityClassName()Ljava/lang/CharSequence; +HSPLandroid/widget/CheckBox;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V HSPLandroid/widget/Chronometer;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V HSPLandroid/widget/Chronometer;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V HSPLandroid/widget/Chronometer;->onDetachedFromWindow()V @@ -17827,6 +18598,7 @@ HSPLandroid/widget/CompoundButton;->jumpDrawablesToCurrentState()V HSPLandroid/widget/CompoundButton;->onCreateDrawableState(I)[I HSPLandroid/widget/CompoundButton;->onDraw(Landroid/graphics/Canvas;)V HSPLandroid/widget/CompoundButton;->onResolveDrawables(I)V +HSPLandroid/widget/CompoundButton;->setButtonDrawable(Landroid/graphics/drawable/Drawable;)V HSPLandroid/widget/CompoundButton;->setChecked(Z)V HSPLandroid/widget/CompoundButton;->setOnCheckedChangeListener(Landroid/widget/CompoundButton$OnCheckedChangeListener;)V HSPLandroid/widget/CompoundButton;->verifyDrawable(Landroid/graphics/drawable/Drawable;)Z @@ -17860,15 +18632,18 @@ HSPLandroid/widget/Editor$EditOperation;-><init>(Landroid/widget/Editor;Ljava/la HSPLandroid/widget/Editor$EditOperation;->commit()V HSPLandroid/widget/Editor$EditOperation;->mergeInsertWith(Landroid/widget/Editor$EditOperation;)Z HSPLandroid/widget/Editor$InsertionPointCursorController;->hide()V +HSPLandroid/widget/Editor$InsertionPointCursorController;->invalidateHandle()V HSPLandroid/widget/Editor$InsertionPointCursorController;->isActive()Z HSPLandroid/widget/Editor$InsertionPointCursorController;->isCursorBeingModified()Z HSPLandroid/widget/Editor$InsertionPointCursorController;->onDetached()V HSPLandroid/widget/Editor$MagnifierMotionAnimator;-><init>(Landroid/widget/Magnifier;)V HSPLandroid/widget/Editor$PositionListener;->addSubscriber(Landroid/widget/Editor$TextViewPositionListener;Z)V HSPLandroid/widget/Editor$PositionListener;->onPreDraw()Z +HSPLandroid/widget/Editor$PositionListener;->onScrollChanged()V HSPLandroid/widget/Editor$PositionListener;->removeSubscriber(Landroid/widget/Editor$TextViewPositionListener;)V HSPLandroid/widget/Editor$PositionListener;->updatePosition()V HSPLandroid/widget/Editor$ProcessTextIntentActionsHandler;-><init>(Landroid/widget/Editor;)V +HSPLandroid/widget/Editor$SelectionModifierCursorController;->invalidateHandles()V HSPLandroid/widget/Editor$SelectionModifierCursorController;->isCursorBeingModified()Z HSPLandroid/widget/Editor$SelectionModifierCursorController;->isDragAcceleratorActive()Z HSPLandroid/widget/Editor$SelectionModifierCursorController;->isSelectionStartDragged()Z @@ -17912,13 +18687,16 @@ HSPLandroid/widget/Editor;->hideCursorAndSpanControllers()V HSPLandroid/widget/Editor;->hideInsertionPointCursorController()V HSPLandroid/widget/Editor;->invalidateHandlesAndActionMode()V HSPLandroid/widget/Editor;->invalidateTextDisplayList()V +HSPLandroid/widget/Editor;->invalidateTextDisplayList(Landroid/text/Layout;II)V HSPLandroid/widget/Editor;->loadCursorDrawable()V HSPLandroid/widget/Editor;->makeBlink()V HSPLandroid/widget/Editor;->onAttachedToWindow()V HSPLandroid/widget/Editor;->onDetachedFromWindow()V HSPLandroid/widget/Editor;->onDraw(Landroid/graphics/Canvas;Landroid/text/Layout;Landroid/graphics/Path;Landroid/graphics/Paint;I)V HSPLandroid/widget/Editor;->onFocusChanged(ZI)V +HSPLandroid/widget/Editor;->onLocaleChanged()V HSPLandroid/widget/Editor;->onScreenStateChanged(I)V +HSPLandroid/widget/Editor;->onScrollChanged()V HSPLandroid/widget/Editor;->onWindowFocusChanged(Z)V HSPLandroid/widget/Editor;->prepareCursorControllers()V HSPLandroid/widget/Editor;->refreshTextActionMode()V @@ -17935,9 +18713,11 @@ HSPLandroid/widget/Editor;->updateCursorPosition(IIF)V HSPLandroid/widget/Editor;->updateSpellCheckSpans(IIZ)V HSPLandroid/widget/ForwardingListener;-><init>(Landroid/view/View;)V HSPLandroid/widget/ForwardingListener;->onViewAttachedToWindow(Landroid/view/View;)V +HSPLandroid/widget/ForwardingListener;->onViewDetachedFromWindow(Landroid/view/View;)V HSPLandroid/widget/FrameLayout$LayoutParams;-><init>(II)V HSPLandroid/widget/FrameLayout$LayoutParams;-><init>(III)V HSPLandroid/widget/FrameLayout$LayoutParams;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLandroid/widget/FrameLayout$LayoutParams;-><init>(Landroid/view/ViewGroup$LayoutParams;)V HSPLandroid/widget/FrameLayout;-><init>(Landroid/content/Context;)V HSPLandroid/widget/FrameLayout;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V HSPLandroid/widget/FrameLayout;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V @@ -17960,6 +18740,8 @@ HSPLandroid/widget/FrameLayout;->shouldDelayChildPressedState()Z HSPLandroid/widget/GridLayout$1;-><init>()V HSPLandroid/widget/GridLayout$2;-><init>()V HSPLandroid/widget/GridLayout$3;-><init>()V +HSPLandroid/widget/GridLayout$3;->getAlignmentValue(Landroid/view/View;II)I +HSPLandroid/widget/GridLayout$3;->getGravityOffset(Landroid/view/View;I)I HSPLandroid/widget/GridLayout$4;-><init>()V HSPLandroid/widget/GridLayout$6;-><init>()V HSPLandroid/widget/GridLayout$7$1;->getOffset(Landroid/widget/GridLayout;Landroid/view/View;Landroid/widget/GridLayout$Alignment;IZ)I @@ -18076,6 +18858,7 @@ HSPLandroid/widget/ImageView;->drawableHotspotChanged(FF)V HSPLandroid/widget/ImageView;->drawableStateChanged()V HSPLandroid/widget/ImageView;->getBaseline()I HSPLandroid/widget/ImageView;->getDrawable()Landroid/graphics/drawable/Drawable; +HSPLandroid/widget/ImageView;->getImageMatrix()Landroid/graphics/Matrix; HSPLandroid/widget/ImageView;->getScaleType()Landroid/widget/ImageView$ScaleType; HSPLandroid/widget/ImageView;->hasOverlappingRendering()Z HSPLandroid/widget/ImageView;->initImageView()V @@ -18098,10 +18881,12 @@ HSPLandroid/widget/ImageView;->setAlpha(I)V HSPLandroid/widget/ImageView;->setColorFilter(I)V HSPLandroid/widget/ImageView;->setColorFilter(ILandroid/graphics/PorterDuff$Mode;)V HSPLandroid/widget/ImageView;->setColorFilter(Landroid/graphics/ColorFilter;)V +HSPLandroid/widget/ImageView;->setCropToPadding(Z)V HSPLandroid/widget/ImageView;->setFrame(IIII)Z HSPLandroid/widget/ImageView;->setImageAlpha(I)V HSPLandroid/widget/ImageView;->setImageBitmap(Landroid/graphics/Bitmap;)V HSPLandroid/widget/ImageView;->setImageDrawable(Landroid/graphics/drawable/Drawable;)V +HSPLandroid/widget/ImageView;->setImageIcon(Landroid/graphics/drawable/Icon;)V HSPLandroid/widget/ImageView;->setImageMatrix(Landroid/graphics/Matrix;)V HSPLandroid/widget/ImageView;->setImageResource(I)V HSPLandroid/widget/ImageView;->setImageTintList(Landroid/content/res/ColorStateList;)V @@ -18132,6 +18917,8 @@ HSPLandroid/widget/LinearLayout;->generateLayoutParams(Landroid/view/ViewGroup$L HSPLandroid/widget/LinearLayout;->getAccessibilityClassName()Ljava/lang/CharSequence; HSPLandroid/widget/LinearLayout;->getBaseline()I HSPLandroid/widget/LinearLayout;->getChildrenSkipCount(Landroid/view/View;I)I +HSPLandroid/widget/LinearLayout;->getDividerDrawable()Landroid/graphics/drawable/Drawable; +HSPLandroid/widget/LinearLayout;->getGravity()I HSPLandroid/widget/LinearLayout;->getLocationOffset(Landroid/view/View;)I HSPLandroid/widget/LinearLayout;->getNextLocationOffset(Landroid/view/View;)I HSPLandroid/widget/LinearLayout;->getOrientation()I @@ -18164,6 +18951,7 @@ HSPLandroid/widget/ListView;->fillDown(II)Landroid/view/View; HSPLandroid/widget/ListView;->fillFromTop(I)Landroid/view/View; HSPLandroid/widget/ListView;->fillSpecific(II)Landroid/view/View; HSPLandroid/widget/ListView;->fillUp(II)Landroid/view/View; +HSPLandroid/widget/ListView;->findMotionRow(I)I HSPLandroid/widget/ListView;->findViewInHeadersOrFooters(Ljava/util/ArrayList;I)Landroid/view/View; HSPLandroid/widget/ListView;->findViewTraversal(I)Landroid/view/View; HSPLandroid/widget/ListView;->getAdapter()Landroid/widget/Adapter; @@ -18180,6 +18968,7 @@ HSPLandroid/widget/ListView;->removeUnusedFixedViews(Ljava/util/List;)V HSPLandroid/widget/ListView;->resetList()V HSPLandroid/widget/ListView;->setAdapter(Landroid/widget/ListAdapter;)V HSPLandroid/widget/ListView;->setCacheColorHint(I)V +HSPLandroid/widget/ListView;->setDivider(Landroid/graphics/drawable/Drawable;)V HSPLandroid/widget/ListView;->setupChild(Landroid/view/View;IIZIZZ)V HSPLandroid/widget/Magnifier$Builder;->applyDefaults()V HSPLandroid/widget/Magnifier;-><init>(Landroid/widget/Magnifier$Builder;)V @@ -18207,20 +18996,31 @@ HSPLandroid/widget/OverScroller;->getFinalY()I HSPLandroid/widget/OverScroller;->isFinished()Z HSPLandroid/widget/OverScroller;->springBack(IIIIII)Z HSPLandroid/widget/PopupMenu;-><init>(Landroid/content/Context;Landroid/view/View;III)V +HSPLandroid/widget/PopupMenu;->getMenu()Landroid/view/Menu; HSPLandroid/widget/PopupMenu;->getMenuInflater()Landroid/view/MenuInflater; +HSPLandroid/widget/PopupMenu;->inflate(I)V +HSPLandroid/widget/PopupMenu;->setOnMenuItemClickListener(Landroid/widget/PopupMenu$OnMenuItemClickListener;)V HSPLandroid/widget/PopupWindow;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V +HSPLandroid/widget/PopupWindow;->dismiss()V HSPLandroid/widget/PopupWindow;->getTransition(I)Landroid/transition/Transition; HSPLandroid/widget/PopupWindow;->isShowing()Z +HSPLandroid/widget/PopupWindow;->setAttachedInDecor(Z)V HSPLandroid/widget/PopupWindow;->setBackgroundDrawable(Landroid/graphics/drawable/Drawable;)V +HSPLandroid/widget/PopupWindow;->setContentView(Landroid/view/View;)V HSPLandroid/widget/PopupWindow;->setEnterTransition(Landroid/transition/Transition;)V HSPLandroid/widget/PopupWindow;->setExitTransition(Landroid/transition/Transition;)V +HSPLandroid/widget/PopupWindow;->setFocusable(Z)V +HSPLandroid/widget/PopupWindow;->setInputMethodMode(I)V HSPLandroid/widget/ProgressBar$SavedState$1;-><init>()V +HSPLandroid/widget/ProgressBar$SavedState;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/widget/ProgressBar;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V HSPLandroid/widget/ProgressBar;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V HSPLandroid/widget/ProgressBar;->applyIndeterminateTint()V +HSPLandroid/widget/ProgressBar;->applyPrimaryProgressTint()V HSPLandroid/widget/ProgressBar;->doRefreshProgress(IIZZZ)V HSPLandroid/widget/ProgressBar;->drawTrack(Landroid/graphics/Canvas;)V HSPLandroid/widget/ProgressBar;->drawableStateChanged()V +HSPLandroid/widget/ProgressBar;->getCurrentDrawable()Landroid/graphics/drawable/Drawable; HSPLandroid/widget/ProgressBar;->getIndeterminateDrawable()Landroid/graphics/drawable/Drawable; HSPLandroid/widget/ProgressBar;->getMax()I HSPLandroid/widget/ProgressBar;->getMin()I @@ -18267,9 +19067,15 @@ HSPLandroid/widget/RelativeLayout$DependencyGraph;->getSortedViews([Landroid/vie HSPLandroid/widget/RelativeLayout$LayoutParams;-><init>(II)V HSPLandroid/widget/RelativeLayout$LayoutParams;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V HSPLandroid/widget/RelativeLayout$LayoutParams;->access$100(Landroid/widget/RelativeLayout$LayoutParams;)I +HSPLandroid/widget/RelativeLayout$LayoutParams;->access$112(Landroid/widget/RelativeLayout$LayoutParams;I)I HSPLandroid/widget/RelativeLayout$LayoutParams;->access$200(Landroid/widget/RelativeLayout$LayoutParams;)I +HSPLandroid/widget/RelativeLayout$LayoutParams;->access$212(Landroid/widget/RelativeLayout$LayoutParams;I)I HSPLandroid/widget/RelativeLayout$LayoutParams;->access$300(Landroid/widget/RelativeLayout$LayoutParams;)I +HSPLandroid/widget/RelativeLayout$LayoutParams;->access$302(Landroid/widget/RelativeLayout$LayoutParams;I)I +HSPLandroid/widget/RelativeLayout$LayoutParams;->access$312(Landroid/widget/RelativeLayout$LayoutParams;I)I HSPLandroid/widget/RelativeLayout$LayoutParams;->access$400(Landroid/widget/RelativeLayout$LayoutParams;)I +HSPLandroid/widget/RelativeLayout$LayoutParams;->access$402(Landroid/widget/RelativeLayout$LayoutParams;I)I +HSPLandroid/widget/RelativeLayout$LayoutParams;->access$412(Landroid/widget/RelativeLayout$LayoutParams;I)I HSPLandroid/widget/RelativeLayout$LayoutParams;->addRule(I)V HSPLandroid/widget/RelativeLayout$LayoutParams;->addRule(II)V HSPLandroid/widget/RelativeLayout$LayoutParams;->getRules()[I @@ -18303,6 +19109,7 @@ HSPLandroid/widget/RelativeLayout;->positionAtEdge(Landroid/view/View;Landroid/w HSPLandroid/widget/RelativeLayout;->positionChildHorizontal(Landroid/view/View;Landroid/widget/RelativeLayout$LayoutParams;IZ)Z HSPLandroid/widget/RelativeLayout;->positionChildVertical(Landroid/view/View;Landroid/widget/RelativeLayout$LayoutParams;IZ)Z HSPLandroid/widget/RelativeLayout;->requestLayout()V +HSPLandroid/widget/RelativeLayout;->setGravity(I)V HSPLandroid/widget/RelativeLayout;->shouldDelayChildPressedState()Z HSPLandroid/widget/RelativeLayout;->sortChildren()V HSPLandroid/widget/RemoteViews$1;-><init>()V @@ -18311,7 +19118,7 @@ HSPLandroid/widget/RemoteViews$2;->createFromParcel(Landroid/os/Parcel;)Landroid HSPLandroid/widget/RemoteViews$2;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/widget/RemoteViews$Action;->hasSameAppInfo(Landroid/content/pm/ApplicationInfo;)Z HSPLandroid/widget/RemoteViews$Action;->setBitmapCache(Landroid/widget/RemoteViews$BitmapCache;)V -PLandroid/widget/RemoteViews$Action;->visitUris(Ljava/util/function/Consumer;)V +HPLandroid/widget/RemoteViews$Action;->visitUris(Ljava/util/function/Consumer;)V HSPLandroid/widget/RemoteViews$BitmapCache;->getBitmapForId(I)Landroid/graphics/Bitmap; HSPLandroid/widget/RemoteViews$BitmapCache;->getBitmapId(Landroid/graphics/Bitmap;)I HPLandroid/widget/RemoteViews$BitmapCache;->getBitmapMemory()I @@ -18328,7 +19135,7 @@ HSPLandroid/widget/RemoteViews$ReflectionAction;-><init>(Landroid/widget/RemoteV HSPLandroid/widget/RemoteViews$ReflectionAction;->apply(Landroid/view/View;Landroid/view/ViewGroup;Landroid/widget/RemoteViews$OnClickHandler;)V HSPLandroid/widget/RemoteViews$ReflectionAction;->getActionTag()I HSPLandroid/widget/RemoteViews$ReflectionAction;->getParameterType()Ljava/lang/Class; -PLandroid/widget/RemoteViews$ReflectionAction;->visitUris(Ljava/util/function/Consumer;)V +HPLandroid/widget/RemoteViews$ReflectionAction;->visitUris(Ljava/util/function/Consumer;)V HSPLandroid/widget/RemoteViews$ReflectionAction;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/widget/RemoteViews$RemoteResponse;->readFromParcel(Landroid/os/Parcel;)V HSPLandroid/widget/RemoteViews$RemoteResponse;->writeToParcel(Landroid/os/Parcel;I)V @@ -18339,6 +19146,8 @@ HSPLandroid/widget/RemoteViews$SetOnClickResponse;->writeToParcel(Landroid/os/Pa HSPLandroid/widget/RemoteViews$TextViewSizeAction;->getActionTag()I HSPLandroid/widget/RemoteViews$TextViewSizeAction;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/widget/RemoteViews$ViewGroupActionAdd;-><init>(Landroid/widget/RemoteViews;Landroid/os/Parcel;Landroid/widget/RemoteViews$BitmapCache;Landroid/content/pm/ApplicationInfo;ILjava/util/Map;)V +HSPLandroid/widget/RemoteViews$ViewPaddingAction;-><init>(Landroid/widget/RemoteViews;Landroid/os/Parcel;)V +HSPLandroid/widget/RemoteViews$ViewPaddingAction;->apply(Landroid/view/View;Landroid/view/ViewGroup;Landroid/widget/RemoteViews$OnClickHandler;)V HSPLandroid/widget/RemoteViews;-><init>(Landroid/os/Parcel;Landroid/widget/RemoteViews$BitmapCache;Landroid/content/pm/ApplicationInfo;ILjava/util/Map;)V HSPLandroid/widget/RemoteViews;-><init>(Landroid/widget/RemoteViews;)V HSPLandroid/widget/RemoteViews;-><init>(Ljava/lang/String;I)V @@ -18352,6 +19161,7 @@ HSPLandroid/widget/RemoteViews;->getLayoutId()I HSPLandroid/widget/RemoteViews;->getMethod(Landroid/view/View;Ljava/lang/String;Ljava/lang/Class;Z)Ljava/lang/invoke/MethodHandle; HSPLandroid/widget/RemoteViews;->getPackage()Ljava/lang/String; HSPLandroid/widget/RemoteViews;->hasFlags(I)Z +HSPLandroid/widget/RemoteViews;->hasSameAppInfo(Landroid/content/pm/ApplicationInfo;)Z HSPLandroid/widget/RemoteViews;->inflateView(Landroid/content/Context;Landroid/widget/RemoteViews;Landroid/view/ViewGroup;I)Landroid/view/View; HSPLandroid/widget/RemoteViews;->onLoadClass(Ljava/lang/Class;)Z HSPLandroid/widget/RemoteViews;->performApply(Landroid/view/View;Landroid/view/ViewGroup;Landroid/widget/RemoteViews$OnClickHandler;)V @@ -18366,7 +19176,7 @@ HSPLandroid/widget/RemoteViews;->setOnClickPendingIntent(ILandroid/app/PendingIn HSPLandroid/widget/RemoteViews;->setOnClickResponse(ILandroid/widget/RemoteViews$RemoteResponse;)V HSPLandroid/widget/RemoteViews;->setTextViewText(ILjava/lang/CharSequence;)V HSPLandroid/widget/RemoteViews;->setViewVisibility(II)V -PLandroid/widget/RemoteViews;->visitUris(Ljava/util/function/Consumer;)V +HPLandroid/widget/RemoteViews;->visitUris(Ljava/util/function/Consumer;)V HSPLandroid/widget/RemoteViews;->writeActionsToParcel(Landroid/os/Parcel;)V HSPLandroid/widget/RemoteViews;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/widget/RtlSpacingHelper;->getEnd()I @@ -18384,12 +19194,14 @@ HSPLandroid/widget/ScrollBarDrawable;->onBoundsChange(Landroid/graphics/Rect;)V HSPLandroid/widget/ScrollBarDrawable;->onStateChange([I)Z HSPLandroid/widget/ScrollBarDrawable;->propagateCurrentState(Landroid/graphics/drawable/Drawable;)V HSPLandroid/widget/ScrollBarDrawable;->setAlpha(I)V +HSPLandroid/widget/ScrollBarDrawable;->setAlwaysDrawVerticalTrack(Z)V HSPLandroid/widget/ScrollBarDrawable;->setHorizontalThumbDrawable(Landroid/graphics/drawable/Drawable;)V HSPLandroid/widget/ScrollBarDrawable;->setHorizontalTrackDrawable(Landroid/graphics/drawable/Drawable;)V HSPLandroid/widget/ScrollBarDrawable;->setParameters(IIIZ)V HSPLandroid/widget/ScrollBarDrawable;->setVerticalThumbDrawable(Landroid/graphics/drawable/Drawable;)V HSPLandroid/widget/ScrollBarDrawable;->setVerticalTrackDrawable(Landroid/graphics/drawable/Drawable;)V HSPLandroid/widget/ScrollView$SavedState$1;-><init>()V +HSPLandroid/widget/ScrollView$SavedState;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/widget/ScrollView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V HSPLandroid/widget/ScrollView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V HSPLandroid/widget/ScrollView;->addView(Landroid/view/View;ILandroid/view/ViewGroup$LayoutParams;)V @@ -18398,6 +19210,7 @@ HSPLandroid/widget/ScrollView;->computeScroll()V HSPLandroid/widget/ScrollView;->computeVerticalScrollOffset()I HSPLandroid/widget/ScrollView;->computeVerticalScrollRange()I HSPLandroid/widget/ScrollView;->draw(Landroid/graphics/Canvas;)V +HSPLandroid/widget/ScrollView;->getAccessibilityClassName()Ljava/lang/CharSequence; HSPLandroid/widget/ScrollView;->initScrollView()V HSPLandroid/widget/ScrollView;->measureChildWithMargins(Landroid/view/View;IIII)V HSPLandroid/widget/ScrollView;->onDetachedFromWindow()V @@ -18409,9 +19222,11 @@ HSPLandroid/widget/ScrollView;->onSizeChanged(IIII)V HSPLandroid/widget/ScrollView;->requestLayout()V HSPLandroid/widget/ScrollView;->scrollTo(II)V HSPLandroid/widget/ScrollView;->setFillViewport(Z)V +HSPLandroid/widget/ScrollView;->shouldDelayChildPressedState()Z HSPLandroid/widget/Scroller$ViscousFluidInterpolator;->viscousFluid(F)F HSPLandroid/widget/Scroller;-><init>(Landroid/content/Context;Landroid/view/animation/Interpolator;)V HSPLandroid/widget/Scroller;-><init>(Landroid/content/Context;Landroid/view/animation/Interpolator;Z)V +HSPLandroid/widget/Scroller;->computeScrollOffset()Z HSPLandroid/widget/Scroller;->isFinished()Z HSPLandroid/widget/SeekBar;->onProgressRefresh(FZI)V HSPLandroid/widget/SeekBar;->setOnSeekBarChangeListener(Landroid/widget/SeekBar$OnSeekBarChangeListener;)V @@ -18422,6 +19237,10 @@ HSPLandroid/widget/Space;-><init>(Landroid/content/Context;)V HSPLandroid/widget/Space;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V HSPLandroid/widget/Space;->draw(Landroid/graphics/Canvas;)V HSPLandroid/widget/Space;->onMeasure(II)V +HSPLandroid/widget/SpellChecker;-><init>(Landroid/widget/TextView;)V +HSPLandroid/widget/SpellChecker;->closeSession()V +HSPLandroid/widget/SpellChecker;->resetSession()V +HSPLandroid/widget/SpellChecker;->spellCheck(II)V HSPLandroid/widget/Switch$1;-><init>(Ljava/lang/String;)V HSPLandroid/widget/Switch;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V HSPLandroid/widget/Switch;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V @@ -18523,12 +19342,16 @@ HSPLandroid/widget/TextView;->getLineHeight()I HSPLandroid/widget/TextView;->getLineSpacingExtra()F HSPLandroid/widget/TextView;->getLineSpacingMultiplier()F HSPLandroid/widget/TextView;->getMaxEms()I +HSPLandroid/widget/TextView;->getMaxHeight()I HSPLandroid/widget/TextView;->getMaxLines()I +HSPLandroid/widget/TextView;->getMaxWidth()I HSPLandroid/widget/TextView;->getMinEms()I HSPLandroid/widget/TextView;->getPaint()Landroid/text/TextPaint; HSPLandroid/widget/TextView;->getSelectionEnd()I HSPLandroid/widget/TextView;->getSelectionStart()I +HSPLandroid/widget/TextView;->getSpellCheckerLocale()Ljava/util/Locale; HSPLandroid/widget/TextView;->getText()Ljava/lang/CharSequence; +HSPLandroid/widget/TextView;->getTextColors()Landroid/content/res/ColorStateList; HSPLandroid/widget/TextView;->getTextCursorDrawable()Landroid/graphics/drawable/Drawable; HSPLandroid/widget/TextView;->getTextDirectionHeuristic()Landroid/text/TextDirectionHeuristic; HSPLandroid/widget/TextView;->getTextLocale()Ljava/util/Locale; @@ -18574,7 +19397,9 @@ HSPLandroid/widget/TextView;->onDraw(Landroid/graphics/Canvas;)V HSPLandroid/widget/TextView;->onEndBatchEdit()V HSPLandroid/widget/TextView;->onFocusChanged(ZILandroid/graphics/Rect;)V HSPLandroid/widget/TextView;->onLayout(ZIIII)V +HSPLandroid/widget/TextView;->onLocaleChanged()V HSPLandroid/widget/TextView;->onMeasure(II)V +HSPLandroid/widget/TextView;->onPopulateAccessibilityEventInternal(Landroid/view/accessibility/AccessibilityEvent;)V HSPLandroid/widget/TextView;->onPreDraw()Z HSPLandroid/widget/TextView;->onProvideStructure(Landroid/view/ViewStructure;II)V HSPLandroid/widget/TextView;->onResolveDrawables(I)V @@ -18662,6 +19487,7 @@ HSPLandroid/widget/TextView;->setTypeface(Landroid/graphics/Typeface;I)V HSPLandroid/widget/TextView;->setTypefaceFromAttrs(Landroid/graphics/Typeface;Ljava/lang/String;III)V HSPLandroid/widget/TextView;->setupAutoSizeText()Z HSPLandroid/widget/TextView;->setupAutoSizeUniformPresetSizesConfiguration()Z +HSPLandroid/widget/TextView;->shouldAdvanceFocusOnEnter()Z HSPLandroid/widget/TextView;->spanChange(Landroid/text/Spanned;Ljava/lang/Object;IIII)V HSPLandroid/widget/TextView;->startMarquee()V HSPLandroid/widget/TextView;->stopMarquee()V @@ -18728,6 +19554,7 @@ HSPLandroid/widget/Toolbar;->onRtlPropertiesChanged(I)V HSPLandroid/widget/Toolbar;->onSaveInstanceState()Landroid/os/Parcelable; HSPLandroid/widget/Toolbar;->setContentInsetsRelative(II)V HSPLandroid/widget/Toolbar;->setLogo(Landroid/graphics/drawable/Drawable;)V +HSPLandroid/widget/Toolbar;->setMenuCallbacks(Lcom/android/internal/view/menu/MenuPresenter$Callback;Lcom/android/internal/view/menu/MenuBuilder$Callback;)V HSPLandroid/widget/Toolbar;->setNavigationContentDescription(Ljava/lang/CharSequence;)V HSPLandroid/widget/Toolbar;->setNavigationIcon(Landroid/graphics/drawable/Drawable;)V HSPLandroid/widget/Toolbar;->setNavigationOnClickListener(Landroid/view/View$OnClickListener;)V @@ -18741,10 +19568,13 @@ HSPLandroid/widget/Toolbar;->shouldCollapse()Z HSPLandroid/widget/Toolbar;->shouldLayout(Landroid/view/View;)Z HSPLandroid/widget/ViewAnimator;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V HSPLandroid/widget/ViewAnimator;->addView(Landroid/view/View;ILandroid/view/ViewGroup$LayoutParams;)V +HSPLandroid/widget/ViewAnimator;->getBaseline()I +HSPLandroid/widget/ViewAnimator;->getCurrentView()Landroid/view/View; HSPLandroid/widget/ViewAnimator;->setAnimateFirstView(Z)V HSPLandroid/widget/ViewAnimator;->setDisplayedChild(I)V HSPLandroid/widget/ViewAnimator;->showOnly(I)V HSPLandroid/widget/ViewAnimator;->showOnly(IZ)V +HSPLandroid/widget/ViewSwitcher;-><init>(Landroid/content/Context;)V HSPLandroid/widget/ViewSwitcher;->addView(Landroid/view/View;ILandroid/view/ViewGroup$LayoutParams;)V PLcom/android/framework/protobuf/nano/CodedInputByteBufferNano;->checkLastTagWas(I)V PLcom/android/framework/protobuf/nano/CodedInputByteBufferNano;->readRawVarint32()I @@ -18776,11 +19606,11 @@ HPLcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;->writeString(I HPLcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;->writeStringNoTag(Ljava/lang/String;)V HPLcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;->writeTag(II)V HPLcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;->writeUInt32NoTag(I)V -PLcom/android/framework/protobuf/nano/MessageNano;->getCachedSize()I -PLcom/android/framework/protobuf/nano/MessageNano;->getSerializedSize()I -PLcom/android/framework/protobuf/nano/MessageNano;->mergeFrom(Lcom/android/framework/protobuf/nano/MessageNano;[BII)Lcom/android/framework/protobuf/nano/MessageNano; -PLcom/android/framework/protobuf/nano/MessageNano;->toByteArray(Lcom/android/framework/protobuf/nano/MessageNano;)[B -PLcom/android/framework/protobuf/nano/MessageNano;->toByteArray(Lcom/android/framework/protobuf/nano/MessageNano;[BII)V +HPLcom/android/framework/protobuf/nano/MessageNano;->getCachedSize()I +HPLcom/android/framework/protobuf/nano/MessageNano;->getSerializedSize()I +HPLcom/android/framework/protobuf/nano/MessageNano;->mergeFrom(Lcom/android/framework/protobuf/nano/MessageNano;[BII)Lcom/android/framework/protobuf/nano/MessageNano; +HPLcom/android/framework/protobuf/nano/MessageNano;->toByteArray(Lcom/android/framework/protobuf/nano/MessageNano;)[B +HPLcom/android/framework/protobuf/nano/MessageNano;->toByteArray(Lcom/android/framework/protobuf/nano/MessageNano;[BII)V HSPLcom/android/i18n/phonenumbers/AlternateFormatsCountryCodeSet;->getCountryCodeSet()Ljava/util/Set; HSPLcom/android/i18n/phonenumbers/CountryCodeToRegionCodeMap;->getCountryCodeToRegionCodeMap()Ljava/util/Map; HSPLcom/android/i18n/phonenumbers/MetadataManager$1;-><init>()V @@ -18817,11 +19647,13 @@ HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->getMetadataForRegion(Ljava/l HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->getNationalSignificantNumber(Lcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;)Ljava/lang/String; HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->getNddPrefixForRegion(Ljava/lang/String;Z)Ljava/lang/String; HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->getNumberDescByType(Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;Lcom/android/i18n/phonenumbers/PhoneNumberUtil$PhoneNumberType;)Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneNumberDesc; +HPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->getNumberType(Lcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;)Lcom/android/i18n/phonenumbers/PhoneNumberUtil$PhoneNumberType; HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->getNumberTypeHelper(Ljava/lang/String;Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;)Lcom/android/i18n/phonenumbers/PhoneNumberUtil$PhoneNumberType; HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->getRegionCodeForCountryCode(I)Ljava/lang/String; HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->getRegionCodeForNumber(Lcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;)Ljava/lang/String; HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->getRegionCodeForNumberFromRegionList(Lcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;Ljava/util/List;)Ljava/lang/String; HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->hasFormattingPatternForNumber(Lcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;)Z +HPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->isNumberGeographical(Lcom/android/i18n/phonenumbers/PhoneNumberUtil$PhoneNumberType;I)Z HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->isNumberMatchingDesc(Ljava/lang/String;Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneNumberDesc;)Z HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->isValidNumber(Lcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;)Z HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->isValidNumberForRegion(Lcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;Ljava/lang/String;)Z @@ -18914,6 +19746,7 @@ HSPLcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;->getCountryCode()I HSPLcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;->getCountryCodeSource()Lcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber$CountryCodeSource; HSPLcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;->getNationalNumber()J HSPLcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;->getRawInput()Ljava/lang/String; +HSPLcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;->hasCountryCode()Z HSPLcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;->hasCountryCodeSource()Z HSPLcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;->hasExtension()Z HSPLcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;->hasRawInput()Z @@ -18943,6 +19776,7 @@ HSPLcom/android/ims/-$$Lambda$szO0o3matefQqo-6NB-dzsr9eCw;->apply(Ljava/lang/Obj HSPLcom/android/ims/ImsConfig;->addConfigCallback(Landroid/telephony/ims/ProvisioningManager$Callback;)V HSPLcom/android/ims/ImsConfig;->addConfigCallback(Landroid/telephony/ims/aidl/IImsConfigCallback;)V HSPLcom/android/ims/ImsConfig;->getConfigInt(I)I +HSPLcom/android/ims/ImsConfig;->getProvisionedValue(I)I HSPLcom/android/ims/ImsConfig;->setConfig(II)I HSPLcom/android/ims/ImsConfig;->setProvisionedValue(II)I HSPLcom/android/ims/ImsConfigListener$Stub;-><init>()V @@ -18987,11 +19821,13 @@ HSPLcom/android/ims/ImsManager;->isSuppServicesOverUtEnabledByPlatform()Z HSPLcom/android/ims/ImsManager;->isTtyOnVoLteCapable()Z HSPLcom/android/ims/ImsManager;->isTurnOffImsAllowedByPlatform()Z HSPLcom/android/ims/ImsManager;->isVolteEnabledByPlatform()Z +HSPLcom/android/ims/ImsManager;->isVolteProvisionedOnDevice()Z HSPLcom/android/ims/ImsManager;->isVtEnabledByPlatform()Z HSPLcom/android/ims/ImsManager;->isVtEnabledByUser()Z HSPLcom/android/ims/ImsManager;->isWfcEnabledByPlatform()Z HSPLcom/android/ims/ImsManager;->isWfcEnabledByUser()Z HSPLcom/android/ims/ImsManager;->isWfcRoamingEnabledByUser()Z +HSPLcom/android/ims/ImsManager;->lambda$setRttConfig$4$ImsManager(ZI)V HSPLcom/android/ims/ImsManager;->lambda$setWfcModeInternal$1$ImsManager(I)V HSPLcom/android/ims/ImsManager;->lambda$setWfcRoamingSettingInternal$2$ImsManager(I)V HSPLcom/android/ims/ImsManager;->onSmsReady()V @@ -19061,6 +19897,7 @@ HSPLcom/android/ims/internal/IImsEcbm$Stub;-><init>()V HSPLcom/android/ims/internal/IImsEcbmListener$Stub;-><init>()V HSPLcom/android/ims/internal/IImsExternalCallStateListener$Stub;-><init>()V HSPLcom/android/ims/internal/IImsFeatureStatusCallback$Stub;-><init>()V +HSPLcom/android/ims/internal/IImsFeatureStatusCallback$Stub;->asBinder()Landroid/os/IBinder; HSPLcom/android/ims/internal/IImsMultiEndpoint$Stub;-><init>()V HSPLcom/android/ims/internal/IImsServiceFeatureCallback$Stub$Proxy;->imsFeatureCreated(II)V HSPLcom/android/ims/internal/IImsServiceFeatureCallback$Stub;-><init>()V @@ -19097,10 +19934,20 @@ HSPLcom/android/internal/accessibility/AccessibilityShortcutController;->onSetti HSPLcom/android/internal/accessibility/AccessibilityShortcutController;->setCurrentUser(I)V HSPLcom/android/internal/alsa/AlsaCardsParser;-><init>()V HSPLcom/android/internal/alsa/LineTokenizer;-><init>(Ljava/lang/String;)V +HSPLcom/android/internal/app/AlertController;-><init>(Landroid/content/Context;Landroid/content/DialogInterface;Landroid/view/Window;)V +HSPLcom/android/internal/app/AlertController;->create(Landroid/content/Context;Landroid/content/DialogInterface;Landroid/view/Window;)Lcom/android/internal/app/AlertController; +HSPLcom/android/internal/app/AlertController;->installContent()V +HSPLcom/android/internal/app/AlertController;->resolvePanel(Landroid/view/View;Landroid/view/View;)Landroid/view/ViewGroup; +HSPLcom/android/internal/app/AlertController;->setBackground(Landroid/content/res/TypedArray;Landroid/view/View;Landroid/view/View;Landroid/view/View;Landroid/view/View;ZZZ)V +HSPLcom/android/internal/app/AlertController;->setupButtons(Landroid/view/ViewGroup;)V +HSPLcom/android/internal/app/AlertController;->setupContent(Landroid/view/ViewGroup;)V +HSPLcom/android/internal/app/AlertController;->setupCustomContent(Landroid/view/ViewGroup;)V +HSPLcom/android/internal/app/AlertController;->setupTitle(Landroid/view/ViewGroup;)V +HSPLcom/android/internal/app/AlertController;->setupView()V HSPLcom/android/internal/app/AssistUtils;-><init>(Landroid/content/Context;)V HSPLcom/android/internal/app/AssistUtils;->getAssistComponentForUser(I)Landroid/content/ComponentName; -PLcom/android/internal/app/AssistUtils;->isPreinstalledAssistant(Landroid/content/Context;Landroid/content/ComponentName;)Z -PLcom/android/internal/app/AssistUtils;->shouldDisclose(Landroid/content/Context;Landroid/content/ComponentName;)Z +HPLcom/android/internal/app/AssistUtils;->isPreinstalledAssistant(Landroid/content/Context;Landroid/content/ComponentName;)Z +HPLcom/android/internal/app/AssistUtils;->shouldDisclose(Landroid/content/Context;Landroid/content/ComponentName;)Z HSPLcom/android/internal/app/IAppOpsActiveCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V HSPLcom/android/internal/app/IAppOpsActiveCallback$Stub$Proxy;->asBinder()Landroid/os/IBinder; HPLcom/android/internal/app/IAppOpsActiveCallback$Stub$Proxy;->opActiveChanged(IILjava/lang/String;Z)V @@ -19125,16 +19972,18 @@ HSPLcom/android/internal/app/IAppOpsService$Stub$Proxy;->stopWatchingMode(Lcom/a HSPLcom/android/internal/app/IAppOpsService$Stub;-><init>()V HSPLcom/android/internal/app/IAppOpsService$Stub;->asBinder()Landroid/os/IBinder; HSPLcom/android/internal/app/IAppOpsService$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/app/IAppOpsService; -PLcom/android/internal/app/IAppOpsService$Stub;->getDefaultTransactionName(I)Ljava/lang/String; +HPLcom/android/internal/app/IAppOpsService$Stub;->getDefaultTransactionName(I)Ljava/lang/String; HSPLcom/android/internal/app/IAppOpsService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z -PLcom/android/internal/app/IBatteryStats$Stub$Proxy;->getCellularBatteryStats()Landroid/os/connectivity/CellularBatteryStats; +HPLcom/android/internal/app/IBatteryStats$Stub$Proxy;->getCellularBatteryStats()Landroid/os/connectivity/CellularBatteryStats; +HSPLcom/android/internal/app/IBatteryStats$Stub$Proxy;->getStatisticsStream()Landroid/os/ParcelFileDescriptor; HSPLcom/android/internal/app/IBatteryStats$Stub$Proxy;->isCharging()Z +HSPLcom/android/internal/app/IBatteryStats$Stub$Proxy;->takeUidSnapshot(I)Landroid/os/health/HealthStatsParceler; HSPLcom/android/internal/app/IBatteryStats$Stub;-><init>()V HSPLcom/android/internal/app/IBatteryStats$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/app/IBatteryStats; -PLcom/android/internal/app/IBatteryStats$Stub;->getDefaultTransactionName(I)Ljava/lang/String; +HPLcom/android/internal/app/IBatteryStats$Stub;->getDefaultTransactionName(I)Ljava/lang/String; HSPLcom/android/internal/app/IBatteryStats$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HSPLcom/android/internal/app/ISoundTriggerService$Stub;-><init>()V -PLcom/android/internal/app/ISoundTriggerService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLcom/android/internal/app/ISoundTriggerService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HSPLcom/android/internal/app/IVoiceInteractionManagerService$Stub;-><init>()V HSPLcom/android/internal/app/IVoiceInteractionManagerService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HSPLcom/android/internal/app/IVoiceInteractionSessionListener$Stub$Proxy;->asBinder()Landroid/os/IBinder; @@ -19149,7 +19998,7 @@ HSPLcom/android/internal/app/ProcessMap;->get(Ljava/lang/String;I)Ljava/lang/Obj HSPLcom/android/internal/app/ProcessMap;->getMap()Landroid/util/ArrayMap; HSPLcom/android/internal/app/ProcessMap;->put(Ljava/lang/String;ILjava/lang/Object;)Ljava/lang/Object; HSPLcom/android/internal/app/ProcessMap;->remove(Ljava/lang/String;I)Ljava/lang/Object; -PLcom/android/internal/app/ProcessMap;->size()I +HPLcom/android/internal/app/ProcessMap;->size()I HSPLcom/android/internal/app/ResolverActivity$ActionTitle;-><init>(Ljava/lang/String;ILjava/lang/String;III)V HSPLcom/android/internal/app/ResolverActivity;->getLabelRes(Ljava/lang/String;)I HSPLcom/android/internal/app/procstats/AssociationState$SourceKey;->equals(Ljava/lang/Object;)Z @@ -19176,7 +20025,7 @@ HSPLcom/android/internal/app/procstats/DurationsTable;->addDuration(IJ)V HSPLcom/android/internal/app/procstats/DurationsTable;->addDurations(Lcom/android/internal/app/procstats/DurationsTable;)V HSPLcom/android/internal/app/procstats/IProcessStats$Stub;-><init>()V HSPLcom/android/internal/app/procstats/IProcessStats$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/app/procstats/IProcessStats; -PLcom/android/internal/app/procstats/IProcessStats$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLcom/android/internal/app/procstats/IProcessStats$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HSPLcom/android/internal/app/procstats/ProcessState$1;-><init>()V HSPLcom/android/internal/app/procstats/ProcessState$PssAggr;-><init>()V HSPLcom/android/internal/app/procstats/ProcessState$PssAggr;->add(JJ)V @@ -19201,18 +20050,18 @@ HSPLcom/android/internal/app/procstats/ProcessState;->makeActive()V HSPLcom/android/internal/app/procstats/ProcessState;->pullFixedProc(Landroid/util/ArrayMap;I)Lcom/android/internal/app/procstats/ProcessState; HSPLcom/android/internal/app/procstats/ProcessState;->pullFixedProc(Ljava/lang/String;)Lcom/android/internal/app/procstats/ProcessState; HSPLcom/android/internal/app/procstats/ProcessState;->readFromParcel(Landroid/os/Parcel;Z)Z -PLcom/android/internal/app/procstats/ProcessState;->reportExcessiveCpu(Landroid/util/ArrayMap;)V +HPLcom/android/internal/app/procstats/ProcessState;->reportExcessiveCpu(Landroid/util/ArrayMap;)V HSPLcom/android/internal/app/procstats/ProcessState;->setCombinedState(IJ)V HSPLcom/android/internal/app/procstats/ProcessState;->setState(IIJLandroid/util/ArrayMap;)V HSPLcom/android/internal/app/procstats/ProcessState;->toString()Ljava/lang/String; HPLcom/android/internal/app/procstats/ProcessState;->writeToParcel(Landroid/os/Parcel;J)V HSPLcom/android/internal/app/procstats/ProcessStats$1;-><init>()V -PLcom/android/internal/app/procstats/ProcessStats$1;->createFromParcel(Landroid/os/Parcel;)Lcom/android/internal/app/procstats/ProcessStats; -PLcom/android/internal/app/procstats/ProcessStats$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLcom/android/internal/app/procstats/ProcessStats$1;->createFromParcel(Landroid/os/Parcel;)Lcom/android/internal/app/procstats/ProcessStats; +HPLcom/android/internal/app/procstats/ProcessStats$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLcom/android/internal/app/procstats/ProcessStats$PackageState;-><init>(Lcom/android/internal/app/procstats/ProcessStats;Ljava/lang/String;IJ)V HSPLcom/android/internal/app/procstats/ProcessStats$PackageState;->getAssociationStateLocked(Lcom/android/internal/app/procstats/ProcessState;Ljava/lang/String;)Lcom/android/internal/app/procstats/AssociationState; HSPLcom/android/internal/app/procstats/ProcessStats$TotalMemoryUseCollection;-><init>([I[I)V -PLcom/android/internal/app/procstats/ProcessStats;-><init>(Landroid/os/Parcel;)V +HPLcom/android/internal/app/procstats/ProcessStats;-><init>(Landroid/os/Parcel;)V HSPLcom/android/internal/app/procstats/ProcessStats;-><init>(Z)V HPLcom/android/internal/app/procstats/ProcessStats;->add(Lcom/android/internal/app/procstats/ProcessStats;)V HSPLcom/android/internal/app/procstats/ProcessStats;->addSysMemUsage(JJJJJ)V @@ -19237,7 +20086,7 @@ HSPLcom/android/internal/app/procstats/ProcessStats;->updateFragmentation()V HSPLcom/android/internal/app/procstats/ProcessStats;->updateTrackingAssociationsLocked(IJ)V HPLcom/android/internal/app/procstats/ProcessStats;->writeCommonString(Landroid/os/Parcel;Ljava/lang/String;)V HPLcom/android/internal/app/procstats/ProcessStats;->writeCompactedLongArray(Landroid/os/Parcel;[JI)V -PLcom/android/internal/app/procstats/ProcessStats;->writeToParcel(Landroid/os/Parcel;I)V +HPLcom/android/internal/app/procstats/ProcessStats;->writeToParcel(Landroid/os/Parcel;I)V HPLcom/android/internal/app/procstats/ProcessStats;->writeToParcel(Landroid/os/Parcel;JI)V HSPLcom/android/internal/app/procstats/PssTable;->mergeStats(IIJJJJJJJJJ)V HPLcom/android/internal/app/procstats/PssTable;->mergeStats(Lcom/android/internal/app/procstats/PssTable;)V @@ -19284,7 +20133,7 @@ HPLcom/android/internal/app/procstats/SparseMappingTable;->writeCompactedLongArr HPLcom/android/internal/app/procstats/SparseMappingTable;->writeToParcel(Landroid/os/Parcel;)V HSPLcom/android/internal/app/procstats/SysMemUsageTable;->getTotalMemUsage()[J HSPLcom/android/internal/app/procstats/SysMemUsageTable;->mergeStats(I[JI)V -PLcom/android/internal/app/procstats/SysMemUsageTable;->mergeStats(Lcom/android/internal/app/procstats/SysMemUsageTable;)V +HPLcom/android/internal/app/procstats/SysMemUsageTable;->mergeStats(Lcom/android/internal/app/procstats/SysMemUsageTable;)V HSPLcom/android/internal/app/procstats/SysMemUsageTable;->mergeSysMemUsage([JI[JI)V HSPLcom/android/internal/appwidget/IAppWidgetService$Stub$Proxy;->getAppWidgetIds(Landroid/content/ComponentName;)[I HSPLcom/android/internal/appwidget/IAppWidgetService$Stub$Proxy;->updateAppWidgetProvider(Landroid/content/ComponentName;Landroid/widget/RemoteViews;)V @@ -19309,35 +20158,35 @@ PLcom/android/internal/backup/IBackupTransport$Stub$Proxy;->transportDirName()Lj HPLcom/android/internal/backup/IBackupTransport$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/backup/IBackupTransport; HSPLcom/android/internal/content/NativeLibraryHelper$Handle;->close()V HSPLcom/android/internal/content/NativeLibraryHelper$Handle;->create(Landroid/content/pm/PackageParser$Package;)Lcom/android/internal/content/NativeLibraryHelper$Handle; -PLcom/android/internal/content/NativeLibraryHelper$Handle;->create(Ljava/io/File;)Lcom/android/internal/content/NativeLibraryHelper$Handle; +HPLcom/android/internal/content/NativeLibraryHelper$Handle;->create(Ljava/io/File;)Lcom/android/internal/content/NativeLibraryHelper$Handle; HSPLcom/android/internal/content/NativeLibraryHelper$Handle;->create(Ljava/util/List;ZZZ)Lcom/android/internal/content/NativeLibraryHelper$Handle; HSPLcom/android/internal/content/NativeLibraryHelper$Handle;->finalize()V HSPLcom/android/internal/content/NativeLibraryHelper;->copyNativeBinariesForSupportedAbi(Lcom/android/internal/content/NativeLibraryHelper$Handle;Ljava/io/File;[Ljava/lang/String;Z)I -PLcom/android/internal/content/NativeLibraryHelper;->copyNativeBinariesWithOverride(Lcom/android/internal/content/NativeLibraryHelper$Handle;Ljava/io/File;Ljava/lang/String;)I +HPLcom/android/internal/content/NativeLibraryHelper;->copyNativeBinariesWithOverride(Lcom/android/internal/content/NativeLibraryHelper$Handle;Ljava/io/File;Ljava/lang/String;)I HSPLcom/android/internal/content/NativeLibraryHelper;->createNativeLibrarySubdir(Ljava/io/File;)V HSPLcom/android/internal/content/NativeLibraryHelper;->findSupportedAbi(Lcom/android/internal/content/NativeLibraryHelper$Handle;[Ljava/lang/String;)I HSPLcom/android/internal/content/NativeLibraryHelper;->hasRenderscriptBitcode(Lcom/android/internal/content/NativeLibraryHelper$Handle;)Z -PLcom/android/internal/content/NativeLibraryHelper;->removeNativeBinariesFromDirLI(Ljava/io/File;Z)V -PLcom/android/internal/content/NativeLibraryHelper;->sumNativeBinariesWithOverride(Lcom/android/internal/content/NativeLibraryHelper$Handle;Ljava/lang/String;)J +HPLcom/android/internal/content/NativeLibraryHelper;->removeNativeBinariesFromDirLI(Ljava/io/File;Z)V +HPLcom/android/internal/content/NativeLibraryHelper;->sumNativeBinariesWithOverride(Lcom/android/internal/content/NativeLibraryHelper$Handle;Ljava/lang/String;)J PLcom/android/internal/content/PackageHelper$1;->getAllow3rdPartyOnInternalConfig(Landroid/content/Context;)Z PLcom/android/internal/content/PackageHelper$1;->getExistingAppInfo(Landroid/content/Context;Ljava/lang/String;)Landroid/content/pm/ApplicationInfo; PLcom/android/internal/content/PackageHelper$1;->getForceAllowOnExternalSetting(Landroid/content/Context;)Z PLcom/android/internal/content/PackageHelper$1;->getStorageManager(Landroid/content/Context;)Landroid/os/storage/StorageManager; -PLcom/android/internal/content/PackageHelper;->calculateInstalledSize(Landroid/content/pm/PackageParser$PackageLite;Lcom/android/internal/content/NativeLibraryHelper$Handle;Ljava/lang/String;)J -PLcom/android/internal/content/PackageHelper;->calculateInstalledSize(Landroid/content/pm/PackageParser$PackageLite;Ljava/lang/String;)J -PLcom/android/internal/content/PackageHelper;->calculateInstalledSize(Landroid/content/pm/PackageParser$PackageLite;Ljava/lang/String;Ljava/io/FileDescriptor;)J -PLcom/android/internal/content/PackageHelper;->fitsOnInternal(Landroid/content/Context;Landroid/content/pm/PackageInstaller$SessionParams;)Z -PLcom/android/internal/content/PackageHelper;->getDefaultTestableInterface()Lcom/android/internal/content/PackageHelper$TestableInterface; +HPLcom/android/internal/content/PackageHelper;->calculateInstalledSize(Landroid/content/pm/PackageParser$PackageLite;Lcom/android/internal/content/NativeLibraryHelper$Handle;Ljava/lang/String;)J +HPLcom/android/internal/content/PackageHelper;->calculateInstalledSize(Landroid/content/pm/PackageParser$PackageLite;Ljava/lang/String;)J +HPLcom/android/internal/content/PackageHelper;->calculateInstalledSize(Landroid/content/pm/PackageParser$PackageLite;Ljava/lang/String;Ljava/io/FileDescriptor;)J +HPLcom/android/internal/content/PackageHelper;->fitsOnInternal(Landroid/content/Context;Landroid/content/pm/PackageInstaller$SessionParams;)Z +HPLcom/android/internal/content/PackageHelper;->getDefaultTestableInterface()Lcom/android/internal/content/PackageHelper$TestableInterface; HSPLcom/android/internal/content/PackageHelper;->getStorageManager()Landroid/os/storage/IStorageManager; -PLcom/android/internal/content/PackageHelper;->resolveInstallLocation(Landroid/content/Context;Landroid/content/pm/PackageInstaller$SessionParams;)I -PLcom/android/internal/content/PackageHelper;->resolveInstallLocation(Landroid/content/Context;Ljava/lang/String;IJI)I -PLcom/android/internal/content/PackageHelper;->resolveInstallVolume(Landroid/content/Context;Landroid/content/pm/PackageInstaller$SessionParams;)Ljava/lang/String; -PLcom/android/internal/content/PackageHelper;->resolveInstallVolume(Landroid/content/Context;Landroid/content/pm/PackageInstaller$SessionParams;Lcom/android/internal/content/PackageHelper$TestableInterface;)Ljava/lang/String; +HPLcom/android/internal/content/PackageHelper;->resolveInstallLocation(Landroid/content/Context;Landroid/content/pm/PackageInstaller$SessionParams;)I +HPLcom/android/internal/content/PackageHelper;->resolveInstallLocation(Landroid/content/Context;Ljava/lang/String;IJI)I +HPLcom/android/internal/content/PackageHelper;->resolveInstallVolume(Landroid/content/Context;Landroid/content/pm/PackageInstaller$SessionParams;)Ljava/lang/String; +HPLcom/android/internal/content/PackageHelper;->resolveInstallVolume(Landroid/content/Context;Landroid/content/pm/PackageInstaller$SessionParams;Lcom/android/internal/content/PackageHelper$TestableInterface;)Ljava/lang/String; HSPLcom/android/internal/content/PackageMonitor;-><init>()V HSPLcom/android/internal/content/PackageMonitor;->didSomePackagesChange()Z HSPLcom/android/internal/content/PackageMonitor;->getChangingUserId()I HSPLcom/android/internal/content/PackageMonitor;->getPackageName(Landroid/content/Intent;)Ljava/lang/String; -PLcom/android/internal/content/PackageMonitor;->isComponentModified(Ljava/lang/String;)Z +HPLcom/android/internal/content/PackageMonitor;->isComponentModified(Ljava/lang/String;)Z HSPLcom/android/internal/content/PackageMonitor;->isPackageAppearing(Ljava/lang/String;)I HSPLcom/android/internal/content/PackageMonitor;->isPackageDisappearing(Ljava/lang/String;)I HSPLcom/android/internal/content/PackageMonitor;->isPackageModified(Ljava/lang/String;)Z @@ -19349,8 +20198,8 @@ HSPLcom/android/internal/content/PackageMonitor;->onPackageChanged(Ljava/lang/St HSPLcom/android/internal/content/PackageMonitor;->onPackageDisappeared(Ljava/lang/String;I)V HSPLcom/android/internal/content/PackageMonitor;->onPackageModified(Ljava/lang/String;)V HSPLcom/android/internal/content/PackageMonitor;->onPackageRemoved(Ljava/lang/String;I)V -PLcom/android/internal/content/PackageMonitor;->onPackageUpdateFinished(Ljava/lang/String;I)V -PLcom/android/internal/content/PackageMonitor;->onPackageUpdateStarted(Ljava/lang/String;I)V +HPLcom/android/internal/content/PackageMonitor;->onPackageUpdateFinished(Ljava/lang/String;I)V +HPLcom/android/internal/content/PackageMonitor;->onPackageUpdateStarted(Ljava/lang/String;I)V HSPLcom/android/internal/content/PackageMonitor;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V HSPLcom/android/internal/content/PackageMonitor;->onSomePackagesChanged()V HSPLcom/android/internal/content/PackageMonitor;->onUidRemoved(I)V @@ -19388,7 +20237,7 @@ HSPLcom/android/internal/infra/-$$Lambda$AbstractRemoteService$6FcEKfZ-7TXLg6dcC HSPLcom/android/internal/infra/-$$Lambda$AbstractRemoteService$9IBVTCLLZgndvH7fu1P14PW1_1o;-><init>()V HSPLcom/android/internal/infra/-$$Lambda$AbstractRemoteService$9IBVTCLLZgndvH7fu1P14PW1_1o;->accept(Ljava/lang/Object;)V HSPLcom/android/internal/infra/-$$Lambda$AbstractRemoteService$MDW40b8CzodE5xRowI9wDEyXEnw;-><init>()V -PLcom/android/internal/infra/-$$Lambda$AbstractRemoteService$MDW40b8CzodE5xRowI9wDEyXEnw;->accept(Ljava/lang/Object;)V +HPLcom/android/internal/infra/-$$Lambda$AbstractRemoteService$MDW40b8CzodE5xRowI9wDEyXEnw;->accept(Ljava/lang/Object;)V HSPLcom/android/internal/infra/-$$Lambda$AbstractRemoteService$YSUzqqi1Pbrg2dlwMGMtKWbGXck;-><init>()V HSPLcom/android/internal/infra/-$$Lambda$AbstractRemoteService$YSUzqqi1Pbrg2dlwMGMtKWbGXck;->accept(Ljava/lang/Object;)V PLcom/android/internal/infra/-$$Lambda$EbzSql2RHkXox5Myj8A-7kLC4_A;-><init>()V @@ -19400,16 +20249,18 @@ HSPLcom/android/internal/infra/AbstractMultiplePendingRequestsRemoteService;->ha HSPLcom/android/internal/infra/AbstractRemoteService$BasePendingRequest;->finish()Z HSPLcom/android/internal/infra/AbstractRemoteService$BasePendingRequest;->getService()Lcom/android/internal/infra/AbstractRemoteService; HSPLcom/android/internal/infra/AbstractRemoteService$BasePendingRequest;->isFinal()Z -PLcom/android/internal/infra/AbstractRemoteService$BasePendingRequest;->onFinished()V +HPLcom/android/internal/infra/AbstractRemoteService$BasePendingRequest;->onFinished()V HPLcom/android/internal/infra/AbstractRemoteService$MyAsyncPendingRequest;->run()V HSPLcom/android/internal/infra/AbstractRemoteService$PendingRequest;-><init>(Lcom/android/internal/infra/AbstractRemoteService;)V HSPLcom/android/internal/infra/AbstractRemoteService$PendingRequest;->onFinished()V HSPLcom/android/internal/infra/AbstractRemoteService$RemoteServiceConnection;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V +HPLcom/android/internal/infra/AbstractRemoteService$RemoteServiceConnection;->onServiceDisconnected(Landroid/content/ComponentName;)V HSPLcom/android/internal/infra/AbstractRemoteService;-><init>(Landroid/content/Context;Ljava/lang/String;Landroid/content/ComponentName;ILcom/android/internal/infra/AbstractRemoteService$VultureCallback;Landroid/os/Handler;IZ)V +HPLcom/android/internal/infra/AbstractRemoteService;->binderDied()V HSPLcom/android/internal/infra/AbstractRemoteService;->checkIfDestroyed()Z HSPLcom/android/internal/infra/AbstractRemoteService;->destroy()V HSPLcom/android/internal/infra/AbstractRemoteService;->finishRequest(Lcom/android/internal/infra/AbstractRemoteService$BasePendingRequest;)V -PLcom/android/internal/infra/AbstractRemoteService;->handleBinderDied()V +HPLcom/android/internal/infra/AbstractRemoteService;->handleBinderDied()V HSPLcom/android/internal/infra/AbstractRemoteService;->handleEnsureBound()V HSPLcom/android/internal/infra/AbstractRemoteService;->handleEnsureUnbound()V HSPLcom/android/internal/infra/AbstractRemoteService;->handleOnConnectedStateChanged(Z)V @@ -19418,16 +20269,16 @@ HSPLcom/android/internal/infra/AbstractRemoteService;->scheduleAsyncRequest(Lcom HSPLcom/android/internal/infra/AbstractRemoteService;->scheduleBind()V HSPLcom/android/internal/infra/AbstractRemoteService;->scheduleRequest(Lcom/android/internal/infra/AbstractRemoteService$BasePendingRequest;)V HSPLcom/android/internal/infra/AbstractRemoteService;->scheduleUnbind()V -PLcom/android/internal/infra/AbstractRemoteService;->toString()Ljava/lang/String; +HPLcom/android/internal/infra/AbstractRemoteService;->toString()Ljava/lang/String; HSPLcom/android/internal/infra/AbstractSinglePendingRequestRemoteService;-><init>(Landroid/content/Context;Ljava/lang/String;Landroid/content/ComponentName;ILcom/android/internal/infra/AbstractRemoteService$VultureCallback;Landroid/os/Handler;IZ)V -PLcom/android/internal/infra/AbstractSinglePendingRequestRemoteService;->handleOnDestroy()V -PLcom/android/internal/infra/AbstractSinglePendingRequestRemoteService;->handlePendingRequestWhileUnBound(Lcom/android/internal/infra/AbstractRemoteService$BasePendingRequest;)V -PLcom/android/internal/infra/AbstractSinglePendingRequestRemoteService;->handlePendingRequests()V +HPLcom/android/internal/infra/AbstractSinglePendingRequestRemoteService;->handleOnDestroy()V +HPLcom/android/internal/infra/AbstractSinglePendingRequestRemoteService;->handlePendingRequestWhileUnBound(Lcom/android/internal/infra/AbstractRemoteService$BasePendingRequest;)V +HPLcom/android/internal/infra/AbstractSinglePendingRequestRemoteService;->handlePendingRequests()V HSPLcom/android/internal/infra/WhitelistHelper;->getWhitelistedComponents(Ljava/lang/String;)Landroid/util/ArraySet; -PLcom/android/internal/infra/WhitelistHelper;->isWhitelisted(Landroid/content/ComponentName;)Z +HPLcom/android/internal/infra/WhitelistHelper;->isWhitelisted(Landroid/content/ComponentName;)Z HSPLcom/android/internal/infra/WhitelistHelper;->isWhitelisted(Ljava/lang/String;)Z -PLcom/android/internal/infra/WhitelistHelper;->setWhitelist(Landroid/util/ArraySet;Landroid/util/ArraySet;)V -PLcom/android/internal/infra/WhitelistHelper;->setWhitelist(Ljava/util/List;Ljava/util/List;)V +HPLcom/android/internal/infra/WhitelistHelper;->setWhitelist(Landroid/util/ArraySet;Landroid/util/ArraySet;)V +HPLcom/android/internal/infra/WhitelistHelper;->setWhitelist(Ljava/util/List;Ljava/util/List;)V HSPLcom/android/internal/inputmethod/IInputMethodPrivilegedOperations$Stub$Proxy;->notifyUserAction()V HSPLcom/android/internal/inputmethod/IInputMethodPrivilegedOperations$Stub$Proxy;->reportFullscreenMode(Z)V HSPLcom/android/internal/inputmethod/IInputMethodPrivilegedOperations$Stub$Proxy;->reportStartInput(Landroid/os/IBinder;)V @@ -19448,7 +20299,7 @@ HSPLcom/android/internal/inputmethod/InputMethodPrivilegedOperations;->updateSta HSPLcom/android/internal/inputmethod/InputMethodPrivilegedOperationsRegistry;->put(Landroid/os/IBinder;Lcom/android/internal/inputmethod/InputMethodPrivilegedOperations;)V HSPLcom/android/internal/inputmethod/SubtypeLocaleUtils;->constructLocaleFromString(Ljava/lang/String;)Ljava/util/Locale; HSPLcom/android/internal/location/GpsNetInitiatedHandler$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V -PLcom/android/internal/location/GpsNetInitiatedHandler$2;->onCallStateChanged(ILjava/lang/String;)V +HPLcom/android/internal/location/GpsNetInitiatedHandler$2;->onCallStateChanged(ILjava/lang/String;)V HSPLcom/android/internal/location/GpsNetInitiatedHandler;-><init>(Landroid/content/Context;Landroid/location/INetInitiatedListener;Z)V HSPLcom/android/internal/location/GpsNetInitiatedHandler;->setEmergencyExtensionSeconds(I)V HSPLcom/android/internal/location/GpsNetInitiatedHandler;->setSuplEsEnabled(Z)V @@ -19458,7 +20309,7 @@ HPLcom/android/internal/location/ILocationProvider$Stub$Proxy;->setRequest(Lcom/ HSPLcom/android/internal/location/ILocationProvider$Stub;-><init>()V HSPLcom/android/internal/location/ILocationProvider$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/location/ILocationProvider; HSPLcom/android/internal/location/ILocationProviderManager$Stub;-><init>()V -PLcom/android/internal/location/ILocationProviderManager$Stub;->asBinder()Landroid/os/IBinder; +HPLcom/android/internal/location/ILocationProviderManager$Stub;->asBinder()Landroid/os/IBinder; HPLcom/android/internal/location/ILocationProviderManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HSPLcom/android/internal/location/ProviderProperties$1;-><init>()V HSPLcom/android/internal/location/ProviderProperties$1;->createFromParcel(Landroid/os/Parcel;)Lcom/android/internal/location/ProviderProperties; @@ -19468,21 +20319,21 @@ HSPLcom/android/internal/location/ProviderProperties;->writeToParcel(Landroid/os HSPLcom/android/internal/location/ProviderRequest$1;-><init>()V HSPLcom/android/internal/location/ProviderRequest;-><init>()V HPLcom/android/internal/location/ProviderRequest;->writeToParcel(Landroid/os/Parcel;I)V -PLcom/android/internal/location/gnssmetrics/GnssMetrics$GnssPowerMetrics;->buildProto()Lcom/android/internal/location/nano/GnssLogsProto$PowerMetrics; -PLcom/android/internal/location/gnssmetrics/GnssMetrics$GnssPowerMetrics;->getGpsBatteryStats()Landroid/os/connectivity/GpsBatteryStats; +HPLcom/android/internal/location/gnssmetrics/GnssMetrics$GnssPowerMetrics;->buildProto()Lcom/android/internal/location/nano/GnssLogsProto$PowerMetrics; +HPLcom/android/internal/location/gnssmetrics/GnssMetrics$GnssPowerMetrics;->getGpsBatteryStats()Landroid/os/connectivity/GpsBatteryStats; HPLcom/android/internal/location/gnssmetrics/GnssMetrics$GnssPowerMetrics;->reportSignalQuality([FI)V -PLcom/android/internal/location/gnssmetrics/GnssMetrics$Statistics;->addItem(D)V -PLcom/android/internal/location/gnssmetrics/GnssMetrics$Statistics;->getCount()I -PLcom/android/internal/location/gnssmetrics/GnssMetrics$Statistics;->getMean()D -PLcom/android/internal/location/gnssmetrics/GnssMetrics$Statistics;->getStandardDeviation()D +HPLcom/android/internal/location/gnssmetrics/GnssMetrics$Statistics;->addItem(D)V +HPLcom/android/internal/location/gnssmetrics/GnssMetrics$Statistics;->getCount()I +HPLcom/android/internal/location/gnssmetrics/GnssMetrics$Statistics;->getMean()D +HPLcom/android/internal/location/gnssmetrics/GnssMetrics$Statistics;->getStandardDeviation()D HSPLcom/android/internal/location/gnssmetrics/GnssMetrics$Statistics;->reset()V HSPLcom/android/internal/location/gnssmetrics/GnssMetrics;-><init>(Lcom/android/internal/app/IBatteryStats;)V -PLcom/android/internal/location/gnssmetrics/GnssMetrics;->dumpGnssMetricsAsProtoString()Ljava/lang/String; +HPLcom/android/internal/location/gnssmetrics/GnssMetrics;->dumpGnssMetricsAsProtoString()Ljava/lang/String; HPLcom/android/internal/location/gnssmetrics/GnssMetrics;->logCn0([FI)V -PLcom/android/internal/location/gnssmetrics/GnssMetrics;->logMissedReports(II)V -PLcom/android/internal/location/gnssmetrics/GnssMetrics;->logPositionAccuracyMeters(F)V -PLcom/android/internal/location/gnssmetrics/GnssMetrics;->logReceivedLocationStatus(Z)V -PLcom/android/internal/location/gnssmetrics/GnssMetrics;->logTimeToFirstFixMilliSecs(I)V +HPLcom/android/internal/location/gnssmetrics/GnssMetrics;->logMissedReports(II)V +HPLcom/android/internal/location/gnssmetrics/GnssMetrics;->logPositionAccuracyMeters(F)V +HPLcom/android/internal/location/gnssmetrics/GnssMetrics;->logReceivedLocationStatus(Z)V +HPLcom/android/internal/location/gnssmetrics/GnssMetrics;->logTimeToFirstFixMilliSecs(I)V HSPLcom/android/internal/location/gnssmetrics/GnssMetrics;->reset()V PLcom/android/internal/location/nano/GnssLogsProto$GnssLog;->clear()Lcom/android/internal/location/nano/GnssLogsProto$GnssLog; PLcom/android/internal/location/nano/GnssLogsProto$GnssLog;->computeSerializedSize()I @@ -19495,6 +20346,7 @@ HSPLcom/android/internal/logging/AndroidHandler$1;->format(Ljava/util/logging/Lo HSPLcom/android/internal/logging/AndroidHandler;->publish(Ljava/util/logging/LogRecord;)V HSPLcom/android/internal/logging/EventLogTags;->writeCommitSysConfigFile(Ljava/lang/String;J)V HSPLcom/android/internal/logging/MetricsLogger;-><init>()V +HSPLcom/android/internal/logging/MetricsLogger;->action(I)V HSPLcom/android/internal/logging/MetricsLogger;->action(II)V HSPLcom/android/internal/logging/MetricsLogger;->action(IZ)V HSPLcom/android/internal/logging/MetricsLogger;->action(Landroid/content/Context;II)V @@ -19510,11 +20362,12 @@ HSPLcom/android/internal/logging/MetricsLogger;->visible(I)V HSPLcom/android/internal/logging/MetricsLogger;->visible(Landroid/content/Context;I)V HSPLcom/android/internal/logging/MetricsLogger;->write(Landroid/metrics/LogMaker;)V HSPLcom/android/internal/net/INetworkWatchlistManager$Stub;-><init>()V -PLcom/android/internal/net/INetworkWatchlistManager$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/net/INetworkWatchlistManager; +HPLcom/android/internal/net/INetworkWatchlistManager$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/net/INetworkWatchlistManager; HSPLcom/android/internal/net/NetworkStatsFactory;-><init>()V HSPLcom/android/internal/net/NetworkStatsFactory;-><init>(Ljava/io/File;Z)V HSPLcom/android/internal/net/NetworkStatsFactory;->apply464xlatAdjustments(Landroid/net/NetworkStats;Landroid/net/NetworkStats;Z)V HPLcom/android/internal/net/NetworkStatsFactory;->augmentWithStackedInterfaces([Ljava/lang/String;)[Ljava/lang/String; +HPLcom/android/internal/net/NetworkStatsFactory;->noteStackedIface(Ljava/lang/String;Ljava/lang/String;)V HSPLcom/android/internal/net/NetworkStatsFactory;->readBpfNetworkStatsDev()Landroid/net/NetworkStats; HSPLcom/android/internal/net/NetworkStatsFactory;->readNetworkStatsDetail(I[Ljava/lang/String;ILandroid/net/NetworkStats;)Landroid/net/NetworkStats; HSPLcom/android/internal/net/NetworkStatsFactory;->readNetworkStatsDetailInternal(I[Ljava/lang/String;ILandroid/net/NetworkStats;)Landroid/net/NetworkStats; @@ -19543,6 +20396,7 @@ HSPLcom/android/internal/os/AtomicDirectory;->startRead()Ljava/io/File; HSPLcom/android/internal/os/AtomicDirectory;->startWrite()Ljava/io/File; HSPLcom/android/internal/os/AtomicDirectory;->throwIfSomeFilesOpen()V HSPLcom/android/internal/os/AtomicFile;-><init>(Ljava/io/File;)V +HSPLcom/android/internal/os/AtomicFile;->delete()V HSPLcom/android/internal/os/AtomicFile;->exists()Z HSPLcom/android/internal/os/AtomicFile;->finishWrite(Ljava/io/FileOutputStream;)V HSPLcom/android/internal/os/AtomicFile;->openRead()Ljava/io/FileInputStream; @@ -19554,7 +20408,7 @@ HSPLcom/android/internal/os/BackgroundThread;->get()Lcom/android/internal/os/Bac HSPLcom/android/internal/os/BackgroundThread;->getExecutor()Ljava/util/concurrent/Executor; HSPLcom/android/internal/os/BackgroundThread;->getHandler()Landroid/os/Handler; HSPLcom/android/internal/os/BatterySipper$DrainType;-><init>(Ljava/lang/String;I)V -PLcom/android/internal/os/BatterySipper$DrainType;->values()[Lcom/android/internal/os/BatterySipper$DrainType; +HPLcom/android/internal/os/BatterySipper$DrainType;->values()[Lcom/android/internal/os/BatterySipper$DrainType; HSPLcom/android/internal/os/BatterySipper;->add(Lcom/android/internal/os/BatterySipper;)V HSPLcom/android/internal/os/BatterySipper;->compareTo(Lcom/android/internal/os/BatterySipper;)I HSPLcom/android/internal/os/BatterySipper;->compareTo(Ljava/lang/Object;)I @@ -19563,6 +20417,7 @@ HSPLcom/android/internal/os/BatterySipper;->getUid()I HSPLcom/android/internal/os/BatterySipper;->sumPower()D HSPLcom/android/internal/os/BatteryStatsHelper$1;->compare(Lcom/android/internal/os/BatterySipper;Lcom/android/internal/os/BatterySipper;)I HSPLcom/android/internal/os/BatteryStatsHelper$1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I +HSPLcom/android/internal/os/BatteryStatsHelper;-><init>(Landroid/content/Context;Z)V HSPLcom/android/internal/os/BatteryStatsHelper;-><init>(Landroid/content/Context;ZZ)V HSPLcom/android/internal/os/BatteryStatsHelper;->addAmbientDisplayUsage()V HSPLcom/android/internal/os/BatteryStatsHelper;->addBluetoothUsage()V @@ -19575,17 +20430,20 @@ HSPLcom/android/internal/os/BatteryStatsHelper;->addUserUsage()V HSPLcom/android/internal/os/BatteryStatsHelper;->addWiFiUsage()V HSPLcom/android/internal/os/BatteryStatsHelper;->checkHasBluetoothPowerReporting(Landroid/os/BatteryStats;Lcom/android/internal/os/PowerProfile;)Z HSPLcom/android/internal/os/BatteryStatsHelper;->checkHasWifiPowerReporting(Landroid/os/BatteryStats;Lcom/android/internal/os/PowerProfile;)Z -PLcom/android/internal/os/BatteryStatsHelper;->checkWifiOnly(Landroid/content/Context;)Z +HPLcom/android/internal/os/BatteryStatsHelper;->checkWifiOnly(Landroid/content/Context;)Z +HSPLcom/android/internal/os/BatteryStatsHelper;->clearStats()V HSPLcom/android/internal/os/BatteryStatsHelper;->convertMsToUs(J)J HSPLcom/android/internal/os/BatteryStatsHelper;->convertUsToMs(J)J -PLcom/android/internal/os/BatteryStatsHelper;->create(Landroid/os/BatteryStats;)V -PLcom/android/internal/os/BatteryStatsHelper;->getComputedPower()D +HPLcom/android/internal/os/BatteryStatsHelper;->create(Landroid/os/BatteryStats;)V +HSPLcom/android/internal/os/BatteryStatsHelper;->create(Landroid/os/Bundle;)V +HPLcom/android/internal/os/BatteryStatsHelper;->getComputedPower()D HSPLcom/android/internal/os/BatteryStatsHelper;->getForegroundActivityTotalTimeUs(Landroid/os/BatteryStats$Uid;J)J -PLcom/android/internal/os/BatteryStatsHelper;->getMaxDrainedPower()D -PLcom/android/internal/os/BatteryStatsHelper;->getMinDrainedPower()D -PLcom/android/internal/os/BatteryStatsHelper;->getPowerProfile()Lcom/android/internal/os/PowerProfile; +HPLcom/android/internal/os/BatteryStatsHelper;->getMaxDrainedPower()D +HPLcom/android/internal/os/BatteryStatsHelper;->getMinDrainedPower()D +HPLcom/android/internal/os/BatteryStatsHelper;->getPowerProfile()Lcom/android/internal/os/PowerProfile; HSPLcom/android/internal/os/BatteryStatsHelper;->getProcessForegroundTimeMs(Landroid/os/BatteryStats$Uid;I)J HSPLcom/android/internal/os/BatteryStatsHelper;->getStats()Landroid/os/BatteryStats; +HSPLcom/android/internal/os/BatteryStatsHelper;->getStats(Lcom/android/internal/app/IBatteryStats;)Lcom/android/internal/os/BatteryStatsImpl; HSPLcom/android/internal/os/BatteryStatsHelper;->getTotalPower()D HSPLcom/android/internal/os/BatteryStatsHelper;->getUsageList()Ljava/util/List; HSPLcom/android/internal/os/BatteryStatsHelper;->isTypeService(Lcom/android/internal/os/BatterySipper;)Z @@ -19595,6 +20453,7 @@ HSPLcom/android/internal/os/BatteryStatsHelper;->processAppUsage(Landroid/util/S HSPLcom/android/internal/os/BatteryStatsHelper;->refreshStats(II)V HSPLcom/android/internal/os/BatteryStatsHelper;->refreshStats(ILandroid/util/SparseArray;)V HSPLcom/android/internal/os/BatteryStatsHelper;->refreshStats(ILandroid/util/SparseArray;JJ)V +HSPLcom/android/internal/os/BatteryStatsHelper;->refreshStats(ILjava/util/List;)V HSPLcom/android/internal/os/BatteryStatsHelper;->removeHiddenBatterySippers(Ljava/util/List;)D HSPLcom/android/internal/os/BatteryStatsHelper;->shouldHideSipper(Lcom/android/internal/os/BatterySipper;)Z HSPLcom/android/internal/os/BatteryStatsHelper;->smearScreenBatterySipper(Ljava/util/List;Lcom/android/internal/os/BatterySipper;)V @@ -19613,12 +20472,15 @@ HSPLcom/android/internal/os/BatteryStatsHistory;->resetAllFiles()V HSPLcom/android/internal/os/BatteryStatsHistory;->startIteratingHistory()Z HSPLcom/android/internal/os/BatteryStatsHistory;->writeToParcel(Landroid/os/Parcel;)V HSPLcom/android/internal/os/BatteryStatsImpl$1;-><init>(Lcom/android/internal/os/BatteryStatsImpl;)V -PLcom/android/internal/os/BatteryStatsImpl$1;->run()V +HPLcom/android/internal/os/BatteryStatsImpl$1;->run()V HSPLcom/android/internal/os/BatteryStatsImpl$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V HSPLcom/android/internal/os/BatteryStatsImpl$3;->run()V HSPLcom/android/internal/os/BatteryStatsImpl$5;->run()V HSPLcom/android/internal/os/BatteryStatsImpl$6;-><init>()V -PLcom/android/internal/os/BatteryStatsImpl$BatchTimer;->abortLastDuration(Lcom/android/internal/os/BatteryStatsImpl;)V +HSPLcom/android/internal/os/BatteryStatsImpl$6;->createFromParcel(Landroid/os/Parcel;)Lcom/android/internal/os/BatteryStatsImpl; +HSPLcom/android/internal/os/BatteryStatsImpl$6;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLcom/android/internal/os/BatteryStatsImpl$BatchTimer;-><init>(Lcom/android/internal/os/BatteryStatsImpl$Clocks;Lcom/android/internal/os/BatteryStatsImpl$Uid;ILcom/android/internal/os/BatteryStatsImpl$TimeBase;Landroid/os/Parcel;)V +HPLcom/android/internal/os/BatteryStatsImpl$BatchTimer;->abortLastDuration(Lcom/android/internal/os/BatteryStatsImpl;)V HPLcom/android/internal/os/BatteryStatsImpl$BatchTimer;->addDuration(Lcom/android/internal/os/BatteryStatsImpl;J)V HSPLcom/android/internal/os/BatteryStatsImpl$BatchTimer;->computeCurrentCountLocked()I HSPLcom/android/internal/os/BatteryStatsImpl$BatchTimer;->computeRunTimeLocked(J)J @@ -19627,24 +20489,25 @@ HSPLcom/android/internal/os/BatteryStatsImpl$BatchTimer;->onTimeStopped(JJJ)V HSPLcom/android/internal/os/BatteryStatsImpl$BatchTimer;->reset(Z)Z HPLcom/android/internal/os/BatteryStatsImpl$BatchTimer;->writeToParcel(Landroid/os/Parcel;J)V HSPLcom/android/internal/os/BatteryStatsImpl$BluetoothActivityInfoCache;-><init>(Lcom/android/internal/os/BatteryStatsImpl;Lcom/android/internal/os/BatteryStatsImpl$1;)V -PLcom/android/internal/os/BatteryStatsImpl$BluetoothActivityInfoCache;->set(Landroid/bluetooth/BluetoothActivityEnergyInfo;)V +HPLcom/android/internal/os/BatteryStatsImpl$BluetoothActivityInfoCache;->set(Landroid/bluetooth/BluetoothActivityEnergyInfo;)V HSPLcom/android/internal/os/BatteryStatsImpl$Constants;-><init>(Lcom/android/internal/os/BatteryStatsImpl;Landroid/os/Handler;)V HSPLcom/android/internal/os/BatteryStatsImpl$Constants;->updateConstants()V HSPLcom/android/internal/os/BatteryStatsImpl$Constants;->updateKernelUidReadersThrottleTime(JJ)V HSPLcom/android/internal/os/BatteryStatsImpl$Constants;->updateTrackCpuTimesByProcStateLocked(ZZ)V HSPLcom/android/internal/os/BatteryStatsImpl$ControllerActivityCounterImpl;-><init>(Lcom/android/internal/os/BatteryStatsImpl$TimeBase;I)V +HSPLcom/android/internal/os/BatteryStatsImpl$ControllerActivityCounterImpl;-><init>(Lcom/android/internal/os/BatteryStatsImpl$TimeBase;ILandroid/os/Parcel;)V HPLcom/android/internal/os/BatteryStatsImpl$ControllerActivityCounterImpl;->detach()V HSPLcom/android/internal/os/BatteryStatsImpl$ControllerActivityCounterImpl;->getIdleTimeCounter()Landroid/os/BatteryStats$LongCounter; HSPLcom/android/internal/os/BatteryStatsImpl$ControllerActivityCounterImpl;->getIdleTimeCounter()Lcom/android/internal/os/BatteryStatsImpl$LongSamplingCounter; -PLcom/android/internal/os/BatteryStatsImpl$ControllerActivityCounterImpl;->getMonitoredRailChargeConsumedMaMs()Landroid/os/BatteryStats$LongCounter; +HPLcom/android/internal/os/BatteryStatsImpl$ControllerActivityCounterImpl;->getMonitoredRailChargeConsumedMaMs()Landroid/os/BatteryStats$LongCounter; HSPLcom/android/internal/os/BatteryStatsImpl$ControllerActivityCounterImpl;->getMonitoredRailChargeConsumedMaMs()Lcom/android/internal/os/BatteryStatsImpl$LongSamplingCounter; HSPLcom/android/internal/os/BatteryStatsImpl$ControllerActivityCounterImpl;->getPowerCounter()Landroid/os/BatteryStats$LongCounter; HSPLcom/android/internal/os/BatteryStatsImpl$ControllerActivityCounterImpl;->getPowerCounter()Lcom/android/internal/os/BatteryStatsImpl$LongSamplingCounter; HSPLcom/android/internal/os/BatteryStatsImpl$ControllerActivityCounterImpl;->getRxTimeCounter()Landroid/os/BatteryStats$LongCounter; HSPLcom/android/internal/os/BatteryStatsImpl$ControllerActivityCounterImpl;->getRxTimeCounter()Lcom/android/internal/os/BatteryStatsImpl$LongSamplingCounter; -PLcom/android/internal/os/BatteryStatsImpl$ControllerActivityCounterImpl;->getScanTimeCounter()Landroid/os/BatteryStats$LongCounter; +HPLcom/android/internal/os/BatteryStatsImpl$ControllerActivityCounterImpl;->getScanTimeCounter()Landroid/os/BatteryStats$LongCounter; HSPLcom/android/internal/os/BatteryStatsImpl$ControllerActivityCounterImpl;->getScanTimeCounter()Lcom/android/internal/os/BatteryStatsImpl$LongSamplingCounter; -PLcom/android/internal/os/BatteryStatsImpl$ControllerActivityCounterImpl;->getSleepTimeCounter()Landroid/os/BatteryStats$LongCounter; +HPLcom/android/internal/os/BatteryStatsImpl$ControllerActivityCounterImpl;->getSleepTimeCounter()Landroid/os/BatteryStats$LongCounter; HSPLcom/android/internal/os/BatteryStatsImpl$ControllerActivityCounterImpl;->getSleepTimeCounter()Lcom/android/internal/os/BatteryStatsImpl$LongSamplingCounter; HSPLcom/android/internal/os/BatteryStatsImpl$ControllerActivityCounterImpl;->getTxTimeCounters()[Landroid/os/BatteryStats$LongCounter; HSPLcom/android/internal/os/BatteryStatsImpl$ControllerActivityCounterImpl;->getTxTimeCounters()[Lcom/android/internal/os/BatteryStatsImpl$LongSamplingCounter; @@ -19653,16 +20516,19 @@ HSPLcom/android/internal/os/BatteryStatsImpl$ControllerActivityCounterImpl;->res HSPLcom/android/internal/os/BatteryStatsImpl$ControllerActivityCounterImpl;->writeSummaryToParcel(Landroid/os/Parcel;)V HPLcom/android/internal/os/BatteryStatsImpl$ControllerActivityCounterImpl;->writeToParcel(Landroid/os/Parcel;I)V HSPLcom/android/internal/os/BatteryStatsImpl$Counter;-><init>(Lcom/android/internal/os/BatteryStatsImpl$TimeBase;)V +HSPLcom/android/internal/os/BatteryStatsImpl$Counter;-><init>(Lcom/android/internal/os/BatteryStatsImpl$TimeBase;Landroid/os/Parcel;)V HSPLcom/android/internal/os/BatteryStatsImpl$Counter;->addAtomic(I)V HSPLcom/android/internal/os/BatteryStatsImpl$Counter;->detach()V HPLcom/android/internal/os/BatteryStatsImpl$Counter;->getCountLocked(I)I HSPLcom/android/internal/os/BatteryStatsImpl$Counter;->onTimeStarted(JJJ)V HSPLcom/android/internal/os/BatteryStatsImpl$Counter;->onTimeStopped(JJJ)V +HSPLcom/android/internal/os/BatteryStatsImpl$Counter;->readCounterFromParcel(Lcom/android/internal/os/BatteryStatsImpl$TimeBase;Landroid/os/Parcel;)Lcom/android/internal/os/BatteryStatsImpl$Counter; HSPLcom/android/internal/os/BatteryStatsImpl$Counter;->readSummaryFromParcelLocked(Landroid/os/Parcel;)V HSPLcom/android/internal/os/BatteryStatsImpl$Counter;->reset(Z)Z HSPLcom/android/internal/os/BatteryStatsImpl$Counter;->stepAtomic()V HSPLcom/android/internal/os/BatteryStatsImpl$Counter;->writeSummaryFromParcelLocked(Landroid/os/Parcel;)V HPLcom/android/internal/os/BatteryStatsImpl$Counter;->writeToParcel(Landroid/os/Parcel;)V +HSPLcom/android/internal/os/BatteryStatsImpl$DualTimer;-><init>(Lcom/android/internal/os/BatteryStatsImpl$Clocks;Lcom/android/internal/os/BatteryStatsImpl$Uid;ILjava/util/ArrayList;Lcom/android/internal/os/BatteryStatsImpl$TimeBase;Lcom/android/internal/os/BatteryStatsImpl$TimeBase;Landroid/os/Parcel;)V HSPLcom/android/internal/os/BatteryStatsImpl$DualTimer;->detach()V HPLcom/android/internal/os/BatteryStatsImpl$DualTimer;->getSubTimer()Landroid/os/BatteryStats$Timer; HPLcom/android/internal/os/BatteryStatsImpl$DualTimer;->getSubTimer()Lcom/android/internal/os/BatteryStatsImpl$DurationTimer; @@ -19671,7 +20537,8 @@ HSPLcom/android/internal/os/BatteryStatsImpl$DualTimer;->reset(Z)Z HSPLcom/android/internal/os/BatteryStatsImpl$DualTimer;->startRunningLocked(J)V HSPLcom/android/internal/os/BatteryStatsImpl$DualTimer;->stopRunningLocked(J)V HSPLcom/android/internal/os/BatteryStatsImpl$DualTimer;->writeSummaryFromParcelLocked(Landroid/os/Parcel;J)V -PLcom/android/internal/os/BatteryStatsImpl$DualTimer;->writeToParcel(Landroid/os/Parcel;J)V +HPLcom/android/internal/os/BatteryStatsImpl$DualTimer;->writeToParcel(Landroid/os/Parcel;J)V +HSPLcom/android/internal/os/BatteryStatsImpl$DurationTimer;-><init>(Lcom/android/internal/os/BatteryStatsImpl$Clocks;Lcom/android/internal/os/BatteryStatsImpl$Uid;ILjava/util/ArrayList;Lcom/android/internal/os/BatteryStatsImpl$TimeBase;Landroid/os/Parcel;)V HSPLcom/android/internal/os/BatteryStatsImpl$DurationTimer;->getCurrentDurationMsLocked(J)J HSPLcom/android/internal/os/BatteryStatsImpl$DurationTimer;->getMaxDurationMsLocked(J)J HSPLcom/android/internal/os/BatteryStatsImpl$DurationTimer;->getTotalDurationMsLocked(J)J @@ -19684,6 +20551,7 @@ HSPLcom/android/internal/os/BatteryStatsImpl$DurationTimer;->stopRunningLocked(J HSPLcom/android/internal/os/BatteryStatsImpl$DurationTimer;->writeSummaryFromParcelLocked(Landroid/os/Parcel;J)V HPLcom/android/internal/os/BatteryStatsImpl$DurationTimer;->writeToParcel(Landroid/os/Parcel;J)V HSPLcom/android/internal/os/BatteryStatsImpl$LongSamplingCounter;-><init>(Lcom/android/internal/os/BatteryStatsImpl$TimeBase;)V +HSPLcom/android/internal/os/BatteryStatsImpl$LongSamplingCounter;-><init>(Lcom/android/internal/os/BatteryStatsImpl$TimeBase;Landroid/os/Parcel;)V HSPLcom/android/internal/os/BatteryStatsImpl$LongSamplingCounter;->addCountLocked(J)V HSPLcom/android/internal/os/BatteryStatsImpl$LongSamplingCounter;->addCountLocked(JZ)V HSPLcom/android/internal/os/BatteryStatsImpl$LongSamplingCounter;->detach()V @@ -19702,6 +20570,7 @@ HSPLcom/android/internal/os/BatteryStatsImpl$LongSamplingCounterArray;->getCount HSPLcom/android/internal/os/BatteryStatsImpl$LongSamplingCounterArray;->getSize()I HSPLcom/android/internal/os/BatteryStatsImpl$LongSamplingCounterArray;->onTimeStarted(JJJ)V HSPLcom/android/internal/os/BatteryStatsImpl$LongSamplingCounterArray;->onTimeStopped(JJJ)V +HSPLcom/android/internal/os/BatteryStatsImpl$LongSamplingCounterArray;->readFromParcel(Landroid/os/Parcel;Lcom/android/internal/os/BatteryStatsImpl$TimeBase;)Lcom/android/internal/os/BatteryStatsImpl$LongSamplingCounterArray; HSPLcom/android/internal/os/BatteryStatsImpl$LongSamplingCounterArray;->readSummaryFromParcelLocked(Landroid/os/Parcel;Lcom/android/internal/os/BatteryStatsImpl$TimeBase;)Lcom/android/internal/os/BatteryStatsImpl$LongSamplingCounterArray; HSPLcom/android/internal/os/BatteryStatsImpl$LongSamplingCounterArray;->reset(Z)Z HSPLcom/android/internal/os/BatteryStatsImpl$LongSamplingCounterArray;->writeSummaryToParcelLocked(Landroid/os/Parcel;Lcom/android/internal/os/BatteryStatsImpl$LongSamplingCounterArray;)V @@ -19709,9 +20578,11 @@ HSPLcom/android/internal/os/BatteryStatsImpl$MyHandler;-><init>(Lcom/android/int HSPLcom/android/internal/os/BatteryStatsImpl$MyHandler;->handleMessage(Landroid/os/Message;)V HSPLcom/android/internal/os/BatteryStatsImpl$OverflowArrayMap;->add(Ljava/lang/String;Ljava/lang/Object;)V HSPLcom/android/internal/os/BatteryStatsImpl$OverflowArrayMap;->cleanup()V +HSPLcom/android/internal/os/BatteryStatsImpl$OverflowArrayMap;->clear()V HSPLcom/android/internal/os/BatteryStatsImpl$OverflowArrayMap;->getMap()Landroid/util/ArrayMap; HSPLcom/android/internal/os/BatteryStatsImpl$OverflowArrayMap;->startObject(Ljava/lang/String;)Ljava/lang/Object; HSPLcom/android/internal/os/BatteryStatsImpl$OverflowArrayMap;->stopObject(Ljava/lang/String;)Ljava/lang/Object; +HSPLcom/android/internal/os/BatteryStatsImpl$SamplingTimer;-><init>(Lcom/android/internal/os/BatteryStatsImpl$Clocks;Lcom/android/internal/os/BatteryStatsImpl$TimeBase;Landroid/os/Parcel;)V HPLcom/android/internal/os/BatteryStatsImpl$SamplingTimer;->add(JI)V HSPLcom/android/internal/os/BatteryStatsImpl$SamplingTimer;->computeCurrentCountLocked()I HSPLcom/android/internal/os/BatteryStatsImpl$SamplingTimer;->computeRunTimeLocked(J)J @@ -19723,6 +20594,7 @@ HSPLcom/android/internal/os/BatteryStatsImpl$SamplingTimer;->setUpdateVersion(I) HSPLcom/android/internal/os/BatteryStatsImpl$SamplingTimer;->update(JI)V HPLcom/android/internal/os/BatteryStatsImpl$SamplingTimer;->writeToParcel(Landroid/os/Parcel;J)V HSPLcom/android/internal/os/BatteryStatsImpl$StopwatchTimer;-><init>(Lcom/android/internal/os/BatteryStatsImpl$Clocks;Lcom/android/internal/os/BatteryStatsImpl$Uid;ILjava/util/ArrayList;Lcom/android/internal/os/BatteryStatsImpl$TimeBase;)V +HSPLcom/android/internal/os/BatteryStatsImpl$StopwatchTimer;-><init>(Lcom/android/internal/os/BatteryStatsImpl$Clocks;Lcom/android/internal/os/BatteryStatsImpl$Uid;ILjava/util/ArrayList;Lcom/android/internal/os/BatteryStatsImpl$TimeBase;Landroid/os/Parcel;)V HSPLcom/android/internal/os/BatteryStatsImpl$StopwatchTimer;->computeCurrentCountLocked()I HSPLcom/android/internal/os/BatteryStatsImpl$StopwatchTimer;->computeRunTimeLocked(J)J HSPLcom/android/internal/os/BatteryStatsImpl$StopwatchTimer;->detach()V @@ -19746,12 +20618,14 @@ HSPLcom/android/internal/os/BatteryStatsImpl$TimeBase;->getRealtime(J)J HSPLcom/android/internal/os/BatteryStatsImpl$TimeBase;->getUptime(J)J HSPLcom/android/internal/os/BatteryStatsImpl$TimeBase;->init(JJ)V HSPLcom/android/internal/os/BatteryStatsImpl$TimeBase;->isRunning()Z +HSPLcom/android/internal/os/BatteryStatsImpl$TimeBase;->readFromParcel(Landroid/os/Parcel;)V HSPLcom/android/internal/os/BatteryStatsImpl$TimeBase;->readSummaryFromParcel(Landroid/os/Parcel;)V HSPLcom/android/internal/os/BatteryStatsImpl$TimeBase;->remove(Lcom/android/internal/os/BatteryStatsImpl$TimeBaseObs;)V HSPLcom/android/internal/os/BatteryStatsImpl$TimeBase;->setRunning(ZJJ)Z HSPLcom/android/internal/os/BatteryStatsImpl$TimeBase;->writeSummaryToParcel(Landroid/os/Parcel;JJ)V HPLcom/android/internal/os/BatteryStatsImpl$TimeBase;->writeToParcel(Landroid/os/Parcel;JJ)V HSPLcom/android/internal/os/BatteryStatsImpl$Timer;-><init>(Lcom/android/internal/os/BatteryStatsImpl$Clocks;ILcom/android/internal/os/BatteryStatsImpl$TimeBase;)V +HSPLcom/android/internal/os/BatteryStatsImpl$Timer;-><init>(Lcom/android/internal/os/BatteryStatsImpl$Clocks;ILcom/android/internal/os/BatteryStatsImpl$TimeBase;Landroid/os/Parcel;)V HSPLcom/android/internal/os/BatteryStatsImpl$Timer;->detach()V HPLcom/android/internal/os/BatteryStatsImpl$Timer;->getCountLocked(I)I HSPLcom/android/internal/os/BatteryStatsImpl$Timer;->getTimeSinceMarkLocked(J)J @@ -19773,21 +20647,25 @@ HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv;->getStartTimeToNowLoc HPLcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv;->getStarts(I)I HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv;->onTimeStarted(JJJ)V HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv;->onTimeStopped(JJJ)V +HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv;->readFromParcelLocked(Landroid/os/Parcel;)V HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv;->startLaunchedLocked()V HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv;->startRunningLocked()V HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv;->stopLaunchedLocked()V HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv;->stopRunningLocked()V HPLcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv;->writeToParcelLocked(Landroid/os/Parcel;)V +HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Pkg;-><init>(Lcom/android/internal/os/BatteryStatsImpl;)V HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Pkg;->detach()V HPLcom/android/internal/os/BatteryStatsImpl$Uid$Pkg;->getServiceStats()Landroid/util/ArrayMap; HPLcom/android/internal/os/BatteryStatsImpl$Uid$Pkg;->getWakeupAlarmStats()Landroid/util/ArrayMap; HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Pkg;->noteWakeupAlarmLocked(Ljava/lang/String;)V HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Pkg;->onTimeStarted(JJJ)V HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Pkg;->onTimeStopped(JJJ)V +HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Pkg;->readFromParcelLocked(Landroid/os/Parcel;)V HPLcom/android/internal/os/BatteryStatsImpl$Uid$Pkg;->writeToParcelLocked(Landroid/os/Parcel;)V +HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Proc;-><init>(Lcom/android/internal/os/BatteryStatsImpl;Ljava/lang/String;)V HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Proc;->addCpuTimeLocked(II)V HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Proc;->addCpuTimeLocked(IIZ)V -PLcom/android/internal/os/BatteryStatsImpl$Uid$Proc;->addExcessiveCpu(JJ)V +HPLcom/android/internal/os/BatteryStatsImpl$Uid$Proc;->addExcessiveCpu(JJ)V HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Proc;->addForegroundTimeLocked(J)V HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Proc;->detach()V HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Proc;->getForegroundTime(I)J @@ -19804,14 +20682,18 @@ HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Proc;->onTimeStopped(JJJ)V HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Proc;->readExcessivePowerFromParcelLocked(Landroid/os/Parcel;)V HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Proc;->writeExcessivePowerToParcelLocked(Landroid/os/Parcel;)V HPLcom/android/internal/os/BatteryStatsImpl$Uid$Proc;->writeToParcelLocked(Landroid/os/Parcel;)V +HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Sensor;-><init>(Lcom/android/internal/os/BatteryStatsImpl;Lcom/android/internal/os/BatteryStatsImpl$Uid;I)V HPLcom/android/internal/os/BatteryStatsImpl$Uid$Sensor;->getSensorBackgroundTime()Landroid/os/BatteryStats$Timer; -PLcom/android/internal/os/BatteryStatsImpl$Uid$Sensor;->getSensorBackgroundTime()Lcom/android/internal/os/BatteryStatsImpl$Timer; +HPLcom/android/internal/os/BatteryStatsImpl$Uid$Sensor;->getSensorBackgroundTime()Lcom/android/internal/os/BatteryStatsImpl$Timer; HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Sensor;->getSensorTime()Landroid/os/BatteryStats$Timer; HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Sensor;->getSensorTime()Lcom/android/internal/os/BatteryStatsImpl$Timer; +HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Sensor;->readTimersFromParcel(Lcom/android/internal/os/BatteryStatsImpl$TimeBase;Lcom/android/internal/os/BatteryStatsImpl$TimeBase;Landroid/os/Parcel;)Lcom/android/internal/os/BatteryStatsImpl$DualTimer; HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Sensor;->reset()Z HPLcom/android/internal/os/BatteryStatsImpl$Uid$Sensor;->writeToParcelLocked(Landroid/os/Parcel;J)V +HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Wakelock;-><init>(Lcom/android/internal/os/BatteryStatsImpl;Lcom/android/internal/os/BatteryStatsImpl$Uid;)V HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Wakelock;->getWakeTime(I)Landroid/os/BatteryStats$Timer; HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Wakelock;->getWakeTime(I)Lcom/android/internal/os/BatteryStatsImpl$Timer; +HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Wakelock;->readFromParcelLocked(Lcom/android/internal/os/BatteryStatsImpl$TimeBase;Lcom/android/internal/os/BatteryStatsImpl$TimeBase;Lcom/android/internal/os/BatteryStatsImpl$TimeBase;Landroid/os/Parcel;)V HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Wakelock;->reset()Z HPLcom/android/internal/os/BatteryStatsImpl$Uid$Wakelock;->writeToParcelLocked(Landroid/os/Parcel;J)V HSPLcom/android/internal/os/BatteryStatsImpl$Uid;-><init>(Lcom/android/internal/os/BatteryStatsImpl;I)V @@ -19832,22 +20714,22 @@ HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->createVibratorOnTimerLocked() HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->createVideoTurnedOnTimerLocked()Lcom/android/internal/os/BatteryStatsImpl$StopwatchTimer; HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->detachFromTimeBase()V HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getAggregatedPartialWakelockTimer()Landroid/os/BatteryStats$Timer; -PLcom/android/internal/os/BatteryStatsImpl$Uid;->getAggregatedPartialWakelockTimer()Lcom/android/internal/os/BatteryStatsImpl$Timer; +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getAggregatedPartialWakelockTimer()Lcom/android/internal/os/BatteryStatsImpl$Timer; HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->getAudioTurnedOnTimer()Landroid/os/BatteryStats$Timer; HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->getAudioTurnedOnTimer()Lcom/android/internal/os/BatteryStatsImpl$Timer; HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->getBluetoothControllerActivity()Landroid/os/BatteryStats$ControllerActivityCounter; -PLcom/android/internal/os/BatteryStatsImpl$Uid;->getBluetoothScanBackgroundTimer()Landroid/os/BatteryStats$Timer; -PLcom/android/internal/os/BatteryStatsImpl$Uid;->getBluetoothScanBackgroundTimer()Lcom/android/internal/os/BatteryStatsImpl$Timer; -PLcom/android/internal/os/BatteryStatsImpl$Uid;->getBluetoothScanResultBgCounter()Landroid/os/BatteryStats$Counter; -PLcom/android/internal/os/BatteryStatsImpl$Uid;->getBluetoothScanResultBgCounter()Lcom/android/internal/os/BatteryStatsImpl$Counter; -PLcom/android/internal/os/BatteryStatsImpl$Uid;->getBluetoothScanResultCounter()Landroid/os/BatteryStats$Counter; -PLcom/android/internal/os/BatteryStatsImpl$Uid;->getBluetoothScanResultCounter()Lcom/android/internal/os/BatteryStatsImpl$Counter; +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getBluetoothScanBackgroundTimer()Landroid/os/BatteryStats$Timer; +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getBluetoothScanBackgroundTimer()Lcom/android/internal/os/BatteryStatsImpl$Timer; +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getBluetoothScanResultBgCounter()Landroid/os/BatteryStats$Counter; +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getBluetoothScanResultBgCounter()Lcom/android/internal/os/BatteryStatsImpl$Counter; +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getBluetoothScanResultCounter()Landroid/os/BatteryStats$Counter; +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getBluetoothScanResultCounter()Lcom/android/internal/os/BatteryStatsImpl$Counter; HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getBluetoothScanTimer()Landroid/os/BatteryStats$Timer; -PLcom/android/internal/os/BatteryStatsImpl$Uid;->getBluetoothScanTimer()Lcom/android/internal/os/BatteryStatsImpl$Timer; -PLcom/android/internal/os/BatteryStatsImpl$Uid;->getBluetoothUnoptimizedScanBackgroundTimer()Landroid/os/BatteryStats$Timer; -PLcom/android/internal/os/BatteryStatsImpl$Uid;->getBluetoothUnoptimizedScanBackgroundTimer()Lcom/android/internal/os/BatteryStatsImpl$Timer; -PLcom/android/internal/os/BatteryStatsImpl$Uid;->getBluetoothUnoptimizedScanTimer()Landroid/os/BatteryStats$Timer; -PLcom/android/internal/os/BatteryStatsImpl$Uid;->getBluetoothUnoptimizedScanTimer()Lcom/android/internal/os/BatteryStatsImpl$Timer; +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getBluetoothScanTimer()Lcom/android/internal/os/BatteryStatsImpl$Timer; +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getBluetoothUnoptimizedScanBackgroundTimer()Landroid/os/BatteryStats$Timer; +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getBluetoothUnoptimizedScanBackgroundTimer()Lcom/android/internal/os/BatteryStatsImpl$Timer; +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getBluetoothUnoptimizedScanTimer()Landroid/os/BatteryStats$Timer; +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getBluetoothUnoptimizedScanTimer()Lcom/android/internal/os/BatteryStatsImpl$Timer; HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->getCameraTurnedOnTimer()Landroid/os/BatteryStats$Timer; HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->getCameraTurnedOnTimer()Lcom/android/internal/os/BatteryStatsImpl$Timer; HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->getCpuActiveTime()J @@ -19860,7 +20742,7 @@ HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->getFlashlightTurnedOnTimer()L HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->getForegroundActivityTimer()Landroid/os/BatteryStats$Timer; HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->getForegroundActivityTimer()Lcom/android/internal/os/BatteryStatsImpl$Timer; HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getForegroundServiceTimer()Landroid/os/BatteryStats$Timer; -PLcom/android/internal/os/BatteryStatsImpl$Uid;->getForegroundServiceTimer()Lcom/android/internal/os/BatteryStatsImpl$Timer; +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getForegroundServiceTimer()Lcom/android/internal/os/BatteryStatsImpl$Timer; HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getFullWifiLockTime(JI)J HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getJobCompletionStats()Landroid/util/ArrayMap; HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getJobStats()Landroid/util/ArrayMap; @@ -19869,19 +20751,19 @@ HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->getMobileRadioActiveTime(I)J HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getMobileRadioApWakeupCount(I)J HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getModemControllerActivity()Landroid/os/BatteryStats$ControllerActivityCounter; HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getMulticastWakelockStats()Landroid/os/BatteryStats$Timer; -PLcom/android/internal/os/BatteryStatsImpl$Uid;->getMulticastWakelockStats()Lcom/android/internal/os/BatteryStatsImpl$Timer; +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getMulticastWakelockStats()Lcom/android/internal/os/BatteryStatsImpl$Timer; HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->getNetworkActivityBytes(II)J HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->getNetworkActivityPackets(II)J -PLcom/android/internal/os/BatteryStatsImpl$Uid;->getOrCreateBluetoothControllerActivityLocked()Lcom/android/internal/os/BatteryStatsImpl$ControllerActivityCounterImpl; +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getOrCreateBluetoothControllerActivityLocked()Lcom/android/internal/os/BatteryStatsImpl$ControllerActivityCounterImpl; HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getOrCreateModemControllerActivityLocked()Lcom/android/internal/os/BatteryStatsImpl$ControllerActivityCounterImpl; HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->getOrCreateWifiControllerActivityLocked()Lcom/android/internal/os/BatteryStatsImpl$ControllerActivityCounterImpl; HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getPackageStats()Landroid/util/ArrayMap; HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->getPackageStatsLocked(Ljava/lang/String;)Lcom/android/internal/os/BatteryStatsImpl$Uid$Pkg; -PLcom/android/internal/os/BatteryStatsImpl$Uid;->getPidStats()Landroid/util/SparseArray; +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getPidStats()Landroid/util/SparseArray; HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->getPidStatsLocked(I)Landroid/os/BatteryStats$Uid$Pid; HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->getProcessStateTime(IJI)J HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getProcessStateTimer(I)Landroid/os/BatteryStats$Timer; -PLcom/android/internal/os/BatteryStatsImpl$Uid;->getProcessStateTimer(I)Lcom/android/internal/os/BatteryStatsImpl$Timer; +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getProcessStateTimer(I)Lcom/android/internal/os/BatteryStatsImpl$Timer; HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->getProcessStats()Landroid/util/ArrayMap; HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->getProcessStatsLocked(Ljava/lang/String;)Lcom/android/internal/os/BatteryStatsImpl$Uid$Proc; HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getScreenOffCpuFreqTimes(I)[J @@ -19895,7 +20777,7 @@ HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->getUid()I HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getUserActivityCount(II)I HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->getUserCpuTimeUs(I)J HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getVibratorOnTimer()Landroid/os/BatteryStats$Timer; -PLcom/android/internal/os/BatteryStatsImpl$Uid;->getVibratorOnTimer()Lcom/android/internal/os/BatteryStatsImpl$Timer; +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getVibratorOnTimer()Lcom/android/internal/os/BatteryStatsImpl$Timer; HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->getVideoTurnedOnTimer()Landroid/os/BatteryStats$Timer; HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->getVideoTurnedOnTimer()Lcom/android/internal/os/BatteryStatsImpl$Timer; HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->getWakelockStats()Landroid/util/ArrayMap; @@ -19916,47 +20798,48 @@ HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->isInBackground()Z HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->makeProcessState(ILandroid/os/Parcel;)V HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteActivityPausedLocked(J)V HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteActivityResumedLocked(J)V -PLcom/android/internal/os/BatteryStatsImpl$Uid;->noteAudioTurnedOffLocked(J)V -PLcom/android/internal/os/BatteryStatsImpl$Uid;->noteAudioTurnedOnLocked(J)V -PLcom/android/internal/os/BatteryStatsImpl$Uid;->noteBluetoothScanResultsLocked(I)V -PLcom/android/internal/os/BatteryStatsImpl$Uid;->noteBluetoothScanStartedLocked(JZ)V -PLcom/android/internal/os/BatteryStatsImpl$Uid;->noteBluetoothScanStoppedLocked(JZ)V -PLcom/android/internal/os/BatteryStatsImpl$Uid;->noteCameraTurnedOffLocked(J)V -PLcom/android/internal/os/BatteryStatsImpl$Uid;->noteCameraTurnedOnLocked(J)V -PLcom/android/internal/os/BatteryStatsImpl$Uid;->noteForegroundServicePausedLocked(J)V -PLcom/android/internal/os/BatteryStatsImpl$Uid;->noteForegroundServiceResumedLocked(J)V -PLcom/android/internal/os/BatteryStatsImpl$Uid;->noteFullWifiLockAcquiredLocked(J)V -PLcom/android/internal/os/BatteryStatsImpl$Uid;->noteFullWifiLockReleasedLocked(J)V +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteAudioTurnedOffLocked(J)V +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteAudioTurnedOnLocked(J)V +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteBluetoothScanResultsLocked(I)V +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteBluetoothScanStartedLocked(JZ)V +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteBluetoothScanStoppedLocked(JZ)V +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteCameraTurnedOffLocked(J)V +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteCameraTurnedOnLocked(J)V +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteForegroundServicePausedLocked(J)V +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteForegroundServiceResumedLocked(J)V +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteFullWifiLockAcquiredLocked(J)V +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteFullWifiLockReleasedLocked(J)V HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteJobsDeferredLocked(IJ)V HPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteMobileRadioActiveTimeLocked(J)V -PLcom/android/internal/os/BatteryStatsImpl$Uid;->noteMobileRadioApWakeupLocked()V +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteMobileRadioApWakeupLocked()V HPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteNetworkActivityLocked(IJJ)V HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteStartGps(J)V HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteStartJobLocked(Ljava/lang/String;J)V HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteStartSensor(IJ)V -PLcom/android/internal/os/BatteryStatsImpl$Uid;->noteStartSyncLocked(Ljava/lang/String;J)V +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteStartSyncLocked(Ljava/lang/String;J)V HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteStartWakeLocked(ILjava/lang/String;IJ)V -PLcom/android/internal/os/BatteryStatsImpl$Uid;->noteStopGps(J)V +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteStopGps(J)V HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteStopJobLocked(Ljava/lang/String;JI)V HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteStopSensor(IJ)V -PLcom/android/internal/os/BatteryStatsImpl$Uid;->noteStopSyncLocked(Ljava/lang/String;J)V +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteStopSyncLocked(Ljava/lang/String;J)V HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteStopWakeLocked(ILjava/lang/String;IJ)V HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteUserActivityLocked(I)V -PLcom/android/internal/os/BatteryStatsImpl$Uid;->noteVibratorOffLocked()V -PLcom/android/internal/os/BatteryStatsImpl$Uid;->noteVibratorOnLocked(J)V -PLcom/android/internal/os/BatteryStatsImpl$Uid;->noteVideoTurnedOffLocked(J)V -PLcom/android/internal/os/BatteryStatsImpl$Uid;->noteVideoTurnedOnLocked(J)V -PLcom/android/internal/os/BatteryStatsImpl$Uid;->noteWifiMulticastDisabledLocked(J)V -PLcom/android/internal/os/BatteryStatsImpl$Uid;->noteWifiMulticastEnabledLocked(J)V -PLcom/android/internal/os/BatteryStatsImpl$Uid;->noteWifiRadioApWakeupLocked()V +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteVibratorOffLocked()V +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteVibratorOnLocked(J)V +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteVideoTurnedOffLocked(J)V +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteVideoTurnedOnLocked(J)V +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteWifiMulticastDisabledLocked(J)V +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteWifiMulticastEnabledLocked(J)V +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteWifiRadioApWakeupLocked()V HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteWifiScanStartedLocked(J)V -PLcom/android/internal/os/BatteryStatsImpl$Uid;->noteWifiScanStoppedLocked(J)V +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteWifiScanStoppedLocked(J)V +HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->readFromParcelLocked(Lcom/android/internal/os/BatteryStatsImpl$TimeBase;Lcom/android/internal/os/BatteryStatsImpl$TimeBase;Landroid/os/Parcel;)V HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->readJobCompletionsFromParcelLocked(Landroid/os/Parcel;)V HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->readJobSummaryFromParcelLocked(Ljava/lang/String;Landroid/os/Parcel;)V HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->readSyncSummaryFromParcelLocked(Ljava/lang/String;Landroid/os/Parcel;)V HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->readWakeSummaryFromParcelLocked(Ljava/lang/String;Landroid/os/Parcel;)V HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->removeIsolatedUid(I)V -PLcom/android/internal/os/BatteryStatsImpl$Uid;->reportExcessiveCpuLocked(Ljava/lang/String;JJ)V +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->reportExcessiveCpuLocked(Ljava/lang/String;JJ)V HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->reset(JJ)Z HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->updateOnBatteryBgTimeBase(JJ)Z HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->updateOnBatteryScreenOffBgTimeBase(JJ)Z @@ -19965,6 +20848,7 @@ HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->writeJobCompletionsToParcelLo HPLcom/android/internal/os/BatteryStatsImpl$Uid;->writeToParcelLocked(Landroid/os/Parcel;JJ)V HPLcom/android/internal/os/BatteryStatsImpl$UidToRemove;->remove()V HSPLcom/android/internal/os/BatteryStatsImpl$UserInfoProvider;->exists(I)Z +HSPLcom/android/internal/os/BatteryStatsImpl;-><init>(Lcom/android/internal/os/BatteryStatsImpl$Clocks;Landroid/os/Parcel;)V HSPLcom/android/internal/os/BatteryStatsImpl;-><init>(Lcom/android/internal/os/BatteryStatsImpl$Clocks;Ljava/io/File;Landroid/os/Handler;Lcom/android/internal/os/BatteryStatsImpl$PlatformIdleStateCallback;Lcom/android/internal/os/BatteryStatsImpl$RailEnergyDataCallback;Lcom/android/internal/os/BatteryStatsImpl$UserInfoProvider;)V HSPLcom/android/internal/os/BatteryStatsImpl;-><init>(Ljava/io/File;Landroid/os/Handler;Lcom/android/internal/os/BatteryStatsImpl$PlatformIdleStateCallback;Lcom/android/internal/os/BatteryStatsImpl$RailEnergyDataCallback;Lcom/android/internal/os/BatteryStatsImpl$UserInfoProvider;)V HSPLcom/android/internal/os/BatteryStatsImpl;->addHistoryBufferLocked(JBLandroid/os/BatteryStats$HistoryItem;)V @@ -20002,8 +20886,8 @@ HSPLcom/android/internal/os/BatteryStatsImpl;->getBatteryUptime(J)J HSPLcom/android/internal/os/BatteryStatsImpl;->getBatteryUptimeLocked()J HSPLcom/android/internal/os/BatteryStatsImpl;->getBluetoothControllerActivity()Landroid/os/BatteryStats$ControllerActivityCounter; HPLcom/android/internal/os/BatteryStatsImpl;->getCellularBatteryStats()Landroid/os/connectivity/CellularBatteryStats; -PLcom/android/internal/os/BatteryStatsImpl;->getChargeLevelStepTracker()Landroid/os/BatteryStats$LevelStepTracker; -PLcom/android/internal/os/BatteryStatsImpl;->getCpuFreqs()[J +HPLcom/android/internal/os/BatteryStatsImpl;->getChargeLevelStepTracker()Landroid/os/BatteryStats$LevelStepTracker; +HPLcom/android/internal/os/BatteryStatsImpl;->getCpuFreqs()[J HSPLcom/android/internal/os/BatteryStatsImpl;->getDeltaModemActivityInfo(Landroid/telephony/ModemActivityInfo;)Landroid/telephony/ModemActivityInfo; HPLcom/android/internal/os/BatteryStatsImpl;->getDeviceIdleModeCount(II)I HPLcom/android/internal/os/BatteryStatsImpl;->getDeviceIdleModeTime(IJI)J @@ -20012,41 +20896,41 @@ HPLcom/android/internal/os/BatteryStatsImpl;->getDeviceIdlingTime(IJI)J HSPLcom/android/internal/os/BatteryStatsImpl;->getDischargeAmountScreenDozeSinceCharge()I HSPLcom/android/internal/os/BatteryStatsImpl;->getDischargeAmountScreenOffSinceCharge()I HSPLcom/android/internal/os/BatteryStatsImpl;->getDischargeAmountScreenOnSinceCharge()I -PLcom/android/internal/os/BatteryStatsImpl;->getDischargeLevelStepTracker()Landroid/os/BatteryStats$LevelStepTracker; -PLcom/android/internal/os/BatteryStatsImpl;->getEndPlatformVersion()Ljava/lang/String; -PLcom/android/internal/os/BatteryStatsImpl;->getEstimatedBatteryCapacity()I -PLcom/android/internal/os/BatteryStatsImpl;->getExternalStatsCollectionRateLimitMs()J -PLcom/android/internal/os/BatteryStatsImpl;->getGlobalWifiRunningTime(JI)J +HPLcom/android/internal/os/BatteryStatsImpl;->getDischargeLevelStepTracker()Landroid/os/BatteryStats$LevelStepTracker; +HPLcom/android/internal/os/BatteryStatsImpl;->getEndPlatformVersion()Ljava/lang/String; +HPLcom/android/internal/os/BatteryStatsImpl;->getEstimatedBatteryCapacity()I +HPLcom/android/internal/os/BatteryStatsImpl;->getExternalStatsCollectionRateLimitMs()J +HPLcom/android/internal/os/BatteryStatsImpl;->getGlobalWifiRunningTime(JI)J HPLcom/android/internal/os/BatteryStatsImpl;->getGpsBatteryDrainMaMs()J HPLcom/android/internal/os/BatteryStatsImpl;->getGpsBatteryStats()Landroid/os/connectivity/GpsBatteryStats; HSPLcom/android/internal/os/BatteryStatsImpl;->getGpsSignalQualityTime(IJI)J HSPLcom/android/internal/os/BatteryStatsImpl;->getHighDischargeAmountSinceCharge()I -PLcom/android/internal/os/BatteryStatsImpl;->getHistoryBaseTime()J -PLcom/android/internal/os/BatteryStatsImpl;->getHistoryStringPoolSize()I -PLcom/android/internal/os/BatteryStatsImpl;->getHistoryTagPoolString(I)Ljava/lang/String; -PLcom/android/internal/os/BatteryStatsImpl;->getHistoryTagPoolUid(I)I -PLcom/android/internal/os/BatteryStatsImpl;->getInteractiveTime(JI)J +HPLcom/android/internal/os/BatteryStatsImpl;->getHistoryBaseTime()J +HPLcom/android/internal/os/BatteryStatsImpl;->getHistoryStringPoolSize()I +HPLcom/android/internal/os/BatteryStatsImpl;->getHistoryTagPoolString(I)Ljava/lang/String; +HPLcom/android/internal/os/BatteryStatsImpl;->getHistoryTagPoolUid(I)I +HPLcom/android/internal/os/BatteryStatsImpl;->getInteractiveTime(JI)J HSPLcom/android/internal/os/BatteryStatsImpl;->getIsOnBattery()Z HSPLcom/android/internal/os/BatteryStatsImpl;->getKernelMemoryStats()Landroid/util/LongSparseArray; -PLcom/android/internal/os/BatteryStatsImpl;->getKernelWakelockStats()Ljava/util/Map; +HPLcom/android/internal/os/BatteryStatsImpl;->getKernelWakelockStats()Ljava/util/Map; HSPLcom/android/internal/os/BatteryStatsImpl;->getKernelWakelockTimerLocked(Ljava/lang/String;)Lcom/android/internal/os/BatteryStatsImpl$SamplingTimer; -PLcom/android/internal/os/BatteryStatsImpl;->getLongestDeviceIdleModeTime(I)J +HPLcom/android/internal/os/BatteryStatsImpl;->getLongestDeviceIdleModeTime(I)J HSPLcom/android/internal/os/BatteryStatsImpl;->getLowDischargeAmountSinceCharge()I -PLcom/android/internal/os/BatteryStatsImpl;->getMaxLearnedBatteryCapacity()I -PLcom/android/internal/os/BatteryStatsImpl;->getMinLearnedBatteryCapacity()I +HPLcom/android/internal/os/BatteryStatsImpl;->getMaxLearnedBatteryCapacity()I +HPLcom/android/internal/os/BatteryStatsImpl;->getMinLearnedBatteryCapacity()I HSPLcom/android/internal/os/BatteryStatsImpl;->getMobileIfaces()[Ljava/lang/String; -PLcom/android/internal/os/BatteryStatsImpl;->getMobileRadioActiveAdjustedTime(I)J -PLcom/android/internal/os/BatteryStatsImpl;->getMobileRadioActiveCount(I)I +HPLcom/android/internal/os/BatteryStatsImpl;->getMobileRadioActiveAdjustedTime(I)J +HPLcom/android/internal/os/BatteryStatsImpl;->getMobileRadioActiveCount(I)I HSPLcom/android/internal/os/BatteryStatsImpl;->getMobileRadioActiveTime(JI)J HSPLcom/android/internal/os/BatteryStatsImpl;->getMobileRadioActiveUnknownCount(I)I -PLcom/android/internal/os/BatteryStatsImpl;->getMobileRadioActiveUnknownTime(I)J -PLcom/android/internal/os/BatteryStatsImpl;->getModemControllerActivity()Landroid/os/BatteryStats$ControllerActivityCounter; +HPLcom/android/internal/os/BatteryStatsImpl;->getMobileRadioActiveUnknownTime(I)J +HPLcom/android/internal/os/BatteryStatsImpl;->getModemControllerActivity()Landroid/os/BatteryStats$ControllerActivityCounter; HPLcom/android/internal/os/BatteryStatsImpl;->getNetworkActivityBytes(II)J HSPLcom/android/internal/os/BatteryStatsImpl;->getNetworkActivityPackets(II)J HSPLcom/android/internal/os/BatteryStatsImpl;->getNextHistoryLocked(Landroid/os/BatteryStats$HistoryItem;)Z -PLcom/android/internal/os/BatteryStatsImpl;->getNumConnectivityChange(I)I +HPLcom/android/internal/os/BatteryStatsImpl;->getNumConnectivityChange(I)I HSPLcom/android/internal/os/BatteryStatsImpl;->getPackageStatsLocked(ILjava/lang/String;)Lcom/android/internal/os/BatteryStatsImpl$Uid$Pkg; -PLcom/android/internal/os/BatteryStatsImpl;->getParcelVersion()I +HPLcom/android/internal/os/BatteryStatsImpl;->getParcelVersion()I HPLcom/android/internal/os/BatteryStatsImpl;->getPhoneDataConnectionCount(II)I HPLcom/android/internal/os/BatteryStatsImpl;->getPhoneDataConnectionTime(IJI)J HSPLcom/android/internal/os/BatteryStatsImpl;->getPhoneOnTime(JI)J @@ -20054,33 +20938,33 @@ HSPLcom/android/internal/os/BatteryStatsImpl;->getPhoneSignalScanningTime(JI)J HPLcom/android/internal/os/BatteryStatsImpl;->getPhoneSignalStrengthCount(II)I HSPLcom/android/internal/os/BatteryStatsImpl;->getPhoneSignalStrengthTime(IJI)J HSPLcom/android/internal/os/BatteryStatsImpl;->getPowerManagerWakeLockLevel(I)I -PLcom/android/internal/os/BatteryStatsImpl;->getPowerSaveModeEnabledTime(JI)J +HPLcom/android/internal/os/BatteryStatsImpl;->getPowerSaveModeEnabledTime(JI)J HSPLcom/android/internal/os/BatteryStatsImpl;->getProcessStatsLocked(ILjava/lang/String;)Lcom/android/internal/os/BatteryStatsImpl$Uid$Proc; -PLcom/android/internal/os/BatteryStatsImpl;->getRpmStats()Ljava/util/Map; +HPLcom/android/internal/os/BatteryStatsImpl;->getRpmStats()Ljava/util/Map; HSPLcom/android/internal/os/BatteryStatsImpl;->getRpmTimerLocked(Ljava/lang/String;)Lcom/android/internal/os/BatteryStatsImpl$SamplingTimer; HSPLcom/android/internal/os/BatteryStatsImpl;->getScreenBrightnessTime(IJI)J HSPLcom/android/internal/os/BatteryStatsImpl;->getScreenDozeTime(JI)J -PLcom/android/internal/os/BatteryStatsImpl;->getScreenOffRpmStats()Ljava/util/Map; +HPLcom/android/internal/os/BatteryStatsImpl;->getScreenOffRpmStats()Ljava/util/Map; HSPLcom/android/internal/os/BatteryStatsImpl;->getScreenOnTime(JI)J HSPLcom/android/internal/os/BatteryStatsImpl;->getServiceStatsLocked(ILjava/lang/String;Ljava/lang/String;)Lcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv; HSPLcom/android/internal/os/BatteryStatsImpl;->getStartClockTime()J -PLcom/android/internal/os/BatteryStatsImpl;->getStartCount()I -PLcom/android/internal/os/BatteryStatsImpl;->getStartPlatformVersion()Ljava/lang/String; -PLcom/android/internal/os/BatteryStatsImpl;->getUahDischarge(I)J -PLcom/android/internal/os/BatteryStatsImpl;->getUahDischargeDeepDoze(I)J -PLcom/android/internal/os/BatteryStatsImpl;->getUahDischargeLightDoze(I)J -PLcom/android/internal/os/BatteryStatsImpl;->getUahDischargeScreenDoze(I)J -PLcom/android/internal/os/BatteryStatsImpl;->getUahDischargeScreenOff(I)J +HPLcom/android/internal/os/BatteryStatsImpl;->getStartCount()I +HPLcom/android/internal/os/BatteryStatsImpl;->getStartPlatformVersion()Ljava/lang/String; +HPLcom/android/internal/os/BatteryStatsImpl;->getUahDischarge(I)J +HPLcom/android/internal/os/BatteryStatsImpl;->getUahDischargeDeepDoze(I)J +HPLcom/android/internal/os/BatteryStatsImpl;->getUahDischargeLightDoze(I)J +HPLcom/android/internal/os/BatteryStatsImpl;->getUahDischargeScreenDoze(I)J +HPLcom/android/internal/os/BatteryStatsImpl;->getUahDischargeScreenOff(I)J HSPLcom/android/internal/os/BatteryStatsImpl;->getUidStats()Landroid/util/SparseArray; HSPLcom/android/internal/os/BatteryStatsImpl;->getUidStatsLocked(I)Lcom/android/internal/os/BatteryStatsImpl$Uid; -PLcom/android/internal/os/BatteryStatsImpl;->getWakeupReasonStats()Ljava/util/Map; +HPLcom/android/internal/os/BatteryStatsImpl;->getWakeupReasonStats()Ljava/util/Map; HSPLcom/android/internal/os/BatteryStatsImpl;->getWakeupReasonTimerLocked(Ljava/lang/String;)Lcom/android/internal/os/BatteryStatsImpl$SamplingTimer; -PLcom/android/internal/os/BatteryStatsImpl;->getWifiActiveTime(JI)J +HPLcom/android/internal/os/BatteryStatsImpl;->getWifiActiveTime(JI)J HPLcom/android/internal/os/BatteryStatsImpl;->getWifiBatteryStats()Landroid/os/connectivity/WifiBatteryStats; HSPLcom/android/internal/os/BatteryStatsImpl;->getWifiControllerActivity()Landroid/os/BatteryStats$ControllerActivityCounter; -PLcom/android/internal/os/BatteryStatsImpl;->getWifiMulticastWakelockCount(I)I -PLcom/android/internal/os/BatteryStatsImpl;->getWifiMulticastWakelockTime(JI)J -PLcom/android/internal/os/BatteryStatsImpl;->getWifiOnTime(JI)J +HPLcom/android/internal/os/BatteryStatsImpl;->getWifiMulticastWakelockCount(I)I +HPLcom/android/internal/os/BatteryStatsImpl;->getWifiMulticastWakelockTime(JI)J +HPLcom/android/internal/os/BatteryStatsImpl;->getWifiOnTime(JI)J HPLcom/android/internal/os/BatteryStatsImpl;->getWifiSignalStrengthCount(II)I HPLcom/android/internal/os/BatteryStatsImpl;->getWifiSignalStrengthTime(IJI)J HPLcom/android/internal/os/BatteryStatsImpl;->getWifiStateCount(II)I @@ -20089,6 +20973,7 @@ HPLcom/android/internal/os/BatteryStatsImpl;->getWifiSupplStateCount(II)I HPLcom/android/internal/os/BatteryStatsImpl;->getWifiSupplStateTime(IJI)J HSPLcom/android/internal/os/BatteryStatsImpl;->hasBluetoothActivityReporting()Z HSPLcom/android/internal/os/BatteryStatsImpl;->hasWifiActivityReporting()Z +HSPLcom/android/internal/os/BatteryStatsImpl;->init(Lcom/android/internal/os/BatteryStatsImpl$Clocks;)V HSPLcom/android/internal/os/BatteryStatsImpl;->initActiveHistoryEventsLocked(JJ)V HSPLcom/android/internal/os/BatteryStatsImpl;->initDischarge()V HSPLcom/android/internal/os/BatteryStatsImpl;->initTimes(JJ)V @@ -20114,22 +20999,22 @@ HPLcom/android/internal/os/BatteryStatsImpl;->noteAudioOffLocked(I)V HPLcom/android/internal/os/BatteryStatsImpl;->noteAudioOnLocked(I)V HPLcom/android/internal/os/BatteryStatsImpl;->noteBluetoothScanResultsFromSourceLocked(Landroid/os/WorkSource;I)V HPLcom/android/internal/os/BatteryStatsImpl;->noteBluetoothScanStartedFromSourceLocked(Landroid/os/WorkSource;Z)V -PLcom/android/internal/os/BatteryStatsImpl;->noteBluetoothScanStartedLocked(Landroid/os/WorkSource$WorkChain;IZ)V +HPLcom/android/internal/os/BatteryStatsImpl;->noteBluetoothScanStartedLocked(Landroid/os/WorkSource$WorkChain;IZ)V HPLcom/android/internal/os/BatteryStatsImpl;->noteBluetoothScanStoppedFromSourceLocked(Landroid/os/WorkSource;Z)V -PLcom/android/internal/os/BatteryStatsImpl;->noteBluetoothScanStoppedLocked(Landroid/os/WorkSource$WorkChain;IZ)V -PLcom/android/internal/os/BatteryStatsImpl;->noteCameraOffLocked(I)V -PLcom/android/internal/os/BatteryStatsImpl;->noteCameraOnLocked(I)V +HPLcom/android/internal/os/BatteryStatsImpl;->noteBluetoothScanStoppedLocked(Landroid/os/WorkSource$WorkChain;IZ)V +HPLcom/android/internal/os/BatteryStatsImpl;->noteCameraOffLocked(I)V +HPLcom/android/internal/os/BatteryStatsImpl;->noteCameraOnLocked(I)V HSPLcom/android/internal/os/BatteryStatsImpl;->noteChangeWakelockFromSourceLocked(Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;ILandroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;IZ)V HSPLcom/android/internal/os/BatteryStatsImpl;->noteConnectivityChangedLocked(ILjava/lang/String;)V HSPLcom/android/internal/os/BatteryStatsImpl;->noteCurrentTimeChangedLocked()V HSPLcom/android/internal/os/BatteryStatsImpl;->noteDeviceIdleModeLocked(ILjava/lang/String;I)V HSPLcom/android/internal/os/BatteryStatsImpl;->noteEventLocked(ILjava/lang/String;I)V -PLcom/android/internal/os/BatteryStatsImpl;->noteFullWifiLockAcquiredFromSourceLocked(Landroid/os/WorkSource;)V -PLcom/android/internal/os/BatteryStatsImpl;->noteFullWifiLockAcquiredLocked(I)V -PLcom/android/internal/os/BatteryStatsImpl;->noteFullWifiLockReleasedFromSourceLocked(Landroid/os/WorkSource;)V -PLcom/android/internal/os/BatteryStatsImpl;->noteFullWifiLockReleasedLocked(I)V +HPLcom/android/internal/os/BatteryStatsImpl;->noteFullWifiLockAcquiredFromSourceLocked(Landroid/os/WorkSource;)V +HPLcom/android/internal/os/BatteryStatsImpl;->noteFullWifiLockAcquiredLocked(I)V +HPLcom/android/internal/os/BatteryStatsImpl;->noteFullWifiLockReleasedFromSourceLocked(Landroid/os/WorkSource;)V +HPLcom/android/internal/os/BatteryStatsImpl;->noteFullWifiLockReleasedLocked(I)V HSPLcom/android/internal/os/BatteryStatsImpl;->noteGpsChangedLocked(Landroid/os/WorkSource;Landroid/os/WorkSource;)V -PLcom/android/internal/os/BatteryStatsImpl;->noteGpsSignalQualityLocked(I)V +HPLcom/android/internal/os/BatteryStatsImpl;->noteGpsSignalQualityLocked(I)V HSPLcom/android/internal/os/BatteryStatsImpl;->noteInteractiveLocked(Z)V HSPLcom/android/internal/os/BatteryStatsImpl;->noteJobFinishLocked(Ljava/lang/String;II)V HSPLcom/android/internal/os/BatteryStatsImpl;->noteJobStartLocked(Ljava/lang/String;I)V @@ -20142,13 +21027,15 @@ HPLcom/android/internal/os/BatteryStatsImpl;->noteLongPartialWakelockStart(Ljava HPLcom/android/internal/os/BatteryStatsImpl;->noteLongPartialWakelockStartFromSource(Ljava/lang/String;Ljava/lang/String;Landroid/os/WorkSource;)V HSPLcom/android/internal/os/BatteryStatsImpl;->noteMobileRadioPowerStateLocked(IJI)Z HSPLcom/android/internal/os/BatteryStatsImpl;->noteNetworkInterfaceTypeLocked(Ljava/lang/String;I)V -PLcom/android/internal/os/BatteryStatsImpl;->notePackageInstalledLocked(Ljava/lang/String;J)V +HPLcom/android/internal/os/BatteryStatsImpl;->notePackageInstalledLocked(Ljava/lang/String;J)V +HSPLcom/android/internal/os/BatteryStatsImpl;->notePackageUninstalledLocked(Ljava/lang/String;)V HSPLcom/android/internal/os/BatteryStatsImpl;->notePhoneDataConnectionStateLocked(IZ)V HSPLcom/android/internal/os/BatteryStatsImpl;->notePhoneOffLocked()V -PLcom/android/internal/os/BatteryStatsImpl;->notePhoneOnLocked()V +HPLcom/android/internal/os/BatteryStatsImpl;->notePhoneOnLocked()V HSPLcom/android/internal/os/BatteryStatsImpl;->notePhoneSignalStrengthLocked(Landroid/telephony/SignalStrength;)V HSPLcom/android/internal/os/BatteryStatsImpl;->notePhoneStateLocked(II)V HSPLcom/android/internal/os/BatteryStatsImpl;->notePowerSaveModeLocked(Z)V +HPLcom/android/internal/os/BatteryStatsImpl;->noteProcessAnrLocked(Ljava/lang/String;I)V HSPLcom/android/internal/os/BatteryStatsImpl;->noteProcessCrashLocked(Ljava/lang/String;I)V HSPLcom/android/internal/os/BatteryStatsImpl;->noteProcessDiedLocked(II)V HSPLcom/android/internal/os/BatteryStatsImpl;->noteProcessFinishLocked(Ljava/lang/String;I)V @@ -20171,8 +21058,8 @@ HSPLcom/android/internal/os/BatteryStatsImpl;->noteUsbConnectionStateLocked(Z)V HSPLcom/android/internal/os/BatteryStatsImpl;->noteUserActivityLocked(II)V HPLcom/android/internal/os/BatteryStatsImpl;->noteVibratorOffLocked(I)V HPLcom/android/internal/os/BatteryStatsImpl;->noteVibratorOnLocked(IJ)V -PLcom/android/internal/os/BatteryStatsImpl;->noteVideoOffLocked(I)V -PLcom/android/internal/os/BatteryStatsImpl;->noteVideoOnLocked(I)V +HPLcom/android/internal/os/BatteryStatsImpl;->noteVideoOffLocked(I)V +HPLcom/android/internal/os/BatteryStatsImpl;->noteVideoOnLocked(I)V HPLcom/android/internal/os/BatteryStatsImpl;->noteWakeUpLocked(Ljava/lang/String;I)V HPLcom/android/internal/os/BatteryStatsImpl;->noteWakeupReasonLocked(Ljava/lang/String;)V HSPLcom/android/internal/os/BatteryStatsImpl;->noteWakupAlarmLocked(Ljava/lang/String;ILandroid/os/WorkSource;Ljava/lang/String;)V @@ -20190,12 +21077,14 @@ HPLcom/android/internal/os/BatteryStatsImpl;->noteWifiScanStoppedLocked(I)V HSPLcom/android/internal/os/BatteryStatsImpl;->noteWifiStateLocked(ILjava/lang/String;)V HSPLcom/android/internal/os/BatteryStatsImpl;->noteWifiSupplicantStateChangedLocked(IZ)V HSPLcom/android/internal/os/BatteryStatsImpl;->postBatteryNeedsCpuUpdateMsg()V -PLcom/android/internal/os/BatteryStatsImpl;->prepareForDumpLocked()V +HPLcom/android/internal/os/BatteryStatsImpl;->prepareForDumpLocked()V HSPLcom/android/internal/os/BatteryStatsImpl;->pullPendingStateUpdatesLocked()V HSPLcom/android/internal/os/BatteryStatsImpl;->readDailyItemTagDetailsLocked(Lorg/xmlpull/v1/XmlPullParser;Landroid/os/BatteryStats$DailyItem;ZLjava/lang/String;)V HSPLcom/android/internal/os/BatteryStatsImpl;->readDailyItemTagLocked(Lorg/xmlpull/v1/XmlPullParser;)V HSPLcom/android/internal/os/BatteryStatsImpl;->readDailyItemsLocked(Lorg/xmlpull/v1/XmlPullParser;)V HSPLcom/android/internal/os/BatteryStatsImpl;->readDailyStatsLocked()V +HSPLcom/android/internal/os/BatteryStatsImpl;->readFromParcel(Landroid/os/Parcel;)V +HSPLcom/android/internal/os/BatteryStatsImpl;->readFromParcelLocked(Landroid/os/Parcel;)V HSPLcom/android/internal/os/BatteryStatsImpl;->readHistoryBuffer(Landroid/os/Parcel;Z)V HSPLcom/android/internal/os/BatteryStatsImpl;->readHistoryDelta(Landroid/os/Parcel;Landroid/os/BatteryStats$HistoryItem;)V HSPLcom/android/internal/os/BatteryStatsImpl;->readKernelUidCpuActiveTimesLocked(Z)V @@ -20210,8 +21099,9 @@ HSPLcom/android/internal/os/BatteryStatsImpl;->recordDailyStatsIfNeededLocked(Z) HSPLcom/android/internal/os/BatteryStatsImpl;->recordDailyStatsLocked()V HSPLcom/android/internal/os/BatteryStatsImpl;->registerUsbStateReceiver(Landroid/content/Context;)V HSPLcom/android/internal/os/BatteryStatsImpl;->removeIsolatedUidLocked(I)V +HSPLcom/android/internal/os/BatteryStatsImpl;->removeUidStatsLocked(I)V HSPLcom/android/internal/os/BatteryStatsImpl;->reportChangesToStatsLog(Landroid/os/BatteryStats$HistoryItem;III)V -PLcom/android/internal/os/BatteryStatsImpl;->reportExcessiveCpuLocked(ILjava/lang/String;JJ)V +HPLcom/android/internal/os/BatteryStatsImpl;->reportExcessiveCpuLocked(ILjava/lang/String;JJ)V HSPLcom/android/internal/os/BatteryStatsImpl;->resetAllStatsLocked()V HSPLcom/android/internal/os/BatteryStatsImpl;->scheduleRemoveIsolatedUidLocked(II)V HSPLcom/android/internal/os/BatteryStatsImpl;->setBatteryStateLocked(IIIIIIII)V @@ -20224,7 +21114,7 @@ HSPLcom/android/internal/os/BatteryStatsImpl;->setRadioScanningTimeoutLocked(J)V HSPLcom/android/internal/os/BatteryStatsImpl;->startAddingCpuLocked()Z HSPLcom/android/internal/os/BatteryStatsImpl;->startIteratingHistoryLocked()Z HSPLcom/android/internal/os/BatteryStatsImpl;->startRecordingHistory(JJZ)V -PLcom/android/internal/os/BatteryStatsImpl;->stopAllGpsSignalQualityTimersLocked(I)V +HPLcom/android/internal/os/BatteryStatsImpl;->stopAllGpsSignalQualityTimersLocked(I)V HSPLcom/android/internal/os/BatteryStatsImpl;->stopAllPhoneSignalStrengthTimersLocked(I)V HSPLcom/android/internal/os/BatteryStatsImpl;->systemServicesReady(Landroid/content/Context;)V HSPLcom/android/internal/os/BatteryStatsImpl;->trackPerProcStateCpuTimes()Z @@ -20255,20 +21145,20 @@ HSPLcom/android/internal/os/BatteryStatsImpl;->writeOldHistory(Landroid/os/Parce HSPLcom/android/internal/os/BatteryStatsImpl;->writeParcelToFileLocked(Landroid/os/Parcel;Lcom/android/internal/os/AtomicFile;Z)V HSPLcom/android/internal/os/BatteryStatsImpl;->writeStatsLocked(Z)V HSPLcom/android/internal/os/BatteryStatsImpl;->writeSummaryToParcel(Landroid/os/Parcel;Z)V -PLcom/android/internal/os/BatteryStatsImpl;->writeToParcel(Landroid/os/Parcel;I)V +HPLcom/android/internal/os/BatteryStatsImpl;->writeToParcel(Landroid/os/Parcel;I)V HPLcom/android/internal/os/BatteryStatsImpl;->writeToParcelLocked(Landroid/os/Parcel;ZI)V HSPLcom/android/internal/os/BinderCallsStats$CallStatKey;-><init>()V HSPLcom/android/internal/os/BinderCallsStats$CallStatKey;->equals(Ljava/lang/Object;)Z HSPLcom/android/internal/os/BinderCallsStats$CallStatKey;->hashCode()I HSPLcom/android/internal/os/BinderCallsStats$Injector;->getRandomGenerator()Ljava/util/Random; HSPLcom/android/internal/os/BinderCallsStats$UidEntry;->get(ILjava/lang/Class;IZ)Lcom/android/internal/os/BinderCallsStats$CallStat; -PLcom/android/internal/os/BinderCallsStats$UidEntry;->getCallStatsList()Ljava/util/Collection; +HPLcom/android/internal/os/BinderCallsStats$UidEntry;->getCallStatsList()Ljava/util/Collection; HSPLcom/android/internal/os/BinderCallsStats$UidEntry;->getOrCreate(ILjava/lang/Class;IZZ)Lcom/android/internal/os/BinderCallsStats$CallStat; HSPLcom/android/internal/os/BinderCallsStats;-><init>(Lcom/android/internal/os/BinderCallsStats$Injector;)V HSPLcom/android/internal/os/BinderCallsStats;->callEnded(Lcom/android/internal/os/BinderInternal$CallSession;III)V HSPLcom/android/internal/os/BinderCallsStats;->callStarted(Landroid/os/Binder;II)Lcom/android/internal/os/BinderInternal$CallSession; HSPLcom/android/internal/os/BinderCallsStats;->callThrewException(Lcom/android/internal/os/BinderInternal$CallSession;Ljava/lang/Exception;)V -PLcom/android/internal/os/BinderCallsStats;->createDebugEntry(Ljava/lang/String;J)Lcom/android/internal/os/BinderCallsStats$ExportedCallStat; +HPLcom/android/internal/os/BinderCallsStats;->createDebugEntry(Ljava/lang/String;J)Lcom/android/internal/os/BinderCallsStats$ExportedCallStat; HSPLcom/android/internal/os/BinderCallsStats;->getCallingUid()I HPLcom/android/internal/os/BinderCallsStats;->getDefaultTransactionNameMethod(Ljava/lang/Class;)Ljava/lang/reflect/Method; HSPLcom/android/internal/os/BinderCallsStats;->getElapsedRealtimeMicro()J @@ -20300,7 +21190,7 @@ HSPLcom/android/internal/os/BluetoothPowerCalculator;->calculateRemaining(Lcom/a HSPLcom/android/internal/os/BluetoothPowerCalculator;->reset()V HSPLcom/android/internal/os/CachedDeviceState$Readonly;->createTimeOnBatteryStopwatch()Lcom/android/internal/os/CachedDeviceState$TimeInStateStopwatch; HSPLcom/android/internal/os/CachedDeviceState$Readonly;->isCharging()Z -PLcom/android/internal/os/CachedDeviceState$TimeInStateStopwatch;->getMillis()J +HPLcom/android/internal/os/CachedDeviceState$TimeInStateStopwatch;->getMillis()J HSPLcom/android/internal/os/CachedDeviceState$TimeInStateStopwatch;->isRunning()Z HSPLcom/android/internal/os/CachedDeviceState$TimeInStateStopwatch;->reset()V HSPLcom/android/internal/os/CachedDeviceState$TimeInStateStopwatch;->start()V @@ -20334,9 +21224,10 @@ HSPLcom/android/internal/os/HandlerCaller;->obtainMessageO(ILjava/lang/Object;)L HSPLcom/android/internal/os/HandlerCaller;->obtainMessageOO(ILjava/lang/Object;Ljava/lang/Object;)Landroid/os/Message; HSPLcom/android/internal/os/HandlerCaller;->obtainMessageOOO(ILjava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Landroid/os/Message; HSPLcom/android/internal/os/HandlerCaller;->obtainMessageOOOOO(ILjava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Landroid/os/Message; +HSPLcom/android/internal/os/HandlerCaller;->sendMessage(Landroid/os/Message;)V HSPLcom/android/internal/os/IDropBoxManagerService$Stub;-><init>()V HSPLcom/android/internal/os/IDropBoxManagerService$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/os/IDropBoxManagerService; -PLcom/android/internal/os/IDropBoxManagerService$Stub;->getDefaultTransactionName(I)Ljava/lang/String; +HPLcom/android/internal/os/IDropBoxManagerService$Stub;->getDefaultTransactionName(I)Ljava/lang/String; HSPLcom/android/internal/os/IDropBoxManagerService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HPLcom/android/internal/os/IResultReceiver$Stub$Proxy;-><init>(Landroid/os/IBinder;)V HSPLcom/android/internal/os/IResultReceiver$Stub$Proxy;->asBinder()Landroid/os/IBinder; @@ -20360,7 +21251,7 @@ HPLcom/android/internal/os/KernelCpuThreadReader$FrequencyBucketCreator;->getBuc HPLcom/android/internal/os/KernelCpuThreadReader$Injector;->getUidForPid(I)I HPLcom/android/internal/os/KernelCpuThreadReader;->$closeResource(Ljava/lang/Throwable;Ljava/lang/AutoCloseable;)V HSPLcom/android/internal/os/KernelCpuThreadReader;->create(ILjava/util/function/Predicate;I)Lcom/android/internal/os/KernelCpuThreadReader; -PLcom/android/internal/os/KernelCpuThreadReader;->getCpuFrequenciesKhz()[I +HPLcom/android/internal/os/KernelCpuThreadReader;->getCpuFrequenciesKhz()[I HPLcom/android/internal/os/KernelCpuThreadReader;->getProcessCpuUsage()Ljava/util/ArrayList; HPLcom/android/internal/os/KernelCpuThreadReader;->getProcessCpuUsage(Ljava/nio/file/Path;II)Lcom/android/internal/os/KernelCpuThreadReader$ProcessCpuUsage; HPLcom/android/internal/os/KernelCpuThreadReader;->getProcessId(Ljava/nio/file/Path;)I @@ -20394,7 +21285,7 @@ HSPLcom/android/internal/os/KernelCpuUidTimeReader$KernelCpuUidUserSysTimeReader HPLcom/android/internal/os/KernelCpuUidTimeReader$KernelCpuUidUserSysTimeReader;->removeUid(I)V HPLcom/android/internal/os/KernelCpuUidTimeReader$KernelCpuUidUserSysTimeReader;->removeUidsFromKernelModule(II)V HSPLcom/android/internal/os/KernelCpuUidTimeReader;-><init>(Lcom/android/internal/os/KernelCpuProcStringReader;Z)V -PLcom/android/internal/os/KernelCpuUidTimeReader;->readAbsolute(Lcom/android/internal/os/KernelCpuUidTimeReader$Callback;)V +HPLcom/android/internal/os/KernelCpuUidTimeReader;->readAbsolute(Lcom/android/internal/os/KernelCpuUidTimeReader$Callback;)V HSPLcom/android/internal/os/KernelCpuUidTimeReader;->readDelta(Lcom/android/internal/os/KernelCpuUidTimeReader$Callback;)V HPLcom/android/internal/os/KernelCpuUidTimeReader;->removeUid(I)V HSPLcom/android/internal/os/KernelCpuUidTimeReader;->setThrottle(J)V @@ -20411,13 +21302,13 @@ HSPLcom/android/internal/os/LooperStats$Entry;->idFor(Landroid/os/Message;Z)I HSPLcom/android/internal/os/LooperStats$Entry;->reset()V HPLcom/android/internal/os/LooperStats$ExportedEntry;-><init>(Lcom/android/internal/os/LooperStats$Entry;)V HSPLcom/android/internal/os/LooperStats;-><init>(II)V -PLcom/android/internal/os/LooperStats;->createDebugEntry(Ljava/lang/String;J)Lcom/android/internal/os/LooperStats$ExportedEntry; +HPLcom/android/internal/os/LooperStats;->createDebugEntry(Ljava/lang/String;J)Lcom/android/internal/os/LooperStats$ExportedEntry; HSPLcom/android/internal/os/LooperStats;->findEntry(Landroid/os/Message;Z)Lcom/android/internal/os/LooperStats$Entry; HSPLcom/android/internal/os/LooperStats;->getElapsedRealtimeMicro()J HPLcom/android/internal/os/LooperStats;->getEntries()Ljava/util/List; HSPLcom/android/internal/os/LooperStats;->getSystemUptimeMillis()J HSPLcom/android/internal/os/LooperStats;->getThreadTimeMicro()J -PLcom/android/internal/os/LooperStats;->maybeAddSpecialEntry(Ljava/util/List;Lcom/android/internal/os/LooperStats$Entry;)V +HPLcom/android/internal/os/LooperStats;->maybeAddSpecialEntry(Ljava/util/List;Lcom/android/internal/os/LooperStats$Entry;)V HSPLcom/android/internal/os/LooperStats;->messageDispatchStarting()Ljava/lang/Object; HSPLcom/android/internal/os/LooperStats;->messageDispatched(Ljava/lang/Object;Landroid/os/Message;)V HSPLcom/android/internal/os/LooperStats;->reset()V @@ -20454,8 +21345,11 @@ HSPLcom/android/internal/os/ProcTimeInStateReader;->getFrequenciesKhz()[J HPLcom/android/internal/os/ProcTimeInStateReader;->getUsageTimesMillis(Ljava/nio/file/Path;)[J HSPLcom/android/internal/os/ProcTimeInStateReader;->initializeTimeInStateFormat(Ljava/nio/file/Path;)V HSPLcom/android/internal/os/ProcessCpuTracker$1;-><init>()V +HPLcom/android/internal/os/ProcessCpuTracker$1;->compare(Lcom/android/internal/os/ProcessCpuTracker$Stats;Lcom/android/internal/os/ProcessCpuTracker$Stats;)I +HPLcom/android/internal/os/ProcessCpuTracker$1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I HSPLcom/android/internal/os/ProcessCpuTracker$Stats;-><init>(IIZ)V HSPLcom/android/internal/os/ProcessCpuTracker;-><init>(Z)V +HPLcom/android/internal/os/ProcessCpuTracker;->buildWorkingProcs()V HSPLcom/android/internal/os/ProcessCpuTracker;->collectStats(Ljava/lang/String;IZ[ILjava/util/ArrayList;)[I HSPLcom/android/internal/os/ProcessCpuTracker;->countStats()I HSPLcom/android/internal/os/ProcessCpuTracker;->getCpuTimeForPid(I)J @@ -20465,6 +21359,10 @@ HSPLcom/android/internal/os/ProcessCpuTracker;->getStats(Lcom/android/internal/o HSPLcom/android/internal/os/ProcessCpuTracker;->init()V HSPLcom/android/internal/os/ProcessCpuTracker;->onLoadChanged(FFF)V HSPLcom/android/internal/os/ProcessCpuTracker;->onMeasureProcessName(Ljava/lang/String;)I +HPLcom/android/internal/os/ProcessCpuTracker;->printCurrentLoad()Ljava/lang/String; +HPLcom/android/internal/os/ProcessCpuTracker;->printCurrentState(J)Ljava/lang/String; +HPLcom/android/internal/os/ProcessCpuTracker;->printProcessCPU(Ljava/io/PrintWriter;Ljava/lang/String;ILjava/lang/String;IIIIIIII)V +HPLcom/android/internal/os/ProcessCpuTracker;->printRatio(Ljava/io/PrintWriter;JJ)V HSPLcom/android/internal/os/ProcessCpuTracker;->update()V HSPLcom/android/internal/os/RailStats;-><init>()V HSPLcom/android/internal/os/RailStats;->setRailStatsAvailability(Z)V @@ -20509,6 +21407,7 @@ HSPLcom/android/internal/os/Zygote;->applyUidSecurityPolicy(Lcom/android/interna HSPLcom/android/internal/os/Zygote;->callPostForkChildHooks(IZZLjava/lang/String;)V HSPLcom/android/internal/os/Zygote;->callPostForkSystemServerHooks()V HSPLcom/android/internal/os/Zygote;->createManagedSocketFromInitSocket(Ljava/lang/String;)Landroid/net/LocalServerSocket; +HSPLcom/android/internal/os/Zygote;->forkAndSpecialize(II[II[[IILjava/lang/String;Ljava/lang/String;[I[IZLjava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)I HSPLcom/android/internal/os/Zygote;->forkAndSpecialize(II[II[[IILjava/lang/String;Ljava/lang/String;[I[IZLjava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;I)I HSPLcom/android/internal/os/Zygote;->getConfigurationProperty(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; HSPLcom/android/internal/os/Zygote;->getConfigurationPropertyBoolean(Ljava/lang/String;Ljava/lang/Boolean;)Z @@ -20526,7 +21425,10 @@ HSPLcom/android/internal/os/ZygoteConnection;->handleApiBlacklistExemptions(Lcom HSPLcom/android/internal/os/ZygoteConnection;->handleChildProc(Lcom/android/internal/os/ZygoteArguments;[Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;Z)Ljava/lang/Runnable; HSPLcom/android/internal/os/ZygoteConnection;->handleHiddenApiAccessLogSampleRate(Lcom/android/internal/os/ZygoteServer;II)Ljava/lang/Runnable; HSPLcom/android/internal/os/ZygoteConnection;->handleParentProc(I[Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;)V +HSPLcom/android/internal/os/ZygoteConnection;->handlePreload()V HSPLcom/android/internal/os/ZygoteConnection;->isClosedByPeer()Z +HSPLcom/android/internal/os/ZygoteConnection;->isPreloadComplete()Z +HSPLcom/android/internal/os/ZygoteConnection;->preload()V HSPLcom/android/internal/os/ZygoteConnection;->processOneCommand(Lcom/android/internal/os/ZygoteServer;)Ljava/lang/Runnable; HSPLcom/android/internal/os/ZygoteConnection;->setChildPgid(I)V HSPLcom/android/internal/os/ZygoteConnection;->stateChangeWithUsapPoolReset(Lcom/android/internal/os/ZygoteServer;Ljava/lang/Runnable;)Ljava/lang/Runnable; @@ -20559,11 +21461,12 @@ HSPLcom/android/internal/policy/DecorContext;->setPhoneWindow(Lcom/android/inter HSPLcom/android/internal/policy/DecorView$1;-><init>()V HSPLcom/android/internal/policy/DecorView$ColorViewAttributes;-><init>(IIIIILjava/lang/String;IILcom/android/internal/policy/DecorView$1;)V HSPLcom/android/internal/policy/DecorView$ColorViewAttributes;->isPresent(IIZ)Z -PLcom/android/internal/policy/DecorView$ColorViewAttributes;->isVisible(IIIZ)Z +HPLcom/android/internal/policy/DecorView$ColorViewAttributes;->isVisible(IIIZ)Z HSPLcom/android/internal/policy/DecorView$ColorViewAttributes;->isVisible(ZIIZ)Z HSPLcom/android/internal/policy/DecorView;-><init>(Landroid/content/Context;ILcom/android/internal/policy/PhoneWindow;Landroid/view/WindowManager$LayoutParams;)V HSPLcom/android/internal/policy/DecorView;->createDecorCaptionView(Landroid/view/LayoutInflater;)Lcom/android/internal/widget/DecorCaptionView; HSPLcom/android/internal/policy/DecorView;->dispatchKeyEvent(Landroid/view/KeyEvent;)Z +HSPLcom/android/internal/policy/DecorView;->dispatchPopulateAccessibilityEventInternal(Landroid/view/accessibility/AccessibilityEvent;)Z HSPLcom/android/internal/policy/DecorView;->dispatchTouchEvent(Landroid/view/MotionEvent;)Z HSPLcom/android/internal/policy/DecorView;->draw(Landroid/graphics/Canvas;)V HSPLcom/android/internal/policy/DecorView;->drawResizingShadowIfNeeded(Landroid/graphics/RecordingCanvas;)V @@ -20574,7 +21477,7 @@ HSPLcom/android/internal/policy/DecorView;->finishChanging()V HSPLcom/android/internal/policy/DecorView;->gatherTransparentRegion(Landroid/graphics/Region;)Z HSPLcom/android/internal/policy/DecorView;->gatherTransparentRegion(Lcom/android/internal/policy/DecorView$ColorViewState;Landroid/graphics/Region;)Z HSPLcom/android/internal/policy/DecorView;->getAccessibilityViewId()I -PLcom/android/internal/policy/DecorView;->getNavigationBarRect(IILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;)V +HPLcom/android/internal/policy/DecorView;->getNavigationBarRect(IILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;)V HSPLcom/android/internal/policy/DecorView;->getResources()Landroid/content/res/Resources; HSPLcom/android/internal/policy/DecorView;->initResizingPaints()V HSPLcom/android/internal/policy/DecorView;->onApplyWindowInsets(Landroid/view/WindowInsets;)Landroid/view/WindowInsets; @@ -20652,6 +21555,7 @@ HSPLcom/android/internal/policy/PhoneWindow$PanelFeatureState;->onSaveInstanceSt HSPLcom/android/internal/policy/PhoneWindow$RotationWatcher;-><init>()V HSPLcom/android/internal/policy/PhoneWindow;-><init>(Landroid/content/Context;)V HSPLcom/android/internal/policy/PhoneWindow;-><init>(Landroid/content/Context;Landroid/view/Window;Landroid/view/ViewRootImpl$ActivityConfigCallback;)V +HSPLcom/android/internal/policy/PhoneWindow;->alwaysReadCloseOnTouchAttr()V HSPLcom/android/internal/policy/PhoneWindow;->closeAllPanels()V HSPLcom/android/internal/policy/PhoneWindow;->closeContextMenu()V HSPLcom/android/internal/policy/PhoneWindow;->closePanel(Lcom/android/internal/policy/PhoneWindow$PanelFeatureState;Z)V @@ -20666,12 +21570,14 @@ HSPLcom/android/internal/policy/PhoneWindow;->getNavigationBarDividerColor()I HSPLcom/android/internal/policy/PhoneWindow;->getPanelState(IZ)Lcom/android/internal/policy/PhoneWindow$PanelFeatureState; HSPLcom/android/internal/policy/PhoneWindow;->getPanelState(IZLcom/android/internal/policy/PhoneWindow$PanelFeatureState;)Lcom/android/internal/policy/PhoneWindow$PanelFeatureState; HSPLcom/android/internal/policy/PhoneWindow;->getTransition(Landroid/transition/Transition;Landroid/transition/Transition;I)Landroid/transition/Transition; +HSPLcom/android/internal/policy/PhoneWindow;->getVolumeControlStream()I HSPLcom/android/internal/policy/PhoneWindow;->installDecor()V HSPLcom/android/internal/policy/PhoneWindow;->invalidatePanelMenu(I)V HSPLcom/android/internal/policy/PhoneWindow;->isFloating()Z HSPLcom/android/internal/policy/PhoneWindow;->isShowingWallpaper()Z HSPLcom/android/internal/policy/PhoneWindow;->isTranslucent()Z HSPLcom/android/internal/policy/PhoneWindow;->onActive()V +HSPLcom/android/internal/policy/PhoneWindow;->onKeyDown(IILandroid/view/KeyEvent;)Z HSPLcom/android/internal/policy/PhoneWindow;->onKeyUp(IILandroid/view/KeyEvent;)Z HSPLcom/android/internal/policy/PhoneWindow;->onViewRootImplSet(Landroid/view/ViewRootImpl;)V HSPLcom/android/internal/policy/PhoneWindow;->openPanelsAfterRestore()V @@ -20732,6 +21638,7 @@ HSPLcom/android/internal/statusbar/NotificationVisibility$NotificationLocation;- PLcom/android/internal/statusbar/NotificationVisibility$NotificationLocation;->values()[Lcom/android/internal/statusbar/NotificationVisibility$NotificationLocation; HPLcom/android/internal/statusbar/NotificationVisibility;->readFromParcel(Landroid/os/Parcel;)V HSPLcom/android/internal/statusbar/NotificationVisibility;->recycle()V +HSPLcom/android/internal/statusbar/StatusBarIcon;-><init>(Landroid/os/UserHandle;Ljava/lang/String;Landroid/graphics/drawable/Icon;IILjava/lang/CharSequence;)V PLcom/android/internal/telecom/IConnectionService$Stub$Proxy;->addConnectionServiceAdapter(Lcom/android/internal/telecom/IConnectionServiceAdapter;Landroid/telecom/Logging/Session$Info;)V PLcom/android/internal/telecom/IConnectionService$Stub$Proxy;->createConnection(Landroid/telecom/PhoneAccountHandle;Ljava/lang/String;Landroid/telecom/ConnectionRequest;ZZLandroid/telecom/Logging/Session$Info;)V PLcom/android/internal/telecom/IConnectionService$Stub$Proxy;->createConnectionComplete(Ljava/lang/String;Landroid/telecom/Logging/Session$Info;)V @@ -20749,6 +21656,7 @@ PLcom/android/internal/telecom/IInCallService$Stub$Proxy;->onCanAddCallChanged(Z PLcom/android/internal/telecom/IInCallService$Stub$Proxy;->setInCallAdapter(Lcom/android/internal/telecom/IInCallAdapter;)V HPLcom/android/internal/telecom/IInCallService$Stub$Proxy;->updateCall(Landroid/telecom/ParcelableCall;)V PLcom/android/internal/telecom/IInCallService$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/telecom/IInCallService; +HPLcom/android/internal/telecom/ITelecomService$Stub$Proxy;->addNewIncomingCall(Landroid/telecom/PhoneAccountHandle;Landroid/os/Bundle;)V HSPLcom/android/internal/telecom/ITelecomService$Stub$Proxy;->getCallCapablePhoneAccounts(ZLjava/lang/String;)Ljava/util/List; HSPLcom/android/internal/telecom/ITelecomService$Stub$Proxy;->getCallState()I HSPLcom/android/internal/telecom/ITelecomService$Stub$Proxy;->getCurrentTtyMode(Ljava/lang/String;)I @@ -20759,10 +21667,12 @@ HSPLcom/android/internal/telecom/ITelecomService$Stub$Proxy;->getPhoneAccountsSu HSPLcom/android/internal/telecom/ITelecomService$Stub$Proxy;->getSystemDialerPackage()Ljava/lang/String; HSPLcom/android/internal/telecom/ITelecomService$Stub$Proxy;->getUserSelectedOutgoingPhoneAccount(Ljava/lang/String;)Landroid/telecom/PhoneAccountHandle; HSPLcom/android/internal/telecom/ITelecomService$Stub$Proxy;->isInCall(Ljava/lang/String;)Z +HSPLcom/android/internal/telecom/ITelecomService$Stub$Proxy;->isVoiceMailNumber(Landroid/telecom/PhoneAccountHandle;Ljava/lang/String;Ljava/lang/String;)Z HSPLcom/android/internal/telecom/ITelecomService$Stub$Proxy;->registerPhoneAccount(Landroid/telecom/PhoneAccount;)V HSPLcom/android/internal/telecom/ITelecomService$Stub$Proxy;->unregisterPhoneAccount(Landroid/telecom/PhoneAccountHandle;)V HSPLcom/android/internal/telecom/ITelecomService$Stub;-><init>()V HSPLcom/android/internal/telecom/ITelecomService$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/telecom/ITelecomService; +HPLcom/android/internal/telecom/ITelecomService$Stub;->getDefaultTransactionName(I)Ljava/lang/String; HSPLcom/android/internal/telecom/ITelecomService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HSPLcom/android/internal/telecom/IVideoProvider$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/telecom/IVideoProvider; PLcom/android/internal/telecom/RemoteServiceCallback$Stub$Proxy;->onResult(Ljava/util/List;Ljava/util/List;)V @@ -20868,11 +21778,14 @@ HSPLcom/android/internal/telephony/BaseCommands;->setRadioState(IZ)V HSPLcom/android/internal/telephony/BaseCommands;->unregisterForCallWaitingInfo(Landroid/os/Handler;)V HSPLcom/android/internal/telephony/BaseCommands;->unregisterForCdmaOtaProvision(Landroid/os/Handler;)V HSPLcom/android/internal/telephony/BaseCommands;->unregisterForCdmaPrlChanged(Landroid/os/Handler;)V +HPLcom/android/internal/telephony/BaseCommands;->unregisterForInCallVoicePrivacyOff(Landroid/os/Handler;)V +HPLcom/android/internal/telephony/BaseCommands;->unregisterForInCallVoicePrivacyOn(Landroid/os/Handler;)V HSPLcom/android/internal/telephony/BaseCommands;->unregisterForLceInfo(Landroid/os/Handler;)V HSPLcom/android/internal/telephony/BaseCommands;->unregisterForNattKeepaliveStatus(Landroid/os/Handler;)V PLcom/android/internal/telephony/BlockChecker;->getBlockStatus(Landroid/content/Context;Ljava/lang/String;Landroid/os/Bundle;)I HSPLcom/android/internal/telephony/Call$SrvccState;-><init>(Ljava/lang/String;I)V HSPLcom/android/internal/telephony/Call$State;-><init>(Ljava/lang/String;I)V +HPLcom/android/internal/telephony/Call$State;->isRinging()Z HSPLcom/android/internal/telephony/Call$State;->values()[Lcom/android/internal/telephony/Call$State; HSPLcom/android/internal/telephony/Call;->clearDisconnected()V HSPLcom/android/internal/telephony/Call;->getEarliestConnection()Lcom/android/internal/telephony/Connection; @@ -20882,7 +21795,13 @@ HSPLcom/android/internal/telephony/Call;->isRinging()Z HSPLcom/android/internal/telephony/Call;->setState(Lcom/android/internal/telephony/Call$State;)V HSPLcom/android/internal/telephony/CallManager$CallManagerHandler;->handleMessage(Landroid/os/Message;)V HSPLcom/android/internal/telephony/CallManager;-><init>()V +HPLcom/android/internal/telephony/CallManager;->getActiveFgCall(I)Lcom/android/internal/telephony/Call; +HPLcom/android/internal/telephony/CallManager;->getActiveFgCallState(I)Lcom/android/internal/telephony/Call$State; +HPLcom/android/internal/telephony/CallManager;->getFirstNonIdleCall(Ljava/util/List;I)Lcom/android/internal/telephony/Call; HSPLcom/android/internal/telephony/CallManager;->getInstance()Lcom/android/internal/telephony/CallManager; +HPLcom/android/internal/telephony/CallManager;->getPhone(I)Lcom/android/internal/telephony/Phone; +HPLcom/android/internal/telephony/CallManager;->hasActiveFgCall()Z +HPLcom/android/internal/telephony/CallManager;->hasMoreThanOneRingingCall()Z HSPLcom/android/internal/telephony/CallManager;->registerForDisconnect(Landroid/os/Handler;ILjava/lang/Object;)V HSPLcom/android/internal/telephony/CallManager;->registerForDisplayInfo(Landroid/os/Handler;ILjava/lang/Object;)V HSPLcom/android/internal/telephony/CallManager;->registerForInCallVoicePrivacyOff(Landroid/os/Handler;ILjava/lang/Object;)V @@ -20895,9 +21814,10 @@ HSPLcom/android/internal/telephony/CallManager;->registerForTtyModeReceived(Land HSPLcom/android/internal/telephony/CallManager;->registerPhone(Lcom/android/internal/telephony/Phone;)Z HSPLcom/android/internal/telephony/CallTracker;->handleRadioAvailable()V HSPLcom/android/internal/telephony/CallTracker;->pollCallsWhenSafe()V -PLcom/android/internal/telephony/CallerInfo;->doSecondaryLookupIfNecessary(Landroid/content/Context;Ljava/lang/String;Lcom/android/internal/telephony/CallerInfo;)Lcom/android/internal/telephony/CallerInfo; -PLcom/android/internal/telephony/CallerInfo;->getCallerInfo(Landroid/content/Context;Landroid/net/Uri;Landroid/database/Cursor;)Lcom/android/internal/telephony/CallerInfo; -PLcom/android/internal/telephony/CallerInfo;->getCurrentCountryIso(Landroid/content/Context;Ljava/util/Locale;)Ljava/lang/String; +HPLcom/android/internal/telephony/CallerInfo;->doSecondaryLookupIfNecessary(Landroid/content/Context;Ljava/lang/String;Lcom/android/internal/telephony/CallerInfo;)Lcom/android/internal/telephony/CallerInfo; +HPLcom/android/internal/telephony/CallerInfo;->getCallerInfo(Landroid/content/Context;Landroid/net/Uri;Landroid/database/Cursor;)Lcom/android/internal/telephony/CallerInfo; +HPLcom/android/internal/telephony/CallerInfo;->getCurrentCountryIso(Landroid/content/Context;Ljava/util/Locale;)Ljava/lang/String; +HPLcom/android/internal/telephony/CallerInfo;->getGeoDescription(Landroid/content/Context;Ljava/lang/String;)Ljava/lang/String; HPLcom/android/internal/telephony/CallerInfo;->toString()Ljava/lang/String; PLcom/android/internal/telephony/CallerInfoAsyncQuery$CallerInfoAsyncQueryHandler$1;->run()V HPLcom/android/internal/telephony/CallerInfoAsyncQuery$CallerInfoAsyncQueryHandler$CallerInfoWorkerHandler;->handleMessage(Landroid/os/Message;)V @@ -20955,7 +21875,7 @@ HSPLcom/android/internal/telephony/CarrierServiceBindHelper$AppBinding;->rebind( HSPLcom/android/internal/telephony/CarrierServiceBindHelper$AppBinding;->unbind(Z)V HSPLcom/android/internal/telephony/CarrierServiceBindHelper$CarrierServicePackageMonitor;->evaluateBinding(Ljava/lang/String;Z)V HSPLcom/android/internal/telephony/CarrierServiceBindHelper$CarrierServicePackageMonitor;->onPackageModified(Ljava/lang/String;)V -PLcom/android/internal/telephony/CarrierServiceBindHelper$CarrierServicePackageMonitor;->onPackageUpdateFinished(Ljava/lang/String;I)V +HPLcom/android/internal/telephony/CarrierServiceBindHelper$CarrierServicePackageMonitor;->onPackageUpdateFinished(Ljava/lang/String;I)V HSPLcom/android/internal/telephony/CarrierServiceBindHelper;-><init>(Landroid/content/Context;)V HSPLcom/android/internal/telephony/CarrierServiceBindHelper;->updateForPhoneId(ILjava/lang/String;)V HSPLcom/android/internal/telephony/CarrierServiceStateTracker$1;->onSubscriptionsChanged()V @@ -21011,13 +21931,43 @@ HSPLcom/android/internal/telephony/ClientWakelockTracker;->updateConcurrentReque HSPLcom/android/internal/telephony/CommandException$Error;-><init>(Ljava/lang/String;I)V HSPLcom/android/internal/telephony/CommandException;->fromRilErrno(I)Lcom/android/internal/telephony/CommandException; HSPLcom/android/internal/telephony/CommandException;->getCommandError()Lcom/android/internal/telephony/CommandException$Error; +HPLcom/android/internal/telephony/Connection;-><init>(I)V +HPLcom/android/internal/telephony/Connection;->addListener(Lcom/android/internal/telephony/Connection$Listener;)V +HPLcom/android/internal/telephony/Connection;->addPostDialListener(Lcom/android/internal/telephony/Connection$PostDialListener;)V +HPLcom/android/internal/telephony/Connection;->getAddress()Ljava/lang/String; +HPLcom/android/internal/telephony/Connection;->getAudioModeIsVoip()Z +HPLcom/android/internal/telephony/Connection;->getAudioQuality()I +HPLcom/android/internal/telephony/Connection;->getCallRadioTech()I +HPLcom/android/internal/telephony/Connection;->getCnapName()Ljava/lang/String; +HPLcom/android/internal/telephony/Connection;->getCnapNamePresentation()I +HPLcom/android/internal/telephony/Connection;->getConnectTime()J +HPLcom/android/internal/telephony/Connection;->getConnectionCapabilities()I +HPLcom/android/internal/telephony/Connection;->getConnectionExtras()Landroid/os/Bundle; +HPLcom/android/internal/telephony/Connection;->getCreateTime()J +HPLcom/android/internal/telephony/Connection;->getDisconnectCause()I +HPLcom/android/internal/telephony/Connection;->getPhoneType()I +HPLcom/android/internal/telephony/Connection;->getPostDialState()Lcom/android/internal/telephony/Connection$PostDialState; +HPLcom/android/internal/telephony/Connection;->getTelecomCallId()Ljava/lang/String; +HPLcom/android/internal/telephony/Connection;->getVideoProvider()Landroid/telecom/Connection$VideoProvider; +HPLcom/android/internal/telephony/Connection;->getVideoState()I +HPLcom/android/internal/telephony/Connection;->isActiveCallDisconnectedOnAnswer()Z +HPLcom/android/internal/telephony/Connection;->isIncoming()Z +HPLcom/android/internal/telephony/Connection;->isNetworkIdentifiedEmergencyCall()Z +HPLcom/android/internal/telephony/Connection;->isPulledCall()Z +HPLcom/android/internal/telephony/Connection;->notifyDisconnect(I)V +HPLcom/android/internal/telephony/Connection;->removeListener(Lcom/android/internal/telephony/Connection$Listener;)V +HPLcom/android/internal/telephony/Connection;->removePostDialListener(Lcom/android/internal/telephony/Connection$PostDialListener;)V +HPLcom/android/internal/telephony/Connection;->setAudioQuality(I)V +HPLcom/android/internal/telephony/Connection;->setCallRadioTech(I)V +HPLcom/android/internal/telephony/Connection;->setTelecomCallId(Ljava/lang/String;)V +HPLcom/android/internal/telephony/Connection;->shouldAllowAddCallDuringVideoCall()Z HSPLcom/android/internal/telephony/DctConstants$Activity;-><init>(Ljava/lang/String;I)V HSPLcom/android/internal/telephony/DctConstants$Activity;->values()[Lcom/android/internal/telephony/DctConstants$Activity; HSPLcom/android/internal/telephony/DctConstants$State;-><init>(Ljava/lang/String;I)V HSPLcom/android/internal/telephony/DctConstants$State;->values()[Lcom/android/internal/telephony/DctConstants$State; HSPLcom/android/internal/telephony/DebugService;-><init>()V -PLcom/android/internal/telephony/DebugService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V -PLcom/android/internal/telephony/DefaultPhoneNotifier;->convertDataActivityState(Lcom/android/internal/telephony/PhoneInternalInterface$DataActivityState;)I +HPLcom/android/internal/telephony/DebugService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V +HPLcom/android/internal/telephony/DefaultPhoneNotifier;->convertDataActivityState(Lcom/android/internal/telephony/PhoneInternalInterface$DataActivityState;)I HSPLcom/android/internal/telephony/DefaultPhoneNotifier;->convertPreciseCallState(Lcom/android/internal/telephony/Call$State;)I HSPLcom/android/internal/telephony/DefaultPhoneNotifier;->doNotifyDataConnection(Lcom/android/internal/telephony/Phone;Ljava/lang/String;Lcom/android/internal/telephony/PhoneConstants$DataState;)V HSPLcom/android/internal/telephony/DefaultPhoneNotifier;->notifyCallForwardingChanged(Lcom/android/internal/telephony/Phone;)V @@ -21037,7 +21987,7 @@ HSPLcom/android/internal/telephony/DefaultPhoneNotifier;->notifyRadioPowerStateC HSPLcom/android/internal/telephony/DefaultPhoneNotifier;->notifyServiceState(Lcom/android/internal/telephony/Phone;)V HSPLcom/android/internal/telephony/DefaultPhoneNotifier;->notifySignalStrength(Lcom/android/internal/telephony/Phone;)V HSPLcom/android/internal/telephony/DeviceStateMonitor$1;->onAvailable(Landroid/net/Network;)V -PLcom/android/internal/telephony/DeviceStateMonitor$1;->onLost(Landroid/net/Network;)V +HPLcom/android/internal/telephony/DeviceStateMonitor$1;->onLost(Landroid/net/Network;)V HSPLcom/android/internal/telephony/DeviceStateMonitor$2;->onDisplayChanged(I)V HSPLcom/android/internal/telephony/DeviceStateMonitor$3;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V HSPLcom/android/internal/telephony/DeviceStateMonitor;-><init>(Lcom/android/internal/telephony/Phone;)V @@ -21054,12 +22004,15 @@ HSPLcom/android/internal/telephony/ExponentialBackoff$1;->removeCallbacks(Ljava/ HSPLcom/android/internal/telephony/ExponentialBackoff;-><init>(JJILandroid/os/Looper;Ljava/lang/Runnable;)V HSPLcom/android/internal/telephony/ExponentialBackoff;->stop()V HSPLcom/android/internal/telephony/GlobalSettingsHelper;->getSettingName(Landroid/content/Context;Ljava/lang/String;I)Ljava/lang/String; +HSPLcom/android/internal/telephony/GlobalSettingsHelper;->setInt(Landroid/content/Context;Ljava/lang/String;II)Z HSPLcom/android/internal/telephony/GsmAlphabet;->enableCountrySpecificEncodings()V HSPLcom/android/internal/telephony/GsmAlphabet;->gsm7BitPackedToString([BIIIII)Ljava/lang/String; HSPLcom/android/internal/telephony/GsmAlphabet;->gsm8BitUnpackedToString([BIILjava/lang/String;)Ljava/lang/String; HSPLcom/android/internal/telephony/GsmCdmaCall;->getConnections()Ljava/util/List; +HPLcom/android/internal/telephony/GsmCdmaCall;->getPhone()Lcom/android/internal/telephony/Phone; HSPLcom/android/internal/telephony/GsmCdmaCallTracker;-><init>(Lcom/android/internal/telephony/GsmCdmaPhone;)V HSPLcom/android/internal/telephony/GsmCdmaCallTracker;->dispatchCsCallRadioTech(I)V +HPLcom/android/internal/telephony/GsmCdmaCallTracker;->getPhone()Lcom/android/internal/telephony/GsmCdmaPhone; HSPLcom/android/internal/telephony/GsmCdmaCallTracker;->getState()Lcom/android/internal/telephony/PhoneConstants$State; HSPLcom/android/internal/telephony/GsmCdmaCallTracker;->handleMessage(Landroid/os/Message;)V HSPLcom/android/internal/telephony/GsmCdmaCallTracker;->handlePollCalls(Landroid/os/AsyncResult;)V @@ -21079,7 +22032,7 @@ HSPLcom/android/internal/telephony/GsmCdmaPhone;->getBackgroundCall()Lcom/androi HSPLcom/android/internal/telephony/GsmCdmaPhone;->getCallTracker()Lcom/android/internal/telephony/CallTracker; HSPLcom/android/internal/telephony/GsmCdmaPhone;->getCarrierId()I HSPLcom/android/internal/telephony/GsmCdmaPhone;->getCarrierInfoForImsiEncryption(I)Landroid/telephony/ImsiEncryptionInfo; -PLcom/android/internal/telephony/GsmCdmaPhone;->getCellLocation(Landroid/os/WorkSource;Landroid/os/Message;)V +HPLcom/android/internal/telephony/GsmCdmaPhone;->getCellLocation(Landroid/os/WorkSource;Landroid/os/Message;)V HSPLcom/android/internal/telephony/GsmCdmaPhone;->getCsCallRadioTech(II)I HSPLcom/android/internal/telephony/GsmCdmaPhone;->getDataActivityState()Lcom/android/internal/telephony/PhoneInternalInterface$DataActivityState; HSPLcom/android/internal/telephony/GsmCdmaPhone;->getDataConnectionState(Ljava/lang/String;)Lcom/android/internal/telephony/PhoneConstants$DataState; @@ -21092,11 +22045,11 @@ HSPLcom/android/internal/telephony/GsmCdmaPhone;->getFullIccSerialNumber()Ljava/ HSPLcom/android/internal/telephony/GsmCdmaPhone;->getGroupIdLevel1()Ljava/lang/String; HSPLcom/android/internal/telephony/GsmCdmaPhone;->getGroupIdLevel2()Ljava/lang/String; HSPLcom/android/internal/telephony/GsmCdmaPhone;->getIccCard()Lcom/android/internal/telephony/IccCard; -PLcom/android/internal/telephony/GsmCdmaPhone;->getIccPhoneBookInterfaceManager()Lcom/android/internal/telephony/IccPhoneBookInterfaceManager; +HPLcom/android/internal/telephony/GsmCdmaPhone;->getIccPhoneBookInterfaceManager()Lcom/android/internal/telephony/IccPhoneBookInterfaceManager; HSPLcom/android/internal/telephony/GsmCdmaPhone;->getIccRecordsLoaded()Z HSPLcom/android/internal/telephony/GsmCdmaPhone;->getIccSerialNumber()Ljava/lang/String; HSPLcom/android/internal/telephony/GsmCdmaPhone;->getIccSmsInterfaceManager()Lcom/android/internal/telephony/IccSmsInterfaceManager; -PLcom/android/internal/telephony/GsmCdmaPhone;->getImei()Ljava/lang/String; +HPLcom/android/internal/telephony/GsmCdmaPhone;->getImei()Ljava/lang/String; HSPLcom/android/internal/telephony/GsmCdmaPhone;->getIsimRecords()Lcom/android/internal/telephony/uicc/IsimRecords; HSPLcom/android/internal/telephony/GsmCdmaPhone;->getLine1AlphaTag()Ljava/lang/String; HSPLcom/android/internal/telephony/GsmCdmaPhone;->getLine1Number()Ljava/lang/String; @@ -21132,6 +22085,7 @@ HSPLcom/android/internal/telephony/GsmCdmaPhone;->mergeServiceStates(Landroid/te HSPLcom/android/internal/telephony/GsmCdmaPhone;->notifyCallForwardingIndicator()V HSPLcom/android/internal/telephony/GsmCdmaPhone;->notifyLocationChanged(Landroid/telephony/CellLocation;)V HSPLcom/android/internal/telephony/GsmCdmaPhone;->notifyPhoneStateChanged()V +HSPLcom/android/internal/telephony/GsmCdmaPhone;->notifyPreciseCallStateChanged()V HSPLcom/android/internal/telephony/GsmCdmaPhone;->notifyServiceStateChanged(Landroid/telephony/ServiceState;)V HSPLcom/android/internal/telephony/GsmCdmaPhone;->onUpdateIccAvailability()V HSPLcom/android/internal/telephony/GsmCdmaPhone;->phoneObjectUpdater(I)V @@ -21166,15 +22120,15 @@ HSPLcom/android/internal/telephony/HardwareConfig;->assignModem(Ljava/lang/Strin HSPLcom/android/internal/telephony/HardwareConfig;->assignSim(Ljava/lang/String;ILjava/lang/String;)V HSPLcom/android/internal/telephony/HardwareConfig;->toString()Ljava/lang/String; HSPLcom/android/internal/telephony/ICarrierConfigLoader$Stub$Proxy;->getConfigForSubId(ILjava/lang/String;)Landroid/os/PersistableBundle; -PLcom/android/internal/telephony/ICarrierConfigLoader$Stub$Proxy;->getDefaultCarrierServicePackageName()Ljava/lang/String; +HPLcom/android/internal/telephony/ICarrierConfigLoader$Stub$Proxy;->getDefaultCarrierServicePackageName()Ljava/lang/String; HSPLcom/android/internal/telephony/ICarrierConfigLoader$Stub;-><init>()V HSPLcom/android/internal/telephony/ICarrierConfigLoader$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/telephony/ICarrierConfigLoader; HSPLcom/android/internal/telephony/ICarrierConfigLoader$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z -PLcom/android/internal/telephony/IIccPhoneBook$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLcom/android/internal/telephony/IIccPhoneBook$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z PLcom/android/internal/telephony/IMms$Stub$Proxy;->getAutoPersisting()Z HSPLcom/android/internal/telephony/IMms$Stub;-><init>()V HSPLcom/android/internal/telephony/IMms$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/telephony/IMms; -PLcom/android/internal/telephony/IMms$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLcom/android/internal/telephony/IMms$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HSPLcom/android/internal/telephony/IOnSubscriptionsChangedListener$Stub$Proxy;->asBinder()Landroid/os/IBinder; HSPLcom/android/internal/telephony/IOnSubscriptionsChangedListener$Stub$Proxy;->onSubscriptionsChanged()V HSPLcom/android/internal/telephony/IOnSubscriptionsChangedListener$Stub;-><init>()V @@ -21207,6 +22161,7 @@ HSPLcom/android/internal/telephony/IPhoneSubInfo$Stub$Proxy;->getVoiceMailNumber HSPLcom/android/internal/telephony/IPhoneSubInfo$Stub;-><init>()V HSPLcom/android/internal/telephony/IPhoneSubInfo$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/telephony/IPhoneSubInfo; HSPLcom/android/internal/telephony/IPhoneSubInfo$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLcom/android/internal/telephony/ISms$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/telephony/ISms; HSPLcom/android/internal/telephony/ISms$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HSPLcom/android/internal/telephony/ISmsImplBase;-><init>()V HSPLcom/android/internal/telephony/ISub$Stub$Proxy;->getActiveSubIdList(Z)[I @@ -21233,6 +22188,8 @@ HSPLcom/android/internal/telephony/ITelephony$Stub$Proxy;->getCarrierPrivilegeSt HSPLcom/android/internal/telephony/ITelephony$Stub$Proxy;->getDataNetworkTypeForSubscriber(ILjava/lang/String;)I HSPLcom/android/internal/telephony/ITelephony$Stub$Proxy;->getDataState()I HSPLcom/android/internal/telephony/ITelephony$Stub$Proxy;->getEmergencyNumberList(Ljava/lang/String;)Ljava/util/Map; +HSPLcom/android/internal/telephony/ITelephony$Stub$Proxy;->getImeiForSlot(ILjava/lang/String;)Ljava/lang/String; +HSPLcom/android/internal/telephony/ITelephony$Stub$Proxy;->getImsConfig(II)Landroid/telephony/ims/aidl/IImsConfig; HSPLcom/android/internal/telephony/ITelephony$Stub$Proxy;->getLine1NumberForDisplay(ILjava/lang/String;)Ljava/lang/String; HSPLcom/android/internal/telephony/ITelephony$Stub$Proxy;->getMergedSubscriberIds(Ljava/lang/String;)[Ljava/lang/String; HSPLcom/android/internal/telephony/ITelephony$Stub$Proxy;->getMmTelFeatureAndListen(ILcom/android/ims/internal/IImsServiceFeatureCallback;)Landroid/telephony/ims/aidl/IImsMmTelFeature; @@ -21277,25 +22234,26 @@ HSPLcom/android/internal/telephony/ITelephonyRegistry$Stub$Proxy;->notifySubscri HSPLcom/android/internal/telephony/ITelephonyRegistry$Stub$Proxy;->removeOnSubscriptionsChangedListener(Ljava/lang/String;Lcom/android/internal/telephony/IOnSubscriptionsChangedListener;)V HSPLcom/android/internal/telephony/ITelephonyRegistry$Stub;-><init>()V HSPLcom/android/internal/telephony/ITelephonyRegistry$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/telephony/ITelephonyRegistry; -PLcom/android/internal/telephony/ITelephonyRegistry$Stub;->getDefaultTransactionName(I)Ljava/lang/String; +HPLcom/android/internal/telephony/ITelephonyRegistry$Stub;->getDefaultTransactionName(I)Ljava/lang/String; HSPLcom/android/internal/telephony/ITelephonyRegistry$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HSPLcom/android/internal/telephony/IccCard;->getState()Lcom/android/internal/telephony/IccCardConstants$State; HSPLcom/android/internal/telephony/IccCard;->registerForNetworkLocked(Landroid/os/Handler;ILjava/lang/Object;)V HSPLcom/android/internal/telephony/IccCardConstants$State;-><init>(Ljava/lang/String;I)V HSPLcom/android/internal/telephony/IccCardConstants$State;->values()[Lcom/android/internal/telephony/IccCardConstants$State; -PLcom/android/internal/telephony/IccPhoneBookInterfaceManager$1;->handleMessage(Landroid/os/Message;)V -PLcom/android/internal/telephony/IccPhoneBookInterfaceManager$1;->notifyPending(Lcom/android/internal/telephony/IccPhoneBookInterfaceManager$Request;Ljava/lang/Object;)V -PLcom/android/internal/telephony/IccPhoneBookInterfaceManager;->checkThread()V -PLcom/android/internal/telephony/IccPhoneBookInterfaceManager;->getAdnRecordsInEf(I)Ljava/util/List; -PLcom/android/internal/telephony/IccPhoneBookInterfaceManager;->logd(Ljava/lang/String;)V +HPLcom/android/internal/telephony/IccPhoneBookInterfaceManager$1;->handleMessage(Landroid/os/Message;)V +HPLcom/android/internal/telephony/IccPhoneBookInterfaceManager$1;->notifyPending(Lcom/android/internal/telephony/IccPhoneBookInterfaceManager$Request;Ljava/lang/Object;)V +HPLcom/android/internal/telephony/IccPhoneBookInterfaceManager;->checkThread()V +HPLcom/android/internal/telephony/IccPhoneBookInterfaceManager;->getAdnRecordsInEf(I)Ljava/util/List; +HPLcom/android/internal/telephony/IccPhoneBookInterfaceManager;->logd(Ljava/lang/String;)V HSPLcom/android/internal/telephony/IccPhoneBookInterfaceManager;->updateIccRecords(Lcom/android/internal/telephony/uicc/IccRecords;)V -PLcom/android/internal/telephony/IccPhoneBookInterfaceManager;->waitForResult(Lcom/android/internal/telephony/IccPhoneBookInterfaceManager$Request;)V +HPLcom/android/internal/telephony/IccPhoneBookInterfaceManager;->waitForResult(Lcom/android/internal/telephony/IccPhoneBookInterfaceManager$Request;)V HSPLcom/android/internal/telephony/IccProvider;-><init>()V -PLcom/android/internal/telephony/IccProvider;->getRequestSubId(Landroid/net/Uri;)I +HPLcom/android/internal/telephony/IccProvider;->getRequestSubId(Landroid/net/Uri;)I HSPLcom/android/internal/telephony/IccProvider;->getType(Landroid/net/Uri;)Ljava/lang/String; -PLcom/android/internal/telephony/IccProvider;->loadFromEf(II)Landroid/database/MatrixCursor; +HPLcom/android/internal/telephony/IccProvider;->loadFromEf(II)Landroid/database/MatrixCursor; +HPLcom/android/internal/telephony/IccProvider;->loadRecord(Lcom/android/internal/telephony/uicc/AdnRecord;Landroid/database/MatrixCursor;I)V HSPLcom/android/internal/telephony/IccProvider;->onCreate()Z -PLcom/android/internal/telephony/IccProvider;->query(Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor; +HPLcom/android/internal/telephony/IccProvider;->query(Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor; HSPLcom/android/internal/telephony/IccSmsInterfaceManager$1;->handleMessage(Landroid/os/Message;)V HSPLcom/android/internal/telephony/IccSmsInterfaceManager$CdmaBroadcastRangeManager;->addRange(IIZ)V HSPLcom/android/internal/telephony/IccSmsInterfaceManager$CdmaBroadcastRangeManager;->finishUpdate()Z @@ -21334,14 +22292,18 @@ HSPLcom/android/internal/telephony/InboundSmsHandler$IdleState;->exit()V HSPLcom/android/internal/telephony/InboundSmsHandler$IdleState;->processMessage(Landroid/os/Message;)Z HSPLcom/android/internal/telephony/InboundSmsHandler$StartupState;->enter()V HSPLcom/android/internal/telephony/InboundSmsHandler$StartupState;->processMessage(Landroid/os/Message;)Z -PLcom/android/internal/telephony/InboundSmsHandler$WaitingState;->enter()V -PLcom/android/internal/telephony/InboundSmsHandler$WaitingState;->exit()V -PLcom/android/internal/telephony/InboundSmsHandler$WaitingState;->processMessage(Landroid/os/Message;)Z +HPLcom/android/internal/telephony/InboundSmsHandler$WaitingState;->enter()V +HPLcom/android/internal/telephony/InboundSmsHandler$WaitingState;->exit()V +HPLcom/android/internal/telephony/InboundSmsHandler$WaitingState;->processMessage(Landroid/os/Message;)Z HSPLcom/android/internal/telephony/InboundSmsHandler;-><init>(Ljava/lang/String;Landroid/content/Context;Lcom/android/internal/telephony/SmsStorageMonitor;Lcom/android/internal/telephony/Phone;Lcom/android/internal/telephony/CellBroadcastHandler;)V HSPLcom/android/internal/telephony/InboundSmsHandler;->addTrackerToRawTable(Lcom/android/internal/telephony/InboundSmsTracker;Z)I HSPLcom/android/internal/telephony/InboundSmsHandler;->addTrackerToRawTableAndSendMessage(Lcom/android/internal/telephony/InboundSmsTracker;Z)I +HSPLcom/android/internal/telephony/InboundSmsHandler;->checkAndHandleDuplicate(Lcom/android/internal/telephony/InboundSmsTracker;)Z HSPLcom/android/internal/telephony/InboundSmsHandler;->deleteFromRawTable(Ljava/lang/String;[Ljava/lang/String;I)V +HPLcom/android/internal/telephony/InboundSmsHandler;->dispatchIntent(Landroid/content/Intent;Ljava/lang/String;ILandroid/os/Bundle;Landroid/content/BroadcastReceiver;Landroid/os/UserHandle;)V HSPLcom/android/internal/telephony/InboundSmsHandler;->dispatchMessage(Lcom/android/internal/telephony/SmsMessageBase;)I +HSPLcom/android/internal/telephony/InboundSmsHandler;->dispatchNormalMessage(Lcom/android/internal/telephony/SmsMessageBase;)I +HPLcom/android/internal/telephony/InboundSmsHandler;->filterSms([[BILcom/android/internal/telephony/InboundSmsTracker;Lcom/android/internal/telephony/InboundSmsHandler$SmsBroadcastReceiver;Z)Z HSPLcom/android/internal/telephony/InboundSmsHandler;->getPhone()Lcom/android/internal/telephony/Phone; HSPLcom/android/internal/telephony/InboundSmsHandler;->getWakeLockTimeout()I HSPLcom/android/internal/telephony/InboundSmsHandler;->log(Ljava/lang/String;)V @@ -21439,7 +22401,7 @@ HSPLcom/android/internal/telephony/Phone;->getCallForwardingIndicatorFromSharedP HSPLcom/android/internal/telephony/Phone;->getCarrierActionAgent()Lcom/android/internal/telephony/CarrierActionAgent; HSPLcom/android/internal/telephony/Phone;->getCarrierSignalAgent()Lcom/android/internal/telephony/CarrierSignalAgent; HSPLcom/android/internal/telephony/Phone;->getContext()Landroid/content/Context; -PLcom/android/internal/telephony/Phone;->getCurrentUiccAppType()Lcom/android/internal/telephony/uicc/IccCardApplicationStatus$AppType; +HPLcom/android/internal/telephony/Phone;->getCurrentUiccAppType()Lcom/android/internal/telephony/uicc/IccCardApplicationStatus$AppType; HSPLcom/android/internal/telephony/Phone;->getDataConnectionState()Lcom/android/internal/telephony/PhoneConstants$DataState; HSPLcom/android/internal/telephony/Phone;->getDataEnabledSettings()Lcom/android/internal/telephony/dataconnection/DataEnabledSettings; HSPLcom/android/internal/telephony/Phone;->getDcTracker(I)Lcom/android/internal/telephony/dataconnection/DcTracker; @@ -21464,11 +22426,11 @@ HSPLcom/android/internal/telephony/Phone;->getUnitTestMode()Z HSPLcom/android/internal/telephony/Phone;->getVtDataUsage(Z)Landroid/net/NetworkStats; HSPLcom/android/internal/telephony/Phone;->handleMessage(Landroid/os/Message;)V HSPLcom/android/internal/telephony/Phone;->hasMatchedTetherApnSetting()Z -PLcom/android/internal/telephony/Phone;->isConcurrentVoiceAndDataAllowed()Z +HPLcom/android/internal/telephony/Phone;->isConcurrentVoiceAndDataAllowed()Z HSPLcom/android/internal/telephony/Phone;->isDataAllowed(I)Z HSPLcom/android/internal/telephony/Phone;->isDataAllowed(ILcom/android/internal/telephony/dataconnection/DataConnectionReasons;)Z HSPLcom/android/internal/telephony/Phone;->isImsCapabilityAvailable(II)Z -PLcom/android/internal/telephony/Phone;->isImsRegistered()Z +HPLcom/android/internal/telephony/Phone;->isImsRegistered()Z HSPLcom/android/internal/telephony/Phone;->isInEcm()Z HSPLcom/android/internal/telephony/Phone;->isShuttingDown()Z HSPLcom/android/internal/telephony/Phone;->isVideoEnabled()Z @@ -21491,6 +22453,7 @@ HSPLcom/android/internal/telephony/Phone;->registerForDisconnect(Landroid/os/Han HSPLcom/android/internal/telephony/Phone;->registerForDisplayInfo(Landroid/os/Handler;ILjava/lang/Object;)V HSPLcom/android/internal/telephony/Phone;->registerForEcmTimerReset(Landroid/os/Handler;ILjava/lang/Object;)V HSPLcom/android/internal/telephony/Phone;->registerForEmergencyCallToggle(Landroid/os/Handler;ILjava/lang/Object;)V +HPLcom/android/internal/telephony/Phone;->registerForHandoverStateChanged(Landroid/os/Handler;ILjava/lang/Object;)V HSPLcom/android/internal/telephony/Phone;->registerForInCallVoicePrivacyOff(Landroid/os/Handler;ILjava/lang/Object;)V HSPLcom/android/internal/telephony/Phone;->registerForInCallVoicePrivacyOn(Landroid/os/Handler;ILjava/lang/Object;)V HSPLcom/android/internal/telephony/Phone;->registerForIncomingRing(Landroid/os/Handler;ILjava/lang/Object;)V @@ -21512,6 +22475,7 @@ HSPLcom/android/internal/telephony/Phone;->registerForVideoCapabilityChanged(Lan HSPLcom/android/internal/telephony/Phone;->requestCellInfoUpdate(Landroid/os/WorkSource;Landroid/os/Message;)V HSPLcom/android/internal/telephony/Phone;->sendSubscriptionSettings(Z)V HSPLcom/android/internal/telephony/Phone;->setCellInfoMinInterval(I)V +HPLcom/android/internal/telephony/Phone;->setEchoSuppressionEnabled()V HSPLcom/android/internal/telephony/Phone;->setOnPostDialCharacter(Landroid/os/Handler;ILjava/lang/Object;)V HSPLcom/android/internal/telephony/Phone;->setPreferredNetworkType(ILandroid/os/Message;)V HSPLcom/android/internal/telephony/Phone;->setPreferredNetworkTypeIfSimLoaded()V @@ -21519,7 +22483,12 @@ HSPLcom/android/internal/telephony/Phone;->setSystemProperty(Ljava/lang/String;L HSPLcom/android/internal/telephony/Phone;->setVoiceMessageCount(I)V HSPLcom/android/internal/telephony/Phone;->startLceAfterRadioIsAvailable()V HSPLcom/android/internal/telephony/Phone;->startMonitoringImsService()V +HPLcom/android/internal/telephony/Phone;->unregisterForDisconnect(Landroid/os/Handler;)V +HPLcom/android/internal/telephony/Phone;->unregisterForHandoverStateChanged(Landroid/os/Handler;)V +HPLcom/android/internal/telephony/Phone;->unregisterForInCallVoicePrivacyOff(Landroid/os/Handler;)V +HPLcom/android/internal/telephony/Phone;->unregisterForInCallVoicePrivacyOn(Landroid/os/Handler;)V HSPLcom/android/internal/telephony/Phone;->unregisterForNewRingingConnection(Landroid/os/Handler;)V +HPLcom/android/internal/telephony/Phone;->unregisterForPreciseCallStateChanged(Landroid/os/Handler;)V HSPLcom/android/internal/telephony/Phone;->unregisterForUnknownConnection(Landroid/os/Handler;)V HSPLcom/android/internal/telephony/Phone;->unregisterForVideoCapabilityChanged(Landroid/os/Handler;)V HSPLcom/android/internal/telephony/Phone;->updateDataConnectionTracker()V @@ -21562,9 +22531,9 @@ HSPLcom/android/internal/telephony/PhoneSubInfoController;->getIsimImpu(I)[Ljava HSPLcom/android/internal/telephony/PhoneSubInfoController;->getLine1AlphaTagForSubscriber(ILjava/lang/String;)Ljava/lang/String; HSPLcom/android/internal/telephony/PhoneSubInfoController;->getLine1NumberForSubscriber(ILjava/lang/String;)Ljava/lang/String; HSPLcom/android/internal/telephony/PhoneSubInfoController;->getSubscriberIdForSubscriber(ILjava/lang/String;)Ljava/lang/String; -PLcom/android/internal/telephony/PhoneSubInfoController;->getVoiceMailNumberForSubscriber(ILjava/lang/String;)Ljava/lang/String; +HPLcom/android/internal/telephony/PhoneSubInfoController;->getVoiceMailNumberForSubscriber(ILjava/lang/String;)Ljava/lang/String; HSPLcom/android/internal/telephony/PhoneSubInfoController;->lambda$callPhoneMethodForSubIdWithPrivilegedCheck$24$PhoneSubInfoController(Ljava/lang/String;Landroid/content/Context;ILjava/lang/String;Ljava/lang/String;)Z -PLcom/android/internal/telephony/PhoneSubInfoController;->lambda$getVoiceMailNumberForSubscriber$12$PhoneSubInfoController(Lcom/android/internal/telephony/Phone;)Ljava/lang/String; +HPLcom/android/internal/telephony/PhoneSubInfoController;->lambda$getVoiceMailNumberForSubscriber$12$PhoneSubInfoController(Lcom/android/internal/telephony/Phone;)Ljava/lang/String; HSPLcom/android/internal/telephony/PhoneSwitcher$1;->onAvailable(Landroid/net/Network;)V HSPLcom/android/internal/telephony/PhoneSwitcher$3;->onPhoneCapabilityChanged(Landroid/telephony/PhoneCapability;)V HSPLcom/android/internal/telephony/PhoneSwitcher$3;->onPreciseCallStateChanged(Landroid/telephony/PreciseCallState;)V @@ -21612,6 +22581,7 @@ HSPLcom/android/internal/telephony/RIL;->getBasebandVersion(Landroid/os/Message; HSPLcom/android/internal/telephony/RIL;->getCdmaSubscriptionSource(Landroid/os/Message;)V HSPLcom/android/internal/telephony/RIL;->getCellInfoList(Landroid/os/Message;Landroid/os/WorkSource;)V HSPLcom/android/internal/telephony/RIL;->getCurrentCalls(Landroid/os/Message;)V +HPLcom/android/internal/telephony/RIL;->getDataCallList(Landroid/os/Message;)V HSPLcom/android/internal/telephony/RIL;->getDataRegistrationState(Landroid/os/Message;)V HSPLcom/android/internal/telephony/RIL;->getDeviceIdentity(Landroid/os/Message;)V HSPLcom/android/internal/telephony/RIL;->getHalVersion()Lcom/android/internal/telephony/HalVersion; @@ -21626,7 +22596,7 @@ HSPLcom/android/internal/telephony/RIL;->getOperator(Landroid/os/Message;)V HSPLcom/android/internal/telephony/RIL;->getRadioCapability(Landroid/os/Message;)V HSPLcom/android/internal/telephony/RIL;->getRadioProxy(Landroid/os/Message;)Landroid/hardware/radio/V1_0/IRadio; HSPLcom/android/internal/telephony/RIL;->getSignalStrength(Landroid/os/Message;)V -PLcom/android/internal/telephony/RIL;->getTelephonyRILTimingHistograms()Ljava/util/List; +HPLcom/android/internal/telephony/RIL;->getTelephonyRILTimingHistograms()Ljava/util/List; HSPLcom/android/internal/telephony/RIL;->getVoiceRadioTechnology(Landroid/os/Message;)V HSPLcom/android/internal/telephony/RIL;->getVoiceRegistrationState(Landroid/os/Message;)V HSPLcom/android/internal/telephony/RIL;->iccCloseLogicalChannel(ILandroid/os/Message;)V @@ -21644,8 +22614,10 @@ HSPLcom/android/internal/telephony/RIL;->responseToString(I)Ljava/lang/String; HSPLcom/android/internal/telephony/RIL;->retToString(ILjava/lang/Object;)Ljava/lang/String; HSPLcom/android/internal/telephony/RIL;->riljLog(Ljava/lang/String;)V HSPLcom/android/internal/telephony/RIL;->riljLoge(Ljava/lang/String;)V +HSPLcom/android/internal/telephony/RIL;->riljLogv(Ljava/lang/String;)V HSPLcom/android/internal/telephony/RIL;->sendAck()V HSPLcom/android/internal/telephony/RIL;->sendDeviceState(IZLandroid/os/Message;)V +HSPLcom/android/internal/telephony/RIL;->sendTerminalResponse(Ljava/lang/String;Landroid/os/Message;)V HSPLcom/android/internal/telephony/RIL;->setCdmaBroadcastConfig([Lcom/android/internal/telephony/cdma/CdmaSmsBroadcastConfigInfo;Landroid/os/Message;)V HSPLcom/android/internal/telephony/RIL;->setCdmaSubscriptionSource(ILandroid/os/Message;)V HSPLcom/android/internal/telephony/RIL;->setDataProfile([Landroid/telephony/data/DataProfile;ZLandroid/os/Message;)V @@ -21708,6 +22680,8 @@ HSPLcom/android/internal/telephony/RadioIndication;->nitzTimeReceived(ILjava/lan HSPLcom/android/internal/telephony/RadioIndication;->physicalChannelConfigsIndication(Ljava/util/List;)V HSPLcom/android/internal/telephony/RadioIndication;->radioStateChanged(II)V HSPLcom/android/internal/telephony/RadioIndication;->rilConnected(I)V +HSPLcom/android/internal/telephony/RadioIndication;->stkProactiveCommand(ILjava/lang/String;)V +HSPLcom/android/internal/telephony/RadioIndication;->stkSessionEnd(I)V HSPLcom/android/internal/telephony/RadioIndication;->voiceRadioTechChanged(II)V HSPLcom/android/internal/telephony/RadioResponse;->convertHalCardStatus(Landroid/hardware/radio/V1_0/CardStatus;)Lcom/android/internal/telephony/uicc/IccCardStatus; HSPLcom/android/internal/telephony/RadioResponse;->deactivateDataCallResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V @@ -21715,6 +22689,7 @@ HSPLcom/android/internal/telephony/RadioResponse;->getBasebandVersionResponse(La HSPLcom/android/internal/telephony/RadioResponse;->getCdmaSubscriptionSourceResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;I)V HSPLcom/android/internal/telephony/RadioResponse;->getCellInfoListResponse_1_2(Landroid/hardware/radio/V1_0/RadioResponseInfo;Ljava/util/ArrayList;)V HSPLcom/android/internal/telephony/RadioResponse;->getCurrentCallsResponse_1_2(Landroid/hardware/radio/V1_0/RadioResponseInfo;Ljava/util/ArrayList;)V +HPLcom/android/internal/telephony/RadioResponse;->getDataCallListResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Ljava/util/ArrayList;)V HSPLcom/android/internal/telephony/RadioResponse;->getDataRegistrationStateResponse_1_2(Landroid/hardware/radio/V1_0/RadioResponseInfo;Landroid/hardware/radio/V1_2/DataRegStateResult;)V HSPLcom/android/internal/telephony/RadioResponse;->getDeviceIdentityResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V HSPLcom/android/internal/telephony/RadioResponse;->getFacilityLockForAppResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;I)V @@ -21741,6 +22716,7 @@ HSPLcom/android/internal/telephony/RadioResponse;->responseIccIo(Landroid/hardwa HSPLcom/android/internal/telephony/RadioResponse;->responseIntArrayList(Landroid/hardware/radio/V1_0/RadioResponseInfo;Ljava/util/ArrayList;)V HSPLcom/android/internal/telephony/RadioResponse;->responseStringArrayList(Lcom/android/internal/telephony/RIL;Landroid/hardware/radio/V1_0/RadioResponseInfo;Ljava/util/ArrayList;)V HSPLcom/android/internal/telephony/RadioResponse;->sendDeviceStateResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V +HSPLcom/android/internal/telephony/RadioResponse;->sendTerminalResponseToSimResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V HSPLcom/android/internal/telephony/RadioResponse;->setCdmaBroadcastConfigResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V HSPLcom/android/internal/telephony/RadioResponse;->setCdmaSubscriptionSourceResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V HSPLcom/android/internal/telephony/RadioResponse;->setGsmBroadcastActivationResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V @@ -21767,6 +22743,7 @@ HSPLcom/android/internal/telephony/RetryManager;->configureRetry()V HSPLcom/android/internal/telephony/RetryManager;->getDelayForNextApn(Z)J HSPLcom/android/internal/telephony/RetryManager;->getNextApnSetting()Landroid/telephony/data/ApnSetting; HSPLcom/android/internal/telephony/RetryManager;->getRetryAfterDisconnectDelay()J +HSPLcom/android/internal/telephony/RetryManager;->getRetryTimer()I HSPLcom/android/internal/telephony/RetryManager;->getWaitingApns()Ljava/util/ArrayList; HSPLcom/android/internal/telephony/RetryManager;->log(Ljava/lang/String;)V HSPLcom/android/internal/telephony/RetryManager;->parseNonNegativeInt(Ljava/lang/String;Ljava/lang/String;)Landroid/util/Pair; @@ -21844,7 +22821,7 @@ HSPLcom/android/internal/telephony/ServiceStateTracker;->registerForPsRestricted HSPLcom/android/internal/telephony/ServiceStateTracker;->registerForSubscriptionInfoReady(Landroid/os/Handler;ILjava/lang/Object;)V HSPLcom/android/internal/telephony/ServiceStateTracker;->registerForVoiceRegStateOrRatChanged(Landroid/os/Handler;ILjava/lang/Object;)V HSPLcom/android/internal/telephony/ServiceStateTracker;->requestAllCellInfo(Landroid/os/WorkSource;Landroid/os/Message;)V -PLcom/android/internal/telephony/ServiceStateTracker;->requestCellLocation(Landroid/os/WorkSource;Landroid/os/Message;)V +HPLcom/android/internal/telephony/ServiceStateTracker;->requestCellLocation(Landroid/os/WorkSource;Landroid/os/Message;)V HSPLcom/android/internal/telephony/ServiceStateTracker;->resetServiceStateInIwlanMode()V HSPLcom/android/internal/telephony/ServiceStateTracker;->setCellInfoMinInterval(I)V HSPLcom/android/internal/telephony/ServiceStateTracker;->setPhyCellInfoFromCellIdentity(Landroid/telephony/ServiceState;Landroid/telephony/CellIdentity;)V @@ -21874,20 +22851,21 @@ HSPLcom/android/internal/telephony/SmsApplication$SmsApplicationData;->isComplet HSPLcom/android/internal/telephony/SmsApplication$SmsApplicationData;->toString()Ljava/lang/String; HSPLcom/android/internal/telephony/SmsApplication$SmsPackageMonitor;->onPackageAppeared(Ljava/lang/String;I)V HSPLcom/android/internal/telephony/SmsApplication$SmsPackageMonitor;->onPackageChanged()V -PLcom/android/internal/telephony/SmsApplication$SmsPackageMonitor;->onPackageDisappeared(Ljava/lang/String;I)V +HPLcom/android/internal/telephony/SmsApplication$SmsPackageMonitor;->onPackageDisappeared(Ljava/lang/String;I)V HSPLcom/android/internal/telephony/SmsApplication$SmsPackageMonitor;->onPackageModified(Ljava/lang/String;)V HSPLcom/android/internal/telephony/SmsApplication;->assignExclusiveSmsPermissionsToSystemApp(Landroid/content/Context;Landroid/content/pm/PackageManager;Landroid/app/AppOpsManager;Ljava/lang/String;)V HSPLcom/android/internal/telephony/SmsApplication;->defaultSmsAppChanged(Landroid/content/Context;)V HSPLcom/android/internal/telephony/SmsApplication;->getApplication(Landroid/content/Context;ZI)Lcom/android/internal/telephony/SmsApplication$SmsApplicationData; -PLcom/android/internal/telephony/SmsApplication;->getApplicationCollectionAsUser(Landroid/content/Context;I)Ljava/util/Collection; +HPLcom/android/internal/telephony/SmsApplication;->getApplicationCollectionAsUser(Landroid/content/Context;I)Ljava/util/Collection; HSPLcom/android/internal/telephony/SmsApplication;->getApplicationCollectionInternal(Landroid/content/Context;I)Ljava/util/Collection; HSPLcom/android/internal/telephony/SmsApplication;->getApplicationForPackage(Ljava/util/Collection;Ljava/lang/String;)Lcom/android/internal/telephony/SmsApplication$SmsApplicationData; HSPLcom/android/internal/telephony/SmsApplication;->getDefaultMmsApplication(Landroid/content/Context;Z)Landroid/content/ComponentName; +HPLcom/android/internal/telephony/SmsApplication;->getDefaultRespondViaMessageApplication(Landroid/content/Context;Z)Landroid/content/ComponentName; HSPLcom/android/internal/telephony/SmsApplication;->getDefaultSendToApplication(Landroid/content/Context;Z)Landroid/content/ComponentName; HSPLcom/android/internal/telephony/SmsApplication;->getDefaultSmsApplication(Landroid/content/Context;Z)Landroid/content/ComponentName; HSPLcom/android/internal/telephony/SmsApplication;->getDefaultSmsApplicationAsUser(Landroid/content/Context;ZI)Landroid/content/ComponentName; HSPLcom/android/internal/telephony/SmsApplication;->initSmsPackageMonitor(Landroid/content/Context;)V -PLcom/android/internal/telephony/SmsApplication;->isDefaultSmsApplication(Landroid/content/Context;Ljava/lang/String;)Z +HPLcom/android/internal/telephony/SmsApplication;->isDefaultSmsApplication(Landroid/content/Context;Ljava/lang/String;)Z HSPLcom/android/internal/telephony/SmsApplication;->replacePreferredActivity(Landroid/content/pm/PackageManager;Landroid/content/ComponentName;ILjava/lang/String;)V HSPLcom/android/internal/telephony/SmsApplication;->tryFixExclusiveSmsAppops(Landroid/content/Context;Lcom/android/internal/telephony/SmsApplication$SmsApplicationData;Z)Z HSPLcom/android/internal/telephony/SmsBroadcastUndelivered$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V @@ -21898,6 +22876,7 @@ HSPLcom/android/internal/telephony/SmsDispatchersController$1;->onReceive(Landro HSPLcom/android/internal/telephony/SmsDispatchersController;-><init>(Lcom/android/internal/telephony/Phone;Lcom/android/internal/telephony/SmsStorageMonitor;Lcom/android/internal/telephony/SmsUsageMonitor;)V HSPLcom/android/internal/telephony/SmsDispatchersController;->handleInService(J)V HSPLcom/android/internal/telephony/SmsDispatchersController;->handleMessage(Landroid/os/Message;)V +HPLcom/android/internal/telephony/SmsDispatchersController;->handlePartialSegmentTimerExpiry(J)V HSPLcom/android/internal/telephony/SmsDispatchersController;->reevaluateTimerStatus()V HSPLcom/android/internal/telephony/SmsDispatchersController;->resetPartialSegmentWaitTimer()V HSPLcom/android/internal/telephony/SmsDispatchersController;->updateImsInfo(Landroid/os/AsyncResult;)V @@ -21922,7 +22901,7 @@ HSPLcom/android/internal/telephony/SubscriptionController;->clearSubInfoRecord(I HSPLcom/android/internal/telephony/SubscriptionController;->enforceModifyPhoneState(Ljava/lang/String;)V HSPLcom/android/internal/telephony/SubscriptionController;->getActiveSubIdArrayList()Ljava/util/ArrayList; HSPLcom/android/internal/telephony/SubscriptionController;->getActiveSubIdList(Z)[I -PLcom/android/internal/telephony/SubscriptionController;->getActiveSubInfoCount(Ljava/lang/String;)I +HPLcom/android/internal/telephony/SubscriptionController;->getActiveSubInfoCount(Ljava/lang/String;)I HSPLcom/android/internal/telephony/SubscriptionController;->getActiveSubInfoCountMax()I HSPLcom/android/internal/telephony/SubscriptionController;->getActiveSubscriptionInfo(ILjava/lang/String;)Landroid/telephony/SubscriptionInfo; HSPLcom/android/internal/telephony/SubscriptionController;->getActiveSubscriptionInfoForSimSlotIndex(ILjava/lang/String;)Landroid/telephony/SubscriptionInfo; @@ -22050,8 +23029,8 @@ HSPLcom/android/internal/telephony/TimeZoneLookupHelper$OffsetResult;->toString( HSPLcom/android/internal/telephony/TimeZoneLookupHelper;->getCountryTimeZones(Ljava/lang/String;)Llibcore/timezone/CountryTimeZones; HSPLcom/android/internal/telephony/TimeZoneLookupHelper;->lookupByCountry(Ljava/lang/String;J)Lcom/android/internal/telephony/TimeZoneLookupHelper$CountryResult; HSPLcom/android/internal/telephony/TimeZoneLookupHelper;->lookupByNitzCountry(Lcom/android/internal/telephony/NitzData;Ljava/lang/String;)Lcom/android/internal/telephony/TimeZoneLookupHelper$OffsetResult; -PLcom/android/internal/telephony/UiccPhoneBookController;->getAdnRecordsInEfForSubscriber(II)Ljava/util/List; -PLcom/android/internal/telephony/UiccPhoneBookController;->getIccPhoneBookInterfaceManager(I)Lcom/android/internal/telephony/IccPhoneBookInterfaceManager; +HPLcom/android/internal/telephony/UiccPhoneBookController;->getAdnRecordsInEfForSubscriber(II)Ljava/util/List; +HPLcom/android/internal/telephony/UiccPhoneBookController;->getIccPhoneBookInterfaceManager(I)Lcom/android/internal/telephony/IccPhoneBookInterfaceManager; HSPLcom/android/internal/telephony/UiccSmsController;->disableCellBroadcastRangeForSubscriber(IIII)Z HSPLcom/android/internal/telephony/UiccSmsController;->enableCellBroadcastRangeForSubscriber(IIII)Z HSPLcom/android/internal/telephony/UiccSmsController;->getPreferredSmsSubscription()I @@ -22069,14 +23048,25 @@ HSPLcom/android/internal/telephony/cat/CatLog;->d(Ljava/lang/String;Ljava/lang/S HSPLcom/android/internal/telephony/cat/CatService;-><init>(Lcom/android/internal/telephony/CommandsInterface;Lcom/android/internal/telephony/uicc/UiccCardApplication;Lcom/android/internal/telephony/uicc/IccRecords;Landroid/content/Context;Lcom/android/internal/telephony/uicc/IccFileHandler;Lcom/android/internal/telephony/uicc/UiccProfile;I)V HSPLcom/android/internal/telephony/cat/CatService;->getInstance(I)Lcom/android/internal/telephony/cat/AppInterface; HSPLcom/android/internal/telephony/cat/CatService;->getInstance(Lcom/android/internal/telephony/CommandsInterface;Landroid/content/Context;Lcom/android/internal/telephony/uicc/UiccProfile;I)Lcom/android/internal/telephony/cat/CatService; +HSPLcom/android/internal/telephony/cat/CatService;->handleCommand(Lcom/android/internal/telephony/cat/CommandParams;Z)V HSPLcom/android/internal/telephony/cat/CatService;->handleMessage(Landroid/os/Message;)V +HSPLcom/android/internal/telephony/cat/CatService;->handleRilMsg(Lcom/android/internal/telephony/cat/RilMessage;)V +HSPLcom/android/internal/telephony/cat/CatService;->handleSessionEnd()V HSPLcom/android/internal/telephony/cat/CatService;->isStkAppInstalled()Z +HSPLcom/android/internal/telephony/cat/CatService;->sendTerminalResponse(Lcom/android/internal/telephony/cat/CommandDetails;Lcom/android/internal/telephony/cat/ResultCode;ZILcom/android/internal/telephony/cat/ResponseData;)V HSPLcom/android/internal/telephony/cat/CatService;->updateIccAvailability()V HSPLcom/android/internal/telephony/cat/CommandParamsFactory;->getInstance(Lcom/android/internal/telephony/cat/RilMessageDecoder;Lcom/android/internal/telephony/uicc/IccFileHandler;)Lcom/android/internal/telephony/cat/CommandParamsFactory; +HSPLcom/android/internal/telephony/cat/CommandParamsFactory;->make(Lcom/android/internal/telephony/cat/BerTlv;)V +HSPLcom/android/internal/telephony/cat/CommandParamsFactory;->processCommandDetails(Ljava/util/List;)Lcom/android/internal/telephony/cat/CommandDetails; HSPLcom/android/internal/telephony/cat/IconLoader;-><init>(Landroid/os/Looper;Lcom/android/internal/telephony/uicc/IccFileHandler;)V HSPLcom/android/internal/telephony/cat/IconLoader;->getInstance(Landroid/os/Handler;Lcom/android/internal/telephony/uicc/IccFileHandler;)Lcom/android/internal/telephony/cat/IconLoader; +HSPLcom/android/internal/telephony/cat/RilMessageDecoder$StateCmdParamsReady;->processMessage(Landroid/os/Message;)Z +HSPLcom/android/internal/telephony/cat/RilMessageDecoder$StateStart;->processMessage(Landroid/os/Message;)Z HSPLcom/android/internal/telephony/cat/RilMessageDecoder;-><init>(Landroid/os/Handler;Lcom/android/internal/telephony/uicc/IccFileHandler;)V +HSPLcom/android/internal/telephony/cat/RilMessageDecoder;->decodeMessageParams(Lcom/android/internal/telephony/cat/RilMessage;)Z HSPLcom/android/internal/telephony/cat/RilMessageDecoder;->getInstance(Landroid/os/Handler;Lcom/android/internal/telephony/uicc/IccFileHandler;I)Lcom/android/internal/telephony/cat/RilMessageDecoder; +HSPLcom/android/internal/telephony/cat/RilMessageDecoder;->sendMsgParamsDecoded(Lcom/android/internal/telephony/cat/ResultCode;Lcom/android/internal/telephony/cat/CommandParams;)V +HSPLcom/android/internal/telephony/cat/RilMessageDecoder;->sendStartDecodingMessageParams(Lcom/android/internal/telephony/cat/RilMessage;)V HSPLcom/android/internal/telephony/cdma/CdmaInboundSmsHandler;-><init>(Landroid/content/Context;Lcom/android/internal/telephony/SmsStorageMonitor;Lcom/android/internal/telephony/Phone;Lcom/android/internal/telephony/cdma/CdmaSMSDispatcher;)V HSPLcom/android/internal/telephony/cdma/CdmaSMSDispatcher;->getFormat()Ljava/lang/String; HSPLcom/android/internal/telephony/cdma/CdmaSmsBroadcastConfigInfo;->getFromServiceCategory()I @@ -22191,6 +23181,7 @@ HSPLcom/android/internal/telephony/dataconnection/DataConnection;->initConnectio HSPLcom/android/internal/telephony/dataconnection/DataConnection;->isActivating()Z HSPLcom/android/internal/telephony/dataconnection/DataConnection;->isActive()Z HSPLcom/android/internal/telephony/dataconnection/DataConnection;->isDnsOk([Ljava/lang/String;)Z +HSPLcom/android/internal/telephony/dataconnection/DataConnection;->isInactive()Z HSPLcom/android/internal/telephony/dataconnection/DataConnection;->isUnmeteredUseOnly()Z HSPLcom/android/internal/telephony/dataconnection/DataConnection;->log(Ljava/lang/String;)V HSPLcom/android/internal/telephony/dataconnection/DataConnection;->makeDataConnection(Lcom/android/internal/telephony/Phone;ILcom/android/internal/telephony/dataconnection/DcTracker;Lcom/android/internal/telephony/dataconnection/DataServiceManager;Lcom/android/internal/telephony/dataconnection/DcTesterFailBringUpAll;Lcom/android/internal/telephony/dataconnection/DcController;)Lcom/android/internal/telephony/dataconnection/DataConnection; @@ -22267,6 +23258,9 @@ HSPLcom/android/internal/telephony/dataconnection/DcTracker$1;->compare(Ljava/la HSPLcom/android/internal/telephony/dataconnection/DcTracker$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V HSPLcom/android/internal/telephony/dataconnection/DcTracker$3;->run()V HSPLcom/android/internal/telephony/dataconnection/DcTracker$ApnChangeObserver;->onChange(Z)V +HPLcom/android/internal/telephony/dataconnection/DcTracker$DataStallRecoveryHandler;->broadcastDataStallDetected(I)V +HPLcom/android/internal/telephony/dataconnection/DcTracker$DataStallRecoveryHandler;->checkRecovery()Z +HPLcom/android/internal/telephony/dataconnection/DcTracker$DataStallRecoveryHandler;->doRecovery()V HSPLcom/android/internal/telephony/dataconnection/DcTracker$DataStallRecoveryHandler;->isAggressiveRecovery()Z HSPLcom/android/internal/telephony/dataconnection/DcTracker$DataStallRecoveryHandler;->isNoRxDataStallDetectionEnabled()Z HSPLcom/android/internal/telephony/dataconnection/DcTracker$DataStallRecoveryHandler;->isRecoveryOnBadNetworkEnabled()Z @@ -22320,7 +23314,7 @@ HSPLcom/android/internal/telephony/dataconnection/DcTracker;->isPermanentFailure HSPLcom/android/internal/telephony/dataconnection/DcTracker;->onApnChanged()V HSPLcom/android/internal/telephony/dataconnection/DcTracker;->onDataConnectionAttached()V HSPLcom/android/internal/telephony/dataconnection/DcTracker;->onDataEnabledChanged(ZI)V -PLcom/android/internal/telephony/dataconnection/DcTracker;->onDataReconnect(Landroid/os/Bundle;)V +HPLcom/android/internal/telephony/dataconnection/DcTracker;->onDataReconnect(Landroid/os/Bundle;)V HSPLcom/android/internal/telephony/dataconnection/DcTracker;->onDataRoamingOff()V HSPLcom/android/internal/telephony/dataconnection/DcTracker;->onDataServiceBindingChanged(Z)V HSPLcom/android/internal/telephony/dataconnection/DcTracker;->onDataSetupComplete(Lcom/android/internal/telephony/dataconnection/ApnContext;ZII)V @@ -22379,9 +23373,9 @@ HSPLcom/android/internal/telephony/emergency/EmergencyNumberTracker;->getEmergen HSPLcom/android/internal/telephony/emergency/EmergencyNumberTracker;->getEmergencyNumberListTestMode()Ljava/util/List; HSPLcom/android/internal/telephony/emergency/EmergencyNumberTracker;->getLabeledEmergencyNumberForEcclist(Ljava/lang/String;)Landroid/telephony/emergency/EmergencyNumber; HSPLcom/android/internal/telephony/emergency/EmergencyNumberTracker;->handleMessage(Landroid/os/Message;)V -PLcom/android/internal/telephony/emergency/EmergencyNumberTracker;->isEmergencyNumber(Ljava/lang/String;Z)Z -PLcom/android/internal/telephony/emergency/EmergencyNumberTracker;->isEmergencyNumberForTest(Ljava/lang/String;)Z -PLcom/android/internal/telephony/emergency/EmergencyNumberTracker;->isEmergencyNumberFromEccList(Ljava/lang/String;Z)Z +HPLcom/android/internal/telephony/emergency/EmergencyNumberTracker;->isEmergencyNumber(Ljava/lang/String;Z)Z +HPLcom/android/internal/telephony/emergency/EmergencyNumberTracker;->isEmergencyNumberForTest(Ljava/lang/String;)Z +HPLcom/android/internal/telephony/emergency/EmergencyNumberTracker;->isEmergencyNumberFromEccList(Ljava/lang/String;Z)Z HSPLcom/android/internal/telephony/emergency/EmergencyNumberTracker;->notifyEmergencyNumberList()V HSPLcom/android/internal/telephony/emergency/EmergencyNumberTracker;->onCarrierConfigChanged()V HSPLcom/android/internal/telephony/emergency/EmergencyNumberTracker;->updateEmergencyNumberDatabaseCountryChange(Ljava/lang/String;)V @@ -22400,12 +23394,12 @@ HSPLcom/android/internal/telephony/euicc/EuiccConnector$BindingState;->enter()V HSPLcom/android/internal/telephony/euicc/EuiccConnector$ConnectedState$4;->lambda$onComplete$0$EuiccConnector$ConnectedState$4(Lcom/android/internal/telephony/euicc/EuiccConnector$BaseEuiccCommandCallback;Landroid/service/euicc/GetEuiccProfileInfoListResult;)V HSPLcom/android/internal/telephony/euicc/EuiccConnector$ConnectedState$4;->onComplete(Landroid/service/euicc/GetEuiccProfileInfoListResult;)V HSPLcom/android/internal/telephony/euicc/EuiccConnector$ConnectedState;->enter()V -PLcom/android/internal/telephony/euicc/EuiccConnector$ConnectedState;->exit()V +HPLcom/android/internal/telephony/euicc/EuiccConnector$ConnectedState;->exit()V HSPLcom/android/internal/telephony/euicc/EuiccConnector$ConnectedState;->processMessage(Landroid/os/Message;)Z HSPLcom/android/internal/telephony/euicc/EuiccConnector$DisconnectedState;->enter()V HSPLcom/android/internal/telephony/euicc/EuiccConnector$DisconnectedState;->processMessage(Landroid/os/Message;)Z HSPLcom/android/internal/telephony/euicc/EuiccConnector$EuiccPackageMonitor;->onPackageModified(Ljava/lang/String;)V -PLcom/android/internal/telephony/euicc/EuiccConnector$EuiccPackageMonitor;->onPackageUpdateFinished(Ljava/lang/String;I)V +HPLcom/android/internal/telephony/euicc/EuiccConnector$EuiccPackageMonitor;->onPackageUpdateFinished(Ljava/lang/String;I)V HSPLcom/android/internal/telephony/euicc/EuiccConnector$UnavailableState;->processMessage(Landroid/os/Message;)Z HSPLcom/android/internal/telephony/euicc/EuiccConnector;->createBinding()Z HSPLcom/android/internal/telephony/euicc/EuiccConnector;->findBestComponent(Landroid/content/pm/PackageManager;Ljava/util/List;)Landroid/content/pm/ComponentInfo; @@ -22424,6 +23418,8 @@ HSPLcom/android/internal/telephony/euicc/IEuiccCardController$Stub;-><init>()V HSPLcom/android/internal/telephony/euicc/IEuiccController$Stub;-><init>()V HSPLcom/android/internal/telephony/euicc/IEuiccController$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/telephony/euicc/IEuiccController; HSPLcom/android/internal/telephony/gsm/GsmInboundSmsHandler;-><init>(Landroid/content/Context;Lcom/android/internal/telephony/SmsStorageMonitor;Lcom/android/internal/telephony/Phone;)V +HPLcom/android/internal/telephony/gsm/GsmInboundSmsHandler;->dispatchMessageRadioSpecific(Lcom/android/internal/telephony/SmsMessageBase;)I +HPLcom/android/internal/telephony/gsm/GsmInboundSmsHandler;->is3gpp2()Z HSPLcom/android/internal/telephony/gsm/GsmSMSDispatcher;-><init>(Lcom/android/internal/telephony/Phone;Lcom/android/internal/telephony/SmsDispatchersController;Lcom/android/internal/telephony/gsm/GsmInboundSmsHandler;)V HSPLcom/android/internal/telephony/gsm/GsmSMSDispatcher;->getFormat()Ljava/lang/String; HSPLcom/android/internal/telephony/gsm/GsmSMSDispatcher;->getUiccCardApplication()Lcom/android/internal/telephony/uicc/UiccCardApplication; @@ -22433,13 +23429,18 @@ HSPLcom/android/internal/telephony/gsm/SimTlv;-><init>([BII)V HSPLcom/android/internal/telephony/gsm/SimTlv;->getData()[B HSPLcom/android/internal/telephony/gsm/SimTlv;->getTag()I HSPLcom/android/internal/telephony/gsm/SimTlv;->isValidObject()Z +HPLcom/android/internal/telephony/gsm/SimTlv;->nextObject()Z HSPLcom/android/internal/telephony/gsm/SimTlv;->parseCurrentTlvObject()Z HSPLcom/android/internal/telephony/gsm/SmsBroadcastConfigInfo;->toString()Ljava/lang/String; HSPLcom/android/internal/telephony/gsm/UsimPhoneBookManager;-><init>(Lcom/android/internal/telephony/uicc/IccFileHandler;Lcom/android/internal/telephony/uicc/AdnRecordCache;)V -PLcom/android/internal/telephony/gsm/UsimPhoneBookManager;->handleMessage(Landroid/os/Message;)V -PLcom/android/internal/telephony/gsm/UsimPhoneBookManager;->loadEfFilesFromUsim()Ljava/util/ArrayList; -PLcom/android/internal/telephony/gsm/UsimPhoneBookManager;->readPbrFileAndWait()V +HPLcom/android/internal/telephony/gsm/UsimPhoneBookManager;->createPbrFile(Ljava/util/ArrayList;)V +HPLcom/android/internal/telephony/gsm/UsimPhoneBookManager;->handleMessage(Landroid/os/Message;)V +HPLcom/android/internal/telephony/gsm/UsimPhoneBookManager;->loadEfFilesFromUsim()Ljava/util/ArrayList; +HPLcom/android/internal/telephony/gsm/UsimPhoneBookManager;->readAdnFileAndWait(I)V +HPLcom/android/internal/telephony/gsm/UsimPhoneBookManager;->readEmailFileAndWait(I)V +HPLcom/android/internal/telephony/gsm/UsimPhoneBookManager;->readPbrFileAndWait()V HSPLcom/android/internal/telephony/gsm/UsimPhoneBookManager;->reset()V +HPLcom/android/internal/telephony/gsm/UsimPhoneBookManager;->updatePhoneAdnRecord()V HSPLcom/android/internal/telephony/ims/-$$Lambda$ImsResolver$SIkPixr-qGLIK-usUJIKu6S5BBs;-><init>()V HSPLcom/android/internal/telephony/ims/-$$Lambda$ImsResolver$SIkPixr-qGLIK-usUJIKu6S5BBs;->test(Ljava/lang/Object;)Z HSPLcom/android/internal/telephony/ims/-$$Lambda$ImsResolver$VfY5To_kbbTJevLzywTg-_S1JhA;->test(Ljava/lang/Object;)Z @@ -22457,11 +23458,14 @@ HSPLcom/android/internal/telephony/ims/ImsResolver$3;->getSubId(I)I HSPLcom/android/internal/telephony/ims/ImsResolver$4;->create(Landroid/content/Context;Landroid/content/ComponentName;Lcom/android/internal/telephony/ims/ImsServiceController$ImsServiceControllerCallbacks;)Lcom/android/internal/telephony/ims/ImsServiceController; HSPLcom/android/internal/telephony/ims/ImsResolver$4;->getServiceInterface()Ljava/lang/String; HSPLcom/android/internal/telephony/ims/ImsResolver$5;->getServiceInterface()Ljava/lang/String; +HSPLcom/android/internal/telephony/ims/ImsResolver$7;->onComplete(Landroid/content/ComponentName;Ljava/util/Set;)V HSPLcom/android/internal/telephony/ims/ImsResolver$ImsServiceInfo;->getSupportedFeatures()Ljava/util/HashSet; +HSPLcom/android/internal/telephony/ims/ImsResolver$ImsServiceInfo;->replaceFeatures(Ljava/util/Set;)V HSPLcom/android/internal/telephony/ims/ImsResolver;-><init>(Landroid/content/Context;Ljava/lang/String;IZ)V HSPLcom/android/internal/telephony/ims/ImsResolver;->bindImsServiceWithFeatures(Lcom/android/internal/telephony/ims/ImsResolver$ImsServiceInfo;Ljava/util/HashSet;)V HSPLcom/android/internal/telephony/ims/ImsResolver;->calculateFeaturesToCreate(Lcom/android/internal/telephony/ims/ImsResolver$ImsServiceInfo;)Ljava/util/HashSet; HSPLcom/android/internal/telephony/ims/ImsResolver;->carrierConfigChanged(I)V +HSPLcom/android/internal/telephony/ims/ImsResolver;->dynamicQueryComplete(Landroid/content/ComponentName;Ljava/util/Set;)V HSPLcom/android/internal/telephony/ims/ImsResolver;->enableIms(I)V HSPLcom/android/internal/telephony/ims/ImsResolver;->getImsConfig(II)Landroid/telephony/ims/aidl/IImsConfig; HSPLcom/android/internal/telephony/ims/ImsResolver;->getImsRegistration(II)Landroid/telephony/ims/aidl/IImsRegistration; @@ -22475,10 +23479,12 @@ HSPLcom/android/internal/telephony/ims/ImsResolver;->imsServiceFeatureCreated(II HSPLcom/android/internal/telephony/ims/ImsResolver;->initPopulateCacheAndStartBind()V HSPLcom/android/internal/telephony/ims/ImsResolver;->lambda$new$0$ImsResolver(Landroid/os/Message;)Z HSPLcom/android/internal/telephony/ims/ImsResolver;->maybeAddedImsService(Ljava/lang/String;)V -PLcom/android/internal/telephony/ims/ImsResolver;->maybeRemovedImsService(Ljava/lang/String;)Z +HPLcom/android/internal/telephony/ims/ImsResolver;->maybeRemovedImsService(Ljava/lang/String;)Z +HSPLcom/android/internal/telephony/ims/ImsResolver;->printFeatures(Ljava/util/Set;)Ljava/lang/String; HSPLcom/android/internal/telephony/ims/ImsResolver;->putImsController(IILcom/android/internal/telephony/ims/ImsServiceController;)V HSPLcom/android/internal/telephony/ims/ImsResolver;->scheduleQueryForFeatures(Lcom/android/internal/telephony/ims/ImsResolver$ImsServiceInfo;I)V HSPLcom/android/internal/telephony/ims/ImsResolver;->searchForImsServices(Ljava/lang/String;Lcom/android/internal/telephony/ims/ImsResolver$ImsServiceControllerFactory;)Ljava/util/List; +HSPLcom/android/internal/telephony/ims/ImsResolver;->startDynamicQuery(Lcom/android/internal/telephony/ims/ImsResolver$ImsServiceInfo;)V HSPLcom/android/internal/telephony/ims/ImsResolver;->unbindImsService(Lcom/android/internal/telephony/ims/ImsResolver$ImsServiceInfo;)V HSPLcom/android/internal/telephony/ims/ImsResolver;->updateBoundCarrierServices(ILjava/lang/String;)V HSPLcom/android/internal/telephony/ims/ImsResolver;->updateImsServiceFeatures(Lcom/android/internal/telephony/ims/ImsResolver$ImsServiceInfo;)V @@ -22507,6 +23513,7 @@ HSPLcom/android/internal/telephony/ims/ImsServiceController;->sendImsFeatureCrea HSPLcom/android/internal/telephony/ims/ImsServiceController;->sendImsFeatureStatusChanged(III)V HSPLcom/android/internal/telephony/ims/ImsServiceController;->setServiceController(Landroid/os/IBinder;)V HSPLcom/android/internal/telephony/ims/ImsServiceController;->startBindToService(Landroid/content/Intent;Lcom/android/internal/telephony/ims/ImsServiceController$ImsServiceConnection;I)Z +HSPLcom/android/internal/telephony/ims/ImsServiceFeatureQueryManager;->startQuery(Landroid/content/ComponentName;Ljava/lang/String;)Z HSPLcom/android/internal/telephony/ims/RcsMessageStoreController;-><init>(Landroid/content/ContentResolver;)V HSPLcom/android/internal/telephony/ims/RcsMessageStoreController;->init(Landroid/content/Context;)Lcom/android/internal/telephony/ims/RcsMessageStoreController; HSPLcom/android/internal/telephony/imsphone/-$$Lambda$ImsPhoneCallTracker$QlPVd_3u4_verjHUDnkn6zaSe54;-><init>()V @@ -22538,7 +23545,7 @@ HSPLcom/android/internal/telephony/imsphone/ImsPhone;->getSubId()I HSPLcom/android/internal/telephony/imsphone/ImsPhone;->getVtDataUsage(Z)Landroid/net/NetworkStats; HSPLcom/android/internal/telephony/imsphone/ImsPhone;->handleMessage(Landroid/os/Message;)V HSPLcom/android/internal/telephony/imsphone/ImsPhone;->isImsCapabilityAvailable(II)Z -PLcom/android/internal/telephony/imsphone/ImsPhone;->isImsRegistered()Z +HPLcom/android/internal/telephony/imsphone/ImsPhone;->isImsRegistered()Z HSPLcom/android/internal/telephony/imsphone/ImsPhone;->isInEcm()Z HSPLcom/android/internal/telephony/imsphone/ImsPhone;->isVideoEnabled()Z HSPLcom/android/internal/telephony/imsphone/ImsPhone;->isWifiCallingEnabled()Z @@ -22554,6 +23561,7 @@ HSPLcom/android/internal/telephony/imsphone/ImsPhone;->setImsRegistered(Z)V HSPLcom/android/internal/telephony/imsphone/ImsPhone;->setServiceState(I)V HSPLcom/android/internal/telephony/imsphone/ImsPhone;->updateDataServiceState()V HSPLcom/android/internal/telephony/imsphone/ImsPhoneBase;-><init>(Ljava/lang/String;Landroid/content/Context;Lcom/android/internal/telephony/PhoneNotifier;Z)V +HPLcom/android/internal/telephony/imsphone/ImsPhoneCall;->getPhone()Lcom/android/internal/telephony/Phone; HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker$3;->connectionReady(Lcom/android/ims/ImsManager;)V HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker$6;->onRegistered(I)V @@ -22566,11 +23574,13 @@ HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker$9;->onProvisioni HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker$9;->sendConfigChangedIntent(ILjava/lang/String;)V HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker$HoldSwapState;-><init>(Ljava/lang/String;I)V HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker;-><init>(Lcom/android/internal/telephony/imsphone/ImsPhone;Ljava/util/concurrent/Executor;)V +HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker;->addReasonCodeRemapping(Ljava/lang/Integer;Ljava/lang/String;Ljava/lang/Integer;)V HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker;->cacheCarrierConfiguration(I)V HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker;->getEcbmInterface()Lcom/android/ims/ImsEcbm; HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker;->getImsRegistrationTech()I HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker;->getMultiEndpointInterface()Lcom/android/ims/ImsMultiEndpoint; HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker;->getPackageUid(Landroid/content/Context;Ljava/lang/String;)I +HPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker;->getPhone()Lcom/android/internal/telephony/imsphone/ImsPhone; HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker;->getState()Lcom/android/internal/telephony/PhoneConstants$State; HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker;->getUtInterface()Lcom/android/ims/ImsUtInterface; HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker;->getVtDataUsage(Z)Landroid/net/NetworkStats; @@ -22589,39 +23599,52 @@ HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker;->startListening HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker;->updateCarrierConfigCache(Landroid/os/PersistableBundle;)V HSPLcom/android/internal/telephony/imsphone/ImsPhoneFactory;->makePhone(Landroid/content/Context;Lcom/android/internal/telephony/PhoneNotifier;Lcom/android/internal/telephony/Phone;)Lcom/android/internal/telephony/imsphone/ImsPhone; HSPLcom/android/internal/telephony/metrics/-$$Lambda$TelephonyMetrics$tQOsX1lKb2eTuPp-1rpkeIAEOoY;->test(Ljava/lang/Object;)Z -PLcom/android/internal/telephony/metrics/InProgressSmsSession;-><init>(I)V -PLcom/android/internal/telephony/metrics/InProgressSmsSession;->addEvent(JLcom/android/internal/telephony/metrics/SmsSessionEventBuilder;)V -PLcom/android/internal/telephony/metrics/InProgressSmsSession;->isEventsDropped()Z +HPLcom/android/internal/telephony/metrics/CallSessionEventBuilder;->build()Lcom/android/internal/telephony/nano/TelephonyProto$TelephonyCallSession$Event; +HPLcom/android/internal/telephony/metrics/CallSessionEventBuilder;->setDelay(I)Lcom/android/internal/telephony/metrics/CallSessionEventBuilder; +HPLcom/android/internal/telephony/metrics/InProgressCallSession;-><init>(I)V +HPLcom/android/internal/telephony/metrics/InProgressCallSession;->addEvent(JLcom/android/internal/telephony/metrics/CallSessionEventBuilder;)V +HPLcom/android/internal/telephony/metrics/InProgressCallSession;->addEvent(Lcom/android/internal/telephony/metrics/CallSessionEventBuilder;)V +HPLcom/android/internal/telephony/metrics/InProgressCallSession;->containsCsCalls()Z +HPLcom/android/internal/telephony/metrics/InProgressCallSession;->isEventsDropped()Z +HPLcom/android/internal/telephony/metrics/InProgressCallSession;->setLastKnownPhoneState(I)V +HPLcom/android/internal/telephony/metrics/InProgressSmsSession;-><init>(I)V +HPLcom/android/internal/telephony/metrics/InProgressSmsSession;->addEvent(JLcom/android/internal/telephony/metrics/SmsSessionEventBuilder;)V +HPLcom/android/internal/telephony/metrics/InProgressSmsSession;->isEventsDropped()Z PLcom/android/internal/telephony/metrics/ModemPowerMetrics;->buildProto()Lcom/android/internal/telephony/nano/TelephonyProto$ModemPowerStats; PLcom/android/internal/telephony/metrics/ModemPowerMetrics;->getStats()Landroid/os/connectivity/CellularBatteryStats; -PLcom/android/internal/telephony/metrics/SmsSessionEventBuilder;->build()Lcom/android/internal/telephony/nano/TelephonyProto$SmsSession$Event; -PLcom/android/internal/telephony/metrics/SmsSessionEventBuilder;->setDelay(I)Lcom/android/internal/telephony/metrics/SmsSessionEventBuilder; +HPLcom/android/internal/telephony/metrics/SmsSessionEventBuilder;->build()Lcom/android/internal/telephony/nano/TelephonyProto$SmsSession$Event; +HPLcom/android/internal/telephony/metrics/SmsSessionEventBuilder;->setDelay(I)Lcom/android/internal/telephony/metrics/SmsSessionEventBuilder; HSPLcom/android/internal/telephony/metrics/TelephonyEventBuilder;->build()Lcom/android/internal/telephony/nano/TelephonyProto$TelephonyEvent; HSPLcom/android/internal/telephony/metrics/TelephonyEventBuilder;->setSimStateChange(Landroid/util/SparseArray;)Lcom/android/internal/telephony/metrics/TelephonyEventBuilder; HSPLcom/android/internal/telephony/metrics/TelephonyMetrics;-><init>()V HSPLcom/android/internal/telephony/metrics/TelephonyMetrics;->addTelephonyEvent(Lcom/android/internal/telephony/nano/TelephonyProto$TelephonyEvent;)V HSPLcom/android/internal/telephony/metrics/TelephonyMetrics;->annotateInProgressCallSession(JILcom/android/internal/telephony/metrics/CallSessionEventBuilder;)V HSPLcom/android/internal/telephony/metrics/TelephonyMetrics;->annotateInProgressSmsSession(JILcom/android/internal/telephony/metrics/SmsSessionEventBuilder;)V -PLcom/android/internal/telephony/metrics/TelephonyMetrics;->buildProto()Lcom/android/internal/telephony/nano/TelephonyProto$TelephonyLog; -PLcom/android/internal/telephony/metrics/TelephonyMetrics;->convertSmsFormat(Ljava/lang/String;)I -PLcom/android/internal/telephony/metrics/TelephonyMetrics;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V -PLcom/android/internal/telephony/metrics/TelephonyMetrics;->finishSmsSession(Lcom/android/internal/telephony/metrics/InProgressSmsSession;)Lcom/android/internal/telephony/nano/TelephonyProto$SmsSession; +HPLcom/android/internal/telephony/metrics/TelephonyMetrics;->buildProto()Lcom/android/internal/telephony/nano/TelephonyProto$TelephonyLog; +HPLcom/android/internal/telephony/metrics/TelephonyMetrics;->convertSmsFormat(Ljava/lang/String;)I +HPLcom/android/internal/telephony/metrics/TelephonyMetrics;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V +HPLcom/android/internal/telephony/metrics/TelephonyMetrics;->finishCallSession(Lcom/android/internal/telephony/metrics/InProgressCallSession;)V +HPLcom/android/internal/telephony/metrics/TelephonyMetrics;->finishSmsSession(Lcom/android/internal/telephony/metrics/InProgressSmsSession;)Lcom/android/internal/telephony/nano/TelephonyProto$SmsSession; HSPLcom/android/internal/telephony/metrics/TelephonyMetrics;->getInstance()Lcom/android/internal/telephony/metrics/TelephonyMetrics; HSPLcom/android/internal/telephony/metrics/TelephonyMetrics;->reset()V -PLcom/android/internal/telephony/metrics/TelephonyMetrics;->startNewSmsSession(I)Lcom/android/internal/telephony/metrics/InProgressSmsSession; -PLcom/android/internal/telephony/metrics/TelephonyMetrics;->toPrivacyFuzzedTimeInterval(JJ)I +HPLcom/android/internal/telephony/metrics/TelephonyMetrics;->startNewCallSessionIfNeeded(I)Lcom/android/internal/telephony/metrics/InProgressCallSession; +HPLcom/android/internal/telephony/metrics/TelephonyMetrics;->startNewSmsSession(I)Lcom/android/internal/telephony/metrics/InProgressSmsSession; +HPLcom/android/internal/telephony/metrics/TelephonyMetrics;->toPrivacyFuzzedTimeInterval(JJ)I HSPLcom/android/internal/telephony/metrics/TelephonyMetrics;->toServiceStateProto(Landroid/telephony/ServiceState;)Lcom/android/internal/telephony/nano/TelephonyProto$TelephonyServiceState; HSPLcom/android/internal/telephony/metrics/TelephonyMetrics;->updateActiveSubscriptionInfoList(Ljava/util/List;)V HSPLcom/android/internal/telephony/metrics/TelephonyMetrics;->updateSimState(II)V HSPLcom/android/internal/telephony/metrics/TelephonyMetrics;->writeCarrierIdMatchingEvent(IIILjava/lang/String;Ljava/lang/String;)V +HPLcom/android/internal/telephony/metrics/TelephonyMetrics;->writeDataStallEvent(II)V HSPLcom/android/internal/telephony/metrics/TelephonyMetrics;->writeDataSwitch(ILcom/android/internal/telephony/nano/TelephonyProto$TelephonyEvent$DataSwitch;)V HSPLcom/android/internal/telephony/metrics/TelephonyMetrics;->writeImsSetFeatureValue(IIII)V -PLcom/android/internal/telephony/metrics/TelephonyMetrics;->writeIncomingSmsSessionWithType(IIZLjava/lang/String;[JZZ)V +HPLcom/android/internal/telephony/metrics/TelephonyMetrics;->writeIncomingSmsSession(IZLjava/lang/String;[JZ)V +HPLcom/android/internal/telephony/metrics/TelephonyMetrics;->writeIncomingSmsSessionWithType(IIZLjava/lang/String;[JZZ)V HSPLcom/android/internal/telephony/metrics/TelephonyMetrics;->writeNITZEvent(IJ)V HSPLcom/android/internal/telephony/metrics/TelephonyMetrics;->writeOnImsCapabilities(IILandroid/telephony/ims/feature/MmTelFeature$MmTelCapabilities;)V HSPLcom/android/internal/telephony/metrics/TelephonyMetrics;->writeOnImsConnectionState(IILandroid/telephony/ims/ImsReasonInfo;)V HSPLcom/android/internal/telephony/metrics/TelephonyMetrics;->writeOnRilSolicitedResponse(IIIILjava/lang/Object;)V HSPLcom/android/internal/telephony/metrics/TelephonyMetrics;->writeOnSetupDataCallResponse(IIIILandroid/telephony/data/DataCallResponse;)V +HPLcom/android/internal/telephony/metrics/TelephonyMetrics;->writePhoneState(ILcom/android/internal/telephony/PhoneConstants$State;)V HSPLcom/android/internal/telephony/metrics/TelephonyMetrics;->writeRilDataCallEvent(IIII)V HSPLcom/android/internal/telephony/metrics/TelephonyMetrics;->writeRilDeactivateDataCall(IIII)V HSPLcom/android/internal/telephony/metrics/TelephonyMetrics;->writeServiceStateChanged(ILandroid/telephony/ServiceState;)V @@ -22653,24 +23676,27 @@ HSPLcom/android/internal/telephony/nano/TelephonyProto$RilDataCall;->computeSeri HSPLcom/android/internal/telephony/nano/TelephonyProto$RilDataCall;->emptyArray()[Lcom/android/internal/telephony/nano/TelephonyProto$RilDataCall; HSPLcom/android/internal/telephony/nano/TelephonyProto$RilDataCall;->writeTo(Lcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;)V HSPLcom/android/internal/telephony/nano/TelephonyProto$SmsSession$Event;->clear()Lcom/android/internal/telephony/nano/TelephonyProto$SmsSession$Event; -PLcom/android/internal/telephony/nano/TelephonyProto$SmsSession$Event;->emptyArray()[Lcom/android/internal/telephony/nano/TelephonyProto$SmsSession$Event; +HPLcom/android/internal/telephony/nano/TelephonyProto$SmsSession$Event;->computeSerializedSize()I +HPLcom/android/internal/telephony/nano/TelephonyProto$SmsSession$Event;->emptyArray()[Lcom/android/internal/telephony/nano/TelephonyProto$SmsSession$Event; +HPLcom/android/internal/telephony/nano/TelephonyProto$SmsSession$Event;->writeTo(Lcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;)V PLcom/android/internal/telephony/nano/TelephonyProto$SmsSession;->emptyArray()[Lcom/android/internal/telephony/nano/TelephonyProto$SmsSession; HSPLcom/android/internal/telephony/nano/TelephonyProto$TelephonyCallSession$Event$RilCall;->emptyArray()[Lcom/android/internal/telephony/nano/TelephonyProto$TelephonyCallSession$Event$RilCall; HSPLcom/android/internal/telephony/nano/TelephonyProto$TelephonyCallSession$Event;->clear()Lcom/android/internal/telephony/nano/TelephonyProto$TelephonyCallSession$Event; +HPLcom/android/internal/telephony/nano/TelephonyProto$TelephonyCallSession$Event;->emptyArray()[Lcom/android/internal/telephony/nano/TelephonyProto$TelephonyCallSession$Event; PLcom/android/internal/telephony/nano/TelephonyProto$TelephonyCallSession;->emptyArray()[Lcom/android/internal/telephony/nano/TelephonyProto$TelephonyCallSession; -PLcom/android/internal/telephony/nano/TelephonyProto$TelephonyEvent$CarrierIdMatching;->writeTo(Lcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;)V -PLcom/android/internal/telephony/nano/TelephonyProto$TelephonyEvent$CarrierIdMatchingResult;->computeSerializedSize()I -PLcom/android/internal/telephony/nano/TelephonyProto$TelephonyEvent$CarrierIdMatchingResult;->writeTo(Lcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;)V -PLcom/android/internal/telephony/nano/TelephonyProto$TelephonyEvent$DataSwitch;->computeSerializedSize()I -PLcom/android/internal/telephony/nano/TelephonyProto$TelephonyEvent$DataSwitch;->writeTo(Lcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;)V -PLcom/android/internal/telephony/nano/TelephonyProto$TelephonyEvent$RilSetupDataCall;->computeSerializedSize()I -PLcom/android/internal/telephony/nano/TelephonyProto$TelephonyEvent$RilSetupDataCall;->writeTo(Lcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;)V -PLcom/android/internal/telephony/nano/TelephonyProto$TelephonyEvent$RilSetupDataCallResponse;->computeSerializedSize()I -PLcom/android/internal/telephony/nano/TelephonyProto$TelephonyEvent$RilSetupDataCallResponse;->writeTo(Lcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;)V +HPLcom/android/internal/telephony/nano/TelephonyProto$TelephonyEvent$CarrierIdMatching;->writeTo(Lcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;)V +HPLcom/android/internal/telephony/nano/TelephonyProto$TelephonyEvent$CarrierIdMatchingResult;->computeSerializedSize()I +HPLcom/android/internal/telephony/nano/TelephonyProto$TelephonyEvent$CarrierIdMatchingResult;->writeTo(Lcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;)V +HPLcom/android/internal/telephony/nano/TelephonyProto$TelephonyEvent$DataSwitch;->computeSerializedSize()I +HPLcom/android/internal/telephony/nano/TelephonyProto$TelephonyEvent$DataSwitch;->writeTo(Lcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;)V +HPLcom/android/internal/telephony/nano/TelephonyProto$TelephonyEvent$RilSetupDataCall;->computeSerializedSize()I +HPLcom/android/internal/telephony/nano/TelephonyProto$TelephonyEvent$RilSetupDataCall;->writeTo(Lcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;)V +HPLcom/android/internal/telephony/nano/TelephonyProto$TelephonyEvent$RilSetupDataCallResponse;->computeSerializedSize()I +HPLcom/android/internal/telephony/nano/TelephonyProto$TelephonyEvent$RilSetupDataCallResponse;->writeTo(Lcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;)V HSPLcom/android/internal/telephony/nano/TelephonyProto$TelephonyEvent;->clear()Lcom/android/internal/telephony/nano/TelephonyProto$TelephonyEvent; -PLcom/android/internal/telephony/nano/TelephonyProto$TelephonyEvent;->computeSerializedSize()I -PLcom/android/internal/telephony/nano/TelephonyProto$TelephonyEvent;->emptyArray()[Lcom/android/internal/telephony/nano/TelephonyProto$TelephonyEvent; -PLcom/android/internal/telephony/nano/TelephonyProto$TelephonyEvent;->writeTo(Lcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;)V +HPLcom/android/internal/telephony/nano/TelephonyProto$TelephonyEvent;->computeSerializedSize()I +HPLcom/android/internal/telephony/nano/TelephonyProto$TelephonyEvent;->emptyArray()[Lcom/android/internal/telephony/nano/TelephonyProto$TelephonyEvent; +HPLcom/android/internal/telephony/nano/TelephonyProto$TelephonyEvent;->writeTo(Lcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;)V PLcom/android/internal/telephony/nano/TelephonyProto$TelephonyHistogram;->computeSerializedSize()I PLcom/android/internal/telephony/nano/TelephonyProto$TelephonyHistogram;->emptyArray()[Lcom/android/internal/telephony/nano/TelephonyProto$TelephonyHistogram; PLcom/android/internal/telephony/nano/TelephonyProto$TelephonyHistogram;->writeTo(Lcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;)V @@ -22693,43 +23719,46 @@ HSPLcom/android/internal/telephony/protobuf/nano/CodedInputByteBufferNano;->rewi HSPLcom/android/internal/telephony/protobuf/nano/CodedInputByteBufferNano;->skipField(I)Z HSPLcom/android/internal/telephony/protobuf/nano/CodedInputByteBufferNano;->skipRawBytes(I)V HSPLcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;->checkNoSpaceLeft()V -PLcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;->computeInt32Size(II)I -PLcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;->computeInt32SizeNoTag(I)I -PLcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;->computeMessageSize(ILcom/android/internal/telephony/protobuf/nano/MessageNano;)I -PLcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;->computeRawVarint64Size(J)I +HPLcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;->computeInt32Size(II)I +HPLcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;->computeInt32SizeNoTag(I)I +HPLcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;->computeMessageSize(ILcom/android/internal/telephony/protobuf/nano/MessageNano;)I +HPLcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;->computeRawVarint64Size(J)I HSPLcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;->encode(Ljava/lang/CharSequence;Ljava/nio/ByteBuffer;)V HSPLcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;->encode(Ljava/lang/CharSequence;[BII)I HSPLcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;->encodedLength(Ljava/lang/CharSequence;)I -PLcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;->writeInt32(II)V -PLcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;->writeInt32NoTag(I)V -PLcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;->writeInt64(IJ)V -PLcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;->writeInt64NoTag(J)V -PLcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;->writeMessage(ILcom/android/internal/telephony/protobuf/nano/MessageNano;)V -PLcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;->writeMessageNoTag(Lcom/android/internal/telephony/protobuf/nano/MessageNano;)V +HPLcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;->writeInt32(II)V +HPLcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;->writeInt32NoTag(I)V +HPLcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;->writeInt64(IJ)V +HPLcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;->writeInt64NoTag(J)V +HPLcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;->writeMessage(ILcom/android/internal/telephony/protobuf/nano/MessageNano;)V +HPLcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;->writeMessageNoTag(Lcom/android/internal/telephony/protobuf/nano/MessageNano;)V HSPLcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;->writeRawByte(B)V -PLcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;->writeRawByte(I)V -PLcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;->writeRawLittleEndian64(J)V +HPLcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;->writeRawByte(I)V +HPLcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;->writeRawLittleEndian64(J)V HSPLcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;->writeRawVarint32(I)V HSPLcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;->writeRawVarint64(J)V HSPLcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;->writeStringNoTag(Ljava/lang/String;)V -PLcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;->writeTag(II)V +HPLcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;->writeTag(II)V HSPLcom/android/internal/telephony/protobuf/nano/ExtendableMessageNano;->writeTo(Lcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;)V -PLcom/android/internal/telephony/protobuf/nano/MessageNano;->getCachedSize()I +HPLcom/android/internal/telephony/protobuf/nano/MessageNano;->getCachedSize()I HSPLcom/android/internal/telephony/protobuf/nano/MessageNano;->getSerializedSize()I HSPLcom/android/internal/telephony/protobuf/nano/MessageNano;->mergeFrom(Lcom/android/internal/telephony/protobuf/nano/MessageNano;[BII)Lcom/android/internal/telephony/protobuf/nano/MessageNano; HSPLcom/android/internal/telephony/protobuf/nano/MessageNano;->messageNanoEquals(Lcom/android/internal/telephony/protobuf/nano/MessageNano;Lcom/android/internal/telephony/protobuf/nano/MessageNano;)Z HSPLcom/android/internal/telephony/protobuf/nano/MessageNano;->toByteArray(Lcom/android/internal/telephony/protobuf/nano/MessageNano;[BII)V HSPLcom/android/internal/telephony/uicc/AdnRecord$1;-><init>()V HSPLcom/android/internal/telephony/uicc/AdnRecord;->getAlphaTag()Ljava/lang/String; +HPLcom/android/internal/telephony/uicc/AdnRecord;->getEfid()I HSPLcom/android/internal/telephony/uicc/AdnRecord;->getNumber()Ljava/lang/String; +HPLcom/android/internal/telephony/uicc/AdnRecord;->getRecId()I HSPLcom/android/internal/telephony/uicc/AdnRecord;->isEmpty()Z HSPLcom/android/internal/telephony/uicc/AdnRecord;->parseRecord([B)V +HSPLcom/android/internal/telephony/uicc/AdnRecord;->toString()Ljava/lang/String; HSPLcom/android/internal/telephony/uicc/AdnRecordCache;-><init>(Lcom/android/internal/telephony/uicc/IccFileHandler;)V HSPLcom/android/internal/telephony/uicc/AdnRecordCache;->clearWaiters()V -PLcom/android/internal/telephony/uicc/AdnRecordCache;->extensionEfForEf(I)I -PLcom/android/internal/telephony/uicc/AdnRecordCache;->getRecordsIfLoaded(I)Ljava/util/ArrayList; -PLcom/android/internal/telephony/uicc/AdnRecordCache;->handleMessage(Landroid/os/Message;)V -PLcom/android/internal/telephony/uicc/AdnRecordCache;->requestLoadAllAdnLike(IILandroid/os/Message;)V +HPLcom/android/internal/telephony/uicc/AdnRecordCache;->extensionEfForEf(I)I +HPLcom/android/internal/telephony/uicc/AdnRecordCache;->getRecordsIfLoaded(I)Ljava/util/ArrayList; +HPLcom/android/internal/telephony/uicc/AdnRecordCache;->handleMessage(Landroid/os/Message;)V +HPLcom/android/internal/telephony/uicc/AdnRecordCache;->requestLoadAllAdnLike(IILandroid/os/Message;)V HSPLcom/android/internal/telephony/uicc/AdnRecordCache;->reset()V HSPLcom/android/internal/telephony/uicc/AdnRecordLoader;-><init>(Lcom/android/internal/telephony/uicc/IccFileHandler;)V HSPLcom/android/internal/telephony/uicc/AdnRecordLoader;->handleMessage(Landroid/os/Message;)V @@ -22866,6 +23895,7 @@ HSPLcom/android/internal/telephony/uicc/SIMRecords;->getMsisdnNumber()Ljava/lang HSPLcom/android/internal/telephony/uicc/SIMRecords;->getOperatorNumeric()Ljava/lang/String; HSPLcom/android/internal/telephony/uicc/SIMRecords;->getSpnFsm(ZLandroid/os/AsyncResult;)V HSPLcom/android/internal/telephony/uicc/SIMRecords;->getVoiceCallForwardingFlag()I +HSPLcom/android/internal/telephony/uicc/SIMRecords;->getVoiceMailNumber()Ljava/lang/String; HSPLcom/android/internal/telephony/uicc/SIMRecords;->getVoiceMessageCount()I HSPLcom/android/internal/telephony/uicc/SIMRecords;->handleMessage(Landroid/os/Message;)V HSPLcom/android/internal/telephony/uicc/SIMRecords;->loadCallForwardingRecords()V @@ -22926,6 +23956,7 @@ HSPLcom/android/internal/telephony/uicc/UiccCarrierPrivilegeRules;->handleMessag HSPLcom/android/internal/telephony/uicc/UiccCarrierPrivilegeRules;->hasCarrierPrivilegeRules()Z HSPLcom/android/internal/telephony/uicc/UiccController;-><init>(Landroid/content/Context;[Lcom/android/internal/telephony/CommandsInterface;)V HSPLcom/android/internal/telephony/uicc/UiccController;->addCardId(Ljava/lang/String;)V +HSPLcom/android/internal/telephony/uicc/UiccController;->addCardLog(Ljava/lang/String;)V HSPLcom/android/internal/telephony/uicc/UiccController;->convertToPublicCardId(Ljava/lang/String;)I HSPLcom/android/internal/telephony/uicc/UiccController;->getAllUiccCardInfos()Ljava/util/ArrayList; HSPLcom/android/internal/telephony/uicc/UiccController;->getCardIdForDefaultEuicc()I @@ -22972,12 +24003,13 @@ HSPLcom/android/internal/telephony/uicc/UiccProfile;->getIccRecordsLoaded()Z HSPLcom/android/internal/telephony/uicc/UiccProfile;->getIccStateReason(Lcom/android/internal/telephony/IccCardConstants$State;)Ljava/lang/String; HSPLcom/android/internal/telephony/uicc/UiccProfile;->getOperatorBrandOverride()Ljava/lang/String; HSPLcom/android/internal/telephony/uicc/UiccProfile;->getPhoneId()I +HSPLcom/android/internal/telephony/uicc/UiccProfile;->getServiceProviderName()Ljava/lang/String; HSPLcom/android/internal/telephony/uicc/UiccProfile;->getState()Lcom/android/internal/telephony/IccCardConstants$State; HSPLcom/android/internal/telephony/uicc/UiccProfile;->getUninstalledCarrierPackages()Ljava/util/Set; HSPLcom/android/internal/telephony/uicc/UiccProfile;->handleCarrierNameOverride()V HSPLcom/android/internal/telephony/uicc/UiccProfile;->handleSimCountryIsoOverride()V HSPLcom/android/internal/telephony/uicc/UiccProfile;->hasCarrierPrivilegeRules()Z -PLcom/android/internal/telephony/uicc/UiccProfile;->hasIccCard()Z +HPLcom/android/internal/telephony/uicc/UiccProfile;->hasIccCard()Z HSPLcom/android/internal/telephony/uicc/UiccProfile;->iccCloseLogicalChannel(ILandroid/os/Message;)V HSPLcom/android/internal/telephony/uicc/UiccProfile;->iccOpenLogicalChannel(Ljava/lang/String;ILandroid/os/Message;)V HSPLcom/android/internal/telephony/uicc/UiccProfile;->iccTransmitApduLogicalChannel(IIIIIILjava/lang/String;Landroid/os/Message;)V @@ -23037,6 +24069,7 @@ HPLcom/android/internal/textservice/ITextServicesManager$Stub;->onTransact(ILand PLcom/android/internal/textservice/ITextServicesSessionListener$Stub$Proxy;->onServiceConnected(Lcom/android/internal/textservice/ISpellCheckerSession;)V PLcom/android/internal/util/-$$Lambda$DumpUtils$vCLO_0ezRxkpSERUWCFrJ0ph5jg;->test(Ljava/lang/Object;)Z PLcom/android/internal/util/-$$Lambda$FunctionalUtils$koCSI8D7Nu5vOJTVTEj0m3leo_U;->run()V +HSPLcom/android/internal/util/ArrayUtils;->add(Landroid/util/ArraySet;Ljava/lang/Object;)Landroid/util/ArraySet; HSPLcom/android/internal/util/ArrayUtils;->add(Ljava/util/ArrayList;Ljava/lang/Object;)Ljava/util/ArrayList; HSPLcom/android/internal/util/ArrayUtils;->appendElement(Ljava/lang/Class;[Ljava/lang/Object;Ljava/lang/Object;)[Ljava/lang/Object; HSPLcom/android/internal/util/ArrayUtils;->appendElement(Ljava/lang/Class;[Ljava/lang/Object;Ljava/lang/Object;Z)[Ljava/lang/Object; @@ -23067,6 +24100,7 @@ HSPLcom/android/internal/util/ArrayUtils;->newUnpaddedObjectArray(I)[Ljava/lang/ HSPLcom/android/internal/util/ArrayUtils;->referenceEquals(Ljava/util/ArrayList;Ljava/util/ArrayList;)Z HSPLcom/android/internal/util/ArrayUtils;->remove(Ljava/util/ArrayList;Ljava/lang/Object;)Ljava/util/ArrayList; HSPLcom/android/internal/util/ArrayUtils;->removeElement(Ljava/lang/Class;[Ljava/lang/Object;Ljava/lang/Object;)[Ljava/lang/Object; +HSPLcom/android/internal/util/ArrayUtils;->removeInt([II)[I HSPLcom/android/internal/util/ArrayUtils;->size(Ljava/util/Collection;)I HSPLcom/android/internal/util/ArrayUtils;->total([J)J HSPLcom/android/internal/util/ArrayUtils;->trimToSize([Ljava/lang/Object;I)[Ljava/lang/Object; @@ -23097,11 +24131,14 @@ HSPLcom/android/internal/util/AsyncChannel;->sendMessageSynchronously(Landroid/o HSPLcom/android/internal/util/BitUtils;->packBits([I)J HSPLcom/android/internal/util/BitUtils;->toBytes(J)[B HSPLcom/android/internal/util/BitUtils;->unpackBits(J)[I +HPLcom/android/internal/util/CollectionUtils;->addIf(Ljava/util/List;Ljava/util/Collection;Ljava/util/function/Predicate;)V +HSPLcom/android/internal/util/CollectionUtils;->copyOf(Ljava/util/Set;)Ljava/util/Set; +HSPLcom/android/internal/util/CollectionUtils;->filter(Ljava/util/Set;Ljava/util/function/Predicate;)Ljava/util/Set; HSPLcom/android/internal/util/CollectionUtils;->firstOrNull(Ljava/util/Collection;)Ljava/lang/Object; HSPLcom/android/internal/util/CollectionUtils;->firstOrNull(Ljava/util/List;)Ljava/lang/Object; HSPLcom/android/internal/util/CollectionUtils;->isEmpty(Ljava/util/Collection;)Z HSPLcom/android/internal/util/CollectionUtils;->map(Ljava/util/Set;Ljava/util/function/Function;)Ljava/util/Set; -PLcom/android/internal/util/CollectionUtils;->singletonOrEmpty(Ljava/lang/Object;)Ljava/util/List; +HPLcom/android/internal/util/CollectionUtils;->singletonOrEmpty(Ljava/lang/Object;)Ljava/util/List; HSPLcom/android/internal/util/CollectionUtils;->size(Ljava/util/Collection;)I HSPLcom/android/internal/util/ConcurrentUtils$1$1;->run()V HSPLcom/android/internal/util/ConcurrentUtils$1;->newThread(Ljava/lang/Runnable;)Ljava/lang/Thread; @@ -23112,17 +24149,17 @@ HSPLcom/android/internal/util/ConcurrentUtils;->wtfIfLockHeld(Ljava/lang/String; HPLcom/android/internal/util/DumpUtils;->checkDumpAndUsageStatsPermission(Landroid/content/Context;Ljava/lang/String;Ljava/io/PrintWriter;)Z HSPLcom/android/internal/util/DumpUtils;->checkDumpPermission(Landroid/content/Context;Ljava/lang/String;Ljava/io/PrintWriter;)Z HPLcom/android/internal/util/DumpUtils;->checkUsageStatsPermission(Landroid/content/Context;Ljava/lang/String;Ljava/io/PrintWriter;)Z -PLcom/android/internal/util/DumpUtils;->filterRecord(Ljava/lang/String;)Ljava/util/function/Predicate; +HPLcom/android/internal/util/DumpUtils;->filterRecord(Ljava/lang/String;)Ljava/util/function/Predicate; HPLcom/android/internal/util/DumpUtils;->lambda$filterRecord$2(ILjava/lang/String;Landroid/content/ComponentName$WithComponentName;)Z HSPLcom/android/internal/util/ExponentiallyBucketedHistogram;-><init>(I)V HSPLcom/android/internal/util/ExponentiallyBucketedHistogram;->add(I)V HSPLcom/android/internal/util/FastPrintWriter;-><init>(Ljava/io/OutputStream;)V HSPLcom/android/internal/util/FastPrintWriter;-><init>(Ljava/io/OutputStream;ZI)V -PLcom/android/internal/util/FastPrintWriter;-><init>(Ljava/io/Writer;)V +HPLcom/android/internal/util/FastPrintWriter;-><init>(Ljava/io/Writer;)V HSPLcom/android/internal/util/FastPrintWriter;-><init>(Ljava/io/Writer;ZI)V HSPLcom/android/internal/util/FastPrintWriter;->appendLocked(Ljava/lang/String;II)V HPLcom/android/internal/util/FastPrintWriter;->appendLocked([CII)V -PLcom/android/internal/util/FastPrintWriter;->checkError()Z +HPLcom/android/internal/util/FastPrintWriter;->checkError()Z HSPLcom/android/internal/util/FastPrintWriter;->close()V HSPLcom/android/internal/util/FastPrintWriter;->flush()V HSPLcom/android/internal/util/FastPrintWriter;->flushBytesLocked()V @@ -23162,9 +24199,9 @@ HSPLcom/android/internal/util/FileRotator;->rewriteSingle(Lcom/android/internal/ HSPLcom/android/internal/util/FileRotator;->writeFile(Ljava/io/File;Lcom/android/internal/util/FileRotator$Writer;)V HSPLcom/android/internal/util/FunctionalUtils$RemoteExceptionIgnoringConsumer;->accept(Ljava/lang/Object;)V HSPLcom/android/internal/util/FunctionalUtils$ThrowingConsumer;->accept(Ljava/lang/Object;)V -PLcom/android/internal/util/FunctionalUtils$ThrowingRunnable;->run()V -PLcom/android/internal/util/FunctionalUtils;->handleExceptions(Lcom/android/internal/util/FunctionalUtils$ThrowingRunnable;Ljava/util/function/Consumer;)Ljava/lang/Runnable; -PLcom/android/internal/util/FunctionalUtils;->lambda$handleExceptions$0(Lcom/android/internal/util/FunctionalUtils$ThrowingRunnable;Ljava/util/function/Consumer;)V +HPLcom/android/internal/util/FunctionalUtils$ThrowingRunnable;->run()V +HPLcom/android/internal/util/FunctionalUtils;->handleExceptions(Lcom/android/internal/util/FunctionalUtils$ThrowingRunnable;Ljava/util/function/Consumer;)Ljava/lang/Runnable; +HPLcom/android/internal/util/FunctionalUtils;->lambda$handleExceptions$0(Lcom/android/internal/util/FunctionalUtils$ThrowingRunnable;Ljava/util/function/Consumer;)V HSPLcom/android/internal/util/GrowingArrayUtils;->append([III)[I HSPLcom/android/internal/util/GrowingArrayUtils;->append([JIJ)[J HSPLcom/android/internal/util/GrowingArrayUtils;->append([Ljava/lang/Object;ILjava/lang/Object;)[Ljava/lang/Object; @@ -23220,6 +24257,7 @@ HSPLcom/android/internal/util/Preconditions;->checkArgument(Z)V HSPLcom/android/internal/util/Preconditions;->checkArgument(ZLjava/lang/Object;)V HSPLcom/android/internal/util/Preconditions;->checkArgument(ZLjava/lang/String;[Ljava/lang/Object;)V HSPLcom/android/internal/util/Preconditions;->checkArgumentInRange(IIILjava/lang/String;)I +HSPLcom/android/internal/util/Preconditions;->checkArgumentInRange(JJJLjava/lang/String;)J HSPLcom/android/internal/util/Preconditions;->checkArgumentNonNegative(FLjava/lang/String;)F HSPLcom/android/internal/util/Preconditions;->checkArgumentNonnegative(I)I HSPLcom/android/internal/util/Preconditions;->checkArgumentNonnegative(ILjava/lang/String;)I @@ -23249,9 +24287,9 @@ HSPLcom/android/internal/util/RingBuffer;->append(Ljava/lang/Object;)V HSPLcom/android/internal/util/RingBuffer;->clear()V HSPLcom/android/internal/util/RingBuffer;->createNewItem()Ljava/lang/Object; HSPLcom/android/internal/util/RingBuffer;->getNextSlot()Ljava/lang/Object; -PLcom/android/internal/util/RingBuffer;->isEmpty()Z +HPLcom/android/internal/util/RingBuffer;->isEmpty()Z HSPLcom/android/internal/util/RingBuffer;->size()I -PLcom/android/internal/util/RingBuffer;->toArray()[Ljava/lang/Object; +HPLcom/android/internal/util/RingBuffer;->toArray()[Ljava/lang/Object; HSPLcom/android/internal/util/RingBufferIndices;->add()I HSPLcom/android/internal/util/ScreenShapeHelper;->getWindowOutsetBottomPx(Landroid/content/res/Resources;)I HSPLcom/android/internal/util/ScreenshotHelper;-><init>(Landroid/content/Context;)V @@ -23314,7 +24352,7 @@ HSPLcom/android/internal/util/StateMachine;->sendMessage(IIILjava/lang/Object;)V HSPLcom/android/internal/util/StateMachine;->sendMessage(ILjava/lang/Object;)V HSPLcom/android/internal/util/StateMachine;->sendMessage(Landroid/os/Message;)V HSPLcom/android/internal/util/StateMachine;->sendMessageAtFrontOfQueue(I)V -PLcom/android/internal/util/StateMachine;->sendMessageAtFrontOfQueue(IIILjava/lang/Object;)V +HPLcom/android/internal/util/StateMachine;->sendMessageAtFrontOfQueue(IIILjava/lang/Object;)V HSPLcom/android/internal/util/StateMachine;->sendMessageDelayed(IJ)V HSPLcom/android/internal/util/StateMachine;->sendMessageDelayed(Landroid/os/Message;J)V HSPLcom/android/internal/util/StateMachine;->setDbg(Z)V @@ -23324,13 +24362,13 @@ HSPLcom/android/internal/util/StateMachine;->setLogRecSize(I)V HSPLcom/android/internal/util/StateMachine;->start()V HSPLcom/android/internal/util/StateMachine;->transitionTo(Lcom/android/internal/util/IState;)V HSPLcom/android/internal/util/StateMachine;->unhandledMessage(Landroid/os/Message;)V -PLcom/android/internal/util/SyncResultReceiver;->bundleFor(Landroid/os/Parcelable;)Landroid/os/Bundle; +HPLcom/android/internal/util/SyncResultReceiver;->bundleFor(Landroid/os/Parcelable;)Landroid/os/Bundle; HSPLcom/android/internal/util/SyncResultReceiver;->send(ILandroid/os/Bundle;)V HSPLcom/android/internal/util/SyncResultReceiver;->waitResult()V HSPLcom/android/internal/util/TokenBucket;-><init>(II)V HSPLcom/android/internal/util/TokenBucket;-><init>(III)V -PLcom/android/internal/util/TokenBucket;->get()Z -PLcom/android/internal/util/TokenBucket;->get(I)I +HPLcom/android/internal/util/TokenBucket;->get()Z +HPLcom/android/internal/util/TokenBucket;->get(I)I HSPLcom/android/internal/util/VirtualRefBasePtr;-><init>(J)V HSPLcom/android/internal/util/VirtualRefBasePtr;->finalize()V HSPLcom/android/internal/util/VirtualRefBasePtr;->release()V @@ -23339,7 +24377,7 @@ HSPLcom/android/internal/util/WakeupMessage;-><init>(Landroid/content/Context;La HSPLcom/android/internal/util/WakeupMessage;-><init>(Landroid/content/Context;Landroid/os/Handler;Ljava/lang/String;IIILjava/lang/Object;)V HSPLcom/android/internal/util/WakeupMessage;-><init>(Landroid/content/Context;Landroid/os/Handler;Ljava/lang/String;Ljava/lang/Runnable;)V HSPLcom/android/internal/util/WakeupMessage;->cancel()V -PLcom/android/internal/util/WakeupMessage;->onAlarm()V +HPLcom/android/internal/util/WakeupMessage;->onAlarm()V HSPLcom/android/internal/util/WakeupMessage;->schedule(J)V HSPLcom/android/internal/util/XmlUtils;->beginDocument(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)V HSPLcom/android/internal/util/XmlUtils;->convertValueToBoolean(Ljava/lang/CharSequence;Z)Z @@ -23408,8 +24446,11 @@ PLcom/android/internal/view/BaseIWindow;->closeSystemDialogs(Ljava/lang/String;) PLcom/android/internal/view/BaseIWindow;->dispatchAppVisibility(Z)V HSPLcom/android/internal/view/BaseIWindow;->insetsChanged(Landroid/view/InsetsState;)V HSPLcom/android/internal/view/IInputConnectionWrapper$MyHandler;->handleMessage(Landroid/os/Message;)V +HSPLcom/android/internal/view/IInputConnectionWrapper;->beginBatchEdit()V HSPLcom/android/internal/view/IInputConnectionWrapper;->closeConnection()V +HSPLcom/android/internal/view/IInputConnectionWrapper;->commitText(Ljava/lang/CharSequence;I)V HSPLcom/android/internal/view/IInputConnectionWrapper;->dispatchMessage(Landroid/os/Message;)V +HSPLcom/android/internal/view/IInputConnectionWrapper;->endBatchEdit()V HSPLcom/android/internal/view/IInputConnectionWrapper;->executeMessage(Landroid/os/Message;)V HSPLcom/android/internal/view/IInputConnectionWrapper;->finishComposingText()V HSPLcom/android/internal/view/IInputConnectionWrapper;->getInputConnection()Landroid/view/inputmethod/InputConnection; @@ -23419,12 +24460,21 @@ HSPLcom/android/internal/view/IInputConnectionWrapper;->getTextBeforeCursor(IIIL HSPLcom/android/internal/view/IInputConnectionWrapper;->isFinished()Z HSPLcom/android/internal/view/IInputConnectionWrapper;->obtainMessage(I)Landroid/os/Message; HSPLcom/android/internal/view/IInputConnectionWrapper;->obtainMessageIISC(IIIILcom/android/internal/view/IInputContextCallback;)Landroid/os/Message; +HSPLcom/android/internal/view/IInputConnectionWrapper;->obtainMessageIO(IILjava/lang/Object;)Landroid/os/Message; HSPLcom/android/internal/view/IInputConnectionWrapper;->obtainMessageISC(IIILcom/android/internal/view/IInputContextCallback;)Landroid/os/Message; HSPLcom/android/internal/view/IInputContext$Stub$Proxy;-><init>(Landroid/os/IBinder;)V HSPLcom/android/internal/view/IInputContext$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HSPLcom/android/internal/view/IInputContext$Stub$Proxy;->beginBatchEdit()V +HSPLcom/android/internal/view/IInputContext$Stub$Proxy;->commitText(Ljava/lang/CharSequence;I)V +HSPLcom/android/internal/view/IInputContext$Stub$Proxy;->deleteSurroundingText(II)V +HSPLcom/android/internal/view/IInputContext$Stub$Proxy;->endBatchEdit()V +HSPLcom/android/internal/view/IInputContext$Stub$Proxy;->finishComposingText()V HSPLcom/android/internal/view/IInputContext$Stub$Proxy;->getSelectedText(IILcom/android/internal/view/IInputContextCallback;)V HSPLcom/android/internal/view/IInputContext$Stub$Proxy;->getTextAfterCursor(IIILcom/android/internal/view/IInputContextCallback;)V HSPLcom/android/internal/view/IInputContext$Stub$Proxy;->getTextBeforeCursor(IIILcom/android/internal/view/IInputContextCallback;)V +HSPLcom/android/internal/view/IInputContext$Stub$Proxy;->sendKeyEvent(Landroid/view/KeyEvent;)V +HSPLcom/android/internal/view/IInputContext$Stub$Proxy;->setComposingRegion(II)V +HSPLcom/android/internal/view/IInputContext$Stub$Proxy;->setComposingText(Ljava/lang/CharSequence;I)V HSPLcom/android/internal/view/IInputContext$Stub;->asBinder()Landroid/os/IBinder; HSPLcom/android/internal/view/IInputContext$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/view/IInputContext; HSPLcom/android/internal/view/IInputContext$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z @@ -23588,15 +24638,18 @@ HSPLcom/android/internal/widget/ActionBarOverlayLayout;->setWindowTitle(Ljava/la HSPLcom/android/internal/widget/BackgroundFallback;->draw(Landroid/view/ViewGroup;Landroid/view/ViewGroup;Landroid/graphics/Canvas;Landroid/view/View;Landroid/view/View;Landroid/view/View;)V HSPLcom/android/internal/widget/BackgroundFallback;->hasFallback()Z HSPLcom/android/internal/widget/BackgroundFallback;->setDrawable(Landroid/graphics/drawable/Drawable;)V +HSPLcom/android/internal/widget/DialogTitle;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V HSPLcom/android/internal/widget/EditableInputConnection;->beginBatchEdit()Z HSPLcom/android/internal/widget/EditableInputConnection;->closeConnection()V +HSPLcom/android/internal/widget/EditableInputConnection;->commitText(Ljava/lang/CharSequence;I)Z HSPLcom/android/internal/widget/EditableInputConnection;->endBatchEdit()Z HSPLcom/android/internal/widget/EditableInputConnection;->getEditable()Landroid/text/Editable; PLcom/android/internal/widget/ICheckCredentialProgressCallback$Stub$Proxy;->onCredentialVerified()V HSPLcom/android/internal/widget/ILockSettings$Stub$Proxy;->getBoolean(Ljava/lang/String;ZI)Z +HSPLcom/android/internal/widget/ILockSettings$Stub$Proxy;->getLong(Ljava/lang/String;JI)J HSPLcom/android/internal/widget/ILockSettings$Stub;-><init>()V HSPLcom/android/internal/widget/ILockSettings$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/widget/ILockSettings; -PLcom/android/internal/widget/ILockSettings$Stub;->getDefaultTransactionName(I)Ljava/lang/String; +HPLcom/android/internal/widget/ILockSettings$Stub;->getDefaultTransactionName(I)Ljava/lang/String; HSPLcom/android/internal/widget/ILockSettings$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HSPLcom/android/internal/widget/LockPatternUtils$StrongAuthTracker$1;->onStrongAuthRequiredChanged(II)V HSPLcom/android/internal/widget/LockPatternUtils$StrongAuthTracker$H;->handleMessage(Landroid/os/Message;)V @@ -23623,12 +24676,12 @@ HSPLcom/android/internal/widget/LockPatternUtils;->isLockPasswordEnabled(I)Z HSPLcom/android/internal/widget/LockPatternUtils;->isLockPasswordEnabled(II)Z HSPLcom/android/internal/widget/LockPatternUtils;->isLockPatternEnabled(I)Z HSPLcom/android/internal/widget/LockPatternUtils;->isOwnerInfoEnabled(I)Z -PLcom/android/internal/widget/LockPatternUtils;->isPowerButtonInstantlyLocksEverChosen(I)Z +HPLcom/android/internal/widget/LockPatternUtils;->isPowerButtonInstantlyLocksEverChosen(I)Z HSPLcom/android/internal/widget/LockPatternUtils;->isSecure(I)Z HSPLcom/android/internal/widget/LockPatternUtils;->isSeparateProfileChallengeEnabled(I)Z HSPLcom/android/internal/widget/LockPatternUtils;->isTrustUsuallyManaged(I)Z HSPLcom/android/internal/widget/LockPatternUtils;->isVisiblePatternEnabled(I)Z -PLcom/android/internal/widget/LockPatternUtils;->isVisiblePatternEverChosen(I)Z +HPLcom/android/internal/widget/LockPatternUtils;->isVisiblePatternEverChosen(I)Z HSPLcom/android/internal/widget/LockPatternUtils;->registerStrongAuthTracker(Lcom/android/internal/widget/LockPatternUtils$StrongAuthTracker;)V HSPLcom/android/internal/widget/LockPatternUtils;->savedPasswordExists(I)Z HSPLcom/android/internal/widget/LockPatternUtils;->savedPatternExists(I)Z @@ -23637,13 +24690,16 @@ HSPLcom/android/internal/widget/ToolbarWidgetWrapper;-><init>(Landroid/widget/To HSPLcom/android/internal/widget/ToolbarWidgetWrapper;->dismissPopupMenus()V HSPLcom/android/internal/widget/ToolbarWidgetWrapper;->getContext()Landroid/content/Context; HSPLcom/android/internal/widget/ToolbarWidgetWrapper;->getDisplayOptions()I +HSPLcom/android/internal/widget/ToolbarWidgetWrapper;->getMenu()Landroid/view/Menu; HSPLcom/android/internal/widget/ToolbarWidgetWrapper;->getTitle()Ljava/lang/CharSequence; +HSPLcom/android/internal/widget/ToolbarWidgetWrapper;->getViewGroup()Landroid/view/ViewGroup; HSPLcom/android/internal/widget/ToolbarWidgetWrapper;->hasIcon()Z HSPLcom/android/internal/widget/ToolbarWidgetWrapper;->isSplit()Z HSPLcom/android/internal/widget/ToolbarWidgetWrapper;->setDefaultNavigationContentDescription(I)V HSPLcom/android/internal/widget/ToolbarWidgetWrapper;->setDisplayOptions(I)V HSPLcom/android/internal/widget/ToolbarWidgetWrapper;->setIcon(I)V HSPLcom/android/internal/widget/ToolbarWidgetWrapper;->setIcon(Landroid/graphics/drawable/Drawable;)V +HSPLcom/android/internal/widget/ToolbarWidgetWrapper;->setMenuCallbacks(Lcom/android/internal/view/menu/MenuPresenter$Callback;Lcom/android/internal/view/menu/MenuBuilder$Callback;)V HSPLcom/android/internal/widget/ToolbarWidgetWrapper;->setMenuPrepared()V HSPLcom/android/internal/widget/ToolbarWidgetWrapper;->setNavigationIcon(Landroid/graphics/drawable/Drawable;)V HSPLcom/android/internal/widget/ToolbarWidgetWrapper;->setWindowCallback(Landroid/view/Window$Callback;)V @@ -23717,6 +24773,7 @@ HSPLcom/android/okhttp/HttpUrl$Builder;->skipTrailingAsciiWhitespace(Ljava/lang/ HSPLcom/android/okhttp/HttpUrl$Builder;->toString()Ljava/lang/String; HSPLcom/android/okhttp/HttpUrl;-><init>(Lcom/android/okhttp/HttpUrl$Builder;)V HSPLcom/android/okhttp/HttpUrl;->canonicalize(Ljava/lang/String;IILjava/lang/String;ZZZZ)Ljava/lang/String; +HSPLcom/android/okhttp/HttpUrl;->decodeHexDigit(C)I HSPLcom/android/okhttp/HttpUrl;->encodedPassword()Ljava/lang/String; HSPLcom/android/okhttp/HttpUrl;->encodedPath()Ljava/lang/String; HSPLcom/android/okhttp/HttpUrl;->encodedPathSegments()Ljava/util/List; @@ -23725,6 +24782,7 @@ HSPLcom/android/okhttp/HttpUrl;->encodedUsername()Ljava/lang/String; HSPLcom/android/okhttp/HttpUrl;->getChecked(Ljava/lang/String;)Lcom/android/okhttp/HttpUrl; HSPLcom/android/okhttp/HttpUrl;->namesAndValuesToQueryString(Ljava/lang/StringBuilder;Ljava/util/List;)V HSPLcom/android/okhttp/HttpUrl;->newBuilder()Lcom/android/okhttp/HttpUrl$Builder; +HSPLcom/android/okhttp/HttpUrl;->percentDecode(Lcom/android/okhttp/okio/Buffer;Ljava/lang/String;IIZ)V HSPLcom/android/okhttp/HttpUrl;->percentDecode(Ljava/lang/String;IIZ)Ljava/lang/String; HSPLcom/android/okhttp/HttpUrl;->percentDecode(Ljava/util/List;Z)Ljava/util/List; HSPLcom/android/okhttp/HttpUrl;->queryStringToNamesAndValues(Ljava/lang/String;)Ljava/util/List; @@ -23846,11 +24904,16 @@ HSPLcom/android/okhttp/internal/http/HttpEngine;->unzip(Lcom/android/okhttp/Resp HSPLcom/android/okhttp/internal/http/HttpMethod;->permitsRequestBody(Ljava/lang/String;)Z HSPLcom/android/okhttp/internal/http/HttpMethod;->requiresRequestBody(Ljava/lang/String;)Z HSPLcom/android/okhttp/internal/http/OkHeaders$1;-><init>()V +HSPLcom/android/okhttp/internal/http/OkHeaders$1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I +HSPLcom/android/okhttp/internal/http/OkHeaders$1;->compare(Ljava/lang/String;Ljava/lang/String;)I HSPLcom/android/okhttp/internal/http/OkHeaders;->stringToLong(Ljava/lang/String;)J +HSPLcom/android/okhttp/internal/http/OkHeaders;->toMultimap(Lcom/android/okhttp/Headers;Ljava/lang/String;)Ljava/util/Map; HSPLcom/android/okhttp/internal/http/RealResponseBody;->source()Lcom/android/okhttp/okio/BufferedSource; HSPLcom/android/okhttp/internal/http/RequestLine;->get(Lcom/android/okhttp/Request;Ljava/net/Proxy$Type;)Ljava/lang/String; HSPLcom/android/okhttp/internal/http/RequestLine;->requestPath(Lcom/android/okhttp/HttpUrl;)Ljava/lang/String; HSPLcom/android/okhttp/internal/http/RetryableSink;->close()V +HSPLcom/android/okhttp/internal/http/RetryableSink;->flush()V +HSPLcom/android/okhttp/internal/http/RetryableSink;->write(Lcom/android/okhttp/okio/Buffer;J)V HSPLcom/android/okhttp/internal/http/RouteSelector;-><init>(Lcom/android/okhttp/Address;Lcom/android/okhttp/internal/RouteDatabase;)V HSPLcom/android/okhttp/internal/http/RouteSelector;->next()Lcom/android/okhttp/Route; HSPLcom/android/okhttp/internal/http/RouteSelector;->nextInetSocketAddress()Ljava/net/InetSocketAddress; @@ -23866,6 +24929,7 @@ HSPLcom/android/okhttp/internal/http/StreamAllocation;->findHealthyConnection(II HSPLcom/android/okhttp/internal/http/StreamAllocation;->newStream(IIIZZ)Lcom/android/okhttp/internal/http/HttpStream; HSPLcom/android/okhttp/internal/http/StreamAllocation;->release(Lcom/android/okhttp/internal/io/RealConnection;)V HSPLcom/android/okhttp/internal/http/StreamAllocation;->streamFinished(Lcom/android/okhttp/internal/http/HttpStream;)V +HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->addRequestProperty(Ljava/lang/String;Ljava/lang/String;)V HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->connect()V HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->disconnect()V HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->execute(Z)Z @@ -23875,6 +24939,7 @@ HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->getInputStream()Ljav HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->getOutputStream()Ljava/io/OutputStream; HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->getResponse()Lcom/android/okhttp/internal/http/HttpEngine; HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->getResponseCode()I +HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->getResponseMessage()Ljava/lang/String; HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->initHttpEngine()V HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->newHttpEngine(Ljava/lang/String;Lcom/android/okhttp/internal/http/StreamAllocation;Lcom/android/okhttp/internal/http/RetryableSink;Lcom/android/okhttp/Response;)Lcom/android/okhttp/internal/http/HttpEngine; HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->responseSourceHeader(Lcom/android/okhttp/Response;)Ljava/lang/String; @@ -23883,12 +24948,14 @@ HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->setInstanceFollowRed HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->setReadTimeout(I)V HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->setRequestMethod(Ljava/lang/String;)V HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->setRequestProperty(Ljava/lang/String;Ljava/lang/String;)V +HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->addRequestProperty(Ljava/lang/String;Ljava/lang/String;)V HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->connect()V HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->disconnect()V HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->getHeaderField(Ljava/lang/String;)Ljava/lang/String; HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->getInputStream()Ljava/io/InputStream; HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->getOutputStream()Ljava/io/OutputStream; HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->getResponseCode()I +HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->getResponseMessage()Ljava/lang/String; HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->setConnectTimeout(I)V HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->setDoOutput(Z)V HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->setInstanceFollowRedirects(Z)V @@ -23927,12 +24994,14 @@ HSPLcom/android/okhttp/okio/Buffer;->readHexadecimalUnsignedLong()J HSPLcom/android/okhttp/okio/Buffer;->readInt()I HSPLcom/android/okhttp/okio/Buffer;->readShort()S HSPLcom/android/okhttp/okio/Buffer;->readString(JLjava/nio/charset/Charset;)Ljava/lang/String; +HSPLcom/android/okhttp/okio/Buffer;->readUtf8()Ljava/lang/String; HSPLcom/android/okhttp/okio/Buffer;->readUtf8Line(J)Ljava/lang/String; HSPLcom/android/okhttp/okio/Buffer;->skip(J)V HSPLcom/android/okhttp/okio/Buffer;->writableSegment(I)Lcom/android/okhttp/okio/Segment; HSPLcom/android/okhttp/okio/Buffer;->write(Lcom/android/okhttp/okio/Buffer;J)V HSPLcom/android/okhttp/okio/Buffer;->write([BII)Lcom/android/okhttp/okio/Buffer; HSPLcom/android/okhttp/okio/Buffer;->writeUtf8(Ljava/lang/String;II)Lcom/android/okhttp/okio/Buffer; +HSPLcom/android/okhttp/okio/Buffer;->writeUtf8CodePoint(I)Lcom/android/okhttp/okio/Buffer; HSPLcom/android/okhttp/okio/ByteString;->of([B)Lcom/android/okhttp/okio/ByteString; HSPLcom/android/okhttp/okio/GzipSource;-><init>(Lcom/android/okhttp/okio/Source;)V HSPLcom/android/okhttp/okio/GzipSource;->checkEqual(Ljava/lang/String;II)V @@ -23960,6 +25029,7 @@ HSPLcom/android/okhttp/okio/RealBufferedSink;->outputStream()Ljava/io/OutputStre HSPLcom/android/okhttp/okio/RealBufferedSink;->timeout()Lcom/android/okhttp/okio/Timeout; HSPLcom/android/okhttp/okio/RealBufferedSink;->write(Lcom/android/okhttp/okio/Buffer;J)V HSPLcom/android/okhttp/okio/RealBufferedSink;->writeUtf8(Ljava/lang/String;)Lcom/android/okhttp/okio/BufferedSink; +HSPLcom/android/okhttp/okio/RealBufferedSource$1;->available()I HSPLcom/android/okhttp/okio/RealBufferedSource$1;->close()V HSPLcom/android/okhttp/okio/RealBufferedSource$1;->read([BII)I HSPLcom/android/okhttp/okio/RealBufferedSource;->buffer()Lcom/android/okhttp/okio/Buffer; @@ -24077,6 +25147,11 @@ HSPLcom/android/org/bouncycastle/crypto/CryptoServicesRegistrar;->localSetGlobal HSPLcom/android/org/bouncycastle/crypto/CryptoServicesRegistrar;->toDH(Lcom/android/org/bouncycastle/crypto/params/DSAParameters;)Lcom/android/org/bouncycastle/crypto/params/DHParameters; HSPLcom/android/org/bouncycastle/crypto/digests/AndroidDigestFactoryBouncyCastle;-><init>()V HSPLcom/android/org/bouncycastle/crypto/digests/AndroidDigestFactoryOpenSSL;-><init>()V +HSPLcom/android/org/bouncycastle/crypto/digests/OpenSSLDigest;-><init>(Ljava/lang/String;I)V +HSPLcom/android/org/bouncycastle/crypto/digests/OpenSSLDigest;->doFinal([BI)I +HSPLcom/android/org/bouncycastle/crypto/digests/OpenSSLDigest;->getDigestSize()I +HSPLcom/android/org/bouncycastle/crypto/digests/OpenSSLDigest;->reset()V +HSPLcom/android/org/bouncycastle/crypto/digests/OpenSSLDigest;->update([BII)V HSPLcom/android/org/bouncycastle/crypto/params/DHParameters;-><init>(Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;IILjava/math/BigInteger;Lcom/android/org/bouncycastle/crypto/params/DHValidationParameters;)V HSPLcom/android/org/bouncycastle/crypto/params/DSAParameters;-><init>(Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Lcom/android/org/bouncycastle/crypto/params/DSAValidationParameters;)V HSPLcom/android/org/bouncycastle/crypto/params/DSAParameters;->getG()Ljava/math/BigInteger; @@ -24180,7 +25255,7 @@ HSPLcom/android/org/bouncycastle/jce/provider/BouncyCastleProvider;->loadAlgorit HSPLcom/android/org/bouncycastle/jce/provider/BouncyCastleProvider;->setup()V HSPLcom/android/org/bouncycastle/jce/provider/BouncyCastleProviderConfiguration;-><init>()V HSPLcom/android/org/bouncycastle/jce/provider/CertStoreCollectionSpi;-><init>(Ljava/security/cert/CertStoreParameters;)V -PLcom/android/org/bouncycastle/jce/provider/CertStoreCollectionSpi;->engineGetCertificates(Ljava/security/cert/CertSelector;)Ljava/util/Collection; +HPLcom/android/org/bouncycastle/jce/provider/CertStoreCollectionSpi;->engineGetCertificates(Ljava/security/cert/CertSelector;)Ljava/util/Collection; HSPLcom/android/org/bouncycastle/util/Integers;->valueOf(I)Ljava/lang/Integer; HSPLcom/android/org/bouncycastle/util/Properties$1;->run()Ljava/lang/Object; HSPLcom/android/org/bouncycastle/util/Properties;->isOverrideSet(Ljava/lang/String;)Z @@ -24243,7 +25318,7 @@ HSPLcom/android/org/kxml2/io/KXmlSerializer;->setOutput(Ljava/io/OutputStream;Lj HSPLcom/android/org/kxml2/io/KXmlSerializer;->setOutput(Ljava/io/Writer;)V HSPLcom/android/org/kxml2/io/KXmlSerializer;->startDocument(Ljava/lang/String;Ljava/lang/Boolean;)V HSPLcom/android/org/kxml2/io/KXmlSerializer;->startTag(Ljava/lang/String;Ljava/lang/String;)Lorg/xmlpull/v1/XmlSerializer; -PLcom/android/org/kxml2/io/KXmlSerializer;->text(Ljava/lang/String;)Lorg/xmlpull/v1/XmlSerializer; +HPLcom/android/org/kxml2/io/KXmlSerializer;->text(Ljava/lang/String;)Lorg/xmlpull/v1/XmlSerializer; HSPLcom/android/org/kxml2/io/KXmlSerializer;->writeEscaped(Ljava/lang/String;I)V HSPLcom/android/phone/ecc/nano/CodedInputByteBufferNano;->checkLastTagWas(I)V HSPLcom/android/phone/ecc/nano/CodedInputByteBufferNano;->readMessage(Lcom/android/phone/ecc/nano/MessageNano;)V @@ -24261,7 +25336,7 @@ HSPLcom/android/phone/ecc/nano/ProtobufEccData$CountryInfo;->mergeFrom(Lcom/andr HSPLcom/android/phone/ecc/nano/ProtobufEccData$EccInfo;->emptyArray()[Lcom/android/phone/ecc/nano/ProtobufEccData$EccInfo; HSPLcom/android/phone/ecc/nano/ProtobufEccData$EccInfo;->mergeFrom(Lcom/android/phone/ecc/nano/CodedInputByteBufferNano;)Lcom/android/phone/ecc/nano/MessageNano; HSPLcom/android/phone/ecc/nano/ProtobufEccData$EccInfo;->mergeFrom(Lcom/android/phone/ecc/nano/CodedInputByteBufferNano;)Lcom/android/phone/ecc/nano/ProtobufEccData$EccInfo; -PLcom/android/server/AppWidgetBackupBridge;->getWidgetState(Ljava/lang/String;I)[B +HPLcom/android/server/AppWidgetBackupBridge;->getWidgetState(Ljava/lang/String;I)[B HSPLcom/android/server/AppWidgetBackupBridge;->register(Lcom/android/server/WidgetBackupProvider;)V PLcom/android/server/BootReceiver$1;->run()V PLcom/android/server/BootReceiver;-><init>()V @@ -24373,6 +25448,7 @@ PLcom/android/server/connectivity/metrics/nano/IpConnectivityLogClass$WakeupStat PLcom/android/server/connectivity/metrics/nano/IpConnectivityLogClass$WakeupStats;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V HSPLcom/android/server/net/BaseNetdEventCallback;-><init>()V HSPLcom/android/server/net/BaseNetdEventCallback;->onConnectEvent(Ljava/lang/String;IJI)V +HPLcom/android/server/net/BaseNetdEventCallback;->onNat64PrefixEvent(IZLjava/lang/String;I)V HSPLcom/android/server/net/BaseNetdEventCallback;->onPrivateDnsValidationEvent(ILjava/lang/String;Ljava/lang/String;Z)V HSPLcom/android/server/net/BaseNetworkObserver;-><init>()V HSPLcom/android/server/net/BaseNetworkObserver;->addressRemoved(Ljava/lang/String;Landroid/net/LinkAddress;)V @@ -24388,22 +25464,25 @@ HSPLcom/android/server/sip/SipService;-><init>(Landroid/content/Context;)V HSPLcom/android/server/sip/SipService;->start(Landroid/content/Context;)V HSPLcom/android/server/sip/SipWakeupTimer;-><init>(Landroid/content/Context;Ljava/util/concurrent/Executor;)V HSPLcom/android/server/wifi/BaseWifiService;-><init>()V -PLcom/android/server/wifi/nano/WifiMetricsProto$AlertReasonCount;-><init>()V -PLcom/android/server/wifi/nano/WifiMetricsProto$AlertReasonCount;->computeSerializedSize()I +HPLcom/android/server/wifi/nano/WifiMetricsProto$AlertReasonCount;-><init>()V +HPLcom/android/server/wifi/nano/WifiMetricsProto$AlertReasonCount;->computeSerializedSize()I HSPLcom/android/server/wifi/nano/WifiMetricsProto$AlertReasonCount;->emptyArray()[Lcom/android/server/wifi/nano/WifiMetricsProto$AlertReasonCount; -PLcom/android/server/wifi/nano/WifiMetricsProto$AlertReasonCount;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V +HPLcom/android/server/wifi/nano/WifiMetricsProto$AlertReasonCount;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V +HPLcom/android/server/wifi/nano/WifiMetricsProto$ConnectToNetworkNotificationAndActionCount;-><init>()V +HPLcom/android/server/wifi/nano/WifiMetricsProto$ConnectToNetworkNotificationAndActionCount;->computeSerializedSize()I HSPLcom/android/server/wifi/nano/WifiMetricsProto$ConnectToNetworkNotificationAndActionCount;->emptyArray()[Lcom/android/server/wifi/nano/WifiMetricsProto$ConnectToNetworkNotificationAndActionCount; -PLcom/android/server/wifi/nano/WifiMetricsProto$ConnectionEvent;-><init>()V -PLcom/android/server/wifi/nano/WifiMetricsProto$ConnectionEvent;->clear()Lcom/android/server/wifi/nano/WifiMetricsProto$ConnectionEvent; -PLcom/android/server/wifi/nano/WifiMetricsProto$ConnectionEvent;->computeSerializedSize()I +HPLcom/android/server/wifi/nano/WifiMetricsProto$ConnectToNetworkNotificationAndActionCount;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V +HPLcom/android/server/wifi/nano/WifiMetricsProto$ConnectionEvent;-><init>()V +HPLcom/android/server/wifi/nano/WifiMetricsProto$ConnectionEvent;->clear()Lcom/android/server/wifi/nano/WifiMetricsProto$ConnectionEvent; +HPLcom/android/server/wifi/nano/WifiMetricsProto$ConnectionEvent;->computeSerializedSize()I HSPLcom/android/server/wifi/nano/WifiMetricsProto$ConnectionEvent;->emptyArray()[Lcom/android/server/wifi/nano/WifiMetricsProto$ConnectionEvent; -PLcom/android/server/wifi/nano/WifiMetricsProto$ConnectionEvent;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V -PLcom/android/server/wifi/nano/WifiMetricsProto$DeviceMobilityStatePnoScanStats;->computeSerializedSize()I +HPLcom/android/server/wifi/nano/WifiMetricsProto$ConnectionEvent;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V +HPLcom/android/server/wifi/nano/WifiMetricsProto$DeviceMobilityStatePnoScanStats;->computeSerializedSize()I HSPLcom/android/server/wifi/nano/WifiMetricsProto$DeviceMobilityStatePnoScanStats;->emptyArray()[Lcom/android/server/wifi/nano/WifiMetricsProto$DeviceMobilityStatePnoScanStats; -PLcom/android/server/wifi/nano/WifiMetricsProto$DeviceMobilityStatePnoScanStats;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V +HPLcom/android/server/wifi/nano/WifiMetricsProto$DeviceMobilityStatePnoScanStats;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V HSPLcom/android/server/wifi/nano/WifiMetricsProto$ExperimentValues;-><init>()V -PLcom/android/server/wifi/nano/WifiMetricsProto$ExperimentValues;->computeSerializedSize()I -PLcom/android/server/wifi/nano/WifiMetricsProto$ExperimentValues;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V +HPLcom/android/server/wifi/nano/WifiMetricsProto$ExperimentValues;->computeSerializedSize()I +HPLcom/android/server/wifi/nano/WifiMetricsProto$ExperimentValues;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V HSPLcom/android/server/wifi/nano/WifiMetricsProto$GroupEvent;->emptyArray()[Lcom/android/server/wifi/nano/WifiMetricsProto$GroupEvent; HSPLcom/android/server/wifi/nano/WifiMetricsProto$HistogramBucketInt32;->emptyArray()[Lcom/android/server/wifi/nano/WifiMetricsProto$HistogramBucketInt32; PLcom/android/server/wifi/nano/WifiMetricsProto$Int32Count;->emptyArray()[Lcom/android/server/wifi/nano/WifiMetricsProto$Int32Count; @@ -24413,21 +25492,21 @@ PLcom/android/server/wifi/nano/WifiMetricsProto$LinkProbeStats;-><init>()V PLcom/android/server/wifi/nano/WifiMetricsProto$LinkProbeStats;->clear()Lcom/android/server/wifi/nano/WifiMetricsProto$LinkProbeStats; PLcom/android/server/wifi/nano/WifiMetricsProto$LinkProbeStats;->computeSerializedSize()I PLcom/android/server/wifi/nano/WifiMetricsProto$LinkProbeStats;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V -PLcom/android/server/wifi/nano/WifiMetricsProto$LinkSpeedCount;->computeSerializedSize()I +HPLcom/android/server/wifi/nano/WifiMetricsProto$LinkSpeedCount;->computeSerializedSize()I HSPLcom/android/server/wifi/nano/WifiMetricsProto$LinkSpeedCount;->emptyArray()[Lcom/android/server/wifi/nano/WifiMetricsProto$LinkSpeedCount; -PLcom/android/server/wifi/nano/WifiMetricsProto$LinkSpeedCount;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V -PLcom/android/server/wifi/nano/WifiMetricsProto$NetworkSelectionExperimentDecisions;-><init>()V -PLcom/android/server/wifi/nano/WifiMetricsProto$NetworkSelectionExperimentDecisions;->computeSerializedSize()I +HPLcom/android/server/wifi/nano/WifiMetricsProto$LinkSpeedCount;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V +HPLcom/android/server/wifi/nano/WifiMetricsProto$NetworkSelectionExperimentDecisions;-><init>()V +HPLcom/android/server/wifi/nano/WifiMetricsProto$NetworkSelectionExperimentDecisions;->computeSerializedSize()I HSPLcom/android/server/wifi/nano/WifiMetricsProto$NetworkSelectionExperimentDecisions;->emptyArray()[Lcom/android/server/wifi/nano/WifiMetricsProto$NetworkSelectionExperimentDecisions; -PLcom/android/server/wifi/nano/WifiMetricsProto$NetworkSelectionExperimentDecisions;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V -PLcom/android/server/wifi/nano/WifiMetricsProto$NumConnectableNetworksBucket;->computeSerializedSize()I +HPLcom/android/server/wifi/nano/WifiMetricsProto$NetworkSelectionExperimentDecisions;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V +HPLcom/android/server/wifi/nano/WifiMetricsProto$NumConnectableNetworksBucket;->computeSerializedSize()I HSPLcom/android/server/wifi/nano/WifiMetricsProto$NumConnectableNetworksBucket;->emptyArray()[Lcom/android/server/wifi/nano/WifiMetricsProto$NumConnectableNetworksBucket; -PLcom/android/server/wifi/nano/WifiMetricsProto$NumConnectableNetworksBucket;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V +HPLcom/android/server/wifi/nano/WifiMetricsProto$NumConnectableNetworksBucket;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V HSPLcom/android/server/wifi/nano/WifiMetricsProto$P2pConnectionEvent;->emptyArray()[Lcom/android/server/wifi/nano/WifiMetricsProto$P2pConnectionEvent; HSPLcom/android/server/wifi/nano/WifiMetricsProto$PasspointProfileTypeCount;->emptyArray()[Lcom/android/server/wifi/nano/WifiMetricsProto$PasspointProfileTypeCount; HSPLcom/android/server/wifi/nano/WifiMetricsProto$PnoScanMetrics;-><init>()V -PLcom/android/server/wifi/nano/WifiMetricsProto$PnoScanMetrics;->computeSerializedSize()I -PLcom/android/server/wifi/nano/WifiMetricsProto$PnoScanMetrics;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V +HPLcom/android/server/wifi/nano/WifiMetricsProto$PnoScanMetrics;->computeSerializedSize()I +HPLcom/android/server/wifi/nano/WifiMetricsProto$PnoScanMetrics;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V PLcom/android/server/wifi/nano/WifiMetricsProto$RouterFingerPrint;->computeSerializedSize()I PLcom/android/server/wifi/nano/WifiMetricsProto$RouterFingerPrint;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V HPLcom/android/server/wifi/nano/WifiMetricsProto$RssiPollCount;-><init>()V @@ -24460,39 +25539,39 @@ PLcom/android/server/wifi/nano/WifiMetricsProto$WifiConfigStoreIO;->writeTo(Lcom HSPLcom/android/server/wifi/nano/WifiMetricsProto$WifiDppLog$DppConfiguratorSuccessStatusHistogramBucket;->emptyArray()[Lcom/android/server/wifi/nano/WifiMetricsProto$WifiDppLog$DppConfiguratorSuccessStatusHistogramBucket; HSPLcom/android/server/wifi/nano/WifiMetricsProto$WifiDppLog$DppFailureStatusHistogramBucket;->emptyArray()[Lcom/android/server/wifi/nano/WifiMetricsProto$WifiDppLog$DppFailureStatusHistogramBucket; HSPLcom/android/server/wifi/nano/WifiMetricsProto$WifiDppLog;-><init>()V -PLcom/android/server/wifi/nano/WifiMetricsProto$WifiDppLog;->computeSerializedSize()I -PLcom/android/server/wifi/nano/WifiMetricsProto$WifiDppLog;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V -PLcom/android/server/wifi/nano/WifiMetricsProto$WifiIsUnusableEvent;-><init>()V -PLcom/android/server/wifi/nano/WifiMetricsProto$WifiIsUnusableEvent;->clear()Lcom/android/server/wifi/nano/WifiMetricsProto$WifiIsUnusableEvent; -PLcom/android/server/wifi/nano/WifiMetricsProto$WifiIsUnusableEvent;->computeSerializedSize()I +HPLcom/android/server/wifi/nano/WifiMetricsProto$WifiDppLog;->computeSerializedSize()I +HPLcom/android/server/wifi/nano/WifiMetricsProto$WifiDppLog;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V +HPLcom/android/server/wifi/nano/WifiMetricsProto$WifiIsUnusableEvent;-><init>()V +HPLcom/android/server/wifi/nano/WifiMetricsProto$WifiIsUnusableEvent;->clear()Lcom/android/server/wifi/nano/WifiMetricsProto$WifiIsUnusableEvent; +HPLcom/android/server/wifi/nano/WifiMetricsProto$WifiIsUnusableEvent;->computeSerializedSize()I HSPLcom/android/server/wifi/nano/WifiMetricsProto$WifiIsUnusableEvent;->emptyArray()[Lcom/android/server/wifi/nano/WifiMetricsProto$WifiIsUnusableEvent; -PLcom/android/server/wifi/nano/WifiMetricsProto$WifiIsUnusableEvent;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V +HPLcom/android/server/wifi/nano/WifiMetricsProto$WifiIsUnusableEvent;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V HSPLcom/android/server/wifi/nano/WifiMetricsProto$WifiLinkLayerUsageStats;-><init>()V -PLcom/android/server/wifi/nano/WifiMetricsProto$WifiLinkLayerUsageStats;->computeSerializedSize()I -PLcom/android/server/wifi/nano/WifiMetricsProto$WifiLinkLayerUsageStats;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V -PLcom/android/server/wifi/nano/WifiMetricsProto$WifiLog$ScanReturnEntry;-><init>()V -PLcom/android/server/wifi/nano/WifiMetricsProto$WifiLog$ScanReturnEntry;->computeSerializedSize()I +HPLcom/android/server/wifi/nano/WifiMetricsProto$WifiLinkLayerUsageStats;->computeSerializedSize()I +HPLcom/android/server/wifi/nano/WifiMetricsProto$WifiLinkLayerUsageStats;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V +HPLcom/android/server/wifi/nano/WifiMetricsProto$WifiLog$ScanReturnEntry;-><init>()V +HPLcom/android/server/wifi/nano/WifiMetricsProto$WifiLog$ScanReturnEntry;->computeSerializedSize()I HSPLcom/android/server/wifi/nano/WifiMetricsProto$WifiLog$ScanReturnEntry;->emptyArray()[Lcom/android/server/wifi/nano/WifiMetricsProto$WifiLog$ScanReturnEntry; -PLcom/android/server/wifi/nano/WifiMetricsProto$WifiLog$ScanReturnEntry;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V -PLcom/android/server/wifi/nano/WifiMetricsProto$WifiLog$WifiSystemStateEntry;-><init>()V -PLcom/android/server/wifi/nano/WifiMetricsProto$WifiLog$WifiSystemStateEntry;->computeSerializedSize()I +HPLcom/android/server/wifi/nano/WifiMetricsProto$WifiLog$ScanReturnEntry;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V +HPLcom/android/server/wifi/nano/WifiMetricsProto$WifiLog$WifiSystemStateEntry;-><init>()V +HPLcom/android/server/wifi/nano/WifiMetricsProto$WifiLog$WifiSystemStateEntry;->computeSerializedSize()I HSPLcom/android/server/wifi/nano/WifiMetricsProto$WifiLog$WifiSystemStateEntry;->emptyArray()[Lcom/android/server/wifi/nano/WifiMetricsProto$WifiLog$WifiSystemStateEntry; -PLcom/android/server/wifi/nano/WifiMetricsProto$WifiLog$WifiSystemStateEntry;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V +HPLcom/android/server/wifi/nano/WifiMetricsProto$WifiLog$WifiSystemStateEntry;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V HSPLcom/android/server/wifi/nano/WifiMetricsProto$WifiLog;-><init>()V HSPLcom/android/server/wifi/nano/WifiMetricsProto$WifiLog;->clear()Lcom/android/server/wifi/nano/WifiMetricsProto$WifiLog; HPLcom/android/server/wifi/nano/WifiMetricsProto$WifiLog;->computeSerializedSize()I HPLcom/android/server/wifi/nano/WifiMetricsProto$WifiLog;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V HSPLcom/android/server/wifi/nano/WifiMetricsProto$WifiNetworkRequestApiLog;-><init>()V -PLcom/android/server/wifi/nano/WifiMetricsProto$WifiNetworkRequestApiLog;->computeSerializedSize()I -PLcom/android/server/wifi/nano/WifiMetricsProto$WifiNetworkRequestApiLog;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V +HPLcom/android/server/wifi/nano/WifiMetricsProto$WifiNetworkRequestApiLog;->computeSerializedSize()I +HPLcom/android/server/wifi/nano/WifiMetricsProto$WifiNetworkRequestApiLog;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V HSPLcom/android/server/wifi/nano/WifiMetricsProto$WifiNetworkSuggestionApiLog;-><init>()V HSPLcom/android/server/wifi/nano/WifiMetricsProto$WifiNetworkSuggestionApiLog;->clear()Lcom/android/server/wifi/nano/WifiMetricsProto$WifiNetworkSuggestionApiLog; -PLcom/android/server/wifi/nano/WifiMetricsProto$WifiNetworkSuggestionApiLog;->computeSerializedSize()I -PLcom/android/server/wifi/nano/WifiMetricsProto$WifiNetworkSuggestionApiLog;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V +HPLcom/android/server/wifi/nano/WifiMetricsProto$WifiNetworkSuggestionApiLog;->computeSerializedSize()I +HPLcom/android/server/wifi/nano/WifiMetricsProto$WifiNetworkSuggestionApiLog;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V HSPLcom/android/server/wifi/nano/WifiMetricsProto$WifiP2pStats;-><init>()V HSPLcom/android/server/wifi/nano/WifiMetricsProto$WifiP2pStats;->clear()Lcom/android/server/wifi/nano/WifiMetricsProto$WifiP2pStats; -PLcom/android/server/wifi/nano/WifiMetricsProto$WifiP2pStats;->computeSerializedSize()I -PLcom/android/server/wifi/nano/WifiMetricsProto$WifiP2pStats;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V +HPLcom/android/server/wifi/nano/WifiMetricsProto$WifiP2pStats;->computeSerializedSize()I +HPLcom/android/server/wifi/nano/WifiMetricsProto$WifiP2pStats;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V PLcom/android/server/wifi/nano/WifiMetricsProto$WifiPowerStats;-><init>()V PLcom/android/server/wifi/nano/WifiMetricsProto$WifiPowerStats;->clear()Lcom/android/server/wifi/nano/WifiMetricsProto$WifiPowerStats; PLcom/android/server/wifi/nano/WifiMetricsProto$WifiPowerStats;->computeSerializedSize()I @@ -24509,15 +25588,15 @@ PLcom/android/server/wifi/nano/WifiMetricsProto$WifiRttLog$RttToPeerLog;->writeT PLcom/android/server/wifi/nano/WifiMetricsProto$WifiRttLog;-><init>()V PLcom/android/server/wifi/nano/WifiMetricsProto$WifiRttLog;->computeSerializedSize()I PLcom/android/server/wifi/nano/WifiMetricsProto$WifiRttLog;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V -PLcom/android/server/wifi/nano/WifiMetricsProto$WifiScoreCount;-><init>()V -PLcom/android/server/wifi/nano/WifiMetricsProto$WifiScoreCount;->computeSerializedSize()I +HPLcom/android/server/wifi/nano/WifiMetricsProto$WifiScoreCount;-><init>()V +HPLcom/android/server/wifi/nano/WifiMetricsProto$WifiScoreCount;->computeSerializedSize()I HSPLcom/android/server/wifi/nano/WifiMetricsProto$WifiScoreCount;->emptyArray()[Lcom/android/server/wifi/nano/WifiMetricsProto$WifiScoreCount; -PLcom/android/server/wifi/nano/WifiMetricsProto$WifiScoreCount;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V +HPLcom/android/server/wifi/nano/WifiMetricsProto$WifiScoreCount;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V HSPLcom/android/server/wifi/nano/WifiMetricsProto$WifiUsabilityScoreCount;->emptyArray()[Lcom/android/server/wifi/nano/WifiMetricsProto$WifiUsabilityScoreCount; -PLcom/android/server/wifi/nano/WifiMetricsProto$WifiUsabilityStats;-><init>()V -PLcom/android/server/wifi/nano/WifiMetricsProto$WifiUsabilityStats;->computeSerializedSize()I +HPLcom/android/server/wifi/nano/WifiMetricsProto$WifiUsabilityStats;-><init>()V +HPLcom/android/server/wifi/nano/WifiMetricsProto$WifiUsabilityStats;->computeSerializedSize()I HSPLcom/android/server/wifi/nano/WifiMetricsProto$WifiUsabilityStats;->emptyArray()[Lcom/android/server/wifi/nano/WifiMetricsProto$WifiUsabilityStats; -PLcom/android/server/wifi/nano/WifiMetricsProto$WifiUsabilityStats;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V +HPLcom/android/server/wifi/nano/WifiMetricsProto$WifiUsabilityStats;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V HPLcom/android/server/wifi/nano/WifiMetricsProto$WifiUsabilityStatsEntry;-><init>()V PLcom/android/server/wifi/nano/WifiMetricsProto$WifiUsabilityStatsEntry;->clear()Lcom/android/server/wifi/nano/WifiMetricsProto$WifiUsabilityStatsEntry; HPLcom/android/server/wifi/nano/WifiMetricsProto$WifiUsabilityStatsEntry;->computeSerializedSize()I @@ -24528,23 +25607,27 @@ PLcom/android/server/wifi/nano/WifiMetricsProto$WifiWakeStats;-><init>()V PLcom/android/server/wifi/nano/WifiMetricsProto$WifiWakeStats;->computeSerializedSize()I PLcom/android/server/wifi/nano/WifiMetricsProto$WifiWakeStats;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V HSPLcom/android/server/wifi/nano/WifiMetricsProto$WpsMetrics;-><init>()V -PLcom/android/server/wifi/nano/WifiMetricsProto$WpsMetrics;->computeSerializedSize()I -PLcom/android/server/wifi/nano/WifiMetricsProto$WpsMetrics;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V +HPLcom/android/server/wifi/nano/WifiMetricsProto$WpsMetrics;->computeSerializedSize()I +HPLcom/android/server/wifi/nano/WifiMetricsProto$WpsMetrics;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V HPLcom/android/server/wm/nano/WindowManagerProtos$TaskSnapshotProto;->computeSerializedSize()I PLcom/android/server/wm/nano/WindowManagerProtos$TaskSnapshotProto;->mergeFrom(Lcom/android/framework/protobuf/nano/CodedInputByteBufferNano;)Lcom/android/framework/protobuf/nano/MessageNano; PLcom/android/server/wm/nano/WindowManagerProtos$TaskSnapshotProto;->mergeFrom(Lcom/android/framework/protobuf/nano/CodedInputByteBufferNano;)Lcom/android/server/wm/nano/WindowManagerProtos$TaskSnapshotProto; PLcom/android/server/wm/nano/WindowManagerProtos$TaskSnapshotProto;->parseFrom([B)Lcom/android/server/wm/nano/WindowManagerProtos$TaskSnapshotProto; HPLcom/android/server/wm/nano/WindowManagerProtos$TaskSnapshotProto;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V HSPLcom/google/android/collect/Lists;->newArrayList()Ljava/util/ArrayList; +HSPLcom/google/android/collect/Lists;->newArrayList([Ljava/lang/Object;)Ljava/util/ArrayList; HSPLcom/google/android/collect/Maps;->newArrayMap()Landroid/util/ArrayMap; HSPLcom/google/android/collect/Maps;->newHashMap()Ljava/util/HashMap; HSPLcom/google/android/collect/Sets;->newArraySet()Landroid/util/ArraySet; HSPLcom/google/android/collect/Sets;->newArraySet([Ljava/lang/Object;)Landroid/util/ArraySet; HSPLcom/google/android/collect/Sets;->newHashSet()Ljava/util/HashSet; HSPLcom/google/android/collect/Sets;->newHashSet([Ljava/lang/Object;)Ljava/util/HashSet; +HSPLcom/google/android/gles_jni/EGLConfigImpl;-><init>(J)V HSPLcom/google/android/gles_jni/EGLContextImpl;-><init>(J)V HSPLcom/google/android/gles_jni/EGLDisplayImpl;-><init>(J)V HSPLcom/google/android/gles_jni/EGLImpl;-><init>()V +HSPLcom/google/android/gles_jni/EGLImpl;->eglCreateContext(Ljavax/microedition/khronos/egl/EGLDisplay;Ljavax/microedition/khronos/egl/EGLConfig;Ljavax/microedition/khronos/egl/EGLContext;[I)Ljavax/microedition/khronos/egl/EGLContext; +HSPLcom/google/android/gles_jni/EGLImpl;->eglGetDisplay(Ljava/lang/Object;)Ljavax/microedition/khronos/egl/EGLDisplay; HSPLcom/google/android/gles_jni/EGLSurfaceImpl;-><init>(J)V HPLcom/google/android/rappor/Encoder;-><init>(Ljava/util/Random;Ljava/security/MessageDigest;Ljava/security/MessageDigest;[BLjava/lang/String;IDDDII)V HPLcom/google/android/rappor/Encoder;->checkArgument(ZLjava/lang/Object;)V @@ -24592,6 +25675,7 @@ HSPLdalvik/system/BaseDexClassLoader;->findResources(Ljava/lang/String;)Ljava/ut HSPLdalvik/system/BaseDexClassLoader;->getLdLibraryPath()Ljava/lang/String; HSPLdalvik/system/BaseDexClassLoader;->getPackage(Ljava/lang/String;)Ljava/lang/Package; HSPLdalvik/system/BaseDexClassLoader;->reportClassLoaderChain()V +HSPLdalvik/system/BaseDexClassLoader;->toString()Ljava/lang/String; HSPLdalvik/system/BlockGuard$1;->onExplicitGc()V HSPLdalvik/system/BlockGuard$1;->onNetwork()V HSPLdalvik/system/BlockGuard$1;->onReadFromDisk()V @@ -24615,6 +25699,7 @@ HSPLdalvik/system/CloseGuard;->warnIfOpen()V HSPLdalvik/system/DalvikLogging;->loggerNameToTag(Ljava/lang/String;)Ljava/lang/String; HSPLdalvik/system/DelegateLastClassLoader;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;Z)V HSPLdalvik/system/DelegateLastClassLoader;->loadClass(Ljava/lang/String;Z)Ljava/lang/Class; +HSPLdalvik/system/DexClassLoader;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;)V HSPLdalvik/system/DexFile;->defineClass(Ljava/lang/String;Ljava/lang/ClassLoader;Ljava/lang/Object;Ldalvik/system/DexFile;Ljava/util/List;)Ljava/lang/Class; HSPLdalvik/system/DexFile;->finalize()V HSPLdalvik/system/DexFile;->getDexFileOptimizationInfo(Ljava/lang/String;Ljava/lang/String;)Ldalvik/system/DexFile$OptimizationInfo; @@ -24701,6 +25786,7 @@ HSPLjava/io/BufferedWriter;->newLine()V HSPLjava/io/BufferedWriter;->write(I)V HSPLjava/io/BufferedWriter;->write(Ljava/lang/String;II)V HSPLjava/io/ByteArrayInputStream;-><init>([B)V +HSPLjava/io/ByteArrayInputStream;-><init>([BII)V HSPLjava/io/ByteArrayInputStream;->available()I HSPLjava/io/ByteArrayInputStream;->close()V HSPLjava/io/ByteArrayInputStream;->mark(I)V @@ -24845,6 +25931,7 @@ HSPLjava/io/FilterInputStream;->read([B)I HSPLjava/io/FilterInputStream;->read([BII)I HSPLjava/io/FilterInputStream;->reset()V HSPLjava/io/FilterInputStream;->skip(J)J +HSPLjava/io/FilterOutputStream;-><init>(Ljava/io/OutputStream;)V HSPLjava/io/FilterOutputStream;->close()V HSPLjava/io/FilterOutputStream;->write([B)V HSPLjava/io/IOException;-><init>(Ljava/lang/String;)V @@ -24956,6 +26043,7 @@ HSPLjava/io/ObjectOutputStream;->writeArray(Ljava/lang/Object;Ljava/io/ObjectStr HSPLjava/io/ObjectOutputStream;->writeByte(I)V HSPLjava/io/ObjectOutputStream;->writeClassDesc(Ljava/io/ObjectStreamClass;Z)V HSPLjava/io/ObjectOutputStream;->writeClassDescriptor(Ljava/io/ObjectStreamClass;)V +HSPLjava/io/ObjectOutputStream;->writeEnum(Ljava/lang/Enum;Ljava/io/ObjectStreamClass;Z)V HSPLjava/io/ObjectOutputStream;->writeInt(I)V HSPLjava/io/ObjectOutputStream;->writeLong(J)V HSPLjava/io/ObjectOutputStream;->writeNonProxyDesc(Ljava/io/ObjectStreamClass;Z)V @@ -24969,6 +26057,10 @@ HSPLjava/io/ObjectOutputStream;->writeString(Ljava/lang/String;Z)V HSPLjava/io/ObjectOutputStream;->writeTypeString(Ljava/lang/String;)V HSPLjava/io/ObjectOutputStream;->writeUTF(Ljava/lang/String;)V HSPLjava/io/ObjectStreamClass$2;->run()Ljava/lang/Void; +HSPLjava/io/ObjectStreamClass$3;->compare(Ljava/io/ObjectStreamClass$MemberSignature;Ljava/io/ObjectStreamClass$MemberSignature;)I +HSPLjava/io/ObjectStreamClass$3;->compare(Ljava/lang/Object;Ljava/lang/Object;)I +HSPLjava/io/ObjectStreamClass$EntryFuture;->get()Ljava/lang/Object; +HSPLjava/io/ObjectStreamClass$EntryFuture;->getOwner()Ljava/lang/Thread; HSPLjava/io/ObjectStreamClass$EntryFuture;->set(Ljava/lang/Object;)Z HSPLjava/io/ObjectStreamClass$FieldReflector;-><init>([Ljava/io/ObjectStreamField;)V HSPLjava/io/ObjectStreamClass$FieldReflector;->getFields()[Ljava/io/ObjectStreamField; @@ -25069,7 +26161,8 @@ HSPLjava/io/PrintWriter;->ensureOpen()V HSPLjava/io/PrintWriter;->flush()V HSPLjava/io/PrintWriter;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintWriter; HSPLjava/io/PrintWriter;->newLine()V -PLjava/io/PrintWriter;->print(D)V +HPLjava/io/PrintWriter;->print(D)V +HPLjava/io/PrintWriter;->print(F)V HSPLjava/io/PrintWriter;->print(I)V HSPLjava/io/PrintWriter;->print(J)V HSPLjava/io/PrintWriter;->print(Ljava/lang/Object;)V @@ -25077,6 +26170,7 @@ HSPLjava/io/PrintWriter;->print(Ljava/lang/String;)V HSPLjava/io/PrintWriter;->print(Z)V HSPLjava/io/PrintWriter;->printf(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintWriter; HSPLjava/io/PrintWriter;->println()V +HPLjava/io/PrintWriter;->println(F)V HSPLjava/io/PrintWriter;->println(I)V HSPLjava/io/PrintWriter;->println(J)V HSPLjava/io/PrintWriter;->println(Ljava/lang/Object;)V @@ -25204,6 +26298,7 @@ HSPLjava/lang/BootClassLoader;->getResources(Ljava/lang/String;)Ljava/util/Enume HSPLjava/lang/BootClassLoader;->loadClass(Ljava/lang/String;Z)Ljava/lang/Class; HSPLjava/lang/Byte;-><init>(B)V HSPLjava/lang/Byte;->byteValue()B +HSPLjava/lang/Byte;->hashCode()I HSPLjava/lang/Byte;->toString()Ljava/lang/String; HSPLjava/lang/Byte;->toUnsignedInt(B)I HSPLjava/lang/Byte;->valueOf(B)Ljava/lang/Byte; @@ -25217,6 +26312,7 @@ HSPLjava/lang/Character;->charValue()C HSPLjava/lang/Character;->codePointAt(Ljava/lang/CharSequence;I)I HSPLjava/lang/Character;->codePointBefore(Ljava/lang/CharSequence;I)I HSPLjava/lang/Character;->codePointCount(Ljava/lang/CharSequence;II)I +HSPLjava/lang/Character;->codePointCountImpl([CII)I HSPLjava/lang/Character;->compareTo(Ljava/lang/Object;)I HSPLjava/lang/Character;->digit(CI)I HSPLjava/lang/Character;->digit(II)I @@ -25228,6 +26324,7 @@ HSPLjava/lang/Character;->getNumericValue(C)I HSPLjava/lang/Character;->getNumericValue(I)I HSPLjava/lang/Character;->getType(I)I HSPLjava/lang/Character;->hashCode()I +HSPLjava/lang/Character;->isAlphabetic(I)Z HSPLjava/lang/Character;->isDigit(C)Z HSPLjava/lang/Character;->isDigit(I)Z HSPLjava/lang/Character;->isHighSurrogate(C)Z @@ -25236,9 +26333,13 @@ HSPLjava/lang/Character;->isLetter(I)Z HSPLjava/lang/Character;->isLetterOrDigit(C)Z HSPLjava/lang/Character;->isLetterOrDigit(I)Z HSPLjava/lang/Character;->isLowSurrogate(C)Z +HSPLjava/lang/Character;->isSupplementaryCodePoint(I)Z +HSPLjava/lang/Character;->isUpperCase(C)Z HSPLjava/lang/Character;->isUpperCase(I)Z +HSPLjava/lang/Character;->isValidCodePoint(I)Z HSPLjava/lang/Character;->isWhitespace(C)Z HSPLjava/lang/Character;->isWhitespace(I)Z +HSPLjava/lang/Character;->offsetByCodePointsImpl([CIIII)I HSPLjava/lang/Character;->toChars(I)[C HSPLjava/lang/Character;->toChars(I[CI)I HSPLjava/lang/Character;->toCodePoint(CC)I @@ -25263,6 +26364,7 @@ HSPLjava/lang/Class;->getConstructors()[Ljava/lang/reflect/Constructor; HSPLjava/lang/Class;->getDeclaredConstructor([Ljava/lang/Class;)Ljava/lang/reflect/Constructor; HSPLjava/lang/Class;->getDeclaredMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method; HSPLjava/lang/Class;->getDeclaredMethods()[Ljava/lang/reflect/Method; +HSPLjava/lang/Class;->getEnumConstants()[Ljava/lang/Object; HSPLjava/lang/Class;->getField(Ljava/lang/String;)Ljava/lang/reflect/Field; HSPLjava/lang/Class;->getFields()[Ljava/lang/reflect/Field; HSPLjava/lang/Class;->getGenericSuperclass()Ljava/lang/reflect/Type; @@ -25286,7 +26388,10 @@ HSPLjava/lang/Class;->isArray()Z HSPLjava/lang/Class;->isAssignableFrom(Ljava/lang/Class;)Z HSPLjava/lang/Class;->isEnum()Z HSPLjava/lang/Class;->isInstance(Ljava/lang/Object;)Z +HSPLjava/lang/Class;->isInterface()Z +HSPLjava/lang/Class;->isLocalClass()Z HSPLjava/lang/Class;->isMemberClass()Z +HSPLjava/lang/Class;->isPrimitive()Z HSPLjava/lang/Class;->resolveName(Ljava/lang/String;)Ljava/lang/String; HSPLjava/lang/Class;->toString()Ljava/lang/String; HSPLjava/lang/ClassCastException;-><init>(Ljava/lang/String;)V @@ -25327,9 +26432,11 @@ HSPLjava/lang/Daemons$HeapTaskDaemon;->runInternal()V HSPLjava/lang/Daemons$ReferenceQueueDaemon;->runInternal()V HSPLjava/lang/Daemons;->start()V HSPLjava/lang/Double;->compare(DD)I +HSPLjava/lang/Double;->compareTo(Ljava/lang/Object;)I HSPLjava/lang/Double;->doubleToLongBits(D)J HSPLjava/lang/Double;->doubleValue()D HSPLjava/lang/Double;->equals(Ljava/lang/Object;)Z +HSPLjava/lang/Double;->hashCode()I HSPLjava/lang/Double;->isInfinite(D)Z HSPLjava/lang/Double;->isNaN(D)Z HSPLjava/lang/Double;->longValue()J @@ -25356,8 +26463,10 @@ HSPLjava/lang/Exception;-><init>(Ljava/lang/String;)V HSPLjava/lang/Exception;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V HSPLjava/lang/Exception;-><init>(Ljava/lang/String;Ljava/lang/Throwable;ZZ)V HSPLjava/lang/Exception;-><init>(Ljava/lang/Throwable;)V +HSPLjava/lang/Float;-><init>(F)V HSPLjava/lang/Float;-><init>(Ljava/lang/String;)V HSPLjava/lang/Float;->compare(FF)I +HSPLjava/lang/Float;->compareTo(Ljava/lang/Object;)I HSPLjava/lang/Float;->doubleValue()D HSPLjava/lang/Float;->equals(Ljava/lang/Object;)Z HSPLjava/lang/Float;->floatToIntBits(F)I @@ -25376,7 +26485,7 @@ HSPLjava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V HSPLjava/lang/IllegalStateException;-><init>()V HSPLjava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V HSPLjava/lang/IllegalStateException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V -PLjava/lang/IllegalStateException;-><init>(Ljava/lang/Throwable;)V +HPLjava/lang/IllegalStateException;-><init>(Ljava/lang/Throwable;)V HSPLjava/lang/InheritableThreadLocal;-><init>()V HSPLjava/lang/InheritableThreadLocal;->createMap(Ljava/lang/Thread;Ljava/lang/Object;)V HSPLjava/lang/InheritableThreadLocal;->getMap(Ljava/lang/Thread;)Ljava/lang/ThreadLocal$ThreadLocalMap; @@ -25533,9 +26642,10 @@ HSPLjava/lang/Short;->valueOf(S)Ljava/lang/Short; HSPLjava/lang/StackTraceElement;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V HSPLjava/lang/StackTraceElement;->equals(Ljava/lang/Object;)Z HSPLjava/lang/StackTraceElement;->getClassName()Ljava/lang/String; +HSPLjava/lang/StackTraceElement;->getLineNumber()I HSPLjava/lang/StackTraceElement;->getMethodName()Ljava/lang/String; HSPLjava/lang/StackTraceElement;->toString()Ljava/lang/String; -PLjava/lang/StrictMath;->toIntExact(J)I +HPLjava/lang/StrictMath;->toIntExact(J)I HSPLjava/lang/String$CaseInsensitiveComparator;->compare(Ljava/lang/Object;Ljava/lang/Object;)I HSPLjava/lang/String$CaseInsensitiveComparator;->compare(Ljava/lang/String;Ljava/lang/String;)I HSPLjava/lang/String;->codePointAt(I)I @@ -25606,6 +26716,7 @@ HSPLjava/lang/StringBuffer;->append(Ljava/lang/CharSequence;)Ljava/lang/StringBu HSPLjava/lang/StringBuffer;->append(Ljava/lang/CharSequence;II)Ljava/lang/AbstractStringBuilder; HSPLjava/lang/StringBuffer;->append(Ljava/lang/CharSequence;II)Ljava/lang/StringBuffer; HSPLjava/lang/StringBuffer;->append(Ljava/lang/Object;)Ljava/lang/StringBuffer; +HSPLjava/lang/StringBuffer;->append(Ljava/lang/String;)Ljava/lang/AbstractStringBuilder; HSPLjava/lang/StringBuffer;->append(Ljava/lang/String;)Ljava/lang/StringBuffer; HSPLjava/lang/StringBuffer;->append(Ljava/lang/StringBuffer;)Ljava/lang/StringBuffer; HSPLjava/lang/StringBuffer;->append(Z)Ljava/lang/StringBuffer; @@ -25638,6 +26749,7 @@ HSPLjava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder; HSPLjava/lang/StringBuilder;->append([CII)Ljava/lang/StringBuilder; HSPLjava/lang/StringBuilder;->appendCodePoint(I)Ljava/lang/StringBuilder; HSPLjava/lang/StringBuilder;->charAt(I)C +HSPLjava/lang/StringBuilder;->codePointCount(II)I HSPLjava/lang/StringBuilder;->delete(II)Ljava/lang/StringBuilder; HSPLjava/lang/StringBuilder;->deleteCharAt(I)Ljava/lang/StringBuilder; HSPLjava/lang/StringBuilder;->ensureCapacity(I)V @@ -25648,6 +26760,7 @@ HSPLjava/lang/StringBuilder;->insert(II)Ljava/lang/StringBuilder; HSPLjava/lang/StringBuilder;->insert(ILjava/lang/String;)Ljava/lang/StringBuilder; HSPLjava/lang/StringBuilder;->lastIndexOf(Ljava/lang/String;I)I HSPLjava/lang/StringBuilder;->length()I +HSPLjava/lang/StringBuilder;->offsetByCodePoints(II)I HSPLjava/lang/StringBuilder;->replace(IILjava/lang/String;)Ljava/lang/StringBuilder; HSPLjava/lang/StringBuilder;->setCharAt(IC)V HSPLjava/lang/StringBuilder;->setLength(I)V @@ -25726,6 +26839,7 @@ HSPLjava/lang/Thread;->setUncaughtExceptionPreHandler(Ljava/lang/Thread$Uncaught HSPLjava/lang/Thread;->sleep(J)V HSPLjava/lang/Thread;->sleep(JI)V HSPLjava/lang/Thread;->start()V +HSPLjava/lang/Thread;->toString()Ljava/lang/String; HSPLjava/lang/ThreadGroup;->activeCount()I HSPLjava/lang/ThreadGroup;->add(Ljava/lang/Thread;)V HSPLjava/lang/ThreadGroup;->addUnstarted()V @@ -25798,6 +26912,7 @@ HSPLjava/lang/invoke/MethodType$ConcurrentWeakInternSet$WeakEntry;->hashCode()I HSPLjava/lang/invoke/MethodType$ConcurrentWeakInternSet;->add(Ljava/lang/Object;)Ljava/lang/Object; HSPLjava/lang/invoke/MethodType$ConcurrentWeakInternSet;->get(Ljava/lang/Object;)Ljava/lang/Object; HSPLjava/lang/invoke/MethodType;->equals(Ljava/lang/Object;)Z +HSPLjava/lang/invoke/MethodType;->genericMethodType(IZ)Ljava/lang/invoke/MethodType; HSPLjava/lang/invoke/MethodType;->hashCode()I HSPLjava/lang/invoke/MethodType;->insertParameterTypes(I[Ljava/lang/Class;)Ljava/lang/invoke/MethodType; HSPLjava/lang/invoke/MethodType;->makeImpl(Ljava/lang/Class;[Ljava/lang/Class;Z)Ljava/lang/invoke/MethodType; @@ -25846,6 +26961,9 @@ HSPLjava/lang/reflect/Constructor;->getModifiers()I HSPLjava/lang/reflect/Constructor;->getParameterTypes()[Ljava/lang/Class; HSPLjava/lang/reflect/Constructor;->newInstance([Ljava/lang/Object;)Ljava/lang/Object; HSPLjava/lang/reflect/Executable;->isAnnotationPresent(Ljava/lang/Class;)Z +HSPLjava/lang/reflect/Executable;->printModifiersIfNonzero(Ljava/lang/StringBuilder;IZ)V +HSPLjava/lang/reflect/Executable;->separateWithCommas([Ljava/lang/Class;Ljava/lang/StringBuilder;)V +HSPLjava/lang/reflect/Executable;->sharedToString(IZ[Ljava/lang/Class;[Ljava/lang/Class;)Ljava/lang/String; HSPLjava/lang/reflect/Field;->getAnnotation(Ljava/lang/Class;)Ljava/lang/annotation/Annotation; HSPLjava/lang/reflect/Field;->getModifiers()I HSPLjava/lang/reflect/Field;->getName()Ljava/lang/String; @@ -25860,9 +26978,12 @@ HSPLjava/lang/reflect/Method;->getModifiers()I HSPLjava/lang/reflect/Method;->getName()Ljava/lang/String; HSPLjava/lang/reflect/Method;->getParameterTypes()[Ljava/lang/Class; HSPLjava/lang/reflect/Method;->getReturnType()Ljava/lang/Class; +HSPLjava/lang/reflect/Method;->specificToStringHeader(Ljava/lang/StringBuilder;)V +HSPLjava/lang/reflect/Method;->toString()Ljava/lang/String; HSPLjava/lang/reflect/Modifier;->isFinal(I)Z HSPLjava/lang/reflect/Modifier;->isPublic(I)Z HSPLjava/lang/reflect/Modifier;->isStatic(I)Z +HSPLjava/lang/reflect/Modifier;->toString(I)Ljava/lang/String; HSPLjava/lang/reflect/Proxy$1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I HSPLjava/lang/reflect/Proxy$1;->compare(Ljava/lang/reflect/Method;Ljava/lang/reflect/Method;)I HSPLjava/lang/reflect/Proxy$Key1;->equals(Ljava/lang/Object;)Z @@ -25914,6 +27035,7 @@ HSPLjava/math/BigInteger;-><init>(Ljava/lang/String;)V HSPLjava/math/BigInteger;-><init>(Ljava/lang/String;I)V HSPLjava/math/BigInteger;-><init>([B)V HSPLjava/math/BigInteger;->abs()Ljava/math/BigInteger; +HSPLjava/math/BigInteger;->add(Ljava/math/BigInteger;)Ljava/math/BigInteger; HSPLjava/math/BigInteger;->bitLength()I HSPLjava/math/BigInteger;->compareTo(Ljava/math/BigInteger;)I HSPLjava/math/BigInteger;->divide(Ljava/math/BigInteger;)Ljava/math/BigInteger; @@ -25934,9 +27056,11 @@ HSPLjava/math/BigInteger;->subtract(Ljava/math/BigInteger;)Ljava/math/BigInteger HSPLjava/math/BigInteger;->testBit(I)Z HSPLjava/math/BigInteger;->toByteArray()[B HSPLjava/math/BigInteger;->toString()Ljava/lang/String; +HSPLjava/math/BigInteger;->toString(I)Ljava/lang/String; HSPLjava/math/BigInteger;->twosComplement()[B HSPLjava/math/BigInteger;->valueOf(J)Ljava/math/BigInteger; HSPLjava/math/BigInteger;->writeObject(Ljava/io/ObjectOutputStream;)V +HSPLjava/math/Conversion;->bigInteger2String(Ljava/math/BigInteger;I)Ljava/lang/String; HSPLjava/math/MathContext;-><init>(I)V HSPLjava/math/MathContext;-><init>(ILjava/math/RoundingMode;)V HSPLjava/math/MathContext;->checkValid()V @@ -25954,6 +27078,7 @@ HSPLjava/net/AbstractPlainDatagramSocketImpl;->receive(Ljava/net/DatagramPacket; HSPLjava/net/AbstractPlainDatagramSocketImpl;->setOption(ILjava/lang/Object;)V HSPLjava/net/AbstractPlainSocketImpl;-><init>()V HSPLjava/net/AbstractPlainSocketImpl;->acquireFD()Ljava/io/FileDescriptor; +HSPLjava/net/AbstractPlainSocketImpl;->bind(Ljava/net/InetAddress;I)V HSPLjava/net/AbstractPlainSocketImpl;->close()V HSPLjava/net/AbstractPlainSocketImpl;->connect(Ljava/net/SocketAddress;I)V HSPLjava/net/AbstractPlainSocketImpl;->create(Z)V @@ -25963,6 +27088,7 @@ HSPLjava/net/AbstractPlainSocketImpl;->getInputStream()Ljava/io/InputStream; HSPLjava/net/AbstractPlainSocketImpl;->getOption(I)Ljava/lang/Object; HSPLjava/net/AbstractPlainSocketImpl;->getOutputStream()Ljava/io/OutputStream; HSPLjava/net/AbstractPlainSocketImpl;->isClosedOrPending()Z +HSPLjava/net/AbstractPlainSocketImpl;->listen(I)V HSPLjava/net/AbstractPlainSocketImpl;->releaseFD()V HSPLjava/net/AbstractPlainSocketImpl;->setOption(ILjava/lang/Object;)V HSPLjava/net/AbstractPlainSocketImpl;->socketClose()V @@ -26019,8 +27145,11 @@ HSPLjava/net/HttpCookie$8;-><init>()V HSPLjava/net/HttpCookie$9;-><init>()V HSPLjava/net/HttpURLConnection;-><init>(Ljava/net/URL;)V HSPLjava/net/HttpURLConnection;->getFollowRedirects()Z +HSPLjava/net/HttpURLConnection;->setInstanceFollowRedirects(Z)V HSPLjava/net/IDN;->toASCII(Ljava/lang/String;)Ljava/lang/String; HSPLjava/net/IDN;->toASCII(Ljava/lang/String;I)Ljava/lang/String; +HSPLjava/net/IDN;->toUnicode(Ljava/lang/String;)Ljava/lang/String; +HSPLjava/net/IDN;->toUnicode(Ljava/lang/String;I)Ljava/lang/String; HSPLjava/net/Inet4Address;-><init>(Ljava/lang/String;[B)V HSPLjava/net/Inet4Address;->equals(Ljava/lang/Object;)Z HSPLjava/net/Inet4Address;->getAddress()[B @@ -26061,6 +27190,8 @@ HSPLjava/net/InetAddress$InetAddressHolder;->getHostName()Ljava/lang/String; HSPLjava/net/InetAddress$InetAddressHolder;->init(Ljava/lang/String;I)V HSPLjava/net/InetAddress;->clearDnsCache()V HSPLjava/net/InetAddress;->getAllByName(Ljava/lang/String;)[Ljava/net/InetAddress; +HSPLjava/net/InetAddress;->getAllByNameOnNet(Ljava/lang/String;I)[Ljava/net/InetAddress; +HSPLjava/net/InetAddress;->getByAddress(Ljava/lang/String;[B)Ljava/net/InetAddress; HSPLjava/net/InetAddress;->getByAddress(Ljava/lang/String;[BI)Ljava/net/InetAddress; HSPLjava/net/InetAddress;->getByAddress([B)Ljava/net/InetAddress; HSPLjava/net/InetAddress;->getByName(Ljava/lang/String;)Ljava/net/InetAddress; @@ -26068,11 +27199,14 @@ HSPLjava/net/InetAddress;->getByNameOnNet(Ljava/lang/String;I)Ljava/net/InetAddr HSPLjava/net/InetAddress;->holder()Ljava/net/InetAddress$InetAddressHolder; HSPLjava/net/InetAddress;->parseNumericAddress(Ljava/lang/String;)Ljava/net/InetAddress; HSPLjava/net/InetAddress;->toString()Ljava/lang/String; +HSPLjava/net/InetSocketAddress$InetSocketAddressHolder;->equals(Ljava/lang/Object;)Z HSPLjava/net/InetSocketAddress$InetSocketAddressHolder;->getHostString()Ljava/lang/String; HSPLjava/net/InetSocketAddress$InetSocketAddressHolder;->toString()Ljava/lang/String; HSPLjava/net/InetSocketAddress;-><init>()V +HSPLjava/net/InetSocketAddress;-><init>(Ljava/lang/String;I)V HSPLjava/net/InetSocketAddress;-><init>(Ljava/net/InetAddress;I)V HSPLjava/net/InetSocketAddress;->createUnresolved(Ljava/lang/String;I)Ljava/net/InetSocketAddress; +HSPLjava/net/InetSocketAddress;->equals(Ljava/lang/Object;)Z HSPLjava/net/InetSocketAddress;->getAddress()Ljava/net/InetAddress; HSPLjava/net/InetSocketAddress;->getHostString()Ljava/lang/String; HSPLjava/net/InetSocketAddress;->getPort()I @@ -26091,10 +27225,12 @@ HSPLjava/net/PlainDatagramSocketImpl;->receive0(Ljava/net/DatagramPacket;)V HSPLjava/net/PlainDatagramSocketImpl;->send(Ljava/net/DatagramPacket;)V HSPLjava/net/PlainDatagramSocketImpl;->socketGetOption(I)Ljava/lang/Object; HSPLjava/net/PlainSocketImpl;->getMarkerFD()Ljava/io/FileDescriptor; +HSPLjava/net/PlainSocketImpl;->socketBind(Ljava/net/InetAddress;I)V HSPLjava/net/PlainSocketImpl;->socketClose0(Z)V HSPLjava/net/PlainSocketImpl;->socketConnect(Ljava/net/InetAddress;II)V HSPLjava/net/PlainSocketImpl;->socketCreate(Z)V HSPLjava/net/PlainSocketImpl;->socketGetOption(I)Ljava/lang/Object; +HSPLjava/net/PlainSocketImpl;->socketListen(I)V HSPLjava/net/PlainSocketImpl;->socketSetOption(ILjava/lang/Object;)V HSPLjava/net/PlainSocketImpl;->socketSetOption0(ILjava/lang/Object;)V HSPLjava/net/ProtocolException;-><init>(Ljava/lang/String;)V @@ -26107,11 +27243,20 @@ HSPLjava/net/Proxy;->type()Ljava/net/Proxy$Type; HSPLjava/net/ProxySelector;->getDefault()Ljava/net/ProxySelector; HSPLjava/net/ProxySelector;->setDefault(Ljava/net/ProxySelector;)V HSPLjava/net/ResponseCache;->getDefault()Ljava/net/ResponseCache; +HSPLjava/net/ServerSocket;->bind(Ljava/net/SocketAddress;I)V +HSPLjava/net/ServerSocket;->createImpl()V +HSPLjava/net/ServerSocket;->getImpl()Ljava/net/SocketImpl; +HSPLjava/net/ServerSocket;->isBound()Z +HSPLjava/net/ServerSocket;->isClosed()Z +HSPLjava/net/ServerSocket;->setBound()V +HSPLjava/net/ServerSocket;->setCreated()V HSPLjava/net/Socket$2;->run()Ljava/io/InputStream; HSPLjava/net/Socket$2;->run()Ljava/lang/Object; HSPLjava/net/Socket$3;->run()Ljava/io/OutputStream; HSPLjava/net/Socket$3;->run()Ljava/lang/Object; HSPLjava/net/Socket;-><init>()V +HSPLjava/net/Socket;-><init>(Ljava/net/InetAddress;I)V +HSPLjava/net/Socket;-><init>(Ljava/net/SocketImpl;)V HSPLjava/net/Socket;-><init>([Ljava/net/InetAddress;ILjava/net/SocketAddress;Z)V HSPLjava/net/Socket;->checkAddress(Ljava/net/InetAddress;Ljava/lang/String;)V HSPLjava/net/Socket;->close()V @@ -26128,6 +27273,7 @@ HSPLjava/net/Socket;->getLocalSocketAddress()Ljava/net/SocketAddress; HSPLjava/net/Socket;->getOutputStream()Ljava/io/OutputStream; HSPLjava/net/Socket;->getPort()I HSPLjava/net/Socket;->getRemoteSocketAddress()Ljava/net/SocketAddress; +HSPLjava/net/Socket;->getReuseAddress()Z HSPLjava/net/Socket;->getSoTimeout()I HSPLjava/net/Socket;->isBound()Z HSPLjava/net/Socket;->isClosed()Z @@ -26143,6 +27289,7 @@ HSPLjava/net/Socket;->setTcpNoDelay(Z)V HSPLjava/net/SocketException;-><init>(Ljava/lang/String;)V HSPLjava/net/SocketImpl;->getFileDescriptor()Ljava/io/FileDescriptor; HSPLjava/net/SocketImpl;->getSocket()Ljava/net/Socket; +HSPLjava/net/SocketImpl;->setServerSocket(Ljava/net/ServerSocket;)V HSPLjava/net/SocketImpl;->setSocket(Ljava/net/Socket;)V HSPLjava/net/SocketInputStream;->finalize()V HSPLjava/net/SocketOutputStream;->finalize()V @@ -26172,10 +27319,13 @@ HSPLjava/net/URI;->decode(Ljava/lang/String;)Ljava/lang/String; HSPLjava/net/URI;->defineString()V HSPLjava/net/URI;->encode(Ljava/lang/String;)Ljava/lang/String; HSPLjava/net/URI;->getAuthority()Ljava/lang/String; +HSPLjava/net/URI;->getFragment()Ljava/lang/String; HSPLjava/net/URI;->getHost()Ljava/lang/String; HSPLjava/net/URI;->getPath()Ljava/lang/String; HSPLjava/net/URI;->getPort()I +HSPLjava/net/URI;->getQuery()Ljava/lang/String; HSPLjava/net/URI;->getScheme()Ljava/lang/String; +HSPLjava/net/URI;->getUserInfo()Ljava/lang/String; HSPLjava/net/URI;->match(CJJ)Z HSPLjava/net/URI;->quote(Ljava/lang/String;JJ)Ljava/lang/String; HSPLjava/net/URI;->toASCIIString()Ljava/lang/String; @@ -26193,9 +27343,14 @@ HSPLjava/net/URL;->openConnection()Ljava/net/URLConnection; HSPLjava/net/URL;->set(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V HSPLjava/net/URL;->toExternalForm()Ljava/lang/String; HSPLjava/net/URL;->toString()Ljava/lang/String; +HSPLjava/net/URLConnection;->getContentLengthLong()J +HSPLjava/net/URLConnection;->getContentType()Ljava/lang/String; +HSPLjava/net/URLConnection;->getHeaderFieldLong(Ljava/lang/String;J)J HSPLjava/net/URLConnection;->getURL()Ljava/net/URL; HSPLjava/net/URLConnection;->getUseCaches()Z +HSPLjava/net/URLConnection;->setDoInput(Z)V HSPLjava/net/URLConnection;->setDoOutput(Z)V +HSPLjava/net/URLConnection;->setReadTimeout(I)V HSPLjava/net/URLConnection;->setUseCaches(Z)V HSPLjava/net/URLDecoder;->decode(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; HSPLjava/net/URLEncoder;->encode(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; @@ -26316,12 +27471,14 @@ HSPLjava/nio/DirectByteBuffer;->putFloatUnchecked(IF)V HSPLjava/nio/DirectByteBuffer;->putInt(I)Ljava/nio/ByteBuffer; HSPLjava/nio/DirectByteBuffer;->putLong(J)Ljava/nio/ByteBuffer; HSPLjava/nio/DirectByteBuffer;->putShort(S)Ljava/nio/ByteBuffer; +HSPLjava/nio/DirectByteBuffer;->setAccessible(Z)V HSPLjava/nio/DirectByteBuffer;->slice()Ljava/nio/ByteBuffer; HSPLjava/nio/FloatBuffer;->limit(I)Ljava/nio/Buffer; HSPLjava/nio/FloatBuffer;->position(I)Ljava/nio/Buffer; HSPLjava/nio/HeapByteBuffer;->_get(I)B HSPLjava/nio/HeapByteBuffer;->_put(IB)V HSPLjava/nio/HeapByteBuffer;->asReadOnlyBuffer()Ljava/nio/ByteBuffer; +HSPLjava/nio/HeapByteBuffer;->asShortBuffer()Ljava/nio/ShortBuffer; HSPLjava/nio/HeapByteBuffer;->compact()Ljava/nio/ByteBuffer; HSPLjava/nio/HeapByteBuffer;->duplicate()Ljava/nio/ByteBuffer; HSPLjava/nio/HeapByteBuffer;->get()B @@ -26369,6 +27526,7 @@ HSPLjava/nio/StringCharBuffer;->get()C HSPLjava/nio/StringCharBuffer;->get(I)C HSPLjava/nio/channels/Channels;->newInputStream(Ljava/nio/channels/ReadableByteChannel;)Ljava/io/InputStream; HSPLjava/nio/channels/FileChannel$MapMode;-><init>(Ljava/lang/String;)V +HSPLjava/nio/channels/FileChannel;->tryLock()Ljava/nio/channels/FileLock; HSPLjava/nio/channels/FileLock;-><init>(Ljava/nio/channels/FileChannel;JJZ)V HSPLjava/nio/channels/FileLock;->acquiredBy()Ljava/nio/channels/Channel; HSPLjava/nio/channels/spi/AbstractInterruptibleChannel;->begin()V @@ -26435,6 +27593,7 @@ HSPLjava/nio/charset/CodingErrorAction;-><init>(Ljava/lang/String;)V HSPLjava/nio/file/AccessMode;-><init>(Ljava/lang/String;I)V HSPLjava/nio/file/FileSystems$DefaultFileSystemHolder;->defaultFileSystem()Ljava/nio/file/FileSystem; HSPLjava/nio/file/FileSystems$DefaultFileSystemHolder;->getDefaultProvider()Ljava/nio/file/spi/FileSystemProvider; +HSPLjava/nio/file/FileSystems;->getDefault()Ljava/nio/file/FileSystem; PLjava/nio/file/Files$1;->accept(Ljava/lang/Object;)Z PLjava/nio/file/Files$1;->accept(Ljava/nio/file/Path;)Z HSPLjava/nio/file/Files$AcceptAllFilter;-><init>()V @@ -26447,8 +27606,8 @@ HSPLjava/nio/file/Files;->followLinks([Ljava/nio/file/LinkOption;)Z HSPLjava/nio/file/Files;->isRegularFile(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z HSPLjava/nio/file/Files;->newBufferedReader(Ljava/nio/file/Path;)Ljava/io/BufferedReader; HSPLjava/nio/file/Files;->newBufferedReader(Ljava/nio/file/Path;Ljava/nio/charset/Charset;)Ljava/io/BufferedReader; -PLjava/nio/file/Files;->newDirectoryStream(Ljava/nio/file/Path;)Ljava/nio/file/DirectoryStream; -PLjava/nio/file/Files;->newDirectoryStream(Ljava/nio/file/Path;Ljava/lang/String;)Ljava/nio/file/DirectoryStream; +HPLjava/nio/file/Files;->newDirectoryStream(Ljava/nio/file/Path;)Ljava/nio/file/DirectoryStream; +HPLjava/nio/file/Files;->newDirectoryStream(Ljava/nio/file/Path;Ljava/lang/String;)Ljava/nio/file/DirectoryStream; HSPLjava/nio/file/Files;->read(Ljava/io/InputStream;I)[B HSPLjava/nio/file/Files;->readAllBytes(Ljava/nio/file/Path;)[B HSPLjava/nio/file/LinkOption;-><init>(Ljava/lang/String;I)V @@ -26497,6 +27656,7 @@ HSPLjava/security/MessageDigest;->digest([B)[B HSPLjava/security/MessageDigest;->digest([BII)I HSPLjava/security/MessageDigest;->getDigestLength()I HSPLjava/security/MessageDigest;->getInstance(Ljava/lang/String;)Ljava/security/MessageDigest; +HSPLjava/security/MessageDigest;->getInstance(Ljava/lang/String;Ljava/lang/String;)Ljava/security/MessageDigest; HSPLjava/security/MessageDigest;->getInstance(Ljava/lang/String;Ljava/security/Provider;)Ljava/security/MessageDigest; HSPLjava/security/MessageDigest;->isEqual([B[B)Z HSPLjava/security/MessageDigest;->reset()V @@ -26575,7 +27735,7 @@ HSPLjava/security/cert/CertPath;-><init>(Ljava/lang/String;)V HSPLjava/security/cert/CertPath;->getType()Ljava/lang/String; PLjava/security/cert/CertPathBuilder;->build(Ljava/security/cert/CertPathParameters;)Ljava/security/cert/CertPathBuilderResult; PLjava/security/cert/CertPathBuilder;->getInstance(Ljava/lang/String;)Ljava/security/cert/CertPathBuilder; -PLjava/security/cert/CertPathHelperImpl;->implSetPathToNames(Ljava/security/cert/X509CertSelector;Ljava/util/Set;)V +HPLjava/security/cert/CertPathHelperImpl;->implSetPathToNames(Ljava/security/cert/X509CertSelector;Ljava/util/Set;)V HSPLjava/security/cert/CertPathHelperImpl;->initialize()V HSPLjava/security/cert/CertPathValidator;->getInstance(Ljava/lang/String;)Ljava/security/cert/CertPathValidator; HSPLjava/security/cert/CertPathValidator;->getRevocationChecker()Ljava/security/cert/CertPathChecker; @@ -26583,14 +27743,14 @@ HSPLjava/security/cert/CertPathValidator;->validate(Ljava/security/cert/CertPath HSPLjava/security/cert/CertStore;->getInstance(Ljava/lang/String;Ljava/security/cert/CertStoreParameters;)Ljava/security/cert/CertStore; HSPLjava/security/cert/Certificate;->equals(Ljava/lang/Object;)Z HSPLjava/security/cert/Certificate;->hashCode()I -PLjava/security/cert/CertificateFactory;->generateCertPath(Ljava/io/InputStream;)Ljava/security/cert/CertPath; +HPLjava/security/cert/CertificateFactory;->generateCertPath(Ljava/io/InputStream;)Ljava/security/cert/CertPath; HSPLjava/security/cert/CertificateFactory;->generateCertPath(Ljava/util/List;)Ljava/security/cert/CertPath; HSPLjava/security/cert/CertificateFactory;->generateCertificate(Ljava/io/InputStream;)Ljava/security/cert/Certificate; HSPLjava/security/cert/CertificateFactory;->getInstance(Ljava/lang/String;)Ljava/security/cert/CertificateFactory; HSPLjava/security/cert/CertificateFactorySpi;-><init>()V HSPLjava/security/cert/CollectionCertStoreParameters;-><init>(Ljava/util/Collection;)V HSPLjava/security/cert/CollectionCertStoreParameters;->clone()Ljava/lang/Object; -PLjava/security/cert/CollectionCertStoreParameters;->getCollection()Ljava/util/Collection; +HPLjava/security/cert/CollectionCertStoreParameters;->getCollection()Ljava/util/Collection; PLjava/security/cert/PKIXBuilderParameters;-><init>(Ljava/util/Set;Ljava/security/cert/CertSelector;)V PLjava/security/cert/PKIXBuilderParameters;->getMaxPathLength()I PLjava/security/cert/PKIXCertPathBuilderResult;->getCertPath()Ljava/security/cert/CertPath; @@ -26598,7 +27758,7 @@ HSPLjava/security/cert/PKIXCertPathChecker;-><init>()V HSPLjava/security/cert/PKIXCertPathChecker;->clone()Ljava/lang/Object; HSPLjava/security/cert/PKIXParameters;-><init>(Ljava/util/Set;)V HSPLjava/security/cert/PKIXParameters;->addCertPathChecker(Ljava/security/cert/PKIXCertPathChecker;)V -PLjava/security/cert/PKIXParameters;->addCertStore(Ljava/security/cert/CertStore;)V +HPLjava/security/cert/PKIXParameters;->addCertStore(Ljava/security/cert/CertStore;)V HSPLjava/security/cert/PKIXParameters;->getCertPathCheckers()Ljava/util/List; HSPLjava/security/cert/PKIXParameters;->getCertStores()Ljava/util/List; HSPLjava/security/cert/PKIXParameters;->getDate()Ljava/util/Date; @@ -26631,11 +27791,11 @@ HSPLjava/security/cert/TrustAnchor;-><init>(Ljava/security/cert/X509Certificate; HSPLjava/security/cert/TrustAnchor;->getTrustedCert()Ljava/security/cert/X509Certificate; HSPLjava/security/cert/TrustAnchor;->setNameConstraints([B)V HSPLjava/security/cert/X509CertSelector;-><init>()V -PLjava/security/cert/X509CertSelector;->clone()Ljava/lang/Object; -PLjava/security/cert/X509CertSelector;->getBasicConstraints()I -PLjava/security/cert/X509CertSelector;->getCertificate()Ljava/security/cert/X509Certificate; -PLjava/security/cert/X509CertSelector;->getExtensionObject(Ljava/security/cert/X509Certificate;I)Ljava/security/cert/Extension; -PLjava/security/cert/X509CertSelector;->getSubject()Ljavax/security/auth/x500/X500Principal; +HPLjava/security/cert/X509CertSelector;->clone()Ljava/lang/Object; +HPLjava/security/cert/X509CertSelector;->getBasicConstraints()I +HPLjava/security/cert/X509CertSelector;->getCertificate()Ljava/security/cert/X509Certificate; +HPLjava/security/cert/X509CertSelector;->getExtensionObject(Ljava/security/cert/X509Certificate;I)Ljava/security/cert/Extension; +HPLjava/security/cert/X509CertSelector;->getSubject()Ljavax/security/auth/x500/X500Principal; HSPLjava/security/cert/X509CertSelector;->match(Ljava/security/cert/Certificate;)Z HSPLjava/security/cert/X509CertSelector;->matchAuthorityKeyID(Ljava/security/cert/X509Certificate;)Z HSPLjava/security/cert/X509CertSelector;->matchBasicConstraints(Ljava/security/cert/X509Certificate;)Z @@ -26648,9 +27808,9 @@ HSPLjava/security/cert/X509CertSelector;->matchPrivateKeyValid(Ljava/security/ce HSPLjava/security/cert/X509CertSelector;->matchSubjectAlternativeNames(Ljava/security/cert/X509Certificate;)Z HSPLjava/security/cert/X509CertSelector;->matchSubjectKeyID(Ljava/security/cert/X509Certificate;)Z HSPLjava/security/cert/X509CertSelector;->matchSubjectPublicKeyAlgID(Ljava/security/cert/X509Certificate;)Z -PLjava/security/cert/X509CertSelector;->setBasicConstraints(I)V -PLjava/security/cert/X509CertSelector;->setCertificateValid(Ljava/util/Date;)V -PLjava/security/cert/X509CertSelector;->setPathToNamesInternal(Ljava/util/Set;)V +HPLjava/security/cert/X509CertSelector;->setBasicConstraints(I)V +HPLjava/security/cert/X509CertSelector;->setCertificateValid(Ljava/util/Date;)V +HPLjava/security/cert/X509CertSelector;->setPathToNamesInternal(Ljava/util/Set;)V HSPLjava/security/cert/X509CertSelector;->setSubject(Ljavax/security/auth/x500/X500Principal;)V HSPLjava/security/cert/X509Certificate;-><init>()V HSPLjava/security/spec/DSAParameterSpec;->getG()Ljava/math/BigInteger; @@ -26686,6 +27846,7 @@ HSPLjava/text/CalendarBuilder;->isSet(I)Z HSPLjava/text/CalendarBuilder;->set(II)Ljava/text/CalendarBuilder; HSPLjava/text/Collator;->getInstance()Ljava/text/Collator; HSPLjava/text/Collator;->getInstance(Ljava/util/Locale;)Ljava/text/Collator; +HSPLjava/text/Collator;->setStrength(I)V HSPLjava/text/DateFormat$Field;-><init>(Ljava/lang/String;I)V HSPLjava/text/DateFormat;->format(Ljava/lang/Object;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer; HSPLjava/text/DateFormat;->format(Ljava/util/Date;)Ljava/lang/String; @@ -26706,6 +27867,7 @@ HSPLjava/text/DateFormatSymbols;->getWeekdays()[Ljava/lang/String; HSPLjava/text/DateFormatSymbols;->initializeData(Ljava/util/Locale;)V HSPLjava/text/DateFormatSymbols;->initializeSupplementaryData(Llibcore/icu/LocaleData;)V HSPLjava/text/DecimalFormat;-><init>(Ljava/lang/String;)V +HSPLjava/text/DecimalFormat;-><init>(Ljava/lang/String;Ljava/text/DecimalFormatSymbols;)V HSPLjava/text/DecimalFormat;->clone()Ljava/lang/Object; HSPLjava/text/DecimalFormat;->equals(Ljava/lang/Object;)Z HSPLjava/text/DecimalFormat;->format(DLjava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer; @@ -26714,6 +27876,7 @@ HSPLjava/text/DecimalFormat;->getDecimalFormatSymbols()Ljava/text/DecimalFormatS HSPLjava/text/DecimalFormat;->getIcuFieldPosition(Ljava/text/FieldPosition;)Ljava/text/FieldPosition; HSPLjava/text/DecimalFormat;->getMaximumFractionDigits()I HSPLjava/text/DecimalFormat;->getMaximumIntegerDigits()I +HSPLjava/text/DecimalFormat;->getMinimumFractionDigits()I HSPLjava/text/DecimalFormat;->getMinimumIntegerDigits()I HSPLjava/text/DecimalFormat;->getNegativePrefix()Ljava/lang/String; HSPLjava/text/DecimalFormat;->getNegativeSuffix()Ljava/lang/String; @@ -26725,6 +27888,7 @@ HSPLjava/text/DecimalFormat;->parse(Ljava/lang/String;Ljava/text/ParsePosition;) HSPLjava/text/DecimalFormat;->setGroupingUsed(Z)V HSPLjava/text/DecimalFormat;->setMaximumFractionDigits(I)V HSPLjava/text/DecimalFormat;->setMaximumIntegerDigits(I)V +HSPLjava/text/DecimalFormat;->setMinimumFractionDigits(I)V HSPLjava/text/DecimalFormat;->setMinimumIntegerDigits(I)V HSPLjava/text/DecimalFormat;->toPattern()Ljava/lang/String; HSPLjava/text/DecimalFormat;->updateFieldsFromIcu()V @@ -26760,6 +27924,7 @@ HSPLjava/text/Normalizer$Form;-><init>(Ljava/lang/String;ILandroid/icu/text/Norm HSPLjava/text/Normalizer;->normalize(Ljava/lang/CharSequence;Ljava/text/Normalizer$Form;)Ljava/lang/String; HSPLjava/text/NumberFormat;->format(D)Ljava/lang/String; HSPLjava/text/NumberFormat;->format(J)Ljava/lang/String; +HSPLjava/text/NumberFormat;->getInstance(Ljava/util/Locale;)Ljava/text/NumberFormat; HSPLjava/text/NumberFormat;->getInstance(Ljava/util/Locale;I)Ljava/text/NumberFormat; HSPLjava/text/NumberFormat;->getIntegerInstance()Ljava/text/NumberFormat; HSPLjava/text/NumberFormat;->getIntegerInstance(Ljava/util/Locale;)Ljava/text/NumberFormat; @@ -26795,6 +27960,8 @@ HSPLjava/text/StringCharacterIterator;-><init>(Ljava/lang/String;)V HSPLjava/text/StringCharacterIterator;-><init>(Ljava/lang/String;III)V HSPLjava/text/StringCharacterIterator;->clone()Ljava/lang/Object; HSPLjava/text/StringCharacterIterator;->current()C +HSPLjava/text/StringCharacterIterator;->first()C +HSPLjava/text/StringCharacterIterator;->getBeginIndex()I HSPLjava/text/StringCharacterIterator;->getEndIndex()I HSPLjava/text/StringCharacterIterator;->getIndex()I HSPLjava/text/StringCharacterIterator;->next()C @@ -26817,7 +27984,10 @@ HSPLjava/time/DayOfWeek;-><init>(Ljava/lang/String;I)V HSPLjava/time/DayOfWeek;->of(I)Ljava/time/DayOfWeek; HSPLjava/time/DayOfWeek;->values()[Ljava/time/DayOfWeek; HSPLjava/time/Duration;-><init>(JI)V +HSPLjava/time/Duration;->ofDays(J)Ljava/time/Duration; HSPLjava/time/Duration;->ofHours(J)Ljava/time/Duration; +HSPLjava/time/Duration;->ofMillis(J)Ljava/time/Duration; +HSPLjava/time/Duration;->ofMinutes(J)Ljava/time/Duration; HSPLjava/time/Duration;->ofNanos(J)Ljava/time/Duration; HSPLjava/time/Duration;->ofSeconds(J)Ljava/time/Duration; HSPLjava/time/Duration;->ofSeconds(JJ)Ljava/time/Duration; @@ -26825,11 +27995,13 @@ HSPLjava/time/Duration;->toMillis()J HSPLjava/time/Instant;-><init>(JI)V HSPLjava/time/Instant;->create(JI)Ljava/time/Instant; HSPLjava/time/Instant;->from(Ljava/time/temporal/TemporalAccessor;)Ljava/time/Instant; +HSPLjava/time/Instant;->isSupported(Ljava/time/temporal/TemporalField;)Z HSPLjava/time/Instant;->now()Ljava/time/Instant; HSPLjava/time/Instant;->ofEpochMilli(J)Ljava/time/Instant; HSPLjava/time/Instant;->ofEpochSecond(JJ)Ljava/time/Instant; HSPLjava/time/Instant;->parse(Ljava/lang/CharSequence;)Ljava/time/Instant; HSPLjava/time/Instant;->plus(JJ)Ljava/time/Instant; +HSPLjava/time/Instant;->plusMillis(J)Ljava/time/Instant; HSPLjava/time/Instant;->toEpochMilli()J HSPLjava/time/LocalDate;->atTime(Ljava/time/LocalTime;)Ljava/time/chrono/ChronoLocalDateTime; HSPLjava/time/LocalDate;->create(III)Ljava/time/LocalDate; @@ -26837,7 +28009,7 @@ HSPLjava/time/LocalDate;->equals(Ljava/lang/Object;)Z HSPLjava/time/LocalDate;->from(Ljava/time/temporal/TemporalAccessor;)Ljava/time/LocalDate; HSPLjava/time/LocalDate;->get0(Ljava/time/temporal/TemporalField;)I HSPLjava/time/LocalDate;->getChronology()Ljava/time/chrono/Chronology; -PLjava/time/LocalDate;->getLong(Ljava/time/temporal/TemporalField;)J +HPLjava/time/LocalDate;->getLong(Ljava/time/temporal/TemporalField;)J HSPLjava/time/LocalDate;->isAfter(Ljava/time/chrono/ChronoLocalDate;)Z HSPLjava/time/LocalDate;->isSupported(Ljava/time/temporal/TemporalField;)Z HSPLjava/time/LocalDate;->minusDays(J)Ljava/time/LocalDate; @@ -26918,7 +28090,7 @@ HSPLjava/time/ZoneRegion;->getRules()Ljava/time/zone/ZoneRules; HSPLjava/time/ZoneRegion;->ofId(Ljava/lang/String;Z)Ljava/time/ZoneRegion; HSPLjava/time/ZonedDateTime;->create(JILjava/time/ZoneId;)Ljava/time/ZonedDateTime; HSPLjava/time/ZonedDateTime;->equals(Ljava/lang/Object;)Z -PLjava/time/ZonedDateTime;->format(Ljava/time/format/DateTimeFormatter;)Ljava/lang/String; +HPLjava/time/ZonedDateTime;->format(Ljava/time/format/DateTimeFormatter;)Ljava/lang/String; HSPLjava/time/ZonedDateTime;->from(Ljava/time/temporal/TemporalAccessor;)Ljava/time/ZonedDateTime; HSPLjava/time/ZonedDateTime;->getDayOfMonth()I HSPLjava/time/ZonedDateTime;->getLong(Ljava/time/temporal/TemporalField;)J @@ -26929,9 +28101,9 @@ HSPLjava/time/ZonedDateTime;->of(Ljava/time/LocalDate;Ljava/time/LocalTime;Ljava HSPLjava/time/ZonedDateTime;->ofInstant(Ljava/time/Instant;Ljava/time/ZoneId;)Ljava/time/ZonedDateTime; HSPLjava/time/ZonedDateTime;->ofLocal(Ljava/time/LocalDateTime;Ljava/time/ZoneId;Ljava/time/ZoneOffset;)Ljava/time/ZonedDateTime; HSPLjava/time/ZonedDateTime;->parse(Ljava/lang/CharSequence;)Ljava/time/ZonedDateTime; -PLjava/time/ZonedDateTime;->parse(Ljava/lang/CharSequence;Ljava/time/format/DateTimeFormatter;)Ljava/time/ZonedDateTime; +HPLjava/time/ZonedDateTime;->parse(Ljava/lang/CharSequence;Ljava/time/format/DateTimeFormatter;)Ljava/time/ZonedDateTime; HSPLjava/time/ZonedDateTime;->plus(Ljava/time/temporal/TemporalAmount;)Ljava/time/ZonedDateTime; -PLjava/time/ZonedDateTime;->query(Ljava/time/temporal/TemporalQuery;)Ljava/lang/Object; +HPLjava/time/ZonedDateTime;->query(Ljava/time/temporal/TemporalQuery;)Ljava/lang/Object; HSPLjava/time/ZonedDateTime;->toLocalDate()Ljava/time/LocalDate; HSPLjava/time/ZonedDateTime;->toLocalDate()Ljava/time/chrono/ChronoLocalDate; HSPLjava/time/ZonedDateTime;->toLocalTime()Ljava/time/LocalTime; @@ -26946,8 +28118,8 @@ HSPLjava/time/chrono/AbstractChronology;->resolveDate(Ljava/util/Map;Ljava/time/ HSPLjava/time/chrono/ChronoLocalDateTime;->toEpochSecond(Ljava/time/ZoneOffset;)J HSPLjava/time/chrono/ChronoZonedDateTime;->compareTo(Ljava/lang/Object;)I HSPLjava/time/chrono/ChronoZonedDateTime;->compareTo(Ljava/time/chrono/ChronoZonedDateTime;)I -PLjava/time/chrono/ChronoZonedDateTime;->getChronology()Ljava/time/chrono/Chronology; -PLjava/time/chrono/ChronoZonedDateTime;->query(Ljava/time/temporal/TemporalQuery;)Ljava/lang/Object; +HPLjava/time/chrono/ChronoZonedDateTime;->getChronology()Ljava/time/chrono/Chronology; +HPLjava/time/chrono/ChronoZonedDateTime;->query(Ljava/time/temporal/TemporalQuery;)Ljava/lang/Object; HSPLjava/time/chrono/ChronoZonedDateTime;->toEpochSecond()J HSPLjava/time/chrono/ChronoZonedDateTime;->toInstant()Ljava/time/Instant; HSPLjava/time/chrono/IsoChronology;-><init>()V @@ -26960,7 +28132,7 @@ HSPLjava/time/chrono/IsoChronology;->resolveYearOfEra(Ljava/util/Map;Ljava/time/ HSPLjava/time/format/-$$Lambda$DateTimeFormatter$GhpE1dbCMFpBqvhZZgrqVYpzk8E;-><init>()V HSPLjava/time/format/-$$Lambda$DateTimeFormatter$QqeEAMXK7Qf5gsmaSCLmrVwQ1Ns;-><init>()V HSPLjava/time/format/-$$Lambda$DateTimeFormatterBuilder$M-GACNxm6552EiylPRPw4dyNXKo;-><init>()V -PLjava/time/format/-$$Lambda$DateTimeFormatterBuilder$M-GACNxm6552EiylPRPw4dyNXKo;->queryFrom(Ljava/time/temporal/TemporalAccessor;)Ljava/lang/Object; +HPLjava/time/format/-$$Lambda$DateTimeFormatterBuilder$M-GACNxm6552EiylPRPw4dyNXKo;->queryFrom(Ljava/time/temporal/TemporalAccessor;)Ljava/lang/Object; HSPLjava/time/format/DateTimeFormatter;-><init>(Ljava/time/format/DateTimeFormatterBuilder$CompositePrinterParser;Ljava/util/Locale;Ljava/time/format/DecimalStyle;Ljava/time/format/ResolverStyle;Ljava/util/Set;Ljava/time/chrono/Chronology;Ljava/time/ZoneId;)V HSPLjava/time/format/DateTimeFormatter;->formatTo(Ljava/time/temporal/TemporalAccessor;Ljava/lang/Appendable;)V HSPLjava/time/format/DateTimeFormatter;->ofPattern(Ljava/lang/String;)Ljava/time/format/DateTimeFormatter; @@ -26969,25 +28141,25 @@ HSPLjava/time/format/DateTimeFormatter;->parseResolved0(Ljava/lang/CharSequence; HSPLjava/time/format/DateTimeFormatter;->parseUnresolved0(Ljava/lang/CharSequence;Ljava/text/ParsePosition;)Ljava/time/format/DateTimeParseContext; HSPLjava/time/format/DateTimeFormatter;->toPrinterParser(Z)Ljava/time/format/DateTimeFormatterBuilder$CompositePrinterParser; HSPLjava/time/format/DateTimeFormatterBuilder$2;-><init>()V -PLjava/time/format/DateTimeFormatterBuilder$CharLiteralPrinterParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z +HPLjava/time/format/DateTimeFormatterBuilder$CharLiteralPrinterParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z HSPLjava/time/format/DateTimeFormatterBuilder$CharLiteralPrinterParser;->parse(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;I)I HSPLjava/time/format/DateTimeFormatterBuilder$CompositePrinterParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z HSPLjava/time/format/DateTimeFormatterBuilder$CompositePrinterParser;->parse(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;I)I HSPLjava/time/format/DateTimeFormatterBuilder$FractionPrinterParser;-><init>(Ljava/time/temporal/TemporalField;IIZ)V HSPLjava/time/format/DateTimeFormatterBuilder$FractionPrinterParser;->convertFromFraction(Ljava/math/BigDecimal;)J -PLjava/time/format/DateTimeFormatterBuilder$FractionPrinterParser;->convertToFraction(J)Ljava/math/BigDecimal; -PLjava/time/format/DateTimeFormatterBuilder$FractionPrinterParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z +HPLjava/time/format/DateTimeFormatterBuilder$FractionPrinterParser;->convertToFraction(J)Ljava/math/BigDecimal; +HPLjava/time/format/DateTimeFormatterBuilder$FractionPrinterParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z HSPLjava/time/format/DateTimeFormatterBuilder$FractionPrinterParser;->parse(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;I)I HSPLjava/time/format/DateTimeFormatterBuilder$InstantPrinterParser;->parse(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;I)I -PLjava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z -PLjava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;->getValue(Ljava/time/format/DateTimePrintContext;J)J +HPLjava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z +HPLjava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;->getValue(Ljava/time/format/DateTimePrintContext;J)J HSPLjava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;->parse(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;I)I HSPLjava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;->setValue(Ljava/time/format/DateTimeParseContext;JII)I HSPLjava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;->withFixedWidth()Ljava/time/format/DateTimeFormatterBuilder$NumberPrinterParser; HSPLjava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;->withSubsequentWidth(I)Ljava/time/format/DateTimeFormatterBuilder$NumberPrinterParser; HSPLjava/time/format/DateTimeFormatterBuilder$OffsetIdPrinterParser;-><init>(Ljava/lang/String;Ljava/lang/String;)V HSPLjava/time/format/DateTimeFormatterBuilder$OffsetIdPrinterParser;->checkPattern(Ljava/lang/String;)I -PLjava/time/format/DateTimeFormatterBuilder$OffsetIdPrinterParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z +HPLjava/time/format/DateTimeFormatterBuilder$OffsetIdPrinterParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z HSPLjava/time/format/DateTimeFormatterBuilder$OffsetIdPrinterParser;->parse(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;I)I HSPLjava/time/format/DateTimeFormatterBuilder$OffsetIdPrinterParser;->parseNumber([IILjava/lang/CharSequence;Z)Z HSPLjava/time/format/DateTimeFormatterBuilder$PrefixTree;->add0(Ljava/lang/String;Ljava/lang/String;)Z @@ -27000,7 +28172,7 @@ HSPLjava/time/format/DateTimeFormatterBuilder$PrefixTree;->toKey(Ljava/lang/Stri HSPLjava/time/format/DateTimeFormatterBuilder$SettingsParser;-><init>(Ljava/lang/String;I)V HSPLjava/time/format/DateTimeFormatterBuilder$SettingsParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z HSPLjava/time/format/DateTimeFormatterBuilder$SettingsParser;->parse(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;I)I -PLjava/time/format/DateTimeFormatterBuilder$ZoneIdPrinterParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z +HPLjava/time/format/DateTimeFormatterBuilder$ZoneIdPrinterParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z HSPLjava/time/format/DateTimeFormatterBuilder$ZoneIdPrinterParser;->getTree(Ljava/time/format/DateTimeParseContext;)Ljava/time/format/DateTimeFormatterBuilder$PrefixTree; HSPLjava/time/format/DateTimeFormatterBuilder$ZoneIdPrinterParser;->parse(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;I)I HSPLjava/time/format/DateTimeFormatterBuilder;-><init>()V @@ -27055,7 +28227,7 @@ HSPLjava/time/format/Parsed;->updateCheckConflict(Ljava/time/LocalTime;Ljava/tim HSPLjava/time/format/Parsed;->updateCheckConflict(Ljava/time/chrono/ChronoLocalDate;)V HSPLjava/time/format/ResolverStyle;-><init>(Ljava/lang/String;I)V HSPLjava/time/format/SignStyle;-><init>(Ljava/lang/String;I)V -PLjava/time/format/SignStyle;->values()[Ljava/time/format/SignStyle; +HPLjava/time/format/SignStyle;->values()[Ljava/time/format/SignStyle; HSPLjava/time/format/TextStyle;-><init>(Ljava/lang/String;III)V HSPLjava/time/temporal/-$$Lambda$TemporalQueries$IZUinmsZUz98YXPe0ftAd27ByiE;-><init>()V HSPLjava/time/temporal/-$$Lambda$TemporalQueries$JPrXwgedeqexYxypO8VpPKV4l3c;-><init>()V @@ -27115,6 +28287,7 @@ HSPLjava/util/-$$Lambda$Comparator$DNgpxUFZqmT4lOBzlVyPjWwvEvw;->compare(Ljava/l HSPLjava/util/-$$Lambda$Comparator$SPB8K9Yj7Pw1mljm7LpasV7zxWw;->compare(Ljava/lang/Object;Ljava/lang/Object;)I HSPLjava/util/AbstractCollection;-><init>()V HSPLjava/util/AbstractCollection;->addAll(Ljava/util/Collection;)Z +HSPLjava/util/AbstractCollection;->clear()V HSPLjava/util/AbstractCollection;->contains(Ljava/lang/Object;)Z HSPLjava/util/AbstractCollection;->containsAll(Ljava/util/Collection;)Z HSPLjava/util/AbstractCollection;->isEmpty()Z @@ -27124,6 +28297,7 @@ HSPLjava/util/AbstractCollection;->retainAll(Ljava/util/Collection;)Z HSPLjava/util/AbstractCollection;->toArray()[Ljava/lang/Object; HSPLjava/util/AbstractCollection;->toArray([Ljava/lang/Object;)[Ljava/lang/Object; HSPLjava/util/AbstractCollection;->toString()Ljava/lang/String; +HSPLjava/util/AbstractList$Itr;-><init>(Ljava/util/AbstractList;)V HSPLjava/util/AbstractList$Itr;->hasNext()Z HSPLjava/util/AbstractList$Itr;->next()Ljava/lang/Object; HSPLjava/util/AbstractList$ListItr;->nextIndex()I @@ -27167,7 +28341,9 @@ HSPLjava/util/ArrayDeque;->addFirst(Ljava/lang/Object;)V HSPLjava/util/ArrayDeque;->addLast(Ljava/lang/Object;)V HSPLjava/util/ArrayDeque;->allocateElements(I)V HSPLjava/util/ArrayDeque;->clear()V +HSPLjava/util/ArrayDeque;->contains(Ljava/lang/Object;)Z HSPLjava/util/ArrayDeque;->delete(I)Z +HSPLjava/util/ArrayDeque;->descendingIterator()Ljava/util/Iterator; HSPLjava/util/ArrayDeque;->doubleCapacity()V HSPLjava/util/ArrayDeque;->getFirst()Ljava/lang/Object; HSPLjava/util/ArrayDeque;->getLast()Ljava/lang/Object; @@ -27190,7 +28366,7 @@ HSPLjava/util/ArrayDeque;->removeFirstOccurrence(Ljava/lang/Object;)Z HSPLjava/util/ArrayDeque;->removeLast()Ljava/lang/Object; HSPLjava/util/ArrayDeque;->size()I HSPLjava/util/ArrayDeque;->toArray()[Ljava/lang/Object; -PLjava/util/ArrayDeque;->toArray([Ljava/lang/Object;)[Ljava/lang/Object; +HPLjava/util/ArrayDeque;->toArray([Ljava/lang/Object;)[Ljava/lang/Object; HSPLjava/util/ArrayList$ArrayListSpliterator;->characteristics()I HSPLjava/util/ArrayList$ArrayListSpliterator;->estimateSize()J HSPLjava/util/ArrayList$ArrayListSpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V @@ -27279,10 +28455,12 @@ HSPLjava/util/Arrays;->deepHashCode([Ljava/lang/Object;)I HSPLjava/util/Arrays;->equals([B[B)Z HSPLjava/util/Arrays;->equals([F[F)Z HSPLjava/util/Arrays;->equals([I[I)Z +HSPLjava/util/Arrays;->equals([J[J)Z HSPLjava/util/Arrays;->equals([Ljava/lang/Object;[Ljava/lang/Object;)Z HSPLjava/util/Arrays;->equals([Z[Z)Z HSPLjava/util/Arrays;->fill([BB)V HSPLjava/util/Arrays;->fill([CC)V +HSPLjava/util/Arrays;->fill([CIIC)V HSPLjava/util/Arrays;->fill([FF)V HSPLjava/util/Arrays;->fill([II)V HSPLjava/util/Arrays;->fill([IIII)V @@ -27297,8 +28475,10 @@ HSPLjava/util/Arrays;->hashCode([I)I HSPLjava/util/Arrays;->hashCode([J)I HSPLjava/util/Arrays;->hashCode([Ljava/lang/Object;)I HSPLjava/util/Arrays;->rangeCheck(III)V +HSPLjava/util/Arrays;->sort([C)V HSPLjava/util/Arrays;->sort([F)V HSPLjava/util/Arrays;->sort([I)V +HSPLjava/util/Arrays;->sort([III)V HSPLjava/util/Arrays;->sort([J)V HSPLjava/util/Arrays;->sort([Ljava/lang/Object;)V HSPLjava/util/Arrays;->sort([Ljava/lang/Object;IILjava/util/Comparator;)V @@ -27378,6 +28558,10 @@ HSPLjava/util/Collection;->spliterator()Ljava/util/Spliterator; HSPLjava/util/Collection;->stream()Ljava/util/stream/Stream; HSPLjava/util/Collections$1;->hasNext()Z HSPLjava/util/Collections$1;->next()Ljava/lang/Object; +HPLjava/util/Collections$2;->characteristics()I +HPLjava/util/Collections$2;->estimateSize()J +HPLjava/util/Collections$2;->forEachRemaining(Ljava/util/function/Consumer;)V +HPLjava/util/Collections$2;->tryAdvance(Ljava/util/function/Consumer;)Z HSPLjava/util/Collections$3;->hasMoreElements()Z HSPLjava/util/Collections$3;->nextElement()Ljava/lang/Object; HSPLjava/util/Collections$CopiesList;->get(I)Ljava/lang/Object; @@ -27423,6 +28607,7 @@ HSPLjava/util/Collections$SingletonList;->contains(Ljava/lang/Object;)Z HSPLjava/util/Collections$SingletonList;->get(I)Ljava/lang/Object; HSPLjava/util/Collections$SingletonList;->iterator()Ljava/util/Iterator; HSPLjava/util/Collections$SingletonList;->size()I +HPLjava/util/Collections$SingletonList;->spliterator()Ljava/util/Spliterator; HSPLjava/util/Collections$SingletonMap;->entrySet()Ljava/util/Set; HSPLjava/util/Collections$SingletonMap;->get(Ljava/lang/Object;)Ljava/lang/Object; HSPLjava/util/Collections$SingletonMap;->keySet()Ljava/util/Set; @@ -27446,7 +28631,9 @@ HSPLjava/util/Collections$SynchronizedMap;->get(Ljava/lang/Object;)Ljava/lang/Ob HSPLjava/util/Collections$SynchronizedMap;->isEmpty()Z HSPLjava/util/Collections$SynchronizedMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; HSPLjava/util/Collections$SynchronizedMap;->remove(Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/util/Collections$SynchronizedMap;->size()I HSPLjava/util/Collections$SynchronizedMap;->values()Ljava/util/Collection; +HSPLjava/util/Collections$SynchronizedSet;-><init>(Ljava/util/Set;Ljava/lang/Object;)V HSPLjava/util/Collections$SynchronizedSet;->equals(Ljava/lang/Object;)Z HSPLjava/util/Collections$UnmodifiableCollection$1;->hasNext()Z HSPLjava/util/Collections$UnmodifiableCollection$1;->next()Ljava/lang/Object; @@ -27531,6 +28718,7 @@ HSPLjava/util/Comparator;->comparingDouble(Ljava/util/function/ToDoubleFunction; HSPLjava/util/Comparator;->comparingInt(Ljava/util/function/ToIntFunction;)Ljava/util/Comparator; HSPLjava/util/Comparator;->comparingLong(Ljava/util/function/ToLongFunction;)Ljava/util/Comparator; HSPLjava/util/Comparator;->nullsLast(Ljava/util/Comparator;)Ljava/util/Comparator; +HSPLjava/util/Comparator;->reversed()Ljava/util/Comparator; HSPLjava/util/Comparator;->thenComparing(Ljava/util/Comparator;)Ljava/util/Comparator; HSPLjava/util/Comparator;->thenComparing(Ljava/util/function/Function;)Ljava/util/Comparator; HSPLjava/util/Comparator;->thenComparingDouble(Ljava/util/function/ToDoubleFunction;)Ljava/util/Comparator; @@ -27543,12 +28731,16 @@ HSPLjava/util/Date;-><init>(J)V HSPLjava/util/Date;->before(Ljava/util/Date;)Z HSPLjava/util/Date;->clone()Ljava/lang/Object; HSPLjava/util/Date;->compareTo(Ljava/util/Date;)I +HSPLjava/util/Date;->from(Ljava/time/Instant;)Ljava/util/Date; HSPLjava/util/Date;->getCalendarSystem(J)Lsun/util/calendar/BaseCalendar; HSPLjava/util/Date;->getTime()J HSPLjava/util/Date;->normalize()Lsun/util/calendar/BaseCalendar$Date; HSPLjava/util/Date;->setTime(J)V HSPLjava/util/Date;->toString()Ljava/lang/String; +HSPLjava/util/DualPivotQuicksort;->doSort([CII[CII)V HSPLjava/util/DualPivotQuicksort;->doSort([FII[FII)V +HSPLjava/util/DualPivotQuicksort;->sort([CIIZ)V +HSPLjava/util/DualPivotQuicksort;->sort([CII[CII)V HSPLjava/util/DualPivotQuicksort;->sort([FIIZ)V HSPLjava/util/DualPivotQuicksort;->sort([FII[FII)V HSPLjava/util/DualPivotQuicksort;->sort([IIIZ)V @@ -27562,6 +28754,7 @@ HSPLjava/util/EnumMap$EntryIterator$Entry;->getValue()Ljava/lang/Object; HSPLjava/util/EnumMap$EntryIterator;->next()Ljava/lang/Object; HSPLjava/util/EnumMap$EntryIterator;->next()Ljava/util/Map$Entry; HSPLjava/util/EnumMap$EntrySet;->iterator()Ljava/util/Iterator; +HSPLjava/util/EnumMap$EntrySet;->size()I HSPLjava/util/EnumMap$EnumMapIterator;->hasNext()Z HSPLjava/util/EnumMap$KeyIterator;->next()Ljava/lang/Enum; HSPLjava/util/EnumMap$KeyIterator;->next()Ljava/lang/Object; @@ -27569,6 +28762,7 @@ HSPLjava/util/EnumMap$KeySet;->contains(Ljava/lang/Object;)Z HSPLjava/util/EnumMap$KeySet;->iterator()Ljava/util/Iterator; HSPLjava/util/EnumMap$KeySet;->size()I HSPLjava/util/EnumMap;-><init>(Ljava/lang/Class;)V +HSPLjava/util/EnumMap;-><init>(Ljava/util/Map;)V HSPLjava/util/EnumMap;->clear()V HSPLjava/util/EnumMap;->containsKey(Ljava/lang/Object;)Z HSPLjava/util/EnumMap;->entrySet()Ljava/util/Set; @@ -27576,11 +28770,14 @@ HSPLjava/util/EnumMap;->get(Ljava/lang/Object;)Ljava/lang/Object; HSPLjava/util/EnumMap;->keySet()Ljava/util/Set; HSPLjava/util/EnumMap;->put(Ljava/lang/Enum;Ljava/lang/Object;)Ljava/lang/Object; HSPLjava/util/EnumMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/util/EnumMap;->putAll(Ljava/util/Map;)V HSPLjava/util/EnumMap;->remove(Ljava/lang/Object;)Ljava/lang/Object; HSPLjava/util/EnumMap;->size()I HSPLjava/util/EnumMap;->typeCheck(Ljava/lang/Enum;)V HSPLjava/util/EnumSet;->allOf(Ljava/lang/Class;)Ljava/util/EnumSet; HSPLjava/util/EnumSet;->clone()Ljava/util/EnumSet; +HSPLjava/util/EnumSet;->complementOf(Ljava/util/EnumSet;)Ljava/util/EnumSet; +HSPLjava/util/EnumSet;->copyOf(Ljava/util/Collection;)Ljava/util/EnumSet; HSPLjava/util/EnumSet;->noneOf(Ljava/lang/Class;)Ljava/util/EnumSet; HSPLjava/util/EnumSet;->of(Ljava/lang/Enum;)Ljava/util/EnumSet; HSPLjava/util/EnumSet;->of(Ljava/lang/Enum;Ljava/lang/Enum;)Ljava/util/EnumSet; @@ -27650,6 +28847,7 @@ HSPLjava/util/GregorianCalendar;->computeFields()V HSPLjava/util/GregorianCalendar;->computeFields(II)I HSPLjava/util/GregorianCalendar;->computeTime()V HSPLjava/util/GregorianCalendar;->getFixedDate(Lsun/util/calendar/BaseCalendar;II)J +HSPLjava/util/GregorianCalendar;->getLeastMaximum(I)I HSPLjava/util/GregorianCalendar;->getMaximum(I)I HSPLjava/util/GregorianCalendar;->getMinimum(I)I HSPLjava/util/GregorianCalendar;->getTimeZone()Ljava/util/TimeZone; @@ -27669,6 +28867,7 @@ HSPLjava/util/HashMap$HashIterator;->nextNode()Ljava/util/HashMap$Node; HSPLjava/util/HashMap$HashIterator;->remove()V HSPLjava/util/HashMap$HashMapSpliterator;->estimateSize()J HSPLjava/util/HashMap$KeyIterator;->next()Ljava/lang/Object; +HSPLjava/util/HashMap$KeySet;->contains(Ljava/lang/Object;)Z HSPLjava/util/HashMap$KeySet;->iterator()Ljava/util/Iterator; HSPLjava/util/HashMap$KeySet;->size()I HSPLjava/util/HashMap$KeySpliterator;->characteristics()I @@ -27682,6 +28881,7 @@ HSPLjava/util/HashMap$TreeNode;->balanceInsertion(Ljava/util/HashMap$TreeNode;Lj HSPLjava/util/HashMap$TreeNode;->moveRootToFront([Ljava/util/HashMap$Node;Ljava/util/HashMap$TreeNode;)V HSPLjava/util/HashMap$TreeNode;->rotateLeft(Ljava/util/HashMap$TreeNode;Ljava/util/HashMap$TreeNode;)Ljava/util/HashMap$TreeNode; HSPLjava/util/HashMap$TreeNode;->rotateRight(Ljava/util/HashMap$TreeNode;Ljava/util/HashMap$TreeNode;)Ljava/util/HashMap$TreeNode; +HSPLjava/util/HashMap$TreeNode;->split(Ljava/util/HashMap;[Ljava/util/HashMap$Node;II)V HSPLjava/util/HashMap$TreeNode;->treeify([Ljava/util/HashMap$Node;)V HSPLjava/util/HashMap$ValueIterator;->next()Ljava/lang/Object; HSPLjava/util/HashMap$ValueSpliterator;->characteristics()I @@ -27723,6 +28923,7 @@ HSPLjava/util/HashMap;->readObject(Ljava/io/ObjectInputStream;)V HSPLjava/util/HashMap;->reinitialize()V HSPLjava/util/HashMap;->remove(Ljava/lang/Object;)Ljava/lang/Object; HSPLjava/util/HashMap;->removeNode(ILjava/lang/Object;Ljava/lang/Object;ZZ)Ljava/util/HashMap$Node; +HSPLjava/util/HashMap;->replacementNode(Ljava/util/HashMap$Node;Ljava/util/HashMap$Node;)Ljava/util/HashMap$Node; HSPLjava/util/HashMap;->replacementTreeNode(Ljava/util/HashMap$Node;Ljava/util/HashMap$Node;)Ljava/util/HashMap$TreeNode; HSPLjava/util/HashMap;->resize()[Ljava/util/HashMap$Node; HSPLjava/util/HashMap;->size()I @@ -27750,6 +28951,7 @@ HSPLjava/util/Hashtable$Enumerator;->nextElement()Ljava/lang/Object; HSPLjava/util/Hashtable$HashtableEntry;->clone()Ljava/lang/Object; HSPLjava/util/Hashtable$HashtableEntry;->getKey()Ljava/lang/Object; HSPLjava/util/Hashtable$HashtableEntry;->getValue()Ljava/lang/Object; +HPLjava/util/Hashtable$KeySet;->contains(Ljava/lang/Object;)Z HSPLjava/util/Hashtable$KeySet;->iterator()Ljava/util/Iterator; HSPLjava/util/Hashtable$KeySet;->size()I HSPLjava/util/Hashtable$ValueCollection;->iterator()Ljava/util/Iterator; @@ -27860,6 +29062,7 @@ HSPLjava/util/LinkedList;->clear()V HSPLjava/util/LinkedList;->clone()Ljava/lang/Object; HSPLjava/util/LinkedList;->contains(Ljava/lang/Object;)Z HSPLjava/util/LinkedList;->get(I)Ljava/lang/Object; +HSPLjava/util/LinkedList;->getFirst()Ljava/lang/Object; HSPLjava/util/LinkedList;->getLast()Ljava/lang/Object; HSPLjava/util/LinkedList;->indexOf(Ljava/lang/Object;)I HSPLjava/util/LinkedList;->linkBefore(Ljava/lang/Object;Ljava/util/LinkedList$Node;)V @@ -27871,7 +29074,9 @@ HSPLjava/util/LinkedList;->offerFirst(Ljava/lang/Object;)Z HSPLjava/util/LinkedList;->peek()Ljava/lang/Object; HSPLjava/util/LinkedList;->peekLast()Ljava/lang/Object; HSPLjava/util/LinkedList;->poll()Ljava/lang/Object; +HSPLjava/util/LinkedList;->pollLast()Ljava/lang/Object; HSPLjava/util/LinkedList;->pop()Ljava/lang/Object; +HSPLjava/util/LinkedList;->push(Ljava/lang/Object;)V HSPLjava/util/LinkedList;->remove()Ljava/lang/Object; HSPLjava/util/LinkedList;->remove(I)Ljava/lang/Object; HSPLjava/util/LinkedList;->remove(Ljava/lang/Object;)Z @@ -27879,7 +29084,7 @@ HSPLjava/util/LinkedList;->removeFirst()Ljava/lang/Object; HSPLjava/util/LinkedList;->removeLast()Ljava/lang/Object; HSPLjava/util/LinkedList;->set(ILjava/lang/Object;)Ljava/lang/Object; HSPLjava/util/LinkedList;->size()I -PLjava/util/LinkedList;->spliterator()Ljava/util/Spliterator; +HPLjava/util/LinkedList;->spliterator()Ljava/util/Spliterator; HSPLjava/util/LinkedList;->superClone()Ljava/util/LinkedList; HSPLjava/util/LinkedList;->toArray()[Ljava/lang/Object; HSPLjava/util/LinkedList;->toArray([Ljava/lang/Object;)[Ljava/lang/Object; @@ -27929,6 +29134,7 @@ HSPLjava/util/Locale;->setDefault(Ljava/util/Locale;)V HSPLjava/util/Locale;->toLanguageTag()Ljava/lang/String; HSPLjava/util/Locale;->toString()Ljava/lang/String; HSPLjava/util/Map;->computeIfAbsent(Ljava/lang/Object;Ljava/util/function/Function;)Ljava/lang/Object; +HSPLjava/util/Map;->forEach(Ljava/util/function/BiConsumer;)V HSPLjava/util/Map;->getOrDefault(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; HSPLjava/util/Map;->putIfAbsent(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; HSPLjava/util/MissingResourceException;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V @@ -27939,6 +29145,7 @@ HSPLjava/util/Objects;->hashCode(Ljava/lang/Object;)I HSPLjava/util/Objects;->requireNonNull(Ljava/lang/Object;)Ljava/lang/Object; HSPLjava/util/Objects;->requireNonNull(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object; HSPLjava/util/Objects;->toString(Ljava/lang/Object;)Ljava/lang/String; +HSPLjava/util/Objects;->toString(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/String; HSPLjava/util/Observable;-><init>()V HSPLjava/util/Observable;->addObserver(Ljava/util/Observer;)V HSPLjava/util/Observable;->clearChanged()V @@ -27968,6 +29175,7 @@ HSPLjava/util/PriorityQueue;->iterator()Ljava/util/Iterator; HSPLjava/util/PriorityQueue;->offer(Ljava/lang/Object;)Z HSPLjava/util/PriorityQueue;->peek()Ljava/lang/Object; HSPLjava/util/PriorityQueue;->poll()Ljava/lang/Object; +HSPLjava/util/PriorityQueue;->remove(Ljava/lang/Object;)Z HSPLjava/util/PriorityQueue;->removeAt(I)Ljava/lang/Object; HSPLjava/util/PriorityQueue;->siftDownComparable(ILjava/lang/Object;)V HSPLjava/util/PriorityQueue;->siftDownUsingComparator(ILjava/lang/Object;)V @@ -28005,6 +29213,7 @@ HSPLjava/util/RegularEnumSet$EnumSetIterator;->next()Ljava/lang/Object; HSPLjava/util/RegularEnumSet;->add(Ljava/lang/Enum;)Z HSPLjava/util/RegularEnumSet;->add(Ljava/lang/Object;)Z HSPLjava/util/RegularEnumSet;->addAll()V +HSPLjava/util/RegularEnumSet;->complement()V HSPLjava/util/RegularEnumSet;->contains(Ljava/lang/Object;)Z HSPLjava/util/RegularEnumSet;->isEmpty()Z HSPLjava/util/RegularEnumSet;->iterator()Ljava/util/Iterator; @@ -28046,7 +29255,7 @@ HSPLjava/util/Spliterators$ArraySpliterator;->estimateSize()J HSPLjava/util/Spliterators$ArraySpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V HSPLjava/util/Spliterators$ArraySpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z HSPLjava/util/Spliterators$EmptySpliterator$OfRef;->forEachRemaining(Ljava/util/function/Consumer;)V -PLjava/util/Spliterators$EmptySpliterator$OfRef;->tryAdvance(Ljava/util/function/Consumer;)Z +HPLjava/util/Spliterators$EmptySpliterator$OfRef;->tryAdvance(Ljava/util/function/Consumer;)Z HSPLjava/util/Spliterators$EmptySpliterator;->characteristics()I HSPLjava/util/Spliterators$EmptySpliterator;->estimateSize()J HSPLjava/util/Spliterators$IntArraySpliterator;->characteristics()I @@ -28082,6 +29291,7 @@ HSPLjava/util/SubList;->listIterator(I)Ljava/util/ListIterator; HSPLjava/util/SubList;->size()I HSPLjava/util/TaskQueue;->add(Ljava/util/TimerTask;)V HSPLjava/util/TaskQueue;->clear()V +HSPLjava/util/TaskQueue;->fixDown(I)V HSPLjava/util/TaskQueue;->fixUp(I)V HSPLjava/util/TaskQueue;->getMin()Ljava/util/TimerTask; HSPLjava/util/TaskQueue;->isEmpty()Z @@ -28117,7 +29327,9 @@ HSPLjava/util/TimerTask;-><init>()V HSPLjava/util/TimerThread;->mainLoop()V HSPLjava/util/TimerThread;->run()V HSPLjava/util/TreeMap$AscendingSubMap$AscendingEntrySetView;->iterator()Ljava/util/Iterator; +HSPLjava/util/TreeMap$AscendingSubMap;->comparator()Ljava/util/Comparator; HSPLjava/util/TreeMap$AscendingSubMap;->entrySet()Ljava/util/Set; +HSPLjava/util/TreeMap$AscendingSubMap;->headMap(Ljava/lang/Object;Z)Ljava/util/NavigableMap; HSPLjava/util/TreeMap$AscendingSubMap;->keyIterator()Ljava/util/Iterator; HSPLjava/util/TreeMap$AscendingSubMap;->subHighest()Ljava/util/TreeMap$TreeMapEntry; HSPLjava/util/TreeMap$EntryIterator;->next()Ljava/lang/Object; @@ -28159,13 +29371,16 @@ HSPLjava/util/TreeMap;->clone()Ljava/lang/Object; HSPLjava/util/TreeMap;->comparator()Ljava/util/Comparator; HSPLjava/util/TreeMap;->containsKey(Ljava/lang/Object;)Z HSPLjava/util/TreeMap;->deleteEntry(Ljava/util/TreeMap$TreeMapEntry;)V +HSPLjava/util/TreeMap;->descendingMap()Ljava/util/NavigableMap; HSPLjava/util/TreeMap;->entrySet()Ljava/util/Set; HSPLjava/util/TreeMap;->firstKey()Ljava/lang/Object; HSPLjava/util/TreeMap;->fixAfterDeletion(Ljava/util/TreeMap$TreeMapEntry;)V HSPLjava/util/TreeMap;->fixAfterInsertion(Ljava/util/TreeMap$TreeMapEntry;)V +HSPLjava/util/TreeMap;->floorKey(Ljava/lang/Object;)Ljava/lang/Object; HSPLjava/util/TreeMap;->get(Ljava/lang/Object;)Ljava/lang/Object; HSPLjava/util/TreeMap;->getCeilingEntry(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry; HSPLjava/util/TreeMap;->getEntry(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry; +HSPLjava/util/TreeMap;->getFloorEntry(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry; HSPLjava/util/TreeMap;->getHigherEntry(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry; HSPLjava/util/TreeMap;->getLowerEntry(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry; HSPLjava/util/TreeMap;->headMap(Ljava/lang/Object;Z)Ljava/util/NavigableMap; @@ -28216,6 +29431,7 @@ HSPLjava/util/Vector$1;->nextElement()Ljava/lang/Object; HSPLjava/util/Vector$Itr;->checkForComodification()V HSPLjava/util/Vector$Itr;->hasNext()Z HSPLjava/util/Vector$Itr;->next()Ljava/lang/Object; +HPLjava/util/Vector$Itr;->remove()V HSPLjava/util/Vector;-><init>()V HSPLjava/util/Vector;-><init>(II)V HSPLjava/util/Vector;->add(Ljava/lang/Object;)Z @@ -28232,6 +29448,7 @@ HSPLjava/util/Vector;->indexOf(Ljava/lang/Object;)I HSPLjava/util/Vector;->indexOf(Ljava/lang/Object;I)I HSPLjava/util/Vector;->isEmpty()Z HSPLjava/util/Vector;->iterator()Ljava/util/Iterator; +HSPLjava/util/Vector;->remove(I)Ljava/lang/Object; HSPLjava/util/Vector;->removeAllElements()V HSPLjava/util/Vector;->removeElement(Ljava/lang/Object;)Z HSPLjava/util/Vector;->removeElementAt(I)V @@ -28269,6 +29486,7 @@ HSPLjava/util/WeakHashMap;->size()I HSPLjava/util/WeakHashMap;->transfer([Ljava/util/WeakHashMap$Entry;[Ljava/util/WeakHashMap$Entry;)V HSPLjava/util/WeakHashMap;->values()Ljava/util/Collection; HSPLjava/util/concurrent/AbstractExecutorService;-><init>()V +HSPLjava/util/concurrent/AbstractExecutorService;->invokeAll(Ljava/util/Collection;JLjava/util/concurrent/TimeUnit;)Ljava/util/List; HSPLjava/util/concurrent/AbstractExecutorService;->newTaskFor(Ljava/lang/Runnable;Ljava/lang/Object;)Ljava/util/concurrent/RunnableFuture; HSPLjava/util/concurrent/AbstractExecutorService;->newTaskFor(Ljava/util/concurrent/Callable;)Ljava/util/concurrent/RunnableFuture; HSPLjava/util/concurrent/AbstractExecutorService;->submit(Ljava/lang/Runnable;)Ljava/util/concurrent/Future; @@ -28285,17 +29503,23 @@ HSPLjava/util/concurrent/ArrayBlockingQueue;->size()I HSPLjava/util/concurrent/ArrayBlockingQueue;->take()Ljava/lang/Object; HSPLjava/util/concurrent/CancellationException;-><init>(Ljava/lang/String;)V HSPLjava/util/concurrent/CompletableFuture$AltResult;-><init>(Ljava/lang/Throwable;)V +HSPLjava/util/concurrent/CompletableFuture$Completion;->run()V HSPLjava/util/concurrent/CompletableFuture$Signaller;->block()Z HSPLjava/util/concurrent/CompletableFuture$Signaller;->isReleasable()Z HSPLjava/util/concurrent/CompletableFuture$Signaller;->tryFire(I)Ljava/util/concurrent/CompletableFuture; HSPLjava/util/concurrent/CompletableFuture;-><init>()V HSPLjava/util/concurrent/CompletableFuture;->complete(Ljava/lang/Object;)Z +HSPLjava/util/concurrent/CompletableFuture;->completedFuture(Ljava/lang/Object;)Ljava/util/concurrent/CompletableFuture; HSPLjava/util/concurrent/CompletableFuture;->get()Ljava/lang/Object; HSPLjava/util/concurrent/CompletableFuture;->get(JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object; HSPLjava/util/concurrent/CompletableFuture;->isDone()Z +HSPLjava/util/concurrent/CompletableFuture;->newIncompleteFuture()Ljava/util/concurrent/CompletableFuture; HSPLjava/util/concurrent/CompletableFuture;->postComplete()V +HSPLjava/util/concurrent/CompletableFuture;->postFire(Ljava/util/concurrent/CompletableFuture;I)Ljava/util/concurrent/CompletableFuture; HSPLjava/util/concurrent/CompletableFuture;->reportGet(Ljava/lang/Object;)Ljava/lang/Object; HSPLjava/util/concurrent/CompletableFuture;->timedGet(J)Ljava/lang/Object; +HSPLjava/util/concurrent/CompletableFuture;->uniWhenComplete(Ljava/util/concurrent/CompletableFuture;Ljava/util/function/BiConsumer;Ljava/util/concurrent/CompletableFuture$UniWhenComplete;)Z +HSPLjava/util/concurrent/CompletableFuture;->uniWhenCompleteStage(Ljava/util/concurrent/Executor;Ljava/util/function/BiConsumer;)Ljava/util/concurrent/CompletableFuture; HSPLjava/util/concurrent/CompletableFuture;->waitingGet(Z)Ljava/lang/Object; HSPLjava/util/concurrent/ConcurrentHashMap$BaseIterator;->hasNext()Z HSPLjava/util/concurrent/ConcurrentHashMap$BaseIterator;->remove()V @@ -28332,6 +29556,7 @@ HSPLjava/util/concurrent/ConcurrentHashMap;->clear()V HSPLjava/util/concurrent/ConcurrentHashMap;->computeIfAbsent(Ljava/lang/Object;Ljava/util/function/Function;)Ljava/lang/Object; HSPLjava/util/concurrent/ConcurrentHashMap;->containsKey(Ljava/lang/Object;)Z HSPLjava/util/concurrent/ConcurrentHashMap;->entrySet()Ljava/util/Set; +HSPLjava/util/concurrent/ConcurrentHashMap;->fullAddCount(JZ)V HSPLjava/util/concurrent/ConcurrentHashMap;->get(Ljava/lang/Object;)Ljava/lang/Object; HSPLjava/util/concurrent/ConcurrentHashMap;->initTable()[Ljava/util/concurrent/ConcurrentHashMap$Node; HSPLjava/util/concurrent/ConcurrentHashMap;->isEmpty()Z @@ -28364,6 +29589,7 @@ HSPLjava/util/concurrent/ConcurrentLinkedQueue;->first()Ljava/util/concurrent/Co HSPLjava/util/concurrent/ConcurrentLinkedQueue;->isEmpty()Z HSPLjava/util/concurrent/ConcurrentLinkedQueue;->iterator()Ljava/util/Iterator; HSPLjava/util/concurrent/ConcurrentLinkedQueue;->offer(Ljava/lang/Object;)Z +HSPLjava/util/concurrent/ConcurrentLinkedQueue;->peek()Ljava/lang/Object; HSPLjava/util/concurrent/ConcurrentLinkedQueue;->poll()Ljava/lang/Object; HSPLjava/util/concurrent/ConcurrentLinkedQueue;->remove(Ljava/lang/Object;)Z HSPLjava/util/concurrent/ConcurrentLinkedQueue;->size()I @@ -28373,6 +29599,7 @@ HSPLjava/util/concurrent/ConcurrentSkipListMap$ValueIterator;->next()Ljava/lang/ HSPLjava/util/concurrent/ConcurrentSkipListMap$Values;->iterator()Ljava/util/Iterator; HSPLjava/util/concurrent/ConcurrentSkipListMap;-><init>()V HSPLjava/util/concurrent/ConcurrentSkipListMap;-><init>(Ljava/util/Comparator;)V +HSPLjava/util/concurrent/ConcurrentSkipListMap;->clear()V HSPLjava/util/concurrent/ConcurrentSkipListMap;->doGet(Ljava/lang/Object;)Ljava/lang/Object; HSPLjava/util/concurrent/ConcurrentSkipListMap;->doPut(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object; HSPLjava/util/concurrent/ConcurrentSkipListMap;->doRemove(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; @@ -28422,6 +29649,7 @@ HSPLjava/util/concurrent/Executors$DelegatedExecutorService;->isShutdown()Z HSPLjava/util/concurrent/Executors$DelegatedExecutorService;->shutdown()V HSPLjava/util/concurrent/Executors$DelegatedExecutorService;->shutdownNow()Ljava/util/List; HSPLjava/util/concurrent/Executors$DelegatedExecutorService;->submit(Ljava/lang/Runnable;)Ljava/util/concurrent/Future; +HSPLjava/util/concurrent/Executors$DelegatedExecutorService;->submit(Ljava/util/concurrent/Callable;)Ljava/util/concurrent/Future; HSPLjava/util/concurrent/Executors$DelegatedScheduledExecutorService;->schedule(Ljava/lang/Runnable;JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture; HSPLjava/util/concurrent/Executors$FinalizableDelegatedExecutorService;->finalize()V HSPLjava/util/concurrent/Executors$RunnableAdapter;->call()Ljava/lang/Object; @@ -28476,15 +29704,19 @@ HSPLjava/util/concurrent/LinkedBlockingDeque;->offerLast(Ljava/lang/Object;)Z HSPLjava/util/concurrent/LinkedBlockingDeque;->poll(JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object; HSPLjava/util/concurrent/LinkedBlockingDeque;->pollFirst()Ljava/lang/Object; HSPLjava/util/concurrent/LinkedBlockingDeque;->pollFirst(JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object; -PLjava/util/concurrent/LinkedBlockingDeque;->pop()Ljava/lang/Object; -PLjava/util/concurrent/LinkedBlockingDeque;->remainingCapacity()I +HPLjava/util/concurrent/LinkedBlockingDeque;->pop()Ljava/lang/Object; +HPLjava/util/concurrent/LinkedBlockingDeque;->remainingCapacity()I HSPLjava/util/concurrent/LinkedBlockingDeque;->removeFirst()Ljava/lang/Object; HSPLjava/util/concurrent/LinkedBlockingDeque;->size()I +HSPLjava/util/concurrent/LinkedBlockingDeque;->take()Ljava/lang/Object; +HSPLjava/util/concurrent/LinkedBlockingDeque;->takeFirst()Ljava/lang/Object; HSPLjava/util/concurrent/LinkedBlockingDeque;->unlinkFirst()Ljava/lang/Object; HSPLjava/util/concurrent/LinkedBlockingQueue;-><init>()V HSPLjava/util/concurrent/LinkedBlockingQueue;-><init>(I)V HSPLjava/util/concurrent/LinkedBlockingQueue;->drainTo(Ljava/util/Collection;)I HSPLjava/util/concurrent/LinkedBlockingQueue;->drainTo(Ljava/util/Collection;I)I +HSPLjava/util/concurrent/LinkedBlockingQueue;->fullyLock()V +HSPLjava/util/concurrent/LinkedBlockingQueue;->fullyUnlock()V HSPLjava/util/concurrent/LinkedBlockingQueue;->offer(Ljava/lang/Object;)Z HSPLjava/util/concurrent/LinkedBlockingQueue;->poll()Ljava/lang/Object; HSPLjava/util/concurrent/LinkedBlockingQueue;->poll(JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object; @@ -28503,11 +29735,13 @@ HSPLjava/util/concurrent/PriorityBlockingQueue;->poll()Ljava/lang/Object; HSPLjava/util/concurrent/PriorityBlockingQueue;->siftDownComparable(ILjava/lang/Object;[Ljava/lang/Object;I)V HSPLjava/util/concurrent/PriorityBlockingQueue;->size()I HSPLjava/util/concurrent/PriorityBlockingQueue;->take()Ljava/lang/Object; +HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue$Itr;->hasNext()Z HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->add(Ljava/lang/Object;)Z HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->add(Ljava/lang/Runnable;)Z HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->drainTo(Ljava/util/Collection;)I HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->indexOf(Ljava/lang/Object;)I HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->isEmpty()Z +HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->iterator()Ljava/util/Iterator; HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->offer(Ljava/lang/Runnable;)Z HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->poll(JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object; HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->poll(JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/RunnableScheduledFuture; @@ -28596,6 +29830,7 @@ HSPLjava/util/concurrent/ThreadPoolExecutor;->isShutdown()Z HSPLjava/util/concurrent/ThreadPoolExecutor;->onShutdown()V HSPLjava/util/concurrent/ThreadPoolExecutor;->prestartAllCoreThreads()I HSPLjava/util/concurrent/ThreadPoolExecutor;->processWorkerExit(Ljava/util/concurrent/ThreadPoolExecutor$Worker;Z)V +HSPLjava/util/concurrent/ThreadPoolExecutor;->purge()V HSPLjava/util/concurrent/ThreadPoolExecutor;->remove(Ljava/lang/Runnable;)Z HSPLjava/util/concurrent/ThreadPoolExecutor;->runWorker(Ljava/util/concurrent/ThreadPoolExecutor$Worker;)V HSPLjava/util/concurrent/ThreadPoolExecutor;->setKeepAliveTime(JLjava/util/concurrent/TimeUnit;)V @@ -28634,6 +29869,7 @@ HSPLjava/util/concurrent/TimeUnit$6;->toMillis(J)J HSPLjava/util/concurrent/TimeUnit$6;->toMinutes(J)J HSPLjava/util/concurrent/TimeUnit$6;->toNanos(J)J HSPLjava/util/concurrent/TimeUnit$6;->toSeconds(J)J +HSPLjava/util/concurrent/TimeUnit$7;->toHours(J)J HSPLjava/util/concurrent/TimeUnit$7;->toMillis(J)J HSPLjava/util/concurrent/TimeUnit$7;->toMinutes(J)J HSPLjava/util/concurrent/TimeUnit$7;->toNanos(J)J @@ -28670,8 +29906,10 @@ HSPLjava/util/concurrent/atomic/AtomicLong;-><init>()V HSPLjava/util/concurrent/atomic/AtomicLong;-><init>(J)V HSPLjava/util/concurrent/atomic/AtomicLong;->addAndGet(J)J HSPLjava/util/concurrent/atomic/AtomicLong;->compareAndSet(JJ)Z +HSPLjava/util/concurrent/atomic/AtomicLong;->doubleValue()D HSPLjava/util/concurrent/atomic/AtomicLong;->get()J HSPLjava/util/concurrent/atomic/AtomicLong;->getAndAdd(J)J +HSPLjava/util/concurrent/atomic/AtomicLong;->getAndDecrement()J HSPLjava/util/concurrent/atomic/AtomicLong;->getAndIncrement()J HSPLjava/util/concurrent/atomic/AtomicLong;->getAndSet(J)J HSPLjava/util/concurrent/atomic/AtomicLong;->incrementAndGet()J @@ -28724,6 +29962,7 @@ HSPLjava/util/concurrent/locks/ReentrantLock$Sync;->isHeldExclusively()Z HSPLjava/util/concurrent/locks/ReentrantLock$Sync;->nonfairTryAcquire(I)Z HSPLjava/util/concurrent/locks/ReentrantLock$Sync;->tryRelease(I)Z HSPLjava/util/concurrent/locks/ReentrantLock;-><init>()V +HSPLjava/util/concurrent/locks/ReentrantLock;-><init>(Z)V HSPLjava/util/concurrent/locks/ReentrantLock;->isHeldByCurrentThread()Z HSPLjava/util/concurrent/locks/ReentrantLock;->lock()V HSPLjava/util/concurrent/locks/ReentrantLock;->lockInterruptibly()V @@ -28759,7 +29998,7 @@ PLjava/util/function/-$$Lambda$Predicate$GyIVQ08CWbeMZxHDkkrN-5apRkc;->test(Ljav HSPLjava/util/function/DoubleUnaryOperator;->andThen(Ljava/util/function/DoubleUnaryOperator;)Ljava/util/function/DoubleUnaryOperator; HSPLjava/util/function/DoubleUnaryOperator;->identity()Ljava/util/function/DoubleUnaryOperator; HSPLjava/util/function/Function;->identity()Ljava/util/function/Function; -PLjava/util/function/Predicate;->and(Ljava/util/function/Predicate;)Ljava/util/function/Predicate; +HPLjava/util/function/Predicate;->and(Ljava/util/function/Predicate;)Ljava/util/function/Predicate; HSPLjava/util/function/Predicate;->or(Ljava/util/function/Predicate;)Ljava/util/function/Predicate; HSPLjava/util/jar/Attributes$Name;-><init>(Ljava/lang/String;)V HSPLjava/util/jar/Attributes$Name;->equals(Ljava/lang/Object;)Z @@ -28904,6 +30143,7 @@ HSPLjava/util/regex/Matcher;->groupCount()I HSPLjava/util/regex/Matcher;->hitEnd()Z HSPLjava/util/regex/Matcher;->lookingAt()Z HSPLjava/util/regex/Matcher;->matches()Z +HSPLjava/util/regex/Matcher;->region(II)Ljava/util/regex/Matcher; HSPLjava/util/regex/Matcher;->replaceAll(Ljava/lang/String;)Ljava/lang/String; HSPLjava/util/regex/Matcher;->replaceFirst(Ljava/lang/String;)Ljava/lang/String; HSPLjava/util/regex/Matcher;->reset(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher; @@ -29078,6 +30318,7 @@ HSPLjava/util/stream/ReduceOps$8ReducingSink;->begin(J)V HSPLjava/util/stream/ReduceOps$8ReducingSink;->get()Ljava/lang/Long; HSPLjava/util/stream/ReduceOps$8ReducingSink;->get()Ljava/lang/Object; HSPLjava/util/stream/ReduceOps$Box;->get()Ljava/lang/Object; +HSPLjava/util/stream/ReduceOps$ReduceOp;-><init>(Ljava/util/stream/StreamShape;)V HSPLjava/util/stream/ReduceOps$ReduceOp;->evaluateSequential(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;)Ljava/lang/Object; HSPLjava/util/stream/ReferencePipeline$2$1;->accept(Ljava/lang/Object;)V HSPLjava/util/stream/ReferencePipeline$2$1;->begin(J)V @@ -29108,6 +30349,7 @@ HSPLjava/util/stream/ReferencePipeline;->makeNodeBuilder(JLjava/util/function/In HSPLjava/util/stream/ReferencePipeline;->map(Ljava/util/function/Function;)Ljava/util/stream/Stream; HSPLjava/util/stream/ReferencePipeline;->mapToInt(Ljava/util/function/ToIntFunction;)Ljava/util/stream/IntStream; HSPLjava/util/stream/ReferencePipeline;->max(Ljava/util/Comparator;)Ljava/util/Optional; +HSPLjava/util/stream/ReferencePipeline;->noneMatch(Ljava/util/function/Predicate;)Z HSPLjava/util/stream/ReferencePipeline;->sorted(Ljava/util/Comparator;)Ljava/util/stream/Stream; HSPLjava/util/stream/ReferencePipeline;->toArray(Ljava/util/function/IntFunction;)[Ljava/lang/Object; HSPLjava/util/stream/Sink$ChainedInt;->begin(J)V @@ -29142,7 +30384,7 @@ HSPLjava/util/stream/SpinedBuffer;->copyInto([Ljava/lang/Object;I)V HSPLjava/util/stream/SpinedBuffer;->count()J HSPLjava/util/stream/SpinedBuffer;->ensureCapacity(J)V HSPLjava/util/stream/Stream;->concat(Ljava/util/stream/Stream;Ljava/util/stream/Stream;)Ljava/util/stream/Stream; -PLjava/util/stream/Stream;->empty()Ljava/util/stream/Stream; +HPLjava/util/stream/Stream;->empty()Ljava/util/stream/Stream; HSPLjava/util/stream/Stream;->generate(Ljava/util/function/Supplier;)Ljava/util/stream/Stream; HSPLjava/util/stream/Stream;->of([Ljava/lang/Object;)Ljava/util/stream/Stream; HSPLjava/util/stream/StreamOpFlag$MaskBuilder;->build()Ljava/util/Map; @@ -29217,6 +30459,7 @@ HSPLjava/util/zip/Inflater;->needsDictionary()Z HSPLjava/util/zip/Inflater;->needsInput()Z HSPLjava/util/zip/Inflater;->setInput([BII)V HSPLjava/util/zip/InflaterInputStream;-><init>(Ljava/io/InputStream;Ljava/util/zip/Inflater;I)V +HSPLjava/util/zip/InflaterInputStream;->available()I HSPLjava/util/zip/InflaterInputStream;->close()V HSPLjava/util/zip/InflaterInputStream;->fill()V HSPLjava/util/zip/InflaterInputStream;->read()I @@ -29263,6 +30506,7 @@ HSPLjavax/crypto/Cipher;->chooseProvider(Ljavax/crypto/Cipher$InitType;ILjava/se HSPLjavax/crypto/Cipher;->createCipher(Ljava/lang/String;Ljava/security/Provider;)Ljavax/crypto/Cipher; HSPLjavax/crypto/Cipher;->doFinal([B)[B HSPLjavax/crypto/Cipher;->doFinal([BII)[B +HSPLjavax/crypto/Cipher;->doFinal([BII[BI)I HSPLjavax/crypto/Cipher;->getIV()[B HSPLjavax/crypto/Cipher;->getInstance(Ljava/lang/String;)Ljavax/crypto/Cipher; HSPLjavax/crypto/Cipher;->init(ILjava/security/Key;)V @@ -29282,10 +30526,13 @@ HSPLjavax/crypto/Mac;->chooseFirstProvider()V HSPLjavax/crypto/Mac;->chooseProvider(Ljava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;)V HSPLjavax/crypto/Mac;->doFinal()[B HSPLjavax/crypto/Mac;->doFinal([B)[B +HSPLjavax/crypto/Mac;->doFinal([BI)V HSPLjavax/crypto/Mac;->getInstance(Ljava/lang/String;)Ljavax/crypto/Mac; +HSPLjavax/crypto/Mac;->getMacLength()I HSPLjavax/crypto/Mac;->init(Ljava/security/Key;)V HSPLjavax/crypto/Mac;->update(B)V HSPLjavax/crypto/Mac;->update([B)V +HSPLjavax/crypto/Mac;->update([BII)V HSPLjavax/crypto/MacSpi;-><init>()V HSPLjavax/crypto/spec/GCMParameterSpec;-><init>(I[B)V HSPLjavax/crypto/spec/GCMParameterSpec;->getIV()[B @@ -29299,8 +30546,10 @@ HSPLjavax/crypto/spec/PSource$PSpecified;-><init>([B)V HSPLjavax/crypto/spec/SecretKeySpec;-><init>([BLjava/lang/String;)V HSPLjavax/crypto/spec/SecretKeySpec;->getEncoded()[B HSPLjavax/crypto/spec/SecretKeySpec;->getFormat()Ljava/lang/String; +HSPLjavax/microedition/khronos/egl/EGLContext;->getEGL()Ljavax/microedition/khronos/egl/EGL; HSPLjavax/net/DefaultSocketFactory;->createSocket()Ljava/net/Socket; HSPLjavax/net/DefaultSocketFactory;->createSocket(Ljava/net/InetAddress;I)Ljava/net/Socket; +HSPLjavax/net/SocketFactory;-><init>()V HSPLjavax/net/SocketFactory;->getDefault()Ljavax/net/SocketFactory; HSPLjavax/net/ssl/ExtendedSSLSession;-><init>()V HSPLjavax/net/ssl/HttpsURLConnection;-><init>(Ljava/net/URL;)V @@ -29355,6 +30604,7 @@ HSPLjavax/security/auth/x500/X500Principal;-><init>(Lsun/security/x509/X500Name; HSPLjavax/security/auth/x500/X500Principal;-><init>([B)V HSPLjavax/security/auth/x500/X500Principal;->equals(Ljava/lang/Object;)Z HSPLjavax/security/auth/x500/X500Principal;->getEncoded()[B +HSPLjavax/security/auth/x500/X500Principal;->getName(Ljava/lang/String;)Ljava/lang/String; HSPLjavax/security/auth/x500/X500Principal;->hashCode()I HSPLjavax/security/cert/X509Certificate$1;-><init>()V HSPLjavax/security/cert/X509Certificate$1;->run()Ljava/lang/Object; @@ -29366,6 +30616,7 @@ HSPLjavax/xml/parsers/DocumentBuilderFactory;->isIgnoringElementContentWhitespac HSPLjavax/xml/parsers/DocumentBuilderFactory;->isNamespaceAware()Z HSPLjavax/xml/parsers/DocumentBuilderFactory;->isValidating()Z HSPLjavax/xml/parsers/DocumentBuilderFactory;->newInstance()Ljavax/xml/parsers/DocumentBuilderFactory; +HSPLjavax/xml/parsers/SAXParserFactory;->newInstance()Ljavax/xml/parsers/SAXParserFactory; HSPLlibcore/icu/DateIntervalFormat;->formatDateRange(JJILjava/lang/String;)Ljava/lang/String; HSPLlibcore/icu/DateIntervalFormat;->formatDateRange(Landroid/icu/util/ULocale;Landroid/icu/util/TimeZone;JJI)Ljava/lang/String; HSPLlibcore/icu/DateIntervalFormat;->getFormatter(Ljava/lang/String;Landroid/icu/util/ULocale;Landroid/icu/util/TimeZone;)Landroid/icu/text/DateIntervalFormat; @@ -29383,6 +30634,7 @@ HSPLlibcore/icu/LocaleData;->getTimeFormat(I)Ljava/lang/String; HSPLlibcore/icu/LocaleData;->initLocaleData(Ljava/util/Locale;)Llibcore/icu/LocaleData; HSPLlibcore/icu/LocaleData;->initializePatternSeparator(Llibcore/icu/LocaleData;Ljava/util/Locale;)V HSPLlibcore/icu/LocaleData;->mapInvalidAndNullLocales(Ljava/util/Locale;)Ljava/util/Locale; +HSPLlibcore/icu/RelativeDateTimeFormatter$FormatterCache;-><init>()V HSPLlibcore/icu/TimeZoneNames$1;-><init>()V HSPLlibcore/icu/TimeZoneNames$ZoneStringsCache;-><init>()V HSPLlibcore/internal/StringPool;-><init>()V @@ -29396,8 +30648,9 @@ HSPLlibcore/io/BlockGuardOs;->close(Ljava/io/FileDescriptor;)V HSPLlibcore/io/BlockGuardOs;->connect(Ljava/io/FileDescriptor;Ljava/net/InetAddress;I)V HSPLlibcore/io/BlockGuardOs;->fchmod(Ljava/io/FileDescriptor;I)V HSPLlibcore/io/BlockGuardOs;->fchown(Ljava/io/FileDescriptor;II)V +HSPLlibcore/io/BlockGuardOs;->fdatasync(Ljava/io/FileDescriptor;)V HSPLlibcore/io/BlockGuardOs;->fstat(Ljava/io/FileDescriptor;)Landroid/system/StructStat; -PLlibcore/io/BlockGuardOs;->fsync(Ljava/io/FileDescriptor;)V +HPLlibcore/io/BlockGuardOs;->fsync(Ljava/io/FileDescriptor;)V HSPLlibcore/io/BlockGuardOs;->ftruncate(Ljava/io/FileDescriptor;J)V HSPLlibcore/io/BlockGuardOs;->getxattr(Ljava/lang/String;Ljava/lang/String;)[B HSPLlibcore/io/BlockGuardOs;->lseek(Ljava/io/FileDescriptor;JI)J @@ -29433,7 +30686,7 @@ HSPLlibcore/io/ForwardingOs;->capget(Landroid/system/StructCapUserHeader;)[Landr HSPLlibcore/io/ForwardingOs;->chmod(Ljava/lang/String;I)V HSPLlibcore/io/ForwardingOs;->close(Ljava/io/FileDescriptor;)V HSPLlibcore/io/ForwardingOs;->connect(Ljava/io/FileDescriptor;Ljava/net/InetAddress;I)V -PLlibcore/io/ForwardingOs;->dup(Ljava/io/FileDescriptor;)Ljava/io/FileDescriptor; +HPLlibcore/io/ForwardingOs;->dup(Ljava/io/FileDescriptor;)Ljava/io/FileDescriptor; HSPLlibcore/io/ForwardingOs;->dup2(Ljava/io/FileDescriptor;I)Ljava/io/FileDescriptor; HSPLlibcore/io/ForwardingOs;->fcntlInt(Ljava/io/FileDescriptor;II)I HSPLlibcore/io/ForwardingOs;->fcntlVoid(Ljava/io/FileDescriptor;I)I @@ -29485,6 +30738,7 @@ HSPLlibcore/io/IoBridge;->bind(Ljava/io/FileDescriptor;Ljava/net/InetAddress;I)V HSPLlibcore/io/IoBridge;->closeAndSignalBlockedThreads(Ljava/io/FileDescriptor;)V HSPLlibcore/io/IoBridge;->connect(Ljava/io/FileDescriptor;Ljava/net/InetAddress;II)V HSPLlibcore/io/IoBridge;->connectErrno(Ljava/io/FileDescriptor;Ljava/net/InetAddress;II)V +HSPLlibcore/io/IoBridge;->createMessageForException(Ljava/io/FileDescriptor;Ljava/net/InetAddress;IILjava/lang/Exception;)Ljava/lang/String; HSPLlibcore/io/IoBridge;->getLocalInetSocketAddress(Ljava/io/FileDescriptor;)Ljava/net/InetSocketAddress; HSPLlibcore/io/IoBridge;->getSocketOption(Ljava/io/FileDescriptor;I)Ljava/lang/Object; HSPLlibcore/io/IoBridge;->getSocketOptionErrno(Ljava/io/FileDescriptor;I)Ljava/lang/Object; @@ -29545,7 +30799,7 @@ HSPLlibcore/io/NioBufferIterator;->seek(I)V HSPLlibcore/io/NioBufferIterator;->skip(I)V HSPLlibcore/io/Os;->compareAndSetDefault(Llibcore/io/Os;Llibcore/io/Os;)Z HSPLlibcore/io/Streams;->readFully(Ljava/io/InputStream;)[B -PLlibcore/io/Streams;->readFully(Ljava/io/Reader;)Ljava/lang/String; +HPLlibcore/io/Streams;->readFully(Ljava/io/Reader;)Ljava/lang/String; HSPLlibcore/net/InetAddressUtils;->parseNumericAddress(Ljava/lang/String;)Ljava/net/InetAddress; HSPLlibcore/net/InetAddressUtils;->parseNumericAddressNoThrow(Ljava/lang/String;)Ljava/net/InetAddress; HSPLlibcore/net/InetAddressUtils;->parseNumericAddressNoThrowStripOptionalBrackets(Ljava/lang/String;)Ljava/net/InetAddress; @@ -29632,7 +30886,7 @@ HSPLlibcore/util/CollectionUtils;->removeDuplicates(Ljava/util/List;Ljava/util/C HSPLlibcore/util/HexEncoding;->decode([CZ)[B HSPLlibcore/util/HexEncoding;->encode([BII)[C HSPLlibcore/util/HexEncoding;->encodeToString([B)Ljava/lang/String; -PLlibcore/util/HexEncoding;->toDigit([CI)I +HPLlibcore/util/HexEncoding;->toDigit([CI)I HSPLlibcore/util/NativeAllocationRegistry$CleanerRunner;->run()V HSPLlibcore/util/NativeAllocationRegistry$CleanerThunk;->run()V HSPLlibcore/util/NativeAllocationRegistry;-><init>(Ljava/lang/ClassLoader;JJ)V @@ -29736,6 +30990,8 @@ HSPLorg/apache/harmony/xml/parsers/DocumentBuilderImpl;->parse(Lorg/xml/sax/Inpu HSPLorg/apache/http/conn/ssl/AllowAllHostnameVerifier;-><init>()V HSPLorg/apache/http/conn/ssl/BrowserCompatHostnameVerifier;-><init>()V HSPLorg/apache/http/conn/ssl/StrictHostnameVerifier;-><init>()V +HSPLorg/apache/http/params/HttpConnectionParams;->setConnectionTimeout(Lorg/apache/http/params/HttpParams;I)V +HSPLorg/apache/http/params/HttpConnectionParams;->setSoTimeout(Lorg/apache/http/params/HttpParams;I)V HSPLorg/ccil/cowan/tagsoup/AttributesImpl;->addAttribute(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V HSPLorg/ccil/cowan/tagsoup/AttributesImpl;->clear()V HSPLorg/ccil/cowan/tagsoup/AttributesImpl;->ensureCapacity(I)V @@ -29753,7 +31009,9 @@ HSPLorg/ccil/cowan/tagsoup/Element;->atts()Lorg/ccil/cowan/tagsoup/AttributesImp HSPLorg/ccil/cowan/tagsoup/Element;->canContain(Lorg/ccil/cowan/tagsoup/Element;)Z HSPLorg/ccil/cowan/tagsoup/Element;->clean()V HSPLorg/ccil/cowan/tagsoup/Element;->flags()I +HSPLorg/ccil/cowan/tagsoup/Element;->isPreclosed()Z HSPLorg/ccil/cowan/tagsoup/Element;->localName()Ljava/lang/String; +HSPLorg/ccil/cowan/tagsoup/Element;->model()I HSPLorg/ccil/cowan/tagsoup/Element;->name()Ljava/lang/String; HSPLorg/ccil/cowan/tagsoup/Element;->namespace()Ljava/lang/String; HSPLorg/ccil/cowan/tagsoup/Element;->next()Lorg/ccil/cowan/tagsoup/Element; @@ -29765,6 +31023,7 @@ HSPLorg/ccil/cowan/tagsoup/ElementType;->canContain(Lorg/ccil/cowan/tagsoup/Elem HSPLorg/ccil/cowan/tagsoup/ElementType;->flags()I HSPLorg/ccil/cowan/tagsoup/ElementType;->localName()Ljava/lang/String; HSPLorg/ccil/cowan/tagsoup/ElementType;->localName(Ljava/lang/String;)Ljava/lang/String; +HSPLorg/ccil/cowan/tagsoup/ElementType;->model()I HSPLorg/ccil/cowan/tagsoup/ElementType;->name()Ljava/lang/String; HSPLorg/ccil/cowan/tagsoup/ElementType;->namespace()Ljava/lang/String; HSPLorg/ccil/cowan/tagsoup/ElementType;->namespace(Ljava/lang/String;Z)Ljava/lang/String; @@ -29781,9 +31040,14 @@ HSPLorg/ccil/cowan/tagsoup/HTMLSchema;-><init>()V HSPLorg/ccil/cowan/tagsoup/Parser;-><init>()V HSPLorg/ccil/cowan/tagsoup/Parser;->entity([CII)V HSPLorg/ccil/cowan/tagsoup/Parser;->eof([CII)V +HSPLorg/ccil/cowan/tagsoup/Parser;->etag([CII)V +HSPLorg/ccil/cowan/tagsoup/Parser;->etag_basic([CII)V +HSPLorg/ccil/cowan/tagsoup/Parser;->etag_cdata([CII)Z HSPLorg/ccil/cowan/tagsoup/Parser;->getEntity()I HSPLorg/ccil/cowan/tagsoup/Parser;->getReader(Lorg/xml/sax/InputSource;)Ljava/io/Reader; +HSPLorg/ccil/cowan/tagsoup/Parser;->gi([CII)V HSPLorg/ccil/cowan/tagsoup/Parser;->lookupEntity([CII)I +HSPLorg/ccil/cowan/tagsoup/Parser;->makeName([CII)Ljava/lang/String; HSPLorg/ccil/cowan/tagsoup/Parser;->parse(Lorg/xml/sax/InputSource;)V HSPLorg/ccil/cowan/tagsoup/Parser;->pcdata([CII)V HSPLorg/ccil/cowan/tagsoup/Parser;->pop()V @@ -29793,6 +31057,7 @@ HSPLorg/ccil/cowan/tagsoup/Parser;->restart(Lorg/ccil/cowan/tagsoup/Element;)V HSPLorg/ccil/cowan/tagsoup/Parser;->setContentHandler(Lorg/xml/sax/ContentHandler;)V HSPLorg/ccil/cowan/tagsoup/Parser;->setProperty(Ljava/lang/String;Ljava/lang/Object;)V HSPLorg/ccil/cowan/tagsoup/Parser;->setup()V +HSPLorg/ccil/cowan/tagsoup/Parser;->stagc([CII)V HSPLorg/ccil/cowan/tagsoup/Schema;-><init>()V HSPLorg/ccil/cowan/tagsoup/Schema;->attribute(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V HSPLorg/ccil/cowan/tagsoup/Schema;->elementType(Ljava/lang/String;III)V @@ -29816,6 +31081,7 @@ HSPLorg/json/JSONArray;->getJSONObject(I)Lorg/json/JSONObject; HSPLorg/json/JSONArray;->getString(I)Ljava/lang/String; HSPLorg/json/JSONArray;->length()I HSPLorg/json/JSONArray;->opt(I)Ljava/lang/Object; +HSPLorg/json/JSONArray;->optJSONObject(I)Lorg/json/JSONObject; HSPLorg/json/JSONArray;->put(J)Lorg/json/JSONArray; HSPLorg/json/JSONArray;->put(Ljava/lang/Object;)Lorg/json/JSONArray; HSPLorg/json/JSONArray;->toString()Ljava/lang/String; @@ -29833,9 +31099,13 @@ HSPLorg/json/JSONObject;->getJSONObject(Ljava/lang/String;)Lorg/json/JSONObject; HSPLorg/json/JSONObject;->getLong(Ljava/lang/String;)J HSPLorg/json/JSONObject;->getString(Ljava/lang/String;)Ljava/lang/String; HSPLorg/json/JSONObject;->has(Ljava/lang/String;)Z +HSPLorg/json/JSONObject;->keys()Ljava/util/Iterator; HSPLorg/json/JSONObject;->numberToString(Ljava/lang/Number;)Ljava/lang/String; HSPLorg/json/JSONObject;->opt(Ljava/lang/String;)Ljava/lang/Object; +HSPLorg/json/JSONObject;->optBoolean(Ljava/lang/String;)Z HSPLorg/json/JSONObject;->optBoolean(Ljava/lang/String;Z)Z +HSPLorg/json/JSONObject;->optDouble(Ljava/lang/String;)D +HSPLorg/json/JSONObject;->optDouble(Ljava/lang/String;D)D HSPLorg/json/JSONObject;->optInt(Ljava/lang/String;I)I HSPLorg/json/JSONObject;->optJSONObject(Ljava/lang/String;)Lorg/json/JSONObject; HSPLorg/json/JSONObject;->optLong(Ljava/lang/String;J)J @@ -29846,6 +31116,7 @@ HSPLorg/json/JSONObject;->put(Ljava/lang/String;I)Lorg/json/JSONObject; HSPLorg/json/JSONObject;->put(Ljava/lang/String;J)Lorg/json/JSONObject; HSPLorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject; HSPLorg/json/JSONObject;->put(Ljava/lang/String;Z)Lorg/json/JSONObject; +HSPLorg/json/JSONObject;->putOpt(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject; HSPLorg/json/JSONObject;->toString()Ljava/lang/String; HSPLorg/json/JSONObject;->wrap(Ljava/lang/Object;)Ljava/lang/Object; HSPLorg/json/JSONObject;->writeTo(Lorg/json/JSONStringer;)V @@ -29876,10 +31147,10 @@ HSPLorg/xml/sax/InputSource;->getPublicId()Ljava/lang/String; HSPLorg/xml/sax/InputSource;->getSystemId()Ljava/lang/String; HSPLorg/xmlpull/v1/XmlPullParserFactory;-><init>()V HSPLorg/xmlpull/v1/XmlPullParserFactory;->getParserInstance()Lorg/xmlpull/v1/XmlPullParser; -PLorg/xmlpull/v1/XmlPullParserFactory;->getSerializerInstance()Lorg/xmlpull/v1/XmlSerializer; +HPLorg/xmlpull/v1/XmlPullParserFactory;->getSerializerInstance()Lorg/xmlpull/v1/XmlSerializer; HSPLorg/xmlpull/v1/XmlPullParserFactory;->newInstance()Lorg/xmlpull/v1/XmlPullParserFactory; HSPLorg/xmlpull/v1/XmlPullParserFactory;->newPullParser()Lorg/xmlpull/v1/XmlPullParser; -PLorg/xmlpull/v1/XmlPullParserFactory;->newSerializer()Lorg/xmlpull/v1/XmlSerializer; +HPLorg/xmlpull/v1/XmlPullParserFactory;->newSerializer()Lorg/xmlpull/v1/XmlSerializer; HSPLsun/invoke/util/Wrapper;->forPrimitiveType(Ljava/lang/Class;)Lsun/invoke/util/Wrapper; HSPLsun/misc/ASCIICaseInsensitiveComparator;-><init>()V HSPLsun/misc/ASCIICaseInsensitiveComparator;->compare(Ljava/lang/Object;Ljava/lang/Object;)I @@ -29995,6 +31266,7 @@ HSPLsun/nio/ch/FileChannelImpl;->position()J HSPLsun/nio/ch/FileChannelImpl;->position(J)Ljava/nio/channels/FileChannel; HSPLsun/nio/ch/FileChannelImpl;->read(Ljava/nio/ByteBuffer;)I HSPLsun/nio/ch/FileChannelImpl;->size()J +HSPLsun/nio/ch/FileChannelImpl;->tryLock(JJZ)Ljava/nio/channels/FileLock; HSPLsun/nio/ch/FileChannelImpl;->write(Ljava/nio/ByteBuffer;)I HSPLsun/nio/ch/FileDispatcherImpl;-><init>()V HSPLsun/nio/ch/FileDispatcherImpl;->close(Ljava/io/FileDescriptor;)V @@ -30099,14 +31371,18 @@ HSPLsun/nio/fs/UnixException;->rethrowAsIOException(Lsun/nio/fs/UnixPath;)V HSPLsun/nio/fs/UnixException;->rethrowAsIOException(Lsun/nio/fs/UnixPath;Lsun/nio/fs/UnixPath;)V HSPLsun/nio/fs/UnixException;->translateToIOException(Ljava/lang/String;Ljava/lang/String;)Ljava/io/IOException; HSPLsun/nio/fs/UnixFileAttributeViews$Basic;->readAttributes()Ljava/nio/file/attribute/BasicFileAttributes; +HSPLsun/nio/fs/UnixFileAttributes$UnixAsBasicFileAttributes;->creationTime()Ljava/nio/file/attribute/FileTime; HSPLsun/nio/fs/UnixFileAttributes$UnixAsBasicFileAttributes;->isRegularFile()Z +HSPLsun/nio/fs/UnixFileAttributes$UnixAsBasicFileAttributes;->lastModifiedTime()Ljava/nio/file/attribute/FileTime; +HSPLsun/nio/fs/UnixFileAttributes;->creationTime()Ljava/nio/file/attribute/FileTime; HSPLsun/nio/fs/UnixFileAttributes;->isRegularFile()Z +HSPLsun/nio/fs/UnixFileAttributes;->lastModifiedTime()Ljava/nio/file/attribute/FileTime; HSPLsun/nio/fs/UnixFileModeAttribute;->toUnixMode(I[Ljava/nio/file/attribute/FileAttribute;)I PLsun/nio/fs/UnixFileSystem$3;->matches(Ljava/nio/file/Path;)Z HSPLsun/nio/fs/UnixFileSystem;-><init>(Lsun/nio/fs/UnixFileSystemProvider;Ljava/lang/String;)V -PLsun/nio/fs/UnixFileSystem;->compilePathMatchPattern(Ljava/lang/String;)Ljava/util/regex/Pattern; +HPLsun/nio/fs/UnixFileSystem;->compilePathMatchPattern(Ljava/lang/String;)Ljava/util/regex/Pattern; HSPLsun/nio/fs/UnixFileSystem;->getPath(Ljava/lang/String;[Ljava/lang/String;)Ljava/nio/file/Path; -PLsun/nio/fs/UnixFileSystem;->getPathMatcher(Ljava/lang/String;)Ljava/nio/file/PathMatcher; +HPLsun/nio/fs/UnixFileSystem;->getPathMatcher(Ljava/lang/String;)Ljava/nio/file/PathMatcher; HSPLsun/nio/fs/UnixFileSystem;->needToResolveAgainstDefaultDirectory()Z HSPLsun/nio/fs/UnixFileSystem;->normalizeJavaPath(Ljava/lang/String;)Ljava/lang/String; HSPLsun/nio/fs/UnixFileSystem;->normalizeNativePath([C)[C @@ -30126,8 +31402,8 @@ HSPLsun/nio/fs/UnixNativeDispatcher;->stat(Lsun/nio/fs/UnixPath;Lsun/nio/fs/Unix HSPLsun/nio/fs/UnixPath;->checkRead()V HSPLsun/nio/fs/UnixPath;->encode(Lsun/nio/fs/UnixFileSystem;Ljava/lang/String;)[B HSPLsun/nio/fs/UnixPath;->getByteArrayForSysCalls()[B -PLsun/nio/fs/UnixPath;->getFileName()Ljava/nio/file/Path; -PLsun/nio/fs/UnixPath;->getFileName()Lsun/nio/fs/UnixPath; +HPLsun/nio/fs/UnixPath;->getFileName()Ljava/nio/file/Path; +HPLsun/nio/fs/UnixPath;->getFileName()Lsun/nio/fs/UnixPath; HSPLsun/nio/fs/UnixPath;->getFileSystem()Ljava/nio/file/FileSystem; HSPLsun/nio/fs/UnixPath;->getFileSystem()Lsun/nio/fs/UnixFileSystem; HSPLsun/nio/fs/UnixPath;->getNameCount()I @@ -30229,7 +31505,7 @@ HSPLsun/security/provider/X509Factory;->getFromCache(Lsun/security/util/Cache;[B HSPLsun/security/provider/X509Factory;->intern(Ljava/security/cert/X509Certificate;)Lsun/security/x509/X509CertImpl; HSPLsun/security/provider/certpath/AdaptableX509CertSelector;->match(Ljava/security/cert/Certificate;)Z HSPLsun/security/provider/certpath/AdaptableX509CertSelector;->matchSubjectKeyID(Ljava/security/cert/X509Certificate;)Z -PLsun/security/provider/certpath/AdaptableX509CertSelector;->setValidityPeriod(Ljava/util/Date;Ljava/util/Date;)V +HPLsun/security/provider/certpath/AdaptableX509CertSelector;->setValidityPeriod(Ljava/util/Date;Ljava/util/Date;)V PLsun/security/provider/certpath/AdjacencyList;->buildList(Ljava/util/List;ILsun/security/provider/certpath/BuildStep;)Z HSPLsun/security/provider/certpath/AlgorithmChecker;-><init>(Ljava/security/cert/TrustAnchor;)V HSPLsun/security/provider/certpath/AlgorithmChecker;-><init>(Ljava/security/cert/TrustAnchor;Ljava/security/AlgorithmConstraints;)V @@ -30237,8 +31513,8 @@ HSPLsun/security/provider/certpath/AlgorithmChecker;->check(Ljava/security/Publi HSPLsun/security/provider/certpath/AlgorithmChecker;->check(Ljava/security/cert/Certificate;Ljava/util/Collection;)V HSPLsun/security/provider/certpath/AlgorithmChecker;->checkFingerprint(Ljava/security/cert/X509Certificate;)Z HSPLsun/security/provider/certpath/AlgorithmChecker;->init(Z)V -PLsun/security/provider/certpath/AlgorithmChecker;->isForwardCheckingSupported()Z -PLsun/security/provider/certpath/AlgorithmChecker;->trySetTrustAnchor(Ljava/security/cert/TrustAnchor;)V +HPLsun/security/provider/certpath/AlgorithmChecker;->isForwardCheckingSupported()Z +HPLsun/security/provider/certpath/AlgorithmChecker;->trySetTrustAnchor(Ljava/security/cert/TrustAnchor;)V HSPLsun/security/provider/certpath/BasicChecker;-><init>(Ljava/security/cert/TrustAnchor;Ljava/util/Date;Ljava/lang/String;Z)V HSPLsun/security/provider/certpath/BasicChecker;->check(Ljava/security/cert/Certificate;Ljava/util/Collection;)V HSPLsun/security/provider/certpath/BasicChecker;->init(Z)V @@ -30305,7 +31581,7 @@ HSPLsun/security/provider/certpath/PKIX$ValidatorParams;->initialPolicies()Ljava HSPLsun/security/provider/certpath/PKIX$ValidatorParams;->policyMappingInhibited()Z HSPLsun/security/provider/certpath/PKIX$ValidatorParams;->policyQualifiersRejected()Z HSPLsun/security/provider/certpath/PKIX$ValidatorParams;->revocationEnabled()Z -PLsun/security/provider/certpath/PKIX$ValidatorParams;->setCertPath(Ljava/security/cert/CertPath;)V +HPLsun/security/provider/certpath/PKIX$ValidatorParams;->setCertPath(Ljava/security/cert/CertPath;)V HSPLsun/security/provider/certpath/PKIX$ValidatorParams;->sigProvider()Ljava/lang/String; HSPLsun/security/provider/certpath/PKIX$ValidatorParams;->targetCertConstraints()Ljava/security/cert/CertSelector; HSPLsun/security/provider/certpath/PKIX$ValidatorParams;->trustAnchors()Ljava/util/Set; @@ -30320,7 +31596,7 @@ HSPLsun/security/provider/certpath/PolicyChecker;->check(Ljava/security/cert/Cer HSPLsun/security/provider/certpath/PolicyChecker;->checkPolicy(Ljava/security/cert/X509Certificate;)V HSPLsun/security/provider/certpath/PolicyChecker;->getPolicyTree()Ljava/security/cert/PolicyNode; HSPLsun/security/provider/certpath/PolicyChecker;->init(Z)V -PLsun/security/provider/certpath/PolicyChecker;->isForwardCheckingSupported()Z +HPLsun/security/provider/certpath/PolicyChecker;->isForwardCheckingSupported()Z HSPLsun/security/provider/certpath/PolicyChecker;->mergeExplicitPolicy(ILsun/security/x509/X509CertImpl;Z)I HSPLsun/security/provider/certpath/PolicyChecker;->mergeInhibitAnyPolicy(ILsun/security/x509/X509CertImpl;)I HSPLsun/security/provider/certpath/PolicyChecker;->mergePolicyMapping(ILsun/security/x509/X509CertImpl;)I @@ -30331,6 +31607,7 @@ HSPLsun/security/provider/certpath/PolicyNodeImpl;-><init>(Lsun/security/provide HSPLsun/security/provider/certpath/PolicyNodeImpl;-><init>(Lsun/security/provider/certpath/PolicyNodeImpl;Lsun/security/provider/certpath/PolicyNodeImpl;)V HSPLsun/security/provider/certpath/PolicyNodeImpl;->copyTree()Lsun/security/provider/certpath/PolicyNodeImpl; HSPLsun/security/provider/certpath/PolicyNodeImpl;->getChildren()Ljava/util/Iterator; +HSPLsun/security/provider/certpath/PolicyNodeImpl;->getPolicyNodes(I)Ljava/util/Set; HSPLsun/security/provider/certpath/PolicyNodeImpl;->getPolicyNodesExpectedHelper(ILjava/lang/String;Z)Ljava/util/Set; HSPLsun/security/provider/certpath/PolicyNodeImpl;->prune(I)V HSPLsun/security/provider/certpath/RevocationChecker$1;->run()Lsun/security/provider/certpath/RevocationChecker$RevocationProperties; @@ -30510,6 +31787,7 @@ HSPLsun/security/x509/AVA;->derEncode(Ljava/io/OutputStream;)V HSPLsun/security/x509/AVA;->isDerString(Lsun/security/util/DerValue;Z)Z HSPLsun/security/x509/AVA;->parseString(Ljava/io/Reader;IILjava/lang/StringBuilder;)Lsun/security/util/DerValue; HSPLsun/security/x509/AVA;->toRFC2253CanonicalString()Ljava/lang/String; +HSPLsun/security/x509/AVA;->toRFC2253String(Ljava/util/Map;)Ljava/lang/String; HSPLsun/security/x509/AVAKeyword;-><init>(Ljava/lang/String;Lsun/security/util/ObjectIdentifier;ZZ)V HSPLsun/security/x509/AVAKeyword;->getKeyword(Lsun/security/util/ObjectIdentifier;ILjava/util/Map;)Ljava/lang/String; HSPLsun/security/x509/AVAKeyword;->getOID(Ljava/lang/String;ILjava/util/Map;)Lsun/security/util/ObjectIdentifier; @@ -30549,7 +31827,7 @@ HSPLsun/security/x509/CertificatePoliciesExtension;->getName()Ljava/lang/String; HSPLsun/security/x509/CertificatePolicyId;->getIdentifier()Lsun/security/util/ObjectIdentifier; HSPLsun/security/x509/CertificateSerialNumber;->get(Ljava/lang/String;)Lsun/security/x509/SerialNumber; HSPLsun/security/x509/CertificateValidity;->construct(Lsun/security/util/DerValue;)V -PLsun/security/x509/CertificateValidity;->get(Ljava/lang/String;)Ljava/util/Date; +HPLsun/security/x509/CertificateValidity;->get(Ljava/lang/String;)Ljava/util/Date; HSPLsun/security/x509/CertificateVersion;->compare(I)I HSPLsun/security/x509/CertificateVersion;->construct(Lsun/security/util/DerValue;)V HSPLsun/security/x509/CertificateX509Key;->get(Ljava/lang/String;)Ljava/security/PublicKey; @@ -30577,6 +31855,7 @@ HSPLsun/security/x509/PolicyInformation;->getPolicyQualifiers()Ljava/util/Set; HSPLsun/security/x509/RDN;-><init>(Ljava/lang/String;Ljava/util/Map;)V HSPLsun/security/x509/RDN;-><init>(Lsun/security/util/DerValue;)V HSPLsun/security/x509/RDN;->encode(Lsun/security/util/DerOutputStream;)V +HSPLsun/security/x509/RDN;->toRFC2253String(Ljava/util/Map;)Ljava/lang/String; HSPLsun/security/x509/RDN;->toRFC2253String(Z)Ljava/lang/String; HSPLsun/security/x509/RDN;->toRFC2253StringInternal(ZLjava/util/Map;)Ljava/lang/String; HSPLsun/security/x509/SerialNumber;->getNumber()Ljava/math/BigInteger; @@ -30595,9 +31874,12 @@ HSPLsun/security/x509/X500Name;->checkNoNewLinesNorTabsAtBeginningOfDN(Ljava/lan HSPLsun/security/x509/X500Name;->countQuotes(Ljava/lang/String;II)I HSPLsun/security/x509/X500Name;->equals(Ljava/lang/Object;)Z HSPLsun/security/x509/X500Name;->escaped(IILjava/lang/String;)Z +HSPLsun/security/x509/X500Name;->generateRFC2253DN(Ljava/util/Map;)Ljava/lang/String; HSPLsun/security/x509/X500Name;->getEncoded()[B HSPLsun/security/x509/X500Name;->getEncodedInternal()[B HSPLsun/security/x509/X500Name;->getRFC2253CanonicalName()Ljava/lang/String; +HSPLsun/security/x509/X500Name;->getRFC2253Name()Ljava/lang/String; +HSPLsun/security/x509/X500Name;->getRFC2253Name(Ljava/util/Map;)Ljava/lang/String; HSPLsun/security/x509/X500Name;->hashCode()I HSPLsun/security/x509/X500Name;->intern(Lsun/security/util/ObjectIdentifier;)Lsun/security/util/ObjectIdentifier; HSPLsun/security/x509/X500Name;->isEmpty()Z @@ -30612,18 +31894,18 @@ HSPLsun/security/x509/X509CertImpl;->getEncodedInternal()[B HSPLsun/security/x509/X509CertImpl;->getExtension(Lsun/security/util/ObjectIdentifier;)Lsun/security/x509/Extension; HSPLsun/security/x509/X509CertImpl;->getIssuerX500Principal()Ljavax/security/auth/x500/X500Principal; HSPLsun/security/x509/X509CertImpl;->getNameConstraintsExtension()Lsun/security/x509/NameConstraintsExtension; -PLsun/security/x509/X509CertImpl;->getNotAfter()Ljava/util/Date; -PLsun/security/x509/X509CertImpl;->getNotBefore()Ljava/util/Date; +HPLsun/security/x509/X509CertImpl;->getNotAfter()Ljava/util/Date; +HPLsun/security/x509/X509CertImpl;->getNotBefore()Ljava/util/Date; HSPLsun/security/x509/X509CertImpl;->getPolicyConstraintsExtension()Lsun/security/x509/PolicyConstraintsExtension; HSPLsun/security/x509/X509CertImpl;->getPolicyMappingsExtension()Lsun/security/x509/PolicyMappingsExtension; HSPLsun/security/x509/X509CertImpl;->getPublicKey()Ljava/security/PublicKey; HSPLsun/security/x509/X509CertImpl;->getSerialNumberObject()Lsun/security/x509/SerialNumber; HSPLsun/security/x509/X509CertImpl;->getSigAlgName()Ljava/lang/String; -PLsun/security/x509/X509CertImpl;->getSubjectAlternativeNameExtension()Lsun/security/x509/SubjectAlternativeNameExtension; +HPLsun/security/x509/X509CertImpl;->getSubjectAlternativeNameExtension()Lsun/security/x509/SubjectAlternativeNameExtension; HSPLsun/security/x509/X509CertImpl;->getSubjectKeyId()Lsun/security/x509/KeyIdentifier; HSPLsun/security/x509/X509CertImpl;->getSubjectKeyIdentifierExtension()Lsun/security/x509/SubjectKeyIdentifierExtension; HSPLsun/security/x509/X509CertImpl;->getSubjectX500Principal()Ljavax/security/auth/x500/X500Principal; -PLsun/security/x509/X509CertImpl;->isSelfSigned(Ljava/security/cert/X509Certificate;Ljava/lang/String;)Z +HPLsun/security/x509/X509CertImpl;->isSelfSigned(Ljava/security/cert/X509Certificate;Ljava/lang/String;)Z HSPLsun/security/x509/X509CertImpl;->parse(Lsun/security/util/DerValue;[B)V HSPLsun/security/x509/X509CertImpl;->verify(Ljava/security/PublicKey;)V HSPLsun/security/x509/X509CertImpl;->verify(Ljava/security/PublicKey;Ljava/lang/String;)V @@ -39438,3 +40720,3048 @@ Lsun/util/logging/PlatformLogger$1; Lsun/util/logging/PlatformLogger$Level; Lsun/util/logging/PlatformLogger$LoggerProxy; Lsun/util/logging/PlatformLogger; +HSPLandroid/accounts/AccountManager$18;->run()V +HSPLandroid/accounts/AccountManager$BaseFutureTask$1;-><init>(Landroid/accounts/AccountManager;)V +HSPLandroid/accounts/AccountManager$BaseFutureTask$Response;-><init>(Landroid/accounts/AccountManager$BaseFutureTask;)V +HSPLandroid/accounts/AccountManager$BaseFutureTask;-><init>(Landroid/accounts/AccountManager;Landroid/os/Handler;)V +HSPLandroid/accounts/AccountManager$Future2Task;->getResult(JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object; +HSPLandroid/accounts/AccountManager$Future2Task;-><init>(Landroid/accounts/AccountManager;Landroid/os/Handler;Landroid/accounts/AccountManagerCallback;)V +HSPLandroid/accounts/AccountManager$Future2Task;->start()Landroid/accounts/AccountManager$Future2Task; +HSPLandroid/accounts/AccountManager;->access$000(Landroid/accounts/AccountManager;)Landroid/accounts/IAccountManager; +HSPLandroid/accounts/AccountManager;->access$100(Landroid/accounts/AccountManager;)Landroid/content/Context; +HSPLandroid/accounts/AccountManager;->access$200(Landroid/accounts/AccountManager;)Ljava/util/HashMap; +HSPLandroid/accounts/AccountManager;->access$300(Landroid/accounts/AccountManager;)Ljava/util/HashMap; +HSPLandroid/accounts/AccountManager;->getAccountsByTypeAndFeatures(Ljava/lang/String;[Ljava/lang/String;Landroid/accounts/AccountManagerCallback;Landroid/os/Handler;)Landroid/accounts/AccountManagerFuture; +HSPLandroid/accounts/AccountManager;->getAccountsByTypeForPackage(Ljava/lang/String;Ljava/lang/String;)[Landroid/accounts/Account; +HSPLandroid/accounts/AccountManager;->getPassword(Landroid/accounts/Account;)Ljava/lang/String; +HSPLandroid/accounts/AccountManager;->getUserData(Landroid/accounts/Account;Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/accounts/AccountManager;->peekAuthToken(Landroid/accounts/Account;Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/accounts/IAccountManager$Stub$Proxy;->getAccountsByFeatures(Landroid/accounts/IAccountManagerResponse;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/accounts/IAccountManager$Stub$Proxy;->getAccountsByTypeForPackage(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)[Landroid/accounts/Account; +HSPLandroid/accounts/IAccountManager$Stub$Proxy;->getPassword(Landroid/accounts/Account;)Ljava/lang/String; +HSPLandroid/accounts/IAccountManager$Stub$Proxy;->getUserData(Landroid/accounts/Account;Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/accounts/IAccountManager$Stub$Proxy;->peekAuthToken(Landroid/accounts/Account;Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/accounts/IAccountManagerResponse$Stub;-><init>()V +HSPLandroid/animation/Animator;->isPaused()Z +HSPLandroid/animation/AnimatorSet$SeekState;->getPlayTime()J +HSPLandroid/animation/AnimatorSet$SeekState;->setPlayTime(JZ)V +HSPLandroid/animation/AnimatorSet$SeekState;->updateSeekDirection(Z)V +HSPLandroid/animation/AnimatorSet;->access$200(Landroid/animation/AnimatorSet;)J +HSPLandroid/animation/AnimatorSet;->setCurrentPlayTime(J)V +HSPLandroid/animation/ObjectAnimator;->setAutoCancel(Z)V +HSPLandroid/animation/PropertyValuesHolder$IntPropertyValuesHolder;-><init>(Ljava/lang/String;[I)V +HSPLandroid/animation/PropertyValuesHolder;->ofInt(Ljava/lang/String;[I)Landroid/animation/PropertyValuesHolder; +HSPLandroid/animation/RectEvaluator;-><init>(Landroid/graphics/Rect;)V +HSPLandroid/app/Activity;->attach(Landroid/content/Context;Landroid/app/ActivityThread;Landroid/app/Instrumentation;Landroid/os/IBinder;ILandroid/app/Application;Landroid/content/Intent;Landroid/content/pm/ActivityInfo;Ljava/lang/CharSequence;Landroid/app/Activity;Ljava/lang/String;Landroid/app/Activity$NonConfigurationInstances;Landroid/content/res/Configuration;Ljava/lang/String;Lcom/android/internal/app/IVoiceInteractor;Landroid/view/Window;Landroid/view/ViewRootImpl$ActivityConfigCallback;Landroid/os/IBinder;)V +HSPLandroid/app/ActivityManager$RunningServiceInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/ActivityManager$RunningServiceInfo; +HSPLandroid/app/ActivityManager$RunningServiceInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/app/ActivityManager$RunningServiceInfo;-><init>(Landroid/os/Parcel;Landroid/app/ActivityManager$1;)V +HSPLandroid/app/ActivityManager$RunningServiceInfo;-><init>(Landroid/os/Parcel;)V +HSPLandroid/app/ActivityManager$RunningServiceInfo;->readFromParcel(Landroid/os/Parcel;)V +HSPLandroid/app/ActivityManager$StackInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/ActivityManager$StackInfo; +HSPLandroid/app/ActivityManager$StackInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/app/ActivityManager$StackInfo;-><init>(Landroid/os/Parcel;Landroid/app/ActivityManager$1;)V +HSPLandroid/app/ActivityManager$StackInfo;-><init>(Landroid/os/Parcel;)V +HSPLandroid/app/ActivityManager$StackInfo;->readFromParcel(Landroid/os/Parcel;)V +HSPLandroid/app/ActivityManager$TaskDescription;->setEnsureNavigationBarContrastWhenTransparent(Z)V +HSPLandroid/app/ActivityManager$TaskDescription;->setEnsureStatusBarContrastWhenTransparent(Z)V +HSPLandroid/app/ActivityManager;->getDeviceConfigurationInfo()Landroid/content/pm/ConfigurationInfo; +HSPLandroid/app/ActivityManager;->getLockTaskModeState()I +HSPLandroid/app/ActivityManager;->getRunningServices(I)Ljava/util/List; +HSPLandroid/app/ActivityManager;->getRunningTasks(I)Ljava/util/List; +HSPLandroid/app/ActivityManager;->getTaskService()Landroid/app/IActivityTaskManager; +HSPLandroid/app/Activity;->registerRemoteAnimations(Landroid/view/RemoteAnimationDefinition;)V +HSPLandroid/app/Activity;->setContentView(Landroid/view/View;)V +HSPLandroid/app/Activity;->setDefaultKeyMode(I)V +HSPLandroid/app/Activity;->setRequestedOrientation(I)V +HSPLandroid/app/ActivityThread$ActivityClientRecord;-><init>(Landroid/os/IBinder;Landroid/content/Intent;ILandroid/content/pm/ActivityInfo;Landroid/content/res/Configuration;Landroid/content/res/CompatibilityInfo;Ljava/lang/String;Lcom/android/internal/app/IVoiceInteractor;Landroid/os/Bundle;Landroid/os/PersistableBundle;Ljava/util/List;Ljava/util/List;ZLandroid/app/ProfilerInfo;Landroid/app/ClientTransactionHandler;Landroid/os/IBinder;)V +HSPLandroid/app/ActivityThread$ActivityClientRecord;->isPersistable()Z +HSPLandroid/app/ActivityThread;->applyPendingProcessState()V +HSPLandroid/app/ActivityThread;->countLaunchingActivities(I)V +HSPLandroid/app/ActivityThread;->getHandler()Landroid/os/Handler; +HSPLandroid/app/ActivityThread;->isLoadedApkResourceDirsUpToDate(Landroid/app/LoadedApk;Landroid/content/pm/ApplicationInfo;)Z +HSPLandroid/app/ActivityThread;->lambda$attach$1$ActivityThread(Landroid/content/res/Configuration;)V +HSPLandroid/app/ActivityThread;->relaunchAllActivities(Z)V +HSPLandroid/app/ActivityTransitionState;->startExitOutTransition(Landroid/app/Activity;Landroid/os/Bundle;)V +HSPLandroid/app/admin/DevicePolicyManager;->getCameraDisabled(Landroid/content/ComponentName;I)Z +HSPLandroid/app/admin/DevicePolicyManager;->getDeviceOwnerComponentOnCallingUser()Landroid/content/ComponentName; +HSPLandroid/app/admin/DevicePolicyManager;->getDeviceOwner()Ljava/lang/String; +HSPLandroid/app/admin/DevicePolicyManager;->getDeviceOwnerOrganizationName()Ljava/lang/CharSequence; +HSPLandroid/app/admin/DevicePolicyManager;->getKeyguardDisabledFeatures(Landroid/content/ComponentName;)I +HSPLandroid/app/admin/DevicePolicyManager;->getProfileOwner()Landroid/content/ComponentName; +HSPLandroid/app/admin/DevicePolicyManager;->getSystemUpdatePolicy()Landroid/app/admin/SystemUpdatePolicy; +HSPLandroid/app/admin/DevicePolicyManager;->isAdminActiveAsUser(Landroid/content/ComponentName;I)Z +HSPLandroid/app/admin/DevicePolicyManager;->isAdminActive(Landroid/content/ComponentName;)Z +HSPLandroid/app/admin/DevicePolicyManager;->isLogoutEnabled()Z +HSPLandroid/app/admin/DevicePolicyManager;->isNetworkLoggingEnabled(Landroid/content/ComponentName;)Z +HSPLandroid/app/admin/DevicePolicyManager;->throwIfParentInstance(Ljava/lang/String;)V +HSPLandroid/app/admin/IDevicePolicyManager$Stub$Proxy;->getCameraDisabled(Landroid/content/ComponentName;I)Z +HSPLandroid/app/admin/IDevicePolicyManager$Stub$Proxy;->getDeviceOwnerOrganizationName()Ljava/lang/CharSequence; +HSPLandroid/app/admin/IDevicePolicyManager$Stub$Proxy;->getProfileOwner(I)Landroid/content/ComponentName; +HSPLandroid/app/admin/IDevicePolicyManager$Stub$Proxy;->getSystemUpdatePolicy()Landroid/app/admin/SystemUpdatePolicy; +HSPLandroid/app/admin/IDevicePolicyManager$Stub$Proxy;->isAdminActive(Landroid/content/ComponentName;I)Z +HSPLandroid/app/admin/IDevicePolicyManager$Stub$Proxy;->isLogoutEnabled()Z +HSPLandroid/app/admin/IDevicePolicyManager$Stub$Proxy;->isNetworkLoggingEnabled(Landroid/content/ComponentName;Ljava/lang/String;)Z +HSPLandroid/app/AlarmManager;->set(IJJJLandroid/app/AlarmManager$OnAlarmListener;Landroid/os/Handler;Landroid/os/WorkSource;)V +HSPLandroid/app/AlarmManager;->set(IJJJLandroid/app/PendingIntent;Landroid/os/WorkSource;)V +HSPLandroid/app/AlarmManager;->setWindow(IJJLandroid/app/PendingIntent;)V +HSPLandroid/app/Application;->getProcessName()Ljava/lang/String; +HSPLandroid/app/ApplicationLoaders;->getCachedNonBootclasspathSystemLib(Ljava/lang/String;Ljava/lang/ClassLoader;Ljava/lang/String;Ljava/util/List;)Ljava/lang/ClassLoader; +HSPLandroid/app/ApplicationLoaders;->getSharedLibraryClassLoaderWithSharedLibraries(Ljava/lang/String;IZLjava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;Ljava/lang/String;Ljava/util/List;)Ljava/lang/ClassLoader; +HSPLandroid/app/ApplicationLoaders;->sharedLibrariesEquals(Ljava/util/List;Ljava/util/List;)Z +HSPLandroid/app/ApplicationPackageManager;->getSharedSystemSharedLibraryPackageName()Ljava/lang/String; +HSPLandroid/app/ApplicationPackageManager;->getSystemAvailableFeatures()[Landroid/content/pm/FeatureInfo; +HSPLandroid/app/ApplicationPackageManager;->getUserBadgedLabel(Ljava/lang/CharSequence;Landroid/os/UserHandle;)Ljava/lang/CharSequence; +HSPLandroid/app/ApplicationPackageManager;->isManagedProfile(I)Z +HSPLandroid/app/ApplicationPackageManager;->isSafeMode()Z +HSPLandroid/app/ApplicationPackageManager;->registerMoveCallback(Landroid/content/pm/PackageManager$MoveCallback;Landroid/os/Handler;)V +HSPLandroid/app/AppOpsManager$2;-><init>(Landroid/app/AppOpsManager;Landroid/app/AppOpsManager$OnOpActiveChangedListener;)V +HSPLandroid/app/AppOpsManager$OpEntry$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/AppOpsManager$OpEntry; +HSPLandroid/app/AppOpsManager$OpEntry$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/app/AppOpsManager$OpEntry;-><init>(Landroid/os/Parcel;)V +HSPLandroid/app/AppOpsManager$PackageOps$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/AppOpsManager$PackageOps; +HSPLandroid/app/AppOpsManager$PackageOps$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/app/AppOpsManager$PackageOps;-><init>(Landroid/os/Parcel;)V +HSPLandroid/app/AppOpsManager;->access$800(Landroid/os/Parcel;)Landroid/util/LongSparseLongArray; +HSPLandroid/app/AppOpsManager;->access$900(Landroid/os/Parcel;)Landroid/util/LongSparseArray; +HSPLandroid/app/AppOpsManager;->checkOpNoThrow(Ljava/lang/String;ILjava/lang/String;)I +HSPLandroid/app/AppOpsManager;->finishOp(Ljava/lang/String;ILjava/lang/String;)V +HSPLandroid/app/AppOpsManager;->noteProxyOpNoThrow(Ljava/lang/String;Ljava/lang/String;)I +HSPLandroid/app/AppOpsManager;->readLongSparseLongArrayFromParcel(Landroid/os/Parcel;)Landroid/util/LongSparseLongArray; +HSPLandroid/app/AppOpsManager;->readLongSparseStringArrayFromParcel(Landroid/os/Parcel;)Landroid/util/LongSparseArray; +HSPLandroid/app/AppOpsManager;->startOpNoThrow(Ljava/lang/String;ILjava/lang/String;)I +HSPLandroid/app/AppOpsManager;->startWatchingActive([ILandroid/app/AppOpsManager$OnOpActiveChangedListener;)V +HSPLandroid/app/AppOpsManager;->startWatchingMode(Ljava/lang/String;Ljava/lang/String;ILandroid/app/AppOpsManager$OnOpChangedListener;)V +HSPLandroid/app/AppOpsManager;->startWatchingMode(Ljava/lang/String;Ljava/lang/String;Landroid/app/AppOpsManager$OnOpChangedListener;)V +HSPLandroid/app/AppOpsManager;->startWatchingNoted([ILandroid/app/AppOpsManager$OnOpNotedListener;)V +HSPLandroid/app/AppOpsManager;->unsafeCheckOpRaw(Ljava/lang/String;ILjava/lang/String;)I +HSPLandroid/app/BackStackRecord;->replace(ILandroid/app/Fragment;Ljava/lang/String;)Landroid/app/FragmentTransaction; +HSPLandroid/app/backup/BackupManager;->checkServiceBinder()V +HSPLandroid/app/backup/BackupManager;->getCurrentTransport()Ljava/lang/String; +HSPLandroid/app/backup/BackupManager;->updateTransportAttributes(Landroid/content/ComponentName;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/CharSequence;)V +HSPLandroid/app/backup/BackupManager;->updateTransportAttributes(Landroid/content/ComponentName;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;)V +HSPLandroid/app/backup/BackupTransport$TransportImpl;->configurationIntent()Landroid/content/Intent; +HSPLandroid/app/backup/BackupTransport$TransportImpl;->currentDestinationString()Ljava/lang/String; +HSPLandroid/app/backup/BackupTransport$TransportImpl;->dataManagementIntentLabel()Ljava/lang/CharSequence; +HSPLandroid/app/backup/BackupTransport$TransportImpl;->dataManagementIntent()Landroid/content/Intent; +HSPLandroid/app/backup/BackupTransport$TransportImpl;-><init>(Landroid/app/backup/BackupTransport;)V +HSPLandroid/app/backup/BackupTransport$TransportImpl;->name()Ljava/lang/String; +HSPLandroid/app/backup/BackupTransport$TransportImpl;->transportDirName()Ljava/lang/String; +HSPLandroid/app/backup/BackupTransport;->configurationIntent()Landroid/content/Intent; +HSPLandroid/app/backup/BackupTransport;->dataManagementIntentLabel()Ljava/lang/CharSequence; +HSPLandroid/app/backup/BackupTransport;->dataManagementIntent()Landroid/content/Intent; +HSPLandroid/app/backup/BackupTransport;->getBinder()Landroid/os/IBinder; +HSPLandroid/app/backup/BackupTransport;-><init>()V +HSPLandroid/app/backup/IBackupManager$Stub$Proxy;->getCurrentTransport()Ljava/lang/String; +HSPLandroid/app/backup/IBackupManager$Stub$Proxy;->updateTransportAttributesForUser(ILandroid/content/ComponentName;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/CharSequence;)V +HSPLandroid/app/ContextImpl$1;->accept(Ljava/io/File;Ljava/lang/String;)Z +HSPLandroid/app/ContextImpl$1;-><init>(Ljava/lang/String;)V +HSPLandroid/app/ContextImpl;->createResources(Landroid/os/IBinder;Landroid/app/LoadedApk;Ljava/lang/String;ILandroid/content/res/Configuration;Landroid/content/res/CompatibilityInfo;)Landroid/content/res/Resources; +HSPLandroid/app/ContextImpl;->databaseList()[Ljava/lang/String; +HSPLandroid/app/ContextImpl;->deleteDatabase(Ljava/lang/String;)Z +HSPLandroid/app/ContextImpl;->deleteFile(Ljava/lang/String;)Z +HSPLandroid/app/ContextImpl;->getOuterContext()Landroid/content/Context; +HSPLandroid/app/ContextImpl;->moveFiles(Ljava/io/File;Ljava/io/File;Ljava/lang/String;)I +HSPLandroid/app/ContextImpl;->moveSharedPreferencesFrom(Landroid/content/Context;Ljava/lang/String;)Z +HSPLandroid/app/ContextImpl;->openOrCreateDatabase(Ljava/lang/String;ILandroid/database/sqlite/SQLiteDatabase$CursorFactory;Landroid/database/DatabaseErrorHandler;)Landroid/database/sqlite/SQLiteDatabase; +HSPLandroid/app/ContextImpl;->openOrCreateDatabase(Ljava/lang/String;ILandroid/database/sqlite/SQLiteDatabase$CursorFactory;)Landroid/database/sqlite/SQLiteDatabase; +HSPLandroid/app/ContextImpl;->updateDisplay(I)V +HSPLandroid/app/Dialog;->getLayoutInflater()Landroid/view/LayoutInflater; +HSPLandroid/app/Dialog;->setContentView(I)V +HSPLandroid/app/Dialog;->setOnShowListener(Landroid/content/DialogInterface$OnShowListener;)V +HSPLandroid/app/DownloadManager;->query(Landroid/app/DownloadManager$Query;)Landroid/database/Cursor; +HSPLandroid/app/DownloadManager;->query(Landroid/app/DownloadManager$Query;[Ljava/lang/String;)Landroid/database/Cursor; +HSPLandroid/app/FragmentManagerImpl;->registerFragmentLifecycleCallbacks(Landroid/app/FragmentManager$FragmentLifecycleCallbacks;Z)V +HSPLandroid/app/IActivityManager$Stub$Proxy;->getPackageProcessState(Ljava/lang/String;Ljava/lang/String;)I +HSPLandroid/app/IActivityManager$Stub$Proxy;->getServices(II)Ljava/util/List; +HSPLandroid/app/IActivityManager$Stub$Proxy;->getTasks(I)Ljava/util/List; +HSPLandroid/app/IActivityManager$Stub$Proxy;->getUidForIntentSender(Landroid/content/IIntentSender;)I +HSPLandroid/app/IActivityManager$Stub$Proxy;->isUserRunning(II)Z +HSPLandroid/app/IActivityManager$Stub$Proxy;->registerIntentSenderCancelListener(Landroid/content/IIntentSender;Lcom/android/internal/os/IResultReceiver;)V +HSPLandroid/app/IActivityManager$Stub$Proxy;->registerProcessObserver(Landroid/app/IProcessObserver;)V +HSPLandroid/app/IActivityManager$Stub$Proxy;->registerTaskStackListener(Landroid/app/ITaskStackListener;)V +HSPLandroid/app/IActivityManager$Stub$Proxy;->registerUidObserver(Landroid/app/IUidObserver;IILjava/lang/String;)V +HSPLandroid/app/IActivityManager$Stub$Proxy;->setHasTopUi(Z)V +HSPLandroid/app/IActivityManager$Stub$Proxy;->unregisterIntentSenderCancelListener(Landroid/content/IIntentSender;Lcom/android/internal/os/IResultReceiver;)V +HSPLandroid/app/IActivityTaskManager$Stub$Proxy;->getDeviceConfigurationInfo()Landroid/content/pm/ConfigurationInfo; +HSPLandroid/app/IActivityTaskManager$Stub$Proxy;->getFilteredTasks(III)Ljava/util/List; +HSPLandroid/app/IActivityTaskManager$Stub$Proxy;->getFocusedStackInfo()Landroid/app/ActivityManager$StackInfo; +HSPLandroid/app/IActivityTaskManager$Stub$Proxy;->getLastResumedActivityUserId()I +HSPLandroid/app/IActivityTaskManager$Stub$Proxy;->getLockTaskModeState()I +HSPLandroid/app/IActivityTaskManager$Stub$Proxy;->getRecentTasks(III)Landroid/content/pm/ParceledListSlice; +HSPLandroid/app/IActivityTaskManager$Stub$Proxy;->getStackInfo(II)Landroid/app/ActivityManager$StackInfo; +HSPLandroid/app/IActivityTaskManager$Stub$Proxy;->getTasks(I)Ljava/util/List; +HSPLandroid/app/IActivityTaskManager$Stub$Proxy;->getTaskSnapshot(IZ)Landroid/app/ActivityManager$TaskSnapshot; +HSPLandroid/app/IActivityTaskManager$Stub$Proxy;->keyguardGoingAway(I)V +HSPLandroid/app/IActivityTaskManager$Stub$Proxy;->registerRemoteAnimations(Landroid/os/IBinder;Landroid/view/RemoteAnimationDefinition;)V +HSPLandroid/app/IActivityTaskManager$Stub$Proxy;->registerTaskStackListener(Landroid/app/ITaskStackListener;)V +HSPLandroid/app/IActivityTaskManager$Stub$Proxy;->setLockScreenShown(ZZ)V +HSPLandroid/app/IActivityTaskManager$Stub$Proxy;->setRequestedOrientation(Landroid/os/IBinder;I)V +HSPLandroid/app/IAlarmManager$Stub$Proxy;->getNextAlarmClock(I)Landroid/app/AlarmManager$AlarmClockInfo; +HSPLandroid/app/INotificationManager$Stub$Proxy;->cancelAllNotifications(Ljava/lang/String;I)V +HSPLandroid/app/INotificationManager$Stub$Proxy;->createNotificationChannelGroups(Ljava/lang/String;Landroid/content/pm/ParceledListSlice;)V +HSPLandroid/app/INotificationManager$Stub$Proxy;->getConsolidatedNotificationPolicy()Landroid/app/NotificationManager$Policy; +HSPLandroid/app/INotificationManager$Stub$Proxy;->getEffectsSuppressor()Landroid/content/ComponentName; +HSPLandroid/app/INotificationManager$Stub$Proxy;->getZenModeConfig()Landroid/service/notification/ZenModeConfig; +HSPLandroid/app/INotificationManager$Stub$Proxy;->registerListener(Landroid/service/notification/INotificationListener;Landroid/content/ComponentName;I)V +HSPLandroid/app/INotificationManager$Stub$Proxy;->requestBindListener(Landroid/content/ComponentName;)V +HSPLandroid/app/INotificationManager$Stub$Proxy;->setNotificationsShownFromListener(Landroid/service/notification/INotificationListener;[Ljava/lang/String;)V +HSPLandroid/app/INotificationManager$Stub$Proxy;->setPrivateNotificationsAllowed(Z)V +HSPLandroid/app/INotificationManager$Stub$Proxy;->shouldHideSilentStatusIcons(Ljava/lang/String;)Z +HSPLandroid/app/IProcessObserver$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/app/IProcessObserver$Stub;-><init>()V +HSPLandroid/app/IProcessObserver$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLandroid/app/ITaskStackListener$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/app/ITaskStackListener$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLandroid/app/IUidObserver$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLandroid/app/IWallpaperManager$Stub$Proxy;->getHeightHint(I)I +HSPLandroid/app/IWallpaperManager$Stub$Proxy;->getWallpaperInfo(I)Landroid/app/WallpaperInfo; +HSPLandroid/app/IWallpaperManager$Stub$Proxy;->getWallpaper(Ljava/lang/String;Landroid/app/IWallpaperManagerCallback;ILandroid/os/Bundle;I)Landroid/os/ParcelFileDescriptor; +HSPLandroid/app/IWallpaperManager$Stub$Proxy;->getWidthHint(I)I +HSPLandroid/app/IWallpaperManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V +HSPLandroid/app/IWallpaperManager$Stub$Proxy;->isWallpaperSupported(Ljava/lang/String;)Z +HSPLandroid/app/IWallpaperManager$Stub$Proxy;->registerWallpaperColorsCallback(Landroid/app/IWallpaperManagerCallback;II)V +HSPLandroid/app/IWallpaperManager$Stub$Proxy;->setInAmbientMode(ZJ)V +HSPLandroid/app/IWallpaperManager$Stub$Proxy;->setLockWallpaperCallback(Landroid/app/IWallpaperManagerCallback;)Z +HSPLandroid/app/IWallpaperManager$Stub$Proxy;->unregisterWallpaperColorsCallback(Landroid/app/IWallpaperManagerCallback;II)V +HSPLandroid/app/IWallpaperManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/IWallpaperManager; +HSPLandroid/app/IWallpaperManagerCallback$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/app/IWallpaperManagerCallback$Stub;-><init>()V +HSPLandroid/app/IWallpaperManagerCallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLandroid/app/job/IJobScheduler$Stub$Proxy;->scheduleAsPackage(Landroid/app/job/JobInfo;Ljava/lang/String;ILjava/lang/String;)I +HSPLandroid/app/job/JobInfo$Builder;->setRequiresBatteryNotLow(Z)Landroid/app/job/JobInfo$Builder; +HSPLandroid/app/job/JobInfo;->getNetworkType()I +HSPLandroid/app/job/JobInfo;->isRequireCharging()Z +HSPLandroid/app/job/JobInfo;->isRequireDeviceIdle()Z +HSPLandroid/app/KeyguardManager;->setPrivateNotificationsAllowed(Z)V +HSPLandroid/app/LoadedApk;->getApplicationInfo()Landroid/content/pm/ApplicationInfo; +HSPLandroid/app/LoadedApk;->getOverlayDirs()[Ljava/lang/String; +HSPLandroid/app/LoadedApk;->getResDir()Ljava/lang/String; +HSPLandroid/app/LoadedApk;->getSplitClassLoader(Ljava/lang/String;)Ljava/lang/ClassLoader; +HSPLandroid/app/LoadedApk;->getSplitPaths(Ljava/lang/String;)[Ljava/lang/String; +HSPLandroid/app/Notification$Action;->access$1900(Landroid/app/Notification$Action;)[Landroid/app/RemoteInput; +HSPLandroid/app/Notification$Builder;->access$2500(Landroid/app/Notification$Builder;Ljava/lang/CharSequence;)Ljava/lang/CharSequence; +HSPLandroid/app/Notification$Builder;->access$300(Landroid/app/Notification$Builder;)Landroid/app/Notification; +HSPLandroid/app/Notification$Builder;->applyStandardTemplate(ILandroid/app/Notification$StandardTemplateParams;Landroid/app/Notification$TemplateBindResult;)Landroid/widget/RemoteViews; +HSPLandroid/app/Notification$Builder;->applyStandardTemplate(ILandroid/app/Notification$TemplateBindResult;)Landroid/widget/RemoteViews; +HSPLandroid/app/Notification$Builder;->applyStandardTemplateWithActions(ILandroid/app/Notification$StandardTemplateParams;Landroid/app/Notification$TemplateBindResult;)Landroid/widget/RemoteViews; +HSPLandroid/app/Notification$Builder;->applyStandardTemplateWithActions(ILandroid/app/Notification$TemplateBindResult;)Landroid/widget/RemoteViews; +HSPLandroid/app/Notification$Builder;->bindActivePermissions(Landroid/widget/RemoteViews;Landroid/app/Notification$StandardTemplateParams;)V +HSPLandroid/app/Notification$Builder;->bindAlertedIcon(Landroid/widget/RemoteViews;Landroid/app/Notification$StandardTemplateParams;)V +HSPLandroid/app/Notification$Builder;->bindExpandButton(Landroid/widget/RemoteViews;Landroid/app/Notification$StandardTemplateParams;)V +HSPLandroid/app/Notification$Builder;->bindHeaderAppName(Landroid/widget/RemoteViews;Landroid/app/Notification$StandardTemplateParams;)V +HSPLandroid/app/Notification$Builder;->bindHeaderChronometerAndTime(Landroid/widget/RemoteViews;Landroid/app/Notification$StandardTemplateParams;)V +HSPLandroid/app/Notification$Builder;->bindHeaderText(Landroid/widget/RemoteViews;Landroid/app/Notification$StandardTemplateParams;)V +HSPLandroid/app/Notification$Builder;->bindHeaderTextSecondary(Landroid/widget/RemoteViews;Landroid/app/Notification$StandardTemplateParams;)V +HSPLandroid/app/Notification$Builder;->bindLargeIconAndReply(Landroid/widget/RemoteViews;Landroid/app/Notification$StandardTemplateParams;Landroid/app/Notification$TemplateBindResult;)V +HSPLandroid/app/Notification$Builder;->bindLargeIcon(Landroid/widget/RemoteViews;Landroid/app/Notification$StandardTemplateParams;)Z +HSPLandroid/app/Notification$Builder;->bindNotificationHeader(Landroid/widget/RemoteViews;Landroid/app/Notification$StandardTemplateParams;)V +HSPLandroid/app/Notification$Builder;->bindProfileBadge(Landroid/widget/RemoteViews;Landroid/app/Notification$StandardTemplateParams;)V +HSPLandroid/app/Notification$Builder;->bindReplyIcon(Landroid/widget/RemoteViews;Landroid/app/Notification$StandardTemplateParams;)Z +HSPLandroid/app/Notification$Builder;->bindSmallIcon(Landroid/widget/RemoteViews;Landroid/app/Notification$StandardTemplateParams;)V +HSPLandroid/app/Notification$Builder;->calculateMarginEnd(ZZ)I +HSPLandroid/app/Notification$Builder;->createBigContentView()Landroid/widget/RemoteViews; +HSPLandroid/app/Notification$Builder;->createContentView()Landroid/widget/RemoteViews; +HSPLandroid/app/Notification$Builder;->createContentView(Z)Landroid/widget/RemoteViews; +HSPLandroid/app/Notification$Builder;->createSummaryText()Ljava/lang/CharSequence; +HSPLandroid/app/Notification$Builder;->ensureColors(Landroid/app/Notification$StandardTemplateParams;)V +HSPLandroid/app/Notification$Builder;->filterOutContextualActions(Ljava/util/List;)Ljava/util/List; +HSPLandroid/app/Notification$Builder;->findReplyAction()Landroid/app/Notification$Action; +HSPLandroid/app/Notification$Builder;->generateActionButton(Landroid/app/Notification$Action;ZLandroid/app/Notification$StandardTemplateParams;)Landroid/widget/RemoteViews; +HSPLandroid/app/Notification$Builder;->getActionLayoutResource()I +HSPLandroid/app/Notification$Builder;->getBackgroundColor(Landroid/app/Notification$StandardTemplateParams;)I +HSPLandroid/app/Notification$Builder;->getBaseLayoutResource()I +HSPLandroid/app/Notification$Builder;->getBigBaseLayoutResource()I +HSPLandroid/app/Notification$Builder;->getHeadsUpStatusBarText(Z)Ljava/lang/CharSequence; +HSPLandroid/app/Notification$Builder;->getNeutralColor(Landroid/app/Notification$StandardTemplateParams;)I +HSPLandroid/app/Notification$Builder;->getPrimaryTextColor(Landroid/app/Notification$StandardTemplateParams;)I +HSPLandroid/app/Notification$Builder;->getProfileBadgeDrawable()Landroid/graphics/drawable/Drawable; +HSPLandroid/app/Notification$Builder;->getProfileBadge()Landroid/graphics/Bitmap; +HSPLandroid/app/Notification$Builder;->getRawColor(Landroid/app/Notification$StandardTemplateParams;)I +HSPLandroid/app/Notification$Builder;->getSecondaryTextColor(Landroid/app/Notification$StandardTemplateParams;)I +HSPLandroid/app/Notification$Builder;->handleProgressBar(Landroid/widget/RemoteViews;Landroid/os/Bundle;Landroid/app/Notification$StandardTemplateParams;)Z +HSPLandroid/app/Notification$Builder;->hasForegroundColor()Z +HSPLandroid/app/Notification$Builder;->hasValidRemoteInput(Landroid/app/Notification$Action;)Z +HSPLandroid/app/Notification$Builder;->isColorized(Landroid/app/Notification$StandardTemplateParams;)Z +HSPLandroid/app/Notification$Builder;->isLegacy()Z +HSPLandroid/app/Notification$Builder;->loadHeaderAppName()Ljava/lang/String; +HSPLandroid/app/Notification$Builder;->makeHeaderExpanded(Landroid/widget/RemoteViews;)V +HSPLandroid/app/Notification$Builder;->makeLowPriorityContentView(Z)Landroid/widget/RemoteViews; +HSPLandroid/app/Notification$Builder;->makeNotificationHeader(Landroid/app/Notification$StandardTemplateParams;)Landroid/widget/RemoteViews; +HSPLandroid/app/Notification$Builder;->processLargeLegacyIcon(Landroid/graphics/drawable/Icon;Landroid/widget/RemoteViews;Landroid/app/Notification$StandardTemplateParams;)V +HSPLandroid/app/Notification$Builder;->processLegacyText(Ljava/lang/CharSequence;)Ljava/lang/CharSequence; +HSPLandroid/app/Notification$Builder;->processSmallIconColor(Landroid/graphics/drawable/Icon;Landroid/widget/RemoteViews;Landroid/app/Notification$StandardTemplateParams;)V +HSPLandroid/app/Notification$Builder;->processTextSpans(Ljava/lang/CharSequence;)Ljava/lang/CharSequence; +HSPLandroid/app/Notification$BuilderRemoteViews;-><init>(Landroid/content/pm/ApplicationInfo;I)V +HSPLandroid/app/Notification$Builder;->resetNotificationHeader(Landroid/widget/RemoteViews;)V +HSPLandroid/app/Notification$Builder;->resetStandardTemplate(Landroid/widget/RemoteViews;)V +HSPLandroid/app/Notification$Builder;->resetStandardTemplateWithActions(Landroid/widget/RemoteViews;)V +HSPLandroid/app/Notification$Builder;->resolveContrastColor(Landroid/app/Notification$StandardTemplateParams;)I +HSPLandroid/app/Notification$Builder;->resolveNeutralColor()I +HSPLandroid/app/Notification$Builder;->setContentMinHeight(Landroid/widget/RemoteViews;Z)V +HSPLandroid/app/Notification$Builder;->setTextViewColorPrimary(Landroid/widget/RemoteViews;ILandroid/app/Notification$StandardTemplateParams;)V +HSPLandroid/app/Notification$Builder;->setTextViewColorSecondary(Landroid/widget/RemoteViews;ILandroid/app/Notification$StandardTemplateParams;)V +HSPLandroid/app/Notification$Builder;->showsTimeOrChronometer()Z +HSPLandroid/app/Notification$Builder;->textColorsNeedInversion()Z +HSPLandroid/app/Notification$Builder;->updateBackgroundColor(Landroid/widget/RemoteViews;Landroid/app/Notification$StandardTemplateParams;)V +HSPLandroid/app/Notification$StandardTemplateParams;->disallowColorization()Landroid/app/Notification$StandardTemplateParams; +HSPLandroid/app/Notification$StandardTemplateParams;->fillTextsFrom(Landroid/app/Notification$Builder;)Landroid/app/Notification$StandardTemplateParams; +HSPLandroid/app/Notification$StandardTemplateParams;->forceDefaultColor()Landroid/app/Notification$StandardTemplateParams; +HSPLandroid/app/Notification$StandardTemplateParams;->reset()Landroid/app/Notification$StandardTemplateParams; +HSPLandroid/app/Notification$StandardTemplateParams;->summaryText(Ljava/lang/CharSequence;)Landroid/app/Notification$StandardTemplateParams; +HSPLandroid/app/Notification;->access$1300(Landroid/app/Notification;)Landroid/graphics/drawable/Icon; +HSPLandroid/app/Notification;->access$1602(Landroid/app/Notification;Z)Z +HSPLandroid/app/Notification;->access$1800(Landroid/app/Notification;)Z +HSPLandroid/app/Notification;->access$2000(Landroid/app/Notification;)J +HSPLandroid/app/Notification;->access$2100(Landroid/app/Notification;)Landroid/graphics/drawable/Icon; +HSPLandroid/app/NotificationChannel;->enableVibration(Z)V +HSPLandroid/app/NotificationChannel;->setGroup(Ljava/lang/String;)V +HSPLandroid/app/Notification;->getShortcutId()Ljava/lang/String; +HSPLandroid/app/Notification;->hasLargeIcon()Z +HSPLandroid/app/Notification;->isMediaNotification()Z +HSPLandroid/app/NotificationManager;->cancelAll()V +HSPLandroid/app/NotificationManager;->getCurrentInterruptionFilter()I +HSPLandroid/app/NotificationManager;->getEffectsSuppressor()Landroid/content/ComponentName; +HSPLandroid/app/NotificationManager;->getZenModeConfig()Landroid/service/notification/ZenModeConfig; +HSPLandroid/app/NotificationManager;->shouldHideSilentStatusBarIcons()Z +HSPLandroid/app/NotificationManager;->zenModeToInterruptionFilter(I)I +HSPLandroid/app/Notification;->showsChronometer()Z +HSPLandroid/app/Notification;->showsTime()Z +HSPLandroid/app/PendingIntent$1;-><init>(Landroid/app/PendingIntent;)V +HSPLandroid/app/PendingIntent;->getTarget()Landroid/content/IIntentSender; +HSPLandroid/app/PendingIntent;->getTargetPackage()Ljava/lang/String; +HSPLandroid/app/PendingIntent;->registerCancelListener(Landroid/app/PendingIntent$CancelListener;)V +HSPLandroid/app/PendingIntent;->unregisterCancelListener(Landroid/app/PendingIntent$CancelListener;)V +HSPLandroid/app/prediction/AppPredictionManager;->createAppPredictionSession(Landroid/app/prediction/AppPredictionContext;)Landroid/app/prediction/AppPredictor; +HSPLandroid/app/prediction/AppPredictionManager;-><init>(Landroid/content/Context;)V +HSPLandroid/app/prediction/IPredictionManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/prediction/IPredictionManager; +HSPLandroid/app/RemoteAction$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/RemoteAction; +HSPLandroid/app/RemoteAction$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/app/servertransaction/LaunchActivityItem;->postExecute(Landroid/app/ClientTransactionHandler;Landroid/os/IBinder;Landroid/app/servertransaction/PendingTransactionActions;)V +HSPLandroid/app/servertransaction/LaunchActivityItem;->setValues(Landroid/app/servertransaction/LaunchActivityItem;Landroid/content/Intent;ILandroid/content/pm/ActivityInfo;Landroid/content/res/Configuration;Landroid/content/res/Configuration;Landroid/content/res/CompatibilityInfo;Ljava/lang/String;Lcom/android/internal/app/IVoiceInteractor;ILandroid/os/Bundle;Landroid/os/PersistableBundle;Ljava/util/List;Ljava/util/List;ZLandroid/app/ProfilerInfo;Landroid/os/IBinder;)V +HSPLandroid/app/Service;->stopSelfResult(I)Z +HSPLandroid/app/StatsManager;->addConfig(J[B)V +HSPLandroid/app/StatsManager;->getReports(J)[B +HSPLandroid/app/StatsManager;->setFetchReportsOperation(Landroid/app/PendingIntent;J)V +HSPLandroid/app/StatsManager;->setPullerCallback(ILandroid/os/IStatsPullerCallback;)V +HSPLandroid/app/StatusBarManager;->disable(I)V +HSPLandroid/app/SystemServiceRegistry$103;->createService(Landroid/app/ContextImpl;)Landroid/app/prediction/AppPredictionManager; +HSPLandroid/app/SystemServiceRegistry$103;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; +HSPLandroid/app/SystemServiceRegistry$15;->createService()Landroid/os/IBinder; +HSPLandroid/app/SystemServiceRegistry$15;->createService()Ljava/lang/Object; +HSPLandroid/app/SystemServiceRegistry$34;->createService(Landroid/app/ContextImpl;)Landroid/net/nsd/NsdManager; +HSPLandroid/app/SystemServiceRegistry$34;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; +HSPLandroid/app/SystemServiceRegistry$39;->createService(Landroid/app/ContextImpl;)Landroid/hardware/SensorPrivacyManager; +HSPLandroid/app/SystemServiceRegistry$39;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; +HSPLandroid/app/SystemServiceRegistry$86;->createService()Landroid/service/persistentdata/PersistentDataBlockManager; +HSPLandroid/app/SystemServiceRegistry$86;->createService()Ljava/lang/Object; +HSPLandroid/app/SystemServiceRegistry$88;->createService(Landroid/app/ContextImpl;)Landroid/media/projection/MediaProjectionManager; +HSPLandroid/app/SystemServiceRegistry$88;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; +HSPLandroid/app/SystemServiceRegistry$95;->createService(Landroid/app/ContextImpl;)Landroid/content/om/OverlayManager; +HSPLandroid/app/SystemServiceRegistry$95;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; +HSPLandroid/app/SystemServiceRegistry$98;->createService(Landroid/app/ContextImpl;)Landroid/hardware/location/ContextHubManager; +HSPLandroid/app/SystemServiceRegistry$98;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; +HSPLandroid/app/trust/IStrongAuthTracker$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLandroid/app/trust/ITrustListener$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/app/trust/ITrustListener$Stub;-><init>()V +HSPLandroid/app/trust/ITrustListener$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLandroid/app/trust/ITrustManager$Stub$Proxy;->clearAllBiometricRecognized(Landroid/hardware/biometrics/BiometricSourceType;)V +HSPLandroid/app/trust/ITrustManager$Stub$Proxy;->isDeviceSecure(I)Z +HSPLandroid/app/trust/ITrustManager$Stub$Proxy;->isTrustUsuallyManaged(I)Z +HSPLandroid/app/trust/ITrustManager$Stub$Proxy;->registerTrustListener(Landroid/app/trust/ITrustListener;)V +HSPLandroid/app/trust/ITrustManager$Stub$Proxy;->reportKeyguardShowingChanged()V +HSPLandroid/app/trust/TrustManager$2;->handleMessage(Landroid/os/Message;)V +HSPLandroid/app/trust/TrustManager;->access$000(Landroid/app/trust/TrustManager;)Landroid/os/Handler; +HSPLandroid/app/trust/TrustManager;->clearAllBiometricRecognized(Landroid/hardware/biometrics/BiometricSourceType;)V +HSPLandroid/app/trust/TrustManager;->isTrustUsuallyManaged(I)Z +HSPLandroid/app/trust/TrustManager;->registerTrustListener(Landroid/app/trust/TrustManager$TrustListener;)V +HSPLandroid/app/trust/TrustManager;->reportKeyguardShowingChanged()V +HSPLandroid/app/usage/IUsageStatsManager$Stub$Proxy;->isAppInactive(Ljava/lang/String;I)Z +HSPLandroid/app/usage/IUsageStatsManager$Stub$Proxy;->queryEvents(JJLjava/lang/String;)Landroid/app/usage/UsageEvents; +HSPLandroid/app/usage/UsageEvents$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/usage/UsageEvents; +HSPLandroid/app/usage/UsageEvents$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/app/usage/UsageEvents$Event;->getClassName()Ljava/lang/String; +HSPLandroid/app/usage/UsageEvents$Event;->getConfiguration()Landroid/content/res/Configuration; +HSPLandroid/app/usage/UsageEvents$Event;->getEventType()I +HSPLandroid/app/usage/UsageEvents$Event;->getPackageName()Ljava/lang/String; +HSPLandroid/app/usage/UsageEvents$Event;->getTimeStamp()J +HSPLandroid/app/usage/UsageEvents$Event;-><init>()V +HSPLandroid/app/usage/UsageEvents;->getNextEvent(Landroid/app/usage/UsageEvents$Event;)Z +HSPLandroid/app/usage/UsageEvents;->hasNextEvent()Z +HSPLandroid/app/usage/UsageEvents;-><init>(Landroid/os/Parcel;)V +HSPLandroid/app/usage/UsageEvents;->readEventFromParcel(Landroid/os/Parcel;Landroid/app/usage/UsageEvents$Event;)V +HSPLandroid/app/usage/UsageStats;->getLastTimeStamp()J +HSPLandroid/app/usage/UsageStatsManager;->isAppInactive(Ljava/lang/String;)Z +HSPLandroid/app/usage/UsageStatsManager;->queryAndAggregateUsageStats(JJ)Ljava/util/Map; +HSPLandroid/app/usage/UsageStatsManager;->queryEvents(JJ)Landroid/app/usage/UsageEvents; +HSPLandroid/app/WallpaperColors;->getColorHints()I +HSPLandroid/app/WallpaperInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/WallpaperInfo; +HSPLandroid/app/WallpaperInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/app/WallpaperManager$Globals;->access$200(Landroid/app/WallpaperManager$Globals;)Landroid/app/IWallpaperManager; +HSPLandroid/app/WallpaperManager$Globals;->addOnColorsChangedListener(Landroid/app/WallpaperManager$OnColorsChangedListener;Landroid/os/Handler;II)V +HSPLandroid/app/WallpaperManager$Globals;->lambda$onWallpaperColorsChanged$1$WallpaperManager$Globals(Landroid/util/Pair;Landroid/app/WallpaperColors;II)V +HSPLandroid/app/WallpaperManager$Globals;->lambda$removeOnColorsChangedListener$0(Landroid/app/WallpaperManager$OnColorsChangedListener;Landroid/util/Pair;)Z +HSPLandroid/app/WallpaperManager$Globals;->onWallpaperColorsChanged(Landroid/app/WallpaperColors;II)V +HSPLandroid/app/WallpaperManager$Globals;->removeOnColorsChangedListener(Landroid/app/WallpaperManager$OnColorsChangedListener;II)V +HSPLandroid/app/WallpaperManager;->access$100()Landroid/app/WallpaperManager$Globals; +HSPLandroid/app/WallpaperManager;->addOnColorsChangedListener(Landroid/app/WallpaperManager$OnColorsChangedListener;Landroid/os/Handler;I)V +HSPLandroid/app/WallpaperManager;->addOnColorsChangedListener(Landroid/app/WallpaperManager$OnColorsChangedListener;Landroid/os/Handler;)V +HSPLandroid/app/WallpaperManager;->getDesiredMinimumHeight()I +HSPLandroid/app/WallpaperManager;->getDesiredMinimumWidth()I +HSPLandroid/app/WallpaperManager;->getInstance(Landroid/content/Context;)Landroid/app/WallpaperManager; +HSPLandroid/app/WallpaperManager;->getWallpaperInfo(I)Landroid/app/WallpaperInfo; +HSPLandroid/app/WallpaperManager;->getWallpaperInfo()Landroid/app/WallpaperInfo; +HSPLandroid/app/WallpaperManager;->isWallpaperSupported()Z +HSPLandroid/app/WallpaperManager;->removeOnColorsChangedListener(Landroid/app/WallpaperManager$OnColorsChangedListener;I)V +HSPLandroid/app/WallpaperManager;->removeOnColorsChangedListener(Landroid/app/WallpaperManager$OnColorsChangedListener;)V +HSPLandroid/app/WallpaperManager;->setWallpaperOffsets(Landroid/os/IBinder;FF)V +HSPLandroid/app/WallpaperManager;->setWallpaperOffsetSteps(FF)V +HSPLandroid/appwidget/AppWidgetManager;->getInstalledProvidersForProfile(ILandroid/os/UserHandle;Ljava/lang/String;)Ljava/util/List; +HSPLandroid/appwidget/AppWidgetManager;->getInstalledProvidersForProfile(Landroid/os/UserHandle;)Ljava/util/List; +HSPLandroid/bluetooth/BluetoothA2dp$1;->getServiceInterface(Landroid/os/IBinder;)Landroid/bluetooth/IBluetoothA2dp; +HSPLandroid/bluetooth/BluetoothA2dp$1;->getServiceInterface(Landroid/os/IBinder;)Ljava/lang/Object; +HSPLandroid/bluetooth/BluetoothAdapter;->enableBLE()Z +HSPLandroid/bluetooth/BluetoothAdapter;->getAddress()Ljava/lang/String; +HSPLandroid/bluetooth/BluetoothAdapter;->getBluetoothLeScanner()Landroid/bluetooth/le/BluetoothLeScanner; +HSPLandroid/bluetooth/BluetoothAdapter;->getBluetoothManager()Landroid/bluetooth/IBluetoothManager; +HSPLandroid/bluetooth/BluetoothAdapter;->getConnectionState()I +HSPLandroid/bluetooth/BluetoothAdapter;->getLeAccess()Z +HSPLandroid/bluetooth/BluetoothAdapter;->getLeState()I +HSPLandroid/bluetooth/BluetoothAdapter;->getRemoteDevice(Ljava/lang/String;)Landroid/bluetooth/BluetoothDevice; +HSPLandroid/bluetooth/BluetoothAdapter;->isBleScanAlwaysAvailable()Z +HSPLandroid/bluetooth/BluetoothAdapter;->isLeEnabled()Z +HSPLandroid/bluetooth/BluetoothAdapter;->isOffloadedFilteringSupported()Z +HSPLandroid/bluetooth/BluetoothAdapter;->listenUsingInsecureL2capOn(I)Landroid/bluetooth/BluetoothServerSocket; +HSPLandroid/bluetooth/BluetoothAdapter;->listenUsingInsecureRfcommOn(I)Landroid/bluetooth/BluetoothServerSocket; +HSPLandroid/bluetooth/BluetoothAdapter;->listenUsingL2capOn(I)Landroid/bluetooth/BluetoothServerSocket; +HSPLandroid/bluetooth/BluetoothAdapter;->listenUsingL2capOn(IZZ)Landroid/bluetooth/BluetoothServerSocket; +HSPLandroid/bluetooth/BluetoothAdapter;->listenUsingRfcommOn(I)Landroid/bluetooth/BluetoothServerSocket; +HSPLandroid/bluetooth/BluetoothAdapter;->listenUsingRfcommOn(IZZ)Landroid/bluetooth/BluetoothServerSocket; +HSPLandroid/bluetooth/BluetoothClass;-><init>(I)V +HSPLandroid/bluetooth/BluetoothCodecConfig;->getBitsPerSample()I +HSPLandroid/bluetooth/BluetoothCodecConfig;->getChannelMode()I +HSPLandroid/bluetooth/BluetoothCodecConfig;->getCodecPriority()I +HSPLandroid/bluetooth/BluetoothCodecConfig;->getCodecSpecific1()J +HSPLandroid/bluetooth/BluetoothCodecConfig;->getCodecSpecific2()J +HSPLandroid/bluetooth/BluetoothCodecConfig;->getCodecSpecific3()J +HSPLandroid/bluetooth/BluetoothCodecConfig;->getCodecSpecific4()J +HSPLandroid/bluetooth/BluetoothCodecConfig;->getCodecType()I +HSPLandroid/bluetooth/BluetoothCodecConfig;->getSampleRate()I +HSPLandroid/bluetooth/BluetoothCodecConfig;-><init>(IIIIIJJJJ)V +HSPLandroid/bluetooth/BluetoothDevice;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/bluetooth/BluetoothHeadset;->isInbandRingingSupported(Landroid/content/Context;)Z +HSPLandroid/bluetooth/BluetoothInputStream;-><init>(Landroid/bluetooth/BluetoothSocket;)V +HSPLandroid/bluetooth/BluetoothManager;->getAdapter()Landroid/bluetooth/BluetoothAdapter; +HSPLandroid/bluetooth/BluetoothOutputStream;-><init>(Landroid/bluetooth/BluetoothSocket;)V +HSPLandroid/bluetooth/BluetoothPbap;->access$000(Ljava/lang/String;)V +HSPLandroid/bluetooth/BluetoothPbap;->log(Ljava/lang/String;)V +HSPLandroid/bluetooth/BluetoothProfileConnector;->access$000(Landroid/bluetooth/BluetoothProfileConnector;)Z +HSPLandroid/bluetooth/BluetoothProfileConnector;->access$200(Landroid/bluetooth/BluetoothProfileConnector;Ljava/lang/String;)V +HSPLandroid/bluetooth/BluetoothProfileConnector;->access$302(Landroid/bluetooth/BluetoothProfileConnector;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroid/bluetooth/BluetoothProfileConnector;->access$400(Landroid/bluetooth/BluetoothProfileConnector;)Landroid/bluetooth/BluetoothProfile$ServiceListener; +HSPLandroid/bluetooth/BluetoothProfileConnector;->access$500(Landroid/bluetooth/BluetoothProfileConnector;)I +HSPLandroid/bluetooth/BluetoothProfileConnector;->access$600(Landroid/bluetooth/BluetoothProfileConnector;)Landroid/bluetooth/BluetoothProfile; +HSPLandroid/bluetooth/BluetoothProfileConnector;->connect(Landroid/content/Context;Landroid/bluetooth/BluetoothProfile$ServiceListener;)V +HSPLandroid/bluetooth/BluetoothProfileConnector;->doBind()Z +HSPLandroid/bluetooth/BluetoothProfileConnector;->getService()Ljava/lang/Object; +HSPLandroid/bluetooth/BluetoothProfileConnector;->logDebug(Ljava/lang/String;)V +HSPLandroid/bluetooth/BluetoothServerSocket;->accept(I)Landroid/bluetooth/BluetoothSocket; +HSPLandroid/bluetooth/BluetoothServerSocket;->accept()Landroid/bluetooth/BluetoothSocket; +HSPLandroid/bluetooth/BluetoothServerSocket;->getChannel()I +HSPLandroid/bluetooth/BluetoothServerSocket;-><init>(IZZI)V +HSPLandroid/bluetooth/BluetoothServerSocket;-><init>(IZZIZZ)V +HSPLandroid/bluetooth/BluetoothServerSocket;->setChannel(I)V +HSPLandroid/bluetooth/BluetoothSocket;->accept(I)Landroid/bluetooth/BluetoothSocket; +HSPLandroid/bluetooth/BluetoothSocket;->bindListen()I +HSPLandroid/bluetooth/BluetoothSocket;->getPort()I +HSPLandroid/bluetooth/BluetoothSocket;->getSecurityFlags()I +HSPLandroid/bluetooth/BluetoothSocket;-><init>(IIZZLandroid/bluetooth/BluetoothDevice;ILandroid/os/ParcelUuid;)V +HSPLandroid/bluetooth/BluetoothSocket;-><init>(IIZZLandroid/bluetooth/BluetoothDevice;ILandroid/os/ParcelUuid;ZZ)V +HSPLandroid/bluetooth/BluetoothSocket;->readAll(Ljava/io/InputStream;[B)I +HSPLandroid/bluetooth/BluetoothSocket;->readInt(Ljava/io/InputStream;)I +HSPLandroid/bluetooth/BluetoothSocket;->setExcludeSdp(Z)V +HSPLandroid/bluetooth/BluetoothSocket;->waitSocketSignal(Ljava/io/InputStream;)Ljava/lang/String; +HSPLandroid/bluetooth/BluetoothUuid;->getServiceIdentifierFromParcelUuid(Landroid/os/ParcelUuid;)I +HSPLandroid/bluetooth/BluetoothUuid;->is16BitUuid(Landroid/os/ParcelUuid;)Z +HSPLandroid/bluetooth/BluetoothUuid;->parseUuidFrom([B)Landroid/os/ParcelUuid; +HSPLandroid/bluetooth/BluetoothUuid;->uuidToBytes(Landroid/os/ParcelUuid;)[B +HSPLandroid/bluetooth/IBluetooth$Stub$Proxy;->getAdapterConnectionState()I +HSPLandroid/bluetooth/IBluetooth$Stub$Proxy;->isOffloadedFilteringSupported()Z +HSPLandroid/bluetooth/IBluetooth$Stub;-><init>()V +HSPLandroid/bluetooth/IBluetooth$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLandroid/bluetooth/IBluetoothA2dp$Stub$Proxy;-><init>(Landroid/os/IBinder;)V +HSPLandroid/bluetooth/IBluetoothA2dp$Stub;->asInterface(Landroid/os/IBinder;)Landroid/bluetooth/IBluetoothA2dp; +HSPLandroid/bluetooth/IBluetoothA2dp$Stub;-><init>()V +HSPLandroid/bluetooth/IBluetoothA2dp$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLandroid/bluetooth/IBluetoothAvrcpTarget$Stub;-><init>()V +HSPLandroid/bluetooth/IBluetoothCallback$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HSPLandroid/bluetooth/IBluetoothCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V +HSPLandroid/bluetooth/IBluetoothCallback$Stub$Proxy;->onBluetoothStateChange(II)V +HSPLandroid/bluetooth/IBluetoothCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/bluetooth/IBluetoothCallback; +HSPLandroid/bluetooth/IBluetoothGatt$Stub$Proxy;->registerScanner(Landroid/bluetooth/le/IScannerCallback;Landroid/os/WorkSource;)V +HSPLandroid/bluetooth/IBluetoothGatt$Stub$Proxy;->startScan(ILandroid/bluetooth/le/ScanSettings;Ljava/util/List;Ljava/util/List;Ljava/lang/String;)V +HSPLandroid/bluetooth/IBluetoothGatt$Stub$Proxy;->stopScan(I)V +HSPLandroid/bluetooth/IBluetoothGatt$Stub$Proxy;->unregisterScanner(I)V +HSPLandroid/bluetooth/IBluetoothGatt$Stub;-><init>()V +HSPLandroid/bluetooth/IBluetoothGatt$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLandroid/bluetooth/IBluetoothHeadset$Stub;-><init>()V +HSPLandroid/bluetooth/IBluetoothHeadset$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLandroid/bluetooth/IBluetoothHeadsetPhone$Stub$Proxy;-><init>(Landroid/os/IBinder;)V +HSPLandroid/bluetooth/IBluetoothHeadsetPhone$Stub;->asInterface(Landroid/os/IBinder;)Landroid/bluetooth/IBluetoothHeadsetPhone; +HSPLandroid/bluetooth/IBluetoothHidDevice$Stub;->asInterface(Landroid/os/IBinder;)Landroid/bluetooth/IBluetoothHidDevice; +HSPLandroid/bluetooth/IBluetoothHidDevice$Stub;-><init>()V +HSPLandroid/bluetooth/IBluetoothHidDevice$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLandroid/bluetooth/IBluetoothHidHost$Stub;->asInterface(Landroid/os/IBinder;)Landroid/bluetooth/IBluetoothHidHost; +HSPLandroid/bluetooth/IBluetoothHidHost$Stub;-><init>()V +HSPLandroid/bluetooth/IBluetoothHidHost$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLandroid/bluetooth/IBluetoothManager$Stub$Proxy;->getAddress()Ljava/lang/String; +HSPLandroid/bluetooth/IBluetoothManager$Stub$Proxy;->getBluetoothGatt()Landroid/bluetooth/IBluetoothGatt; +HSPLandroid/bluetooth/IBluetoothManager$Stub$Proxy;->isBleScanAlwaysAvailable()Z +HSPLandroid/bluetooth/IBluetoothManager$Stub$Proxy;->updateBleAppCount(Landroid/os/IBinder;ZLjava/lang/String;)I +HSPLandroid/bluetooth/IBluetoothMap$Stub;->asInterface(Landroid/os/IBinder;)Landroid/bluetooth/IBluetoothMap; +HSPLandroid/bluetooth/IBluetoothMap$Stub;-><init>()V +HSPLandroid/bluetooth/IBluetoothMap$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLandroid/bluetooth/IBluetoothPan$Stub;->asInterface(Landroid/os/IBinder;)Landroid/bluetooth/IBluetoothPan; +HSPLandroid/bluetooth/IBluetoothPan$Stub;-><init>()V +HSPLandroid/bluetooth/IBluetoothPbap$Stub;-><init>()V +HSPLandroid/bluetooth/IBluetoothSap$Stub;->asInterface(Landroid/os/IBinder;)Landroid/bluetooth/IBluetoothSap; +HSPLandroid/bluetooth/IBluetoothSap$Stub;-><init>()V +HSPLandroid/bluetooth/IBluetoothSap$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLandroid/bluetooth/IBluetoothSocketManager$Stub$Proxy;->createSocketChannel(ILjava/lang/String;Landroid/os/ParcelUuid;II)Landroid/os/ParcelFileDescriptor; +HSPLandroid/bluetooth/IBluetoothSocketManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V +HSPLandroid/bluetooth/IBluetoothSocketManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/bluetooth/IBluetoothSocketManager; +HSPLandroid/bluetooth/le/IScannerCallback$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HSPLandroid/bluetooth/le/IScannerCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V +HSPLandroid/bluetooth/le/IScannerCallback$Stub$Proxy;->onScannerRegistered(II)V +HSPLandroid/bluetooth/le/IScannerCallback$Stub$Proxy;->onScanResult(Landroid/bluetooth/le/ScanResult;)V +HSPLandroid/bluetooth/le/ScanFilter$1;->createFromParcel(Landroid/os/Parcel;)Landroid/bluetooth/le/ScanFilter; +HSPLandroid/bluetooth/le/ScanFilter$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/bluetooth/le/ScanFilter$Builder;->setManufacturerData(I[B[B)Landroid/bluetooth/le/ScanFilter$Builder; +HSPLandroid/bluetooth/le/ScanFilter$Builder;->setServiceData(Landroid/os/ParcelUuid;[B)Landroid/bluetooth/le/ScanFilter$Builder; +HSPLandroid/bluetooth/le/ScanFilter$Builder;->setServiceUuid(Landroid/os/ParcelUuid;)Landroid/bluetooth/le/ScanFilter$Builder; +HSPLandroid/bluetooth/le/ScanFilter;->getDeviceAddress()Ljava/lang/String; +HSPLandroid/bluetooth/le/ScanFilter;->getDeviceName()Ljava/lang/String; +HSPLandroid/bluetooth/le/ScanFilter;->getManufacturerData()[B +HSPLandroid/bluetooth/le/ScanFilter;->getManufacturerDataMask()[B +HSPLandroid/bluetooth/le/ScanFilter;->getManufacturerId()I +HSPLandroid/bluetooth/le/ScanFilter;->getServiceData()[B +HSPLandroid/bluetooth/le/ScanFilter;->getServiceDataMask()[B +HSPLandroid/bluetooth/le/ScanFilter;->getServiceDataUuid()Landroid/os/ParcelUuid; +HSPLandroid/bluetooth/le/ScanFilter;->getServiceSolicitationUuid()Landroid/os/ParcelUuid; +HSPLandroid/bluetooth/le/ScanFilter;->getServiceUuid()Landroid/os/ParcelUuid; +HSPLandroid/bluetooth/le/ScanFilter;->getServiceUuidMask()Landroid/os/ParcelUuid; +HSPLandroid/bluetooth/le/ScanFilter;->matches(Landroid/bluetooth/le/ScanResult;)Z +HSPLandroid/bluetooth/le/ScanFilter;->matchesPartialData([B[B[B)Z +HSPLandroid/bluetooth/le/ScanFilter;->matchesServiceUuid(Ljava/util/UUID;Ljava/util/UUID;Ljava/util/UUID;)Z +HSPLandroid/bluetooth/le/ScanFilter;->matchesServiceUuids(Landroid/os/ParcelUuid;Landroid/os/ParcelUuid;Ljava/util/List;)Z +HSPLandroid/bluetooth/le/ScanFilter;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/bluetooth/le/ScanRecord;->extractBytes([BII)[B +HSPLandroid/bluetooth/le/ScanRecord;->getBytes()[B +HSPLandroid/bluetooth/le/ScanRecord;->getManufacturerSpecificData(I)[B +HSPLandroid/bluetooth/le/ScanRecord;->getServiceData(Landroid/os/ParcelUuid;)[B +HSPLandroid/bluetooth/le/ScanRecord;->getServiceUuids()Ljava/util/List; +HSPLandroid/bluetooth/le/ScanRecord;-><init>(Ljava/util/List;Ljava/util/List;Landroid/util/SparseArray;Ljava/util/Map;IILjava/lang/String;[B)V +HSPLandroid/bluetooth/le/ScanRecord;->parseFromBytes([B)Landroid/bluetooth/le/ScanRecord; +HSPLandroid/bluetooth/le/ScanRecord;->parseServiceUuid([BIIILjava/util/List;)I +HSPLandroid/bluetooth/le/ScanResult$1;->createFromParcel(Landroid/os/Parcel;)Landroid/bluetooth/le/ScanResult; +HSPLandroid/bluetooth/le/ScanResult$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/bluetooth/le/ScanResult;->getDevice()Landroid/bluetooth/BluetoothDevice; +HSPLandroid/bluetooth/le/ScanResult;->getRssi()I +HSPLandroid/bluetooth/le/ScanResult;->getScanRecord()Landroid/bluetooth/le/ScanRecord; +HSPLandroid/bluetooth/le/ScanResult;->getTimestampNanos()J +HSPLandroid/bluetooth/le/ScanResult;-><init>(Landroid/bluetooth/BluetoothDevice;IIIIIIILandroid/bluetooth/le/ScanRecord;J)V +HSPLandroid/bluetooth/le/ScanResult;-><init>(Landroid/os/Parcel;Landroid/bluetooth/le/ScanResult$1;)V +HSPLandroid/bluetooth/le/ScanResult;-><init>(Landroid/os/Parcel;)V +HSPLandroid/bluetooth/le/ScanResult;->readFromParcel(Landroid/os/Parcel;)V +HSPLandroid/bluetooth/le/ScanResult;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/bluetooth/le/ScanSettings$1;->createFromParcel(Landroid/os/Parcel;)Landroid/bluetooth/le/ScanSettings; +HSPLandroid/bluetooth/le/ScanSettings$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/bluetooth/le/ScanSettings$Builder;->build()Landroid/bluetooth/le/ScanSettings; +HSPLandroid/bluetooth/le/ScanSettings$Builder;-><init>()V +HSPLandroid/bluetooth/le/ScanSettings$Builder;->isValidCallbackType(I)Z +HSPLandroid/bluetooth/le/ScanSettings$Builder;->setCallbackType(I)Landroid/bluetooth/le/ScanSettings$Builder; +HSPLandroid/bluetooth/le/ScanSettings$Builder;->setMatchMode(I)Landroid/bluetooth/le/ScanSettings$Builder; +HSPLandroid/bluetooth/le/ScanSettings$Builder;->setNumOfMatches(I)Landroid/bluetooth/le/ScanSettings$Builder; +HSPLandroid/bluetooth/le/ScanSettings$Builder;->setReportDelay(J)Landroid/bluetooth/le/ScanSettings$Builder; +HSPLandroid/bluetooth/le/ScanSettings$Builder;->setScanMode(I)Landroid/bluetooth/le/ScanSettings$Builder; +HSPLandroid/bluetooth/le/ScanSettings;->getCallbackType()I +HSPLandroid/bluetooth/le/ScanSettings;->getLegacy()Z +HSPLandroid/bluetooth/le/ScanSettings;->getMatchMode()I +HSPLandroid/bluetooth/le/ScanSettings;->getReportDelayMillis()J +HSPLandroid/bluetooth/le/ScanSettings;->getScanMode()I +HSPLandroid/bluetooth/le/ScanSettings;-><init>(IIIJIIZILandroid/bluetooth/le/ScanSettings$1;)V +HSPLandroid/bluetooth/le/ScanSettings;-><init>(IIIJIIZI)V +HSPLandroid/bluetooth/le/ScanSettings;-><init>(Landroid/os/Parcel;Landroid/bluetooth/le/ScanSettings$1;)V +HSPLandroid/bluetooth/le/ScanSettings;-><init>(Landroid/os/Parcel;)V +HSPLandroid/bluetooth/le/ScanSettings;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/content/-$$Lambda$AbstractThreadedSyncAdapter$ISyncAdapterImpl$L6ZtOCe8gjKwJj0908ytPlrD8Rc;->accept(Ljava/lang/Object;Ljava/lang/Object;)V +HSPLandroid/content/AbstractThreadedSyncAdapter$ISyncAdapterImpl;-><init>(Landroid/content/AbstractThreadedSyncAdapter;Landroid/content/AbstractThreadedSyncAdapter$1;)V +HSPLandroid/content/AbstractThreadedSyncAdapter$ISyncAdapterImpl;-><init>(Landroid/content/AbstractThreadedSyncAdapter;)V +HSPLandroid/content/AbstractThreadedSyncAdapter$ISyncAdapterImpl;->lambda$onUnsyncableAccount$0(Ljava/lang/Object;Landroid/content/ISyncAdapterUnsyncableAccountCallback;)V +HSPLandroid/content/AbstractThreadedSyncAdapter$ISyncAdapterImpl;->onUnsyncableAccount(Landroid/content/ISyncAdapterUnsyncableAccountCallback;)V +HSPLandroid/content/AbstractThreadedSyncAdapter$ISyncAdapterImpl;->startSync(Landroid/content/ISyncContext;Ljava/lang/String;Landroid/accounts/Account;Landroid/os/Bundle;)V +HSPLandroid/content/AbstractThreadedSyncAdapter$SyncThread;-><init>(Landroid/content/AbstractThreadedSyncAdapter;Ljava/lang/String;Landroid/content/SyncContext;Ljava/lang/String;Landroid/accounts/Account;Landroid/os/Bundle;Landroid/content/AbstractThreadedSyncAdapter$1;)V +HSPLandroid/content/AbstractThreadedSyncAdapter$SyncThread;-><init>(Landroid/content/AbstractThreadedSyncAdapter;Ljava/lang/String;Landroid/content/SyncContext;Ljava/lang/String;Landroid/accounts/Account;Landroid/os/Bundle;)V +HSPLandroid/content/AbstractThreadedSyncAdapter$SyncThread;->isCanceled()Z +HSPLandroid/content/AbstractThreadedSyncAdapter$SyncThread;->run()V +HSPLandroid/content/AbstractThreadedSyncAdapter;->access$100()Z +HSPLandroid/content/AbstractThreadedSyncAdapter;->access$1200(Landroid/content/AbstractThreadedSyncAdapter;Landroid/content/ISyncAdapterUnsyncableAccountCallback;)V +HSPLandroid/content/AbstractThreadedSyncAdapter;->access$1300(Landroid/content/AbstractThreadedSyncAdapter;)Landroid/content/Context; +HSPLandroid/content/AbstractThreadedSyncAdapter;->access$200(Landroid/content/AbstractThreadedSyncAdapter;Landroid/accounts/Account;)Landroid/accounts/Account; +HSPLandroid/content/AbstractThreadedSyncAdapter;->access$300(Landroid/content/AbstractThreadedSyncAdapter;)Ljava/lang/Object; +HSPLandroid/content/AbstractThreadedSyncAdapter;->access$400(Landroid/content/AbstractThreadedSyncAdapter;)Ljava/util/HashMap; +HSPLandroid/content/AbstractThreadedSyncAdapter;->access$500(Landroid/content/AbstractThreadedSyncAdapter;)Z +HSPLandroid/content/AbstractThreadedSyncAdapter;->access$600(Landroid/content/AbstractThreadedSyncAdapter;)Ljava/util/concurrent/atomic/AtomicInteger; +HSPLandroid/content/AbstractThreadedSyncAdapter;->getContext()Landroid/content/Context; +HSPLandroid/content/AbstractThreadedSyncAdapter;->getSyncAdapterBinder()Landroid/os/IBinder; +HSPLandroid/content/AbstractThreadedSyncAdapter;->handleOnUnsyncableAccount(Landroid/content/ISyncAdapterUnsyncableAccountCallback;)V +HSPLandroid/content/AbstractThreadedSyncAdapter;-><init>(Landroid/content/Context;ZZ)V +HSPLandroid/content/AbstractThreadedSyncAdapter;->onUnsyncableAccount()Z +HSPLandroid/content/AbstractThreadedSyncAdapter;->toSyncKey(Landroid/accounts/Account;)Landroid/accounts/Account; +HSPLandroid/content/ComponentName;-><init>(Ljava/lang/String;Landroid/os/Parcel;)V +HSPLandroid/content/ComponentName;->readFromParcel(Landroid/os/Parcel;)Landroid/content/ComponentName; +HSPLandroid/content/ContentProvider;->call(Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;)Landroid/os/Bundle; +HSPLandroid/content/ContentProviderClient$CursorWrapperInner;->close()V +HSPLandroid/content/ContentProviderClient$CursorWrapperInner;->finalize()V +HSPLandroid/content/ContentProviderClient;->getLocalContentProvider()Landroid/content/ContentProvider; +HSPLandroid/content/ContentProvider;->coerceToLocalContentProvider(Landroid/content/IContentProvider;)Landroid/content/ContentProvider; +HSPLandroid/content/ContentProvider;->onCallingPackageChanged()V +HSPLandroid/content/ContentResolver;->acquireUnstableContentProviderClient(Ljava/lang/String;)Landroid/content/ContentProviderClient; +HSPLandroid/content/ContentResolver;->acquireUnstableProvider(Ljava/lang/String;)Landroid/content/IContentProvider; +HSPLandroid/content/ContentResolver;->addPeriodicSync(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;J)V +HSPLandroid/content/ContentResolver;->getContentService()Landroid/content/IContentService; +HSPLandroid/content/ContentResolver;->getMasterSyncAutomatically()Z +HSPLandroid/content/ContentResolver;->getSyncAutomatically(Landroid/accounts/Account;Ljava/lang/String;)Z +HSPLandroid/content/ContentResolver;->invalidPeriodicExtras(Landroid/os/Bundle;)Z +HSPLandroid/content/ContentResolver;->removePeriodicSync(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;)V +HSPLandroid/content/ContentResolver;->requestSyncAsUser(Landroid/accounts/Account;Ljava/lang/String;ILandroid/os/Bundle;)V +HSPLandroid/content/ContentResolver;->requestSync(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;)V +HSPLandroid/content/ContentResolver;->setIsSyncable(Landroid/accounts/Account;Ljava/lang/String;I)V +HSPLandroid/content/ContentResolver;->setSyncAutomaticallyAsUser(Landroid/accounts/Account;Ljava/lang/String;ZI)V +HSPLandroid/content/ContentResolver;->setSyncAutomatically(Landroid/accounts/Account;Ljava/lang/String;Z)V +HSPLandroid/content/ContentResolver;->validateSyncExtrasBundle(Landroid/os/Bundle;)V +HSPLandroid/content/ContentValues;->getAsByteArray(Ljava/lang/String;)[B +HSPLandroid/content/ContentValues;->valueSet()Ljava/util/Set; +HSPLandroid/content/Context;->registerComponentCallbacks(Landroid/content/ComponentCallbacks;)V +HSPLandroid/content/ContextWrapper;->databaseList()[Ljava/lang/String; +HSPLandroid/content/ContextWrapper;->deleteDatabase(Ljava/lang/String;)Z +HSPLandroid/content/ContextWrapper;->deleteFile(Ljava/lang/String;)Z +HSPLandroid/content/ContextWrapper;->getThemeResId()I +HSPLandroid/content/ContextWrapper;->moveSharedPreferencesFrom(Landroid/content/Context;Ljava/lang/String;)Z +HSPLandroid/content/ContextWrapper;->openOrCreateDatabase(Ljava/lang/String;ILandroid/database/sqlite/SQLiteDatabase$CursorFactory;)Landroid/database/sqlite/SQLiteDatabase; +HSPLandroid/content/ContextWrapper;->updateDisplay(I)V +HSPLandroid/content/IClipboard$Stub$Proxy;->addPrimaryClipChangedListener(Landroid/content/IOnPrimaryClipChangedListener;Ljava/lang/String;I)V +HSPLandroid/content/IContentService$Stub$Proxy;->addPeriodicSync(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;J)V +HSPLandroid/content/IContentService$Stub$Proxy;->getMasterSyncAutomatically()Z +HSPLandroid/content/IContentService$Stub$Proxy;->getSyncAutomatically(Landroid/accounts/Account;Ljava/lang/String;)Z +HSPLandroid/content/IContentService$Stub$Proxy;->removePeriodicSync(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;)V +HSPLandroid/content/IContentService$Stub$Proxy;->setIsSyncable(Landroid/accounts/Account;Ljava/lang/String;I)V +HSPLandroid/content/IContentService$Stub$Proxy;->setSyncAutomaticallyAsUser(Landroid/accounts/Account;Ljava/lang/String;ZI)V +HSPLandroid/content/IContentService$Stub$Proxy;->syncAsUser(Landroid/content/SyncRequest;ILjava/lang/String;)V +HSPLandroid/content/IIntentReceiver$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLandroid/content/IntentFilter;->matchAction(Ljava/lang/String;)Z +HSPLandroid/content/Intent;->putExtras(Landroid/content/Intent;)Landroid/content/Intent; +HSPLandroid/content/ISyncAdapter$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/content/ISyncAdapter$Stub;-><init>()V +HSPLandroid/content/ISyncAdapter$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLandroid/content/ISyncAdapterUnsyncableAccountCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V +HSPLandroid/content/ISyncAdapterUnsyncableAccountCallback$Stub$Proxy;->onUnsyncableAccountDone(Z)V +HSPLandroid/content/ISyncAdapterUnsyncableAccountCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/ISyncAdapterUnsyncableAccountCallback; +HSPLandroid/content/ISyncContext$Stub$Proxy;-><init>(Landroid/os/IBinder;)V +HSPLandroid/content/ISyncContext$Stub$Proxy;->onFinished(Landroid/content/SyncResult;)V +HSPLandroid/content/ISyncContext$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/ISyncContext; +HSPLandroid/content/om/OverlayManager;-><init>(Landroid/content/Context;Landroid/content/om/IOverlayManager;)V +HSPLandroid/content/pm/BaseParceledListSlice;-><init>(Ljava/util/List;)V +HSPLandroid/content/pm/ILauncherApps$Stub$Proxy;->addOnAppsChangedListener(Ljava/lang/String;Landroid/content/pm/IOnAppsChangedListener;)V +HSPLandroid/content/pm/ILauncherApps$Stub$Proxy;->getAllSessions(Ljava/lang/String;)Landroid/content/pm/ParceledListSlice; +HSPLandroid/content/pm/ILauncherApps$Stub$Proxy;->getLauncherActivities(Ljava/lang/String;Ljava/lang/String;Landroid/os/UserHandle;)Landroid/content/pm/ParceledListSlice; +HSPLandroid/content/pm/ILauncherApps$Stub$Proxy;->getShortcutConfigActivities(Ljava/lang/String;Ljava/lang/String;Landroid/os/UserHandle;)Landroid/content/pm/ParceledListSlice; +HSPLandroid/content/pm/ILauncherApps$Stub$Proxy;->getShortcuts(Ljava/lang/String;JLjava/lang/String;Ljava/util/List;Landroid/content/ComponentName;ILandroid/os/UserHandle;)Landroid/content/pm/ParceledListSlice; +HSPLandroid/content/pm/ILauncherApps$Stub$Proxy;->hasShortcutHostPermission(Ljava/lang/String;)Z +HSPLandroid/content/pm/ILauncherApps$Stub$Proxy;->isActivityEnabled(Ljava/lang/String;Landroid/content/ComponentName;Landroid/os/UserHandle;)Z +HSPLandroid/content/pm/ILauncherApps$Stub$Proxy;->isPackageEnabled(Ljava/lang/String;Ljava/lang/String;Landroid/os/UserHandle;)Z +HSPLandroid/content/pm/ILauncherApps$Stub$Proxy;->resolveActivity(Ljava/lang/String;Landroid/content/ComponentName;Landroid/os/UserHandle;)Landroid/content/pm/ActivityInfo; +HSPLandroid/content/pm/ILauncherApps$Stub$Proxy;->shouldHideFromSuggestions(Ljava/lang/String;Landroid/os/UserHandle;)Z +HSPLandroid/content/pm/IOnAppsChangedListener$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/content/pm/IOnAppsChangedListener$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLandroid/content/pm/IPackageInstaller$Stub$Proxy;-><init>(Landroid/os/IBinder;)V +HSPLandroid/content/pm/IPackageInstaller$Stub$Proxy;->registerCallback(Landroid/content/pm/IPackageInstallerCallback;I)V +HSPLandroid/content/pm/IPackageInstaller$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/pm/IPackageInstaller; +HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->addOnPermissionsChangeListener(Landroid/content/pm/IOnPermissionsChangeListener;)V +HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getHomeActivities(Ljava/util/List;)Landroid/content/ComponentName; +HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getPackageInstaller()Landroid/content/pm/IPackageInstaller; +HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getPackagesHoldingPermissions([Ljava/lang/String;II)Landroid/content/pm/ParceledListSlice; +HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getServicesSystemSharedLibraryPackageName()Ljava/lang/String; +HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getSharedSystemSharedLibraryPackageName()Ljava/lang/String; +HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getSystemAvailableFeatures()Landroid/content/pm/ParceledListSlice; +HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->isSafeMode()Z +HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->registerMoveCallback(Landroid/content/pm/IPackageMoveObserver;)V +HSPLandroid/content/pm/IPackageMoveObserver$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/content/pm/IPackageMoveObserver$Stub;-><init>()V +HSPLandroid/content/pm/LauncherApps$1;->onPackageChanged(Landroid/os/UserHandle;Ljava/lang/String;)V +HSPLandroid/content/pm/LauncherApps$1;->onShortcutChanged(Landroid/os/UserHandle;Ljava/lang/String;Landroid/content/pm/ParceledListSlice;)V +HSPLandroid/content/pm/LauncherApps;->access$100(Landroid/content/pm/LauncherApps;)Ljava/util/List; +HSPLandroid/content/pm/LauncherApps;->addCallbackLocked(Landroid/content/pm/LauncherApps$Callback;Landroid/os/Handler;)V +HSPLandroid/content/pm/LauncherApps;->convertToActivityList(Landroid/content/pm/ParceledListSlice;Landroid/os/UserHandle;)Ljava/util/List; +HSPLandroid/content/pm/LauncherApps;->findCallbackLocked(Landroid/content/pm/LauncherApps$Callback;)I +HSPLandroid/content/pm/LauncherApps;->getActivityList(Ljava/lang/String;Landroid/os/UserHandle;)Ljava/util/List; +HSPLandroid/content/pm/LauncherApps;->getAllPackageInstallerSessions()Ljava/util/List; +HSPLandroid/content/pm/LauncherApps;->getShortcutConfigActivityList(Ljava/lang/String;Landroid/os/UserHandle;)Ljava/util/List; +HSPLandroid/content/pm/LauncherApps;->getShortcuts(Landroid/content/pm/LauncherApps$ShortcutQuery;Landroid/os/UserHandle;)Ljava/util/List; +HSPLandroid/content/pm/LauncherApps;->hasShortcutHostPermission()Z +HSPLandroid/content/pm/LauncherApps;->isActivityEnabled(Landroid/content/ComponentName;Landroid/os/UserHandle;)Z +HSPLandroid/content/pm/LauncherApps;->isPackageEnabled(Ljava/lang/String;Landroid/os/UserHandle;)Z +HSPLandroid/content/pm/LauncherApps;->logErrorForInvalidProfileAccess(Landroid/os/UserHandle;)V +HSPLandroid/content/pm/LauncherApps;->maybeUpdateDisabledMessage(Ljava/util/List;)Ljava/util/List; +HSPLandroid/content/pm/LauncherApps;->registerCallback(Landroid/content/pm/LauncherApps$Callback;Landroid/os/Handler;)V +HSPLandroid/content/pm/LauncherApps;->registerCallback(Landroid/content/pm/LauncherApps$Callback;)V +HSPLandroid/content/pm/LauncherApps;->removeCallbackLocked(Landroid/content/pm/LauncherApps$Callback;)V +HSPLandroid/content/pm/LauncherApps;->resolveActivity(Landroid/content/Intent;Landroid/os/UserHandle;)Landroid/content/pm/LauncherActivityInfo; +HSPLandroid/content/pm/LauncherApps;->shouldHideFromSuggestions(Ljava/lang/String;Landroid/os/UserHandle;)Z +HSPLandroid/content/pm/PackageInfo;-><init>()V +HSPLandroid/content/pm/PackageInstaller$SessionCallback;-><init>()V +HSPLandroid/content/pm/PackageInstaller;->registerSessionCallback(Landroid/content/pm/PackageInstaller$SessionCallback;)V +HSPLandroid/content/pm/PackageManager;->getPackageArchiveInfo(Ljava/lang/String;I)Landroid/content/pm/PackageInfo; +HSPLandroid/content/pm/PackageParser$CallbackImpl;->getOverlayPaths(Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String; +HSPLandroid/content/pm/PackageParser$CallbackImpl;->hasFeature(Ljava/lang/String;)Z +HSPLandroid/content/pm/PackageParser$CallbackImpl;-><init>(Landroid/content/pm/PackageManager;)V +HSPLandroid/content/pm/PackageParser;->generatePackageInfo(Landroid/content/pm/PackageParser$Package;[IIJJLjava/util/Set;Landroid/content/pm/PackageUserState;)Landroid/content/pm/PackageInfo; +HSPLandroid/content/pm/ParceledListSlice;-><init>(Ljava/util/List;)V +HSPLandroid/content/pm/ServiceInfo$1;->newArray(I)[Landroid/content/pm/ServiceInfo; +HSPLandroid/content/pm/ServiceInfo$1;->newArray(I)[Ljava/lang/Object; +HSPLandroid/content/pm/ShortcutInfo;->getActivity()Landroid/content/ComponentName; +HSPLandroid/content/pm/ShortcutInfo;->getDisabledReasonForRestoreIssue(Landroid/content/Context;I)Ljava/lang/String; +HSPLandroid/content/pm/ShortcutInfo;->getDisabledReason()I +HSPLandroid/content/pm/ShortcutInfo;->getPackage()Ljava/lang/String; +HSPLandroid/content/pm/ShortcutInfo;->getUserHandle()Landroid/os/UserHandle; +HSPLandroid/content/pm/ShortcutInfo;->hasFlags(I)Z +HSPLandroid/content/pm/ShortcutInfo;->isDeclaredInManifest()Z +HSPLandroid/content/pm/ShortcutInfo;->isDynamic()Z +HSPLandroid/content/pm/ShortcutInfo;->isEnabled()Z +HSPLandroid/content/res/ApkAssets;->close()V +HSPLandroid/content/res/AssetFileDescriptor;-><init>(Landroid/os/ParcelFileDescriptor;JJ)V +HSPLandroid/content/res/AssetManager;->isUpToDate()Z +HSPLandroid/content/res/AssetManager;->openFd(Ljava/lang/String;)Landroid/content/res/AssetFileDescriptor; +HSPLandroid/content/res/ComplexColor;-><init>()V +HSPLandroid/content/res/Configuration;->isOtherSeqNewer(Landroid/content/res/Configuration;)Z +HSPLandroid/content/res/ConstantState;-><init>()V +HSPLandroid/content/res/GradientColor;->access$000(Landroid/content/res/GradientColor;)I +HSPLandroid/content/res/GradientColor;->canApplyTheme()Z +HSPLandroid/content/res/GradientColor;->createFromXmlInner(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)Landroid/content/res/GradientColor; +HSPLandroid/content/res/GradientColor;->getConstantState()Landroid/content/res/ConstantState; +HSPLandroid/content/res/GradientColor;->getDefaultColor()I +HSPLandroid/content/res/GradientColor;->getShader()Landroid/graphics/Shader; +HSPLandroid/content/res/GradientColor;->inflateChildElements(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V +HSPLandroid/content/res/GradientColor;->inflate(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V +HSPLandroid/content/res/GradientColor;-><init>()V +HSPLandroid/content/res/GradientColor;->onColorsChange()V +HSPLandroid/content/res/GradientColor;->parseTileMode(I)Landroid/graphics/Shader$TileMode; +HSPLandroid/content/res/GradientColor;->updateRootElementState(Landroid/content/res/TypedArray;)V +HSPLandroid/content/res/GradientColor;->validateXmlContent()V +HSPLandroid/content/res/Resources;->getDrawableForDensity(II)Landroid/graphics/drawable/Drawable; +HSPLandroid/content/res/ResourcesImpl;->loadColorOrXmlDrawable(Landroid/content/res/Resources;Landroid/util/TypedValue;IILjava/lang/String;)Landroid/graphics/drawable/Drawable; +HSPLandroid/content/res/Resources;->obtainAttributes(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;Landroid/util/AttributeSet;[I)Landroid/content/res/TypedArray; +HSPLandroid/content/res/StringBlock;->close()V +HSPLandroid/content/res/TypedArray;->getThemeAttributeId(II)I +HSPLandroid/content/SyncContext;-><init>(Landroid/content/ISyncContext;)V +HSPLandroid/content/SyncContext;->onFinished(Landroid/content/SyncResult;)V +HSPLandroid/content/SyncRequest$Builder;->access$1000(Landroid/content/SyncRequest$Builder;)Z +HSPLandroid/content/SyncRequest$Builder;->access$100(Landroid/content/SyncRequest$Builder;)J +HSPLandroid/content/SyncRequest$Builder;->access$200(Landroid/content/SyncRequest$Builder;)J +HSPLandroid/content/SyncRequest$Builder;->access$300(Landroid/content/SyncRequest$Builder;)Landroid/accounts/Account; +HSPLandroid/content/SyncRequest$Builder;->access$400(Landroid/content/SyncRequest$Builder;)Ljava/lang/String; +HSPLandroid/content/SyncRequest$Builder;->access$500(Landroid/content/SyncRequest$Builder;)I +HSPLandroid/content/SyncRequest$Builder;->access$600(Landroid/content/SyncRequest$Builder;)I +HSPLandroid/content/SyncRequest$Builder;->access$700(Landroid/content/SyncRequest$Builder;)Z +HSPLandroid/content/SyncRequest$Builder;->access$800(Landroid/content/SyncRequest$Builder;)Landroid/os/Bundle; +HSPLandroid/content/SyncRequest$Builder;->access$900(Landroid/content/SyncRequest$Builder;)Landroid/os/Bundle; +HSPLandroid/content/SyncRequest$Builder;->build()Landroid/content/SyncRequest; +HSPLandroid/content/SyncRequest$Builder;-><init>()V +HSPLandroid/content/SyncRequest$Builder;->setExtras(Landroid/os/Bundle;)Landroid/content/SyncRequest$Builder; +HSPLandroid/content/SyncRequest$Builder;->setSyncAdapter(Landroid/accounts/Account;Ljava/lang/String;)Landroid/content/SyncRequest$Builder; +HSPLandroid/content/SyncRequest$Builder;->setupInterval(JJ)V +HSPLandroid/content/SyncRequest$Builder;->syncOnce()Landroid/content/SyncRequest$Builder; +HSPLandroid/content/SyncRequest;-><init>(Landroid/content/SyncRequest$Builder;)V +HSPLandroid/content/SyncRequest;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/content/SyncResult;-><init>()V +HSPLandroid/content/SyncResult;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/content/SyncStats;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/database/AbstractCursor$SelfContentObserver;-><init>(Landroid/database/AbstractCursor;)V +HSPLandroid/database/AbstractCursor;->getExtras()Landroid/os/Bundle; +HSPLandroid/database/AbstractCursor;->setNotificationUris(Landroid/content/ContentResolver;Ljava/util/List;IZ)V +HSPLandroid/database/AbstractWindowedCursor;->setWindow(Landroid/database/CursorWindow;)V +HSPLandroid/database/CrossProcessCursorWrapper;->getWindow()Landroid/database/CursorWindow; +HSPLandroid/database/CursorWindow;-><init>(Ljava/lang/String;)V +HSPLandroid/database/CursorWindow;-><init>(Z)V +HSPLandroid/database/CursorWindow;->putBlob([BII)Z +HSPLandroid/database/CursorWindow;->putDouble(DII)Z +HSPLandroid/database/CursorWrapper;->getExtras()Landroid/os/Bundle; +HSPLandroid/database/CursorWrapper;->getWantsAllOnMoveCalls()Z +HSPLandroid/database/CursorWrapper;->getWrappedCursor()Landroid/database/Cursor; +HSPLandroid/database/DatabaseUtils;->queryNumEntries(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;)J +HSPLandroid/database/DatabaseUtils;->queryNumEntries(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)J +HSPLandroid/database/DatabaseUtils;->stringForQuery(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;[Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/database/DatabaseUtils;->stringForQuery(Landroid/database/sqlite/SQLiteStatement;[Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/database/MatrixCursor;->getBlob(I)[B +HSPLandroid/database/MatrixCursor;->getDouble(I)D +HSPLandroid/database/sqlite/SQLiteCursor;->setWindow(Landroid/database/CursorWindow;)V +HSPLandroid/database/sqlite/SQLiteDatabase$1;->accept(Ljava/io/File;)Z +HSPLandroid/database/sqlite/SQLiteDatabase$1;-><init>(Ljava/lang/String;)V +HSPLandroid/database/sqlite/SQLiteDatabase$OpenParams$Builder;->addOpenFlags(I)Landroid/database/sqlite/SQLiteDatabase$OpenParams$Builder; +HSPLandroid/database/sqlite/SQLiteDatabase$OpenParams$Builder;->build()Landroid/database/sqlite/SQLiteDatabase$OpenParams; +HSPLandroid/database/sqlite/SQLiteDatabase$OpenParams$Builder;-><init>(Landroid/database/sqlite/SQLiteDatabase$OpenParams;)V +HSPLandroid/database/sqlite/SQLiteDatabase$OpenParams;->access$000(Landroid/database/sqlite/SQLiteDatabase$OpenParams;)I +HSPLandroid/database/sqlite/SQLiteDatabase$OpenParams;->access$100(Landroid/database/sqlite/SQLiteDatabase$OpenParams;)Landroid/database/sqlite/SQLiteDatabase$CursorFactory; +HSPLandroid/database/sqlite/SQLiteDatabase$OpenParams;->access$200(Landroid/database/sqlite/SQLiteDatabase$OpenParams;)Landroid/database/DatabaseErrorHandler; +HSPLandroid/database/sqlite/SQLiteDatabase$OpenParams;->access$300(Landroid/database/sqlite/SQLiteDatabase$OpenParams;)I +HSPLandroid/database/sqlite/SQLiteDatabase$OpenParams;->access$400(Landroid/database/sqlite/SQLiteDatabase$OpenParams;)I +HSPLandroid/database/sqlite/SQLiteDatabase$OpenParams;->access$600(Landroid/database/sqlite/SQLiteDatabase$OpenParams;)Ljava/lang/String; +HSPLandroid/database/sqlite/SQLiteDatabase$OpenParams;->access$700(Landroid/database/sqlite/SQLiteDatabase$OpenParams;)Ljava/lang/String; +HSPLandroid/database/sqlite/SQLiteDatabase$OpenParams;-><init>(ILandroid/database/sqlite/SQLiteDatabase$CursorFactory;Landroid/database/DatabaseErrorHandler;IIJLjava/lang/String;Ljava/lang/String;Landroid/database/sqlite/SQLiteDatabase$1;)V +HSPLandroid/database/sqlite/SQLiteDatabase;->beginTransactionNonExclusive()V +HSPLandroid/database/sqlite/SQLiteDatabase;->deleteDatabase(Ljava/io/File;)Z +HSPLandroid/database/sqlite/SQLiteDatabase;->deleteDatabase(Ljava/io/File;Z)Z +HSPLandroid/database/sqlite/SQLiteDatabase;->getMaximumSize()J +HSPLandroid/database/sqlite/SQLiteDatabase;->getPageSize()J +HSPLandroid/database/sqlite/SQLiteDatabase;->getThreadDefaultConnectionFlags(Z)I +HSPLandroid/database/sqlite/SQLiteDatabase;->getThreadSession()Landroid/database/sqlite/SQLiteSession; +HSPLandroid/database/sqlite/SQLiteDatabase;->query(ZLjava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/os/CancellationSignal;)Landroid/database/Cursor; +HSPLandroid/database/sqlite/SQLiteDatabase;->rawQuery(Ljava/lang/String;[Ljava/lang/String;Landroid/os/CancellationSignal;)Landroid/database/Cursor; +HSPLandroid/database/sqlite/SQLiteDatabase;->releaseMemory()I +HSPLandroid/database/sqlite/SQLiteGlobal;->releaseMemory()I +HSPLandroid/database/sqlite/SQLiteOpenHelper;->setOpenParamsBuilder(Landroid/database/sqlite/SQLiteDatabase$OpenParams$Builder;)V +HSPLandroid/database/sqlite/SQLiteOpenHelper;->setOpenParams(Landroid/database/sqlite/SQLiteDatabase$OpenParams;)V +HSPLandroid/database/sqlite/SQLiteProgram;->bindAllArgsAsStrings([Ljava/lang/String;)V +HSPLandroid/database/sqlite/SQLiteProgram;->getBindArgs()[Ljava/lang/Object; +HSPLandroid/database/sqlite/SQLiteProgram;->getConnectionFlags()I +HSPLandroid/database/sqlite/SQLiteProgram;->getSession()Landroid/database/sqlite/SQLiteSession; +HSPLandroid/database/sqlite/SQLiteProgram;->getSql()Ljava/lang/String; +HSPLandroid/database/sqlite/SQLiteQueryBuilder;->query(Landroid/database/sqlite/SQLiteDatabase;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor; +HSPLandroid/database/sqlite/SQLiteSession;->acquireConnection(Ljava/lang/String;ILandroid/os/CancellationSignal;)V +HSPLandroid/database/sqlite/SQLiteSession;->executeForString(Ljava/lang/String;[Ljava/lang/Object;ILandroid/os/CancellationSignal;)Ljava/lang/String; +HSPLandroid/database/sqlite/SQLiteStatement;->simpleQueryForString()Ljava/lang/String; +HSPLandroid/graphics/-$$Lambda$ColorSpace$Rgb$8EkhO2jIf14tuA3BvrmYJMa7YXM;->applyAsDouble(D)D +HSPLandroid/graphics/BaseCanvas;->drawBitmap(Landroid/graphics/Bitmap;FFLandroid/graphics/Paint;)V +HSPLandroid/graphics/BaseCanvas;->drawBitmap(Landroid/graphics/Bitmap;Landroid/graphics/Matrix;Landroid/graphics/Paint;)V +HSPLandroid/graphics/BaseRecordingCanvas;->drawBitmap(Landroid/graphics/Bitmap;Landroid/graphics/Rect;Landroid/graphics/RectF;Landroid/graphics/Paint;)V +HSPLandroid/graphics/BaseRecordingCanvas;->drawRoundRect(FFFFFFLandroid/graphics/Paint;)V +HSPLandroid/graphics/Bitmap;->checkRecycled(Ljava/lang/String;)V +HSPLandroid/graphics/Bitmap;->createBitmap(Landroid/graphics/Bitmap;IIII)Landroid/graphics/Bitmap; +HSPLandroid/graphics/Bitmap;->createBitmap(Landroid/graphics/Bitmap;)Landroid/graphics/Bitmap; +HSPLandroid/graphics/Bitmap;->extractAlpha(Landroid/graphics/Paint;[I)Landroid/graphics/Bitmap; +HSPLandroid/graphics/BitmapFactory$Options;->nativeColorSpace(Landroid/graphics/BitmapFactory$Options;)J +HSPLandroid/graphics/BitmapFactory$Options;->nativeInBitmap(Landroid/graphics/BitmapFactory$Options;)J +HSPLandroid/graphics/BitmapFactory;->decodeFileDescriptor(Ljava/io/FileDescriptor;)Landroid/graphics/Bitmap; +HSPLandroid/graphics/BitmapFactory;->decodeFileDescriptor(Ljava/io/FileDescriptor;Landroid/graphics/Rect;Landroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap; +HSPLandroid/graphics/Bitmap;->getNativeInstance()J +HSPLandroid/graphics/Bitmap;->noteHardwareBitmapSlowCall()V +HSPLandroid/graphics/BlendMode;->blendModeToPorterDuffMode(Landroid/graphics/BlendMode;)Landroid/graphics/PorterDuff$Mode; +HSPLandroid/graphics/BlendModeColorFilter;->createNativeInstance()J +HSPLandroid/graphics/BlendModeColorFilter;->getColor()I +HSPLandroid/graphics/BlendModeColorFilter;->getMode()Landroid/graphics/BlendMode; +HSPLandroid/graphics/BlendModeColorFilter;-><init>(ILandroid/graphics/BlendMode;)V +HSPLandroid/graphics/BlendMode;->fromValue(I)Landroid/graphics/BlendMode; +HSPLandroid/graphics/BlendMode;->getXfermode()Landroid/graphics/Xfermode; +HSPLandroid/graphics/Canvas;->checkValidSaveFlags(I)V +HSPLandroid/graphics/Canvas;->clipOutPath(Landroid/graphics/Path;)Z +HSPLandroid/graphics/Canvas;->drawBitmap(Landroid/graphics/Bitmap;Landroid/graphics/Matrix;Landroid/graphics/Paint;)V +HSPLandroid/graphics/Canvas;->getClipBounds()Landroid/graphics/Rect; +HSPLandroid/graphics/Canvas;->saveLayer(FFFFLandroid/graphics/Paint;I)I +HSPLandroid/graphics/Canvas;->saveLayer(Landroid/graphics/RectF;Landroid/graphics/Paint;)I +HSPLandroid/graphics/Canvas;->saveLayer(Landroid/graphics/RectF;Landroid/graphics/Paint;I)I +HSPLandroid/graphics/ColorFilter;->discardNativeInstance()V +HSPLandroid/graphics/ColorFilter;-><init>()V +HSPLandroid/graphics/Color;->luminance(I)F +HSPLandroid/graphics/ColorMatrixColorFilter;-><init>([F)V +HSPLandroid/graphics/ColorMatrixColorFilter;->setColorMatrixArray([F)V +HSPLandroid/graphics/ColorMatrix;->set([F)V +HSPLandroid/graphics/ColorSpace$Rgb;->clamp(D)D +HSPLandroid/graphics/ColorSpace$Rgb;->getEotf()Ljava/util/function/DoubleUnaryOperator; +HSPLandroid/graphics/ColorSpace$Rgb;->lambda$8EkhO2jIf14tuA3BvrmYJMa7YXM(Landroid/graphics/ColorSpace$Rgb;D)D +HSPLandroid/graphics/CornerPathEffect;-><init>(F)V +HSPLandroid/graphics/drawable/AdaptiveIconDrawable$ChildDrawable;-><init>(I)V +HSPLandroid/graphics/drawable/AdaptiveIconDrawable;->addLayer(ILandroid/graphics/drawable/AdaptiveIconDrawable$ChildDrawable;)V +HSPLandroid/graphics/drawable/AdaptiveIconDrawable;->createChildDrawable(Landroid/graphics/drawable/Drawable;)Landroid/graphics/drawable/AdaptiveIconDrawable$ChildDrawable; +HSPLandroid/graphics/drawable/AdaptiveIconDrawable;->getBackground()Landroid/graphics/drawable/Drawable; +HSPLandroid/graphics/drawable/AdaptiveIconDrawable;->getExtraInsetFraction()F +HSPLandroid/graphics/drawable/AdaptiveIconDrawable;->getForeground()Landroid/graphics/drawable/Drawable; +HSPLandroid/graphics/drawable/AdaptiveIconDrawable;->getIconMask()Landroid/graphics/Path; +HSPLandroid/graphics/drawable/AdaptiveIconDrawable;-><init>(Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;)V +HSPLandroid/graphics/drawable/AdaptiveIconDrawable;->mutate()Landroid/graphics/drawable/Drawable; +HSPLandroid/graphics/drawable/AnimatedVectorDrawable$AnimatedVectorDrawableState;->newDrawable()Landroid/graphics/drawable/Drawable; +HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->access$200(Landroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;)Landroid/animation/Animator$AnimatorListener; +HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->access$300(Landroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;Landroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimator;)V +HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->addPendingAction(I)V +HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->createRTAnimatorForRootGroup([Landroid/animation/PropertyValuesHolder;Landroid/animation/ObjectAnimator;Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;J)V +HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->invalidateOwningView()V +HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->isRunning()Z +HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->reset()V +HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->transferPendingActions(Landroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimator;)V +HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->useLastSeenTarget()Z +HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->access$1700(JFF)J +HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->access$700(Landroid/graphics/drawable/AnimatedVectorDrawable;)Ljava/util/ArrayList; +HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->clearAnimationCallbacks()V +HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->ensureAnimatorSet()V +HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->fallbackOntoUI()V +HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->forceAnimationOnUI()V +HSPLandroid/graphics/drawable/AnimatedVectorDrawable;-><init>(Landroid/graphics/drawable/AnimatedVectorDrawable$AnimatedVectorDrawableState;Landroid/content/res/Resources;Landroid/graphics/drawable/AnimatedVectorDrawable$1;)V +HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->registerAnimationCallback(Landroid/graphics/drawable/Animatable2$AnimationCallback;)V +HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->removeAnimatorSetListener()V +HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->reset()V +HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->setColorFilter(Landroid/graphics/ColorFilter;)V +HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->setTintBlendMode(Landroid/graphics/BlendMode;)V +HSPLandroid/graphics/drawable/BitmapDrawable;->setTintBlendMode(Landroid/graphics/BlendMode;)V +HSPLandroid/graphics/drawable/ColorDrawable;-><init>()V +HSPLandroid/graphics/drawable/ColorDrawable;->setTintList(Landroid/content/res/ColorStateList;)V +HSPLandroid/graphics/drawable/Drawable$ConstantState;->newDrawable(Landroid/content/res/Resources;)Landroid/graphics/drawable/Drawable; +HSPLandroid/graphics/drawable/Drawable;->clearMutated()V +HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;->getChildCount()I +HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;->growArray(II)V +HSPLandroid/graphics/drawable/DrawableContainer;->getAlpha()I +HSPLandroid/graphics/drawable/Drawable;->inflate(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V +HSPLandroid/graphics/drawable/Drawable;->mutate()Landroid/graphics/drawable/Drawable; +HSPLandroid/graphics/drawable/Drawable;->parseBlendMode(ILandroid/graphics/BlendMode;)Landroid/graphics/BlendMode; +HSPLandroid/graphics/drawable/Drawable;->setTintMode(Landroid/graphics/PorterDuff$Mode;)V +HSPLandroid/graphics/drawable/Drawable;->updateBlendModeFilter(Landroid/graphics/BlendModeColorFilter;Landroid/content/res/ColorStateList;Landroid/graphics/BlendMode;)Landroid/graphics/BlendModeColorFilter; +HSPLandroid/graphics/drawable/DrawableWrapper;->getOpacity()I +HSPLandroid/graphics/drawable/DrawableWrapper;-><init>(Landroid/graphics/drawable/Drawable;)V +HSPLandroid/graphics/drawable/DrawableWrapper;->mutateConstantState()Landroid/graphics/drawable/DrawableWrapper$DrawableWrapperState; +HSPLandroid/graphics/drawable/DrawableWrapper;->onLevelChange(I)Z +HSPLandroid/graphics/drawable/GradientDrawable$GradientState;->getAngleFromOrientation(Landroid/graphics/drawable/GradientDrawable$Orientation;)I +HSPLandroid/graphics/drawable/GradientDrawable$GradientState;->updateGradientStateOrientation()V +HSPLandroid/graphics/drawable/Icon;->loadDrawableAsUser(Landroid/content/Context;I)Landroid/graphics/drawable/Drawable; +HSPLandroid/graphics/drawable/Icon;->sameAs(Landroid/graphics/drawable/Icon;)Z +HSPLandroid/graphics/drawable/Icon;->setTintMode(Landroid/graphics/PorterDuff$Mode;)Landroid/graphics/drawable/Icon; +HSPLandroid/graphics/drawable/LayerDrawable$LayerState;->newDrawable()Landroid/graphics/drawable/Drawable; +HSPLandroid/graphics/drawable/NinePatchDrawable;-><init>()V +HSPLandroid/graphics/drawable/NinePatchDrawable;->setAlpha(I)V +HSPLandroid/graphics/drawable/RippleDrawable;->setForceSoftware(Z)V +HSPLandroid/graphics/drawable/RotateDrawable;->mutateConstantState()Landroid/graphics/drawable/DrawableWrapper$DrawableWrapperState; +HSPLandroid/graphics/drawable/ShapeDrawable;->setTintList(Landroid/content/res/ColorStateList;)V +HSPLandroid/graphics/drawable/shapes/Shape;->clone()Landroid/graphics/drawable/shapes/Shape; +HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->getProperty(Ljava/lang/String;)Landroid/util/Property; +HSPLandroid/graphics/drawable/VectorDrawable$VGroup$2;->setValue(Landroid/graphics/drawable/VectorDrawable$VGroup;F)V +HSPLandroid/graphics/drawable/VectorDrawable$VGroup$2;->setValue(Ljava/lang/Object;F)V +HSPLandroid/graphics/drawable/VectorDrawable$VGroup$3;->setValue(Landroid/graphics/drawable/VectorDrawable$VGroup;F)V +HSPLandroid/graphics/drawable/VectorDrawable$VGroup$3;->setValue(Ljava/lang/Object;F)V +HSPLandroid/graphics/drawable/VectorDrawable$VGroup$4;->setValue(Landroid/graphics/drawable/VectorDrawable$VGroup;F)V +HSPLandroid/graphics/drawable/VectorDrawable$VGroup$4;->setValue(Ljava/lang/Object;F)V +HSPLandroid/graphics/drawable/VectorDrawable$VGroup$5;->setValue(Landroid/graphics/drawable/VectorDrawable$VGroup;F)V +HSPLandroid/graphics/drawable/VectorDrawable$VGroup$5;->setValue(Ljava/lang/Object;F)V +HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->setScaleX(F)V +HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->setScaleY(F)V +HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->setTranslateX(F)V +HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->setTranslateY(F)V +HSPLandroid/graphics/drawable/VectorDrawable$VPath$1;->set(Landroid/graphics/drawable/VectorDrawable$VPath;Landroid/util/PathParser$PathData;)V +HSPLandroid/graphics/drawable/VectorDrawable$VPath$1;->set(Ljava/lang/Object;Ljava/lang/Object;)V +HSPLandroid/graphics/drawable/VectorDrawable$VPath;->setPathData(Landroid/util/PathParser$PathData;)V +HSPLandroid/graphics/drawable/VectorDrawable;->access$2900(JF)V +HSPLandroid/graphics/drawable/VectorDrawable;->access$3100(JF)V +HSPLandroid/graphics/drawable/VectorDrawable;->access$3300(JF)V +HSPLandroid/graphics/drawable/VectorDrawable;->access$3500(JF)V +HSPLandroid/graphics/drawable/VectorDrawable;->access$3600(JJ)V +HSPLandroid/graphics/drawable/VectorDrawable;->setTintBlendMode(Landroid/graphics/BlendMode;)V +HSPLandroid/graphics/drawable/VectorDrawable;->updateColorFilters(Landroid/graphics/BlendMode;Landroid/content/res/ColorStateList;)V +HSPLandroid/graphics/HardwareRenderer;->buildLayer(Landroid/graphics/RenderNode;)V +HSPLandroid/graphics/HardwareRenderer;->overrideProperty(Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/graphics/HardwareRenderer;->setContextPriority(I)V +HSPLandroid/graphics/HardwareRenderer;->setFrameCallback(Landroid/graphics/HardwareRenderer$FrameDrawingCallback;)V +HSPLandroid/graphics/MaskFilter;->finalize()V +HSPLandroid/graphics/Matrix;->ni()J +HSPLandroid/graphics/Matrix;->postRotate(FFF)Z +HSPLandroid/graphics/Paint;->clearShadowLayer()V +HSPLandroid/graphics/Paint;->getFontMetrics()Landroid/graphics/Paint$FontMetrics; +HSPLandroid/graphics/Paint;->setARGB(IIII)V +HSPLandroid/graphics/Paint;->setFontFeatureSettings(Ljava/lang/String;)V +HSPLandroid/graphics/Paint;->setStrokeMiter(F)V +HSPLandroid/graphics/Path;->addCircle(FFFLandroid/graphics/Path$Direction;)V +HSPLandroid/graphics/Path;->addPath(Landroid/graphics/Path;)V +HSPLandroid/graphics/Path;->addRoundRect(FFFFFFLandroid/graphics/Path$Direction;)V +HSPLandroid/graphics/Path;->arcTo(Landroid/graphics/RectF;FF)V +HSPLandroid/graphics/PathEffect;-><init>()V +HSPLandroid/graphics/PathMeasure;->finalize()V +HSPLandroid/graphics/PathMeasure;->getLength()F +HSPLandroid/graphics/PathMeasure;->getPosTan(F[F[F)Z +HSPLandroid/graphics/PathMeasure;-><init>(Landroid/graphics/Path;Z)V +HSPLandroid/graphics/PathMeasure;-><init>()V +HSPLandroid/graphics/PathMeasure;->setPath(Landroid/graphics/Path;Z)V +HSPLandroid/graphics/Path;->op(Landroid/graphics/Path;Landroid/graphics/Path$Op;)Z +HSPLandroid/graphics/Path;->op(Landroid/graphics/Path;Landroid/graphics/Path;Landroid/graphics/Path$Op;)Z +HSPLandroid/graphics/Path;->quadTo(FFFF)V +HSPLandroid/graphics/Path;->readOnlyNI()J +HSPLandroid/graphics/Path;->rLineTo(FF)V +HSPLandroid/graphics/PointF;->set(Landroid/graphics/PointF;)V +HSPLandroid/graphics/Point;->readFromParcel(Landroid/os/Parcel;)V +HSPLandroid/graphics/RectF;->offsetTo(FF)V +HSPLandroid/graphics/Rect;->inset(II)V +HSPLandroid/graphics/Rect;->offsetTo(II)V +HSPLandroid/graphics/Rect;->setIntersect(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z +HSPLandroid/graphics/Region;->getBounds()Landroid/graphics/Rect; +HSPLandroid/graphics/Region;-><init>(IIII)V +HSPLandroid/graphics/RegionIterator;-><init>(Landroid/graphics/Region;)V +HSPLandroid/graphics/RegionIterator;->next(Landroid/graphics/Rect;)Z +HSPLandroid/graphics/Region;->ni()J +HSPLandroid/graphics/Region;->setPath(Landroid/graphics/Path;Landroid/graphics/Region;)Z +HSPLandroid/graphics/RenderNode$CompositePositionUpdateListener;-><init>([Landroid/graphics/RenderNode$PositionUpdateListener;)V +HSPLandroid/graphics/RenderNode$CompositePositionUpdateListener;->positionChanged(JIIII)V +HSPLandroid/graphics/RenderNode$CompositePositionUpdateListener;->positionLost(J)V +HSPLandroid/graphics/RenderNode$CompositePositionUpdateListener;->without(Landroid/graphics/RenderNode$PositionUpdateListener;)Landroid/graphics/RenderNode$CompositePositionUpdateListener; +HSPLandroid/graphics/RenderNode;->removePositionUpdateListener(Landroid/graphics/RenderNode$PositionUpdateListener;)V +HSPLandroid/graphics/Typeface;->create(Landroid/graphics/Typeface;IZ)Landroid/graphics/Typeface; +HSPLandroid/graphics/Typeface;->createWeightStyle(Landroid/graphics/Typeface;IZ)Landroid/graphics/Typeface; +HSPLandroid/hardware/biometrics/BiometricManager;->registerEnabledOnKeyguardCallback(Landroid/hardware/biometrics/IBiometricEnabledOnKeyguardCallback;)V +HSPLandroid/hardware/biometrics/BiometricSourceType;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/hardware/biometrics/IBiometricEnabledOnKeyguardCallback$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/hardware/biometrics/IBiometricEnabledOnKeyguardCallback$Stub;-><init>()V +HSPLandroid/hardware/biometrics/IBiometricEnabledOnKeyguardCallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLandroid/hardware/biometrics/IBiometricServiceLockoutResetCallback$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/hardware/biometrics/IBiometricServiceLockoutResetCallback$Stub;-><init>()V +HSPLandroid/hardware/Camera$CameraInfo;-><init>()V +HSPLandroid/hardware/camera2/CameraManager;->registerTorchCallback(Landroid/hardware/camera2/CameraManager$TorchCallback;Landroid/os/Handler;)V +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableBoolean;->createMarshaler(Landroid/hardware/camera2/utils/TypeReference;I)Landroid/hardware/camera2/marshal/Marshaler; +HSPLandroid/hardware/display/AmbientDisplayConfiguration;->boolSettingDefaultOn(Ljava/lang/String;I)Z +HSPLandroid/hardware/display/AmbientDisplayConfiguration;->boolSetting(Ljava/lang/String;II)Z +HSPLandroid/hardware/display/AmbientDisplayConfiguration;->tapGestureEnabled(I)Z +HSPLandroid/hardware/display/DisplayManager;->getStableDisplaySize()Landroid/graphics/Point; +HSPLandroid/hardware/display/DisplayManagerGlobal;->getStableDisplaySize()Landroid/graphics/Point; +HSPLandroid/hardware/display/IDisplayManager$Stub$Proxy;->getStableDisplaySize()Landroid/graphics/Point; +HSPLandroid/hardware/fingerprint/FingerprintManager$1;-><init>(Landroid/hardware/fingerprint/FingerprintManager;Landroid/os/PowerManager;Landroid/hardware/fingerprint/FingerprintManager$LockoutResetCallback;)V +HSPLandroid/hardware/fingerprint/FingerprintManager;->addLockoutResetCallback(Landroid/hardware/fingerprint/FingerprintManager$LockoutResetCallback;)V +HSPLandroid/hardware/fingerprint/IFingerprintService$Stub$Proxy;->addLockoutResetCallback(Landroid/hardware/biometrics/IBiometricServiceLockoutResetCallback;)V +HSPLandroid/hardware/input/IInputManager$Stub$Proxy;->hasKeys(II[I[Z)Z +HSPLandroid/hardware/input/InputManager;->deviceHasKeys(I[I)[Z +HSPLandroid/hardware/ISensorPrivacyListener$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/hardware/ISensorPrivacyListener$Stub;-><init>()V +HSPLandroid/hardware/ISensorPrivacyManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/ISensorPrivacyManager; +HSPLandroid/hardware/location/ContextHubInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/hardware/location/ContextHubInfo; +HSPLandroid/hardware/location/ContextHubInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/hardware/location/ContextHubInfo;->getMaxPacketLengthBytes()I +HSPLandroid/hardware/location/ContextHubInfo;-><init>(Landroid/os/Parcel;Landroid/hardware/location/ContextHubInfo$1;)V +HSPLandroid/hardware/location/ContextHubInfo;-><init>(Landroid/os/Parcel;)V +HSPLandroid/hardware/location/ContextHubManager;->access$000(Landroid/hardware/location/ContextHubManager;)Landroid/hardware/location/ContextHubManager$Callback; +HSPLandroid/hardware/location/ContextHubManager;->access$100(Landroid/hardware/location/ContextHubManager;)Landroid/os/Handler; +HSPLandroid/hardware/location/ContextHubManager;->access$200(Landroid/hardware/location/ContextHubManager;)Landroid/hardware/location/ContextHubManager$ICallback; +HSPLandroid/hardware/location/ContextHubManager;->access$300(Landroid/hardware/location/ContextHubManager;IILandroid/hardware/location/ContextHubMessage;)V +HSPLandroid/hardware/location/ContextHubManager;->createClientCallback(Landroid/hardware/location/ContextHubClient;Landroid/hardware/location/ContextHubClientCallback;Ljava/util/concurrent/Executor;)Landroid/hardware/location/IContextHubClientCallback; +HSPLandroid/hardware/location/ContextHubManager;->createClient(Landroid/hardware/location/ContextHubInfo;Landroid/hardware/location/ContextHubClientCallback;)Landroid/hardware/location/ContextHubClient; +HSPLandroid/hardware/location/ContextHubManager;->createClient(Landroid/hardware/location/ContextHubInfo;Landroid/hardware/location/ContextHubClientCallback;Ljava/util/concurrent/Executor;)Landroid/hardware/location/ContextHubClient; +HSPLandroid/hardware/location/ContextHubManager;->createQueryCallback(Landroid/hardware/location/ContextHubTransaction;)Landroid/hardware/location/IContextHubTransactionCallback; +HSPLandroid/hardware/location/ContextHubManager;->findNanoAppOnHub(ILandroid/hardware/location/NanoAppFilter;)[I +HSPLandroid/hardware/location/ContextHubManager;->getContextHubHandles()[I +HSPLandroid/hardware/location/ContextHubManager;->getContextHubInfo(I)Landroid/hardware/location/ContextHubInfo; +HSPLandroid/hardware/location/ContextHubManager;->getContextHubs()Ljava/util/List; +HSPLandroid/hardware/location/ContextHubManager;->getNanoAppInstanceInfo(I)Landroid/hardware/location/NanoAppInstanceInfo; +HSPLandroid/hardware/location/ContextHubManager;-><init>(Landroid/content/Context;Landroid/os/Looper;)V +HSPLandroid/hardware/location/ContextHubManager;->invokeOnMessageReceiptCallback(IILandroid/hardware/location/ContextHubMessage;)V +HSPLandroid/hardware/location/ContextHubManager;->queryNanoApps(Landroid/hardware/location/ContextHubInfo;)Landroid/hardware/location/ContextHubTransaction; +HSPLandroid/hardware/location/ContextHubManager;->registerCallback(Landroid/hardware/location/ContextHubManager$Callback;)I +HSPLandroid/hardware/location/ContextHubManager;->registerCallback(Landroid/hardware/location/ContextHubManager$Callback;Landroid/os/Handler;)I +HSPLandroid/hardware/location/ContextHubManager;->sendMessage(IILandroid/hardware/location/ContextHubMessage;)I +HSPLandroid/hardware/location/IActivityRecognitionHardware$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/location/IActivityRecognitionHardware; +HSPLandroid/hardware/location/IContextHubCallback$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/hardware/location/IContextHubCallback$Stub;-><init>()V +HSPLandroid/hardware/location/IContextHubCallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLandroid/hardware/location/IContextHubClientCallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLandroid/hardware/location/IContextHubService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/location/IContextHubService; +HSPLandroid/hardware/location/IContextHubTransactionCallback$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/hardware/location/IContextHubTransactionCallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLandroid/hardware/location/MemoryRegion$1;->newArray(I)[Landroid/hardware/location/MemoryRegion; +HSPLandroid/hardware/location/MemoryRegion$1;->newArray(I)[Ljava/lang/Object; +HSPLandroid/hardware/location/NanoAppInstanceInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/hardware/location/NanoAppInstanceInfo; +HSPLandroid/hardware/location/NanoAppInstanceInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/hardware/location/NanoAppInstanceInfo;-><init>(Landroid/os/Parcel;Landroid/hardware/location/NanoAppInstanceInfo$1;)V +HSPLandroid/hardware/location/NanoAppInstanceInfo;-><init>(Landroid/os/Parcel;)V +HSPLandroid/hardware/location/NanoAppMessage;->getMessageType()I +HSPLandroid/hardware/location/NanoAppMessage;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/hardware/location/NanoAppState$1;->createFromParcel(Landroid/os/Parcel;)Landroid/hardware/location/NanoAppState; +HSPLandroid/hardware/location/NanoAppState$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/hardware/location/NanoAppState;->getNanoAppId()J +HSPLandroid/hardware/location/NanoAppState;-><init>(Landroid/os/Parcel;Landroid/hardware/location/NanoAppState$1;)V +HSPLandroid/hardware/location/NanoAppState;-><init>(Landroid/os/Parcel;)V +HSPLandroid/hardware/radio/deprecated/V1_0/IOemHook;->asInterface(Landroid/os/IHwBinder;)Landroid/hardware/radio/deprecated/V1_0/IOemHook; +HSPLandroid/hardware/radio/deprecated/V1_0/IOemHookIndication$Stub;->asBinder()Landroid/os/IHwBinder; +HSPLandroid/hardware/radio/deprecated/V1_0/IOemHookIndication$Stub;->onTransact(ILandroid/os/HwParcel;Landroid/os/HwParcel;I)V +HSPLandroid/hardware/radio/deprecated/V1_0/IOemHookResponse$Stub;->asBinder()Landroid/os/IHwBinder; +HSPLandroid/hardware/radio/V1_0/CardStatus;-><init>()V +HSPLandroid/hardware/radio/V1_0/CardStatus;->readFromParcel(Landroid/os/HwParcel;)V +HSPLandroid/hardware/radio/V1_0/CdmaBroadcastSmsConfigInfo;->toString()Ljava/lang/String; +HSPLandroid/hardware/radio/V1_0/CdmaSignalStrength;-><init>()V +HSPLandroid/hardware/radio/V1_0/CdmaSignalStrength;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V +HSPLandroid/hardware/radio/V1_0/CellIdentityLte;-><init>()V +HSPLandroid/hardware/radio/V1_0/CellIdentityLte;->toString()Ljava/lang/String; +HSPLandroid/hardware/radio/V1_0/CellInfoType;->toString(I)Ljava/lang/String; +HSPLandroid/hardware/radio/V1_0/DataProfileInfo;->writeToParcel(Landroid/os/HwParcel;)V +HSPLandroid/hardware/radio/V1_0/DataRegStateResult;-><init>()V +HSPLandroid/hardware/radio/V1_0/DataRegStateResult;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V +HSPLandroid/hardware/radio/V1_0/DataRegStateResult;->readFromParcel(Landroid/os/HwParcel;)V +HSPLandroid/hardware/radio/V1_0/DataRegStateResult;->toString()Ljava/lang/String; +HSPLandroid/hardware/radio/V1_0/EvdoSignalStrength;-><init>()V +HSPLandroid/hardware/radio/V1_0/EvdoSignalStrength;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V +HSPLandroid/hardware/radio/V1_0/GsmSignalStrength;-><init>()V +HSPLandroid/hardware/radio/V1_0/GsmSignalStrength;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V +HSPLandroid/hardware/radio/V1_0/IccIo;->writeToParcel(Landroid/os/HwParcel;)V +HSPLandroid/hardware/radio/V1_0/LteSignalStrength;-><init>()V +HSPLandroid/hardware/radio/V1_0/RegState;->toString(I)Ljava/lang/String; +HSPLandroid/hardware/radio/V1_0/SetupDataCallResult;->toString()Ljava/lang/String; +HSPLandroid/hardware/radio/V1_0/TdScdmaSignalStrength;-><init>()V +HSPLandroid/hardware/radio/V1_0/TdScdmaSignalStrength;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V +HSPLandroid/hardware/radio/V1_0/VoiceRegStateResult;-><init>()V +HSPLandroid/hardware/radio/V1_0/VoiceRegStateResult;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V +HSPLandroid/hardware/radio/V1_0/VoiceRegStateResult;->readFromParcel(Landroid/os/HwParcel;)V +HSPLandroid/hardware/radio/V1_0/VoiceRegStateResult;->toString()Ljava/lang/String; +HSPLandroid/hardware/radio/V1_1/IRadio;->asInterface(Landroid/os/IHwBinder;)Landroid/hardware/radio/V1_1/IRadio; +HSPLandroid/hardware/radio/V1_1/IRadio;->getService(Ljava/lang/String;Z)Landroid/hardware/radio/V1_1/IRadio; +HSPLandroid/hardware/radio/V1_2/IRadio;->getService(Ljava/lang/String;Z)Landroid/hardware/radio/V1_2/IRadio; +HSPLandroid/hardware/Sensor;->getFifoMaxEventCount()I +HSPLandroid/hardware/SensorManager;->getDelay(I)I +HSPLandroid/hardware/SensorManager;-><init>()V +HSPLandroid/hardware/SensorManager;->registerListener(Landroid/hardware/SensorEventListener;Landroid/hardware/Sensor;IILandroid/os/Handler;)Z +HSPLandroid/hardware/SensorPrivacyManager;->addSensorPrivacyListener(Landroid/hardware/SensorPrivacyManager$OnSensorPrivacyChangedListener;)V +HSPLandroid/hardware/SensorPrivacyManager;->getInstance(Landroid/content/Context;)Landroid/hardware/SensorPrivacyManager; +HSPLandroid/hardware/SensorPrivacyManager;-><init>(Landroid/content/Context;Landroid/hardware/ISensorPrivacyManager;)V +HSPLandroid/hardware/SensorPrivacyManager;->isSensorPrivacyEnabled()Z +HSPLandroid/hardware/TriggerEventListener;-><init>()V +HSPLandroid/icu/impl/CacheValue$NullValue;->isNull()Z +HSPLandroid/icu/impl/coll/CollationData;->getCE32FromContexts(I)I +HSPLandroid/icu/impl/coll/CollationData;->getCE32(I)I +HSPLandroid/icu/impl/coll/CollationIterator$CEBuffer;->append(J)V +HSPLandroid/icu/impl/coll/CollationIterator$CEBuffer;->getCEs()[J +HSPLandroid/icu/impl/coll/CollationIterator$CEBuffer;->get(I)J +HSPLandroid/icu/impl/coll/CollationIterator$CEBuffer;->incLength()V +HSPLandroid/icu/impl/coll/CollationIterator$CEBuffer;-><init>()V +HSPLandroid/icu/impl/coll/CollationIterator$CEBuffer;->set(IJ)J +HSPLandroid/icu/impl/coll/CollationSettings;->dontCheckFCD()Z +HSPLandroid/icu/impl/coll/CollationSettings;->getAlternateHandling()Z +HSPLandroid/icu/impl/coll/CollationSettings;->getStrength(I)I +HSPLandroid/icu/impl/coll/CollationSettings;->hasReordering()Z +HSPLandroid/icu/impl/coll/CollationSettings;->isNumeric()Z +HSPLandroid/icu/impl/coll/SharedObject$Reference;->readOnly()Landroid/icu/impl/coll/SharedObject; +HSPLandroid/icu/impl/JavaTimeZone;->freeze()Landroid/icu/util/TimeZone; +HSPLandroid/icu/impl/JavaTimeZone;-><init>(Ljava/util/TimeZone;Ljava/lang/String;)V +HSPLandroid/icu/impl/number/ConstantMultiFieldModifier;->apply(Landroid/icu/impl/number/NumberStringBuilder;II)I +HSPLandroid/icu/impl/number/ConstantMultiFieldModifier;-><init>(Landroid/icu/impl/number/NumberStringBuilder;Landroid/icu/impl/number/NumberStringBuilder;ZZLandroid/icu/impl/number/Modifier$Parameters;)V +HSPLandroid/icu/impl/number/ConstantMultiFieldModifier;-><init>(Landroid/icu/impl/number/NumberStringBuilder;Landroid/icu/impl/number/NumberStringBuilder;ZZ)V +HSPLandroid/icu/impl/number/MicroProps;->clone()Ljava/lang/Object; +HSPLandroid/icu/impl/number/MutablePatternModifier$ImmutablePatternModifier;->applyToMicros(Landroid/icu/impl/number/MicroProps;Landroid/icu/impl/number/DecimalQuantity;)V +HSPLandroid/icu/impl/number/MutablePatternModifier$ImmutablePatternModifier;-><init>(Landroid/icu/impl/number/AdoptingModifierStore;Landroid/icu/text/PluralRules;Landroid/icu/impl/number/MicroPropsGenerator;)V +HSPLandroid/icu/impl/number/MutablePatternModifier$ImmutablePatternModifier;->processQuantity(Landroid/icu/impl/number/DecimalQuantity;)Landroid/icu/impl/number/MicroProps; +HSPLandroid/icu/impl/StandardPlural;->orOtherFromString(Ljava/lang/CharSequence;)Landroid/icu/impl/StandardPlural; +HSPLandroid/icu/impl/Trie2_32;->getFromU16SingleLead(C)I +HSPLandroid/icu/impl/Trie2_32;->get(I)I +HSPLandroid/icu/impl/UCharacterProperty;->getProperty(I)I +HSPLandroid/icu/impl/UCharacterProperty;->getType(I)I +HSPLandroid/icu/impl/UResource$Key;->contentEquals(Ljava/lang/CharSequence;)Z +HSPLandroid/icu/impl/UResource$Key;->regionMatches(ILjava/lang/CharSequence;I)Z +HSPLandroid/icu/lang/UCharacter;->getType(I)I +HSPLandroid/icu/text/AlphabeticIndex$1;-><init>(Landroid/icu/text/AlphabeticIndex;)V +HSPLandroid/icu/text/AlphabeticIndex$Bucket;->access$1400(Landroid/icu/text/AlphabeticIndex$Bucket;)I +HSPLandroid/icu/text/AlphabeticIndex$Bucket;->access$1402(Landroid/icu/text/AlphabeticIndex$Bucket;I)I +HSPLandroid/icu/text/AlphabeticIndex$Bucket;->access$800(Landroid/icu/text/AlphabeticIndex$Bucket;)Ljava/lang/String; +HSPLandroid/icu/text/AlphabeticIndex$Bucket;->access$900(Landroid/icu/text/AlphabeticIndex$Bucket;)Landroid/icu/text/AlphabeticIndex$Bucket; +HSPLandroid/icu/text/AlphabeticIndex$Bucket;->getLabel()Ljava/lang/String; +HSPLandroid/icu/text/AlphabeticIndex$Bucket;-><init>(Ljava/lang/String;Ljava/lang/String;Landroid/icu/text/AlphabeticIndex$Bucket$LabelType;Landroid/icu/text/AlphabeticIndex$1;)V +HSPLandroid/icu/text/AlphabeticIndex$Bucket;-><init>(Ljava/lang/String;Ljava/lang/String;Landroid/icu/text/AlphabeticIndex$Bucket$LabelType;)V +HSPLandroid/icu/text/AlphabeticIndex$BucketList;->access$200(Landroid/icu/text/AlphabeticIndex$BucketList;)I +HSPLandroid/icu/text/AlphabeticIndex$BucketList;->access$300(Landroid/icu/text/AlphabeticIndex$BucketList;Ljava/lang/CharSequence;Landroid/icu/text/Collator;)I +HSPLandroid/icu/text/AlphabeticIndex$BucketList;->access$400(Landroid/icu/text/AlphabeticIndex$BucketList;)Ljava/util/List; +HSPLandroid/icu/text/AlphabeticIndex$BucketList;->getBucketCount()I +HSPLandroid/icu/text/AlphabeticIndex$BucketList;->getBucketIndex(Ljava/lang/CharSequence;Landroid/icu/text/Collator;)I +HSPLandroid/icu/text/AlphabeticIndex$BucketList;-><init>(Ljava/util/ArrayList;Ljava/util/ArrayList;Landroid/icu/text/AlphabeticIndex$1;)V +HSPLandroid/icu/text/AlphabeticIndex$BucketList;-><init>(Ljava/util/ArrayList;Ljava/util/ArrayList;)V +HSPLandroid/icu/text/AlphabeticIndex$ImmutableIndex;->getBucket(I)Landroid/icu/text/AlphabeticIndex$Bucket; +HSPLandroid/icu/text/AlphabeticIndex$ImmutableIndex;->getBucketIndex(Ljava/lang/CharSequence;)I +HSPLandroid/icu/text/AlphabeticIndex$ImmutableIndex;-><init>(Landroid/icu/text/AlphabeticIndex$BucketList;Landroid/icu/text/Collator;Landroid/icu/text/AlphabeticIndex$1;)V +HSPLandroid/icu/text/AlphabeticIndex$ImmutableIndex;-><init>(Landroid/icu/text/AlphabeticIndex$BucketList;Landroid/icu/text/Collator;)V +HSPLandroid/icu/text/BreakIterator;->getSentenceInstance(Landroid/icu/util/ULocale;)Landroid/icu/text/BreakIterator; +HSPLandroid/icu/text/Collator;->compare(Ljava/lang/Object;Ljava/lang/Object;)I +HSPLandroid/icu/text/DateFormat;->format(Ljava/lang/Object;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer; +HSPLandroid/icu/text/DateFormat;->getInstanceForSkeleton(Ljava/lang/String;Landroid/icu/util/ULocale;)Landroid/icu/text/DateFormat; +HSPLandroid/icu/text/DateFormat;->getInstanceForSkeleton(Ljava/lang/String;Ljava/util/Locale;)Landroid/icu/text/DateFormat; +HSPLandroid/icu/text/DateFormat;->getPatternInstance(Ljava/lang/String;Landroid/icu/util/ULocale;)Landroid/icu/text/DateFormat; +HSPLandroid/icu/text/DateTimePatternGenerator;->getInstance(Landroid/icu/util/ULocale;)Landroid/icu/text/DateTimePatternGenerator; +HSPLandroid/icu/text/DisplayContext;->type()Landroid/icu/text/DisplayContext$Type; +HSPLandroid/icu/text/NumberFormat;->getInstance(Landroid/icu/util/ULocale;I)Landroid/icu/text/NumberFormat; +HSPLandroid/icu/text/NumberFormat;->getInstance(Landroid/icu/util/ULocale;)Landroid/icu/text/NumberFormat; +HSPLandroid/icu/text/PluralRules$Factory;->getDefaultFactory()Landroid/icu/impl/PluralRulesLoader; +HSPLandroid/icu/text/PluralRules;->forLocale(Landroid/icu/util/ULocale;)Landroid/icu/text/PluralRules; +HSPLandroid/icu/text/RuleBasedCollator$CollationBuffer;-><init>(Landroid/icu/impl/coll/CollationData;Landroid/icu/text/RuleBasedCollator$1;)V +HSPLandroid/icu/text/RuleBasedCollator$CollationBuffer;-><init>(Landroid/icu/impl/coll/CollationData;)V +HSPLandroid/icu/text/RuleBasedCollator$FCDUTF16NFDIterator;-><init>()V +HSPLandroid/icu/text/RuleBasedCollator$NFDIterator;-><init>()V +HSPLandroid/icu/text/RuleBasedCollator$UTF16NFDIterator;-><init>()V +HSPLandroid/icu/text/RuleBasedCollator;->freeze()Landroid/icu/text/Collator; +HSPLandroid/icu/text/RuleBasedCollator;->getCollationBuffer()Landroid/icu/text/RuleBasedCollator$CollationBuffer; +HSPLandroid/icu/text/RuleBasedCollator;->internalAddContractions(ILandroid/icu/text/UnicodeSet;)V +HSPLandroid/icu/text/RuleBasedCollator;->internalGetCEs(Ljava/lang/CharSequence;)[J +HSPLandroid/icu/text/RuleBasedCollator;->isAlternateHandlingShifted()Z +HSPLandroid/icu/text/RuleBasedCollator;->isFrozen()Z +HSPLandroid/icu/text/RuleBasedCollator;->releaseCollationBuffer(Landroid/icu/text/RuleBasedCollator$CollationBuffer;)V +HSPLandroid/icu/text/SimpleDateFormat;-><init>(Ljava/lang/String;Landroid/icu/text/DateFormatSymbols;Landroid/icu/util/Calendar;Landroid/icu/text/NumberFormat;Landroid/icu/util/ULocale;ZLjava/lang/String;)V +HSPLandroid/icu/text/SimpleDateFormat;-><init>(Ljava/lang/String;Landroid/icu/util/ULocale;)V +HSPLandroid/icu/text/UFieldPosition;->getCountVisibleFractionDigits()I +HSPLandroid/icu/text/UFieldPosition;->getFractionDigits()J +HSPLandroid/icu/text/UFieldPosition;-><init>(Ljava/text/Format$Field;I)V +HSPLandroid/icu/text/UnicodeSet$UnicodeSetIterator2;->hasNext()Z +HSPLandroid/icu/text/UnicodeSet$UnicodeSetIterator2;-><init>(Landroid/icu/text/UnicodeSet;)V +HSPLandroid/icu/text/UnicodeSet$UnicodeSetIterator2;->next()Ljava/lang/Object; +HSPLandroid/icu/text/UnicodeSet$UnicodeSetIterator2;->next()Ljava/lang/String; +HSPLandroid/icu/text/UnicodeSet;->access$400(Landroid/icu/text/UnicodeSet;)I +HSPLandroid/icu/text/UnicodeSet;->access$500(Landroid/icu/text/UnicodeSet;)[I +HSPLandroid/icu/text/UnicodeSet;->add(Ljava/lang/CharSequence;)Landroid/icu/text/UnicodeSet; +HSPLandroid/icu/text/UnicodeSet;->addString(Ljava/lang/CharSequence;)V +HSPLandroid/icu/text/UnicodeSet;->checkFrozen()V +HSPLandroid/icu/text/UnicodeSet;-><init>(Ljava/lang/String;I)V +HSPLandroid/icu/text/UnicodeSet;->isEmpty()Z +HSPLandroid/icu/text/UnicodeSet;->iterator()Ljava/util/Iterator; +HSPLandroid/icu/text/UTF16$StringComparator;-><init>(ZZI)V +HSPLandroid/icu/text/UTF16$StringComparator;->setCodePointCompare(Z)V +HSPLandroid/icu/text/UTF16;->_charAt(Ljava/lang/CharSequence;IC)I +HSPLandroid/icu/text/UTF16;->getLeadSurrogate(I)C +HSPLandroid/icu/text/UTF16;->getTrailSurrogate(I)C +HSPLandroid/icu/text/UTF16;->hasMoreCodePointsThan(Ljava/lang/String;I)Z +HSPLandroid/icu/util/BytesTrie$Result;->hasNext()Z +HSPLandroid/icu/util/BytesTrie$Result;->hasValue()Z +HSPLandroid/icu/util/CharsTrie$Entry;-><init>(Landroid/icu/util/CharsTrie$1;)V +HSPLandroid/icu/util/CharsTrie$Entry;-><init>()V +HSPLandroid/icu/util/CharsTrie$Iterator;->branchNext(II)I +HSPLandroid/icu/util/CharsTrie$Iterator;->hasNext()Z +HSPLandroid/icu/util/CharsTrie$Iterator;-><init>(Ljava/lang/CharSequence;IIILandroid/icu/util/CharsTrie$1;)V +HSPLandroid/icu/util/CharsTrie$Iterator;-><init>(Ljava/lang/CharSequence;III)V +HSPLandroid/icu/util/CharsTrie$Iterator;->next()Landroid/icu/util/CharsTrie$Entry; +HSPLandroid/icu/util/TimeZone;-><init>()V +HSPLandroid/icu/util/TimeZone;->setID(Ljava/lang/String;)V +HSPLandroid/location/IGnssStatusListener$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/location/IGnssStatusListener$Stub;-><init>()V +HSPLandroid/location/ILocationListener$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLandroid/location/ILocationManager$Stub$Proxy;->getAllProviders()Ljava/util/List; +HSPLandroid/location/ILocationManager$Stub$Proxy;->getExtraLocationControllerPackage()Ljava/lang/String; +HSPLandroid/location/ILocationManager$Stub$Proxy;->getLastLocation(Landroid/location/LocationRequest;Ljava/lang/String;)Landroid/location/Location; +HSPLandroid/location/ILocationManager$Stub$Proxy;->getProviderProperties(Ljava/lang/String;)Lcom/android/internal/location/ProviderProperties; +HSPLandroid/location/ILocationManager$Stub$Proxy;->isProviderEnabledForUser(Ljava/lang/String;I)Z +HSPLandroid/location/ILocationManager$Stub$Proxy;->locationCallbackFinished(Landroid/location/ILocationListener;)V +HSPLandroid/location/ILocationManager$Stub$Proxy;->registerGnssStatusCallback(Landroid/location/IGnssStatusListener;Ljava/lang/String;)Z +HSPLandroid/location/ILocationManager$Stub$Proxy;->setExtraLocationControllerPackageEnabled(Z)V +HSPLandroid/location/ILocationManager$Stub$Proxy;->setExtraLocationControllerPackage(Ljava/lang/String;)V +HSPLandroid/location/Location;->getVerticalAccuracyMeters()F +HSPLandroid/location/Location;->hasAltitude()Z +HSPLandroid/location/Location;->hasBearingAccuracy()Z +HSPLandroid/location/Location;->hasElapsedRealtimeUncertaintyNanos()Z +HSPLandroid/location/Location;->hasSpeedAccuracy()Z +HSPLandroid/location/Location;->hasVerticalAccuracy()Z +HSPLandroid/location/LocationManager$GnssStatusListenerTransport$GnssHandler;-><init>(Landroid/location/LocationManager$GnssStatusListenerTransport;Landroid/os/Handler;)V +HSPLandroid/location/LocationManager$GnssStatusListenerTransport;-><init>(Landroid/location/LocationManager;Landroid/location/GpsStatus$Listener;Landroid/os/Handler;)V +HSPLandroid/location/LocationManager;->addGpsStatusListener(Landroid/location/GpsStatus$Listener;)Z +HSPLandroid/location/LocationManager;->checkProvider(Ljava/lang/String;)V +HSPLandroid/location/LocationManager;->getAllProviders()Ljava/util/List; +HSPLandroid/location/LocationManager;->getExtraLocationControllerPackage()Ljava/lang/String; +HSPLandroid/location/LocationManager;->getLastKnownLocation(Ljava/lang/String;)Landroid/location/Location; +HSPLandroid/location/LocationManager;->removeGpsStatusListener(Landroid/location/GpsStatus$Listener;)V +HSPLandroid/location/LocationManager;->setLocationControllerExtraPackageEnabled(Z)V +HSPLandroid/location/LocationManager;->setLocationControllerExtraPackage(Ljava/lang/String;)V +HSPLandroid/location/LocationRequest;->setHideFromAppOps(Z)V +HSPLandroid/location/LocationRequest;->setLocationSettingsIgnored(Z)Landroid/location/LocationRequest; +HSPLandroid/location/LocationRequest;->setWorkSource(Landroid/os/WorkSource;)V +HSPLandroid/location/Location;->setProvider(Ljava/lang/String;)V +HSPLandroid/location/Location;->toString()Ljava/lang/String; +HSPLandroid/media/AudioDeviceInfo;->getProductName()Ljava/lang/CharSequence; +HSPLandroid/media/AudioManager;->getLastAudibleStreamVolume(I)I +HSPLandroid/media/AudioManager;->getService()Landroid/media/IAudioService; +HSPLandroid/media/AudioManager;->getStreamMinVolumeInt(I)I +HSPLandroid/media/AudioManager;->isStreamAffectedByMute(I)Z +HSPLandroid/media/AudioManager;->setVolumeController(Landroid/media/IVolumeController;)V +HSPLandroid/media/AudioManager;->setVolumePolicy(Landroid/media/VolumePolicy;)V +HSPLandroid/media/AudioPort;->name()Ljava/lang/String; +HSPLandroid/media/AudioSystem;->streamToString(I)Ljava/lang/String; +HSPLandroid/media/browse/MediaBrowser$1;-><init>(Landroid/media/browse/MediaBrowser;)V +HSPLandroid/media/browse/MediaBrowser$1;->run()V +HSPLandroid/media/browse/MediaBrowser$2;-><init>(Landroid/media/browse/MediaBrowser;)V +HSPLandroid/media/browse/MediaBrowser$2;->run()V +HSPLandroid/media/browse/MediaBrowser$6;-><init>(Landroid/media/browse/MediaBrowser;Landroid/service/media/IMediaBrowserServiceCallbacks;Ljava/lang/String;Landroid/media/session/MediaSession$Token;Landroid/os/Bundle;)V +HSPLandroid/media/browse/MediaBrowser$6;->run()V +HSPLandroid/media/browse/MediaBrowser$7;-><init>(Landroid/media/browse/MediaBrowser;Landroid/service/media/IMediaBrowserServiceCallbacks;)V +HSPLandroid/media/browse/MediaBrowser$7;->run()V +HSPLandroid/media/browse/MediaBrowser$8;-><init>(Landroid/media/browse/MediaBrowser;Landroid/service/media/IMediaBrowserServiceCallbacks;Ljava/lang/String;Landroid/os/Bundle;Landroid/content/pm/ParceledListSlice;)V +HSPLandroid/media/browse/MediaBrowser$8;->run()V +HSPLandroid/media/browse/MediaBrowser$ConnectionCallback;-><init>()V +HSPLandroid/media/browse/MediaBrowser$MediaItem$1;->createFromParcel(Landroid/os/Parcel;)Landroid/media/browse/MediaBrowser$MediaItem; +HSPLandroid/media/browse/MediaBrowser$MediaItem$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/media/browse/MediaBrowser$MediaItem;->getDescription()Landroid/media/MediaDescription; +HSPLandroid/media/browse/MediaBrowser$MediaItem;->getMediaId()Ljava/lang/String; +HSPLandroid/media/browse/MediaBrowser$MediaItem;-><init>(Landroid/os/Parcel;Landroid/media/browse/MediaBrowser$1;)V +HSPLandroid/media/browse/MediaBrowser$MediaItem;-><init>(Landroid/os/Parcel;)V +HSPLandroid/media/browse/MediaBrowser$MediaItem;->isBrowsable()Z +HSPLandroid/media/browse/MediaBrowser$MediaItem;->toString()Ljava/lang/String; +HSPLandroid/media/browse/MediaBrowser$MediaServiceConnection$1;-><init>(Landroid/media/browse/MediaBrowser$MediaServiceConnection;Landroid/content/ComponentName;Landroid/os/IBinder;)V +HSPLandroid/media/browse/MediaBrowser$MediaServiceConnection$1;->run()V +HSPLandroid/media/browse/MediaBrowser$MediaServiceConnection;->access$1600(Landroid/media/browse/MediaBrowser$MediaServiceConnection;Ljava/lang/String;)Z +HSPLandroid/media/browse/MediaBrowser$MediaServiceConnection;-><init>(Landroid/media/browse/MediaBrowser;Landroid/media/browse/MediaBrowser$1;)V +HSPLandroid/media/browse/MediaBrowser$MediaServiceConnection;-><init>(Landroid/media/browse/MediaBrowser;)V +HSPLandroid/media/browse/MediaBrowser$MediaServiceConnection;->isCurrent(Ljava/lang/String;)Z +HSPLandroid/media/browse/MediaBrowser$MediaServiceConnection;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V +HSPLandroid/media/browse/MediaBrowser$MediaServiceConnection;->postOrRun(Ljava/lang/Runnable;)V +HSPLandroid/media/browse/MediaBrowser$ServiceCallbacks;-><init>(Landroid/media/browse/MediaBrowser;)V +HSPLandroid/media/browse/MediaBrowser$ServiceCallbacks;->onConnectFailed()V +HSPLandroid/media/browse/MediaBrowser$ServiceCallbacks;->onConnect(Ljava/lang/String;Landroid/media/session/MediaSession$Token;Landroid/os/Bundle;)V +HSPLandroid/media/browse/MediaBrowser$ServiceCallbacks;->onLoadChildrenWithOptions(Ljava/lang/String;Landroid/content/pm/ParceledListSlice;Landroid/os/Bundle;)V +HSPLandroid/media/browse/MediaBrowser$SubscriptionCallback;-><init>()V +HSPLandroid/media/browse/MediaBrowser$Subscription;->getCallback(Landroid/content/Context;Landroid/os/Bundle;)Landroid/media/browse/MediaBrowser$SubscriptionCallback; +HSPLandroid/media/browse/MediaBrowser$Subscription;->getCallbacks()Ljava/util/List; +HSPLandroid/media/browse/MediaBrowser$Subscription;->getOptionsList()Ljava/util/List; +HSPLandroid/media/browse/MediaBrowser$Subscription;-><init>()V +HSPLandroid/media/browse/MediaBrowser$Subscription;->isEmpty()Z +HSPLandroid/media/browse/MediaBrowser$Subscription;->putCallback(Landroid/content/Context;Landroid/os/Bundle;Landroid/media/browse/MediaBrowser$SubscriptionCallback;)V +HSPLandroid/media/browse/MediaBrowser;->access$000(Landroid/media/browse/MediaBrowser;)I +HSPLandroid/media/browse/MediaBrowser;->access$002(Landroid/media/browse/MediaBrowser;I)I +HSPLandroid/media/browse/MediaBrowser;->access$100(Landroid/media/browse/MediaBrowser;)Landroid/service/media/IMediaBrowserService; +HSPLandroid/media/browse/MediaBrowser;->access$102(Landroid/media/browse/MediaBrowser;Landroid/service/media/IMediaBrowserService;)Landroid/service/media/IMediaBrowserService; +HSPLandroid/media/browse/MediaBrowser;->access$1102(Landroid/media/browse/MediaBrowser;Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/media/browse/MediaBrowser;->access$1202(Landroid/media/browse/MediaBrowser;Landroid/media/session/MediaSession$Token;)Landroid/media/session/MediaSession$Token; +HSPLandroid/media/browse/MediaBrowser;->access$1302(Landroid/media/browse/MediaBrowser;Landroid/os/Bundle;)Landroid/os/Bundle; +HSPLandroid/media/browse/MediaBrowser;->access$1400(Landroid/media/browse/MediaBrowser;)Landroid/util/ArrayMap; +HSPLandroid/media/browse/MediaBrowser;->access$1700(Landroid/media/browse/MediaBrowser;)Landroid/media/browse/MediaBrowser$ServiceCallbacks; +HSPLandroid/media/browse/MediaBrowser;->access$1800(Landroid/media/browse/MediaBrowser;)Landroid/os/Bundle; +HSPLandroid/media/browse/MediaBrowser;->access$1900(Landroid/media/browse/MediaBrowser;)Landroid/os/Handler; +HSPLandroid/media/browse/MediaBrowser;->access$2000(Landroid/media/browse/MediaBrowser;Landroid/service/media/IMediaBrowserServiceCallbacks;Ljava/lang/String;Landroid/media/session/MediaSession$Token;Landroid/os/Bundle;)V +HSPLandroid/media/browse/MediaBrowser;->access$200(Landroid/media/browse/MediaBrowser;)Landroid/service/media/IMediaBrowserServiceCallbacks; +HSPLandroid/media/browse/MediaBrowser;->access$202(Landroid/media/browse/MediaBrowser;Landroid/service/media/IMediaBrowserServiceCallbacks;)Landroid/service/media/IMediaBrowserServiceCallbacks; +HSPLandroid/media/browse/MediaBrowser;->access$2100(Landroid/media/browse/MediaBrowser;Landroid/service/media/IMediaBrowserServiceCallbacks;)V +HSPLandroid/media/browse/MediaBrowser;->access$2200(Landroid/media/browse/MediaBrowser;Landroid/service/media/IMediaBrowserServiceCallbacks;Ljava/lang/String;Landroid/content/pm/ParceledListSlice;Landroid/os/Bundle;)V +HSPLandroid/media/browse/MediaBrowser;->access$300(Landroid/media/browse/MediaBrowser;)Landroid/content/ComponentName; +HSPLandroid/media/browse/MediaBrowser;->access$400(Landroid/media/browse/MediaBrowser;)Landroid/media/browse/MediaBrowser$MediaServiceConnection; +HSPLandroid/media/browse/MediaBrowser;->access$402(Landroid/media/browse/MediaBrowser;Landroid/media/browse/MediaBrowser$MediaServiceConnection;)Landroid/media/browse/MediaBrowser$MediaServiceConnection; +HSPLandroid/media/browse/MediaBrowser;->access$600(Landroid/media/browse/MediaBrowser;)Landroid/content/Context; +HSPLandroid/media/browse/MediaBrowser;->access$700(Landroid/media/browse/MediaBrowser;)V +HSPLandroid/media/browse/MediaBrowser;->access$800(Landroid/media/browse/MediaBrowser;)Landroid/media/browse/MediaBrowser$ConnectionCallback; +HSPLandroid/media/browse/MediaBrowser;->access$900(Landroid/media/browse/MediaBrowser;Landroid/service/media/IMediaBrowserServiceCallbacks;Ljava/lang/String;)Z +HSPLandroid/media/browse/MediaBrowser;->connect()V +HSPLandroid/media/browse/MediaBrowser;->disconnect()V +HSPLandroid/media/browse/MediaBrowser;->forceCloseConnection()V +HSPLandroid/media/browse/MediaBrowser;->getNewServiceCallbacks()Landroid/media/browse/MediaBrowser$ServiceCallbacks; +HSPLandroid/media/browse/MediaBrowser;->getRoot()Ljava/lang/String; +HSPLandroid/media/browse/MediaBrowser;-><init>(Landroid/content/Context;Landroid/content/ComponentName;Landroid/media/browse/MediaBrowser$ConnectionCallback;Landroid/os/Bundle;)V +HSPLandroid/media/browse/MediaBrowser;->isConnected()Z +HSPLandroid/media/browse/MediaBrowser;->isCurrent(Landroid/service/media/IMediaBrowserServiceCallbacks;Ljava/lang/String;)Z +HSPLandroid/media/browse/MediaBrowser;->onConnectionFailed(Landroid/service/media/IMediaBrowserServiceCallbacks;)V +HSPLandroid/media/browse/MediaBrowser;->onLoadChildren(Landroid/service/media/IMediaBrowserServiceCallbacks;Ljava/lang/String;Landroid/content/pm/ParceledListSlice;Landroid/os/Bundle;)V +HSPLandroid/media/browse/MediaBrowser;->onServiceConnected(Landroid/service/media/IMediaBrowserServiceCallbacks;Ljava/lang/String;Landroid/media/session/MediaSession$Token;Landroid/os/Bundle;)V +HSPLandroid/media/browse/MediaBrowser;->subscribeInternal(Ljava/lang/String;Landroid/os/Bundle;Landroid/media/browse/MediaBrowser$SubscriptionCallback;)V +HSPLandroid/media/browse/MediaBrowser;->subscribe(Ljava/lang/String;Landroid/media/browse/MediaBrowser$SubscriptionCallback;)V +HSPLandroid/media/browse/MediaBrowser;->unsubscribeInternal(Ljava/lang/String;Landroid/media/browse/MediaBrowser$SubscriptionCallback;)V +HSPLandroid/media/browse/MediaBrowser;->unsubscribe(Ljava/lang/String;)V +HSPLandroid/media/browse/MediaBrowserUtils;->areSameOptions(Landroid/os/Bundle;Landroid/os/Bundle;)Z +HSPLandroid/media/IAudioService$Stub$Proxy;->getLastAudibleStreamVolume(I)I +HSPLandroid/media/IAudioService$Stub$Proxy;->getStreamMinVolume(I)I +HSPLandroid/media/IAudioService$Stub$Proxy;->isStreamAffectedByMute(I)Z +HSPLandroid/media/IAudioService$Stub$Proxy;->setRingtonePlayer(Landroid/media/IRingtonePlayer;)V +HSPLandroid/media/IAudioService$Stub$Proxy;->setVolumeController(Landroid/media/IVolumeController;)V +HSPLandroid/media/IAudioService$Stub$Proxy;->setVolumePolicy(Landroid/media/VolumePolicy;)V +HSPLandroid/media/IMediaRouterService$Stub$Proxy;->registerClientGroupId(Landroid/media/IMediaRouterClient;Ljava/lang/String;)V +HSPLandroid/media/IRemoteVolumeController$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/media/IRemoteVolumeController$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLandroid/media/IRingtonePlayer$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/media/IRingtonePlayer$Stub;-><init>()V +HSPLandroid/media/IVolumeController$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/media/IVolumeController$Stub;-><init>()V +HSPLandroid/media/IVolumeController$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLandroid/media/MediaDescription;->getMediaId()Ljava/lang/String; +HSPLandroid/media/MediaDescription;->getTitle()Ljava/lang/CharSequence; +HSPLandroid/media/MediaDescription;->toString()Ljava/lang/String; +HSPLandroid/media/MediaRouter$Static;->setRouterGroupId(Ljava/lang/String;)V +HSPLandroid/media/MediaRouter$VolumeCallback;-><init>()V +HSPLandroid/media/MediaRouter;->setRouterGroupId(Ljava/lang/String;)V +HSPLandroid/media/projection/IMediaProjectionManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/projection/IMediaProjectionManager; +HSPLandroid/media/projection/IMediaProjectionWatcherCallback$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/media/projection/IMediaProjectionWatcherCallback$Stub;-><init>()V +HSPLandroid/media/projection/MediaProjectionManager;->addCallback(Landroid/media/projection/MediaProjectionManager$Callback;Landroid/os/Handler;)V +HSPLandroid/media/projection/MediaProjectionManager;->getActiveProjectionInfo()Landroid/media/projection/MediaProjectionInfo; +HSPLandroid/media/projection/MediaProjectionManager;-><init>(Landroid/content/Context;)V +HSPLandroid/media/session/IActiveSessionsListener$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/media/session/IActiveSessionsListener$Stub;-><init>()V +HSPLandroid/media/session/IActiveSessionsListener$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLandroid/media/session/ICallback$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/media/session/ICallback$Stub;-><init>()V +HSPLandroid/media/session/ICallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLandroid/media/session/ISessionController$Stub$Proxy;->getMetadata()Landroid/media/MediaMetadata; +HSPLandroid/media/session/ISessionController$Stub$Proxy;->getPackageName()Ljava/lang/String; +HSPLandroid/media/session/ISessionController$Stub$Proxy;->getPlaybackState()Landroid/media/session/PlaybackState; +HSPLandroid/media/session/ISessionController$Stub$Proxy;->getQueue()Landroid/content/pm/ParceledListSlice; +HSPLandroid/media/session/ISessionController$Stub$Proxy;->getVolumeAttributes()Landroid/media/session/MediaController$PlaybackInfo; +HSPLandroid/media/session/ISessionController$Stub$Proxy;->registerCallback(Ljava/lang/String;Landroid/media/session/ISessionControllerCallback;)V +HSPLandroid/media/session/ISessionController$Stub$Proxy;->unregisterCallback(Landroid/media/session/ISessionControllerCallback;)V +HSPLandroid/media/session/ISessionControllerCallback$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/media/session/ISessionControllerCallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLandroid/media/session/ISessionManager$Stub$Proxy;->addSessionsListener(Landroid/media/session/IActiveSessionsListener;Landroid/content/ComponentName;I)V +HSPLandroid/media/session/ISessionManager$Stub$Proxy;->registerRemoteVolumeController(Landroid/media/IRemoteVolumeController;)V +HSPLandroid/media/session/ISessionManager$Stub$Proxy;->removeSessionsListener(Landroid/media/session/IActiveSessionsListener;)V +HSPLandroid/media/session/ISessionManager$Stub$Proxy;->setCallback(Landroid/media/session/ICallback;)V +HSPLandroid/media/session/MediaController$CallbackStub;->onMetadataChanged(Landroid/media/MediaMetadata;)V +HSPLandroid/media/session/MediaController$CallbackStub;->onPlaybackStateChanged(Landroid/media/session/PlaybackState;)V +HSPLandroid/media/session/MediaController$CallbackStub;->onQueueTitleChanged(Ljava/lang/CharSequence;)V +HSPLandroid/media/session/MediaController$CallbackStub;->onSessionDestroyed()V +HSPLandroid/media/session/MediaController$MessageHandler;->access$102(Landroid/media/session/MediaController$MessageHandler;Z)Z +HSPLandroid/media/session/MediaController$MessageHandler;->access$200(Landroid/media/session/MediaController$MessageHandler;)Landroid/media/session/MediaController$Callback; +HSPLandroid/media/session/MediaController$MessageHandler;->handleMessage(Landroid/os/Message;)V +HSPLandroid/media/session/MediaController$MessageHandler;-><init>(Landroid/os/Looper;Landroid/media/session/MediaController$Callback;)V +HSPLandroid/media/session/MediaController$MessageHandler;->post(ILjava/lang/Object;Landroid/os/Bundle;)V +HSPLandroid/media/session/MediaController;->access$600(Landroid/media/session/MediaController;ILjava/lang/Object;Landroid/os/Bundle;)V +HSPLandroid/media/session/MediaController;->addCallbackLocked(Landroid/media/session/MediaController$Callback;Landroid/os/Handler;)V +HSPLandroid/media/session/MediaController;->getHandlerForCallbackLocked(Landroid/media/session/MediaController$Callback;)Landroid/media/session/MediaController$MessageHandler; +HSPLandroid/media/session/MediaController;->getMetadata()Landroid/media/MediaMetadata; +HSPLandroid/media/session/MediaController;->getPackageName()Ljava/lang/String; +HSPLandroid/media/session/MediaController;->getPlaybackInfo()Landroid/media/session/MediaController$PlaybackInfo; +HSPLandroid/media/session/MediaController;->getPlaybackState()Landroid/media/session/PlaybackState; +HSPLandroid/media/session/MediaController;->getQueue()Ljava/util/List; +HSPLandroid/media/session/MediaController;->getTransportControls()Landroid/media/session/MediaController$TransportControls; +HSPLandroid/media/session/MediaController;->postMessage(ILjava/lang/Object;Landroid/os/Bundle;)V +HSPLandroid/media/session/MediaController;->registerCallback(Landroid/media/session/MediaController$Callback;Landroid/os/Handler;)V +HSPLandroid/media/session/MediaController;->removeCallbackLocked(Landroid/media/session/MediaController$Callback;)Z +HSPLandroid/media/session/MediaController;->unregisterCallback(Landroid/media/session/MediaController$Callback;)V +HSPLandroid/media/session/MediaSession$Token;->equals(Ljava/lang/Object;)Z +HSPLandroid/media/session/MediaSession$Token;->hashCode()I +HSPLandroid/media/session/MediaSessionManager$CallbackImpl$4;-><init>(Landroid/media/session/MediaSessionManager$CallbackImpl;Landroid/content/ComponentName;)V +HSPLandroid/media/session/MediaSessionManager$CallbackImpl$4;->run()V +HSPLandroid/media/session/MediaSessionManager$CallbackImpl;->access$900(Landroid/media/session/MediaSessionManager$CallbackImpl;)Landroid/media/session/MediaSessionManager$Callback; +HSPLandroid/media/session/MediaSessionManager$CallbackImpl;-><init>(Landroid/media/session/MediaSessionManager$Callback;Landroid/os/Handler;)V +HSPLandroid/media/session/MediaSessionManager$CallbackImpl;->onAddressedPlayerChangedToMediaButtonReceiver(Landroid/content/ComponentName;)V +HSPLandroid/media/session/MediaSessionManager$Callback;-><init>()V +HSPLandroid/media/session/MediaSessionManager$SessionsChangedWrapper$1$1;-><init>(Landroid/media/session/MediaSessionManager$SessionsChangedWrapper$1;Ljava/util/List;)V +HSPLandroid/media/session/MediaSessionManager$SessionsChangedWrapper$1$1;->run()V +HSPLandroid/media/session/MediaSessionManager$SessionsChangedWrapper$1;-><init>(Landroid/media/session/MediaSessionManager$SessionsChangedWrapper;)V +HSPLandroid/media/session/MediaSessionManager$SessionsChangedWrapper$1;->onActiveSessionsChanged(Ljava/util/List;)V +HSPLandroid/media/session/MediaSessionManager$SessionsChangedWrapper;->access$000(Landroid/media/session/MediaSessionManager$SessionsChangedWrapper;)Landroid/media/session/IActiveSessionsListener$Stub; +HSPLandroid/media/session/MediaSessionManager$SessionsChangedWrapper;->access$100(Landroid/media/session/MediaSessionManager$SessionsChangedWrapper;)V +HSPLandroid/media/session/MediaSessionManager$SessionsChangedWrapper;->access$200(Landroid/media/session/MediaSessionManager$SessionsChangedWrapper;)Landroid/os/Handler; +HSPLandroid/media/session/MediaSessionManager$SessionsChangedWrapper;->access$300(Landroid/media/session/MediaSessionManager$SessionsChangedWrapper;)Landroid/content/Context; +HSPLandroid/media/session/MediaSessionManager$SessionsChangedWrapper;->access$400(Landroid/media/session/MediaSessionManager$SessionsChangedWrapper;)Landroid/media/session/MediaSessionManager$OnActiveSessionsChangedListener; +HSPLandroid/media/session/MediaSessionManager$SessionsChangedWrapper;-><init>(Landroid/content/Context;Landroid/media/session/MediaSessionManager$OnActiveSessionsChangedListener;Landroid/os/Handler;)V +HSPLandroid/media/session/MediaSessionManager$SessionsChangedWrapper;->release()V +HSPLandroid/media/session/MediaSessionManager;->addOnActiveSessionsChangedListener(Landroid/media/session/MediaSessionManager$OnActiveSessionsChangedListener;Landroid/content/ComponentName;ILandroid/os/Handler;)V +HSPLandroid/media/session/MediaSessionManager;->addOnActiveSessionsChangedListener(Landroid/media/session/MediaSessionManager$OnActiveSessionsChangedListener;Landroid/content/ComponentName;Landroid/os/Handler;)V +HSPLandroid/media/session/MediaSessionManager;->registerRemoteVolumeController(Landroid/media/IRemoteVolumeController;)V +HSPLandroid/media/session/MediaSessionManager;->removeOnActiveSessionsChangedListener(Landroid/media/session/MediaSessionManager$OnActiveSessionsChangedListener;)V +HSPLandroid/media/session/MediaSessionManager;->setCallback(Landroid/media/session/MediaSessionManager$Callback;Landroid/os/Handler;)V +HSPLandroid/media/SoundPool$Builder;-><init>()V +HSPLandroid/media/SoundPool$Builder;->setMaxStreams(I)Landroid/media/SoundPool$Builder; +HSPLandroid/media/SoundPool;->load(Landroid/content/Context;II)I +HSPLandroid/media/VolumePolicy;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/metrics/LogMaker;->deserialize([Ljava/lang/Object;)V +HSPLandroid/metrics/LogMaker;->getCategory()I +HSPLandroid/metrics/LogMaker;->getCounterBucket()J +HSPLandroid/metrics/LogMaker;->getCounterName()Ljava/lang/String; +HSPLandroid/metrics/LogMaker;->getCounterValue()I +HSPLandroid/metrics/LogMaker;->getSubtype()I +HSPLandroid/metrics/LogMaker;->getTimestamp()J +HSPLandroid/metrics/LogMaker;-><init>([Ljava/lang/Object;)V +HSPLandroid/metrics/LogMaker;->isLongCounterBucket()Z +HSPLandroid/metrics/LogMaker;->setProcessId(I)Landroid/metrics/LogMaker; +HSPLandroid/metrics/LogMaker;->setTimestamp(J)Landroid/metrics/LogMaker; +HSPLandroid/metrics/LogMaker;->setUid(I)Landroid/metrics/LogMaker; +HSPLandroid/net/apf/ApfCapabilities$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/apf/ApfCapabilities; +HSPLandroid/net/apf/ApfCapabilities$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/net/apf/ApfCapabilities;->getApfDrop8023Frames()Z +HSPLandroid/net/apf/ApfCapabilities;->getApfEtherTypeBlackList()[I +HSPLandroid/net/apf/ApfCapabilities;->hasDataAccess()Z +HSPLandroid/net/apf/ApfCapabilities;-><init>(Landroid/os/Parcel;Landroid/net/apf/ApfCapabilities$1;)V +HSPLandroid/net/apf/ApfCapabilities;-><init>(Landroid/os/Parcel;)V +HSPLandroid/net/apf/ApfCapabilities;->toString()Ljava/lang/String; +HSPLandroid/net/ConnectivityManager;->getDefaultNetworkCapabilitiesForUser(I)[Landroid/net/NetworkCapabilities; +HSPLandroid/net/ConnectivityManager;->getInstanceOrNull()Landroid/net/ConnectivityManager; +HSPLandroid/net/ConnectivityManager;->reportNetworkConnectivity(Landroid/net/Network;Z)V +HSPLandroid/net/ConnectivityManager;->shouldAvoidBadWifi()Z +HSPLandroid/net/ConnectivityMetricsEvent;-><init>()V +HSPLandroid/net/ConnectivityMetricsEvent;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/net/IConnectivityManager$Stub$Proxy;->getDefaultNetworkCapabilitiesForUser(I)[Landroid/net/NetworkCapabilities; +HSPLandroid/net/IConnectivityManager$Stub$Proxy;->getVpnConfig(I)Lcom/android/internal/net/VpnConfig; +HSPLandroid/net/IConnectivityManager$Stub$Proxy;->reportNetworkConnectivity(Landroid/net/Network;Z)V +HSPLandroid/net/IConnectivityManager$Stub$Proxy;->shouldAvoidBadWifi()Z +HSPLandroid/net/INetworkScoreCache$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLandroid/net/INetworkScoreService$Stub$Proxy;->getActiveScorerPackage()Ljava/lang/String; +HSPLandroid/net/INetworkScoreService$Stub$Proxy;->updateScores([Landroid/net/ScoredNetwork;)Z +HSPLandroid/net/INetworkStatsService$Stub$Proxy;->getTotalStats(I)J +HSPLandroid/net/IpPrefix;->contains(Ljava/net/InetAddress;)Z +HSPLandroid/net/LinkAddress;->equals(Ljava/lang/Object;)Z +HSPLandroid/net/LinkProperties;->hasIpv4AddressOnInterface(Ljava/lang/String;)Z +HSPLandroid/net/LinkProperties;->hasIpv6DnsServer()Z +HSPLandroid/net/LinkProperties;->isIpv4Provisioned()Z +HSPLandroid/net/LinkProperties;->isIpv6Provisioned()Z +HSPLandroid/net/LinkProperties;->isProvisioned()Z +HSPLandroid/net/LinkProperties;->isReachable(Ljava/net/InetAddress;)Z +HSPLandroid/net/LinkProperties;->setTcpBufferSizes(Ljava/lang/String;)V +HSPLandroid/net/LocalSocket;->createConnectedLocalSocket(Landroid/net/LocalSocketImpl;I)Landroid/net/LocalSocket; +HSPLandroid/net/LocalSocket;->createConnectedLocalSocket(Ljava/io/FileDescriptor;)Landroid/net/LocalSocket; +HSPLandroid/net/LocalSocketImpl;-><init>(Ljava/io/FileDescriptor;)V +HSPLandroid/net/LocalSocket;-><init>(Landroid/net/LocalSocketImpl;I)V +HSPLandroid/net/metrics/ApfProgramEvent;->flagsFor(ZZ)I +HSPLandroid/net/metrics/IpConnectivityLog;-><init>()V +HSPLandroid/net/metrics/IpConnectivityLog;->log(Landroid/net/metrics/IpConnectivityLog$Event;)Z +HSPLandroid/net/metrics/IpConnectivityLog;->log(Landroid/net/Network;[ILandroid/net/metrics/IpConnectivityLog$Event;)Z +HSPLandroid/net/metrics/IpConnectivityLog;->log(Ljava/lang/String;Landroid/net/metrics/IpConnectivityLog$Event;)Z +HSPLandroid/net/metrics/IpConnectivityLog;->makeEv(Landroid/net/metrics/IpConnectivityLog$Event;)Landroid/net/ConnectivityMetricsEvent; +HSPLandroid/net/NetworkCapabilities$1;->newArray(I)[Landroid/net/NetworkCapabilities; +HSPLandroid/net/NetworkCapabilities$1;->newArray(I)[Ljava/lang/Object; +HSPLandroid/net/NetworkCapabilities;->equalsTransportTypes(Landroid/net/NetworkCapabilities;)Z +HSPLandroid/net/NetworkCapabilities;->setUids(Ljava/util/Set;)Landroid/net/NetworkCapabilities; +HSPLandroid/net/NetworkInfo;->isAvailable()Z +HSPLandroid/net/Network;-><init>(IZ)V +HSPLandroid/net/Network;-><init>(Landroid/net/Network;)V +HSPLandroid/net/NetworkKey;-><init>(Landroid/net/WifiKey;)V +HSPLandroid/net/Network;->lambda$maybeInitUrlConnectionFactory$0$Network(Ljava/lang/String;)Ljava/util/List; +HSPLandroid/net/Network;->maybeInitUrlConnectionFactory()V +HSPLandroid/net/Network;->openConnection(Ljava/net/URL;Ljava/net/Proxy;)Ljava/net/URLConnection; +HSPLandroid/net/Network;->openConnection(Ljava/net/URL;)Ljava/net/URLConnection; +HSPLandroid/net/NetworkRequest$Builder;->setUids(Ljava/util/Set;)Landroid/net/NetworkRequest$Builder; +HSPLandroid/net/NetworkScoreManager;->updateScores([Landroid/net/ScoredNetwork;)Z +HSPLandroid/net/NetworkUtils;->protectFromVpn(Ljava/io/FileDescriptor;)Z +HSPLandroid/net/nsd/INsdManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/nsd/INsdManager; +HSPLandroid/net/nsd/NsdManager;->access$000(Landroid/net/nsd/NsdManager;)Lcom/android/internal/util/AsyncChannel; +HSPLandroid/net/nsd/NsdManager;->access$100(Landroid/net/nsd/NsdManager;)Ljava/util/concurrent/CountDownLatch; +HSPLandroid/net/nsd/NsdManager;->getMessenger()Landroid/os/Messenger; +HSPLandroid/net/nsd/NsdManager;-><init>(Landroid/content/Context;Landroid/net/nsd/INsdManager;)V +HSPLandroid/net/nsd/NsdManager;->init()V +HSPLandroid/net/RouteInfo;->getGateway()Ljava/net/InetAddress; +HSPLandroid/net/RouteInfo;->getInterface()Ljava/lang/String; +HSPLandroid/net/RouteInfo;->hasGateway()Z +HSPLandroid/net/RouteInfo;->matches(Ljava/net/InetAddress;)Z +HSPLandroid/net/ScoredNetwork;->calculateBadge(I)I +HSPLandroid/net/ScoredNetwork;-><init>(Landroid/net/NetworkKey;Landroid/net/RssiCurve;ZLandroid/os/Bundle;)V +HSPLandroid/net/ScoredNetwork;-><init>(Landroid/net/NetworkKey;Landroid/net/RssiCurve;Z)V +HSPLandroid/net/ScoredNetwork;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/net/StaticIpConfiguration;->getDnsServers()Ljava/util/List; +HSPLandroid/net/StaticIpConfiguration;->getDomains()Ljava/lang/String; +HSPLandroid/net/StaticIpConfiguration;->getGateway()Ljava/net/InetAddress; +HSPLandroid/net/StaticIpConfiguration;->getIpAddress()Landroid/net/LinkAddress; +HSPLandroid/net/StaticIpConfiguration;->getRoutes(Ljava/lang/String;)Ljava/util/List; +HSPLandroid/net/StaticIpConfiguration;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/net/TrafficStats;->clearThreadStatsUid()V +HSPLandroid/net/TrafficStats;->getMobileRxBytes()J +HSPLandroid/net/TrafficStats;->getMobileTxBytes()J +HSPLandroid/net/TrafficStats;->getThreadStatsTag()I +HSPLandroid/net/TrafficStats;->getTotalRxBytes()J +HSPLandroid/net/TrafficStats;->setThreadStatsUid(I)V +HSPLandroid/net/TrafficStats;->tagSocket(Ljava/net/Socket;)V +HSPLandroid/net/Uri$AbstractPart;->getDecoded()Ljava/lang/String; +HSPLandroid/net/Uri$HierarchicalUri;->getFragment()Ljava/lang/String; +HSPLandroid/net/Uri$Part;->fromEncoded(Ljava/lang/String;)Landroid/net/Uri$Part; +HSPLandroid/net/Uri$StringUri;->findFragmentSeparator()I +HSPLandroid/net/Uri$StringUri;->findSchemeSeparator()I +HSPLandroid/net/Uri$StringUri;->getEncodedFragment()Ljava/lang/String; +HSPLandroid/net/Uri$StringUri;->getFragmentPart()Landroid/net/Uri$Part; +HSPLandroid/net/Uri$StringUri;->parseFragment()Ljava/lang/String; +HSPLandroid/net/wifi/ISoftApCallback$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/net/wifi/ISoftApCallback$Stub;-><init>()V +HSPLandroid/net/wifi/ISoftApCallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLandroid/net/wifi/ITrafficStateCallback$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/net/wifi/ITrafficStateCallback$Stub;-><init>()V +HSPLandroid/net/wifi/ITrafficStateCallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLandroid/net/wifi/IWifiManager$Stub$Proxy;->acquireMulticastLock(Landroid/os/IBinder;Ljava/lang/String;)V +HSPLandroid/net/wifi/IWifiManager$Stub$Proxy;->acquireWifiLock(Landroid/os/IBinder;ILjava/lang/String;Landroid/os/WorkSource;)Z +HSPLandroid/net/wifi/IWifiManager$Stub$Proxy;->getWifiApConfiguration()Landroid/net/wifi/WifiConfiguration; +HSPLandroid/net/wifi/IWifiManager$Stub$Proxy;->registerSoftApCallback(Landroid/os/IBinder;Landroid/net/wifi/ISoftApCallback;I)V +HSPLandroid/net/wifi/IWifiManager$Stub$Proxy;->registerTrafficStateCallback(Landroid/os/IBinder;Landroid/net/wifi/ITrafficStateCallback;I)V +HSPLandroid/net/wifi/IWifiManager$Stub$Proxy;->releaseMulticastLock(Ljava/lang/String;)V +HSPLandroid/net/wifi/IWifiManager$Stub$Proxy;->releaseWifiLock(Landroid/os/IBinder;)Z +HSPLandroid/net/wifi/ScanResult;->is80211mcResponder()Z +HSPLandroid/net/wifi/WifiInfo;->getIpAddress()I +HSPLandroid/net/wifi/WifiInfo;->getMacAddress()Ljava/lang/String; +HSPLandroid/net/wifi/WifiManager$WifiLock;->acquire()V +HSPLandroid/net/wifi/WifiManager$WifiLock;->finalize()V +HSPLandroid/net/wifi/WifiManager$WifiLock;->release()V +HSPLandroid/net/wifi/WifiManager;->access$000(Landroid/net/wifi/WifiManager;)Z +HSPLandroid/net/wifi/WifiManager;->access$800(Landroid/net/wifi/WifiManager;)I +HSPLandroid/net/wifi/WifiManager;->access$808(Landroid/net/wifi/WifiManager;)I +HSPLandroid/net/wifi/WifiManager;->access$810(Landroid/net/wifi/WifiManager;)I +HSPLandroid/net/wifi/WifiManager;->createMulticastLock(Ljava/lang/String;)Landroid/net/wifi/WifiManager$MulticastLock; +HSPLandroid/net/wifi/WifiManager;->registerSoftApCallback(Landroid/net/wifi/WifiManager$SoftApCallback;Landroid/os/Handler;)V +HSPLandroid/net/wifi/WifiManager;->registerTrafficStateCallback(Landroid/net/wifi/WifiManager$TrafficStateCallback;Landroid/os/Handler;)V +HSPLandroid/net/wifi/WifiNetworkAgentSpecifier$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/wifi/WifiNetworkAgentSpecifier; +HSPLandroid/net/wifi/WifiNetworkAgentSpecifier$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/net/wifi/WifiNetworkScoreCache$CacheListener;->post(Ljava/util/List;)V +HSPLandroid/net/wifi/WifiNetworkScoreCache;->registerListener(Landroid/net/wifi/WifiNetworkScoreCache$CacheListener;)V +HSPLandroid/nfc/INfcAdapter$Stub;-><init>()V +HSPLandroid/nfc/INfcAdapter$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLandroid/nfc/INfcCardEmulation$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/nfc/INfcCardEmulation$Stub;-><init>()V +HSPLandroid/nfc/INfcFCardEmulation$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/nfc/INfcFCardEmulation$Stub;-><init>()V +HSPLandroid/nfc/INfcTag$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/nfc/INfcTag$Stub;-><init>()V +HSPLandroid/os/BaseBundle;->getDouble(Ljava/lang/String;)D +HSPLandroid/os/BaseBundle;->getDouble(Ljava/lang/String;D)D +HSPLandroid/os/BaseBundle;->getFloat(Ljava/lang/String;)F +HSPLandroid/os/BaseBundle;-><init>(Landroid/os/Parcel;I)V +HSPLandroid/os/BaseBundle;->putDouble(Ljava/lang/String;D)V +HSPLandroid/os/Bundle;->getFloat(Ljava/lang/String;)F +HSPLandroid/os/Bundle;->maybePrefillHasFds()V +HSPLandroid/os/DropBoxManager$Entry;->getTimeMillis()J +HSPLandroid/os/DropBoxManager;->getNextEntry(Ljava/lang/String;J)Landroid/os/DropBoxManager$Entry; +HSPLandroid/os/Environment;->getExternalStoragePublicDirectory(Ljava/lang/String;)Ljava/io/File; +HSPLandroid/os/Environment;->throwIfUserRequired()V +HSPLandroid/os/FileUtils;->listFilesOrEmpty(Ljava/io/File;Ljava/io/FilenameFilter;)[Ljava/io/File; +HSPLandroid/os/FileUtils;->listOrEmpty(Ljava/io/File;)[Ljava/lang/String; +HSPLandroid/os/GraphicsEnvironment;->checkAngleWhitelist(Landroid/content/Context;Landroid/os/Bundle;Ljava/lang/String;)Z +HSPLandroid/os/GraphicsEnvironment;->chooseDriverInternal(Landroid/content/Context;Landroid/os/Bundle;)Ljava/lang/String; +HSPLandroid/os/GraphicsEnvironment;->shouldUseAngle(Landroid/content/Context;Landroid/os/Bundle;Ljava/lang/String;)Z +HSPLandroid/os/Handler;->getPostMessage(Ljava/lang/Runnable;Ljava/lang/Object;)Landroid/os/Message; +HSPLandroid/os/Handler;->postDelayed(Ljava/lang/Runnable;Ljava/lang/Object;J)Z +HSPLandroid/os/IPowerManager$Stub$Proxy;->getLastShutdownReason()I +HSPLandroid/os/IPowerManager$Stub$Proxy;->getPowerSaveState(I)Landroid/os/PowerSaveState; +HSPLandroid/os/IPowerManager$Stub$Proxy;->isLightDeviceIdleMode()Z +HSPLandroid/os/IPowerManager$Stub$Proxy;->setDozeAfterScreenOff(Z)V +HSPLandroid/os/IStatsManager$Stub$Proxy;->addConfiguration(J[BLjava/lang/String;)V +HSPLandroid/os/IStatsManager$Stub$Proxy;->getData(JLjava/lang/String;)[B +HSPLandroid/os/IStatsManager$Stub$Proxy;->registerPullerCallback(ILandroid/os/IStatsPullerCallback;Ljava/lang/String;)V +HSPLandroid/os/IStatsManager$Stub$Proxy;->setDataFetchOperation(JLandroid/os/IBinder;Ljava/lang/String;)V +HSPLandroid/os/IThermalEventListener$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLandroid/os/IUserManager$Stub$Proxy;->getProfileParent(I)Landroid/content/pm/UserInfo; +HSPLandroid/os/IUserManager$Stub$Proxy;->getUserAccount(I)Ljava/lang/String; +HSPLandroid/os/IUserManager$Stub$Proxy;->getUserHandle(I)I +HSPLandroid/os/IUserManager$Stub$Proxy;->getUserIcon(I)Landroid/os/ParcelFileDescriptor; +HSPLandroid/os/IUserManager$Stub$Proxy;->isQuietModeEnabled(I)Z +HSPLandroid/os/IUserManager$Stub$Proxy;->isUserRunning(I)Z +HSPLandroid/os/LocaleList;->toLanguageTags()Ljava/lang/String; +HSPLandroid/os/Message;->getWhen()J +HSPLandroid/os/MessageQueue;->addOnFileDescriptorEventListener(Ljava/io/FileDescriptor;ILandroid/os/MessageQueue$OnFileDescriptorEventListener;)V +HSPLandroid/os/MessageQueue;->dispatchEvents(II)I +HSPLandroid/os/MessageQueue;->removeOnFileDescriptorEventListener(Ljava/io/FileDescriptor;)V +HSPLandroid/os/MessageQueue;->updateOnFileDescriptorEventListenerLocked(Ljava/io/FileDescriptor;ILandroid/os/MessageQueue$OnFileDescriptorEventListener;)V +HSPLandroid/os/Message;->setAsynchronous(Z)V +HSPLandroid/os/Message;->setCallback(Ljava/lang/Runnable;)Landroid/os/Message; +HSPLandroid/os/Message;->setTarget(Landroid/os/Handler;)V +HSPLandroid/os/Parcel;->createTypedArrayMap(Landroid/os/Parcelable$Creator;)Landroid/util/ArrayMap; +HSPLandroid/os/ParcelFileDescriptor$AutoCloseInputStream;->read()I +HSPLandroid/os/Parcel;->hasFileDescriptors()Z +HSPLandroid/os/Parcel;->readCharSequenceList()Ljava/util/ArrayList; +HSPLandroid/os/Parcel;->readFileDescriptor()Landroid/os/ParcelFileDescriptor; +HSPLandroid/os/ParcelUuid;->getUuid()Ljava/util/UUID; +HSPLandroid/os/ParcelUuid;-><init>(Ljava/util/UUID;)V +HSPLandroid/os/ParcelUuid;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/os/Parcel;->writeFileDescriptor(Ljava/io/FileDescriptor;)V +HSPLandroid/os/PersistableBundle;->toString()Ljava/lang/String; +HSPLandroid/os/PowerManager;->getDefaultScreenBrightnessForVrSetting()I +HSPLandroid/os/PowerManager;->getLastShutdownReason()I +HSPLandroid/os/PowerManager;->getMaximumScreenBrightnessForVrSetting()I +HSPLandroid/os/PowerManager;->getMinimumScreenBrightnessForVrSetting()I +HSPLandroid/os/PowerManager;->setDozeAfterScreenOff(Z)V +HSPLandroid/os/PowerSaveState$1;->createFromParcel(Landroid/os/Parcel;)Landroid/os/PowerSaveState; +HSPLandroid/os/PowerSaveState$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/os/PowerSaveState;-><init>(Landroid/os/Parcel;)V +HSPLandroid/os/StatFs;->getBlockCountLong()J +HSPLandroid/os/storage/DiskInfo$1;->newArray(I)[Landroid/os/storage/DiskInfo; +HSPLandroid/os/storage/DiskInfo$1;->newArray(I)[Ljava/lang/Object; +HSPLandroid/os/storage/IStorageEventListener$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLandroid/os/storage/IStorageManager$Stub$Proxy;->getDisks()[Landroid/os/storage/DiskInfo; +HSPLandroid/os/storage/IStorageManager$Stub$Proxy;->getVolumeRecords(I)[Landroid/os/storage/VolumeRecord; +HSPLandroid/os/storage/IStorageManager$Stub$Proxy;->registerListener(Landroid/os/storage/IStorageEventListener;)V +HSPLandroid/os/storage/StorageManager;->getDisks()Ljava/util/List; +HSPLandroid/os/storage/StorageManager;->getVolumeRecords()Ljava/util/List; +HSPLandroid/os/storage/VolumeRecord$1;->newArray(I)[Landroid/os/storage/VolumeRecord; +HSPLandroid/os/storage/VolumeRecord$1;->newArray(I)[Ljava/lang/Object; +HSPLandroid/os/Temperature$1;->createFromParcel(Landroid/os/Parcel;)Landroid/os/Temperature; +HSPLandroid/os/Temperature$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/os/Temperature;-><init>(FILjava/lang/String;I)V +HSPLandroid/os/Temperature;->isValidStatus(I)Z +HSPLandroid/os/Temperature;->isValidType(I)Z +HSPLandroid/os/Trace;->beginAsyncSection(Ljava/lang/String;I)V +HSPLandroid/os/UserManager;->canAddMoreUsers()Z +HSPLandroid/os/UserManager;->canSwitchUsers()Z +HSPLandroid/os/UserManager;->getUserAccount(I)Ljava/lang/String; +HSPLandroid/os/UserManager;->getUserCount()I +HSPLandroid/os/UserManager;->getUserIcon(I)Landroid/graphics/Bitmap; +HSPLandroid/os/UserManager;->isGuestUserEphemeral()Z +HSPLandroid/os/UserManager;->isGuestUser(I)Z +HSPLandroid/os/UserManager;->isGuestUser()Z +HSPLandroid/os/WorkSource$WorkChain;->addNode(ILjava/lang/String;)Landroid/os/WorkSource$WorkChain; +HSPLandroid/os/WorkSource$WorkChain;-><init>()V +HSPLandroid/os/WorkSource$WorkChain;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/os/WorkSource;->createWorkChain()Landroid/os/WorkSource$WorkChain; +HSPLandroid/os/WorkSource;->hashCode()I +HSPLandroid/os/WorkSource;-><init>()V +HSPLandroid/provider/ContactsContract$CommonDataKinds$Email;->getTypeLabel(Landroid/content/res/Resources;ILjava/lang/CharSequence;)Ljava/lang/CharSequence; +HSPLandroid/provider/ContactsContract$CommonDataKinds$Email;->getTypeLabelResource(I)I +HSPLandroid/provider/DeviceConfig;->addOnPropertiesChangedListener(Ljava/lang/String;Ljava/util/concurrent/Executor;Landroid/provider/DeviceConfig$OnPropertiesChangedListener;)V +HSPLandroid/provider/Settings$Secure;->isLocationProviderEnabled(Landroid/content/ContentResolver;Ljava/lang/String;)Z +HSPLandroid/provider/Settings$System;->canWrite(Landroid/content/Context;)Z +HSPLandroid/provider/Settings$System;->getFloatForUser(Landroid/content/ContentResolver;Ljava/lang/String;I)F +HSPLandroid/provider/Settings$System;->getFloat(Landroid/content/ContentResolver;Ljava/lang/String;)F +HSPLandroid/provider/Settings;->isCallingPackageAllowedToWriteSettings(Landroid/content/Context;ILjava/lang/String;Z)Z +HSPLandroid/security/keymaster/KeymasterArguments;-><init>()V +HSPLandroid/security/keystore/KeyGenParameterSpec;->getBlockModes()[Ljava/lang/String; +HSPLandroid/security/keystore/KeyGenParameterSpec;->getBoundToSpecificSecureUserId()J +HSPLandroid/security/keystore/KeyGenParameterSpec;->getEncryptionPaddings()[Ljava/lang/String; +HSPLandroid/security/keystore/KeyGenParameterSpec;->getKeySize()I +HSPLandroid/security/keystore/KeyGenParameterSpec;->getKeystoreAlias()Ljava/lang/String; +HSPLandroid/security/keystore/KeyGenParameterSpec;->getPurposes()I +HSPLandroid/security/keystore/KeyGenParameterSpec;->getSignaturePaddings()[Ljava/lang/String; +HSPLandroid/security/keystore/KeyGenParameterSpec;->getUserAuthenticationValidityDurationSeconds()I +HSPLandroid/security/keystore/KeyGenParameterSpec;-><init>(Ljava/lang/String;IILjava/security/spec/AlgorithmParameterSpec;Ljavax/security/auth/x500/X500Principal;Ljava/math/BigInteger;Ljava/util/Date;Ljava/util/Date;Ljava/util/Date;Ljava/util/Date;Ljava/util/Date;I[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;ZZIZ[BZZZZZZ)V +HSPLandroid/security/keystore/KeyGenParameterSpec;->isDigestsSpecified()Z +HSPLandroid/security/keystore/KeyGenParameterSpec;->isRandomizedEncryptionRequired()Z +HSPLandroid/security/keystore/KeyGenParameterSpec;->isUnlockedDeviceRequired()Z +HSPLandroid/security/keystore/KeyGenParameterSpec;->isUserAuthenticationRequired()Z +HSPLandroid/security/keystore/KeyGenParameterSpec;->isUserConfirmationRequired()Z +HSPLandroid/security/keystore/KeyGenParameterSpec;->isUserPresenceRequired()Z +HSPLandroid/security/keystore/recovery/RecoveryController;->getInstance(Landroid/content/Context;)Landroid/security/keystore/recovery/RecoveryController; +HSPLandroid/security/keystore/recovery/RecoveryController;->getRecoverySecretTypes()[I +HSPLandroid/security/keystore/recovery/RecoveryController;-><init>(Lcom/android/internal/widget/ILockSettings;Landroid/security/KeyStore;)V +HSPLandroid/security/keystore/recovery/RecoveryController;->initRecoveryService(Ljava/lang/String;[B[B)V +HSPLandroid/security/keystore/recovery/RecoveryController;->setRecoverySecretTypes([I)V +HSPLandroid/security/keystore/recovery/RecoveryController;->setServerParams([B)V +HSPLandroid/security/keystore/recovery/RecoveryController;->setSnapshotCreatedPendingIntent(Landroid/app/PendingIntent;)V +HSPLandroid/service/dreams/IDreamManager$Stub$Proxy;->forceAmbientDisplayEnabled(Z)V +HSPLandroid/service/euicc/GetEuiccProfileInfoListResult;->getResult()I +HSPLandroid/service/gatekeeper/IGateKeeperService$Stub$Proxy;->getSecureUserId(I)J +HSPLandroid/service/media/IMediaBrowserService$Stub$Proxy;->addSubscriptionDeprecated(Ljava/lang/String;Landroid/service/media/IMediaBrowserServiceCallbacks;)V +HSPLandroid/service/media/IMediaBrowserService$Stub$Proxy;->addSubscription(Ljava/lang/String;Landroid/os/IBinder;Landroid/os/Bundle;Landroid/service/media/IMediaBrowserServiceCallbacks;)V +HSPLandroid/service/media/IMediaBrowserService$Stub$Proxy;->connect(Ljava/lang/String;Landroid/os/Bundle;Landroid/service/media/IMediaBrowserServiceCallbacks;)V +HSPLandroid/service/media/IMediaBrowserService$Stub$Proxy;->disconnect(Landroid/service/media/IMediaBrowserServiceCallbacks;)V +HSPLandroid/service/media/IMediaBrowserService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V +HSPLandroid/service/media/IMediaBrowserService$Stub$Proxy;->removeSubscriptionDeprecated(Ljava/lang/String;Landroid/service/media/IMediaBrowserServiceCallbacks;)V +HSPLandroid/service/media/IMediaBrowserService$Stub$Proxy;->removeSubscription(Ljava/lang/String;Landroid/os/IBinder;Landroid/service/media/IMediaBrowserServiceCallbacks;)V +HSPLandroid/service/media/IMediaBrowserService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/media/IMediaBrowserService; +HSPLandroid/service/media/IMediaBrowserServiceCallbacks$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/service/media/IMediaBrowserServiceCallbacks$Stub;-><init>()V +HSPLandroid/service/media/IMediaBrowserServiceCallbacks$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLandroid/service/notification/INotificationListener$Stub;-><init>()V +HSPLandroid/service/notification/NotificationListenerService$MyHandler;-><init>(Landroid/service/notification/NotificationListenerService;Landroid/os/Looper;)V +HSPLandroid/service/notification/NotificationListenerService$NotificationListenerWrapper;-><init>(Landroid/service/notification/NotificationListenerService;)V +HSPLandroid/service/notification/NotificationListenerService$Ranking;->canBubble()Z +HSPLandroid/service/notification/NotificationListenerService$Ranking;->canShowBadge()Z +HSPLandroid/service/notification/NotificationListenerService$Ranking;->getKey()Ljava/lang/String; +HSPLandroid/service/notification/NotificationListenerService$Ranking;->getLastAudiblyAlertedMillis()J +HSPLandroid/service/notification/NotificationListenerService$Ranking;->getOverrideGroupKey()Ljava/lang/String; +HSPLandroid/service/notification/NotificationListenerService$Ranking;->getRank()I +HSPLandroid/service/notification/NotificationListenerService$Ranking;->getSmartActions()Ljava/util/List; +HSPLandroid/service/notification/NotificationListenerService$Ranking;->getSmartReplies()Ljava/util/List; +HSPLandroid/service/notification/NotificationListenerService$Ranking;->getSnoozeCriteria()Ljava/util/List; +HSPLandroid/service/notification/NotificationListenerService$Ranking;->getSuppressedVisualEffects()I +HSPLandroid/service/notification/NotificationListenerService$Ranking;->getUserSentiment()I +HSPLandroid/service/notification/NotificationListenerService$Ranking;->getVisibilityOverride()I +HSPLandroid/service/notification/NotificationListenerService$Ranking;-><init>(Landroid/os/Parcel;)V +HSPLandroid/service/notification/NotificationListenerService$Ranking;->isAmbient()Z +HSPLandroid/service/notification/NotificationListenerService$Ranking;->isSuspended()Z +HSPLandroid/service/notification/NotificationListenerService$RankingMap$1;->createFromParcel(Landroid/os/Parcel;)Landroid/service/notification/NotificationListenerService$RankingMap; +HSPLandroid/service/notification/NotificationListenerService$RankingMap$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/service/notification/NotificationListenerService$RankingMap;-><init>(Landroid/os/Parcel;Landroid/service/notification/NotificationListenerService$1;)V +HSPLandroid/service/notification/NotificationListenerService$RankingMap;-><init>(Landroid/os/Parcel;)V +HSPLandroid/service/notification/NotificationListenerService$Ranking;->populate(Landroid/service/notification/NotificationListenerService$Ranking;)V +HSPLandroid/service/notification/NotificationListenerService;->attachBaseContext(Landroid/content/Context;)V +HSPLandroid/service/notification/NotificationListenerService;->getCurrentRanking()Landroid/service/notification/NotificationListenerService$RankingMap; +HSPLandroid/service/notification/NotificationListenerService;->getNotificationInterface()Landroid/app/INotificationManager; +HSPLandroid/service/notification/NotificationListenerService;->onBind(Landroid/content/Intent;)Landroid/os/IBinder; +HSPLandroid/service/notification/NotificationListenerService;->onListenerConnected()V +HSPLandroid/service/notification/NotificationListenerService;->onNotificationPosted(Landroid/service/notification/StatusBarNotification;Landroid/service/notification/NotificationListenerService$RankingMap;)V +HSPLandroid/service/notification/NotificationListenerService;->onNotificationRemoved(Landroid/service/notification/StatusBarNotification;Landroid/service/notification/NotificationListenerService$RankingMap;)V +HSPLandroid/service/notification/NotificationListenerService;->onNotificationRemoved(Landroid/service/notification/StatusBarNotification;)V +HSPLandroid/service/notification/NotificationListenerService;->registerAsSystemService(Landroid/content/Context;Landroid/content/ComponentName;I)V +HSPLandroid/service/notification/NotificationListenerService;->requestRebind(Landroid/content/ComponentName;)V +HSPLandroid/service/notification/NotificationListenerService;->setNotificationsShown([Ljava/lang/String;)V +HSPLandroid/service/notification/NotificationRankingUpdate;->getRankingMap()Landroid/service/notification/NotificationListenerService$RankingMap; +HSPLandroid/service/notification/StatusBarNotification;->getPackageContext(Landroid/content/Context;)Landroid/content/Context; +HSPLandroid/service/notification/StatusBarNotification;->isClearable()Z +HSPLandroid/service/notification/ZenModeConfig$1;->createFromParcel(Landroid/os/Parcel;)Landroid/service/notification/ZenModeConfig; +HSPLandroid/service/notification/ZenModeConfig$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/service/notification/ZenModeConfig;->getDescription(Landroid/content/Context;ZLandroid/service/notification/ZenModeConfig;Z)Ljava/lang/String; +HSPLandroid/service/notification/ZenModeConfig;->isZenOverridingRinger(ILandroid/app/NotificationManager$Policy;)Z +HSPLandroid/service/persistentdata/IPersistentDataBlockService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/persistentdata/IPersistentDataBlockService; +HSPLandroid/service/persistentdata/PersistentDataBlockManager;->getMaximumDataBlockSize()J +HSPLandroid/service/persistentdata/PersistentDataBlockManager;-><init>(Landroid/service/persistentdata/IPersistentDataBlockService;)V +HSPLandroid/service/persistentdata/PersistentDataBlockManager;->read()[B +HSPLandroid/service/persistentdata/PersistentDataBlockManager;->write([B)I +HSPLandroid/service/textclassifier/TextClassifierService;->getDefaultTextClassifierImplementation(Landroid/content/Context;)Landroid/view/textclassifier/TextClassifier; +HSPLandroid/service/wallpaper/IWallpaperService$Stub;-><init>()V +HSPLandroid/system/NetlinkSocketAddress;-><init>(II)V +HSPLandroid/system/Os;->bind(Ljava/io/FileDescriptor;Ljava/net/InetAddress;I)V +HSPLandroid/system/Os;->connect(Ljava/io/FileDescriptor;Ljava/net/InetAddress;I)V +HSPLandroid/system/Os;->connect(Ljava/io/FileDescriptor;Ljava/net/SocketAddress;)V +HSPLandroid/system/Os;->getsockname(Ljava/io/FileDescriptor;)Ljava/net/SocketAddress; +HSPLandroid/system/Os;->prctl(IJJJJ)I +HSPLandroid/system/Os;->sendto(Ljava/io/FileDescriptor;[BIIILjava/net/SocketAddress;)I +HSPLandroid/system/Os;->setsockoptIfreq(Ljava/io/FileDescriptor;IILjava/lang/String;)V +HSPLandroid/system/Os;->setsockoptInt(Ljava/io/FileDescriptor;III)V +HSPLandroid/system/PacketSocketAddress;-><init>(I[B)V +HSPLandroid/system/PacketSocketAddress;-><init>(SISB[B)V +HSPLandroid/system/PacketSocketAddress;-><init>(SI)V +HSPLandroid/system/StructGroupReq;-><init>(ILjava/net/InetAddress;)V +HSPLandroid/system/StructTimeval;-><init>(JJ)V +HSPLandroid/telecom/TelecomManager;->getTelecomService()Lcom/android/internal/telecom/ITelecomService; +HSPLandroid/telecom/TelecomManager;->isServiceConnected()Z +HSPLandroid/telecom/TelecomManager;->setUserSelectedOutgoingPhoneAccount(Landroid/telecom/PhoneAccountHandle;)V +HSPLandroid/telephony/CellIdentity$1;->createFromParcel(Landroid/os/Parcel;)Landroid/telephony/CellIdentity; +HSPLandroid/telephony/CellIdentity$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/telephony/CellIdentity;->getOperatorAlphaLong()Ljava/lang/CharSequence; +HSPLandroid/telephony/CellIdentity;->getOperatorAlphaShort()Ljava/lang/CharSequence; +HSPLandroid/telephony/CellIdentity;->inRangeOrUnavailable(III)I +HSPLandroid/telephony/CellIdentityLte;->createFromParcelBody(Landroid/os/Parcel;)Landroid/telephony/CellIdentityLte; +HSPLandroid/telephony/CellIdentityLte;->getCi()I +HSPLandroid/telephony/CellIdentityLte;->getMnc()I +HSPLandroid/telephony/CellIdentityLte;->getPci()I +HSPLandroid/telephony/CellIdentityLte;->getTac()I +HSPLandroid/telephony/CellIdentityLte;-><init>(IIIIILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/telephony/CellIdentityLte;-><init>(Landroid/hardware/radio/V1_0/CellIdentityLte;)V +HSPLandroid/telephony/CellIdentity;->setOperatorAlphaLong(Ljava/lang/String;)V +HSPLandroid/telephony/CellIdentity;->setOperatorAlphaShort(Ljava/lang/String;)V +HSPLandroid/telephony/CellInfo;->create(Landroid/hardware/radio/V1_0/CellInfo;)Landroid/telephony/CellInfo; +HSPLandroid/telephony/CellInfo;-><init>(Landroid/hardware/radio/V1_0/CellInfo;)V +HSPLandroid/telephony/CellInfoLte;->getCellIdentity()Landroid/telephony/CellIdentityLte; +HSPLandroid/telephony/CellInfoLte;->getCellSignalStrength()Landroid/telephony/CellSignalStrengthLte; +HSPLandroid/telephony/CellInfoLte;-><init>(Landroid/hardware/radio/V1_0/CellInfo;)V +HSPLandroid/telephony/CellSignalStrengthCdma;-><init>(Landroid/hardware/radio/V1_0/CdmaSignalStrength;Landroid/hardware/radio/V1_0/EvdoSignalStrength;)V +HSPLandroid/telephony/CellSignalStrength;->getRssiDbmFromAsu(I)I +HSPLandroid/telephony/CellSignalStrengthGsm;-><init>(Landroid/hardware/radio/V1_0/GsmSignalStrength;)V +HSPLandroid/telephony/CellSignalStrengthGsm;->setDefaultValues()V +HSPLandroid/telephony/CellSignalStrengthLte;->getTimingAdvance()I +HSPLandroid/telephony/CellSignalStrengthTdscdma;-><init>(Landroid/hardware/radio/V1_0/TdScdmaSignalStrength;)V +HSPLandroid/telephony/CellSignalStrengthTdscdma;->setDefaultValues()V +HSPLandroid/telephony/data/ApnSetting$Builder;->build()Landroid/telephony/data/ApnSetting; +HSPLandroid/telephony/data/ApnSetting;->getApnTypes()Ljava/util/List; +HSPLandroid/telephony/DataSpecificRegistrationInfo;-><init>(IZZZLandroid/telephony/LteVopsSupportInfo;Z)V +HSPLandroid/telephony/DataSpecificRegistrationInfo;-><init>(Landroid/telephony/DataSpecificRegistrationInfo;)V +HSPLandroid/telephony/emergency/EmergencyNumber;->compareTo(Landroid/telephony/emergency/EmergencyNumber;)I +HSPLandroid/telephony/emergency/EmergencyNumber;->getCountryIso()Ljava/lang/String; +HSPLandroid/telephony/emergency/EmergencyNumber;->getEmergencyCallRouting()I +HSPLandroid/telephony/emergency/EmergencyNumber;->getEmergencyNumberSourceBitmask()I +HSPLandroid/telephony/emergency/EmergencyNumber;->getEmergencyServiceCategoryBitmask()I +HSPLandroid/telephony/emergency/EmergencyNumber;->getEmergencyUrns()Ljava/util/List; +HSPLandroid/telephony/emergency/EmergencyNumber;->getMnc()Ljava/lang/String; +HSPLandroid/telephony/emergency/EmergencyNumber;->getNumber()Ljava/lang/String; +HSPLandroid/telephony/emergency/EmergencyNumber;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/util/List;II)V +HSPLandroid/telephony/emergency/EmergencyNumber;->mergeSameEmergencyNumbers(Landroid/telephony/emergency/EmergencyNumber;Landroid/telephony/emergency/EmergencyNumber;)Landroid/telephony/emergency/EmergencyNumber; +HSPLandroid/telephony/IccOpenLogicalChannelResponse;-><init>(II[B)V +HSPLandroid/telephony/IccOpenLogicalChannelResponse;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/telephony/ims/aidl/IImsConfig$Stub;-><init>()V +HSPLandroid/telephony/ims/feature/ImsFeature;->initialize(Landroid/content/Context;I)V +HSPLandroid/telephony/ims/feature/MmTelFeature;->getBinder()Landroid/telephony/ims/aidl/IImsMmTelFeature; +HSPLandroid/telephony/ims/feature/MmTelFeature;->getSmsImplementation()Landroid/telephony/ims/stub/ImsSmsImplBase; +HSPLandroid/telephony/ims/stub/ImsConfigImplBase$ImsConfigStub;-><init>(Landroid/telephony/ims/stub/ImsConfigImplBase;)V +HSPLandroid/telephony/ims/stub/ImsConfigImplBase;-><init>()V +HSPLandroid/telephony/ims/stub/ImsRegistrationImplBase;->getBinder()Landroid/telephony/ims/aidl/IImsRegistration; +HSPLandroid/telephony/ims/stub/ImsSmsImplBase;->onReady()V +HSPLandroid/telephony/LocationAccessPolicy$LocationPermissionQuery$Builder;->setLogAsInfo(Z)Landroid/telephony/LocationAccessPolicy$LocationPermissionQuery$Builder; +HSPLandroid/telephony/LocationAccessPolicy;->logError(Landroid/content/Context;Landroid/telephony/LocationAccessPolicy$LocationPermissionQuery;Ljava/lang/String;)V +HSPLandroid/telephony/NetworkRegistrationInfo$Builder;->build()Landroid/telephony/NetworkRegistrationInfo; +HSPLandroid/telephony/NetworkRegistrationInfo$Builder;-><init>()V +HSPLandroid/telephony/NetworkRegistrationInfo$Builder;->setDomain(I)Landroid/telephony/NetworkRegistrationInfo$Builder; +HSPLandroid/telephony/NetworkRegistrationInfo$Builder;->setRegistrationState(I)Landroid/telephony/NetworkRegistrationInfo$Builder; +HSPLandroid/telephony/NetworkRegistrationInfo$Builder;->setTransportType(I)Landroid/telephony/NetworkRegistrationInfo$Builder; +HSPLandroid/telephony/NetworkRegistrationInfo;->getCellIdentity()Landroid/telephony/CellIdentity; +HSPLandroid/telephony/NetworkRegistrationInfo;->getDomain()I +HSPLandroid/telephony/NetworkRegistrationInfo;-><init>(IIIIIZLjava/util/List;Landroid/telephony/CellIdentity;IZZZLandroid/telephony/LteVopsSupportInfo;Z)V +HSPLandroid/telephony/NetworkRegistrationInfo;-><init>(IIIIIZLjava/util/List;Landroid/telephony/CellIdentity;Landroid/telephony/NetworkRegistrationInfo$1;)V +HSPLandroid/telephony/NetworkRegistrationInfo;-><init>(Landroid/telephony/NetworkRegistrationInfo;)V +HSPLandroid/telephony/NetworkRegistrationInfo;->updateNrState(Landroid/telephony/DataSpecificRegistrationInfo;)V +HSPLandroid/telephony/PhoneNumberUtils;->charToBCD(CI)I +HSPLandroid/telephony/PhoneNumberUtils;->isEmergencyNumberInternal(ILjava/lang/String;Ljava/lang/String;Z)Z +HSPLandroid/telephony/PhoneNumberUtils;->networkPortionToCalledPartyBCD(Ljava/lang/String;)[B +HSPLandroid/telephony/PhoneNumberUtils;->numberToCalledPartyBCDHelper(Ljava/lang/String;ZI)[B +HSPLandroid/telephony/PhoneStateListener$IPhoneStateListenerStub;->lambda$onActiveDataSubIdChanged$52(Landroid/telephony/PhoneStateListener;I)V +HSPLandroid/telephony/PhoneStateListener$IPhoneStateListenerStub;->lambda$onActiveDataSubIdChanged$53$PhoneStateListener$IPhoneStateListenerStub(Landroid/telephony/PhoneStateListener;I)V +HSPLandroid/telephony/PhoneStateListener$IPhoneStateListenerStub;->lambda$onCarrierNetworkChange$40(Landroid/telephony/PhoneStateListener;Z)V +HSPLandroid/telephony/PhoneStateListener$IPhoneStateListenerStub;->lambda$onCarrierNetworkChange$41$PhoneStateListener$IPhoneStateListenerStub(Landroid/telephony/PhoneStateListener;Z)V +HSPLandroid/telephony/PhoneStateListener$IPhoneStateListenerStub;->onActiveDataSubIdChanged(I)V +HSPLandroid/telephony/PhoneStateListener$IPhoneStateListenerStub;->onCarrierNetworkChange(Z)V +HSPLandroid/telephony/PhoneStateListener;->onCallStateChanged(ILjava/lang/String;)V +HSPLandroid/telephony/ServiceState;->bearerBitmapHasCdma(I)Z +HSPLandroid/telephony/ServiceState;->getChannelNumber()I +HSPLandroid/telephony/ServiceState;->getNetworkRegistrationInfoListForDomain(I)Ljava/util/List; +HSPLandroid/telephony/ServiceState;->getNetworkRegistrationInfoList()Ljava/util/List; +HSPLandroid/telephony/ServiceState;->getOperatorAlphaShort()Ljava/lang/String; +HSPLandroid/telephony/ServiceState;->init()V +HSPLandroid/telephony/ServiceState;->networkBitmaskHasAccessNetworkType(II)Z +HSPLandroid/telephony/ServiceState;->networkTypeToAccessNetworkType(I)I +HSPLandroid/telephony/ServiceState;->setIwlanPreferred(Z)V +HSPLandroid/telephony/ServiceState;->setOperatorAlphaLongRaw(Ljava/lang/String;)V +HSPLandroid/telephony/ServiceState;->setOperatorAlphaShortRaw(Ljava/lang/String;)V +HSPLandroid/telephony/SignalStrength;-><init>(Landroid/hardware/radio/V1_0/SignalStrength;)V +HSPLandroid/telephony/SignalStrength;-><init>(Landroid/telephony/CellSignalStrengthCdma;Landroid/telephony/CellSignalStrengthGsm;Landroid/telephony/CellSignalStrengthWcdma;Landroid/telephony/CellSignalStrengthTdscdma;Landroid/telephony/CellSignalStrengthLte;Landroid/telephony/CellSignalStrengthNr;)V +HSPLandroid/telephony/SubscriptionInfo;->equals(Ljava/lang/Object;)Z +HSPLandroid/telephony/SubscriptionInfo;->getDataRoaming()I +HSPLandroid/telephony/SubscriptionInfo;-><init>(ILjava/lang/String;ILjava/lang/CharSequence;Ljava/lang/CharSequence;IILjava/lang/String;ILandroid/graphics/Bitmap;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z[Landroid/telephony/UiccAccessRule;Ljava/lang/String;IZLjava/lang/String;ZIIILjava/lang/String;)V +HSPLandroid/telephony/SubscriptionManager;->isUsableSubscriptionId(I)Z +HSPLandroid/telephony/TelephonyManager;->getDeviceId()Ljava/lang/String; +HSPLandroid/telephony/TelephonyManager;->getGroupIdLevel1(I)Ljava/lang/String; +HSPLandroid/telephony/TelephonyManager;->getITelephony()Lcom/android/internal/telephony/ITelephony; +HSPLandroid/telephony/TelephonyManager;->getLine1AlphaTag(I)Ljava/lang/String; +HSPLandroid/telephony/TelephonyManager;->getLine1AlphaTag()Ljava/lang/String; +HSPLandroid/telephony/TelephonyManager;->getNetworkOperator(I)Ljava/lang/String; +HSPLandroid/telephony/TelephonyManager;->getNetworkType(I)I +HSPLandroid/telephony/TelephonyManager;->getOpPackageName()Ljava/lang/String; +HSPLandroid/telephony/TelephonyManager;->getPhoneAccountHandleForSubscriptionId(I)Landroid/telecom/PhoneAccountHandle; +HSPLandroid/telephony/TelephonyManager;->getSimSerialNumber(I)Ljava/lang/String; +HSPLandroid/telephony/TelephonyManager;->getSimSerialNumber()Ljava/lang/String; +HSPLandroid/telephony/TelephonyManager;->getSubId()I +HSPLandroid/telephony/TelephonyManager;->getSubscriberInfo()Lcom/android/internal/telephony/IPhoneSubInfo; +HSPLandroid/telephony/VisualVoicemailSmsFilterSettings$1;->createFromParcel(Landroid/os/Parcel;)Landroid/telephony/VisualVoicemailSmsFilterSettings; +HSPLandroid/telephony/VisualVoicemailSmsFilterSettings$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/telephony/VisualVoicemailSmsFilterSettings;-><init>(Landroid/telephony/VisualVoicemailSmsFilterSettings$Builder;Landroid/telephony/VisualVoicemailSmsFilterSettings$1;)V +HSPLandroid/telephony/VisualVoicemailSmsFilterSettings;-><init>(Landroid/telephony/VisualVoicemailSmsFilterSettings$Builder;)V +HSPLandroid/telephony/VoiceSpecificRegistrationInfo;-><init>(Landroid/telephony/VoiceSpecificRegistrationInfo;)V +HSPLandroid/text/format/DateFormat;->hasSeconds(Ljava/lang/CharSequence;)Z +HSPLandroid/text/format/DateUtils;->getRelativeTimeSpanString(JJJI)Ljava/lang/CharSequence; +HSPLandroid/text/format/DateUtils;->getRelativeTimeSpanString(JJJ)Ljava/lang/CharSequence; +HSPLandroid/text/InputFilter$LengthFilter;->filter(Ljava/lang/CharSequence;IILandroid/text/Spanned;II)Ljava/lang/CharSequence; +HSPLandroid/text/InputFilter$LengthFilter;-><init>(I)V +HSPLandroid/text/StaticLayout$Builder;->setAlignment(Landroid/text/Layout$Alignment;)Landroid/text/StaticLayout$Builder; +HSPLandroid/text/StaticLayout$Builder;->setBreakStrategy(I)Landroid/text/StaticLayout$Builder; +HSPLandroid/text/StaticLayout$Builder;->setEllipsizedWidth(I)Landroid/text/StaticLayout$Builder; +HSPLandroid/text/StaticLayout$Builder;->setEllipsize(Landroid/text/TextUtils$TruncateAt;)Landroid/text/StaticLayout$Builder; +HSPLandroid/text/StaticLayout$Builder;->setHyphenationFrequency(I)Landroid/text/StaticLayout$Builder; +HSPLandroid/text/StaticLayout$Builder;->setIncludePad(Z)Landroid/text/StaticLayout$Builder; +HSPLandroid/text/StaticLayout$Builder;->setIndents([I[I)Landroid/text/StaticLayout$Builder; +HSPLandroid/text/StaticLayout$Builder;->setLineSpacing(FF)Landroid/text/StaticLayout$Builder; +HSPLandroid/text/StaticLayout$Builder;->setMaxLines(I)Landroid/text/StaticLayout$Builder; +HSPLandroid/text/StaticLayout$Builder;->setTextDirection(Landroid/text/TextDirectionHeuristic;)Landroid/text/StaticLayout$Builder; +HSPLandroid/text/StaticLayout$Builder;->setUseLineSpacingFromFallbacks(Z)Landroid/text/StaticLayout$Builder; +HSPLandroid/text/TextUtils;->ellipsize(Ljava/lang/CharSequence;Landroid/text/TextPaint;FLandroid/text/TextUtils$TruncateAt;)Ljava/lang/CharSequence; +HSPLandroid/text/TextUtils;->emptyIfNull(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/transition/Transition;->addTarget(I)Landroid/transition/Transition; +HSPLandroid/transition/Transition;->setInterpolator(Landroid/animation/TimeInterpolator;)Landroid/transition/Transition; +HSPLandroid/transition/TransitionSet;->setDuration(J)Landroid/transition/TransitionSet; +HSPLandroid/transition/TransitionSet;->setInterpolator(Landroid/animation/TimeInterpolator;)Landroid/transition/TransitionSet; +HSPLandroid/transition/Visibility;-><init>()V +HSPLandroid/util/ArrayMap;->containsValue(Ljava/lang/Object;)Z +HSPLandroid/util/ArraySet;->removeAll(Landroid/util/ArraySet;)Z +HSPLandroid/util/EventLog$Event;->getProcessId()I +HSPLandroid/util/EventLog$Event;->getTag()I +HSPLandroid/util/EventLog$Event;->getTimeNanos()J +HSPLandroid/util/FloatProperty;->set(Ljava/lang/Object;Ljava/lang/Float;)V +HSPLandroid/util/FloatProperty;->set(Ljava/lang/Object;Ljava/lang/Object;)V +HSPLandroid/util/IntProperty;-><init>(Ljava/lang/String;)V +HSPLandroid/util/IntProperty;->set(Ljava/lang/Object;Ljava/lang/Integer;)V +HSPLandroid/util/IntProperty;->set(Ljava/lang/Object;Ljava/lang/Object;)V +HSPLandroid/util/LongSparseArray;->indexOfValue(Ljava/lang/Object;)I +HSPLandroid/util/MathUtils;->constrain(FFF)F +HSPLandroid/util/MathUtils;->fitRect(Landroid/graphics/Rect;I)V +HSPLandroid/util/PathParser$PathData;->setPathData(Landroid/util/PathParser$PathData;)V +HSPLandroid/util/PathParser;->access$300(JJ)V +HSPLandroid/util/Range;->clamp(Ljava/lang/Comparable;)Ljava/lang/Comparable; +HSPLandroid/util/StatsLogInternal;->write(ILandroid/os/WorkSource;IZZZ)V +HSPLandroid/view/accessibility/AccessibilityManager;->getServiceLocked()Landroid/view/accessibility/IAccessibilityManager; +HSPLandroid/view/accessibility/AccessibilityManager;->setPictureInPictureActionReplacingConnection(Landroid/view/accessibility/IAccessibilityInteractionConnection;)V +HSPLandroid/view/accessibility/IAccessibilityInteractionConnection$Stub;-><init>()V +HSPLandroid/view/accessibility/IAccessibilityManager$Stub$Proxy;->setPictureInPictureActionReplacingConnection(Landroid/view/accessibility/IAccessibilityInteractionConnection;)V +HSPLandroid/view/animation/BaseInterpolator;-><init>()V +HSPLandroid/view/animation/OvershootInterpolator;-><init>(F)V +HSPLandroid/view/animation/PathInterpolator;-><init>(Landroid/graphics/Path;)V +HSPLandroid/view/CompositionSamplingListener;-><init>(Ljava/util/concurrent/Executor;)V +HSPLandroid/view/DisplayAddress$Physical$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/DisplayAddress$Physical; +HSPLandroid/view/DisplayAddress$Physical$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/view/DisplayAddress$Physical;-><init>(JLandroid/view/DisplayAddress$1;)V +HSPLandroid/view/DisplayAddress$Physical;-><init>(J)V +HSPLandroid/view/DisplayAddress;-><init>()V +HSPLandroid/view/Display;->getAppVsyncOffsetNanos()J +HSPLandroid/view/Display;->getCurrentSizeRange(Landroid/graphics/Point;Landroid/graphics/Point;)V +HSPLandroid/view/Display;->getPresentationDeadlineNanos()J +HSPLandroid/view/Display;->updateDisplayInfoLocked()V +HSPLandroid/view/GestureDetector;->recordGestureClassification(I)V +HSPLandroid/view/GestureExclusionTracker;->computeChangedRects()Ljava/util/List; +HSPLandroid/view/GestureExclusionTracker;->updateRectsForView(Landroid/view/View;)V +HSPLandroid/view/IDockedStackListener$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/view/IDockedStackListener$Stub;-><init>()V +HSPLandroid/view/IDockedStackListener$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLandroid/view/InputDevice$MotionRange;->getAxis()I +HSPLandroid/view/InputDevice$MotionRange;->getSource()I +HSPLandroid/view/InputDevice;->getMotionRanges()Ljava/util/List; +HSPLandroid/view/InputDevice;->getSources()I +HSPLandroid/view/InputDevice;->hasKeys([I)[Z +HSPLandroid/view/inputmethod/InputMethodSubtype;->isAuxiliary()Z +HSPLandroid/view/InsetsController;->calculateInsets(ZZLandroid/view/DisplayCutout;Landroid/graphics/Rect;Landroid/graphics/Rect;I)Landroid/view/WindowInsets; +HSPLandroid/view/InsetsSource;->calculateInsets(Landroid/graphics/Rect;Z)Landroid/graphics/Insets; +HSPLandroid/view/InsetsSource;->isVisible()Z +HSPLandroid/view/InsetsState;->calculateInsets(Landroid/graphics/Rect;ZZLandroid/view/DisplayCutout;Landroid/graphics/Rect;Landroid/graphics/Rect;ILandroid/util/SparseIntArray;)Landroid/view/WindowInsets; +HSPLandroid/view/InsetsState;->processSourceAsPublicType(Landroid/view/InsetsSource;[Landroid/graphics/Insets;Landroid/util/SparseIntArray;[ZLandroid/graphics/Insets;I)V +HSPLandroid/view/InsetsState;->processSource(Landroid/view/InsetsSource;Landroid/graphics/Rect;Z[Landroid/graphics/Insets;Landroid/util/SparseIntArray;[Z)V +HSPLandroid/view/InsetsState;->toPublicType(I)I +HSPLandroid/view/IPinnedStackController$Stub;->asInterface(Landroid/os/IBinder;)Landroid/view/IPinnedStackController; +HSPLandroid/view/IPinnedStackListener$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/view/IPinnedStackListener$Stub;-><init>()V +HSPLandroid/view/IPinnedStackListener$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLandroid/view/IRotationWatcher$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/view/IRotationWatcher$Stub;-><init>()V +HSPLandroid/view/IWallpaperVisibilityListener$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/view/IWallpaperVisibilityListener$Stub;-><init>()V +HSPLandroid/view/IWallpaperVisibilityListener$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLandroid/view/IWindowManager$Stub$Proxy;->createInputConsumer(Landroid/os/IBinder;Ljava/lang/String;ILandroid/view/InputChannel;)V +HSPLandroid/view/IWindowManager$Stub$Proxy;->destroyInputConsumer(Ljava/lang/String;I)Z +HSPLandroid/view/IWindowManager$Stub$Proxy;->freezeRotation(I)V +HSPLandroid/view/IWindowManager$Stub$Proxy;->getDockedStackSide()I +HSPLandroid/view/IWindowManager$Stub$Proxy;->getInitialDisplaySize(ILandroid/graphics/Point;)V +HSPLandroid/view/IWindowManager$Stub$Proxy;->getStableInsets(ILandroid/graphics/Rect;)V +HSPLandroid/view/IWindowManager$Stub$Proxy;->registerDockedStackListener(Landroid/view/IDockedStackListener;)V +HSPLandroid/view/IWindowManager$Stub$Proxy;->registerPinnedStackListener(ILandroid/view/IPinnedStackListener;)V +HSPLandroid/view/IWindowManager$Stub$Proxy;->registerShortcutKey(JLcom/android/internal/policy/IShortcutService;)V +HSPLandroid/view/IWindowManager$Stub$Proxy;->registerWallpaperVisibilityListener(Landroid/view/IWallpaperVisibilityListener;I)Z +HSPLandroid/view/IWindowManager$Stub$Proxy;->setDockedStackDividerTouchRegion(Landroid/graphics/Rect;)V +HSPLandroid/view/IWindowManager$Stub$Proxy;->setNavBarVirtualKeyHapticFeedbackEnabled(Z)V +HSPLandroid/view/IWindowManager$Stub$Proxy;->setShelfHeight(ZI)V +HSPLandroid/view/IWindowManager$Stub$Proxy;->statusBarVisibilityChanged(II)V +HSPLandroid/view/IWindowManager$Stub$Proxy;->watchRotation(Landroid/view/IRotationWatcher;I)I +HSPLandroid/view/IWindowSession$Stub$Proxy;->reportSystemGestureExclusionChanged(Landroid/view/IWindow;Ljava/util/List;)V +HSPLandroid/view/IWindowSession$Stub$Proxy;->setWallpaperPosition(Landroid/os/IBinder;FFFF)V +HSPLandroid/view/LayoutInflater;->createView(Ljava/lang/String;Ljava/lang/String;Landroid/util/AttributeSet;)Landroid/view/View; +HSPLandroid/view/RemoteAnimationAdapter;-><init>(Landroid/view/IRemoteAnimationRunner;JJ)V +HSPLandroid/view/RemoteAnimationAdapter;-><init>(Landroid/view/IRemoteAnimationRunner;JJZ)V +HSPLandroid/view/RemoteAnimationAdapter;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/view/SurfaceControl$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/SurfaceControl; +HSPLandroid/view/SurfaceControl$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/view/SurfaceControl$Transaction;->deferTransactionUntilSurface(Landroid/view/SurfaceControl;Landroid/view/Surface;J)Landroid/view/SurfaceControl$Transaction; +HSPLandroid/view/SurfaceControl;->access$2700(JJJJ)V +HSPLandroid/view/SurfaceControl;->access$800(Landroid/view/SurfaceControl;)V +HSPLandroid/view/SurfaceControl;->checkNotReleased()V +HSPLandroid/view/SurfaceControl;-><init>(Landroid/os/Parcel;Landroid/view/SurfaceControl$1;)V +HSPLandroid/view/SurfaceControl;-><init>(Landroid/os/Parcel;)V +HSPLandroid/view/textclassifier/ConfigParser;->getBoolean(Ljava/lang/String;Z)Z +HSPLandroid/view/textclassifier/ConfigParser;->getInt(Ljava/lang/String;I)I +HSPLandroid/view/textclassifier/ConfigParser;->getLegacySettings()Landroid/util/KeyValueListParser; +HSPLandroid/view/textclassifier/TextClassificationManager;->getApplicationContext()Landroid/content/Context; +HSPLandroid/view/textclassifier/TextClassificationManager;->getTextClassifier(I)Landroid/view/textclassifier/TextClassifier; +HSPLandroid/view/textclassifier/TextClassificationManager;->lambda$getSettings$2$TextClassificationManager()Ljava/lang/String; +HSPLandroid/view/ThreadedRenderer;->registerRtFrameCallback(Landroid/graphics/HardwareRenderer$FrameDrawingCallback;)V +HSPLandroid/view/View$10;->setValue(Landroid/view/View;F)V +HSPLandroid/view/View$10;->setValue(Ljava/lang/Object;F)V +HSPLandroid/view/View$1;-><init>(Landroid/view/View;)V +HSPLandroid/view/View$1;->positionChanged(JIIII)V +HSPLandroid/view/View$7;->get(Landroid/view/View;)Ljava/lang/Float; +HSPLandroid/view/View$7;->get(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroid/view/View$8;->get(Landroid/view/View;)Ljava/lang/Float; +HSPLandroid/view/View$8;->get(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroid/view/View$8;->setValue(Landroid/view/View;F)V +HSPLandroid/view/View$8;->setValue(Ljava/lang/Object;F)V +HSPLandroid/view/View$ListenerInfo;->access$1200(Landroid/view/View$ListenerInfo;)Ljava/util/List; +HSPLandroid/view/View$ListenerInfo;->access$1202(Landroid/view/View$ListenerInfo;Ljava/util/List;)Ljava/util/List; +HSPLandroid/view/View$TransformationInfo;->access$2300(Landroid/view/View$TransformationInfo;)F +HSPLandroid/view/View$TransformationInfo;->access$2302(Landroid/view/View$TransformationInfo;F)F +HSPLandroid/view/View;->canReceivePointerEvents()Z +HSPLandroid/view/View;->checkForLongClick(JFFI)V +HSPLandroid/view/ViewConfiguration;->getScrollBarFadeDuration()I +HSPLandroid/view/ViewConfiguration;->getScrollDefaultDelay()I +HSPLandroid/view/ViewConfiguration;->getScrollFriction()F +HSPLandroid/view/View;->forceHasOverlappingRendering(Z)V +HSPLandroid/view/View;->getClipBounds()Landroid/graphics/Rect; +HSPLandroid/view/View;->getLocalVisibleRect(Landroid/graphics/Rect;)Z +HSPLandroid/view/View;->getSystemGestureExclusionRects()Ljava/util/List; +HSPLandroid/view/ViewGroup;->addTransientView(Landroid/view/View;I)V +HSPLandroid/view/ViewGroup;->getTransientViewCount()I +HSPLandroid/view/ViewGroup;->getTransientView(I)Landroid/view/View; +HSPLandroid/view/ViewGroup;->removeTransientView(Landroid/view/View;)V +HSPLandroid/view/View;->initScrollCache()V +HSPLandroid/view/View;->isPaddingRelative()Z +HSPLandroid/view/View;->isVerticalFadingEdgeEnabled()Z +HSPLandroid/view/View;->postUpdateSystemGestureExclusionRects()V +HSPLandroid/view/ViewPropertyAnimator;->withLayer()Landroid/view/ViewPropertyAnimator; +HSPLandroid/view/ViewRootImpl;->getView()Landroid/view/View; +HSPLandroid/view/ViewRootImpl;->registerRtFrameCallback(Landroid/graphics/HardwareRenderer$FrameDrawingCallback;)V +HSPLandroid/view/ViewRootImpl;->systemGestureExclusionChanged()V +HSPLandroid/view/ViewRootImpl;->updateSystemGestureExclusionRectsForView(Landroid/view/View;)V +HSPLandroid/view/View;->setAccessibilityPaneTitle(Ljava/lang/CharSequence;)V +HSPLandroid/view/View;->setAlphaInternal(F)V +HSPLandroid/view/View;->setForceDarkAllowed(Z)V +HSPLandroid/view/View;->setHapticFeedbackEnabled(Z)V +HSPLandroid/view/View;->setSystemGestureExclusionRects(Ljava/util/List;)V +HSPLandroid/view/View;->setVerticalFadingEdgeEnabled(Z)V +HSPLandroid/view/ViewStub;->setVisibilityAsync(I)Ljava/lang/Runnable; +HSPLandroid/view/ViewTreeObserver;->dispatchOnSystemGestureExclusionRectsChanged(Ljava/util/List;)V +HSPLandroid/view/View;->updateSystemGestureExclusionRects()V +HSPLandroid/view/WindowInsets$Type;->compatSystemInsets()I +HSPLandroid/view/WindowInsets;->assignCompatInsets([Landroid/graphics/Insets;Landroid/graphics/Rect;)V +HSPLandroid/view/WindowInsets;->getMandatorySystemGestureInsets()Landroid/graphics/Insets; +HSPLandroid/view/WindowInsets;->getStableInsets()Landroid/graphics/Insets; +HSPLandroid/view/WindowInsets;->getStableInsetTop()I +HSPLandroid/view/WindowInsets;->getTappableElementInsets()Landroid/graphics/Insets; +HSPLandroid/view/WindowManager$LayoutParams;-><init>(IIIIIII)V +HSPLandroid/view/WindowManager$LayoutParams;-><init>(IIIII)V +HSPLandroid/view/Window;->setOnWindowDismissedCallback(Landroid/view/Window$OnWindowDismissedCallback;)V +HSPLandroid/view/Window;->setWindowControllerCallback(Landroid/view/Window$WindowControllerCallback;)V +HSPLandroid/widget/AbsSeekBar;->setThumbTintList(Landroid/content/res/ColorStateList;)V +HSPLandroid/widget/AbsSeekBar;->updateGestureExclusionRects()V +HSPLandroid/widget/ActionMenuPresenter$2;->onViewAttachedToWindow(Landroid/view/View;)V +HSPLandroid/widget/Button;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V +HSPLandroid/widget/ImageView;->access$002(Landroid/widget/ImageView;Landroid/net/Uri;)Landroid/net/Uri; +HSPLandroid/widget/ImageView;->access$102(Landroid/widget/ImageView;I)I +HSPLandroid/widget/ImageView;->setImageIconAsync(Landroid/graphics/drawable/Icon;)Ljava/lang/Runnable; +HSPLandroid/widget/ImageView;->setImageLevel(I)V +HSPLandroid/widget/ProgressBar$1;->get(Landroid/widget/ProgressBar;)Ljava/lang/Float; +HSPLandroid/widget/ProgressBar$1;->get(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroid/widget/ProgressBar$1;->setValue(Landroid/widget/ProgressBar;F)V +HSPLandroid/widget/ProgressBar$1;->setValue(Ljava/lang/Object;F)V +HSPLandroid/widget/ProgressBar;->access$700(Landroid/widget/ProgressBar;IF)V +HSPLandroid/widget/ProgressBar;->access$800(Landroid/widget/ProgressBar;)F +HSPLandroid/widget/ProgressBar;->access$802(Landroid/widget/ProgressBar;F)F +HSPLandroid/widget/ProgressBar;->applyProgressBackgroundTint()V +HSPLandroid/widget/ProgressBar;->getTintTarget(IZ)Landroid/graphics/drawable/Drawable; +HSPLandroid/widget/ProgressBar;->setProgressBackgroundTintList(Landroid/content/res/ColorStateList;)V +HSPLandroid/widget/ProgressBar;->setProgress(IZ)V +HSPLandroid/widget/ProgressBar;->setProgressTintList(Landroid/content/res/ColorStateList;)V +HSPLandroid/widget/RelativeLayout$LayoutParams;-><init>(Landroid/view/ViewGroup$MarginLayoutParams;)V +HSPLandroid/widget/RelativeLayout$LayoutParams;->removeRule(I)V +HSPLandroid/widget/RelativeLayout;->generateLayoutParams(Landroid/view/ViewGroup$LayoutParams;)Landroid/view/ViewGroup$LayoutParams; +HSPLandroid/widget/RelativeLayout;->getGravity()I +HSPLandroid/widget/RemoteViews$1;->apply(Landroid/view/View;Landroid/view/ViewGroup;Landroid/widget/RemoteViews$OnClickHandler;)V +HSPLandroid/widget/RemoteViews$Action;->initActionAsync(Landroid/widget/RemoteViews$ViewTree;Landroid/view/ViewGroup;Landroid/widget/RemoteViews$OnClickHandler;)Landroid/widget/RemoteViews$Action; +HSPLandroid/widget/RemoteViews$Action;-><init>(Landroid/widget/RemoteViews$1;)V +HSPLandroid/widget/RemoteViews$Action;-><init>()V +HSPLandroid/widget/RemoteViews$BitmapCache;-><init>()V +HSPLandroid/widget/RemoteViews$LayoutParamAction;->apply(Landroid/view/View;Landroid/view/ViewGroup;Landroid/widget/RemoteViews$OnClickHandler;)V +HSPLandroid/widget/RemoteViews$LayoutParamAction;-><init>(III)V +HSPLandroid/widget/RemoteViews$LayoutParamAction;->resolveDimenPixelOffset(Landroid/view/View;I)I +HSPLandroid/widget/RemoteViews$ReflectionAction;->initActionAsync(Landroid/widget/RemoteViews$ViewTree;Landroid/view/ViewGroup;Landroid/widget/RemoteViews$OnClickHandler;)Landroid/widget/RemoteViews$Action; +HSPLandroid/widget/RemoteViews$ReflectionAction;-><init>(Landroid/widget/RemoteViews;ILjava/lang/String;ILjava/lang/Object;)V +HSPLandroid/widget/RemoteViews$RemoteResponse;->access$500(Landroid/widget/RemoteViews$RemoteResponse;)Landroid/app/PendingIntent; +HSPLandroid/widget/RemoteViews$RuntimeAction;-><init>(Landroid/widget/RemoteViews$1;)V +HSPLandroid/widget/RemoteViews$RuntimeAction;-><init>()V +HSPLandroid/widget/RemoteViews$SetDrawableTint;->apply(Landroid/view/View;Landroid/view/ViewGroup;Landroid/widget/RemoteViews$OnClickHandler;)V +HSPLandroid/widget/RemoteViews$SetDrawableTint;-><init>(Landroid/widget/RemoteViews;IZILandroid/graphics/PorterDuff$Mode;)V +HSPLandroid/widget/RemoteViews$SetOnClickResponse;->apply(Landroid/view/View;Landroid/view/ViewGroup;Landroid/widget/RemoteViews$OnClickHandler;)V +HSPLandroid/widget/RemoteViews;->access$1100(Landroid/widget/RemoteViews;Landroid/widget/RemoteViews;)V +HSPLandroid/widget/RemoteViews;->access$1500(Landroid/widget/RemoteViews;Landroid/content/Context;Landroid/view/ViewGroup;Landroid/widget/RemoteViews$OnViewAppliedListener;Landroid/widget/RemoteViews$OnClickHandler;)Landroid/widget/RemoteViews$AsyncApplyTask; +HSPLandroid/widget/RemoteViews;->access$2400(Landroid/widget/RemoteViews;Landroid/content/Context;Landroid/widget/RemoteViews;Landroid/view/ViewGroup;)Landroid/view/View; +HSPLandroid/widget/RemoteViews;->access$2600(Landroid/widget/RemoteViews;)Ljava/util/ArrayList; +HSPLandroid/widget/RemoteViews;->access$700(Landroid/widget/RemoteViews;Landroid/view/View;Ljava/lang/String;Ljava/lang/Class;Z)Ljava/lang/invoke/MethodHandle; +HSPLandroid/widget/RemoteViews;->access$900()Landroid/widget/RemoteViews$Action; +HSPLandroid/widget/RemoteViews;->addAction(Landroid/widget/RemoteViews$Action;)V +HSPLandroid/widget/RemoteViews;->addView(ILandroid/widget/RemoteViews;)V +HSPLandroid/widget/RemoteViews;->applyAsync(Landroid/content/Context;Landroid/view/ViewGroup;Ljava/util/concurrent/Executor;Landroid/widget/RemoteViews$OnViewAppliedListener;Landroid/widget/RemoteViews$OnClickHandler;)Landroid/os/CancellationSignal; +HSPLandroid/widget/RemoteViews;->configureRemoteViewsAsChild(Landroid/widget/RemoteViews;)V +HSPLandroid/widget/RemoteViews;->getAsyncApplyTask(Landroid/content/Context;Landroid/view/ViewGroup;Landroid/widget/RemoteViews$OnViewAppliedListener;Landroid/widget/RemoteViews$OnClickHandler;)Landroid/widget/RemoteViews$AsyncApplyTask; +HSPLandroid/widget/RemoteViews;->getRemoteViewsToApply(Landroid/content/Context;)Landroid/widget/RemoteViews; +HSPLandroid/widget/RemoteViews;->hasLandscapeAndPortraitLayouts()Z +HSPLandroid/widget/RemoteViews;->inflateView(Landroid/content/Context;Landroid/widget/RemoteViews;Landroid/view/ViewGroup;)Landroid/view/View; +HSPLandroid/widget/RemoteViews;-><init>(Landroid/content/pm/ApplicationInfo;I)V +HSPLandroid/widget/RemoteViews;->removeAllViews(I)V +HSPLandroid/widget/RemoteViews;->setBoolean(ILjava/lang/String;Z)V +HSPLandroid/widget/RemoteViews;->setDrawableTint(IZILandroid/graphics/PorterDuff$Mode;)V +HSPLandroid/widget/RemoteViews;->setIcon(ILjava/lang/String;Landroid/graphics/drawable/Icon;)V +HSPLandroid/widget/RemoteViews;->setImageViewIcon(ILandroid/graphics/drawable/Icon;)V +HSPLandroid/widget/RemoteViews;->setIntTag(III)V +HSPLandroid/widget/RemoteViews;->setLong(ILjava/lang/String;J)V +HSPLandroid/widget/RemoteViews;->setRemoteInputs(I[Landroid/app/RemoteInput;)V +HSPLandroid/widget/RemoteViews;->setTextColor(II)V +HSPLandroid/widget/RemoteViews;->setViewLayoutMarginBottomDimen(II)V +HSPLandroid/widget/RemoteViews;->setViewLayoutMarginEnd(II)V +HSPLandroid/widget/RemoteViews;->setViewLayoutWidth(II)V +HSPLandroid/widget/RemoteViews;->startTaskOnExecutor(Landroid/widget/RemoteViews$AsyncApplyTask;Ljava/util/concurrent/Executor;)Landroid/os/CancellationSignal; +HSPLandroid/widget/SeekBar;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V +HSPLandroid/widget/SeekBar;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V +HSPLandroid/widget/SeekBar;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLandroid/widget/TextView;->getCompoundDrawablePadding()I +HSPLandroid/widget/TextView;->getCompoundDrawables()[Landroid/graphics/drawable/Drawable; +HSPLandroid/widget/TextView;->getCompoundDrawablesRelative()[Landroid/graphics/drawable/Drawable; +HSPLandroid/widget/TextView;->setCompoundDrawablesRelativeWithIntrinsicBounds(IIII)V +HSPLandroid/widget/TextView;->setFontFeatureSettings(Ljava/lang/String;)V +HSPLandroid/widget/TextView;->setLineHeight(I)V +HSPLandroid/widget/TextView;->setMarqueeRepeatLimit(I)V +HSPLandroid/widget/Toolbar;->setTitle(I)V +HSPLandroid/widget/ViewAnimator;->getDisplayedChild()I +HSPLcom/android/internal/app/AssistUtils;->activeServiceSupportsLaunchFromKeyguard()Z +HSPLcom/android/internal/app/AssistUtils;->getActiveServiceComponentName()Landroid/content/ComponentName; +HSPLcom/android/internal/app/AssistUtils;->onLockscreenShown()V +HSPLcom/android/internal/app/AssistUtils;->registerVoiceInteractionSessionListener(Lcom/android/internal/app/IVoiceInteractionSessionListener;)V +HSPLcom/android/internal/app/IAppOpsActiveCallback$Stub;->asBinder()Landroid/os/IBinder; +HSPLcom/android/internal/app/IAppOpsActiveCallback$Stub;-><init>()V +HSPLcom/android/internal/app/IAppOpsNotedCallback$Stub;->asBinder()Landroid/os/IBinder; +HSPLcom/android/internal/app/IAppOpsNotedCallback$Stub;-><init>()V +HSPLcom/android/internal/app/IAppOpsNotedCallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLcom/android/internal/app/IAppOpsService$Stub$Proxy;->checkOperationRaw(IILjava/lang/String;)I +HSPLcom/android/internal/app/IAppOpsService$Stub$Proxy;->finishOperation(Landroid/os/IBinder;IILjava/lang/String;)V +HSPLcom/android/internal/app/IAppOpsService$Stub$Proxy;->getPackagesForOps([I)Ljava/util/List; +HSPLcom/android/internal/app/IAppOpsService$Stub$Proxy;->getToken(Landroid/os/IBinder;)Landroid/os/IBinder; +HSPLcom/android/internal/app/IAppOpsService$Stub$Proxy;->startOperation(Landroid/os/IBinder;IILjava/lang/String;Z)I +HSPLcom/android/internal/app/IAppOpsService$Stub$Proxy;->startWatchingActive([ILcom/android/internal/app/IAppOpsActiveCallback;)V +HSPLcom/android/internal/app/IAppOpsService$Stub$Proxy;->startWatchingModeWithFlags(ILjava/lang/String;ILcom/android/internal/app/IAppOpsCallback;)V +HSPLcom/android/internal/app/IAppOpsService$Stub$Proxy;->startWatchingNoted([ILcom/android/internal/app/IAppOpsNotedCallback;)V +HSPLcom/android/internal/app/IBatteryStats$Stub$Proxy;->noteBleScanResults(Landroid/os/WorkSource;I)V +HSPLcom/android/internal/app/IBatteryStats$Stub$Proxy;->noteBleScanStarted(Landroid/os/WorkSource;Z)V +HSPLcom/android/internal/app/IBatteryStats$Stub$Proxy;->noteBleScanStopped(Landroid/os/WorkSource;Z)V +HSPLcom/android/internal/app/IBatteryStats$Stub$Proxy;->noteResetBleScan()V +HSPLcom/android/internal/app/IVoiceInteractionManagerService$Stub$Proxy;->activeServiceSupportsLaunchFromKeyguard()Z +HSPLcom/android/internal/app/IVoiceInteractionManagerService$Stub$Proxy;->getActiveServiceComponentName()Landroid/content/ComponentName; +HSPLcom/android/internal/app/IVoiceInteractionManagerService$Stub$Proxy;->onLockscreenShown()V +HSPLcom/android/internal/app/IVoiceInteractionManagerService$Stub$Proxy;->registerVoiceInteractionSessionListener(Lcom/android/internal/app/IVoiceInteractionSessionListener;)V +HSPLcom/android/internal/app/IVoiceInteractionSessionListener$Stub;->asBinder()Landroid/os/IBinder; +HSPLcom/android/internal/app/IVoiceInteractionSessionListener$Stub;-><init>()V +HSPLcom/android/internal/appwidget/IAppWidgetService$Stub$Proxy;->getInstalledProvidersForProfile(IILjava/lang/String;)Landroid/content/pm/ParceledListSlice; +HSPLcom/android/internal/appwidget/IAppWidgetService$Stub$Proxy;->startListening(Lcom/android/internal/appwidget/IAppWidgetHost;Ljava/lang/String;I[I)Landroid/content/pm/ParceledListSlice; +HSPLcom/android/internal/appwidget/IAppWidgetService$Stub$Proxy;->stopListening(Ljava/lang/String;I)V +HSPLcom/android/internal/backup/IBackupTransport$Stub;->asBinder()Landroid/os/IBinder; +HSPLcom/android/internal/backup/IBackupTransport$Stub;-><init>()V +HSPLcom/android/internal/backup/IBackupTransport$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLcom/android/internal/graphics/SfVsyncFrameCallbackProvider;-><init>()V +HSPLcom/android/internal/location/ILocationProviderManager$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/location/ILocationProviderManager; +HSPLcom/android/internal/location/ProviderRequest$1;->createFromParcel(Landroid/os/Parcel;)Lcom/android/internal/location/ProviderRequest; +HSPLcom/android/internal/location/ProviderRequest$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLcom/android/internal/logging/MetricsLogger;->visibility(IZ)V +HSPLcom/android/internal/os/IDropBoxManagerService$Stub$Proxy;->getNextEntry(Ljava/lang/String;JLjava/lang/String;)Landroid/os/DropBoxManager$Entry; +HSPLcom/android/internal/os/Zygote;->disableExecuteOnly(I)V +HSPLcom/android/internal/os/Zygote;->forkAndSpecialize(II[II[[IILjava/lang/String;Ljava/lang/String;[I[IZLjava/lang/String;Ljava/lang/String;I)I +HSPLcom/android/internal/policy/DecorView;->calculateBarColor(IIIIIIZ)I +HSPLcom/android/internal/policy/DecorView;->calculateNavigationBarColor()I +HSPLcom/android/internal/policy/DecorView;->drawLegacyNavigationBarBackground(Landroid/graphics/RecordingCanvas;)V +HSPLcom/android/internal/policy/DecorView;->getBackground()Landroid/graphics/drawable/Drawable; +HSPLcom/android/internal/policy/DecorView;->updateBackgroundDrawable()V +HSPLcom/android/internal/policy/DividerSnapAlgorithm;->getMiddleTarget()Lcom/android/internal/policy/DividerSnapAlgorithm$SnapTarget; +HSPLcom/android/internal/policy/DividerSnapAlgorithm;-><init>(Landroid/content/res/Resources;IIIZLandroid/graphics/Rect;I)V +HSPLcom/android/internal/policy/IKeyguardDrawnCallback$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/policy/IKeyguardDrawnCallback; +HSPLcom/android/internal/policy/IKeyguardService$Stub;-><init>()V +HSPLcom/android/internal/policy/IKeyguardService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLcom/android/internal/policy/IKeyguardStateCallback$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/policy/IKeyguardStateCallback; +HSPLcom/android/internal/policy/IShortcutService$Stub;->asBinder()Landroid/os/IBinder; +HSPLcom/android/internal/policy/IShortcutService$Stub;-><init>()V +HSPLcom/android/internal/policy/PhoneWindow;->getTransitionBackgroundFadeDuration()J +HSPLcom/android/internal/policy/ScreenDecorationsUtils;->supportsRoundedCornersOnWindows(Landroid/content/res/Resources;)Z +HSPLcom/android/internal/statusbar/IStatusBar$Stub;->asBinder()Landroid/os/IBinder; +HSPLcom/android/internal/statusbar/IStatusBar$Stub;-><init>()V +HSPLcom/android/internal/statusbar/IStatusBar$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLcom/android/internal/statusbar/StatusBarIcon;->clone()Lcom/android/internal/statusbar/StatusBarIcon; +HSPLcom/android/internal/telecom/ITelecomService$Stub$Proxy;->setUserSelectedOutgoingPhoneAccount(Landroid/telecom/PhoneAccountHandle;)V +HSPLcom/android/internal/telephony/CarrierKeyDownloadManager;->handleAlarmOrConfigChange()V +HSPLcom/android/internal/telephony/CarrierKeyDownloadManager;->handleMessage(Landroid/os/Message;)V +HSPLcom/android/internal/telephony/CarrierResolver$CarrierMatchingRule;->access$300(Lcom/android/internal/telephony/CarrierResolver$CarrierMatchingRule;)I +HSPLcom/android/internal/telephony/CarrierResolver$CarrierMatchingRule;->access$400(Lcom/android/internal/telephony/CarrierResolver$CarrierMatchingRule;)I +HSPLcom/android/internal/telephony/CarrierResolver$CarrierMatchingRule;->access$500(Lcom/android/internal/telephony/CarrierResolver$CarrierMatchingRule;)I +HSPLcom/android/internal/telephony/CarrierResolver$CarrierMatchingRule;->access$700(Lcom/android/internal/telephony/CarrierResolver$CarrierMatchingRule;)Ljava/lang/String; +HSPLcom/android/internal/telephony/CarrierResolver$CarrierMatchingRule;->imsiPrefixMatch(Ljava/lang/String;Ljava/lang/String;)Z +HSPLcom/android/internal/telephony/CarrierResolver;->isPreferApnUserEdited(Ljava/lang/String;)Z +HSPLcom/android/internal/telephony/CarrierResolver;->logd(Ljava/lang/String;)V +HSPLcom/android/internal/telephony/cdma/EriManager$EriFile;-><init>(Lcom/android/internal/telephony/cdma/EriManager;)V +HSPLcom/android/internal/telephony/cdma/EriManager;-><init>(Lcom/android/internal/telephony/Phone;I)V +HSPLcom/android/internal/telephony/CellularNetworkService$CellularNetworkServiceProvider;->convertHalCellIdentityToCellIdentity(Landroid/hardware/radio/V1_0/CellIdentity;)Landroid/telephony/CellIdentity; +HSPLcom/android/internal/telephony/CommandException;-><init>(Lcom/android/internal/telephony/CommandException$Error;)V +HSPLcom/android/internal/telephony/dataconnection/ApnContext;->log(Ljava/lang/String;)V +HSPLcom/android/internal/telephony/dataconnection/ApnContext;->logl(Ljava/lang/String;)V +HSPLcom/android/internal/telephony/dataconnection/ApnContext;->releaseNetwork(Landroid/net/NetworkRequest;I)V +HSPLcom/android/internal/telephony/dataconnection/ApnContext;->requestNetwork(Landroid/net/NetworkRequest;ILandroid/os/Message;)V +HSPLcom/android/internal/telephony/dataconnection/ApnSettingUtils;->isMeteredApnType(ILcom/android/internal/telephony/Phone;)Z +HSPLcom/android/internal/telephony/dataconnection/DataConnection$ConnectionParams;-><init>(Lcom/android/internal/telephony/dataconnection/ApnContext;IILandroid/os/Message;III)V +HSPLcom/android/internal/telephony/dataconnection/DataConnection;->bringUp(Lcom/android/internal/telephony/dataconnection/ApnContext;IILandroid/os/Message;III)V +HSPLcom/android/internal/telephony/dataconnection/DataConnectionReasons$DataDisallowedReasonType;->isHardReason()Z +HSPLcom/android/internal/telephony/dataconnection/DataConnectionReasons;->add(Lcom/android/internal/telephony/dataconnection/DataConnectionReasons$DataDisallowedReasonType;)V +HSPLcom/android/internal/telephony/dataconnection/DataConnectionReasons;->containsHardDisallowedReasons()Z +HSPLcom/android/internal/telephony/dataconnection/DataConnectionReasons;->contains(Lcom/android/internal/telephony/dataconnection/DataConnectionReasons$DataDisallowedReasonType;)Z +HSPLcom/android/internal/telephony/dataconnection/DataConnectionReasons;->containsOnly(Lcom/android/internal/telephony/dataconnection/DataConnectionReasons$DataDisallowedReasonType;)Z +HSPLcom/android/internal/telephony/dataconnection/DataConnection;->setHandoverState(I)V +HSPLcom/android/internal/telephony/dataconnection/DataEnabledSettings;->access$000(Lcom/android/internal/telephony/dataconnection/DataEnabledSettings;)I +HSPLcom/android/internal/telephony/dataconnection/DataEnabledSettings;->access$002(Lcom/android/internal/telephony/dataconnection/DataEnabledSettings;I)I +HSPLcom/android/internal/telephony/dataconnection/DataEnabledSettings;->access$100(Lcom/android/internal/telephony/dataconnection/DataEnabledSettings;)Lcom/android/internal/telephony/Phone; +HSPLcom/android/internal/telephony/dataconnection/DataEnabledSettings;->access$200(Lcom/android/internal/telephony/dataconnection/DataEnabledSettings;Ljava/lang/String;)V +HSPLcom/android/internal/telephony/dataconnection/DataEnabledSettings;->access$302(Lcom/android/internal/telephony/dataconnection/DataEnabledSettings;Lcom/android/internal/telephony/dataconnection/DataEnabledOverride;)Lcom/android/internal/telephony/dataconnection/DataEnabledOverride; +HSPLcom/android/internal/telephony/dataconnection/DataEnabledSettings;->access$400(Lcom/android/internal/telephony/dataconnection/DataEnabledSettings;)Lcom/android/internal/telephony/dataconnection/DataEnabledOverride; +HSPLcom/android/internal/telephony/dataconnection/DataEnabledSettings;->access$500(Lcom/android/internal/telephony/dataconnection/DataEnabledSettings;)V +HSPLcom/android/internal/telephony/dataconnection/DataEnabledSettings;->access$600(Lcom/android/internal/telephony/dataconnection/DataEnabledSettings;I)V +HSPLcom/android/internal/telephony/dataconnection/DataEnabledSettings;->getDataEnabledOverride()Lcom/android/internal/telephony/dataconnection/DataEnabledOverride; +HSPLcom/android/internal/telephony/dataconnection/DataEnabledSettings;->isDataEnabled(I)Z +HSPLcom/android/internal/telephony/dataconnection/DataEnabledSettings;->localLog(Ljava/lang/String;Z)V +HSPLcom/android/internal/telephony/dataconnection/DataEnabledSettings;->log(Ljava/lang/String;)V +HSPLcom/android/internal/telephony/dataconnection/DataEnabledSettings;->notifyDataEnabledOverrideChanged()V +HSPLcom/android/internal/telephony/dataconnection/DataEnabledSettings;->registerForDataEnabledOverrideChanged(Landroid/os/Handler;I)V +HSPLcom/android/internal/telephony/dataconnection/DataEnabledSettings;->setDataRoamingEnabled(Z)V +HSPLcom/android/internal/telephony/dataconnection/DataEnabledSettings;->updateDataEnabledAndNotify(I)V +HSPLcom/android/internal/telephony/dataconnection/DataEnabledSettings;->updatePhoneStateListener()V +HSPLcom/android/internal/telephony/dataconnection/DcTracker;->isDataAllowed(Lcom/android/internal/telephony/dataconnection/ApnContext;ILcom/android/internal/telephony/dataconnection/DataConnectionReasons;)Z +HSPLcom/android/internal/telephony/dataconnection/DcTracker;->log(Ljava/lang/String;)V +HSPLcom/android/internal/telephony/dataconnection/DcTracker;->onDataEnabledOverrideRulesChanged()V +HSPLcom/android/internal/telephony/dataconnection/DcTracker;->releaseNetwork(Landroid/net/NetworkRequest;I)V +HSPLcom/android/internal/telephony/dataconnection/DcTracker;->requestNetwork(Landroid/net/NetworkRequest;ILandroid/os/Message;)V +HSPLcom/android/internal/telephony/dataconnection/DcTracker;->requestTypeToString(I)Ljava/lang/String; +HSPLcom/android/internal/telephony/dataconnection/DcTracker;->setupDataOnAllConnectableApns(Ljava/lang/String;Lcom/android/internal/telephony/dataconnection/DcTracker$RetryFailures;)V +HSPLcom/android/internal/telephony/dataconnection/DcTracker;->setupDataOnConnectableApn(Lcom/android/internal/telephony/dataconnection/ApnContext;Ljava/lang/String;Lcom/android/internal/telephony/dataconnection/DcTracker$RetryFailures;)V +HSPLcom/android/internal/telephony/dataconnection/DcTracker;->shouldAutoAttach()Z +HSPLcom/android/internal/telephony/dataconnection/DcTracker;->shouldCleanUpConnection(Lcom/android/internal/telephony/dataconnection/ApnContext;Z)Z +HSPLcom/android/internal/telephony/dataconnection/TelephonyNetworkFactory;->logl(Ljava/lang/String;)V +HSPLcom/android/internal/telephony/dataconnection/TransportManager;->isAnyApnPreferredOnIwlan()Z +HSPLcom/android/internal/telephony/DefaultPhoneNotifier;->notifyEmergencyNumberList(Lcom/android/internal/telephony/Phone;)V +HSPLcom/android/internal/telephony/DefaultPhoneNotifier;->notifyOemHookRawEventForSubscriber(Lcom/android/internal/telephony/Phone;[B)V +HSPLcom/android/internal/telephony/DefaultPhoneNotifier;->notifyRadioPowerStateChanged(Lcom/android/internal/telephony/Phone;I)V +HSPLcom/android/internal/telephony/DefaultPhoneNotifier;->notifyUserMobileDataStateChanged(Lcom/android/internal/telephony/Phone;Z)V +HSPLcom/android/internal/telephony/emergency/EmergencyNumberTracker;->writeUpdatedEmergencyNumberListMetrics(Ljava/util/List;)V +HSPLcom/android/internal/telephony/euicc/EuiccConnector;->findBestComponent(Landroid/content/pm/PackageManager;)Landroid/content/pm/ComponentInfo; +HSPLcom/android/internal/telephony/GlobalSettingsHelper;->setBoolean(Landroid/content/Context;Ljava/lang/String;IZ)Z +HSPLcom/android/internal/telephony/gsm/GsmSMSDispatcher;->getSubmitPdu(Ljava/lang/String;Ljava/lang/String;I[BZ)Lcom/android/internal/telephony/SmsMessageBase$SubmitPduBase; +HSPLcom/android/internal/telephony/gsm/GsmSMSDispatcher;->sendSms(Lcom/android/internal/telephony/SMSDispatcher$SmsTracker;)V +HSPLcom/android/internal/telephony/gsm/GsmSMSDispatcher;->shouldBlockSmsForEcbm()Z +HSPLcom/android/internal/telephony/gsm/UsimPhoneBookManager;->access$200(Lcom/android/internal/telephony/gsm/UsimPhoneBookManager;Ljava/lang/String;)V +HSPLcom/android/internal/telephony/gsm/UsimPhoneBookManager;->log(Ljava/lang/String;)V +HSPLcom/android/internal/telephony/IccCardConstants$State;->intToState(I)Lcom/android/internal/telephony/IccCardConstants$State; +HSPLcom/android/internal/telephony/IccSmsInterfaceManager;->filterDestAddress(Ljava/lang/String;)Ljava/lang/String; +HSPLcom/android/internal/telephony/IccSmsInterfaceManager;->sendDataInternal(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I[BLandroid/app/PendingIntent;Landroid/app/PendingIntent;Z)V +HSPLcom/android/internal/telephony/IccSmsInterfaceManager;->sendDataWithSelfPermissions(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I[BLandroid/app/PendingIntent;Landroid/app/PendingIntent;Z)V +HSPLcom/android/internal/telephony/ims/ImsResolver$5;->create(Landroid/content/Context;Landroid/content/ComponentName;Lcom/android/internal/telephony/ims/ImsServiceController$ImsServiceControllerCallbacks;)Lcom/android/internal/telephony/ims/ImsServiceController; +HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker;->isInEmergencyCall()Z +HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker;->sendImsServiceStateIntent(Ljava/lang/String;)V +HSPLcom/android/internal/telephony/imsphone/ImsPhone;->isInEmergencyCall()Z +HSPLcom/android/internal/telephony/imsphone/ImsPhone;->notifyForVideoCapabilityChanged(Z)V +HSPLcom/android/internal/telephony/imsphone/ImsPhone;->updateRoamingState(Landroid/telephony/ServiceState;)V +HSPLcom/android/internal/telephony/ims/RcsEventQueryHelper;-><init>(Landroid/content/ContentResolver;)V +HSPLcom/android/internal/telephony/ims/RcsMessageQueryHelper;-><init>(Landroid/content/ContentResolver;)V +HSPLcom/android/internal/telephony/ims/RcsMessageStoreController;-><init>(Landroid/content/Context;)V +HSPLcom/android/internal/telephony/ims/RcsMessageStoreUtil;-><init>(Landroid/content/ContentResolver;)V +HSPLcom/android/internal/telephony/ims/RcsParticipantQueryHelper;-><init>(Landroid/content/ContentResolver;)V +HSPLcom/android/internal/telephony/ims/RcsThreadQueryHelper;-><init>(Landroid/content/ContentResolver;Lcom/android/internal/telephony/ims/RcsParticipantQueryHelper;)V +HSPLcom/android/internal/telephony/ImsSmsDispatcher;->isAvailable()Z +HSPLcom/android/internal/telephony/IPhoneSubInfo$Stub$Proxy;->getIccSerialNumberForSubscriber(ILjava/lang/String;)Ljava/lang/String; +HSPLcom/android/internal/telephony/IPhoneSubInfo$Stub$Proxy;->getLine1AlphaTagForSubscriber(ILjava/lang/String;)Ljava/lang/String; +HSPLcom/android/internal/telephony/ITelephony$Stub$Proxy;->getDeviceId(Ljava/lang/String;)Ljava/lang/String; +HSPLcom/android/internal/telephony/ITelephony$Stub$Proxy;->getLine1AlphaTagForDisplay(ILjava/lang/String;)Ljava/lang/String; +HSPLcom/android/internal/telephony/ITelephony$Stub$Proxy;->getNetworkTypeForSubscriber(ILjava/lang/String;)I +HSPLcom/android/internal/telephony/ITelephony$Stub$Proxy;->isDataEnabled(I)Z +HSPLcom/android/internal/telephony/ITelephonyRegistry$Stub$Proxy;->notifyDataConnectionForSubscriber(IIIZLjava/lang/String;Ljava/lang/String;Landroid/net/LinkProperties;Landroid/net/NetworkCapabilities;IZ)V +HSPLcom/android/internal/telephony/ITelephonyRegistry$Stub$Proxy;->notifyEmergencyNumberList(II)V +HSPLcom/android/internal/telephony/ITelephonyRegistry$Stub$Proxy;->notifyOemHookRawEventForSubscriber(II[B)V +HSPLcom/android/internal/telephony/ITelephonyRegistry$Stub$Proxy;->notifyOtaspChanged(II)V +HSPLcom/android/internal/telephony/ITelephonyRegistry$Stub$Proxy;->notifyRadioPowerStateChanged(III)V +HSPLcom/android/internal/telephony/ITelephonyRegistry$Stub$Proxy;->notifyUserMobileDataStateChangedForPhoneId(IIZ)V +HSPLcom/android/internal/telephony/metrics/InProgressSmsSession;->addEvent(Lcom/android/internal/telephony/metrics/SmsSessionEventBuilder;)V +HSPLcom/android/internal/telephony/metrics/InProgressSmsSession;->decreaseExpectedResponse()V +HSPLcom/android/internal/telephony/metrics/InProgressSmsSession;->getNumExpectedResponses()I +HSPLcom/android/internal/telephony/metrics/InProgressSmsSession;->increaseExpectedResponse()V +HSPLcom/android/internal/telephony/metrics/SmsSessionEventBuilder;-><init>(I)V +HSPLcom/android/internal/telephony/metrics/SmsSessionEventBuilder;->setErrorCode(I)Lcom/android/internal/telephony/metrics/SmsSessionEventBuilder; +HSPLcom/android/internal/telephony/metrics/SmsSessionEventBuilder;->setFormat(I)Lcom/android/internal/telephony/metrics/SmsSessionEventBuilder; +HSPLcom/android/internal/telephony/metrics/SmsSessionEventBuilder;->setRilErrno(I)Lcom/android/internal/telephony/metrics/SmsSessionEventBuilder; +HSPLcom/android/internal/telephony/metrics/SmsSessionEventBuilder;->setRilRequestId(I)Lcom/android/internal/telephony/metrics/SmsSessionEventBuilder; +HSPLcom/android/internal/telephony/metrics/SmsSessionEventBuilder;->setTech(I)Lcom/android/internal/telephony/metrics/SmsSessionEventBuilder; +HSPLcom/android/internal/telephony/metrics/TelephonyEventBuilder;-><init>(I)V +HSPLcom/android/internal/telephony/metrics/TelephonyEventBuilder;-><init>(JI)V +HSPLcom/android/internal/telephony/metrics/TelephonyEventBuilder;->setCarrierIdMatching(Lcom/android/internal/telephony/nano/TelephonyProto$TelephonyEvent$CarrierIdMatching;)Lcom/android/internal/telephony/metrics/TelephonyEventBuilder; +HSPLcom/android/internal/telephony/metrics/TelephonyEventBuilder;->setUpdatedEmergencyNumber(Lcom/android/internal/telephony/nano/TelephonyProto$EmergencyNumberInfo;)Lcom/android/internal/telephony/metrics/TelephonyEventBuilder; +HSPLcom/android/internal/telephony/metrics/TelephonyMetrics;->convertEmergencyNumberToEmergencyNumberInfo(Landroid/telephony/emergency/EmergencyNumber;)Lcom/android/internal/telephony/nano/TelephonyProto$EmergencyNumberInfo; +HSPLcom/android/internal/telephony/metrics/TelephonyMetrics;->finishSmsSessionIfNeeded(Lcom/android/internal/telephony/metrics/InProgressSmsSession;)V +HSPLcom/android/internal/telephony/metrics/TelephonyMetrics;->lambda$convertEmergencyNumberToEmergencyNumberInfo$1(I)[Ljava/lang/String; +HSPLcom/android/internal/telephony/metrics/TelephonyMetrics;->logv(Ljava/lang/String;)V +HSPLcom/android/internal/telephony/metrics/TelephonyMetrics;->startNewSmsSessionIfNeeded(I)Lcom/android/internal/telephony/metrics/InProgressSmsSession; +HSPLcom/android/internal/telephony/metrics/TelephonyMetrics;->writeCarrierIdMatchingEvent(IIILjava/lang/String;Ljava/lang/String;Lcom/android/internal/telephony/CarrierResolver$CarrierMatchingRule;)V +HSPLcom/android/internal/telephony/metrics/TelephonyMetrics;->writeEmergencyNumberUpdateEvent(ILandroid/telephony/emergency/EmergencyNumber;)V +HSPLcom/android/internal/telephony/metrics/TelephonyMetrics;->writeOnSmsSolicitedResponse(IIILcom/android/internal/telephony/SmsResponse;)V +HSPLcom/android/internal/telephony/metrics/TelephonyMetrics;->writeRilSendSms(IIII)V +HSPLcom/android/internal/telephony/MultiSimSettingController;->handleMessage(Landroid/os/Message;)V +HSPLcom/android/internal/telephony/MultiSimSettingController;->init(Landroid/content/Context;Lcom/android/internal/telephony/SubscriptionController;)Lcom/android/internal/telephony/MultiSimSettingController; +HSPLcom/android/internal/telephony/MultiSimSettingController;-><init>(Landroid/content/Context;Lcom/android/internal/telephony/SubscriptionController;)V +HSPLcom/android/internal/telephony/MultiSimSettingController;->lambda$updatePrimarySubListAndGetChangeType$3(Landroid/telephony/SubscriptionInfo;)Z +HSPLcom/android/internal/telephony/MultiSimSettingController;->lambda$updatePrimarySubListAndGetChangeType$4(Landroid/telephony/SubscriptionInfo;)Ljava/lang/Integer; +HSPLcom/android/internal/telephony/MultiSimSettingController;->log(Ljava/lang/String;)V +HSPLcom/android/internal/telephony/MultiSimSettingController;->notifyAllSubscriptionLoaded()V +HSPLcom/android/internal/telephony/MultiSimSettingController;->notifyDefaultDataSubChanged()V +HSPLcom/android/internal/telephony/MultiSimSettingController;->notifySubscriptionInfoChanged()V +HSPLcom/android/internal/telephony/MultiSimSettingController;->updateDefaults(Z)V +HSPLcom/android/internal/telephony/MultiSimSettingController;->updatePrimarySubListAndGetChangeType(Ljava/util/List;Z)I +HSPLcom/android/internal/telephony/nano/TelephonyProto$SmsSession$Event;-><init>()V +HSPLcom/android/internal/telephony/nano/TelephonyProto$TelephonyEvent$CarrierIdMatching;->clear()Lcom/android/internal/telephony/nano/TelephonyProto$TelephonyEvent$CarrierIdMatching; +HSPLcom/android/internal/telephony/nano/TelephonyProto$TelephonyEvent$CarrierIdMatching;-><init>()V +HSPLcom/android/internal/telephony/nano/TelephonyProto$TelephonyEvent$CarrierIdMatchingResult;->clear()Lcom/android/internal/telephony/nano/TelephonyProto$TelephonyEvent$CarrierIdMatchingResult; +HSPLcom/android/internal/telephony/nano/TelephonyProto$TelephonyEvent$CarrierIdMatchingResult;-><init>()V +HSPLcom/android/internal/telephony/nano/TelephonyProto$TelephonyEvent;-><init>()V +HSPLcom/android/internal/telephony/OemHookIndication;->oemHookRaw(ILjava/util/ArrayList;)V +HSPLcom/android/internal/telephony/PhoneFactory;->getSmsController()Lcom/android/internal/telephony/SmsController; +HSPLcom/android/internal/telephony/PhoneFactory;->getSubscriptionInfoUpdater()Lcom/android/internal/telephony/SubscriptionInfoUpdater; +HSPLcom/android/internal/telephony/Phone;->notifySmsSent(Ljava/lang/String;)V +HSPLcom/android/internal/telephony/Phone;->notifyUserMobileDataStateChanged(Z)V +HSPLcom/android/internal/telephony/PhoneSubInfoController;->callPhoneMethodForSubIdWithPrivilegedCheck(ILjava/lang/String;Lcom/android/internal/telephony/PhoneSubInfoController$CallPhoneMethodHelper;)Ljava/lang/Object; +HSPLcom/android/internal/telephony/PhoneSubInfoController;->getIsimIst(I)Ljava/lang/String; +HSPLcom/android/internal/telephony/PhoneSubInfoController;->lambda$callPhoneMethodForSubIdWithPrivilegedCheck$25$PhoneSubInfoController(Ljava/lang/String;Landroid/content/Context;ILjava/lang/String;Ljava/lang/String;)Z +HSPLcom/android/internal/telephony/PhoneSubInfoController;->lambda$callPhoneMethodForSubIdWithReadPhoneNumberCheck$27(Landroid/content/Context;ILjava/lang/String;Ljava/lang/String;)Z +HSPLcom/android/internal/telephony/PhoneSubInfoController;->lambda$callPhoneMethodForSubIdWithReadSubscriberIdentifiersCheck$24(Landroid/content/Context;ILjava/lang/String;Ljava/lang/String;)Z +HSPLcom/android/internal/telephony/PhoneSubInfoController;->lambda$getIsimIst$17(Lcom/android/internal/telephony/Phone;)Ljava/lang/String; +HSPLcom/android/internal/telephony/PhoneSwitcher;->getInstance()Lcom/android/internal/telephony/PhoneSwitcher; +HSPLcom/android/internal/telephony/PhoneSwitcher;->isEmergencyNetworkRequest(Landroid/net/NetworkRequest;)Z +HSPLcom/android/internal/telephony/PhoneSwitcher;->isEmergency()Z +HSPLcom/android/internal/telephony/PhoneSwitcher;->isInEmergencyCallbackMode()Z +HSPLcom/android/internal/telephony/PhoneSwitcher;->sendRilCommands(I)V +HSPLcom/android/internal/telephony/protobuf/nano/ExtendableMessageNano;-><init>()V +HSPLcom/android/internal/telephony/protobuf/nano/MessageNano;-><init>()V +HSPLcom/android/internal/telephony/ProxyController;->getSmsController()Lcom/android/internal/telephony/SmsController; +HSPLcom/android/internal/telephony/RadioIndication;->currentSignalStrength(ILandroid/hardware/radio/V1_0/SignalStrength;)V +HSPLcom/android/internal/telephony/RadioResponse;->getCellInfoListResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Ljava/util/ArrayList;)V +HSPLcom/android/internal/telephony/RadioResponse;->getCurrentCallsResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Ljava/util/ArrayList;)V +HSPLcom/android/internal/telephony/RadioResponse;->getDataRegistrationStateResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Landroid/hardware/radio/V1_0/DataRegStateResult;)V +HSPLcom/android/internal/telephony/RadioResponse;->getIccCardStatusResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Landroid/hardware/radio/V1_0/CardStatus;)V +HSPLcom/android/internal/telephony/RadioResponse;->getSignalStrengthResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Landroid/hardware/radio/V1_0/SignalStrength;)V +HSPLcom/android/internal/telephony/RadioResponse;->getVoiceRegistrationStateResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Landroid/hardware/radio/V1_0/VoiceRegStateResult;)V +HSPLcom/android/internal/telephony/RadioResponse;->responseCellInfoList(Landroid/hardware/radio/V1_0/RadioResponseInfo;Ljava/util/ArrayList;)V +HSPLcom/android/internal/telephony/RadioResponse;->responseCurrentCalls(Landroid/hardware/radio/V1_0/RadioResponseInfo;Ljava/util/ArrayList;)V +HSPLcom/android/internal/telephony/RadioResponse;->responseIccCardStatus(Landroid/hardware/radio/V1_0/RadioResponseInfo;Landroid/hardware/radio/V1_0/CardStatus;)V +HSPLcom/android/internal/telephony/RadioResponse;->responseLceStatus(Landroid/hardware/radio/V1_0/RadioResponseInfo;Landroid/hardware/radio/V1_0/LceStatusInfo;)V +HSPLcom/android/internal/telephony/RadioResponse;->responseSignalStrength(Landroid/hardware/radio/V1_0/RadioResponseInfo;Landroid/hardware/radio/V1_0/SignalStrength;)V +HSPLcom/android/internal/telephony/RadioResponse;->responseSms(Landroid/hardware/radio/V1_0/RadioResponseInfo;Landroid/hardware/radio/V1_0/SendSmsResult;)V +HSPLcom/android/internal/telephony/RadioResponse;->sendImsSmsResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Landroid/hardware/radio/V1_0/SendSmsResult;)V +HSPLcom/android/internal/telephony/RadioResponse;->sendMessageResponse(Landroid/os/Message;Ljava/lang/Object;)V +HSPLcom/android/internal/telephony/RadioResponse;->startLceServiceResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Landroid/hardware/radio/V1_0/LceStatusInfo;)V +HSPLcom/android/internal/telephony/RIL;->arrayListToPrimitiveArray(Ljava/util/ArrayList;)[B +HSPLcom/android/internal/telephony/RIL;->constructGsmSendSmsRilRequest(Ljava/lang/String;Ljava/lang/String;)Landroid/hardware/radio/V1_0/GsmSmsMessage; +HSPLcom/android/internal/telephony/RIL;->convertHalCellInfoList(Ljava/util/ArrayList;)Ljava/util/ArrayList; +HSPLcom/android/internal/telephony/RIL;->getModemStatus(Landroid/os/Message;)V +HSPLcom/android/internal/telephony/RIL;->obtainRequest(ILandroid/os/Message;Landroid/os/WorkSource;)Lcom/android/internal/telephony/RILRequest; +HSPLcom/android/internal/telephony/RIL;->sendImsGsmSms(Ljava/lang/String;Ljava/lang/String;IILandroid/os/Message;)V +HSPLcom/android/internal/telephony/RIL;->unsljLogvRet(ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/ServiceStateTracker;->filterOperatorNameByPattern(Ljava/lang/String;)Ljava/lang/String; +HSPLcom/android/internal/telephony/ServiceStateTracker;->getCarrierNameDisplayBitmask(Landroid/telephony/ServiceState;)I +HSPLcom/android/internal/telephony/ServiceStateTracker;->getCombinedRegState(Landroid/telephony/ServiceState;)I +HSPLcom/android/internal/telephony/ServiceStateTracker;->getOperatorBrandOverride()Ljava/lang/String; +HSPLcom/android/internal/telephony/ServiceStateTracker;->getOperatorNameFromEri()Ljava/lang/String; +HSPLcom/android/internal/telephony/ServiceStateTracker;->getServiceProviderName()Ljava/lang/String; +HSPLcom/android/internal/telephony/ServiceStateTracker;->modemTriggeredPollState()V +HSPLcom/android/internal/telephony/ServiceStateTracker;->notifySpnDisplayUpdate(Lcom/android/internal/telephony/cdnr/CarrierDisplayNameData;)V +HSPLcom/android/internal/telephony/ServiceStateTracker;->processIwlanRegistrationInfo()V +HSPLcom/android/internal/telephony/ServiceStateTracker;->updateNrStateFromPhysicalChannelConfigs(Ljava/util/List;Landroid/telephony/ServiceState;)Z +HSPLcom/android/internal/telephony/ServiceStateTracker;->updateOperatorNameForCellIdentity(Landroid/telephony/CellIdentity;)V +HSPLcom/android/internal/telephony/ServiceStateTracker;->updateOperatorNameForCellInfo(Ljava/util/List;)V +HSPLcom/android/internal/telephony/ServiceStateTracker;->updateOperatorNameForServiceState(Landroid/telephony/ServiceState;)V +HSPLcom/android/internal/telephony/ServiceStateTracker;->updateOperatorNamePattern(Landroid/os/PersistableBundle;)V +HSPLcom/android/internal/telephony/ServiceStateTracker;->updateSpnDisplayLegacy()V +HSPLcom/android/internal/telephony/SMSDispatcher;->checkDestination(Lcom/android/internal/telephony/SMSDispatcher$SmsTracker;)Z +HSPLcom/android/internal/telephony/SMSDispatcher;->getCarrierAppPackageName()Ljava/lang/String; +HSPLcom/android/internal/telephony/SMSDispatcher;->getSmsTracker(Ljava/lang/String;Ljava/util/HashMap;Landroid/app/PendingIntent;Landroid/app/PendingIntent;Ljava/lang/String;Landroid/net/Uri;ZLjava/lang/String;ZZZ)Lcom/android/internal/telephony/SMSDispatcher$SmsTracker; +HSPLcom/android/internal/telephony/SMSDispatcher;->getSmsTracker(Ljava/lang/String;Ljava/util/HashMap;Landroid/app/PendingIntent;Landroid/app/PendingIntent;Ljava/lang/String;Ljava/util/concurrent/atomic/AtomicInteger;Ljava/util/concurrent/atomic/AtomicBoolean;Landroid/net/Uri;Lcom/android/internal/telephony/SmsHeader;ZLjava/lang/String;ZZIIZ)Lcom/android/internal/telephony/SMSDispatcher$SmsTracker; +HSPLcom/android/internal/telephony/SMSDispatcher;->getSmsTrackerMap(Ljava/lang/String;Ljava/lang/String;I[BLcom/android/internal/telephony/SmsMessageBase$SubmitPduBase;)Ljava/util/HashMap; +HSPLcom/android/internal/telephony/SMSDispatcher;->getSubId()I +HSPLcom/android/internal/telephony/SMSDispatcher;->handleMessage(Landroid/os/Message;)V +HSPLcom/android/internal/telephony/SMSDispatcher;->handleSendComplete(Landroid/os/AsyncResult;)V +HSPLcom/android/internal/telephony/SMSDispatcher;->isIms()Z +HSPLcom/android/internal/telephony/SmsDispatchersController;->getUsageMonitor()Lcom/android/internal/telephony/SmsUsageMonitor; +HSPLcom/android/internal/telephony/SmsDispatchersController;->isCdmaFormat(Ljava/lang/String;)Z +HSPLcom/android/internal/telephony/SmsDispatchersController;->isCdmaMo()Z +HSPLcom/android/internal/telephony/SmsDispatchersController;->isIms()Z +HSPLcom/android/internal/telephony/SmsDispatchersController;->sendData(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I[BLandroid/app/PendingIntent;Landroid/app/PendingIntent;Z)V +HSPLcom/android/internal/telephony/SMSDispatcher;->sendData(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I[BLandroid/app/PendingIntent;Landroid/app/PendingIntent;Z)V +HSPLcom/android/internal/telephony/SMSDispatcher;->sendRawPdu(Lcom/android/internal/telephony/SMSDispatcher$SmsTracker;)V +HSPLcom/android/internal/telephony/SMSDispatcher;->sendSmsByCarrierApp(ZLcom/android/internal/telephony/SMSDispatcher$SmsTracker;)Z +HSPLcom/android/internal/telephony/SMSDispatcher;->sendSubmitPdu(Lcom/android/internal/telephony/SMSDispatcher$SmsTracker;)V +HSPLcom/android/internal/telephony/SmsUsageMonitor;->check(Ljava/lang/String;I)Z +HSPLcom/android/internal/telephony/SmsUsageMonitor;->isUnderLimit(Ljava/util/ArrayList;I)Z +HSPLcom/android/internal/telephony/SmsUsageMonitor;->removeExpiredTimestamps()V +HSPLcom/android/internal/telephony/SubscriptionController;->clearSlotIndexForSubInfoRecords()V +HSPLcom/android/internal/telephony/SubscriptionController;->getDataEnabledOverrideRules(I)Ljava/lang/String; +HSPLcom/android/internal/telephony/SubscriptionController;->getOptionalStringFromCursor(Landroid/database/Cursor;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLcom/android/internal/telephony/SubscriptionController;->getSubInfoUsingSlotIndexPrivileged(I)Ljava/util/List; +HSPLcom/android/internal/telephony/SubscriptionController;->getSubscriptionInfo(I)Landroid/telephony/SubscriptionInfo; +HSPLcom/android/internal/telephony/SubscriptionController;->getSubscriptionProperty(ILjava/lang/String;)Ljava/lang/String; +HSPLcom/android/internal/telephony/SubscriptionController;->logd(Ljava/lang/String;)V +HSPLcom/android/internal/telephony/SubscriptionController;->notifySubInfoReady()V +HSPLcom/android/internal/telephony/SubscriptionController;->sendDefaultChangedBroadcast(I)V +HSPLcom/android/internal/telephony/SubscriptionController;->setAssociatedPlmns([Ljava/lang/String;[Ljava/lang/String;I)V +HSPLcom/android/internal/telephony/SubscriptionController;->setDisplayNumber(Ljava/lang/String;I)I +HSPLcom/android/internal/telephony/SubscriptionController;->setImsi(Ljava/lang/String;I)I +HSPLcom/android/internal/telephony/SubscriptionInfoUpdater;->getDefaultCarrierServicePackageName()Ljava/lang/String; +HSPLcom/android/internal/telephony/SubscriptionInfoUpdater;->isCarrierServicePackage(ILjava/lang/String;)Z +HSPLcom/android/internal/telephony/SubscriptionInfoUpdater;->lambda$handleMessage$0(Z)V +HSPLcom/android/internal/telephony/SubscriptionInfoUpdater;->lambda$updateEmbeddedSubscriptions$4$SubscriptionInfoUpdater(Ljava/util/List;Lcom/android/internal/telephony/SubscriptionInfoUpdater$UpdateEmbeddedSubsCallback;)V +HSPLcom/android/internal/telephony/SubscriptionInfoUpdater;->lambda$updateEmbeddedSubscriptions$5$SubscriptionInfoUpdater(Ljava/util/List;Lcom/android/internal/telephony/SubscriptionInfoUpdater$UpdateEmbeddedSubsCallback;)V +HSPLcom/android/internal/telephony/SubscriptionInfoUpdater;->lambda$updateSubscriptionByCarrierConfigAndNotifyComplete$6$SubscriptionInfoUpdater(ILjava/lang/String;Landroid/os/PersistableBundle;Landroid/os/Message;)V +HSPLcom/android/internal/telephony/SubscriptionInfoUpdater;->lambda$updateSubscriptionInfoByIccId$3(Z)V +HSPLcom/android/internal/telephony/SubscriptionInfoUpdater;->logd(Ljava/lang/String;)V +HSPLcom/android/internal/telephony/SubscriptionInfoUpdater;->loge(Ljava/lang/String;)V +HSPLcom/android/internal/telephony/SubscriptionInfoUpdater;->setSubInfoInitialized()V +HSPLcom/android/internal/telephony/SubscriptionInfoUpdater;->updateEmbeddedSubscriptionsCache(Landroid/service/euicc/GetEuiccProfileInfoListResult;)Z +HSPLcom/android/internal/telephony/SubscriptionInfoUpdater;->updateEmbeddedSubscriptions(Ljava/util/List;Lcom/android/internal/telephony/SubscriptionInfoUpdater$UpdateEmbeddedSubsCallback;)V +HSPLcom/android/internal/telephony/SubscriptionInfoUpdater;->updateInternalIccState(Ljava/lang/String;Ljava/lang/String;IZ)V +HSPLcom/android/internal/telephony/SubscriptionInfoUpdater;->updateSubscriptionByCarrierConfigAndNotifyComplete(ILjava/lang/String;Landroid/os/PersistableBundle;Landroid/os/Message;)V +HSPLcom/android/internal/telephony/SubscriptionInfoUpdater;->updateSubscriptionByCarrierConfig(ILjava/lang/String;Landroid/os/PersistableBundle;)V +HSPLcom/android/internal/telephony/SubscriptionInfoUpdater;->updateSubscriptionInfoByIccId(IZ)V +HSPLcom/android/internal/telephony/TelephonyComponentFactory;->makeEriManager(Lcom/android/internal/telephony/Phone;I)Lcom/android/internal/telephony/cdma/EriManager; +HSPLcom/android/internal/telephony/TelephonyPermissions;->checkCallingOrSelfReadPhoneStateNoThrow(Landroid/content/Context;ILjava/lang/String;Ljava/lang/String;)Z +HSPLcom/android/internal/telephony/TelephonyPermissions;->checkCarrierPrivilegeForAnySubId(Landroid/content/Context;Ljava/util/function/Supplier;I)Z +HSPLcom/android/internal/telephony/TelephonyPermissions;->checkReadDeviceIdentifiers(Landroid/content/Context;Ljava/util/function/Supplier;IIILjava/lang/String;Ljava/lang/String;)Z +HSPLcom/android/internal/telephony/uicc/AdnRecord;->getEmails()[Ljava/lang/String; +HSPLcom/android/internal/telephony/uicc/IccRecords;->getEhplmns()[Ljava/lang/String; +HSPLcom/android/internal/telephony/uicc/IccRecords;->getHomePlmns()[Ljava/lang/String; +HSPLcom/android/internal/telephony/uicc/IccRecords;->getPlmnsFromHplmnActRecord()[Ljava/lang/String; +HSPLcom/android/internal/telephony/uicc/IccRecords;->getServiceProviderDisplayInformation()[Ljava/lang/String; +HSPLcom/android/internal/telephony/uicc/SIMRecords;->getCarrierNameDisplayCondition()I +HSPLcom/android/internal/telephony/uicc/UiccCard;->iccOpenLogicalChannel(Ljava/lang/String;ILandroid/os/Message;)V +HSPLcom/android/internal/telephony/uicc/UiccController;->getSlotIdFromPhoneId(I)I +HSPLcom/android/internal/telephony/uicc/UiccController;->updateInternalIccState(Landroid/content/Context;Lcom/android/internal/telephony/IccCardConstants$State;Ljava/lang/String;IZ)V +HSPLcom/android/internal/telephony/uicc/UiccPkcs15;->access$000(Ljava/lang/String;)V +HSPLcom/android/internal/telephony/uicc/UiccPkcs15;->access$100(Lcom/android/internal/telephony/uicc/UiccPkcs15;)I +HSPLcom/android/internal/telephony/uicc/UiccPkcs15;->access$200(Lcom/android/internal/telephony/uicc/UiccPkcs15;)Lcom/android/internal/telephony/uicc/UiccProfile; +HSPLcom/android/internal/telephony/uicc/UiccPkcs15;->log(Ljava/lang/String;)V +HSPLcom/android/internal/telephony/uicc/UiccPkcs15;->parseAcrf(Ljava/lang/String;)Ljava/lang/String; +HSPLcom/android/internal/telephony/uicc/UiccProfile;->updateCarrierNameForSubscription(Lcom/android/internal/telephony/SubscriptionController;II)V +HSPLcom/android/internal/telephony/util/NotificationChannelController;->getChannel(Ljava/lang/String;Landroid/content/Context;)Landroid/app/NotificationChannel; +HSPLcom/android/internal/telephony/util/NotificationChannelController;->migrateCallFowardNotificationChannel(Landroid/content/Context;Landroid/app/NotificationChannel;)V +HSPLcom/android/internal/util/ArrayUtils;->defeatNullable([Ljava/lang/String;)[Ljava/lang/String; +HSPLcom/android/internal/util/AsyncChannel;-><init>()V +HSPLcom/android/internal/util/BitUtils;->maskedEquals(Ljava/util/UUID;Ljava/util/UUID;Ljava/util/UUID;)Z +HSPLcom/android/internal/util/BitUtils;->uint16(S)I +HSPLcom/android/internal/util/BitUtils;->uint32(I)J +HSPLcom/android/internal/util/BitUtils;->uint8(B)I +HSPLcom/android/internal/util/GrowingArrayUtils;->append([FIF)[F +HSPLcom/android/internal/util/LatencyTracker;->isEnabled(Landroid/content/Context;)Z +HSPLcom/android/internal/util/Preconditions;->checkNotNull(Ljava/lang/Object;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/android/internal/util/StateMachine;->getHandler()Landroid/os/Handler; +HSPLcom/android/internal/util/StateMachine;->getName()Ljava/lang/String; +HSPLcom/android/internal/view/InputBindResult;->getActivityViewToScreenMatrix()Landroid/graphics/Matrix; +HSPLcom/android/internal/view/RotationPolicy;->areAllRotationsAllowed(Landroid/content/Context;)Z +HSPLcom/android/internal/view/RotationPolicy;->getRotationLockOrientation(Landroid/content/Context;)I +HSPLcom/android/internal/view/RotationPolicy;->registerRotationPolicyListener(Landroid/content/Context;Lcom/android/internal/view/RotationPolicy$RotationPolicyListener;I)V +HSPLcom/android/internal/view/RotationPolicy;->setRotationLockAtAngle(Landroid/content/Context;ZI)V +HSPLcom/android/internal/view/RotationPolicy;->setRotationLock(ZI)V +HSPLcom/android/internal/widget/ILockSettings$Stub$Proxy;->checkVoldPassword(I)Z +HSPLcom/android/internal/widget/ILockSettings$Stub$Proxy;->getRecoverySecretTypes()[I +HSPLcom/android/internal/widget/ILockSettings$Stub$Proxy;->getString(Ljava/lang/String;Ljava/lang/String;I)Ljava/lang/String; +HSPLcom/android/internal/widget/ILockSettings$Stub$Proxy;->initRecoveryServiceWithSigFile(Ljava/lang/String;[B[B)V +HSPLcom/android/internal/widget/ILockSettings$Stub$Proxy;->registerStrongAuthTracker(Landroid/app/trust/IStrongAuthTracker;)V +HSPLcom/android/internal/widget/ILockSettings$Stub$Proxy;->setBoolean(Ljava/lang/String;ZI)V +HSPLcom/android/internal/widget/ILockSettings$Stub$Proxy;->setRecoverySecretTypes([I)V +HSPLcom/android/internal/widget/ILockSettings$Stub$Proxy;->setServerParams([B)V +HSPLcom/android/internal/widget/ILockSettings$Stub$Proxy;->setSnapshotCreatedPendingIntent(Landroid/app/PendingIntent;)V +HSPLcom/android/internal/widget/ILockSettings$Stub$Proxy;->userPresent(I)V +HSPLcom/android/internal/widget/LockPatternUtils;->checkVoldPassword(I)Z +HSPLcom/android/internal/widget/LockPatternUtils;->getActivePasswordQuality(I)I +HSPLcom/android/internal/widget/LockPatternUtils;->getDeviceOwnerInfo()Ljava/lang/String; +HSPLcom/android/internal/widget/LockPatternUtils;->getUserManager()Landroid/os/UserManager; +HSPLcom/android/internal/widget/LockPatternUtils;->isLockPatternEnabled(II)Z +HSPLcom/android/internal/widget/LockPatternUtils;->isLockScreenDisabled(I)Z +HSPLcom/android/internal/widget/LockPatternUtils;->userPresent(I)V +HSPLcom/android/okhttp/Headers$Builder;->access$000(Lcom/android/okhttp/Headers$Builder;)Ljava/util/List; +HSPLcom/android/okhttp/Headers$Builder;->build()Lcom/android/okhttp/Headers; +HSPLcom/android/okhttp/Headers$Builder;->get(Ljava/lang/String;)Ljava/lang/String; +HSPLcom/android/okhttp/Headers;->get(Ljava/lang/String;)Ljava/lang/String; +HSPLcom/android/okhttp/Headers;->get([Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLcom/android/okhttp/Headers;-><init>(Lcom/android/okhttp/Headers$Builder;Lcom/android/okhttp/Headers$1;)V +HSPLcom/android/okhttp/Headers;-><init>(Lcom/android/okhttp/Headers$Builder;)V +HSPLcom/android/okhttp/HttpHandler$CleartextURLFilter;->checkURLPermitted(Ljava/net/URL;)V +HSPLcom/android/okhttp/HttpUrl;->url()Ljava/net/URL; +HSPLcom/android/okhttp/internal/http/Http1xStream$AbstractSource;->timeout()Lcom/android/okhttp/okio/Timeout; +HSPLcom/android/okhttp/internal/http/Http1xStream$ChunkedSink;->close()V +HSPLcom/android/okhttp/internal/http/Http1xStream$ChunkedSink;->flush()V +HSPLcom/android/okhttp/internal/http/Http1xStream$ChunkedSink;-><init>(Lcom/android/okhttp/internal/http/Http1xStream;Lcom/android/okhttp/internal/http/Http1xStream$1;)V +HSPLcom/android/okhttp/internal/http/Http1xStream$ChunkedSink;-><init>(Lcom/android/okhttp/internal/http/Http1xStream;)V +HSPLcom/android/okhttp/internal/http/Http1xStream$ChunkedSink;->write(Lcom/android/okhttp/okio/Buffer;J)V +HSPLcom/android/okhttp/internal/http/Http1xStream;->access$300(Lcom/android/okhttp/internal/http/Http1xStream;)Lcom/android/okhttp/okio/BufferedSink; +HSPLcom/android/okhttp/internal/http/Http1xStream;->access$400(Lcom/android/okhttp/internal/http/Http1xStream;Lcom/android/okhttp/okio/ForwardingTimeout;)V +HSPLcom/android/okhttp/internal/http/Http1xStream;->access$502(Lcom/android/okhttp/internal/http/Http1xStream;I)I +HSPLcom/android/okhttp/internal/http/Http1xStream;->createRequestBody(Lcom/android/okhttp/Request;J)Lcom/android/okhttp/okio/Sink; +HSPLcom/android/okhttp/internal/http/Http1xStream;->detachTimeout(Lcom/android/okhttp/okio/ForwardingTimeout;)V +HSPLcom/android/okhttp/internal/http/Http1xStream;->newChunkedSink()Lcom/android/okhttp/okio/Sink; +HSPLcom/android/okhttp/internal/http/HttpEngine;->getResponse()Lcom/android/okhttp/Response; +HSPLcom/android/okhttp/internal/http/StatusLine;->get(Lcom/android/okhttp/Response;)Lcom/android/okhttp/internal/http/StatusLine; +HSPLcom/android/okhttp/internal/http/StatusLine;-><init>(Lcom/android/okhttp/Protocol;ILjava/lang/String;)V +HSPLcom/android/okhttp/internal/http/StatusLine;->toString()Ljava/lang/String; +HSPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->getContentEncoding()Ljava/lang/String; +HSPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->getContentLength()I +HSPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->getContentType()Ljava/lang/String; +HSPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->getHeaderFields()Ljava/util/Map; +HSPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->getRequestProperties()Ljava/util/Map; +HSPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->getRequestProperty(Ljava/lang/String;)Ljava/lang/String; +HSPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->getURL()Ljava/net/URL; +HSPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->setChunkedStreamingMode(I)V +HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->getContentEncoding()Ljava/lang/String; +HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->getContentLength()I +HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->getContentType()Ljava/lang/String; +HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->getHeaderFields()Ljava/util/Map; +HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->getRequestProperties()Ljava/util/Map; +HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->getRequestProperty(Ljava/lang/String;)Ljava/lang/String; +HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->getURL()Ljava/net/URL; +HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->setChunkedStreamingMode(I)V +HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->setHostnameVerifier(Ljavax/net/ssl/HostnameVerifier;)V +HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->setSSLSocketFactory(Ljavax/net/ssl/SSLSocketFactory;)V +HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->getHeaderFields()Ljava/util/Map; +HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->getRequestProperties()Ljava/util/Map; +HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->getRequestProperty(Ljava/lang/String;)Ljava/lang/String; +HSPLcom/android/okhttp/internal/OptionalMethod;->getMethod(Ljava/lang/Class;)Ljava/lang/reflect/Method; +HSPLcom/android/okhttp/internal/OptionalMethod;->getPublicMethod(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method; +HSPLcom/android/okhttp/internal/OptionalMethod;->invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/android/okhttp/internal/OptionalMethod;->invokeOptional(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/android/okhttp/internal/OptionalMethod;->invokeOptionalWithoutCheckedException(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/android/okhttp/internal/OptionalMethod;->invokeWithoutCheckedException(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/android/okhttp/internal/OptionalMethod;->isSupported(Ljava/lang/Object;)Z +HSPLcom/android/okhttp/internal/Platform;->concatLengthPrefixed(Ljava/util/List;)[B +HSPLcom/android/okhttp/internal/Util;->discard(Lcom/android/okhttp/okio/Source;ILjava/util/concurrent/TimeUnit;)Z +HSPLcom/android/okhttp/internal/Util;->skipAll(Lcom/android/okhttp/okio/Source;ILjava/util/concurrent/TimeUnit;)Z +HSPLcom/android/okhttp/OkHttpClient;->getDefaultSSLSocketFactory()Ljavax/net/ssl/SSLSocketFactory; +HSPLcom/android/okhttp/OkHttpClient;->setDns(Lcom/android/okhttp/Dns;)Lcom/android/okhttp/OkHttpClient; +HSPLcom/android/okhttp/OkHttpClient;->setSocketFactory(Ljavax/net/SocketFactory;)Lcom/android/okhttp/OkHttpClient; +HSPLcom/android/okhttp/okio/Buffer;->completeSegmentByteCount()J +HSPLcom/android/okhttp/okio/Buffer;-><init>()V +HSPLcom/android/okhttp/okio/Buffer;->readByteArray()[B +HSPLcom/android/okhttp/okio/Buffer;->readByteArray(J)[B +HSPLcom/android/okhttp/okio/Buffer;->readFully([B)V +HSPLcom/android/okhttp/okio/Buffer;->size()J +HSPLcom/android/okhttp/okio/Buffer;->writeByte(I)Lcom/android/okhttp/okio/Buffer; +HSPLcom/android/okhttp/okio/Buffer;->writeHexadecimalUnsignedLong(J)Lcom/android/okhttp/okio/Buffer; +HSPLcom/android/okhttp/okio/Buffer;->writeUtf8(Ljava/lang/String;)Lcom/android/okhttp/okio/Buffer; +HSPLcom/android/okhttp/okio/ForwardingTimeout;->clearDeadline()Lcom/android/okhttp/okio/Timeout; +HSPLcom/android/okhttp/okio/ForwardingTimeout;->deadlineNanoTime(J)Lcom/android/okhttp/okio/Timeout; +HSPLcom/android/okhttp/okio/ForwardingTimeout;->delegate()Lcom/android/okhttp/okio/Timeout; +HSPLcom/android/okhttp/okio/ForwardingTimeout;->hasDeadline()Z +HSPLcom/android/okhttp/okio/ForwardingTimeout;-><init>(Lcom/android/okhttp/okio/Timeout;)V +HSPLcom/android/okhttp/okio/ForwardingTimeout;->setDelegate(Lcom/android/okhttp/okio/Timeout;)Lcom/android/okhttp/okio/ForwardingTimeout; +HSPLcom/android/okhttp/okio/RealBufferedSink;->emitCompleteSegments()Lcom/android/okhttp/okio/BufferedSink; +HSPLcom/android/okhttp/okio/RealBufferedSink;->emit()Lcom/android/okhttp/okio/BufferedSink; +HSPLcom/android/okhttp/okio/RealBufferedSink;->writeHexadecimalUnsignedLong(J)Lcom/android/okhttp/okio/BufferedSink; +HSPLcom/android/okhttp/okio/RealBufferedSource$1;->read()I +HSPLcom/android/okhttp/okio/RealBufferedSource;->access$000(Lcom/android/okhttp/okio/RealBufferedSource;)Z +HSPLcom/android/okhttp/okio/Timeout;->deadlineNanoTime()J +HSPLcom/android/okhttp/okio/Timeout;->deadlineNanoTime(J)Lcom/android/okhttp/okio/Timeout; +HSPLcom/android/okhttp/okio/Timeout;-><init>()V +HSPLcom/android/okhttp/OkUrlFactories;->open(Lcom/android/okhttp/OkUrlFactory;Ljava/net/URL;Ljava/net/Proxy;)Ljava/net/HttpURLConnection; +HSPLcom/android/okhttp/OkUrlFactory;->client()Lcom/android/okhttp/OkHttpClient; +HSPLcom/android/okhttp/Protocol;->toString()Ljava/lang/String; +HSPLcom/android/okhttp/Request;->header(Ljava/lang/String;)Ljava/lang/String; +HSPLcom/android/okhttp/Response;->code()I +HSPLcom/android/okhttp/Response;->message()Ljava/lang/String; +HSPLcom/android/okhttp/Response;->protocol()Lcom/android/okhttp/Protocol; +HSPLcom/android/server/NetworkManagementSocketTagger;->getThreadSocketStatsTag()I +HSPLcom/android/server/NetworkManagementSocketTagger;->setThreadSocketStatsUid(I)I +HSPLdalvik/system/BlockGuard;->getVmPolicy()Ldalvik/system/BlockGuard$VmPolicy; +HSPLdalvik/system/SocketTagger;->tag(Ljava/net/Socket;)V +HSPLjava/io/DataInputStream;->readDouble()D +HSPLjava/io/DataOutputStream;->incCount(I)V +HSPLjava/io/DataOutputStream;->writeDouble(D)V +HSPLjava/io/DataOutputStream;->writeShort(I)V +HSPLjava/io/File;->deleteOnExit()V +HSPLjava/io/FileDescriptor;->getInt$()I +HSPLjava/io/File;->isInvalid()Z +HSPLjava/io/File;->setExecutable(ZZ)Z +HSPLjava/io/File;->setReadable(ZZ)Z +HSPLjava/io/FilterOutputStream;->flush()V +HSPLjava/io/IOException;-><init>()V +HSPLjava/io/RandomAccessFile;->write(I)V +HSPLjava/io/RandomAccessFile;->writeLong(J)V +HSPLjava/io/SequenceInputStream;->available()I +HSPLjava/io/SequenceInputStream;->close()V +HSPLjava/io/SequenceInputStream;->read([BII)I +HSPLjava/io/StringWriter;->append(C)Ljava/io/StringWriter; +HSPLjava/io/StringWriter;->append(C)Ljava/io/Writer; +HSPLjava/io/UnixFileSystem;->setPermission(Ljava/io/File;IZZ)Z +HSPLjava/lang/AssertionError;-><init>(Ljava/lang/Object;)V +HSPLjava/lang/AssertionError;-><init>(Ljava/lang/String;)V +HSPLjava/lang/Byte;->compare(BB)I +HSPLjava/lang/Byte;->compareTo(Ljava/lang/Byte;)I +HSPLjava/lang/Byte;->compareTo(Ljava/lang/Object;)I +HSPLjava/lang/Byte;->parseByte(Ljava/lang/String;)B +HSPLjava/lang/Byte;->parseByte(Ljava/lang/String;I)B +HSPLjava/lang/Class;->getInstanceMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method; +HSPLjava/lang/Class;->getPackageName$()Ljava/lang/String; +HSPLjava/lang/Class;->getProtectionDomain()Ljava/security/ProtectionDomain; +HSPLjava/lang/Daemons$FinalizerWatchdogDaemon;->sleepForMillis(J)Z +HSPLjava/lang/Double;->floatValue()F +HSPLjava/lang/Error;-><init>(Ljava/lang/String;)V +HSPLjava/lang/Float;->compareTo(Ljava/lang/Float;)I +HSPLjava/lang/IllegalMonitorStateException;-><init>(Ljava/lang/String;)V +HSPLjava/lang/InstantiationException;-><init>(Ljava/lang/String;)V +HSPLjava/lang/Integer;->byteValue()B +HSPLjava/lang/Integer;->toUnsignedLong(I)J +HSPLjava/lang/invoke/MethodHandleImpl;-><init>(JILjava/lang/invoke/MethodType;)V +HSPLjava/lang/invoke/MethodHandle;-><init>(JILjava/lang/invoke/MethodType;)V +HSPLjava/lang/invoke/MethodHandles$Lookup;->checkReturnType(Ljava/lang/reflect/Method;Ljava/lang/invoke/MethodType;)V +HSPLjava/lang/invoke/MethodHandles$Lookup;->createMethodHandle(Ljava/lang/reflect/Method;ILjava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle; +HSPLjava/lang/invoke/MethodHandles$Lookup;->findVirtual(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle; +HSPLjava/lang/invoke/MethodHandle;->type()Ljava/lang/invoke/MethodType; +HSPLjava/lang/invoke/MethodType;->changeReturnType(Ljava/lang/Class;)Ljava/lang/invoke/MethodType; +HSPLjava/lang/invoke/MethodType;->dropParameterTypes(II)Ljava/lang/invoke/MethodType; +HSPLjava/lang/invoke/MethodType;->ptypes()[Ljava/lang/Class; +HSPLjava/lang/invoke/MethodType;->returnType()Ljava/lang/Class; +HSPLjava/lang/invoke/MethodType;->rtype()Ljava/lang/Class; +HSPLjava/lang/Iterable;->forEach(Ljava/util/function/Consumer;)V +HSPLjava/lang/Long;->valueOf(Ljava/lang/String;I)Ljava/lang/Long; +HSPLjava/lang/Math;->subtractExact(JJ)J +HSPLjava/lang/reflect/Executable;->getArtMethod()J +HSPLjava/lang/reflect/Executable;->getDeclaringClassInternal()Ljava/lang/Class; +HSPLjava/lang/reflect/Executable;->isSynthetic()Z +HSPLjava/lang/reflect/Executable;->isVarArgs()Z +HSPLjava/lang/ReflectiveOperationException;-><init>(Ljava/lang/String;)V +HSPLjava/lang/reflect/Method;->getDeclaringClass()Ljava/lang/Class; +HSPLjava/lang/reflect/Method;->isSynthetic()Z +HSPLjava/lang/reflect/Method;->isVarArgs()Z +HSPLjava/lang/Short;->shortValue()S +HSPLjava/lang/StackTraceElement;->getFileName()Ljava/lang/String; +HSPLjava/lang/StringBuffer;->substring(II)Ljava/lang/String; +HSPLjava/lang/StringBuffer;->substring(I)Ljava/lang/String; +HSPLjava/lang/System;->getSecurityManager()Ljava/lang/SecurityManager; +HSPLjava/lang/Thread;->getUncaughtExceptionPreHandler()Ljava/lang/Thread$UncaughtExceptionHandler; +HSPLjava/lang/ThreadLocal$ThreadLocalMap;->getEntryAfterMiss(Ljava/lang/ThreadLocal;ILjava/lang/ThreadLocal$ThreadLocalMap$Entry;)Ljava/lang/ThreadLocal$ThreadLocalMap$Entry; +HSPLjava/lang/ThreadLocal$ThreadLocalMap;->getEntry(Ljava/lang/ThreadLocal;)Ljava/lang/ThreadLocal$ThreadLocalMap$Entry; +HSPLjava/lang/ThreadLocal$ThreadLocalMap;->nextIndex(II)I +HSPLjava/lang/ThreadLocal;->access$400(Ljava/lang/ThreadLocal;)I +HSPLjava/math/BigInteger;-><init>(Ljava/math/BigInt;)V +HSPLjava/math/BigInteger;->mod(Ljava/math/BigInteger;)Ljava/math/BigInteger; +HSPLjava/math/BigInteger;->setBigInt(Ljava/math/BigInt;)V +HSPLjava/math/BigInt;->hasNativeBignum()Z +HSPLjava/math/BigInt;-><init>()V +HSPLjava/math/BigInt;->modulus(Ljava/math/BigInt;Ljava/math/BigInt;)Ljava/math/BigInt; +HSPLjava/math/BigInt;->newBigInt()Ljava/math/BigInt; +HSPLjava/net/AbstractPlainDatagramSocketImpl;->joinGroup(Ljava/net/SocketAddress;Ljava/net/NetworkInterface;)V +HSPLjava/net/AbstractPlainDatagramSocketImpl;->leaveGroup(Ljava/net/SocketAddress;Ljava/net/NetworkInterface;)V +HSPLjava/net/AbstractPlainSocketImpl;->getTimeout()I +HSPLjava/net/AbstractPlainSocketImpl;->isConnectionReset()Z +HSPLjava/net/DatagramPacket;-><init>([BIILjava/net/SocketAddress;)V +HSPLjava/net/DatagramPacket;-><init>([BILjava/net/SocketAddress;)V +HSPLjava/net/DatagramPacket;->setSocketAddress(Ljava/net/SocketAddress;)V +HSPLjava/net/DatagramSocket;->setReuseAddress(Z)V +HSPLjava/net/HttpURLConnection;->setChunkedStreamingMode(I)V +HSPLjava/net/Inet6Address$Inet6AddressHolder;->isIPv4CompatibleAddress()Z +HSPLjava/net/Inet6AddressImpl;->getHostByAddr0([B)Ljava/lang/String; +HSPLjava/net/Inet6AddressImpl;->getHostByAddr([B)Ljava/lang/String; +HSPLjava/net/Inet6Address;->isIPv4CompatibleAddress()Z +HSPLjava/net/InetAddress$1;->getHostByAddr([B)Ljava/lang/String; +HSPLjava/net/InetAddress;->getHostFromNameService(Ljava/net/InetAddress;)Ljava/lang/String; +HSPLjava/net/InetAddress;->getHostName()Ljava/lang/String; +HSPLjava/net/InetSocketAddress$InetSocketAddressHolder;->access$600(Ljava/net/InetSocketAddress$InetSocketAddressHolder;)Ljava/lang/String; +HSPLjava/net/InetSocketAddress$InetSocketAddressHolder;->access$800(Ljava/net/InetSocketAddress$InetSocketAddressHolder;)Z +HSPLjava/net/InetSocketAddress$InetSocketAddressHolder;->getHostName()Ljava/lang/String; +HSPLjava/net/InetSocketAddress$InetSocketAddressHolder;->isUnresolved()Z +HSPLjava/net/InetSocketAddress;->getHostName()Ljava/lang/String; +HSPLjava/net/InetSocketAddress;-><init>(I)V +HSPLjava/net/InetSocketAddress;->isUnresolved()Z +HSPLjava/net/InterfaceAddress;->getAddress()Ljava/net/InetAddress; +HSPLjava/net/MulticastSocket;-><init>(I)V +HSPLjava/net/MulticastSocket;-><init>(Ljava/net/SocketAddress;)V +HSPLjava/net/MulticastSocket;->joinGroup(Ljava/net/SocketAddress;Ljava/net/NetworkInterface;)V +HSPLjava/net/MulticastSocket;->leaveGroup(Ljava/net/SocketAddress;Ljava/net/NetworkInterface;)V +HSPLjava/net/MulticastSocket;->setNetworkInterface(Ljava/net/NetworkInterface;)V +HSPLjava/net/MulticastSocket;->setTimeToLive(I)V +HSPLjava/net/NetworkInterface$1checkedAddresses;->hasMoreElements()Z +HSPLjava/net/NetworkInterface$1checkedAddresses;-><init>(Ljava/net/NetworkInterface;)V +HSPLjava/net/NetworkInterface$1checkedAddresses;->nextElement()Ljava/lang/Object; +HSPLjava/net/NetworkInterface$1checkedAddresses;->nextElement()Ljava/net/InetAddress; +HSPLjava/net/NetworkInterface;->access$000(Ljava/net/NetworkInterface;)[Ljava/net/InetAddress; +HSPLjava/net/NetworkInterface;->getByName(Ljava/lang/String;)Ljava/net/NetworkInterface; +HSPLjava/net/NetworkInterface;->getFlags()I +HSPLjava/net/NetworkInterface;->getHardwareAddress()[B +HSPLjava/net/NetworkInterface;->getIndex()I +HSPLjava/net/NetworkInterface;->getInetAddresses()Ljava/util/Enumeration; +HSPLjava/net/NetworkInterface;->getInterfaceAddresses()Ljava/util/List; +HSPLjava/net/NetworkInterface;->getMTU()I +HSPLjava/net/NetworkInterface;->getName()Ljava/lang/String; +HSPLjava/net/NetworkInterface;->getNetworkInterfaces()Ljava/util/Enumeration; +HSPLjava/net/NetworkInterface;->isLoopback()Z +HSPLjava/net/NetworkInterface;->isPointToPoint()Z +HSPLjava/net/NetworkInterface;->isUp()Z +HSPLjava/net/NetworkInterface;->isVirtual()Z +HSPLjava/net/NetworkInterface;->supportsMulticast()Z +HSPLjava/net/PlainDatagramSocketImpl;->join(Ljava/net/InetAddress;Ljava/net/NetworkInterface;)V +HSPLjava/net/PlainDatagramSocketImpl;->leave(Ljava/net/InetAddress;Ljava/net/NetworkInterface;)V +HSPLjava/net/PlainDatagramSocketImpl;->makeGroupReq(Ljava/net/InetAddress;Ljava/net/NetworkInterface;)Landroid/system/StructGroupReq; +HSPLjava/net/PlainDatagramSocketImpl;->setTimeToLive(I)V +HSPLjava/net/PlainDatagramSocketImpl;->socketSetOption0(ILjava/lang/Object;)V +HSPLjava/net/PlainDatagramSocketImpl;->socketSetOption(ILjava/lang/Object;)V +HSPLjava/net/SocketAddress;-><init>()V +HSPLjava/net/SocketInputStream;->read([BII)I +HSPLjava/net/SocketInputStream;->read([BIII)I +HSPLjava/net/SocketInputStream;->socketRead(Ljava/io/FileDescriptor;[BIII)I +HSPLjava/net/SocketOutputStream;->socketWrite([BII)V +HSPLjava/net/SocketOutputStream;->write([BII)V +HSPLjava/net/UnknownHostException;-><init>(Ljava/lang/String;)V +HSPLjava/net/URI$Parser;->charAt(I)C +HSPLjava/net/URI$Parser;-><init>(Ljava/net/URI;Ljava/lang/String;)V +HSPLjava/net/URI$Parser;->scanEscape(IIC)I +HSPLjava/net/URI;->access$002(Ljava/net/URI;Ljava/lang/String;)Ljava/lang/String; +HSPLjava/net/URI;->access$100()J +HSPLjava/net/URI;->access$200()J +HSPLjava/net/URI;->access$300(CJJ)Z +HSPLjava/net/URI;->hashCode()I +HSPLjava/net/URI;->hashIgnoringCase(ILjava/lang/String;)I +HSPLjava/net/URI;->hash(ILjava/lang/String;)I +HSPLjava/net/URI;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HSPLjava/net/URI;->isAbsolute()Z +HSPLjava/net/URI;->isOpaque()Z +HSPLjava/net/URI;->toLower(C)I +HSPLjava/net/URI;->toURL()Ljava/net/URL; +HSPLjava/net/URLConnection;->getContentEncoding()Ljava/lang/String; +HSPLjava/net/URLConnection;->getContentLength()I +HSPLjava/nio/Bits;->getFloatB(Ljava/nio/ByteBuffer;I)F +HSPLjava/nio/Bits;->getFloat(Ljava/nio/ByteBuffer;IZ)F +HSPLjava/nio/Bits;->getIntB(Ljava/nio/ByteBuffer;I)I +HSPLjava/nio/Bits;->getInt(Ljava/nio/ByteBuffer;IZ)I +HSPLjava/nio/Bits;->makeInt(BBBB)I +HSPLjava/nio/Bits;->putFloatB(Ljava/nio/ByteBuffer;IF)V +HSPLjava/nio/Bits;->putFloat(Ljava/nio/ByteBuffer;IFZ)V +HSPLjava/nio/Bits;->putLong(Ljava/nio/ByteBuffer;IJZ)V +HSPLjava/nio/Buffer;->nextGetIndex()I +HSPLjava/nio/Buffer;->nextGetIndex(I)I +HSPLjava/nio/Buffer;->nextPutIndex(I)I +HSPLjava/nio/ByteBufferAsIntBuffer;->get()I +HSPLjava/nio/ByteBufferAsIntBuffer;->get(I)I +HSPLjava/nio/ByteBufferAsIntBuffer;->put([III)Ljava/nio/IntBuffer; +HSPLjava/nio/ByteBufferAsLongBuffer;->put([JII)Ljava/nio/LongBuffer; +HSPLjava/nio/ByteBufferAsShortBuffer;->put([SII)Ljava/nio/ShortBuffer; +HSPLjava/nio/ByteBuffer;->compareTo(Ljava/lang/Object;)I +HSPLjava/nio/ByteBuffer;->equals(BB)Z +HSPLjava/nio/ByteBuffer;->equals(Ljava/lang/Object;)Z +HSPLjava/nio/channels/FileChannel;->lock()Ljava/nio/channels/FileLock; +HSPLjava/nio/channels/FileLock;->position()J +HSPLjava/nio/channels/FileLock;->size()J +HSPLjava/nio/channels/spi/AbstractInterruptibleChannel;->isOpen()Z +HSPLjava/nio/DirectByteBuffer;->getFloat()F +HSPLjava/nio/DirectByteBuffer;->getFloat(J)F +HSPLjava/nio/DirectByteBuffer;->getLong()J +HSPLjava/nio/DirectByteBuffer;->getLong(J)J +HSPLjava/nio/DirectByteBuffer;->ix(I)J +HSPLjava/nio/HeapByteBuffer;->asIntBuffer()Ljava/nio/IntBuffer; +HSPLjava/nio/HeapByteBuffer;->asLongBuffer()Ljava/nio/LongBuffer; +HSPLjava/nio/HeapByteBuffer;->getFloat()F +HSPLjava/nio/HeapByteBuffer;->getIntUnchecked(I)I +HSPLjava/nio/HeapByteBuffer;->getUnchecked(I[III)V +HSPLjava/nio/HeapByteBuffer;->getUnchecked(I[JII)V +HSPLjava/nio/HeapByteBuffer;->getUnchecked(I[SII)V +HSPLjava/nio/HeapByteBuffer;->ix(I)I +HSPLjava/nio/HeapByteBuffer;->putFloat(F)Ljava/nio/ByteBuffer; +HSPLjava/nio/HeapByteBuffer;->putLong(IJ)Ljava/nio/ByteBuffer; +HSPLjava/nio/HeapByteBuffer;->putUnchecked(I[III)V +HSPLjava/nio/HeapByteBuffer;->putUnchecked(I[JII)V +HSPLjava/nio/HeapByteBuffer;->putUnchecked(I[SII)V +HSPLjava/nio/IntBuffer;->put([I)Ljava/nio/IntBuffer; +HSPLjava/nio/LongBuffer;->put([J)Ljava/nio/LongBuffer; +HSPLjava/nio/ShortBuffer;->put([S)Ljava/nio/ShortBuffer; +HSPLjava/security/GeneralSecurityException;-><init>(Ljava/lang/Throwable;)V +HSPLjava/security/InvalidAlgorithmParameterException;-><init>(Ljava/lang/Throwable;)V +HSPLjava/security/KeyFactory;->getInstance(Ljava/lang/String;Ljava/security/Provider;)Ljava/security/KeyFactory; +HSPLjava/security/KeyFactory;-><init>(Ljava/security/KeyFactorySpi;Ljava/security/Provider;Ljava/lang/String;)V +HSPLjava/security/MessageDigest;->getAlgorithm()Ljava/lang/String; +HSPLjava/security/MessageDigest;-><init>(Ljava/lang/String;)V +HSPLjava/security/Provider$Service;->getProvider()Ljava/security/Provider; +HSPLjava/security/spec/ECParameterSpec;->getCurveName()Ljava/lang/String; +HSPLjava/security/spec/ECParameterSpec;->getGenerator()Ljava/security/spec/ECPoint; +HSPLjava/security/spec/ECPoint;->getAffineX()Ljava/math/BigInteger; +HSPLjava/security/spec/ECPoint;->getAffineY()Ljava/math/BigInteger; +HSPLjava/security/spec/ECPublicKeySpec;->getParams()Ljava/security/spec/ECParameterSpec; +HSPLjava/security/spec/ECPublicKeySpec;->getW()Ljava/security/spec/ECPoint; +HSPLjava/security/spec/ECPublicKeySpec;-><init>(Ljava/security/spec/ECPoint;Ljava/security/spec/ECParameterSpec;)V +HSPLjava/security/spec/EllipticCurve;->getA()Ljava/math/BigInteger; +HSPLjava/security/spec/EllipticCurve;->getB()Ljava/math/BigInteger; +HSPLjava/text/DateFormat;->getDateTimeInstance(II)Ljava/text/DateFormat; +HSPLjava/text/DecimalFormat;->initPattern(Ljava/lang/String;)V +HSPLjava/text/DecimalFormat;-><init>()V +HSPLjava/text/DecimalFormatSymbols;->getInstance(Ljava/util/Locale;)Ljava/text/DecimalFormatSymbols; +HSPLjava/text/FieldPosition;-><init>(I)V +HSPLjava/text/FieldPosition;-><init>(Ljava/text/Format$Field;I)V +HSPLjava/text/Format;-><init>()V +HSPLjava/text/NumberFormat;-><init>()V +HSPLjava/text/SimpleDateFormat;->isDigit(C)Z +HSPLjava/text/SimpleDateFormat;->subParseNumericZone(Ljava/lang/String;IIIZLjava/text/CalendarBuilder;)I +HSPLjava/time/Duration;->between(Ljava/time/temporal/Temporal;Ljava/time/temporal/Temporal;)Ljava/time/Duration; +HSPLjava/time/Duration;->compareTo(Ljava/time/Duration;)I +HSPLjava/time/Duration;->getNano()I +HSPLjava/time/Duration;->getSeconds()J +HSPLjava/time/Duration;->isNegative()Z +HSPLjava/time/Duration;->minus(Ljava/time/Duration;)Ljava/time/Duration; +HSPLjava/time/Duration;->plus(JJ)Ljava/time/Duration; +HSPLjava/time/Duration;->subtractFrom(Ljava/time/temporal/Temporal;)Ljava/time/temporal/Temporal; +HSPLjava/time/Duration;->toString()Ljava/lang/String; +HSPLjava/time/Instant;->compareTo(Ljava/time/Instant;)I +HSPLjava/time/Instant;->isBefore(Ljava/time/Instant;)Z +HSPLjava/time/Instant;->minus(JLjava/time/temporal/TemporalUnit;)Ljava/time/Instant; +HSPLjava/time/Instant;->minus(JLjava/time/temporal/TemporalUnit;)Ljava/time/temporal/Temporal; +HSPLjava/time/Instant;->minus(Ljava/time/temporal/TemporalAmount;)Ljava/time/Instant; +HSPLjava/time/Instant;->nanosUntil(Ljava/time/Instant;)J +HSPLjava/time/Instant;->plus(JLjava/time/temporal/TemporalUnit;)Ljava/time/Instant; +HSPLjava/time/Instant;->plusSeconds(J)Ljava/time/Instant; +HSPLjava/time/Instant;->until(Ljava/time/temporal/Temporal;Ljava/time/temporal/TemporalUnit;)J +HSPLjava/util/AbstractList$Itr;->checkForComodification()V +HSPLjava/util/AbstractList$ListItr;->hasPrevious()Z +HSPLjava/util/AbstractList$ListItr;->previousIndex()I +HSPLjava/util/AbstractList$ListItr;->previous()Ljava/lang/Object; +HSPLjava/util/AbstractList;->indexOf(Ljava/lang/Object;)I +HSPLjava/util/AbstractMap$2;-><init>(Ljava/util/AbstractMap;)V +HSPLjava/util/AbstractMap$2;->iterator()Ljava/util/Iterator; +HSPLjava/util/AbstractMap$SimpleImmutableEntry;-><init>(Ljava/util/Map$Entry;)V +HSPLjava/util/AbstractMap;->values()Ljava/util/Collection; +HSPLjava/util/ArrayList$Itr;-><init>(Ljava/util/ArrayList;)V +HSPLjava/util/Arrays;->deepToString([Ljava/lang/Object;)Ljava/lang/String; +HSPLjava/util/Arrays;->deepToString([Ljava/lang/Object;Ljava/lang/StringBuilder;Ljava/util/Set;)V +HSPLjava/util/Arrays;->fill([DD)V +HSPLjava/util/Arrays;->fill([ZIIZ)V +HSPLjava/util/Arrays;->sort([Ljava/lang/Object;II)V +HSPLjava/util/Arrays;->toString([F)Ljava/lang/String; +HSPLjava/util/BitSet;->checkInvariants()V +HSPLjava/util/BitSet;->clear(II)V +HSPLjava/util/BitSet;->recalculateWordsInUse()V +HSPLjava/util/BitSet;->wordIndex(I)I +HSPLjava/util/Calendar;->after(Ljava/lang/Object;)Z +HSPLjava/util/Calendar;->before(Ljava/lang/Object;)Z +HSPLjava/util/Calendar;->compareTo(J)I +HSPLjava/util/Calendar;->compareTo(Ljava/util/Calendar;)I +HSPLjava/util/Calendar;->getMillisOf(Ljava/util/Calendar;)J +HSPLjava/util/Collections$EmptyList;->listIterator()Ljava/util/ListIterator; +HSPLjava/util/Collections$EmptyList;->sort(Ljava/util/Comparator;)V +HSPLjava/util/Collections$EmptyMap;->keySet()Ljava/util/Set; +HSPLjava/util/Collections$SynchronizedMap;->containsValue(Ljava/lang/Object;)Z +HSPLjava/util/Collections$SynchronizedMap;->keySet()Ljava/util/Set; +HSPLjava/util/Collections$UnmodifiableMap;->toString()Ljava/lang/String; +HSPLjava/util/Collections;->emptyListIterator()Ljava/util/ListIterator; +HSPLjava/util/Collections;->frequency(Ljava/util/Collection;Ljava/lang/Object;)I +HSPLjava/util/Collection;->spliterator()Ljava/util/Spliterator; +HSPLjava/util/Collection;->stream()Ljava/util/stream/Stream; +HSPLjava/util/concurrent/AbstractExecutorService;->submit(Ljava/lang/Runnable;Ljava/lang/Object;)Ljava/util/concurrent/Future; +HSPLjava/util/concurrent/ArrayBlockingQueue;->add(Ljava/lang/Object;)Z +HSPLjava/util/concurrent/atomic/AtomicBoolean;->lazySet(Z)V +HSPLjava/util/concurrent/atomic/AtomicLong;->decrementAndGet()J +HSPLjava/util/concurrent/ConcurrentHashMap$BaseIterator;-><init>([Ljava/util/concurrent/ConcurrentHashMap$Node;IIILjava/util/concurrent/ConcurrentHashMap;)V +HSPLjava/util/concurrent/ConcurrentHashMap$EntrySetView;->removeIf(Ljava/util/function/Predicate;)Z +HSPLjava/util/concurrent/ConcurrentHashMap$Traverser;-><init>([Ljava/util/concurrent/ConcurrentHashMap$Node;III)V +HSPLjava/util/concurrent/ConcurrentHashMap;-><init>(Ljava/util/Map;)V +HSPLjava/util/concurrent/ConcurrentHashMap;->putAll(Ljava/util/Map;)V +HSPLjava/util/concurrent/ConcurrentHashMap;->removeEntryIf(Ljava/util/function/Predicate;)Z +HSPLjava/util/concurrent/ConcurrentHashMap;->remove(Ljava/lang/Object;Ljava/lang/Object;)Z +HSPLjava/util/concurrent/Executors$RunnableAdapter;-><init>(Ljava/lang/Runnable;Ljava/lang/Object;)V +HSPLjava/util/concurrent/LinkedBlockingQueue;->clear()V +HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->acquireShared(I)V +HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->getState()I +HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->release(I)Z +HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->tryAcquireSharedNanos(IJ)Z +HSPLjava/util/concurrent/Semaphore$Sync;->getPermits()I +HSPLjava/util/concurrent/Semaphore;->acquireUninterruptibly()V +HSPLjava/util/concurrent/Semaphore;->availablePermits()I +HSPLjava/util/concurrent/Semaphore;->tryAcquire(JLjava/util/concurrent/TimeUnit;)Z +HSPLjava/util/concurrent/ThreadPoolExecutor$DiscardPolicy;-><init>()V +HSPLjava/util/concurrent/ThreadPoolExecutor;->getMaximumPoolSize()I +HSPLjava/util/concurrent/ThreadPoolExecutor;->setThreadFactory(Ljava/util/concurrent/ThreadFactory;)V +HSPLjava/util/concurrent/TimeUnit$2;->convert(JLjava/util/concurrent/TimeUnit;)J +HSPLjava/util/concurrent/TimeUnit$2;->toSeconds(J)J +HSPLjava/util/concurrent/TimeUnit$5;->toMicros(J)J +HSPLjava/util/concurrent/TimeUnit$7;->toMicros(J)J +HSPLjava/util/concurrent/TimeUnit;->x(JJJ)J +HSPLjava/util/Date;->after(Ljava/util/Date;)Z +HSPLjava/util/Date;->getCalendarSystem(I)Lsun/util/calendar/BaseCalendar; +HSPLjava/util/Date;->getCalendarSystem(Lsun/util/calendar/BaseCalendar$Date;)Lsun/util/calendar/BaseCalendar; +HSPLjava/util/Date;->getMillisOf(Ljava/util/Date;)J +HSPLjava/util/Date;->getTimeImpl()J +HSPLjava/util/Date;-><init>(IIIIII)V +HSPLjava/util/Date;->normalize(Lsun/util/calendar/BaseCalendar$Date;)Lsun/util/calendar/BaseCalendar$Date; +HSPLjava/util/Formatter$FormatSpecifier;->print(Ljava/math/BigInteger;Ljava/util/Locale;)V +HSPLjava/util/Formatter$FormatSpecifier;->trailingSign(Ljava/lang/StringBuilder;Z)Ljava/lang/StringBuilder; +HSPLjava/util/Formatter;->access$000(Ljava/util/Formatter;)Ljava/lang/Appendable; +HSPLjava/util/function/-$$Lambda$DoubleUnaryOperator$EzzlhUGRoL66wVBCG-_euZgC-CA;->applyAsDouble(D)D +HSPLjava/util/function/DoubleUnaryOperator;->lambda$andThen$1(Ljava/util/function/DoubleUnaryOperator;Ljava/util/function/DoubleUnaryOperator;D)D +HSPLjava/util/HashMap$Node;-><init>(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/HashMap$Node;)V +HSPLjava/util/HashMap$TreeNode;-><init>(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/HashMap$Node;)V +HSPLjava/util/HashMap$TreeNode;->putTreeVal(Ljava/util/HashMap;[Ljava/util/HashMap$Node;ILjava/lang/Object;Ljava/lang/Object;)Ljava/util/HashMap$TreeNode; +HSPLjava/util/HashMap;->newTreeNode(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/HashMap$Node;)Ljava/util/HashMap$TreeNode; +HSPLjava/util/HashSet;-><init>(IFZ)V +HSPLjava/util/IdentityHashMap$KeySet;->size()I +HSPLjava/util/IdentityHashMap;->size()I +HSPLjava/util/Iterator;->forEachRemaining(Ljava/util/function/Consumer;)V +HSPLjava/util/LinkedHashMap$LinkedEntrySet;->spliterator()Ljava/util/Spliterator; +HSPLjava/util/LinkedHashMap$LinkedHashMapEntry;-><init>(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/HashMap$Node;)V +HSPLjava/util/LinkedHashMap$LinkedKeySet;->contains(Ljava/lang/Object;)Z +HSPLjava/util/LinkedHashMap;-><init>(IF)V +HSPLjava/util/LinkedHashSet;-><init>(IF)V +HSPLjava/util/Map;->forEach(Ljava/util/function/BiConsumer;)V +HSPLjava/util/Map;->getOrDefault(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/util/PriorityQueue;->comparator()Ljava/util/Comparator; +HSPLjava/util/PriorityQueue;->contains(Ljava/lang/Object;)Z +HSPLjava/util/PriorityQueue;->indexOf(Ljava/lang/Object;)I +HSPLjava/util/PriorityQueue;->initElementsFromCollection(Ljava/util/Collection;)V +HSPLjava/util/PriorityQueue;-><init>(Ljava/util/Collection;)V +HSPLjava/util/PriorityQueue;->siftDown(ILjava/lang/Object;)V +HSPLjava/util/regex/Matcher;->regionEnd()I +HSPLjava/util/regex/Matcher;->regionStart()I +HSPLjava/util/Spliterators$IteratorSpliterator;-><init>(Ljava/util/Collection;I)V +HSPLjava/util/Spliterators;->spliterator(Ljava/util/Collection;I)Ljava/util/Spliterator; +HSPLjava/util/stream/AbstractPipeline;-><init>(Ljava/util/Spliterator;IZ)V +HSPLjava/util/stream/ReduceOps$1;-><init>(Ljava/util/stream/StreamShape;Ljava/util/function/BinaryOperator;Ljava/util/function/BiFunction;Ljava/lang/Object;)V +HSPLjava/util/stream/ReduceOps$1;->makeSink()Ljava/util/stream/ReduceOps$1ReducingSink; +HSPLjava/util/stream/ReduceOps$1;->makeSink()Ljava/util/stream/ReduceOps$AccumulatingSink; +HSPLjava/util/stream/ReduceOps$1ReducingSink;->begin(J)V +HSPLjava/util/stream/ReduceOps$1ReducingSink;-><init>(Ljava/lang/Object;Ljava/util/function/BiFunction;Ljava/util/function/BinaryOperator;)V +HSPLjava/util/stream/ReduceOps$Box;-><init>()V +HSPLjava/util/stream/ReduceOps;->makeRef(Ljava/lang/Object;Ljava/util/function/BiFunction;Ljava/util/function/BinaryOperator;)Ljava/util/stream/TerminalOp; +HSPLjava/util/stream/ReferencePipeline$Head;-><init>(Ljava/util/Spliterator;IZ)V +HSPLjava/util/stream/ReferencePipeline;-><init>(Ljava/util/Spliterator;IZ)V +HSPLjava/util/stream/ReferencePipeline;->reduce(Ljava/lang/Object;Ljava/util/function/BinaryOperator;)Ljava/lang/Object; +HSPLjava/util/stream/StreamOpFlag;->fromCharacteristics(Ljava/util/Spliterator;)I +HSPLjava/util/stream/StreamSupport;->stream(Ljava/util/Spliterator;Z)Ljava/util/stream/Stream; +HSPLjava/util/TaskQueue;-><init>()V +HSPLjava/util/Timer$1;-><init>(Ljava/util/Timer;)V +HSPLjava/util/Timer;-><init>(Ljava/lang/String;Z)V +HSPLjava/util/Timer;->scheduleAtFixedRate(Ljava/util/TimerTask;JJ)V +HSPLjava/util/TimerThread;-><init>(Ljava/util/TaskQueue;)V +HSPLjava/util/TreeMap$KeySet;->comparator()Ljava/util/Comparator; +HSPLjava/util/TreeMap$KeySet;->size()I +HSPLjava/util/TreeMap;->addAllForTreeSet(Ljava/util/SortedSet;Ljava/lang/Object;)V +HSPLjava/util/TreeMap;->buildFromSorted(ILjava/util/Iterator;Ljava/io/ObjectInputStream;Ljava/lang/Object;)V +HSPLjava/util/TreeMap;->computeRedLevel(I)I +HSPLjava/util/TreeMap;->exportEntry(Ljava/util/TreeMap$TreeMapEntry;)Ljava/util/Map$Entry; +HSPLjava/util/TreeMap;->getLastEntry()Ljava/util/TreeMap$TreeMapEntry; +HSPLjava/util/TreeMap;->lastEntry()Ljava/util/Map$Entry; +HSPLjava/util/TreeMap;->putAll(Ljava/util/Map;)V +HSPLjava/util/TreeMap;->subMap(Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/SortedMap; +HSPLjava/util/TreeSet;-><init>(Ljava/util/SortedSet;)V +HSPLjava/util/Vector;->ensureCapacityHelper(I)V +HSPLjava/util/Vector;->insertElementAt(Ljava/lang/Object;I)V +HSPLjava/util/Vector;->setElementAt(Ljava/lang/Object;I)V +HSPLjava/util/zip/Adler32;->update([BII)V +HSPLjava/util/zip/Adler32;->update(I)V +HSPLjava/util/zip/ZipFile$ZipEntryIterator;->hasMoreElements()Z +HSPLjava/util/zip/ZipFile$ZipEntryIterator;->hasNext()Z +HSPLjava/util/zip/ZipFile$ZipEntryIterator;-><init>(Ljava/util/zip/ZipFile;)V +HSPLjava/util/zip/ZipFile$ZipEntryIterator;->nextElement()Ljava/lang/Object; +HSPLjava/util/zip/ZipFile$ZipEntryIterator;->nextElement()Ljava/util/zip/ZipEntry; +HSPLjava/util/zip/ZipFile$ZipEntryIterator;->next()Ljava/util/zip/ZipEntry; +HSPLjava/util/zip/ZipFile;->access$1000(JJ)V +HSPLjava/util/zip/ZipFile;->access$200(Ljava/util/zip/ZipFile;)V +HSPLjava/util/zip/ZipFile;->access$300(Ljava/util/zip/ZipFile;)I +HSPLjava/util/zip/ZipFile;->access$400(Ljava/util/zip/ZipFile;)J +HSPLjava/util/zip/ZipFile;->access$500(JI)J +HSPLjava/util/zip/ZipFile;->access$900(Ljava/util/zip/ZipFile;Ljava/lang/String;J)Ljava/util/zip/ZipEntry; +HSPLjava/util/zip/ZipFile;->entries()Ljava/util/Enumeration; +HSPLjava/util/zip/ZipFile;-><init>(Ljava/io/File;I)V +HSPLjava/util/zip/ZipFile;-><init>(Ljava/io/File;)V +HSPLjavax/crypto/JceSecurity;->access$000()Ljava/net/URL; +HSPLjavax/crypto/JceSecurity;->getCodeBase(Ljava/lang/Class;)Ljava/net/URL; +HSPLjavax/crypto/JceSecurity;->getInstance(Ljava/lang/String;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;)Lsun/security/jca/GetInstance$Instance; +HSPLjavax/crypto/JceSecurity;->getVerificationResult(Ljava/security/Provider;)Ljava/lang/Exception; +HSPLjavax/crypto/JceSecurity;->verifyProviderJar(Ljava/net/URL;)V +HSPLjavax/crypto/KeyGenerator;->getInstance(Ljava/lang/String;Ljava/lang/String;)Ljavax/crypto/KeyGenerator; +HSPLjavax/crypto/KeyGenerator;->init(Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V +HSPLjavax/crypto/KeyGenerator;->init(Ljava/security/spec/AlgorithmParameterSpec;)V +HSPLjavax/crypto/KeyGenerator;-><init>(Ljavax/crypto/KeyGeneratorSpi;Ljava/security/Provider;Ljava/lang/String;)V +HSPLjavax/crypto/Mac;->reset()V +HSPLjavax/crypto/spec/SecretKeySpec;->getAlgorithm()Ljava/lang/String; +HSPLlibcore/icu/DateUtilsBridge;->icuTimeZone(Ljava/util/TimeZone;)Landroid/icu/util/TimeZone; +HSPLlibcore/io/BlockGuardOs;->connect(Ljava/io/FileDescriptor;Ljava/net/SocketAddress;)V +HSPLlibcore/io/BlockGuardOs;->isUdpSocket(Ljava/io/FileDescriptor;)Z +HSPLlibcore/io/BlockGuardOs;->sendto(Ljava/io/FileDescriptor;[BIIILjava/net/SocketAddress;)I +HSPLlibcore/io/ForwardingOs;->connect(Ljava/io/FileDescriptor;Ljava/net/SocketAddress;)V +HSPLlibcore/io/ForwardingOs;->prctl(IJJJJ)I +HSPLlibcore/io/ForwardingOs;->recvfrom(Ljava/io/FileDescriptor;[BIIILjava/net/InetSocketAddress;)I +HSPLlibcore/io/ForwardingOs;->sendto(Ljava/io/FileDescriptor;[BIIILjava/net/InetAddress;I)I +HSPLlibcore/io/ForwardingOs;->sendto(Ljava/io/FileDescriptor;[BIIILjava/net/SocketAddress;)I +HSPLlibcore/io/ForwardingOs;->setsockoptByte(Ljava/io/FileDescriptor;III)V +HSPLlibcore/io/ForwardingOs;->setsockoptGroupReq(Ljava/io/FileDescriptor;IILandroid/system/StructGroupReq;)V +HSPLlibcore/io/ForwardingOs;->setsockoptIfreq(Ljava/io/FileDescriptor;IILjava/lang/String;)V +HSPLlibcore/io/ForwardingOs;->setsockoptIpMreqn(Ljava/io/FileDescriptor;III)V +HSPLlibcore/io/Linux;->sendto(Ljava/io/FileDescriptor;[BIIILjava/net/SocketAddress;)I +HSPLlibcore/util/ZoneInfo;->access$500(JI)I +HSPLlibcore/util/ZoneInfo;->access$600(JI)I +HSPLlibcore/util/ZoneInfo;->checked32BitAdd(JI)I +HSPLlibcore/util/ZoneInfo;->checked32BitSubtract(JI)I +HSPLorg/json/JSONArray;-><init>(Ljava/util/Collection;)V +HSPLorg/json/JSONObject;->length()I +HSPLorg/json/JSONTokener;->skipToEndOfLine()V +HSPLsun/misc/FloatingDecimal;->appendTo(DLjava/lang/Appendable;)V +HSPLsun/misc/FloatingDecimal;->getBinaryToASCIIConverter(D)Lsun/misc/FloatingDecimal$BinaryToASCIIConverter; +HSPLsun/misc/FloatingDecimal;->parseDouble(Ljava/lang/String;)D +HSPLsun/misc/FloatingDecimal;->parseFloat(Ljava/lang/String;)F +HSPLsun/misc/FloatingDecimal;->toJavaFormatString(D)Ljava/lang/String; +HSPLsun/nio/ch/FileChannelImpl;->release(Lsun/nio/ch/FileLockImpl;)V +HSPLsun/nio/ch/FileLockImpl;->release()V +HSPLsun/nio/ch/SharedFileLockTable;->remove(Ljava/nio/channels/FileLock;)V +HSPLsun/nio/fs/NativeBuffer$Deallocator;->run()V +HSPLsun/nio/fs/NativeBuffer;->access$000()Lsun/misc/Unsafe; +HSPLsun/security/jca/GetInstance$Instance;-><init>(Ljava/security/Provider;Ljava/lang/Object;Lsun/security/jca/GetInstance$1;)V +HSPLsun/security/jca/GetInstance$Instance;-><init>(Ljava/security/Provider;Ljava/lang/Object;)V +HSPLsun/security/jca/GetInstance;->getInstance(Ljava/lang/String;Ljava/lang/Class;Ljava/lang/String;Ljava/security/Provider;)Lsun/security/jca/GetInstance$Instance; +HSPLsun/security/jca/GetInstance;->getInstance(Ljava/security/Provider$Service;Ljava/lang/Class;)Lsun/security/jca/GetInstance$Instance; +HSPLsun/util/calendar/BaseCalendar$Date;->setNormalizedDate(III)Lsun/util/calendar/BaseCalendar$Date; +HSPLjava/util/Iterator;->forEachRemaining(Ljava/util/function/Consumer;)V +HSPLjava/lang/Iterable;->forEach(Ljava/util/function/Consumer;)V +HSPLjava/util/Map;->forEach(Ljava/util/function/BiConsumer;)V +HSPLjava/util/Collection;->spliterator()Ljava/util/Spliterator; +HSPLjava/util/Collection;->stream()Ljava/util/stream/Stream; +HSPLandroid/os/Trace;->endAsyncSection(Ljava/lang/String;I)V +HSPLjava/util/Map;->getOrDefault(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroid/bluetooth/le/ScanFilter;-><init>(Ljava/lang/String;Ljava/lang/String;Landroid/os/ParcelUuid;Landroid/os/ParcelUuid;Landroid/os/ParcelUuid;Landroid/os/ParcelUuid;Landroid/os/ParcelUuid;[B[BI[B[B)V +HSPLjava/nio/ByteBuffer;->array()Ljava/lang/Object; +HSPLjava/nio/NIOAccess;->getBaseArray(Ljava/nio/Buffer;)Ljava/lang/Object; +HSPLjava/nio/NIOAccess;->getBaseArrayOffset(Ljava/nio/Buffer;)I +HSPLandroid/graphics/drawable/RotateDrawable;->draw(Landroid/graphics/Canvas;)V +HSPLandroid/graphics/Bitmap;->checkHardware(Ljava/lang/String;)V +HSPLandroid/graphics/Bitmap;->copyPixelsToBuffer(Ljava/nio/Buffer;)V +HSPLandroid/graphics/Bitmap;->getDensity()I +HSPLandroid/accounts/AccountManager;->setAuthToken(Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/accounts/AccountManager;->setUserData(Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/accounts/IAccountManager$Stub$Proxy;->setAuthToken(Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/accounts/IAccountManager$Stub$Proxy;->setUserData(Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/os/StrictMode$AndroidBlockGuardPolicy;->onNetwork()V +HSPLjava/util/Arrays$ArrayList;-><init>([Ljava/lang/Object;)V +HSPLjava/util/regex/Matcher;-><init>(Ljava/util/regex/Pattern;Ljava/lang/CharSequence;)V +HSPLjava/util/Map;->getOrDefault(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; diff --git a/config/dirty-image-objects b/config/dirty-image-objects index 9e2230b288c8..ec2568dc4ad8 100644 --- a/config/dirty-image-objects +++ b/config/dirty-image-objects @@ -28,147 +28,359 @@ # Then, grep for lines containing "Private dirty object" from the output. # This particular file was generated by dumping systemserver and systemui. # -java.lang.System -java.net.Inet4Address -java.lang.Thread -java.lang.Throwable -java.util.Collections -javax.net.ssl.SSLContext -java.nio.charset.Charset -java.security.Provider -javax.net.ssl.HttpsURLConnection -javax.net.ssl.SSLSocketFactory -java.util.TimeZone -java.util.Locale -java.util.function.ToIntFunction -sun.misc.FormattedFloatingDecimal -java.util.stream.IntStream -android.icu.util.TimeZone -org.apache.harmony.luni.internal.util.TimezoneGetter -dalvik.system.SocketTagger -dalvik.system.CloseGuard -java.lang.ref.FinalizerReference -com.android.org.conscrypt.ct.CTLogStoreImpl -com.android.org.conscrypt.SSLParametersImpl -com.android.org.conscrypt.OpenSSLContextImpl -com.android.org.conscrypt.SSLParametersImpl$AliasChooser -com.android.org.conscrypt.SSLParametersImpl$PSKCallbacks -com.android.org.conscrypt.NativeCrypto$SSLHandshakeCallbacks -com.android.okhttp.OkHttpClient -com.android.okhttp.okio.SegmentPool -com.android.okhttp.okio.AsyncTimeout -com.android.okhttp.HttpUrl -android.os.StrictMode -com.android.internal.os.BinderInternal -android.os.storage.StorageManager -android.os.Trace +android.accounts.Account +android.accounts.OnAccountsUpdateListener +android.animation.LayoutTransition android.app.ActivityManager -android.media.MediaRouter -android.os.Environment -android.view.ThreadedRenderer -android.media.AudioManager -android.app.AlarmManager -android.telephony.TelephonyManager -android.bluetooth.BluetoothAdapter -com.android.internal.os.SomeArgs -android.os.LocaleList -android.view.WindowManagerGlobal -android.media.AudioSystem -android.ddm.DdmHandleAppName -android.provider.Settings -android.view.ViewRootImpl -android.net.ConnectivityManager +android.app.ActivityManager$OnUidImportanceListener +android.app.ActivityTaskManager android.app.ActivityThread -android.os.BaseBundle -android.util.ArraySet -android.view.View -android.os.ServiceManager -android.view.ViewTreeObserver -android.hardware.input.InputManager -android.os.UEventObserver -android.app.NotificationManager -android.hardware.display.DisplayManagerGlobal -android.os.Binder +android.app.admin.DevicePolicyManager +android.app.AlarmManager +android.app.Application android.app.AppOpsManager -android.content.ContentResolver android.app.backup.BackupManager -android.util.ArrayMap -android.os.Looper -android.graphics.Bitmap -android.view.textservice.TextServicesManager -com.android.internal.inputmethod.InputMethodUtils +android.app.ContextImpl +android.app.INotificationManager +android.app.Notification$BigPictureStyle +android.app.Notification$BigTextStyle +android.app.Notification$InboxStyle +android.app.NotificationChannel +android.app.NotificationChannelGroup +android.app.NotificationManager +android.app.PendingIntent +android.app.PendingIntent$OnFinished android.app.QueuedWork -android.graphics.TemporaryBuffer -android.widget.ImageView +android.app.ResourcesManager +android.app.WallpaperManager +android.app.WindowConfiguration +android.bluetooth.BluetoothAdapter +android.bluetooth.BluetoothDevice +android.bluetooth.BluetoothProfile +android.bluetooth.IBluetoothA2dp +android.bluetooth.IBluetoothHeadsetPhone +android.bluetooth.IBluetoothHidDevice +android.bluetooth.IBluetoothHidHost +android.bluetooth.IBluetoothMap +android.bluetooth.IBluetoothPan +android.bluetooth.IBluetoothPbap +android.bluetooth.IBluetoothSap +android.content.ClipboardManager$OnPrimaryClipChangedListener +android.content.ComponentName +android.content.ContentProvider$PipeDataWriter +android.content.ContentResolver +android.content.Context +android.content.Intent +android.content.pm.PackageManager$OnPermissionsChangedListener +android.content.pm.VersionedPackage +android.content.res.Configuration +android.content.SharedPreferences$OnSharedPreferenceChangeListener +android.database.CursorWindow +android.database.sqlite.SQLiteCompatibilityWalFlags +android.database.sqlite.SQLiteDatabase$CursorFactory android.database.sqlite.SQLiteGlobal -android.view.autofill.Helper -android.text.method.SingleLineTransformationMethod -com.android.internal.os.RuntimeInit -android.view.inputmethod.InputMethodManager +android.database.sqlite.SQLiteTransactionListener +android.ddm.DdmHandleAppName +android.graphics.Bitmap +android.graphics.Canvas +android.graphics.drawable.AdaptiveIconDrawable +android.graphics.drawable.ColorDrawable +android.graphics.drawable.GradientDrawable +android.graphics.drawable.Icon +android.graphics.drawable.InsetDrawable +android.graphics.drawable.RippleDrawable +android.graphics.drawable.VectorDrawable$VGroup +android.graphics.ImageDecoder +android.graphics.Rect +android.graphics.TemporaryBuffer +android.hardware.biometrics.BiometricSourceType +android.hardware.display.ColorDisplayManager$ColorDisplayManagerInternal +android.hardware.display.DisplayManagerGlobal +android.hardware.display.NightDisplayListener$Callback +android.hardware.input.InputManager +android.hardware.input.InputManager$InputDeviceListener +android.hardware.SensorPrivacyManager android.hardware.SystemSensorManager -android.database.CursorWindow -android.text.TextUtils +android.icu.impl.OlsonTimeZone +android.icu.text.BreakIterator +android.icu.text.Collator +android.icu.text.DateFormat$BooleanAttribute +android.icu.text.DateTimePatternGenerator$DTPGflags +android.icu.text.PluralRules$Operand +android.icu.util.TimeZone +android.location.GpsStatus$Listener +android.location.LocationListener +android.media.AudioManager +android.media.MediaRouter android.media.PlayerBase -android.app.ResourcesManager -android.os.Message -android.view.accessibility.AccessibilityManager -android.app.Notification -android.provider.ContactsContract$ContactNameColumns -android.provider.CalendarContract$EventsColumns -android.provider.CalendarContract$CalendarColumns -android.provider.CalendarContract$SyncColumns -android.provider.ContactsContract$ContactsColumns -android.content.pm.PackageManager$OnPermissionsChangedListener -android.net.IpConfiguration$ProxySettings -android.provider.ContactsContract$ContactOptionsColumns -android.net.wifi.SupplicantState -android.provider.ContactsContract$ContactStatusColumns -android.view.accessibility.AccessibilityManager$TouchExplorationStateChangeListener -android.provider.CalendarContract$CalendarSyncColumns -android.bluetooth.BluetoothProfile$ServiceListener -android.provider.ContactsContract$ContactCounts +android.media.session.MediaSessionManager +android.net.apf.ApfCapabilities +android.net.ConnectivityManager +android.net.ConnectivityManager$OnNetworkActiveListener +android.net.ConnectivityThread$Singleton android.net.IpConfiguration$IpAssignment -android.text.TextWatcher -android.graphics.Bitmap$CompressFormat -android.location.LocationListener -sun.security.jca.Providers -java.lang.CharSequence -android.icu.util.ULocale -dalvik.system.BaseDexClassLoader -android.icu.text.BreakIterator -libcore.net.NetworkSecurityPolicy -android.icu.text.UnicodeSet -com.android.org.conscrypt.TrustedCertificateStore$PreloadHolder -android.app.SearchManager -android.os.Build -android.app.ContextImpl -android.app.WallpaperManager -android.security.net.config.ApplicationConfig -android.animation.LayoutTransition -android.widget.TextView -com.android.internal.logging.MetricsLogger -android.renderscript.RenderScriptCacheDir -android.os.Process +android.net.IpConfiguration$ProxySettings +android.net.IpPrefix +android.net.LinkAddress +android.net.LinkProperties +android.net.Network +android.net.NetworkCapabilities +android.net.NetworkInfo +android.net.NetworkInfo$State +android.net.NetworkRequest +android.net.NetworkRequest$Type +android.net.RouteInfo +android.net.StringNetworkSpecifier +android.net.TrafficStats +android.net.UidRange +android.net.Uri$HierarchicalUri +android.net.Uri$StringUri +android.net.wifi.WifiManager +android.net.wifi.WifiManager$SoftApCallback +android.os.AsyncResult +android.os.AsyncTask +android.os.BinderProxy +android.os.Bundle +android.os.DeadObjectException +android.os.Environment +android.os.FileObserver android.os.Handler -android.content.Context -android.graphics.drawable.AdaptiveIconDrawable +android.os.IDeviceIdleController +android.os.LocaleList +android.os.Looper +android.os.Message +android.os.ParcelUuid +android.os.Process +android.os.RecoverySystem +android.os.ServiceManager +android.os.storage.StorageManager +android.os.StrictMode +android.os.Trace +android.os.WorkSource +android.os.WorkSource$WorkChain +android.permission.PermissionManager android.provider.FontsContract -android.text.style.SuggestionSpan -android.graphics.drawable.VectorDrawable$VGroup -android.view.ViewStub -android.text.style.MetricAffectingSpan -android.content.SharedPreferences$OnSharedPreferenceChangeListener -android.app.PendingIntent +android.provider.Settings$SettingNotFoundException +android.renderscript.RenderScriptCacheDir +android.security.IKeyChainService +android.security.keystore.AndroidKeyStoreProvider +android.security.net.config.ApplicationConfig +android.security.net.config.SystemCertificateSource$NoPreloadHolder +android.telecom.PhoneAccountHandle +android.telephony.AnomalyReporter +android.telephony.CellSignalStrengthCdma +android.telephony.CellSignalStrengthGsm +android.telephony.CellSignalStrengthLte +android.telephony.CellSignalStrengthNr +android.telephony.CellSignalStrengthTdscdma +android.telephony.CellSignalStrengthWcdma +android.telephony.DataSpecificRegistrationInfo +android.telephony.emergency.EmergencyNumber +android.telephony.ims.ImsMmTelManager$CapabilityCallback$CapabilityBinder +android.telephony.ims.ImsMmTelManager$RegistrationCallback$RegistrationBinder +android.telephony.ims.ImsReasonInfo +android.telephony.ims.ProvisioningManager$Callback$CallbackBinder +android.telephony.ModemActivityInfo +android.telephony.ModemInfo +android.telephony.NetworkRegistrationInfo +android.telephony.NetworkService +android.telephony.TelephonyManager +android.telephony.VoiceSpecificRegistrationInfo +android.text.format.DateFormat +android.text.method.SingleLineTransformationMethod +android.text.Selection$MemoryTextWatcher android.text.SpanWatcher -android.widget.FrameLayout -android.net.NetworkRequest$Type -android.net.NetworkInfo$State -android.graphics.drawable.GradientDrawable android.text.style.AlignmentSpan -android.widget.LinearLayout android.text.style.CharacterStyle -android.view.View$OnApplyWindowInsetsListener -android.view.MenuItem +android.text.style.LeadingMarginSpan +android.text.style.LineBackgroundSpan +android.text.style.LineHeightSpan +android.text.style.MetricAffectingSpan android.text.style.ReplacementSpan -android.graphics.drawable.Icon +android.text.style.SuggestionSpan +android.text.style.TabStopSpan +android.text.TextUtils +android.text.TextWatcher +android.transition.ChangeClipBounds +android.transition.ChangeImageTransform +android.transition.ChangeTransform +android.util.ArrayMap +android.util.ArraySet +android.util.DisplayMetrics +android.util.EventLog +android.util.Log +android.util.Patterns +android.view.AbsSavedState$1 +android.view.accessibility.AccessibilityManager +android.view.accessibility.AccessibilityManager$AccessibilityServicesStateChangeListener +android.view.accessibility.AccessibilityManager$TouchExplorationStateChangeListener +android.view.accessibility.AccessibilityNodeIdManager +android.view.autofill.AutofillManager +android.view.autofill.Helper +android.view.Choreographer +android.view.inputmethod.InputMethodManager +android.view.IWindowManager +android.view.PointerIcon +android.view.RemoteAnimationAdapter +android.view.ThreadedRenderer +android.view.View +android.view.View$OnHoverListener +android.view.ViewRootImpl +android.view.ViewStub +android.view.ViewStub$OnInflateListener +android.view.ViewTreeObserver +android.view.WindowManager$LayoutParams +android.view.WindowManagerGlobal +android.widget.ActionMenuPresenter$OverflowMenuButton +android.widget.ActionMenuView android.widget.Button +android.widget.CheckBox +android.widget.FrameLayout +android.widget.ImageButton +android.widget.ImageView +android.widget.LinearLayout +android.widget.RelativeLayout +android.widget.SeekBar +android.widget.Space +android.widget.TextView +android.widget.Toolbar +byte[] +com.android.ims.ImsManager +com.android.internal.logging.MetricsLogger +com.android.internal.os.BackgroundThread +com.android.internal.os.BinderInternal +com.android.internal.os.BinderInternal$BinderProxyLimitListener +com.android.internal.os.RuntimeInit +com.android.internal.os.SomeArgs +com.android.internal.policy.DecorView +com.android.internal.statusbar.IStatusBarService +com.android.internal.telephony.AppSmsManager +com.android.internal.telephony.CallerInfoAsyncQuery$OnQueryCompleteListener +com.android.internal.telephony.CarrierActionAgent +com.android.internal.telephony.cat.CatService +com.android.internal.telephony.cat.IconLoader +com.android.internal.telephony.cat.RilMessageDecoder +com.android.internal.telephony.cdma.CdmaSubscriptionSourceManager +com.android.internal.telephony.cdma.EriManager +com.android.internal.telephony.CellularNetworkValidator +com.android.internal.telephony.CommandException +com.android.internal.telephony.dataconnection.DataConnection$DcActivatingState +com.android.internal.telephony.dataconnection.DataConnection$DcActiveState +com.android.internal.telephony.dataconnection.DataConnection$DcInactiveState +com.android.internal.telephony.dataconnection.DataEnabledSettings +com.android.internal.telephony.dataconnection.DcTracker +com.android.internal.telephony.euicc.EuiccCardController +com.android.internal.telephony.euicc.EuiccController +com.android.internal.telephony.GsmAlphabet +com.android.internal.telephony.GsmCdmaCallTracker +com.android.internal.telephony.GsmCdmaPhone +com.android.internal.telephony.IccPhoneBookInterfaceManager +com.android.internal.telephony.IccSmsInterfaceManager +com.android.internal.telephony.ims.ImsResolver +com.android.internal.telephony.imsphone.ImsExternalCallTracker +com.android.internal.telephony.imsphone.ImsPhone +com.android.internal.telephony.imsphone.ImsPhoneCallTracker +com.android.internal.telephony.ims.RcsMessageStoreController +com.android.internal.telephony.IntentBroadcaster +com.android.internal.telephony.ITelephonyRegistry$Stub$Proxy +com.android.internal.telephony.metrics.TelephonyMetrics +com.android.internal.telephony.MultiSimSettingController +com.android.internal.telephony.nano.CarrierIdProto$CarrierAttribute +com.android.internal.telephony.nano.CarrierIdProto$CarrierId +com.android.internal.telephony.nano.TelephonyProto$RilDataCall +com.android.internal.telephony.nano.TelephonyProto$SmsSession$Event +com.android.internal.telephony.nano.TelephonyProto$TelephonyCallSession$Event$RilCall +com.android.internal.telephony.NitzStateMachine +com.android.internal.telephony.PhoneConfigurationManager +com.android.internal.telephony.PhoneFactory +com.android.internal.telephony.PhoneSwitcher +com.android.internal.telephony.ProxyController +com.android.internal.telephony.RadioConfig +com.android.internal.telephony.RIL +com.android.internal.telephony.RILRequest +com.android.internal.telephony.RilWakelockInfo +com.android.internal.telephony.ServiceStateTracker +com.android.internal.telephony.SimActivationTracker +com.android.internal.telephony.SmsApplication +com.android.internal.telephony.SmsBroadcastUndelivered +com.android.internal.telephony.SmsStorageMonitor +com.android.internal.telephony.SmsUsageMonitor +com.android.internal.telephony.SubscriptionController +com.android.internal.telephony.SubscriptionInfoUpdater +com.android.internal.telephony.TelephonyComponentFactory +com.android.internal.telephony.TelephonyDevController +com.android.internal.telephony.TelephonyTester +com.android.internal.telephony.uicc.AdnRecordCache +com.android.internal.telephony.uicc.UiccCardApplication +com.android.internal.telephony.uicc.UiccController +com.android.internal.telephony.uicc.UiccProfile +com.android.internal.telephony.uicc.UiccStateChangedLauncher +com.android.internal.telephony.uicc.UsimFileHandler +com.android.internal.telephony.uicc.VoiceMailConstants +com.android.internal.util.LatencyTracker +com.android.internal.util.StateMachine$SmHandler +com.android.okhttp.OkHttpClient +com.android.okhttp.okio.AsyncTimeout +com.android.okhttp.okio.SegmentPool +com.android.phone.ecc.nano.ProtobufEccData$CountryInfo +com.android.phone.ecc.nano.ProtobufEccData$EccInfo +com.android.server.sip.SipWakeupTimer +com.android.server.SystemConfig +dalvik.system.BaseDexClassLoader +dalvik.system.BlockGuard +dalvik.system.CloseGuard +dalvik.system.RuntimeHooks +dalvik.system.SocketTagger +java.io.BufferedReader +java.lang.AssertionError +java.lang.Boolean +java.lang.Byte +java.lang.Character +java.lang.CharSequence +java.lang.Class +java.lang.IllegalAccessException +java.lang.IllegalStateException +java.lang.NoSuchMethodException +java.lang.NullPointerException +java.lang.Object +java.lang.Object[] +java.lang.ref.FinalizerReference +java.lang.Runnable +java.lang.SecurityException +java.lang.Short +java.lang.String[] +java.lang.System +java.lang.Thread +java.lang.Throwable +java.lang.UnsatisfiedLinkError +java.net.Inet6Address +java.net.Socket +java.net.SocketException +java.nio.Bits +java.nio.charset.Charset +java.security.interfaces.RSAPrivateKey +java.security.Provider +java.util.Collections +java.util.concurrent.Executor +java.util.GregorianCalendar +java.util.Locale +java.util.Locale$NoImagePreloadHolder +java.util.Scanner +java.util.Set +java.util.TimeZone +javax.net.SocketFactory +javax.net.ssl.HttpsURLConnection +javax.net.ssl.HttpsURLConnection$NoPreloadHolder +javax.net.ssl.SSLContext +javax.net.ssl.SSLSessionContext +javax.net.ssl.SSLSocketFactory +libcore.io.Libcore +libcore.io.Memory +libcore.net.NetworkSecurityPolicy +libcore.timezone.TimeZoneFinder +org.apache.http.params.HttpParams +sun.misc.Cleaner +sun.nio.ch.FileChannelImpl +sun.nio.ch.FileChannelImpl$Unmapper +sun.nio.fs.UnixChannelFactory +sun.security.jca.Providers diff --git a/config/hiddenapi-greylist.txt b/config/hiddenapi-greylist.txt index 10f25ea1c8d1..c30a6f491807 100644 --- a/config/hiddenapi-greylist.txt +++ b/config/hiddenapi-greylist.txt @@ -581,6 +581,7 @@ Landroid/security/keystore/IKeystoreService;->ungrant(Ljava/lang/String;I)I Landroid/service/dreams/IDreamManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/dreams/IDreamManager; Landroid/service/dreams/IDreamManager;->getDreamComponents()[Landroid/content/ComponentName; Landroid/service/euicc/IEuiccService$Stub;-><init>()V +Landroid/service/media/IMediaBrowserServiceCallbacks$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/media/IMediaBrowserServiceCallbacks; Landroid/service/notification/INotificationListener$Stub;-><init>()V Landroid/service/persistentdata/IPersistentDataBlockService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/persistentdata/IPersistentDataBlockService; Landroid/service/vr/IVrManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/vr/IVrManager; diff --git a/core/java/android/app/Activity.java b/core/java/android/app/Activity.java index 2eb09020b428..dc52c52cca1f 100644 --- a/core/java/android/app/Activity.java +++ b/core/java/android/app/Activity.java @@ -2330,7 +2330,7 @@ public class Activity extends ContextThemeWrapper * calling {@link VoiceInteractor#notifyDirectActionsChanged()}. * * <p>To get the voice interactor you need to call {@link #getVoiceInteractor()} - * which would return non <code>null<c/ode> only if there is an ongoing voice + * which would return non <code>null</code> only if there is an ongoing voice * interaction session. You an also detect when the voice interactor is no * longer valid because the voice interaction session that is backing is finished * by calling {@link VoiceInteractor#registerOnDestroyedCallback(Executor, Runnable)}. @@ -2339,7 +2339,7 @@ public class Activity extends ContextThemeWrapper * before {@link #onStop()} is being called. * * <p>You should pass to the callback the currently supported direct actions which - * cannot be <code>null</code> or contain <code>null</null> elements. + * cannot be <code>null</code> or contain <code>null</code> elements. * * <p>You should return the action list as soon as possible to ensure the consumer, * for example the assistant, is as responsive as possible which would improve user diff --git a/core/java/android/app/ActivityManagerInternal.java b/core/java/android/app/ActivityManagerInternal.java index 0b25b2e2f254..8508c2c95666 100644 --- a/core/java/android/app/ActivityManagerInternal.java +++ b/core/java/android/app/ActivityManagerInternal.java @@ -168,20 +168,13 @@ public abstract class ActivityManagerInternal { public abstract boolean isUidActive(int uid); /** - * Returns a list that contains the memory stats for currently running processes. + * Returns a list of running processes along with corresponding uids, pids and their oom score. * * Only processes managed by ActivityManagerService are included. */ public abstract List<ProcessMemoryState> getMemoryStateForProcesses(); /** - * Returns a list that contains the memory high-water mark for currently running processes. - * - * Only processes managed by ActivityManagerService are included. - */ - public abstract List<ProcessMemoryHighWaterMark> getMemoryHighWaterMarkForProcesses(); - - /** * Checks to see if the calling pid is allowed to handle the user. Returns adjusted user id as * needed. */ diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java index 3a74f7dc2ea5..546f000159a0 100644 --- a/core/java/android/app/ActivityThread.java +++ b/core/java/android/app/ActivityThread.java @@ -2080,7 +2080,7 @@ public final class ActivityThread extends ClientTransactionHandler { @Override public final boolean queueIdle() { doGcIfNeeded(); - nPurgePendingResources(); + purgePendingResources(); return false; } } @@ -2088,9 +2088,7 @@ public final class ActivityThread extends ClientTransactionHandler { final class PurgeIdler implements MessageQueue.IdleHandler { @Override public boolean queueIdle() { - Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "purgePendingResources"); - nPurgePendingResources(); - Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER); + purgePendingResources(); return false; } } @@ -2460,13 +2458,17 @@ public final class ActivityThread extends ClientTransactionHandler { } void doGcIfNeeded() { + doGcIfNeeded("bg"); + } + + void doGcIfNeeded(String reason) { mGcIdlerScheduled = false; final long now = SystemClock.uptimeMillis(); //Slog.i(TAG, "**** WE MIGHT WANT TO GC: then=" + Binder.getLastGcTime() // + "m now=" + now); if ((BinderInternal.getLastGcTime()+MIN_TIME_BETWEEN_GCS) < now) { //Slog.i(TAG, "**** WE DO, WE DO WANT TO GC!"); - BinderInternal.forceGc("bg"); + BinderInternal.forceGc(reason); } } @@ -6006,6 +6008,16 @@ public final class ActivityThread extends ClientTransactionHandler { WindowManagerGlobal.getInstance().trimMemory(level); Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER); + + if (SystemProperties.getInt("debug.am.run_gc_trim_level", Integer.MAX_VALUE) <= level) { + unscheduleGcIdler(); + doGcIfNeeded("tm"); + } + if (SystemProperties.getInt("debug.am.run_mallopt_trim_level", Integer.MAX_VALUE) + <= level) { + unschedulePurgeIdler(); + purgePendingResources(); + } } private void setupGraphicsSupport(Context context) { @@ -7346,6 +7358,12 @@ public final class ActivityThread extends ClientTransactionHandler { throw new RuntimeException("Main thread loop unexpectedly exited"); } + private void purgePendingResources() { + Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "purgePendingResources"); + nPurgePendingResources(); + Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER); + } + // ------------------ Regular JNI ------------------------ private native void nPurgePendingResources(); private native void nDumpGraphicsInfo(FileDescriptor fd); diff --git a/core/java/android/app/ApplicationPackageManager.java b/core/java/android/app/ApplicationPackageManager.java index 685eedc31303..360be350601d 100644 --- a/core/java/android/app/ApplicationPackageManager.java +++ b/core/java/android/app/ApplicationPackageManager.java @@ -1017,6 +1017,7 @@ public class ApplicationPackageManager extends PackageManager { } } + @UnsupportedAppUsage @Override public boolean setInstantAppCookie(@NonNull byte[] cookie) { try { @@ -2754,12 +2755,11 @@ public class ApplicationPackageManager extends PackageManager { public Drawable loadUnbadgedItemIcon(@NonNull PackageItemInfo itemInfo, @Nullable ApplicationInfo appInfo) { if (itemInfo.showUserIcon != UserHandle.USER_NULL) { - Bitmap bitmap = getUserManager().getUserIcon(itemInfo.showUserIcon); - if (bitmap == null) { - return UserIcons.getDefaultUserIcon( - mContext.getResources(), itemInfo.showUserIcon, /* light= */ false); - } - return new BitmapDrawable(bitmap); + // Indicates itemInfo is for a different user (e.g. a profile's parent), so use a + // generic user icon (users generally lack permission to view each other's actual icons) + int targetUserId = itemInfo.showUserIcon; + return UserIcons.getDefaultUserIcon( + mContext.getResources(), targetUserId, /* light= */ false); } Drawable dr = null; if (itemInfo.packageName != null) { diff --git a/core/java/android/app/ITaskStackListener.aidl b/core/java/android/app/ITaskStackListener.aidl index 1fdc8ca5b291..0df3bbe42c7e 100644 --- a/core/java/android/app/ITaskStackListener.aidl +++ b/core/java/android/app/ITaskStackListener.aidl @@ -169,4 +169,12 @@ oneway interface ITaskStackListener { * @param taskInfo info about the task which received the back press */ void onBackPressedOnTaskRoot(in ActivityManager.RunningTaskInfo taskInfo); + + /** + * Called when a task is reparented to a stack on a different display. + * + * @param taskId id of the task which was moved to a different display. + * @param newDisplayId id of the new display. + */ + void onTaskDisplayChanged(int taskId, int newDisplayId); } diff --git a/core/java/android/app/ProcessMemoryHighWaterMark.java b/core/java/android/app/ProcessMemoryHighWaterMark.java deleted file mode 100644 index d1cae94f02b4..000000000000 --- a/core/java/android/app/ProcessMemoryHighWaterMark.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright (C) 2018 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package android.app; - -import android.os.Parcel; -import android.os.Parcelable; - -/** - * The memory high-water mark value for a process. - * {@hide} - */ -public final class ProcessMemoryHighWaterMark implements Parcelable { - public final int uid; - public final String processName; - public final long rssHighWaterMarkInBytes; - - public ProcessMemoryHighWaterMark(int uid, String processName, long rssHighWaterMarkInBytes) { - this.uid = uid; - this.processName = processName; - this.rssHighWaterMarkInBytes = rssHighWaterMarkInBytes; - } - - private ProcessMemoryHighWaterMark(Parcel in) { - uid = in.readInt(); - processName = in.readString(); - rssHighWaterMarkInBytes = in.readLong(); - } - - public static final @android.annotation.NonNull Creator<ProcessMemoryHighWaterMark> CREATOR = - new Creator<ProcessMemoryHighWaterMark>() { - @Override - public ProcessMemoryHighWaterMark createFromParcel(Parcel in) { - return new ProcessMemoryHighWaterMark(in); - } - - @Override - public ProcessMemoryHighWaterMark[] newArray(int size) { - return new ProcessMemoryHighWaterMark[size]; - } - }; - - @Override - public int describeContents() { - return 0; - } - - @Override - public void writeToParcel(Parcel parcel, int flags) { - parcel.writeInt(uid); - parcel.writeString(processName); - parcel.writeLong(rssHighWaterMarkInBytes); - } -} diff --git a/core/java/android/app/ProcessMemoryState.java b/core/java/android/app/ProcessMemoryState.java index e28d79c2565b..24914a6af557 100644 --- a/core/java/android/app/ProcessMemoryState.java +++ b/core/java/android/app/ProcessMemoryState.java @@ -20,44 +20,27 @@ import android.os.Parcel; import android.os.Parcelable; /** - * The memory stats for a process. + * State (oom score) for processes known to activity manager. * {@hide} */ public final class ProcessMemoryState implements Parcelable { public final int uid; + public final int pid; public final String processName; public final int oomScore; - public final long pgfault; - public final long pgmajfault; - public final long rssInBytes; - public final long cacheInBytes; - public final long swapInBytes; - public final long startTimeNanos; - public ProcessMemoryState(int uid, String processName, int oomScore, long pgfault, - long pgmajfault, long rssInBytes, long cacheInBytes, - long swapInBytes, long startTimeNanos) { + public ProcessMemoryState(int uid, int pid, String processName, int oomScore) { this.uid = uid; + this.pid = pid; this.processName = processName; this.oomScore = oomScore; - this.pgfault = pgfault; - this.pgmajfault = pgmajfault; - this.rssInBytes = rssInBytes; - this.cacheInBytes = cacheInBytes; - this.swapInBytes = swapInBytes; - this.startTimeNanos = startTimeNanos; } private ProcessMemoryState(Parcel in) { uid = in.readInt(); + pid = in.readInt(); processName = in.readString(); oomScore = in.readInt(); - pgfault = in.readLong(); - pgmajfault = in.readLong(); - rssInBytes = in.readLong(); - cacheInBytes = in.readLong(); - swapInBytes = in.readLong(); - startTimeNanos = in.readLong(); } public static final @android.annotation.NonNull Creator<ProcessMemoryState> CREATOR = new Creator<ProcessMemoryState>() { @@ -80,13 +63,8 @@ public final class ProcessMemoryState implements Parcelable { @Override public void writeToParcel(Parcel parcel, int i) { parcel.writeInt(uid); + parcel.writeInt(pid); parcel.writeString(processName); parcel.writeInt(oomScore); - parcel.writeLong(pgfault); - parcel.writeLong(pgmajfault); - parcel.writeLong(rssInBytes); - parcel.writeLong(cacheInBytes); - parcel.writeLong(swapInBytes); - parcel.writeLong(startTimeNanos); } } diff --git a/core/java/android/app/TaskStackListener.java b/core/java/android/app/TaskStackListener.java index 00f3ad58afa6..73fc7a3db6c7 100644 --- a/core/java/android/app/TaskStackListener.java +++ b/core/java/android/app/TaskStackListener.java @@ -26,6 +26,7 @@ import android.os.RemoteException; /** * Classes interested in observing only a subset of changes using ITaskStackListener can extend * this class to avoid having to implement all the methods. + * * @hide */ public abstract class TaskStackListener extends ITaskStackListener.Stub { @@ -173,4 +174,8 @@ public abstract class TaskStackListener extends ITaskStackListener.Stub { public void onBackPressedOnTaskRoot(ActivityManager.RunningTaskInfo taskInfo) throws RemoteException { } + + @Override + public void onTaskDisplayChanged(int taskId, int newDisplayId) throws RemoteException { + } } diff --git a/core/java/android/app/admin/DevicePolicyManager.java b/core/java/android/app/admin/DevicePolicyManager.java index 507e97e3df05..441ff6ba4643 100644 --- a/core/java/android/app/admin/DevicePolicyManager.java +++ b/core/java/android/app/admin/DevicePolicyManager.java @@ -16,6 +16,8 @@ package android.app.admin; +import static com.android.internal.util.function.pooled.PooledLambda.obtainMessage; + import android.Manifest.permission; import android.annotation.CallbackExecutor; import android.annotation.ColorInt; @@ -88,6 +90,7 @@ import android.util.Log; import com.android.internal.R; import com.android.internal.annotations.VisibleForTesting; +import com.android.internal.os.BackgroundThread; import com.android.internal.util.Preconditions; import com.android.org.conscrypt.TrustedCertificateStore; @@ -275,6 +278,7 @@ public class DevicePolicyManager { * <li>{@link #EXTRA_PROVISIONING_LOGO_URI}, optional</li> * <li>{@link #EXTRA_PROVISIONING_MAIN_COLOR}, optional</li> * <li>{@link #EXTRA_PROVISIONING_DISCLAIMERS}, optional</li> + * <li>{@link #EXTRA_PROVISIONING_SKIP_EDUCATION_SCREENS}, optional</li> * </ul> * * <p>When device owner provisioning has completed, an intent of the type @@ -382,6 +386,8 @@ public class DevicePolicyManager { * <li>{@link #EXTRA_PROVISIONING_ORGANIZATION_NAME}, optional</li> * <li>{@link #EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE}, optional</li> * <li>{@link #EXTRA_PROVISIONING_USE_MOBILE_DATA}, optional </li> + * <li>{@link #EXTRA_PROVISIONING_SKIP_EDUCATION_SCREENS}, optional - when not used for + * cloud enrollment, NFC or QR provisioning</li> * </ul> * * @hide @@ -1146,8 +1152,12 @@ public class DevicePolicyManager { * A boolean extra indicating if the education screens from the provisioning flow should be * skipped. If unspecified, defaults to {@code false}. * - * <p>This extra can only be set by the admin app when performing the admin-integrated - * provisioning flow as a result of the {@link #ACTION_GET_PROVISIONING_MODE} activity. + * <p>This extra can be set in the following ways: + * <ul> + * <li>By the admin app when performing the admin-integrated + * provisioning flow as a result of the {@link #ACTION_GET_PROVISIONING_MODE} activity</li> + * <li>With intent action {@link #ACTION_PROVISION_MANAGED_DEVICE}</li> + * </ul> * * <p>If the education screens are skipped, it is the admin application's responsibility * to display its own user education screens. @@ -6393,6 +6403,7 @@ public class DevicePolicyManager { /** * @hide */ + @UnsupportedAppUsage public @Nullable ComponentName getProfileOwnerAsUser(final int userId) { if (mService != null) { try { @@ -8810,6 +8821,11 @@ public class DevicePolicyManager { mService.setPermissionGrantState(admin, mContext.getPackageName(), packageName, permission, grantState, new RemoteCallback((b) -> result.complete(b != null))); + // Timeout + BackgroundThread.getHandler().sendMessageDelayed( + obtainMessage(CompletableFuture::complete, result, false), + 20_000); + return result.get(); } catch (RemoteException re) { throw re.rethrowFromSystemServer(); diff --git a/core/java/android/app/role/RoleManager.java b/core/java/android/app/role/RoleManager.java index 4b1796a8d0f7..bb04a2e52712 100644 --- a/core/java/android/app/role/RoleManager.java +++ b/core/java/android/app/role/RoleManager.java @@ -53,7 +53,8 @@ import java.util.function.Consumer; * the availability of roles. Instead, they should always query if the role is available using * {@link #isRoleAvailable(String)} before trying to do anything with it. Some predefined role names * are available as constants in this class, and a list of possibly available roles can be found in - * the AndroidX Libraries. + * the <a href="{@docRoot}reference/androidx/core/role/package-summary.html">AndroidX Role + * library</a>. * <p> * There can be multiple applications qualifying for a role, but only a subset of them can become * role holders. To qualify for a role, an application must meet certain requirements, including diff --git a/core/java/android/app/servertransaction/NewIntentItem.java b/core/java/android/app/servertransaction/NewIntentItem.java index 2d1883836d02..bb775fc4a5fb 100644 --- a/core/java/android/app/servertransaction/NewIntentItem.java +++ b/core/java/android/app/servertransaction/NewIntentItem.java @@ -17,6 +17,7 @@ package android.app.servertransaction; import static android.app.servertransaction.ActivityLifecycleItem.ON_RESUME; +import static android.app.servertransaction.ActivityLifecycleItem.UNDEFINED; import android.annotation.UnsupportedAppUsage; import android.app.ClientTransactionHandler; @@ -38,10 +39,11 @@ public class NewIntentItem extends ClientTransactionItem { @UnsupportedAppUsage private List<ReferrerIntent> mIntents; + private boolean mResume; @Override public int getPostExecutionState() { - return ON_RESUME; + return mResume ? ON_RESUME : UNDEFINED; } @Override @@ -58,12 +60,13 @@ public class NewIntentItem extends ClientTransactionItem { private NewIntentItem() {} /** Obtain an instance initialized with provided params. */ - public static NewIntentItem obtain(List<ReferrerIntent> intents) { + public static NewIntentItem obtain(List<ReferrerIntent> intents, boolean resume) { NewIntentItem instance = ObjectPool.obtain(NewIntentItem.class); if (instance == null) { instance = new NewIntentItem(); } instance.mIntents = intents; + instance.mResume = resume; return instance; } @@ -71,6 +74,7 @@ public class NewIntentItem extends ClientTransactionItem { @Override public void recycle() { mIntents = null; + mResume = false; ObjectPool.recycle(this); } @@ -80,11 +84,13 @@ public class NewIntentItem extends ClientTransactionItem { /** Write to Parcel. */ @Override public void writeToParcel(Parcel dest, int flags) { + dest.writeBoolean(mResume); dest.writeTypedList(mIntents, flags); } /** Read from Parcel. */ private NewIntentItem(Parcel in) { + mResume = in.readBoolean(); mIntents = in.createTypedArrayList(ReferrerIntent.CREATOR); } @@ -108,18 +114,19 @@ public class NewIntentItem extends ClientTransactionItem { return false; } final NewIntentItem other = (NewIntentItem) o; - return Objects.equals(mIntents, other.mIntents); + return mResume == other.mResume && Objects.equals(mIntents, other.mIntents); } @Override public int hashCode() { int result = 17; + result = 31 * result + (mResume ? 1 : 0); result = 31 * result + mIntents.hashCode(); return result; } @Override public String toString() { - return "NewIntentItem{intents=" + mIntents + "}"; + return "NewIntentItem{intents=" + mIntents + ",resume=" + mResume + "}"; } } diff --git a/core/java/android/bluetooth/BluetoothHearingAid.java b/core/java/android/bluetooth/BluetoothHearingAid.java index 60fb6fb122e3..a812c32ae868 100644 --- a/core/java/android/bluetooth/BluetoothHearingAid.java +++ b/core/java/android/bluetooth/BluetoothHearingAid.java @@ -22,6 +22,7 @@ import android.annotation.Nullable; import android.annotation.RequiresPermission; import android.annotation.SdkConstant; import android.annotation.SdkConstant.SdkConstantType; +import android.annotation.UnsupportedAppUsage; import android.content.Context; import android.os.Binder; import android.os.IBinder; @@ -83,6 +84,7 @@ public final class BluetoothHearingAid implements BluetoothProfile { * * @hide */ + @UnsupportedAppUsage @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION) public static final String ACTION_ACTIVE_DEVICE_CHANGED = "android.bluetooth.hearingaid.profile.action.ACTIVE_DEVICE_CHANGED"; @@ -303,6 +305,7 @@ public final class BluetoothHearingAid implements BluetoothProfile { * @return false on immediate error, true otherwise * @hide */ + @UnsupportedAppUsage public boolean setActiveDevice(@Nullable BluetoothDevice device) { if (DBG) log("setActiveDevice(" + device + ")"); final IBluetoothHearingAid service = getService(); @@ -331,6 +334,7 @@ public final class BluetoothHearingAid implements BluetoothProfile { * is not active, it will be null on that position. Returns empty list on error. * @hide */ + @UnsupportedAppUsage @RequiresPermission(Manifest.permission.BLUETOOTH) public List<BluetoothDevice> getActiveDevices() { if (VDBG) log("getActiveDevices()"); diff --git a/core/java/android/content/Context.java b/core/java/android/content/Context.java index 941eda8bcf1f..c3dd82729d6d 100644 --- a/core/java/android/content/Context.java +++ b/core/java/android/content/Context.java @@ -234,7 +234,9 @@ public abstract class Context { BIND_ALLOW_OOM_MANAGEMENT, BIND_WAIVE_PRIORITY, BIND_IMPORTANT, - BIND_ADJUST_WITH_ACTIVITY + BIND_ADJUST_WITH_ACTIVITY, + BIND_NOT_PERCEPTIBLE, + BIND_INCLUDE_CAPABILITIES }) @Retention(RetentionPolicy.SOURCE) public @interface BindServiceFlags {} @@ -329,26 +331,25 @@ public abstract class Context { public static final int BIND_ADJUST_WITH_ACTIVITY = 0x0080; /** + * Flag for {@link #bindService}: If binding from an app that is visible or user-perceptible, + * lower the target service's importance to below the perceptible level. This allows + * the system to (temporarily) expunge the bound process from memory to make room for more + * important user-perceptible processes. + */ + public static final int BIND_NOT_PERCEPTIBLE = 0x00000100; + + /** * Flag for {@link #bindService}: If binding from an app that has specific capabilities * due to its foreground state such as an activity or foreground service, then this flag will * allow the bound app to get the same capabilities, as long as it has the required permissions * as well. */ - public static final int BIND_INCLUDE_CAPABILITIES = 0x00001000; + public static final int BIND_INCLUDE_CAPABILITIES = 0x000001000; /*********** Public flags above this line ***********/ /*********** Hidden flags below this line ***********/ /** - * Flag for {@link #bindService}: If binding from something better than perceptible, - * still set the adjust below perceptible. This would be used for bound services that can - * afford to be evicted when under extreme memory pressure, but should be restarted as soon - * as possible. - * @hide - */ - public static final int BIND_ADJUST_BELOW_PERCEPTIBLE = 0x00040000; - - /** * Flag for {@link #bindService}: This flag is intended to be used only by the system to adjust * the scheduling policy for IMEs (and any other out-of-process user-visible components that * work closely with the top app) so that UI hosted in such services can have the same @@ -473,7 +474,7 @@ public abstract class Context { */ public static final int BIND_REDUCTION_FLAGS = Context.BIND_ALLOW_OOM_MANAGEMENT | Context.BIND_WAIVE_PRIORITY - | Context.BIND_ADJUST_BELOW_PERCEPTIBLE | Context.BIND_NOT_VISIBLE; + | Context.BIND_NOT_PERCEPTIBLE | Context.BIND_NOT_VISIBLE; /** @hide */ @IntDef(flag = true, prefix = { "RECEIVER_VISIBLE_" }, value = { @@ -4126,6 +4127,7 @@ public abstract class Context { * @see #getSystemService(String) * @hide */ + @TestApi @SystemApi public static final String PERMISSION_SERVICE = "permission"; diff --git a/core/java/android/content/om/OverlayInfo.java b/core/java/android/content/om/OverlayInfo.java index 1838babf7794..f39fc6674a11 100644 --- a/core/java/android/content/om/OverlayInfo.java +++ b/core/java/android/content/om/OverlayInfo.java @@ -20,6 +20,7 @@ import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.SystemApi; +import android.annotation.UnsupportedAppUsage; import android.annotation.UserIdInt; import android.os.Parcel; import android.os.Parcelable; @@ -169,6 +170,7 @@ public final class OverlayInfo implements Parcelable { * The state of this OverlayInfo as defined by the STATE_* constants in this class. * @hide */ + @UnsupportedAppUsage public final @State int state; /** diff --git a/core/java/android/content/om/TEST_MAPPING b/core/java/android/content/om/TEST_MAPPING new file mode 100644 index 000000000000..d35dfdbf32c8 --- /dev/null +++ b/core/java/android/content/om/TEST_MAPPING @@ -0,0 +1,26 @@ +{ + "presubmit": [ + { + "name": "FrameworksServicesTests", + "options": [ + { + "include-filter": "com.android.server.om" + } + ] + }, + { + "name": "OverlayDeviceTests" + }, + { + "name": "OverlayHostTests" + }, + { + "name": "CtsAppSecurityHostTestCases", + "options": [ + { + "include-filter": "android.appsecurity.cts.OverlayHostTest" + } + ] + } + ] +} diff --git a/core/java/android/content/pm/PackageItemInfo.java b/core/java/android/content/pm/PackageItemInfo.java index 081c5ad78762..d0ab8f713de8 100644 --- a/core/java/android/content/pm/PackageItemInfo.java +++ b/core/java/android/content/pm/PackageItemInfo.java @@ -159,7 +159,7 @@ public class PackageItemInfo { public Bundle metaData; /** - * If different of UserHandle.USER_NULL, The icon of this item will be the one of that user. + * If different of UserHandle.USER_NULL, The icon of this item will represent that user. * @hide */ public int showUserIcon; diff --git a/core/java/android/content/pm/PackageManagerInternal.java b/core/java/android/content/pm/PackageManagerInternal.java index 666508af0207..672994e79134 100644 --- a/core/java/android/content/pm/PackageManagerInternal.java +++ b/core/java/android/content/pm/PackageManagerInternal.java @@ -994,4 +994,9 @@ public abstract class PackageManagerInternal { */ public abstract void setRuntimePermissionsFingerPrint(@NonNull String fingerPrint, @UserIdInt int userId); + + /** + * Migrates legacy obb data to its new location. + */ + public abstract void migrateLegacyObbData(); } diff --git a/core/java/android/content/pm/PackageParser.java b/core/java/android/content/pm/PackageParser.java index 89be0000ca0e..b3776787cc2b 100644 --- a/core/java/android/content/pm/PackageParser.java +++ b/core/java/android/content/pm/PackageParser.java @@ -8396,6 +8396,7 @@ public class PackageParser { PackageInfo pi = generatePackageInfo(p, EmptyArray.INT, flags, 0, 0, Collections.emptySet(), state); pi.applicationInfo.sourceDir = apexFile.getPath(); + pi.applicationInfo.publicSourceDir = apexFile.getPath(); if (apexInfo.isFactory) { pi.applicationInfo.flags |= ApplicationInfo.FLAG_SYSTEM; } else { diff --git a/core/java/android/content/pm/RegisteredServicesCache.java b/core/java/android/content/pm/RegisteredServicesCache.java index b0b1874107ce..23fbefb73c50 100644 --- a/core/java/android/content/pm/RegisteredServicesCache.java +++ b/core/java/android/content/pm/RegisteredServicesCache.java @@ -17,7 +17,6 @@ package android.content.pm; import android.Manifest; -import android.annotation.Nullable; import android.annotation.UnsupportedAppUsage; import android.content.BroadcastReceiver; import android.content.ComponentName; @@ -177,8 +176,7 @@ public abstract class RegisteredServicesCache<V> { mContext.registerReceiver(mUserRemovedReceiver, userFilter); } - @VisibleForTesting - protected void handlePackageEvent(Intent intent, int userId) { + private void handlePackageEvent(Intent intent, int userId) { // Don't regenerate the services map when the package is removed or its // ASEC container unmounted as a step in replacement. The subsequent // _ADDED / _AVAILABLE call will regenerate the map in the final state. @@ -240,9 +238,6 @@ public abstract class RegisteredServicesCache<V> { public void invalidateCache(int userId) { synchronized (mServicesLock) { - if (DEBUG) { - Slog.d(TAG, "invalidating cache for " + userId + " " + mInterfaceName); - } final UserServices<V> user = findOrCreateUserLocked(userId); user.services = null; onServicesChangedLocked(userId); @@ -472,48 +467,34 @@ public abstract class RegisteredServicesCache<V> { * or null to assume that everything is affected. * @param userId the user for whom to update the services map. */ - private void generateServicesMap(@Nullable int[] changedUids, int userId) { + private void generateServicesMap(int[] changedUids, int userId) { if (DEBUG) { Slog.d(TAG, "generateServicesMap() for " + userId + ", changed UIDs = " + Arrays.toString(changedUids)); } + final ArrayList<ServiceInfo<V>> serviceInfos = new ArrayList<>(); + final List<ResolveInfo> resolveInfos = queryIntentServices(userId); + for (ResolveInfo resolveInfo : resolveInfos) { + try { + ServiceInfo<V> info = parseServiceInfo(resolveInfo); + if (info == null) { + Log.w(TAG, "Unable to load service info " + resolveInfo.toString()); + continue; + } + serviceInfos.add(info); + } catch (XmlPullParserException | IOException e) { + Log.w(TAG, "Unable to load service info " + resolveInfo.toString(), e); + } + } + synchronized (mServicesLock) { final UserServices<V> user = findOrCreateUserLocked(userId); - final boolean cacheInvalid = user.services == null; - if (cacheInvalid) { + final boolean firstScan = user.services == null; + if (firstScan) { user.services = Maps.newHashMap(); } - final ArrayList<ServiceInfo<V>> serviceInfos = new ArrayList<>(); - final List<ResolveInfo> resolveInfos = queryIntentServices(userId); - - for (ResolveInfo resolveInfo : resolveInfos) { - try { - // when changedUids == null, we want to do a rescan of everything, this means - // it's the initial scan, and containsUid will trivially return true - // when changedUids != null, we got here because a package changed, but - // invalidateCache could have been called (thus user.services == null), and we - // should query from PackageManager again - if (!cacheInvalid - && !containsUid( - changedUids, resolveInfo.serviceInfo.applicationInfo.uid)) { - if (DEBUG) { - Slog.d(TAG, "Skipping parseServiceInfo for " + resolveInfo); - } - continue; - } - ServiceInfo<V> info = parseServiceInfo(resolveInfo); - if (info == null) { - Log.w(TAG, "Unable to load service info " + resolveInfo.toString()); - continue; - } - serviceInfos.add(info); - } catch (XmlPullParserException | IOException e) { - Log.w(TAG, "Unable to load service info " + resolveInfo.toString(), e); - } - } - StringBuilder changes = new StringBuilder(); boolean changed = false; for (ServiceInfo<V> info : serviceInfos) { @@ -534,7 +515,7 @@ public abstract class RegisteredServicesCache<V> { changed = true; user.services.put(info.type, info); user.persistentServices.put(info.type, info.uid); - if (!(user.mPersistentServicesFileDidNotExist && cacheInvalid)) { + if (!(user.mPersistentServicesFileDidNotExist && firstScan)) { notifyListener(info.type, userId, false /* removed */); } } else if (previousUid == info.uid) { diff --git a/core/java/android/hardware/camera2/CameraMetadata.java b/core/java/android/hardware/camera2/CameraMetadata.java index 04e8cf421baa..5ac13d8a067d 100644 --- a/core/java/android/hardware/camera2/CameraMetadata.java +++ b/core/java/android/hardware/camera2/CameraMetadata.java @@ -925,14 +925,14 @@ public abstract class CameraMetadata<TKey> { * case, when the application configures a RAW stream, the camera device will make sure * the active physical camera will remain active to ensure consistent RAW output * behavior, and not switch to other physical cameras.</p> - * <p>To maintain backward compatibility, the capture request and result metadata tags - * required for basic camera functionalities will be solely based on the - * logical camera capabiltity. Other request and result metadata tags, on the other - * hand, will be based on current active physical camera. For example, the physical - * cameras' sensor sensitivity and lens capability could be different from each other. - * So when the application manually controls sensor exposure time/gain, or does manual - * focus control, it must checks the current active physical camera's exposure, gain, - * and focus distance range.</p> + * <p>The capture request and result metadata tags required for backward compatible camera + * functionalities will be solely based on the logical camera capabiltity. On the other + * hand, the use of manual capture controls (sensor or post-processing) with a + * logical camera may result in unexpected behavior when the HAL decides to switch + * between physical cameras with different characteristics under the hood. For example, + * when the application manually sets exposure time and sensitivity while zooming in, + * the brightness of the camera images may suddenly change because HAL switches from one + * physical camera to the other.</p> * * @see CameraCharacteristics#LENS_DISTORTION * @see CameraCharacteristics#LENS_INFO_FOCUS_DISTANCE_CALIBRATION diff --git a/core/java/android/hardware/camera2/impl/CameraConstrainedHighSpeedCaptureSessionImpl.java b/core/java/android/hardware/camera2/impl/CameraConstrainedHighSpeedCaptureSessionImpl.java index 3494a7f2801e..eb331373e691 100644 --- a/core/java/android/hardware/camera2/impl/CameraConstrainedHighSpeedCaptureSessionImpl.java +++ b/core/java/android/hardware/camera2/impl/CameraConstrainedHighSpeedCaptureSessionImpl.java @@ -25,6 +25,7 @@ import android.hardware.camera2.params.OutputConfiguration; import android.hardware.camera2.params.StreamConfigurationMap; import android.hardware.camera2.utils.SurfaceUtils; import android.os.Handler; +import android.os.ConditionVariable; import android.util.Range; import android.view.Surface; @@ -51,6 +52,7 @@ public class CameraConstrainedHighSpeedCaptureSessionImpl extends CameraConstrainedHighSpeedCaptureSession implements CameraCaptureSessionCore { private final CameraCharacteristics mCharacteristics; private final CameraCaptureSessionImpl mSessionImpl; + private final ConditionVariable mInitialized = new ConditionVariable(); /** * Create a new CameraCaptureSession. @@ -68,6 +70,7 @@ public class CameraConstrainedHighSpeedCaptureSessionImpl CameraCaptureSession.StateCallback wrapperCallback = new WrapperCallback(callback); mSessionImpl = new CameraCaptureSessionImpl(id, /*input*/null, wrapperCallback, stateExecutor, deviceImpl, deviceStateExecutor, configureSuccess); + mInitialized.open(); } @Override @@ -321,11 +324,13 @@ public class CameraConstrainedHighSpeedCaptureSessionImpl @Override public void onConfigured(CameraCaptureSession session) { + mInitialized.block(); mCallback.onConfigured(CameraConstrainedHighSpeedCaptureSessionImpl.this); } @Override public void onConfigureFailed(CameraCaptureSession session) { + mInitialized.block(); mCallback.onConfigureFailed(CameraConstrainedHighSpeedCaptureSessionImpl.this); } diff --git a/core/java/android/net/ConnectivityManager.java b/core/java/android/net/ConnectivityManager.java index fbfbfc04d81f..111a8c48a46c 100644 --- a/core/java/android/net/ConnectivityManager.java +++ b/core/java/android/net/ConnectivityManager.java @@ -655,7 +655,7 @@ public class ConnectivityManager { * {@hide} */ @Deprecated - @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 130143562) + @UnsupportedAppUsage public static final int TYPE_WIFI_P2P = 13; /** diff --git a/core/java/android/net/DnsResolver.java b/core/java/android/net/DnsResolver.java index 7a85dcbfc830..0b1a84534e38 100644 --- a/core/java/android/net/DnsResolver.java +++ b/core/java/android/net/DnsResolver.java @@ -34,6 +34,7 @@ import android.annotation.NonNull; import android.annotation.Nullable; import android.os.CancellationSignal; import android.os.Looper; +import android.os.MessageQueue; import android.system.ErrnoException; import android.util.Log; @@ -466,10 +467,20 @@ public final class DnsResolver { private void registerFDListener(@NonNull Executor executor, @NonNull FileDescriptor queryfd, @NonNull Callback<? super byte[]> answerCallback, @Nullable CancellationSignal cancellationSignal, @NonNull Object lock) { - Looper.getMainLooper().getQueue().addOnFileDescriptorEventListener( + final MessageQueue mainThreadMessageQueue = Looper.getMainLooper().getQueue(); + mainThreadMessageQueue.addOnFileDescriptorEventListener( queryfd, FD_EVENTS, (fd, events) -> { + // b/134310704 + // Unregister fd event listener before resNetworkResult is called to prevent + // race condition caused by fd reused. + // For example when querying v4 and v6, it's possible that the first query ends + // and the fd is closed before the second request starts, which might return + // the same fd for the second request. By that time, the looper must have + // unregistered the fd, otherwise another event listener can't be registered. + mainThreadMessageQueue.removeOnFileDescriptorEventListener(fd); + executor.execute(() -> { DnsResponse resp = null; ErrnoException exception = null; @@ -490,7 +501,11 @@ public final class DnsResolver { } answerCallback.onAnswer(resp.answerbuf, resp.rcode); }); - // Unregister this fd listener + + // The file descriptor has already been unregistered, so it does not really + // matter what is returned here. In spirit 0 (meaning "unregister this FD") + // is still the closest to what the looper needs to do. When returning 0, + // Looper knows to ignore the fd if it has already been unregistered. return 0; }); } diff --git a/core/java/android/net/NetworkStats.java b/core/java/android/net/NetworkStats.java index bb344e289657..e892b650bf40 100644 --- a/core/java/android/net/NetworkStats.java +++ b/core/java/android/net/NetworkStats.java @@ -18,7 +18,6 @@ package android.net; import static android.os.Process.CLAT_UID; -import android.annotation.NonNull; import android.annotation.UnsupportedAppUsage; import android.os.Parcel; import android.os.Parcelable; @@ -34,7 +33,6 @@ import libcore.util.EmptyArray; import java.io.CharArrayWriter; import java.io.PrintWriter; import java.util.Arrays; -import java.util.function.Predicate; import java.util.HashSet; import java.util.Map; import java.util.Objects; @@ -995,33 +993,23 @@ public class NetworkStats implements Parcelable { if (limitUid == UID_ALL && limitTag == TAG_ALL && limitIfaces == INTERFACES_ALL) { return; } - filter(e -> (limitUid == UID_ALL || limitUid == e.uid) - && (limitTag == TAG_ALL || limitTag == e.tag) - && (limitIfaces == INTERFACES_ALL - || ArrayUtils.contains(limitIfaces, e.iface))); - } - - /** - * Only keep entries with {@link #set} value less than {@link #SET_DEBUG_START}. - * - * <p>This mutates the original structure in place. - */ - public void filterDebugEntries() { - filter(e -> e.set < SET_DEBUG_START); - } - private void filter(Predicate<Entry> predicate) { Entry entry = new Entry(); int nextOutputEntry = 0; for (int i = 0; i < size; i++) { entry = getValues(i, entry); - if (predicate.test(entry)) { - if (nextOutputEntry != i) { - setValues(nextOutputEntry, entry); - } + final boolean matches = + (limitUid == UID_ALL || limitUid == entry.uid) + && (limitTag == TAG_ALL || limitTag == entry.tag) + && (limitIfaces == INTERFACES_ALL + || ArrayUtils.contains(limitIfaces, entry.iface)); + + if (matches) { + setValues(nextOutputEntry, entry); nextOutputEntry++; } } + size = nextOutputEntry; } @@ -1187,221 +1175,133 @@ public class NetworkStats implements Parcelable { /** * VPN accounting. Move some VPN's underlying traffic to other UIDs that use tun0 iface. * - * <p>This method should only be called on delta NetworkStats. Do not call this method on a - * snapshot {@link NetworkStats} object because the tunUid and/or the underlyingIface may change - * over time. + * This method should only be called on delta NetworkStats. Do not call this method on a + * snapshot {@link NetworkStats} object because the tunUid and/or the underlyingIface may + * change over time. + * + * This method performs adjustments for one active VPN package and one VPN iface at a time. * - * <p>This method performs adjustments for one active VPN package and one VPN iface at a time. + * It is possible for the VPN software to use multiple underlying networks. This method + * only migrates traffic for the primary underlying network. * * @param tunUid uid of the VPN application * @param tunIface iface of the vpn tunnel - * @param underlyingIfaces underlying network ifaces used by the VPN application + * @param underlyingIface the primary underlying network iface used by the VPN application + * @return true if it successfully adjusts the accounting for VPN, false otherwise */ - public void migrateTun(int tunUid, @NonNull String tunIface, - @NonNull String[] underlyingIfaces) { - // Combined usage by all apps using VPN. - final Entry tunIfaceTotal = new Entry(); - // Usage by VPN, grouped by its {@code underlyingIfaces}. - final Entry[] perInterfaceTotal = new Entry[underlyingIfaces.length]; - // Usage by VPN, summed across all its {@code underlyingIfaces}. - final Entry underlyingIfacesTotal = new Entry(); - - for (int i = 0; i < perInterfaceTotal.length; i++) { - perInterfaceTotal[i] = new Entry(); - } + public boolean migrateTun(int tunUid, String tunIface, String underlyingIface) { + Entry tunIfaceTotal = new Entry(); + Entry underlyingIfaceTotal = new Entry(); - tunAdjustmentInit(tunUid, tunIface, underlyingIfaces, tunIfaceTotal, perInterfaceTotal, - underlyingIfacesTotal); + tunAdjustmentInit(tunUid, tunIface, underlyingIface, tunIfaceTotal, underlyingIfaceTotal); - // If tunIface < underlyingIfacesTotal, it leaves the overhead traffic in the VPN app. - // If tunIface > underlyingIfacesTotal, the VPN app doesn't get credit for data compression. + // If tunIface < underlyingIface, it leaves the overhead traffic in the VPN app. + // If tunIface > underlyingIface, the VPN app doesn't get credit for data compression. // Negative stats should be avoided. - final Entry[] moved = - addTrafficToApplications(tunUid, tunIface, underlyingIfaces, tunIfaceTotal, - perInterfaceTotal, underlyingIfacesTotal); - deductTrafficFromVpnApp(tunUid, underlyingIfaces, moved); + Entry pool = tunGetPool(tunIfaceTotal, underlyingIfaceTotal); + if (pool.isEmpty()) { + return true; + } + Entry moved = + addTrafficToApplications(tunUid, tunIface, underlyingIface, tunIfaceTotal, pool); + deductTrafficFromVpnApp(tunUid, underlyingIface, moved); + + if (!moved.isEmpty()) { + Slog.wtf(TAG, "Failed to deduct underlying network traffic from VPN package. Moved=" + + moved); + return false; + } + return true; } /** * Initializes the data used by the migrateTun() method. * - * <p>This is the first pass iteration which does the following work: - * - * <ul> - * <li>Adds up all the traffic through the tunUid's underlyingIfaces (both foreground and - * background). - * <li>Adds up all the traffic through tun0 excluding traffic from the vpn app itself. - * </ul> - * - * @param tunUid uid of the VPN application - * @param tunIface iface of the vpn tunnel - * @param underlyingIfaces underlying network ifaces used by the VPN application - * @param tunIfaceTotal output parameter; combined data usage by all apps using VPN - * @param perInterfaceTotal output parameter; data usage by VPN app, grouped by its {@code - * underlyingIfaces} - * @param underlyingIfacesTotal output parameter; data usage by VPN, summed across all of its - * {@code underlyingIfaces} + * This is the first pass iteration which does the following work: + * (1) Adds up all the traffic through the tunUid's underlyingIface + * (both foreground and background). + * (2) Adds up all the traffic through tun0 excluding traffic from the vpn app itself. */ - private void tunAdjustmentInit(int tunUid, @NonNull String tunIface, - @NonNull String[] underlyingIfaces, @NonNull Entry tunIfaceTotal, - @NonNull Entry[] perInterfaceTotal, @NonNull Entry underlyingIfacesTotal) { - final Entry recycle = new Entry(); + private void tunAdjustmentInit(int tunUid, String tunIface, String underlyingIface, + Entry tunIfaceTotal, Entry underlyingIfaceTotal) { + Entry recycle = new Entry(); for (int i = 0; i < size; i++) { getValues(i, recycle); if (recycle.uid == UID_ALL) { throw new IllegalStateException( "Cannot adjust VPN accounting on an iface aggregated NetworkStats."); - } - if (recycle.set == SET_DBG_VPN_IN || recycle.set == SET_DBG_VPN_OUT) { + } if (recycle.set == SET_DBG_VPN_IN || recycle.set == SET_DBG_VPN_OUT) { throw new IllegalStateException( "Cannot adjust VPN accounting on a NetworkStats containing SET_DBG_VPN_*"); } - if (recycle.tag != TAG_NONE) { - // TODO(b/123666283): Take all tags for tunUid into account. - continue; + + if (recycle.uid == tunUid && recycle.tag == TAG_NONE + && Objects.equals(underlyingIface, recycle.iface)) { + underlyingIfaceTotal.add(recycle); } - if (recycle.uid == tunUid) { - // Add up traffic through tunUid's underlying interfaces. - for (int j = 0; j < underlyingIfaces.length; j++) { - if (Objects.equals(underlyingIfaces[j], recycle.iface)) { - perInterfaceTotal[j].add(recycle); - underlyingIfacesTotal.add(recycle); - break; - } - } - } else if (tunIface.equals(recycle.iface)) { + if (recycle.uid != tunUid && recycle.tag == TAG_NONE + && Objects.equals(tunIface, recycle.iface)) { // Add up all tunIface traffic excluding traffic from the vpn app itself. tunIfaceTotal.add(recycle); } } } - /** - * Distributes traffic across apps that are using given {@code tunIface}, and returns the total - * traffic that should be moved off of {@code tunUid} grouped by {@code underlyingIfaces}. - * - * @param tunUid uid of the VPN application - * @param tunIface iface of the vpn tunnel - * @param underlyingIfaces underlying network ifaces used by the VPN application - * @param tunIfaceTotal combined data usage across all apps using {@code tunIface} - * @param perInterfaceTotal data usage by VPN app, grouped by its {@code underlyingIfaces} - * @param underlyingIfacesTotal data usage by VPN, summed across all of its {@code - * underlyingIfaces} - */ - private Entry[] addTrafficToApplications(int tunUid, @NonNull String tunIface, - @NonNull String[] underlyingIfaces, @NonNull Entry tunIfaceTotal, - @NonNull Entry[] perInterfaceTotal, @NonNull Entry underlyingIfacesTotal) { - // Traffic that should be moved off of each underlying interface for tunUid (see - // deductTrafficFromVpnApp below). - final Entry[] moved = new Entry[underlyingIfaces.length]; - for (int i = 0; i < underlyingIfaces.length; i++) { - moved[i] = new Entry(); - } + private static Entry tunGetPool(Entry tunIfaceTotal, Entry underlyingIfaceTotal) { + Entry pool = new Entry(); + pool.rxBytes = Math.min(tunIfaceTotal.rxBytes, underlyingIfaceTotal.rxBytes); + pool.rxPackets = Math.min(tunIfaceTotal.rxPackets, underlyingIfaceTotal.rxPackets); + pool.txBytes = Math.min(tunIfaceTotal.txBytes, underlyingIfaceTotal.txBytes); + pool.txPackets = Math.min(tunIfaceTotal.txPackets, underlyingIfaceTotal.txPackets); + pool.operations = Math.min(tunIfaceTotal.operations, underlyingIfaceTotal.operations); + return pool; + } - final Entry tmpEntry = new Entry(); - final int origSize = size; - for (int i = 0; i < origSize; i++) { - if (!Objects.equals(iface[i], tunIface)) { - // Consider only entries that go onto the VPN interface. - continue; - } - if (uid[i] == tunUid) { - // Exclude VPN app from the redistribution, as it can choose to create packet - // streams by writing to itself. - continue; - } - tmpEntry.uid = uid[i]; - tmpEntry.tag = tag[i]; - tmpEntry.metered = metered[i]; - tmpEntry.roaming = roaming[i]; - tmpEntry.defaultNetwork = defaultNetwork[i]; - - // In a first pass, compute this entry's total share of data across all - // underlyingIfaces. This is computed on the basis of the share of this entry's usage - // over tunIface. - // TODO: Consider refactoring first pass into a separate helper method. - long totalRxBytes = 0; - if (tunIfaceTotal.rxBytes > 0) { - // Note - The multiplication below should not overflow since NetworkStatsService - // processes this every time device has transmitted/received amount equivalent to - // global threshold alert (~ 2MB) across all interfaces. - final long rxBytesAcrossUnderlyingIfaces = - underlyingIfacesTotal.rxBytes * rxBytes[i] / tunIfaceTotal.rxBytes; - // app must not be blamed for more than it consumed on tunIface - totalRxBytes = Math.min(rxBytes[i], rxBytesAcrossUnderlyingIfaces); - } - long totalRxPackets = 0; - if (tunIfaceTotal.rxPackets > 0) { - final long rxPacketsAcrossUnderlyingIfaces = - underlyingIfacesTotal.rxPackets * rxPackets[i] / tunIfaceTotal.rxPackets; - totalRxPackets = Math.min(rxPackets[i], rxPacketsAcrossUnderlyingIfaces); - } - long totalTxBytes = 0; - if (tunIfaceTotal.txBytes > 0) { - final long txBytesAcrossUnderlyingIfaces = - underlyingIfacesTotal.txBytes * txBytes[i] / tunIfaceTotal.txBytes; - totalTxBytes = Math.min(txBytes[i], txBytesAcrossUnderlyingIfaces); - } - long totalTxPackets = 0; - if (tunIfaceTotal.txPackets > 0) { - final long txPacketsAcrossUnderlyingIfaces = - underlyingIfacesTotal.txPackets * txPackets[i] / tunIfaceTotal.txPackets; - totalTxPackets = Math.min(txPackets[i], txPacketsAcrossUnderlyingIfaces); - } - long totalOperations = 0; - if (tunIfaceTotal.operations > 0) { - final long operationsAcrossUnderlyingIfaces = - underlyingIfacesTotal.operations * operations[i] / tunIfaceTotal.operations; - totalOperations = Math.min(operations[i], operationsAcrossUnderlyingIfaces); - } - // In a second pass, distribute these values across interfaces in the proportion that - // each interface represents of the total traffic of the underlying interfaces. - for (int j = 0; j < underlyingIfaces.length; j++) { - tmpEntry.iface = underlyingIfaces[j]; - tmpEntry.rxBytes = 0; - // Reset 'set' to correct value since it gets updated when adding debug info below. - tmpEntry.set = set[i]; - if (underlyingIfacesTotal.rxBytes > 0) { - tmpEntry.rxBytes = - totalRxBytes - * perInterfaceTotal[j].rxBytes - / underlyingIfacesTotal.rxBytes; + private Entry addTrafficToApplications(int tunUid, String tunIface, String underlyingIface, + Entry tunIfaceTotal, Entry pool) { + Entry moved = new Entry(); + Entry tmpEntry = new Entry(); + tmpEntry.iface = underlyingIface; + for (int i = 0; i < size; i++) { + // the vpn app is excluded from the redistribution but all moved traffic will be + // deducted from the vpn app (see deductTrafficFromVpnApp below). + if (Objects.equals(iface[i], tunIface) && uid[i] != tunUid) { + if (tunIfaceTotal.rxBytes > 0) { + tmpEntry.rxBytes = pool.rxBytes * rxBytes[i] / tunIfaceTotal.rxBytes; + } else { + tmpEntry.rxBytes = 0; } - tmpEntry.rxPackets = 0; - if (underlyingIfacesTotal.rxPackets > 0) { - tmpEntry.rxPackets = - totalRxPackets - * perInterfaceTotal[j].rxPackets - / underlyingIfacesTotal.rxPackets; + if (tunIfaceTotal.rxPackets > 0) { + tmpEntry.rxPackets = pool.rxPackets * rxPackets[i] / tunIfaceTotal.rxPackets; + } else { + tmpEntry.rxPackets = 0; } - tmpEntry.txBytes = 0; - if (underlyingIfacesTotal.txBytes > 0) { - tmpEntry.txBytes = - totalTxBytes - * perInterfaceTotal[j].txBytes - / underlyingIfacesTotal.txBytes; + if (tunIfaceTotal.txBytes > 0) { + tmpEntry.txBytes = pool.txBytes * txBytes[i] / tunIfaceTotal.txBytes; + } else { + tmpEntry.txBytes = 0; } - tmpEntry.txPackets = 0; - if (underlyingIfacesTotal.txPackets > 0) { - tmpEntry.txPackets = - totalTxPackets - * perInterfaceTotal[j].txPackets - / underlyingIfacesTotal.txPackets; + if (tunIfaceTotal.txPackets > 0) { + tmpEntry.txPackets = pool.txPackets * txPackets[i] / tunIfaceTotal.txPackets; + } else { + tmpEntry.txPackets = 0; } - tmpEntry.operations = 0; - if (underlyingIfacesTotal.operations > 0) { + if (tunIfaceTotal.operations > 0) { tmpEntry.operations = - totalOperations - * perInterfaceTotal[j].operations - / underlyingIfacesTotal.operations; + pool.operations * operations[i] / tunIfaceTotal.operations; + } else { + tmpEntry.operations = 0; } - // tmpEntry now contains the migrated data of the i-th entry for the j-th underlying - // interface. Add that data usage to this object. + tmpEntry.uid = uid[i]; + tmpEntry.tag = tag[i]; + tmpEntry.set = set[i]; + tmpEntry.metered = metered[i]; + tmpEntry.roaming = roaming[i]; + tmpEntry.defaultNetwork = defaultNetwork[i]; combineValues(tmpEntry); if (tag[i] == TAG_NONE) { - // Add the migrated data to moved so it is deducted from the VPN app later. - moved[j].add(tmpEntry); + moved.add(tmpEntry); // Add debug info tmpEntry.set = SET_DBG_VPN_IN; combineValues(tmpEntry); @@ -1411,45 +1311,38 @@ public class NetworkStats implements Parcelable { return moved; } - private void deductTrafficFromVpnApp( - int tunUid, - @NonNull String[] underlyingIfaces, - @NonNull Entry[] moved) { - for (int i = 0; i < underlyingIfaces.length; i++) { - moved[i].uid = tunUid; - // Add debug info - moved[i].set = SET_DBG_VPN_OUT; - moved[i].tag = TAG_NONE; - moved[i].iface = underlyingIfaces[i]; - moved[i].metered = METERED_ALL; - moved[i].roaming = ROAMING_ALL; - moved[i].defaultNetwork = DEFAULT_NETWORK_ALL; - combineValues(moved[i]); - - // Caveat: if the vpn software uses tag, the total tagged traffic may be greater than - // the TAG_NONE traffic. - // - // Relies on the fact that the underlying traffic only has state ROAMING_NO and - // METERED_NO, which should be the case as it comes directly from the /proc file. - // We only blend in the roaming data after applying these adjustments, by checking the - // NetworkIdentity of the underlying iface. - final int idxVpnBackground = findIndex(underlyingIfaces[i], tunUid, SET_DEFAULT, - TAG_NONE, METERED_NO, ROAMING_NO, DEFAULT_NETWORK_NO); - if (idxVpnBackground != -1) { - // Note - tunSubtract also updates moved[i]; whatever traffic that's left is removed - // from foreground usage. - tunSubtract(idxVpnBackground, this, moved[i]); - } + private void deductTrafficFromVpnApp(int tunUid, String underlyingIface, Entry moved) { + // Add debug info + moved.uid = tunUid; + moved.set = SET_DBG_VPN_OUT; + moved.tag = TAG_NONE; + moved.iface = underlyingIface; + moved.metered = METERED_ALL; + moved.roaming = ROAMING_ALL; + moved.defaultNetwork = DEFAULT_NETWORK_ALL; + combineValues(moved); + + // Caveat: if the vpn software uses tag, the total tagged traffic may be greater than + // the TAG_NONE traffic. + // + // Relies on the fact that the underlying traffic only has state ROAMING_NO and METERED_NO, + // which should be the case as it comes directly from the /proc file. We only blend in the + // roaming data after applying these adjustments, by checking the NetworkIdentity of the + // underlying iface. + int idxVpnBackground = findIndex(underlyingIface, tunUid, SET_DEFAULT, TAG_NONE, + METERED_NO, ROAMING_NO, DEFAULT_NETWORK_NO); + if (idxVpnBackground != -1) { + tunSubtract(idxVpnBackground, this, moved); + } - final int idxVpnForeground = findIndex(underlyingIfaces[i], tunUid, SET_FOREGROUND, - TAG_NONE, METERED_NO, ROAMING_NO, DEFAULT_NETWORK_NO); - if (idxVpnForeground != -1) { - tunSubtract(idxVpnForeground, this, moved[i]); - } + int idxVpnForeground = findIndex(underlyingIface, tunUid, SET_FOREGROUND, TAG_NONE, + METERED_NO, ROAMING_NO, DEFAULT_NETWORK_NO); + if (idxVpnForeground != -1) { + tunSubtract(idxVpnForeground, this, moved); } } - private static void tunSubtract(int i, @NonNull NetworkStats left, @NonNull Entry right) { + private static void tunSubtract(int i, NetworkStats left, Entry right) { long rxBytes = Math.min(left.rxBytes[i], right.rxBytes); left.rxBytes[i] -= rxBytes; right.rxBytes -= rxBytes; diff --git a/core/java/android/net/SocketKeepalive.java b/core/java/android/net/SocketKeepalive.java index 46eddde968a0..ec73866a647d 100644 --- a/core/java/android/net/SocketKeepalive.java +++ b/core/java/android/net/SocketKeepalive.java @@ -44,9 +44,11 @@ import java.util.concurrent.Executor; * {@link SocketKeepalive.Callback#onStopped} if the operation was successful or * {@link SocketKeepalive.Callback#onError} if an error occurred. * - * The device SHOULD support keepalive offload. If it does not, it MUST reply with + * For cellular, the device MUST support at least 1 keepalive slot. + * + * For WiFi, the device SHOULD support keepalive offload. If it does not, it MUST reply with * {@link SocketKeepalive.Callback#onError} with {@code ERROR_UNSUPPORTED} to any keepalive offload - * request. If it does, it MUST support at least 3 concurrent keepalive slots per transport. + * request. If it does, it MUST support at least 3 concurrent keepalive slots. */ public abstract class SocketKeepalive implements AutoCloseable { static final String TAG = "SocketKeepalive"; diff --git a/core/java/android/net/util/KeepaliveUtils.java b/core/java/android/net/util/KeepaliveUtils.java index 569fed1fc994..bfc4563fbf8f 100644 --- a/core/java/android/net/util/KeepaliveUtils.java +++ b/core/java/android/net/util/KeepaliveUtils.java @@ -34,9 +34,6 @@ public final class KeepaliveUtils { public static final String TAG = "KeepaliveUtils"; - // Minimum supported keepalive count per transport if the network supports keepalive. - public static final int MIN_SUPPORTED_KEEPALIVE_COUNT = 3; - public static class KeepaliveDeviceConfigurationException extends AndroidRuntimeException { public KeepaliveDeviceConfigurationException(final String msg) { super(msg); @@ -84,10 +81,7 @@ public final class KeepaliveUtils { throw new KeepaliveDeviceConfigurationException("Invalid transport " + transport); } - // Customized values should be either 0 to indicate the network doesn't support - // keepalive offload, or a positive value that is at least - // MIN_SUPPORTED_KEEPALIVE_COUNT if supported. - if (supported != 0 && supported < MIN_SUPPORTED_KEEPALIVE_COUNT) { + if (supported < 0) { throw new KeepaliveDeviceConfigurationException( "Invalid supported count " + supported + " for " + NetworkCapabilities.transportNameOf(transport)); diff --git a/core/java/android/os/ExternalVibration.java b/core/java/android/os/ExternalVibration.java index b93bef8b33ef..37ca868598f5 100644 --- a/core/java/android/os/ExternalVibration.java +++ b/core/java/android/os/ExternalVibration.java @@ -114,6 +114,24 @@ public class ExternalVibration implements Parcelable { return true; } + /** + * Links a recipient to death against this external vibration token + */ + public void linkToDeath(IBinder.DeathRecipient recipient) { + try { + mToken.linkToDeath(recipient, 0); + } catch (RemoteException e) { + return; + } + } + + /** + * Unlinks a recipient to death against this external vibration token + */ + public void unlinkToDeath(IBinder.DeathRecipient recipient) { + mToken.unlinkToDeath(recipient, 0); + } + @Override public boolean equals(Object o) { if (o == null || !(o instanceof ExternalVibration)) { diff --git a/core/java/android/os/GraphicsEnvironment.java b/core/java/android/os/GraphicsEnvironment.java index 24a147783669..ce1942cc6d91 100644 --- a/core/java/android/os/GraphicsEnvironment.java +++ b/core/java/android/os/GraphicsEnvironment.java @@ -33,11 +33,13 @@ import android.widget.Toast; import dalvik.system.VMRuntime; +import java.io.BufferedReader; import java.io.File; import java.io.FileDescriptor; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; +import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; @@ -62,6 +64,7 @@ public class GraphicsEnvironment { private static final String SYSTEM_DRIVER_VERSION_NAME = ""; private static final long SYSTEM_DRIVER_VERSION_CODE = 0; private static final String PROPERTY_GFX_DRIVER = "ro.gfx.driver.0"; + private static final String PROPERTY_GFX_DRIVER_PRERELEASE = "ro.gfx.driver.1"; private static final String PROPERTY_GFX_DRIVER_BUILD_TIME = "ro.gfx.driver_build_time"; private static final String METADATA_DRIVER_BUILD_TIME = "com.android.gamedriver.build_time"; private static final String ANGLE_RULES_FILE = "a4a_rules.json"; @@ -71,16 +74,19 @@ public class GraphicsEnvironment { "android.app.action.ANGLE_FOR_ANDROID_TOAST_MESSAGE"; private static final String INTENT_KEY_A4A_TOAST_MESSAGE = "A4A Toast Message"; private static final String GAME_DRIVER_WHITELIST_ALL = "*"; + private static final String GAME_DRIVER_SPHAL_LIBRARIES_FILENAME = "sphal_libraries.txt"; private static final int VULKAN_1_0 = 0x00400000; private static final int VULKAN_1_1 = 0x00401000; // GAME_DRIVER_ALL_APPS // 0: Default (Invalid values fallback to default as well) // 1: All apps use Game Driver - // 2: All apps use system graphics driver + // 2: All apps use Prerelease Driver + // 3: All apps use system graphics driver private static final int GAME_DRIVER_GLOBAL_OPT_IN_DEFAULT = 0; - private static final int GAME_DRIVER_GLOBAL_OPT_IN_ALL = 1; - private static final int GAME_DRIVER_GLOBAL_OPT_IN_NONE = 2; + private static final int GAME_DRIVER_GLOBAL_OPT_IN_GAME_DRIVER = 1; + private static final int GAME_DRIVER_GLOBAL_OPT_IN_PRERELEASE_DRIVER = 2; + private static final int GAME_DRIVER_GLOBAL_OPT_IN_OFF = 3; private ClassLoader mClassLoader; private String mLayerPath; @@ -114,65 +120,6 @@ public class GraphicsEnvironment { public static native void hintActivityLaunch(); /** - * Allow to query whether an application will use Game Driver. - */ - public static boolean shouldUseGameDriver(Context context, Bundle coreSettings, - ApplicationInfo applicationInfo) { - final String driverPackageName = SystemProperties.get(PROPERTY_GFX_DRIVER); - if (driverPackageName == null || driverPackageName.isEmpty()) { - return false; - } - - // To minimize risk of driver updates crippling the device beyond user repair, never use an - // updated driver for privileged or non-updated system apps. Presumably pre-installed apps - // were tested thoroughly with the pre-installed driver. - if (applicationInfo.isPrivilegedApp() || (applicationInfo.isSystemApp() - && !applicationInfo.isUpdatedSystemApp())) { - if (DEBUG) Log.v(TAG, "ignoring driver package for privileged/non-updated system app"); - return false; - } - final ContentResolver contentResolver = context.getContentResolver(); - final String packageName = applicationInfo.packageName; - final int globalOptIn; - if (coreSettings != null) { - globalOptIn = coreSettings.getInt(Settings.Global.GAME_DRIVER_ALL_APPS, 0); - } else { - globalOptIn = Settings.Global.getInt(contentResolver, - Settings.Global.GAME_DRIVER_ALL_APPS, 0); - } - if (globalOptIn == GAME_DRIVER_GLOBAL_OPT_IN_ALL) { - return true; - } - if (globalOptIn == GAME_DRIVER_GLOBAL_OPT_IN_NONE) { - return false; - } - - // GAME_DRIVER_OPT_OUT_APPS has higher priority than GAME_DRIVER_OPT_IN_APPS - if (getGlobalSettingsString(contentResolver, coreSettings, - Settings.Global.GAME_DRIVER_OPT_OUT_APPS).contains(packageName)) { - return false; - } - final boolean isOptIn = getGlobalSettingsString(contentResolver, coreSettings, - Settings.Global.GAME_DRIVER_OPT_IN_APPS).contains(packageName); - final List<String> whitelist = getGlobalSettingsString(contentResolver, coreSettings, - Settings.Global.GAME_DRIVER_WHITELIST); - if (!isOptIn && whitelist.indexOf(GAME_DRIVER_WHITELIST_ALL) != 0 - && !whitelist.contains(packageName)) { - return false; - } - - // If the application is not opted-in, then check whether it's on the blacklist, - // terminate early if it's on the blacklist and fallback to system driver. - if (!isOptIn - && getGlobalSettingsString(contentResolver, coreSettings, - Settings.Global.GAME_DRIVER_BLACKLIST) - .contains(packageName)) { - return false; - } - return true; - } - - /** * Query to determine if ANGLE should be used */ public static boolean shouldUseAngle(Context context, Bundle coreSettings, @@ -742,12 +689,102 @@ public class GraphicsEnvironment { } /** + * Return the driver package name to use. Return null for system driver. + */ + private static String chooseDriverInternal(Context context, Bundle coreSettings) { + final String gameDriver = SystemProperties.get(PROPERTY_GFX_DRIVER); + final boolean hasGameDriver = gameDriver != null && !gameDriver.isEmpty(); + + final String prereleaseDriver = SystemProperties.get(PROPERTY_GFX_DRIVER_PRERELEASE); + final boolean hasPrereleaseDriver = prereleaseDriver != null && !prereleaseDriver.isEmpty(); + + if (!hasGameDriver && !hasPrereleaseDriver) { + if (DEBUG) Log.v(TAG, "Neither Game Driver nor prerelease driver is supported."); + return null; + } + + // To minimize risk of driver updates crippling the device beyond user repair, never use an + // updated driver for privileged or non-updated system apps. Presumably pre-installed apps + // were tested thoroughly with the pre-installed driver. + final ApplicationInfo ai = context.getApplicationInfo(); + if (ai.isPrivilegedApp() || (ai.isSystemApp() && !ai.isUpdatedSystemApp())) { + if (DEBUG) Log.v(TAG, "Ignoring driver package for privileged/non-updated system app."); + return null; + } + + // Priority for Game Driver settings global on confliction (Higher priority comes first): + // 1. GAME_DRIVER_ALL_APPS + // 2. GAME_DRIVER_OPT_OUT_APPS + // 3. GAME_DRIVER_PRERELEASE_OPT_IN_APPS + // 4. GAME_DRIVER_OPT_IN_APPS + // 5. GAME_DRIVER_BLACKLIST + // 6. GAME_DRIVER_WHITELIST + switch (coreSettings.getInt(Settings.Global.GAME_DRIVER_ALL_APPS, 0)) { + case GAME_DRIVER_GLOBAL_OPT_IN_OFF: + if (DEBUG) Log.v(TAG, "Game Driver is turned off on this device."); + return null; + case GAME_DRIVER_GLOBAL_OPT_IN_GAME_DRIVER: + if (DEBUG) Log.v(TAG, "All apps opt in to use Game Driver."); + return hasGameDriver ? gameDriver : null; + case GAME_DRIVER_GLOBAL_OPT_IN_PRERELEASE_DRIVER: + if (DEBUG) Log.v(TAG, "All apps opt in to use prerelease driver."); + return hasPrereleaseDriver ? prereleaseDriver : null; + case GAME_DRIVER_GLOBAL_OPT_IN_DEFAULT: + default: + break; + } + + final String appPackageName = ai.packageName; + if (getGlobalSettingsString(null, coreSettings, Settings.Global.GAME_DRIVER_OPT_OUT_APPS) + .contains(appPackageName)) { + if (DEBUG) Log.v(TAG, "App opts out for Game Driver."); + return null; + } + + if (getGlobalSettingsString( + null, coreSettings, Settings.Global.GAME_DRIVER_PRERELEASE_OPT_IN_APPS) + .contains(appPackageName)) { + if (DEBUG) Log.v(TAG, "App opts in for prerelease Game Driver."); + return hasPrereleaseDriver ? prereleaseDriver : null; + } + + // Early return here since the rest logic is only for Game Driver. + if (!hasGameDriver) { + if (DEBUG) Log.v(TAG, "Game Driver is not supported on the device."); + return null; + } + + final boolean isOptIn = + getGlobalSettingsString(null, coreSettings, Settings.Global.GAME_DRIVER_OPT_IN_APPS) + .contains(appPackageName); + final List<String> whitelist = + getGlobalSettingsString(null, coreSettings, Settings.Global.GAME_DRIVER_WHITELIST); + if (!isOptIn && whitelist.indexOf(GAME_DRIVER_WHITELIST_ALL) != 0 + && !whitelist.contains(appPackageName)) { + if (DEBUG) Log.v(TAG, "App is not on the whitelist for Game Driver."); + return null; + } + + // If the application is not opted-in, then check whether it's on the blacklist, + // terminate early if it's on the blacklist and fallback to system driver. + if (!isOptIn + && getGlobalSettingsString( + null, coreSettings, Settings.Global.GAME_DRIVER_BLACKLIST) + .contains(appPackageName)) { + if (DEBUG) Log.v(TAG, "App is on the blacklist for Game Driver."); + return null; + } + + return gameDriver; + } + + /** * Choose whether the current process should use the builtin or an updated driver. */ private static boolean chooseDriver( Context context, Bundle coreSettings, PackageManager pm, String packageName) { - final String driverPackageName = SystemProperties.get(PROPERTY_GFX_DRIVER); - if (driverPackageName == null || driverPackageName.isEmpty()) { + final String driverPackageName = chooseDriverInternal(context, coreSettings); + if (driverPackageName == null) { return false; } @@ -770,10 +807,6 @@ public class GraphicsEnvironment { return false; } - if (!shouldUseGameDriver(context, coreSettings, context.getApplicationInfo())) { - return false; - } - final String abi = chooseAbi(driverAppInfo); if (abi == null) { if (DEBUG) { @@ -792,10 +825,7 @@ public class GraphicsEnvironment { .append("!/lib/") .append(abi); final String paths = sb.toString(); - - final String sphalLibraries = - coreSettings.getString(Settings.Global.GAME_DRIVER_SPHAL_LIBRARIES); - + final String sphalLibraries = getSphalLibraries(context, driverPackageName); if (DEBUG) { Log.v(TAG, "gfx driver package search path: " + paths @@ -832,6 +862,29 @@ public class GraphicsEnvironment { return null; } + private static String getSphalLibraries(Context context, String driverPackageName) { + try { + final Context driverContext = + context.createPackageContext(driverPackageName, Context.CONTEXT_RESTRICTED); + final BufferedReader reader = new BufferedReader(new InputStreamReader( + driverContext.getAssets().open(GAME_DRIVER_SPHAL_LIBRARIES_FILENAME))); + final ArrayList<String> assetStrings = new ArrayList<>(); + for (String assetString; (assetString = reader.readLine()) != null;) { + assetStrings.add(assetString); + } + return String.join(":", assetStrings); + } catch (PackageManager.NameNotFoundException e) { + if (DEBUG) { + Log.w(TAG, "Driver package '" + driverPackageName + "' not installed"); + } + } catch (IOException e) { + if (DEBUG) { + Log.w(TAG, "Failed to load '" + GAME_DRIVER_SPHAL_LIBRARIES_FILENAME + "'"); + } + } + return ""; + } + private static native int getCanLoadSystemLibraries(); private static native void setLayerPaths(ClassLoader classLoader, String layerPaths); private static native void setDebugLayers(String layers); diff --git a/core/java/android/os/Process.java b/core/java/android/os/Process.java index e50ab6cfc017..74c89d6898e5 100644 --- a/core/java/android/os/Process.java +++ b/core/java/android/os/Process.java @@ -511,7 +511,6 @@ public class Process { * @param appDataDir null-ok the data directory of the app. * @param invokeWith null-ok the command to invoke with. * @param packageName null-ok the name of the package this process belongs to. - * @param useSystemGraphicsDriver whether the process uses system graphics driver. * * @param zygoteArgs Additional arguments to supply to the zygote process. * @return An object that describes the result of the attempt to start the process. @@ -531,13 +530,11 @@ public class Process { @Nullable String appDataDir, @Nullable String invokeWith, @Nullable String packageName, - boolean useSystemGraphicsDriver, @Nullable String[] zygoteArgs) { return ZYGOTE_PROCESS.start(processClass, niceName, uid, gid, gids, runtimeFlags, mountExternal, targetSdkVersion, seInfo, abi, instructionSet, appDataDir, invokeWith, packageName, - /*useUsapPool=*/ true, - useSystemGraphicsDriver, zygoteArgs); + /*useUsapPool=*/ true, zygoteArgs); } /** @hide */ @@ -553,13 +550,11 @@ public class Process { @Nullable String appDataDir, @Nullable String invokeWith, @Nullable String packageName, - boolean useSystemGraphicsDriver, @Nullable String[] zygoteArgs) { return WebViewZygote.getProcess().start(processClass, niceName, uid, gid, gids, runtimeFlags, mountExternal, targetSdkVersion, seInfo, abi, instructionSet, appDataDir, invokeWith, packageName, - /*useUsapPool=*/ false, - useSystemGraphicsDriver, zygoteArgs); + /*useUsapPool=*/ false, zygoteArgs); } /** diff --git a/core/java/android/os/RecoverySystem.java b/core/java/android/os/RecoverySystem.java index 1b41694e7d48..53298d8d8aed 100644 --- a/core/java/android/os/RecoverySystem.java +++ b/core/java/android/os/RecoverySystem.java @@ -30,7 +30,6 @@ import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.pm.PackageManager; -import android.os.storage.IStorageManager; import android.provider.Settings; import android.telephony.euicc.EuiccManager; import android.text.TextUtils; @@ -39,8 +38,6 @@ import android.util.Log; import android.view.Display; import android.view.WindowManager; -import com.android.internal.content.PackageHelper; - import libcore.io.Streams; import java.io.ByteArrayInputStream; @@ -858,18 +855,31 @@ public class RecoverySystem { public static void rebootPromptAndWipeUserData(Context context, String reason) throws IOException { boolean checkpointing = false; + boolean needReboot = false; + IVold vold = null; + try { + vold = IVold.Stub.asInterface(ServiceManager.checkService("vold")); + if (vold != null) { + checkpointing = vold.needsCheckpoint(); + } else { + Log.w(TAG, "Failed to get vold"); + } + } catch (Exception e) { + Log.w(TAG, "Failed to check for checkpointing"); + } // If we are running in checkpointing mode, we should not prompt a wipe. // Checkpointing may save us. If it doesn't, we will wind up here again. - try { - IStorageManager storageManager = PackageHelper.getStorageManager(); - if (storageManager.needsCheckpoint()) { - Log.i(TAG, "Rescue Party requested wipe. Aborting update instead."); - storageManager.abortChanges("rescueparty", false); - return; + if (checkpointing) { + try { + vold.abortChanges("rescueparty", false); + Log.i(TAG, "Rescue Party requested wipe. Aborting update"); + } catch (Exception e) { + Log.i(TAG, "Rescue Party requested wipe. Rebooting instead."); + PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE); + pm.reboot("rescueparty"); } - } catch (RemoteException e) { - Log.i(TAG, "Failed to handle with checkpointing. Continuing with wipe."); + return; } String reasonArg = null; diff --git a/core/java/android/os/UserHandle.java b/core/java/android/os/UserHandle.java index b1212343b279..d70ba9921bfd 100644 --- a/core/java/android/os/UserHandle.java +++ b/core/java/android/os/UserHandle.java @@ -68,6 +68,7 @@ public final class UserHandle implements Parcelable { public static final @NonNull UserHandle CURRENT_OR_SELF = new UserHandle(USER_CURRENT_OR_SELF); /** @hide An undefined user id */ + @UnsupportedAppUsage public static final @UserIdInt int USER_NULL = -10000; /** diff --git a/core/java/android/os/ZygoteProcess.java b/core/java/android/os/ZygoteProcess.java index d42478e5031d..09e09e9f8a13 100644 --- a/core/java/android/os/ZygoteProcess.java +++ b/core/java/android/os/ZygoteProcess.java @@ -81,7 +81,7 @@ public class ZygoteProcess { * not be used if the devices has a DeviceConfig profile pushed to it that contains a value for * this key. */ - private static final String USAP_POOL_ENABLED_DEFAULT = "true"; + private static final String USAP_POOL_ENABLED_DEFAULT = "false"; /** * The name of the socket used to communicate with the primary zygote. @@ -307,7 +307,6 @@ public class ZygoteProcess { * @param invokeWith null-ok the command to invoke with. * @param packageName null-ok the name of the package this process belongs to. * @param zygoteArgs Additional arguments to supply to the zygote process. - * @param useSystemGraphicsDriver whether the process uses system graphics driver. * * @return An object that describes the result of the attempt to start the process. * @throws RuntimeException on fatal start failure @@ -324,7 +323,6 @@ public class ZygoteProcess { @Nullable String invokeWith, @Nullable String packageName, boolean useUsapPool, - boolean useSystemGraphicsDriver, @Nullable String[] zygoteArgs) { // TODO (chriswailes): Is there a better place to check this value? if (fetchUsapPoolEnabledPropWithMinInterval()) { @@ -335,7 +333,7 @@ public class ZygoteProcess { return startViaZygote(processClass, niceName, uid, gid, gids, runtimeFlags, mountExternal, targetSdkVersion, seInfo, abi, instructionSet, appDataDir, invokeWith, /*startChildZygote=*/ false, - packageName, useUsapPool, useSystemGraphicsDriver, zygoteArgs); + packageName, useUsapPool, zygoteArgs); } catch (ZygoteStartFailedEx ex) { Log.e(LOG_TAG, "Starting VM process through Zygote failed"); @@ -554,7 +552,6 @@ public class ZygoteProcess { boolean startChildZygote, @Nullable String packageName, boolean useUsapPool, - boolean useSystemGraphicsDriver, @Nullable String[] extraArgs) throws ZygoteStartFailedEx { ArrayList<String> argsForZygote = new ArrayList<>(); @@ -636,7 +633,7 @@ public class ZygoteProcess { // The USAP pool can not be used if the application will not use the systems graphics // driver. If that driver is requested use the Zygote application start path. return zygoteSendArgsAndGetResult(openZygoteSocketIfNeeded(abi), - useUsapPool && useSystemGraphicsDriver, + useUsapPool, argsForZygote); } } @@ -1147,8 +1144,7 @@ public class ZygoteProcess { gids, runtimeFlags, 0 /* mountExternal */, 0 /* targetSdkVersion */, seInfo, abi, instructionSet, null /* appDataDir */, null /* invokeWith */, true /* startChildZygote */, null /* packageName */, - false /* useUsapPool */, false /*useSystemGraphicsDriver*/, - extraArgs); + false /* useUsapPool */, extraArgs); } catch (ZygoteStartFailedEx ex) { throw new RuntimeException("Starting child-zygote through Zygote failed", ex); } diff --git a/core/java/android/permission/PermissionControllerManager.java b/core/java/android/permission/PermissionControllerManager.java index 3ab5c5156c14..5b2e3a209006 100644 --- a/core/java/android/permission/PermissionControllerManager.java +++ b/core/java/android/permission/PermissionControllerManager.java @@ -808,6 +808,9 @@ public final class PermissionControllerManager { @Override public void run() { + if (mBackupReader.getStatus() != AsyncTask.Status.PENDING) { + return; + } mBackupReader.execute(); ParcelFileDescriptor remotePipe = mBackupReader.getRemotePipe(); @@ -919,6 +922,9 @@ public final class PermissionControllerManager { @Override public void run(@NonNull IPermissionController service) { + if (mBackupSender.getStatus() != AsyncTask.Status.PENDING) { + return; + } mBackupSender.execute(mBackup); ParcelFileDescriptor remotePipe = mBackupSender.getRemotePipe(); diff --git a/core/java/android/permission/PermissionManager.java b/core/java/android/permission/PermissionManager.java index e15659db90a8..182a2ffa5221 100644 --- a/core/java/android/permission/PermissionManager.java +++ b/core/java/android/permission/PermissionManager.java @@ -39,6 +39,7 @@ import java.util.Objects; * * @hide */ +@TestApi @SystemApi @SystemService(Context.PERMISSION_SERVICE) public final class PermissionManager { @@ -140,12 +141,13 @@ public final class PermissionManager { if (o == null || getClass() != o.getClass()) return false; SplitPermissionInfo that = (SplitPermissionInfo) o; return mTargetSdk == that.mTargetSdk - && Objects.equals(mSplitPerm, that.mSplitPerm); + && mSplitPerm.equals(that.mSplitPerm) + && mNewPerms.equals(that.mNewPerms); } @Override public int hashCode() { - return Objects.hash(mSplitPerm, mTargetSdk); + return Objects.hash(mSplitPerm, mNewPerms, mTargetSdk); } /** diff --git a/core/java/android/provider/DeviceConfig.java b/core/java/android/provider/DeviceConfig.java index 9a11104b30c1..920eb4b51775 100644 --- a/core/java/android/provider/DeviceConfig.java +++ b/core/java/android/provider/DeviceConfig.java @@ -48,6 +48,8 @@ import java.util.concurrent.Executor; /** * Device level configuration parameters which can be tuned by a separate configuration service. + * Namespaces that end in "_native" such as {@link #NAMESPACE_NETD_NATIVE} are intended to be used + * by native code and should be pushed to system properties to make them accessible. * * @hide */ @@ -283,6 +285,15 @@ public final class DeviceConfig { public static final String NAMESPACE_SETTINGS_UI = "settings_ui"; /** + * Namespace for window manager related features. The names to access the properties in this + * namespace should be defined in {@link WindowManager}. + * + * @hide + */ + @TestApi + public static final String NAMESPACE_WINDOW_MANAGER = "android:window_manager"; + + /** * List of namespaces which can be read without READ_DEVICE_CONFIG permission * * @hide @@ -299,6 +310,23 @@ public final class DeviceConfig { @TestApi public static final String NAMESPACE_PRIVACY = "privacy"; + /** + * Interface for accessing keys belonging to {@link #NAMESPACE_WINDOW_MANAGER}. + * @hide + */ + @TestApi + public interface WindowManager { + + /** + * Key for accessing the system gesture exclusion limit (an integer in dp). + * + * @see android.provider.DeviceConfig#NAMESPACE_WINDOW_MANAGER + * @hide + */ + @TestApi + String KEY_SYSTEM_GESTURE_EXCLUSION_LIMIT_DP = "system_gesture_exclusion_limit_dp"; + } + private static final Object sLock = new Object(); @GuardedBy("sLock") private static ArrayMap<OnPropertyChangedListener, Pair<String, Executor>> sSingleListeners = diff --git a/core/java/android/provider/OWNERS b/core/java/android/provider/OWNERS new file mode 100644 index 000000000000..8b7d6ad851f9 --- /dev/null +++ b/core/java/android/provider/OWNERS @@ -0,0 +1,4 @@ +per-file DeviceConfig.java = svetoslavganov@google.com +per-file DeviceConfig.java = hackbod@google.com + + diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java index 5432e33bacf8..383d8dbce791 100644 --- a/core/java/android/provider/Settings.java +++ b/core/java/android/provider/Settings.java @@ -12665,6 +12665,14 @@ public final class Settings { public static final String GAME_DRIVER_OPT_IN_APPS = "game_driver_opt_in_apps"; /** + * List of Apps selected to use prerelease Game Driver. + * i.e. <pkg1>,<pkg2>,...,<pkgN> + * @hide + */ + public static final String GAME_DRIVER_PRERELEASE_OPT_IN_APPS = + "game_driver_prerelease_opt_in_apps"; + + /** * List of Apps selected not to use Game Driver. * i.e. <pkg1>,<pkg2>,...,<pkgN> * @hide @@ -13569,39 +13577,6 @@ public final class Settings { "location_global_kill_switch"; /** - * If set to 1, the device identifier check will be relaxed to the previous READ_PHONE_STATE - * permission check for 3P apps. - * - * STOPSHIP: Remove this once we ship with the new device identifier check enabled. - * - * @hide - */ - public static final String PRIVILEGED_DEVICE_IDENTIFIER_3P_CHECK_RELAXED = - "privileged_device_identifier_3p_check_relaxed"; - - /** - * If set to 1, the device identifier check will be relaxed to the previous READ_PHONE_STATE - * permission check for preloaded non-privileged apps. - * - * STOPSHIP: Remove this once we ship with the new device identifier check enabled. - * - * @hide - */ - public static final String PRIVILEGED_DEVICE_IDENTIFIER_NON_PRIV_CHECK_RELAXED = - "privileged_device_identifier_non_priv_check_relaxed"; - - /** - * If set to 1, the device identifier check will be relaxed to the previous READ_PHONE_STATE - * permission check for preloaded privileged apps. - * - * STOPSHIP: Remove this once we ship with the new device identifier check enabled. - * - * @hide - */ - public static final String PRIVILEGED_DEVICE_IDENTIFIER_PRIV_CHECK_RELAXED = - "privileged_device_identifier_priv_check_relaxed"; - - /** * If set to 1, SettingsProvider's restoreAnyVersion="true" attribute will be ignored * and restoring to lower version of platform API will be skipped. * diff --git a/core/java/android/service/notification/ConditionProviderService.java b/core/java/android/service/notification/ConditionProviderService.java index 45480cb5acb7..7d3b13bec2f6 100644 --- a/core/java/android/service/notification/ConditionProviderService.java +++ b/core/java/android/service/notification/ConditionProviderService.java @@ -77,6 +77,7 @@ public abstract class ConditionProviderService extends Service { private Provider mProvider; private INotificationManager mNoMan; + boolean mIsConnected; /** * The {@link Intent} that must be declared as handled by the service. @@ -179,7 +180,7 @@ public abstract class ConditionProviderService extends Service { try { noMan.requestUnbindProvider(mProvider); // Disable future messages. - mProvider = null; + mIsConnected = false; } catch (RemoteException ex) { throw ex.rethrowFromSystemServer(); } @@ -233,16 +234,16 @@ public abstract class ConditionProviderService extends Service { */ @TestApi public boolean isBound() { - if (mProvider == null) { + if (!mIsConnected) { Log.w(TAG, "Condition provider service not yet bound."); - return false; } - return true; + return mIsConnected; } private final class Provider extends IConditionProvider.Stub { @Override public void onConnected() { + mIsConnected = true; mHandler.obtainMessage(H.ON_CONNECTED).sendToTarget(); } @@ -265,7 +266,7 @@ public abstract class ConditionProviderService extends Service { @Override public void handleMessage(Message msg) { String name = null; - if (!isBound()) { + if (!mIsConnected) { return; } try { diff --git a/core/java/android/service/notification/NotificationListenerService.java b/core/java/android/service/notification/NotificationListenerService.java index 3ec21e39e514..b44c9d59ebe5 100644 --- a/core/java/android/service/notification/NotificationListenerService.java +++ b/core/java/android/service/notification/NotificationListenerService.java @@ -42,7 +42,6 @@ import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.graphics.drawable.Icon; import android.os.Build; -import android.os.Bundle; import android.os.Handler; import android.os.IBinder; import android.os.Looper; @@ -53,7 +52,6 @@ import android.os.RemoteException; import android.os.ServiceManager; import android.os.UserHandle; import android.util.ArrayMap; -import android.util.ArraySet; import android.util.Log; import android.widget.RemoteViews; @@ -64,8 +62,8 @@ import com.android.internal.os.SomeArgs; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.ArrayList; -import java.util.Collections; import java.util.List; +import java.util.Objects; /** * A service that receives calls from the system when new notifications are @@ -1201,20 +1199,25 @@ public abstract class NotificationListenerService extends Service { } } - /** Convert new-style Icons to legacy representations for pre-M clients. */ - private void createLegacyIconExtras(Notification n) { - Icon smallIcon = n.getSmallIcon(); - Icon largeIcon = n.getLargeIcon(); - if (smallIcon != null && smallIcon.getType() == Icon.TYPE_RESOURCE) { - n.extras.putInt(Notification.EXTRA_SMALL_ICON, smallIcon.getResId()); - n.icon = smallIcon.getResId(); - } - if (largeIcon != null) { - Drawable d = largeIcon.loadDrawable(getContext()); - if (d != null && d instanceof BitmapDrawable) { - final Bitmap largeIconBits = ((BitmapDrawable) d).getBitmap(); - n.extras.putParcelable(Notification.EXTRA_LARGE_ICON, largeIconBits); - n.largeIcon = largeIconBits; + /** + * Convert new-style Icons to legacy representations for pre-M clients. + * @hide + */ + public final void createLegacyIconExtras(Notification n) { + if (getContext().getApplicationInfo().targetSdkVersion < Build.VERSION_CODES.M) { + Icon smallIcon = n.getSmallIcon(); + Icon largeIcon = n.getLargeIcon(); + if (smallIcon != null && smallIcon.getType() == Icon.TYPE_RESOURCE) { + n.extras.putInt(Notification.EXTRA_SMALL_ICON, smallIcon.getResId()); + n.icon = smallIcon.getResId(); + } + if (largeIcon != null) { + Drawable d = largeIcon.loadDrawable(getContext()); + if (d != null && d instanceof BitmapDrawable) { + final Bitmap largeIconBits = ((BitmapDrawable) d).getBitmap(); + n.extras.putParcelable(Notification.EXTRA_LARGE_ICON, largeIconBits); + n.largeIcon = largeIconBits; + } } } } @@ -1442,7 +1445,7 @@ public abstract class NotificationListenerService extends Service { */ @GuardedBy("mLock") public final void applyUpdateLocked(NotificationRankingUpdate update) { - mRankingMap = new RankingMap(update); + mRankingMap = update.getRankingMap(); } /** @hide */ @@ -1480,14 +1483,14 @@ public abstract class NotificationListenerService extends Service { */ public static final int USER_SENTIMENT_POSITIVE = 1; - /** @hide */ + /** @hide */ @IntDef(prefix = { "USER_SENTIMENT_" }, value = { USER_SENTIMENT_NEGATIVE, USER_SENTIMENT_NEUTRAL, USER_SENTIMENT_POSITIVE }) @Retention(RetentionPolicy.SOURCE) public @interface UserSentiment {} - private String mKey; + private @NonNull String mKey; private int mRank = -1; private boolean mIsAmbient; private boolean mMatchesInterruptionFilter; @@ -1512,7 +1515,70 @@ public abstract class NotificationListenerService extends Service { private ArrayList<CharSequence> mSmartReplies; private boolean mCanBubble; - public Ranking() {} + private static final int PARCEL_VERSION = 2; + + public Ranking() { } + + // You can parcel it, but it's not Parcelable + /** @hide */ + @VisibleForTesting + public void writeToParcel(Parcel out, int flags) { + final long start = out.dataPosition(); + out.writeInt(PARCEL_VERSION); + out.writeString(mKey); + out.writeInt(mRank); + out.writeBoolean(mIsAmbient); + out.writeBoolean(mMatchesInterruptionFilter); + out.writeInt(mVisibilityOverride); + out.writeInt(mSuppressedVisualEffects); + out.writeInt(mImportance); + out.writeCharSequence(mImportanceExplanation); + out.writeString(mOverrideGroupKey); + out.writeParcelable(mChannel, flags); + out.writeStringList(mOverridePeople); + out.writeTypedList(mSnoozeCriteria, flags); + out.writeBoolean(mShowBadge); + out.writeInt(mUserSentiment); + out.writeBoolean(mHidden); + out.writeLong(mLastAudiblyAlertedMs); + out.writeBoolean(mNoisy); + out.writeTypedList(mSmartActions, flags); + out.writeCharSequenceList(mSmartReplies); + out.writeBoolean(mCanBubble); + } + + /** @hide */ + @VisibleForTesting + public Ranking(Parcel in) { + final ClassLoader cl = getClass().getClassLoader(); + + final int version = in.readInt(); + if (version != PARCEL_VERSION) { + throw new IllegalArgumentException("malformed Ranking parcel: " + in + " version " + + version + ", expected " + PARCEL_VERSION); + } + mKey = in.readString(); + mRank = in.readInt(); + mIsAmbient = in.readBoolean(); + mMatchesInterruptionFilter = in.readBoolean(); + mVisibilityOverride = in.readInt(); + mSuppressedVisualEffects = in.readInt(); + mImportance = in.readInt(); + mImportanceExplanation = in.readCharSequence(); // may be null + mOverrideGroupKey = in.readString(); // may be null + mChannel = (NotificationChannel) in.readParcelable(cl); // may be null + mOverridePeople = in.createStringArrayList(); + mSnoozeCriteria = in.createTypedArrayList(SnoozeCriterion.CREATOR); + mShowBadge = in.readBoolean(); + mUserSentiment = in.readInt(); + mHidden = in.readBoolean(); + mLastAudiblyAlertedMs = in.readLong(); + mNoisy = in.readBoolean(); + mSmartActions = in.createTypedArrayList(Notification.Action.CREATOR); + mSmartReplies = in.readCharSequenceList(); + mCanBubble = in.readBoolean(); + } + /** * Returns the key of the notification this Ranking applies to. @@ -1737,6 +1803,31 @@ public abstract class NotificationListenerService extends Service { } /** + * @hide + */ + public void populate(Ranking other) { + populate(other.mKey, + other.mRank, + other.mMatchesInterruptionFilter, + other.mVisibilityOverride, + other.mSuppressedVisualEffects, + other.mImportance, + other.mImportanceExplanation, + other.mOverrideGroupKey, + other.mChannel, + other.mOverridePeople, + other.mSnoozeCriteria, + other.mShowBadge, + other.mUserSentiment, + other.mHidden, + other.mLastAudiblyAlertedMs, + other.mNoisy, + other.mSmartActions, + other.mSmartReplies, + other.mCanBubble); + } + + /** * {@hide} */ public static String importanceToString(int importance) { @@ -1758,6 +1849,35 @@ public abstract class NotificationListenerService extends Service { return "UNKNOWN(" + String.valueOf(importance) + ")"; } } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + Ranking other = (Ranking) o; + return Objects.equals(mKey, other.mKey) + && Objects.equals(mRank, other.mRank) + && Objects.equals(mMatchesInterruptionFilter, other.mMatchesInterruptionFilter) + && Objects.equals(mVisibilityOverride, other.mVisibilityOverride) + && Objects.equals(mSuppressedVisualEffects, other.mSuppressedVisualEffects) + && Objects.equals(mImportance, other.mImportance) + && Objects.equals(mImportanceExplanation, other.mImportanceExplanation) + && Objects.equals(mOverrideGroupKey, other.mOverrideGroupKey) + && Objects.equals(mChannel, other.mChannel) + && Objects.equals(mOverridePeople, other.mOverridePeople) + && Objects.equals(mSnoozeCriteria, other.mSnoozeCriteria) + && Objects.equals(mShowBadge, other.mShowBadge) + && Objects.equals(mUserSentiment, other.mUserSentiment) + && Objects.equals(mHidden, other.mHidden) + && Objects.equals(mLastAudiblyAlertedMs, other.mLastAudiblyAlertedMs) + && Objects.equals(mNoisy, other.mNoisy) + // Action.equals() doesn't exist so let's just compare list lengths + && ((mSmartActions == null ? 0 : mSmartActions.size()) + == (other.mSmartActions == null ? 0 : other.mSmartActions.size())) + && Objects.equals(mSmartReplies, other.mSmartReplies) + && Objects.equals(mCanBubble, other.mCanBubble); + } } /** @@ -1769,413 +1889,66 @@ public abstract class NotificationListenerService extends Service { * notifications active at the time of retrieval. */ public static class RankingMap implements Parcelable { - private final NotificationRankingUpdate mRankingUpdate; - private ArrayMap<String,Integer> mRanks; - private ArraySet<Object> mIntercepted; - private ArrayMap<String, Integer> mVisibilityOverrides; - private ArrayMap<String, Integer> mSuppressedVisualEffects; - private ArrayMap<String, Integer> mImportance; - private ArrayMap<String, String> mImportanceExplanation; - private ArrayMap<String, String> mOverrideGroupKeys; - private ArrayMap<String, NotificationChannel> mChannels; - private ArrayMap<String, ArrayList<String>> mOverridePeople; - private ArrayMap<String, ArrayList<SnoozeCriterion>> mSnoozeCriteria; - private ArrayMap<String, Boolean> mShowBadge; - private ArrayMap<String, Integer> mUserSentiment; - private ArrayMap<String, Boolean> mHidden; - private ArrayMap<String, Long> mLastAudiblyAlerted; - private ArrayMap<String, Boolean> mNoisy; - private ArrayMap<String, ArrayList<Notification.Action>> mSmartActions; - private ArrayMap<String, ArrayList<CharSequence>> mSmartReplies; - private boolean[] mCanBubble; - - private RankingMap(NotificationRankingUpdate rankingUpdate) { - mRankingUpdate = rankingUpdate; - } - - /** - * Request the list of notification keys in their current ranking - * order. - * - * @return An array of active notification keys, in their ranking order. - */ - public String[] getOrderedKeys() { - return mRankingUpdate.getOrderedKeys(); - } + private ArrayList<String> mOrderedKeys = new ArrayList<>(); + // Note: all String keys should be intern'd as pointers into mOrderedKeys + private ArrayMap<String, Ranking> mRankings = new ArrayMap<>(); /** - * Populates outRanking with ranking information for the notification - * with the given key. - * - * @return true if a valid key has been passed and outRanking has - * been populated; false otherwise + * @hide */ - public boolean getRanking(String key, Ranking outRanking) { - int rank = getRank(key); - outRanking.populate(key, rank, !isIntercepted(key), - getVisibilityOverride(key), getSuppressedVisualEffects(key), - getImportance(key), getImportanceExplanation(key), getOverrideGroupKey(key), - getChannel(key), getOverridePeople(key), getSnoozeCriteria(key), - getShowBadge(key), getUserSentiment(key), getHidden(key), - getLastAudiblyAlerted(key), getNoisy(key), getSmartActions(key), - getSmartReplies(key), canBubble(key)); - return rank >= 0; - } - - private int getRank(String key) { - synchronized (this) { - if (mRanks == null) { - buildRanksLocked(); - } + public RankingMap(Ranking[] rankings) { + for (int i = 0; i < rankings.length; i++) { + final String key = rankings[i].getKey(); + mOrderedKeys.add(key); + mRankings.put(key, rankings[i]); } - Integer rank = mRanks.get(key); - return rank != null ? rank : -1; } - private boolean isIntercepted(String key) { - synchronized (this) { - if (mIntercepted == null) { - buildInterceptedSetLocked(); - } - } - return mIntercepted.contains(key); - } + // -- parcelable interface -- - private int getVisibilityOverride(String key) { - synchronized (this) { - if (mVisibilityOverrides == null) { - buildVisibilityOverridesLocked(); - } - } - Integer override = mVisibilityOverrides.get(key); - if (override == null) { - return Ranking.VISIBILITY_NO_OVERRIDE; + private RankingMap(Parcel in) { + final ClassLoader cl = getClass().getClassLoader(); + final int count = in.readInt(); + mOrderedKeys.ensureCapacity(count); + mRankings.ensureCapacity(count); + for (int i = 0; i < count; i++) { + final Ranking r = new Ranking(in); + final String key = r.getKey(); + mOrderedKeys.add(key); + mRankings.put(key, r); } - return override.intValue(); } - private int getSuppressedVisualEffects(String key) { - synchronized (this) { - if (mSuppressedVisualEffects == null) { - buildSuppressedVisualEffectsLocked(); - } - } - Integer suppressed = mSuppressedVisualEffects.get(key); - if (suppressed == null) { - return 0; - } - return suppressed.intValue(); - } - - private int getImportance(String key) { - synchronized (this) { - if (mImportance == null) { - buildImportanceLocked(); - } - } - Integer importance = mImportance.get(key); - if (importance == null) { - return NotificationManager.IMPORTANCE_DEFAULT; - } - return importance.intValue(); - } - - private String getImportanceExplanation(String key) { - synchronized (this) { - if (mImportanceExplanation == null) { - buildImportanceExplanationLocked(); - } - } - return mImportanceExplanation.get(key); - } - - private String getOverrideGroupKey(String key) { - synchronized (this) { - if (mOverrideGroupKeys == null) { - buildOverrideGroupKeys(); - } - } - return mOverrideGroupKeys.get(key); - } - - private NotificationChannel getChannel(String key) { - synchronized (this) { - if (mChannels == null) { - buildChannelsLocked(); - } - } - return mChannels.get(key); - } - - private ArrayList<String> getOverridePeople(String key) { - synchronized (this) { - if (mOverridePeople == null) { - buildOverridePeopleLocked(); - } - } - return mOverridePeople.get(key); - } - - private ArrayList<SnoozeCriterion> getSnoozeCriteria(String key) { - synchronized (this) { - if (mSnoozeCriteria == null) { - buildSnoozeCriteriaLocked(); - } - } - return mSnoozeCriteria.get(key); - } - - private boolean getShowBadge(String key) { - synchronized (this) { - if (mShowBadge == null) { - buildShowBadgeLocked(); - } - } - Boolean showBadge = mShowBadge.get(key); - return showBadge == null ? false : showBadge.booleanValue(); - } - - private int getUserSentiment(String key) { - synchronized (this) { - if (mUserSentiment == null) { - buildUserSentimentLocked(); - } - } - Integer userSentiment = mUserSentiment.get(key); - return userSentiment == null - ? Ranking.USER_SENTIMENT_NEUTRAL : userSentiment.intValue(); - } - - private boolean getHidden(String key) { - synchronized (this) { - if (mHidden == null) { - buildHiddenLocked(); - } - } - Boolean hidden = mHidden.get(key); - return hidden == null ? false : hidden.booleanValue(); - } - - private long getLastAudiblyAlerted(String key) { - synchronized (this) { - if (mLastAudiblyAlerted == null) { - buildLastAudiblyAlertedLocked(); - } - } - Long lastAudibleAlerted = mLastAudiblyAlerted.get(key); - return lastAudibleAlerted == null ? -1 : lastAudibleAlerted.longValue(); - } - - private boolean getNoisy(String key) { - synchronized (this) { - if (mNoisy == null) { - buildNoisyLocked(); - } - } - Boolean noisy = mNoisy.get(key); - return noisy == null ? false : noisy.booleanValue(); - } - - private ArrayList<Notification.Action> getSmartActions(String key) { - synchronized (this) { - if (mSmartActions == null) { - buildSmartActions(); - } - } - return mSmartActions.get(key); - } - - private ArrayList<CharSequence> getSmartReplies(String key) { - synchronized (this) { - if (mSmartReplies == null) { - buildSmartReplies(); - } - } - return mSmartReplies.get(key); - } - - private boolean canBubble(String key) { - synchronized (this) { - if (mRanks == null) { - buildRanksLocked(); - } - if (mCanBubble == null) { - mCanBubble = mRankingUpdate.getCanBubble(); - } - } - int keyIndex = mRanks.getOrDefault(key, -1); - return keyIndex >= 0 ? mCanBubble[keyIndex] : false; - } - - // Locked by 'this' - private void buildRanksLocked() { - String[] orderedKeys = mRankingUpdate.getOrderedKeys(); - mRanks = new ArrayMap<>(orderedKeys.length); - for (int i = 0; i < orderedKeys.length; i++) { - String key = orderedKeys[i]; - mRanks.put(key, i); - } - } - - // Locked by 'this' - private void buildInterceptedSetLocked() { - String[] dndInterceptedKeys = mRankingUpdate.getInterceptedKeys(); - mIntercepted = new ArraySet<>(dndInterceptedKeys.length); - Collections.addAll(mIntercepted, dndInterceptedKeys); - } - - private ArrayMap<String, Integer> buildIntMapFromBundle(Bundle bundle) { - ArrayMap<String, Integer> newMap = new ArrayMap<>(bundle.size()); - for (String key : bundle.keySet()) { - newMap.put(key, bundle.getInt(key)); - } - return newMap; - } - - private ArrayMap<String, String> buildStringMapFromBundle(Bundle bundle) { - ArrayMap<String, String> newMap = new ArrayMap<>(bundle.size()); - for (String key : bundle.keySet()) { - newMap.put(key, bundle.getString(key)); - } - return newMap; - } - - private ArrayMap<String, Boolean> buildBooleanMapFromBundle(Bundle bundle) { - ArrayMap<String, Boolean> newMap = new ArrayMap<>(bundle.size()); - for (String key : bundle.keySet()) { - newMap.put(key, bundle.getBoolean(key)); - } - return newMap; - } - - private ArrayMap<String, Long> buildLongMapFromBundle(Bundle bundle) { - ArrayMap<String, Long> newMap = new ArrayMap<>(bundle.size()); - for (String key : bundle.keySet()) { - newMap.put(key, bundle.getLong(key)); - } - return newMap; - } - - // Locked by 'this' - private void buildVisibilityOverridesLocked() { - mVisibilityOverrides = buildIntMapFromBundle(mRankingUpdate.getVisibilityOverrides()); - } - - // Locked by 'this' - private void buildSuppressedVisualEffectsLocked() { - mSuppressedVisualEffects = - buildIntMapFromBundle(mRankingUpdate.getSuppressedVisualEffects()); - } - - // Locked by 'this' - private void buildImportanceLocked() { - String[] orderedKeys = mRankingUpdate.getOrderedKeys(); - int[] importance = mRankingUpdate.getImportance(); - mImportance = new ArrayMap<>(orderedKeys.length); - for (int i = 0; i < orderedKeys.length; i++) { - String key = orderedKeys[i]; - mImportance.put(key, importance[i]); - } - } - - // Locked by 'this' - private void buildImportanceExplanationLocked() { - mImportanceExplanation = - buildStringMapFromBundle(mRankingUpdate.getImportanceExplanation()); - } - - // Locked by 'this' - private void buildOverrideGroupKeys() { - mOverrideGroupKeys = buildStringMapFromBundle(mRankingUpdate.getOverrideGroupKeys()); - } - - // Locked by 'this' - private void buildChannelsLocked() { - Bundle channels = mRankingUpdate.getChannels(); - mChannels = new ArrayMap<>(channels.size()); - for (String key : channels.keySet()) { - mChannels.put(key, channels.getParcelable(key)); - } - } - - // Locked by 'this' - private void buildOverridePeopleLocked() { - Bundle overridePeople = mRankingUpdate.getOverridePeople(); - mOverridePeople = new ArrayMap<>(overridePeople.size()); - for (String key : overridePeople.keySet()) { - mOverridePeople.put(key, overridePeople.getStringArrayList(key)); - } - } - - // Locked by 'this' - private void buildSnoozeCriteriaLocked() { - Bundle snoozeCriteria = mRankingUpdate.getSnoozeCriteria(); - mSnoozeCriteria = new ArrayMap<>(snoozeCriteria.size()); - for (String key : snoozeCriteria.keySet()) { - mSnoozeCriteria.put(key, snoozeCriteria.getParcelableArrayList(key)); - } - } - - // Locked by 'this' - private void buildShowBadgeLocked() { - mShowBadge = buildBooleanMapFromBundle(mRankingUpdate.getShowBadge()); - } - - // Locked by 'this' - private void buildUserSentimentLocked() { - mUserSentiment = buildIntMapFromBundle(mRankingUpdate.getUserSentiment()); - } - - // Locked by 'this' - private void buildHiddenLocked() { - mHidden = buildBooleanMapFromBundle(mRankingUpdate.getHidden()); - } - - // Locked by 'this' - private void buildLastAudiblyAlertedLocked() { - mLastAudiblyAlerted = buildLongMapFromBundle(mRankingUpdate.getLastAudiblyAlerted()); - } + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; - // Locked by 'this' - private void buildNoisyLocked() { - mNoisy = buildBooleanMapFromBundle(mRankingUpdate.getNoisy()); - } + RankingMap other = (RankingMap) o; - // Locked by 'this' - private void buildSmartActions() { - Bundle smartActions = mRankingUpdate.getSmartActions(); - mSmartActions = new ArrayMap<>(smartActions.size()); - for (String key : smartActions.keySet()) { - mSmartActions.put(key, smartActions.getParcelableArrayList(key)); - } - } + return mOrderedKeys.equals(other.mOrderedKeys) + && mRankings.equals(other.mRankings); - // Locked by 'this' - private void buildSmartReplies() { - Bundle smartReplies = mRankingUpdate.getSmartReplies(); - mSmartReplies = new ArrayMap<>(smartReplies.size()); - for (String key : smartReplies.keySet()) { - mSmartReplies.put(key, smartReplies.getCharSequenceArrayList(key)); - } } - // ----------- Parcelable - @Override public int describeContents() { return 0; } @Override - public void writeToParcel(Parcel dest, int flags) { - dest.writeParcelable(mRankingUpdate, flags); + public void writeToParcel(Parcel out, int flags) { + final int count = mOrderedKeys.size(); + out.writeInt(count); + for (int i = 0; i < count; i++) { + mRankings.get(mOrderedKeys.get(i)).writeToParcel(out, flags); + } } public static final @android.annotation.NonNull Creator<RankingMap> CREATOR = new Creator<RankingMap>() { @Override public RankingMap createFromParcel(Parcel source) { - NotificationRankingUpdate rankingUpdate = source.readParcelable(null); - return new RankingMap(rankingUpdate); + return new RankingMap(source); } @Override @@ -2183,6 +1956,42 @@ public abstract class NotificationListenerService extends Service { return new RankingMap[size]; } }; + + /** + * Request the list of notification keys in their current ranking + * order. + * + * @return An array of active notification keys, in their ranking order. + */ + public String[] getOrderedKeys() { + return mOrderedKeys.toArray(new String[0]); + } + + /** + * Populates outRanking with ranking information for the notification + * with the given key. + * + * @return true if a valid key has been passed and outRanking has + * been populated; false otherwise + */ + public boolean getRanking(String key, Ranking outRanking) { + if (mRankings.containsKey(key)) { + outRanking.populate(mRankings.get(key)); + return true; + } + return false; + } + + /** + * Get a reference to the actual Ranking object corresponding to the key. + * Used only by unit tests. + * + * @hide + */ + @VisibleForTesting + public Ranking getRawRankingObject(String key) { + return mRankings.get(key); + } } private final class MyHandler extends Handler { diff --git a/core/java/android/service/notification/NotificationRankingUpdate.java b/core/java/android/service/notification/NotificationRankingUpdate.java index c5c70f808325..675c5cd63100 100644 --- a/core/java/android/service/notification/NotificationRankingUpdate.java +++ b/core/java/android/service/notification/NotificationRankingUpdate.java @@ -15,7 +15,6 @@ */ package android.service.notification; -import android.os.Bundle; import android.os.Parcel; import android.os.Parcelable; @@ -23,73 +22,18 @@ import android.os.Parcelable; * @hide */ public class NotificationRankingUpdate implements Parcelable { - // TODO: Support incremental updates. - private final String[] mKeys; - private final String[] mInterceptedKeys; - private final Bundle mVisibilityOverrides; - private final Bundle mSuppressedVisualEffects; - private final int[] mImportance; - private final Bundle mImportanceExplanation; - private final Bundle mOverrideGroupKeys; - private final Bundle mChannels; - private final Bundle mOverridePeople; - private final Bundle mSnoozeCriteria; - private final Bundle mShowBadge; - private final Bundle mUserSentiment; - private final Bundle mHidden; - private final Bundle mSmartActions; - private final Bundle mSmartReplies; - private final Bundle mLastAudiblyAlerted; - private final Bundle mNoisy; - private final boolean[] mCanBubble; + private final NotificationListenerService.RankingMap mRankingMap; - public NotificationRankingUpdate(String[] keys, String[] interceptedKeys, - Bundle visibilityOverrides, Bundle suppressedVisualEffects, - int[] importance, Bundle explanation, Bundle overrideGroupKeys, - Bundle channels, Bundle overridePeople, Bundle snoozeCriteria, - Bundle showBadge, Bundle userSentiment, Bundle hidden, Bundle smartActions, - Bundle smartReplies, Bundle lastAudiblyAlerted, Bundle noisy, boolean[] canBubble) { - mKeys = keys; - mInterceptedKeys = interceptedKeys; - mVisibilityOverrides = visibilityOverrides; - mSuppressedVisualEffects = suppressedVisualEffects; - mImportance = importance; - mImportanceExplanation = explanation; - mOverrideGroupKeys = overrideGroupKeys; - mChannels = channels; - mOverridePeople = overridePeople; - mSnoozeCriteria = snoozeCriteria; - mShowBadge = showBadge; - mUserSentiment = userSentiment; - mHidden = hidden; - mSmartActions = smartActions; - mSmartReplies = smartReplies; - mLastAudiblyAlerted = lastAudiblyAlerted; - mNoisy = noisy; - mCanBubble = canBubble; + public NotificationRankingUpdate(NotificationListenerService.Ranking[] rankings) { + mRankingMap = new NotificationListenerService.RankingMap(rankings); } public NotificationRankingUpdate(Parcel in) { - mKeys = in.readStringArray(); - mInterceptedKeys = in.readStringArray(); - mVisibilityOverrides = in.readBundle(); - mSuppressedVisualEffects = in.readBundle(); - mImportance = new int[mKeys.length]; - in.readIntArray(mImportance); - mImportanceExplanation = in.readBundle(); - mOverrideGroupKeys = in.readBundle(); - mChannels = in.readBundle(); - mOverridePeople = in.readBundle(); - mSnoozeCriteria = in.readBundle(); - mShowBadge = in.readBundle(); - mUserSentiment = in.readBundle(); - mHidden = in.readBundle(); - mSmartActions = in.readBundle(); - mSmartReplies = in.readBundle(); - mLastAudiblyAlerted = in.readBundle(); - mNoisy = in.readBundle(); - mCanBubble = new boolean[mKeys.length]; - in.readBooleanArray(mCanBubble); + mRankingMap = in.readParcelable(getClass().getClassLoader()); + } + + public NotificationListenerService.RankingMap getRankingMap() { + return mRankingMap; } @Override @@ -98,25 +42,17 @@ public class NotificationRankingUpdate implements Parcelable { } @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + NotificationRankingUpdate other = (NotificationRankingUpdate) o; + return mRankingMap.equals(other.mRankingMap); + } + + @Override public void writeToParcel(Parcel out, int flags) { - out.writeStringArray(mKeys); - out.writeStringArray(mInterceptedKeys); - out.writeBundle(mVisibilityOverrides); - out.writeBundle(mSuppressedVisualEffects); - out.writeIntArray(mImportance); - out.writeBundle(mImportanceExplanation); - out.writeBundle(mOverrideGroupKeys); - out.writeBundle(mChannels); - out.writeBundle(mOverridePeople); - out.writeBundle(mSnoozeCriteria); - out.writeBundle(mShowBadge); - out.writeBundle(mUserSentiment); - out.writeBundle(mHidden); - out.writeBundle(mSmartActions); - out.writeBundle(mSmartReplies); - out.writeBundle(mLastAudiblyAlerted); - out.writeBundle(mNoisy); - out.writeBooleanArray(mCanBubble); + out.writeParcelable(mRankingMap, flags); } public static final @android.annotation.NonNull Parcelable.Creator<NotificationRankingUpdate> CREATOR @@ -129,76 +65,4 @@ public class NotificationRankingUpdate implements Parcelable { return new NotificationRankingUpdate[size]; } }; - - public String[] getOrderedKeys() { - return mKeys; - } - - public String[] getInterceptedKeys() { - return mInterceptedKeys; - } - - public Bundle getVisibilityOverrides() { - return mVisibilityOverrides; - } - - public Bundle getSuppressedVisualEffects() { - return mSuppressedVisualEffects; - } - - public int[] getImportance() { - return mImportance; - } - - public Bundle getImportanceExplanation() { - return mImportanceExplanation; - } - - public Bundle getOverrideGroupKeys() { - return mOverrideGroupKeys; - } - - public Bundle getChannels() { - return mChannels; - } - - public Bundle getOverridePeople() { - return mOverridePeople; - } - - public Bundle getSnoozeCriteria() { - return mSnoozeCriteria; - } - - public Bundle getShowBadge() { - return mShowBadge; - } - - public Bundle getUserSentiment() { - return mUserSentiment; - } - - public Bundle getHidden() { - return mHidden; - } - - public Bundle getSmartActions() { - return mSmartActions; - } - - public Bundle getSmartReplies() { - return mSmartReplies; - } - - public Bundle getLastAudiblyAlerted() { - return mLastAudiblyAlerted; - } - - public Bundle getNoisy() { - return mNoisy; - } - - public boolean[] getCanBubble() { - return mCanBubble; - } } diff --git a/core/java/android/service/notification/StatusBarNotification.java b/core/java/android/service/notification/StatusBarNotification.java index 8512a0bd8088..905c7811e457 100644 --- a/core/java/android/service/notification/StatusBarNotification.java +++ b/core/java/android/service/notification/StatusBarNotification.java @@ -20,6 +20,7 @@ import android.annotation.NonNull; import android.annotation.UnsupportedAppUsage; import android.app.Notification; import android.app.NotificationManager; +import android.app.Person; import android.content.Context; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; @@ -32,6 +33,8 @@ import android.os.UserHandle; import com.android.internal.logging.nano.MetricsProto; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; +import java.util.ArrayList; + /** * Class encapsulating a Notification. Sent by the NotificationManagerService to clients including * the status bar and any {@link android.service.notification.NotificationListenerService}s. @@ -166,6 +169,7 @@ public class StatusBarNotification implements Parcelable { /** * Returns true if application asked that this notification be part of a group. + * * @hide */ public boolean isAppGroup() { @@ -203,18 +207,16 @@ public class StatusBarNotification implements Parcelable { return 0; } - public static final @android.annotation.NonNull Parcelable.Creator<StatusBarNotification> CREATOR - = new Parcelable.Creator<StatusBarNotification>() - { - public StatusBarNotification createFromParcel(Parcel parcel) - { - return new StatusBarNotification(parcel); - } + public static final @android.annotation.NonNull + Parcelable.Creator<StatusBarNotification> CREATOR = + new Parcelable.Creator<StatusBarNotification>() { + public StatusBarNotification createFromParcel(Parcel parcel) { + return new StatusBarNotification(parcel); + } - public StatusBarNotification[] newArray(int size) - { - return new StatusBarNotification[size]; - } + public StatusBarNotification[] newArray(int size) { + return new StatusBarNotification[size]; + } }; /** @@ -243,14 +245,16 @@ public class StatusBarNotification implements Parcelable { this.key, this.notification); } - /** Convenience method to check the notification's flags for + /** + * Convenience method to check the notification's flags for * {@link Notification#FLAG_ONGOING_EVENT}. */ public boolean isOngoing() { return (notification.flags & Notification.FLAG_ONGOING_EVENT) != 0; } - /** Convenience method to check the notification's flags for + /** + * Convenience method to check the notification's flags for * either {@link Notification#FLAG_ONGOING_EVENT} or * {@link Notification#FLAG_NO_CLEAR}. */ @@ -274,13 +278,15 @@ public class StatusBarNotification implements Parcelable { return pkg; } - /** The id supplied to {@link android.app.NotificationManager#notify(int,Notification)}. */ + /** The id supplied to {@link android.app.NotificationManager#notify(int, Notification)}. */ public int getId() { return id; } - /** The tag supplied to {@link android.app.NotificationManager#notify(int,Notification)}, - * or null if no tag was specified. */ + /** + * The tag supplied to {@link android.app.NotificationManager#notify(int, Notification)}, + * or null if no tag was specified. + */ public String getTag() { return tag; } @@ -307,8 +313,10 @@ public class StatusBarNotification implements Parcelable { return initialPid; } - /** The {@link android.app.Notification} supplied to - * {@link android.app.NotificationManager#notify(int,Notification)}. */ + /** + * The {@link android.app.Notification} supplied to + * {@link android.app.NotificationManager#notify(int, Notification)}. + */ public Notification getNotification() { return notification; } @@ -320,7 +328,8 @@ public class StatusBarNotification implements Parcelable { return user; } - /** The time (in {@link System#currentTimeMillis} time) the notification was posted, + /** + * The time (in {@link System#currentTimeMillis} time) the notification was posted, * which may be different than {@link android.app.Notification#when}. */ public long getPostTime() { @@ -343,6 +352,7 @@ public class StatusBarNotification implements Parcelable { /** * The ID passed to setGroup(), or the override, or null. + * * @hide */ public String getGroup() { @@ -398,10 +408,11 @@ public class StatusBarNotification implements Parcelable { /** * Returns a LogMaker that contains all basic information of the notification. + * * @hide */ public LogMaker getLogMaker() { - return new LogMaker(MetricsEvent.VIEW_UNKNOWN).setPackageName(getPackageName()) + LogMaker logMaker = new LogMaker(MetricsEvent.VIEW_UNKNOWN).setPackageName(getPackageName()) .addTaggedData(MetricsEvent.NOTIFICATION_ID, getId()) .addTaggedData(MetricsEvent.NOTIFICATION_TAG, getTag()) .addTaggedData(MetricsEvent.FIELD_NOTIFICATION_CHANNEL_ID, getChannelIdLogTag()) @@ -410,6 +421,21 @@ public class StatusBarNotification implements Parcelable { getNotification().isGroupSummary() ? 1 : 0) .addTaggedData(MetricsProto.MetricsEvent.FIELD_NOTIFICATION_CATEGORY, getNotification().category); + if (getNotification().extras != null) { + // Log the style used, if present. We only log the hash here, as notification log + // events are frequent, while there are few styles (hence low chance of collisions). + String template = getNotification().extras.getString(Notification.EXTRA_TEMPLATE); + if (template != null && !template.isEmpty()) { + logMaker.addTaggedData(MetricsEvent.FIELD_NOTIFICATION_STYLE, + template.hashCode()); + } + ArrayList<Person> people = getNotification().extras.getParcelableArrayList( + Notification.EXTRA_PEOPLE_LIST); + if (people != null && !people.isEmpty()) { + logMaker.addTaggedData(MetricsEvent.FIELD_NOTIFICATION_PEOPLE, people.size()); + } + } + return logMaker; } private String getGroupLogTag() { @@ -433,6 +459,6 @@ public class StatusBarNotification implements Parcelable { } String hash = Integer.toHexString(logTag.hashCode()); return logTag.substring(0, MAX_LOG_TAG_LENGTH - hash.length() - 1) + "-" - + hash; + + hash; } } diff --git a/core/java/android/text/Layout.java b/core/java/android/text/Layout.java index bf0ef9465fcd..2c2c2953ed51 100644 --- a/core/java/android/text/Layout.java +++ b/core/java/android/text/Layout.java @@ -1122,6 +1122,9 @@ public abstract class Layout { if (limit > lineEnd) { limit = lineEnd; } + if (limit == start) { + continue; + } level[limit - lineStart - 1] = (byte) ((runs[i + 1] >>> RUN_LEVEL_SHIFT) & RUN_LEVEL_MASK); } @@ -1220,8 +1223,8 @@ public abstract class Layout { } /** - * Computes in linear time the results of calling - * #getHorizontal for all offsets on a line. + * Computes in linear time the results of calling #getHorizontal for all offsets on a line. + * * @param line The line giving the offsets we compute information for * @param clamped Whether to clamp the results to the width of the layout * @param primary Whether the results should be the primary or the secondary horizontal @@ -1257,7 +1260,7 @@ public abstract class Layout { TextLine.recycle(tl); if (clamped) { - for (int offset = 0; offset <= wid.length; ++offset) { + for (int offset = 0; offset < wid.length; ++offset) { if (wid[offset] > mWidth) { wid[offset] = mWidth; } diff --git a/core/java/android/text/util/Linkify.java b/core/java/android/text/util/Linkify.java index 50e7ec30ec3a..df54209bc043 100644 --- a/core/java/android/text/util/Linkify.java +++ b/core/java/android/text/util/Linkify.java @@ -67,6 +67,14 @@ import java.util.regex.Pattern; * create <code>http://example.com</code> when the clickable URL link is * created. * + * <p class="note"><b>Note:</b> When using {@link #MAP_ADDRESSES} or {@link #ALL} + * to match street addresses on API level {@link android.os.Build.VERSION_CODES#O_MR1} + * and earlier, methods in this class may throw + * {@link android.util.AndroidRuntimeException} or other exceptions if the + * device's WebView implementation is currently being updated, because + * {@link android.webkit.WebView#findAddress} is required to match street + * addresses. + * * @see MatchFilter * @see TransformFilter */ @@ -95,10 +103,11 @@ public class Linkify { /** * Bit field indicating that street addresses should be matched in methods that - * take an options mask. Note that this uses the - * {@link android.webkit.WebView#findAddress(String) findAddress()} method in - * {@link android.webkit.WebView} for finding addresses, which has various - * limitations and has been deprecated. + * take an options mask. Note that this should be avoided, as it uses the + * {@link android.webkit.WebView#findAddress(String)} method, which has various + * limitations and has been deprecated: see the documentation for + * {@link android.webkit.WebView#findAddress(String)} for more information. + * * @deprecated use {@link android.view.textclassifier.TextClassifier#generateLinks( * TextLinks.Request)} instead and avoid it even when targeting API levels where no alternative * is available. diff --git a/core/java/android/util/DisplayMetrics.java b/core/java/android/util/DisplayMetrics.java index 1bcfc05224ca..7c7223c04b59 100755 --- a/core/java/android/util/DisplayMetrics.java +++ b/core/java/android/util/DisplayMetrics.java @@ -157,6 +157,14 @@ public class DisplayMetrics { public static final int DENSITY_440 = 440; /** + * Intermediate density for screens that sit somewhere between + * {@link #DENSITY_XHIGH} (320 dpi) and {@link #DENSITY_XXHIGH} (480 dpi). + * This is not a density that applications should target, instead relying + * on the system to scale their {@link #DENSITY_XXHIGH} assets for them. + */ + public static final int DENSITY_450 = 450; + + /** * Standard quantized DPI for extra-extra-high-density screens. */ public static final int DENSITY_XXHIGH = 480; diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java index 7a3609a61614..aceb276e9fc0 100644 --- a/core/java/android/view/ViewRootImpl.java +++ b/core/java/android/view/ViewRootImpl.java @@ -1107,7 +1107,13 @@ public final class ViewRootImpl implements ViewParent, */ public void registerRtFrameCallback(FrameDrawingCallback callback) { if (mAttachInfo.mThreadedRenderer != null) { - mAttachInfo.mThreadedRenderer.registerRtFrameCallback(callback); + mAttachInfo.mThreadedRenderer.registerRtFrameCallback(frame -> { + try { + callback.onFrameDraw(frame); + } catch (Exception e) { + Log.e(TAG, "Exception while executing onFrameDraw", e); + } + }); } } @@ -2002,18 +2008,9 @@ public final class ViewRootImpl implements ViewParent, mDisplay.getRealSize(size); desiredWindowWidth = size.x; desiredWindowHeight = size.y; - } else if (lp.width == ViewGroup.LayoutParams.WRAP_CONTENT - || lp.height == ViewGroup.LayoutParams.WRAP_CONTENT) { - // For wrap content, we have to remeasure later on anyways. Use size consistent with - // below so we get best use of the measure cache. - desiredWindowWidth = dipToPx(config.screenWidthDp); - desiredWindowHeight = dipToPx(config.screenHeightDp); } else { - // After addToDisplay, the frame contains the frameHint from window manager, which - // for most windows is going to be the same size as the result of relayoutWindow. - // Using this here allows us to avoid remeasuring after relayoutWindow - desiredWindowWidth = frame.width(); - desiredWindowHeight = frame.height(); + desiredWindowWidth = mWinFrame.width(); + desiredWindowHeight = mWinFrame.height(); } // We used to use the following condition to choose 32 bits drawing caches: @@ -4462,6 +4459,7 @@ public final class ViewRootImpl implements ViewParent, final int displayId = args.argi3; MergedConfiguration mergedConfiguration = (MergedConfiguration) args.arg4; final boolean displayChanged = mDisplay.getDisplayId() != displayId; + boolean configChanged = false; if (!mLastReportedMergedConfiguration.equals(mergedConfiguration)) { // If configuration changed - notify about that and, maybe, @@ -4469,6 +4467,7 @@ public final class ViewRootImpl implements ViewParent, performConfigurationChange(mergedConfiguration, false /* force */, displayChanged ? displayId : INVALID_DISPLAY /* same display */); + configChanged = true; } else if (displayChanged) { // Moved to display without config change - report last applied one. onMovedToDisplay(displayId, mLastConfigurationFromResources); @@ -4499,7 +4498,7 @@ public final class ViewRootImpl implements ViewParent, reportNextDraw(); } - if (mView != null && framesChanged) { + if (mView != null && (framesChanged || configChanged)) { forceLayout(mView); } requestLayout(); diff --git a/core/java/android/view/accessibility/AccessibilityManager.java b/core/java/android/view/accessibility/AccessibilityManager.java index 882e6fd8e328..2e9d881f72f9 100644 --- a/core/java/android/view/accessibility/AccessibilityManager.java +++ b/core/java/android/view/accessibility/AccessibilityManager.java @@ -184,7 +184,7 @@ public final class AccessibilityManager { boolean mIsTouchExplorationEnabled; - @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 123768939) + @UnsupportedAppUsage(trackingBug = 123768939L) boolean mIsHighTextContrastEnabled; AccessibilityPolicy mAccessibilityPolicy; diff --git a/core/java/android/view/accessibility/AccessibilityNodeIdManager.java b/core/java/android/view/accessibility/AccessibilityNodeIdManager.java index 0f5e950582dd..d78dadd294ca 100644 --- a/core/java/android/view/accessibility/AccessibilityNodeIdManager.java +++ b/core/java/android/view/accessibility/AccessibilityNodeIdManager.java @@ -16,12 +16,11 @@ package android.view.accessibility; -import android.util.SparseArray; import android.view.View; /** @hide */ public final class AccessibilityNodeIdManager { - private SparseArray<View> mIdsToViews = new SparseArray<>(); + private WeakSparseArray<View> mIdsToViews = new WeakSparseArray<View>(); private static AccessibilityNodeIdManager sIdManager; /** diff --git a/core/java/android/view/accessibility/WeakSparseArray.java b/core/java/android/view/accessibility/WeakSparseArray.java new file mode 100644 index 000000000000..04a4cc7f062b --- /dev/null +++ b/core/java/android/view/accessibility/WeakSparseArray.java @@ -0,0 +1,63 @@ +/* + * 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.view.accessibility; + +import android.util.SparseArray; + +import java.lang.ref.Reference; +import java.lang.ref.ReferenceQueue; +import java.lang.ref.WeakReference; + + +final class WeakSparseArray<E> { + + private final ReferenceQueue<E> mRefQueue = new ReferenceQueue<>(); + private final SparseArray<WeakReferenceWithId<E>> mSparseArray = new SparseArray<>(); + + public void append(int key, E value) { + removeUnreachableValues(); + mSparseArray.append(key, new WeakReferenceWithId(value, mRefQueue, key)); + } + + public void remove(int key) { + removeUnreachableValues(); + mSparseArray.remove(key); + } + + public E get(int key) { + removeUnreachableValues(); + WeakReferenceWithId<E> ref = mSparseArray.get(key); + return ref != null ? ref.get() : null; + } + + private void removeUnreachableValues() { + for (Reference ref = mRefQueue.poll(); ref != null; ref = mRefQueue.poll()) { + mSparseArray.remove(((WeakReferenceWithId) ref).mId); + } + } + + private static class WeakReferenceWithId<E> extends WeakReference<E> { + + final int mId; + + WeakReferenceWithId(E referent, ReferenceQueue<? super E> q, int id) { + super(referent, q); + mId = id; + } + } +} + diff --git a/core/java/android/view/inputmethod/InputMethodSystemProperty.java b/core/java/android/view/inputmethod/InputMethodSystemProperty.java index 7c79d44e7d31..05143a18415c 100644 --- a/core/java/android/view/inputmethod/InputMethodSystemProperty.java +++ b/core/java/android/view/inputmethod/InputMethodSystemProperty.java @@ -17,6 +17,7 @@ package android.view.inputmethod; import android.annotation.Nullable; +import android.annotation.TestApi; import android.content.ComponentName; import android.os.Build; import android.os.SystemProperties; @@ -26,6 +27,7 @@ import android.os.SystemProperties; * * @hide */ +@TestApi public class InputMethodSystemProperty { /** * System property key for the production use. The value must be either empty or a valid @@ -87,6 +89,7 @@ public class InputMethodSystemProperty { * * @hide */ + @TestApi public static final boolean MULTI_CLIENT_IME_ENABLED = (sMultiClientImeComponentName != null); /** diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java index 137b67c6e63e..14be73dec41c 100644 --- a/core/java/android/webkit/WebView.java +++ b/core/java/android/webkit/WebView.java @@ -1603,9 +1603,9 @@ public class WebView extends AbsoluteLayout } /** - * Gets the first substring consisting of the address of a physical - * location. Currently, only addresses in the United States are detected, - * and consist of: + * Gets the first substring which appears to be the address of a physical + * location. Only addresses in the United States can be detected, which + * must consist of: * <ul> * <li>a house number</li> * <li>a street name</li> @@ -1621,9 +1621,17 @@ public class WebView extends AbsoluteLayout * or abbreviated using USPS standards. The house number may not exceed * five digits. * + * <p class="note"><b>Note:</b> This function is deprecated and should be + * avoided on all API levels, as it cannot detect addresses outside of the + * United States and has a high rate of false positives. On API level + * {@link android.os.Build.VERSION_CODES#O_MR1} and earlier, it also causes + * the entire WebView implementation to be loaded and initialized, which + * can throw {@link android.util.AndroidRuntimeException} or other exceptions + * if the WebView implementation is currently being updated. + * * @param addr the string to search for addresses * @return the address, or if no address is found, {@code null} - * @deprecated this method is superseded by {@link TextClassifier#generateLinks( + * @deprecated This method is superseded by {@link TextClassifier#generateLinks( * android.view.textclassifier.TextLinks.Request)}. Avoid using this method even when targeting * API levels where no alternative is available. */ diff --git a/core/java/android/widget/AbsListView.java b/core/java/android/widget/AbsListView.java index 4cb552d29c32..85e9e4950cba 100644 --- a/core/java/android/widget/AbsListView.java +++ b/core/java/android/widget/AbsListView.java @@ -2553,34 +2553,42 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te final boolean isItemEnabled; final ViewGroup.LayoutParams lp = view.getLayoutParams(); if (lp instanceof AbsListView.LayoutParams) { - isItemEnabled = ((AbsListView.LayoutParams) lp).isEnabled; + isItemEnabled = ((AbsListView.LayoutParams) lp).isEnabled && isEnabled(); } else { isItemEnabled = false; } - if (!isEnabled() || !isItemEnabled) { - info.setEnabled(false); - return; - } + info.setEnabled(isItemEnabled); if (position == getSelectedItemPosition()) { info.setSelected(true); - info.addAction(AccessibilityAction.ACTION_CLEAR_SELECTION); - } else { - info.addAction(AccessibilityAction.ACTION_SELECT); + addAccessibilityActionIfEnabled(info, isItemEnabled, + AccessibilityAction.ACTION_CLEAR_SELECTION); + } else { + addAccessibilityActionIfEnabled(info, isItemEnabled, + AccessibilityAction.ACTION_SELECT); } if (isItemClickable(view)) { - info.addAction(AccessibilityAction.ACTION_CLICK); + addAccessibilityActionIfEnabled(info, isItemEnabled, AccessibilityAction.ACTION_CLICK); info.setClickable(true); } if (isLongClickable()) { - info.addAction(AccessibilityAction.ACTION_LONG_CLICK); + addAccessibilityActionIfEnabled(info, isItemEnabled, + AccessibilityAction.ACTION_LONG_CLICK); info.setLongClickable(true); } } + + private void addAccessibilityActionIfEnabled(AccessibilityNodeInfo info, boolean enabled, + AccessibilityAction action) { + if (enabled) { + info.addAction(action); + } + } + private boolean isItemClickable(View view) { return !view.hasExplicitFocusable(); } diff --git a/core/java/android/widget/AbsSeekBar.java b/core/java/android/widget/AbsSeekBar.java index 18c6abb3f5f1..50bb6883b903 100644 --- a/core/java/android/widget/AbsSeekBar.java +++ b/core/java/android/widget/AbsSeekBar.java @@ -38,6 +38,11 @@ import android.view.accessibility.AccessibilityNodeInfo; import android.view.inspector.InspectableProperty; import com.android.internal.R; +import com.android.internal.util.Preconditions; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; /** @@ -91,6 +96,10 @@ public abstract class AbsSeekBar extends ProgressBar { @UnsupportedAppUsage private boolean mIsDragging; + private List<Rect> mUserGestureExclusionRects = Collections.emptyList(); + private final List<Rect> mGestureExclusionRects = new ArrayList<>(); + private final Rect mThumbRect = new Rect(); + public AbsSeekBar(Context context) { super(context); } @@ -735,6 +744,27 @@ public abstract class AbsSeekBar extends ProgressBar { // Canvas will be translated, so 0,0 is where we start drawing thumb.setBounds(left, top, right, bottom); + updateGestureExclusionRects(); + } + + @Override + public void setSystemGestureExclusionRects(@NonNull List<Rect> rects) { + Preconditions.checkNotNull(rects, "rects must not be null"); + mUserGestureExclusionRects = rects; + updateGestureExclusionRects(); + } + + private void updateGestureExclusionRects() { + final Drawable thumb = mThumb; + if (thumb == null) { + super.setSystemGestureExclusionRects(mUserGestureExclusionRects); + return; + } + mGestureExclusionRects.clear(); + thumb.copyBounds(mThumbRect); + mGestureExclusionRects.add(mThumbRect); + mGestureExclusionRects.addAll(mUserGestureExclusionRects); + super.setSystemGestureExclusionRects(mGestureExclusionRects); } /** diff --git a/core/java/android/widget/Editor.java b/core/java/android/widget/Editor.java index c9ef038b78de..cac75cfd8432 100644 --- a/core/java/android/widget/Editor.java +++ b/core/java/android/widget/Editor.java @@ -134,6 +134,7 @@ import java.lang.annotation.RetentionPolicy; import java.text.BreakIterator; import java.util.ArrayList; import java.util.Arrays; +import java.util.Collections; import java.util.Comparator; import java.util.HashMap; import java.util.List; @@ -5097,6 +5098,12 @@ public class Editor { void onHandleMoved() {} public void onDetached() {} + + @Override + protected void onSizeChanged(int w, int h, int oldw, int oldh) { + super.onSizeChanged(w, h, oldw, oldh); + setSystemGestureExclusionRects(Collections.singletonList(new Rect(0, 0, w, h))); + } } private class InsertionHandleView extends HandleView { diff --git a/core/java/android/widget/Magnifier.java b/core/java/android/widget/Magnifier.java index 1719015d169d..ccafa640853d 100644 --- a/core/java/android/widget/Magnifier.java +++ b/core/java/android/widget/Magnifier.java @@ -277,7 +277,7 @@ public final class Magnifier { mWindowElevation, mWindowCornerRadius, mOverlay != null ? mOverlay : new ColorDrawable(Color.TRANSPARENT), Handler.getMain() /* draw the magnifier on the UI thread */, mLock, - mDestroyLock, mCallback); + mCallback); } } performPixelCopy(startX, startY, true /* update window position */); @@ -306,11 +306,9 @@ public final class Magnifier { */ public void dismiss() { if (mWindow != null) { - synchronized (mDestroyLock) { - synchronized (mLock) { - mWindow.destroy(); - mWindow = null; - } + synchronized (mLock) { + mWindow.destroy(); + mWindow = null; } mPrevShowSourceCoords.x = NONEXISTENT_PREVIOUS_CONFIG_VALUE; mPrevShowSourceCoords.y = NONEXISTENT_PREVIOUS_CONFIG_VALUE; @@ -835,24 +833,16 @@ public final class Magnifier { private int mWindowPositionY; private boolean mPendingWindowPositionUpdate; - // The lock used to synchronize the UI and render threads when a #destroy - // is performed on the UI thread and a frame callback on the render thread. - // When both mLock and mDestroyLock need to be held at the same time, - // mDestroyLock should be acquired before mLock in order to avoid deadlocks. - private final Object mDestroyLock; - // The current content of the magnifier. It is mBitmap + mOverlay, only used for testing. private Bitmap mCurrentContent; InternalPopupWindow(final Context context, final Display display, final SurfaceControl parentSurfaceControl, final int width, final int height, final float elevation, final float cornerRadius, final Drawable overlay, - final Handler handler, final Object lock, final Object destroyLock, - final Callback callback) { + final Handler handler, final Object lock, final Callback callback) { mDisplay = display; mOverlay = overlay; mLock = lock; - mDestroyLock = destroyLock; mCallback = callback; mContentWidth = width; @@ -1039,20 +1029,17 @@ public final class Magnifier { } /** - * Destroys this instance. + * Destroys this instance. The method has to be called in a context holding {@link #mLock}. */ public void destroy() { - synchronized (mDestroyLock) { - mSurface.destroy(); - } - synchronized (mLock) { - mRenderer.destroy(); - mSurfaceControl.remove(); - mSurfaceSession.kill(); - mHandler.removeCallbacks(mMagnifierUpdater); - if (mBitmap != null) { - mBitmap.recycle(); - } + // Destroy the renderer. This will not proceed until pending frame callbacks complete. + mRenderer.destroy(); + mSurface.destroy(); + mSurfaceControl.remove(); + mSurfaceSession.kill(); + mHandler.removeCallbacks(mMagnifierUpdater); + if (mBitmap != null) { + mBitmap.recycle(); } } @@ -1090,24 +1077,20 @@ public final class Magnifier { final int pendingY = mWindowPositionY; callback = frame -> { - synchronized (mDestroyLock) { - if (!mSurface.isValid()) { - return; - } - synchronized (mLock) { - // Show or move the window at the content draw frame. - SurfaceControl.openTransaction(); - mSurfaceControl.deferTransactionUntil(mSurface, frame); - if (updateWindowPosition) { - mSurfaceControl.setPosition(pendingX, pendingY); - } - if (firstDraw) { - mSurfaceControl.setLayer(SURFACE_Z); - mSurfaceControl.show(); - } - SurfaceControl.closeTransaction(); - } + if (!mSurface.isValid()) { + return; + } + // Show or move the window at the content draw frame. + SurfaceControl.openTransaction(); + mSurfaceControl.deferTransactionUntil(mSurface, frame); + if (updateWindowPosition) { + mSurfaceControl.setPosition(pendingX, pendingY); + } + if (firstDraw) { + mSurfaceControl.setLayer(SURFACE_Z); + mSurfaceControl.show(); } + SurfaceControl.closeTransaction(); }; mRenderer.setLightCenter(mDisplay, pendingX, pendingY); } else { diff --git a/core/java/android/widget/RemoteViews.java b/core/java/android/widget/RemoteViews.java index 564d972ac26d..86cec5e0f0a2 100644 --- a/core/java/android/widget/RemoteViews.java +++ b/core/java/android/widget/RemoteViews.java @@ -206,13 +206,13 @@ public class RemoteViews implements Parcelable, Filter { * * @hide */ - @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P) + @UnsupportedAppUsage public ApplicationInfo mApplication; /** * The resource ID of the layout file. (Added to the parcel) */ - @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P) + @UnsupportedAppUsage private final int mLayoutId; /** @@ -224,13 +224,13 @@ public class RemoteViews implements Parcelable, Filter { * An array of actions to perform on the view tree once it has been * inflated */ - @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P) + @UnsupportedAppUsage private ArrayList<Action> mActions; /** * Maps bitmaps to unique indicies to avoid Bitmap duplication. */ - @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P) + @UnsupportedAppUsage private BitmapCache mBitmapCache; /** @@ -252,7 +252,7 @@ public class RemoteViews implements Parcelable, Filter { * RemoteViews. */ private RemoteViews mLandscape = null; - @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P) + @UnsupportedAppUsage private RemoteViews mPortrait = null; @ApplyFlags @@ -430,7 +430,7 @@ public class RemoteViews implements Parcelable, Filter { // Do nothing } - @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P) + @UnsupportedAppUsage public int mergeBehavior() { return MERGE_REPLACE; } @@ -466,7 +466,7 @@ public class RemoteViews implements Parcelable, Filter { // Nothing to visit by default } - @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P) + @UnsupportedAppUsage int viewId; } @@ -499,7 +499,7 @@ public class RemoteViews implements Parcelable, Filter { * * @hide */ - @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P) + @UnsupportedAppUsage public void mergeRemoteViews(RemoteViews newRv) { if (newRv == null) return; // We first copy the new RemoteViews, as the process of merging modifies the way the actions @@ -690,7 +690,7 @@ public class RemoteViews implements Parcelable, Filter { return SET_PENDING_INTENT_TEMPLATE_TAG; } - @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P) + @UnsupportedAppUsage PendingIntent pendingIntentTemplate; } @@ -1138,7 +1138,7 @@ public class RemoteViews implements Parcelable, Filter { private static class BitmapCache { - @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P) + @UnsupportedAppUsage ArrayList<Bitmap> mBitmaps; int mBitmapMemory = -1; @@ -1190,9 +1190,9 @@ public class RemoteViews implements Parcelable, Filter { private class BitmapReflectionAction extends Action { int bitmapId; - @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P) + @UnsupportedAppUsage Bitmap bitmap; - @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P) + @UnsupportedAppUsage String methodName; BitmapReflectionAction(int viewId, String methodName, Bitmap bitmap) { @@ -1258,10 +1258,10 @@ public class RemoteViews implements Parcelable, Filter { static final int COLOR_STATE_LIST = 15; static final int ICON = 16; - @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P) + @UnsupportedAppUsage String methodName; int type; - @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P) + @UnsupportedAppUsage Object value; ReflectionAction(int viewId, String methodName, int type, Object value) { @@ -1554,7 +1554,7 @@ public class RemoteViews implements Parcelable, Filter { * ViewGroup methods that are related to adding Views. */ private class ViewGroupActionAdd extends Action { - @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P) + @UnsupportedAppUsage private RemoteViews mNestedViews; private int mIndex; @@ -2469,7 +2469,7 @@ public class RemoteViews implements Parcelable, Filter { * Returns an estimate of the bitmap heap memory usage for this RemoteViews. */ /** @hide */ - @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P) + @UnsupportedAppUsage public int estimateMemoryUsage() { return mBitmapCache.getBitmapMemory(); } @@ -2517,7 +2517,7 @@ public class RemoteViews implements Parcelable, Filter { * * @hide */ - @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P) + @UnsupportedAppUsage public void addView(int viewId, RemoteViews nestedView, int index) { addAction(new ViewGroupActionAdd(viewId, nestedView, index)); } @@ -2994,7 +2994,8 @@ public class RemoteViews implements Parcelable, Filter { * @hide * @deprecated this appears to have no users outside of UnsupportedAppUsage? */ - @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P) + @UnsupportedAppUsage + @Deprecated public void setRemoteAdapter(int viewId, ArrayList<RemoteViews> list, int viewTypeCount) { addAction(new SetRemoteViewsAdapterList(viewId, list, viewTypeCount)); } diff --git a/core/java/android/widget/RemoteViewsAdapter.java b/core/java/android/widget/RemoteViewsAdapter.java index 365638f5a96a..efc5eb373e00 100644 --- a/core/java/android/widget/RemoteViewsAdapter.java +++ b/core/java/android/widget/RemoteViewsAdapter.java @@ -28,7 +28,9 @@ import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.ServiceConnection; +import android.content.pm.ActivityInfo; import android.content.pm.ApplicationInfo; +import android.content.res.Configuration; import android.os.Handler; import android.os.HandlerThread; import android.os.IBinder; @@ -555,6 +557,12 @@ public class RemoteViewsAdapter extends BaseAdapter implements Handler.Callback } /** + * Config diff flags for which the cache should be reset + */ + private static final int CACHE_RESET_CONFIG_FLAGS = ActivityInfo.CONFIG_FONT_SCALE + | ActivityInfo.CONFIG_UI_MODE | ActivityInfo.CONFIG_DENSITY + | ActivityInfo.CONFIG_ASSETS_PATHS; + /** * */ private static class FixedSizeRemoteViewsCache { @@ -587,7 +595,6 @@ public class RemoteViewsAdapter extends BaseAdapter implements Handler.Callback // farthest items from when we hit the memory limit private int mLastRequestedIndex; - // The lower and upper bounds of the preloaded range private int mPreloadLowerBound; private int mPreloadUpperBound; @@ -602,12 +609,17 @@ public class RemoteViewsAdapter extends BaseAdapter implements Handler.Callback private static final float sMaxCountSlackPercent = 0.75f; private static final int sMaxMemoryLimitInBytes = 2 * 1024 * 1024; - public FixedSizeRemoteViewsCache(int maxCacheSize) { + // Configuration for which the cache was created + private final Configuration mConfiguration; + + FixedSizeRemoteViewsCache(int maxCacheSize, Configuration configuration) { mMaxCount = maxCacheSize; mMaxCountSlack = Math.round(sMaxCountSlackPercent * (mMaxCount / 2)); mPreloadLowerBound = 0; mPreloadUpperBound = -1; mLastRequestedIndex = -1; + + mConfiguration = new Configuration(configuration); } public void insert(int position, RemoteViews v, long itemId, int[] visibleWindow) { @@ -852,7 +864,12 @@ public class RemoteViewsAdapter extends BaseAdapter implements Handler.Callback mAppWidgetId); synchronized(sCachedRemoteViewsCaches) { - if (sCachedRemoteViewsCaches.containsKey(key)) { + FixedSizeRemoteViewsCache cache = sCachedRemoteViewsCaches.get(key); + Configuration config = context.getResources().getConfiguration(); + if (cache == null + || (cache.mConfiguration.diff(config) & CACHE_RESET_CONFIG_FLAGS) != 0) { + mCache = new FixedSizeRemoteViewsCache(DEFAULT_CACHE_SIZE, config); + } else { mCache = sCachedRemoteViewsCaches.get(key); synchronized (mCache.mMetaData) { if (mCache.mMetaData.count > 0) { @@ -861,8 +878,6 @@ public class RemoteViewsAdapter extends BaseAdapter implements Handler.Callback mDataReady = true; } } - } else { - mCache = new FixedSizeRemoteViewsCache(DEFAULT_CACHE_SIZE); } if (!mDataReady) { requestBindService(); diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java index a9e183ad5bf2..62598fce5947 100644 --- a/core/java/android/widget/TextView.java +++ b/core/java/android/widget/TextView.java @@ -1011,6 +1011,8 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener */ TypedArray a = theme.obtainStyledAttributes(attrs, com.android.internal.R.styleable.TextViewAppearance, defStyleAttr, defStyleRes); + saveAttributeDataForStyleable(context, com.android.internal.R.styleable.TextViewAppearance, + attrs, a, defStyleAttr, defStyleRes); TypedArray appearance = null; int ap = a.getResourceId( com.android.internal.R.styleable.TextViewAppearance_textAppearance, -1); @@ -1018,6 +1020,8 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener if (ap != -1) { appearance = theme.obtainStyledAttributes( ap, com.android.internal.R.styleable.TextAppearance); + saveAttributeDataForStyleable(context, com.android.internal.R.styleable.TextAppearance, + null, appearance, 0, ap); } if (appearance != null) { readTextAppearance(context, appearance, attributes, false /* styleArray */); @@ -4960,6 +4964,10 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener * android.text.util.Linkify#ALL Linkify.ALL} and peers for * possible values. * + * <p class="note"><b>Note:</b> + * {@link android.text.util.Linkify#MAP_ADDRESSES Linkify.MAP_ADDRESSES} + * is deprecated and should be avoided; see its documentation. + * * @attr ref android.R.styleable#TextView_autoLink */ @android.view.RemotableViewMethod diff --git a/core/java/com/android/internal/app/ChooserActivity.java b/core/java/com/android/internal/app/ChooserActivity.java index dc3099de5015..00206fc38d1d 100644 --- a/core/java/com/android/internal/app/ChooserActivity.java +++ b/core/java/com/android/internal/app/ChooserActivity.java @@ -110,6 +110,7 @@ import android.widget.Toast; import com.android.internal.R; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.config.sysui.SystemUiDeviceConfigFlags; +import com.android.internal.content.PackageMonitor; import com.android.internal.logging.MetricsLogger; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.internal.util.ImageUtils; @@ -125,8 +126,10 @@ import java.util.Arrays; import java.util.Collections; import java.util.Comparator; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Set; /** * The Chooser Activity handles intent resolution specifically for sharing intents - @@ -185,7 +188,6 @@ public class ChooserActivity extends ResolverActivity { private static final int SHARE_TARGET_QUERY_PACKAGE_LIMIT = 20; private static final int QUERY_TARGET_SERVICE_LIMIT = 5; - private static final int WATCHDOG_TIMEOUT_MILLIS = 5000; private static final int DEFAULT_SALT_EXPIRATION_DAYS = 7; private int mMaxHashSaltDays = DeviceConfig.getInt(DeviceConfig.NAMESPACE_SYSTEMUI, @@ -211,6 +213,8 @@ public class ChooserActivity extends ResolverActivity { private ChooserRowAdapter mChooserRowAdapter; private int mChooserRowServiceSpacing; + private int mCurrAvailableWidth = 0; + /** {@link ChooserActivity#getBaseScore} */ private static final float CALLER_TARGET_SCORE_BOOST = 900.f; /** {@link ChooserActivity#getBaseScore} */ @@ -220,12 +224,7 @@ public class ChooserActivity extends ResolverActivity { private static final int MAX_RANKED_TARGETS = 4; private final List<ChooserTargetServiceConnection> mServiceConnections = new ArrayList<>(); - - private static final int CHOOSER_TARGET_SERVICE_RESULT = 1; - private static final int CHOOSER_TARGET_SERVICE_WATCHDOG_TIMEOUT = 2; - private static final int SHORTCUT_MANAGER_SHARE_TARGET_RESULT = 3; - private static final int SHORTCUT_MANAGER_SHARE_TARGET_RESULT_COMPLETED = 4; - private static final int LIST_VIEW_UPDATE_MESSAGE = 5; + private final Set<ComponentName> mServicesRequested = new HashSet<>(); private static final int MAX_LOG_RANK_POSITION = 12; @@ -255,11 +254,13 @@ public class ChooserActivity extends ResolverActivity { private ContentPreviewCoordinator mPreviewCoord; private class ContentPreviewCoordinator { - private static final int IMAGE_LOAD_TIMEOUT_MILLIS = 300; private static final int IMAGE_FADE_IN_MILLIS = 150; private static final int IMAGE_LOAD_TIMEOUT = 1; private static final int IMAGE_LOAD_INTO_VIEW = 2; + private final int mImageLoadTimeoutMillis = + getResources().getInteger(R.integer.config_shortAnimTime); + private final View mParentView; private boolean mHideParentOnFail; private boolean mAtLeastOneLoaded = false; @@ -328,7 +329,7 @@ public class ChooserActivity extends ResolverActivity { private void loadUriIntoView(final int imageResourceId, final Uri uri, final int extraImages) { - mHandler.sendEmptyMessageDelayed(IMAGE_LOAD_TIMEOUT, IMAGE_LOAD_TIMEOUT_MILLIS); + mHandler.sendEmptyMessageDelayed(IMAGE_LOAD_TIMEOUT, mImageLoadTimeoutMillis); AsyncTask.THREAD_POOL_EXECUTOR.execute(() -> { final Bitmap bmp = loadThumbnail(uri, new Size(200, 200)); @@ -347,7 +348,7 @@ public class ChooserActivity extends ResolverActivity { private void maybeHideContentPreview() { if (!mAtLeastOneLoaded && mHideParentOnFail) { Log.i(TAG, "Hiding image preview area. Timed out waiting for preview to load" - + " within " + IMAGE_LOAD_TIMEOUT_MILLIS + "ms."); + + " within " + mImageLoadTimeoutMillis + "ms."); collapseParentView(); if (mChooserRowAdapter != null) { mChooserRowAdapter.hideContentPreview(); @@ -369,7 +370,59 @@ public class ChooserActivity extends ResolverActivity { } } - private final Handler mChooserHandler = new Handler() { + private final ChooserHandler mChooserHandler = new ChooserHandler(); + + private class ChooserHandler extends Handler { + private static final int CHOOSER_TARGET_SERVICE_RESULT = 1; + private static final int CHOOSER_TARGET_SERVICE_WATCHDOG_MIN_TIMEOUT = 2; + private static final int CHOOSER_TARGET_SERVICE_WATCHDOG_MAX_TIMEOUT = 3; + private static final int SHORTCUT_MANAGER_SHARE_TARGET_RESULT = 4; + private static final int SHORTCUT_MANAGER_SHARE_TARGET_RESULT_COMPLETED = 5; + private static final int LIST_VIEW_UPDATE_MESSAGE = 6; + + private static final int WATCHDOG_TIMEOUT_MAX_MILLIS = 10000; + private static final int WATCHDOG_TIMEOUT_MIN_MILLIS = 3000; + + private boolean mMinTimeoutPassed = false; + + private void removeAllMessages() { + removeMessages(LIST_VIEW_UPDATE_MESSAGE); + removeMessages(CHOOSER_TARGET_SERVICE_WATCHDOG_MIN_TIMEOUT); + removeMessages(CHOOSER_TARGET_SERVICE_WATCHDOG_MAX_TIMEOUT); + removeMessages(CHOOSER_TARGET_SERVICE_RESULT); + removeMessages(SHORTCUT_MANAGER_SHARE_TARGET_RESULT); + removeMessages(SHORTCUT_MANAGER_SHARE_TARGET_RESULT_COMPLETED); + } + + private void restartServiceRequestTimer() { + mMinTimeoutPassed = false; + removeMessages(CHOOSER_TARGET_SERVICE_WATCHDOG_MIN_TIMEOUT); + removeMessages(CHOOSER_TARGET_SERVICE_WATCHDOG_MAX_TIMEOUT); + + if (DEBUG) { + Log.d(TAG, "queryTargets setting watchdog timer for " + + WATCHDOG_TIMEOUT_MIN_MILLIS + "-" + + WATCHDOG_TIMEOUT_MAX_MILLIS + "ms"); + } + + sendEmptyMessageDelayed(CHOOSER_TARGET_SERVICE_WATCHDOG_MIN_TIMEOUT, + WATCHDOG_TIMEOUT_MIN_MILLIS); + sendEmptyMessageDelayed(CHOOSER_TARGET_SERVICE_WATCHDOG_MAX_TIMEOUT, + WATCHDOG_TIMEOUT_MAX_MILLIS); + } + + private void maybeStopServiceRequestTimer() { + // Set a minimum timeout threshold, to ensure both apis, sharing shortcuts + // and older-style direct share services, have had time to load, otherwise + // just checking mServiceConnections could force us to end prematurely + if (mMinTimeoutPassed && mServiceConnections.isEmpty()) { + logDirectShareTargetReceived( + MetricsEvent.ACTION_DIRECT_SHARE_TARGETS_LOADED_CHOOSER_SERVICE); + sendVoiceChoicesIfNeeded(); + mChooserListAdapter.completeServiceTargetLoading(); + } + } + @Override public void handleMessage(Message msg) { if (mChooserListAdapter == null || isDestroyed()) { @@ -393,23 +446,17 @@ public class ChooserActivity extends ResolverActivity { unbindService(sri.connection); sri.connection.destroy(); mServiceConnections.remove(sri.connection); - if (mServiceConnections.isEmpty()) { - logDirectShareTargetReceived( - MetricsEvent.ACTION_DIRECT_SHARE_TARGETS_LOADED_CHOOSER_SERVICE); - sendVoiceChoicesIfNeeded(); - } + maybeStopServiceRequestTimer(); break; - case CHOOSER_TARGET_SERVICE_WATCHDOG_TIMEOUT: - if (DEBUG) { - Log.d(TAG, "CHOOSER_TARGET_SERVICE_WATCHDOG_TIMEOUT; unbinding services"); - } + case CHOOSER_TARGET_SERVICE_WATCHDOG_MIN_TIMEOUT: + mMinTimeoutPassed = true; + maybeStopServiceRequestTimer(); + break; + case CHOOSER_TARGET_SERVICE_WATCHDOG_MAX_TIMEOUT: unbindRemainingServices(); - logDirectShareTargetReceived( - MetricsEvent.ACTION_DIRECT_SHARE_TARGETS_LOADED_CHOOSER_SERVICE); - sendVoiceChoicesIfNeeded(); - mChooserListAdapter.completeServiceTargetLoading(); + maybeStopServiceRequestTimer(); break; case LIST_VIEW_UPDATE_MESSAGE: @@ -669,6 +716,17 @@ public class ChooserActivity extends ResolverActivity { .getUserInfo(UserHandle.myUserId()).isManagedProfile(); } + @Override + protected PackageMonitor createPackageMonitor() { + return new PackageMonitor() { + @Override + public void onSomePackagesChanged() { + mAdapter.handlePackagesChanged(); + bindProfileView(); + } + }; + } + private void onCopyButtonClicked(View v) { Intent targetIntent = getTargetIntent(); if (targetIntent == null) { @@ -1065,11 +1123,7 @@ public class ChooserActivity extends ResolverActivity { mRefinementResultReceiver = null; } unbindRemainingServices(); - mChooserHandler.removeMessages(LIST_VIEW_UPDATE_MESSAGE); - mChooserHandler.removeMessages(CHOOSER_TARGET_SERVICE_WATCHDOG_TIMEOUT); - mChooserHandler.removeMessages(CHOOSER_TARGET_SERVICE_RESULT); - mChooserHandler.removeMessages(SHORTCUT_MANAGER_SHARE_TARGET_RESULT); - mChooserHandler.removeMessages(SHORTCUT_MANAGER_SHARE_TARGET_RESULT_COMPLETED); + mChooserHandler.removeAllMessages(); if (mPreviewCoord != null) mPreviewCoord.cancelLoads(); @@ -1307,6 +1361,7 @@ public class ChooserActivity extends ResolverActivity { final PackageManager pm = getPackageManager(); ShortcutManager sm = (ShortcutManager) getSystemService(ShortcutManager.class); int targetsToQuery = 0; + for (int i = 0, N = adapter.getDisplayResolveInfoCount(); i < N; i++) { final DisplayResolveInfo dri = adapter.getDisplayResolveInfo(i); if (adapter.getScore(dri) == 0) { @@ -1326,6 +1381,12 @@ public class ChooserActivity extends ResolverActivity { if (serviceName != null) { final ComponentName serviceComponent = new ComponentName( ai.packageName, serviceName); + + if (mServicesRequested.contains(serviceComponent)) { + continue; + } + mServicesRequested.add(serviceComponent); + final Intent serviceIntent = new Intent(ChooserTargetService.SERVICE_INTERFACE) .setComponent(serviceComponent); @@ -1376,16 +1437,7 @@ public class ChooserActivity extends ResolverActivity { } } - if (DEBUG) { - Log.d(TAG, "queryTargets setting watchdog timer for " - + WATCHDOG_TIMEOUT_MILLIS + "ms"); - } - mChooserHandler.sendEmptyMessageDelayed(CHOOSER_TARGET_SERVICE_WATCHDOG_TIMEOUT, - WATCHDOG_TIMEOUT_MILLIS); - - if (mServiceConnections.isEmpty()) { - sendVoiceChoicesIfNeeded(); - } + mChooserHandler.restartServiceRequestTimer(); } private IntentFilter getTargetIntentFilter() { @@ -1482,7 +1534,11 @@ public class ChooserActivity extends ResolverActivity { if (driList.get(i).getResolvedComponentName().equals( resultList.get(j).getTargetComponent())) { ShortcutManager.ShareShortcutInfo shareShortcutInfo = resultList.get(j); - ChooserTarget chooserTarget = convertToChooserTarget(shareShortcutInfo); + // Incoming results are ordered but without a score. Create a score + // based on the index in order to be sorted appropriately when joined + // with legacy direct share api results. + float score = Math.max(1.0f - (0.05f * j), 0.0f); + ChooserTarget chooserTarget = convertToChooserTarget(shareShortcutInfo, score); chooserTargets.add(chooserTarget); if (mDirectShareAppTargetCache != null && appTargets != null) { mDirectShareAppTargetCache.put(chooserTarget, appTargets.get(j)); @@ -1493,7 +1549,7 @@ public class ChooserActivity extends ResolverActivity { continue; } final Message msg = Message.obtain(); - msg.what = SHORTCUT_MANAGER_SHARE_TARGET_RESULT; + msg.what = ChooserHandler.SHORTCUT_MANAGER_SHARE_TARGET_RESULT; msg.obj = new ServiceResultInfo(driList.get(i), chooserTargets, null); mChooserHandler.sendMessage(msg); resultMessageSent = true; @@ -1506,7 +1562,7 @@ public class ChooserActivity extends ResolverActivity { private void sendShortcutManagerShareTargetResultCompleted() { final Message msg = Message.obtain(); - msg.what = SHORTCUT_MANAGER_SHARE_TARGET_RESULT_COMPLETED; + msg.what = ChooserHandler.SHORTCUT_MANAGER_SHARE_TARGET_RESULT_COMPLETED; mChooserHandler.sendMessage(msg); } @@ -1528,7 +1584,8 @@ public class ChooserActivity extends ResolverActivity { return false; } - private ChooserTarget convertToChooserTarget(ShortcutManager.ShareShortcutInfo shareShortcut) { + private ChooserTarget convertToChooserTarget(ShortcutManager.ShareShortcutInfo shareShortcut, + float score) { ShortcutInfo shortcutInfo = shareShortcut.getShortcutInfo(); Bundle extras = new Bundle(); extras.putString(Intent.EXTRA_SHORTCUT_ID, shortcutInfo.getId()); @@ -1539,7 +1596,7 @@ public class ChooserActivity extends ResolverActivity { null, // The ranking score for this target (0.0-1.0); the system will omit items with low // scores when there are too many Direct Share items. - 1.0f, + score, // The name of the component to be launched if this target is chosen. shareShortcut.getTargetComponent().clone(), // The extra values here will be merged into the Intent when this target is chosen. @@ -1574,6 +1631,7 @@ public class ChooserActivity extends ResolverActivity { unbindService(conn); conn.destroy(); } + mServicesRequested.clear(); mServiceConnections.clear(); } @@ -2198,10 +2256,12 @@ public class ChooserActivity extends ResolverActivity { return; } - int availableWidth = right - left - v.getPaddingLeft() - v.getPaddingRight(); + final int availableWidth = right - left - v.getPaddingLeft() - v.getPaddingRight(); if (mChooserRowAdapter.consumeLayoutRequest() || mChooserRowAdapter.calculateChooserTargetWidth(availableWidth) - || mAdapterView.getAdapter() == null) { + || mAdapterView.getAdapter() == null + || availableWidth != mCurrAvailableWidth) { + mCurrAvailableWidth = availableWidth; mAdapterView.setAdapter(mChooserRowAdapter); getMainThreadHandler().post(() -> { @@ -2272,17 +2332,18 @@ public class ChooserActivity extends ResolverActivity { private static final int MAX_SUGGESTED_APP_TARGETS = 4; private static final int MAX_CHOOSER_TARGETS_PER_APP = 2; - private static final int MAX_SHORTCUT_TARGETS_PER_APP = 8; private static final int MAX_SERVICE_TARGETS = 8; + private final int mMaxShortcutTargetsPerApp = + getResources().getInteger(R.integer.config_maxShortcutTargetsPerApp); + private int mNumShortcutResults = 0; // Reserve spots for incoming direct share targets by adding placeholders private ChooserTargetInfo mPlaceHolderTargetInfo = new PlaceHolderTargetInfo(); private final List<ChooserTargetInfo> mServiceTargets = new ArrayList<>(); private final List<TargetInfo> mCallerTargets = new ArrayList<>(); - private boolean mTargetsNeedPruning = false; private final BaseChooserTargetComparator mBaseTargetComparator = new BaseChooserTargetComparator(); @@ -2351,9 +2412,21 @@ public class ChooserActivity extends ResolverActivity { } @Override + public void handlePackagesChanged() { + if (DEBUG) { + Log.d(TAG, "clearing queryTargets on package change"); + } + createPlaceHolders(); + mServicesRequested.clear(); + notifyDataSetChanged(); + + super.handlePackagesChanged(); + } + + @Override public void notifyDataSetChanged() { if (!mListViewDataChanged) { - mChooserHandler.sendEmptyMessageDelayed(LIST_VIEW_UPDATE_MESSAGE, + mChooserHandler.sendEmptyMessageDelayed(ChooserHandler.LIST_VIEW_UPDATE_MESSAGE, LIST_VIEW_UPDATE_INTERVAL_IN_MILLIS); mListViewDataChanged = true; } @@ -2368,6 +2441,7 @@ public class ChooserActivity extends ResolverActivity { private void createPlaceHolders() { + mNumShortcutResults = 0; mServiceTargets.clear(); for (int i = 0; i < MAX_SERVICE_TARGETS; i++) { mServiceTargets.add(mPlaceHolderTargetInfo); @@ -2410,16 +2484,6 @@ public class ChooserActivity extends ResolverActivity { return; } - if (mServiceTargets != null) { - if (getDisplayResolveInfoCount() == 0) { - // b/109676071: When packages change, onListRebuilt() is called before - // ResolverActivity.mDisplayList is re-populated; pruning now would cause the - // list to disappear briefly, so instead we detect this case (the - // set of targets suddenly dropping to zero) and remember to prune later. - mTargetsNeedPruning = true; - } - } - if (USE_SHORTCUT_MANAGER_FOR_DIRECT_TARGETS || USE_PREDICTION_MANAGER_FOR_DIRECT_TARGETS) { if (DEBUG) { @@ -2476,7 +2540,7 @@ public class ChooserActivity extends ResolverActivity { } public int getServiceTargetCount() { - if (isSendAction(getTargetIntent())) { + if (isSendAction(getTargetIntent()) && !ActivityManager.isLowRamDeviceStatic()) { return Math.min(mServiceTargets.size(), MAX_SERVICE_TARGETS); } @@ -2588,23 +2652,10 @@ public class ChooserActivity extends ResolverActivity { return; } - if (mTargetsNeedPruning) { - // First proper update since we got an onListRebuilt() with (transient) 0 items. - // Clear out the target list and rebuild. - createPlaceHolders(); - mTargetsNeedPruning = false; - - // Add back any app-supplied direct share targets that may have been - // wiped by this clear - if (mCallerChooserTargets != null) { - addServiceResults(null, Lists.newArrayList(mCallerChooserTargets), false); - } - } - final float baseScore = getBaseScore(origTarget, isShortcutResult); Collections.sort(targets, mBaseTargetComparator); - final int maxTargets = isShortcutResult ? MAX_SHORTCUT_TARGETS_PER_APP + final int maxTargets = isShortcutResult ? mMaxShortcutTargetsPerApp : MAX_CHOOSER_TARGETS_PER_APP; float lastScore = 0; boolean shouldNotify = false; @@ -3445,7 +3496,7 @@ public class ChooserActivity extends ResolverActivity { mChooserActivity.filterServiceTargets( mOriginalTarget.getResolveInfo().activityInfo.packageName, targets); final Message msg = Message.obtain(); - msg.what = CHOOSER_TARGET_SERVICE_RESULT; + msg.what = ChooserHandler.CHOOSER_TARGET_SERVICE_RESULT; msg.obj = new ServiceResultInfo(mOriginalTarget, targets, ChooserTargetServiceConnection.this); mChooserActivity.mChooserHandler.sendMessage(msg); diff --git a/core/java/com/android/internal/app/ResolverActivity.java b/core/java/com/android/internal/app/ResolverActivity.java index 9573ac0899f5..f905ea2dc6f2 100644 --- a/core/java/com/android/internal/app/ResolverActivity.java +++ b/core/java/com/android/internal/app/ResolverActivity.java @@ -29,7 +29,6 @@ import android.app.ActivityThread; import android.app.VoiceInteractor.PickOptionRequest; import android.app.VoiceInteractor.PickOptionRequest.Option; import android.app.VoiceInteractor.Prompt; -import android.app.role.RoleManager; import android.content.ComponentName; import android.content.Context; import android.content.Intent; @@ -111,7 +110,6 @@ public class ResolverActivity extends Activity { protected AbsListView mAdapterView; private Button mAlwaysButton; private Button mOnceButton; - private Button mSettingsButton; protected View mProfileView; private int mIconDpi; private int mLastSelected = AbsListView.INVALID_POSITION; @@ -146,19 +144,11 @@ public class ResolverActivity extends Activity { /** See {@link #setRetainInOnStop}. */ private boolean mRetainInOnStop; - private final PackageMonitor mPackageMonitor = new PackageMonitor() { - @Override public void onSomePackagesChanged() { - mAdapter.handlePackagesChanged(); - bindProfileView(); - } + private static final String EXTRA_SHOW_FRAGMENT_ARGS = ":settings:show_fragment_args"; + private static final String EXTRA_FRAGMENT_ARG_KEY = ":settings:fragment_args_key"; + private static final String OPEN_LINKS_COMPONENT_KEY = "app_link_state"; - @Override - public boolean onPackageChanged(String packageName, int uid, String[] components) { - // We care about all package changes, not just the whole package itself which is - // default behavior. - return true; - } - }; + private final PackageMonitor mPackageMonitor = createPackageMonitor(); /** * Get the string resource to be used as a label for the link to the resolver activity for an @@ -208,9 +198,13 @@ public class ResolverActivity extends Activity { // titles for layout that deals with http(s) intents public static final int BROWSABLE_TITLE_RES = - com.android.internal.R.string.whichGiveAccessToApplication; - public static final int BROWSABLE_NAMED_TITLE_RES = - com.android.internal.R.string.whichGiveAccessToApplicationNamed; + com.android.internal.R.string.whichOpenLinksWith; + public static final int BROWSABLE_HOST_TITLE_RES = + com.android.internal.R.string.whichOpenHostLinksWith; + public static final int BROWSABLE_HOST_APP_TITLE_RES = + com.android.internal.R.string.whichOpenHostLinksWithApp; + public static final int BROWSABLE_APP_TITLE_RES = + com.android.internal.R.string.whichOpenLinksWithApp; public final String action; public final int titleRes; @@ -234,6 +228,23 @@ public class ResolverActivity extends Activity { } } + protected PackageMonitor createPackageMonitor() { + return new PackageMonitor() { + @Override + public void onSomePackagesChanged() { + mAdapter.handlePackagesChanged(); + bindProfileView(); + } + + @Override + public boolean onPackageChanged(String packageName, int uid, String[] components) { + // We care about all package changes, not just the whole package itself which is + // default behavior. + return true; + } + }; + } + private Intent makeMyIntent() { Intent intent = new Intent(getIntent()); intent.setComponent(null); @@ -317,9 +328,7 @@ public class ResolverActivity extends Activity { ? false : isHttpSchemeAndViewAction(getTargetIntent()); - // We don't want to support Always Use if browsable layout is being used, - // as to mitigate Intent Capturing vulnerability - mSupportsAlwaysUseOption = supportsAlwaysUseOption && !mUseLayoutForBrowsables; + mSupportsAlwaysUseOption = supportsAlwaysUseOption; if (configureContentView(mIntents, initialIntents, rList)) { return; @@ -549,10 +558,21 @@ public class ResolverActivity extends Activity { } else if (isHttpSchemeAndViewAction(intent)) { // If the Intent's scheme is http(s) then we need to warn the user that // they're giving access for the activity to open URLs from this specific host - return named - ? getString(ActionTitle.BROWSABLE_NAMED_TITLE_RES, intent.getData().getHost(), - mAdapter.getFilteredItem().getDisplayLabel()) - : getString(ActionTitle.BROWSABLE_TITLE_RES, intent.getData().getHost()); + String dialogTitle = null; + if (named && !mUseLayoutForBrowsables) { + dialogTitle = getString(ActionTitle.BROWSABLE_APP_TITLE_RES, + mAdapter.getFilteredItem().getDisplayLabel()); + } else if (named && mUseLayoutForBrowsables) { + dialogTitle = getString(ActionTitle.BROWSABLE_HOST_APP_TITLE_RES, + intent.getData().getHost(), + mAdapter.getFilteredItem().getDisplayLabel()); + } else if (mAdapter.areAllTargetsBrowsers()) { + dialogTitle = getString(ActionTitle.BROWSABLE_TITLE_RES); + } else { + dialogTitle = getString(ActionTitle.BROWSABLE_HOST_TITLE_RES, + intent.getData().getHost()); + } + return dialogTitle; } else { return named ? getString(title.namedTitleRes, mAdapter.getFilteredItem().getDisplayLabel()) @@ -851,6 +871,13 @@ public class ResolverActivity extends Activity { } else { enabled = true; } + if (mUseLayoutForBrowsables && !ri.handleAllWebDataURI) { + mAlwaysButton.setText(getResources() + .getString(R.string.activity_resolver_set_always)); + } else { + mAlwaysButton.setText(getResources() + .getString(R.string.activity_resolver_use_always)); + } } mAlwaysButton.setEnabled(enabled); } @@ -861,26 +888,29 @@ public class ResolverActivity extends Activity { ? mAdapter.getFilteredPosition() : mAdapterView.getCheckedItemPosition(); boolean hasIndexBeenFiltered = !mAdapter.hasFilteredItem(); - if (id == R.id.button_app_settings) { - showSettingsForSelected(which, hasIndexBeenFiltered); + ResolveInfo ri = mAdapter.resolveInfoForPosition(which, hasIndexBeenFiltered); + if (!ri.handleAllWebDataURI && id == R.id.button_always) { + showSettingsForSelected(ri); } else { startSelected(which, id == R.id.button_always, hasIndexBeenFiltered); } } - private void showSettingsForSelected(int which, boolean hasIndexBeenFiltered) { - ResolveInfo ri = mAdapter.resolveInfoForPosition(which, hasIndexBeenFiltered); + private void showSettingsForSelected(ResolveInfo ri) { Intent intent = new Intent(); - // For browsers, we open the Default Browser page + + final String packageName = ri.activityInfo.packageName; + Bundle showFragmentArgs = new Bundle(); + showFragmentArgs.putString(EXTRA_FRAGMENT_ARG_KEY, OPEN_LINKS_COMPONENT_KEY); + showFragmentArgs.putString("package", packageName); + // For regular apps, we open the Open by Default page - if (ri.handleAllWebDataURI) { - intent.setAction(Intent.ACTION_MANAGE_DEFAULT_APP) - .putExtra(Intent.EXTRA_ROLE_NAME, RoleManager.ROLE_BROWSER); - } else { - intent.setAction(Settings.ACTION_APP_OPEN_BY_DEFAULT_SETTINGS) - .setData(Uri.fromParts("package", ri.activityInfo.packageName, null)) - .addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT); - } + intent.setAction(Settings.ACTION_APP_OPEN_BY_DEFAULT_SETTINGS) + .setData(Uri.fromParts("package", packageName, null)) + .addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT) + .putExtra(EXTRA_FRAGMENT_ARG_KEY, OPEN_LINKS_COMPONENT_KEY) + .putExtra(EXTRA_SHOW_FRAGMENT_ARGS, showFragmentArgs); + startActivity(intent); } @@ -1327,41 +1357,15 @@ public class ResolverActivity extends Activity { R.dimen.resolver_button_bar_spacing) + inset); mOnceButton = (Button) buttonLayout.findViewById(R.id.button_once); - mSettingsButton = (Button) buttonLayout.findViewById(R.id.button_app_settings); mAlwaysButton = (Button) buttonLayout.findViewById(R.id.button_always); - if (mUseLayoutForBrowsables) { - resetSettingsOrOnceButtonBar(); - } else { - resetAlwaysOrOnceButtonBar(); - } + resetAlwaysOrOnceButtonBar(); } else { Log.e(TAG, "Layout unexpectedly does not have a button bar"); } } - private void resetSettingsOrOnceButtonBar() { - //unsetting always button - mAlwaysButton.setVisibility(View.GONE); - - // When the items load in, if an item was already selected, - // enable the buttons - if (mAdapterView != null - && mAdapterView.getCheckedItemPosition() != ListView.INVALID_POSITION) { - mSettingsButton.setEnabled(true); - mOnceButton.setEnabled(true); - } - } - private void resetAlwaysOrOnceButtonBar() { - // This check needs to be made because layout with default - // doesn't have a settings button - if (mSettingsButton != null) { - //unsetting always button - mSettingsButton.setVisibility(View.GONE); - mSettingsButton = null; - } - if (useLayoutWithDefault() && mAdapter.getFilteredPosition() != ListView.INVALID_POSITION) { setAlwaysButtonEnabled(true, mAdapter.getFilteredPosition(), false); @@ -1621,6 +1625,7 @@ public class ResolverActivity extends Activity { private DisplayResolveInfo mOtherProfile; private ResolverListController mResolverListController; private int mPlaceholderCount; + private boolean mAllTargetsAreBrowsers = false; protected final LayoutInflater mInflater; @@ -1696,6 +1701,14 @@ public class ResolverActivity extends Activity { } /** + * @return true if all items in the display list are defined as browsers by + * ResolveInfo.handleAllWebDataURI + */ + public boolean areAllTargetsBrowsers() { + return mAllTargetsAreBrowsers; + } + + /** * Rebuild the list of resolvers. In some cases some parts will need some asynchronous work * to complete. * @@ -1707,6 +1720,7 @@ public class ResolverActivity extends Activity { mOtherProfile = null; mLastChosen = null; mLastChosenPosition = -1; + mAllTargetsAreBrowsers = false; mDisplayList.clear(); if (mBaseResolveList != null) { currentResolveList = mUnfilteredResolveList = new ArrayList<>(); @@ -1807,6 +1821,8 @@ public class ResolverActivity extends Activity { private void processSortedList(List<ResolvedComponentInfo> sortedComponents) { int N; if (sortedComponents != null && (N = sortedComponents.size()) != 0) { + mAllTargetsAreBrowsers = mUseLayoutForBrowsables; + // First put the initial items at the top. if (mInitialIntents != null) { for (int i = 0; i < mInitialIntents.length; i++) { @@ -1836,6 +1852,8 @@ public class ResolverActivity extends Activity { ri.noResourceId = true; ri.icon = 0; } + mAllTargetsAreBrowsers &= ri.handleAllWebDataURI; + addResolveInfo(new DisplayResolveInfo(ii, ri, ri.loadLabel(getPackageManager()), null, ii)); } @@ -1845,6 +1863,8 @@ public class ResolverActivity extends Activity { for (ResolvedComponentInfo rci : sortedComponents) { final ResolveInfo ri = rci.getResolveInfoAt(0); if (ri != null) { + mAllTargetsAreBrowsers &= ri.handleAllWebDataURI; + ResolveInfoPresentationGetter pg = makePresentationGetter(ri); addResolveInfoWithAlternates(rci, pg.getSubLabel(), pg.getLabel()); } @@ -2147,14 +2167,8 @@ public class ResolverActivity extends Activity { final boolean hasValidSelection = checkedPos != ListView.INVALID_POSITION; if (!useLayoutWithDefault() && (!hasValidSelection || mLastSelected != checkedPos) - && (mAlwaysButton != null || mSettingsButton != null)) { - if (mSettingsButton != null) { - // this implies that the layout for browsables is being used - mSettingsButton.setEnabled(true); - } else { - // this implies that mAlwaysButton != null - setAlwaysButtonEnabled(hasValidSelection, checkedPos, true); - } + && mAlwaysButton != null) { + setAlwaysButtonEnabled(hasValidSelection, checkedPos, true); mOnceButton.setEnabled(hasValidSelection); if (hasValidSelection) { mAdapterView.smoothScrollToPosition(checkedPos); diff --git a/core/java/com/android/internal/colorextraction/ColorExtractor.java b/core/java/com/android/internal/colorextraction/ColorExtractor.java index d9fd3b5bd6d8..b27c11b524e5 100644 --- a/core/java/com/android/internal/colorextraction/ColorExtractor.java +++ b/core/java/com/android/internal/colorextraction/ColorExtractor.java @@ -53,11 +53,13 @@ public class ColorExtractor implements WallpaperManager.OnColorsChangedListener protected WallpaperColors mLockColors; public ColorExtractor(Context context) { - this(context, new Tonal(context), true /* immediately */); + this(context, new Tonal(context), true /* immediately */, + context.getSystemService(WallpaperManager.class)); } @VisibleForTesting - public ColorExtractor(Context context, ExtractionType extractionType, boolean immediately) { + public ColorExtractor(Context context, ExtractionType extractionType, boolean immediately, + WallpaperManager wallpaperManager) { mContext = context; mExtractionType = extractionType; @@ -72,7 +74,6 @@ public class ColorExtractor implements WallpaperManager.OnColorsChangedListener mOnColorsChangedListeners = new ArrayList<>(); - WallpaperManager wallpaperManager = mContext.getSystemService(WallpaperManager.class); if (wallpaperManager == null) { Log.w(TAG, "Can't listen to color changes!"); } else { @@ -110,7 +111,7 @@ public class ColorExtractor implements WallpaperManager.OnColorsChangedListener } } - private void extractWallpaperColors() { + protected void extractWallpaperColors() { GradientColors[] systemColors = mGradientColors.get(WallpaperManager.FLAG_SYSTEM); GradientColors[] lockColors = mGradientColors.get(WallpaperManager.FLAG_LOCK); extractInto(mSystemColors, diff --git a/core/java/com/android/internal/config/sysui/SystemUiDeviceConfigFlags.java b/core/java/com/android/internal/config/sysui/SystemUiDeviceConfigFlags.java index 48ca766f0da2..4daddfbfb204 100644 --- a/core/java/com/android/internal/config/sysui/SystemUiDeviceConfigFlags.java +++ b/core/java/com/android/internal/config/sysui/SystemUiDeviceConfigFlags.java @@ -120,6 +120,26 @@ public final class SystemUiDeviceConfigFlags { "assist_handles_show_and_go_duration_ms"; /** + * (long) How long, in milliseconds, to wait before showing the Assist Handles temporarily when + * performing a short delayed show. + */ + public static final String ASSIST_HANDLES_SHOW_AND_GO_DELAYED_SHORT_DELAY_MS = + "assist_handles_show_and_go_delayed_short_delay_ms"; + + /** + * (long) How long, in milliseconds, to wait before showing the Assist Handles temporarily when + * performing a long delayed show. + */ + public static final String ASSIST_HANDLES_SHOW_AND_GO_DELAYED_LONG_DELAY_MS = + "assist_handles_show_and_go_delayed_long_delay_ms"; + + /** + * (long) How long, in milliseconds, to wait before resetting delayed show delay times. + */ + public static final String ASSIST_HANDLES_SHOW_AND_GO_DELAY_RESET_TIMEOUT_MS = + "assist_handles_show_and_go_delay_reset_timeout_ms"; + + /** * (long) How long, in milliseconds, to wait before displaying Assist Handles temporarily after * hiding them. */ @@ -138,5 +158,34 @@ public final class SystemUiDeviceConfigFlags { */ public static final String ASSIST_HANDLES_LEARN_COUNT = "assist_handles_learn_count"; + /** + * (bool) Whether to suppress handles on lockscreen." + */ + public static final String ASSIST_HANDLES_SUPPRESS_ON_LOCKSCREEN = + "assist_handles_suppress_on_lockscreen"; + + /** + * (bool) Whether to suppress handles on launcher." + */ + public static final String ASSIST_HANDLES_SUPPRESS_ON_LAUNCHER = + "assist_handles_suppress_on_launcher"; + + /** + * (bool) Whether to suppress handles on apps." + */ + public static final String ASSIST_HANDLES_SUPPRESS_ON_APPS = + "assist_handles_suppress_on_apps"; + + /** + * (bool) Whether to show handles when taught. + */ + public static final String ASSIST_HANDLES_SHOW_WHEN_TAUGHT = "assist_handles_show_when_taught"; + + /** + * (bool) Whether to use the new BrightLineFalsingManager. + */ + public static final String BRIGHTLINE_FALSING_MANAGER_ENABLED = + "brightline_falsing_manager_enabled"; + private SystemUiDeviceConfigFlags() { } } diff --git a/core/java/com/android/internal/infra/AbstractSinglePendingRequestRemoteService.java b/core/java/com/android/internal/infra/AbstractSinglePendingRequestRemoteService.java index 2ebf2fd820d8..aacf63a112b1 100644 --- a/core/java/com/android/internal/infra/AbstractSinglePendingRequestRemoteService.java +++ b/core/java/com/android/internal/infra/AbstractSinglePendingRequestRemoteService.java @@ -60,10 +60,16 @@ public abstract class AbstractSinglePendingRequestRemoteService<S @Override // from AbstractRemoteService protected void handleOnDestroy() { - if (mPendingRequest != null) { - mPendingRequest.cancel(); + handleCancelPendingRequest(); + } + + protected BasePendingRequest<S, I> handleCancelPendingRequest() { + BasePendingRequest<S, I> pendingRequest = mPendingRequest; + if (pendingRequest != null) { + pendingRequest.cancel(); mPendingRequest = null; } + return pendingRequest; } @Override // from AbstractRemoteService diff --git a/core/java/com/android/internal/net/VpnInfo.java b/core/java/com/android/internal/net/VpnInfo.java index e74af5eb50de..b1a412871bd2 100644 --- a/core/java/com/android/internal/net/VpnInfo.java +++ b/core/java/com/android/internal/net/VpnInfo.java @@ -19,8 +19,6 @@ package com.android.internal.net; import android.os.Parcel; import android.os.Parcelable; -import java.util.Arrays; - /** * A lightweight container used to carry information of the ongoing VPN. * Internal use only.. @@ -30,14 +28,14 @@ import java.util.Arrays; public class VpnInfo implements Parcelable { public int ownerUid; public String vpnIface; - public String[] underlyingIfaces; + public String primaryUnderlyingIface; @Override public String toString() { return "VpnInfo{" + "ownerUid=" + ownerUid + ", vpnIface='" + vpnIface + '\'' - + ", underlyingIfaces='" + Arrays.toString(underlyingIfaces) + '\'' + + ", primaryUnderlyingIface='" + primaryUnderlyingIface + '\'' + '}'; } @@ -50,7 +48,7 @@ public class VpnInfo implements Parcelable { public void writeToParcel(Parcel dest, int flags) { dest.writeInt(ownerUid); dest.writeString(vpnIface); - dest.writeStringArray(underlyingIfaces); + dest.writeString(primaryUnderlyingIface); } public static final Parcelable.Creator<VpnInfo> CREATOR = new Parcelable.Creator<VpnInfo>() { @@ -59,7 +57,7 @@ public class VpnInfo implements Parcelable { VpnInfo info = new VpnInfo(); info.ownerUid = source.readInt(); info.vpnIface = source.readString(); - info.underlyingIfaces = source.readStringArray(); + info.primaryUnderlyingIface = source.readString(); return info; } diff --git a/core/java/com/android/internal/os/BatteryStatsImpl.java b/core/java/com/android/internal/os/BatteryStatsImpl.java index c2e37d5adca8..3a7caa4c2fc0 100644 --- a/core/java/com/android/internal/os/BatteryStatsImpl.java +++ b/core/java/com/android/internal/os/BatteryStatsImpl.java @@ -3609,8 +3609,8 @@ public class BatteryStatsImpl extends BatteryStats { public void createFakeHistoryEvents(long numEvents) { for(long i = 0; i < numEvents; i++) { - noteWifiOnLocked(); - noteWifiOffLocked(); + noteLongPartialWakelockStart("name1", "historyName1", 1000); + noteLongPartialWakelockFinish("name1", "historyName1", 1000); } } @@ -3693,9 +3693,10 @@ public class BatteryStatsImpl extends BatteryStats { mHistoryBufferLastPos = -1; final long elapsedRealtime = mClocks.elapsedRealtime(); final long uptime = mClocks.uptimeMillis(); + HistoryItem newItem = new HistoryItem(); + newItem.setTo(cur); startRecordingHistory(elapsedRealtime, uptime, false); - - addHistoryBufferLocked(elapsedRealtimeMs, HistoryItem.CMD_UPDATE, cur); + addHistoryBufferLocked(elapsedRealtimeMs, HistoryItem.CMD_UPDATE, newItem); return; } diff --git a/core/java/com/android/internal/os/Zygote.java b/core/java/com/android/internal/os/Zygote.java index 2736c6a7149f..2ba9cf1961e9 100644 --- a/core/java/com/android/internal/os/Zygote.java +++ b/core/java/com/android/internal/os/Zygote.java @@ -512,13 +512,13 @@ public final class Zygote { Credentials peerCredentials = null; ZygoteArguments args = null; - // Load resources - ZygoteInit.nativePreloadGraphicsDriver(); - while (true) { try { sessionSocket = usapPoolSocket.accept(); + // Block SIGTERM so we won't be killed if the Zygote flushes the USAP pool. + blockSigTerm(); + BufferedReader usapReader = new BufferedReader(new InputStreamReader(sessionSocket.getInputStream())); usapOutputStream = @@ -537,87 +537,116 @@ public final class Zygote { } else { Log.e("USAP", "Truncated command received."); IoUtils.closeQuietly(sessionSocket); + + // Re-enable SIGTERM so the USAP can be flushed from the pool if necessary. + unblockSigTerm(); } } catch (Exception ex) { Log.e("USAP", ex.getMessage()); IoUtils.closeQuietly(sessionSocket); + + // Re-enable SIGTERM so the USAP can be flushed from the pool if necessary. + unblockSigTerm(); } } - applyUidSecurityPolicy(args, peerCredentials); - applyDebuggerSystemProperty(args); + try { + // SIGTERM is blocked on loop exit. This prevents a USAP that is specializing from + // being killed during a pool flush. - int[][] rlimits = null; + applyUidSecurityPolicy(args, peerCredentials); + applyDebuggerSystemProperty(args); - if (args.mRLimits != null) { - rlimits = args.mRLimits.toArray(INT_ARRAY_2D); - } + int[][] rlimits = null; - // This must happen before the SELinux policy for this process is - // changed when specializing. - try { - // Used by ZygoteProcess.zygoteSendArgsAndGetResult to fill in a - // Process.ProcessStartResult object. - usapOutputStream.writeInt(pid); - } catch (IOException ioEx) { - Log.e("USAP", "Failed to write response to session socket: " + ioEx.getMessage()); - System.exit(-1); - } finally { - IoUtils.closeQuietly(sessionSocket); + if (args.mRLimits != null) { + rlimits = args.mRLimits.toArray(INT_ARRAY_2D); + } + // This must happen before the SELinux policy for this process is + // changed when specializing. try { - // This socket is closed using Os.close due to an issue with the implementation of - // LocalSocketImp.close. Because the raw FD is created by init and then loaded from - // an environment variable (as opposed to being created by the LocalSocketImpl - // itself) the current implementation will not actually close the underlying FD. - // - // See b/130309968 for discussion of this issue. - Os.close(usapPoolSocket.getFileDescriptor()); - } catch (ErrnoException ex) { - Log.e("USAP", "Failed to close USAP pool socket: " + ex.getMessage()); + // Used by ZygoteProcess.zygoteSendArgsAndGetResult to fill in a + // Process.ProcessStartResult object. + usapOutputStream.writeInt(pid); + } catch (IOException ioEx) { + Log.e("USAP", "Failed to write response to session socket: " + + ioEx.getMessage()); + throw new RuntimeException(ioEx); + } finally { + IoUtils.closeQuietly(sessionSocket); + + try { + // This socket is closed using Os.close due to an issue with the implementation + // of LocalSocketImp.close(). Because the raw FD is created by init and then + // loaded from an environment variable (as opposed to being created by the + // LocalSocketImpl itself) the current implementation will not actually close + // the underlying FD. + // + // See b/130309968 for discussion of this issue. + Os.close(usapPoolSocket.getFileDescriptor()); + } catch (ErrnoException ex) { + Log.e("USAP", "Failed to close USAP pool socket"); + throw new RuntimeException(ex); + } } - } - try { - ByteArrayOutputStream buffer = - new ByteArrayOutputStream(Zygote.USAP_MANAGEMENT_MESSAGE_BYTES); - DataOutputStream outputStream = new DataOutputStream(buffer); - - // This is written as a long so that the USAP reporting pipe and USAP pool event FD - // handlers in ZygoteServer.runSelectLoop can be unified. These two cases should both - // send/receive 8 bytes. - outputStream.writeLong(pid); - outputStream.flush(); - - Os.write(writePipe, buffer.toByteArray(), 0, buffer.size()); - } catch (Exception ex) { - Log.e("USAP", - String.format("Failed to write PID (%d) to pipe (%d): %s", - pid, writePipe.getInt$(), ex.getMessage())); - System.exit(-1); - } finally { - IoUtils.closeQuietly(writePipe); - } + try { + ByteArrayOutputStream buffer = + new ByteArrayOutputStream(Zygote.USAP_MANAGEMENT_MESSAGE_BYTES); + DataOutputStream outputStream = new DataOutputStream(buffer); + + // This is written as a long so that the USAP reporting pipe and USAP pool event FD + // handlers in ZygoteServer.runSelectLoop can be unified. These two cases should + // both send/receive 8 bytes. + outputStream.writeLong(pid); + outputStream.flush(); + + Os.write(writePipe, buffer.toByteArray(), 0, buffer.size()); + } catch (Exception ex) { + Log.e("USAP", + String.format("Failed to write PID (%d) to pipe (%d): %s", + pid, writePipe.getInt$(), ex.getMessage())); + throw new RuntimeException(ex); + } finally { + IoUtils.closeQuietly(writePipe); + } + + specializeAppProcess(args.mUid, args.mGid, args.mGids, + args.mRuntimeFlags, rlimits, args.mMountExternal, + args.mSeInfo, args.mNiceName, args.mStartChildZygote, + args.mInstructionSet, args.mAppDataDir); - specializeAppProcess(args.mUid, args.mGid, args.mGids, - args.mRuntimeFlags, rlimits, args.mMountExternal, - args.mSeInfo, args.mNiceName, args.mStartChildZygote, - args.mInstructionSet, args.mAppDataDir); + disableExecuteOnly(args.mTargetSdkVersion); - disableExecuteOnly(args.mTargetSdkVersion); + if (args.mNiceName != null) { + Process.setArgV0(args.mNiceName); + } + + // End of the postFork event. + Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER); - if (args.mNiceName != null) { - Process.setArgV0(args.mNiceName); + return ZygoteInit.zygoteInit(args.mTargetSdkVersion, + args.mRemainingArgs, + null /* classLoader */); + } finally { + // Unblock SIGTERM to restore the process to default behavior. + unblockSigTerm(); } + } - // End of the postFork event. - Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER); + private static void blockSigTerm() { + nativeBlockSigTerm(); + } + + private static native void nativeBlockSigTerm(); - return ZygoteInit.zygoteInit(args.mTargetSdkVersion, - args.mRemainingArgs, - null /* classLoader */); + private static void unblockSigTerm() { + nativeUnblockSigTerm(); } + private static native void nativeUnblockSigTerm(); + private static final String USAP_ERROR_PREFIX = "Invalid command to USAP: "; /** diff --git a/core/java/com/android/internal/os/ZygoteConnection.java b/core/java/com/android/internal/os/ZygoteConnection.java index 785256eb6351..e556dd4d8243 100644 --- a/core/java/com/android/internal/os/ZygoteConnection.java +++ b/core/java/com/android/internal/os/ZygoteConnection.java @@ -338,6 +338,7 @@ class ZygoteConnection { Runnable stateChangeCode) { try { if (zygoteServer.isUsapPoolEnabled()) { + Log.i(TAG, "Emptying USAP Pool due to state change."); Zygote.emptyUsapPool(); } @@ -351,6 +352,8 @@ class ZygoteConnection { if (fpResult != null) { zygoteServer.setForkChild(); return fpResult; + } else { + Log.i(TAG, "Finished refilling USAP Pool after state change."); } } diff --git a/core/java/com/android/internal/os/ZygoteInit.java b/core/java/com/android/internal/os/ZygoteInit.java index f9e868fafe50..7ec8309e47de 100644 --- a/core/java/com/android/internal/os/ZygoteInit.java +++ b/core/java/com/android/internal/os/ZygoteInit.java @@ -87,7 +87,6 @@ public class ZygoteInit { private static final String PROPERTY_DISABLE_GRAPHICS_DRIVER_PRELOADING = "ro.zygote.disable_gl_preload"; - private static final String PROPERTY_GFX_DRIVER = "ro.gfx.driver.0"; private static final int LOG_BOOT_PROGRESS_PRELOAD_START = 3020; private static final int LOG_BOOT_PROGRESS_PRELOAD_END = 3030; @@ -203,9 +202,7 @@ public class ZygoteInit { static native void nativePreloadGraphicsDriver(); private static void maybePreloadGraphicsDriver() { - String driverPackageName = SystemProperties.get(PROPERTY_GFX_DRIVER); - if (!SystemProperties.getBoolean(PROPERTY_DISABLE_GRAPHICS_DRIVER_PRELOADING, false) - && (driverPackageName == null || driverPackageName.isEmpty())) { + if (!SystemProperties.getBoolean(PROPERTY_DISABLE_GRAPHICS_DRIVER_PRELOADING, false)) { nativePreloadGraphicsDriver(); } } diff --git a/core/java/com/android/internal/policy/BackdropFrameRenderer.java b/core/java/com/android/internal/policy/BackdropFrameRenderer.java index fa737582f7f6..7bfed91c42b9 100644 --- a/core/java/com/android/internal/policy/BackdropFrameRenderer.java +++ b/core/java/com/android/internal/policy/BackdropFrameRenderer.java @@ -380,7 +380,7 @@ public class BackdropFrameRenderer extends Thread implements Choreographer.Frame // don't want the navigation bar background be moving around when resizing in docked mode. // However, we need it for the transitions into/out of docked mode. if (mNavigationBarColor != null && fullscreen) { - DecorView.getNavigationBarRect(width, height, stableInsets, systemInsets, mTmpRect); + DecorView.getNavigationBarRect(width, height, stableInsets, systemInsets, mTmpRect, 1f); mNavigationBarColor.setBounds(mTmpRect); mNavigationBarColor.draw(canvas); } diff --git a/core/java/com/android/internal/policy/DecorContext.java b/core/java/com/android/internal/policy/DecorContext.java index 56a40a3698cc..da1b72f05a98 100644 --- a/core/java/com/android/internal/policy/DecorContext.java +++ b/core/java/com/android/internal/policy/DecorContext.java @@ -16,6 +16,7 @@ package com.android.internal.policy; +import android.content.AutofillOptions; import android.content.ContentCaptureOptions; import android.content.Context; import android.content.res.AssetManager; @@ -98,6 +99,15 @@ public class DecorContext extends ContextThemeWrapper { } @Override + public AutofillOptions getAutofillOptions() { + Context activityContext = mActivityContext.get(); + if (activityContext != null) { + return activityContext.getAutofillOptions(); + } + return null; + } + + @Override public ContentCaptureOptions getContentCaptureOptions() { Context activityContext = mActivityContext.get(); if (activityContext != null) { diff --git a/core/java/com/android/internal/policy/DecorView.java b/core/java/com/android/internal/policy/DecorView.java index 585a27978c4f..fe66cf9aab7d 100644 --- a/core/java/com/android/internal/policy/DecorView.java +++ b/core/java/com/android/internal/policy/DecorView.java @@ -84,6 +84,7 @@ import android.view.ThreadedRenderer; import android.view.View; import android.view.ViewGroup; import android.view.ViewOutlineProvider; +import android.view.ViewRootImpl; import android.view.ViewStub; import android.view.ViewTreeObserver; import android.view.Window; @@ -262,8 +263,10 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind private final int mResizeShadowSize; private final Paint mVerticalResizeShadowPaint = new Paint(); private final Paint mHorizontalResizeShadowPaint = new Paint(); + private final Paint mLegacyNavigationBarBackgroundPaint = new Paint(); private Insets mBackgroundInsets = Insets.NONE; private Insets mLastBackgroundInsets = Insets.NONE; + private boolean mDrawLegacyNavigationBarBackground; DecorView(Context context, int featureId, PhoneWindow window, WindowManager.LayoutParams params) { @@ -292,6 +295,8 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind mResizeShadowSize = context.getResources().getDimensionPixelSize( R.dimen.resize_shadow_size); initResizingPaints(); + + mLegacyNavigationBarBackgroundPaint.setColor(Color.BLACK); } void setBackgroundFallback(@Nullable Drawable fallbackDrawable) { @@ -1004,6 +1009,10 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind public void onWindowSystemUiVisibilityChanged(int visible) { updateColorViews(null /* insets */, true /* animate */); updateDecorCaptionStatus(getResources().getConfiguration()); + + if (mStatusGuard != null && mStatusGuard.getVisibility() == VISIBLE) { + updateStatusGuardColor(); + } } @Override @@ -1072,10 +1081,13 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind } public static void getNavigationBarRect(int canvasWidth, int canvasHeight, Rect stableInsets, - Rect contentInsets, Rect outRect) { - final int bottomInset = getColorViewBottomInset(stableInsets.bottom, contentInsets.bottom); - final int leftInset = getColorViewLeftInset(stableInsets.left, contentInsets.left); - final int rightInset = getColorViewLeftInset(stableInsets.right, contentInsets.right); + Rect contentInsets, Rect outRect, float scale) { + final int bottomInset = + (int) (getColorViewBottomInset(stableInsets.bottom, contentInsets.bottom) * scale); + final int leftInset = + (int) (getColorViewLeftInset(stableInsets.left, contentInsets.left) * scale); + final int rightInset = + (int) (getColorViewLeftInset(stableInsets.right, contentInsets.right) * scale); final int size = getNavBarSize(bottomInset, rightInset, leftInset); if (isNavBarToRightEdge(bottomInset, rightInset)) { outRect.set(canvasWidth - size, 0, canvasWidth, canvasHeight); @@ -1139,6 +1151,15 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind navBarToRightEdge || navBarToLeftEdge, navBarToLeftEdge, 0 /* sideInset */, animate && !disallowAnimate, mForceWindowDrawsBarBackgrounds); + boolean oldDrawLegacy = mDrawLegacyNavigationBarBackground; + mDrawLegacyNavigationBarBackground = mNavigationColorViewState.visible + && (mWindow.getAttributes().flags & FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS) == 0; + if (oldDrawLegacy != mDrawLegacyNavigationBarBackground) { + ViewRootImpl vri = getViewRootImpl(); + if (vri != null) { + vri.requestInvalidateRootRenderNode(); + } + } boolean statusBarNeedsRightInset = navBarToRightEdge && mNavigationColorViewState.present; @@ -1290,7 +1311,7 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind return semiTransparentBarColor; } else if ((flags & FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS) == 0) { return Color.BLACK; - } else if (scrimTransparent && barColor == Color.TRANSPARENT) { + } else if (scrimTransparent && Color.alpha(barColor) == 0) { boolean light = (sysuiVis & lightSysuiFlag) != 0; return light ? SCRIM_LIGHT : semiTransparentBarColor; } else { @@ -1462,28 +1483,45 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind } final Rect rect = mTempRect; - // If the parent doesn't consume the insets, manually - // apply the default system window insets. - mWindow.mContentParent.computeSystemWindowInsets(insets, rect); - final int newMargin = rect.top == 0 ? insets.getSystemWindowInsetTop() : 0; - if (mlp.topMargin != newMargin) { + // Apply the insets that have not been applied by the contentParent yet. + WindowInsets innerInsets = + mWindow.mContentParent.computeSystemWindowInsets(insets, rect); + int newTopMargin = innerInsets.getSystemWindowInsetTop(); + int newLeftMargin = innerInsets.getSystemWindowInsetLeft(); + int newRightMargin = innerInsets.getSystemWindowInsetRight(); + + // Must use root window insets for the guard, because the color views consume + // the navigation bar inset if the window does not request LAYOUT_HIDE_NAV - but + // the status guard is attached at the root. + WindowInsets rootInsets = getRootWindowInsets(); + int newGuardLeftMargin = rootInsets.getSystemWindowInsetLeft(); + int newGuardRightMargin = rootInsets.getSystemWindowInsetRight(); + + if (mlp.topMargin != newTopMargin || mlp.leftMargin != newLeftMargin + || mlp.rightMargin != newRightMargin) { mlpChanged = true; - mlp.topMargin = insets.getSystemWindowInsetTop(); - - if (mStatusGuard == null) { - mStatusGuard = new View(mContext); - mStatusGuard.setBackgroundColor(mContext.getColor( - R.color.decor_view_status_guard)); - addView(mStatusGuard, indexOfChild(mStatusColorViewState.view), - new LayoutParams(LayoutParams.MATCH_PARENT, - mlp.topMargin, Gravity.START | Gravity.TOP)); - } else { - final LayoutParams lp = (LayoutParams) - mStatusGuard.getLayoutParams(); - if (lp.height != mlp.topMargin) { - lp.height = mlp.topMargin; - mStatusGuard.setLayoutParams(lp); - } + mlp.topMargin = newTopMargin; + mlp.leftMargin = newLeftMargin; + mlp.rightMargin = newRightMargin; + } + + if (newTopMargin > 0 && mStatusGuard == null) { + mStatusGuard = new View(mContext); + mStatusGuard.setVisibility(GONE); + final LayoutParams lp = new LayoutParams(MATCH_PARENT, + mlp.topMargin, Gravity.LEFT | Gravity.TOP); + lp.leftMargin = newGuardLeftMargin; + lp.rightMargin = newGuardRightMargin; + addView(mStatusGuard, indexOfChild(mStatusColorViewState.view), lp); + } else if (mStatusGuard != null) { + final LayoutParams lp = (LayoutParams) + mStatusGuard.getLayoutParams(); + if (lp.height != mlp.topMargin || lp.leftMargin != newGuardLeftMargin + || lp.rightMargin != newGuardRightMargin) { + lp.height = mlp.topMargin; + lp.leftMargin = newGuardLeftMargin; + lp.rightMargin = newGuardRightMargin; + mStatusGuard.setLayoutParams(lp); } } @@ -1491,6 +1529,11 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind // always show the status guard above it if we have one. showStatusGuard = mStatusGuard != null; + if (showStatusGuard && mStatusGuard.getVisibility() != VISIBLE) { + // If it wasn't previously shown, the color may be stale + updateStatusGuardColor(); + } + // We only need to consume the insets if the action // mode is overlaid on the app content (e.g. it's // sitting in a FrameLayout, see @@ -1502,7 +1545,7 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind } } else { // reset top margin - if (mlp.topMargin != 0) { + if (mlp.topMargin != 0 || mlp.leftMargin != 0 || mlp.rightMargin != 0) { mlpChanged = true; mlp.topMargin = 0; } @@ -1513,11 +1556,19 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind } } if (mStatusGuard != null) { - mStatusGuard.setVisibility(showStatusGuard ? View.VISIBLE : View.GONE); + mStatusGuard.setVisibility(showStatusGuard ? VISIBLE : GONE); } return insets; } + private void updateStatusGuardColor() { + boolean lightStatusBar = + (getWindowSystemUiVisibility() & SYSTEM_UI_FLAG_LIGHT_STATUS_BAR) != 0; + mStatusGuard.setBackgroundColor(lightStatusBar + ? mContext.getColor(R.color.decor_view_status_guard_light) + : mContext.getColor(R.color.decor_view_status_guard)); + } + /** * Overrides the view outline when the activity enters picture-in-picture to ensure that it has * an opaque shadow even if the window background is completely transparent. This only applies @@ -2276,6 +2327,7 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind @Override public void onPostDraw(RecordingCanvas canvas) { drawResizingShadowIfNeeded(canvas); + drawLegacyNavigationBarBackground(canvas); } private void initResizingPaints() { @@ -2308,6 +2360,18 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind canvas.restore(); } + private void drawLegacyNavigationBarBackground(RecordingCanvas canvas) { + if (!mDrawLegacyNavigationBarBackground) { + return; + } + View v = mNavigationColorViewState.view; + if (v == null) { + return; + } + canvas.drawRect(v.getLeft(), v.getTop(), v.getRight(), v.getBottom(), + mLegacyNavigationBarBackgroundPaint); + } + /** Release the renderer thread which is usually done when the user stops resizing. */ private void releaseThreadedRenderer() { if (mResizingBackgroundDrawable != null && mLastBackgroundDrawableCb != null) { @@ -2594,6 +2658,7 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind } lastActionModeView.killMode(); mFadeAnim = null; + requestApplyInsets(); } } diff --git a/core/java/com/android/internal/util/function/pooled/PooledLambdaImpl.java b/core/java/com/android/internal/util/function/pooled/PooledLambdaImpl.java index 6be626a5134a..1fdb1f30125f 100755 --- a/core/java/com/android/internal/util/function/pooled/PooledLambdaImpl.java +++ b/core/java/com/android/internal/util/function/pooled/PooledLambdaImpl.java @@ -24,6 +24,7 @@ import android.util.Pools; import com.android.internal.util.ArrayUtils; import com.android.internal.util.BitUtils; +import com.android.internal.util.Preconditions; import com.android.internal.util.function.HeptConsumer; import com.android.internal.util.function.HeptFunction; import com.android.internal.util.function.HeptPredicate; @@ -47,6 +48,7 @@ import com.android.internal.util.function.TriFunction; import com.android.internal.util.function.TriPredicate; import java.util.Arrays; +import java.util.Objects; import java.util.function.BiConsumer; import java.util.function.BiFunction; import java.util.function.BiPredicate; @@ -432,13 +434,15 @@ final class PooledLambdaImpl<R> extends OmniFunction<Object, if (isConstSupplier()) { sb.append(getFuncTypeAsString()).append("(").append(doInvoke()).append(")"); } else { - if (mFunc instanceof PooledLambdaImpl) { - sb.append(mFunc); + Object func = mFunc; + if (func instanceof PooledLambdaImpl) { + sb.append(func); } else { - sb.append(getFuncTypeAsString()).append("@").append(hashCodeHex(mFunc)); + sb.append(getFuncTypeAsString()).append("@").append(hashCodeHex(func)); } sb.append("("); - sb.append(commaSeparateFirstN(mArgs, LambdaType.decodeArgCount(getFlags(MASK_FUNC_TYPE)))); + sb.append(commaSeparateFirstN(mArgs, + LambdaType.decodeArgCount(getFlags(MASK_FUNC_TYPE)))); sb.append(")"); } return sb.toString(); @@ -450,11 +454,11 @@ final class PooledLambdaImpl<R> extends OmniFunction<Object, } private static String hashCodeHex(Object o) { - return Integer.toHexString(o.hashCode()); + return Integer.toHexString(Objects.hashCode(o)); } private String getFuncTypeAsString() { - if (isRecycled()) throw new IllegalStateException(); + if (isRecycled()) return "<recycled>"; if (isConstSupplier()) return "supplier"; String name = LambdaType.toString(getFlags(MASK_EXPOSED_AS)); if (name.endsWith("Consumer")) return "consumer"; @@ -462,7 +466,7 @@ final class PooledLambdaImpl<R> extends OmniFunction<Object, if (name.endsWith("Predicate")) return "predicate"; if (name.endsWith("Supplier")) return "supplier"; if (name.endsWith("Runnable")) return "runnable"; - throw new IllegalStateException("Don't know the string representation of " + name); + return name; } /** @@ -490,7 +494,7 @@ final class PooledLambdaImpl<R> extends OmniFunction<Object, + ", i = " + i + ")"); } - r.mFunc = func; + r.mFunc = Preconditions.checkNotNull(func); r.setFlags(MASK_FUNC_TYPE, LambdaType.encode(fNumArgs, fReturnType)); r.setFlags(MASK_EXPOSED_AS, LambdaType.encode(numPlaceholders, fReturnType)); if (ArrayUtils.size(r.mArgs) < fNumArgs) r.mArgs = new Object[fNumArgs]; @@ -633,6 +637,7 @@ final class PooledLambdaImpl<R> extends OmniFunction<Object, private static String argCountPrefix(int argCount) { switch (argCount) { case MASK_ARG_COUNT: return ""; + case 0: return ""; case 1: return ""; case 2: return "Bi"; case 3: return "Tri"; @@ -642,7 +647,7 @@ final class PooledLambdaImpl<R> extends OmniFunction<Object, case 7: return "Hept"; case 8: return "Oct"; case 9: return "Nona"; - default: throw new IllegalArgumentException("" + argCount); + default: return "" + argCount + "arg"; } } diff --git a/core/java/com/android/internal/view/menu/MenuPopupHelper.java b/core/java/com/android/internal/view/menu/MenuPopupHelper.java index 64291de38130..d00108edefd0 100644 --- a/core/java/com/android/internal/view/menu/MenuPopupHelper.java +++ b/core/java/com/android/internal/view/menu/MenuPopupHelper.java @@ -16,8 +16,6 @@ package com.android.internal.view.menu; -import com.android.internal.view.menu.MenuPresenter.Callback; - import android.annotation.AttrRes; import android.annotation.NonNull; import android.annotation.Nullable; @@ -26,14 +24,14 @@ import android.annotation.UnsupportedAppUsage; import android.content.Context; import android.graphics.Point; import android.graphics.Rect; -import android.os.Build; -import android.util.DisplayMetrics; import android.view.Display; import android.view.Gravity; import android.view.View; import android.view.WindowManager; import android.widget.PopupWindow.OnDismissListener; +import com.android.internal.view.menu.MenuPresenter.Callback; + /** * Presents a menu as a small, simple popup anchored to another view. */ @@ -114,7 +112,7 @@ public class MenuPopupHelper implements MenuHelper { * @param forceShowIcon {@code true} to force icons to be shown, or * {@code false} for icons to be optionally shown */ - @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P) + @UnsupportedAppUsage public void setForceShowIcon(boolean forceShowIcon) { mForceShowIcon = forceShowIcon; if (mPopup != null) { diff --git a/core/java/com/android/internal/widget/LockPatternUtils.java b/core/java/com/android/internal/widget/LockPatternUtils.java index 07f8ee077c21..dc45f7834748 100644 --- a/core/java/com/android/internal/widget/LockPatternUtils.java +++ b/core/java/com/android/internal/widget/LockPatternUtils.java @@ -886,13 +886,13 @@ public class LockPatternUtils { return; } + // TODO(b/120484642): This is a location where we still use a String for vold + String passwordString = password != null ? new String(password) : null; new AsyncTask<Void, Void, Void>() { @Override protected Void doInBackground(Void... dummy) { IStorageManager storageManager = IStorageManager.Stub.asInterface(service); try { - // TODO(b/120484642): This is a location where we still use a String for vold - String passwordString = password != null ? new String(password) : null; storageManager.changeEncryptionPassword(type, passwordString); } catch (RemoteException e) { Log.e(TAG, "Error changing encryption password", e); diff --git a/core/jni/android_media_AudioSystem.cpp b/core/jni/android_media_AudioSystem.cpp index fc2b7f66e77a..686a91901b5f 100644 --- a/core/jni/android_media_AudioSystem.cpp +++ b/core/jni/android_media_AudioSystem.cpp @@ -2242,6 +2242,12 @@ android_media_AudioSystem_setAllowedCapturePolicy(JNIEnv *env, jobject thiz, jin return AudioSystem::setAllowedCapturePolicy(uid, flags); } +static jint +android_media_AudioSystem_setRttEnabled(JNIEnv *env, jobject thiz, jboolean enabled) +{ + return (jint) check_AudioSystem_Command(AudioSystem::setRttEnabled(enabled)); +} + // ---------------------------------------------------------------------------- static const JNINativeMethod gMethods[] = { @@ -2319,6 +2325,7 @@ static const JNINativeMethod gMethods[] = { {"getHwOffloadEncodingFormatsSupportedForA2DP", "(Ljava/util/ArrayList;)I", (void*)android_media_AudioSystem_getHwOffloadEncodingFormatsSupportedForA2DP}, {"setAllowedCapturePolicy", "(II)I", (void *)android_media_AudioSystem_setAllowedCapturePolicy}, + {"setRttEnabled", "(Z)I", (void *)android_media_AudioSystem_setRttEnabled}, }; static const JNINativeMethod gEventHandlerMethods[] = { diff --git a/core/jni/android_os_Debug.cpp b/core/jni/android_os_Debug.cpp index 842679ec7d22..14dbabb1ce02 100644 --- a/core/jni/android_os_Debug.cpp +++ b/core/jni/android_os_Debug.cpp @@ -713,16 +713,20 @@ static bool dumpTraces(JNIEnv* env, jint pid, jstring fileName, jint timeoutSecs O_CREAT | O_WRONLY | O_NOFOLLOW | O_CLOEXEC | O_APPEND, 0666)); if (fd < 0) { - fprintf(stderr, "Can't open %s: %s\n", fileNameChars.c_str(), strerror(errno)); + PLOG(ERROR) << "Can't open " << fileNameChars.c_str(); return false; } - return (dump_backtrace_to_file_timeout(pid, dumpType, timeoutSecs, fd) == 0); + int res = dump_backtrace_to_file_timeout(pid, dumpType, timeoutSecs, fd); + if (fdatasync(fd.get()) != 0) { + PLOG(ERROR) << "Failed flushing trace."; + } + return res == 0; } static jboolean android_os_Debug_dumpJavaBacktraceToFileTimeout(JNIEnv* env, jobject clazz, jint pid, jstring fileName, jint timeoutSecs) { - const bool ret = dumpTraces(env, pid, fileName, timeoutSecs, kDebuggerdJavaBacktrace); + const bool ret = dumpTraces(env, pid, fileName, timeoutSecs, kDebuggerdJavaBacktrace); return ret ? JNI_TRUE : JNI_FALSE; } diff --git a/core/jni/android_os_Trace.cpp b/core/jni/android_os_Trace.cpp index 81428dc02fb4..bd82bd91c55d 100644 --- a/core/jni/android_os_Trace.cpp +++ b/core/jni/android_os_Trace.cpp @@ -24,26 +24,29 @@ namespace android { -inline static void sanitizeString(char* str, size_t size) { - for (size_t i = 0; i < size; i++) { - char c = str[i]; - if (c == '\0' || c == '\n' || c == '|') { - str[i] = ' '; +inline static void sanitizeString(char* str) { + while (*str) { + char c = *str; + if (c == '\n' || c == '|') { + *str = ' '; } + str++; } } -inline static void getString(JNIEnv* env, jstring jstring, char* outBuffer, jsize maxSize) { - jsize size = std::min(env->GetStringLength(jstring), maxSize); - env->GetStringUTFRegion(jstring, 0, size, outBuffer); - sanitizeString(outBuffer, size); - outBuffer[size] = '\0'; -} - template<typename F> inline static void withString(JNIEnv* env, jstring jstr, F callback) { - std::array<char, 1024> buffer; - getString(env, jstr, buffer.data(), buffer.size()); + // We need to handle the worst case of 1 character -> 4 bytes + // So make a buffer of size 4097 and let it hold a string with a maximum length + // of 1024. The extra last byte for the null terminator. + std::array<char, 4097> buffer; + // We have no idea of knowing how much data GetStringUTFRegion wrote, so null it out in + // advance so we can have a reliable null terminator + memset(buffer.data(), 0, buffer.size()); + jsize size = std::min(env->GetStringLength(jstr), 1024); + env->GetStringUTFRegion(jstr, 0, size, buffer.data()); + sanitizeString(buffer.data()); + callback(buffer.data()); } diff --git a/core/jni/com_android_internal_os_Zygote.cpp b/core/jni/com_android_internal_os_Zygote.cpp index 8ff16912e932..82c27f02ba87 100644 --- a/core/jni/com_android_internal_os_Zygote.cpp +++ b/core/jni/com_android_internal_os_Zygote.cpp @@ -198,7 +198,7 @@ class UsapTableEntry { * PIDs don't match nothing will happen. * * @param pid The ID of the process who's entry we want to clear. - * @return True if the entry was cleared; false otherwise + * @return True if the entry was cleared by this call; false otherwise */ bool ClearForPID(int32_t pid) { EntryStorage storage = mStorage.load(); @@ -212,14 +212,16 @@ class UsapTableEntry { * 3) It fails and the new value isn't INVALID_ENTRY_VALUE, in which * case the entry has already been cleared and re-used. * - * In all three cases the goal of the caller has been met and we can - * return true. + * In all three cases the goal of the caller has been met, but only in + * the first case do we need to decrement the pool count. */ if (mStorage.compare_exchange_strong(storage, INVALID_ENTRY_VALUE)) { close(storage.read_pipe_fd); + return true; + } else { + return false; } - return true; } else { return false; } @@ -331,11 +333,24 @@ static void SigChldHandler(int /*signal_number*/) { if (WIFEXITED(status)) { async_safe_format_log(ANDROID_LOG_INFO, LOG_TAG, "Process %d exited cleanly (%d)", pid, WEXITSTATUS(status)); + + // Check to see if the PID is in the USAP pool and remove it if it is. + if (RemoveUsapTableEntry(pid)) { + ++usaps_removed; + } } else if (WIFSIGNALED(status)) { async_safe_format_log(ANDROID_LOG_INFO, LOG_TAG, "Process %d exited due to signal %d (%s)%s", pid, WTERMSIG(status), strsignal(WTERMSIG(status)), WCOREDUMP(status) ? "; core dumped" : ""); + + // If the process exited due to a signal other than SIGTERM, check to see + // if the PID is in the USAP pool and remove it if it is. If the process + // was closed by the Zygote using SIGTERM then the USAP pool entry will + // have already been removed (see nativeEmptyUsapPool()). + if (WTERMSIG(status) != SIGTERM && RemoveUsapTableEntry(pid)) { + ++usaps_removed; + } } // If the just-crashed process is the system_server, bring down zygote @@ -346,11 +361,6 @@ static void SigChldHandler(int /*signal_number*/) { "Exit zygote because system server (pid %d) has terminated", pid); kill(getpid(), SIGKILL); } - - // Check to see if the PID is in the USAP pool and remove it if it is. - if (RemoveUsapTableEntry(pid)) { - ++usaps_removed; - } } // Note that we shouldn't consider ECHILD an error because @@ -1150,6 +1160,7 @@ static jlong CalculateCapabilities(JNIEnv* env, jint uid, jint gid, jintArray gi /* * Grant the following capabilities to the Bluetooth user: * - CAP_WAKE_ALARM + * - CAP_NET_ADMIN * - CAP_NET_RAW * - CAP_NET_BIND_SERVICE (for DHCP client functionality) * - CAP_SYS_NICE (for setting RT priority for audio-related threads) @@ -1157,6 +1168,7 @@ static jlong CalculateCapabilities(JNIEnv* env, jint uid, jint gid, jintArray gi if (multiuser_get_app_id(uid) == AID_BLUETOOTH) { capabilities |= (1LL << CAP_WAKE_ALARM); + capabilities |= (1LL << CAP_NET_ADMIN); capabilities |= (1LL << CAP_NET_RAW); capabilities |= (1LL << CAP_NET_BIND_SERVICE); capabilities |= (1LL << CAP_SYS_NICE); @@ -1648,7 +1660,13 @@ static void com_android_internal_os_Zygote_nativeEmptyUsapPool(JNIEnv* env, jcla auto entry_storage = entry.GetValues(); if (entry_storage.has_value()) { - kill(entry_storage.value().pid, SIGKILL); + kill(entry_storage.value().pid, SIGTERM); + + // Clean up the USAP table entry here. This avoids a potential race + // where a newly created USAP might not be able to find a valid table + // entry if signal handler (which would normally do the cleanup) doesn't + // run between now and when the new process is created. + close(entry_storage.value().read_pipe_fd); // Avoid a second atomic load by invalidating instead of clearing. @@ -1678,6 +1696,16 @@ static jboolean com_android_internal_os_Zygote_nativeDisableExecuteOnly(JNIEnv* return dl_iterate_phdr(disable_execute_only, nullptr) == 0; } +static void com_android_internal_os_Zygote_nativeBlockSigTerm(JNIEnv* env, jclass) { + auto fail_fn = std::bind(ZygoteFailure, env, "usap", nullptr, _1); + BlockSignal(SIGTERM, fail_fn); +} + +static void com_android_internal_os_Zygote_nativeUnblockSigTerm(JNIEnv* env, jclass) { + auto fail_fn = std::bind(ZygoteFailure, env, "usap", nullptr, _1); + UnblockSignal(SIGTERM, fail_fn); +} + static const JNINativeMethod gMethods[] = { { "nativeForkAndSpecialize", "(II[II[[IILjava/lang/String;Ljava/lang/String;[I[IZLjava/lang/String;Ljava/lang/String;)I", @@ -1708,7 +1736,11 @@ static const JNINativeMethod gMethods[] = { { "nativeEmptyUsapPool", "()V", (void *) com_android_internal_os_Zygote_nativeEmptyUsapPool }, { "nativeDisableExecuteOnly", "()Z", - (void *) com_android_internal_os_Zygote_nativeDisableExecuteOnly } + (void *) com_android_internal_os_Zygote_nativeDisableExecuteOnly }, + { "nativeBlockSigTerm", "()V", + (void* ) com_android_internal_os_Zygote_nativeBlockSigTerm }, + { "nativeUnblockSigTerm", "()V", + (void* ) com_android_internal_os_Zygote_nativeUnblockSigTerm } }; int register_com_android_internal_os_Zygote(JNIEnv* env) { diff --git a/core/jni/com_android_internal_os_ZygoteInit.cpp b/core/jni/com_android_internal_os_ZygoteInit.cpp index 5cca0fdc735b..c2a5ee43dbd5 100644 --- a/core/jni/com_android_internal_os_ZygoteInit.cpp +++ b/core/jni/com_android_internal_os_ZygoteInit.cpp @@ -19,7 +19,6 @@ #include <EGL/egl.h> #include <Properties.h> #include <ui/GraphicBufferMapper.h> -#include <vulkan/vulkan.h> #include "core_jni_helpers.h" @@ -67,9 +66,6 @@ void android_internal_os_ZygoteInit_nativePreloadGraphicsDriver(JNIEnv* env, jcl ScopedSCSExit x; if (Properties::peekRenderPipelineType() == RenderPipelineType::SkiaGL) { eglGetDisplay(EGL_DEFAULT_DISPLAY); - } else { - uint32_t count = 0; - vkEnumerateInstanceExtensionProperties(nullptr, &count, nullptr); } } diff --git a/core/proto/android/app/settings_enums.proto b/core/proto/android/app/settings_enums.proto index 4874c4199eaa..c023438eecc2 100644 --- a/core/proto/android/app/settings_enums.proto +++ b/core/proto/android/app/settings_enums.proto @@ -2053,7 +2053,7 @@ enum PageId { // OS: P WIFI_SCANNING_NEEDED_DIALOG = 1373; - // OPEN: Settings > System > Gestures > Swipe up gesture + // OPEN: Settings > System > Gestures > System navigation // CATEGORY: SETTINGS // OS: P SETTINGS_GESTURE_SWIPE_UP = 1374; @@ -2374,14 +2374,31 @@ enum PageId { // Settings > Apps and notifications > Notifications > Gentle notifications GENTLE_NOTIFICATIONS_SCREEN = 1715; + // OPEN: Settings > System > Gestures > Global Actions Panel + // CATEGORY: SETTINGS + // OS: Q + GLOBAL_ACTIONS_PANEL_SETTINGS = 1728; + // OPEN: Settings > Display > Dark Theme // CATEGORY: SETTINGS // OS: Q // Note: Only shows up on first time toggle DIALOG_DARK_UI_INFO = 1740; - // OPEN: Settings > System > Gestures > Global Actions Panel + // OPEN: Settings > About phone > Legal information > Google Play system update licenses + // CATEGORY: SETTINGS + // OS: Q + MODULE_LICENSES_DASHBOARD = 1746; + + // OPEN: Settings > System > Gestures > System navigation > Info icon + // CATEGORY: SETTINGS + // OS: Q + // Note: Info icon is visible only when gesture navigation is not available and disabled + SETTINGS_GESTURE_NAV_NOT_AVAILABLE_DLG = 1747; + + // OPEN: Settings > System > Gestures > System navigation > Gear icon // CATEGORY: SETTINGS // OS: Q - GLOBAL_ACTIONS_PANEL_SETTINGS = 1800; + // Note: Gear icon is shown next to gesture navigation preference and opens sensitivity dialog + SETTINGS_GESTURE_NAV_BACK_SENSITIVITY_DLG = 1748; } diff --git a/core/proto/android/os/incident.proto b/core/proto/android/os/incident.proto index 9a9c9d14154b..7d0629ee6fba 100644 --- a/core/proto/android/os/incident.proto +++ b/core/proto/android/os/incident.proto @@ -321,6 +321,14 @@ message IncidentProto { (section).args = "incidentcompanion --restricted_image" ]; + // System trace as a serialized protobuf. + optional bytes system_trace = 3026 [ + (section).type = SECTION_FILE, + (section).args = "/data/misc/perfetto-traces/incident-trace", + (privacy).dest = DEST_AUTOMATIC, + (section).userdebug_and_eng_only = true + ]; + // Reserved for OEMs. extensions 50000 to 100000; } diff --git a/core/proto/android/providers/settings/global.proto b/core/proto/android/providers/settings/global.proto index 8f16b418f7db..00706941a18f 100644 --- a/core/proto/android/providers/settings/global.proto +++ b/core/proto/android/providers/settings/global.proto @@ -457,6 +457,9 @@ message GlobalSettingsProto { optional SettingProto game_driver_sphal_libraries = 16; // ANGLE - External package containing ANGLE libraries optional SettingProto angle_debug_package = 17; + // Game Driver - List of Apps selected to use prerelease Game Driver + // i.e. <pkg1>,<pkg2>,...,<pkgN> + optional SettingProto game_driver_prerelease_opt_in_apps = 18; } optional Gpu gpu = 59; diff --git a/core/proto/android/server/activitymanagerservice.proto b/core/proto/android/server/activitymanagerservice.proto index a7d4734f43b9..7fb6f98ab662 100644 --- a/core/proto/android/server/activitymanagerservice.proto +++ b/core/proto/android/server/activitymanagerservice.proto @@ -591,6 +591,8 @@ message ConnectionRecordProto { SHOWING_UI = 13; NOT_VISIBLE = 14; DEAD = 15; + NOT_PERCEPTIBLE = 16; + INCLUDE_CAPABILITIES = 17; } repeated Flag flags = 3; optional string service_name = 4; diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml index 890ad5e839f7..fef4dcd3b9f1 100644 --- a/core/res/AndroidManifest.xml +++ b/core/res/AndroidManifest.xml @@ -824,6 +824,11 @@ grants your app this permission. If you don't need this permission, be sure your <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#target">{@code targetSdkVersion}</a> is 4 or higher. + <p>Is this permission is not whitelisted for an app that targets an API level before + {@link android.os.Build.VERSION_CODES#Q} this permission cannot be granted to apps.</p> + <p>Is this permission is not whitelisted for an app that targets an API level + {@link android.os.Build.VERSION_CODES#Q} or later the app will be forced into isolated storage. + </p> --> <permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:permissionGroup="android.permission-group.UNDEFINED" @@ -845,6 +850,8 @@ read/write files in your application-specific directories returned by {@link android.content.Context#getExternalFilesDir} and {@link android.content.Context#getExternalCacheDir}. + <p>Is this permission is not whitelisted for an app that targets an API level before + {@link android.os.Build.VERSION_CODES#Q} this permission cannot be granted to apps.</p> --> <permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:permissionGroup="android.permission-group.UNDEFINED" @@ -2537,7 +2544,7 @@ <!-- @SystemApi @TestApi @hide Allows an application to modify config settings. <p>Not for use by third-party applications. --> <permission android:name="android.permission.WRITE_DEVICE_CONFIG" - android:protectionLevel="signature|configurator"/> + android:protectionLevel="signature|verifier|configurator"/> <!-- @SystemApi @hide Allows an application to read config settings. <p>Not for use by third-party applications. --> diff --git a/core/res/res/layout/resolver_list.xml b/core/res/res/layout/resolver_list.xml index aeaccfded38a..1dd420746e8a 100644 --- a/core/res/res/layout/resolver_list.xml +++ b/core/res/res/layout/resolver_list.xml @@ -129,18 +129,6 @@ android:enabled="false" android:text="@string/activity_resolver_use_always" android:onClick="onButtonClick" /> - - <Button - android:id="@+id/button_app_settings" - android:layout_width="wrap_content" - android:layout_gravity="end" - android:maxLines="2" - android:minHeight="@dimen/alert_dialog_button_bar_height" - style="?attr/buttonBarPositiveButtonStyle" - android:layout_height="wrap_content" - android:enabled="false" - android:text="@string/activity_resolver_app_settings" - android:onClick="onButtonClick" /> </LinearLayout> </com.android.internal.widget.ResolverDrawerLayout> diff --git a/core/res/res/values-af/strings.xml b/core/res/res/values-af/strings.xml index 676f47d25b33..13b2ad8e7086 100644 --- a/core/res/res/values-af/strings.xml +++ b/core/res/res/values-af/strings.xml @@ -567,7 +567,7 @@ <string name="face_acquired_too_right" msgid="3667075962661863218">"Beweeg foon na links."</string> <string name="face_acquired_too_left" msgid="3148242963894703424">"Beweeg foon na regs."</string> <string name="face_acquired_poor_gaze" msgid="5606479370806754905">"Kyk asseblief meer reguit na jou toestel."</string> - <string name="face_acquired_not_detected" msgid="4885504661626728809">"Kan nie jou gesig sien nie Kyk na die foon."</string> + <string name="face_acquired_not_detected" msgid="4885504661626728809">"Kan nie jou gesig sien nie. Kyk na die foon."</string> <string name="face_acquired_too_much_motion" msgid="3149332171102108851">"Te veel beweging. Hou foon stil."</string> <string name="face_acquired_recalibrate" msgid="8077949502893707539">"Skryf jou gesig asseblief weer in."</string> <string name="face_acquired_too_different" msgid="7663983770123789694">"Kan nie meer gesig herken nie. Probeer weer."</string> @@ -1130,8 +1130,10 @@ <string name="whichViewApplication" msgid="3272778576700572102">"Maak oop met"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"Maak oop met %1$s"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"Maak oop"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"Gee toegang tot oop <xliff:g id="HOST">%1$s</xliff:g>-skakels met"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"Gee toegang tot oop <xliff:g id="HOST">%1$s</xliff:g>-skakels met <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> + <string name="whichOpenHostLinksWith" msgid="3788174881117226583">"Maak <xliff:g id="HOST">%1$s</xliff:g>-skakels oop met"</string> + <string name="whichOpenLinksWith" msgid="6392123355599572804">"Maak skakels oop met"</string> + <string name="whichOpenLinksWithApp" msgid="8225991685366651614">"Maak skakels oop met <xliff:g id="APPLICATION">%1$s</xliff:g>"</string> + <string name="whichOpenHostLinksWithApp" msgid="3464470639011045589">"Maak <xliff:g id="HOST">%1$s</xliff:g>-skakels oop met <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"Verleen toegang"</string> <string name="whichEditApplication" msgid="144727838241402655">"Redigeer met"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"Redigeer met %1$s"</string> @@ -1583,6 +1585,7 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"Begin webblaaier?"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"Aanvaar oproep?"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"Altyd"</string> + <string name="activity_resolver_set_always" msgid="1422574191056490585">"Stel om altyd oop te maak"</string> <string name="activity_resolver_use_once" msgid="2404644797149173758">"Net een keer"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"Instellings"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"%1$s steun nie werkprofiel nie"</string> @@ -1612,8 +1615,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"Oorlegger #<xliff:g id="ID">%1$d</xliff:g>"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g>x<xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", veilig"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"Hierdie begin van agtergrondaktiwiteit vanaf <xliff:g id="PACKAGENAME">%1$s</xliff:g> sal in toekomstige Q-bouweergawes geblokkeer word. Sien g.co/dev/bgblock."</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"Begin van agtergrondaktiwiteit vanaf <xliff:g id="PACKAGENAME">%1$s</xliff:g> word geblokkeer. Sien g.co/dev/bgblock."</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Het jy die patroon vergeet?"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"Verkeerde patroon"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"Verkeerde wagwoord"</string> diff --git a/core/res/res/values-am/strings.xml b/core/res/res/values-am/strings.xml index 4238d54d2e62..3ad8263f6ae5 100644 --- a/core/res/res/values-am/strings.xml +++ b/core/res/res/values-am/strings.xml @@ -131,8 +131,7 @@ <!-- no translation found for wfcSpnFormat_spn (4998685024207291232) --> <skip /> <string name="wfcSpnFormat_spn_wifi_calling" msgid="136001023263502280">"<xliff:g id="SPN">%s</xliff:g> የWi-Fi ጥሪ አደራረግ"</string> - <!-- no translation found for wfcSpnFormat_spn_wifi_calling_vo_hyphen (1730997175789582756) --> - <skip /> + <string name="wfcSpnFormat_spn_wifi_calling_vo_hyphen" msgid="1730997175789582756">"<xliff:g id="SPN">%s</xliff:g> የWi-Fi ጥሪ"</string> <string name="wfcSpnFormat_wlan_call" msgid="2533371081782489793">"የWLAN ጥሪ"</string> <string name="wfcSpnFormat_spn_wlan_call" msgid="2315240198303197168">"<xliff:g id="SPN">%s</xliff:g> የWLAN ጥሪ"</string> <string name="wfcSpnFormat_spn_wifi" msgid="6546481665561961938">"<xliff:g id="SPN">%s</xliff:g> Wi-Fi"</string> @@ -1131,8 +1130,10 @@ <string name="whichViewApplication" msgid="3272778576700572102">"ክፈት በ"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"ክፈት በ%1$s"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"ክፈት"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"የ<xliff:g id="HOST">%1$s</xliff:g> አገናኞችን በዚህ ለመክፈት መዳረሻ ይስጡ፦"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"የ<xliff:g id="HOST">%1$s</xliff:g> አገናኞችን በ<xliff:g id="APPLICATION">%2$s</xliff:g> ለመክፈት መዳረሻ ይስጡ"</string> + <string name="whichOpenHostLinksWith" msgid="3788174881117226583">"<xliff:g id="HOST">%1$s</xliff:g> አገናኞችን ክፈት ከዚህ ጋር"</string> + <string name="whichOpenLinksWith" msgid="6392123355599572804">"አገናኞችን ክፈት ከዚህ ጋር"</string> + <string name="whichOpenLinksWithApp" msgid="8225991685366651614">"አገናኞችን ከ <xliff:g id="APPLICATION">%1$s</xliff:g> ጋር ክፈት"</string> + <string name="whichOpenHostLinksWithApp" msgid="3464470639011045589">"<xliff:g id="HOST">%1$s</xliff:g> አገናኞችን ከ <xliff:g id="APPLICATION">%2$s</xliff:g> ጋር ክፈት"</string> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"መዳረሻ ስጥ"</string> <string name="whichEditApplication" msgid="144727838241402655">"ያርትዑ በ"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"ያርትዑ በ%1$s"</string> @@ -1584,6 +1585,7 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"ማሰሺያን አስነሳ?"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"ጥሪ ተቀበል?"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"ዘወትር"</string> + <string name="activity_resolver_set_always" msgid="1422574191056490585">"ሁልጊዜ ክፍት ወደ የሚል ተቀናብሯል"</string> <string name="activity_resolver_use_once" msgid="2404644797149173758">"አንዴ ብቻ"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"ቅንብሮች"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"%1$s የስራ መገለጫ አይደግፍም"</string> @@ -1613,8 +1615,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"ተደራቢ #<xliff:g id="ID">%1$d</xliff:g>"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>፦ <xliff:g id="WIDTH">%2$d</xliff:g>x<xliff:g id="HEIGHT">%3$d</xliff:g>፣ <xliff:g id="DPI">%4$d</xliff:g> dpi"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">"፣ የተጠበቀ"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"ይህ የ<xliff:g id="PACKAGENAME">%1$s</xliff:g> የበስተጀርባ እንቅስቃሴ ጅምር በወደፊት የQ ግንቦች ላይ ይታገዳል። g.co/dev/bgblock ይመልከቱ።"</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"የ<xliff:g id="PACKAGENAME">%1$s</xliff:g> የበስተጀርባ እንቅስቃሴ ጅምር ታግዷል። g.co/dev/bgblock ይመልከቱ።"</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"ስርዓተ ጥለቱን እርሳ"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"የተሳሳተ ስርዓተ ጥለት"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"የተሳሳተ ይለፍ ቃል"</string> @@ -1668,18 +1668,12 @@ <string name="accessibility_shortcut_enabling_service" msgid="7771852911861522636">"የተደራሽነት አቋራጭ <xliff:g id="SERVICE_NAME">%1$s</xliff:g>ን አብርቶታል"</string> <string name="accessibility_shortcut_disabling_service" msgid="2747243438223109821">"የተደራሽነት አቋራጭ <xliff:g id="SERVICE_NAME">%1$s</xliff:g>ን አጥፍቶታል"</string> <string name="accessibility_shortcut_spoken_feedback" msgid="8376923232350078434">"<xliff:g id="SERVICE_NAME">%1$s</xliff:g>ን ለመጠቀም ለሦስት ሰከንዶች ሁለቱንም የድምፅ ቁልፎች ተጭነው ይያዙ"</string> - <!-- no translation found for accessibility_button_prompt_text (1176658502969738564) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8259145549733019401) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (1041435574275047665) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (7003212763213614833) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (5261788874937410950) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (4969448938984394550) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="1176658502969738564">"የተደራሽነት አዝራርን መታ በሚያደርጉበት ጊዜ ጥቅም ላይ የሚውለውን አገልግሎት ይምረጡ፦"</string> + <string name="accessibility_gesture_prompt_text" msgid="8259145549733019401">"ከተደራሽነት ጣት ምልክት ጋር የሚጠቀሙበት አአገልግሎት ይምረጡ (በሁለት ጣቶች ከማያ ገጹ ግርጌ ወደ ላይ ይጥረጉ)፦"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="1041435574275047665">"ከተደራሽነት ጣት ምልክት ጋር አብረው የሚጠቀሙበት አገልግሎት ይምረጡ (በሶስት ጣቶች ከማያ ገጹ ግርጌ ወደ ላይ ይጥረጉ)፦"</string> + <string name="accessibility_button_instructional_text" msgid="7003212763213614833">"በአገልግሎቶች መካከል ለመቀያየር የተደራሽነት አዝራሩን ነክተው ይያዙ።"</string> + <string name="accessibility_gesture_instructional_text" msgid="5261788874937410950">"በአገልግሎቶች መካከል ለመቀያየር በሁለት ጣቶች ወደ ላይ ጠርገው ይያዙ።"</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="4969448938984394550">"በአገልግሎቶች መካከል ለመቀያየር በሶስት ጣቶች ወደ ላይ ጠርገው ይያዙ።"</string> <string name="accessibility_magnification_chooser_text" msgid="1227146738764986237">"ማጉላት"</string> <string name="user_switched" msgid="3768006783166984410">"የአሁኑ ተጠቃሚ <xliff:g id="NAME">%1$s</xliff:g>።"</string> <string name="user_switching_message" msgid="2871009331809089783">"ወደ <xliff:g id="NAME">%1$s</xliff:g> በመቀየር ላይ…"</string> diff --git a/core/res/res/values-ar/strings.xml b/core/res/res/values-ar/strings.xml index 3b036c2aae36..45031746ca2a 100644 --- a/core/res/res/values-ar/strings.xml +++ b/core/res/res/values-ar/strings.xml @@ -135,8 +135,7 @@ <!-- no translation found for wfcSpnFormat_spn (4998685024207291232) --> <skip /> <string name="wfcSpnFormat_spn_wifi_calling" msgid="136001023263502280">"الاتصال عبر شبكة Wi-Fi التابعة لـ <xliff:g id="SPN">%s</xliff:g>"</string> - <!-- no translation found for wfcSpnFormat_spn_wifi_calling_vo_hyphen (1730997175789582756) --> - <skip /> + <string name="wfcSpnFormat_spn_wifi_calling_vo_hyphen" msgid="1730997175789582756">"الاتصال عبر Wi-Fi ضمن شبكة <xliff:g id="SPN">%s</xliff:g>"</string> <string name="wfcSpnFormat_wlan_call" msgid="2533371081782489793">"مكالمة عبر شبكة WLAN"</string> <string name="wfcSpnFormat_spn_wlan_call" msgid="2315240198303197168">"مكالمة عبر شبكة WLAN التابعة لـ <xliff:g id="SPN">%s</xliff:g>"</string> <string name="wfcSpnFormat_spn_wifi" msgid="6546481665561961938">"شبكة Wi-Fi التابعة لـ <xliff:g id="SPN">%s</xliff:g>"</string> @@ -309,7 +308,7 @@ <string name="permgrouprequest_storage" msgid="7885942926944299560">"هل تريد السماح لتطبيق <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> بالوصول إلى الصور والوسائط والملفات على جهازك؟"</string> <string name="permgrouplab_microphone" msgid="171539900250043464">"الميكروفون"</string> <string name="permgroupdesc_microphone" msgid="4988812113943554584">"تسجيل الصوت"</string> - <string name="permgrouprequest_microphone" msgid="9167492350681916038">"هل تريد السماح لتطبيق <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> بتسجيل الصوت؟"</string> + <string name="permgrouprequest_microphone" msgid="9167492350681916038">"هل تريد السماح لـ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> بتسجيل الصوت؟"</string> <string name="permgrouplab_activityRecognition" msgid="1565108047054378642">"النشاط البدني"</string> <string name="permgroupdesc_activityRecognition" msgid="6949472038320473478">"الوصول إلى بيانات نشاطك البدني"</string> <string name="permgrouprequest_activityRecognition" msgid="7626438016904799383">"هل تريد السماح للتطبيق <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> بالوصول إلى بيانات نشاطك البدني؟"</string> @@ -321,7 +320,7 @@ <string name="permgrouprequest_calllog" msgid="8487355309583773267">"هل تريد السماح لتطبيق <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> بالوصول إلى سجلّ مكالماتك الهاتفية؟"</string> <string name="permgrouplab_phone" msgid="5229115638567440675">"الهاتف"</string> <string name="permgroupdesc_phone" msgid="6234224354060641055">"إجراء مكالمات هاتفية وإدارتها"</string> - <string name="permgrouprequest_phone" msgid="9166979577750581037">"هل تريد السماح لتطبيق <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> بإجراء المكالمات الهاتفية وإدارتها؟"</string> + <string name="permgrouprequest_phone" msgid="9166979577750581037">"هل تريد السماح لـ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> بإجراء المكالمات الهاتفية وإدارتها؟"</string> <string name="permgrouplab_sensors" msgid="4838614103153567532">"أجهزة استشعار الجسم"</string> <string name="permgroupdesc_sensors" msgid="7147968539346634043">"الوصول إلى بيانات المستشعر حول علاماتك الحيوية"</string> <string name="permgrouprequest_sensors" msgid="6349806962814556786">"هل تريد السماح لتطبيق <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> بالدخول إلى بيانات المستشعر حول علاماتك الحيوية؟"</string> @@ -1211,8 +1210,10 @@ <string name="whichViewApplication" msgid="3272778576700572102">"فتح باستخدام"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"فتح باستخدام %1$s"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"فتح"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"منح إمكانية الوصول لفتح روابط <xliff:g id="HOST">%1$s</xliff:g> باستخدام"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"منح إمكانية الوصول لفتح روابط <xliff:g id="HOST">%1$s</xliff:g> باستخدام <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> + <string name="whichOpenHostLinksWith" msgid="3788174881117226583">"فتح روابط <xliff:g id="HOST">%1$s</xliff:g> باستخدام"</string> + <string name="whichOpenLinksWith" msgid="6392123355599572804">"فتح الروابط باستخدام"</string> + <string name="whichOpenLinksWithApp" msgid="8225991685366651614">"فتح الروابط باستخدام <xliff:g id="APPLICATION">%1$s</xliff:g>"</string> + <string name="whichOpenHostLinksWithApp" msgid="3464470639011045589">"فتح روابط <xliff:g id="HOST">%1$s</xliff:g> باستخدام <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"منح إذن الوصول"</string> <string name="whichEditApplication" msgid="144727838241402655">"تعديل باستخدام"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"تعديل باستخدام %1$s"</string> @@ -1540,7 +1541,7 @@ <string name="forward_intent_to_work" msgid="621480743856004612">"أنت تستخدم هذا التطبيق في ملفك الشخصي للعمل"</string> <string name="input_method_binding_label" msgid="1283557179944992649">"طريقة الإرسال"</string> <string name="sync_binding_label" msgid="3687969138375092423">"مزامنة"</string> - <string name="accessibility_binding_label" msgid="4148120742096474641">"إمكانية الوصول"</string> + <string name="accessibility_binding_label" msgid="4148120742096474641">"سهولة الاستخدام"</string> <string name="wallpaper_binding_label" msgid="1240087844304687662">"الخلفية"</string> <string name="chooser_wallpaper" msgid="7873476199295190279">"تغيير الخلفية"</string> <string name="notification_listener_binding_label" msgid="2014162835481906429">"برنامج تلقّي الإشعارات الصوتية"</string> @@ -1568,7 +1569,7 @@ <string name="disable_tether_notification_message" msgid="2913366428516852495">"اتصل بالمشرف للحصول على التفاصيل"</string> <string name="back_button_label" msgid="2300470004503343439">"رجوع"</string> <string name="next_button_label" msgid="1080555104677992408">"التالي"</string> - <string name="skip_button_label" msgid="1275362299471631819">"تخطي"</string> + <string name="skip_button_label" msgid="1275362299471631819">"التخطي"</string> <string name="no_matches" msgid="8129421908915840737">"ليس هناك أي مطابقات"</string> <string name="find_on_page" msgid="1946799233822820384">"بحث في الصفحة"</string> <plurals name="matches_found" formatted="false" msgid="1210884353962081884"> @@ -1676,6 +1677,7 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"تشغيل المتصفح؟"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"هل تريد قبول المكالمة؟"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"دومًا"</string> + <string name="activity_resolver_set_always" msgid="1422574191056490585">"ضبط على الفتح دائمًا"</string> <string name="activity_resolver_use_once" msgid="2404644797149173758">"مرة واحدة فقط"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"الإعدادات"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"لا يدعم %1$s الملفات الشخصية للعمل"</string> @@ -1705,8 +1707,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"المركب #<xliff:g id="ID">%1$d</xliff:g>"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g>x<xliff:g id="HEIGHT">%3$d</xliff:g>، <xliff:g id="DPI">%4$d</xliff:g> نقطة لكل بوصة"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">"آمن"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"سيتم حظر بدء نشاط الخلفية هذا من <xliff:g id="PACKAGENAME">%1$s</xliff:g> في إصدارات Q القادمة. اطّلع على g.co/dev/bgblock."</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"تم حظر بدء نشاط الخلفية من <xliff:g id="PACKAGENAME">%1$s</xliff:g>. اطّلع على g.co/dev/bgblock."</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"نسيت النقش"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"النقش غير صحيح"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"كلمة مرور خاطئة"</string> @@ -1755,8 +1755,8 @@ <string name="kg_text_message_separator" product="default" msgid="4160700433287233771">" — "</string> <string name="kg_reordering_delete_drop_target_text" msgid="7899202978204438708">"إزالة"</string> <string name="safe_media_volume_warning" product="default" msgid="2276318909314492312">"هل تريد رفع مستوى الصوت فوق المستوى الموصى به؟\n\nقد يضر سماع صوت عالٍ لفترات طويلة بسمعك."</string> - <string name="accessibility_shortcut_warning_dialog_title" msgid="8404780875025725199">"هل تريد استخدام اختصار إمكانية الوصول؟"</string> - <string name="accessibility_shortcut_toogle_warning" msgid="7256507885737444807">"عند تشغيل الاختصار، يؤدي الضغط على زرّي مستوى الصوت لمدة 3 ثوانٍ إلى تشغيل ميزة إمكانية الوصول.\n\n ميزة إمكانية الوصول الحالية:\n <xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n يمكنك تغيير الميزة من \"الإعدادات\" > \"إمكانية الوصول\"."</string> + <string name="accessibility_shortcut_warning_dialog_title" msgid="8404780875025725199">"هل تريد استخدام اختصار \"سهولة الاستخدام\"؟"</string> + <string name="accessibility_shortcut_toogle_warning" msgid="7256507885737444807">"عند تشغيل الاختصار، يؤدي الضغط على زرّي مستوى الصوت لمدة 3 ثوانٍ إلى تفعيل ميزة \"سهولة الاستخدام\".\n\n ميزة \"سهولة الاستخدام\" الحالية:\n <xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n يمكنك تغيير الميزة من \"الإعدادات\" > \"سهولة الاستخدام\"."</string> <string name="disable_accessibility_shortcut" msgid="627625354248453445">"إيقاف الاختصار"</string> <string name="leave_accessibility_shortcut_on" msgid="7653111894438512680">"استخدام الاختصار"</string> <string name="color_inversion_feature_name" msgid="4231186527799958644">"عكس الألوان"</string> @@ -1764,18 +1764,12 @@ <string name="accessibility_shortcut_enabling_service" msgid="7771852911861522636">"شغَّل اختصار إمكانية الوصول خدمة <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> <string name="accessibility_shortcut_disabling_service" msgid="2747243438223109821">"أوقف اختصار إمكانية الوصول خدمة <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> <string name="accessibility_shortcut_spoken_feedback" msgid="8376923232350078434">"اضغط مع الاستمرار على مفتاحي مستوى الصوت لمدة 3 ثوانٍ لاستخدام <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string> - <!-- no translation found for accessibility_button_prompt_text (1176658502969738564) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8259145549733019401) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (1041435574275047665) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (7003212763213614833) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (5261788874937410950) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (4969448938984394550) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="1176658502969738564">"يمكنك اختيار إحدى الخدمات لاستخدامها عند النقر على زر \"سهولة الاستخدام\":"</string> + <string name="accessibility_gesture_prompt_text" msgid="8259145549733019401">"يمكنك اختيار إحدى الخدمات لاستخدامها مع إيماءة \"سهولة الاستخدام\" (مرّر سريعًا إلى الأعلى من أسفل الشاشة باستخدام إصبعين):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="1041435574275047665">"يمكنك اختيار إحدى الخدمات التالية لاستخدامها مع إيماءة \"سهولة الاستخدام\" (مرّر سريعًا إلى الأعلى من أسفل الشاشة باستخدام ثلاثة أصابع):"</string> + <string name="accessibility_button_instructional_text" msgid="7003212763213614833">"للتبديل بين الخدمات، يمكنك النقر والاستمرار على زر \"سهولة الاستخدام\"."</string> + <string name="accessibility_gesture_instructional_text" msgid="5261788874937410950">"للتبديل بين الخدمات، يمكنك التمرير سريعًا من أسفل الشاشة إلى أعلاها باستخدام إصبعين مع تثبيتهما."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="4969448938984394550">"للتبديل بين الخدمات، يمكنك التمرير سريعًا من أسفل الشاشة إلى أعلاها باستخدام ثلاثة أصابع مع تثبيت الأصابع."</string> <string name="accessibility_magnification_chooser_text" msgid="1227146738764986237">"التكبير"</string> <string name="user_switched" msgid="3768006783166984410">"المستخدم الحالي <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="2871009331809089783">"جارٍ التبديل إلى <xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -2048,7 +2042,7 @@ <string name="deprecated_target_sdk_app_store" msgid="5032340500368495077">"البحث عن تحديث"</string> <string name="new_sms_notification_title" msgid="8442817549127555977">"لديك رسائل جديدة"</string> <string name="new_sms_notification_content" msgid="7002938807812083463">"فتح تطبيق الرسائل القصيرة SMS للعرض"</string> - <string name="profile_encrypted_title" msgid="4260432497586829134">"ربما تكون بعض الوظائف مُقيّدة."</string> + <string name="profile_encrypted_title" msgid="4260432497586829134">"قد تكون بعض الوظائف مُقيّدة."</string> <string name="profile_encrypted_detail" msgid="3700965619978314974">"تم قفل الملف الشخصي للعمل."</string> <string name="profile_encrypted_message" msgid="6964994232310195874">"انقر لإلغاء قفل الملف الشخصي للعمل"</string> <string name="usb_mtp_launch_notification_title" msgid="8359219638312208932">"تم الاتصال بـ <xliff:g id="PRODUCT_NAME">%1$s</xliff:g>"</string> @@ -2131,7 +2125,7 @@ <string name="harmful_app_warning_title" msgid="8982527462829423432">"تم العثور على تطبيق ضار"</string> <string name="slices_permission_request" msgid="8484943441501672932">"يريد تطبيق <xliff:g id="APP_0">%1$s</xliff:g> عرض شرائح تطبيق <xliff:g id="APP_2">%2$s</xliff:g>."</string> <string name="screenshot_edit" msgid="7867478911006447565">"تعديل"</string> - <string name="volume_dialog_ringer_guidance_vibrate" msgid="8902050240801159042">"سيهتز الهاتف عند تلقي المكالمات والإشعارات"</string> + <string name="volume_dialog_ringer_guidance_vibrate" msgid="8902050240801159042">"سيهتز الهاتف عند تلقّي المكالمات والإشعارات"</string> <string name="volume_dialog_ringer_guidance_silent" msgid="2128975224280276122">"سيتم كتم صوت الهاتف عند تلقي المكالمات والإشعارات"</string> <string name="notification_channel_system_changes" msgid="5072715579030948646">"تغييرات النظام"</string> <string name="notification_channel_do_not_disturb" msgid="6766940333105743037">"عدم الإزعاج"</string> diff --git a/core/res/res/values-as/strings.xml b/core/res/res/values-as/strings.xml index 07d74fe4842a..fe08ba3d339b 100644 --- a/core/res/res/values-as/strings.xml +++ b/core/res/res/values-as/strings.xml @@ -131,8 +131,7 @@ <!-- no translation found for wfcSpnFormat_spn (4998685024207291232) --> <skip /> <string name="wfcSpnFormat_spn_wifi_calling" msgid="136001023263502280">"<xliff:g id="SPN">%s</xliff:g> ৱাই- ফাই কলিং"</string> - <!-- no translation found for wfcSpnFormat_spn_wifi_calling_vo_hyphen (1730997175789582756) --> - <skip /> + <string name="wfcSpnFormat_spn_wifi_calling_vo_hyphen" msgid="1730997175789582756">"<xliff:g id="SPN">%s</xliff:g> ৱাই-ফাই কলিং"</string> <string name="wfcSpnFormat_wlan_call" msgid="2533371081782489793">"WLAN কল"</string> <string name="wfcSpnFormat_spn_wlan_call" msgid="2315240198303197168">"<xliff:g id="SPN">%s</xliff:g> WLAN কল"</string> <string name="wfcSpnFormat_spn_wifi" msgid="6546481665561961938">"<xliff:g id="SPN">%s</xliff:g> ৱাই-ফাই"</string> @@ -888,7 +887,7 @@ <string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"আনলক ক্ষেত্ৰ বিস্তাৰ কৰক।"</string> <string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"শ্লাইডৰদ্বাৰা আনলক।"</string> <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"আৰ্হিৰদ্বাৰা আনলক।"</string> - <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"গৰাকীৰ মুখাৱয়বৰদ্বাৰা আনলক।"</string> + <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"মুখাৱয়বৰদ্বাৰা আনলক।"</string> <string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"পিনৰদ্বাৰা আনলক।"</string> <string name="keyguard_accessibility_sim_pin_unlock" msgid="9149698847116962307">"ছিম পিন আনলক।"</string> <string name="keyguard_accessibility_sim_puk_unlock" msgid="9106899279724723341">"ছিম পিইউকে আনলক।"</string> @@ -1131,8 +1130,10 @@ <string name="whichViewApplication" msgid="3272778576700572102">"ইয়াৰ জৰিয়তে খোলক"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"%1$sৰ জৰিয়তে খোলক"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"খোলক"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"ইয়াৰ দ্বাৰা <xliff:g id="HOST">%1$s</xliff:g> লিংক খুলিবলৈ এক্সেছ দিয়ক"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"<xliff:g id="APPLICATION">%2$s</xliff:g>ৰ দ্বাৰা <xliff:g id="HOST">%1$s</xliff:g> লিংক খুলিবলৈ এক্সেছ দিয়ক"</string> + <string name="whichOpenHostLinksWith" msgid="3788174881117226583">"<xliff:g id="HOST">%1$s</xliff:g> লিংকসমূহ ইয়াৰ জৰিয়তে খোলক"</string> + <string name="whichOpenLinksWith" msgid="6392123355599572804">"লিংকসমূহ ইয়াৰ জৰিয়তে খোলক"</string> + <string name="whichOpenLinksWithApp" msgid="8225991685366651614">"লিংকসমূহ <xliff:g id="APPLICATION">%1$s</xliff:g>ৰ জৰিয়তে খোলক"</string> + <string name="whichOpenHostLinksWithApp" msgid="3464470639011045589">"<xliff:g id="HOST">%1$s</xliff:g> লিংকসমূহ <xliff:g id="APPLICATION">%2$s</xliff:g>ৰ জৰিয়তে খোলক"</string> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"এক্সেছ দিয়ক"</string> <string name="whichEditApplication" msgid="144727838241402655">"ইয়াৰ দ্বাৰা সম্পাদনা কৰক"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"%1$sৰদ্বাৰা সম্পাদনা কৰক"</string> @@ -1584,6 +1585,7 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"ব্ৰাউজাৰ লঞ্চ কৰিবনে?"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"কল স্বীকাৰ কৰিবনে?"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"সদায়"</string> + <string name="activity_resolver_set_always" msgid="1422574191056490585">"সদায় খোলক-লৈ ছেট কৰক"</string> <string name="activity_resolver_use_once" msgid="2404644797149173758">"মাত্ৰ এবাৰ"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"ছেটিংসমূহ"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"%1$sএ কৰ্মস্থানৰ প্ৰ\'ফাইল সমৰ্থন নকৰে।"</string> @@ -1613,8 +1615,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"অ\'ভাৰলে\' #<xliff:g id="ID">%1$d</xliff:g>"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g>x<xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", সুৰক্ষিত"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"<xliff:g id="PACKAGENAME">%1$s</xliff:g>ৰ পৰা নেপথ্যত আৰম্ভ হোৱা এই কাৰ্যকলাপটো ভৱিষ্যতে Q বিল্ডত অৱৰোধ কৰা হ’ব। g.co/dev/bgblock চাওক।"</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"<xliff:g id="PACKAGENAME">%1$s</xliff:g>ৰ পৰা নেপথ্যত আৰম্ভ হোৱা কাৰ্যকলাপ অৱৰোধ কৰা হৈছে। g.co/dev/bgblock চাওক।"</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"আৰ্হি পাহৰিলেনে"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"ভুল আৰ্হি"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"ভুল পাছৱৰ্ড"</string> @@ -1668,18 +1668,12 @@ <string name="accessibility_shortcut_enabling_service" msgid="7771852911861522636">"দিব্যাংগসকলৰ সুবিধাৰ শ্বৰ্টকাটটোৱে <xliff:g id="SERVICE_NAME">%1$s</xliff:g>ক অন কৰিছে"</string> <string name="accessibility_shortcut_disabling_service" msgid="2747243438223109821">"দিব্যাংগসকলৰ সুবিধাৰ শ্বৰ্টকাটটোৱে <xliff:g id="SERVICE_NAME">%1$s</xliff:g>ক অফ কৰিছে"</string> <string name="accessibility_shortcut_spoken_feedback" msgid="8376923232350078434">"<xliff:g id="SERVICE_NAME">%1$s</xliff:g> ব্যৱহাৰ কৰিবলৈ দুয়োটা ভলিউম বুটাম তিনি ছেকেণ্ডৰ বাবে হেঁচি ৰাখক"</string> - <!-- no translation found for accessibility_button_prompt_text (1176658502969738564) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8259145549733019401) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (1041435574275047665) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (7003212763213614833) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (5261788874937410950) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (4969448938984394550) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="1176658502969738564">"আপুনি সাধ্য সুবিধাৰ বুটামটো টিপিলে ব্যৱহাৰ কৰিবলৈ এটা সেৱা বাছনি কৰক:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8259145549733019401">"সাধ্য সুবিধা ভংগিমাৰ সৈতে ব্যৱহাৰ কৰিবলৈ এটা সেৱা বাছনি কৰক (দুটা আঙুলিৰে স্ক্রীণখনৰ একেবাৰে তলিৰ পৰা ওপৰলৈ ছোৱাইপ কৰক):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="1041435574275047665">"সাধ্য সুবিধা ভংগিমাৰ সৈতে ব্যৱহাৰ কৰিবলৈ এটা সেৱা বাছনি কৰক (তিনিটা আঙুলিৰে স্ক্রীণখনৰ একেবাৰে তলিৰ পৰা ওপৰলৈ ছোৱাইপ কৰক):"</string> + <string name="accessibility_button_instructional_text" msgid="7003212763213614833">"সেৱাসমূহ সালসলনিকৈ ব্যৱহাৰ কৰিবলৈ সাধ্য সুবিধাৰ বুটামটো স্পৰ্শ কৰি ধৰি ৰাখক।"</string> + <string name="accessibility_gesture_instructional_text" msgid="5261788874937410950">"সেৱাসমূহ সালসলনিকৈ ব্যৱহাৰ কৰিবলৈ দুটা আঙুলিৰে ওপৰলৈ ছোৱাইপ কৰি ধৰি ৰাখক।"</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="4969448938984394550">"সেৱাসমূহ সালসলনিকৈ ব্যৱহাৰ কৰিবলৈ তিনিটা আঙুলিৰে ওপৰলৈ ছোৱাইপ কৰি ধৰি ৰাখক।"</string> <string name="accessibility_magnification_chooser_text" msgid="1227146738764986237">"বিবৰ্ধন"</string> <string name="user_switched" msgid="3768006783166984410">"বৰ্তমানৰ ব্যৱহাৰকাৰী <xliff:g id="NAME">%1$s</xliff:g>।"</string> <string name="user_switching_message" msgid="2871009331809089783">"<xliff:g id="NAME">%1$s</xliff:g>লৈ সলনি কৰি থকা হৈছে…"</string> diff --git a/core/res/res/values-az/strings.xml b/core/res/res/values-az/strings.xml index 90c1961a5efc..4ac94c1ca20a 100644 --- a/core/res/res/values-az/strings.xml +++ b/core/res/res/values-az/strings.xml @@ -1130,8 +1130,10 @@ <string name="whichViewApplication" msgid="3272778576700572102">"Bununla açın"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"%1$s ilə açın"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"Açın"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"Bu tətbiqlə <xliff:g id="HOST">%1$s</xliff:g> linklərini açmağa icazə verin:"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"<xliff:g id="APPLICATION">%2$s</xliff:g> ilə <xliff:g id="HOST">%1$s</xliff:g> linklərini açmağa icazə verin"</string> + <string name="whichOpenHostLinksWith" msgid="3788174881117226583">"<xliff:g id="HOST">%1$s</xliff:g> linklərini belə açın:"</string> + <string name="whichOpenLinksWith" msgid="6392123355599572804">"Linkləri belə açın:"</string> + <string name="whichOpenLinksWithApp" msgid="8225991685366651614">"Linkləri <xliff:g id="APPLICATION">%1$s</xliff:g> ilə açın"</string> + <string name="whichOpenHostLinksWithApp" msgid="3464470639011045589">"<xliff:g id="HOST">%1$s</xliff:g> linklərini <xliff:g id="APPLICATION">%2$s</xliff:g> ilə açın"</string> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"İcazə verin"</string> <string name="whichEditApplication" msgid="144727838241402655">"Bununla düzəliş edin:"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"%1$s ilə düzəliş edin"</string> @@ -1583,6 +1585,7 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"Brauzer işə salınsın?"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"Zəngi qəbul edək?"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"Həmişə"</string> + <string name="activity_resolver_set_always" msgid="1422574191056490585">"\"Həmişə açıq\" olaraq ayarlayın"</string> <string name="activity_resolver_use_once" msgid="2404644797149173758">"Sadəcə bir dəfə"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"Ayarlar"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"%1$s iş profilini dəstəkləmir"</string> @@ -1612,8 +1615,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"Örtük #<xliff:g id="ID">%1$d</xliff:g>"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g>x<xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", təhlükəsiz"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"<xliff:g id="PACKAGENAME">%1$s</xliff:g> ünvanından olan bu arxa fon fəaliyyəti növbəti Q versiyalarında blok ediləcək. G.co/dev/bgblock ünvanına baxın."</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"<xliff:g id="PACKAGENAME">%1$s</xliff:g> ünvanından olan arxa fon fəaliyyəti blok edildi. G.co/dev/bgblock ünvanına baxın."</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Şablonu unutmuşam"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"Yanlış Model"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"Yanlış Şifrə"</string> diff --git a/core/res/res/values-b+sr+Latn/strings.xml b/core/res/res/values-b+sr+Latn/strings.xml index 9117f5c479d8..3911067ba4f8 100644 --- a/core/res/res/values-b+sr+Latn/strings.xml +++ b/core/res/res/values-b+sr+Latn/strings.xml @@ -269,7 +269,7 @@ <string name="notification_channel_alerts" msgid="4496839309318519037">"Obaveštenja"</string> <string name="notification_channel_retail_mode" msgid="6088920674914038779">"Režim demonstracije za maloprodajne objekte"</string> <string name="notification_channel_usb" msgid="9006850475328924681">"USB veza"</string> - <string name="notification_channel_heavy_weight_app" msgid="6218742927792852607">"Aplikacija je pokrenuta"</string> + <string name="notification_channel_heavy_weight_app" msgid="6218742927792852607">"Aktivna aplikacija"</string> <string name="notification_channel_foreground_service" msgid="3931987440602669158">"Aplikacije koje troše bateriju"</string> <string name="foreground_service_app_in_background" msgid="1060198778219731292">"<xliff:g id="APP_NAME">%1$s</xliff:g> koristi bateriju"</string> <string name="foreground_service_apps_in_background" msgid="7175032677643332242">"Aplikacije (<xliff:g id="NUMBER">%1$d</xliff:g>) koriste bateriju"</string> @@ -1150,8 +1150,10 @@ <string name="whichViewApplication" msgid="3272778576700572102">"Otvorite pomoću"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"Otvorite pomoću aplikacije %1$s"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"Otvori"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"Dozvolite da se linkovi <xliff:g id="HOST">%1$s</xliff:g> otvaraju pomoću"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"Dozvolite da <xliff:g id="APPLICATION">%2$s</xliff:g> otvara linikove <xliff:g id="HOST">%1$s</xliff:g>"</string> + <string name="whichOpenHostLinksWith" msgid="3788174881117226583">"Otvarajte <xliff:g id="HOST">%1$s</xliff:g> linkove pomoću"</string> + <string name="whichOpenLinksWith" msgid="6392123355599572804">"Otvaratej linkove pomoću"</string> + <string name="whichOpenLinksWithApp" msgid="8225991685366651614">"Otvarajte linkove pomoću aplikacije <xliff:g id="APPLICATION">%1$s</xliff:g>"</string> + <string name="whichOpenHostLinksWithApp" msgid="3464470639011045589">"Otvarajte <xliff:g id="HOST">%1$s</xliff:g> linkove pomoću aplikacije <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"Dozvoli pristup"</string> <string name="whichEditApplication" msgid="144727838241402655">"Izmenite pomoću"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"Izmenite pomoću aplikacije %1$s"</string> @@ -1606,6 +1608,7 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"Želite li da pokrenete pregledač?"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"Želite li da prihvatite poziv?"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"Uvek"</string> + <string name="activity_resolver_set_always" msgid="1422574191056490585">"Podesi na „uvek otvaraj“"</string> <string name="activity_resolver_use_once" msgid="2404644797149173758">"Samo jednom"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"Podešavanja"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"%1$s ne podržava poslovni profil"</string> @@ -1635,8 +1638,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"Postavljeni element br. <xliff:g id="ID">%1$d</xliff:g>"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g>×<xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", bezbedno"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"Ovo pokretanje aktivnosti u pozadini sa <xliff:g id="PACKAGENAME">%1$s</xliff:g> biće blokirano u budućim Q verzijama. Pogledajte g.co/dev/bgblock."</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"Pokretanje aktivnosti u pozadini sa <xliff:g id="PACKAGENAME">%1$s</xliff:g> je blokirano. Pogledajte g.co/dev/bgblock."</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Zaboravljeni šablon"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"Pogrešan šablon"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"Pogrešna lozinka"</string> diff --git a/core/res/res/values-be/strings.xml b/core/res/res/values-be/strings.xml index 05311cfa4b65..e416c4516f9b 100644 --- a/core/res/res/values-be/strings.xml +++ b/core/res/res/values-be/strings.xml @@ -133,8 +133,7 @@ <!-- no translation found for wfcSpnFormat_spn (4998685024207291232) --> <skip /> <string name="wfcSpnFormat_spn_wifi_calling" msgid="136001023263502280">"Wi-Fi-тэлефанія ад <xliff:g id="SPN">%s</xliff:g>"</string> - <!-- no translation found for wfcSpnFormat_spn_wifi_calling_vo_hyphen (1730997175789582756) --> - <skip /> + <string name="wfcSpnFormat_spn_wifi_calling_vo_hyphen" msgid="1730997175789582756">"Wi-Fi-тэлефанія ад аператара \"<xliff:g id="SPN">%s</xliff:g>\""</string> <string name="wfcSpnFormat_wlan_call" msgid="2533371081782489793">"Выклік праз WLAN"</string> <string name="wfcSpnFormat_spn_wlan_call" msgid="2315240198303197168">"Выклік праз WLAN ад <xliff:g id="SPN">%s</xliff:g>"</string> <string name="wfcSpnFormat_spn_wifi" msgid="6546481665561961938">"Wi-Fi ад <xliff:g id="SPN">%s</xliff:g>"</string> @@ -894,7 +893,7 @@ <string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"Разгарнуць вобласць разблакіроўкі."</string> <string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"Разблакiроўка слайда."</string> <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"Узор разблакiроўкі."</string> - <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"Фэйскантроль"</string> + <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"Распазнаванне твару"</string> <string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"PIN-код разблакiроўкі."</string> <string name="keyguard_accessibility_sim_pin_unlock" msgid="9149698847116962307">"Разблакіроўка SIM-карты з дапамогай PIN-кода."</string> <string name="keyguard_accessibility_sim_puk_unlock" msgid="9106899279724723341">"Разблакіроўка SIM-карты з дапамогай PUK-кода."</string> @@ -952,7 +951,7 @@ <string name="permlab_writeGeolocationPermissions" msgid="5962224158955273932">"змяніць дазволы геапазіцыянавання для браўзэра"</string> <string name="permdesc_writeGeolocationPermissions" msgid="1083743234522638747">"Дазваляе прыкладанням змяняць дазволы геалакацыі браўзэра. Шкоднасныя прыкладанні могуць выкарыстоўваць гэта, каб дазваляць адпраўку інфармацыі аб месцазнаходжанні выпадковым вэб-сайтам."</string> <string name="save_password_message" msgid="767344687139195790">"Вы хочаце, каб браўзэр запомніў гэты пароль?"</string> - <string name="save_password_notnow" msgid="6389675316706699758">"Не цяпер"</string> + <string name="save_password_notnow" msgid="6389675316706699758">"Не зараз"</string> <string name="save_password_remember" msgid="6491879678996749466">"Запомніць"</string> <string name="save_password_never" msgid="8274330296785855105">"Ніколі"</string> <string name="open_permission_deny" msgid="7374036708316629800">"У вас няма дазволу на адкрыццё гэтай старонкі."</string> @@ -1171,8 +1170,10 @@ <string name="whichViewApplication" msgid="3272778576700572102">"Адкрыць з дапамогай"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"Адкрыць з дапамогай %1$s"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"Адкрыць"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"Адкрываць спасылкі на сэрвіс <xliff:g id="HOST">%1$s</xliff:g> з дапамогай"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"Адкрываць спасылкі на сэрвіс <xliff:g id="HOST">%1$s</xliff:g> з дапамогай праграмы \"<xliff:g id="APPLICATION">%2$s</xliff:g>\""</string> + <string name="whichOpenHostLinksWith" msgid="3788174881117226583">"Адкрываць спасылкі <xliff:g id="HOST">%1$s</xliff:g> з дапамогай"</string> + <string name="whichOpenLinksWith" msgid="6392123355599572804">"Адкрываць спасылкі з дапамогай"</string> + <string name="whichOpenLinksWithApp" msgid="8225991685366651614">"Адкрываць спасылкі з дапамогай праграмы \"<xliff:g id="APPLICATION">%1$s</xliff:g>\""</string> + <string name="whichOpenHostLinksWithApp" msgid="3464470639011045589">"Адкрываць спасылкі <xliff:g id="HOST">%1$s</xliff:g>з дапамогай праграмы \"<xliff:g id="APPLICATION">%2$s</xliff:g>\""</string> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"Даць доступ"</string> <string name="whichEditApplication" msgid="144727838241402655">"Рэдагаваць з дапамогай"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"Рэдагаваць з дапамогай %1$s"</string> @@ -1630,6 +1631,7 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"Запусцiць браўзер?"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"Прыняць выклік?"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"Заўсёды"</string> + <string name="activity_resolver_set_always" msgid="1422574191056490585">"Прызначыць стандартна для адкрыцця"</string> <string name="activity_resolver_use_once" msgid="2404644797149173758">"Толькі адзін раз"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"Налады"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"%1$s не падтрымлівае працоўны профіль"</string> @@ -1659,8 +1661,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"Оверлей # <xliff:g id="ID">%1$d</xliff:g>"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g>x<xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> кр. на цалю"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", бяспечны"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"Запуск дзеянняў у фонавым рэжыме з пакета \"<xliff:g id="PACKAGENAME">%1$s</xliff:g>\" будзе заблакіраваны ў будучых Q-зборках. Глядзіце g.co/dev/bgblock."</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"Запуск дзеянняў у фонавым рэжыме з пакета \"<xliff:g id="PACKAGENAME">%1$s</xliff:g>\" заблакіраваны. Глядзіце g.co/dev/bgblock."</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Забылі ключ"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"Няправільны ўзор"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"Няправiльны пароль"</string> @@ -1716,18 +1716,12 @@ <string name="accessibility_shortcut_enabling_service" msgid="7771852911861522636">"<xliff:g id="SERVICE_NAME">%1$s</xliff:g> быў уключаны з дапамогай камбінацыі хуткага доступу для спецыяльных магчымасцей"</string> <string name="accessibility_shortcut_disabling_service" msgid="2747243438223109821">"<xliff:g id="SERVICE_NAME">%1$s</xliff:g> быў адключаны з дапамогай камбінацыі хуткага доступу для спецыяльных магчымасцей"</string> <string name="accessibility_shortcut_spoken_feedback" msgid="8376923232350078434">"Каб карыстацца сэрвісам \"<xliff:g id="SERVICE_NAME">%1$s</xliff:g>\", націсніце і ўтрымлівайце на працягу трох секунд абедзве клавішы гучнасці"</string> - <!-- no translation found for accessibility_button_prompt_text (1176658502969738564) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8259145549733019401) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (1041435574275047665) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (7003212763213614833) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (5261788874937410950) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (4969448938984394550) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="1176658502969738564">"Выберыце службу для выкарыстання пры націску кнопкі \"Спецыяльныя магчымасці\":"</string> + <string name="accessibility_gesture_prompt_text" msgid="8259145549733019401">"З дапамогай жэста спецыяльных магчымасцей (правесці двума пальцамі па экране знізу ўверх) выберыце службу для выкарыстання:"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="1041435574275047665">"З дапамогай жэста спецыяльных магчымасцей (правесці трыма пальцамі па экране знізу ўверх) выберыце службу для выкарыстання:"</string> + <string name="accessibility_button_instructional_text" msgid="7003212763213614833">"Каб пераключыцца на другую службу, націсніце і ўтрымлівайце кнопку спецыяльных магчымасцей."</string> + <string name="accessibility_gesture_instructional_text" msgid="5261788874937410950">"Каб пераключыцца на другую службу, правядзіце ўверх двума пальцамі, утрымліваючы іх на экране."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="4969448938984394550">"Каб пераключыцца на іншую службу, правядзіце ўверх трыма пальцамі, утрымліваючы іх на экране."</string> <string name="accessibility_magnification_chooser_text" msgid="1227146738764986237">"Павелічэнне"</string> <string name="user_switched" msgid="3768006783166984410">"Бягучы карыстальнік <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="2871009331809089783">"Пераход да <xliff:g id="NAME">%1$s</xliff:g>..."</string> @@ -1980,7 +1974,7 @@ <string name="deprecated_target_sdk_app_store" msgid="5032340500368495077">"Праверыць на наяўнасць абнаўленняў"</string> <string name="new_sms_notification_title" msgid="8442817549127555977">"У вас ёсць новыя паведамленні"</string> <string name="new_sms_notification_content" msgid="7002938807812083463">"Праглядзець праз праграму для SMS"</string> - <string name="profile_encrypted_title" msgid="4260432497586829134">"Частка функц. можа быць абмеж."</string> + <string name="profile_encrypted_title" msgid="4260432497586829134">"Функцыі могуць быць абмежаваныя"</string> <string name="profile_encrypted_detail" msgid="3700965619978314974">"Рабочы профіль заблакіраваны"</string> <string name="profile_encrypted_message" msgid="6964994232310195874">"Кран., каб разбл. раб. профіль"</string> <string name="usb_mtp_launch_notification_title" msgid="8359219638312208932">"Падлучана да <xliff:g id="PRODUCT_NAME">%1$s</xliff:g>"</string> diff --git a/core/res/res/values-bg/strings.xml b/core/res/res/values-bg/strings.xml index 51356ebe483a..843452275809 100644 --- a/core/res/res/values-bg/strings.xml +++ b/core/res/res/values-bg/strings.xml @@ -1130,8 +1130,10 @@ <string name="whichViewApplication" msgid="3272778576700572102">"Отваряне чрез"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"Отваряне чрез %1$s"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"Отваряне"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"Предоставяне на достъп за отваряне на връзките от <xliff:g id="HOST">%1$s</xliff:g> с(ъс)"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"Предоставяне на достъп за отваряне на връзките от <xliff:g id="HOST">%1$s</xliff:g> с(ъс) <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> + <string name="whichOpenHostLinksWith" msgid="3788174881117226583">"Отваряне на връзките от <xliff:g id="HOST">%1$s</xliff:g> посредством"</string> + <string name="whichOpenLinksWith" msgid="6392123355599572804">"Отваряне на връзките посредством"</string> + <string name="whichOpenLinksWithApp" msgid="8225991685366651614">"Отваряне на връзките посредством <xliff:g id="APPLICATION">%1$s</xliff:g>"</string> + <string name="whichOpenHostLinksWithApp" msgid="3464470639011045589">"Отваряне на връзките от <xliff:g id="HOST">%1$s</xliff:g> посредством <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"Даване на достъп"</string> <string name="whichEditApplication" msgid="144727838241402655">"Редактиране чрез"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"Редактиране чрез %1$s"</string> @@ -1583,6 +1585,7 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"Да се стартира ли браузърът?"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"Да се приеме ли обаждането?"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"Винаги"</string> + <string name="activity_resolver_set_always" msgid="1422574191056490585">"Задаване винаги да се отваря"</string> <string name="activity_resolver_use_once" msgid="2404644797149173758">"Само веднъж"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"Настройки"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"%1$s не поддържа служебен потребителски профил"</string> @@ -1612,8 +1615,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"Наслагване №<xliff:g id="ID">%1$d</xliff:g>"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"„<xliff:g id="NAME">%1$s</xliff:g>“: <xliff:g id="WIDTH">%2$d</xliff:g> x <xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", защитено"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"Стартирането на активност на заден план от <xliff:g id="PACKAGENAME">%1$s</xliff:g> ще бъде блокирано в бъдещите компилации под Q. Разгледайте g.co/dev/bgblock."</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"Стартирането на активност на заден план от <xliff:g id="PACKAGENAME">%1$s</xliff:g> е блокирано. Разгледайте g.co/dev/bgblock."</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Забравена фигура"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"Грешна фигура"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"Грешна парола"</string> diff --git a/core/res/res/values-bn/strings.xml b/core/res/res/values-bn/strings.xml index 95290dbac31b..540bf028f8e8 100644 --- a/core/res/res/values-bn/strings.xml +++ b/core/res/res/values-bn/strings.xml @@ -131,8 +131,7 @@ <!-- no translation found for wfcSpnFormat_spn (4998685024207291232) --> <skip /> <string name="wfcSpnFormat_spn_wifi_calling" msgid="136001023263502280">"<xliff:g id="SPN">%s</xliff:g> ওয়াই-ফাই কলিং"</string> - <!-- no translation found for wfcSpnFormat_spn_wifi_calling_vo_hyphen (1730997175789582756) --> - <skip /> + <string name="wfcSpnFormat_spn_wifi_calling_vo_hyphen" msgid="1730997175789582756">"<xliff:g id="SPN">%s</xliff:g> Wi‑Fi কলিং"</string> <string name="wfcSpnFormat_wlan_call" msgid="2533371081782489793">"WLAN কল"</string> <string name="wfcSpnFormat_spn_wlan_call" msgid="2315240198303197168">"<xliff:g id="SPN">%s</xliff:g> WLAN কল"</string> <string name="wfcSpnFormat_spn_wifi" msgid="6546481665561961938">"<xliff:g id="SPN">%s</xliff:g> ওয়াই-ফাই"</string> @@ -888,7 +887,7 @@ <string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"আনলক এলাকা প্রসারিত করুন৷"</string> <string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"স্লাইড দিয়ে আনলক৷"</string> <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"প্যাটার্ন দিয়ে আনলক৷"</string> - <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"মুখের সাহায্যে আনলক করুন৷"</string> + <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"মুখের সাহায্যে আনলক৷"</string> <string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"পিন দিয়ে আনলক৷"</string> <string name="keyguard_accessibility_sim_pin_unlock" msgid="9149698847116962307">"সিম পিন আনলক।"</string> <string name="keyguard_accessibility_sim_puk_unlock" msgid="9106899279724723341">"সিম পিইউকে আনলক।"</string> @@ -1131,8 +1130,14 @@ <string name="whichViewApplication" msgid="3272778576700572102">"এর মাধ্যমে খুলুন"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"%1$s দিয়ে খুলুন"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"খুলুন"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"ব্যবহার করে <xliff:g id="HOST">%1$s</xliff:g> লিঙ্ক খুলতে অ্যাক্সেস দিন"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"<xliff:g id="APPLICATION">%2$s</xliff:g> ব্যবহার করে <xliff:g id="HOST">%1$s</xliff:g> লিঙ্ক খুলতে অ্যাক্সেস দিন"</string> + <!-- no translation found for whichOpenHostLinksWith (3788174881117226583) --> + <skip /> + <!-- no translation found for whichOpenLinksWith (6392123355599572804) --> + <skip /> + <!-- no translation found for whichOpenLinksWithApp (8225991685366651614) --> + <skip /> + <!-- no translation found for whichOpenHostLinksWithApp (3464470639011045589) --> + <skip /> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"অ্যাক্সেস দিন"</string> <string name="whichEditApplication" msgid="144727838241402655">"এর মাধ্যমে সম্পাদনা করুন"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"%1$s দিয়ে সম্পাদনা করুন"</string> @@ -1585,6 +1590,8 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"ব্রাউজার লঞ্চ করতে চান?"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"কল গ্রহণ করবেন?"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"সবসময়"</string> + <!-- no translation found for activity_resolver_set_always (1422574191056490585) --> + <skip /> <string name="activity_resolver_use_once" msgid="2404644797149173758">"শুধু একবার"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"সেটিংস"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"%1$s কর্মস্থলের প্রোফাইল সমর্থন করে না।"</string> @@ -1614,8 +1621,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"আচ্ছাদন #<xliff:g id="ID">%1$d</xliff:g>"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g>x<xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", নিরাপদ"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"<xliff:g id="PACKAGENAME">%1$s</xliff:g>-এর ব্যাকগ্রাউন্ড অ্যাক্টিভিটি ভবিষ্যতে Q বিল্ড ভার্সনে ব্লক করা হবে। g.co/dev/bgblock লিঙ্ক দেখুন।"</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"<xliff:g id="PACKAGENAME">%1$s</xliff:g>-এর ব্যাকগ্রাউন্ড অ্যাক্টিভিটি ব্লক করা হয়েছে। g.co/dev/bgblock লিঙ্ক দেখুন।"</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"প্যাটার্ন ভুলে গেছেন"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"ভুল প্যাটার্ন"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"ভুল পাসওয়ার্ড"</string> @@ -1669,18 +1674,12 @@ <string name="accessibility_shortcut_enabling_service" msgid="7771852911861522636">"অ্যাক্সেসযোগ্যতা শর্টকাট <xliff:g id="SERVICE_NAME">%1$s</xliff:g> কে চালু করেছে"</string> <string name="accessibility_shortcut_disabling_service" msgid="2747243438223109821">"অ্যাক্সেসযোগ্যতা শর্টকাট <xliff:g id="SERVICE_NAME">%1$s</xliff:g> কে বন্ধ করেছে"</string> <string name="accessibility_shortcut_spoken_feedback" msgid="8376923232350078434">"<xliff:g id="SERVICE_NAME">%1$s</xliff:g> ব্যবহার করতে ভলিউম কী বোতাম ৩ সেকেন্ডের জন্য চেপে ধরে রাখুন"</string> - <!-- no translation found for accessibility_button_prompt_text (1176658502969738564) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8259145549733019401) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (1041435574275047665) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (7003212763213614833) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (5261788874937410950) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (4969448938984394550) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="1176658502969738564">"অ্যাক্সেসিবিলিটি বোতামে ট্যাপ করে ব্যবহার করার জন্য এই পরিষেবাটি বেছে নিন:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8259145549733019401">"অ্যাক্সেসিবিলিটি জেসচারের সাহায্যে ব্যবহার করার জন্য এই পরিষেবা বেছে নিন (দুটি আঙুল দিয়ে স্ক্রিনের নিচ থেকে উপরের দিকে সোয়াইপ করুন):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="1041435574275047665">"অ্যাক্সেসিবিলিটি জেসচারের সাহায্যে ব্যবহার করার জন্য এই পরিষেবা বেছে নিন (তিনটি আঙ্গুল দিয়ে স্ক্রিনের নিচ থেকে উপরের দিকে সোয়াইপ করুন):"</string> + <string name="accessibility_button_instructional_text" msgid="7003212763213614833">"একটি পরিষেবা থেকে অন্য পরিষেবায় পাল্টাতে অ্যাক্সেসিবিলিটি বোতামটি টাচ করে ধরে রাখুন।"</string> + <string name="accessibility_gesture_instructional_text" msgid="5261788874937410950">"একটি পরিষেবা থেকে অন্য পরিষেবায় পাল্টাতে, দুটি আঙ্গুল দিয়ে উপরের দিকে সোয়াইপ করে ধরে রাখুন।"</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="4969448938984394550">"একটি পরিষেবা থেকে অন্য পরিষেবায় পাল্টাতে, তিনটি আঙ্গুল দিয়ে উপরের দিকে সোয়াইপ করে ধরে রাখুন।"</string> <string name="accessibility_magnification_chooser_text" msgid="1227146738764986237">"বড় করে দেখা"</string> <string name="user_switched" msgid="3768006783166984410">"বর্তমান ব্যবহারকারী <xliff:g id="NAME">%1$s</xliff:g>৷"</string> <string name="user_switching_message" msgid="2871009331809089783">"<xliff:g id="NAME">%1$s</xliff:g> নামের ব্যবহারকারীতে যাচ্ছে…"</string> diff --git a/core/res/res/values-bs/strings.xml b/core/res/res/values-bs/strings.xml index 34a21a9bdea6..cd58d0ddb037 100644 --- a/core/res/res/values-bs/strings.xml +++ b/core/res/res/values-bs/strings.xml @@ -259,7 +259,7 @@ <string name="notification_channel_security" msgid="7345516133431326347">"Sigurnost"</string> <string name="notification_channel_car_mode" msgid="3553380307619874564">"Način rada u automobilu"</string> <string name="notification_channel_account" msgid="7577959168463122027">"Status računa"</string> - <string name="notification_channel_developer" msgid="7579606426860206060">"Poruke programera"</string> + <string name="notification_channel_developer" msgid="7579606426860206060">"Poruke za programere"</string> <string name="notification_channel_updates" msgid="4794517569035110397">"Ažuriranja"</string> <string name="notification_channel_network_status" msgid="5025648583129035447">"Status mreže"</string> <string name="notification_channel_network_alerts" msgid="2895141221414156525">"Mrežna upozorenja"</string> @@ -269,7 +269,7 @@ <string name="notification_channel_alerts" msgid="4496839309318519037">"Upozorenja"</string> <string name="notification_channel_retail_mode" msgid="6088920674914038779">"Prodajna demonstracija"</string> <string name="notification_channel_usb" msgid="9006850475328924681">"USB veza"</string> - <string name="notification_channel_heavy_weight_app" msgid="6218742927792852607">"Pokrenuta je aplikacija"</string> + <string name="notification_channel_heavy_weight_app" msgid="6218742927792852607">"Pokrenuta aplikacija"</string> <string name="notification_channel_foreground_service" msgid="3931987440602669158">"Aplikacije koje troše bateriju"</string> <string name="foreground_service_app_in_background" msgid="1060198778219731292">"Aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> troši bateriju"</string> <string name="foreground_service_apps_in_background" msgid="7175032677643332242">"Broj aplikacija koje troše bateriju: <xliff:g id="NUMBER">%1$d</xliff:g>"</string> @@ -321,7 +321,7 @@ <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"Stavke koje dodirnete bit će izgovorene naglas, a ekran možete istraživati koristeći pokrete."</string> <string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Prati tekst koji unosite"</string> <string name="capability_desc_canRequestFilterKeyEvents" msgid="7463135292204152818">"Obuhvata lične podatke kao što su brojevi kreditnih kartica i lozinke."</string> - <string name="capability_title_canControlMagnification" msgid="3593493281059424855">"Kontrolira uvećanje prikaza na ekranu"</string> + <string name="capability_title_canControlMagnification" msgid="3593493281059424855">"Kontrolira uvećavanje prikaza na ekranu"</string> <string name="capability_desc_canControlMagnification" msgid="4791858203568383773">"Kontrolira stepen uvećanja prikaza na ekranu i podešavanje položaja."</string> <string name="capability_title_canPerformGestures" msgid="7418984730362576862">"Praviti pokrete"</string> <string name="capability_desc_canPerformGestures" msgid="8296373021636981249">"Može dodirivati, prevlačiti, hvatati prstima i praviti druge pokrete."</string> @@ -1150,8 +1150,10 @@ <string name="whichViewApplication" msgid="3272778576700572102">"Otvori koristeći"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"Otvori koristeći %1$s"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"Otvori"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"Dozvolite pristup za otvaranje linkova hosta <xliff:g id="HOST">%1$s</xliff:g> pomoću"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"Dozvolite pristup za otvaranje linkova hosta <xliff:g id="HOST">%1$s</xliff:g> pomoću aplikacije <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> + <string name="whichOpenHostLinksWith" msgid="3788174881117226583">"Otvaranje linkova hosta <xliff:g id="HOST">%1$s</xliff:g> pomoću"</string> + <string name="whichOpenLinksWith" msgid="6392123355599572804">"Otvaranje linkova pomoću"</string> + <string name="whichOpenLinksWithApp" msgid="8225991685366651614">"Otvaranje linkova pomoću aplikacije <xliff:g id="APPLICATION">%1$s</xliff:g>"</string> + <string name="whichOpenHostLinksWithApp" msgid="3464470639011045589">"Otvaranje linkova hosta <xliff:g id="HOST">%1$s</xliff:g> pomoću aplikacije <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"Dozvoli pristup"</string> <string name="whichEditApplication" msgid="144727838241402655">"Uredi koristeći"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"Uredi koristeći %1$s"</string> @@ -1608,6 +1610,7 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"Pokretanje preglednika?"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"Prihvatiti poziv?"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"Uvijek"</string> + <string name="activity_resolver_set_always" msgid="1422574191056490585">"Postavi da se uvijek otvara"</string> <string name="activity_resolver_use_once" msgid="2404644797149173758">"Samo ovaj put"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"Postavke"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"%1$s ne podržava poslovni profil"</string> @@ -1637,8 +1640,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"Nadsloj #<xliff:g id="ID">%1$d</xliff:g>"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g>x<xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", osigurano"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"Pokretanje aktivnosti u pozadini na web lokaciji <xliff:g id="PACKAGENAME">%1$s</xliff:g> blokirat će se u budućim Q verzijama. Pogledajte g.co/dev/bgblock."</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"Blokirano je pokretanje aktivnosti u pozadini na web lokaciji <xliff:g id="PACKAGENAME">%1$s</xliff:g>. Pogledajte g.co/dev/bgblock."</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Zaboravili ste uzorak?"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"Pogrešan uzorak"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"Pogrešna lozinka"</string> @@ -1696,10 +1697,10 @@ <string name="accessibility_button_prompt_text" msgid="1176658502969738564">"Odaberite uslugu koja će se koristiti kada dodirnete dugme za pristupačnost:"</string> <string name="accessibility_gesture_prompt_text" msgid="8259145549733019401">"Odaberite uslugu koja će se koristiti kada izvedete pokret za pristupačnost (s dva prsta prevucite prema gore s dna ekrana):"</string> <string name="accessibility_gesture_3finger_prompt_text" msgid="1041435574275047665">"Odaberite uslugu koja će se koristiti kada izvedete pokret za pristupačnost (s tri prsta prevucite prema gore s dna ekrana):"</string> - <string name="accessibility_button_instructional_text" msgid="7003212763213614833">"Za prebacivanje između usluga dodirnite i zadržite dugme za pristupačnost."</string> - <string name="accessibility_gesture_instructional_text" msgid="5261788874937410950">"Za prebacivanje između usluga s dva prsta prevucite prema gore i zadržite."</string> - <string name="accessibility_gesture_3finger_instructional_text" msgid="4969448938984394550">"Za prebacivanje između usluga s tri prsta prevucite prema gore i zadržite."</string> - <string name="accessibility_magnification_chooser_text" msgid="1227146738764986237">"Uvećanje"</string> + <string name="accessibility_button_instructional_text" msgid="7003212763213614833">"Da prebacujete između usluga, dodirnite i zadržite dugme za pristupačnost."</string> + <string name="accessibility_gesture_instructional_text" msgid="5261788874937410950">"Da prebacujete između usluga, s dva prsta prevucite prema gore i zadržite."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="4969448938984394550">"Da prebacujete između usluga, s tri prsta prevucite prema gore i zadržite."</string> + <string name="accessibility_magnification_chooser_text" msgid="1227146738764986237">"Uvećavanje"</string> <string name="user_switched" msgid="3768006783166984410">"Trenutni korisnik <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="2871009331809089783">"Prebacivanje na korisnika <xliff:g id="NAME">%1$s</xliff:g>..."</string> <string name="user_logging_out_message" msgid="8939524935808875155">"Odjava korisnika <xliff:g id="NAME">%1$s</xliff:g>…"</string> diff --git a/core/res/res/values-ca/strings.xml b/core/res/res/values-ca/strings.xml index 7016ab6cbb15..5c7dba85e90d 100644 --- a/core/res/res/values-ca/strings.xml +++ b/core/res/res/values-ca/strings.xml @@ -266,7 +266,7 @@ <string name="notification_channel_alerts" msgid="4496839309318519037">"Alertes"</string> <string name="notification_channel_retail_mode" msgid="6088920674914038779">"Demostració per a botigues"</string> <string name="notification_channel_usb" msgid="9006850475328924681">"Connexió USB"</string> - <string name="notification_channel_heavy_weight_app" msgid="6218742927792852607">"S\'està executant una aplicació"</string> + <string name="notification_channel_heavy_weight_app" msgid="6218742927792852607">"Aplicació en execució"</string> <string name="notification_channel_foreground_service" msgid="3931987440602669158">"Aplicacions que consumeixen bateria"</string> <string name="foreground_service_app_in_background" msgid="1060198778219731292">"<xliff:g id="APP_NAME">%1$s</xliff:g> està consumint bateria"</string> <string name="foreground_service_apps_in_background" msgid="7175032677643332242">"<xliff:g id="NUMBER">%1$d</xliff:g> aplicacions estan consumint bateria"</string> @@ -1130,8 +1130,10 @@ <string name="whichViewApplication" msgid="3272778576700572102">"Obre amb"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"Obre amb %1$s"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"Obre"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"Dona accés per obrir enllaços de <xliff:g id="HOST">%1$s</xliff:g> amb"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"Dona accés per obrir enllaços de <xliff:g id="HOST">%1$s</xliff:g> amb <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> + <string name="whichOpenHostLinksWith" msgid="3788174881117226583">"Obre els enllaços de <xliff:g id="HOST">%1$s</xliff:g> amb"</string> + <string name="whichOpenLinksWith" msgid="6392123355599572804">"Obre els enllaços amb"</string> + <string name="whichOpenLinksWithApp" msgid="8225991685366651614">"Obre els enllaços amb <xliff:g id="APPLICATION">%1$s</xliff:g>"</string> + <string name="whichOpenHostLinksWithApp" msgid="3464470639011045589">"Obre els enllaços de <xliff:g id="HOST">%1$s</xliff:g> amb <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"Dona accés"</string> <string name="whichEditApplication" msgid="144727838241402655">"Edita amb"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"Edita amb %1$s"</string> @@ -1583,6 +1585,7 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"Vols iniciar el navegador?"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"Vols acceptar la trucada?"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"Sempre"</string> + <string name="activity_resolver_set_always" msgid="1422574191056490585">"Obre sempre"</string> <string name="activity_resolver_use_once" msgid="2404644797149173758">"Només una vegada"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"Configuració"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"%1$s no admet perfils professionals."</string> @@ -1612,8 +1615,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"Superposa #<xliff:g id="ID">%1$d</xliff:g>"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g> x <xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", segur"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"A les futures compilacions de Q, es bloquejarà aquest inici d\'activitat en segon pla del paquet <xliff:g id="PACKAGENAME">%1$s</xliff:g>. Consulta g.co/dev/bgblock."</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"S\'ha bloquejat l\'inici d\'activitat en segon pla del paquet <xliff:g id="PACKAGENAME">%1$s</xliff:g>. Consulta g.co/dev/bgblock."</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"He oblidat el patró"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"Patró incorrecte"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"Contrasenya incorrecta"</string> @@ -1905,7 +1906,7 @@ <string name="deprecated_target_sdk_app_store" msgid="5032340500368495077">"Cerca actualitzacions"</string> <string name="new_sms_notification_title" msgid="8442817549127555977">"Tens missatges nous"</string> <string name="new_sms_notification_content" msgid="7002938807812083463">"Obre l\'aplicació d\'SMS per veure\'ls"</string> - <string name="profile_encrypted_title" msgid="4260432497586829134">"Algunes funcions poden limitar-se"</string> + <string name="profile_encrypted_title" msgid="4260432497586829134">"Algunes funcions poden ser limitades"</string> <string name="profile_encrypted_detail" msgid="3700965619978314974">"Perfil professional bloquejat"</string> <string name="profile_encrypted_message" msgid="6964994232310195874">"Toca per desbloquejar el perfil"</string> <string name="usb_mtp_launch_notification_title" msgid="8359219638312208932">"S\'ha connectat a <xliff:g id="PRODUCT_NAME">%1$s</xliff:g>"</string> diff --git a/core/res/res/values-cs/strings.xml b/core/res/res/values-cs/strings.xml index 6b370746fbc5..40150ff1b66a 100644 --- a/core/res/res/values-cs/strings.xml +++ b/core/res/res/values-cs/strings.xml @@ -1170,8 +1170,10 @@ <string name="whichViewApplication" msgid="3272778576700572102">"Otevřít v aplikaci"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"Otevřít v aplikaci %1$s"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"Otevřít"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"Udělte přístup k otevírání odkazů <xliff:g id="HOST">%1$s</xliff:g> pomocí aplikace"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"Udělte přístup k otevírání odkazů <xliff:g id="HOST">%1$s</xliff:g> pomocí aplikace <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> + <string name="whichOpenHostLinksWith" msgid="3788174881117226583">"Odkazy <xliff:g id="HOST">%1$s</xliff:g> otevírat pomocí aplikace"</string> + <string name="whichOpenLinksWith" msgid="6392123355599572804">"Odkazy otevírat pomocí aplikace"</string> + <string name="whichOpenLinksWithApp" msgid="8225991685366651614">"Odkazy otevírat pomocí aplikace <xliff:g id="APPLICATION">%1$s</xliff:g>"</string> + <string name="whichOpenHostLinksWithApp" msgid="3464470639011045589">"Odkazy <xliff:g id="HOST">%1$s</xliff:g> otevírat pomocí aplikace <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"Udělit přístup"</string> <string name="whichEditApplication" msgid="144727838241402655">"Upravit v aplikaci"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"Upravit v aplikaci %1$s"</string> @@ -1629,6 +1631,7 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"Spustit prohlížeč?"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"Přijmout hovor?"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"Vždy"</string> + <string name="activity_resolver_set_always" msgid="1422574191056490585">"Nastavit na Otevírat vždy"</string> <string name="activity_resolver_use_once" msgid="2404644797149173758">"Pouze jednou"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"Nastavení"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"%1$s pracovní profily nepodporuje."</string> @@ -1658,8 +1661,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"Překryvná vrstva č. <xliff:g id="ID">%1$d</xliff:g>"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g>x<xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", zabezpečené"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"Zahájení této aktivity na pozadí ze zdroje <xliff:g id="PACKAGENAME">%1$s</xliff:g> bude v budoucích sestaveních Q zablokováno. Další informace: g.co/dev/bgblock."</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"Zahájení aktivity na pozadí ze zdroje <xliff:g id="PACKAGENAME">%1$s</xliff:g> bylo zablokováno. Další informace: g.co/dev/bgblock."</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Zapomenuté gesto"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"Nesprávné gesto"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"Nesprávné heslo"</string> diff --git a/core/res/res/values-da/strings.xml b/core/res/res/values-da/strings.xml index bdb8d7229ffb..d32b02fcc9b1 100644 --- a/core/res/res/values-da/strings.xml +++ b/core/res/res/values-da/strings.xml @@ -131,8 +131,7 @@ <!-- no translation found for wfcSpnFormat_spn (4998685024207291232) --> <skip /> <string name="wfcSpnFormat_spn_wifi_calling" msgid="136001023263502280">"Wi-Fi-opkald via <xliff:g id="SPN">%s</xliff:g>"</string> - <!-- no translation found for wfcSpnFormat_spn_wifi_calling_vo_hyphen (1730997175789582756) --> - <skip /> + <string name="wfcSpnFormat_spn_wifi_calling_vo_hyphen" msgid="1730997175789582756">"<xliff:g id="SPN">%s</xliff:g>-opkald via Wi-Fi"</string> <string name="wfcSpnFormat_wlan_call" msgid="2533371081782489793">"WLAN-opkald"</string> <string name="wfcSpnFormat_spn_wlan_call" msgid="2315240198303197168">"WLAN-opkald via <xliff:g id="SPN">%s</xliff:g>"</string> <string name="wfcSpnFormat_spn_wifi" msgid="6546481665561961938">"Wi-Fi via <xliff:g id="SPN">%s</xliff:g>"</string> @@ -573,16 +572,16 @@ <string name="face_acquired_recalibrate" msgid="8077949502893707539">"Registrer dit ansigt igen."</string> <string name="face_acquired_too_different" msgid="7663983770123789694">"Ansigtet kan ikke længere genkendes. Prøv igen."</string> <string name="face_acquired_too_similar" msgid="1508776858407646460">"Det minder for meget om et andet. Skift stilling."</string> - <string name="face_acquired_pan_too_extreme" msgid="4581629343077288178">"Sørg for, at hovedet ikke er drejet for meget."</string> - <string name="face_acquired_tilt_too_extreme" msgid="4019954263012496468">"Sørg for, at hovedet ikke er bøjet for meget."</string> - <string name="face_acquired_roll_too_extreme" msgid="6312973147689664409">"Sørg for, at dit hoved ikke er drejet for meget."</string> + <string name="face_acquired_pan_too_extreme" msgid="4581629343077288178">"Du skal ikke dreje hovedet så meget."</string> + <string name="face_acquired_tilt_too_extreme" msgid="4019954263012496468">"Du skal ikke dreje hovedet så meget."</string> + <string name="face_acquired_roll_too_extreme" msgid="6312973147689664409">"Du skal ikke dreje hovedet så meget."</string> <string name="face_acquired_obscured" msgid="5357207702967893283">"Hvis noget skjuler dit ansigt, skal du fjerne det."</string> <string name="face_acquired_sensor_dirty" msgid="2535761002815565222">"Rens sensoren ved skærmens øverste kant."</string> <string-array name="face_acquired_vendor"> </string-array> <string name="face_error_hw_not_available" msgid="396883585636963908">"Ansigt ikke bekræftet. Hardware ikke tilgængelig."</string> <string name="face_error_timeout" msgid="3202585609451248103">"Prøv ansigtsgodkendelse igen."</string> - <string name="face_error_no_space" msgid="2712120617457553825">"Der kan ikke gemmes flere nye ansigter. Slet et gammelt."</string> + <string name="face_error_no_space" msgid="2712120617457553825">"Der kan ikke gemmes nye ansigtsdata. Slet et gammelt først."</string> <string name="face_error_canceled" msgid="2768146728600802422">"Ansigtshandlingen blev annulleret"</string> <string name="face_error_user_canceled" msgid="9003022830076496163">"Ansigtsgodkendelsen blev annulleret af brugeren"</string> <string name="face_error_lockout" msgid="3407426963155388504">"Du har prøvet for mange gange. Prøv igen senere."</string> @@ -1131,8 +1130,10 @@ <string name="whichViewApplication" msgid="3272778576700572102">"Åbn med"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"Åbn med %1$s"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"Åbn"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"Giv adgang til at åbne <xliff:g id="HOST">%1$s</xliff:g>-link med"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"Giv adgang til at åbne <xliff:g id="HOST">%1$s</xliff:g>-links med <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> + <string name="whichOpenHostLinksWith" msgid="3788174881117226583">"Åbn <xliff:g id="HOST">%1$s</xliff:g> links med"</string> + <string name="whichOpenLinksWith" msgid="6392123355599572804">"Åbn links med"</string> + <string name="whichOpenLinksWithApp" msgid="8225991685366651614">"Åbn links med <xliff:g id="APPLICATION">%1$s</xliff:g>"</string> + <string name="whichOpenHostLinksWithApp" msgid="3464470639011045589">"Åbn <xliff:g id="HOST">%1$s</xliff:g>-links med <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"Giv adgang"</string> <string name="whichEditApplication" msgid="144727838241402655">"Rediger med"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"Rediger med %1$s"</string> @@ -1584,6 +1585,7 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"Vil du starte browseren?"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"Vil du besvare opkaldet?"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"Altid"</string> + <string name="activity_resolver_set_always" msgid="1422574191056490585">"Angiv som altid åben"</string> <string name="activity_resolver_use_once" msgid="2404644797149173758">"Kun én gang"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"Indstillinger"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"%1$s understøtter ikke arbejdsprofil"</string> @@ -1613,8 +1615,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"Overlejring nr. <xliff:g id="ID">%1$d</xliff:g>"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g> x <xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", sikker"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"Denne opstart af aktivitet i baggrunden fra <xliff:g id="PACKAGENAME">%1$s</xliff:g> blokeres i fremtidige Q-builds. Se g.co/dev/bgblock."</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"Opstart af aktivitet i baggrunden fra <xliff:g id="PACKAGENAME">%1$s</xliff:g> er blokeret. Se g.co/dev/bgblock."</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Glemt mønster"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"Forkert mønster"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"Forkert adgangskode"</string> @@ -1668,18 +1668,12 @@ <string name="accessibility_shortcut_enabling_service" msgid="7771852911861522636">"Genvejen til hjælpefunktioner aktiverede <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> <string name="accessibility_shortcut_disabling_service" msgid="2747243438223109821">"Genvejen til hjælpefunktioner deaktiverede <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> <string name="accessibility_shortcut_spoken_feedback" msgid="8376923232350078434">"Hold begge lydstyrkeknapper nede i tre sekunder for at bruge <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for accessibility_button_prompt_text (1176658502969738564) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8259145549733019401) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (1041435574275047665) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (7003212763213614833) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (5261788874937410950) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (4969448938984394550) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="1176658502969738564">"Vælg, hvilken funktion du vil bruge, når du trykker på knappen Hjælpefunktioner:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8259145549733019401">"Vælg, hvilken funktion du vil bruge, når du laver bevægelsen for hjælpefunktioner (stryger opad fra bunden af skærmen med to fingre):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="1041435574275047665">"Vælg, hvilken funktion du vil bruge, når du laver bevægelsen for hjælpefunktioner (stryger opad fra bunden af skærmen med tre fingre):"</string> + <string name="accessibility_button_instructional_text" msgid="7003212763213614833">"Du kan skifte mellem funktioner ved at holde knappen Hjælpefunktioner nede."</string> + <string name="accessibility_gesture_instructional_text" msgid="5261788874937410950">"Du kan skifte mellem funktioner ved at stryge opad med to fingre og holde dem nede."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="4969448938984394550">"Du kan skifte mellem funktioner ved at stryge opad med tre fingre og holde dem nede."</string> <string name="accessibility_magnification_chooser_text" msgid="1227146738764986237">"Forstørrelse"</string> <string name="user_switched" msgid="3768006783166984410">"Nuværende bruger <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="2871009331809089783">"Skifter til <xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -1897,7 +1891,7 @@ <string name="user_creation_adding" msgid="4482658054622099197">"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="language_selection_title" msgid="2680677278159281088">"Tilføj et sprog"</string> <string name="country_selection_title" msgid="2954859441620215513">"Områdeindstilling"</string> - <string name="search_language_hint" msgid="7042102592055108574">"Angiv sprogets navn"</string> + <string name="search_language_hint" msgid="7042102592055108574">"Angiv sprog"</string> <string name="language_picker_section_suggested" msgid="8414489646861640885">"Foreslået"</string> <string name="language_picker_section_all" msgid="3097279199511617537">"Alle sprog"</string> <string name="region_picker_section_all" msgid="8966316787153001779">"Alle områder"</string> diff --git a/core/res/res/values-de/strings.xml b/core/res/res/values-de/strings.xml index 5c486ac3aab8..2f3cb10c5085 100644 --- a/core/res/res/values-de/strings.xml +++ b/core/res/res/values-de/strings.xml @@ -131,8 +131,7 @@ <!-- no translation found for wfcSpnFormat_spn (4998685024207291232) --> <skip /> <string name="wfcSpnFormat_spn_wifi_calling" msgid="136001023263502280">"<xliff:g id="SPN">%s</xliff:g> WLAN-Telefonie"</string> - <!-- no translation found for wfcSpnFormat_spn_wifi_calling_vo_hyphen (1730997175789582756) --> - <skip /> + <string name="wfcSpnFormat_spn_wifi_calling_vo_hyphen" msgid="1730997175789582756">"<xliff:g id="SPN">%s</xliff:g> WLAN-Telefonie"</string> <string name="wfcSpnFormat_wlan_call" msgid="2533371081782489793">"WLAN-Anruf"</string> <string name="wfcSpnFormat_spn_wlan_call" msgid="2315240198303197168">"<xliff:g id="SPN">%s</xliff:g> WLAN-Anruf"</string> <string name="wfcSpnFormat_spn_wifi" msgid="6546481665561961938">"<xliff:g id="SPN">%s</xliff:g> WLAN"</string> @@ -321,8 +320,8 @@ <string name="capability_desc_canRequestFilterKeyEvents" msgid="7463135292204152818">"Einschließlich personenbezogener Daten wie Kreditkartennummern und Passwörter."</string> <string name="capability_title_canControlMagnification" msgid="3593493281059424855">"Displayvergrößerung festlegen"</string> <string name="capability_desc_canControlMagnification" msgid="4791858203568383773">"Legt die Zoom-Stufe und -Position auf dem Display fest."</string> - <string name="capability_title_canPerformGestures" msgid="7418984730362576862">"Bewegungen möglich"</string> - <string name="capability_desc_canPerformGestures" msgid="8296373021636981249">"Tippen, Wischen, Zusammenziehen und andere Bewegungen möglich."</string> + <string name="capability_title_canPerformGestures" msgid="7418984730362576862">"Gesten möglich"</string> + <string name="capability_desc_canPerformGestures" msgid="8296373021636981249">"Tippen, Wischen, Zusammenziehen und andere Gesten möglich."</string> <string name="capability_title_canCaptureFingerprintGestures" msgid="6309568287512278670">"Bewegungen auf dem Fingerabdrucksensor"</string> <string name="capability_desc_canCaptureFingerprintGestures" msgid="4386487962402228670">"Erfasst Bewegungen auf dem Fingerabdrucksensor des Geräts."</string> <string name="permlab_statusBar" msgid="7417192629601890791">"Statusleiste deaktivieren oder ändern"</string> @@ -400,9 +399,9 @@ <string name="permlab_readCallLog" msgid="3478133184624102739">"Anrufliste lesen"</string> <string name="permdesc_readCallLog" msgid="3204122446463552146">"Diese App kann deine Anrufliste lesen."</string> <string name="permlab_writeCallLog" msgid="8552045664743499354">"Anrufliste bearbeiten"</string> - <string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"Ermöglicht der App, die Anrufliste deines Tablets zu ändern, einschließlich der Daten über ein- und ausgehende Anrufe. Schädliche Apps können so deine Anrufliste löschen oder ändern."</string> - <string name="permdesc_writeCallLog" product="tv" msgid="4225034892248398019">"Ermöglicht der App, die Anrufliste deines Fernsehers zu ändern, einschließlich der Daten über ein- und ausgehende Anrufe. Schädliche Apps können so deine Anrufliste löschen oder ändern."</string> - <string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"Ermöglicht der App, die Anrufliste deines Telefons zu ändern, einschließlich der Daten über ein- und ausgehende Anrufe. Schädliche Apps können so deine Anrufliste löschen oder ändern."</string> + <string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"Ermöglicht der App, die Anrufliste deines Tablets zu ändern, einschließlich der Daten über ein- und ausgehende Anrufe. Schädliche Apps können so die Einträge in der Anrufliste löschen oder sie ändern."</string> + <string name="permdesc_writeCallLog" product="tv" msgid="4225034892248398019">"Ermöglicht der App, die Anrufliste deines Fernsehers zu ändern, einschließlich der Daten über ein- und ausgehende Anrufe. Schädliche Apps können so die Einträge in der Anrufliste löschen oder sie ändern."</string> + <string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"Ermöglicht der App, die Anrufliste deines Telefons zu ändern, einschließlich der Daten über ein- und ausgehende Anrufe. Schädliche Apps können so die Einträge in der Anrufliste löschen oder sie ändern."</string> <string name="permlab_bodySensors" msgid="4683341291818520277">"Auf Körpersensoren wie z. B. Pulsmesser zugreifen"</string> <string name="permdesc_bodySensors" product="default" msgid="4380015021754180431">"Ermöglicht der App, auf Daten von Sensoren zuzugreifen, die deine körperliche Verfassung überwachen, beispielsweise deinen Puls"</string> <string name="permlab_readCalendar" msgid="6716116972752441641">"Kalendertermine und Details lesen"</string> @@ -568,7 +567,7 @@ <string name="face_acquired_too_right" msgid="3667075962661863218">"Beweg das Smartphone nach links."</string> <string name="face_acquired_too_left" msgid="3148242963894703424">"Beweg das Smartphone nach rechts."</string> <string name="face_acquired_poor_gaze" msgid="5606479370806754905">"Bitte sieh direkt auf dein Gerät."</string> - <string name="face_acquired_not_detected" msgid="4885504661626728809">"Gesicht wurde nicht erkannt. Blicke aufs Telefon."</string> + <string name="face_acquired_not_detected" msgid="4885504661626728809">"Gesicht wurde nicht gefunden. Blicke aufs Telefon."</string> <string name="face_acquired_too_much_motion" msgid="3149332171102108851">"Zu viel Unruhe. Halte das Smartphone ruhig."</string> <string name="face_acquired_recalibrate" msgid="8077949502893707539">"Bitte registriere dein Gesicht noch einmal."</string> <string name="face_acquired_too_different" msgid="7663983770123789694">"Gesicht wird nicht mehr erkannt. Erneut versuchen."</string> @@ -940,7 +939,7 @@ <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="7007393823197766548">"Ermöglicht der App, den Browserverlauf und die Lesezeichen auf deinem Fernseher zu bearbeiten. Damit kann die App Browserdaten löschen und ändern. Hinweis: Diese Berechtigung kann nicht von Browsern von Drittanbietern oder anderen Apps mit Internetfunktionen erzwungen werden."</string> <string name="permdesc_writeHistoryBookmarks" product="default" msgid="8497389531014185509">"Ermöglicht der App, den Browserverlauf und die Lesezeichen auf deinem Telefon zu ändern. Damit kann die App Browserdaten löschen und ändern. Hinweis: Diese Berechtigung kann nicht von Browsern von Drittanbietern oder anderen Apps mit Internetfunktionen erzwungen werden."</string> <string name="permlab_setAlarm" msgid="1379294556362091814">"Wecker stellen"</string> - <string name="permdesc_setAlarm" msgid="316392039157473848">"Ermöglicht der App, einen Alarm in einer installierten Wecker-App einzurichten. Einige Wecker-Apps implementieren diese Funktion möglicherweise nicht."</string> + <string name="permdesc_setAlarm" msgid="316392039157473848">"Ermöglicht der App, einen Weckruf in einer installierten Wecker-App einzurichten. Einige Wecker-Apps implementieren diese Funktion möglicherweise nicht."</string> <string name="permlab_addVoicemail" msgid="5525660026090959044">"Mailboxnachrichten hinzufügen"</string> <string name="permdesc_addVoicemail" msgid="6604508651428252437">"Ermöglicht der App, Nachrichten zu deinem Mailbox-Posteingang hinzuzufügen"</string> <string name="permlab_writeGeolocationPermissions" msgid="5962224158955273932">"Geolokalisierungsberechtigungen des Browsers ändern"</string> @@ -1131,8 +1130,10 @@ <string name="whichViewApplication" msgid="3272778576700572102">"Öffnen mit"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"Mit %1$s öffnen"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"Öffnen"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"Zugriff zum Öffnen von <xliff:g id="HOST">%1$s</xliff:g>-Links erlauben"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"Zugriff zum Öffnen von <xliff:g id="HOST">%1$s</xliff:g>-Links mit <xliff:g id="APPLICATION">%2$s</xliff:g> erlauben"</string> + <string name="whichOpenHostLinksWith" msgid="3788174881117226583">"Links von <xliff:g id="HOST">%1$s</xliff:g> öffnen mit"</string> + <string name="whichOpenLinksWith" msgid="6392123355599572804">"Links öffnen mit"</string> + <string name="whichOpenLinksWithApp" msgid="8225991685366651614">"Links mit <xliff:g id="APPLICATION">%1$s</xliff:g> öffnen"</string> + <string name="whichOpenHostLinksWithApp" msgid="3464470639011045589">"Links von <xliff:g id="HOST">%1$s</xliff:g> mit <xliff:g id="APPLICATION">%2$s</xliff:g> öffnen"</string> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"Zugriff erlauben"</string> <string name="whichEditApplication" msgid="144727838241402655">"Bearbeiten mit"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"Mit %1$s bearbeiten"</string> @@ -1584,6 +1585,7 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"Browser starten?"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"Anruf annehmen?"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"Immer"</string> + <string name="activity_resolver_set_always" msgid="1422574191056490585">"Auf \"Immer geöffnet\" festlegen"</string> <string name="activity_resolver_use_once" msgid="2404644797149173758">"Nur diesmal"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"Einstellungen"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"Das Arbeitsprofil wird von %1$s nicht unterstützt."</string> @@ -1613,8 +1615,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"Overlay-Nr. <xliff:g id="ID">%1$d</xliff:g>"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g> x <xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", sicher"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"Der Start dieser Hintergrundaktivität aus <xliff:g id="PACKAGENAME">%1$s</xliff:g> wird in künftigen Q-Builds blockiert. Weitere Informationen findest du unter g.co/dev/bgblock."</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"Der Start der Hintergrundaktivität aus <xliff:g id="PACKAGENAME">%1$s</xliff:g> wurde blockiert. Weitere Informationen findest du unter g.co/dev/bgblock."</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Muster vergessen"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"Falsches Muster"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"Falsches Passwort"</string> @@ -1668,9 +1668,9 @@ <string name="accessibility_shortcut_enabling_service" msgid="7771852911861522636">"<xliff:g id="SERVICE_NAME">%1$s</xliff:g> wurde durch die Bedienungshilfenverknüpfung aktiviert"</string> <string name="accessibility_shortcut_disabling_service" msgid="2747243438223109821">"<xliff:g id="SERVICE_NAME">%1$s</xliff:g> wurde durch die Bedienungshilfenverknüpfung deaktiviert"</string> <string name="accessibility_shortcut_spoken_feedback" msgid="8376923232350078434">"Halten Sie beide Lautstärketasten drei Sekunden lang gedrückt, um <xliff:g id="SERVICE_NAME">%1$s</xliff:g> zu verwenden"</string> - <string name="accessibility_button_prompt_text" msgid="1176658502969738564">"Wähle einen Dienst aus, der verwendet wird, wenn du auf die Schaltfläche für die Bedienungshilfen tippst:"</string> - <string name="accessibility_gesture_prompt_text" msgid="8259145549733019401">"Wähle einen Dienst aus, der mit der Bewegung für die Bedienungshilfen verwendet wird (mit zwei Fingern vom unteren Bildschirmrand nach oben wischen):"</string> - <string name="accessibility_gesture_3finger_prompt_text" msgid="1041435574275047665">"Wähle einen Dienst aus, der mit der Bewegung für die Bedienungshilfen verwendet wird (mit drei Fingern vom unteren Bildschirmrand nach oben wischen):"</string> + <string name="accessibility_button_prompt_text" msgid="1176658502969738564">"Wähle den Dienst aus, der verwendet werden soll, wenn du auf die Schaltfläche für die Bedienungshilfen tippst:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8259145549733019401">"Wähle den Dienst aus, der mit der Bewegung für die Bedienungshilfen verwendet werden soll (mit zwei Fingern vom unteren Bildschirmrand nach oben wischen):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="1041435574275047665">"Wähle den Dienst aus, der mit der Geste für die Bedienungshilfen verwendet werden soll (mit drei Fingern vom unteren Bildschirmrand nach oben wischen):"</string> <string name="accessibility_button_instructional_text" msgid="7003212763213614833">"Wenn du zwischen den Diensten wechseln möchtest, halte die Schaltfläche für die Bedienungshilfen gedrückt."</string> <string name="accessibility_gesture_instructional_text" msgid="5261788874937410950">"Wenn du zwischen den Diensten wechseln möchtest, wische mit zwei Fingern nach oben und halte sie gedrückt."</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="4969448938984394550">"Wenn du zwischen den Diensten wechseln möchtest, wische mit drei Fingern nach oben und halte sie gedrückt."</string> diff --git a/core/res/res/values-el/strings.xml b/core/res/res/values-el/strings.xml index 9bdb4a526643..766b2ead6d32 100644 --- a/core/res/res/values-el/strings.xml +++ b/core/res/res/values-el/strings.xml @@ -1130,8 +1130,10 @@ <string name="whichViewApplication" msgid="3272778576700572102">"Άνοιγμα με"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"Άνοιγμα με %1$s"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"Άνοιγμα"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"Παραχώρηση πρόσβασης για το άνοιγμα συνδέσμων <xliff:g id="HOST">%1$s</xliff:g> με"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"Παραχώρηση πρόσβασης για το άνοιγμα συνδέσμων <xliff:g id="HOST">%1$s</xliff:g> με την εφαρμογή <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> + <string name="whichOpenHostLinksWith" msgid="3788174881117226583">"Άνοιγμα συνδέσμων <xliff:g id="HOST">%1$s</xliff:g> με"</string> + <string name="whichOpenLinksWith" msgid="6392123355599572804">"Άνοιγμα συνδέσμων με"</string> + <string name="whichOpenLinksWithApp" msgid="8225991685366651614">"Άνοιγμα συνδέσμων με την εφαρμογή <xliff:g id="APPLICATION">%1$s</xliff:g>"</string> + <string name="whichOpenHostLinksWithApp" msgid="3464470639011045589">"Άνοιγμα συνδέσμων <xliff:g id="HOST">%1$s</xliff:g> με την εφαρμογή <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"Παροχή πρόσβασης"</string> <string name="whichEditApplication" msgid="144727838241402655">"Επεξεργασία με"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"Επεξεργασία με %1$s"</string> @@ -1583,6 +1585,7 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"Εκκίνηση προγράμματος περιήγησης;"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"Αποδοχή κλήσης;"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"Πάντα"</string> + <string name="activity_resolver_set_always" msgid="1422574191056490585">"Ορισμός ως πάντα ανοικτής"</string> <string name="activity_resolver_use_once" msgid="2404644797149173758">"Μόνο μία φορά"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"Ρυθμίσεις"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"Το προφίλ εργασίας δεν υποστηρίζεται από %1$s"</string> @@ -1612,8 +1615,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"Επικάλυψη #<xliff:g id="ID">%1$d</xliff:g>"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g>x<xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", ασφαλές"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"Αυτή η έναρξη δραστηριότητας παρασκηνίου από το <xliff:g id="PACKAGENAME">%1$s</xliff:g> θα αποκλειστεί σε μελλοντικές εκδόσεις του Q. Ανατρέξτε στο g.co/dev/bgblock."</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"Η έναρξη δραστηριότητας παρασκηνίου από το <xliff:g id="PACKAGENAME">%1$s</xliff:g> αποκλείστηκε. Ανατρέξτε στο g.co/dev/bgblock."</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Ξεχάσατε το μοτίβο"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"Λάθος μοτίβο"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"Λανθασμένος κωδικός πρόσβασης"</string> diff --git a/core/res/res/values-en-rAU/strings.xml b/core/res/res/values-en-rAU/strings.xml index 3bd25e015568..9ca98f308dc2 100644 --- a/core/res/res/values-en-rAU/strings.xml +++ b/core/res/res/values-en-rAU/strings.xml @@ -1130,8 +1130,10 @@ <string name="whichViewApplication" msgid="3272778576700572102">"Open with"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"Open with %1$s"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"Open"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"Give access to open <xliff:g id="HOST">%1$s</xliff:g> links with"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"Give access to open <xliff:g id="HOST">%1$s</xliff:g> links with <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> + <string name="whichOpenHostLinksWith" msgid="3788174881117226583">"Open <xliff:g id="HOST">%1$s</xliff:g> links with"</string> + <string name="whichOpenLinksWith" msgid="6392123355599572804">"Open links with"</string> + <string name="whichOpenLinksWithApp" msgid="8225991685366651614">"Open links with <xliff:g id="APPLICATION">%1$s</xliff:g>"</string> + <string name="whichOpenHostLinksWithApp" msgid="3464470639011045589">"Open <xliff:g id="HOST">%1$s</xliff:g> links with <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"Give access"</string> <string name="whichEditApplication" msgid="144727838241402655">"Edit with"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"Edit with %1$s"</string> @@ -1583,6 +1585,7 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"Launch Browser?"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"Accept call?"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"Always"</string> + <string name="activity_resolver_set_always" msgid="1422574191056490585">"Set to always open"</string> <string name="activity_resolver_use_once" msgid="2404644797149173758">"Just once"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"Settings"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"%1$s doesn\'t support work profile"</string> @@ -1612,8 +1615,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"Overlay #<xliff:g id="ID">%1$d</xliff:g>"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g>x<xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", secure"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"This background activity start from <xliff:g id="PACKAGENAME">%1$s</xliff:g> will be blocked in future Q builds. See g.co/dev/bgblock."</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"Background activity start from <xliff:g id="PACKAGENAME">%1$s</xliff:g> blocked. See g.co/dev/bgblock."</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Forgot Pattern"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"Wrong Pattern"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"Wrong Password"</string> diff --git a/core/res/res/values-en-rCA/strings.xml b/core/res/res/values-en-rCA/strings.xml index 231aa28d770e..4da6381a2887 100644 --- a/core/res/res/values-en-rCA/strings.xml +++ b/core/res/res/values-en-rCA/strings.xml @@ -1130,8 +1130,10 @@ <string name="whichViewApplication" msgid="3272778576700572102">"Open with"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"Open with %1$s"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"Open"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"Give access to open <xliff:g id="HOST">%1$s</xliff:g> links with"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"Give access to open <xliff:g id="HOST">%1$s</xliff:g> links with <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> + <string name="whichOpenHostLinksWith" msgid="3788174881117226583">"Open <xliff:g id="HOST">%1$s</xliff:g> links with"</string> + <string name="whichOpenLinksWith" msgid="6392123355599572804">"Open links with"</string> + <string name="whichOpenLinksWithApp" msgid="8225991685366651614">"Open links with <xliff:g id="APPLICATION">%1$s</xliff:g>"</string> + <string name="whichOpenHostLinksWithApp" msgid="3464470639011045589">"Open <xliff:g id="HOST">%1$s</xliff:g> links with <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"Give access"</string> <string name="whichEditApplication" msgid="144727838241402655">"Edit with"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"Edit with %1$s"</string> @@ -1583,6 +1585,7 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"Launch Browser?"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"Accept call?"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"Always"</string> + <string name="activity_resolver_set_always" msgid="1422574191056490585">"Set to always open"</string> <string name="activity_resolver_use_once" msgid="2404644797149173758">"Just once"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"Settings"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"%1$s doesn\'t support work profile"</string> @@ -1612,8 +1615,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"Overlay #<xliff:g id="ID">%1$d</xliff:g>"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g>x<xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", secure"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"This background activity start from <xliff:g id="PACKAGENAME">%1$s</xliff:g> will be blocked in future Q builds. See g.co/dev/bgblock."</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"Background activity start from <xliff:g id="PACKAGENAME">%1$s</xliff:g> blocked. See g.co/dev/bgblock."</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Forgot Pattern"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"Wrong Pattern"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"Wrong Password"</string> diff --git a/core/res/res/values-en-rGB/strings.xml b/core/res/res/values-en-rGB/strings.xml index 3bd25e015568..9ca98f308dc2 100644 --- a/core/res/res/values-en-rGB/strings.xml +++ b/core/res/res/values-en-rGB/strings.xml @@ -1130,8 +1130,10 @@ <string name="whichViewApplication" msgid="3272778576700572102">"Open with"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"Open with %1$s"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"Open"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"Give access to open <xliff:g id="HOST">%1$s</xliff:g> links with"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"Give access to open <xliff:g id="HOST">%1$s</xliff:g> links with <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> + <string name="whichOpenHostLinksWith" msgid="3788174881117226583">"Open <xliff:g id="HOST">%1$s</xliff:g> links with"</string> + <string name="whichOpenLinksWith" msgid="6392123355599572804">"Open links with"</string> + <string name="whichOpenLinksWithApp" msgid="8225991685366651614">"Open links with <xliff:g id="APPLICATION">%1$s</xliff:g>"</string> + <string name="whichOpenHostLinksWithApp" msgid="3464470639011045589">"Open <xliff:g id="HOST">%1$s</xliff:g> links with <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"Give access"</string> <string name="whichEditApplication" msgid="144727838241402655">"Edit with"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"Edit with %1$s"</string> @@ -1583,6 +1585,7 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"Launch Browser?"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"Accept call?"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"Always"</string> + <string name="activity_resolver_set_always" msgid="1422574191056490585">"Set to always open"</string> <string name="activity_resolver_use_once" msgid="2404644797149173758">"Just once"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"Settings"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"%1$s doesn\'t support work profile"</string> @@ -1612,8 +1615,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"Overlay #<xliff:g id="ID">%1$d</xliff:g>"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g>x<xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", secure"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"This background activity start from <xliff:g id="PACKAGENAME">%1$s</xliff:g> will be blocked in future Q builds. See g.co/dev/bgblock."</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"Background activity start from <xliff:g id="PACKAGENAME">%1$s</xliff:g> blocked. See g.co/dev/bgblock."</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Forgot Pattern"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"Wrong Pattern"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"Wrong Password"</string> diff --git a/core/res/res/values-en-rIN/strings.xml b/core/res/res/values-en-rIN/strings.xml index 3bd25e015568..9ca98f308dc2 100644 --- a/core/res/res/values-en-rIN/strings.xml +++ b/core/res/res/values-en-rIN/strings.xml @@ -1130,8 +1130,10 @@ <string name="whichViewApplication" msgid="3272778576700572102">"Open with"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"Open with %1$s"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"Open"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"Give access to open <xliff:g id="HOST">%1$s</xliff:g> links with"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"Give access to open <xliff:g id="HOST">%1$s</xliff:g> links with <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> + <string name="whichOpenHostLinksWith" msgid="3788174881117226583">"Open <xliff:g id="HOST">%1$s</xliff:g> links with"</string> + <string name="whichOpenLinksWith" msgid="6392123355599572804">"Open links with"</string> + <string name="whichOpenLinksWithApp" msgid="8225991685366651614">"Open links with <xliff:g id="APPLICATION">%1$s</xliff:g>"</string> + <string name="whichOpenHostLinksWithApp" msgid="3464470639011045589">"Open <xliff:g id="HOST">%1$s</xliff:g> links with <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"Give access"</string> <string name="whichEditApplication" msgid="144727838241402655">"Edit with"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"Edit with %1$s"</string> @@ -1583,6 +1585,7 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"Launch Browser?"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"Accept call?"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"Always"</string> + <string name="activity_resolver_set_always" msgid="1422574191056490585">"Set to always open"</string> <string name="activity_resolver_use_once" msgid="2404644797149173758">"Just once"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"Settings"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"%1$s doesn\'t support work profile"</string> @@ -1612,8 +1615,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"Overlay #<xliff:g id="ID">%1$d</xliff:g>"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g>x<xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", secure"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"This background activity start from <xliff:g id="PACKAGENAME">%1$s</xliff:g> will be blocked in future Q builds. See g.co/dev/bgblock."</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"Background activity start from <xliff:g id="PACKAGENAME">%1$s</xliff:g> blocked. See g.co/dev/bgblock."</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Forgot Pattern"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"Wrong Pattern"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"Wrong Password"</string> diff --git a/core/res/res/values-en-rXC/strings.xml b/core/res/res/values-en-rXC/strings.xml index a1df04dc9c8b..71946ee5a566 100644 --- a/core/res/res/values-en-rXC/strings.xml +++ b/core/res/res/values-en-rXC/strings.xml @@ -1130,8 +1130,10 @@ <string name="whichViewApplication" msgid="3272778576700572102">"Open with"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"Open with %1$s"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"Open"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"Give access to open <xliff:g id="HOST">%1$s</xliff:g> links with"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"Give access to open <xliff:g id="HOST">%1$s</xliff:g> links with <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> + <string name="whichOpenHostLinksWith" msgid="3788174881117226583">"Open <xliff:g id="HOST">%1$s</xliff:g> links with"</string> + <string name="whichOpenLinksWith" msgid="6392123355599572804">"Open links with"</string> + <string name="whichOpenLinksWithApp" msgid="8225991685366651614">"Open links with <xliff:g id="APPLICATION">%1$s</xliff:g>"</string> + <string name="whichOpenHostLinksWithApp" msgid="3464470639011045589">"Open <xliff:g id="HOST">%1$s</xliff:g> links with <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"Give access"</string> <string name="whichEditApplication" msgid="144727838241402655">"Edit with"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"Edit with %1$s"</string> @@ -1583,6 +1585,7 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"Launch Browser?"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"Accept call?"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"Always"</string> + <string name="activity_resolver_set_always" msgid="1422574191056490585">"Set to always open"</string> <string name="activity_resolver_use_once" msgid="2404644797149173758">"Just once"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"Settings"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"%1$s doesn\'t support work profile"</string> @@ -1612,8 +1615,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"Overlay #<xliff:g id="ID">%1$d</xliff:g>"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g>x<xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", secure"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"This background activity start from <xliff:g id="PACKAGENAME">%1$s</xliff:g> will be blocked in future Q builds. See g.co/dev/bgblock."</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"Background activity start from <xliff:g id="PACKAGENAME">%1$s</xliff:g> blocked. See g.co/dev/bgblock."</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Forgot Pattern"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"Wrong Pattern"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"Wrong Password"</string> diff --git a/core/res/res/values-es-rUS/strings.xml b/core/res/res/values-es-rUS/strings.xml index 22d95bcab7f5..ba0c01821254 100644 --- a/core/res/res/values-es-rUS/strings.xml +++ b/core/res/res/values-es-rUS/strings.xml @@ -34,7 +34,7 @@ <string name="defaultMsisdnAlphaTag" msgid="2850889754919584674">"MSISDN1"</string> <string name="mmiError" msgid="5154499457739052907">"Problema de conexión o código incorrecto de MMI."</string> <string name="mmiFdnError" msgid="5224398216385316471">"La operación está limitada a números de marcación fija."</string> - <string name="mmiErrorWhileRoaming" msgid="762488890299284230">"No se puede cambiar la configuración de reenvío de llamadas de tu teléfono mientras usas el servicio de roaming."</string> + <string name="mmiErrorWhileRoaming" msgid="762488890299284230">"No se puede cambiar la configuración de desvío de llamadas de tu teléfono mientras usas el servicio de roaming."</string> <string name="serviceEnabled" msgid="8147278346414714315">"Se ha activado el servicio."</string> <string name="serviceEnabledFor" msgid="6856228140453471041">"Se activó el servicio para:"</string> <string name="serviceDisabled" msgid="1937553226592516411">"Se ha desactivado el servicio."</string> @@ -131,8 +131,7 @@ <!-- no translation found for wfcSpnFormat_spn (4998685024207291232) --> <skip /> <string name="wfcSpnFormat_spn_wifi_calling" msgid="136001023263502280">"Llamada por Wi-Fi de <xliff:g id="SPN">%s</xliff:g>"</string> - <!-- no translation found for wfcSpnFormat_spn_wifi_calling_vo_hyphen (1730997175789582756) --> - <skip /> + <string name="wfcSpnFormat_spn_wifi_calling_vo_hyphen" msgid="1730997175789582756">"Llamada por Wi-Fi de <xliff:g id="SPN">%s</xliff:g>"</string> <string name="wfcSpnFormat_wlan_call" msgid="2533371081782489793">"Llamada por WLAN"</string> <string name="wfcSpnFormat_spn_wlan_call" msgid="2315240198303197168">"Llamada por WLAN de <xliff:g id="SPN">%s</xliff:g>"</string> <string name="wfcSpnFormat_spn_wifi" msgid="6546481665561961938">"Wi-Fi de <xliff:g id="SPN">%s</xliff:g>"</string> @@ -1131,8 +1130,10 @@ <string name="whichViewApplication" msgid="3272778576700572102">"Abrir con"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"Abrir con %1$s"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"Abrir"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"Otorgar acceso para abrir vínculos de <xliff:g id="HOST">%1$s</xliff:g> con"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"Otorgar acceso para abrir vínculos de <xliff:g id="HOST">%1$s</xliff:g> con <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> + <string name="whichOpenHostLinksWith" msgid="3788174881117226583">"Abrir vínculos de <xliff:g id="HOST">%1$s</xliff:g> con"</string> + <string name="whichOpenLinksWith" msgid="6392123355599572804">"Abrir vínculos con"</string> + <string name="whichOpenLinksWithApp" msgid="8225991685366651614">"Abrir vínculos con <xliff:g id="APPLICATION">%1$s</xliff:g>"</string> + <string name="whichOpenHostLinksWithApp" msgid="3464470639011045589">"Abrir vínculos de <xliff:g id="HOST">%1$s</xliff:g> con <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"Otorgar acceso"</string> <string name="whichEditApplication" msgid="144727838241402655">"Editar con"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"Editar con %1$s"</string> @@ -1584,6 +1585,7 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"¿Deseas iniciar el navegador?"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"¿Aceptar la llamada?"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"Siempre"</string> + <string name="activity_resolver_set_always" msgid="1422574191056490585">"Establecer en \"abrir siempre\""</string> <string name="activity_resolver_use_once" msgid="2404644797149173758">"Solo una vez"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"Configuración"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"%1$s no admite perfiles de trabajo."</string> @@ -1613,8 +1615,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"Superposición #<xliff:g id="ID">%1$d</xliff:g>"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g> x <xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> ppp"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", segura"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"En las próximas compilaciones de Q, se bloqueará el inicio de la actividad en segundo plano de <xliff:g id="PACKAGENAME">%1$s</xliff:g>. Consulta g.co/dev/bgblock."</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"Se bloqueó el inicio de la actividad en segundo plano de <xliff:g id="PACKAGENAME">%1$s</xliff:g>. Consulta g.co/dev/bgblock."</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"¿Olvidaste el patrón?"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"Patrón incorrecto"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"Contraseña incorrecta"</string> @@ -1668,18 +1668,12 @@ <string name="accessibility_shortcut_enabling_service" msgid="7771852911861522636">"El acceso directo de accesibilidad activó <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> <string name="accessibility_shortcut_disabling_service" msgid="2747243438223109821">"El acceso directo de accesibilidad desactivó <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> <string name="accessibility_shortcut_spoken_feedback" msgid="8376923232350078434">"Mantén presionadas ambas teclas de volumen durante tres segundos para usar <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for accessibility_button_prompt_text (1176658502969738564) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8259145549733019401) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (1041435574275047665) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (7003212763213614833) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (5261788874937410950) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (4969448938984394550) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="1176658502969738564">"Elige un servicio para usar cuando presiones el botón de accesibilidad:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8259145549733019401">"Elige un servicio para usar cuando realices el gesto de accesibilidad (deslizar dos dedos hacia arriba desde la parte inferior de la pantalla):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="1041435574275047665">"Elige el servicio que se usará cuando realices el gesto de accesibilidad (deslizar tres dedos hacia arriba desde la parte inferior de la pantalla):"</string> + <string name="accessibility_button_instructional_text" msgid="7003212763213614833">"Para cambiar de servicio, mantén presionado el botón de accesibilidad."</string> + <string name="accessibility_gesture_instructional_text" msgid="5261788874937410950">"Para cambiar de servicio, desliza dos dedos hacia arriba y mantén presionado."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="4969448938984394550">"Para cambiar de servicio, desliza tres dedos hacia arriba y mantén presionado."</string> <string name="accessibility_magnification_chooser_text" msgid="1227146738764986237">"Ampliación"</string> <string name="user_switched" msgid="3768006783166984410">"Usuario actual: <xliff:g id="NAME">%1$s</xliff:g>"</string> <string name="user_switching_message" msgid="2871009331809089783">"Cambiando a <xliff:g id="NAME">%1$s</xliff:g>…"</string> diff --git a/core/res/res/values-es/strings.xml b/core/res/res/values-es/strings.xml index ac365f7eebea..7a31b1af781f 100644 --- a/core/res/res/values-es/strings.xml +++ b/core/res/res/values-es/strings.xml @@ -1130,8 +1130,10 @@ <string name="whichViewApplication" msgid="3272778576700572102">"Abrir con"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"Abrir con %1$s"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"Abrir"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"Permitir acceso para abrir enlaces de <xliff:g id="HOST">%1$s</xliff:g> con"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"Permitir acceso para abrir enlaces de <xliff:g id="HOST">%1$s</xliff:g> con <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> + <string name="whichOpenHostLinksWith" msgid="3788174881117226583">"Abrir enlaces de <xliff:g id="HOST">%1$s</xliff:g> con"</string> + <string name="whichOpenLinksWith" msgid="6392123355599572804">"Abrir enlaces con"</string> + <string name="whichOpenLinksWithApp" msgid="8225991685366651614">"Abrir enlaces con <xliff:g id="APPLICATION">%1$s</xliff:g>"</string> + <string name="whichOpenHostLinksWithApp" msgid="3464470639011045589">"Abrir enlaces de <xliff:g id="HOST">%1$s</xliff:g> con <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"Permitir acceso"</string> <string name="whichEditApplication" msgid="144727838241402655">"Editar con"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"Editar con %1$s"</string> @@ -1583,6 +1585,7 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"¿Iniciar el navegador?"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"¿Aceptar la llamada?"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"Siempre"</string> + <string name="activity_resolver_set_always" msgid="1422574191056490585">"Configurar para que se abra siempre"</string> <string name="activity_resolver_use_once" msgid="2404644797149173758">"Solo una vez"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"Ajustes"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"%1$s no admite perfiles de trabajo"</string> @@ -1612,8 +1615,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"Superposición #<xliff:g id="ID">%1$d</xliff:g>"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g> x <xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", seguro"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"El inicio de la actividad en segundo plano de <xliff:g id="PACKAGENAME">%1$s</xliff:g> se bloqueará en las próximas compilaciones de Q. Accede a g.co/dev/bgblock."</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"Se ha bloqueado el inicio de la actividad en segundo plano de <xliff:g id="PACKAGENAME">%1$s</xliff:g>. Accede a g.co/dev/bgblock."</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"¿Has olvidado el patrón?"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"El patrón es incorrecto"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"Contraseña incorrecta"</string> diff --git a/core/res/res/values-et/strings.xml b/core/res/res/values-et/strings.xml index 84df1cee0ad6..3f37768e9b3d 100644 --- a/core/res/res/values-et/strings.xml +++ b/core/res/res/values-et/strings.xml @@ -1130,8 +1130,10 @@ <string name="whichViewApplication" msgid="3272778576700572102">"Avamine:"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"Avamine rakendusega %1$s"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"Ava"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"Juurdepääsu andmine, et avada üksuse <xliff:g id="HOST">%1$s</xliff:g> lingid"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"Juurdepääsu andmine, et avada üksuse <xliff:g id="HOST">%1$s</xliff:g> lingid rakendusega <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> + <string name="whichOpenHostLinksWith" msgid="3788174881117226583">"Ava teenuse <xliff:g id="HOST">%1$s</xliff:g> lingid rakendusega"</string> + <string name="whichOpenLinksWith" msgid="6392123355599572804">"Ava lingid rakendusega"</string> + <string name="whichOpenLinksWithApp" msgid="8225991685366651614">"Linkide avamine rakendusega <xliff:g id="APPLICATION">%1$s</xliff:g>"</string> + <string name="whichOpenHostLinksWithApp" msgid="3464470639011045589">"Ava teenuse <xliff:g id="HOST">%1$s</xliff:g> lingid rakendusega <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"Juudep. andmine"</string> <string name="whichEditApplication" msgid="144727838241402655">"Muutmine:"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"Muutmine rakendusega %1$s"</string> @@ -1583,6 +1585,7 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"Kas käivitada brauser?"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"Kas vastata kõnele?"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"Alati"</string> + <string name="activity_resolver_set_always" msgid="1422574191056490585">"Määra alati avama"</string> <string name="activity_resolver_use_once" msgid="2404644797149173758">"Ainult üks kord"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"Seaded"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"%1$s ei toeta tööprofiili"</string> @@ -1612,8 +1615,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"Ülekate nr .<xliff:g id="ID">%1$d</xliff:g>"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g> x <xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", turvaline"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"See taustategevuse käivitamine paketist <xliff:g id="PACKAGENAME">%1$s</xliff:g> blokeeritakse tulevaste Q järkude puhul. Vt g.co/dev/bgblock."</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"Taustategevuse käivitamine paketist <xliff:g id="PACKAGENAME">%1$s</xliff:g> blokeeriti. Vt g.co/dev/bgblock."</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Unustasin mustri"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"Vale muster"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"Vale parool"</string> @@ -1669,7 +1670,7 @@ <string name="accessibility_shortcut_spoken_feedback" msgid="8376923232350078434">"Teenuse <xliff:g id="SERVICE_NAME">%1$s</xliff:g> kasutamiseks hoidke kolm sekundit all mõlemat helitugevuse klahvi"</string> <string name="accessibility_button_prompt_text" msgid="1176658502969738564">"Valige, millist teenust kasutada, kui puudutate juurdepääsetavuse nuppu:"</string> <string name="accessibility_gesture_prompt_text" msgid="8259145549733019401">"Valige, millist teenust kasutada koos juurdepääsetavuse liigutusega (pühkige kahe sõrmega ekraanikuval alt üles):"</string> - <string name="accessibility_gesture_3finger_prompt_text" msgid="1041435574275047665">"Valige, millist teenust kasutada koos juurdepääsetavuse liigutusega (pühkige kolme sõrmega ekraanikuval alt üles):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="1041435574275047665">"Valige, millist teenust kasutada koos juurdepääsetavuse liigutusega (kolme sõrmega ekraanikuval alt üles pühkimine):"</string> <string name="accessibility_button_instructional_text" msgid="7003212763213614833">"Teenuste vahel vahetamiseks vajutage pikalt juurdepääsetavuse nuppu."</string> <string name="accessibility_gesture_instructional_text" msgid="5261788874937410950">"Teenuste vahel vahetamiseks pühkige kahe sõrmega üles ja hoidke."</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="4969448938984394550">"Teenuste vahel vahetamiseks pühkige kolme sõrmega üles ja hoidke."</string> diff --git a/core/res/res/values-eu/strings.xml b/core/res/res/values-eu/strings.xml index 3e0f896b4142..ee3acbf283de 100644 --- a/core/res/res/values-eu/strings.xml +++ b/core/res/res/values-eu/strings.xml @@ -567,7 +567,7 @@ <string name="face_acquired_too_right" msgid="3667075962661863218">"Mugitu telefonoa ezkerretara."</string> <string name="face_acquired_too_left" msgid="3148242963894703424">"Mugitu telefonoa eskuinetara."</string> <string name="face_acquired_poor_gaze" msgid="5606479370806754905">"Begiratu zuzenago gailuari."</string> - <string name="face_acquired_not_detected" msgid="4885504661626728809">"Ez da agertzen aurpegia. Begiratu telefonoari."</string> + <string name="face_acquired_not_detected" msgid="4885504661626728809">"Ez da hautematen aurpegia. Begiratu telefonoari."</string> <string name="face_acquired_too_much_motion" msgid="3149332171102108851">"Mugimendu gehiegi dago. Eutsi tinko telefonoari."</string> <string name="face_acquired_recalibrate" msgid="8077949502893707539">"Erregistratu berriro aurpegia."</string> <string name="face_acquired_too_different" msgid="7663983770123789694">"Ez dugu ezagutzen aurpegi hori. Saiatu berriro."</string> @@ -887,7 +887,7 @@ <string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"Zabaldu desblokeatzeko eremua."</string> <string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"Hatza lerratuta desblokeatzea."</string> <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"Ereduaren bidez desblokeatzea."</string> - <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"Aurpegiaren bidez desblokeatzea."</string> + <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"Aurpegiaren bidez desblokeatzeko aukera."</string> <string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"PIN kodearen bidez desblokeatzea."</string> <string name="keyguard_accessibility_sim_pin_unlock" msgid="9149698847116962307">"SIM txartela desblokeatzeko PIN kodea."</string> <string name="keyguard_accessibility_sim_puk_unlock" msgid="9106899279724723341">"SIM txartela desblokeatzeko PUK kodea."</string> @@ -1130,8 +1130,10 @@ <string name="whichViewApplication" msgid="3272778576700572102">"Ireki honekin:"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"Irekin %1$s aplikazioarekin"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"Ireki"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"Eman <xliff:g id="HOST">%1$s</xliff:g> estekak irekitzeko baimena aplikazio honi:"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"Eman <xliff:g id="APPLICATION">%2$s</xliff:g> aplikazioari <xliff:g id="HOST">%1$s</xliff:g> irekitzeko baimena"</string> + <string name="whichOpenHostLinksWith" msgid="3788174881117226583">"Ireki <xliff:g id="HOST">%1$s</xliff:g> ostalariko estekak honekin:"</string> + <string name="whichOpenLinksWith" msgid="6392123355599572804">"Ireki estekak honekin:"</string> + <string name="whichOpenLinksWithApp" msgid="8225991685366651614">"Ireki estekak <xliff:g id="APPLICATION">%1$s</xliff:g> aplikazioarekin"</string> + <string name="whichOpenHostLinksWithApp" msgid="3464470639011045589">"Ireki <xliff:g id="HOST">%1$s</xliff:g> ostalariko estekak <xliff:g id="APPLICATION">%2$s</xliff:g> aplikazioarekin"</string> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"Eman sarbidea"</string> <string name="whichEditApplication" msgid="144727838241402655">"Editatu honekin:"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"Editatu %1$s aplikazioarekin"</string> @@ -1309,7 +1311,7 @@ <string name="select_character" msgid="3365550120617701745">"Txertatu karakterea"</string> <string name="sms_control_title" msgid="7296612781128917719">"SMS mezuak bidaltzen"</string> <string name="sms_control_message" msgid="3867899169651496433">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> SMS asko ari da bidaltzen. Mezuak bidaltzen jarrai dezan onartu nahi duzu?"</string> - <string name="sms_control_yes" msgid="3663725993855816807">"Onartu"</string> + <string name="sms_control_yes" msgid="3663725993855816807">"Baimendu"</string> <string name="sms_control_no" msgid="625438561395534982">"Ukatu"</string> <string name="sms_short_code_confirm_message" msgid="1645436466285310855">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> aplikazioak mezu bat bidali nahi du <b><xliff:g id="DEST_ADDRESS">%2$s</xliff:g></b> helbidera."</string> <string name="sms_short_code_details" msgid="5873295990846059400">"Baliteke horrek mugikorreko kontuan "<b>"gastuak eragitea"</b>"."</string> @@ -1444,7 +1446,7 @@ <string name="grant_credentials_permission_message_header" msgid="2106103817937859662">"Aplikazio hauetako bat edo gehiago kontua orain eta etorkizunean atzitzeko baimena eskatzen ari dira."</string> <string name="grant_credentials_permission_message_footer" msgid="3125211343379376561">"Eskaera onartu nahi duzu?"</string> <string name="grant_permissions_header_text" msgid="6874497408201826708">"Sarbide-eskaera"</string> - <string name="allow" msgid="7225948811296386551">"Onartu"</string> + <string name="allow" msgid="7225948811296386551">"Baimendu"</string> <string name="deny" msgid="2081879885755434506">"Ukatu"</string> <string name="permission_request_notification_title" msgid="6486759795926237907">"Baimena eskatu da"</string> <string name="permission_request_notification_with_subtitle" msgid="8530393139639560189">"Baimena eskatu da \n<xliff:g id="ACCOUNT">%s</xliff:g> konturako."</string> @@ -1546,8 +1548,8 @@ <string name="storage_internal" msgid="3570990907910199483">"Barneko biltegiratze partekatua"</string> <string name="storage_sd_card" msgid="3282948861378286745">"SD txartela"</string> <string name="storage_sd_card_label" msgid="6347111320774379257">"<xliff:g id="MANUFACTURER">%s</xliff:g> SD txartela"</string> - <string name="storage_usb_drive" msgid="6261899683292244209">"USB unitatea"</string> - <string name="storage_usb_drive_label" msgid="4501418548927759953">"<xliff:g id="MANUFACTURER">%s</xliff:g> USB unitatea"</string> + <string name="storage_usb_drive" msgid="6261899683292244209">"USB bidezko unitatea"</string> + <string name="storage_usb_drive_label" msgid="4501418548927759953">"<xliff:g id="MANUFACTURER">%s</xliff:g> enpresaren USB bidezko unitatea"</string> <string name="storage_usb" msgid="3017954059538517278">"USB memoria"</string> <string name="extract_edit_menu_button" msgid="8940478730496610137">"Editatu"</string> <string name="data_usage_warning_title" msgid="6499834033204801605">"Datuen erabileraren abisua"</string> @@ -1584,6 +1586,7 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"Arakatzailea abiarazi nahi duzu?"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"Deia onartu nahi duzu?"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"Beti"</string> + <string name="activity_resolver_set_always" msgid="1422574191056490585">"Ezarri beti irekitzeko"</string> <string name="activity_resolver_use_once" msgid="2404644797149173758">"Behin soilik"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"Ezarpenak"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"%1$s abiarazleak ez du laneko profil hau onartzen"</string> @@ -1613,8 +1616,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"<xliff:g id="ID">%1$d</xliff:g>. gainjartzea"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g> x <xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", segurua"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"<xliff:g id="PACKAGENAME">%1$s</xliff:g> paketearen atzeko planoko jardueraren abio hau blokeatu egingo da Q bertsioaren etorkizuneko konpilazioetan. Joan g.co/dev/bgblock helbidera."</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"Blokeatu da <xliff:g id="PACKAGENAME">%1$s</xliff:g> paketearen atzeko planoko jardueraren abioa. Joan g.co/dev/bgblock helbidera."</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Eredua ahaztu zaizu"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"Eredu okerra"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"Pasahitz okerra"</string> @@ -1668,18 +1669,12 @@ <string name="accessibility_shortcut_enabling_service" msgid="7771852911861522636">"Erabilerraztasun-lasterbideak <xliff:g id="SERVICE_NAME">%1$s</xliff:g> aktibatu du"</string> <string name="accessibility_shortcut_disabling_service" msgid="2747243438223109821">"Erabilerraztasun-lasterbideak <xliff:g id="SERVICE_NAME">%1$s</xliff:g> desaktibatu du"</string> <string name="accessibility_shortcut_spoken_feedback" msgid="8376923232350078434">"<xliff:g id="SERVICE_NAME">%1$s</xliff:g> erabiltzeko, eduki sakatuta bolumen-tekla biak hiru segundoz"</string> - <!-- no translation found for accessibility_button_prompt_text (1176658502969738564) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8259145549733019401) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (1041435574275047665) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (7003212763213614833) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (5261788874937410950) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (4969448938984394550) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="1176658502969738564">"Aukeratu zer zerbitzu erabili nahi duzun Erabilerraztasuna botoia sakatzean:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8259145549733019401">"Aukeratu zer zerbitzu erabili nahi duzun erabilerraztasun-keinua egitean (hau da, bi hatz pantailaren behealdetik gora pasatzean):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="1041435574275047665">"Aukeratu zer zerbitzu erabili nahi duzun erabilerraztasun-keinua egitean (hau da, hiru hatz pantailaren behealdetik gora pasatzean):"</string> + <string name="accessibility_button_instructional_text" msgid="7003212763213614833">"Zerbitzu batetik bestera aldatzeko, eduki sakatuta Erabilerraztasuna botoia."</string> + <string name="accessibility_gesture_instructional_text" msgid="5261788874937410950">"Zerbitzu batetik bestera aldatzeko, pasatu bi hatz pantailaren behealdetik gora eta eduki sakatuta une batez."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="4969448938984394550">"Zerbitzu batetik bestera aldatzeko, pasatu hiru hatz pantailaren behealdetik gora eta eduki sakatuta une batez."</string> <string name="accessibility_magnification_chooser_text" msgid="1227146738764986237">"Lupa"</string> <string name="user_switched" msgid="3768006783166984410">"Uneko erabiltzailea: <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="2871009331809089783">"<xliff:g id="NAME">%1$s</xliff:g> erabiltzailera aldatzen…"</string> @@ -1852,7 +1847,7 @@ </plurals> <string name="zen_mode_until" msgid="7336308492289875088">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> arte"</string> <string name="zen_mode_alarm" msgid="9128205721301330797">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> arte (hurrengo alarma)"</string> - <string name="zen_mode_forever" msgid="931849471004038757">"Desaktibatu arte"</string> + <string name="zen_mode_forever" msgid="931849471004038757">"Zuk desaktibatu arte"</string> <string name="zen_mode_forever_dnd" msgid="3792132696572189081">"\"Ez molestatu\" desaktibatzen duzun arte"</string> <string name="zen_mode_rule_name_combination" msgid="191109939968076477">"<xliff:g id="FIRST">%1$s</xliff:g> / <xliff:g id="REST">%2$s</xliff:g>"</string> <string name="toolbar_collapse_description" msgid="2821479483960330739">"Tolestu"</string> diff --git a/core/res/res/values-fa/strings.xml b/core/res/res/values-fa/strings.xml index 18d3d8a31d8b..c1fc07453a98 100644 --- a/core/res/res/values-fa/strings.xml +++ b/core/res/res/values-fa/strings.xml @@ -42,11 +42,11 @@ <string name="serviceErased" msgid="1288584695297200972">"پاک کردن با موفقیت انجام شد."</string> <string name="passwordIncorrect" msgid="7612208839450128715">"گذرواژه اشتباه است."</string> <string name="mmiComplete" msgid="8232527495411698359">"MMI کامل شد."</string> - <string name="badPin" msgid="9015277645546710014">"پین قدیمی که نوشتهاید صحیح نیست."</string> + <string name="badPin" msgid="9015277645546710014">"این پین قدیمی که نوشتید صحیح نیست."</string> <string name="badPuk" msgid="5487257647081132201">"PUK که نوشتهاید صحیح نیست."</string> <string name="mismatchPin" msgid="609379054496863419">"پینهایی که وارد کردهاید با یکدیگر مطابقت ندارند."</string> - <string name="invalidPin" msgid="3850018445187475377">"یک پین بنویسید که 4 تا 8 رقم باشد."</string> - <string name="invalidPuk" msgid="8761456210898036513">"یک PUK با 8 رقم یا بیشتر تایپ کنید."</string> + <string name="invalidPin" msgid="3850018445187475377">"یک پین بنویسید که ۴ تا ۸ رقم باشد."</string> + <string name="invalidPuk" msgid="8761456210898036513">"یک PUK با ۸ رقم یا بیشتر تایپ کنید."</string> <string name="needPuk" msgid="919668385956251611">"سیم کارت شما با PUK قفل شده است. کد PUK را برای بازگشایی آن بنویسید."</string> <string name="needPuk2" msgid="4526033371987193070">"PUK2 را برای بازگشایی قفل سیم کارت بنویسید."</string> <string name="enablePin" msgid="209412020907207950">"ناموفق بود، قفل سیم/RUIM را فعال کنید."</string> @@ -73,8 +73,8 @@ <string name="DndMmi" msgid="1265478932418334331">"مزاحم نشوید"</string> <string name="CLIRDefaultOnNextCallOn" msgid="429415409145781923">"پیشفرض شناسه تماسگیرنده روی محدود است. تماس بعدی: محدود"</string> <string name="CLIRDefaultOnNextCallOff" msgid="3092918006077864624">"پیشفرض شناسه تماسگیرنده روی محدود است. تماس بعدی: بدون محدودیت"</string> - <string name="CLIRDefaultOffNextCallOn" msgid="6179425182856418465">"پیشفرض شناسه تماسگیرنده روی غیر محدود است. تماس بعدی: محدود"</string> - <string name="CLIRDefaultOffNextCallOff" msgid="2567998633124408552">"پیشفرض شناسه تماسگیرنده روی غیر محدود است. تماس بعدی: بدون محدودیت"</string> + <string name="CLIRDefaultOffNextCallOn" msgid="6179425182856418465">"پیشفرض شناسه تماسگیرنده روی غیرمحدود است. تماس بعدی: محدود"</string> + <string name="CLIRDefaultOffNextCallOff" msgid="2567998633124408552">"پیشفرض شناسه تماسگیرنده روی غیرمحدود است. تماس بعدی: بدون محدودیت"</string> <string name="serviceNotProvisioned" msgid="8614830180508686666">"سرویس دارای مجوز نیست."</string> <string name="CLIRPermanent" msgid="3377371145926835671">"شما میتوانید تنظیم شناسه تماسگیرنده را تغییر دهید."</string> <string name="RestrictedOnDataTitle" msgid="5221736429761078014">"بدون سرویس داده تلفن همراه"</string> @@ -103,7 +103,7 @@ <string name="serviceClassData" msgid="872456782077937893">"داده"</string> <string name="serviceClassFAX" msgid="5566624998840486475">"نمابر"</string> <string name="serviceClassSMS" msgid="2015460373701527489">"پیامک"</string> - <string name="serviceClassDataAsync" msgid="4523454783498551468">"غیر همگام"</string> + <string name="serviceClassDataAsync" msgid="4523454783498551468">"ناهمگام"</string> <string name="serviceClassDataSync" msgid="7530000519646054776">"همگامسازی"</string> <string name="serviceClassPacket" msgid="6991006557993423453">"بسته"</string> <string name="serviceClassPAD" msgid="3235259085648271037">"PAD"</string> @@ -131,8 +131,7 @@ <!-- no translation found for wfcSpnFormat_spn (4998685024207291232) --> <skip /> <string name="wfcSpnFormat_spn_wifi_calling" msgid="136001023263502280">"تماس ازطریق Wi-Fi <xliff:g id="SPN">%s</xliff:g>"</string> - <!-- no translation found for wfcSpnFormat_spn_wifi_calling_vo_hyphen (1730997175789582756) --> - <skip /> + <string name="wfcSpnFormat_spn_wifi_calling_vo_hyphen" msgid="1730997175789582756">"تماس Wi‑Fi <xliff:g id="SPN">%s</xliff:g>"</string> <string name="wfcSpnFormat_wlan_call" msgid="2533371081782489793">"تماس ازطریق WLAN"</string> <string name="wfcSpnFormat_spn_wlan_call" msgid="2315240198303197168">"تماس ازطریق WLAN <xliff:g id="SPN">%s</xliff:g>"</string> <string name="wfcSpnFormat_spn_wifi" msgid="6546481665561961938">"Wi-Fi <xliff:g id="SPN">%s</xliff:g>"</string> @@ -155,7 +154,7 @@ <string name="fcError" msgid="3327560126588500777">"مشکل در اتصال یا کد ویژگی نامعتبر."</string> <string name="httpErrorOk" msgid="1191919378083472204">"تأیید"</string> <string name="httpError" msgid="7956392511146698522">"خطایی در شبکه وجود داشت."</string> - <string name="httpErrorLookup" msgid="4711687456111963163">"URL پیدا نشد."</string> + <string name="httpErrorLookup" msgid="4711687456111963163">"نشانی اینترنتی پیدا نشد."</string> <string name="httpErrorUnsupportedAuthScheme" msgid="6299980280442076799">"طرح کلی احراز هویت سایت پشتیبانی نمیشود."</string> <string name="httpErrorAuth" msgid="1435065629438044534">"راستیآزمایی ناموفق بود."</string> <string name="httpErrorProxyAuth" msgid="1788207010559081331">"احراز هویت از طریق سرور پروکسی انجام نشد."</string> @@ -165,10 +164,10 @@ <string name="httpErrorRedirectLoop" msgid="8679596090392779516">"این صفحه دارای تعداد بسیار زیادی تغییر مسیر سرور است."</string> <string name="httpErrorUnsupportedScheme" msgid="5015730812906192208">"پروتکل پشتیبانی نمیشود."</string> <string name="httpErrorFailedSslHandshake" msgid="96549606000658641">"اتصال امن ایجاد نشد."</string> - <string name="httpErrorBadUrl" msgid="3636929722728881972">"بدلیل نامعتبر بودن URL، باز کردن صفحه ممکن نیست."</string> + <string name="httpErrorBadUrl" msgid="3636929722728881972">"بهدلیل نامعتبر بودن نشانی اینترنتی، صفحه باز نمیشود."</string> <string name="httpErrorFile" msgid="2170788515052558676">"دسترسی به فایل انجام نشد."</string> <string name="httpErrorFileNotFound" msgid="6203856612042655084">"فایل درخواستی پیدا نشد."</string> - <string name="httpErrorTooManyRequests" msgid="1235396927087188253">"درخواستهای زیادی در حال پردازش است. بعداً دوباره امتحان کنید."</string> + <string name="httpErrorTooManyRequests" msgid="1235396927087188253">"درخواستهای زیادی درحال پردازش است. بعداً دوباره امتحان کنید."</string> <string name="notification_title" msgid="8967710025036163822">"خطای ورود به سیستم برای <xliff:g id="ACCOUNT">%1$s</xliff:g>"</string> <string name="contentServiceSync" msgid="8353523060269335667">"همگامسازی"</string> <string name="contentServiceSyncNotificationTitle" msgid="7036196943673524858">"همگامسازی نشد"</string> @@ -211,7 +210,7 @@ <string name="reboot_to_update_reboot" msgid="6428441000951565185">"در حال راهاندازی مجدد…"</string> <string name="reboot_to_reset_title" msgid="4142355915340627490">"بازنشانی دادههای کارخانه"</string> <string name="reboot_to_reset_message" msgid="2432077491101416345">"در حال راهاندازی مجدد…"</string> - <string name="shutdown_progress" msgid="2281079257329981203">"در حال خاموش شدن…"</string> + <string name="shutdown_progress" msgid="2281079257329981203">"درحال خاموش شدن…"</string> <string name="shutdown_confirm" product="tablet" msgid="3385745179555731470">"رایانهٔ لوحی شما خاموش میشود."</string> <string name="shutdown_confirm" product="tv" msgid="476672373995075359">"تلویزیون شما خاموش خواهد شد."</string> <string name="shutdown_confirm" product="watch" msgid="3490275567476369184">"ساعت شما خاموش میشود."</string> @@ -400,7 +399,7 @@ <string name="permlab_readCallLog" msgid="3478133184624102739">"خواندن گزارش تماس"</string> <string name="permdesc_readCallLog" msgid="3204122446463552146">"این برنامه میتواند سابقه تماس شما را بخواند."</string> <string name="permlab_writeCallLog" msgid="8552045664743499354">"نوشتن گزارش تماس"</string> - <string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"به برنامه اجازه میدهد گزارشات تماس رایانهٔ لوحی شما، از جمله دادههایی درمورد تماسهای ورودی و خروجی را تغییر دهد. برنامههای مخرب ممکن است از این ویژگی برای پاک کردن یا تغییر گزارش تماس شما استفاده کنند."</string> + <string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"به برنامه اجازه میدهد گزارشهای تماس رایانهٔ لوحی شما، از جمله دادههایی درباره تماسهای ورودی و خروجی را تغییر دهد. برنامههای مخرب ممکن است از این ویژگی برای پاک کردن یا تغییر گزارش تماس شما استفاده کنند."</string> <string name="permdesc_writeCallLog" product="tv" msgid="4225034892248398019">"به برنامه اجازه میدهد گزارشات تماس تلویزیون شما، از جمله دادههایی درمورد تماسهای ورودی و خروجی را تغییر دهد. برنامههای مخرب شاید از این ویژگی برای پاک کردن یا تغییر گزارش تماس شما استفاده کنند."</string> <string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"به برنامه اجازه میدهد گزارشات تماس تلفنی شما، از جمله دادههایی درمورد تماسهای ورودی و خروجی را تغییر دهد. برنامههای مخرب ممکن است از این ویژگی برای پاک کردن یا تغییر گزارش تماس شما استفاده کنند."</string> <string name="permlab_bodySensors" msgid="4683341291818520277">"دسترسی به حسگرهای بدن (مانند پایشگرهای ضربان قلب)"</string> @@ -502,7 +501,7 @@ <string name="permdesc_bluetooth" product="tv" msgid="3974124940101104206">"به برنامه اجازه میدهد تا پیکربندی بلوتوث را در تلویزیون مشاهده کند و اتصالات را با دستگاههای مرتبطشده ایجاد کند و بپذیرد."</string> <string name="permdesc_bluetooth" product="default" msgid="3207106324452312739">"به برنامه اجازه میدهد تا پیکربندی بلوتوث در تلفن را مشاهده کند، و اتصالات دستگاههای مرتبط را برقرار کرده و بپذیرد."</string> <string name="permlab_nfc" msgid="4423351274757876953">"کنترل ارتباط راه نزدیک"</string> - <string name="permdesc_nfc" msgid="7120611819401789907">"به برنامه اجازه میدهد تا با تگهای ارتباط میدان نزدیک (NFC)، کارتها و فایل خوان ارتباط برقرار کند."</string> + <string name="permdesc_nfc" msgid="7120611819401789907">"به برنامه اجازه میدهد تا با تگهای «ارتباط میدان نزدیک» (NFC)، کارتها و فایلخوان ارتباط برقرار کند."</string> <string name="permlab_disableKeyguard" msgid="3598496301486439258">"غیرفعال کردن قفل صفحه شما"</string> <string name="permdesc_disableKeyguard" msgid="6034203065077122992">"به برنامه امکان میدهد قفل کلید و هر گونه امنیت گذرواژه مرتبط را غیرفعال کند. بهعنوان مثال تلفن هنگام دریافت یک تماس تلفنی ورودی قفل کلید را غیرفعال میکند و بعد از پایان تماس، قفل کلید را دوباره فعال میکند."</string> <string name="permlab_requestPasswordComplexity" msgid="202650535669249674">"درخواست پیچیدگی قفل صفحه"</string> @@ -657,7 +656,7 @@ <string name="policylab_watchLogin" msgid="5091404125971980158">"پایش تلاشهای باز کردن قفل صفحه"</string> <string name="policydesc_watchLogin" product="tablet" msgid="3215729294215070072">"تعداد گذرواژههای نادرست تایپ شده را هنگام بازکردن قفل صفحه کنترل میکند، و اگر دفعات زیادی گذرواژه نادرست وارد شود رایانهٔ لوحی را قفل میکند و همه دادههای رایانهٔ لوحی را پاک میکند."</string> <string name="policydesc_watchLogin" product="TV" msgid="2707817988309890256">"بر تعداد گذرواژههای نادرست تایپشده در زمان باز کردن قفل صفحه نظارت کنید و اگر تعدا زیادی گذرواژههای اشتباه تایپ شده است، تلویزیون را قفل کنید یا همه دادههای تلویزیون را پاک کنید."</string> - <string name="policydesc_watchLogin" product="default" msgid="5712323091846761073">"تعداد گذرواژههای نادرست تایپ شده را هنگام بازکردن قفل صفحه کنترل میکند. اگر دفعات زیادی گذرواژه نادرست وارد شود، تلفن را قفل میکند یا همه دادههای تلفن را پاک میکند."</string> + <string name="policydesc_watchLogin" product="default" msgid="5712323091846761073">"تعداد گذرواژههای نادرست تایپشده را هنگام بازکردن قفل صفحه کنترل میکند و اگر چندین بار گذرواژههای نادرست وارد شود، تلفن را قفل میکند یا همه دادههای تلفن را پاک میکند."</string> <string name="policydesc_watchLogin_secondaryUser" product="tablet" msgid="4280246270601044505">"بر تعداد گذرواژههای نادرستی که هنگام باز کردن قفل صفحه تایپ شده، نظارت میکند، و اگر تعداد گذرواژههای تایپ شده نادرست بیش از حد بود، رایانه لوحی را قفل میکند یا کلیه دادههای کاربر را پاک میکند."</string> <string name="policydesc_watchLogin_secondaryUser" product="TV" msgid="3484832653564483250">"بر تعداد گذرواژههای نادرستی که هنگام باز کردن قفل صفحه تایپ شده، نظارت میکند، و اگر تعداد گذرواژههای تایپ شده نادرست بیش از حد بود، تلویزیون را قفل میکند یا کلیه دادههای کاربر را پاک میکند."</string> <string name="policydesc_watchLogin_secondaryUser" product="default" msgid="2185480427217127147">"بر تعداد گذرواژههای نادرستی که هنگام باز کردن قفل صفحه تایپ شده، نظارت میکند، و اگر تعداد گذرواژههای تایپ شده نادرست بیش از حد بود، تلفن را قفل میکند یا کلیه دادههای کاربر را پاک میکند."</string> @@ -679,7 +678,7 @@ <string name="policydesc_expirePassword" msgid="5367525762204416046">"تغییر تعداد دفعاتی که گذرواژه، پین یا الگوی قفل صفحه باید تغییر کند."</string> <string name="policylab_encryptedStorage" msgid="8901326199909132915">"تنظیم رمزگذاری حافظه"</string> <string name="policydesc_encryptedStorage" msgid="2637732115325316992">"اطلاعات ذخیره شده برنامه باید رمزگذاری شود."</string> - <string name="policylab_disableCamera" msgid="6395301023152297826">"غیر فعال کردن دوربین ها"</string> + <string name="policylab_disableCamera" msgid="6395301023152297826">"غیرفعال کردن دوربینها"</string> <string name="policydesc_disableCamera" msgid="2306349042834754597">"جلوگیری از استفاده از همه دوربینهای دستگاه."</string> <string name="policylab_disableKeyguardFeatures" msgid="8552277871075367771">"غیرفعال کردن ویژگیهای قفل صفحه"</string> <string name="policydesc_disableKeyguardFeatures" msgid="2044755691354158439">"مانع استفاده از برخی ویژگیهای قفل صفحه میشود."</string> @@ -818,7 +817,7 @@ <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"دوباره امتحان کنید"</string> <string name="lockscreen_password_wrong" msgid="5737815393253165301">"دوباره امتحان کنید"</string> <string name="lockscreen_storage_locked" msgid="9167551160010625200">"باز کردن قفل تمام قابلیتها و دادهها"</string> - <string name="faceunlock_multiple_failures" msgid="754137583022792429">"دفعات تلاش برای Face Unlock از حداکثر مجاز بیشتر شد"</string> + <string name="faceunlock_multiple_failures" msgid="754137583022792429">"دفعات تلاش برای «بازگشایی با چهره» از حداکثر مجاز بیشتر شد"</string> <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"سیم کارت موجود نیست"</string> <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"سیم کارت درون رایانهٔ لوحی نیست."</string> <string name="lockscreen_missing_sim_message" product="tv" msgid="1943633865476989599">"سیمکارتی در تلویزیون وجود ندارد."</string> @@ -839,7 +838,7 @@ <string name="lockscreen_sim_puk_locked_message" msgid="7441797339976230">"سیم کارت با PUK قفل شده است."</string> <string name="lockscreen_sim_puk_locked_instructions" msgid="8127916255245181063">"لطفاً به راهنمای کاربر مراجعه کرده یا با مرکز پشتیبانی از مشتریان تماس بگیرید."</string> <string name="lockscreen_sim_locked_message" msgid="8066660129206001039">"سیم کارت قفل شد."</string> - <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="595323214052881264">"بازگشایی قفل سیم کارت..."</string> + <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="595323214052881264">"بازگشایی قفل سیم کارت…"</string> <string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6481623830344107222">"الگوی بازگشایی قفل خود را <xliff:g id="NUMBER_0">%1$d</xliff:g> بار اشتباه کشیدهاید. \n\nپس از <xliff:g id="NUMBER_1">%2$d</xliff:g> ثانیه دوباره امتحان کنید."</string> <string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="2725973286239344555">"گذرواژهٔ خود را <xliff:g id="NUMBER_0">%1$d</xliff:g> بار اشتباه تایپ کردهاید. \n\nپس از <xliff:g id="NUMBER_1">%2$d</xliff:g> ثانیه دوباره امتحان کنید."</string> <string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="6216672706545696955">"پین را<xliff:g id="NUMBER_0">%1$d</xliff:g> بار اشتباه تایپ کردهاید. \n\nپس از <xliff:g id="NUMBER_1">%2$d</xliff:g> ثانیه دوباره امتحان کنید."</string> @@ -851,7 +850,7 @@ <string name="lockscreen_failed_attempts_almost_at_wipe" product="default" msgid="8603565142156826565">"شما به اشتباه <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="280873516493934365">"شما به اشتباه اقدام به باز کردن قفل <xliff:g id="NUMBER">%d</xliff:g> رایانهٔ لوحی کردهاید. رایانهٔ لوحی در حال حاضر به پیشفرض کارخانه بازنشانی میشود."</string> <string name="lockscreen_failed_attempts_now_wiping" product="tv" msgid="3195755534096192191">"<xliff:g id="NUMBER">%d</xliff:g> دفعه به صورت نادرست سعی کردهاید قفل تلویزیون را باز کنید. اکنون تلویزیون به تنظیمات پیشفرض کارخانه بازنشانی خواهد شد."</string> - <string name="lockscreen_failed_attempts_now_wiping" product="default" msgid="3025504721764922246">"شما به اشتباه <xliff:g id="NUMBER">%d</xliff:g> بار اقدام به باز کردن قفل تلفن کردهاید. این تلفن در حال حاضر به پیشفرض کارخانه بازنشانی میشود."</string> + <string name="lockscreen_failed_attempts_now_wiping" product="default" msgid="3025504721764922246">"بهاشتباه <xliff:g id="NUMBER">%d</xliff:g> بار اقدام به باز کردن قفل تلفن کردهاید. این تلفن دیگر به پیشفرض کارخانه بازنشانی میشود."</string> <string name="lockscreen_too_many_failed_attempts_countdown" msgid="6251480343394389665">"پس از <xliff:g id="NUMBER">%d</xliff:g> ثانیه دوباره امتحان کنید."</string> <string name="lockscreen_forgot_pattern_button_text" msgid="2626999449610695930">"الگو را فراموش کردهاید؟"</string> <string name="lockscreen_glogin_forgot_pattern" msgid="2588521501166032747">"بازگشایی قفل حساب"</string> @@ -862,7 +861,7 @@ <string name="lockscreen_glogin_submit_button" msgid="7130893694795786300">"ورود به سیستم"</string> <string name="lockscreen_glogin_invalid_input" msgid="1364051473347485908">"نام کاربر یا گذرواژه نامعتبر است."</string> <string name="lockscreen_glogin_account_recovery_hint" msgid="1696924763690379073">"نام کاربری یا گذرواژهٔ خود را فراموش کردید؟\nاز "<b>"google.com/accounts/recovery"</b>" بازدید کنید."</string> - <string name="lockscreen_glogin_checking_password" msgid="7114627351286933867">"در حال بررسی..."</string> + <string name="lockscreen_glogin_checking_password" msgid="7114627351286933867">"درحال بررسی…"</string> <string name="lockscreen_unlock_label" msgid="737440483220667054">"بازگشایی قفل"</string> <string name="lockscreen_sound_on_label" msgid="9068877576513425970">"صدا روشن"</string> <string name="lockscreen_sound_off_label" msgid="996822825154319026">"صدا خاموش"</string> @@ -888,7 +887,7 @@ <string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"گسترده کردن منطقه بازگشایی شده."</string> <string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"باز کردن قفل با کشیدن انگشت روی صفحه."</string> <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"باز کردن قفل با الگو."</string> - <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"باز کردن قفل با چهره."</string> + <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"بازگشایی با چهره."</string> <string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"باز کردن قفل با پین."</string> <string name="keyguard_accessibility_sim_pin_unlock" msgid="9149698847116962307">"قفل پین سیمکارت باز شد."</string> <string name="keyguard_accessibility_sim_puk_unlock" msgid="9106899279724723341">"قفل Puk سیمکارت باز شد."</string> @@ -1078,7 +1077,7 @@ <string name="failed_to_copy_to_clipboard" msgid="1833662432489814471">"در بریدهدان کپی نشد"</string> <string name="paste" msgid="5629880836805036433">"جایگذاری"</string> <string name="paste_as_plain_text" msgid="5427792741908010675">"جایگذاری به عنوان متن ساده"</string> - <string name="replace" msgid="5781686059063148930">"جایگزین شود..."</string> + <string name="replace" msgid="5781686059063148930">"جایگزین شود…"</string> <string name="delete" msgid="6098684844021697789">"حذف"</string> <string name="copyUrl" msgid="2538211579596067402">"کپی URL"</string> <string name="selectTextMode" msgid="1018691815143165326">"انتخاب متن"</string> @@ -1122,7 +1121,7 @@ <string name="yes" msgid="5362982303337969312">"تأیید"</string> <string name="no" msgid="5141531044935541497">"لغو"</string> <string name="dialog_alert_title" msgid="2049658708609043103">"توجه"</string> - <string name="loading" msgid="7933681260296021180">"در حال بارکردن…"</string> + <string name="loading" msgid="7933681260296021180">"درحال بارکردن…"</string> <string name="capital_on" msgid="1544682755514494298">"روشن"</string> <string name="capital_off" msgid="6815870386972805832">"خاموش"</string> <string name="whichApplication" msgid="4533185947064773386">"تکمیل عملکرد با استفاده از"</string> @@ -1131,8 +1130,10 @@ <string name="whichViewApplication" msgid="3272778576700572102">"باز کردن با"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"باز کردن با %1$s"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"باز کردن"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"ارائه دسترسی برای باز کردن پیوندهای <xliff:g id="HOST">%1$s</xliff:g> با"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"ارائه دسترسی برای باز کردن پیوندهای <xliff:g id="HOST">%1$s</xliff:g> با<xliff:g id="APPLICATION">%2$s</xliff:g>"</string> + <string name="whichOpenHostLinksWith" msgid="3788174881117226583">"باز کردن پیوندهای <xliff:g id="HOST">%1$s</xliff:g> با"</string> + <string name="whichOpenLinksWith" msgid="6392123355599572804">"باز کردن پیوندها با"</string> + <string name="whichOpenLinksWithApp" msgid="8225991685366651614">"باز کردن پیوندها با <xliff:g id="APPLICATION">%1$s</xliff:g>"</string> + <string name="whichOpenHostLinksWithApp" msgid="3464470639011045589">"باز کردن پیوندهای <xliff:g id="HOST">%1$s</xliff:g> با <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"ارائه دسترسی"</string> <string name="whichEditApplication" msgid="144727838241402655">"ویرایش با"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"ویرایش با %1$s"</string> @@ -1199,8 +1200,8 @@ <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> درحال ارتقا است...."</string> <string name="android_upgrading_apk" msgid="7904042682111526169">"در حال بهینهسازی برنامهٔ <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="8162599310274079154">"آمادهسازی <xliff:g id="APPNAME">%1$s</xliff:g>."</string> - <string name="android_upgrading_starting_apps" msgid="451464516346926713">"در حال آغاز برنامهها."</string> - <string name="android_upgrading_complete" msgid="1405954754112999229">"در حال اتمام راهاندازی."</string> + <string name="android_upgrading_starting_apps" msgid="451464516346926713">"درحال آغاز کردن برنامهها."</string> + <string name="android_upgrading_complete" msgid="1405954754112999229">"درحال اتمام راهاندازی."</string> <string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> در حال اجرا"</string> <string name="heavy_weight_notification_detail" msgid="2304833848484424985">"برای برگشت به بازی، ضربه بزنید"</string> <string name="heavy_weight_switcher_title" msgid="387882830435195342">"انتخاب بازی"</string> @@ -1307,8 +1308,8 @@ <string name="wifi_p2p_frequency_conflict_message" product="tv" msgid="3087858235069421128">"در حالی که تلویزیون به <xliff:g id="DEVICE_NAME">%1$s</xliff:g> متصل است، ارتباط آن به صورت موقت از Wi-Fi قطع خواهد شد."</string> <string name="wifi_p2p_frequency_conflict_message" product="default" msgid="7363907213787469151">"این گوشی بهطور موقت از Wi-Fi قطع خواهد شد، در حالی که به <xliff:g id="DEVICE_NAME">%1$s</xliff:g> وصل است"</string> <string name="select_character" msgid="3365550120617701745">"درج نویسه"</string> - <string name="sms_control_title" msgid="7296612781128917719">"ارسال پیامک ها"</string> - <string name="sms_control_message" msgid="3867899169651496433">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> در حال ارسال تعداد زیادی پیامک است. آیا اجازه میدهید این برنامه همچنان پیامک ارسال کند؟"</string> + <string name="sms_control_title" msgid="7296612781128917719">"درحال ارسال پیامکها"</string> + <string name="sms_control_message" msgid="3867899169651496433">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> درحال ارسال تعداد زیادی پیامک است. آیا اجازه میدهید این برنامه همچنان پیامک ارسال کند؟"</string> <string name="sms_control_yes" msgid="3663725993855816807">"مجاز است"</string> <string name="sms_control_no" msgid="625438561395534982">"اجازه ندارد"</string> <string name="sms_short_code_confirm_message" msgid="1645436466285310855">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> مایل است پیامی به <b><xliff:g id="DEST_ADDRESS">%2$s</xliff:g></b> ارسال کند."</string> @@ -1460,7 +1461,7 @@ <string name="condition_provider_service_binding_label" msgid="1321343352906524564">"ارائهدهنده وضعیت"</string> <string name="notification_ranker_binding_label" msgid="774540592299064747">"سرویس رتبهبندی اعلان"</string> <string name="vpn_title" msgid="19615213552042827">"VPN فعال شد"</string> - <string name="vpn_title_long" msgid="6400714798049252294">"VPN توسط <xliff:g id="APP">%s</xliff:g> فعال شده است"</string> + <string name="vpn_title_long" msgid="6400714798049252294">"VPN را <xliff:g id="APP">%s</xliff:g> فعال کرده است"</string> <string name="vpn_text" msgid="1610714069627824309">"برای مدیریت شبکه ضربه بزنید."</string> <string name="vpn_text_long" msgid="4907843483284977618">"به <xliff:g id="SESSION">%s</xliff:g> متصل شد. برای مدیریت شبکه ضربه بزنید."</string> <string name="vpn_lockdown_connecting" msgid="6443438964440960745">"در حال اتصال VPN همیشه فعال…"</string> @@ -1496,11 +1497,11 @@ <string name="find_previous" msgid="2196723669388360506">"یافتن قبلی"</string> <string name="gpsNotifTicker" msgid="5622683912616496172">"درخواست مکان از <xliff:g id="NAME">%s</xliff:g>"</string> <string name="gpsNotifTitle" msgid="5446858717157416839">"درخواست مکان"</string> - <string name="gpsNotifMessage" msgid="1374718023224000702">"درخواست شده توسط <xliff:g id="NAME">%1$s</xliff:g> (<xliff:g id="SERVICE">%2$s</xliff:g>)"</string> + <string name="gpsNotifMessage" msgid="1374718023224000702">"درخواستکننده <xliff:g id="NAME">%1$s</xliff:g> (<xliff:g id="SERVICE">%2$s</xliff:g>)"</string> <string name="gpsVerifYes" msgid="2346566072867213563">"بله"</string> <string name="gpsVerifNo" msgid="1146564937346454865">"نه"</string> <string name="sync_too_many_deletes" msgid="5296321850662746890">"از حد مجاز حذف فراتر رفت"</string> - <string name="sync_too_many_deletes_desc" msgid="496551671008694245">"<xliff:g id="NUMBER_OF_DELETED_ITEMS">%1$d</xliff:g> مورد حذف شده برای <xliff:g id="TYPE_OF_SYNC">%2$s</xliff:g>، حساب <xliff:g id="ACCOUNT_NAME">%3$s</xliff:g> وجود دارد. میخواهید چه کاری انجام دهید؟"</string> + <string name="sync_too_many_deletes_desc" msgid="496551671008694245">"<xliff:g id="NUMBER_OF_DELETED_ITEMS">%1$d</xliff:g> مورد حذفشده برای <xliff:g id="TYPE_OF_SYNC">%2$s</xliff:g>، حساب <xliff:g id="ACCOUNT_NAME">%3$s</xliff:g> وجود دارد. میخواهید چه کار بکنید؟"</string> <string name="sync_really_delete" msgid="2572600103122596243">"حذف موارد"</string> <string name="sync_undo_deletes" msgid="2941317360600338602">"واگرد موارد حذف شده"</string> <string name="sync_do_nothing" msgid="3743764740430821845">"اکنون کاری انجام نشود"</string> @@ -1565,11 +1566,11 @@ <string name="data_usage_rapid_app_body" msgid="5396680996784142544">"<xliff:g id="APP">%s</xliff:g> بیش از معمول داده مصرف کرده است"</string> <string name="ssl_certificate" msgid="6510040486049237639">"گواهی امنیتی"</string> <string name="ssl_certificate_is_valid" msgid="6825263250774569373">"این گواهی معتبر است."</string> - <string name="issued_to" msgid="454239480274921032">"صادر شده برای:"</string> + <string name="issued_to" msgid="454239480274921032">"صادرشده برای:"</string> <string name="common_name" msgid="2233209299434172646">"نام معمولی:"</string> <string name="org_name" msgid="6973561190762085236">"سازمان:"</string> <string name="org_unit" msgid="7265981890422070383">"واحد سازمانی:"</string> - <string name="issued_by" msgid="2647584988057481566">"صادر شده توسط:"</string> + <string name="issued_by" msgid="2647584988057481566">"صادرکننده:"</string> <string name="validity_period" msgid="8818886137545983110">"اعتبار:"</string> <string name="issued_on" msgid="5895017404361397232">"صادر شده در:"</string> <string name="expires_on" msgid="3676242949915959821">"تاریخ انقضا:"</string> @@ -1584,6 +1585,7 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"مرورگر راهاندازی شود؟"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"تماس را میپذیرید؟"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"همیشه"</string> + <string name="activity_resolver_set_always" msgid="1422574191056490585">"تنظیم روی همیشه باز شدن"</string> <string name="activity_resolver_use_once" msgid="2404644797149173758">"فقط این بار"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"تنظیمات"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"%1$s از نمایه کاری پشتیبانی نمیکند"</string> @@ -1613,8 +1615,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"همپوشانی #<xliff:g id="ID">%1$d</xliff:g>"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g>x<xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">"، امن"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"شروع فعالیت پسزمینه<xliff:g id="PACKAGENAME">%1$s</xliff:g> در نسخههای Q آینده مسدود خواهد شد. به g.co/dev/bgblock مراجعه کنید."</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"شروع فعالیت پسزمینه <xliff:g id="PACKAGENAME">%1$s</xliff:g> مسدود شده است. به g.co/dev/bgblock مراجعه کنید."</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"الگو را فراموش کردهاید"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"الگوی اشتباه"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"گذرواژه اشتباه"</string> @@ -1668,18 +1668,12 @@ <string name="accessibility_shortcut_enabling_service" msgid="7771852911861522636">"«میانبر دسترسپذیری» <xliff:g id="SERVICE_NAME">%1$s</xliff:g> را روشن کرد"</string> <string name="accessibility_shortcut_disabling_service" msgid="2747243438223109821">"«میانبر دسترسپذیری» <xliff:g id="SERVICE_NAME">%1$s</xliff:g> را خاموش کرد"</string> <string name="accessibility_shortcut_spoken_feedback" msgid="8376923232350078434">"برای استفاده از <xliff:g id="SERVICE_NAME">%1$s</xliff:g>، هر دو کلید صدا را فشار دهید و سه ثانیه نگه دارید"</string> - <!-- no translation found for accessibility_button_prompt_text (1176658502969738564) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8259145549733019401) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (1041435574275047665) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (7003212763213614833) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (5261788874937410950) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (4969448938984394550) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="1176658502969738564">"سرویسی را انتخاب کنید که میخواهید هنگام ضربه زدن روی دکمه دسترسپذیری استفاده شود:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8259145549733019401">"سرویسی را برای استفاده با اشاره دسترسپذیری انتخاب کنید (با دو انگشت صفحه را از پایین تند به بالا بکشید):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="1041435574275047665">"سرویسی را برای استفاده با اشاره دسترسپذیری انتخاب کنید (با سه انگشت صفحه را از پایین تند به بالا بکشید):"</string> + <string name="accessibility_button_instructional_text" msgid="7003212763213614833">"برای جابهجایی بین سرویسها، دکمه دسترسپذیری را لمس کنید و نگهدارید."</string> + <string name="accessibility_gesture_instructional_text" msgid="5261788874937410950">"برای جابهجایی بین سرویسها، با دو انگشت صفحه را تند به بالا بکشید و نگهدارید."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="4969448938984394550">"برای جابهجایی بین سرویسها، با سه انگشت صفحه را تند به بالا بکشید و نگهدارید."</string> <string name="accessibility_magnification_chooser_text" msgid="1227146738764986237">"درشتنمایی"</string> <string name="user_switched" msgid="3768006783166984410">"کاربر کنونی <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="2871009331809089783">"در حالت تغییر به <xliff:g id="NAME">%1$s</xliff:g>…"</string> diff --git a/core/res/res/values-fi/strings.xml b/core/res/res/values-fi/strings.xml index 36836fc22ece..6181a2715877 100644 --- a/core/res/res/values-fi/strings.xml +++ b/core/res/res/values-fi/strings.xml @@ -1130,8 +1130,10 @@ <string name="whichViewApplication" msgid="3272778576700572102">"Avaa sovelluksessa"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"Avaa sovelluksessa %1$s"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"Avaa"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"Salli linkkien (<xliff:g id="HOST">%1$s</xliff:g>) avaaminen:"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"Salli linkkien (<xliff:g id="HOST">%1$s</xliff:g>) avaaminen: <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> + <string name="whichOpenHostLinksWith" msgid="3788174881117226583">"<xliff:g id="HOST">%1$s</xliff:g>-linkit avataan:"</string> + <string name="whichOpenLinksWith" msgid="6392123355599572804">"Linkit avataan:"</string> + <string name="whichOpenLinksWithApp" msgid="8225991685366651614">"<xliff:g id="APPLICATION">%1$s</xliff:g> avaa linkit"</string> + <string name="whichOpenHostLinksWithApp" msgid="3464470639011045589">"<xliff:g id="APPLICATION">%2$s</xliff:g> avaa linkit (<xliff:g id="HOST">%1$s</xliff:g>)"</string> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"Salli"</string> <string name="whichEditApplication" msgid="144727838241402655">"Muokkaa sovelluksessa"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"Muokkaa sovelluksessa %1$s"</string> @@ -1583,6 +1585,7 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"Käynnistetäänkö selain?"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"Vastataanko puheluun?"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"Aina"</string> + <string name="activity_resolver_set_always" msgid="1422574191056490585">"Avaa aina"</string> <string name="activity_resolver_use_once" msgid="2404644797149173758">"Vain kerran"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"Asetukset"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"%1$s ei tue työprofiilia"</string> @@ -1612,8 +1615,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"Peittokuva # <xliff:g id="ID">%1$d</xliff:g>"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g> x <xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", suojattu"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"Tämä taustatoiminnan käynnistys kohteesta <xliff:g id="PACKAGENAME">%1$s</xliff:g> estetään tulevissa Q-versioissa. Siirry osoitteeseen g.co/dev/bgblock."</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"Taustatoiminnan käynnistys kohteesta <xliff:g id="PACKAGENAME">%1$s</xliff:g> estettiin. Siirry osoitteeseen g.co/dev/bgblock."</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Unohtunut kuvio"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"Väärä kuvio"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"Väärä salasana"</string> diff --git a/core/res/res/values-fr-rCA/strings.xml b/core/res/res/values-fr-rCA/strings.xml index 63ab86b8aedc..e281ecaee594 100644 --- a/core/res/res/values-fr-rCA/strings.xml +++ b/core/res/res/values-fr-rCA/strings.xml @@ -131,8 +131,7 @@ <!-- no translation found for wfcSpnFormat_spn (4998685024207291232) --> <skip /> <string name="wfcSpnFormat_spn_wifi_calling" msgid="136001023263502280">"Appels Wi-Fi <xliff:g id="SPN">%s</xliff:g>"</string> - <!-- no translation found for wfcSpnFormat_spn_wifi_calling_vo_hyphen (1730997175789582756) --> - <skip /> + <string name="wfcSpnFormat_spn_wifi_calling_vo_hyphen" msgid="1730997175789582756">"Appels Wi-Fi : <xliff:g id="SPN">%s</xliff:g>"</string> <string name="wfcSpnFormat_wlan_call" msgid="2533371081782489793">"Appel WLAN"</string> <string name="wfcSpnFormat_spn_wlan_call" msgid="2315240198303197168">"Appel WLAN <xliff:g id="SPN">%s</xliff:g>"</string> <string name="wfcSpnFormat_spn_wifi" msgid="6546481665561961938">"Wi-Fi <xliff:g id="SPN">%s</xliff:g>"</string> @@ -309,7 +308,7 @@ <string name="permgrouprequest_calllog" msgid="8487355309583773267">"Autoriser <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> à accéder à vos journaux d\'appels?"</string> <string name="permgrouplab_phone" msgid="5229115638567440675">"Téléphone"</string> <string name="permgroupdesc_phone" msgid="6234224354060641055">"faire et gérer des appels téléphoniques"</string> - <string name="permgrouprequest_phone" msgid="9166979577750581037">"Autoriser <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> à faire et à gérer les appels téléphoniques?"</string> + <string name="permgrouprequest_phone" msgid="9166979577750581037">"Autoriser <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> à faire et à gérer des appels téléphoniques?"</string> <string name="permgrouplab_sensors" msgid="4838614103153567532">"Capteurs corporels"</string> <string name="permgroupdesc_sensors" msgid="7147968539346634043">"accéder aux données des capteurs sur vos signes vitaux"</string> <string name="permgrouprequest_sensors" msgid="6349806962814556786">"Autoriser « <xliff:g id="APP_NAME">%1$s</xliff:g> » à accéder aux données des capteurs pour vos signes vitaux?"</string> @@ -568,7 +567,7 @@ <string name="face_acquired_too_right" msgid="3667075962661863218">"Déplacez le téléphone vers la gauche."</string> <string name="face_acquired_too_left" msgid="3148242963894703424">"Déplacez le téléphone vers la droite."</string> <string name="face_acquired_poor_gaze" msgid="5606479370806754905">"Veuillez regarder plus directement votre appareil."</string> - <string name="face_acquired_not_detected" msgid="4885504661626728809">"Impossible de voir votre visage. Regardez le tél."</string> + <string name="face_acquired_not_detected" msgid="4885504661626728809">"Visage non détecté. Regardez le téléphone."</string> <string name="face_acquired_too_much_motion" msgid="3149332171102108851">"Trop de mouvement. Tenez le téléphone immobile."</string> <string name="face_acquired_recalibrate" msgid="8077949502893707539">"Veuillez inscrire votre visage à nouveau."</string> <string name="face_acquired_too_different" msgid="7663983770123789694">"Ce visage ne sera plus reconnu. Réessayez."</string> @@ -1131,8 +1130,10 @@ <string name="whichViewApplication" msgid="3272778576700572102">"Ouvrir avec"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"Ouvrir avec %1$s"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"Ouvrir"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"Accorder l\'accès pour ouvrir les liens de <xliff:g id="HOST">%1$s</xliff:g> avec"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"Accorder l\'accès pour ouvrir les liens de <xliff:g id="HOST">%1$s</xliff:g> avec <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> + <string name="whichOpenHostLinksWith" msgid="3788174881117226583">"Ouvrir les liens <xliff:g id="HOST">%1$s</xliff:g> avec"</string> + <string name="whichOpenLinksWith" msgid="6392123355599572804">"Ouvrir les liens avec"</string> + <string name="whichOpenLinksWithApp" msgid="8225991685366651614">"Ouvrir les liens avec <xliff:g id="APPLICATION">%1$s</xliff:g>"</string> + <string name="whichOpenHostLinksWithApp" msgid="3464470639011045589">"Ouvrir les liens <xliff:g id="HOST">%1$s</xliff:g> avec <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"Accorder l\'accès"</string> <string name="whichEditApplication" msgid="144727838241402655">"Modifier avec"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"Modifier avec %1$s"</string> @@ -1584,6 +1585,7 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"Lancer le navigateur?"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"Prendre l\'appel?"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"Toujours"</string> + <string name="activity_resolver_set_always" msgid="1422574191056490585">"Régler pour toujours ouvrir"</string> <string name="activity_resolver_use_once" msgid="2404644797149173758">"Une seule fois"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"Paramètres"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"%1$s ne prend pas en charge le profil professionnel"</string> @@ -1613,8 +1615,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"Superposition n° <xliff:g id="ID">%1$d</xliff:g>"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g> : <xliff:g id="WIDTH">%2$d</xliff:g> x <xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> ppp"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", sécurisé"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"Ce lancement d\'activité en arrière-plan par <xliff:g id="PACKAGENAME">%1$s</xliff:g> sera bloqué dans les versions futures de Q. Consultez la page g.co/dev/bgblock."</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"Le lancement d\'une activité en arrière-plan par <xliff:g id="PACKAGENAME">%1$s</xliff:g> a été bloqué. Consultez la page g.co/dev/bgblock."</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"J\'ai oublié le schéma"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"Schéma incorrect."</string> <string name="kg_wrong_password" msgid="2333281762128113157">"Mot de passe incorrect."</string> @@ -1668,18 +1668,12 @@ <string name="accessibility_shortcut_enabling_service" msgid="7771852911861522636">"Le raccourci d\'accessibilité a activé la fonction <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> <string name="accessibility_shortcut_disabling_service" msgid="2747243438223109821">"Le raccourci d\'accessibilité a désactivé la fonction <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> <string name="accessibility_shortcut_spoken_feedback" msgid="8376923232350078434">"Maintenez enfoncées les deux touches de volume pendant trois secondes pour utiliser <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for accessibility_button_prompt_text (1176658502969738564) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8259145549733019401) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (1041435574275047665) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (7003212763213614833) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (5261788874937410950) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (4969448938984394550) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="1176658502969738564">"Choisissez un service à utiliser lorsque vous touchez le bouton d\'accessibilité :"</string> + <string name="accessibility_gesture_prompt_text" msgid="8259145549733019401">"Choisissez un service à utiliser lorsque vous utilisez le geste d\'accessibilité (balayer deux doigts du bas de l\'écran vers le haut) :"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="1041435574275047665">"Choisissez un service à utiliser lorsque vous utilisez le geste d\'accessibilité (balayer trois doigts du bas de l\'écran vers le haut) :"</string> + <string name="accessibility_button_instructional_text" msgid="7003212763213614833">"Pour basculer entre les services, maintenez le doigt sur le bouton d\'accessibilité."</string> + <string name="accessibility_gesture_instructional_text" msgid="5261788874937410950">"Pour basculer entre les services, balayez deux doigts vers le haut et maintenez-les sur l\'écran."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="4969448938984394550">"Pour changer de service, balayez trois doigts vers le haut et maintenez-les sur l\'écran."</string> <string name="accessibility_magnification_chooser_text" msgid="1227146738764986237">"Zoom"</string> <string name="user_switched" msgid="3768006783166984410">"Utilisateur actuel : <xliff:g id="NAME">%1$s</xliff:g>"</string> <string name="user_switching_message" msgid="2871009331809089783">"Changement d\'utilisateur (<xliff:g id="NAME">%1$s</xliff:g>) en cours…"</string> @@ -1912,7 +1906,7 @@ <string name="deprecated_target_sdk_app_store" msgid="5032340500368495077">"Vérifier la présence de mises à jour"</string> <string name="new_sms_notification_title" msgid="8442817549127555977">"Vous avez de nouveaux messages"</string> <string name="new_sms_notification_content" msgid="7002938807812083463">"Ouvrez l\'application de messagerie texte pour l\'afficher"</string> - <string name="profile_encrypted_title" msgid="4260432497586829134">"Certaines fonctionnal. sont limitées"</string> + <string name="profile_encrypted_title" msgid="4260432497586829134">"Des fonctionnalités sont limitées"</string> <string name="profile_encrypted_detail" msgid="3700965619978314974">"Profil professionnel verrouillé"</string> <string name="profile_encrypted_message" msgid="6964994232310195874">"Touch. pr déver. profil profess."</string> <string name="usb_mtp_launch_notification_title" msgid="8359219638312208932">"Connecté à <xliff:g id="PRODUCT_NAME">%1$s</xliff:g>"</string> diff --git a/core/res/res/values-fr/strings.xml b/core/res/res/values-fr/strings.xml index c154c1ef016f..5b6881487546 100644 --- a/core/res/res/values-fr/strings.xml +++ b/core/res/res/values-fr/strings.xml @@ -131,8 +131,7 @@ <!-- no translation found for wfcSpnFormat_spn (4998685024207291232) --> <skip /> <string name="wfcSpnFormat_spn_wifi_calling" msgid="136001023263502280">"Appels Wi-Fi <xliff:g id="SPN">%s</xliff:g>"</string> - <!-- no translation found for wfcSpnFormat_spn_wifi_calling_vo_hyphen (1730997175789582756) --> - <skip /> + <string name="wfcSpnFormat_spn_wifi_calling_vo_hyphen" msgid="1730997175789582756">"Appels Wi-Fi <xliff:g id="SPN">%s</xliff:g>"</string> <string name="wfcSpnFormat_wlan_call" msgid="2533371081782489793">"Appel WLAN"</string> <string name="wfcSpnFormat_spn_wlan_call" msgid="2315240198303197168">"Appel WLAN <xliff:g id="SPN">%s</xliff:g>"</string> <string name="wfcSpnFormat_spn_wifi" msgid="6546481665561961938">"Wi-Fi <xliff:g id="SPN">%s</xliff:g>"</string> @@ -1131,8 +1130,10 @@ <string name="whichViewApplication" msgid="3272778576700572102">"Ouvrir avec"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"Ouvrir avec %1$s"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"Ouvrir"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"Autoriser l\'ouverture des liens <xliff:g id="HOST">%1$s</xliff:g> avec"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"Autoriser l\'ouverture des liens <xliff:g id="HOST">%1$s</xliff:g> avec <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> + <string name="whichOpenHostLinksWith" msgid="3788174881117226583">"Ouvrir les liens <xliff:g id="HOST">%1$s</xliff:g> avec"</string> + <string name="whichOpenLinksWith" msgid="6392123355599572804">"Ouvrir les liens avec"</string> + <string name="whichOpenLinksWithApp" msgid="8225991685366651614">"Ouvrir les liens avec <xliff:g id="APPLICATION">%1$s</xliff:g>"</string> + <string name="whichOpenHostLinksWithApp" msgid="3464470639011045589">"Ouvrir les liens <xliff:g id="HOST">%1$s</xliff:g> avec <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"Accorder l\'accès"</string> <string name="whichEditApplication" msgid="144727838241402655">"Modifier avec"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"Modifier avec %1$s"</string> @@ -1584,6 +1585,7 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"Lancer le navigateur ?"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"Prendre l\'appel ?"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"Toujours"</string> + <string name="activity_resolver_set_always" msgid="1422574191056490585">"Définir cette activité comme toujours ouverte"</string> <string name="activity_resolver_use_once" msgid="2404644797149173758">"Une seule fois"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"Paramètres"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"%1$s n\'est pas compatible avec le profil professionnel."</string> @@ -1613,8 +1615,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"Superposition n° <xliff:g id="ID">%1$d</xliff:g>"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g> : <xliff:g id="WIDTH">%2$d</xliff:g> x <xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", sécurisé"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"Le démarrage de cette activité en arrière-plan de <xliff:g id="PACKAGENAME">%1$s</xliff:g> sera bloqué dans les prochaines builds Q. Consultez g.co/dev/bgblock."</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"Le démarrage de l\'activité en arrière-plan de <xliff:g id="PACKAGENAME">%1$s</xliff:g> a été bloqué. Consultez g.co/dev/bgblock."</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"J\'ai oublié le schéma"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"Schéma incorrect."</string> <string name="kg_wrong_password" msgid="2333281762128113157">"Mot de passe incorrect."</string> @@ -1668,18 +1668,12 @@ <string name="accessibility_shortcut_enabling_service" msgid="7771852911861522636">"Le raccourci d\'accessibilité a activé <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> <string name="accessibility_shortcut_disabling_service" msgid="2747243438223109821">"Le raccourci d\'accessibilité a désactivé <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> <string name="accessibility_shortcut_spoken_feedback" msgid="8376923232350078434">"Appuyez de manière prolongée sur les deux touches de volume pendant trois secondes pour utiliser <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for accessibility_button_prompt_text (1176658502969738564) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8259145549733019401) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (1041435574275047665) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (7003212763213614833) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (5261788874937410950) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (4969448938984394550) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="1176658502969738564">"Choisissez un service à utiliser lorsque vous appuyez sur le bouton Accessibilité :"</string> + <string name="accessibility_gesture_prompt_text" msgid="8259145549733019401">"Choisissez un service à utiliser avec le geste d\'accessibilité (balayez l\'écran de bas en haut avec deux doigts) :"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="1041435574275047665">"Choisissez un service à utiliser avec le geste d\'accessibilité (balayer l\'écran de bas en haut avec trois doigts) :"</string> + <string name="accessibility_button_instructional_text" msgid="7003212763213614833">"Pour changer de service, appuyez de manière prolongée sur le bouton Accessibilité."</string> + <string name="accessibility_gesture_instructional_text" msgid="5261788874937410950">"Pour changer de service, balayez l\'écran vers le haut avec deux doigts et appuyez de manière prolongée."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="4969448938984394550">"Pour changer de service, balayez l\'écran vers le haut avec trois doigts et appuyez de manière prolongée."</string> <string name="accessibility_magnification_chooser_text" msgid="1227146738764986237">"Agrandissement"</string> <string name="user_switched" msgid="3768006783166984410">"Utilisateur actuel : <xliff:g id="NAME">%1$s</xliff:g>"</string> <string name="user_switching_message" msgid="2871009331809089783">"Chargement du profil de <xliff:g id="NAME">%1$s</xliff:g>..."</string> @@ -1912,7 +1906,7 @@ <string name="deprecated_target_sdk_app_store" msgid="5032340500368495077">"Rechercher une mise à jour"</string> <string name="new_sms_notification_title" msgid="8442817549127555977">"Vous avez de nouveaux messages"</string> <string name="new_sms_notification_content" msgid="7002938807812083463">"Ouvrir l\'application de SMS pour afficher le message"</string> - <string name="profile_encrypted_title" msgid="4260432497586829134">"Fonctionnalités peuvent être limitées"</string> + <string name="profile_encrypted_title" msgid="4260432497586829134">"Des fonctions peuvent être limitées"</string> <string name="profile_encrypted_detail" msgid="3700965619978314974">"Profil professionnel verrouillé"</string> <string name="profile_encrypted_message" msgid="6964994232310195874">"Appuyez pour déverrouiller profil pro"</string> <string name="usb_mtp_launch_notification_title" msgid="8359219638312208932">"Connecté à <xliff:g id="PRODUCT_NAME">%1$s</xliff:g>"</string> diff --git a/core/res/res/values-gl/strings.xml b/core/res/res/values-gl/strings.xml index c44710ed5f97..74722bbe767e 100644 --- a/core/res/res/values-gl/strings.xml +++ b/core/res/res/values-gl/strings.xml @@ -131,8 +131,7 @@ <!-- no translation found for wfcSpnFormat_spn (4998685024207291232) --> <skip /> <string name="wfcSpnFormat_spn_wifi_calling" msgid="136001023263502280">"Chamadas por wifi de <xliff:g id="SPN">%s</xliff:g>"</string> - <!-- no translation found for wfcSpnFormat_spn_wifi_calling_vo_hyphen (1730997175789582756) --> - <skip /> + <string name="wfcSpnFormat_spn_wifi_calling_vo_hyphen" msgid="1730997175789582756">"Chamadas por wifi con <xliff:g id="SPN">%s</xliff:g>"</string> <string name="wfcSpnFormat_wlan_call" msgid="2533371081782489793">"Chamada por WLAN"</string> <string name="wfcSpnFormat_spn_wlan_call" msgid="2315240198303197168">"Chamada por WLAN de <xliff:g id="SPN">%s</xliff:g>"</string> <string name="wfcSpnFormat_spn_wifi" msgid="6546481665561961938">"Wifi de <xliff:g id="SPN">%s</xliff:g>"</string> @@ -568,7 +567,7 @@ <string name="face_acquired_too_right" msgid="3667075962661863218">"Move o teléfono cara á esquerda."</string> <string name="face_acquired_too_left" msgid="3148242963894703424">"Move o teléfono cara á dereita."</string> <string name="face_acquired_poor_gaze" msgid="5606479370806754905">"Mira o dispositivo de forma máis directa."</string> - <string name="face_acquired_not_detected" msgid="4885504661626728809">"Non se pode ver a túa cara. Mira o teléfono."</string> + <string name="face_acquired_not_detected" msgid="4885504661626728809">"Non se ve a túa cara. Mira para o teléfono"</string> <string name="face_acquired_too_much_motion" msgid="3149332171102108851">"Demasiado movemento. Non movas o teléfono."</string> <string name="face_acquired_recalibrate" msgid="8077949502893707539">"Volve rexistrar a túa cara."</string> <string name="face_acquired_too_different" msgid="7663983770123789694">"Xa non se pode recoñecer a cara. Téntao de novo."</string> @@ -1131,8 +1130,10 @@ <string name="whichViewApplication" msgid="3272778576700572102">"Abrir con"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"Abrir con %1$s"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"Abrir"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"Conceder acceso para abrir ligazóns de <xliff:g id="HOST">%1$s</xliff:g> con"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"Conceder acceso para abrir ligazóns de <xliff:g id="HOST">%1$s</xliff:g> con <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> + <string name="whichOpenHostLinksWith" msgid="3788174881117226583">"Abrir ligazóns de <xliff:g id="HOST">%1$s</xliff:g> con"</string> + <string name="whichOpenLinksWith" msgid="6392123355599572804">"Abrir ligazóns con"</string> + <string name="whichOpenLinksWithApp" msgid="8225991685366651614">"Abrir ligazóns con <xliff:g id="APPLICATION">%1$s</xliff:g>"</string> + <string name="whichOpenHostLinksWithApp" msgid="3464470639011045589">"Abrir ligazóns de <xliff:g id="HOST">%1$s</xliff:g> con <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"Conceder acceso"</string> <string name="whichEditApplication" msgid="144727838241402655">"Editar con"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"Editar con %1$s"</string> @@ -1585,6 +1586,7 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"Iniciar o navegador?"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"Aceptar chamada?"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"Sempre"</string> + <string name="activity_resolver_set_always" msgid="1422574191056490585">"Definir como abrir sempre"</string> <string name="activity_resolver_use_once" msgid="2404644797149173758">"Só unha vez"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"Configuración"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"%1$s non admite o perfil de traballo"</string> @@ -1614,8 +1616,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"Superposición n.º <xliff:g id="ID">%1$d</xliff:g>"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g> x <xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> ppp"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", segura"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"O inicio desta actividade en segundo plano desde <xliff:g id="PACKAGENAME">%1$s</xliff:g> bloquearase en futuras compilacións de Q. Consulta g.co/dev/bgblock."</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"Bloqueouse o inicio da actividade en segundo plano desde <xliff:g id="PACKAGENAME">%1$s</xliff:g>. Consulta g.co/dev/bgblock."</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Esqueciches o padrón"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"Padrón incorrecto"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"Contrasinal incorrecto"</string> @@ -1669,18 +1669,12 @@ <string name="accessibility_shortcut_enabling_service" msgid="7771852911861522636">"O atallo de accesibilidade activou <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> <string name="accessibility_shortcut_disabling_service" msgid="2747243438223109821">"O atallo de accesibilidade desactivou <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> <string name="accessibility_shortcut_spoken_feedback" msgid="8376923232350078434">"Mantén premidas as teclas do volume durante tres segudos para usar <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for accessibility_button_prompt_text (1176658502969738564) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8259145549733019401) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (1041435574275047665) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (7003212763213614833) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (5261788874937410950) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (4969448938984394550) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="1176658502969738564">"Escolle o servizo que queres utilizar cando toques o botón de accesibilidade:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8259145549733019401">"Escolle o servizo que queres usar co xesto de accesibilidade (pasa dous dedos cara arriba desde a parte inferior da pantalla):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="1041435574275047665">"Escolle o servizo que queres usar co xesto de accesibilidade (pasa tres dedos cara arriba desde a parte inferior da pantalla):"</string> + <string name="accessibility_button_instructional_text" msgid="7003212763213614833">"Para cambiar de servizo, mantén premido o botón de accesibilidade."</string> + <string name="accessibility_gesture_instructional_text" msgid="5261788874937410950">"Para cambiar de servizo, pasa dous dedos cara arriba e mantén premida a pantalla."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="4969448938984394550">"Para cambiar de servizo, pasa tres dedos cara arriba pola pantalla e mantén premido."</string> <string name="accessibility_magnification_chooser_text" msgid="1227146738764986237">"Ampliación"</string> <string name="user_switched" msgid="3768006783166984410">"Usuario actual <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="2871009331809089783">"Cambiando a <xliff:g id="NAME">%1$s</xliff:g>…"</string> diff --git a/core/res/res/values-gu/strings.xml b/core/res/res/values-gu/strings.xml index 26eb0a1d447d..def64c507193 100644 --- a/core/res/res/values-gu/strings.xml +++ b/core/res/res/values-gu/strings.xml @@ -131,8 +131,7 @@ <!-- no translation found for wfcSpnFormat_spn (4998685024207291232) --> <skip /> <string name="wfcSpnFormat_spn_wifi_calling" msgid="136001023263502280">"<xliff:g id="SPN">%s</xliff:g> વાઇ-ફાઇ કૉલિંગ"</string> - <!-- no translation found for wfcSpnFormat_spn_wifi_calling_vo_hyphen (1730997175789582756) --> - <skip /> + <string name="wfcSpnFormat_spn_wifi_calling_vo_hyphen" msgid="1730997175789582756">"<xliff:g id="SPN">%s</xliff:g> વાઇ-ફાઇ કૉલિંગ"</string> <string name="wfcSpnFormat_wlan_call" msgid="2533371081782489793">"WLAN કૉલ"</string> <string name="wfcSpnFormat_spn_wlan_call" msgid="2315240198303197168">"<xliff:g id="SPN">%s</xliff:g> WLAN કૉલ"</string> <string name="wfcSpnFormat_spn_wifi" msgid="6546481665561961938">"<xliff:g id="SPN">%s</xliff:g> વાઇ-ફાઇ"</string> @@ -1131,8 +1130,10 @@ <string name="whichViewApplication" msgid="3272778576700572102">"આની સાથે ખોલો"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"%1$s સાથે ખોલો"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"ખોલો"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"આના વડે <xliff:g id="HOST">%1$s</xliff:g>ની લિંક ખોલવા માટે ઍક્સેસ આપો"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"<xliff:g id="APPLICATION">%2$s</xliff:g> વડે <xliff:g id="HOST">%1$s</xliff:g>ની લિંક ખોલવા માટે ઍક્સેસ આપો"</string> + <string name="whichOpenHostLinksWith" msgid="3788174881117226583">"આના વડે <xliff:g id="HOST">%1$s</xliff:g> લિંક ખોલો"</string> + <string name="whichOpenLinksWith" msgid="6392123355599572804">"આના વડે લિંક ખોલો"</string> + <string name="whichOpenLinksWithApp" msgid="8225991685366651614">"<xliff:g id="APPLICATION">%1$s</xliff:g> વડે લિંક ખોલો"</string> + <string name="whichOpenHostLinksWithApp" msgid="3464470639011045589">"<xliff:g id="APPLICATION">%2$s</xliff:g> વડે <xliff:g id="HOST">%1$s</xliff:g> લિંક ખોલો"</string> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"ઍક્સેસ આપો"</string> <string name="whichEditApplication" msgid="144727838241402655">"આનાથી સંપાદિત કરો"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"%1$s સાથે સંપાદિત કરો"</string> @@ -1585,6 +1586,7 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"બ્રાઉઝર લોન્ચ કરીએ?"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"કૉલ સ્વીકારીએ?"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"હંમેશા"</string> + <string name="activity_resolver_set_always" msgid="1422574191056490585">"હંમેશાં ખુલ્લી તરીકે સેટ કરો"</string> <string name="activity_resolver_use_once" msgid="2404644797149173758">"ફક્ત એક વાર"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"સેટિંગ"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"%1$s કાર્ય પ્રોફાઇલનું સમર્થન કરતું નથી"</string> @@ -1614,8 +1616,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"#<xliff:g id="ID">%1$d</xliff:g> ઓવરલે કરો"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g>x<xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", સુરક્ષિત"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"<xliff:g id="PACKAGENAME">%1$s</xliff:g>માંથી શરૂ થયેલી આ બૅકગ્રાઉન્ડ પ્રવૃત્તિને ભાવિ Q બિલ્ડમાં બ્લૉક કરવામાં આવશે. g.co/dev/bgblock જુઓ."</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"<xliff:g id="PACKAGENAME">%1$s</xliff:g>માંથી શરૂ થયેલી બૅકગ્રાઉન્ડ પ્રવૃત્તિ બ્લૉક કરી છે. g.co/dev/bgblock જુઓ."</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"પૅટર્ન ભૂલી ગયાં"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"ખોટી પૅટર્ન"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"ખોટો પાસવર્ડ"</string> diff --git a/core/res/res/values-hi/strings.xml b/core/res/res/values-hi/strings.xml index f5fd4a60735a..8ef5024db5ae 100644 --- a/core/res/res/values-hi/strings.xml +++ b/core/res/res/values-hi/strings.xml @@ -30,7 +30,7 @@ <string name="untitled" msgid="4638956954852782576">"<शीर्षक-रहित>"</string> <string name="emptyPhoneNumber" msgid="7694063042079676517">"(कोई फ़ोन नंबर नहीं)"</string> <string name="unknownName" msgid="6867811765370350269">"अज्ञात"</string> - <string name="defaultVoiceMailAlphaTag" msgid="2660020990097733077">"वॉयस मेल"</string> + <string name="defaultVoiceMailAlphaTag" msgid="2660020990097733077">"वॉइसमेल"</string> <string name="defaultMsisdnAlphaTag" msgid="2850889754919584674">"MSISDN1"</string> <string name="mmiError" msgid="5154499457739052907">"कनेक्शन समस्या या अमान्य MMI कोड."</string> <string name="mmiFdnError" msgid="5224398216385316471">"कार्रवाई केवल फ़िक्स्ड डायलिंग नंबर के लिए प्रतिबंधित है."</string> @@ -97,7 +97,7 @@ <string name="notification_channel_sim" msgid="4052095493875188564">"सिम की स्थिति"</string> <string name="peerTtyModeFull" msgid="6165351790010341421">"पीयर ने टेलीटाइपराइटर (TTY) मोड फ़ुल का अनुरोध किया"</string> <string name="peerTtyModeHco" msgid="5728602160669216784">"पीयर ने टेलीटाइपराइटर (TTY) मोड एचसीओ (HCO) का अनुरोध किया"</string> - <string name="peerTtyModeVco" msgid="1742404978686538049">"पीयर ने टेलीटाइपराइटर (TTY) मोड वीसीअो (VCO) का अनुरोध किया"</string> + <string name="peerTtyModeVco" msgid="1742404978686538049">"पीयर ने टेलीटाइपराइटर (TTY) मोड वीसीओ (VCO) का अनुरोध किया"</string> <string name="peerTtyModeOff" msgid="3280819717850602205">"पीयर ने टेलीटाइपराइटर (TTY) मोड बंद का अनुरोध किया"</string> <string name="serviceClassVoice" msgid="1258393812335258019">"आवाज़"</string> <string name="serviceClassData" msgid="872456782077937893">"डेटा"</string> @@ -116,7 +116,7 @@ <string name="roamingText6" msgid="2059440825782871513">"रोमिंग - उपलब्ध सिस्टम"</string> <string name="roamingText7" msgid="7112078724097233605">"रोमिंग - गठबंधन सहयोगी"</string> <string name="roamingText8" msgid="5989569778604089291">"रोमिंग - प्रीमियम सहयोगी"</string> - <string name="roamingText9" msgid="7969296811355152491">"रोमिंग - पूर्ण सेवा काम की क्षमता"</string> + <string name="roamingText9" msgid="7969296811355152491">"रोमिंग - पूरी सेवा काम की क्षमता"</string> <string name="roamingText10" msgid="3992906999815316417">"रोमिंग - आंशिक सेवा काम की क्षमता"</string> <string name="roamingText11" msgid="4154476854426920970">"रोमिंग बैनर चालू"</string> <string name="roamingText12" msgid="1189071119992726320">"रोमिंग बैनर बंद"</string> @@ -131,8 +131,7 @@ <!-- no translation found for wfcSpnFormat_spn (4998685024207291232) --> <skip /> <string name="wfcSpnFormat_spn_wifi_calling" msgid="136001023263502280">"<xliff:g id="SPN">%s</xliff:g> वाई-फ़ाई कॉलिंग"</string> - <!-- no translation found for wfcSpnFormat_spn_wifi_calling_vo_hyphen (1730997175789582756) --> - <skip /> + <string name="wfcSpnFormat_spn_wifi_calling_vo_hyphen" msgid="1730997175789582756">"वाई-फ़ाई के ज़रिए कॉल करते समय <xliff:g id="SPN">%s</xliff:g>"</string> <string name="wfcSpnFormat_wlan_call" msgid="2533371081782489793">"WLAN कॉल"</string> <string name="wfcSpnFormat_spn_wlan_call" msgid="2315240198303197168">"<xliff:g id="SPN">%s</xliff:g> WLAN कॉल"</string> <string name="wfcSpnFormat_spn_wifi" msgid="6546481665561961938">"<xliff:g id="SPN">%s</xliff:g> वाई-फ़ाई"</string> @@ -336,7 +335,7 @@ <string name="permlab_uninstall_shortcut" msgid="4729634524044003699">"शॉर्टकट अनइंस्टॉल करें"</string> <string name="permdesc_uninstall_shortcut" msgid="6745743474265057975">"ऐप्लिकेशन को उपयोगकर्ता की रोक के बिना होमस्क्रीन शॉर्टकट निकालने की अनुमति देता है."</string> <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"किया जाने वाला कॉल (आउटगोइंग) कहीं और भेजें"</string> - <string name="permdesc_processOutgoingCalls" msgid="5156385005547315876">"एेप कॉल को किसी और नंबर पर भेजने या कॉल को पूरी तरह रद्द करने के विकल्प के साथ, किए गए कॉल (आउटगोइंग) के नंबर को देख सकता है."</string> + <string name="permdesc_processOutgoingCalls" msgid="5156385005547315876">"ऐप कॉल को किसी और नंबर पर भेजने या कॉल को पूरी तरह रद्द करने के विकल्प के साथ, किए गए कॉल (आउटगोइंग) के नंबर को देख सकता है."</string> <string name="permlab_answerPhoneCalls" msgid="4077162841226223337">"फ़ोन कॉल का जवाब दें"</string> <string name="permdesc_answerPhoneCalls" msgid="2901889867993572266">"ऐप्लिकेशन को किसी इनकमिंग फ़ोन कॉल का जवाब देने देती है."</string> <string name="permlab_receiveSms" msgid="8673471768947895082">"मैसेज (एसएमएस) पाएं"</string> @@ -400,9 +399,9 @@ <string name="permlab_readCallLog" msgid="3478133184624102739">"कॉल लॉग पढ़ें"</string> <string name="permdesc_readCallLog" msgid="3204122446463552146">"यह ऐप्लिकेशन आपका कॉल इतिहास पढ़ सकता है."</string> <string name="permlab_writeCallLog" msgid="8552045664743499354">"कॉल लॉग लिखें"</string> - <string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"एेप को आने वाला कॉल (इनकमिंग) और किया जाने वाला कॉल (आउटगोइंग) डेटा सहित, आपके टैबलेट के कॉल लॉग को बदलने की अनुमति देता है. धोखा देने वाले एेप, इसका इस्तेमाल करके आपके कॉल लॉग को मिटा या बदल सकते हैं."</string> - <string name="permdesc_writeCallLog" product="tv" msgid="4225034892248398019">"एेप को आने वाला कॉल (इनकमिंग) और किया जाने वाला कॉल (आउटगोइंग) डेटा सहित, आपके टीवी के कॉल लॉग को बदलने की अनुमति देता है. धोखा देने वाले एेप, इसका इस्तेमाल करके आपके कॉल लॉग को मिटा या बदल सकते हैं."</string> - <string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"एेप को आने वाला कॉल (इनकमिंग) और किया जाने वाला कॉल (आउटगोइंग) डेटा सहित, आपके फ़ोन के कॉल लॉग को बदलने की अनुमति देता है. धोखा देने वाले एेप, इसका इस्तेमाल करके आपके कॉल लॉग को मिटा या बदल सकते हैं."</string> + <string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"ऐप को आने वाला कॉल (इनकमिंग) और किया जाने वाला कॉल (आउटगोइंग) डेटा सहित, आपके टैबलेट के कॉल लॉग को बदलने की अनुमति देता है. धोखा देने वाले ऐप, इसका इस्तेमाल करके आपके कॉल लॉग को मिटा या बदल सकते हैं."</string> + <string name="permdesc_writeCallLog" product="tv" msgid="4225034892248398019">"ऐप को आने वाला कॉल (इनकमिंग) और किया जाने वाला कॉल (आउटगोइंग) डेटा सहित, आपके टीवी के कॉल लॉग को बदलने की अनुमति देता है. धोखा देने वाले ऐप, इसका इस्तेमाल करके आपके कॉल लॉग को मिटा या बदल सकते हैं."</string> + <string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"ऐप को आने वाला कॉल (इनकमिंग) और किया जाने वाला कॉल (आउटगोइंग) डेटा सहित, आपके फ़ोन के कॉल लॉग को बदलने की अनुमति देता है. धोखा देने वाले ऐप, इसका इस्तेमाल करके आपके कॉल लॉग को मिटा या बदल सकते हैं."</string> <string name="permlab_bodySensors" msgid="4683341291818520277">"शरीर के लिए बने सेंसर (जैसे हृदय गति मॉनीटर) को एक्सेस करें"</string> <string name="permdesc_bodySensors" product="default" msgid="4380015021754180431">"ऐप को आपकी शारीरिक स्थिति, जैसे आपकी हृदय गति पर नज़र रखने वाले सेंसर के डेटा तक पहुंचने देती है."</string> <string name="permlab_readCalendar" msgid="6716116972752441641">"कैलेंडर इवेंट और विवरण पढ़ें"</string> @@ -440,7 +439,7 @@ <string name="permlab_accessImsCallService" msgid="3574943847181793918">"IMS कॉल सेवा ऐक्सेस करें"</string> <string name="permdesc_accessImsCallService" msgid="8992884015198298775">"आपके हस्तक्षेप के बिना कॉल करने के लिए, ऐप को IMS सेवा का उपयोग करने देती है."</string> <string name="permlab_readPhoneState" msgid="9178228524507610486">"फ़ोन की स्थिति और पहचान पढ़ें"</string> - <string name="permdesc_readPhoneState" msgid="1639212771826125528">"ऐप्स को डिवाइस की फ़ोन सुविधाओं तक पहुंचने देता है. यह अनुमति ऐप्स को फ़ोन नंबर और डिवाइस आईडी, कॉल सक्रिय है या नहीं, और कॉल द्वारा कनेक्ट किया गया दूरस्थ नंबर निर्धारित करने देती है."</string> + <string name="permdesc_readPhoneState" msgid="1639212771826125528">"ऐप्स को डिवाइस की फ़ोन सुविधाओं तक पहुंचने देता है. यह अनुमति ऐप्स को फ़ोन नंबर और डिवाइस आईडी, कॉल सक्रिय है या नहीं, और कॉल द्वारा कनेक्ट किया गया दूरस्थ नंबर तय करने देती है."</string> <string name="permlab_manageOwnCalls" msgid="1503034913274622244">"सिस्टम के माध्यम से कॉल रूट करें"</string> <string name="permdesc_manageOwnCalls" msgid="6552974537554717418">"कॉल करने के अनुभव को बेहतर बनाने के लिए ऐप्लिकेशन को सिस्टम के माध्यम से उसके कॉल रूट करने देती है."</string> <string name="permlab_callCompanionApp" msgid="3599252979411970473">"सिस्टम के ज़रिए कॉल देखना और नियंत्रित करना."</string> @@ -483,7 +482,7 @@ <string name="permdesc_accessWifiState" msgid="5002798077387803726">"ऐप को वाई-फ़ाई नेटवर्क के बारे में जानकारी, जैसे WI-Fi चालू है या नहीं और कनेक्ट किए गए वाई-फ़ाई डिवाइस के नाम, देखने देता है."</string> <string name="permlab_changeWifiState" msgid="6550641188749128035">"वाई-फ़ाई से कनेक्ट और डिस्कनेक्ट करें"</string> <string name="permdesc_changeWifiState" msgid="7137950297386127533">"ऐप्स को वाई-फ़ाई पहुंच बिंदुओं से कनेक्ट और डिसकनेक्ट करने और वाई-फ़ाई नेटवर्क के लिए डिवाइस कॉन्फ़िगरेशन में परिवर्तन करने देता है."</string> - <string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"वाई-फ़ाई मल्टीकास्ट प्राप्ति को अनुमति दें"</string> + <string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"वाई-फ़ाई मल्टीकास्ट पाने को अनुमति दें"</string> <string name="permdesc_changeWifiMulticastState" product="tablet" msgid="7969774021256336548">"ऐप्स को वाई-फ़ाई नेटवर्क पर मल्टीकास्ट पते के उपयोग से केवल आपके टैबलेट पर ही नहीं, बल्कि सभी डिवाइस पर भेजे गए पैकेट प्राप्त करने देता है. यह गैर-मल्टीकास्ट मोड से ज़्यादा पावर का उपयोग करता है."</string> <string name="permdesc_changeWifiMulticastState" product="tv" msgid="9031975661145014160">"ऐप को मल्टीकास्ट पतों का उपयोग करके ना केवल आपके टीवी को, बल्कि वाई-फ़ाई पर मौजूद सभी डिवाइसों को पैकेट भेजने और प्राप्त करने देती है. इसमें गैर-मल्टीकास्ट मोड की अपेक्षा ज़्यादा पावर का उपयोग होता है."</string> <string name="permdesc_changeWifiMulticastState" product="default" msgid="6851949706025349926">"ऐप्स को वाई-फ़ाई नेटवर्क पर मल्टीकास्ट पते के उपयोग से केवल आपके फ़ोन पर ही नहीं, बल्कि सभी डिवाइस पर भेजे गए पैकेट प्राप्त करने देता है. यह गैर-मल्टीकास्ट मोड से ज़्यादा पावर का उपयोग करता है."</string> @@ -595,7 +594,7 @@ </string-array> <string name="face_icon_content_description" msgid="4024817159806482191">"चेहरे का आइकॉन"</string> <string name="permlab_readSyncSettings" msgid="6201810008230503052">"समन्वयन सेटिंग पढ़ें"</string> - <string name="permdesc_readSyncSettings" msgid="2706745674569678644">"ऐप्स को किसी खाते की समन्वयन सेटिंग पढ़ने देता है. उदाहरण के लिए, इससे यह निर्धारित किया जा सकता है कि लोग ऐप्स किसी खाते के साथ समन्वयित है या नहीं."</string> + <string name="permdesc_readSyncSettings" msgid="2706745674569678644">"ऐप्स को किसी खाते की समन्वयन सेटिंग पढ़ने देता है. उदाहरण के लिए, इससे यह तय किया जा सकता है कि लोग ऐप्स किसी खाते के साथ समन्वयित है या नहीं."</string> <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"समन्वयन बंद या चालू टॉगल करें"</string> <string name="permdesc_writeSyncSettings" msgid="8956262591306369868">"ऐप्स को किसी खाते की समन्वयन सेटिंग संशोधित करने देता है. उदाहरण के लिए, इसका उपयोग लोग ऐप्स का समन्वयन किसी खाते से सक्षम करने में हो सकता है."</string> <string name="permlab_readSyncStats" msgid="7396577451360202448">"समन्वयन आंकड़े पढ़ें"</string> @@ -641,7 +640,7 @@ <string name="permlab_accessDrmCertificates" msgid="7436886640723203615">"DRM प्रमाणपत्र एक्सेस करें"</string> <string name="permdesc_accessDrmCertificates" msgid="8073288354426159089">"ऐप्लिकेशन को DRM प्रमाणपत्रों का प्रावधान और उपयोग करने देती है. सामान्य ऐप्स के लिए कभी भी आवश्यकता नहीं होना चाहिए."</string> <string name="permlab_handoverStatus" msgid="7820353257219300883">"Android बीम ट्रांसफ़र की स्थिति पाएं"</string> - <string name="permdesc_handoverStatus" msgid="4788144087245714948">"इस एेप को मौजूदा Android बीम ट्रांसफ़र के बारे में जानकारी पाने की अनुमति दें."</string> + <string name="permdesc_handoverStatus" msgid="4788144087245714948">"इस ऐप को मौजूदा Android बीम ट्रांसफ़र के बारे में जानकारी पाने की अनुमति दें."</string> <string name="permlab_removeDrmCertificates" msgid="7044888287209892751">"DRM प्रमाणपत्रों को निकाल सकता है"</string> <string name="permdesc_removeDrmCertificates" msgid="7272999075113400993">"ऐप्लिकेशन को DRM प्रमाणपत्रों को निकालने देता है. सामान्य ऐप्स के लिए कभी भी आवश्यकता नहीं होनी चाहिए."</string> <string name="permlab_bindCarrierMessagingService" msgid="1490229371796969158">"किसी मोबाइल और इंटरनेट सेवा देने वाली कंपनी की संदेश सेवा से जुड़ें"</string> @@ -992,8 +991,8 @@ <string name="minutes" msgid="5646001005827034509">"मिनट"</string> <string name="second" msgid="3184235808021478">"सेकंड"</string> <string name="seconds" msgid="3161515347216589235">"सेकंड"</string> - <string name="week" msgid="5617961537173061583">"सप्ताह"</string> - <string name="weeks" msgid="6509623834583944518">"सप्ताह"</string> + <string name="week" msgid="5617961537173061583">"हफ़्ता"</string> + <string name="weeks" msgid="6509623834583944518">"हफ़्ता"</string> <string name="year" msgid="4001118221013892076">"वर्ष"</string> <string name="years" msgid="6881577717993213522">"वर्ष"</string> <string name="now_string_shortest" msgid="8912796667087856402">"अभी"</string> @@ -1131,8 +1130,10 @@ <string name="whichViewApplication" msgid="3272778576700572102">"इसमें खोलें"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"%1$s में खोलें"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"खोलें"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"इससे <xliff:g id="HOST">%1$s</xliff:g> लिंक खोलने का एक्सेस दें"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"<xliff:g id="APPLICATION">%2$s</xliff:g> से <xliff:g id="HOST">%1$s</xliff:g> लिंक खोलने का एक्सेस दें"</string> + <string name="whichOpenHostLinksWith" msgid="3788174881117226583">"इसे इस्तेमाल करके <xliff:g id="HOST">%1$s</xliff:g> लिंक खोलें"</string> + <string name="whichOpenLinksWith" msgid="6392123355599572804">"इसे इस्तेमाल करके लिंक खोलें"</string> + <string name="whichOpenLinksWithApp" msgid="8225991685366651614">"<xliff:g id="APPLICATION">%1$s</xliff:g> इस्तेमाल करके लिंक खोलें"</string> + <string name="whichOpenHostLinksWithApp" msgid="3464470639011045589">"<xliff:g id="APPLICATION">%2$s</xliff:g> इस्तेमाल करके <xliff:g id="HOST">%1$s</xliff:g> लिंक खोलें"</string> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"एक्सेस दें"</string> <string name="whichEditApplication" msgid="144727838241402655">"इसके ज़रिये बदलाव करें"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"%1$s की मदद से बदलाव करें"</string> @@ -1151,7 +1152,7 @@ <string name="whichImageCaptureApplicationLabel" msgid="6390303445371527066">"चित्र कैप्चर करें"</string> <string name="alwaysUse" msgid="4583018368000610438">"इस कार्रवाई के लिए डिफ़ॉल्ट के तौर पर इस्तेमाल करें"</string> <string name="use_a_different_app" msgid="8134926230585710243">"किसी भिन्न ऐप्स का उपयोग करें"</string> - <string name="clearDefaultHintMsg" msgid="3252584689512077257">"सिस्टम सेटिंग और डाउनलोड किए गए एेप में डिफ़ॉल्ट साफ़ करें."</string> + <string name="clearDefaultHintMsg" msgid="3252584689512077257">"सिस्टम सेटिंग और डाउनलोड किए गए ऐप में डिफ़ॉल्ट साफ़ करें."</string> <string name="chooseActivity" msgid="7486876147751803333">"कोई कार्रवाई चुनें"</string> <string name="chooseUsbActivity" msgid="6894748416073583509">"USB डिवाइस के लिए कोई ऐप्स चुनें"</string> <string name="noApplications" msgid="2991814273936504689">"कोई भी ऐप्स यह कार्यवाही नहीं कर सकता."</string> @@ -1327,8 +1328,8 @@ <string name="sim_added_message" msgid="6599945301141050216">"मोबाइल नेटवर्क की पहुंच पाने लिए अपना डिवाइस फिर से चालू करें."</string> <string name="sim_restart_button" msgid="4722407842815232347">"फिर से शुरू करें"</string> <string name="install_carrier_app_notification_title" msgid="9056007111024059888">"माेबाइल सेवा चालू करें"</string> - <string name="install_carrier_app_notification_text" msgid="3346681446158696001">"अपना नया सिम चालू करने के लिए मोबाइल और इंटरनेट सेवा देने वाली कंपनी का एेप्लिकेशन डाउनलोड करें"</string> - <string name="install_carrier_app_notification_text_app_name" msgid="1196505084835248137">"अपना नया सिम चालू करने के लिए <xliff:g id="APP_NAME">%1$s</xliff:g> एेप्लिकेशन डाउनलाेड करें"</string> + <string name="install_carrier_app_notification_text" msgid="3346681446158696001">"अपना नया सिम चालू करने के लिए मोबाइल और इंटरनेट सेवा देने वाली कंपनी का ऐप्लिकेशन डाउनलोड करें"</string> + <string name="install_carrier_app_notification_text_app_name" msgid="1196505084835248137">"अपना नया सिम चालू करने के लिए <xliff:g id="APP_NAME">%1$s</xliff:g> ऐप्लिकेशन डाउनलाेड करें"</string> <string name="install_carrier_app_notification_button" msgid="3094206295081900849">"ऐप्लिकेशन डाउनलोड करें"</string> <string name="carrier_app_notification_title" msgid="8921767385872554621">"नई SIM डाली गई"</string> <string name="carrier_app_notification_text" msgid="1132487343346050225">"इसे सेट करने के लिए टैप करें"</string> @@ -1551,17 +1552,17 @@ <string name="storage_usb" msgid="3017954059538517278">"USB मेमोरी"</string> <string name="extract_edit_menu_button" msgid="8940478730496610137">"बदलाव करें"</string> <string name="data_usage_warning_title" msgid="6499834033204801605">"डेटा खर्च की चेतावनी"</string> - <string name="data_usage_warning_body" msgid="7340198905103751676">"अाप <xliff:g id="APP">%s</xliff:g> डेटा इस्तेमाल कर चुके हैं"</string> + <string name="data_usage_warning_body" msgid="7340198905103751676">"आप <xliff:g id="APP">%s</xliff:g> डेटा इस्तेमाल कर चुके हैं"</string> <string name="data_usage_mobile_limit_title" msgid="6561099244084267376">"मोबाइल डेटा की सीमा पार हो गई है"</string> <string name="data_usage_wifi_limit_title" msgid="5803363779034792676">"Wi-Fi डेटा की सीमा पूरी हो गई"</string> <string name="data_usage_limit_body" msgid="2908179506560812973">"आपकी मौजूदा बिलिंग साइकिल के बाकी दिनों के लिए डेटा का इस्तेमाल राेक दिया गया है"</string> <string name="data_usage_mobile_limit_snoozed_title" msgid="3171402244827034372">"माेबाइल डेटा की सीमा से ज़्यादा"</string> <string name="data_usage_wifi_limit_snoozed_title" msgid="3547771791046344188">"वाई-फ़ाई की सीमा से ज़्यादा डेटा खर्च"</string> - <string name="data_usage_limit_snoozed_body" msgid="1671222777207603301">"अाप अपनी तय सीमा से <xliff:g id="SIZE">%s</xliff:g> ज़्यादा डेटा इस्तेमाल कर चुके हैं"</string> + <string name="data_usage_limit_snoozed_body" msgid="1671222777207603301">"आप अपनी तय सीमा से <xliff:g id="SIZE">%s</xliff:g> ज़्यादा डेटा इस्तेमाल कर चुके हैं"</string> <string name="data_usage_restricted_title" msgid="5965157361036321914">"पृष्ठभूमि डेटा प्रतिबंधित है"</string> <string name="data_usage_restricted_body" msgid="469866376337242726">"प्रतिबंध निकालने के लिए टैप करें."</string> <string name="data_usage_rapid_title" msgid="1809795402975261331">"माेबाइल डेटा का ज़्यादा इस्तेमाल"</string> - <string name="data_usage_rapid_body" msgid="6897825788682442715">"आपके एेप्लिकेशन ने आम तौर पर इस्तेमाल होने वाले डेटा से ज़्यादा डेटा खर्च कर दिया है"</string> + <string name="data_usage_rapid_body" msgid="6897825788682442715">"आपके ऐप्लिकेशन ने आम तौर पर इस्तेमाल होने वाले डेटा से ज़्यादा डेटा खर्च कर दिया है"</string> <string name="data_usage_rapid_app_body" msgid="5396680996784142544">"<xliff:g id="APP">%s</xliff:g> ने आम तौर पर इस्तेमाल होने वाले डेटा से ज़्यादा डेटा खर्च कर दिया है"</string> <string name="ssl_certificate" msgid="6510040486049237639">"सुरक्षा प्रमाणपत्र"</string> <string name="ssl_certificate_is_valid" msgid="6825263250774569373">"यह प्रमाणपत्र मान्य है."</string> @@ -1584,6 +1585,7 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"ब्राउज़र लॉन्च करें?"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"कॉल स्वीकार करें?"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"हमेशा"</string> + <string name="activity_resolver_set_always" msgid="1422574191056490585">"\'हमेशा खुला रखें\' पर सेट करें"</string> <string name="activity_resolver_use_once" msgid="2404644797149173758">"केवल एक बार"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"सेटिंग"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"%1$s वर्क प्रोफ़ाइल का समर्थन नहीं करता"</string> @@ -1613,8 +1615,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"ओवरले #<xliff:g id="ID">%1$d</xliff:g>"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g>x<xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", सुरक्षित"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"आने वाले Q बिल्ड में <xliff:g id="PACKAGENAME">%1$s</xliff:g> के बैकग्राउंड में गतिविधि शुरू करने पर रोक लगा दी जाएगी. इस बारे में जानने के लिए g.co/dev/bgblock पर जाएं."</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"<xliff:g id="PACKAGENAME">%1$s</xliff:g> के बैकग्राउंड में गतिविधि शुरू करने पर रोक लगा दी गई है. इस बारे में जानने के लिए g.co/dev/bgblock पर जाएं."</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"आकार भूल गए"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"गलत पैटर्न डाला गया है"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"गलत पासवर्ड"</string> @@ -1668,18 +1668,12 @@ <string name="accessibility_shortcut_enabling_service" msgid="7771852911861522636">"सुलभता शॉर्टकट ने <xliff:g id="SERVICE_NAME">%1$s</xliff:g> को चालू किया"</string> <string name="accessibility_shortcut_disabling_service" msgid="2747243438223109821">"सुलभता शॉर्टकट ने <xliff:g id="SERVICE_NAME">%1$s</xliff:g> को बंद किया"</string> <string name="accessibility_shortcut_spoken_feedback" msgid="8376923232350078434">"<xliff:g id="SERVICE_NAME">%1$s</xliff:g> इस्तेमाल करने के लिए आवाज़ वाले दोनों बटन तीन सेकंड तक दबाकर रखें"</string> - <!-- no translation found for accessibility_button_prompt_text (1176658502969738564) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8259145549733019401) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (1041435574275047665) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (7003212763213614833) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (5261788874937410950) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (4969448938984394550) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="1176658502969738564">"\'सुलभता\' बटन पर टैप करके इस्तेमाल करने के लिए सेवा चुनें:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8259145549733019401">"सुलभता वाले जेस्चर के साथ इस्तेमाल करने के लिए सेवा चुनें (दो उंगलियों से स्क्रीन पर सबसे नीचे से ऊपर की ओर स्वाइप करें):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="1041435574275047665">"सुलभता वाले जेस्चर के साथ इस्तेमाल करने के लिए सेवा चुनें (तीन उंगलियों से स्क्रीन पर सबसे नीचे से ऊपर की ओर स्वाइप करें):"</string> + <string name="accessibility_button_instructional_text" msgid="7003212763213614833">"एक सेवा से दूसरी सेवा पर जाने के लिए, \'सुलभता\' बटन को कुछ देर दबाकर रखें."</string> + <string name="accessibility_gesture_instructional_text" msgid="5261788874937410950">"एक सेवा से दूसरी सेवा पर जाने के लिए, स्क्रीन पर दो उंगलियों से ऊपर की ओर स्वाइप करें और थोड़ी देर तक स्क्रीन पर उंगलियां रखे रहें."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="4969448938984394550">"एक सेवा से दूसरी सेवा पर जाने के लिए, स्क्रीन पर तीन उंगलियों से ऊपर की ओर स्वाइप करें और थोड़ी देर तक स्क्रीन पर उंगलियां रखे रहें."</string> <string name="accessibility_magnification_chooser_text" msgid="1227146738764986237">"बड़ा करना"</string> <string name="user_switched" msgid="3768006783166984410">"मौजूदा उपयोगकर्ता <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="2871009331809089783">"<xliff:g id="NAME">%1$s</xliff:g> पर स्विच किया जा रहा है…"</string> @@ -1858,7 +1852,7 @@ <string name="toolbar_collapse_description" msgid="2821479483960330739">"छोटा करें"</string> <string name="zen_mode_feature_name" msgid="5254089399895895004">"परेशान ना करें"</string> <string name="zen_mode_downtime_feature_name" msgid="2626974636779860146">"बंद रहने का समय"</string> - <string name="zen_mode_default_weeknights_name" msgid="3081318299464998143">"सप्ताह की रात"</string> + <string name="zen_mode_default_weeknights_name" msgid="3081318299464998143">"हफ़्ते की रात"</string> <string name="zen_mode_default_weekends_name" msgid="2786495801019345244">"सप्ताहांत"</string> <string name="zen_mode_default_events_name" msgid="8158334939013085363">"इवेंट"</string> <string name="zen_mode_default_every_night_name" msgid="3012363838882944175">"सोते समय"</string> @@ -1991,12 +1985,12 @@ <string name="harmful_app_warning_title" msgid="8982527462829423432">"नुकसान पहुंचाने वाले ऐप का पता चला"</string> <string name="slices_permission_request" msgid="8484943441501672932">"<xliff:g id="APP_0">%1$s</xliff:g>, <xliff:g id="APP_2">%2$s</xliff:g> के हिस्से (स्लाइस) दिखाना चाहता है"</string> <string name="screenshot_edit" msgid="7867478911006447565">"बदलाव करें"</string> - <string name="volume_dialog_ringer_guidance_vibrate" msgid="8902050240801159042">"कॉल अाैर सूचनाअाें के लिए डिवाइस वाइब्रेट हाेगा"</string> - <string name="volume_dialog_ringer_guidance_silent" msgid="2128975224280276122">"कॉल अाैर सूचनाओं के लिए डिवाइस म्यूट रहेगा"</string> + <string name="volume_dialog_ringer_guidance_vibrate" msgid="8902050240801159042">"कॉल और सूचनाओं के लिए डिवाइस वाइब्रेट हाेगा"</string> + <string name="volume_dialog_ringer_guidance_silent" msgid="2128975224280276122">"कॉल और सूचनाओं के लिए डिवाइस म्यूट रहेगा"</string> <string name="notification_channel_system_changes" msgid="5072715579030948646">"सिस्टम में हुए बदलाव"</string> <string name="notification_channel_do_not_disturb" msgid="6766940333105743037">"परेशान न करें"</string> <string name="zen_upgrade_notification_visd_title" msgid="3288313883409759733">"नई सुविधा: परेशान न करें सुविधा चालू होने की वजह से सूचनाएं नहीं दिखाई जा रही हैं"</string> - <string name="zen_upgrade_notification_visd_content" msgid="5533674060311631165">"ज़्यादा जानने अाैर बदलाव करने के लिए टैप करें."</string> + <string name="zen_upgrade_notification_visd_content" msgid="5533674060311631165">"ज़्यादा जानने और बदलाव करने के लिए टैप करें."</string> <string name="zen_upgrade_notification_title" msgid="3799603322910377294">"परेशान न करें की सुविधा बदल गई है"</string> <string name="zen_upgrade_notification_content" msgid="1794994264692424562">"टैप करके देखें कि किन चीज़ों पर रोक लगाई गई है."</string> <string name="notification_app_name_system" msgid="4205032194610042794">"सिस्टम"</string> diff --git a/core/res/res/values-hr/strings.xml b/core/res/res/values-hr/strings.xml index f7f770931694..abb14139bfa8 100644 --- a/core/res/res/values-hr/strings.xml +++ b/core/res/res/values-hr/strings.xml @@ -1150,8 +1150,10 @@ <string name="whichViewApplication" msgid="3272778576700572102">"Otvaranje pomoću aplikacije"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"Otvaranje pomoću aplikacije %1$s"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"Otvori"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"Omogućite pristup za otvaranje <xliff:g id="HOST">%1$s</xliff:g> veza pomoću aplikacije"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"Omogućite pristup za otvaranje <xliff:g id="HOST">%1$s</xliff:g> veza pomoću aplikacije <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> + <string name="whichOpenHostLinksWith" msgid="3788174881117226583">"Otvaranje veza s <xliff:g id="HOST">%1$s</xliff:g> u aplikaciji"</string> + <string name="whichOpenLinksWith" msgid="6392123355599572804">"Otvaranje veza u aplikaciji"</string> + <string name="whichOpenLinksWithApp" msgid="8225991685366651614">"Otvaranje veza u aplikaciji <xliff:g id="APPLICATION">%1$s</xliff:g>"</string> + <string name="whichOpenHostLinksWithApp" msgid="3464470639011045589">"Otvaranje veza s <xliff:g id="HOST">%1$s</xliff:g> u aplikaciji <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"Omogući pristup"</string> <string name="whichEditApplication" msgid="144727838241402655">"Uređivanje pomoću aplikacije"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"Uređivanje pomoću aplikacije %1$s"</string> @@ -1606,6 +1608,7 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"Pokrenuti preglednik?"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"Prihvatiti poziv?"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"Uvijek"</string> + <string name="activity_resolver_set_always" msgid="1422574191056490585">"Postavi to otvaranje kao zadano"</string> <string name="activity_resolver_use_once" msgid="2404644797149173758">"Samo jednom"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"Postavke"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"%1$s ne podržava radni profil"</string> @@ -1635,8 +1638,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"Preklapanje br. <xliff:g id="ID">%1$d</xliff:g>"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g> x <xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", sigurno"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"Pokretanje aktivnosti u pozadini iz aplikacije <xliff:g id="PACKAGENAME">%1$s</xliff:g> blokirat će se u budućim međuverzijama Q. Pogledajte g.co/dev/bgblock."</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"Blokirano je pokretanje aktivnosti u pozadini iz aplikacije <xliff:g id="PACKAGENAME">%1$s</xliff:g>. Pogledajte g.co/dev/bgblock."</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Zaboravili ste obrazac"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"Pogrešan obrazac"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"Pogrešna zaporka"</string> diff --git a/core/res/res/values-hu/strings.xml b/core/res/res/values-hu/strings.xml index 72cb02c786a0..0ece955adbf2 100644 --- a/core/res/res/values-hu/strings.xml +++ b/core/res/res/values-hu/strings.xml @@ -131,8 +131,7 @@ <!-- no translation found for wfcSpnFormat_spn (4998685024207291232) --> <skip /> <string name="wfcSpnFormat_spn_wifi_calling" msgid="136001023263502280">"<xliff:g id="SPN">%s</xliff:g> Wi-Fi-hívás"</string> - <!-- no translation found for wfcSpnFormat_spn_wifi_calling_vo_hyphen (1730997175789582756) --> - <skip /> + <string name="wfcSpnFormat_spn_wifi_calling_vo_hyphen" msgid="1730997175789582756">"<xliff:g id="SPN">%s</xliff:g> Wi‑Fi-hívás"</string> <string name="wfcSpnFormat_wlan_call" msgid="2533371081782489793">"WLAN-hívás"</string> <string name="wfcSpnFormat_spn_wlan_call" msgid="2315240198303197168">"<xliff:g id="SPN">%s</xliff:g> WLAN-hívás"</string> <string name="wfcSpnFormat_spn_wifi" msgid="6546481665561961938">"<xliff:g id="SPN">%s</xliff:g> Wi-Fi"</string> @@ -263,7 +262,7 @@ <string name="notification_channel_network_alerts" msgid="2895141221414156525">"Hálózati értesítések"</string> <string name="notification_channel_network_available" msgid="4531717914138179517">"Van elérhető hálózat"</string> <string name="notification_channel_vpn" msgid="8330103431055860618">"VPN-állapot"</string> - <string name="notification_channel_device_admin" msgid="8353118887482520565">"Rendszergazda általi értesítések"</string> + <string name="notification_channel_device_admin" msgid="8353118887482520565">"Értesítések a rendszergazdától"</string> <string name="notification_channel_alerts" msgid="4496839309318519037">"Értesítések"</string> <string name="notification_channel_retail_mode" msgid="6088920674914038779">"Kiskereskedelmi bemutató"</string> <string name="notification_channel_usb" msgid="9006850475328924681">"USB-kapcsolat"</string> @@ -1131,8 +1130,10 @@ <string name="whichViewApplication" msgid="3272778576700572102">"Megnyitás a következővel:"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"Megnyitás a következővel: %1$s"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"Megnyitás"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"Engedély megadása, hogy a(z) <xliff:g id="HOST">%1$s</xliff:g> linkek a következő alkalmazásban nyíljanak meg:"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"Engedély megadása, hogy a(z) <xliff:g id="HOST">%1$s</xliff:g> linkek a következő alkalmazásban nyíljanak meg: <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> + <string name="whichOpenHostLinksWith" msgid="3788174881117226583">"<xliff:g id="HOST">%1$s</xliff:g>-linkek megnyitása a következővel:"</string> + <string name="whichOpenLinksWith" msgid="6392123355599572804">"Linkek megnyitása a következővel:"</string> + <string name="whichOpenLinksWithApp" msgid="8225991685366651614">"Linkek megnyitása a következővel: <xliff:g id="APPLICATION">%1$s</xliff:g>"</string> + <string name="whichOpenHostLinksWithApp" msgid="3464470639011045589">"<xliff:g id="HOST">%1$s</xliff:g>-linkek megnyitása a következővel: <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"Engedély adása"</string> <string name="whichEditApplication" msgid="144727838241402655">"Szerkesztés a következővel:"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"Szerkesztés a következővel: %1$s"</string> @@ -1584,6 +1585,7 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"Böngésző indítása?"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"Fogadja a hívást?"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"Mindig"</string> + <string name="activity_resolver_set_always" msgid="1422574191056490585">"Megnyitás mindig ezzel"</string> <string name="activity_resolver_use_once" msgid="2404644797149173758">"Csak egyszer"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"Beállítások"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"A(z) %1$s nem támogatja a munkaprofilokat."</string> @@ -1613,8 +1615,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"<xliff:g id="ID">%1$d</xliff:g>. fedvény"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g> x <xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> képpont"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", biztonságos"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"Ez a háttértevékenység-indítás le lesz tiltva a(z) <xliff:g id="PACKAGENAME">%1$s</xliff:g> számára a jövőbeni Q-buildeknél. Lásd: g.co/dev/bgblock."</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"A(z) <xliff:g id="PACKAGENAME">%1$s</xliff:g> számára le van tiltva a háttértevékenységek indítása. Lásd: g.co/dev/bgblock."</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Elfelejtett minta"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"Helytelen minta"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"Helytelen jelszó"</string> diff --git a/core/res/res/values-hy/strings.xml b/core/res/res/values-hy/strings.xml index b3511f6cd230..60baecd8aa07 100644 --- a/core/res/res/values-hy/strings.xml +++ b/core/res/res/values-hy/strings.xml @@ -131,8 +131,7 @@ <!-- no translation found for wfcSpnFormat_spn (4998685024207291232) --> <skip /> <string name="wfcSpnFormat_spn_wifi_calling" msgid="136001023263502280">"<xliff:g id="SPN">%s</xliff:g> Wi-Fi-ի միջոցով զանգեր"</string> - <!-- no translation found for wfcSpnFormat_spn_wifi_calling_vo_hyphen (1730997175789582756) --> - <skip /> + <string name="wfcSpnFormat_spn_wifi_calling_vo_hyphen" msgid="1730997175789582756">"<xliff:g id="SPN">%s</xliff:g> Զանգեր Wi-Fi-ի միջոցով"</string> <string name="wfcSpnFormat_wlan_call" msgid="2533371081782489793">"Զանգ WLAN ցանցով"</string> <string name="wfcSpnFormat_spn_wlan_call" msgid="2315240198303197168">"<xliff:g id="SPN">%s</xliff:g> WLAN ցանցով զանգեր"</string> <string name="wfcSpnFormat_spn_wifi" msgid="6546481665561961938">"<xliff:g id="SPN">%s</xliff:g> Wi-Fi"</string> @@ -257,7 +256,7 @@ <string name="notification_channel_security" msgid="7345516133431326347">"Անվտանգություն"</string> <string name="notification_channel_car_mode" msgid="3553380307619874564">"Մեքենայի ռեժիմ"</string> <string name="notification_channel_account" msgid="7577959168463122027">"Հաշվի կարգավիճակ"</string> - <string name="notification_channel_developer" msgid="7579606426860206060">"Մշակողի հաղորդագրություններ"</string> + <string name="notification_channel_developer" msgid="7579606426860206060">"Հաղորդագրություններ ծրագրավորողների համար"</string> <string name="notification_channel_updates" msgid="4794517569035110397">"Թարմացումներ"</string> <string name="notification_channel_network_status" msgid="5025648583129035447">"Ցանցի կարգավիճակ"</string> <string name="notification_channel_network_alerts" msgid="2895141221414156525">"Ցանցային զգուշացումներ"</string> @@ -1131,8 +1130,10 @@ <string name="whichViewApplication" msgid="3272778576700572102">"Բացել հետևյալ ծրագրով՝"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"Բացել հավելվածով՝ %1$s"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"Բացել"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"Թույլատրեք, որ <xliff:g id="HOST">%1$s</xliff:g> տիրույթը հղումները բացվեն հետևյալ հավելվածում՝"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"Թույլատրեք, որ <xliff:g id="HOST">%1$s</xliff:g> տիրույթի հղումները բացվեն <xliff:g id="APPLICATION">%2$s</xliff:g> հավելվածում"</string> + <string name="whichOpenHostLinksWith" msgid="3788174881117226583">"<xliff:g id="HOST">%1$s</xliff:g> տեսակի հղումները բացել…"</string> + <string name="whichOpenLinksWith" msgid="6392123355599572804">"Հղումները բացել…"</string> + <string name="whichOpenLinksWithApp" msgid="8225991685366651614">"Հղումները բացել <xliff:g id="APPLICATION">%1$s</xliff:g> դիտարկիչում"</string> + <string name="whichOpenHostLinksWithApp" msgid="3464470639011045589">"<xliff:g id="HOST">%1$s</xliff:g> տեսակի հղումները բացել <xliff:g id="APPLICATION">%2$s</xliff:g> դիտարկիչում"</string> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"Թույլատրել"</string> <string name="whichEditApplication" msgid="144727838241402655">"Խմբագրել հետևյալ ծրագրով՝"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"Խմբագրել հետևյալով՝ %1$s"</string> @@ -1150,7 +1151,7 @@ <string name="whichImageCaptureApplicationNamed" msgid="8619384150737825003">"Լուսանկարել %1$s հավելվածի օգնությամբ"</string> <string name="whichImageCaptureApplicationLabel" msgid="6390303445371527066">"Լուսանկարել"</string> <string name="alwaysUse" msgid="4583018368000610438">"Օգտագործել ըստ կանխադրման այս գործողության համար:"</string> - <string name="use_a_different_app" msgid="8134926230585710243">"Օգտագործել այլ հավելված"</string> + <string name="use_a_different_app" msgid="8134926230585710243">"Ուրիշ հավելված"</string> <string name="clearDefaultHintMsg" msgid="3252584689512077257">"Մաքրել լռելյայնը Համակարգի կարգավորումներ > Ծրագրեր >Ներբեռնված էջից:"</string> <string name="chooseActivity" msgid="7486876147751803333">"Ընտրել գործողություն"</string> <string name="chooseUsbActivity" msgid="6894748416073583509">"Ընտրեք հավելված USB սարքի համար"</string> @@ -1584,7 +1585,8 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"Գործարկե՞լ զննարկիչը:"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"Ընդունե՞լ զանգը:"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"Միշտ"</string> - <string name="activity_resolver_use_once" msgid="2404644797149173758">"Միայն մեկ անգամ"</string> + <string name="activity_resolver_set_always" msgid="1422574191056490585">"Միշտ բացել"</string> + <string name="activity_resolver_use_once" msgid="2404644797149173758">"Միայն այս անգամ"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"Կարգավորումներ"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"%1$s-ը չի աջակցում աշխատանքային պրոֆիլներ"</string> <string name="default_audio_route_name" product="tablet" msgid="4617053898167127471">"Գրասալիկ"</string> @@ -1613,8 +1615,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"Վերածածկ #<xliff:g id="ID">%1$d</xliff:g>"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>. <xliff:g id="WIDTH">%2$d</xliff:g>x<xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> կմվ"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", անվտանգ"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"<xliff:g id="PACKAGENAME">%1$s</xliff:g> հավելվածի գործողությունները ֆոնային ռեժիմում կարգելափակվեն Android Q-ի հաջորդ կառուցումներում։ Մանրամասն տեղեկություններ կարող եք գտնել g.co/dev/bgblock էջում։"</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"<xliff:g id="PACKAGENAME">%1$s</xliff:g> հավելվածի գործողությունները ֆոնային ռեժիմում արգելափակվեցին։ Մանրամասն տեղեկություններ կարող եք գտնել g.co/dev/bgblock էջում։"</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Մոռացել եմ սխեման"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"Սխալ սխեմա"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"Սխալ գաղտնաբառ"</string> @@ -1668,18 +1668,12 @@ <string name="accessibility_shortcut_enabling_service" msgid="7771852911861522636">"Մատչելիության դյուրանցումն միացրել է <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ծառայությունը"</string> <string name="accessibility_shortcut_disabling_service" msgid="2747243438223109821">"Մատչելիության դյուրանցումն անջատել է <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ծառայությունը"</string> <string name="accessibility_shortcut_spoken_feedback" msgid="8376923232350078434">"«<xliff:g id="SERVICE_NAME">%1$s</xliff:g>» ծառայությունն օգտագործելու համար սեղմեք և 3 վայրկյան պահեք ձայնի ուժգնության երկու կոճակները"</string> - <!-- no translation found for accessibility_button_prompt_text (1176658502969738564) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8259145549733019401) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (1041435574275047665) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (7003212763213614833) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (5261788874937410950) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (4969448938984394550) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="1176658502969738564">"Ընտրեք ծառայությունը, որը կգործարկվի «Հատուկ գործառույթներ» կոճակին հպելու դեպքում՝"</string> + <string name="accessibility_gesture_prompt_text" msgid="8259145549733019401">"Ընտրեք ծառայությունը, որը կգործարկվի հատուկ գործառույթների ժեստն անելու դեպքում (երկու մատը էկրանի ներքևից սահեցրեք վերև)՝"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="1041435574275047665">"Ընտրեք ծառայությունը, որը կգործարկվի հատուկ գործառույթների ժեստն անելու դեպքում (երեք մատը էկրանի ներքևից սահեցրեք վերև)՝"</string> + <string name="accessibility_button_instructional_text" msgid="7003212763213614833">"Մեկ ծառայությունից մյուսին անցնելու համար հպեք «Հատուկ գործառույթներ» կոճակին և պահեք:"</string> + <string name="accessibility_gesture_instructional_text" msgid="5261788874937410950">"Մեկ ծառայությունից մյուսին անցնելու համար երկու մատը սահեցրեք վերև և պահեք:"</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="4969448938984394550">"Մեկ ծառայությունից մյուսին անցնելու համար երեք մատը սահեցրեք վերև և պահեք:"</string> <string name="accessibility_magnification_chooser_text" msgid="1227146738764986237">"Խոշորացում"</string> <string name="user_switched" msgid="3768006783166984410">"Ներկայիս օգտատերը <xliff:g id="NAME">%1$s</xliff:g>:"</string> <string name="user_switching_message" msgid="2871009331809089783">"Փոխարկվում է <xliff:g id="NAME">%1$s</xliff:g>-ին..."</string> @@ -1912,7 +1906,7 @@ <string name="deprecated_target_sdk_app_store" msgid="5032340500368495077">"Ստուգել նոր տարբերակի առկայությունը"</string> <string name="new_sms_notification_title" msgid="8442817549127555977">"Դուք ունեք նոր հաղորդագրություններ"</string> <string name="new_sms_notification_content" msgid="7002938807812083463">"Դիտելու համար բացել SMS հավելվածը"</string> - <string name="profile_encrypted_title" msgid="4260432497586829134">"Որոշ գործառույթներ կարող են չգործել"</string> + <string name="profile_encrypted_title" msgid="4260432497586829134">"Որոշ գործառույթներ կարող են չաշխատել"</string> <string name="profile_encrypted_detail" msgid="3700965619978314974">"Աշխատանքային պրոֆիլը կողպված է"</string> <string name="profile_encrypted_message" msgid="6964994232310195874">"Հպեք՝ այն ապակողպելու համար"</string> <string name="usb_mtp_launch_notification_title" msgid="8359219638312208932">"Միացված է <xliff:g id="PRODUCT_NAME">%1$s</xliff:g>-ին"</string> diff --git a/core/res/res/values-in/strings.xml b/core/res/res/values-in/strings.xml index 954e00465a23..05f70c0b1969 100644 --- a/core/res/res/values-in/strings.xml +++ b/core/res/res/values-in/strings.xml @@ -30,7 +30,7 @@ <string name="untitled" msgid="4638956954852782576">"<Tanpa judul>"</string> <string name="emptyPhoneNumber" msgid="7694063042079676517">"(Tidak ada nomor telepon)"</string> <string name="unknownName" msgid="6867811765370350269">"Tidak diketahui"</string> - <string name="defaultVoiceMailAlphaTag" msgid="2660020990097733077">"Kotak Pesan"</string> + <string name="defaultVoiceMailAlphaTag" msgid="2660020990097733077">"Pesan suara"</string> <string name="defaultMsisdnAlphaTag" msgid="2850889754919584674">"MSISDN1"</string> <string name="mmiError" msgid="5154499457739052907">"Masalah sambungan atau kode MMI tidak valid."</string> <string name="mmiFdnError" msgid="5224398216385316471">"Operasi dibatasi untuk nomor panggilan tetap saja."</string> @@ -84,7 +84,7 @@ <string name="RestrictedStateContent" msgid="6538703255570997248">"Dinonaktifkan sementara oleh operator"</string> <string name="RestrictedStateContentMsimTemplate" msgid="673416791370248176">"Dinonaktifkan sementara oleh operator untuk SIM <xliff:g id="SIMNUMBER">%d</xliff:g>"</string> <string name="NetworkPreferenceSwitchTitle" msgid="6982395015324165258">"Tidak dapat menjangkau jaringan seluler"</string> - <string name="NetworkPreferenceSwitchSummary" msgid="509327194863482733">"Coba ubah jaringan pilihan. Tap untuk mengubah."</string> + <string name="NetworkPreferenceSwitchSummary" msgid="509327194863482733">"Coba ubah jaringan pilihan. Ketuk untuk mengubah."</string> <string name="EmergencyCallWarningTitle" msgid="813380189532491336">"Panggilan darurat tidak tersedia"</string> <string name="EmergencyCallWarningSummary" msgid="1899692069750260619">"Tidak dapat melakukan panggilan darurat melalui Wi-Fi"</string> <string name="notification_channel_network_alert" msgid="4427736684338074967">"Notifikasi"</string> @@ -188,7 +188,7 @@ <string name="work_profile_deleted_description_dpm_wipe" msgid="8823792115612348820">"Profil kerja tidak tersedia lagi di perangkat ini"</string> <string name="work_profile_deleted_reason_maximum_password_failure" msgid="8986903510053359694">"Terlalu banyak percobaan memasukkan sandi"</string> <string name="network_logging_notification_title" msgid="6399790108123704477">"Perangkat ini ada yang mengelola"</string> - <string name="network_logging_notification_text" msgid="7930089249949354026">"Organisasi mengelola perangkat ini dan mungkin memantau traffic jaringan. Tap untuk melihat detailnya."</string> + <string name="network_logging_notification_text" msgid="7930089249949354026">"Organisasi mengelola perangkat ini dan mungkin memantau traffic jaringan. Ketuk untuk melihat detailnya."</string> <string name="factory_reset_warning" msgid="5423253125642394387">"Perangkat akan dihapus"</string> <string name="factory_reset_message" msgid="9024647691106150160">"Aplikasi admin tidak dapat digunakan. Perangkat Anda kini akan dihapus.\n\nJika ada pertanyaan, hubungi admin organisasi."</string> <string name="printing_disabled_by" msgid="8936832919072486965">"Fitur pencetakan dinonaktifkan oleh <xliff:g id="OWNER_APP">%s</xliff:g>."</string> @@ -270,7 +270,7 @@ <string name="notification_channel_foreground_service" msgid="3931987440602669158">"Aplikasi yang menggunakan baterai"</string> <string name="foreground_service_app_in_background" msgid="1060198778219731292">"<xliff:g id="APP_NAME">%1$s</xliff:g> sedang menggunakan baterai"</string> <string name="foreground_service_apps_in_background" msgid="7175032677643332242">"<xliff:g id="NUMBER">%1$d</xliff:g> aplikasi sedang meggunakan baterai"</string> - <string name="foreground_service_tap_for_details" msgid="372046743534354644">"Tap untuk melihat detail penggunaan baterai dan data"</string> + <string name="foreground_service_tap_for_details" msgid="372046743534354644">"Ketuk untuk melihat detail penggunaan baterai dan data"</string> <string name="foreground_service_multiple_separator" msgid="4021901567939866542">"<xliff:g id="LEFT_SIDE">%1$s</xliff:g>, <xliff:g id="RIGHT_SIDE">%2$s</xliff:g>"</string> <string name="safeMode" msgid="2788228061547930246">"Mode aman"</string> <string name="android_system_label" msgid="6577375335728551336">"Sistem Android"</string> @@ -800,7 +800,7 @@ <string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Ketik kode PUK dan PIN baru"</string> <string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"Kode PUK"</string> <string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Kode Pin baru"</string> - <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"Tap untuk mengetik sandi"</font></string> + <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"Ketuk untuk mengetik sandi"</font></string> <string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Ketik sandi untuk membuka kunci"</string> <string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Ketik PIN untuk membuka kunci"</string> <string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Kode PIN salah."</string> @@ -912,7 +912,7 @@ <string name="js_dialog_before_unload_negative_button" msgid="5614861293026099715">"Tetap di Halaman ini"</string> <string name="js_dialog_before_unload" msgid="3468816357095378590">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nYakin ingin beranjak dari halaman ini?"</string> <string name="save_password_label" msgid="6860261758665825069">"Konfirmasi"</string> - <string name="double_tap_toast" msgid="4595046515400268881">"Kiat: Tap dua kali untuk memperbesar dan memperkecil."</string> + <string name="double_tap_toast" msgid="4595046515400268881">"Kiat: Ketuk dua kali untuk memperbesar dan memperkecil."</string> <string name="autofill_this_form" msgid="4616758841157816676">"IsiOtomatis"</string> <string name="setup_autofill" msgid="7103495070180590814">"Siapkan Pengisian Otomatis"</string> <string name="autofill_window_title" msgid="4107745526909284887">"IsiOtomatis dengan <xliff:g id="SERVICENAME">%1$s</xliff:g>"</string> @@ -1115,7 +1115,7 @@ <string name="low_internal_storage_view_text" msgid="6640505817617414371">"Beberapa fungsi sistem mungkin tidak dapat bekerja"</string> <string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Penyimpanan tidak cukup untuk sistem. Pastikan Anda memiliki 250 MB ruang kosong, lalu mulai ulang."</string> <string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> sedang berjalan"</string> - <string name="app_running_notification_text" msgid="1197581823314971177">"Tap untuk informasi selengkapnya atau menghentikan aplikasi."</string> + <string name="app_running_notification_text" msgid="1197581823314971177">"Ketuk untuk informasi selengkapnya atau menghentikan aplikasi."</string> <string name="ok" msgid="5970060430562524910">"Oke"</string> <string name="cancel" msgid="6442560571259935130">"Batal"</string> <string name="yes" msgid="5362982303337969312">"Oke"</string> @@ -1130,8 +1130,10 @@ <string name="whichViewApplication" msgid="3272778576700572102">"Buka dengan"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"Buka dengan %1$s"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"Buka"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"Berikan akses untuk membuka link <xliff:g id="HOST">%1$s</xliff:g> dengan"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"Berikan akses untuk membuka link <xliff:g id="HOST">%1$s</xliff:g> dengan <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> + <string name="whichOpenHostLinksWith" msgid="3788174881117226583">"Buka link <xliff:g id="HOST">%1$s</xliff:g> dengan"</string> + <string name="whichOpenLinksWith" msgid="6392123355599572804">"Buka link dengan"</string> + <string name="whichOpenLinksWithApp" msgid="8225991685366651614">"Buka link dengan <xliff:g id="APPLICATION">%1$s</xliff:g>"</string> + <string name="whichOpenHostLinksWithApp" msgid="3464470639011045589">"Buka link <xliff:g id="HOST">%1$s</xliff:g> dengan <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"Berikan akses"</string> <string name="whichEditApplication" msgid="144727838241402655">"Edit dengan"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"Edit dengan %1$s"</string> @@ -1201,7 +1203,7 @@ <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Memulai aplikasi."</string> <string name="android_upgrading_complete" msgid="1405954754112999229">"Menyelesaikan boot."</string> <string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> berjalan"</string> - <string name="heavy_weight_notification_detail" msgid="2304833848484424985">"Tap untuk kembali ke game"</string> + <string name="heavy_weight_notification_detail" msgid="2304833848484424985">"Ketuk untuk kembali ke game"</string> <string name="heavy_weight_switcher_title" msgid="387882830435195342">"Pilih game"</string> <string name="heavy_weight_switcher_text" msgid="4176781660362912010">"Agar performa tetap maksimal, hanya 1 game yang dapat dibuka sekaligus."</string> <string name="old_app_action" msgid="3044685170829526403">"Kembali ke <xliff:g id="OLD_APP">%1$s</xliff:g>"</string> @@ -1209,7 +1211,7 @@ <string name="new_app_description" msgid="5894852887817332322">"<xliff:g id="OLD_APP">%1$s</xliff:g> akan ditutup tanpa menyimpan"</string> <string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> melampaui batas memori"</string> <string name="dump_heap_ready_notification" msgid="1162196579925048701">"Heap dump <xliff:g id="PROC">%1$s</xliff:g> siap"</string> - <string name="dump_heap_notification_detail" msgid="3993078784053054141">"Informasi memori dikumpulkan. Tap untuk membagikan."</string> + <string name="dump_heap_notification_detail" msgid="3993078784053054141">"Informasi memori dikumpulkan. Ketuk untuk membagikan."</string> <string name="dump_heap_title" msgid="5864292264307651673">"Share tumpukan membuang?"</string> <string name="dump_heap_text" msgid="8546022920319781701">"Proses <xliff:g id="PROC">%1$s</xliff:g> telah melampaui batas memori <xliff:g id="SIZE">%2$s</xliff:g>. Heap dump tersedia untuk Anda bagikan kepada developernya. Hati-hati, heap dump ini dapat memuat informasi pribadi yang dapat diakses oleh aplikasi."</string> <string name="dump_heap_system_text" msgid="3236094872980706024">"Proses <xliff:g id="PROC">%1$s</xliff:g> telah melampaui batas memori sebesar <xliff:g id="SIZE">%2$s</xliff:g>. Heap dump tersedia untuk Anda bagikan. Hati-hati, heap dump ini dapat memuat informasi pribadi sensitif yang dapat diakses oleh proses, yang dapat menyertakan informasi yang Anda ketik."</string> @@ -1249,7 +1251,7 @@ <string name="wifi_available_title_connecting" msgid="1139126673968899002">"Menghubungkan ke jaringan Wi-Fi"</string> <string name="wifi_available_title_connected" msgid="7542672851522241548">"Terhubung ke jaringan Wi-Fi"</string> <string name="wifi_available_title_failed_to_connect" msgid="6861772233582618132">"Tidak dapat menghubungkan ke jaringan Wi‑Fi"</string> - <string name="wifi_available_content_failed_to_connect" msgid="3377406637062802645">"Tap untuk melihat semua jaringan"</string> + <string name="wifi_available_content_failed_to_connect" msgid="3377406637062802645">"Ketuk untuk melihat semua jaringan"</string> <string name="wifi_available_action_connect" msgid="2635699628459488788">"Hubungkan"</string> <string name="wifi_available_action_all_networks" msgid="4368435796357931006">"Semua jaringan"</string> <string name="wifi_suggestion_title" msgid="9099832833531486167">"Sambungkan perangkat ke jaringan Wi-Fi?"</string> @@ -1266,10 +1268,10 @@ <!-- no translation found for network_available_sign_in_detailed (8000081941447976118) --> <skip /> <string name="wifi_no_internet" msgid="5198100389964214865">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g> tidak memiliki akses internet"</string> - <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"Tap untuk melihat opsi"</string> + <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"Ketuk untuk melihat opsi"</string> <string name="captive_portal_logged_in_detailed" msgid="8489345381637456021">"Tersambung"</string> <string name="network_partial_connectivity" msgid="7774883385494762741">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g> memiliki konektivitas terbatas"</string> - <string name="network_partial_connectivity_detailed" msgid="1959697814165325217">"Tap untuk tetap menyambungkan"</string> + <string name="network_partial_connectivity_detailed" msgid="1959697814165325217">"Ketuk untuk tetap menyambungkan"</string> <string name="wifi_softap_config_change" msgid="8475911871165857607">"Perubahan pada setelan hotspot Anda"</string> <string name="wifi_softap_config_change_summary" msgid="7601233252456548891">"Pita hotspot Anda telah berubah."</string> <string name="wifi_softap_config_change_detailed" msgid="8022936822860678033">"Perangkat ini tidak mendukung preferensi Anda, yaitu hanya 5GHz. Sebagai gantinya, perangkat ini akan menggunakan pita frekuensi 5GHz jika tersedia."</string> @@ -1293,7 +1295,7 @@ <string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Memulai Wi-Fi Direct. Opsi ini akan mematikan hotspot/klien Wi-Fi."</string> <string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Tidak dapat memulai Wi-Fi Direct."</string> <string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct aktif"</string> - <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"Tap untuk setelan"</string> + <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"Ketuk untuk setelan"</string> <string name="accept" msgid="1645267259272829559">"Terima"</string> <string name="decline" msgid="2112225451706137894">"Tolak"</string> <string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Undangan terkirim"</string> @@ -1330,7 +1332,7 @@ <string name="install_carrier_app_notification_text_app_name" msgid="1196505084835248137">"Download aplikasi <xliff:g id="APP_NAME">%1$s</xliff:g> untuk mengaktifkan SIM baru"</string> <string name="install_carrier_app_notification_button" msgid="3094206295081900849">"Download aplikasi"</string> <string name="carrier_app_notification_title" msgid="8921767385872554621">"SIM baru dimasukkan"</string> - <string name="carrier_app_notification_text" msgid="1132487343346050225">"Tap untuk menyiapkan"</string> + <string name="carrier_app_notification_text" msgid="1132487343346050225">"Ketuk untuk menyiapkan"</string> <string name="time_picker_dialog_title" msgid="8349362623068819295">"Setel waktu"</string> <string name="date_picker_dialog_title" msgid="5879450659453782278">"Setel tanggal"</string> <string name="date_time_set" msgid="5777075614321087758">"Setel"</string> @@ -1347,17 +1349,17 @@ <string name="usb_tether_notification_title" msgid="3716143122035802501">"Tethering USB diaktifkan"</string> <string name="usb_midi_notification_title" msgid="5356040379749154805">"MIDI via USB diaktifkan"</string> <string name="usb_accessory_notification_title" msgid="1785694450621427730">"Aksesori USB tersambung"</string> - <string name="usb_notification_message" msgid="3370903770828407960">"Tap untuk opsi lainnya."</string> - <string name="usb_power_notification_message" msgid="4647527153291917218">"Mengisi daya perangkat yang terhubung. Tap untuk opsi lainnya."</string> + <string name="usb_notification_message" msgid="3370903770828407960">"Ketuk untuk opsi lainnya."</string> + <string name="usb_power_notification_message" msgid="4647527153291917218">"Mengisi daya perangkat yang terhubung. Ketuk untuk opsi lainnya."</string> <string name="usb_unsupported_audio_accessory_title" msgid="3529881374464628084">"Aksesori audio analog terdeteksi"</string> - <string name="usb_unsupported_audio_accessory_message" msgid="6309553946441565215">"Perangkat yang terpasang tidak kompatibel dengan ponsel ini. Tap untuk mempelajari lebih lanjut."</string> + <string name="usb_unsupported_audio_accessory_message" msgid="6309553946441565215">"Perangkat yang terpasang tidak kompatibel dengan ponsel ini. Ketuk untuk mempelajari lebih lanjut."</string> <string name="adb_active_notification_title" msgid="6729044778949189918">"Proses debug USB terhubung"</string> - <string name="adb_active_notification_message" msgid="7463062450474107752">"Tap untuk menonaktifkan proses debug USB"</string> + <string name="adb_active_notification_message" msgid="7463062450474107752">"Ketuk untuk menonaktifkan proses debug USB"</string> <string name="adb_active_notification_message" product="tv" msgid="8470296818270110396">"Pilih untuk menonaktifkan debugging USB."</string> <string name="test_harness_mode_notification_title" msgid="2216359742631914387">"Mode Tes Otomatis diaktifkan"</string> <string name="test_harness_mode_notification_message" msgid="1343197173054407119">"Lakukan reset ke setelan pabrik untuk menonaktifkan Mode Tes Otomatis."</string> <string name="usb_contaminant_detected_title" msgid="7136400633704058349">"Cairan atau kotoran di port USB"</string> - <string name="usb_contaminant_detected_message" msgid="832337061059487250">"Port USB otomatis dinonaktifkan. Tap untuk mempelajari lebih lanjut."</string> + <string name="usb_contaminant_detected_message" msgid="832337061059487250">"Port USB otomatis dinonaktifkan. Ketuk untuk mempelajari lebih lanjut."</string> <string name="usb_contaminant_not_detected_title" msgid="7708281124088684821">"Boleh menggunakan port USB"</string> <string name="usb_contaminant_not_detected_message" msgid="2415791798244545292">"Ponsel tidak lagi mendeteksi adanya cairan atau kotoran."</string> <string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Mengambil laporan bug…"</string> @@ -1370,24 +1372,24 @@ <string name="show_ime" msgid="2506087537466597099">"Pertahankan di layar jika keyboard fisik masih aktif"</string> <string name="hardware" msgid="194658061510127999">"Tampilkan keyboard virtual"</string> <string name="select_keyboard_layout_notification_title" msgid="597189518763083494">"Mengonfigurasi keyboard fisik"</string> - <string name="select_keyboard_layout_notification_message" msgid="8084622969903004900">"Tap untuk memilih bahasa dan tata letak"</string> + <string name="select_keyboard_layout_notification_message" msgid="8084622969903004900">"Ketuk untuk memilih bahasa dan tata letak"</string> <string name="fast_scroll_alphabet" msgid="5433275485499039199">" ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string> <string name="fast_scroll_numeric_alphabet" msgid="4030170524595123610">" 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string> <string name="alert_windows_notification_channel_group_name" msgid="1463953341148606396">"Tampilkan di atas apl lain"</string> <string name="alert_windows_notification_channel_name" msgid="3116610965549449803">"<xliff:g id="NAME">%s</xliff:g> ditampilkan di atas aplikasi lain"</string> <string name="alert_windows_notification_title" msgid="3697657294867638947">"<xliff:g id="NAME">%s</xliff:g> ditampilkan di atas aplikasi lain"</string> - <string name="alert_windows_notification_message" msgid="8917232109522912560">"Jika Anda tidak ingin <xliff:g id="NAME">%s</xliff:g> menggunakan fitur ini, tap untuk membuka setelan dan menonaktifkannya."</string> + <string name="alert_windows_notification_message" msgid="8917232109522912560">"Jika Anda tidak ingin <xliff:g id="NAME">%s</xliff:g> menggunakan fitur ini, ketuk untuk membuka setelan dan menonaktifkannya."</string> <string name="alert_windows_notification_turn_off_action" msgid="2902891971380544651">"Nonaktifkan"</string> <string name="ext_media_checking_notification_title" msgid="4411133692439308924">"Memeriksa <xliff:g id="NAME">%s</xliff:g>…"</string> <string name="ext_media_checking_notification_message" msgid="410185170877285434">"Meninjau konten saat ini"</string> <string name="ext_media_new_notification_title" msgid="1621805083736634077">"<xliff:g id="NAME">%s</xliff:g> baru"</string> - <string name="ext_media_new_notification_message" msgid="3673685270558405087">"Tap untuk menyiapkan"</string> + <string name="ext_media_new_notification_message" msgid="3673685270558405087">"Ketuk untuk menyiapkan"</string> <string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Untuk mentransfer foto dan media"</string> <string name="ext_media_unmountable_notification_title" msgid="4179418065210797130">"Masalah pada <xliff:g id="NAME">%s</xliff:g>"</string> - <string name="ext_media_unmountable_notification_message" msgid="4193858924381066522">"Tap untuk memperbaiki"</string> + <string name="ext_media_unmountable_notification_message" msgid="4193858924381066522">"Ketuk untuk memperbaiki"</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3941179940297874950">"<xliff:g id="NAME">%s</xliff:g> rusak. Pilih untuk memperbaikinya."</string> <string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"<xliff:g id="NAME">%s</xliff:g> tidak didukung"</string> - <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"Perangkat tidak mendukung <xliff:g id="NAME">%s</xliff:g> ini. Tap untuk menyiapkan dalam format yang didukung."</string> + <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"Perangkat tidak mendukung <xliff:g id="NAME">%s</xliff:g> ini. Ketuk untuk menyiapkan dalam format yang didukung."</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="3725436899820390906">"Perangkat ini tidak mendukung <xliff:g id="NAME">%s</xliff:g> ini. Pilih untuk menyiapkan dalam format yang didukung."</string> <string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> tiba-tiba dicabut"</string> <string name="ext_media_badremoval_notification_message" msgid="8556885808951260574">"Keluarkan media sebelum mencabut agar konten tidak hilang"</string> @@ -1429,7 +1431,7 @@ <string name="permdesc_requestDeletePackages" msgid="3406172963097595270">"Mengizinkan aplikasi meminta penghapusan paket."</string> <string name="permlab_requestIgnoreBatteryOptimizations" msgid="8021256345643918264">"meminta mengabaikan pengoptimalan baterai"</string> <string name="permdesc_requestIgnoreBatteryOptimizations" msgid="8359147856007447638">"Mengizinkan aplikasi meminta izin untuk mengabaikan pengoptimalan baterai bagi aplikasi tersebut."</string> - <string name="tutorial_double_tap_to_zoom_message_short" msgid="1311810005957319690">"Tap dua kali untuk kontrol perbesar/perkecil"</string> + <string name="tutorial_double_tap_to_zoom_message_short" msgid="1311810005957319690">"Ketuk dua kali untuk kontrol perbesar/perkecil"</string> <string name="gadget_host_error_inflating" msgid="4882004314906466162">"Tidak dapat menambahkan widget."</string> <string name="ime_action_go" msgid="8320845651737369027">"Buka"</string> <string name="ime_action_search" msgid="658110271822807811">"Telusuri"</string> @@ -1460,8 +1462,8 @@ <string name="notification_ranker_binding_label" msgid="774540592299064747">"Layanan penentu peringkat notifikasi"</string> <string name="vpn_title" msgid="19615213552042827">"VPN diaktifkan"</string> <string name="vpn_title_long" msgid="6400714798049252294">"VPN diaktifkan oleh <xliff:g id="APP">%s</xliff:g>"</string> - <string name="vpn_text" msgid="1610714069627824309">"Tap untuk mengelola jaringan."</string> - <string name="vpn_text_long" msgid="4907843483284977618">"Tersambung ke <xliff:g id="SESSION">%s</xliff:g>. Tap untuk mengelola jaringan."</string> + <string name="vpn_text" msgid="1610714069627824309">"Ketuk untuk mengelola jaringan."</string> + <string name="vpn_text_long" msgid="4907843483284977618">"Tersambung ke <xliff:g id="SESSION">%s</xliff:g>. Ketuk untuk mengelola jaringan."</string> <string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Menyambungkan VPN selalu aktif..."</string> <string name="vpn_lockdown_connected" msgid="8202679674819213931">"VPN selalu aktif tersambung"</string> <string name="vpn_lockdown_disconnected" msgid="735805531187559719">"Terputus dari VPN yang selalu aktif"</string> @@ -1472,9 +1474,9 @@ <string name="reset" msgid="2448168080964209908">"Setel ulang"</string> <string name="submit" msgid="1602335572089911941">"Kirim"</string> <string name="car_mode_disable_notification_title" msgid="5704265646471239078">"Aplikasi mengemudi sedang berjalan"</string> - <string name="car_mode_disable_notification_message" msgid="7647248420931129377">"Tap untuk keluar dari aplikasi mengemudi."</string> + <string name="car_mode_disable_notification_message" msgid="7647248420931129377">"Ketuk untuk keluar dari aplikasi mengemudi."</string> <string name="tethered_notification_title" msgid="3146694234398202601">"Tethering (Penambatan) atau hotspot aktif"</string> - <string name="tethered_notification_message" msgid="2113628520792055377">"Tap untuk menyiapkan."</string> + <string name="tethered_notification_message" msgid="2113628520792055377">"Ketuk untuk menyiapkan."</string> <string name="disable_tether_notification_title" msgid="7526977944111313195">"Tethering dinonaktifkan"</string> <string name="disable_tether_notification_message" msgid="2913366428516852495">"Hubungi admin untuk mengetahui detailnya"</string> <string name="back_button_label" msgid="2300470004503343439">"Kembali"</string> @@ -1505,10 +1507,10 @@ <string name="sync_do_nothing" msgid="3743764740430821845">"Jangan lakukan apa pun untuk saat ini"</string> <string name="choose_account_label" msgid="5655203089746423927">"Pilih akun"</string> <string name="add_account_label" msgid="2935267344849993553">"Tambahkan akun"</string> - <string name="add_account_button_label" msgid="3611982894853435874">"Tambah akun"</string> + <string name="add_account_button_label" msgid="3611982894853435874">"Tambahkan akun"</string> <string name="number_picker_increment_button" msgid="2412072272832284313">"Tambah"</string> <string name="number_picker_decrement_button" msgid="476050778386779067">"Kurangi"</string> - <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"<xliff:g id="VALUE">%s</xliff:g> sentuh & tahan."</string> + <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"<xliff:g id="VALUE">%s</xliff:g> sentuh lama."</string> <string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Geser ke atas untuk menambah dan ke bawah untuk mengurangi."</string> <string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Tambah menit"</string> <string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Kurangi menit"</string> @@ -1535,7 +1537,7 @@ <string name="activitychooserview_choose_application_error" msgid="8624618365481126668">"Tidak dapat meluncurkan <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string> <string name="shareactionprovider_share_with" msgid="806688056141131819">"Berbagi dengan"</string> <string name="shareactionprovider_share_with_application" msgid="5627411384638389738">"Berbagi dengan <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string> - <string name="content_description_sliding_handle" msgid="415975056159262248">"Gagang geser. Sentuh & tahan."</string> + <string name="content_description_sliding_handle" msgid="415975056159262248">"Gagang geser. Sentuh lama."</string> <string name="description_target_unlock_tablet" msgid="3833195335629795055">"Geser untuk membuka kunci."</string> <string name="action_bar_home_description" msgid="5293600496601490216">"Navigasi ke beranda"</string> <string name="action_bar_up_description" msgid="2237496562952152589">"Navigasi naik"</string> @@ -1558,7 +1560,7 @@ <string name="data_usage_wifi_limit_snoozed_title" msgid="3547771791046344188">"Melebihi batas kuota Wi-Fi Anda"</string> <string name="data_usage_limit_snoozed_body" msgid="1671222777207603301">"Anda telah menggunakan <xliff:g id="SIZE">%s</xliff:g> melebihi batas yang ditetapkan"</string> <string name="data_usage_restricted_title" msgid="5965157361036321914">"Data latar belakang dibatasi"</string> - <string name="data_usage_restricted_body" msgid="469866376337242726">"Tap untuk menghapus batasan."</string> + <string name="data_usage_restricted_body" msgid="469866376337242726">"Ketuk untuk menghapus batasan."</string> <string name="data_usage_rapid_title" msgid="1809795402975261331">"Penggunaan kuota yang tinggi"</string> <string name="data_usage_rapid_body" msgid="6897825788682442715">"Aplikasi Anda menggunakan lebih banyak kuota daripada biasanya"</string> <string name="data_usage_rapid_app_body" msgid="5396680996784142544">"<xliff:g id="APP">%s</xliff:g> menggunakan lebih banyak kuota daripada biasanya"</string> @@ -1583,6 +1585,7 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"Luncurkan Browser?"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"Terima panggilan?"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"Selalu"</string> + <string name="activity_resolver_set_always" msgid="1422574191056490585">"Setel untuk selalu membuka"</string> <string name="activity_resolver_use_once" msgid="2404644797149173758">"Hanya sekali"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"Setelan"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"%1$s tidak mendukung profil kerja"</string> @@ -1612,8 +1615,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"Hamparan #<xliff:g id="ID">%1$d</xliff:g>"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g>x<xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", aman"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"Aktivitas latar belakang yang dimulai dari <xliff:g id="PACKAGENAME">%1$s</xliff:g> akan diblokir di build Q di masa mendatang. Lihat g.co/dev/bgblock."</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"Aktivitas latar belakang yang dimulai dari <xliff:g id="PACKAGENAME">%1$s</xliff:g> diblokir. Lihat g.co/dev/bgblock."</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Lupa Pola?"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"Pola Salah"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"Sandi Salah"</string> @@ -1667,12 +1668,12 @@ <string name="accessibility_shortcut_enabling_service" msgid="7771852911861522636">"Pintasan Aksesibilitas mengaktifkan <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> <string name="accessibility_shortcut_disabling_service" msgid="2747243438223109821">"Pintasan Aksesibilitas menonaktifkan <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> <string name="accessibility_shortcut_spoken_feedback" msgid="8376923232350078434">"Tekan dan tahan kedua tombol volume selama tiga detik untuk menggunakan <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> - <string name="accessibility_button_prompt_text" msgid="1176658502969738564">"Pilih layanan yang akan digunakan saat menge-tap tombol aksesibilitas:"</string> + <string name="accessibility_button_prompt_text" msgid="1176658502969738564">"Pilih layanan yang akan digunakan saat mengetuk tombol aksesibilitas:"</string> <string name="accessibility_gesture_prompt_text" msgid="8259145549733019401">"Pilih layanan yang akan digunakan dengan gestur aksesibilitas (geser ke atas dari bawah layar dengan dua jari):"</string> <string name="accessibility_gesture_3finger_prompt_text" msgid="1041435574275047665">"Pilih layanan yang akan digunakan dengan gestur aksesibilitas (geser ke atas dari bawah layar dengan tiga jari):"</string> - <string name="accessibility_button_instructional_text" msgid="7003212763213614833">"Sentuh & tahan tombol aksesibilitas untuk beralih di antara layanan."</string> - <string name="accessibility_gesture_instructional_text" msgid="5261788874937410950">"Geser dengan dua jari dan tahan untuk beralih di antara layanan."</string> - <string name="accessibility_gesture_3finger_instructional_text" msgid="4969448938984394550">"Geser ke atas dengan tiga jari dan tahan untuk beralih di antara layanan."</string> + <string name="accessibility_button_instructional_text" msgid="7003212763213614833">"Sentuh lama tombol aksesibilitas untuk beralih layanan."</string> + <string name="accessibility_gesture_instructional_text" msgid="5261788874937410950">"Geser dengan dua jari dan tahan untuk beralih layanan."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="4969448938984394550">"Geser ke atas dengan tiga jari dan tahan untuk beralih layanan."</string> <string name="accessibility_magnification_chooser_text" msgid="1227146738764986237">"Pembesaran"</string> <string name="user_switched" msgid="3768006783166984410">"Pengguna saat ini <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="2871009331809089783">"Beralih ke <xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -1770,7 +1771,7 @@ <string name="reason_unknown" msgid="6048913880184628119">"tak diketahui"</string> <string name="reason_service_unavailable" msgid="7824008732243903268">"Layanan cetak tidak diaktifkan"</string> <string name="print_service_installed_title" msgid="2246317169444081628">"Layanan <xliff:g id="NAME">%s</xliff:g> telah terpasang"</string> - <string name="print_service_installed_message" msgid="5897362931070459152">"Tap untuk mengaktifkan"</string> + <string name="print_service_installed_message" msgid="5897362931070459152">"Ketuk untuk mengaktifkan"</string> <string name="restr_pin_enter_admin_pin" msgid="8641662909467236832">"Masukkan PIN admin"</string> <string name="restr_pin_enter_pin" msgid="3395953421368476103">"Masukkan PIN"</string> <string name="restr_pin_incorrect" msgid="8571512003955077924">"Tidak benar"</string> @@ -1808,7 +1809,7 @@ <string name="confirm_battery_saver" msgid="639106420541753635">"Oke"</string> <string name="battery_saver_description_with_learn_more" msgid="2108984221113106294">"Penghemat Baterai menonaktifkan atau membatasi aktivitas di latar belakang, beberapa efek visual & fitur lain yang menggunakan banyak daya untuk memperpanjang masa pakai baterai. "<annotation id="url">"Pelajari Lebih Lanjut"</annotation></string> <string name="battery_saver_description" msgid="6413346684861241431">"Penghemat Baterai menonaktifkan atau membatasi aktivitas di latar belakang, beberapa efek visual & fitur lain yang menggunakan banyak daya untuk memperpanjang masa pakai baterai."</string> - <string name="data_saver_description" msgid="6015391409098303235">"Untuk membantu mengurangi penggunaan kuota, Penghemat Kuota Internet mencegah beberapa aplikasi mengirim atau menerima data di latar belakang. Aplikasi yang sedang digunakan dapat mengakses data, tetapi frekuensinya agak lebih jarang. Misalnya saja, gambar hanya akan ditampilkan setelah di-tap."</string> + <string name="data_saver_description" msgid="6015391409098303235">"Untuk membantu mengurangi penggunaan kuota, Penghemat Kuota Internet mencegah beberapa aplikasi mengirim atau menerima data di latar belakang. Aplikasi yang sedang digunakan dapat mengakses data, tetapi frekuensinya agak lebih jarang. Misalnya saja, gambar hanya akan ditampilkan setelah diketuk."</string> <string name="data_saver_enable_title" msgid="4674073932722787417">"Aktifkan Penghemat Kuota?"</string> <string name="data_saver_enable_button" msgid="7147735965247211818">"Aktifkan"</string> <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848"> @@ -1905,11 +1906,11 @@ <string name="deprecated_target_sdk_app_store" msgid="5032340500368495077">"Periksa apakah ada update"</string> <string name="new_sms_notification_title" msgid="8442817549127555977">"Ada pesan baru"</string> <string name="new_sms_notification_content" msgid="7002938807812083463">"Buka aplikasi SMS untuk melihat"</string> - <string name="profile_encrypted_title" msgid="4260432497586829134">"Beberapa fungsi mungkin terbatas"</string> + <string name="profile_encrypted_title" msgid="4260432497586829134">"Beberapa fitur tidak dapat digunakan"</string> <string name="profile_encrypted_detail" msgid="3700965619978314974">"Profil kerja terkunci"</string> - <string name="profile_encrypted_message" msgid="6964994232310195874">"Tap untuk membuka kunci profil kerja"</string> + <string name="profile_encrypted_message" msgid="6964994232310195874">"Ketuk untuk membuka kunci profil kerja"</string> <string name="usb_mtp_launch_notification_title" msgid="8359219638312208932">"Tersambung ke <xliff:g id="PRODUCT_NAME">%1$s</xliff:g>"</string> - <string name="usb_mtp_launch_notification_description" msgid="8541876176425411358">"Tap untuk melihat file"</string> + <string name="usb_mtp_launch_notification_description" msgid="8541876176425411358">"Ketuk untuk melihat file"</string> <string name="app_info" msgid="6856026610594615344">"Info aplikasi"</string> <string name="negative_duration" msgid="5688706061127375131">"−<xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="demo_starting_message" msgid="5268556852031489931">"Memulai demo..."</string> @@ -1989,9 +1990,9 @@ <string name="notification_channel_system_changes" msgid="5072715579030948646">"Perubahan sistem"</string> <string name="notification_channel_do_not_disturb" msgid="6766940333105743037">"Jangan Ganggu"</string> <string name="zen_upgrade_notification_visd_title" msgid="3288313883409759733">"Baru: Mode Jangan Ganggu menyembunyikan notifikasi"</string> - <string name="zen_upgrade_notification_visd_content" msgid="5533674060311631165">"Tap untuk mempelajari lebih lanjut dan mengubah."</string> + <string name="zen_upgrade_notification_visd_content" msgid="5533674060311631165">"Ketuk untuk mempelajari lebih lanjut dan mengubah."</string> <string name="zen_upgrade_notification_title" msgid="3799603322910377294">"Jangan Ganggu telah berubah"</string> - <string name="zen_upgrade_notification_content" msgid="1794994264692424562">"Tap untuk memeriksa item yang diblokir."</string> + <string name="zen_upgrade_notification_content" msgid="1794994264692424562">"Ketuk untuk memeriksa item yang diblokir."</string> <string name="notification_app_name_system" msgid="4205032194610042794">"Sistem"</string> <string name="notification_app_name_settings" msgid="7751445616365753381">"Setelan"</string> <string name="notification_appops_camera_active" msgid="5050283058419699771">"Kamera"</string> diff --git a/core/res/res/values-is/strings.xml b/core/res/res/values-is/strings.xml index f45bf7ce4879..956c052e427d 100644 --- a/core/res/res/values-is/strings.xml +++ b/core/res/res/values-is/strings.xml @@ -1130,8 +1130,10 @@ <string name="whichViewApplication" msgid="3272778576700572102">"Opna með"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"Opna með %1$s"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"Opna"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"Veita aðgang til að opna <xliff:g id="HOST">%1$s</xliff:g> tengla með"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"Veita aðgang til að opna <xliff:g id="HOST">%1$s</xliff:g> tengla með <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> + <string name="whichOpenHostLinksWith" msgid="3788174881117226583">"Opna <xliff:g id="HOST">%1$s</xliff:g> tengla með"</string> + <string name="whichOpenLinksWith" msgid="6392123355599572804">"Opna tengla með"</string> + <string name="whichOpenLinksWithApp" msgid="8225991685366651614">"Opna tengla með <xliff:g id="APPLICATION">%1$s</xliff:g>"</string> + <string name="whichOpenHostLinksWithApp" msgid="3464470639011045589">"Opna <xliff:g id="HOST">%1$s</xliff:g> tengla með <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"Veita aðgang"</string> <string name="whichEditApplication" msgid="144727838241402655">"Breyta með"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"Breyta með %1$s"</string> @@ -1584,6 +1586,7 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"Opna vafra?"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"Samþykkja símtal?"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"Alltaf"</string> + <string name="activity_resolver_set_always" msgid="1422574191056490585">"Stilla á „Alltaf opið“"</string> <string name="activity_resolver_use_once" msgid="2404644797149173758">"Bara einu sinni"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"Stillingar"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"%1$s styður ekki vinnusnið"</string> @@ -1613,8 +1616,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"Yfirlögn #<xliff:g id="ID">%1$d</xliff:g>"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g>x<xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", öruggur"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"Framvegis verður lokað á þessa bakgrunnsvirkni frá <xliff:g id="PACKAGENAME">%1$s</xliff:g> í Q-smíði. Sjá g.co/dev/bgblock."</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"Lokað á bakgrunnsvirkni frá <xliff:g id="PACKAGENAME">%1$s</xliff:g>. Sjá g.co/dev/bgblock."</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Man ekki mynstrið"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"Rangt mynstur"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"Rangt aðgangsorð"</string> diff --git a/core/res/res/values-it/strings.xml b/core/res/res/values-it/strings.xml index a2eef473f6a9..7c6851a0dccb 100644 --- a/core/res/res/values-it/strings.xml +++ b/core/res/res/values-it/strings.xml @@ -1130,8 +1130,10 @@ <string name="whichViewApplication" msgid="3272778576700572102">"Apri con"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"Apri con %1$s"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"Apri"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"Dai l\'accesso per aprire i link di <xliff:g id="HOST">%1$s</xliff:g> con"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"Dai l\'accesso per aprire i link di <xliff:g id="HOST">%1$s</xliff:g> con <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> + <string name="whichOpenHostLinksWith" msgid="3788174881117226583">"Apri i link <xliff:g id="HOST">%1$s</xliff:g> con"</string> + <string name="whichOpenLinksWith" msgid="6392123355599572804">"Apri i link con"</string> + <string name="whichOpenLinksWithApp" msgid="8225991685366651614">"Apri i link con <xliff:g id="APPLICATION">%1$s</xliff:g>"</string> + <string name="whichOpenHostLinksWithApp" msgid="3464470639011045589">"Apri i link <xliff:g id="HOST">%1$s</xliff:g> con <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"Fornisci accesso"</string> <string name="whichEditApplication" msgid="144727838241402655">"Modifica con"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"Modifica con %1$s"</string> @@ -1583,6 +1585,7 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"Avviare l\'applicazione Browser?"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"Accettare la chiamata?"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"Sempre"</string> + <string name="activity_resolver_set_always" msgid="1422574191056490585">"Imposta per aprire sempre"</string> <string name="activity_resolver_use_once" msgid="2404644797149173758">"Solo una volta"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"Impostazioni"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"%1$s non supporta il profilo di lavoro"</string> @@ -1612,8 +1615,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"Overlay n. <xliff:g id="ID">%1$d</xliff:g>"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g> x <xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", opzione sicura"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"L\'avvio di questa attività in background da <xliff:g id="PACKAGENAME">%1$s</xliff:g> verrà bloccato nelle future build Q. Visita la pagina g.co/dev/bgblock."</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"Avvio delle attività in background da <xliff:g id="PACKAGENAME">%1$s</xliff:g> bloccato. Visita la pagina g.co/dev/bgblock."</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Sequenza dimenticata"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"Sequenza sbagliata"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"Password sbagliata"</string> @@ -1905,7 +1906,7 @@ <string name="deprecated_target_sdk_app_store" msgid="5032340500368495077">"Verifica la presenza di aggiornamenti"</string> <string name="new_sms_notification_title" msgid="8442817549127555977">"Hai nuovi messaggi"</string> <string name="new_sms_notification_content" msgid="7002938807812083463">"Apri l\'app SMS per la visualizzazione"</string> - <string name="profile_encrypted_title" msgid="4260432497586829134">"Funzionalità potenzialmente limitate"</string> + <string name="profile_encrypted_title" msgid="4260432497586829134">"Alcune funzionalità sono limitate"</string> <string name="profile_encrypted_detail" msgid="3700965619978314974">"Profilo di lavoro bloccato"</string> <string name="profile_encrypted_message" msgid="6964994232310195874">"Tocca per sbloc. prof. di lav."</string> <string name="usb_mtp_launch_notification_title" msgid="8359219638312208932">"Connesso a <xliff:g id="PRODUCT_NAME">%1$s</xliff:g>"</string> diff --git a/core/res/res/values-iw/strings.xml b/core/res/res/values-iw/strings.xml index 419eee8e21b2..8afd95a48357 100644 --- a/core/res/res/values-iw/strings.xml +++ b/core/res/res/values-iw/strings.xml @@ -133,8 +133,7 @@ <!-- no translation found for wfcSpnFormat_spn (4998685024207291232) --> <skip /> <string name="wfcSpnFormat_spn_wifi_calling" msgid="136001023263502280">"שיחות Wi-Fi <xliff:g id="SPN">%s</xliff:g>"</string> - <!-- no translation found for wfcSpnFormat_spn_wifi_calling_vo_hyphen (1730997175789582756) --> - <skip /> + <string name="wfcSpnFormat_spn_wifi_calling_vo_hyphen" msgid="1730997175789582756">"שיחות Wi-Fi באמצעות <xliff:g id="SPN">%s</xliff:g>"</string> <string name="wfcSpnFormat_wlan_call" msgid="2533371081782489793">"שיחה ברשת אלחוטית"</string> <string name="wfcSpnFormat_spn_wlan_call" msgid="2315240198303197168">"שיחת WLAN <xliff:g id="SPN">%s</xliff:g>"</string> <string name="wfcSpnFormat_spn_wifi" msgid="6546481665561961938">"Wi-Fi <xliff:g id="SPN">%s</xliff:g>"</string> @@ -1171,8 +1170,10 @@ <string name="whichViewApplication" msgid="3272778576700572102">"פתח באמצעות"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"פתח באמצעות %1$s"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"פתח"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"הענקת גישה לפתיחת קישורים של <xliff:g id="HOST">%1$s</xliff:g> באמצעות"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"הענקת גישה לפתיחת קישורים של <xliff:g id="HOST">%1$s</xliff:g> באמצעות <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> + <string name="whichOpenHostLinksWith" msgid="3788174881117226583">"פתיחת קישורים של <xliff:g id="HOST">%1$s</xliff:g> באמצעות"</string> + <string name="whichOpenLinksWith" msgid="6392123355599572804">"פתיחת קישורים באמצעות"</string> + <string name="whichOpenLinksWithApp" msgid="8225991685366651614">"פתיחת קישורים באמצעות <xliff:g id="APPLICATION">%1$s</xliff:g>"</string> + <string name="whichOpenHostLinksWithApp" msgid="3464470639011045589">"פתיחת קישורים של <xliff:g id="HOST">%1$s</xliff:g> באמצעות <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"הענקת גישה"</string> <string name="whichEditApplication" msgid="144727838241402655">"ערוך באמצעות"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"ערוך באמצעות %1$s"</string> @@ -1630,6 +1631,7 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"להפעיל את הדפדפן?"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"האם לקבל את השיחה?"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"תמיד"</string> + <string name="activity_resolver_set_always" msgid="1422574191056490585">"הגדרה כברירת מחדל לפתיחה"</string> <string name="activity_resolver_use_once" msgid="2404644797149173758">"רק פעם אחת"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"הגדרות"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"%1$s אינו תומך בפרופיל עבודה"</string> @@ -1659,8 +1661,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"שכבת-על #<xliff:g id="ID">%1$d</xliff:g>"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g>x<xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", מאובטח"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"התחלה זו של פעילות ברקע מ-<xliff:g id="PACKAGENAME">%1$s</xliff:g> תיחסם בגרסאות build עתידיות של Q. ניתן לעיין בכתובת g.co/dev/bgblock."</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"נחסמה התחלה של פעילות ברקע מ-<xliff:g id="PACKAGENAME">%1$s</xliff:g>. ניתן לעיין בכתובת g.co/dev/bgblock."</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"שכחת את קו ביטול הנעילה?"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"קו ביטול נעילה שגוי"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"סיסמה שגויה"</string> @@ -1716,18 +1716,12 @@ <string name="accessibility_shortcut_enabling_service" msgid="7771852911861522636">"<xliff:g id="SERVICE_NAME">%1$s</xliff:g> הופעל על-ידי קיצור הדרך לנגישות"</string> <string name="accessibility_shortcut_disabling_service" msgid="2747243438223109821">"<xliff:g id="SERVICE_NAME">%1$s</xliff:g> הושבת על-ידי קיצור הדרך לנגישות"</string> <string name="accessibility_shortcut_spoken_feedback" msgid="8376923232350078434">"יש ללחוץ לחיצה ארוכה על שני לחצני עוצמת הקול למשך שלוש שניות כדי להשתמש בשירות <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for accessibility_button_prompt_text (1176658502969738564) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8259145549733019401) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (1041435574275047665) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (7003212763213614833) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (5261788874937410950) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (4969448938984394550) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="1176658502969738564">"יש לבחור שירות שיופעל באמצעות הקשה על לחצן הנגישות:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8259145549733019401">"יש לבחור שירות שיופעל באמצעות תנועת הנגישות (החלקה למעלה מתחתית המסך בעזרת שתי אצבעות):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="1041435574275047665">"יש לבחור שירות שיופעל באמצעות תנועת הנגישות (החלקה למעלה מתחתית המסך בעזרת שלוש אצבעות):"</string> + <string name="accessibility_button_instructional_text" msgid="7003212763213614833">"כדי לעבור בין שירותים, יש ללחוץ לחיצה ארוכה על לחצן הנגישות."</string> + <string name="accessibility_gesture_instructional_text" msgid="5261788874937410950">"כדי לעבור בין שירותים, יש להחליק כלפי מעלה בעזרת שתי אצבעות ולהחזיק."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="4969448938984394550">"כדי לעבור בין שירותים, יש להחליק כלפי מעלה בעזרת שלוש אצבעות ולהחזיק."</string> <string name="accessibility_magnification_chooser_text" msgid="1227146738764986237">"הגדלה"</string> <string name="user_switched" msgid="3768006783166984410">"המשתמש הנוכחי <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="2871009331809089783">"עובר אל <xliff:g id="NAME">%1$s</xliff:g>…"</string> diff --git a/core/res/res/values-ja/strings.xml b/core/res/res/values-ja/strings.xml index 9012fe469c72..af6f3c666c9b 100644 --- a/core/res/res/values-ja/strings.xml +++ b/core/res/res/values-ja/strings.xml @@ -131,8 +131,7 @@ <!-- no translation found for wfcSpnFormat_spn (4998685024207291232) --> <skip /> <string name="wfcSpnFormat_spn_wifi_calling" msgid="136001023263502280">"<xliff:g id="SPN">%s</xliff:g> Wi-Fi 通話"</string> - <!-- no translation found for wfcSpnFormat_spn_wifi_calling_vo_hyphen (1730997175789582756) --> - <skip /> + <string name="wfcSpnFormat_spn_wifi_calling_vo_hyphen" msgid="1730997175789582756">"<xliff:g id="SPN">%s</xliff:g> Wi-Fi 通話"</string> <string name="wfcSpnFormat_wlan_call" msgid="2533371081782489793">"WLAN 通話"</string> <string name="wfcSpnFormat_spn_wlan_call" msgid="2315240198303197168">"<xliff:g id="SPN">%s</xliff:g> WLAN 通話"</string> <string name="wfcSpnFormat_spn_wifi" msgid="6546481665561961938">"<xliff:g id="SPN">%s</xliff:g> Wi-Fi"</string> @@ -267,14 +266,14 @@ <string name="notification_channel_alerts" msgid="4496839309318519037">"通知"</string> <string name="notification_channel_retail_mode" msgid="6088920674914038779">"販売店デモ"</string> <string name="notification_channel_usb" msgid="9006850475328924681">"USB 接続"</string> - <string name="notification_channel_heavy_weight_app" msgid="6218742927792852607">"アプリを実行しています"</string> - <string name="notification_channel_foreground_service" msgid="3931987440602669158">"アプリが電池を消費しています"</string> + <string name="notification_channel_heavy_weight_app" msgid="6218742927792852607">"実行中のアプリ"</string> + <string name="notification_channel_foreground_service" msgid="3931987440602669158">"電池を消費しているアプリ"</string> <string name="foreground_service_app_in_background" msgid="1060198778219731292">"「<xliff:g id="APP_NAME">%1$s</xliff:g>」が電池を使用しています"</string> <string name="foreground_service_apps_in_background" msgid="7175032677643332242">"<xliff:g id="NUMBER">%1$d</xliff:g> 個のアプリが電池を使用しています"</string> <string name="foreground_service_tap_for_details" msgid="372046743534354644">"タップして電池やデータの使用量を確認"</string> <string name="foreground_service_multiple_separator" msgid="4021901567939866542">"<xliff:g id="LEFT_SIDE">%1$s</xliff:g>、<xliff:g id="RIGHT_SIDE">%2$s</xliff:g>"</string> <string name="safeMode" msgid="2788228061547930246">"セーフモード"</string> - <string name="android_system_label" msgid="6577375335728551336">"Androidシステム"</string> + <string name="android_system_label" msgid="6577375335728551336">"Android システム"</string> <string name="user_owner_label" msgid="8836124313744349203">"個人用プロファイルに切り替える"</string> <string name="managed_profile_label" msgid="8947929265267690522">"仕事用プロファイルに切り替える"</string> <string name="permgrouplab_contacts" msgid="3657758145679177612">"連絡先"</string> @@ -1131,8 +1130,10 @@ <string name="whichViewApplication" msgid="3272778576700572102">"アプリで開く"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"%1$sで開く"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"開く"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"<xliff:g id="HOST">%1$s</xliff:g> のリンクを開くには、アクセス権を付与してください"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"<xliff:g id="APPLICATION">%2$s</xliff:g> で <xliff:g id="HOST">%1$s</xliff:g> のリンクを開くには、アクセス権を付与してください"</string> + <string name="whichOpenHostLinksWith" msgid="3788174881117226583">"<xliff:g id="HOST">%1$s</xliff:g> のリンクを開くブラウザ / アプリの選択"</string> + <string name="whichOpenLinksWith" msgid="6392123355599572804">"リンクを開くブラウザの選択"</string> + <string name="whichOpenLinksWithApp" msgid="8225991685366651614">"<xliff:g id="APPLICATION">%1$s</xliff:g> でリンクを開く"</string> + <string name="whichOpenHostLinksWithApp" msgid="3464470639011045589">"<xliff:g id="APPLICATION">%2$s</xliff:g> で <xliff:g id="HOST">%1$s</xliff:g> のリンクを開く"</string> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"アクセス権を付与"</string> <string name="whichEditApplication" msgid="144727838241402655">"編集に使用"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"%1$sで編集"</string> @@ -1584,6 +1585,7 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"ブラウザを起動しますか?"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"通話を受けますか?"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"常時"</string> + <string name="activity_resolver_set_always" msgid="1422574191056490585">"[常に開く] に設定"</string> <string name="activity_resolver_use_once" msgid="2404644797149173758">"1回のみ"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"設定"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"%1$sは仕事用プロファイルをサポートしていません"</string> @@ -1613,8 +1615,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"オーバーレイ第<xliff:g id="ID">%1$d</xliff:g>"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g>x<xliff:g id="HEIGHT">%3$d</xliff:g>、<xliff:g id="DPI">%4$d</xliff:g> dpi"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">"、セキュア"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"<xliff:g id="PACKAGENAME">%1$s</xliff:g> からのこのバックグラウンド アクティビティの開始は今後の Q ビルドではブロックされます。g.co/dev/bgblock をご覧ください。"</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"<xliff:g id="PACKAGENAME">%1$s</xliff:g> からのバックグラウンド アクティビティの開始がブロックされました。g.co/dev/bgblock をご覧ください。"</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"パターンを忘れた場合"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"パターンが正しくありません"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"パスワードが正しくありません"</string> @@ -1668,18 +1668,12 @@ <string name="accessibility_shortcut_enabling_service" msgid="7771852911861522636">"ユーザー補助機能のショートカットにより <xliff:g id="SERVICE_NAME">%1$s</xliff:g> は ON になっています"</string> <string name="accessibility_shortcut_disabling_service" msgid="2747243438223109821">"ユーザー補助機能のショートカットにより <xliff:g id="SERVICE_NAME">%1$s</xliff:g> は OFF になっています"</string> <string name="accessibility_shortcut_spoken_feedback" msgid="8376923232350078434">"<xliff:g id="SERVICE_NAME">%1$s</xliff:g> を使用するには、音量大と音量小の両方のボタンを 3 秒間長押ししてください"</string> - <!-- no translation found for accessibility_button_prompt_text (1176658502969738564) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8259145549733019401) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (1041435574275047665) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (7003212763213614833) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (5261788874937410950) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (4969448938984394550) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="1176658502969738564">"ユーザー補助機能ボタンをタップした場合に使用するサービスを選択してください。"</string> + <string name="accessibility_gesture_prompt_text" msgid="8259145549733019401">"ユーザー補助操作(2 本の指で画面の下から上にスワイプ)で使用するサービスを選択してください。"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="1041435574275047665">"ユーザー補助操作(3 本の指で画面の下から上にスワイプ)で使用するサービスを選択してください。"</string> + <string name="accessibility_button_instructional_text" msgid="7003212763213614833">"サービスを切り替えるには、ユーザー補助機能ボタンを長押しします。"</string> + <string name="accessibility_gesture_instructional_text" msgid="5261788874937410950">"サービスを切り替えるには、2 本の指で上にスワイプしたまま長押しします。"</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="4969448938984394550">"サービスを切り替えるには、3 本の指で上にスワイプしたまま長押しします。"</string> <string name="accessibility_magnification_chooser_text" msgid="1227146738764986237">"拡大"</string> <string name="user_switched" msgid="3768006783166984410">"現在のユーザーは<xliff:g id="NAME">%1$s</xliff:g>です。"</string> <string name="user_switching_message" msgid="2871009331809089783">"<xliff:g id="NAME">%1$s</xliff:g>に切り替えています…"</string> diff --git a/core/res/res/values-ka/strings.xml b/core/res/res/values-ka/strings.xml index 1c63b81b3e55..23fdad44864b 100644 --- a/core/res/res/values-ka/strings.xml +++ b/core/res/res/values-ka/strings.xml @@ -131,8 +131,7 @@ <!-- no translation found for wfcSpnFormat_spn (4998685024207291232) --> <skip /> <string name="wfcSpnFormat_spn_wifi_calling" msgid="136001023263502280">"<xliff:g id="SPN">%s</xliff:g> Wi-Fi დარეკვა"</string> - <!-- no translation found for wfcSpnFormat_spn_wifi_calling_vo_hyphen (1730997175789582756) --> - <skip /> + <string name="wfcSpnFormat_spn_wifi_calling_vo_hyphen" msgid="1730997175789582756">"<xliff:g id="SPN">%s</xliff:g> Wi-Fi დარეკვა"</string> <string name="wfcSpnFormat_wlan_call" msgid="2533371081782489793">"WLAN ზარი"</string> <string name="wfcSpnFormat_spn_wlan_call" msgid="2315240198303197168">"<xliff:g id="SPN">%s</xliff:g> WLAN ზარი"</string> <string name="wfcSpnFormat_spn_wifi" msgid="6546481665561961938">"<xliff:g id="SPN">%s</xliff:g> Wi-Fi"</string> @@ -1131,8 +1130,10 @@ <string name="whichViewApplication" msgid="3272778576700572102">"გახსნა აპით"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"%1$s-ით გახსნა"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"გახსნა"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"<xliff:g id="HOST">%1$s</xliff:g> ბმულების შემდეგი აპით გახსნის წვდომის მინიჭება:"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"<xliff:g id="HOST">%1$s</xliff:g> ბმულების <xliff:g id="APPLICATION">%2$s</xliff:g>-ით გახსნის წვდომის მინიჭება"</string> + <string name="whichOpenHostLinksWith" msgid="3788174881117226583">"<xliff:g id="HOST">%1$s</xliff:g> ბმულების გახსნა შემდეგით:"</string> + <string name="whichOpenLinksWith" msgid="6392123355599572804">"ბმულების გახსნა შემდეგით:"</string> + <string name="whichOpenLinksWithApp" msgid="8225991685366651614">"ბმულების გახსნა <xliff:g id="APPLICATION">%1$s</xliff:g>-ით"</string> + <string name="whichOpenHostLinksWithApp" msgid="3464470639011045589">"<xliff:g id="HOST">%1$s</xliff:g> ბმულების <xliff:g id="APPLICATION">%2$s</xliff:g>-ით გახსნა"</string> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"წვდომის მინიჭება"</string> <string name="whichEditApplication" msgid="144727838241402655">"რედაქტირება აპით:"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"რედაქტირება %1$s-ით"</string> @@ -1584,6 +1585,7 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"გსურთ ბრაუზერის გაშვება?"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"უპასუხებთ ზარს?"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"ყოველთვის"</string> + <string name="activity_resolver_set_always" msgid="1422574191056490585">"ყოველთვის გახსნის დაყენება"</string> <string name="activity_resolver_use_once" msgid="2404644797149173758">"მხოლოდ ერთხელ"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"პარამეტრები"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"%1$s მხარს არ უჭერს სამუშაო პროფილს"</string> @@ -1613,8 +1615,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"გადაფარვა #<xliff:g id="ID">%1$d</xliff:g>"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g>x<xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", დაცული"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"<xliff:g id="PACKAGENAME">%1$s</xliff:g>-დან ამ ფონური აქტივობის გაშვება დაიბლოკება Q-ის მომდევნო ანაწყობებში. იხილეთ g.co/dev/bgblock."</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"<xliff:g id="PACKAGENAME">%1$s</xliff:g>-დან ფონური აქტივობის გაშვება დაიბლოკა. იხილეთ g.co/dev/bgblock."</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"დაგავიწყდათ ნიმუში"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"არასწორი ნიმუში"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"არასწორი პაროლი"</string> diff --git a/core/res/res/values-kk/strings.xml b/core/res/res/values-kk/strings.xml index adcf77475373..9a6dc6baad9a 100644 --- a/core/res/res/values-kk/strings.xml +++ b/core/res/res/values-kk/strings.xml @@ -131,8 +131,7 @@ <!-- no translation found for wfcSpnFormat_spn (4998685024207291232) --> <skip /> <string name="wfcSpnFormat_spn_wifi_calling" msgid="136001023263502280">"<xliff:g id="SPN">%s</xliff:g> Wi-Fi қоңыраулары"</string> - <!-- no translation found for wfcSpnFormat_spn_wifi_calling_vo_hyphen (1730997175789582756) --> - <skip /> + <string name="wfcSpnFormat_spn_wifi_calling_vo_hyphen" msgid="1730997175789582756">"<xliff:g id="SPN">%s</xliff:g> Wi-Fi қоңырауы"</string> <string name="wfcSpnFormat_wlan_call" msgid="2533371081782489793">"WLAN қоңырауы"</string> <string name="wfcSpnFormat_spn_wlan_call" msgid="2315240198303197168">"<xliff:g id="SPN">%s</xliff:g> WLAN қоңырауы"</string> <string name="wfcSpnFormat_spn_wifi" msgid="6546481665561961938">"<xliff:g id="SPN">%s</xliff:g> Wi-Fi"</string> @@ -1131,8 +1130,10 @@ <string name="whichViewApplication" msgid="3272778576700572102">"Басқаша ашу"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"%1$s қолданбасымен ашу"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"Ашу"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"<xliff:g id="HOST">%1$s</xliff:g> сілтемелерін келесі қолданбамен ашу үшін рұқсат беру:"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"<xliff:g id="HOST">%1$s</xliff:g> сілтемелерін <xliff:g id="APPLICATION">%2$s</xliff:g> қолданбасымен ашу үшін рұқсат беру"</string> + <string name="whichOpenHostLinksWith" msgid="3788174881117226583">"<xliff:g id="HOST">%1$s</xliff:g> сілтемелерін келесімен ашу:"</string> + <string name="whichOpenLinksWith" msgid="6392123355599572804">"Сілтемелерді келесімен ашу:"</string> + <string name="whichOpenLinksWithApp" msgid="8225991685366651614">"Сілтемелерді <xliff:g id="APPLICATION">%1$s</xliff:g> браузерімен ашу"</string> + <string name="whichOpenHostLinksWithApp" msgid="3464470639011045589">"<xliff:g id="HOST">%1$s</xliff:g> сілтемелерін <xliff:g id="APPLICATION">%2$s</xliff:g> браузерімен ашу"</string> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"Рұқсат беру"</string> <string name="whichEditApplication" msgid="144727838241402655">"Келесімен өңдеу"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"%1$s көмегімен өңдеу"</string> @@ -1585,6 +1586,7 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"Браузер қосылсын ба?"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"Қоңырауды қабылдау?"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"Үнемі"</string> + <string name="activity_resolver_set_always" msgid="1422574191056490585">"Әрдайым ашық күйге орнату"</string> <string name="activity_resolver_use_once" msgid="2404644797149173758">"Бір рет қана"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"Параметрлер"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"%1$s жұмыс профилін қолдамайды"</string> @@ -1614,8 +1616,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"№<xliff:g id="ID">%1$d</xliff:g> қабаттама"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g>x<xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", қауіпсіз"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"Алдағы Q құрамаларында <xliff:g id="PACKAGENAME">%1$s</xliff:g> сайтындағы фондық әрекеттерге тыйым салынады. g.co/dev/bgblock бетін қараңыз."</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"<xliff:g id="PACKAGENAME">%1$s</xliff:g> сайтындағы фондық әрекеттерге тыйым салынған. g.co/dev/bgblock бетін қараңыз."</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Кескінді ұмытып қалу"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"Қате өрнек"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"Қате кілтсөз"</string> diff --git a/core/res/res/values-km/strings.xml b/core/res/res/values-km/strings.xml index 8b2011fe685b..1275e1418683 100644 --- a/core/res/res/values-km/strings.xml +++ b/core/res/res/values-km/strings.xml @@ -131,8 +131,7 @@ <!-- no translation found for wfcSpnFormat_spn (4998685024207291232) --> <skip /> <string name="wfcSpnFormat_spn_wifi_calling" msgid="136001023263502280">"<xliff:g id="SPN">%s</xliff:g> ការហៅតាម Wi-Fi"</string> - <!-- no translation found for wfcSpnFormat_spn_wifi_calling_vo_hyphen (1730997175789582756) --> - <skip /> + <string name="wfcSpnFormat_spn_wifi_calling_vo_hyphen" msgid="1730997175789582756">"<xliff:g id="SPN">%s</xliff:g> ការហៅតាម Wi-Fi"</string> <string name="wfcSpnFormat_wlan_call" msgid="2533371081782489793">"ការហៅតាម WLAN"</string> <string name="wfcSpnFormat_spn_wlan_call" msgid="2315240198303197168">"<xliff:g id="SPN">%s</xliff:g> ការហៅតាម WLAN"</string> <string name="wfcSpnFormat_spn_wifi" msgid="6546481665561961938">"<xliff:g id="SPN">%s</xliff:g> Wi-Fi"</string> @@ -568,13 +567,13 @@ <string name="face_acquired_too_right" msgid="3667075962661863218">"ផ្លាស់ទីទូរសព្ទទៅខាងឆ្វេង។"</string> <string name="face_acquired_too_left" msgid="3148242963894703424">"ផ្លាស់ទីទូរសព្ទទៅខាងស្ដាំ។"</string> <string name="face_acquired_poor_gaze" msgid="5606479370806754905">"សូមមើលឱ្យចំឧបករណ៍របស់អ្នកជាងមុន។"</string> - <string name="face_acquired_not_detected" msgid="4885504661626728809">"មើលមិនឃើញមុខងាររបស់អ្នកទេ។ សូមសម្លឹងមើលទូរសព្ទ។"</string> + <string name="face_acquired_not_detected" msgid="4885504661626728809">"មើលមិនឃើញមុខរបស់អ្នកទេ។ សូមសម្លឹងមើលទូរសព្ទ។"</string> <string name="face_acquired_too_much_motion" msgid="3149332171102108851">"មានចលនាខ្លាំងពេក។ សូមកាន់ទូរសព្ទឱ្យនឹង។"</string> <string name="face_acquired_recalibrate" msgid="8077949502893707539">"សូមស្កេនបញ្ចូលមុខរបស់អ្នកម្ដងទៀត។"</string> <string name="face_acquired_too_different" msgid="7663983770123789694">"មិនអាចសម្គាល់មុខបានទៀតទេ។ សូមព្យាយាមម្ដងទៀត។"</string> <string name="face_acquired_too_similar" msgid="1508776858407646460">"ស្រដៀងគ្នាពេក សូមផ្លាស់ប្ដូរកាយវិការរបស់អ្នក។"</string> - <string name="face_acquired_pan_too_extreme" msgid="4581629343077288178">"ងាកក្បាលរបស់អ្នកបន្តិចទៀត។"</string> - <string name="face_acquired_tilt_too_extreme" msgid="4019954263012496468">"ងាកក្បាលរបស់អ្នកបន្តិចទៀត។"</string> + <string name="face_acquired_pan_too_extreme" msgid="4581629343077288178">"ងាកក្បាលរបស់អ្នកតិចជាងមុនបន្តិច។"</string> + <string name="face_acquired_tilt_too_extreme" msgid="4019954263012496468">"ងាកក្បាលរបស់អ្នកតិចជាងមុនបន្តិច។"</string> <string name="face_acquired_roll_too_extreme" msgid="6312973147689664409">"ងាកក្បាលរបស់អ្នកបន្តិចទៀត។"</string> <string name="face_acquired_obscured" msgid="5357207702967893283">"យកអ្វីដែលបាំងមុខរបស់អ្នកចេញ។"</string> <string name="face_acquired_sensor_dirty" msgid="2535761002815565222">"សម្អាតឧបករណ៍ចាប់សញ្ញានៅគែមខាងលើនៃអេក្រង់។"</string> @@ -1072,7 +1071,7 @@ <string name="Midnight" msgid="5630806906897892201">"កណ្ដាលអធ្រាត្រ"</string> <string name="elapsed_time_short_format_mm_ss" msgid="4431555943828711473">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string> <string name="elapsed_time_short_format_h_mm_ss" msgid="1846071997616654124">"<xliff:g id="HOURS">%1$d</xliff:g>:<xliff:g id="MINUTES">%2$02d</xliff:g>:<xliff:g id="SECONDS">%3$02d</xliff:g>"</string> - <string name="selectAll" msgid="6876518925844129331">"ជ្រើសទាំងអស់"</string> + <string name="selectAll" msgid="6876518925844129331">"ជ្រើសរើសទាំងអស់"</string> <string name="cut" msgid="3092569408438626261">"កាត់"</string> <string name="copy" msgid="2681946229533511987">"ចម្លង"</string> <string name="failed_to_copy_to_clipboard" msgid="1833662432489814471">"មិនអាចចម្លងទៅអង្គចងចាំទេ"</string> @@ -1133,8 +1132,10 @@ <string name="whichViewApplication" msgid="3272778576700572102">"បើកជាមួយ"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"បើកជាមួយ %1$s"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"បើក"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"ផ្ដល់សិទ្ធិចូលប្រើ ដើម្បីបើកតំណ <xliff:g id="HOST">%1$s</xliff:g> តាមរយៈ"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"ផ្ដល់សិទ្ធិចូលប្រើ ដើម្បីបើកតំណ <xliff:g id="HOST">%1$s</xliff:g> តាមរយៈ <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> + <string name="whichOpenHostLinksWith" msgid="3788174881117226583">"បើកតំណ <xliff:g id="HOST">%1$s</xliff:g> ជាមួយ"</string> + <string name="whichOpenLinksWith" msgid="6392123355599572804">"បើកតំណជាមួយ"</string> + <string name="whichOpenLinksWithApp" msgid="8225991685366651614">"បើកតំណជាមួយ <xliff:g id="APPLICATION">%1$s</xliff:g>"</string> + <string name="whichOpenHostLinksWithApp" msgid="3464470639011045589">"បើកតំណ <xliff:g id="HOST">%1$s</xliff:g> ជាមួយ <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"ផ្តល់សិទ្ធិចូលប្រើ"</string> <string name="whichEditApplication" msgid="144727838241402655">"កែសម្រួលជាមួយ"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"កែសម្រួលជាមួយ %1$s"</string> @@ -1586,6 +1587,7 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"ចាប់ផ្ដើមកម្មវិធីអ៊ីនធឺណិត?"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"ទទួលការហៅ?"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"ជានិច្ច"</string> + <string name="activity_resolver_set_always" msgid="1422574191056490585">"កំណត់ឱ្យបើកជានិច្ច"</string> <string name="activity_resolver_use_once" msgid="2404644797149173758">"តែម្ដង"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"ការកំណត់"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"%1$s មិនគាំទ្រប្រវត្តិរូបការងារ"</string> @@ -1615,8 +1617,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"#<xliff:g id="ID">%1$d</xliff:g> ត្រួតគ្នា"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g>x<xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", សុវត្ថិភាព"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"មុខងារចាប់ផ្ដើមសកម្មភាពនៅផ្ទៃខាងក្រោយពី <xliff:g id="PACKAGENAME">%1$s</xliff:g> នេះនឹងត្រូវទប់ស្កាត់នៅក្នុងកំណែបង្កើត Q នាពេលអនាគត។ សូមមើល g.co/dev/bgblock ។"</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"បានទប់ស្កាត់មុខងារចាប់ផ្ដើមសកម្មភាពនៅផ្ទៃខាងក្រោយពី <xliff:g id="PACKAGENAME">%1$s</xliff:g> ។ សូមមើល g.co/dev/bgblock ។"</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"ភ្លេចលំនាំ"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"លំនាំមិនត្រឹមត្រូវ"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"ពាក្យសម្ងាត់មិនត្រឹមត្រូវ"</string> @@ -1670,18 +1670,12 @@ <string name="accessibility_shortcut_enabling_service" msgid="7771852911861522636">"ផ្លូវកាត់ភាពងាយស្រួលបានបើក <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> <string name="accessibility_shortcut_disabling_service" msgid="2747243438223109821">"ផ្លូវកាត់ភាពងាយស្រួលបានបិទ <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> <string name="accessibility_shortcut_spoken_feedback" msgid="8376923232350078434">"ចុចគ្រាប់ចុចកម្រិតសំឡេងទាំងពីរឱ្យជាប់រយៈពេលបីវិនាទី ដើម្បីប្រើ <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for accessibility_button_prompt_text (1176658502969738564) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8259145549733019401) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (1041435574275047665) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (7003212763213614833) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (5261788874937410950) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (4969448938984394550) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="1176658502969738564">"ជ្រើសរើសសេវាកម្មដែលត្រូវប្រើ នៅពេលដែលអ្នកចុចប៊ូតុងភាពងាយស្រួល៖"</string> + <string name="accessibility_gesture_prompt_text" msgid="8259145549733019401">"ជ្រើសរើសសេវាកម្មដែលត្រូវប្រើជាមួយចលនាភាពងាយស្រួល (អូសឡើងលើពីផ្នែកខាងក្រោមនៃអេក្រង់ដោយប្រើម្រាមដៃពីរ)៖"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="1041435574275047665">"ជ្រើសរើសសេវាកម្មដែលត្រូវប្រើជាមួយចលនាភាពងាយស្រួល (អូសឡើងលើពីផ្នែកខាងក្រោមនៃអេក្រង់ដោយប្រើម្រាមដៃបី)៖"</string> + <string name="accessibility_button_instructional_text" msgid="7003212763213614833">"ដើម្បីប្ដូរឆ្លាស់រវាងសេវាកម្មផ្សេងៗ សូមចុចប៊ូតុងភាពងាយស្រួលឱ្យជាប់។"</string> + <string name="accessibility_gesture_instructional_text" msgid="5261788874937410950">"ដើម្បីប្ដូរឆ្លាស់រវាងសេវាកម្មផ្សេងៗ សូមអូសឡើងលើដោយប្រើម្រាមដៃពីរ ហើយសង្កត់ឱ្យជាប់។"</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="4969448938984394550">"ដើម្បីប្ដូរឆ្លាស់រវាងសេវាកម្មផ្សេងៗ សូមអូសឡើងលើដោយប្រើម្រាមដៃបី ហើយសង្កត់ឱ្យជាប់។"</string> <string name="accessibility_magnification_chooser_text" msgid="1227146738764986237">"ការពង្រីក"</string> <string name="user_switched" msgid="3768006783166984410">"អ្នកប្រើបច្ចុប្បន្ន <xliff:g id="NAME">%1$s</xliff:g> ។"</string> <string name="user_switching_message" msgid="2871009331809089783">"កំពុងប្ដូរទៅ <xliff:g id="NAME">%1$s</xliff:g>…"</string> diff --git a/core/res/res/values-kn/strings.xml b/core/res/res/values-kn/strings.xml index 16639ae4c52c..20d077cdbede 100644 --- a/core/res/res/values-kn/strings.xml +++ b/core/res/res/values-kn/strings.xml @@ -131,8 +131,7 @@ <!-- no translation found for wfcSpnFormat_spn (4998685024207291232) --> <skip /> <string name="wfcSpnFormat_spn_wifi_calling" msgid="136001023263502280">"<xliff:g id="SPN">%s</xliff:g> ವೈ-ಫೈ ಕರೆ ಮಾಡುವಿಕೆ"</string> - <!-- no translation found for wfcSpnFormat_spn_wifi_calling_vo_hyphen (1730997175789582756) --> - <skip /> + <string name="wfcSpnFormat_spn_wifi_calling_vo_hyphen" msgid="1730997175789582756">"<xliff:g id="SPN">%s</xliff:g> ವೈ-ಫೈ ಕರೆ ಮಾಡುವಿಕೆ"</string> <string name="wfcSpnFormat_wlan_call" msgid="2533371081782489793">"WLAN ಕರೆ"</string> <string name="wfcSpnFormat_spn_wlan_call" msgid="2315240198303197168">"<xliff:g id="SPN">%s</xliff:g> WLAN ಕರೆ"</string> <string name="wfcSpnFormat_spn_wifi" msgid="6546481665561961938">"<xliff:g id="SPN">%s</xliff:g> ವೈ-ಫೈ"</string> @@ -888,7 +887,7 @@ <string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"ಅನ್ಲಾಕ್ ಪ್ರದೇಶವನ್ನು ವಿಸ್ತರಿಸು."</string> <string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"ಸ್ಲೈಡ್ ಅನ್ಲಾಕ್."</string> <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"ಪ್ಯಾಟರ್ನ್ ಅನ್ಲಾಕ್."</string> - <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"ಮುಖದ ಅನ್ಲಾಕ್."</string> + <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"ಫೇಸ್ ಅನ್ಲಾಕ್."</string> <string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"ಪಿನ್ ಅನ್ಲಾಕ್."</string> <string name="keyguard_accessibility_sim_pin_unlock" msgid="9149698847116962307">"ಸಿಮ್ ಪಿನ್ ಅನ್ಲಾಕ್ ಮಾಡಿ."</string> <string name="keyguard_accessibility_sim_puk_unlock" msgid="9106899279724723341">"ಸಿಮ್ PUK ಅನ್ಲಾಕ್ ಮಾಡಿ."</string> @@ -1131,8 +1130,10 @@ <string name="whichViewApplication" msgid="3272778576700572102">"ಇದರ ಮೂಲಕ ತೆರೆಯಿರಿ"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"%1$s ಜೊತೆಗೆ ತೆರೆಯಿರಿ"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"ತೆರೆ"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"ಮೂಲಕ <xliff:g id="HOST">%1$s</xliff:g> ಲಿಂಕ್ಗಳನ್ನು ತೆರೆಯಲು ಪ್ರವೇಶವನ್ನು ನೀಡಿ"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"<xliff:g id="APPLICATION">%2$s</xliff:g> ಮೂಲಕ <xliff:g id="HOST">%1$s</xliff:g> ಲಿಂಕ್ಗಳನ್ನು ತೆರೆಯಲು ಪ್ರವೇಶವನ್ನು ನೀಡಿ"</string> + <string name="whichOpenHostLinksWith" msgid="3788174881117226583">"ಇವುಗಳ ಮೂಲಕ <xliff:g id="HOST">%1$s</xliff:g> ಲಿಂಕ್ಗಳನ್ನು ತೆರೆಯಿರಿ"</string> + <string name="whichOpenLinksWith" msgid="6392123355599572804">"ಇವುಗಳ ಮೂಲಕ ಲಿಂಕ್ಗಳನ್ನು ತೆರೆಯಿರಿ"</string> + <string name="whichOpenLinksWithApp" msgid="8225991685366651614">"<xliff:g id="APPLICATION">%1$s</xliff:g> ಮೂಲಕ ಲಿಂಕ್ಗಳನ್ನು ತೆರೆಯಿರಿ"</string> + <string name="whichOpenHostLinksWithApp" msgid="3464470639011045589">"<xliff:g id="APPLICATION">%2$s</xliff:g> ಮೂಲಕ <xliff:g id="HOST">%1$s</xliff:g> ಲಿಂಕ್ಗಳನ್ನು ತೆರೆಯಿರಿ"</string> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"ಪ್ರವೇಶ ಅನುಮತಿಸಿ"</string> <string name="whichEditApplication" msgid="144727838241402655">"ಇವರ ಜೊತೆಗೆ ಎಡಿಟ್ ಮಾಡಿ"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"%1$s ಜೊತೆಗೆ ಎಡಿಟ್ ಮಾಡಿ"</string> @@ -1585,6 +1586,7 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"ಬ್ರೌಸರ್ ಪ್ರಾರಂಭಿಸುವುದೇ?"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"ಕರೆ ಸ್ವೀಕರಿಸುವುದೇ?"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"ಯಾವಾಗಲೂ"</string> + <string name="activity_resolver_set_always" msgid="1422574191056490585">"ಯಾವಾಗಲೂ ತೆರೆಯುವುದಕ್ಕೆ ಹೊಂದಿಸಿ"</string> <string name="activity_resolver_use_once" msgid="2404644797149173758">"ಒಮ್ಮೆ ಮಾತ್ರ"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"ಸೆಟ್ಟಿಂಗ್ಗಳು"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"%1$s ಕೆಲಸದ ಪ್ರೊಫೈಲ್ ಅನ್ನು ಬೆಂಬಲಿಸುವುದಿಲ್ಲ"</string> @@ -1614,8 +1616,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"ಓವರ್ಲೇ #<xliff:g id="ID">%1$d</xliff:g>"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g>x<xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", ಸುರಕ್ಷಿತ"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"ಭವಿಷ್ಯದ Q ಬಿಲ್ಡ್ಗಳಲ್ಲಿ <xliff:g id="PACKAGENAME">%1$s</xliff:g> ನಿಂದ ಪ್ರಾರಂಭವಾಗುವ ಈ ಹಿನ್ನೆಲೆ ಚಟುವಟಿಕೆಯನ್ನು ನಿರ್ಬಂಧಿಸಲಾಗುತ್ತದೆ. g.co/dev/bgblock ಅನ್ನು ನೋಡಿ."</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"<xliff:g id="PACKAGENAME">%1$s</xliff:g> ನಿಂದ ಪ್ರಾರಂಭವಾಗುವ ಹಿನ್ನೆಲೆ ಚಟುವಟಿಕೆಯನ್ನು ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ. g.co/dev/bgblock ಅನ್ನು ನೋಡಿ."</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"ಪ್ಯಾಟರ್ನ್ ಅನ್ನು ಮರೆತಿರುವಿರಿ"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"ತಪ್ಪು ಪ್ಯಾಟರ್ನ್"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"ತಪ್ಪು ಪಾಸ್ವರ್ಡ್"</string> @@ -1669,18 +1669,12 @@ <string name="accessibility_shortcut_enabling_service" msgid="7771852911861522636">"ಪ್ರವೇಶಿಸುವಿಕೆ ಶಾರ್ಟ್ಕಟ್, <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ಅನ್ನು ಆನ್ ಮಾಡಿದೆ"</string> <string name="accessibility_shortcut_disabling_service" msgid="2747243438223109821">"ಪ್ರವೇಶಿಸುವಿಕೆ ಶಾರ್ಟ್ಕಟ್, <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ಅನ್ನು ಆಫ್ ಮಾಡಿದೆ"</string> <string name="accessibility_shortcut_spoken_feedback" msgid="8376923232350078434">"<xliff:g id="SERVICE_NAME">%1$s</xliff:g> ಅನ್ನು ಬಳಸಲು ಎರಡೂ ಧ್ವನಿ ಕೀಗಳನ್ನು ಮೂರು ಸೆಕೆಂಡ್ಗಳ ಕಾಲ ಒತ್ತಿ ಹಿಡಿದುಕೊಳ್ಳಿ"</string> - <!-- no translation found for accessibility_button_prompt_text (1176658502969738564) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8259145549733019401) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (1041435574275047665) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (7003212763213614833) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (5261788874937410950) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (4969448938984394550) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="1176658502969738564">"ನೀವು ಪ್ರವೇಶಿಸುವಿಕೆ ಬಟನ್ ಟ್ಯಾಪ್ ಮಾಡಿದಾಗ ಬಳಸುವುದಕ್ಕಾಗಿ ಸೇವೆಯೊಂದನ್ನು ಆರಿಸಿ:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8259145549733019401">"ಪ್ರವೇಶಿಸುವಿಕೆ ಗೆಸ್ಚರ್ನೊಂದಿಗೆ ಬಳಸಲು ಸೇವೆಯೊಂದನ್ನು ಆಯ್ಕೆಮಾಡಿ (ಎರಡು ಬೆರಳುಗಳನ್ನು ಬಳಸಿ ಪರದೆಯ ಕೆಳಭಾಗದಿಂದ ಮೇಲಕ್ಕೆ ಸ್ವೈಪ್ ಮಾಡಿ):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="1041435574275047665">"ಪ್ರವೇಶಿಸುವಿಕೆ ಗೆಸ್ಚರ್ನೊಂದಿಗೆ ಬಳಸಲು ಸೇವೆಯೊಂದನ್ನು ಆಯ್ಕೆಮಾಡಿ (ಮೂರು ಬೆರಳುಗಳನ್ನು ಬಳಸಿ ಪರದೆಯ ಕೆಳಭಾಗದಿಂದ ಮೇಲಕ್ಕೆ ಸ್ವೈಪ್ ಮಾಡಿ):"</string> + <string name="accessibility_button_instructional_text" msgid="7003212763213614833">"ಸೇವೆಗಳ ನಡುವೆ ಬದಲಿಸಲು, ಸ್ಪರ್ಶಿಸಿ ಮತ್ತು ಪ್ರವೇಶಿಸುವಿಕೆ ಬಟನ್ ಅನ್ನು ಒತ್ತಿ ಹಿಡಿಯಿರಿ."</string> + <string name="accessibility_gesture_instructional_text" msgid="5261788874937410950">"ಸೇವೆಗಳ ನಡುವೆ ಬದಲಿಸಲು, ಎರಡು ಬೆರಳುಗಳನ್ನು ಬಳಸಿ ಮೇಲಕ್ಕೆ ಸ್ವೈಪ್ ಮಾಡಿ ಮತ್ತು ಒತ್ತಿ ಹಿಡಿಯಿರಿ."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="4969448938984394550">"ಸೇವೆಗಳ ನಡುವೆ ಬದಲಿಸಲು, ಮೂರು ಬೆರಳುಗಳನ್ನು ಬಳಸಿ ಮೇಲಕ್ಕೆ ಸ್ವೈಪ್ ಮಾಡಿ ಮತ್ತು ಒತ್ತಿ ಹಿಡಿಯಿರಿ."</string> <string name="accessibility_magnification_chooser_text" msgid="1227146738764986237">"ಹಿಗ್ಗಿಸುವಿಕೆ"</string> <string name="user_switched" msgid="3768006783166984410">"ಪ್ರಸ್ತುತ ಬಳಕೆದಾರರು <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="2871009331809089783">"<xliff:g id="NAME">%1$s</xliff:g> ಗೆ ಬದಲಾಯಿಸಲಾಗುತ್ತಿದೆ…"</string> diff --git a/core/res/res/values-ko/strings.xml b/core/res/res/values-ko/strings.xml index 1c887864ef62..33ce9944d7cb 100644 --- a/core/res/res/values-ko/strings.xml +++ b/core/res/res/values-ko/strings.xml @@ -131,8 +131,7 @@ <!-- no translation found for wfcSpnFormat_spn (4998685024207291232) --> <skip /> <string name="wfcSpnFormat_spn_wifi_calling" msgid="136001023263502280">"<xliff:g id="SPN">%s</xliff:g> Wi-Fi 통화"</string> - <!-- no translation found for wfcSpnFormat_spn_wifi_calling_vo_hyphen (1730997175789582756) --> - <skip /> + <string name="wfcSpnFormat_spn_wifi_calling_vo_hyphen" msgid="1730997175789582756">"<xliff:g id="SPN">%s</xliff:g> Wi-Fi 통화"</string> <string name="wfcSpnFormat_wlan_call" msgid="2533371081782489793">"WLAN 통화"</string> <string name="wfcSpnFormat_spn_wlan_call" msgid="2315240198303197168">"<xliff:g id="SPN">%s</xliff:g> WLAN 통화"</string> <string name="wfcSpnFormat_spn_wifi" msgid="6546481665561961938">"<xliff:g id="SPN">%s</xliff:g> Wi-Fi"</string> @@ -255,7 +254,7 @@ <string name="notification_channel_virtual_keyboard" msgid="6969925135507955575">"가상 키보드"</string> <string name="notification_channel_physical_keyboard" msgid="7297661826966861459">"물리적 키보드"</string> <string name="notification_channel_security" msgid="7345516133431326347">"보안"</string> - <string name="notification_channel_car_mode" msgid="3553380307619874564">"운전모드"</string> + <string name="notification_channel_car_mode" msgid="3553380307619874564">"운전 모드"</string> <string name="notification_channel_account" msgid="7577959168463122027">"계정 상태"</string> <string name="notification_channel_developer" msgid="7579606426860206060">"개발자 메시지"</string> <string name="notification_channel_updates" msgid="4794517569035110397">"업데이트"</string> @@ -361,8 +360,8 @@ <string name="permdesc_manageProfileAndDeviceOwners" msgid="106894851498657169">"앱이 프로필 소유자와 기기 소유자를 설정하도록 허용합니다."</string> <string name="permlab_reorderTasks" msgid="2018575526934422779">"실행 중인 앱 순서 재지정"</string> <string name="permdesc_reorderTasks" msgid="7734217754877439351">"앱이 사용자의 입력 없이 작업을 포그라운드나 백그라운드로 이동할 수 있도록 허용합니다."</string> - <string name="permlab_enableCarMode" msgid="5684504058192921098">"운전모드 사용"</string> - <string name="permdesc_enableCarMode" msgid="4853187425751419467">"앱이 운전모드를 사용할 수 있도록 허용합니다."</string> + <string name="permlab_enableCarMode" msgid="5684504058192921098">"운전 모드 사용"</string> + <string name="permdesc_enableCarMode" msgid="4853187425751419467">"앱이 운전 모드를 사용할 수 있도록 허용합니다."</string> <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"다른 앱 종료"</string> <string name="permdesc_killBackgroundProcesses" msgid="4593353235959733119">"앱이 다른 앱의 백그라운드 프로세스를 종료할 수 있도록 허용합니다. 이 경우 다른 앱이 실행 중지될 수 있습니다."</string> <string name="permlab_systemAlertWindow" msgid="7238805243128138690">"이 앱은 다른 앱 위에 표시될 수 있음"</string> @@ -903,7 +902,7 @@ <string name="granularity_label_link" msgid="5815508880782488267">"링크"</string> <string name="granularity_label_line" msgid="5764267235026120888">"행"</string> <string name="factorytest_failed" msgid="5410270329114212041">"출고 테스트 불합격"</string> - <string name="factorytest_not_system" msgid="4435201656767276723">"FACTORY_TEST 작업은 /system/app 디렉토리에 설치된 패키지에 대해서만 지원됩니다."</string> + <string name="factorytest_not_system" msgid="4435201656767276723">"FACTORY_TEST 작업은 /system/app 디렉터리에 설치된 패키지에 대해서만 지원됩니다."</string> <string name="factorytest_no_action" msgid="872991874799998561">"FACTORY_TEST 작업을 제공하는 패키지가 없습니다."</string> <string name="factorytest_reboot" msgid="6320168203050791643">"다시 부팅"</string> <string name="js_dialog_title" msgid="1987483977834603872">"\'<xliff:g id="TITLE">%s</xliff:g>\' 페이지 내용:"</string> @@ -1131,8 +1130,10 @@ <string name="whichViewApplication" msgid="3272778576700572102">"연결 프로그램"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"%1$s(으)로 열기"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"열기"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"다음으로 <xliff:g id="HOST">%1$s</xliff:g> 링크를 열려면 액세스 권한 부여"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"<xliff:g id="APPLICATION">%2$s</xliff:g>(으)로 <xliff:g id="HOST">%1$s</xliff:g> 링크를 열려면 액세스 권한 부여"</string> + <string name="whichOpenHostLinksWith" msgid="3788174881117226583">"<xliff:g id="HOST">%1$s</xliff:g> 링크를 열 때 사용할 앱"</string> + <string name="whichOpenLinksWith" msgid="6392123355599572804">"링크를 열 때 사용할 앱"</string> + <string name="whichOpenLinksWithApp" msgid="8225991685366651614">"<xliff:g id="APPLICATION">%1$s</xliff:g> 앱으로 링크 열기"</string> + <string name="whichOpenHostLinksWithApp" msgid="3464470639011045589">"<xliff:g id="APPLICATION">%2$s</xliff:g> 앱으로 <xliff:g id="HOST">%1$s</xliff:g> 링크 열기"</string> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"권한 부여"</string> <string name="whichEditApplication" msgid="144727838241402655">"편집 프로그램:"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"%1$s(으)로 수정"</string> @@ -1584,6 +1585,7 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"브라우저를 실행하시겠습니까?"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"통화를 수락하시겠습니까?"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"항상"</string> + <string name="activity_resolver_set_always" msgid="1422574191056490585">"항상 열도록 설정"</string> <string name="activity_resolver_use_once" msgid="2404644797149173758">"한 번만"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"설정"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"%1$s에서 직장 프로필을 지원하지 않습니다."</string> @@ -1613,8 +1615,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"<xliff:g id="ID">%1$d</xliff:g>번째 오버레이"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g>x<xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", 보안"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"<xliff:g id="PACKAGENAME">%1$s</xliff:g>의 백그라운드 활동 시작은 향후 Q 빌드에서 차단됩니다. g.co/dev/bgblock을 참조하세요."</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"<xliff:g id="PACKAGENAME">%1$s</xliff:g>의 백그라운드 활동 시작이 차단되었습니다. g.co/dev/bgblock을 참조하세요."</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"패턴을 잊음"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"잘못된 패턴"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"잘못된 비밀번호"</string> @@ -1668,18 +1668,12 @@ <string name="accessibility_shortcut_enabling_service" msgid="7771852911861522636">"접근성 단축키로 인해 <xliff:g id="SERVICE_NAME">%1$s</xliff:g>이(가) 사용 설정되었습니다."</string> <string name="accessibility_shortcut_disabling_service" msgid="2747243438223109821">"접근성 단축키로 인해 <xliff:g id="SERVICE_NAME">%1$s</xliff:g>이(가) 사용 중지되었습니다."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="8376923232350078434">"<xliff:g id="SERVICE_NAME">%1$s</xliff:g> 서비스를 사용하려면 두 볼륨 키를 3초 동안 길게 누르세요"</string> - <!-- no translation found for accessibility_button_prompt_text (1176658502969738564) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8259145549733019401) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (1041435574275047665) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (7003212763213614833) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (5261788874937410950) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (4969448938984394550) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="1176658502969738564">"접근성 버튼을 탭했을 때 실행할 서비스를 선택하세요."</string> + <string name="accessibility_gesture_prompt_text" msgid="8259145549733019401">"접근성 동작(두 손가락을 사용하여 화면 하단에서 위로 스와이프)으로 실행할 서비스를 선택하세요."</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="1041435574275047665">"접근성 동작(세 손가락을 사용하여 화면 하단에서 위로 스와이프)으로 실행할 서비스를 선택하세요."</string> + <string name="accessibility_button_instructional_text" msgid="7003212763213614833">"서비스 간에 전환하려면 접근성 버튼을 길게 터치합니다."</string> + <string name="accessibility_gesture_instructional_text" msgid="5261788874937410950">"서비스 간에 전환하려면 두 손가락을 사용하여 위로 스와이프한 다음 잠시 기다립니다."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="4969448938984394550">"서비스 간에 전환하려면 세 손가락을 사용하여 위로 스와이프한 다음 잠시 기다립니다."</string> <string name="accessibility_magnification_chooser_text" msgid="1227146738764986237">"확대"</string> <string name="user_switched" msgid="3768006783166984410">"현재 사용자는 <xliff:g id="NAME">%1$s</xliff:g>님입니다."</string> <string name="user_switching_message" msgid="2871009331809089783">"<xliff:g id="NAME">%1$s</xliff:g>(으)로 전환하는 중…"</string> diff --git a/core/res/res/values-ky/strings.xml b/core/res/res/values-ky/strings.xml index 9942b3d91498..b34fcf2c6664 100644 --- a/core/res/res/values-ky/strings.xml +++ b/core/res/res/values-ky/strings.xml @@ -131,8 +131,7 @@ <!-- no translation found for wfcSpnFormat_spn (4998685024207291232) --> <skip /> <string name="wfcSpnFormat_spn_wifi_calling" msgid="136001023263502280">"<xliff:g id="SPN">%s</xliff:g> Wi-Fi аркылуу чалуу"</string> - <!-- no translation found for wfcSpnFormat_spn_wifi_calling_vo_hyphen (1730997175789582756) --> - <skip /> + <string name="wfcSpnFormat_spn_wifi_calling_vo_hyphen" msgid="1730997175789582756">"<xliff:g id="SPN">%s</xliff:g> аркылуу Wi-Fi менен чалуу"</string> <string name="wfcSpnFormat_wlan_call" msgid="2533371081782489793">"WLAN аркылуу чалуу"</string> <string name="wfcSpnFormat_spn_wlan_call" msgid="2315240198303197168">"<xliff:g id="SPN">%s</xliff:g> WLAN аркылуу чалуу"</string> <string name="wfcSpnFormat_spn_wifi" msgid="6546481665561961938">"<xliff:g id="SPN">%s</xliff:g> Wi-Fi"</string> @@ -256,7 +255,7 @@ <string name="notification_channel_physical_keyboard" msgid="7297661826966861459">"Аппараттык баскычтоп"</string> <string name="notification_channel_security" msgid="7345516133431326347">"Коопсуздук"</string> <string name="notification_channel_car_mode" msgid="3553380307619874564">"Унаа режими"</string> - <string name="notification_channel_account" msgid="7577959168463122027">"Каттоо эсебинин абалы"</string> + <string name="notification_channel_account" msgid="7577959168463122027">"Аккаунттун абалы"</string> <string name="notification_channel_developer" msgid="7579606426860206060">"Иштеп чыгуучунун билдирүүлөрү"</string> <string name="notification_channel_updates" msgid="4794517569035110397">"Жаңыртуулар"</string> <string name="notification_channel_network_status" msgid="5025648583129035447">"Тармактын абалы"</string> @@ -1131,8 +1130,10 @@ <string name="whichViewApplication" msgid="3272778576700572102">"Төмөнкү менен ачуу"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"%1$s менен ачуу"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"Ачуу"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"Төмөнкү колдонмо менен <xliff:g id="HOST">%1$s</xliff:g> шилтемелерин ачууга уруксат берүү"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"<xliff:g id="APPLICATION">%2$s</xliff:g> колдонмосу менен <xliff:g id="HOST">%1$s</xliff:g> шилтемелерин ачууга уруксат берүү"</string> + <string name="whichOpenHostLinksWith" msgid="3788174881117226583">"<xliff:g id="HOST">%1$s</xliff:g> шилтемелерин төмөнкү колдонмодо ачуу:"</string> + <string name="whichOpenLinksWith" msgid="6392123355599572804">"Шилтемелерди төмөнкү колдонмодо ачуу:"</string> + <string name="whichOpenLinksWithApp" msgid="8225991685366651614">"Шилтемелерди <xliff:g id="APPLICATION">%1$s</xliff:g> колдонмосунда ачуу"</string> + <string name="whichOpenHostLinksWithApp" msgid="3464470639011045589">"<xliff:g id="HOST">%1$s</xliff:g> шилтемелерин <xliff:g id="APPLICATION">%2$s</xliff:g> колдонмосунда ачуу"</string> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"Мүмкүнчүлүк берүү"</string> <string name="whichEditApplication" msgid="144727838241402655">"Төмөнкү менен түзөтүү"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"%1$s менен түзөтүү"</string> @@ -1586,6 +1587,7 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"Серепчи иштетилсинби?"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"Чалуу кабыл алынсынбы?"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"Дайыма"</string> + <string name="activity_resolver_set_always" msgid="1422574191056490585">"Ар дайым ачылсын деп жөндөө"</string> <string name="activity_resolver_use_once" msgid="2404644797149173758">"Бир жолу гана"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"Жөндөөлөр"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"%1$s жумуш профилин колдоого албайт"</string> @@ -1615,8 +1617,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"Катмар №<xliff:g id="ID">%1$d</xliff:g>"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g>x<xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", корголгон"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"<xliff:g id="PACKAGENAME">%1$s</xliff:g> сайтынын фондук режимде иштеши Q курамдарында бөгөттөлүп турат. Төмөнкүгө өтүңүз: g.co/dev/bgblock."</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"<xliff:g id="PACKAGENAME">%1$s</xliff:g> сайтынын фондук режимде иштеши бөгөттөлдү. Төмөнкүгө өтүңүз: g.co/dev/bgblock."</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Үлгү унутулду"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"Графикалык ачкыч туура эмес"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"Сырсөз туура эмес"</string> @@ -1670,18 +1670,12 @@ <string name="accessibility_shortcut_enabling_service" msgid="7771852911861522636">"Атайын мүмкүнчүлүктөр кыска жолу <xliff:g id="SERVICE_NAME">%1$s</xliff:g> кызматын күйгүздү"</string> <string name="accessibility_shortcut_disabling_service" msgid="2747243438223109821">"Атайын мүмкүнчүлүктөр кыска жолу <xliff:g id="SERVICE_NAME">%1$s</xliff:g> кызматын өчүрдү"</string> <string name="accessibility_shortcut_spoken_feedback" msgid="8376923232350078434">"<xliff:g id="SERVICE_NAME">%1$s</xliff:g> кызматын колдонуу үчүн үнүн чоңойтуп/кичирейтүү баскычтарын үч секунд коё бербей басып туруңуз"</string> - <!-- no translation found for accessibility_button_prompt_text (1176658502969738564) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8259145549733019401) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (1041435574275047665) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (7003212763213614833) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (5261788874937410950) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (4969448938984394550) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="1176658502969738564">"Атайын мүмкүнчүлүктөр баскычын таптаганыңызда иштей турган кызматты тандаңыз:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8259145549733019401">"Атайын мүмкүнчүлүктөр жаңсоосу үчүн кызматты тандаңыз (эки манжаңыз менен экрандын ылдый жагынан өйдө карай сүрүңүз):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="1041435574275047665">"Атайын мүмкүнчүлүктөр жаңсоосу аркылуу иштетиле турган кызматты тандаңыз (үч манжаңыз менен экрандын ылдый жагынан өйдө карай сүрүңүз):"</string> + <string name="accessibility_button_instructional_text" msgid="7003212763213614833">"Кызматтарды которуштуруу үчүн Атайын мүмкүнчүлүктөр баскычын басып, кармап туруңуз."</string> + <string name="accessibility_gesture_instructional_text" msgid="5261788874937410950">"Кызматтарды которуштуруу үчүн эки манжаңыз менен өйдө сүрүп, кармап туруңуз."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="4969448938984394550">"Башка кызматка которулуу үчүн үч манжаңыз менен экранды өйдө сүрүп, кармап туруңуз."</string> <string name="accessibility_magnification_chooser_text" msgid="1227146738764986237">"Чоңойтуу"</string> <string name="user_switched" msgid="3768006783166984410">"Учурдагы колдонуучу <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="2871009331809089783">"<xliff:g id="NAME">%1$s</xliff:g> дегенге которулууда…"</string> @@ -1914,7 +1908,7 @@ <string name="deprecated_target_sdk_app_store" msgid="5032340500368495077">"Жаңыртууну издөө"</string> <string name="new_sms_notification_title" msgid="8442817549127555977">"Сизге жаңы билдирүүлөр келди"</string> <string name="new_sms_notification_content" msgid="7002938807812083463">"Көрүү үчүн SMS колдонмосун ачыңыз"</string> - <string name="profile_encrypted_title" msgid="4260432497586829134">"Айрым функциялар чектелиши мүмкүн"</string> + <string name="profile_encrypted_title" msgid="4260432497586829134">"Айрым функциялар иштебеши мүмкүн"</string> <string name="profile_encrypted_detail" msgid="3700965619978314974">"Жумуш профили кулпуланган"</string> <string name="profile_encrypted_message" msgid="6964994232310195874">"Таптап жумуш профилин ачыңыз"</string> <string name="usb_mtp_launch_notification_title" msgid="8359219638312208932">"<xliff:g id="PRODUCT_NAME">%1$s</xliff:g> менен туташты"</string> diff --git a/core/res/res/values-lo/strings.xml b/core/res/res/values-lo/strings.xml index 02a7f536831d..3b887a2131e7 100644 --- a/core/res/res/values-lo/strings.xml +++ b/core/res/res/values-lo/strings.xml @@ -131,8 +131,7 @@ <!-- no translation found for wfcSpnFormat_spn (4998685024207291232) --> <skip /> <string name="wfcSpnFormat_spn_wifi_calling" msgid="136001023263502280">"<xliff:g id="SPN">%s</xliff:g> Wi-Fi Calling"</string> - <!-- no translation found for wfcSpnFormat_spn_wifi_calling_vo_hyphen (1730997175789582756) --> - <skip /> + <string name="wfcSpnFormat_spn_wifi_calling_vo_hyphen" msgid="1730997175789582756">"<xliff:g id="SPN">%s</xliff:g> ການໂທ Wi-Fi"</string> <string name="wfcSpnFormat_wlan_call" msgid="2533371081782489793">"WLAN Call"</string> <string name="wfcSpnFormat_spn_wlan_call" msgid="2315240198303197168">"<xliff:g id="SPN">%s</xliff:g> WLAN Call"</string> <string name="wfcSpnFormat_spn_wifi" msgid="6546481665561961938">"<xliff:g id="SPN">%s</xliff:g> Wi-Fi"</string> @@ -1131,8 +1130,10 @@ <string name="whichViewApplication" msgid="3272778576700572102">"ເປີດໂດຍໃຊ້"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"ເປີດໂດຍໃຊ້ %1$s"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"ເປີດ"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"ໃຫ້ສິດອະນຸຍາດເພື່ອເປີດລິ້ງ <xliff:g id="HOST">%1$s</xliff:g> ດ້ວຍ"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"ໃຫ້ສິດອະນຸຍາດເພື່ອເປີດລິ້ງ <xliff:g id="HOST">%1$s</xliff:g> ດ້ວຍ <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> + <string name="whichOpenHostLinksWith" msgid="3788174881117226583">"ເປີດລິ້ງ <xliff:g id="HOST">%1$s</xliff:g> ໂດຍໃຊ້"</string> + <string name="whichOpenLinksWith" msgid="6392123355599572804">"ເປີດລິ້ງໂດຍໃຊ້"</string> + <string name="whichOpenLinksWithApp" msgid="8225991685366651614">"ເປີດລິ້ງໂດຍໃຊ້ <xliff:g id="APPLICATION">%1$s</xliff:g>"</string> + <string name="whichOpenHostLinksWithApp" msgid="3464470639011045589">"ເປີດລິ້ງ <xliff:g id="HOST">%1$s</xliff:g> ໂດຍໃຊ້ <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"ໃຫ້ສິດອະນຸຍາດ"</string> <string name="whichEditApplication" msgid="144727838241402655">"ແກ້ໄຂໃນ"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"ແກ້ໄຂໃນ %1$s"</string> @@ -1584,6 +1585,7 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"ເປີດໂປຣແກຣມທ່ອງເວັບ?"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"ຮັບການໂທບໍ່?"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"ທຸກຄັ້ງ"</string> + <string name="activity_resolver_set_always" msgid="1422574191056490585">"ຕັ້ງໃຫ້ເປັນເປີດທຸກເທື່ອ"</string> <string name="activity_resolver_use_once" msgid="2404644797149173758">"ຄັ້ງດຽວ"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"ການຕັ້ງຄ່າ"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"%1$s ບໍ່ຮອງຮັບໂປຣໄຟລ໌ບ່ອນເຮັດວຽກຂອງທ່ານ"</string> @@ -1613,8 +1615,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"ການວາງຊ້ອນ #<xliff:g id="ID">%1$d</xliff:g>"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g>x<xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", ປອດໄພ"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"ການເລີ່ມການເຄື່ອນໄຫວໃນພື້ນຫຼັງນີ້ຈາກ <xliff:g id="PACKAGENAME">%1$s</xliff:g> ຈະຖືກບລັອກໄວ້ໃນ Q ເວີຊັນອະນາຄົດ. ກະລຸນາອ່ານ g.co/dev/bgblock."</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"ບລັອກການເຄື່ອນໄຫວພື້ນຫຼັງຈາກ <xliff:g id="PACKAGENAME">%1$s</xliff:g> ໄວ້ແລ້ວ. ກະລຸນາອ່ານ g.co/dev/bgblock."</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"ລືມຮູບແບບປົດລັອກ?"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"ຮູບແບບຜິດ"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"ລະຫັດຜ່ານບໍ່ຖືກຕ້ອງ"</string> @@ -1668,18 +1668,12 @@ <string name="accessibility_shortcut_enabling_service" msgid="7771852911861522636">"Accessibility Shortcut turned <xliff:g id="SERVICE_NAME">%1$s</xliff:g> on"</string> <string name="accessibility_shortcut_disabling_service" msgid="2747243438223109821">"Accessibility Shortcut turned <xliff:g id="SERVICE_NAME">%1$s</xliff:g> off"</string> <string name="accessibility_shortcut_spoken_feedback" msgid="8376923232350078434">"ກົດປຸ່ມສຽງທັງສອງພ້ອມກັນຄ້າງໄວ້ສາມວິນາທີເພື່ອໃຊ້ <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for accessibility_button_prompt_text (1176658502969738564) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8259145549733019401) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (1041435574275047665) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (7003212763213614833) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (5261788874937410950) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (4969448938984394550) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="1176658502969738564">"ເລືອກບໍລິການເພື່ອໃຊ້ເມື່ອທ່ານແຕະໃສ່ປຸ່ມການຊ່ວຍເຂົ້າເຖິງ:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8259145549733019401">"ເລືອກບໍລິການເພື່ອໃຊ້ກັບທ່າທາງການຊ່ວຍເຂົ້າເຖິງ (ປັດຂຶ້ນຈາກລຸ່ມສຸດຂອງໜ້າຈໍດ້ວຍສອງນິ້ວ):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="1041435574275047665">"ເລືອກບໍລິການເພື່ອໃຊ້ກັບທ່າທາງການຊ່ວຍເຂົ້າເຖິງ (ປັດຂຶ້ນຈາກລຸ່ມສຸດຂອງໜ້າຈໍດ້ວຍສາມນິ້ວ):"</string> + <string name="accessibility_button_instructional_text" msgid="7003212763213614833">"ເພື່ອສະຫຼັບລະຫວ່າງບໍລິການຕ່າງໆ, ໃຫ້ແຕະໃສ່ປຸ່ມການຊ່ວຍເຂົ້າເຖິງຄ້າງໄວ້."</string> + <string name="accessibility_gesture_instructional_text" msgid="5261788874937410950">"ເພື່ອສະຫຼັບລະຫວ່າງບໍລິການຕ່າງໆ, ໃຫ້ປັດຂຶ້ນດ້ວຍສອງນິ້ວຄ້າງໄວ້."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="4969448938984394550">"ເພື່ອສະຫຼັບລະຫວ່າງບໍລິການຕ່າງໆ, ໃຫ້ປັດຂຶ້ນດ້ວຍສາມນິ້ວຄ້າງໄວ້."</string> <string name="accessibility_magnification_chooser_text" msgid="1227146738764986237">"ການຂະຫຍາຍ"</string> <string name="user_switched" msgid="3768006783166984410">"ຜູ່ໃຊ້ປັດຈຸບັນ <xliff:g id="NAME">%1$s</xliff:g> ."</string> <string name="user_switching_message" msgid="2871009331809089783">"ກຳລັງສະລັບໄປຫາ <xliff:g id="NAME">%1$s</xliff:g>…"</string> diff --git a/core/res/res/values-lt/strings.xml b/core/res/res/values-lt/strings.xml index 25331a694f50..e3163cf8bfc8 100644 --- a/core/res/res/values-lt/strings.xml +++ b/core/res/res/values-lt/strings.xml @@ -133,8 +133,7 @@ <!-- no translation found for wfcSpnFormat_spn (4998685024207291232) --> <skip /> <string name="wfcSpnFormat_spn_wifi_calling" msgid="136001023263502280">"<xliff:g id="SPN">%s</xliff:g> „Wi-Fi“ skambinimas"</string> - <!-- no translation found for wfcSpnFormat_spn_wifi_calling_vo_hyphen (1730997175789582756) --> - <skip /> + <string name="wfcSpnFormat_spn_wifi_calling_vo_hyphen" msgid="1730997175789582756">"<xliff:g id="SPN">%s</xliff:g> „Wi-Fi“ skambinimas"</string> <string name="wfcSpnFormat_wlan_call" msgid="2533371081782489793">"WLAN skambutis"</string> <string name="wfcSpnFormat_spn_wlan_call" msgid="2315240198303197168">"<xliff:g id="SPN">%s</xliff:g> WLAN skambutis"</string> <string name="wfcSpnFormat_spn_wifi" msgid="6546481665561961938">"<xliff:g id="SPN">%s</xliff:g> „Wi-Fi“"</string> @@ -1171,8 +1170,10 @@ <string name="whichViewApplication" msgid="3272778576700572102">"Atidaryti naudojant"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"Atidaryti naudojant %1$s"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"Atidaryti"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"Suteikite prieigą atidaryti <xliff:g id="HOST">%1$s</xliff:g> nuorodas naudojant"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"Suteikite prieigą atidaryti <xliff:g id="HOST">%1$s</xliff:g> nuorodas naudojant „<xliff:g id="APPLICATION">%2$s</xliff:g>“"</string> + <string name="whichOpenHostLinksWith" msgid="3788174881117226583">"Atidaryti <xliff:g id="HOST">%1$s</xliff:g> nuorodas naudojant"</string> + <string name="whichOpenLinksWith" msgid="6392123355599572804">"Atidaryti nuorodas naudojant"</string> + <string name="whichOpenLinksWithApp" msgid="8225991685366651614">"Atidaryti nuorodas naudojant „<xliff:g id="APPLICATION">%1$s</xliff:g>“"</string> + <string name="whichOpenHostLinksWithApp" msgid="3464470639011045589">"Atidaryti <xliff:g id="HOST">%1$s</xliff:g> nuorodas naudojant „<xliff:g id="APPLICATION">%2$s</xliff:g>“"</string> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"Suteikti prieigą"</string> <string name="whichEditApplication" msgid="144727838241402655">"Redaguoti naudojant"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"Redaguoti naudojant %1$s"</string> @@ -1630,6 +1631,7 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"Paleisti naršyklę?"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"Priimti skambutį?"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"Visada"</string> + <string name="activity_resolver_set_always" msgid="1422574191056490585">"Nustatyti parinktį „Visada atidaryti“"</string> <string name="activity_resolver_use_once" msgid="2404644797149173758">"Tik kartą"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"Nustatymai"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"%1$s nepalaiko darbo profilio"</string> @@ -1659,8 +1661,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"Perdanga nr. <xliff:g id="ID">%1$d</xliff:g>"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"„<xliff:g id="NAME">%1$s</xliff:g>“: <xliff:g id="WIDTH">%2$d</xliff:g> x <xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> tašk. colyje"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", saugu"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"Šios fono veiklos paleidimas iš „<xliff:g id="PACKAGENAME">%1$s</xliff:g>“ bus užblokuotas būsimose Q versijose. Žr. g.co/dev/bgblock."</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"Fono veiklos paleidimas iš „<xliff:g id="PACKAGENAME">%1$s</xliff:g>“ užblokuotas. Žr. g.co/dev/bgblock."</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Pamiršau atrakinimo piešinį"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"Netinkamas atrakinimo piešinys"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"Netinkamas slaptažodis"</string> diff --git a/core/res/res/values-lv/strings.xml b/core/res/res/values-lv/strings.xml index 29cd5479045d..e5e9dfc903c1 100644 --- a/core/res/res/values-lv/strings.xml +++ b/core/res/res/values-lv/strings.xml @@ -132,8 +132,7 @@ <!-- no translation found for wfcSpnFormat_spn (4998685024207291232) --> <skip /> <string name="wfcSpnFormat_spn_wifi_calling" msgid="136001023263502280">"<xliff:g id="SPN">%s</xliff:g> Wi-Fi zvani"</string> - <!-- no translation found for wfcSpnFormat_spn_wifi_calling_vo_hyphen (1730997175789582756) --> - <skip /> + <string name="wfcSpnFormat_spn_wifi_calling_vo_hyphen" msgid="1730997175789582756">"<xliff:g id="SPN">%s</xliff:g> Wi-Fi zvani"</string> <string name="wfcSpnFormat_wlan_call" msgid="2533371081782489793">"WLAN zvans"</string> <string name="wfcSpnFormat_spn_wlan_call" msgid="2315240198303197168">"<xliff:g id="SPN">%s</xliff:g> WLAN zvans"</string> <string name="wfcSpnFormat_spn_wifi" msgid="6546481665561961938">"<xliff:g id="SPN">%s</xliff:g> Wi-Fi"</string> @@ -1151,8 +1150,10 @@ <string name="whichViewApplication" msgid="3272778576700572102">"Atvērt, izmantojot"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"Atvērt, izmantojot %1$s"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"Atvērt"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"Piekļuves piešķiršana, lai atvērtu <xliff:g id="HOST">%1$s</xliff:g> saites lietojumprogrammā"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"Piekļuves piešķiršana, lai atvērtu <xliff:g id="HOST">%1$s</xliff:g> saites lietojumprogrammā <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> + <string name="whichOpenHostLinksWith" msgid="3788174881117226583">"<xliff:g id="HOST">%1$s</xliff:g> saišu atvēršana, izmantojot:"</string> + <string name="whichOpenLinksWith" msgid="6392123355599572804">"Saišu atvēršana, izmantojot:"</string> + <string name="whichOpenLinksWithApp" msgid="8225991685366651614">"Saišu atvēršana, izmantojot pārlūku <xliff:g id="APPLICATION">%1$s</xliff:g>"</string> + <string name="whichOpenHostLinksWithApp" msgid="3464470639011045589">"<xliff:g id="HOST">%1$s</xliff:g> saišu atvēršana, izmantojot pārlūku <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"Atļaut piekļuvi"</string> <string name="whichEditApplication" msgid="144727838241402655">"Rediģēt, izmantojot"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"Rediģēt, izmantojot %1$s"</string> @@ -1607,6 +1608,7 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"Vai palaist pārlūkprogrammu?"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"Vai atbildēt uz zvanu?"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"Vienmēr"</string> + <string name="activity_resolver_set_always" msgid="1422574191056490585">"Iestatīt uz “Vienmēr atvērt”"</string> <string name="activity_resolver_use_once" msgid="2404644797149173758">"Tikai vienreiz"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"Iestatījumi"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"Programma %1$s neatbalsta darba profilus"</string> @@ -1636,8 +1638,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"Pārklājums Nr. <xliff:g id="ID">%1$d</xliff:g>"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g> x <xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", drošs"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"Šīs fona darbības sākšana no pakotnes <xliff:g id="PACKAGENAME">%1$s</xliff:g> tiks bloķēta turpmākajās Q versijās. Skatiet rakstu g.co/dev/bgblock."</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"Fona darbības sākšana no pakotnes <xliff:g id="PACKAGENAME">%1$s</xliff:g> bloķēta. Skatiet rakstu g.co/dev/bgblock."</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Aizmirsu kombināciju"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"Nepareiza kombinācija"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"Nepareiza parole"</string> diff --git a/core/res/res/values-mk/strings.xml b/core/res/res/values-mk/strings.xml index ef4c401270f6..8bac7f612abe 100644 --- a/core/res/res/values-mk/strings.xml +++ b/core/res/res/values-mk/strings.xml @@ -581,7 +581,7 @@ </string-array> <string name="face_error_hw_not_available" msgid="396883585636963908">"Ликот не може да се потврди. Хардвер - недостапен."</string> <string name="face_error_timeout" msgid="3202585609451248103">"Пробајте ја проверката на лице повторно."</string> - <string name="face_error_no_space" msgid="2712120617457553825">"Не зачувува податоци за нов лик. Прво избришете стар."</string> + <string name="face_error_no_space" msgid="2712120617457553825">"Не се зачуваа податоците за нов лик. Избришете го стариот."</string> <string name="face_error_canceled" msgid="2768146728600802422">"Операцијата со лик се откажа"</string> <string name="face_error_user_canceled" msgid="9003022830076496163">"Проверката на ликот е откажана од корисникот"</string> <string name="face_error_lockout" msgid="3407426963155388504">"Премногу обиди. Обидете се повторно подоцна."</string> @@ -1130,8 +1130,10 @@ <string name="whichViewApplication" msgid="3272778576700572102">"Отвори со"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"Отвори со %1$s"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"Отвори"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"Дајте пристап да се отвораат линкови на <xliff:g id="HOST">%1$s</xliff:g> со"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"Дајте пристап да се отвораат линкови на <xliff:g id="HOST">%1$s</xliff:g> со <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> + <string name="whichOpenHostLinksWith" msgid="3788174881117226583">"Отворајте врски на <xliff:g id="HOST">%1$s</xliff:g> со"</string> + <string name="whichOpenLinksWith" msgid="6392123355599572804">"Отворајте врски со"</string> + <string name="whichOpenLinksWithApp" msgid="8225991685366651614">"Отворајте врски со <xliff:g id="APPLICATION">%1$s</xliff:g>"</string> + <string name="whichOpenHostLinksWithApp" msgid="3464470639011045589">"Отворајте врски на <xliff:g id="HOST">%1$s</xliff:g> со <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"Дозволи пристап"</string> <string name="whichEditApplication" msgid="144727838241402655">"Измени со"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"Измени со %1$s"</string> @@ -1586,6 +1588,7 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"Стартувај прелистувач?"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"Прифати повик?"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"Секогаш"</string> + <string name="activity_resolver_set_always" msgid="1422574191056490585">"Поставете на секогаш отворај"</string> <string name="activity_resolver_use_once" msgid="2404644797149173758">"Само еднаш"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"Поставки"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"%1$s не поддржува работен профил"</string> @@ -1615,8 +1618,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"Прекривка #<xliff:g id="ID">%1$d</xliff:g>"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g> : <xliff:g id="WIDTH">%2$d</xliff:g>х<xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", безбедно"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"Ова стартување активност во заднина од <xliff:g id="PACKAGENAME">%1$s</xliff:g> ќе се блокира во идните верзии на Q. Видете g.co/dev/bgblock."</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"Блокирано е стартување активност во заднина од <xliff:g id="PACKAGENAME">%1$s</xliff:g>. Видете g.co/dev/bgblock."</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Заборавив шема"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"Погрешна шема"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"Погрешна лозинка"</string> @@ -1670,18 +1671,12 @@ <string name="accessibility_shortcut_enabling_service" msgid="7771852911861522636">"Кратенката за пристапност ја вклучи <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> <string name="accessibility_shortcut_disabling_service" msgid="2747243438223109821">"Кратенката за пристапност ја исклучи <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> <string name="accessibility_shortcut_spoken_feedback" msgid="8376923232350078434">"Притиснете ги и задржете ги двете копчиња за јачина на звукот во траење од три секунди за да користите <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for accessibility_button_prompt_text (1176658502969738564) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8259145549733019401) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (1041435574275047665) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (7003212763213614833) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (5261788874937410950) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (4969448938984394550) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="1176658502969738564">"Изберете ја услугата што ќе ја користите кога ќе го допрете копчето за пристапност:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8259145549733019401">"Изберете ја услугата што ќе ја користите со движењето за пристапност (повлекување нагоре од дното на екранот со два прста):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="1041435574275047665">"Изберете ја услугата што ќе ја користите со движењето за пристапност (повлекување нагоре од дното на екранот со три прста):"</string> + <string name="accessibility_button_instructional_text" msgid="7003212763213614833">"За да се префрлате помеѓу услуги, допрете и задржете го копчето за пристапност."</string> + <string name="accessibility_gesture_instructional_text" msgid="5261788874937410950">"За да се префрлате помеѓу услуги, лизгајте нагоре со два прста и задржете."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="4969448938984394550">"За да се префрлате помеѓу услуги, лизгајте нагоре со три прста и задржете."</string> <string name="accessibility_magnification_chooser_text" msgid="1227146738764986237">"Зголемување"</string> <string name="user_switched" msgid="3768006783166984410">"Тековен корисник <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="2871009331809089783">"Се префрла на <xliff:g id="NAME">%1$s</xliff:g>…"</string> diff --git a/core/res/res/values-ml/strings.xml b/core/res/res/values-ml/strings.xml index 53c7ec9f1e8c..cf49ab2134df 100644 --- a/core/res/res/values-ml/strings.xml +++ b/core/res/res/values-ml/strings.xml @@ -131,8 +131,7 @@ <!-- no translation found for wfcSpnFormat_spn (4998685024207291232) --> <skip /> <string name="wfcSpnFormat_spn_wifi_calling" msgid="136001023263502280">"<xliff:g id="SPN">%s</xliff:g> വൈഫൈ കോളിംഗ്"</string> - <!-- no translation found for wfcSpnFormat_spn_wifi_calling_vo_hyphen (1730997175789582756) --> - <skip /> + <string name="wfcSpnFormat_spn_wifi_calling_vo_hyphen" msgid="1730997175789582756">"<xliff:g id="SPN">%s</xliff:g> വൈഫൈ കോളിംഗ്"</string> <string name="wfcSpnFormat_wlan_call" msgid="2533371081782489793">"WLAN കോൾ"</string> <string name="wfcSpnFormat_spn_wlan_call" msgid="2315240198303197168">"<xliff:g id="SPN">%s</xliff:g> WLAN കോൾ"</string> <string name="wfcSpnFormat_spn_wifi" msgid="6546481665561961938">"<xliff:g id="SPN">%s</xliff:g> വൈഫൈ"</string> @@ -1131,8 +1130,10 @@ <string name="whichViewApplication" msgid="3272778576700572102">"ഇത് ഉപയോഗിച്ച് തുറക്കുക"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"%1$s ഉപയോഗിച്ച് തുറക്കുക"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"തുറക്കുക"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"ഇനിപ്പറയുന്നത് ഉപയോഗിച്ച്, <xliff:g id="HOST">%1$s</xliff:g> ലിങ്കുകൾ തുറക്കാൻ ആക്സസ് നൽകുക"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"<xliff:g id="APPLICATION">%2$s</xliff:g> ഉപയോഗിച്ച്, <xliff:g id="HOST">%1$s</xliff:g> ലിങ്കുകൾ തുറക്കാൻ ആക്സസ് നൽകുക"</string> + <string name="whichOpenHostLinksWith" msgid="3788174881117226583">"ഇനിപ്പറയുന്നത് ഉപയോഗിച്ച് <xliff:g id="HOST">%1$s</xliff:g> ലിങ്കുകൾ തുറക്കുക"</string> + <string name="whichOpenLinksWith" msgid="6392123355599572804">"ഇനിപ്പറയുന്നത് ഉപയോഗിച്ച് ലിങ്കുകൾ തുറക്കുക"</string> + <string name="whichOpenLinksWithApp" msgid="8225991685366651614">"<xliff:g id="APPLICATION">%1$s</xliff:g> ഉപയോഗിച്ച് ലിങ്കുകൾ തുറക്കുക"</string> + <string name="whichOpenHostLinksWithApp" msgid="3464470639011045589">"<xliff:g id="HOST">%1$s</xliff:g> ലിങ്കുകൾ <xliff:g id="APPLICATION">%2$s</xliff:g> ഉപയോഗിച്ച് തുറക്കുക"</string> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"ആക്സസ് നൽകുക"</string> <string name="whichEditApplication" msgid="144727838241402655">"ഇത് ഉപയോഗിച്ച് എഡിറ്റുചെയ്യുക"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"%1$s ഉപയോഗിച്ച് എഡിറ്റുചെയ്യുക"</string> @@ -1585,6 +1586,7 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"ബ്രൗസർ സമാരംഭിക്കണോ?"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"കോൾ സ്വീകരിക്കണോ?"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"എല്ലായ്പ്പോഴും"</string> + <string name="activity_resolver_set_always" msgid="1422574191056490585">"\'എല്ലായ്പ്പോഴും തുറക്കുക\' എന്നതിലേക്കാക്കുക"</string> <string name="activity_resolver_use_once" msgid="2404644797149173758">"ഒരിക്കൽ മാത്രം"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"ക്രമീകരണം"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"%1$s, ഔദ്യോഗിക പ്രൊഫൈലിനെ പിന്തുണയ്ക്കുന്നില്ല"</string> @@ -1614,8 +1616,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"ഓവർലേ #<xliff:g id="ID">%1$d</xliff:g>"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g>x<xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", സുരക്ഷിതമാക്കുക"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"<xliff:g id="PACKAGENAME">%1$s</xliff:g> എന്നതിൽ നിന്ന് ഈ പശ്ചാത്തല ആക്റ്റിവിറ്റി ആരംഭിക്കുന്നത് ഭാവിയിലെ Q ബിൽഡുകളിൽ ബ്ലോക്ക് ചെയ്യപ്പെടും. g.co/dev/bgblock കാണുക."</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"<xliff:g id="PACKAGENAME">%1$s</xliff:g> എന്നതിൽ നിന്ന് പശ്ചാത്തല ആക്റ്റിവിറ്റി ആരംഭിക്കുന്നത് ബ്ലോക്ക് ചെയ്തു. g.co/dev/bgblock കാണുക."</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"പാറ്റേൺ മറന്നു"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"പാറ്റേൺ തെറ്റാണ്"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"പാസ്വേഡ് തെറ്റാണ്"</string> @@ -1669,18 +1669,12 @@ <string name="accessibility_shortcut_enabling_service" msgid="7771852911861522636">"ഉപയോഗസഹായിക്കുള്ള കുറുക്കുവഴി <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ഓൺ ചെയ്തിരിക്കുന്നു"</string> <string name="accessibility_shortcut_disabling_service" msgid="2747243438223109821">"ഉപയോഗസഹായിക്കുള്ള കുറുക്കുവഴി <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ഓഫ് ചെയ്തിരിക്കുന്നു"</string> <string name="accessibility_shortcut_spoken_feedback" msgid="8376923232350078434">"<xliff:g id="SERVICE_NAME">%1$s</xliff:g> ഉപയോഗിക്കാൻ, രണ്ട് വോളിയം കീകളും മൂന്ന് സെക്കൻഡ് അമർത്തിപ്പിടിക്കുക"</string> - <!-- no translation found for accessibility_button_prompt_text (1176658502969738564) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8259145549733019401) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (1041435574275047665) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (7003212763213614833) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (5261788874937410950) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (4969448938984394550) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="1176658502969738564">"നിങ്ങൾ ഉപയോഗസഹായി ബട്ടൺ ടാപ്പ് ചെയ്യുമ്പോൾ ഉപയോഗിക്കാൻ ഒരു ഫീച്ചർ തിരഞ്ഞെടുക്കുക:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8259145549733019401">"ഉപയോഗസഹായി വിരൽചലനത്തോടൊപ്പം ഉപയോഗിക്കാൻ ഒരു സർവീസ് തിരഞ്ഞെടുക്കുക (രണ്ട് വിരലുകളുപയോഗിച്ച് സ്ക്രീനിന്റെ താഴെ നിന്ന് മുകളിലോട്ട് സ്വൈപ്പ് ചെയ്യുക):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="1041435574275047665">"ഉപയോഗസഹായി വിരൽചലനത്തോടൊപ്പം ഉപയോഗിക്കാൻ ഒരു സർവീസ് തിരഞ്ഞെടുക്കുക (മൂന്ന് വിരലുകളുപയോഗിച്ച് സ്ക്രീനിന്റെ താഴെ നിന്ന് മുകളിലോട്ട് സ്വൈപ്പ് ചെയ്യുക):"</string> + <string name="accessibility_button_instructional_text" msgid="7003212763213614833">"സർവീസുകൾക്കിടയിൽ മാറാൻ, ഉപയോഗസഹായി ബട്ടൺ സ്പർശിച്ചുപിടിക്കുക."</string> + <string name="accessibility_gesture_instructional_text" msgid="5261788874937410950">"സർവീസുകൾക്കിടയിൽ മാറാൻ, രണ്ട് വിരലുകളുപയോഗിച്ച് മുകളിലോട്ട് സ്വൈപ്പ് ചെയ്ത് പിടിക്കുക."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="4969448938984394550">"സർവീസുകൾക്കിടയിൽ മാറാൻ, മൂന്ന് വിരലുകളുപയോഗിച്ച് മുകളിലോട്ട് സ്വൈപ്പ് ചെയ്ത് പിടിക്കുക."</string> <string name="accessibility_magnification_chooser_text" msgid="1227146738764986237">"മാഗ്നിഫിക്കേഷൻ"</string> <string name="user_switched" msgid="3768006783166984410">"നിലവിലെ ഉപയോക്താവ് <xliff:g id="NAME">%1$s</xliff:g> ആണ്."</string> <string name="user_switching_message" msgid="2871009331809089783">"<xliff:g id="NAME">%1$s</xliff:g> എന്ന ഉപയോക്താവിലേക്ക് മാറുന്നു…"</string> diff --git a/core/res/res/values-mn/strings.xml b/core/res/res/values-mn/strings.xml index 12183c3cffc9..c8cea4956bc8 100644 --- a/core/res/res/values-mn/strings.xml +++ b/core/res/res/values-mn/strings.xml @@ -131,8 +131,7 @@ <!-- no translation found for wfcSpnFormat_spn (4998685024207291232) --> <skip /> <string name="wfcSpnFormat_spn_wifi_calling" msgid="136001023263502280">"<xliff:g id="SPN">%s</xliff:g> Wi-Fi дуудлага"</string> - <!-- no translation found for wfcSpnFormat_spn_wifi_calling_vo_hyphen (1730997175789582756) --> - <skip /> + <string name="wfcSpnFormat_spn_wifi_calling_vo_hyphen" msgid="1730997175789582756">"<xliff:g id="SPN">%s</xliff:g> Wi-Fi Дуудлага"</string> <string name="wfcSpnFormat_wlan_call" msgid="2533371081782489793">"WLAN дуудлага"</string> <string name="wfcSpnFormat_spn_wlan_call" msgid="2315240198303197168">"<xliff:g id="SPN">%s</xliff:g> WLAN дуудлага"</string> <string name="wfcSpnFormat_spn_wifi" msgid="6546481665561961938">"<xliff:g id="SPN">%s</xliff:g> Wi-Fi"</string> @@ -268,7 +267,7 @@ <string name="notification_channel_retail_mode" msgid="6088920674914038779">"Жижиглэнгийн жишээ"</string> <string name="notification_channel_usb" msgid="9006850475328924681">"USB холболт"</string> <string name="notification_channel_heavy_weight_app" msgid="6218742927792852607">"Апп ажиллаж байна"</string> - <string name="notification_channel_foreground_service" msgid="3931987440602669158">"Апп батерей ашиглаж байна"</string> + <string name="notification_channel_foreground_service" msgid="3931987440602669158">"Апп батарей ашиглаж байна"</string> <string name="foreground_service_app_in_background" msgid="1060198778219731292">"<xliff:g id="APP_NAME">%1$s</xliff:g> батерей ашиглаж байна"</string> <string name="foreground_service_apps_in_background" msgid="7175032677643332242">"<xliff:g id="NUMBER">%1$d</xliff:g> апп батерей ашиглаж байна"</string> <string name="foreground_service_tap_for_details" msgid="372046743534354644">"Батерей, дата ашиглалтын талаар дэлгэрэнгүйг харахын тулд товшино уу"</string> @@ -888,7 +887,7 @@ <string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"Түгжээгүй хэсгийг өргөсгөх."</string> <string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"Тайлах гулсуулалт."</string> <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"Тайлах хээ."</string> - <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"Нүүрээр тайлах"</string> + <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"Царайгаар тайлах"</string> <string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"Тайлах пин."</string> <string name="keyguard_accessibility_sim_pin_unlock" msgid="9149698847116962307">"Sim-н пин кодыг тайлна уу."</string> <string name="keyguard_accessibility_sim_puk_unlock" msgid="9106899279724723341">"Sim-н Puk кодыг тайлна уу."</string> @@ -1131,8 +1130,10 @@ <string name="whichViewApplication" msgid="3272778576700572102">"Нээх"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"%1$s ашиглан нээх"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"Нээх"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"<xliff:g id="HOST">%1$s</xliff:g>-н холбоосыг дараахаар нээх хандалт өгөх"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"<xliff:g id="HOST">%1$s</xliff:g>-н холбоосыг <xliff:g id="APPLICATION">%2$s</xliff:g>-р нээх хандалт өгөх"</string> + <string name="whichOpenHostLinksWith" msgid="3788174881117226583">"<xliff:g id="HOST">%1$s</xliff:g>-н холбоосуудыг дараахаар нээх"</string> + <string name="whichOpenLinksWith" msgid="6392123355599572804">"Холбоосуудыг дараахаар нээх"</string> + <string name="whichOpenLinksWithApp" msgid="8225991685366651614">"Холбоосуудыг <xliff:g id="APPLICATION">%1$s</xliff:g>-р нээх"</string> + <string name="whichOpenHostLinksWithApp" msgid="3464470639011045589">"<xliff:g id="HOST">%1$s</xliff:g>-н холбоосуудыг <xliff:g id="APPLICATION">%2$s</xliff:g>-р нээх"</string> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"Хандалт өгөх"</string> <string name="whichEditApplication" msgid="144727838241402655">"Засварлах"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"%1$s ашиглан засварлах"</string> @@ -1584,6 +1585,7 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"Хөтөч ажиллуулах уу?"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"Дуудлагыг зөвшөөрөх үү?"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"Байнга"</string> + <string name="activity_resolver_set_always" msgid="1422574191056490585">"Тогтмол нээлттэй гэж тохируулах"</string> <string name="activity_resolver_use_once" msgid="2404644797149173758">"Нэг удаа"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"Тохиргоо"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"%1$s ажлын профайлыг дэмждэггүй"</string> @@ -1613,8 +1615,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"Давхарга #<xliff:g id="ID">%1$d</xliff:g>"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g>x<xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", найдвартай"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"<xliff:g id="PACKAGENAME">%1$s</xliff:g>-с эхлэх арын энэ үйл ажиллагааг цаашдын Q боловсруулагдсан программд хориглоно. Та g.co/dev/bgblock холбоосыг харна уу."</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"<xliff:g id="PACKAGENAME">%1$s</xliff:g>-с эхлэх арын үйл ажиллагааг хориглосон. Та g.co/dev/bgblock холбоосыг харна уу."</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Хээг мартсан"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"Буруу хээ"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"Нууц үг буруу"</string> @@ -1668,18 +1668,12 @@ <string name="accessibility_shortcut_enabling_service" msgid="7771852911861522636">"Хүртээмжийн товчлол <xliff:g id="SERVICE_NAME">%1$s</xliff:g>-г асаасан"</string> <string name="accessibility_shortcut_disabling_service" msgid="2747243438223109821">"Хүртээмжийн товчлол <xliff:g id="SERVICE_NAME">%1$s</xliff:g>-г унтраасан"</string> <string name="accessibility_shortcut_spoken_feedback" msgid="8376923232350078434">"<xliff:g id="SERVICE_NAME">%1$s</xliff:g>-г ашиглахын тулд дууны түвшнийг ихэсгэх, багасгах түлхүүрийг 3 секундийн турш зэрэг дарна уу"</string> - <!-- no translation found for accessibility_button_prompt_text (1176658502969738564) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8259145549733019401) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (1041435574275047665) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (7003212763213614833) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (5261788874937410950) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (4969448938984394550) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="1176658502969738564">"Хандалтын товчлуурыг товшихдоо ашиглах үйлчилгээг сонгоно уу:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8259145549733019401">"Хандалтын зангаатай ашиглах үйлчилгээг сонгоно уу (хоёр хуруугаараа дэлгэцийн доороос дээш шударна уу):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="1041435574275047665">"Хандалтын зангаатай ашиглах үйлчилгээг сонгоно уу (гурван хуруугаараа дэлгэцийн доороос дээш шударна уу):"</string> + <string name="accessibility_button_instructional_text" msgid="7003212763213614833">"Үйлчилгээнүүд хооронд сэлгэхийн тулд хандалтын товчлуурт хүрээд удаан дарна уу."</string> + <string name="accessibility_gesture_instructional_text" msgid="5261788874937410950">"Үйлчилгээнүүд хооронд сэлгэхийн тулд хоёр хуруугаараа дээш шудраад удаан дарна уу."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="4969448938984394550">"Үйлчилгээнүүд хооронд сэлгэхийн тулд гурван хуруугаараа дээш шудраад удаан дарна уу."</string> <string name="accessibility_magnification_chooser_text" msgid="1227146738764986237">"Томруулах"</string> <string name="user_switched" msgid="3768006783166984410">"Одоогийн хэрэглэгч <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="2871009331809089783">"<xliff:g id="NAME">%1$s</xliff:g> руу сэлгэж байна…"</string> diff --git a/core/res/res/values-mr/strings.xml b/core/res/res/values-mr/strings.xml index a8fb9c122665..b50cc567f470 100644 --- a/core/res/res/values-mr/strings.xml +++ b/core/res/res/values-mr/strings.xml @@ -131,8 +131,7 @@ <!-- no translation found for wfcSpnFormat_spn (4998685024207291232) --> <skip /> <string name="wfcSpnFormat_spn_wifi_calling" msgid="136001023263502280">"<xliff:g id="SPN">%s</xliff:g> वाय-फाय कॉलिंग"</string> - <!-- no translation found for wfcSpnFormat_spn_wifi_calling_vo_hyphen (1730997175789582756) --> - <skip /> + <string name="wfcSpnFormat_spn_wifi_calling_vo_hyphen" msgid="1730997175789582756">"<xliff:g id="SPN">%s</xliff:g> वाय-फाय कॉलिंग"</string> <string name="wfcSpnFormat_wlan_call" msgid="2533371081782489793">"WLAN कॉल"</string> <string name="wfcSpnFormat_spn_wlan_call" msgid="2315240198303197168">"<xliff:g id="SPN">%s</xliff:g> WLAN कॉल"</string> <string name="wfcSpnFormat_spn_wifi" msgid="6546481665561961938">"<xliff:g id="SPN">%s</xliff:g> वाय-फाय"</string> @@ -220,7 +219,7 @@ <string name="reboot_safemode_title" msgid="7054509914500140361">"सुरक्षित मोडमध्ये रीबूट करा"</string> <string name="reboot_safemode_confirm" msgid="55293944502784668">"तुम्ही सुरक्षित मोडमध्ये रीबूट करू इच्छिता? हे तुम्ही इंस्टॉल केलेले सर्व तृतीय पक्ष अॅप्लिकेशन अक्षम करेल. तुम्ही पुन्हा रीबूट करता तेव्हा ते पुनर्संचयित केले जातील."</string> <string name="recent_tasks_title" msgid="3691764623638127888">"अलीकडील"</string> - <string name="no_recent_tasks" msgid="8794906658732193473">"अलीकडील कोणतेही अॅप्स नाहीत."</string> + <string name="no_recent_tasks" msgid="8794906658732193473">"अलीकडील कोणतेही अॅप्स नाहीत."</string> <string name="global_actions" product="tablet" msgid="408477140088053665">"टॅबलेट पर्याय"</string> <string name="global_actions" product="tv" msgid="7240386462508182976">"टीव्ही पर्याय"</string> <string name="global_actions" product="default" msgid="2406416831541615258">"फोन पर्याय"</string> @@ -257,7 +256,7 @@ <string name="notification_channel_security" msgid="7345516133431326347">"सुरक्षितता"</string> <string name="notification_channel_car_mode" msgid="3553380307619874564">"कार मोड"</string> <string name="notification_channel_account" msgid="7577959168463122027">"खाते स्थिती"</string> - <string name="notification_channel_developer" msgid="7579606426860206060">"विकसक मेसेज"</string> + <string name="notification_channel_developer" msgid="7579606426860206060">"डेव्हलपर मेसेज"</string> <string name="notification_channel_updates" msgid="4794517569035110397">"अपडेट"</string> <string name="notification_channel_network_status" msgid="5025648583129035447">"नेटवर्क स्थिती"</string> <string name="notification_channel_network_alerts" msgid="2895141221414156525">"नेटवर्क सूचना"</string> @@ -268,7 +267,7 @@ <string name="notification_channel_retail_mode" msgid="6088920674914038779">"रीटेल डेमो"</string> <string name="notification_channel_usb" msgid="9006850475328924681">"USB कनेक्शन"</string> <string name="notification_channel_heavy_weight_app" msgid="6218742927792852607">"APP चालत आहे"</string> - <string name="notification_channel_foreground_service" msgid="3931987440602669158">"अॅप्समुळे बॅटरी संपत आहे"</string> + <string name="notification_channel_foreground_service" msgid="3931987440602669158">"बॅटरी लवकर संपवणारी अॅप्स"</string> <string name="foreground_service_app_in_background" msgid="1060198778219731292">"<xliff:g id="APP_NAME">%1$s</xliff:g> बॅटरी वापरत आहे"</string> <string name="foreground_service_apps_in_background" msgid="7175032677643332242">"<xliff:g id="NUMBER">%1$d</xliff:g> अॅप्स बॅटरी वापरत आहेत"</string> <string name="foreground_service_tap_for_details" msgid="372046743534354644">"बॅटरी आणि डेटा वापराच्या तपशीलांसाठी टॅप करा"</string> @@ -279,21 +278,21 @@ <string name="managed_profile_label" msgid="8947929265267690522">"कार्य प्रोफाइलवर स्विच करा"</string> <string name="permgrouplab_contacts" msgid="3657758145679177612">"संपर्क"</string> <string name="permgroupdesc_contacts" msgid="6951499528303668046">"आपल्या संपर्कांवर प्रवेश"</string> - <string name="permgrouprequest_contacts" msgid="6032805601881764300">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ला तुमचे संपर्क अॅक्सेस करू द्यायचे?"</string> + <string name="permgrouprequest_contacts" msgid="6032805601881764300">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ला तुमचे संपर्क अॅक्सेस करू द्यायचे?"</string> <string name="permgrouplab_location" msgid="7275582855722310164">"स्थान"</string> <string name="permgroupdesc_location" msgid="1346617465127855033">"या डिव्हाइसच्या स्थानावर प्रवेश"</string> <string name="permgrouprequest_location" msgid="3788275734953323491">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ला या डिव्हाइसचे स्थान अॅक्सेस करू द्यायचे?"</string> - <string name="permgrouprequestdetail_location" msgid="1347189607421252902">"तुम्ही अॅप वापरत असताना अॅपला फक्त स्थानाचा अॅक्सेस असेल"</string> + <string name="permgrouprequestdetail_location" msgid="1347189607421252902">"तुम्ही अॅप वापरत असताना अॅपला फक्त स्थानाचा अॅक्सेस असेल"</string> <string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ला <b>प्रत्येक वेळी</b> या डिव्हाइसच्या स्थानाचा अॅक्सेस द्यायचा?"</string> <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"अॅप सध्या फक्त तुम्ही अॅप वापरत असतानाच स्थान अॅक्सेस करू शकते"</string> <string name="permgrouplab_calendar" msgid="5863508437783683902">"कॅलेंडर"</string> <string name="permgroupdesc_calendar" msgid="3889615280211184106">"आपल्या कॅलेंडरवर प्रवेश"</string> - <string name="permgrouprequest_calendar" msgid="289900767793189421">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ला तुमचे कॅलेंडर अॅक्सेस करू द्यायचे?"</string> + <string name="permgrouprequest_calendar" msgid="289900767793189421">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ला तुमचे कॅलेंडर अॅक्सेस करू द्यायचे?"</string> <string name="permgrouplab_sms" msgid="228308803364967808">"SMS"</string> <string name="permgroupdesc_sms" msgid="4656988620100940350">"SMS मेसेज पाठवणे आणि पाहणे हे"</string> <string name="permgrouprequest_sms" msgid="7168124215838204719">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ला एसएमएस पाठवू आणि पाहू द्यायचे?"</string> <string name="permgrouplab_storage" msgid="1971118770546336966">"स्टोरेज"</string> - <string name="permgroupdesc_storage" msgid="637758554581589203">"तुमच्या डिव्हाइस वरील फोटो, मीडिया आणि फायलींमध्ये अॅक्सेस"</string> + <string name="permgroupdesc_storage" msgid="637758554581589203">"तुमच्या डिव्हाइस वरील फोटो, मीडिया आणि फायलींमध्ये अॅक्सेस"</string> <string name="permgrouprequest_storage" msgid="7885942926944299560">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ला तुमच्या डिव्हाइसवरील फोटो, मीडिया आणि फायली अॅक्सेस करू द्यायचे?"</string> <string name="permgrouplab_microphone" msgid="171539900250043464">"मायक्रोफोन"</string> <string name="permgroupdesc_microphone" msgid="4988812113943554584">"ऑडिओ रेकॉर्ड"</string> @@ -306,13 +305,13 @@ <string name="permgrouprequest_camera" msgid="1299833592069671756">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ला फोटो घेऊ आणि व्हिडिओ रेकॉर्ड करू द्यायचे?"</string> <string name="permgrouplab_calllog" msgid="8798646184930388160">"कॉल लॉग"</string> <string name="permgroupdesc_calllog" msgid="3006237336748283775">"फोन कॉल लॉग वाचा आणि लिहा"</string> - <string name="permgrouprequest_calllog" msgid="8487355309583773267">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ला तुमचे फोन कॉल लॉग अॅक्सेस करण्याची अनुमती द्यायची का?"</string> + <string name="permgrouprequest_calllog" msgid="8487355309583773267">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ला तुमचे फोन कॉल लॉग अॅक्सेस करण्याची अनुमती द्यायची का?"</string> <string name="permgrouplab_phone" msgid="5229115638567440675">"फोन"</string> <string name="permgroupdesc_phone" msgid="6234224354060641055">"फोन कॉल आणि व्यवस्थापित"</string> <string name="permgrouprequest_phone" msgid="9166979577750581037">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ला फोन कॉल करू आणि ते व्यवस्थापित करू द्यायचे?"</string> <string name="permgrouplab_sensors" msgid="4838614103153567532">"शरीर सेन्सर"</string> - <string name="permgroupdesc_sensors" msgid="7147968539346634043">"आपल्या महत्त्वाच्या मापनांविषयी सेंसर डेटा अॅक्सेस करा"</string> - <string name="permgrouprequest_sensors" msgid="6349806962814556786">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ला तुमच्या महत्त्वाच्या लक्षणांविषयीचा सेन्सर डेटा अॅक्सेस करू द्यायचे?"</string> + <string name="permgroupdesc_sensors" msgid="7147968539346634043">"आपल्या महत्त्वाच्या मापनांविषयी सेंसर डेटा अॅक्सेस करा"</string> + <string name="permgrouprequest_sensors" msgid="6349806962814556786">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ला तुमच्या महत्त्वाच्या लक्षणांविषयीचा सेन्सर डेटा अॅक्सेस करू द्यायचे?"</string> <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"विंडोमधील आशय पुन्हा मिळवा"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"तुम्ही वापरत असलेल्या विंडोमधील आशय तपासा."</string> <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"स्पर्श करून अन्वेषण चालू करा"</string> @@ -355,15 +354,15 @@ <string name="permdesc_readSms" product="default" msgid="6826832415656437652">"हा अॅप तुमच्या फोनवर स्टोअर केलेले सर्व SMS (मजकूर) मेसेज वाचू शकतो."</string> <string name="permlab_receiveWapPush" msgid="5991398711936590410">"मजकूर मेसेज मिळवा (WAP)"</string> <string name="permdesc_receiveWapPush" msgid="748232190220583385">"WAP मेसेज प्राप्त करण्यास आणि त्यावर प्रक्रिया करण्यासाठी अॅप ला अनुमती देते. ही परवानगी तुम्हाला पाठविलेले मेसेज तुम्हाला न दर्शविता त्यांचे परीक्षण करण्याची आणि ते हटविण्याची क्षमता समाविष्ट करते."</string> - <string name="permlab_getTasks" msgid="6466095396623933906">"चालणारे अॅप्स पुनर्प्राप्त करा"</string> + <string name="permlab_getTasks" msgid="6466095396623933906">"चालणारे अॅप्स पुनर्प्राप्त करा"</string> <string name="permdesc_getTasks" msgid="7454215995847658102">"सध्या आणि अलीकडे चालणार्या कार्यांविषयी माहिती पुनर्प्राप्त करण्यासाठी अॅप ला अनुमती देते. हे डिव्हाइसवर कोणते अॅप्लिकेशन वापरले जात आहेत त्याविषयी माहिती शोधण्यासाठी अॅप ला अनुमती देऊ शकतात."</string> <string name="permlab_manageProfileAndDeviceOwners" msgid="7918181259098220004">"प्रोफाईल आणि डिव्हाइस मालक व्यवस्थापित करा"</string> <string name="permdesc_manageProfileAndDeviceOwners" msgid="106894851498657169">"प्रोफाईल मालक आणि डिव्हाइस मालक सेट करण्याची अॅप्सना अनुमती द्या."</string> - <string name="permlab_reorderTasks" msgid="2018575526934422779">"चालणारे अॅप्स पुनर्क्रमित करा"</string> + <string name="permlab_reorderTasks" msgid="2018575526934422779">"चालणारे अॅप्स पुनर्क्रमित करा"</string> <string name="permdesc_reorderTasks" msgid="7734217754877439351">"समोर आणि पार्श्वभूमीवर कार्ये हलविण्यासाठी अॅप ला अनुमती देते. अॅप हे आपल्या इनपुटशिवाय करू शकतो."</string> <string name="permlab_enableCarMode" msgid="5684504058192921098">"कार मोड सुरू करा"</string> <string name="permdesc_enableCarMode" msgid="4853187425751419467">"कार मोड सक्षम करण्यासाठी अॅप ला अनुमती देते."</string> - <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"अन्य अॅप्स बंद करा"</string> + <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"अन्य अॅप्स बंद करा"</string> <string name="permdesc_killBackgroundProcesses" msgid="4593353235959733119">"अन्य अॅप्सच्या पार्श्वभूमी प्रक्रिया समाप्त करण्यासाठी अॅप ला अनुमती देते. यामुळे अन्य अॅप्स चालणे थांबू शकते."</string> <string name="permlab_systemAlertWindow" msgid="7238805243128138690">"हा अॅप इतर अॅप्सच्या शीर्षस्थानी दिसू शकतो."</string> <string name="permdesc_systemAlertWindow" msgid="2393776099672266188">"हे अॅप इतर अॅप्सच्या शीर्षस्थानी किंवा स्क्रीनच्या इतर भागांवर दिसू शकतो. हे सामान्य अॅप वापरात व्यत्यय आणू शकते किंवा इतर अॅप्सची डिस्प्ले पद्धत बदलू शकते."</string> @@ -391,7 +390,7 @@ <string name="permdesc_broadcastSticky" product="default" msgid="2825803764232445091">"रोचक प्रसारणे पाठविण्यासाठी अॅप ला अनुमती देते, जे प्रसारण समाप्त झाल्यानंतर देखील तसेच राहते. अत्याधिक वापरामुळे बरीच मेमरी वापरली जाऊन तो फोनला धीमा किंवा अस्थिर करू शकतो."</string> <string name="permlab_readContacts" msgid="8348481131899886131">"तुमचे संपर्क वाचा"</string> <string name="permdesc_readContacts" product="tablet" msgid="5294866856941149639">"तुम्ही कॉल केलेल्या, ईमेल केलेल्या किंवा विशिष्ट लोकांशी अन्य मार्गांनी संवाद प्रस्थापित केलेल्या लोकांच्या फ्रिक्वेन्सीसह, आपल्या टॅब्लेटवर स्टोअर केलेल्या आपल्या संपर्कांविषयीचा डेटा वाचण्यासाठी अॅप ला अनुमती देते. ही परवानगी तुमचा संपर्क डेटा सेव्ह करण्याची अॅप्स ला अनुमती देते आणि दुर्भावनापूर्ण अॅप्स आपल्या माहितीशिवाय संपर्क डेटा शेअर करू शकतात."</string> - <string name="permdesc_readContacts" product="tv" msgid="1839238344654834087">"तुम्ही विशिष्ट लोकांना इतर मार्गांनी कॉल केलेल्या, ईमेल केलेल्या किंवा संप्रेषित केलेल्या फ्रिक्वेन्सीसह, आपल्या टीव्हीवर स्टोअर केलेल्या आपल्या संपर्कांविषयीचा डेटा वाचण्यासाठी अॅप्सला अनुमती देतात. ही परवागनी अॅप्सला तुमचा संपर्क डेटा सेव्ह करण्यासाठी अनुमती देते आणि दुर्भावनापूर्ण अॅप्स तुम्हाला न कळविता संपर्क डेटा शेअर करू शकतात."</string> + <string name="permdesc_readContacts" product="tv" msgid="1839238344654834087">"तुम्ही विशिष्ट लोकांना इतर मार्गांनी कॉल केलेल्या, ईमेल केलेल्या किंवा संप्रेषित केलेल्या फ्रिक्वेन्सीसह, आपल्या टीव्हीवर स्टोअर केलेल्या आपल्या संपर्कांविषयीचा डेटा वाचण्यासाठी अॅप्सला अनुमती देतात. ही परवागनी अॅप्सला तुमचा संपर्क डेटा सेव्ह करण्यासाठी अनुमती देते आणि दुर्भावनापूर्ण अॅप्स तुम्हाला न कळविता संपर्क डेटा शेअर करू शकतात."</string> <string name="permdesc_readContacts" product="default" msgid="8440654152457300662">"तुम्ही कॉल केलेल्या, ईमेल केलेल्या किंवा विशिष्ट लोकांशी अन्य मार्गांनी संवाद प्रस्थापित केलेल्या लोकांच्या फ्रिक्वेन्सीसह, आपल्या फोनवर स्टोअर केलेल्या आपल्या संपर्कांविषयीचा डेटा वाचण्यासाठी अॅप ला अनुमती देते. ही परवानगी तुमचा संपर्क डेटा सेव्ह करण्याची अॅप्स ला अनुमती देते आणि दुर्भावनापूर्ण अॅप्स आपल्या माहितीशिवाय संपर्क डेटा शेअर करू शकतात."</string> <string name="permlab_writeContacts" msgid="5107492086416793544">"तुमचे संपर्क सुधारित करा"</string> <string name="permdesc_writeContacts" product="tablet" msgid="897243932521953602">"तुम्ही विशिष्ट संपर्कांशी अन्य मार्गांनी कॉल केलेल्या, ईमेल केलेल्या किंवा संवाद प्रस्थापित केलेल्या फ्रिक्वेन्सीसह, आपल्या टॅब्लेटवर स्टोअर केलेल्या आपल्या संपर्कांविषयीचा डेटा सुधारित करण्यासाठी अॅप ला अनुमती देते. ही परवानगी संपर्क डेटा हटविण्यासाठी अॅप ला अनुमती देते."</string> @@ -401,9 +400,9 @@ <string name="permdesc_readCallLog" msgid="3204122446463552146">"हा अॅप तुमचा कॉल इतिहास वाचू शकता."</string> <string name="permlab_writeCallLog" msgid="8552045664743499354">"कॉल लॉग लिहा"</string> <string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"येणार्या आणि केल्या जाणार्या कॉलविषयीच्या डेटासह, आपल्या टॅब्लेटचा कॉल लॉग सुधारित करण्यासाठी अॅप ला अनुमती देते. दुर्भावनापूर्ण अॅप्स तुमचा कॉल लॉग मिटवण्यासाठी किंवा सुधारित करण्यासाठी याचा वापर करू शकतात."</string> - <string name="permdesc_writeCallLog" product="tv" msgid="4225034892248398019">"येणार्या आणि केल्या जाणार्या कॉलविषयीच्या डेटासह, आपल्या टीव्हीचा कॉल लॉग सुधारित करण्यासाठी अॅपला अनुमती देते. दुर्भावनापूर्ण अॅप्स तुमचा कॉल लॉग मिटवण्यासाठी किंवा सुधारित करण्यासाठी याचा वापर करू शकतात."</string> + <string name="permdesc_writeCallLog" product="tv" msgid="4225034892248398019">"येणार्या आणि केल्या जाणार्या कॉलविषयीच्या डेटासह, आपल्या टीव्हीचा कॉल लॉग सुधारित करण्यासाठी अॅपला अनुमती देते. दुर्भावनापूर्ण अॅप्स तुमचा कॉल लॉग मिटवण्यासाठी किंवा सुधारित करण्यासाठी याचा वापर करू शकतात."</string> <string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"येणार्या आणि केल्या जाणार्या कॉलविषयीच्या डेटासह, आपल्या फोनचा कॉल लॉग सुधारित करण्यासाठी अॅप ला अनुमती देते. दुर्भावनापूर्ण अॅप्स तुमचा कॉल लॉग मिटवण्यासाठी किंवा सुधारित करण्यासाठी याचा वापर करू शकतात."</string> - <string name="permlab_bodySensors" msgid="4683341291818520277">"शरीर सेंसर (हृदय गती मॉनिटरसारखे) अॅक्सेस करा"</string> + <string name="permlab_bodySensors" msgid="4683341291818520277">"शरीर सेंसर (हृदय गती मॉनिटरसारखे) अॅक्सेस करा"</string> <string name="permdesc_bodySensors" product="default" msgid="4380015021754180431">"हृदय गती सारख्या, आपल्या शारीरिक स्थितीचे नियंत्रण करणार्या सेन्सरवरून डेटामध्ये प्रवेश करण्यासाठी अॅपला अनुमती देते."</string> <string name="permlab_readCalendar" msgid="6716116972752441641">"कॅलेंडर इव्हेंट आणि तपशील वाचा"</string> <string name="permdesc_readCalendar" product="tablet" msgid="4993979255403945892">"हा अॅप आपल्या टॅब्लेटवर स्टोअर केलेले सर्व कॅलेंडर इव्हेंट वाचू आणि शेअर करू शकतो किंवा तुमचा कॅलेंडर डेटा सेव्ह करू शकतो."</string> @@ -413,7 +412,7 @@ <string name="permdesc_writeCalendar" product="tablet" msgid="1675270619903625982">"हा अॅप आपल्या टॅब्लेटवर कॅलेंडर इव्हेंट जोडू, काढू किंवा बदलू शकतो. हा अॅप कॅलेंडर मालकांकडून येत आहेत असे वाटणारे मेसेज पाठवू किंवा त्यांच्या मालकांना सूचित केल्याशिवाय इव्हेंट बदलू शकतो."</string> <string name="permdesc_writeCalendar" product="tv" msgid="9017809326268135866">"हा अॅप आपल्या टीव्हीवर कॅलेंडर इव्हेंट जोडू, काढू किंवा बदलू शकतो. हा अॅप कॅलेंडर मालकांकडून येत आहेत असे वाटणारे मेसेज पाठवू किंवा त्यांच्या मालकांना सूचित केल्याशिवाय इव्हेंट बदलू शकतो."</string> <string name="permdesc_writeCalendar" product="default" msgid="7592791790516943173">"हा अॅप आपल्या फोनवर कॅलेंडर इव्हेंट जोडू, काढू किंवा बदलू शकतो. हा अॅप कॅलेंडर मालकांकडून येत आहेत असे वाटणारे मेसेज पाठवू किंवा त्यांच्या मालकांना सूचित केल्याशिवाय इव्हेंट बदलू शकतो."</string> - <string name="permlab_accessLocationExtraCommands" msgid="2836308076720553837">"अतिरिक्त स्थान प्रदाता आदेश अॅक्सेस करा"</string> + <string name="permlab_accessLocationExtraCommands" msgid="2836308076720553837">"अतिरिक्त स्थान प्रदाता आदेश अॅक्सेस करा"</string> <string name="permdesc_accessLocationExtraCommands" msgid="6078307221056649927">"अॅपला अतिरिक्त स्थान प्रदाता आदेशावर प्रवेश करण्याची अनुमती देते. हे कदाचित अॅपला GPS किंवा इतर स्थान स्रोत च्या ऑपरेशनमध्ये हस्तक्षेप करण्याची अनुमती देऊ शकते."</string> <string name="permlab_accessFineLocation" msgid="6265109654698562427">"फक्त फोरग्राउंडमध्ये अचूकपणे अॅक्सेस करा"</string> <string name="permdesc_accessFineLocation" msgid="3520508381065331098">"हे अॅप फक्त फोरग्राउंडमध्ये असतानाच तुमचे अचूक स्थान मिळवू शकते. या स्थान सेवा सुरू करणे आणि त्या वापरण्यासाठी अॅपसाठी तुमच्या फोनवर उपलब्ध करणे आवश्यक आहे, यामुळे बॅटरी वापर वाढू शकतो."</string> @@ -421,8 +420,8 @@ <string name="permdesc_accessCoarseLocation" product="tablet" msgid="8594719010575779120">"हे अॅप फक्त फोरग्राउंडमध्ये असतानाच, सेल टॉवर आणि वाय-फाय नेटवर्क सारख्या नेटवर्क स्रोतवर आधारित तुमचे स्थान मिळवू शकते. त्या वापरण्याकरता अॅपसाठी, या स्थान सेवा सुरू करणे आणि त्या तुमच्या टॅबलेटवर उपलब्ध करणे आवश्यक आहे."</string> <string name="permdesc_accessCoarseLocation" product="tv" msgid="3027871910200890806">"हे अॅप फक्त फोरग्राउंडमध्ये असतानाच, सेल टॉवर आणि वाय-फाय नेटवर्क सारख्या नेटवर्क स्रोतवर आधारित तुमचे स्थान मिळवू शकते. त्या वापरण्याकरता अॅपसाठी, या स्थान सेवा सुरू करणे आणि त्या तुमच्या टीव्हीवर उपलब्ध करणे आवश्यक आहे."</string> <string name="permdesc_accessCoarseLocation" product="default" msgid="854896049371048754">"हे अॅप फक्त फोरग्राउंडमध्ये असतानाच, सेल टॉवर आणि वाय-फाय नेटवर्क सारख्या नेटवर्क स्रोतवर आधारित तुमचे स्थान मिळवू शकते. ते वापरण्याकरता अॅपसाठी, या स्थान सेवा सुरू करणे आणि त्या तुमच्या फोनवर उपलब्ध करणे आवश्यक आहे."</string> - <string name="permlab_accessBackgroundLocation" msgid="3965397804300661062">"बॅकग्राउंडमध्ये स्थान अॅक्सेस करू शकतो"</string> - <string name="permdesc_accessBackgroundLocation" msgid="1096394429579210251">"याला अंदाजे किंवा अचूक स्थान अॅक्सेस करण्यास अतिरिक्त मंजूरी दिल्यास, बॅकग्राउंडमध्ये चालतांना अॅप स्थान अॅक्सेस करू शकतो."</string> + <string name="permlab_accessBackgroundLocation" msgid="3965397804300661062">"बॅकग्राउंडमध्ये स्थान अॅक्सेस करू शकतो"</string> + <string name="permdesc_accessBackgroundLocation" msgid="1096394429579210251">"याला अंदाजे किंवा अचूक स्थान अॅक्सेस करण्यास अतिरिक्त मंजूरी दिल्यास, बॅकग्राउंडमध्ये चालतांना अॅप स्थान अॅक्सेस करू शकतो."</string> <string name="permlab_modifyAudioSettings" msgid="6095859937069146086">"आपल्या ऑडिओ सेटिंग्ज बदला"</string> <string name="permdesc_modifyAudioSettings" msgid="3522565366806248517">"व्हॉल्यूम आणि आउटपुटसाठी कोणता स्पीकर वापरला आहे यासारख्या समग्र ऑडिओ सेटिंग्ज सुधारित करण्यासाठी अॅप ला अनुमती देते."</string> <string name="permlab_recordAudio" msgid="3876049771427466323">"ऑडिओ रेकॉर्ड"</string> @@ -437,10 +436,10 @@ <string name="permdesc_vibrate" msgid="6284989245902300945">"अॅप ला व्हायब्रेटर नियंत्रित करण्यासाठी अनुमती देते."</string> <string name="permlab_callPhone" msgid="3925836347681847954">"फोन नंबरवर प्रत्यक्ष कॉल करा"</string> <string name="permdesc_callPhone" msgid="3740797576113760827">"आपल्या हस्तक्षेपाशिवाय फोन नंबरवर कॉल करण्यासाठी अॅप ला अनुमती देते. यामुळे अनपेक्षित शुल्क किंवा कॉल लागू शकतात. लक्षात ठेवा की हे आणीबाणीच्या नंबरवर कॉल करण्यासाठी अॅप ला अनुमती देत नाही. दुर्भावनापूर्ण अॅप्स नी आपल्या पुष्टिकरणाशिवाय कॉल केल्यामुळे तुमचे पैसे खर्च होऊ शकतात."</string> - <string name="permlab_accessImsCallService" msgid="3574943847181793918">"IMS कॉल सेवा अॅक्सेस करा"</string> + <string name="permlab_accessImsCallService" msgid="3574943847181793918">"IMS कॉल सेवा अॅक्सेस करा"</string> <string name="permdesc_accessImsCallService" msgid="8992884015198298775">"आपल्या हस्तक्षेपाशिवाय अॅपला कॉल करण्यासाठी IMS सेवा वापरण्याची अनुमती देते."</string> <string name="permlab_readPhoneState" msgid="9178228524507610486">"फोन स्थिती आणि ओळख वाचा"</string> - <string name="permdesc_readPhoneState" msgid="1639212771826125528">"डिव्हाइस च्या फोन वैशिष्ट्यांवर अॅक्सेस करण्यास अॅपला अनुमती देते. ही परवानगी कॉल अॅक्टिव्हेट असला किंवा नसला तरीही, फोन नंबर आणि डिव्हाइस आयडी आणि कॉलद्वारे कनेक्ट केलेला रिमोट नंबर निर्धारित करण्यासाठी अॅपला अनुमती देते."</string> + <string name="permdesc_readPhoneState" msgid="1639212771826125528">"डिव्हाइस च्या फोन वैशिष्ट्यांवर अॅक्सेस करण्यास अॅपला अनुमती देते. ही परवानगी कॉल अॅक्टिव्हेट असला किंवा नसला तरीही, फोन नंबर आणि डिव्हाइस आयडी आणि कॉलद्वारे कनेक्ट केलेला रिमोट नंबर निर्धारित करण्यासाठी अॅपला अनुमती देते."</string> <string name="permlab_manageOwnCalls" msgid="1503034913274622244">"प्रणालीच्या माध्यमातून कॉल रूट करा"</string> <string name="permdesc_manageOwnCalls" msgid="6552974537554717418">"कॉल करण्याचा अनुभव सुधारण्यासाठी अॅपला त्याचे कॉल प्रणालीच्या माध्यमातून रूट करू देते."</string> <string name="permlab_callCompanionApp" msgid="3599252979411970473">"सिस्टम वापरून कॉल पाहा आणि नियंत्रण ठेवा."</string> @@ -482,12 +481,12 @@ <string name="permlab_accessWifiState" msgid="5202012949247040011">"वाय-फाय कनेक्शन पहा"</string> <string name="permdesc_accessWifiState" msgid="5002798077387803726">"वाय-फाय सक्षम केले आहे किंवा नाही आणि कनेक्ट केलेल्या वाय-फाय डीव्हाइसचे नाव यासारख्या, वाय-फाय नेटवर्किंग विषयीची माहिती पाहण्यासाठी अॅप ला अनुमती देते."</string> <string name="permlab_changeWifiState" msgid="6550641188749128035">"वाय-फाय वरून कनेक्ट करा आणि डिस्कनेक्ट करा"</string> - <string name="permdesc_changeWifiState" msgid="7137950297386127533">"वाय-फाय अॅक्सेस बिंदूंवर कनेक्ट करण्यासाठी आणि त्यावरून डिस्कनेक्ट करण्यासाठी आणि वाय-फाय नेटवर्कसाठी डिव्हाइस कॉंफिगरेशनमध्ये बदल करण्यासाठी अॅपला अनुमती देते."</string> + <string name="permdesc_changeWifiState" msgid="7137950297386127533">"वाय-फाय अॅक्सेस बिंदूंवर कनेक्ट करण्यासाठी आणि त्यावरून डिस्कनेक्ट करण्यासाठी आणि वाय-फाय नेटवर्कसाठी डिव्हाइस कॉंफिगरेशनमध्ये बदल करण्यासाठी अॅपला अनुमती देते."</string> <string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"वाय-फाय मल्टिकास्ट रिसेप्शनला अनुमती द्या"</string> <string name="permdesc_changeWifiMulticastState" product="tablet" msgid="7969774021256336548">"मल्टिकास्ट पत्ते वापरून फक्त तुमच्या टॅब्लेटवर नाही, तर वाय-फाय नेटवर्कवरील सर्व डीव्हाइसवर पाठविलेले पॅकेट प्राप्त करण्यासाठी अॅप ला अनुमती देते. हे मल्टिकास्टखेरिज इतर मोडसाठी अधिक पॉवर वापरते."</string> <string name="permdesc_changeWifiMulticastState" product="tv" msgid="9031975661145014160">"केवळ तुमचा टीव्ही न वापरता, एकाधिक पत्ते वापरून एका वाय-फाय नेटवकवरील सर्व डीव्हाइसवर पाठविलेली पॅकेट प्राप्त करण्यासाठी अॅपला अनुमती देते."</string> <string name="permdesc_changeWifiMulticastState" product="default" msgid="6851949706025349926">"मल्टिकास्ट पत्ते वापरून फक्त तुमच्या फोनवर नाही, तर वाय-फाय नेटवर्कवरील सर्व डीव्हाइसवर पाठविलेले पॅकेट प्राप्त करण्यासाठी अॅप ला अनुमती देते. हे मल्टिकास्टखेरिज इतर मोडसाठी अधिक पॉवर वापरते."</string> - <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"ब्लूटूथ सेटिंग्ज अॅक्सेस करा"</string> + <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"ब्लूटूथ सेटिंग्ज अॅक्सेस करा"</string> <string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"स्थानिक ब्लूटूथ टॅबलेट कॉंफिगर करण्याकरिता आणि दूरस्थ डिव्हाइस शोधण्यासाठी आणि त्यासह जोडण्यासाठी अॅप ला अनुमती देते."</string> <string name="permdesc_bluetoothAdmin" product="tv" msgid="3373125682645601429">"स्थानिक ब्लूटूथ टीव्ही कॉंफिगर करण्यासाठी आणि दूरस्थ डीव्हाइससह शोधण्यासाठी आणि जोडण्यासाठी अॅपला अनुमती देते."</string> <string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"स्थानिक ब्लूटूथ फोन कॉंफिगर करण्याकरिता आणि दूरस्थ डिव्हाइस शोधण्यासाठी आणि त्यासह जोडण्यासाठी अॅप ला अनुमती देते."</string> @@ -623,7 +622,7 @@ <string name="permlab_manageNetworkPolicy" msgid="2562053592339859990">"नेटवर्क धोरण व्यवस्थापित करा"</string> <string name="permdesc_manageNetworkPolicy" msgid="7537586771559370668">"नेटवर्क धोरणे व्यवस्थापित करण्यासाठी आणि अॅप-विशिष्ट नियम परिभाषित करण्यासाठी अॅप ला अनुमती देते."</string> <string name="permlab_modifyNetworkAccounting" msgid="5088217309088729650">"नेटवर्क वापर हिशोब सुधारित करा"</string> - <string name="permdesc_modifyNetworkAccounting" msgid="5443412866746198123">"अॅप्स वर नेटवर्क वापराचा हिशोब कसा घेतला जातो हे सुधारित करण्यासाठी अॅप्स ला अनुमती देते. सामान्य अॅप्सद्वारे वापरण्यासाठी नाही."</string> + <string name="permdesc_modifyNetworkAccounting" msgid="5443412866746198123">"अॅप्स वर नेटवर्क वापराचा हिशोब कसा घेतला जातो हे सुधारित करण्यासाठी अॅप्स ला अनुमती देते. सामान्य अॅप्सद्वारे वापरण्यासाठी नाही."</string> <string name="permlab_accessNotifications" msgid="7673416487873432268">"प्रवेश सूचना"</string> <string name="permdesc_accessNotifications" msgid="458457742683431387">"अनुप्रयोगाला इतर अॅप्सद्वारे पोस्ट केलेल्यांसह पुनर्प्राप्त करण्याची, तपासण्याची आणि सूचना साफ करण्याची अनुमती देते."</string> <string name="permlab_bindNotificationListenerService" msgid="7057764742211656654">"सूचना ऐकणार्या सेवेशी प्रतिबद्ध"</string> @@ -638,17 +637,17 @@ <string name="permdesc_accessNetworkConditions" msgid="6899102075825272211">"अनु्प्रयोगाला नेटवर्क स्थितींवरील निरीक्षणे ऐकण्यासाठी अनुमती देते. सामान्य अॅप्ससाठी कधीही आवश्यक नसावे."</string> <string name="permlab_setInputCalibration" msgid="4902620118878467615">"इनपुट डिव्हाइस कॅलिब्रेशन बदला"</string> <string name="permdesc_setInputCalibration" msgid="4527511047549456929">"स्पर्श स्क्रीनची कॅलिब्रेशन प्राचले सुधारित करण्यासाठी अॅप ला अनुमती देते. सामान्य अॅप्स साठी कधीही आवश्यक नसते."</string> - <string name="permlab_accessDrmCertificates" msgid="7436886640723203615">"DRM प्रमाणपत्रे अॅक्सेस करा"</string> + <string name="permlab_accessDrmCertificates" msgid="7436886640723203615">"DRM प्रमाणपत्रे अॅक्सेस करा"</string> <string name="permdesc_accessDrmCertificates" msgid="8073288354426159089">"DRM प्रमाणपत्रांची तरतूद करण्यासाठी आणि वापरण्यासाठी अनुप्रयोगास अनुमती देते. सामान्य अॅप्सकरिता कधीही आवश्यकता नसते."</string> <string name="permlab_handoverStatus" msgid="7820353257219300883">"Android बीम स्थानांतरण स्थिती प्राप्त करा"</string> <string name="permdesc_handoverStatus" msgid="4788144087245714948">"वर्तमान Android बीम स्थानांतरणांविषयी माहिती प्राप्त करण्यासाठी या अनुप्रयोगास अनुमती देते"</string> <string name="permlab_removeDrmCertificates" msgid="7044888287209892751">"DRM प्रमाणपत्रे काढा"</string> - <string name="permdesc_removeDrmCertificates" msgid="7272999075113400993">"DRM प्रमाणपत्रे काढण्यासाठी अनुप्रयोगास अनुमती देते. सामान्य अॅप्स साठी कधीही आवश्यकता नसते."</string> + <string name="permdesc_removeDrmCertificates" msgid="7272999075113400993">"DRM प्रमाणपत्रे काढण्यासाठी अनुप्रयोगास अनुमती देते. सामान्य अॅप्स साठी कधीही आवश्यकता नसते."</string> <string name="permlab_bindCarrierMessagingService" msgid="1490229371796969158">"एका वाहक मेसेजिंग सेवेसाठी प्रतिबद्ध"</string> <string name="permdesc_bindCarrierMessagingService" msgid="2762882888502113944">"वाहक मेसेजिंग सेवेचा शीर्ष-स्तर इंटरफेस बाइंड करण्यासाठी होल्डरला अनुमती देतो. सामान्य अॅप्सकरिता हे कधीही आवश्यक नसते."</string> <string name="permlab_bindCarrierServices" msgid="3233108656245526783">"वाहक सेवांवर प्रतिबद्ध करा"</string> <string name="permdesc_bindCarrierServices" msgid="1391552602551084192">"वाहक सेवांवर प्रतिबद्ध करण्यासाठी होल्डरला अनुमती देते. सामान्य अॅप्ससाठी कधीही आवश्यकता नसावी."</string> - <string name="permlab_access_notification_policy" msgid="4247510821662059671">"व्यत्यय आणू नका अॅक्सेस करा"</string> + <string name="permlab_access_notification_policy" msgid="4247510821662059671">"व्यत्यय आणू नका अॅक्सेस करा"</string> <string name="permdesc_access_notification_policy" msgid="3296832375218749580">"व्यत्यय आणू नका कॉन्फिगरेशन वाचण्यासाठी आणि लिहिण्यासाठी अॅपला अनुमती देते."</string> <string name="permlab_startViewPermissionUsage" msgid="5484728591597709944">"व्ह्यू परवानगी वापर सुरू करा"</string> <string name="permdesc_startViewPermissionUsage" msgid="4808345878203594428">"धारकास अॅपसाठी परवानगी वापरणे सुरू करण्याची अनुमती देते. सामान्य अॅप्ससाठी कधीही आवश्यकता नसते."</string> @@ -1131,8 +1130,10 @@ <string name="whichViewApplication" msgid="3272778576700572102">"यासह उघडा"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"%1$s सह उघडा"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"उघडा"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"सह <xliff:g id="HOST">%1$s</xliff:g> लिंक उघडण्याचा अॅक्सेस द्या"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"<xliff:g id="APPLICATION">%2$s</xliff:g> सह <xliff:g id="HOST">%1$s</xliff:g> लिंक उघडण्याचा अॅक्सेस द्या"</string> + <string name="whichOpenHostLinksWith" msgid="3788174881117226583">"वापरून <xliff:g id="HOST">%1$s</xliff:g> लिंक उघडा"</string> + <string name="whichOpenLinksWith" msgid="6392123355599572804">"वापरून लिंक उघडा"</string> + <string name="whichOpenLinksWithApp" msgid="8225991685366651614">"<xliff:g id="APPLICATION">%1$s</xliff:g> वापरून लिंक उघडा"</string> + <string name="whichOpenHostLinksWithApp" msgid="3464470639011045589">"<xliff:g id="APPLICATION">%2$s</xliff:g> वापरून <xliff:g id="HOST">%1$s</xliff:g> लिंक उघडा"</string> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"अॅक्सेस द्या"</string> <string name="whichEditApplication" msgid="144727838241402655">"सह संपादित करा"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"%1$s सह संपादित करा"</string> @@ -1154,7 +1155,7 @@ <string name="clearDefaultHintMsg" msgid="3252584689512077257">"डाउनलोड केलेल्या सिस्टम सेटिंग्ज > Apps > मधील डीफॉल्ट साफ करा."</string> <string name="chooseActivity" msgid="7486876147751803333">"क्रिया निवडा"</string> <string name="chooseUsbActivity" msgid="6894748416073583509">"USB डिव्हाइससाठी अॅप निवडा"</string> - <string name="noApplications" msgid="2991814273936504689">"कोणतेही अॅप्स ही क्रिया करू शकत नाहीत."</string> + <string name="noApplications" msgid="2991814273936504689">"कोणतेही अॅप्स ही क्रिया करू शकत नाहीत."</string> <string name="aerr_application" msgid="250320989337856518">"<xliff:g id="APPLICATION">%1$s</xliff:g> थांबला आहे"</string> <string name="aerr_process" msgid="6201597323218674729">"<xliff:g id="PROCESS">%1$s</xliff:g> थांबली आहे"</string> <string name="aerr_application_repeated" msgid="3146328699537439573">"<xliff:g id="APPLICATION">%1$s</xliff:g> थांबतो"</string> @@ -1199,9 +1200,9 @@ <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> श्रेणीसुधारित करत आहे…"</string> <string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_1">%2$d</xliff:g> पैकी <xliff:g id="NUMBER_0">%1$d</xliff:g> अॅप ऑप्टिमाइझ करत आहे."</string> <string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g> तयार करत आहे."</string> - <string name="android_upgrading_starting_apps" msgid="451464516346926713">"अॅप्स प्रारंभ करत आहे."</string> + <string name="android_upgrading_starting_apps" msgid="451464516346926713">"अॅप्स प्रारंभ करत आहे."</string> <string name="android_upgrading_complete" msgid="1405954754112999229">"बूट समाप्त होत आहे."</string> - <string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> चालत आहे"</string> + <string name="heavy_weight_notification" msgid="9087063985776626166">"रन होणारे <xliff:g id="APP">%1$s</xliff:g>"</string> <string name="heavy_weight_notification_detail" msgid="2304833848484424985">"गेमवर परत जाण्यासाठी टॅप करा"</string> <string name="heavy_weight_switcher_title" msgid="387882830435195342">"गेम निवडा"</string> <string name="heavy_weight_switcher_text" msgid="4176781660362912010">"अधिक चांगल्या कामगिरीसाठी, एकावेळी यापैकी केवळ एक गेम चालू ठेवता येईल."</string> @@ -1266,7 +1267,7 @@ <string name="network_available_sign_in" msgid="1848877297365446605">"नेटवर्कवर साइन इन करा"</string> <!-- no translation found for network_available_sign_in_detailed (8000081941447976118) --> <skip /> - <string name="wifi_no_internet" msgid="5198100389964214865">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g> ला इंटरनेट अॅक्सेस नाही"</string> + <string name="wifi_no_internet" msgid="5198100389964214865">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g> ला इंटरनेट अॅक्सेस नाही"</string> <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"पर्यायांसाठी टॅप करा"</string> <string name="captive_portal_logged_in_detailed" msgid="8489345381637456021">"कनेक्ट केले"</string> <string name="network_partial_connectivity" msgid="7774883385494762741">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g> ला मर्यादित कनेक्टिव्हिटी आहे"</string> @@ -1275,7 +1276,7 @@ <string name="wifi_softap_config_change_summary" msgid="7601233252456548891">"तुमचा हॉटस्पॉट बँड बदलला आहे."</string> <string name="wifi_softap_config_change_detailed" msgid="8022936822860678033">"हे डिव्हाइस तुमच्या फक्त ५GHz साठी प्राधान्याला सपोर्ट करत नाही. त्याऐवजी, हे डिव्हाइस ५GHz बँड उपलब्ध असताना वापरेल."</string> <string name="network_switch_metered" msgid="4671730921726992671">"<xliff:g id="NETWORK_TYPE">%1$s</xliff:g> वर स्विच केले"</string> - <string name="network_switch_metered_detail" msgid="775163331794506615">"<xliff:g id="PREVIOUS_NETWORK">%2$s</xliff:g> कडे इंटरनेटचा अॅक्सेस नसताना डिव्हाइस <xliff:g id="NEW_NETWORK">%1$s</xliff:g> वापरते. शुल्क लागू शकते."</string> + <string name="network_switch_metered_detail" msgid="775163331794506615">"<xliff:g id="PREVIOUS_NETWORK">%2$s</xliff:g> कडे इंटरनेटचा अॅक्सेस नसताना डिव्हाइस <xliff:g id="NEW_NETWORK">%1$s</xliff:g> वापरते. शुल्क लागू शकते."</string> <string name="network_switch_metered_toast" msgid="5779283181685974304">"<xliff:g id="PREVIOUS_NETWORK">%1$s</xliff:g> वरून <xliff:g id="NEW_NETWORK">%2$s</xliff:g> वर स्विच केले"</string> <string-array name="network_switch_type_name"> <item msgid="3979506840912951943">"मोबाइल डेटा"</item> @@ -1318,14 +1319,14 @@ <string name="sms_short_code_confirm_allow" msgid="4458878637111023413">"पाठवा"</string> <string name="sms_short_code_confirm_deny" msgid="2927389840209170706">"रद्द करा"</string> <string name="sms_short_code_remember_choice" msgid="5289538592272218136">"माझी वड लक्षात ठेवा"</string> - <string name="sms_short_code_remember_undo_instruction" msgid="4960944133052287484">"तुम्ही हे नंतर सेटिंग्ज आणि अॅप्स मध्ये बदलू शकता"</string> + <string name="sms_short_code_remember_undo_instruction" msgid="4960944133052287484">"तुम्ही हे नंतर सेटिंग्ज आणि अॅप्स मध्ये बदलू शकता"</string> <string name="sms_short_code_confirm_always_allow" msgid="3241181154869493368">"नेहमी अनुमती द्या"</string> <string name="sms_short_code_confirm_never_allow" msgid="446992765774269673">"कधीही अनुमती देऊ नका"</string> <string name="sim_removed_title" msgid="6227712319223226185">"सिम कार्ड काढले"</string> <string name="sim_removed_message" msgid="2333164559970958645">"तुम्ही एक वैध सिम कार्ड घालून प्रारंभ करेपर्यंत मोबाईल नेटवर्क अनुपलब्ध असेल."</string> <string name="sim_done_button" msgid="827949989369963775">"पूर्ण झाले"</string> <string name="sim_added_title" msgid="3719670512889674693">"सिम कार्ड जोडले"</string> - <string name="sim_added_message" msgid="6599945301141050216">"मोबाईल नेटवर्कवर अॅक्सेस करण्यासाठी तुमचे डिव्हाइस रीस्टार्ट करा."</string> + <string name="sim_added_message" msgid="6599945301141050216">"मोबाईल नेटवर्कवर अॅक्सेस करण्यासाठी तुमचे डिव्हाइस रीस्टार्ट करा."</string> <string name="sim_restart_button" msgid="4722407842815232347">"रीस्टार्ट"</string> <string name="install_carrier_app_notification_title" msgid="9056007111024059888">"मोबाइल सेवा अॅक्टिव्हेट करा"</string> <string name="install_carrier_app_notification_text" msgid="3346681446158696001">"तुमचे नवीन सिम अॅक्टिव्हेट करण्यासाठी वाहकाचे अॅप डाउनलोड करा"</string> @@ -1365,7 +1366,7 @@ <string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"बग रीपोर्ट घेत आहे..."</string> <string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"बग अहवाल शेअर करायचा?"</string> <string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"बग रीपोर्ट शेअर करत आहे..."</string> - <string name="share_remote_bugreport_notification_message_finished" msgid="6029609949340992866">"आपल्या प्रशासकाने या डिव्हाइसचे समस्या निवारण करण्यात मदत करण्यासाठी दोष अहवालाची विनंती केली. अॅप्स आणि डेटा शेअर केले जाऊ शकतात."</string> + <string name="share_remote_bugreport_notification_message_finished" msgid="6029609949340992866">"आपल्या प्रशासकाने या डिव्हाइसचे समस्या निवारण करण्यात मदत करण्यासाठी दोष अहवालाची विनंती केली. अॅप्स आणि डेटा शेअर केले जाऊ शकतात."</string> <string name="share_remote_bugreport_action" msgid="6249476773913384948">"शेअर करा"</string> <string name="decline_remote_bugreport_action" msgid="6230987241608770062">"नकार द्या"</string> <string name="select_input_method" msgid="4653387336791222978">"इनपुट पद्धत निवडा"</string> @@ -1442,7 +1443,7 @@ <string name="ime_action_default" msgid="2840921885558045721">"कार्यान्वित करा"</string> <string name="dial_number_using" msgid="5789176425167573586">\n"<xliff:g id="NUMBER">%s</xliff:g> वापरून नंबर डायल करा"</string> <string name="create_contact_using" msgid="4947405226788104538">\n"<xliff:g id="NUMBER">%s</xliff:g> वापरून संपर्क तयार करा"</string> - <string name="grant_credentials_permission_message_header" msgid="2106103817937859662">"खालील एक किंवा अधिक अॅप्स आपल्या खात्यावर, आता आणि भविष्यात प्रवेश करण्याच्या परवानगीची विनंती करतात."</string> + <string name="grant_credentials_permission_message_header" msgid="2106103817937859662">"खालील एक किंवा अधिक अॅप्स आपल्या खात्यावर, आता आणि भविष्यात प्रवेश करण्याच्या परवानगीची विनंती करतात."</string> <string name="grant_credentials_permission_message_footer" msgid="3125211343379376561">"तुम्ही या विनंतीस अनुमती देऊ इच्छिता?"</string> <string name="grant_permissions_header_text" msgid="6874497408201826708">"प्रवेश विनंती"</string> <string name="allow" msgid="7225948811296386551">"अनुमती द्या"</string> @@ -1585,6 +1586,7 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"ब्राउझर लाँच करायचा?"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"कॉल स्वीकारायचा?"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"नेहमी"</string> + <string name="activity_resolver_set_always" msgid="1422574191056490585">"नेहमी उघडावर सेट करा"</string> <string name="activity_resolver_use_once" msgid="2404644797149173758">"फक्त एकदाच"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"सेटिंग्ज"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"%1$s कार्य प्रोफाईलचे समर्थन करीत नाही"</string> @@ -1614,8 +1616,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"ओव्हरले #<xliff:g id="ID">%1$d</xliff:g>"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g>x<xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", सुरक्षित"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"<xliff:g id="PACKAGENAME">%1$s</xliff:g> पासून सुरू होणारी ही बॅकग्राउंड अॅक्टिव्हिटी भविष्यातील Q बिल्डमध्ये ब्लॉक केली जाईल. g.co/dev/bgblock पाहा."</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"<xliff:g id="PACKAGENAME">%1$s</xliff:g> वरून सुरू होणारी बॅकग्राउंड अॅक्टिव्हिटी ब्लॉक केली आहे. g.co/dev/bgblock पाहा."</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"पॅटर्न विसरलात"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"चुकीचा पॅटर्न"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"चुकीचा पासवर्ड"</string> @@ -1810,7 +1810,7 @@ <string name="confirm_battery_saver" msgid="639106420541753635">"ओके"</string> <string name="battery_saver_description_with_learn_more" msgid="2108984221113106294">"बॅटरी सेव्हर हे वैशिष्ट्य बॅटरीचे आयुष्य वाढवण्यासाठी बॅकग्राउंड अॅक्टिव्हिटी, काही व्हिज्युअल इफेक्ट आणि इतर हाय-पॉवर वैशिष्ट्ये बंद किंवा मर्यादित करते. "<annotation id="url">"अधिक जाणून घ्या"</annotation></string> <string name="battery_saver_description" msgid="6413346684861241431">"बॅटरी लाइफ वाढवण्यासाठी बॅटरी सेव्हर बॅकग्राउंड अॅक्टिव्हिटी, काही व्हिज्युअल इफेक्ट आणि इतर हाय-पॉवर वैशिष्ट्ये बंद किंवा मर्यादित करतो."</string> - <string name="data_saver_description" msgid="6015391409098303235">"डेटा सर्व्हर डेटाचा वापर कमी करण्यात मदत करण्यासाठी काही अॅप्सना पार्श्वभूमीमध्ये डेटा पाठवण्यास किंवा मिळवण्यास प्रतिबंध करतो. तुम्ही सध्या वापरत असलेले अॅप डेटा अॅक्सेस करू शकते, पण तसे खूप कमी वेळा होते. याचाच अर्थ असा की, तुम्ही इमेजवर टॅप करेपर्यंत त्या डिस्प्ले होणार नाहीत असा असू शकतो."</string> + <string name="data_saver_description" msgid="6015391409098303235">"डेटा सर्व्हर डेटाचा वापर कमी करण्यात मदत करण्यासाठी काही अॅप्सना पार्श्वभूमीमध्ये डेटा पाठवण्यास किंवा मिळवण्यास प्रतिबंध करतो. तुम्ही सध्या वापरत असलेले अॅप डेटा अॅक्सेस करू शकते, पण तसे खूप कमी वेळा होते. याचाच अर्थ असा की, तुम्ही इमेजवर टॅप करेपर्यंत त्या डिस्प्ले होणार नाहीत असा असू शकतो."</string> <string name="data_saver_enable_title" msgid="4674073932722787417">"डेटा सेव्हर चालू करायचा?"</string> <string name="data_saver_enable_button" msgid="7147735965247211818">"चालू करा"</string> <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848"> @@ -2034,5 +2034,5 @@ <item quantity="one"><xliff:g id="FILE_NAME_0">%s</xliff:g> + <xliff:g id="COUNT_1">%d</xliff:g> फाइल</item> </plurals> <string name="chooser_no_direct_share_targets" msgid="997970693708458895">"थेट शेअर करणे उपलब्ध नाही"</string> - <string name="chooser_all_apps_button_label" msgid="3631524352936289457">"अॅप्स सूची"</string> + <string name="chooser_all_apps_button_label" msgid="3631524352936289457">"अॅप्स सूची"</string> </resources> diff --git a/core/res/res/values-ms/strings.xml b/core/res/res/values-ms/strings.xml index 20a5940f07c2..7c19f44b4aea 100644 --- a/core/res/res/values-ms/strings.xml +++ b/core/res/res/values-ms/strings.xml @@ -131,8 +131,7 @@ <!-- no translation found for wfcSpnFormat_spn (4998685024207291232) --> <skip /> <string name="wfcSpnFormat_spn_wifi_calling" msgid="136001023263502280">"Panggilan Wi-Fi <xliff:g id="SPN">%s</xliff:g>"</string> - <!-- no translation found for wfcSpnFormat_spn_wifi_calling_vo_hyphen (1730997175789582756) --> - <skip /> + <string name="wfcSpnFormat_spn_wifi_calling_vo_hyphen" msgid="1730997175789582756">"Panggilan Wi-Fi <xliff:g id="SPN">%s</xliff:g>"</string> <string name="wfcSpnFormat_wlan_call" msgid="2533371081782489793">"Panggilan WLAN"</string> <string name="wfcSpnFormat_spn_wlan_call" msgid="2315240198303197168">"Panggilan WLAN <xliff:g id="SPN">%s</xliff:g>"</string> <string name="wfcSpnFormat_spn_wifi" msgid="6546481665561961938">"Wi-Fi <xliff:g id="SPN">%s</xliff:g>"</string> @@ -1131,8 +1130,10 @@ <string name="whichViewApplication" msgid="3272778576700572102">"Buka dengan"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"Buka dengan %1$s"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"Buka"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"Berikan akses untuk membuka pautan <xliff:g id="HOST">%1$s</xliff:g> dengan"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"Berikan akses untuk membuka pautan <xliff:g id="HOST">%1$s</xliff:g> dengan <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> + <string name="whichOpenHostLinksWith" msgid="3788174881117226583">"Buka pautan <xliff:g id="HOST">%1$s</xliff:g> dengan"</string> + <string name="whichOpenLinksWith" msgid="6392123355599572804">"Buka pautan dengan"</string> + <string name="whichOpenLinksWithApp" msgid="8225991685366651614">"Buka pautan dengan <xliff:g id="APPLICATION">%1$s</xliff:g>"</string> + <string name="whichOpenHostLinksWithApp" msgid="3464470639011045589">"Buka pautan <xliff:g id="HOST">%1$s</xliff:g> dengan <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"Berikan akses"</string> <string name="whichEditApplication" msgid="144727838241402655">"Edit dengan"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"Edit dengan %1$s"</string> @@ -1584,6 +1585,7 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"Lancarkan Penyemak Imbas?"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"Terima panggilan?"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"Sentiasa"</string> + <string name="activity_resolver_set_always" msgid="1422574191056490585">"Tetapkan agar sentiasa dibuka"</string> <string name="activity_resolver_use_once" msgid="2404644797149173758">"Hanya sekali"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"Tetapan"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"%1$s tidak menyokong profil kerja"</string> @@ -1613,8 +1615,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"Tindih #<xliff:g id="ID">%1$d</xliff:g>"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g>x<xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", selamat"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"Permulaan aktiviti latar belakang daripada <xliff:g id="PACKAGENAME">%1$s</xliff:g> ini akan disekat dalam binaan Q pada masa hadapan. Lihat g.co/dev/bgblock."</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"Permulaan aktiviti latar belakang daripada <xliff:g id="PACKAGENAME">%1$s</xliff:g> disekat. Lihat g.co/dev/bgblock."</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Lupa Corak"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"Corak Salah"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"Kata Laluan Salah"</string> @@ -1668,18 +1668,12 @@ <string name="accessibility_shortcut_enabling_service" msgid="7771852911861522636">"Pintasan kebolehaksesan menghidupkan <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> <string name="accessibility_shortcut_disabling_service" msgid="2747243438223109821">"Pintasan Kebolehaksesan mematikan <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> <string name="accessibility_shortcut_spoken_feedback" msgid="8376923232350078434">"Tekan dan tahan kedua-dua kekunci kelantangan selama tiga saat untuk menggunakan <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for accessibility_button_prompt_text (1176658502969738564) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8259145549733019401) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (1041435574275047665) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (7003212763213614833) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (5261788874937410950) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (4969448938984394550) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="1176658502969738564">"Pilih perkhidmatan yang hendak digunakan apabila anda mengetik butang kebolehaksesan:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8259145549733019401">"Pilih perkhidmatan untuk digunakan dengan gerak isyarat kebolehaksesan (leret ke atas dari bahagian bawah skrin menggunakan dua jari):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="1041435574275047665">"Pilih perkhidmatan untuk digunakan dengan gerak isyarat kebolehaksesan (leret ke atas dari bahagian bawah skrin menggunakan tiga jari):"</string> + <string name="accessibility_button_instructional_text" msgid="7003212763213614833">"Untuk beralih antara perkhidmatan, sentuh & tahan butang kebolehaksesan."</string> + <string name="accessibility_gesture_instructional_text" msgid="5261788874937410950">"Untuk beralih antara perkhidmatan, leret ke atas menggunakan dua jari dan tahan."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="4969448938984394550">"Untuk beralih antara perkhidmatan, leret ke atas menggunakan tiga jari dan tahan."</string> <string name="accessibility_magnification_chooser_text" msgid="1227146738764986237">"Pembesaran"</string> <string name="user_switched" msgid="3768006783166984410">"Pengguna semasa <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="2871009331809089783">"Bertukar kepada <xliff:g id="NAME">%1$s</xliff:g>…"</string> diff --git a/core/res/res/values-my/strings.xml b/core/res/res/values-my/strings.xml index 792bf9b31433..d590e2538e34 100644 --- a/core/res/res/values-my/strings.xml +++ b/core/res/res/values-my/strings.xml @@ -199,7 +199,7 @@ <string name="silent_mode" msgid="7167703389802618663">"အသံတိတ်စနစ်"</string> <string name="turn_on_radio" msgid="3912793092339962371">"wirelessအားဖွင့်မည်"</string> <string name="turn_off_radio" msgid="8198784949987062346">"wirelessအားပိတ်မည်"</string> - <string name="screen_lock" msgid="799094655496098153">"ဖုန်းမျက်နှာပြင်အား သော့ချရန်"</string> + <string name="screen_lock" msgid="799094655496098153">"ဖန်သားပြင် လော့ခ်ချခြင်း"</string> <string name="power_off" msgid="4266614107412865048">"စက်ပိတ်ပါ"</string> <string name="silent_mode_silent" msgid="319298163018473078">"ဖုန်းမြည်သံပိတ်ထားသည်"</string> <string name="silent_mode_vibrate" msgid="7072043388581551395">"တုန်ခါခြင်း ဖုန်းမြည်သံ"</string> @@ -223,7 +223,7 @@ <string name="global_actions" product="tablet" msgid="408477140088053665">"Tabletဆိုင်ရာရွေးချယ်မှုများ"</string> <string name="global_actions" product="tv" msgid="7240386462508182976">"တီဗွီ ရွေးချယ်စရာများ"</string> <string name="global_actions" product="default" msgid="2406416831541615258">"ဖုန်းဆိုင်ရာရွေးချယ်မှုများ"</string> - <string name="global_action_lock" msgid="2844945191792119712">"ဖုန်းမျက်နှာပြင်အား သော့ချရန်"</string> + <string name="global_action_lock" msgid="2844945191792119712">"ဖန်သားပြင် လော့ခ်ချခြင်း"</string> <string name="global_action_power_off" msgid="4471879440839879722">"ပါဝါပိတ်ရန်"</string> <string name="global_action_emergency" msgid="7112311161137421166">"အရေးပေါ်"</string> <string name="global_action_bug_report" msgid="7934010578922304799">"အမှားရှာဖွေပြင်ဆင်မှုမှတ်တမ်း"</string> @@ -296,7 +296,7 @@ <string name="permgrouprequest_storage" msgid="7885942926944299560">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> အား သင့်ဖုန်းရှိ ဓာတ်ပုံများ၊ မီဒီယာနှင့် ဖိုင်များ ဝင်သုံးခွင့်ပေးလိုပါသလား။"</string> <string name="permgrouplab_microphone" msgid="171539900250043464">"မိုက်ခရိုဖုန်း"</string> <string name="permgroupdesc_microphone" msgid="4988812113943554584">"အသံဖမ်းခြင်း"</string> - <string name="permgrouprequest_microphone" msgid="9167492350681916038">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> အား အသံဖမ်းယူခွင့် ပေးလိုပါသလား။"</string> + <string name="permgrouprequest_microphone" msgid="9167492350681916038">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ကို အသံဖမ်းယူခွင့် ပေးလိုပါသလား။"</string> <string name="permgrouplab_activityRecognition" msgid="1565108047054378642">"ကိုယ်လက်လှုပ်ရှားမှု"</string> <string name="permgroupdesc_activityRecognition" msgid="6949472038320473478">"သင့်ကိုယ်လက်လှုပ်ရှားမှုကို ဝင်ကြည့်ရန်"</string> <string name="permgrouprequest_activityRecognition" msgid="7626438016904799383">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> အား သင့်ကိုယ်လက်လှုပ်ရှားမှုကို ဝင်ကြည့်ခွင့် ပေးလိုပါသလား။"</string> @@ -308,7 +308,7 @@ <string name="permgrouprequest_calllog" msgid="8487355309583773267">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> အား သင်၏ခေါ်ဆိုထားသော မှတ်တမ်းများကို သုံးခွင့်ပေးလိုပါသလား။"</string> <string name="permgrouplab_phone" msgid="5229115638567440675">"ဖုန်း"</string> <string name="permgroupdesc_phone" msgid="6234224354060641055">"ဖုန်းခေါ်ဆိုမှုများ ပြုလုပ်ရန်နှင့် စီမံရန်"</string> - <string name="permgrouprequest_phone" msgid="9166979577750581037">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> အား ဖုန်းခေါ်ဆိုမှုများ ပြုလုပ်ခွင့်နှင့် စီမံခွင့်ပေးလိုပါသလား။"</string> + <string name="permgrouprequest_phone" msgid="9166979577750581037">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ကို ဖုန်းခေါ်ဆိုမှုများ ပြုလုပ်ခွင့်နှင့် စီမံခွင့်ပေးလိုပါသလား။"</string> <string name="permgrouplab_sensors" msgid="4838614103153567532">"စက်၏ အာရုံခံစနစ်များ"</string> <string name="permgroupdesc_sensors" msgid="7147968539346634043">"သင်၏ အဓိကကျသော လက္ခဏာများအကြောင်း အာရုံခံကိရိယာဒေတာကို ရယူသုံးစွဲရန်"</string> <string name="permgrouprequest_sensors" msgid="6349806962814556786">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> အား သင်၏ အရေးကြီးသောလက္ခဏာ အာရုံခံကိရိယာ ဒေတာများကို သုံးခွင့်ပေးလိုပါသလား။"</string> @@ -1130,8 +1130,10 @@ <string name="whichViewApplication" msgid="3272778576700572102">"...ဖြင့် ဖွင့်မည်"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"%1$s ဖြင့် ဖွင့်မည်"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"ဖွင့်ပါ"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"<xliff:g id="HOST">%1$s</xliff:g> လင့်ခ်များကို အောက်ပါဖြင့် ဖွင့်ခွင့်ပေးပါ-"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"<xliff:g id="HOST">%1$s</xliff:g> လင့်ခ်များကို <xliff:g id="APPLICATION">%2$s</xliff:g> ဖြင့် ဖွင့်ခွင့်ပေးပါ"</string> + <string name="whichOpenHostLinksWith" msgid="3788174881117226583">"<xliff:g id="HOST">%1$s</xliff:g> လင့်ခ်များကို အောက်ပါဖြင့် ဖွင့်ရန်−"</string> + <string name="whichOpenLinksWith" msgid="6392123355599572804">"လင့်ခ်များကို အောက်ပါဖြင့် ဖွင့်ရန်−"</string> + <string name="whichOpenLinksWithApp" msgid="8225991685366651614">"လင့်ခ်ကို <xliff:g id="APPLICATION">%1$s</xliff:g> ဖြင့် ဖွင့်ရန်"</string> + <string name="whichOpenHostLinksWithApp" msgid="3464470639011045589">"<xliff:g id="HOST">%1$s</xliff:g> လင့်ခ်များကို <xliff:g id="APPLICATION">%2$s</xliff:g> ဖြင့် ဖွင့်ရန်"</string> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"ဖွင့်ခွင့်ပေးရန်"</string> <string name="whichEditApplication" msgid="144727838241402655">"...နှင့် တည်းဖြတ်ရန်"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"%1$s နှင့် တည်းဖြတ်ရန်"</string> @@ -1584,6 +1586,7 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"ဘရောက်ဇာ ဖွင့်မည်လား။"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"ဖုန်းခေါ်ဆိုမှုကို လက်ခံမလား?"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"အမြဲတမ်း"</string> + <string name="activity_resolver_set_always" msgid="1422574191056490585">"အမြဲဖွင့်မည်အဖြစ် သတ်မှတ်ရန်"</string> <string name="activity_resolver_use_once" msgid="2404644797149173758">"တစ်ခါတည်း"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"ဆက်တင်များ"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"%1$s က အလုပ်ပရိုဖိုင်ကို မပံ့ပိုးပါ။"</string> @@ -1613,8 +1616,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"အပေါ်မှ ထပ်သောအရာ #<xliff:g id="ID">%1$d</xliff:g>"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g>x<xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", လုံခြုံသော"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"<xliff:g id="PACKAGENAME">%1$s</xliff:g> မှစတင်သော ဤနောက်ခံလုပ်ဆောင်ချက်ကို အနာဂတ် Q တည်ဆောက်ပုံများတွင် ပိတ်ထားပါမည်။ g.co/dev/bgblock ကိုကြည့်ပါ။"</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"<xliff:g id="PACKAGENAME">%1$s</xliff:g> မှစတင်သော နောက်ခံလုပ်ဆောင်ချက်ကို ပိတ်ထားသည်။ g.co/dev/bgblock ကိုကြည့်ပါ။"</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"ပုံဖော်မှုအား မေ့လျော့ခြင်း"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"ပုံဆွဲအမှား"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"စကားဝှက်အမှား"</string> @@ -1673,7 +1674,7 @@ <string name="accessibility_gesture_3finger_prompt_text" msgid="1041435574275047665">"အများသုံးစွဲနိုင်မှုလက်ဟန်ဖြင့် အသုံးပြုရန် ဝန်ဆောင်မှုတစ်ခုကို ရွေးပါ (မျက်နှာပြင်အောက်ခြေမှနေ၍ လက်သုံးချောင်းဖြင့် အပေါ်သို့ ပွတ်ဆွဲပါ)-"</string> <string name="accessibility_button_instructional_text" msgid="7003212763213614833">"ဝန်ဆောင်မှုများအကြား ပြောင်းရန် အများသုံးစွဲနိုင်မှုခလုတ်ကို ဖိထားပါ။"</string> <string name="accessibility_gesture_instructional_text" msgid="5261788874937410950">"ဝန်ဆောင်မှုများအကြား ပြောင်းရန် လက်နှစ်ချောင်းဖြင့် အပေါ်သို့ ပွတ်ဆွဲပြီး ဖိထားပါ။"</string> - <string name="accessibility_gesture_3finger_instructional_text" msgid="4969448938984394550">"ဝန်ဆောင်မှုများအကြား ပြောင်းရန် လက်သုံးချေင်းဖြင့် အပေါ်သို့ ပွတ်ဆွဲပြီး ဖိထားပါ။"</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="4969448938984394550">"ဝန်ဆောင်မှုများအကြား ပြောင်းရန် လက်သုံးချောင်းဖြင့် အပေါ်သို့ ပွတ်ဆွဲပြီး ဖိထားပါ။"</string> <string name="accessibility_magnification_chooser_text" msgid="1227146738764986237">"ချဲ့ခြင်း"</string> <string name="user_switched" msgid="3768006783166984410">"လက်ရှိအသုံးပြုနေသူ <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="2871009331809089783">"<xliff:g id="NAME">%1$s</xliff:g>သို့ ပြောင်းနေ…"</string> diff --git a/core/res/res/values-nb/strings.xml b/core/res/res/values-nb/strings.xml index 4d1f9a355927..42139422529c 100644 --- a/core/res/res/values-nb/strings.xml +++ b/core/res/res/values-nb/strings.xml @@ -131,8 +131,7 @@ <!-- no translation found for wfcSpnFormat_spn (4998685024207291232) --> <skip /> <string name="wfcSpnFormat_spn_wifi_calling" msgid="136001023263502280">"<xliff:g id="SPN">%s</xliff:g> Wi-Fi-anrop"</string> - <!-- no translation found for wfcSpnFormat_spn_wifi_calling_vo_hyphen (1730997175789582756) --> - <skip /> + <string name="wfcSpnFormat_spn_wifi_calling_vo_hyphen" msgid="1730997175789582756">"<xliff:g id="SPN">%s</xliff:g>-Wi-Fi-anrop"</string> <string name="wfcSpnFormat_wlan_call" msgid="2533371081782489793">"WLAN-anrop"</string> <string name="wfcSpnFormat_spn_wlan_call" msgid="2315240198303197168">"<xliff:g id="SPN">%s</xliff:g> WLAN-anrop"</string> <string name="wfcSpnFormat_spn_wifi" msgid="6546481665561961938">"<xliff:g id="SPN">%s</xliff:g> Wi-Fi"</string> @@ -888,7 +887,7 @@ <string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"Vis opplåsingsfeltet."</string> <string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"Opplåsning ved å dra med fingeren."</string> <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"Mønsteropplåsning."</string> - <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"Ansiktsopplåsning."</string> + <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"Ansiktslås"</string> <string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"PIN-opplåsning."</string> <string name="keyguard_accessibility_sim_pin_unlock" msgid="9149698847116962307">"PIN-opplåsing for SIM-kort."</string> <string name="keyguard_accessibility_sim_puk_unlock" msgid="9106899279724723341">"PUK-opplåsing for SIM-kort."</string> @@ -1131,8 +1130,10 @@ <string name="whichViewApplication" msgid="3272778576700572102">"Åpne med"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"Åpne med %1$s"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"Åpne"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"Gi tilgang til å åpne <xliff:g id="HOST">%1$s</xliff:g>-linker med"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"Gi tilgang til å åpne <xliff:g id="HOST">%1$s</xliff:g>-linker med <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> + <string name="whichOpenHostLinksWith" msgid="3788174881117226583">"Åpne <xliff:g id="HOST">%1$s</xliff:g>-linker med"</string> + <string name="whichOpenLinksWith" msgid="6392123355599572804">"Åpne linker med"</string> + <string name="whichOpenLinksWithApp" msgid="8225991685366651614">"Åpne linker med <xliff:g id="APPLICATION">%1$s</xliff:g>"</string> + <string name="whichOpenHostLinksWithApp" msgid="3464470639011045589">"Åpne <xliff:g id="HOST">%1$s</xliff:g>-linker med <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"Gi tilgang"</string> <string name="whichEditApplication" msgid="144727838241402655">"Rediger med"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"Rediger med %1$s"</string> @@ -1584,6 +1585,7 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"Vil du starte nettleseren?"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"Vil du besvare anropet?"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"Alltid"</string> + <string name="activity_resolver_set_always" msgid="1422574191056490585">"Angi som alltid åpen"</string> <string name="activity_resolver_use_once" msgid="2404644797149173758">"Bare én gang"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"Innstillinger"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"%1$s støtter ikke arbeidsprofiler"</string> @@ -1613,8 +1615,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"Overlegg #<xliff:g id="ID">%1$d</xliff:g>"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g> x <xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", sikker"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"Denne bakgrunnsaktiviteten som starter fra <xliff:g id="PACKAGENAME">%1$s</xliff:g>, blir blokkert i fremtidige Q-delversjoner. Se g.co/dev/bgblock."</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"Bakgrunnsaktivitet som starter fra <xliff:g id="PACKAGENAME">%1$s</xliff:g>, er blokkert. Se g.co/dev/bgblock."</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Har du glemt mønsteret?"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"Feil mønster"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"Feil passord"</string> @@ -1668,18 +1668,12 @@ <string name="accessibility_shortcut_enabling_service" msgid="7771852911861522636">"Snarveien for tilgjengelighet slo på <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> <string name="accessibility_shortcut_disabling_service" msgid="2747243438223109821">"Snarveien for tilgjengelighet slo av <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> <string name="accessibility_shortcut_spoken_feedback" msgid="8376923232350078434">"Trykk og hold inne begge volumtastene i tre sekunder for å bruke <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for accessibility_button_prompt_text (1176658502969738564) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8259145549733019401) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (1041435574275047665) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (7003212763213614833) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (5261788874937410950) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (4969448938984394550) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="1176658502969738564">"Velg en tjeneste du vil bruke når du trykker på Tilgjengelighet-knappen:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8259145549733019401">"Velg en tjeneste du vil bruke med tilgjengelighetsbevegelsen (sveip opp fra bunnen av skjermen med to fingre):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="1041435574275047665">"Velg en tjeneste du vil bruke med tilgjengelighetsbevegelsen (sveip opp fra bunnen av skjermen med tre fingre):"</string> + <string name="accessibility_button_instructional_text" msgid="7003212763213614833">"For å bytte mellom tjenester, trykk og hold på Tilgjengelighet-knappen."</string> + <string name="accessibility_gesture_instructional_text" msgid="5261788874937410950">"For å bytte mellom tjenester, sveip opp med to fingre og hold."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="4969448938984394550">"For å bytte mellom tjenester, sveip opp med tre fingre og hold."</string> <string name="accessibility_magnification_chooser_text" msgid="1227146738764986237">"Forstørring"</string> <string name="user_switched" msgid="3768006783166984410">"Gjeldende bruker: <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="2871009331809089783">"Bytter til <xliff:g id="NAME">%1$s</xliff:g> …"</string> diff --git a/core/res/res/values-ne/strings.xml b/core/res/res/values-ne/strings.xml index 3096d76f0471..9bbef189bda7 100644 --- a/core/res/res/values-ne/strings.xml +++ b/core/res/res/values-ne/strings.xml @@ -131,8 +131,7 @@ <!-- no translation found for wfcSpnFormat_spn (4998685024207291232) --> <skip /> <string name="wfcSpnFormat_spn_wifi_calling" msgid="136001023263502280">"<xliff:g id="SPN">%s</xliff:g> Wi-Fi कलिङ"</string> - <!-- no translation found for wfcSpnFormat_spn_wifi_calling_vo_hyphen (1730997175789582756) --> - <skip /> + <string name="wfcSpnFormat_spn_wifi_calling_vo_hyphen" msgid="1730997175789582756">"<xliff:g id="SPN">%s</xliff:g> Wi-Fi कलिङ"</string> <string name="wfcSpnFormat_wlan_call" msgid="2533371081782489793">"WLAN कल"</string> <string name="wfcSpnFormat_spn_wlan_call" msgid="2315240198303197168">"<xliff:g id="SPN">%s</xliff:g> WLAN कल"</string> <string name="wfcSpnFormat_spn_wifi" msgid="6546481665561961938">"<xliff:g id="SPN">%s</xliff:g> Wi-Fi"</string> @@ -1135,8 +1134,14 @@ <!-- no translation found for whichViewApplicationNamed (2286418824011249620) --> <skip /> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"खोल्नुहोस्"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"निम्नमार्फत <xliff:g id="HOST">%1$s</xliff:g>का लिंकहरू खोल्न पहुँच दिनुहोस्"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"<xliff:g id="APPLICATION">%2$s</xliff:g>मार्फत <xliff:g id="HOST">%1$s</xliff:g>का लिंकहरू खोल्न पहुँच दिनुहोस्"</string> + <!-- no translation found for whichOpenHostLinksWith (3788174881117226583) --> + <skip /> + <!-- no translation found for whichOpenLinksWith (6392123355599572804) --> + <skip /> + <!-- no translation found for whichOpenLinksWithApp (8225991685366651614) --> + <skip /> + <!-- no translation found for whichOpenHostLinksWithApp (3464470639011045589) --> + <skip /> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"पहुँच दिनुहोस्"</string> <string name="whichEditApplication" msgid="144727838241402655">"सँग सम्पादन गर्नुहोस्"</string> <!-- String.format failed for translation --> @@ -1590,6 +1595,8 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"ब्राउजर सुरु गर्ने हो?"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"कल स्वीकार गर्नुहुन्छ?"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"सधैँ"</string> + <!-- no translation found for activity_resolver_set_always (1422574191056490585) --> + <skip /> <string name="activity_resolver_use_once" msgid="2404644797149173758">"एक पटक मात्र"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"सेटिङहरू"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"%1$s कार्य प्रोफाइल समर्थन गर्दैन"</string> @@ -1619,8 +1626,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"आवरण #<xliff:g id="ID">%1$d</xliff:g>"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g>x<xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", सुरक्षित"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"यो पृष्ठभूमिमा चल्ने क्रियाकलापलाई <xliff:g id="PACKAGENAME">%1$s</xliff:g> बाट भविष्यका Q build हरूमा रोक लगाइने छ। g.co/dev/bgblock हेर्नुहोस्।"</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"<xliff:g id="PACKAGENAME">%1$s</xliff:g> माथि रोक लगाएपछि पृष्ठभूमिको क्रियाकलाप सुरु हुन्छ। g.co/dev/bgblock हेर्नुहोस्।"</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"ढाँचा बिर्सनु भयो"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"गलत ढाँचा"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"गलत पासवर्ड"</string> @@ -1674,18 +1679,12 @@ <string name="accessibility_shortcut_enabling_service" msgid="7771852911861522636">"पहुँचको सर्टकटले <xliff:g id="SERVICE_NAME">%1$s</xliff:g> लाई सक्रिय पार्यो"</string> <string name="accessibility_shortcut_disabling_service" msgid="2747243438223109821">"पहुँचको सर्टकटले <xliff:g id="SERVICE_NAME">%1$s</xliff:g> लाई निष्क्रिय पार्यो"</string> <string name="accessibility_shortcut_spoken_feedback" msgid="8376923232350078434">"<xliff:g id="SERVICE_NAME">%1$s</xliff:g> प्रयोग गर्न दुवै भोल्युम कुञ्जीहरूलाई तीन सेकेन्डसम्म थिचिराख्नुहोस्"</string> - <!-- no translation found for accessibility_button_prompt_text (1176658502969738564) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8259145549733019401) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (1041435574275047665) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (7003212763213614833) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (5261788874937410950) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (4969448938984394550) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="1176658502969738564">"तपाईंले पहुँचसम्बन्धी बटन ट्याप गर्दा प्रयोग गर्नु पर्ने सुविधा रोज्नुहोस्:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8259145549733019401">"पहुँचसम्बन्धी इसारासँगै प्रयोग गर्नु पर्ने कुनै सेवा छनौट गर्नुहोस् (दुईवटा औँलाले स्क्रिनको फेदबाट माथितिर स्वाइप गर्नुहोस्):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="1041435574275047665">"पहुँचसम्बन्धी इसारासँगै प्रयोग गर्नु पर्ने कुनै सेवा छनौट गर्नुहोस् (तीनवटा औँलाले स्क्रिनको फेदबाट माथितिर स्वाइप गर्नुहोस्):"</string> + <string name="accessibility_button_instructional_text" msgid="7003212763213614833">"एउटा सेवाबाट अर्को सेवामा जान पहुँचसम्बन्धी बटनमा छोइराख्नुहोस्।"</string> + <string name="accessibility_gesture_instructional_text" msgid="5261788874937410950">"एउटा सेवाबाट अर्को सेवामा जान दुईवटा औँलाले माथितिर स्वाइप गरी थिचिराख्नुहोस्।"</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="4969448938984394550">"एउटा सेवाबाट अर्को सेवामा जान तीनवटा औँलाले माथितिर स्वाइप गरी थिचिराख्नुहोस्।"</string> <string name="accessibility_magnification_chooser_text" msgid="1227146738764986237">"म्याग्निफिकेसन"</string> <string name="user_switched" msgid="3768006783166984410">"अहिलेको प्रयोगकर्ता <xliff:g id="NAME">%1$s</xliff:g>।"</string> <string name="user_switching_message" msgid="2871009331809089783">"<xliff:g id="NAME">%1$s</xliff:g> मा स्विच गर्दै..."</string> @@ -1975,7 +1974,7 @@ <string name="etws_primary_default_message_tsunami" msgid="1887685943498368548">"तटीय क्षेत्र र नदीछेउका ठाउँहरू छाडी उच्च सतहमा अवस्थित कुनै अझ सुरक्षित ठाउँमा जानुहोस्।"</string> <string name="etws_primary_default_message_earthquake_and_tsunami" msgid="998797956848445862">"शान्त रहनुहोस् र नजिकै आश्रयस्थल खोज्नुहोस्।"</string> <string name="etws_primary_default_message_test" msgid="2709597093560037455">"आपतकालीन सन्देशहरूको परीक्षण"</string> - <string name="notification_reply_button_accessibility" msgid="3621714652387814344">"जवाफ दिनुहोस्"</string> + <string name="notification_reply_button_accessibility" msgid="3621714652387814344">"जवाफ दिनु…"</string> <string name="etws_primary_default_message_others" msgid="6293148756130398971"></string> <string name="mmcc_authentication_reject" msgid="5767701075994754356">"SIM मार्फत भ्वाइस कल गर्न मिल्दैन"</string> <string name="mmcc_imsi_unknown_in_hlr" msgid="5316658473301462825">"SIM मार्फत भ्वाइस कल गर्ने प्रावधान छैन"</string> diff --git a/core/res/res/values-nl/strings.xml b/core/res/res/values-nl/strings.xml index db67ee43e85f..d0dff88d86a7 100644 --- a/core/res/res/values-nl/strings.xml +++ b/core/res/res/values-nl/strings.xml @@ -1130,8 +1130,10 @@ <string name="whichViewApplication" msgid="3272778576700572102">"Openen met"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"Openen met %1$s"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"Openen"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"Toegang verlenen om links naar <xliff:g id="HOST">%1$s</xliff:g> te openen met"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"Toegang verlenen om links naar <xliff:g id="HOST">%1$s</xliff:g> te openen met <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> + <string name="whichOpenHostLinksWith" msgid="3788174881117226583">"Links van <xliff:g id="HOST">%1$s</xliff:g> openen met"</string> + <string name="whichOpenLinksWith" msgid="6392123355599572804">"Links openen met"</string> + <string name="whichOpenLinksWithApp" msgid="8225991685366651614">"Links openen met <xliff:g id="APPLICATION">%1$s</xliff:g>"</string> + <string name="whichOpenHostLinksWithApp" msgid="3464470639011045589">"Links van <xliff:g id="HOST">%1$s</xliff:g> openen met <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"Toegang geven"</string> <string name="whichEditApplication" msgid="144727838241402655">"Bewerken met"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"Bewerken met %1$s"</string> @@ -1583,6 +1585,7 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"Browser starten?"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"Gesprek accepteren?"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"Altijd"</string> + <string name="activity_resolver_set_always" msgid="1422574191056490585">"Instellen op altijd openen"</string> <string name="activity_resolver_use_once" msgid="2404644797149173758">"Één keer"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"Instellingen"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"%1$s ondersteunt werkprofielen niet"</string> @@ -1612,8 +1615,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"Overlay <xliff:g id="ID">%1$d</xliff:g>"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g>x<xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", beveiligd"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"Het starten van deze achtergrondactiviteit voor <xliff:g id="PACKAGENAME">%1$s</xliff:g> wordt geblokkeerd in toekomstige Q-builds. Ga naar g.co/dev/bgblock."</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"Starten van achtergrondactiviteit voor <xliff:g id="PACKAGENAME">%1$s</xliff:g> is geblokkeerd. Ga naar g.co/dev/bgblock."</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Patroon vergeten"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"Onjuist patroon"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"Onjuist wachtwoord"</string> @@ -1905,7 +1906,7 @@ <string name="deprecated_target_sdk_app_store" msgid="5032340500368495077">"Controleren op update"</string> <string name="new_sms_notification_title" msgid="8442817549127555977">"Je hebt nieuwe berichten"</string> <string name="new_sms_notification_content" msgid="7002938807812083463">"Open je sms-app om ze te bekijken"</string> - <string name="profile_encrypted_title" msgid="4260432497586829134">"Functionaliteit kan zijn beperkt"</string> + <string name="profile_encrypted_title" msgid="4260432497586829134">"Functionaliteit kan beperkt zijn"</string> <string name="profile_encrypted_detail" msgid="3700965619978314974">"Werkprofiel vergrendeld"</string> <string name="profile_encrypted_message" msgid="6964994232310195874">"Ontgrendel werkprofiel met tik"</string> <string name="usb_mtp_launch_notification_title" msgid="8359219638312208932">"Verbonden met <xliff:g id="PRODUCT_NAME">%1$s</xliff:g>"</string> diff --git a/core/res/res/values-or/strings.xml b/core/res/res/values-or/strings.xml index 13100e91f93e..93fdbf9b6287 100644 --- a/core/res/res/values-or/strings.xml +++ b/core/res/res/values-or/strings.xml @@ -131,8 +131,7 @@ <!-- no translation found for wfcSpnFormat_spn (4998685024207291232) --> <skip /> <string name="wfcSpnFormat_spn_wifi_calling" msgid="136001023263502280">"<xliff:g id="SPN">%s</xliff:g> ୱାଇ-ଫାଇ କଲିଂ"</string> - <!-- no translation found for wfcSpnFormat_spn_wifi_calling_vo_hyphen (1730997175789582756) --> - <skip /> + <string name="wfcSpnFormat_spn_wifi_calling_vo_hyphen" msgid="1730997175789582756">"<xliff:g id="SPN">%s</xliff:g> ୱାଇଫାଇ କଲିଂ"</string> <string name="wfcSpnFormat_wlan_call" msgid="2533371081782489793">"WLAN କଲ୍"</string> <string name="wfcSpnFormat_spn_wlan_call" msgid="2315240198303197168">"<xliff:g id="SPN">%s</xliff:g> WLAN କଲ୍"</string> <string name="wfcSpnFormat_spn_wifi" msgid="6546481665561961938">"<xliff:g id="SPN">%s</xliff:g> ୱାଇ-ଫାଇ"</string> @@ -1131,8 +1130,10 @@ <string name="whichViewApplication" msgid="3272778576700572102">"ସହିତ ଖୋଲନ୍ତୁ"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"%1$s ସହିତ ଖୋଲନ୍ତୁ"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"ଖୋଲନ୍ତୁ"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"ଏହା ସହିତ ଲିଙ୍କ ଥିବା <xliff:g id="HOST">%1$s</xliff:g> ଖୋଲିବା ପାଇଁ ଆକ୍ସେସ୍ ଦିଅନ୍ତୁ"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"<xliff:g id="APPLICATION">%2$s</xliff:g> ସହିତ ଲିଙ୍କ ଥିବା <xliff:g id="HOST">%1$s</xliff:g> ଖୋଲିବା ପାଇଁ ଆକ୍ସେସ୍ ଦିଅନ୍ତୁ"</string> + <string name="whichOpenHostLinksWith" msgid="3788174881117226583">"ଏଥିରେ <xliff:g id="HOST">%1$s</xliff:g> ଲିଙ୍କ୍ଗୁଡ଼ିକ ଖୋଲନ୍ତୁ"</string> + <string name="whichOpenLinksWith" msgid="6392123355599572804">"ଏଥିରେ ଲିଙ୍କ୍ଗୁଡ଼ିକ ଖୋଲନ୍ତୁ"</string> + <string name="whichOpenLinksWithApp" msgid="8225991685366651614">"<xliff:g id="APPLICATION">%1$s</xliff:g> ମାଧ୍ୟମରେ ଲିଙ୍କ୍ଗୁଡ଼ିକ ଖୋଲନ୍ତୁ"</string> + <string name="whichOpenHostLinksWithApp" msgid="3464470639011045589">"<xliff:g id="APPLICATION">%2$s</xliff:g> ମାଧ୍ୟମରେ <xliff:g id="HOST">%1$s</xliff:g> ଲିଙ୍କ୍ଗୁଡ଼ିକ ଖୋଲନ୍ତୁ"</string> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"ଆକ୍ସେସ୍ ଦିଅନ୍ତୁ"</string> <string name="whichEditApplication" msgid="144727838241402655">"ସହିତ ଏଡିଟ୍ କରନ୍ତୁ"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"%1$sରେ ସଂଶୋଧନ କରନ୍ତୁ"</string> @@ -1584,6 +1585,7 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"ବ୍ରାଉଜର୍ ଲଞ୍ଚ କରିବେ?"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"କଲ୍ ସ୍ୱୀକାର କରିବେ?"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"ସର୍ବଦା"</string> + <string name="activity_resolver_set_always" msgid="1422574191056490585">"\'ସର୍ବଦା ଖୋଲା\' ଭାବରେ ସେଟ୍ କରନ୍ତୁ"</string> <string name="activity_resolver_use_once" msgid="2404644797149173758">"ଥରେ ମାତ୍ର"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"ସେଟିଂସ୍"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"%1$s ୱର୍କ ପ୍ରୋଫାଇଲ୍କୁ ସପୋର୍ଟ କରୁନାହିଁ"</string> @@ -1613,8 +1615,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"ପ୍ରାୟତଃ #<xliff:g id="ID">%1$d</xliff:g>"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g>x<xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", ସୁରକ୍ଷିତ"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"<xliff:g id="PACKAGENAME">%1$s</xliff:g> ଠାରୁ ଆରମ୍ଭ ହୋଇଥିବା ପୃଷ୍ଠଭୂମି କାର୍ଯ୍ୟକଳାପ ଆଗାମୀ Q ବିଲ୍ଡରେ ବ୍ଲକ୍ କରାଯିବ। g.co/dev/bgblock ଦେଖନ୍ତୁ।"</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"<xliff:g id="PACKAGENAME">%1$s</xliff:g>ଠାରୁ ଆରମ୍ଭ ହୋଇଥିବା ପୃଷ୍ଠଭୂମି କାର୍ଯ୍ୟକଳାପ ବ୍ଲକ୍ କରାଯାଇଛି। g.co/dev/bgblock ଦେଖନ୍ତୁ।"</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"ପାଟର୍ନ ଭୁଲି ଯାଇଛନ୍ତି"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"ଭୁଲ ପାଟର୍ନ"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"ଭୁଲ ପାସ୍ୱର୍ଡ"</string> @@ -1668,18 +1668,12 @@ <string name="accessibility_shortcut_enabling_service" msgid="7771852911861522636">"ଆକ୍ସେସିବିଲିଟୀ ଶର୍ଟକଟ୍ <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ଅନ୍ କରାଯାଇଛି"</string> <string name="accessibility_shortcut_disabling_service" msgid="2747243438223109821">"ଆକ୍ସେସିବିଲିଟୀ ଶର୍ଟକଟ୍ <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ଅଫ୍ କରାଯାଇଛି"</string> <string name="accessibility_shortcut_spoken_feedback" msgid="8376923232350078434">"<xliff:g id="SERVICE_NAME">%1$s</xliff:g> ବ୍ୟବହାର କରିବାକୁ ତିନି ସେକେଣ୍ଡ ପାଇଁ ଉଭୟ ଭଲ୍ୟୁମ୍ କୀ ଦବାଇ ଧରି ରଖନ୍ତୁ"</string> - <!-- no translation found for accessibility_button_prompt_text (1176658502969738564) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8259145549733019401) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (1041435574275047665) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (7003212763213614833) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (5261788874937410950) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (4969448938984394550) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="1176658502969738564">"ଆପଣ ଆକ୍ସେସିବିଲିଟୀ ବଟନ୍ ଟାପ୍ କରିବା ସମୟରେ ଏକ ସେବା ବ୍ୟବହାର କରିବା ପାଇଁ ବାଛନ୍ତୁ:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8259145549733019401">"ଆକ୍ସେସିବିଲିଟୀ ଜେଶ୍ଚର୍ ବ୍ୟବହାର କରିବା ପାଇଁ ଏକ ସେବା ବାଛନ୍ତୁ (ଦୁଇଟି ଆଙ୍ଗୁଠିରେ ସ୍କ୍ରିନ୍ର ତଳୁ ଉପରକୁ ସ୍ୱାଇପ୍ କରନ୍ତୁ):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="1041435574275047665">"ଆକ୍ସେସିବିଲିଟୀ ଜେଶ୍ଚର୍ ବ୍ୟବହାର କରିବା ପାଇଁ ଏକ ସେବା ବାଛନ୍ତୁ (ତିନିଟି ଆଙ୍ଗୁଠିରେ ସ୍କ୍ରିନ୍ର ତଳୁ ଉପରକୁ ସ୍ୱାଇପ୍ କରନ୍ତୁ):"</string> + <string name="accessibility_button_instructional_text" msgid="7003212763213614833">"ସେବାଗୁଡ଼ିକ ମଧ୍ୟରେ ସ୍ୱିଚ୍ କରିବା ପାଇଁ ଆକ୍ସେସିବିଲିଟୀ ବଟନ୍ ସ୍ପର୍ଶ କରନ୍ତୁ ଓ ଧରି ରଖନ୍ତୁ।"</string> + <string name="accessibility_gesture_instructional_text" msgid="5261788874937410950">"ସେବାଗୁଡ଼ିକ ମଧ୍ୟରେ ସ୍ୱିଚ୍ କରିବା ପାଇଁ ଦୁଇଟି ଆଙ୍ଗୁଠିରେ ଉପରକୁ ସ୍ୱାଇପ୍ କରନ୍ତୁ ଏବଂ ଧରି ରଖନ୍ତୁ।"</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="4969448938984394550">"ସେବାଗୁଡ଼ିକ ମଧ୍ୟରେ ସ୍ୱିଚ୍ କରିବା ପାଇଁ ତିନିଟି ଆଙ୍ଗୁଠିରେ ଉପରକୁ ସ୍ୱାଇପ୍ କରନ୍ତୁ ଏବଂ ଧରି ରଖନ୍ତୁ।"</string> <string name="accessibility_magnification_chooser_text" msgid="1227146738764986237">"ମ୍ୟାଗ୍ନିଫିକେସନ୍"</string> <string name="user_switched" msgid="3768006783166984410">"ବର୍ତ୍ତମାନର ୟୁଜର୍ ହେଉଛନ୍ତି <xliff:g id="NAME">%1$s</xliff:g>।"</string> <string name="user_switching_message" msgid="2871009331809089783">"<xliff:g id="NAME">%1$s</xliff:g> ରେ ସୁଇଚ୍ କରନ୍ତୁ…"</string> diff --git a/core/res/res/values-pa/strings.xml b/core/res/res/values-pa/strings.xml index c6932a3f8e40..85b6cdc83d12 100644 --- a/core/res/res/values-pa/strings.xml +++ b/core/res/res/values-pa/strings.xml @@ -131,8 +131,7 @@ <!-- no translation found for wfcSpnFormat_spn (4998685024207291232) --> <skip /> <string name="wfcSpnFormat_spn_wifi_calling" msgid="136001023263502280">"<xliff:g id="SPN">%s</xliff:g> ਵਾਈ-ਫਾਈ ਕਾਲਿੰਗ"</string> - <!-- no translation found for wfcSpnFormat_spn_wifi_calling_vo_hyphen (1730997175789582756) --> - <skip /> + <string name="wfcSpnFormat_spn_wifi_calling_vo_hyphen" msgid="1730997175789582756">"<xliff:g id="SPN">%s</xliff:g> ਵਾਈ-ਫਾਈ Calling"</string> <string name="wfcSpnFormat_wlan_call" msgid="2533371081782489793">"WLAN ਕਾਲ"</string> <string name="wfcSpnFormat_spn_wlan_call" msgid="2315240198303197168">"<xliff:g id="SPN">%s</xliff:g> WLAN ਕਾਲ"</string> <string name="wfcSpnFormat_spn_wifi" msgid="6546481665561961938">"<xliff:g id="SPN">%s</xliff:g> ਵਾਈ-ਫਾਈ"</string> @@ -267,7 +266,7 @@ <string name="notification_channel_alerts" msgid="4496839309318519037">"ਸੁਚੇਤਨਾਵਾਂ"</string> <string name="notification_channel_retail_mode" msgid="6088920674914038779">"ਪ੍ਰਚੂਨ ਸਟੋਰਾਂ ਲਈ ਡੈਮੋ"</string> <string name="notification_channel_usb" msgid="9006850475328924681">"USB ਕਨੈਕਸ਼ਨ"</string> - <string name="notification_channel_heavy_weight_app" msgid="6218742927792852607">"ਐਪ ਚੱਲ ਰਹੀ ਹੈ"</string> + <string name="notification_channel_heavy_weight_app" msgid="6218742927792852607">"ਚੱਲ ਰਹੀ ਐਪ"</string> <string name="notification_channel_foreground_service" msgid="3931987440602669158">"ਬੈਟਰੀ ਦੀ ਖਪਤ ਕਰਨ ਵਾਲੀਆਂ ਐਪਾਂ"</string> <string name="foreground_service_app_in_background" msgid="1060198778219731292">"<xliff:g id="APP_NAME">%1$s</xliff:g> ਵੱਲੋਂ ਬੈਟਰੀ ਦੀ ਵਰਤੋਂ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ"</string> <string name="foreground_service_apps_in_background" msgid="7175032677643332242">"<xliff:g id="NUMBER">%1$d</xliff:g> ਐਪਾਂ ਬੈਟਰੀ ਦੀ ਵਰਤੋਂ ਕਰ ਰਹੀਆਂ ਹਨ"</string> @@ -1131,8 +1130,14 @@ <string name="whichViewApplication" msgid="3272778576700572102">"ਨਾਲ ਖੋਲ੍ਹੋ"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"%1$s ਨਾਲ ਖੋਲ੍ਹੋ"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"ਖੋਲ੍ਹੋ"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"ਇਸ ਨਾਲ <xliff:g id="HOST">%1$s</xliff:g> ਲਿੰਕਾਂ ਨੂੰ ਖੋਲ੍ਹਣ ਦੀ ਪਹੁੰਚ ਦਿਓ"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"<xliff:g id="APPLICATION">%2$s</xliff:g> ਨਾਲ <xliff:g id="HOST">%1$s</xliff:g> ਲਿੰਕਾਂ ਨੂੰ ਖੋਲ੍ਹਣ ਦੀ ਪਹੁੰਚ ਦਿਓ"</string> + <!-- no translation found for whichOpenHostLinksWith (3788174881117226583) --> + <skip /> + <!-- no translation found for whichOpenLinksWith (6392123355599572804) --> + <skip /> + <!-- no translation found for whichOpenLinksWithApp (8225991685366651614) --> + <skip /> + <!-- no translation found for whichOpenHostLinksWithApp (3464470639011045589) --> + <skip /> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"ਪਹੁੰਚ ਦਿਓ"</string> <string name="whichEditApplication" msgid="144727838241402655">"ਇਸ ਨਾਲ ਸੰਪਾਦਨ ਕਰੋ"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"%1$s ਨਾਲ ਸੰਪਾਦਨ ਕਰੋ"</string> @@ -1585,6 +1590,8 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"ਕੀ ਬ੍ਰਾਊਜ਼ਰ ਲਾਂਚ ਕਰਨਾ ਹੈ?"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"ਕੀ ਕਾਲ ਸਵੀਕਾਰ ਕਰਨੀ ਹੈ?"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"ਹਮੇਸ਼ਾਂ"</string> + <!-- no translation found for activity_resolver_set_always (1422574191056490585) --> + <skip /> <string name="activity_resolver_use_once" msgid="2404644797149173758">"ਕੇਵਲ ਇੱਕ ਵਾਰ"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"ਸੈਟਿੰਗਾਂ"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"%1$s ਕਾਰਜ ਪ੍ਰੋਫਾਈਲ ਦਾ ਸਮਰਥਨ ਨਹੀਂ ਕਰਦੀ"</string> @@ -1614,8 +1621,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"ਓਵਰਲੇ #<xliff:g id="ID">%1$d</xliff:g>"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g>x<xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", ਸੁਰੱਖਿਅਤ"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"ਇਹ ਬੈਕਗ੍ਰਾਊਂਡ ਸਰਗਰਮੀ <xliff:g id="PACKAGENAME">%1$s</xliff:g> ਤੋਂ ਸ਼ੁਰੂ ਹੋ ਕੇ ਭਵਿੱਖ ਦੇ Q ਬਿਲਡ ਵਿੱਚ ਬਲਾਕ ਕੀਤੀ ਜਾਵੇਗੀ। g.co/dev/bgblock ਦੇਖੋ।"</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"<xliff:g id="PACKAGENAME">%1$s</xliff:g> ਬਲਾਕ ਕਰਕੇ ਬੈਕਗ੍ਰਾਊਂਡ ਸਰਗਰਮੀ ਸ਼ੁਰੂ ਕੀਤੀ ਗਈ। g.co/dev/bgblock ਦੇਖੋ।"</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"ਪੈਟਰਨ ਭੁੱਲ ਗਏ"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"ਗ਼ਲਤ ਪੈਟਰਨ"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"ਗਲਤ ਪਾਸਵਰਡ"</string> @@ -1669,18 +1674,12 @@ <string name="accessibility_shortcut_enabling_service" msgid="7771852911861522636">"ਪਹੁੰਚਯੋਗਤਾ ਸ਼ਾਰਟਕੱਟ ਨੇ <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ਨੂੰ ਚਾਲੂ ਕੀਤਾ"</string> <string name="accessibility_shortcut_disabling_service" msgid="2747243438223109821">"ਪਹੁੰਚਯੋਗਤਾ ਸ਼ਾਰਟਕੱਟ ਨੇ <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ਨੂੰ ਬੰਦ ਕੀਤਾ"</string> <string name="accessibility_shortcut_spoken_feedback" msgid="8376923232350078434">"<xliff:g id="SERVICE_NAME">%1$s</xliff:g> ਦੀ ਵਰਤੋਂ ਕਰਨ ਲਈ ਦੋਵੇਂ ਅਵਾਜ਼ ਕੁੰਜੀਆਂ ਨੂੰ 3 ਸਕਿੰਟਾਂ ਲਈ ਦਬਾਈ ਰੱਖੋ"</string> - <!-- no translation found for accessibility_button_prompt_text (1176658502969738564) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8259145549733019401) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (1041435574275047665) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (7003212763213614833) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (5261788874937410950) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (4969448938984394550) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="1176658502969738564">"ਪਹੁੰਚਯੋਗਤਾ ਬਟਨ \'ਤੇ ਟੈਪ ਕਰਕੇ ਵਰਤਣ ਲਈ ਕੋਈ ਸੇਵਾ ਚੁਣੋ:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8259145549733019401">"ਪਹੁੰਚਯੋਗਤਾ ਸੰਕੇਤ ਨਾਲ ਵਰਤਣ ਲਈ ਕੋਈ ਸੇਵਾ ਚੁਣੋ (ਦੋ ਉਂਗਲਾਂ ਨਾਲ ਸਕ੍ਰੀਨ ਦੇ ਹੇਠਾਂ ਤੋਂ ਉੱਪਰ ਵੱਲ ਸਕ੍ਰੋਲ ਕਰੋ):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="1041435574275047665">"ਪਹੁੰਚਯੋਗਤਾ ਸੰਕੇਤ ਨਾਲ ਵਰਤਣ ਲਈ ਕੋਈ ਸੇਵਾ ਚੁਣੋ (ਤਿੰਨ ਉਂਗਲਾਂ ਨਾਲ ਸਕ੍ਰੀਨ ਦੇ ਹੇਠਾਂ ਤੋਂ ਉੱਪਰ ਵੱਲ ਸਵਾਈਪ ਕਰੋ):"</string> + <string name="accessibility_button_instructional_text" msgid="7003212763213614833">"ਸੇਵਾਵਾਂ ਵਿਚਾਲੇ ਅਦਲਾ-ਬਦਲੀ ਕਰਨ ਲਈ, ਪਹੁੰਚਯੋਗਤਾ ਬਟਨ \'ਤੇ ਸਪਰਸ਼ ਕਰਕੇ ਰੱਖੋ।"</string> + <string name="accessibility_gesture_instructional_text" msgid="5261788874937410950">"ਸੇਵਾਵਾਂ ਵਿਚਾਲੇ ਅਦਲਾ-ਬਦਲੀ ਕਰਨ ਲਈ, ਦੋ ਉਂਗਲਾਂ ਨਾਲ ਉੱਪਰ ਵੱਲ ਸਵਾਈਪ ਕਰਕੇ ਦਬਾਈ ਰੱਖੋ।"</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="4969448938984394550">"ਸੇਵਾਵਾਂ ਵਿਚਾਲੇ ਅਦਲਾ-ਬਦਲੀ ਕਰਨ ਲਈ, ਤਿੰਨ ਉਂਗਲਾਂ ਨਾਲ ਉੱਪਰ ਵੱਲ ਸਵਾਈਪ ਕਰਕੇ ਦਬਾਈ ਰੱਖੋ।"</string> <string name="accessibility_magnification_chooser_text" msgid="1227146738764986237">"ਵੱਡਦਰਸ਼ੀਕਰਨ"</string> <string name="user_switched" msgid="3768006783166984410">"ਮੌਜੂਦਾ ਉਪਭੋਗਤਾ <xliff:g id="NAME">%1$s</xliff:g>।"</string> <string name="user_switching_message" msgid="2871009331809089783">"<xliff:g id="NAME">%1$s</xliff:g> ਤੇ ਸਵਿਚ ਕਰ ਰਿਹਾ ਹੈ…"</string> diff --git a/core/res/res/values-pl/strings.xml b/core/res/res/values-pl/strings.xml index f28c8f25ee81..99f448b6ad7d 100644 --- a/core/res/res/values-pl/strings.xml +++ b/core/res/res/values-pl/strings.xml @@ -1170,8 +1170,10 @@ <string name="whichViewApplication" msgid="3272778576700572102">"Otwórz w aplikacji"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"Otwórz w aplikacji %1$s"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"Otwórz"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"Przyznaj uprawnienia do otwierania linków z <xliff:g id="HOST">%1$s</xliff:g> w:"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"Przyznaj uprawnienia do otwierania linków z <xliff:g id="HOST">%1$s</xliff:g> w aplikacji <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> + <string name="whichOpenHostLinksWith" msgid="3788174881117226583">"Otwieraj linki z: <xliff:g id="HOST">%1$s</xliff:g> w"</string> + <string name="whichOpenLinksWith" msgid="6392123355599572804">"Otwieraj linki w"</string> + <string name="whichOpenLinksWithApp" msgid="8225991685366651614">"Otwieraj linki w aplikacji <xliff:g id="APPLICATION">%1$s</xliff:g>"</string> + <string name="whichOpenHostLinksWithApp" msgid="3464470639011045589">"Otwieraj linki z: <xliff:g id="HOST">%1$s</xliff:g> w aplikacji <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"Udziel uprawnień"</string> <string name="whichEditApplication" msgid="144727838241402655">"Edytuj w aplikacji"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"Edytuj w aplikacji %1$s"</string> @@ -1629,6 +1631,7 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"Uruchomić przeglądarkę?"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"Odebrać połączenie?"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"Zawsze"</string> + <string name="activity_resolver_set_always" msgid="1422574191056490585">"Zawsze otwieraj"</string> <string name="activity_resolver_use_once" msgid="2404644797149173758">"Tylko raz"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"Ustawienia"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"%1$s nie obsługuje profilu do pracy"</string> @@ -1658,8 +1661,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"Nakładka nr <xliff:g id="ID">%1$d</xliff:g>"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g> x <xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", bezpieczny"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"Rozpoczęcie tej aktywności w tle przez pakiet <xliff:g id="PACKAGENAME">%1$s</xliff:g> zostanie zablokowane w przyszłych kompilacjach Q. Patrz g.co/dev/bgblock."</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"Rozpoczęcie aktywności w tle przez pakiet <xliff:g id="PACKAGENAME">%1$s</xliff:g> zostało zablokowane. Patrz g.co/dev/bgblock."</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Nie pamiętam wzoru"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"Nieprawidłowy wzór"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"Nieprawidłowe hasło"</string> @@ -1717,10 +1718,10 @@ <string name="accessibility_shortcut_spoken_feedback" msgid="8376923232350078434">"Naciśnij i przytrzymaj oba przyciski głośności przez trzy sekundy, by użyć usługi <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> <string name="accessibility_button_prompt_text" msgid="1176658502969738564">"Wybierz usługę używaną po kliknięciu przycisku ułatwień dostępu:"</string> <string name="accessibility_gesture_prompt_text" msgid="8259145549733019401">"Wybierz usługę używaną w przypadku gestu ułatwień dostępu (przesunięcie dwoma palcami z dołu ekranu w górę):"</string> - <string name="accessibility_gesture_3finger_prompt_text" msgid="1041435574275047665">"Wybierz usługę używaną w przypadku gestu ułatwień dostępu (przesunięcie trzema palcami z dołu ekranu w górę):"</string> - <string name="accessibility_button_instructional_text" msgid="7003212763213614833">"Aby przełączać usługi, kliknij i przytrzymaj przycisk ułatwień dostępu."</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="1041435574275047665">"Wybierz usługę, której chcesz używać w połączeniu z gestami ułatwień dostępu (przesuń trzema palcami z dołu ekranu w górę):"</string> + <string name="accessibility_button_instructional_text" msgid="7003212763213614833">"Aby przełączać usługi, naciśnij i przytrzymaj przycisk ułatwień dostępu."</string> <string name="accessibility_gesture_instructional_text" msgid="5261788874937410950">"Aby przełączać usługi, przesuń dwoma palcami w górę i przytrzymaj."</string> - <string name="accessibility_gesture_3finger_instructional_text" msgid="4969448938984394550">"Aby przełączać usługi, przesuń trzema palcami w górę i przytrzymaj."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="4969448938984394550">"Aby przełączyć usługi, przesuń trzema palcami w górę i przytrzymaj."</string> <string name="accessibility_magnification_chooser_text" msgid="1227146738764986237">"Powiększenie"</string> <string name="user_switched" msgid="3768006783166984410">"Bieżący użytkownik: <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="2871009331809089783">"Przełączam na użytkownika <xliff:g id="NAME">%1$s</xliff:g>…"</string> diff --git a/core/res/res/values-pt-rBR/strings.xml b/core/res/res/values-pt-rBR/strings.xml index 72efebb266a2..4f24abcd2d72 100644 --- a/core/res/res/values-pt-rBR/strings.xml +++ b/core/res/res/values-pt-rBR/strings.xml @@ -1130,8 +1130,10 @@ <string name="whichViewApplication" msgid="3272778576700572102">"Abrir com"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"Abrir com %1$s"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"Abrir"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"Conceder acesso para abrir links de <xliff:g id="HOST">%1$s</xliff:g> com"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"Conceder acesso para abrir links de <xliff:g id="HOST">%1$s</xliff:g> com o app <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> + <string name="whichOpenHostLinksWith" msgid="3788174881117226583">"Abrir links do domínio <xliff:g id="HOST">%1$s</xliff:g> com"</string> + <string name="whichOpenLinksWith" msgid="6392123355599572804">"Abrir links com"</string> + <string name="whichOpenLinksWithApp" msgid="8225991685366651614">"Abrir links com <xliff:g id="APPLICATION">%1$s</xliff:g>"</string> + <string name="whichOpenHostLinksWithApp" msgid="3464470639011045589">"Abrir links do domínio <xliff:g id="HOST">%1$s</xliff:g> com <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"Conceder acesso"</string> <string name="whichEditApplication" msgid="144727838241402655">"Editar com"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"Editar com %1$s"</string> @@ -1583,6 +1585,7 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"Abrir Navegador?"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"Aceitar chamada?"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"Sempre"</string> + <string name="activity_resolver_set_always" msgid="1422574191056490585">"Definir como \"Sempre abrir\""</string> <string name="activity_resolver_use_once" msgid="2404644797149173758">"Só uma vez"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"Configurações"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"%1$s não aceita perfis de trabalho"</string> @@ -1612,8 +1615,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"Sobreposição nº <xliff:g id="ID">%1$d</xliff:g>"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g>x<xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", seguro"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"Esse início de atividade em segundo plano a partir de <xliff:g id="PACKAGENAME">%1$s</xliff:g> será bloqueado nas versões futuras do Android Q. Acesse g.co/dev/bgblock."</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"O início da atividade em segundo plano a partir de <xliff:g id="PACKAGENAME">%1$s</xliff:g> foi bloqueado. Acesse g.co/dev/bgblock."</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Esqueci o padrão"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"Padrão incorreto"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"Senha incorreta"</string> @@ -1671,8 +1672,8 @@ <string name="accessibility_gesture_prompt_text" msgid="8259145549733019401">"Escolha um serviço a ser usado com o gesto de acessibilidade (deslizar de baixo para cima na tela com dois dedos):"</string> <string name="accessibility_gesture_3finger_prompt_text" msgid="1041435574275047665">"Escolha um serviço a ser usado com o gesto de acessibilidade (deslizar de baixo para cima na tela com três dedos):"</string> <string name="accessibility_button_instructional_text" msgid="7003212763213614833">"Para alternar entre serviços, toque no botão de acessibilidade e mantenha-o pressionado."</string> - <string name="accessibility_gesture_instructional_text" msgid="5261788874937410950">"Para alternar entre serviços, deslize de baixo para cima na tela com dois dedos e mantenha-a pressionada."</string> - <string name="accessibility_gesture_3finger_instructional_text" msgid="4969448938984394550">"Para alternar entre serviços, deslize de baixo para cima na tela com três dedos e mantenha-a pressionada."</string> + <string name="accessibility_gesture_instructional_text" msgid="5261788874937410950">"Para alternar entre serviços, deslize de baixo para cima na tela com dois dedos sem soltar."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="4969448938984394550">"Para alternar entre serviços, deslize de baixo para cima na tela com três dedos sem soltar."</string> <string name="accessibility_magnification_chooser_text" msgid="1227146738764986237">"Ampliação"</string> <string name="user_switched" msgid="3768006783166984410">"Usuário atual <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="2871009331809089783">"Alternando para <xliff:g id="NAME">%1$s</xliff:g>…"</string> diff --git a/core/res/res/values-pt-rPT/strings.xml b/core/res/res/values-pt-rPT/strings.xml index 9a9b3fd3ce3d..c4ae520d75a5 100644 --- a/core/res/res/values-pt-rPT/strings.xml +++ b/core/res/res/values-pt-rPT/strings.xml @@ -567,7 +567,7 @@ <string name="face_acquired_too_right" msgid="3667075962661863218">"Mova o telemóvel para a esquerda."</string> <string name="face_acquired_too_left" msgid="3148242963894703424">"Mova o telemóvel para a direita."</string> <string name="face_acquired_poor_gaze" msgid="5606479370806754905">"Olhe mais diretamente para o dispositivo."</string> - <string name="face_acquired_not_detected" msgid="4885504661626728809">"Não é possível ver o seu rosto. Olhe p/ telemóvel."</string> + <string name="face_acquired_not_detected" msgid="4885504661626728809">"Não consigo ver o rosto. Olhe para o telemóvel."</string> <string name="face_acquired_too_much_motion" msgid="3149332171102108851">"Demasiado movimento. Mantenha o telemóvel firme."</string> <string name="face_acquired_recalibrate" msgid="8077949502893707539">"Volte a inscrever o rosto."</string> <string name="face_acquired_too_different" msgid="7663983770123789694">"Impossível reconhecer o rosto. Tente novamente."</string> @@ -1130,8 +1130,10 @@ <string name="whichViewApplication" msgid="3272778576700572102">"Abrir com"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"Abrir com %1$s"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"Abrir"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"Conceda acesso para abrir links de <xliff:g id="HOST">%1$s</xliff:g> com"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"Conceda acesso para abrir links de <xliff:g id="HOST">%1$s</xliff:g> com a aplicação <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> + <string name="whichOpenHostLinksWith" msgid="3788174881117226583">"Abra os links de <xliff:g id="HOST">%1$s</xliff:g> com:"</string> + <string name="whichOpenLinksWith" msgid="6392123355599572804">"Abra os links com:"</string> + <string name="whichOpenLinksWithApp" msgid="8225991685366651614">"Abra os links com a aplicação <xliff:g id="APPLICATION">%1$s</xliff:g>"</string> + <string name="whichOpenHostLinksWithApp" msgid="3464470639011045589">"Abra os links de <xliff:g id="HOST">%1$s</xliff:g> com a aplicação <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"Conceder acesso"</string> <string name="whichEditApplication" msgid="144727838241402655">"Editar com"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"Editar com %1$s"</string> @@ -1583,6 +1585,7 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"Iniciar Navegador?"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"Aceitar chamada?"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"Sempre"</string> + <string name="activity_resolver_set_always" msgid="1422574191056490585">"Definir como abrir sempre"</string> <string name="activity_resolver_use_once" msgid="2404644797149173758">"Apenas uma vez"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"Definições"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"%1$s não suporta o perfil de trabalho"</string> @@ -1612,8 +1615,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"Sobreposição #<xliff:g id="ID">%1$d</xliff:g>"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g>x<xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> ppp"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", protegido"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"Este início da atividade em segundo plano do pacote <xliff:g id="PACKAGENAME">%1$s</xliff:g> será bloqueado em compilações futuras do Q. Aceda a g.co/dev/bgblock."</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"Início da atividade em segundo plano do pacote <xliff:g id="PACKAGENAME">%1$s</xliff:g> bloqueado. Aceda a g.co/dev/bgblock."</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Esqueceu-se da Sequência"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"Padrão Incorreto"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"Palavra-passe Incorreta"</string> diff --git a/core/res/res/values-pt/strings.xml b/core/res/res/values-pt/strings.xml index 72efebb266a2..4f24abcd2d72 100644 --- a/core/res/res/values-pt/strings.xml +++ b/core/res/res/values-pt/strings.xml @@ -1130,8 +1130,10 @@ <string name="whichViewApplication" msgid="3272778576700572102">"Abrir com"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"Abrir com %1$s"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"Abrir"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"Conceder acesso para abrir links de <xliff:g id="HOST">%1$s</xliff:g> com"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"Conceder acesso para abrir links de <xliff:g id="HOST">%1$s</xliff:g> com o app <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> + <string name="whichOpenHostLinksWith" msgid="3788174881117226583">"Abrir links do domínio <xliff:g id="HOST">%1$s</xliff:g> com"</string> + <string name="whichOpenLinksWith" msgid="6392123355599572804">"Abrir links com"</string> + <string name="whichOpenLinksWithApp" msgid="8225991685366651614">"Abrir links com <xliff:g id="APPLICATION">%1$s</xliff:g>"</string> + <string name="whichOpenHostLinksWithApp" msgid="3464470639011045589">"Abrir links do domínio <xliff:g id="HOST">%1$s</xliff:g> com <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"Conceder acesso"</string> <string name="whichEditApplication" msgid="144727838241402655">"Editar com"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"Editar com %1$s"</string> @@ -1583,6 +1585,7 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"Abrir Navegador?"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"Aceitar chamada?"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"Sempre"</string> + <string name="activity_resolver_set_always" msgid="1422574191056490585">"Definir como \"Sempre abrir\""</string> <string name="activity_resolver_use_once" msgid="2404644797149173758">"Só uma vez"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"Configurações"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"%1$s não aceita perfis de trabalho"</string> @@ -1612,8 +1615,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"Sobreposição nº <xliff:g id="ID">%1$d</xliff:g>"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g>x<xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", seguro"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"Esse início de atividade em segundo plano a partir de <xliff:g id="PACKAGENAME">%1$s</xliff:g> será bloqueado nas versões futuras do Android Q. Acesse g.co/dev/bgblock."</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"O início da atividade em segundo plano a partir de <xliff:g id="PACKAGENAME">%1$s</xliff:g> foi bloqueado. Acesse g.co/dev/bgblock."</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Esqueci o padrão"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"Padrão incorreto"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"Senha incorreta"</string> @@ -1671,8 +1672,8 @@ <string name="accessibility_gesture_prompt_text" msgid="8259145549733019401">"Escolha um serviço a ser usado com o gesto de acessibilidade (deslizar de baixo para cima na tela com dois dedos):"</string> <string name="accessibility_gesture_3finger_prompt_text" msgid="1041435574275047665">"Escolha um serviço a ser usado com o gesto de acessibilidade (deslizar de baixo para cima na tela com três dedos):"</string> <string name="accessibility_button_instructional_text" msgid="7003212763213614833">"Para alternar entre serviços, toque no botão de acessibilidade e mantenha-o pressionado."</string> - <string name="accessibility_gesture_instructional_text" msgid="5261788874937410950">"Para alternar entre serviços, deslize de baixo para cima na tela com dois dedos e mantenha-a pressionada."</string> - <string name="accessibility_gesture_3finger_instructional_text" msgid="4969448938984394550">"Para alternar entre serviços, deslize de baixo para cima na tela com três dedos e mantenha-a pressionada."</string> + <string name="accessibility_gesture_instructional_text" msgid="5261788874937410950">"Para alternar entre serviços, deslize de baixo para cima na tela com dois dedos sem soltar."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="4969448938984394550">"Para alternar entre serviços, deslize de baixo para cima na tela com três dedos sem soltar."</string> <string name="accessibility_magnification_chooser_text" msgid="1227146738764986237">"Ampliação"</string> <string name="user_switched" msgid="3768006783166984410">"Usuário atual <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="2871009331809089783">"Alternando para <xliff:g id="NAME">%1$s</xliff:g>…"</string> diff --git a/core/res/res/values-ro/strings.xml b/core/res/res/values-ro/strings.xml index 59d582b74617..50d6a495e147 100644 --- a/core/res/res/values-ro/strings.xml +++ b/core/res/res/values-ro/strings.xml @@ -1150,8 +1150,10 @@ <string name="whichViewApplication" msgid="3272778576700572102">"Deschideți cu"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"Deschideți cu %1$s"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"Deschideți"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"Permiteți accesul pentru a deschide linkurile <xliff:g id="HOST">%1$s</xliff:g> cu"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"Permiteți accesul pentru a deschide linkurile <xliff:g id="HOST">%1$s</xliff:g> cu <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> + <string name="whichOpenHostLinksWith" msgid="3788174881117226583">"Deschideți linkurile <xliff:g id="HOST">%1$s</xliff:g> cu"</string> + <string name="whichOpenLinksWith" msgid="6392123355599572804">"Deschideți linkurile cu"</string> + <string name="whichOpenLinksWithApp" msgid="8225991685366651614">"Deschideți linkurile cu <xliff:g id="APPLICATION">%1$s</xliff:g>"</string> + <string name="whichOpenHostLinksWithApp" msgid="3464470639011045589">"Deschideți linkurile <xliff:g id="HOST">%1$s</xliff:g> cu <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"Permiteți accesul"</string> <string name="whichEditApplication" msgid="144727838241402655">"Editați cu"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"Editați cu %1$s"</string> @@ -1606,6 +1608,7 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"Lansați browserul?"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"Acceptați apelul?"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"Întotdeauna"</string> + <string name="activity_resolver_set_always" msgid="1422574191056490585">"Schimbați la „Deschideți întotdeauna”"</string> <string name="activity_resolver_use_once" msgid="2404644797149173758">"Numai o dată"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"Setări"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"%1$s nu acceptă profilul de serviciu"</string> @@ -1635,8 +1638,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"Suprapunerea <xliff:g id="ID">%1$d</xliff:g>"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g>x<xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", securizat"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"Începerea activității în fundal de la <xliff:g id="PACKAGENAME">%1$s</xliff:g> va fi blocată în versiunile Q viitoare. Consultați g.co/dev/bgblock."</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"Începerea activității din fundal de la <xliff:g id="PACKAGENAME">%1$s</xliff:g> este blocată. Consultați g.co/dev/bgblock."</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Model uitat"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"Model greșit"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"Parolă greșită"</string> @@ -1695,8 +1696,8 @@ <string name="accessibility_gesture_prompt_text" msgid="8259145549733019401">"Alegeți un serviciu pe care să îl folosiți cu gestul de accesibilitate (glisați în sus cu două degete din partea de jos a ecranului):"</string> <string name="accessibility_gesture_3finger_prompt_text" msgid="1041435574275047665">"Alegeți un serviciu pe care să îl folosiți cu gestul de accesibilitate (glisați în sus cu trei degete din partea de jos a ecranului):"</string> <string name="accessibility_button_instructional_text" msgid="7003212763213614833">"Pentru a comuta între servicii, atingeți lung butonul de accesibilitate."</string> - <string name="accessibility_gesture_instructional_text" msgid="5261788874937410950">"Pentru a comuta între servicii, glisați în sus cu două degete și țineți lung."</string> - <string name="accessibility_gesture_3finger_instructional_text" msgid="4969448938984394550">"Pentru a comuta între servicii, glisați în sus cu trei degete și țineți lung."</string> + <string name="accessibility_gesture_instructional_text" msgid="5261788874937410950">"Pentru a schimba între servicii, glisați în sus cu două degete și țineți lung."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="4969448938984394550">"Pentru a schimba între servicii, glisați în sus cu trei degete și țineți lung."</string> <string name="accessibility_magnification_chooser_text" msgid="1227146738764986237">"Mărire"</string> <string name="user_switched" msgid="3768006783166984410">"Utilizator curent: <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="2871009331809089783">"Se comută la <xliff:g id="NAME">%1$s</xliff:g>…"</string> diff --git a/core/res/res/values-ru/strings.xml b/core/res/res/values-ru/strings.xml index 97cdab8a5efd..2d668f6a905e 100644 --- a/core/res/res/values-ru/strings.xml +++ b/core/res/res/values-ru/strings.xml @@ -133,8 +133,7 @@ <!-- no translation found for wfcSpnFormat_spn (4998685024207291232) --> <skip /> <string name="wfcSpnFormat_spn_wifi_calling" msgid="136001023263502280">"<xliff:g id="SPN">%s</xliff:g> Звонки по Wi-Fi"</string> - <!-- no translation found for wfcSpnFormat_spn_wifi_calling_vo_hyphen (1730997175789582756) --> - <skip /> + <string name="wfcSpnFormat_spn_wifi_calling_vo_hyphen" msgid="1730997175789582756">"Звонок по Wi-Fi через оператора \"<xliff:g id="SPN">%s</xliff:g>\""</string> <string name="wfcSpnFormat_wlan_call" msgid="2533371081782489793">"Вызов WLAN"</string> <string name="wfcSpnFormat_spn_wlan_call" msgid="2315240198303197168">"<xliff:g id="SPN">%s</xliff:g> Вызов WLAN"</string> <string name="wfcSpnFormat_spn_wifi" msgid="6546481665561961938">"<xliff:g id="SPN">%s</xliff:g> Wi-Fi"</string> @@ -1171,8 +1170,10 @@ <string name="whichViewApplication" msgid="3272778576700572102">"Открыть с помощью приложения:"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"Открыть с помощью приложения \"%1$s\""</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"Открыть"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"Предоставьте доступ, чтобы открывать ссылки <xliff:g id="HOST">%1$s</xliff:g> в приложении"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"Предоставьте доступ, чтобы открывать ссылки <xliff:g id="HOST">%1$s</xliff:g> в приложении <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> + <string name="whichOpenHostLinksWith" msgid="3788174881117226583">"Открывать ссылки вида <xliff:g id="HOST">%1$s</xliff:g> с помощью:"</string> + <string name="whichOpenLinksWith" msgid="6392123355599572804">"Открывать ссылки с помощью:"</string> + <string name="whichOpenLinksWithApp" msgid="8225991685366651614">"Открывать ссылки в браузере <xliff:g id="APPLICATION">%1$s</xliff:g>"</string> + <string name="whichOpenHostLinksWithApp" msgid="3464470639011045589">"Открывать ссылки вида <xliff:g id="HOST">%1$s</xliff:g> в браузере <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"Открыть доступ"</string> <string name="whichEditApplication" msgid="144727838241402655">"Редактировать с помощью приложения:"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"Редактировать с помощью приложения \"%1$s\""</string> @@ -1630,6 +1631,7 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"Запустить браузер?"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"Ответить?"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"Всегда"</string> + <string name="activity_resolver_set_always" msgid="1422574191056490585">"Всегда открывать"</string> <string name="activity_resolver_use_once" msgid="2404644797149173758">"Только сейчас"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"Настройки"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"%1$s не поддерживает рабочие профили"</string> @@ -1659,8 +1661,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"Наложение № <xliff:g id="ID">%1$d</xliff:g>"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g> х <xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> тчк/дюйм"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", безопасный"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"Действия приложения \"<xliff:g id="PACKAGENAME">%1$s</xliff:g>\" в фоновом режиме будут блокироваться в следующих сборках Android Q. Подробную информацию можно найти на странице g.co/dev/bgblock."</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"Действие приложения \"<xliff:g id="PACKAGENAME">%1$s</xliff:g>\" в фоновом режиме заблокировано. Подробную информацию можно найти на странице g.co/dev/bgblock."</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Забыли графический ключ?"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"Неправильный графический ключ"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"Неправильный пароль"</string> @@ -1716,18 +1716,12 @@ <string name="accessibility_shortcut_enabling_service" msgid="7771852911861522636">"Сервис <xliff:g id="SERVICE_NAME">%1$s</xliff:g> включен"</string> <string name="accessibility_shortcut_disabling_service" msgid="2747243438223109821">"Сервис <xliff:g id="SERVICE_NAME">%1$s</xliff:g> отключен"</string> <string name="accessibility_shortcut_spoken_feedback" msgid="8376923232350078434">"Чтобы использовать сервис \"<xliff:g id="SERVICE_NAME">%1$s</xliff:g>\", нажмите и удерживайте обе клавиши громкости в течение трех секунд."</string> - <!-- no translation found for accessibility_button_prompt_text (1176658502969738564) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8259145549733019401) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (1041435574275047665) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (7003212763213614833) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (5261788874937410950) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (4969448938984394550) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="1176658502969738564">"Выберите сервис, который будет запускаться при нажатии кнопки специальных возможностей:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8259145549733019401">"Выберите сервис, который будет запускаться жестом для доступа к специальным возможностям (провести по экрану снизу вверх двумя пальцами):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="1041435574275047665">"Выберите сервис, который будет запускаться жестом для доступа к специальным возможностям (провести по экрану снизу вверх тремя пальцами):"</string> + <string name="accessibility_button_instructional_text" msgid="7003212763213614833">"Для переключения между сервисами нажмите и удерживайте кнопку специальных возможностей."</string> + <string name="accessibility_gesture_instructional_text" msgid="5261788874937410950">"Для переключения между сервисами проведите по экрану снизу вверх двумя пальцами и задержите их."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="4969448938984394550">"Для переключения между сервисами проведите по экрану снизу вверх тремя пальцами и задержите их."</string> <string name="accessibility_magnification_chooser_text" msgid="1227146738764986237">"Увеличение"</string> <string name="user_switched" msgid="3768006783166984410">"Выбран аккаунт пользователя <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="2871009331809089783">"Смена профиля на <xliff:g id="NAME">%1$s</xliff:g>…"</string> diff --git a/core/res/res/values-si/strings.xml b/core/res/res/values-si/strings.xml index bb105763fe99..fdf4d53f15b4 100644 --- a/core/res/res/values-si/strings.xml +++ b/core/res/res/values-si/strings.xml @@ -1132,8 +1132,10 @@ <string name="whichViewApplication" msgid="3272778576700572102">"සමඟ විවෘත කරන්න"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"%1$s සමඟ විවෘත කරන්න"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"විවෘත කරන්න"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"මේවා මඟින් <xliff:g id="HOST">%1$s</xliff:g> සබැඳි විවෘත කිරීමට ප්රවේශය දෙන්න"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"<xliff:g id="APPLICATION">%2$s</xliff:g> මඟින් <xliff:g id="HOST">%1$s</xliff:g> සබැඳි විවෘත කිරීමට ප්රවේශය දෙන්න"</string> + <string name="whichOpenHostLinksWith" msgid="3788174881117226583">"සමග <xliff:g id="HOST">%1$s</xliff:g> සබැඳි විවෘත කරන්න"</string> + <string name="whichOpenLinksWith" msgid="6392123355599572804">"සමඟ සබැඳි විවෘත කරන්න"</string> + <string name="whichOpenLinksWithApp" msgid="8225991685366651614">"<xliff:g id="APPLICATION">%1$s</xliff:g> සමඟ සබැඳි විවෘත කරන්න"</string> + <string name="whichOpenHostLinksWithApp" msgid="3464470639011045589">"<xliff:g id="APPLICATION">%2$s</xliff:g> සමග <xliff:g id="HOST">%1$s</xliff:g> සබැඳි විවෘත කරන්න"</string> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"ප්රවේශය දෙන්න"</string> <string name="whichEditApplication" msgid="144727838241402655">"සමඟ සංස්කරණය කරන්න"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"%1$s සමඟ සංස්කරණය කරන්න"</string> @@ -1585,6 +1587,7 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"බ්රවුසරය දියත් කරන්නද?"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"ඇමතුම පිළිගන්නවාද?"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"සැම විටම"</string> + <string name="activity_resolver_set_always" msgid="1422574191056490585">"සැම විට විවෘත ලෙස සකසන්න"</string> <string name="activity_resolver_use_once" msgid="2404644797149173758">"එක් වාරයයි"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"සැකසීම්"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"%1$s කාර්යාල පැතිකඩ සඳහා සහාය ලබනොදේ."</string> @@ -1614,8 +1617,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"උඩැතිරිය #<xliff:g id="ID">%1$d</xliff:g>"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g>x<xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", ආරක්ෂිත"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"<xliff:g id="PACKAGENAME">%1$s</xliff:g> සිට ඇරඹෙන මෙම පසුබිම් ක්රියාකාරකම අනාගත Q නිමැවුම්වල අවහිර කෙරේ. g.co/dev/bgblock බලන්න."</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"<xliff:g id="PACKAGENAME">%1$s</xliff:g> සිට ඇරඹෙන පසුබිම් ක්රියාකාරකම අවහිරයි. g.co/dev/bgblock බලන්න."</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"රටාව අමතකයි"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"වැරදි රටාවකි"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"වැරදි මුරපදය"</string> @@ -1669,18 +1670,12 @@ <string name="accessibility_shortcut_enabling_service" msgid="7771852911861522636">"ප්රවේශ්යතා කෙටි මග <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ක්රියාත්මක කරන ලදී"</string> <string name="accessibility_shortcut_disabling_service" msgid="2747243438223109821">"ප්රවේශ්යතා කෙටි මග <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ක්රියාවිරහිත කරන ලදී"</string> <string name="accessibility_shortcut_spoken_feedback" msgid="8376923232350078434">"<xliff:g id="SERVICE_NAME">%1$s</xliff:g> භාවිත කිරීමට හඬ පරිමා යතුරු දෙකම තත්පර තුනකට ඔබාගෙන සිටින්න"</string> - <!-- no translation found for accessibility_button_prompt_text (1176658502969738564) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8259145549733019401) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (1041435574275047665) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (7003212763213614833) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (5261788874937410950) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (4969448938984394550) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="1176658502969738564">"ඔබ ප්රවේශ්යතා බොත්තම තට්ටු කරන විට භාවිතයට සේවාවක් තෝරා ගන්න:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8259145549733019401">"ප්රවේශ්යතා ඉංගිතය සමඟ භාවිතයට සේවාවක් තෝරා ගන්න (ඇඟිලි දෙකක් සමඟින් තිරයේ පහළින් උඩට ස්වයිප් කරන්න):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="1041435574275047665">"ප්රවේශ්යතා ඉංගිතය සමඟ භාවිතයට සේවාවක් තෝරා ගන්න (ඇඟිලි තුනක් සමඟින් තිරයේ පහළින් උඩට ස්වයිප් කරන්න):"</string> + <string name="accessibility_button_instructional_text" msgid="7003212763213614833">"සේවා අතර මාරු වීමට, ප්රවේශ්යතා බොත්තම ස්පර්ශ කර අල්ලා සිටින්න."</string> + <string name="accessibility_gesture_instructional_text" msgid="5261788874937410950">"සේවා අතර මාරු වීමට, ඇඟිලි දෙකක් සමඟින් උඩට ස්වයිප් කර අල්ලා සිටින්න."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="4969448938984394550">"සේවා අතර මාරු වීමට, ඇඟිලි තුනක් සමඟින් උඩට ස්වයිප් කර අල්ලා සිටින්න."</string> <string name="accessibility_magnification_chooser_text" msgid="1227146738764986237">"විශාලනය"</string> <string name="user_switched" msgid="3768006783166984410">"දැනට සිටින පරිශීලකයා <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="2871009331809089783">"<xliff:g id="NAME">%1$s</xliff:g> වෙත මාරු කරමින්…"</string> diff --git a/core/res/res/values-sk/strings.xml b/core/res/res/values-sk/strings.xml index 75a04e5bbfda..874b247d7621 100644 --- a/core/res/res/values-sk/strings.xml +++ b/core/res/res/values-sk/strings.xml @@ -133,8 +133,7 @@ <!-- no translation found for wfcSpnFormat_spn (4998685024207291232) --> <skip /> <string name="wfcSpnFormat_spn_wifi_calling" msgid="136001023263502280">"<xliff:g id="SPN">%s</xliff:g> volanie cez Wi-Fi"</string> - <!-- no translation found for wfcSpnFormat_spn_wifi_calling_vo_hyphen (1730997175789582756) --> - <skip /> + <string name="wfcSpnFormat_spn_wifi_calling_vo_hyphen" msgid="1730997175789582756">"<xliff:g id="SPN">%s</xliff:g> Volanie cez Wi‑Fi"</string> <string name="wfcSpnFormat_wlan_call" msgid="2533371081782489793">"Volanie cez WLAN"</string> <string name="wfcSpnFormat_spn_wlan_call" msgid="2315240198303197168">"<xliff:g id="SPN">%s</xliff:g> volanie cez WLAN"</string> <string name="wfcSpnFormat_spn_wifi" msgid="6546481665561961938">"<xliff:g id="SPN">%s</xliff:g> Wi-Fi"</string> @@ -274,7 +273,7 @@ <string name="notification_channel_retail_mode" msgid="6088920674914038779">"Predajná ukážka"</string> <string name="notification_channel_usb" msgid="9006850475328924681">"Pripojenie USB"</string> <string name="notification_channel_heavy_weight_app" msgid="6218742927792852607">"Aplikácia je spustená"</string> - <string name="notification_channel_foreground_service" msgid="3931987440602669158">"Aplikácie spotrebúvajú batériu"</string> + <string name="notification_channel_foreground_service" msgid="3931987440602669158">"Aplikácie spotrebúvajúce batériu"</string> <string name="foreground_service_app_in_background" msgid="1060198778219731292">"<xliff:g id="APP_NAME">%1$s</xliff:g> používa batériu"</string> <string name="foreground_service_apps_in_background" msgid="7175032677643332242">"Aplikácie (<xliff:g id="NUMBER">%1$d</xliff:g>) používajú batériu"</string> <string name="foreground_service_tap_for_details" msgid="372046743534354644">"Klepnutím zobrazíte podrobnosti o batérii a spotrebe dát"</string> @@ -303,7 +302,7 @@ <string name="permgrouprequest_storage" msgid="7885942926944299560">"Povoliť aplikácii <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> používať fotky, médiá a súbory v zariadení?"</string> <string name="permgrouplab_microphone" msgid="171539900250043464">"Mikrofón"</string> <string name="permgroupdesc_microphone" msgid="4988812113943554584">"nahrávanie zvuku"</string> - <string name="permgrouprequest_microphone" msgid="9167492350681916038">"Povoliť aplikácii <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> zaznamenávať zvuk?"</string> + <string name="permgrouprequest_microphone" msgid="9167492350681916038">"Chcete povoliť aplikácii <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> nahrávať zvuk?"</string> <string name="permgrouplab_activityRecognition" msgid="1565108047054378642">"Fyzická aktivita"</string> <string name="permgroupdesc_activityRecognition" msgid="6949472038320473478">"prístup k vašej fyzickej aktivite"</string> <string name="permgrouprequest_activityRecognition" msgid="7626438016904799383">"Povoliť aplikácii <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> prístup k vašej fyzickej aktivite?"</string> @@ -432,7 +431,7 @@ <string name="permlab_modifyAudioSettings" msgid="6095859937069146086">"meniť nastavenia zvuku"</string> <string name="permdesc_modifyAudioSettings" msgid="3522565366806248517">"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="3876049771427466323">"nahrávať zvuk"</string> - <string name="permdesc_recordAudio" msgid="4245930455135321433">"Táto aplikácia môže kedykoľvek zaznamenávať zvuk pomocou mikrofónu."</string> + <string name="permdesc_recordAudio" msgid="4245930455135321433">"Táto aplikácia môže kedykoľvek nahrávať zvuk pomocou mikrofónu."</string> <string name="permlab_sim_communication" msgid="2935852302216852065">"posielanie príkazov do SIM karty"</string> <string name="permdesc_sim_communication" msgid="5725159654279639498">"Umožňuje aplikácii odosielať príkazy na SIM kartu. Toto je veľmi nebezpečné povolenie."</string> <string name="permlab_activityRecognition" msgid="3634590230567608356">"rozpoznávanie fyzickej aktivity"</string> @@ -1171,8 +1170,10 @@ <string name="whichViewApplication" msgid="3272778576700572102">"Otvoriť v aplikácii"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"Otvoriť v aplikácii %1$s"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"Otvoriť"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"Udeľte prístup na otváranie odkazov <xliff:g id="HOST">%1$s</xliff:g> pomocou aplikácie"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"Udeľte prístup na otváranie odkazov <xliff:g id="HOST">%1$s</xliff:g> pomocou aplikácie <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> + <string name="whichOpenHostLinksWith" msgid="3788174881117226583">"Otvárajte odkazy z webu <xliff:g id="HOST">%1$s</xliff:g> v prehliadači alebo aplikácii"</string> + <string name="whichOpenLinksWith" msgid="6392123355599572804">"Otvárajte odkazy v prehliadači"</string> + <string name="whichOpenLinksWithApp" msgid="8225991685366651614">"Otvárajte odkazy v prehliadači <xliff:g id="APPLICATION">%1$s</xliff:g>"</string> + <string name="whichOpenHostLinksWithApp" msgid="3464470639011045589">"Otvárajte odkazy z webu <xliff:g id="HOST">%1$s</xliff:g> v prehliadači <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"Udeliť prístup"</string> <string name="whichEditApplication" msgid="144727838241402655">"Upraviť pomocou"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"Upraviť v aplikácii %1$s"</string> @@ -1630,6 +1631,7 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"Spustiť prehliadač?"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"Prijať hovor?"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"Vždy"</string> + <string name="activity_resolver_set_always" msgid="1422574191056490585">"Nastaviť na Vždy otvárať"</string> <string name="activity_resolver_use_once" msgid="2404644797149173758">"Len raz"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"Nastavenia"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"Spúšťač %1$s nepodporuje pracovné profily"</string> @@ -1659,8 +1661,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"Prekrytie č. <xliff:g id="ID">%1$d</xliff:g>"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g> x <xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", zabezpečené"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"Toto spustenie aktivity na pozadí v režime <xliff:g id="PACKAGENAME">%1$s</xliff:g> bude blokované v budúcich zostavách Q. Pozrite si informácie na g.co/dev/bgblock."</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"Spustenie aktivity na pozadí v režime <xliff:g id="PACKAGENAME">%1$s</xliff:g> je blokované. Pozrite si informácie na g.co/dev/bgblock."</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Nepamätám si vzor"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"Nesprávny vzor"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"Nesprávne heslo"</string> @@ -1716,18 +1716,12 @@ <string name="accessibility_shortcut_enabling_service" msgid="7771852911861522636">"Skratka dostupnosti zapla službu <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> <string name="accessibility_shortcut_disabling_service" msgid="2747243438223109821">"Skratka dostupnosti vypla službu <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> <string name="accessibility_shortcut_spoken_feedback" msgid="8376923232350078434">"Ak chcete používať službu <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, pridržte tri sekundy oba klávesy hlasitosti"</string> - <!-- no translation found for accessibility_button_prompt_text (1176658502969738564) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8259145549733019401) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (1041435574275047665) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (7003212763213614833) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (5261788874937410950) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (4969448938984394550) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="1176658502969738564">"Vyberte službu, ktorú chcete používať po klepnutí na tlačidlo dostupnosti:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8259145549733019401">"Vyberte službu, ktorú chcete používať s daným gestom dostupnosti (potiahnutím dvoma prstami z dolnej časti obrazovky smerom nahor):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="1041435574275047665">"Vyberte službu aktivovanú daným gestom dostupnosti (potiahnutie troma prstami z dolnej časti obrazovky nahor):"</string> + <string name="accessibility_button_instructional_text" msgid="7003212763213614833">"Služby prepnete pridržaním tlačidla dostupnosti."</string> + <string name="accessibility_gesture_instructional_text" msgid="5261788874937410950">"Služby prepnete potiahnutím dvoma prstami smerom nahor a pridržaním."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="4969448938984394550">"Služby prepnete potiahnutím troma prstami nahor a pridržaním."</string> <string name="accessibility_magnification_chooser_text" msgid="1227146738764986237">"Priblíženie"</string> <string name="user_switched" msgid="3768006783166984410">"Aktuálny používateľ je <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="2871009331809089783">"Prepína sa na účet <xliff:g id="NAME">%1$s</xliff:g>…"</string> diff --git a/core/res/res/values-sl/strings.xml b/core/res/res/values-sl/strings.xml index b2cbdbf2b30e..2dc10edcee40 100644 --- a/core/res/res/values-sl/strings.xml +++ b/core/res/res/values-sl/strings.xml @@ -133,8 +133,7 @@ <!-- no translation found for wfcSpnFormat_spn (4998685024207291232) --> <skip /> <string name="wfcSpnFormat_spn_wifi_calling" msgid="136001023263502280">"Klicanje prek Wi-Fi-ja operaterja <xliff:g id="SPN">%s</xliff:g>"</string> - <!-- no translation found for wfcSpnFormat_spn_wifi_calling_vo_hyphen (1730997175789582756) --> - <skip /> + <string name="wfcSpnFormat_spn_wifi_calling_vo_hyphen" msgid="1730997175789582756">"Klicanje prek Wi‑Fi-ja pri operaterju <xliff:g id="SPN">%s</xliff:g>"</string> <string name="wfcSpnFormat_wlan_call" msgid="2533371081782489793">"Klic prek omrežja WLAN"</string> <string name="wfcSpnFormat_spn_wlan_call" msgid="2315240198303197168">"Klic prek omrežja WLAN operaterja <xliff:g id="SPN">%s</xliff:g>"</string> <string name="wfcSpnFormat_spn_wifi" msgid="6546481665561961938">"Wi-Fi operaterja <xliff:g id="SPN">%s</xliff:g>"</string> @@ -1171,8 +1170,10 @@ <string name="whichViewApplication" msgid="3272778576700572102">"Odpiranje z aplikacijo"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"Odpiranje z aplikacijo %1$s"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"Odpiranje"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"Omogočanje dostopa za odpiranje povezav <xliff:g id="HOST">%1$s</xliff:g> z aplikacijo"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"Omogočanje dostopa za odpiranje povezav <xliff:g id="HOST">%1$s</xliff:g> z aplikacijo <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> + <string name="whichOpenHostLinksWith" msgid="3788174881117226583">"Odpiranje povezav <xliff:g id="HOST">%1$s</xliff:g> z"</string> + <string name="whichOpenLinksWith" msgid="6392123355599572804">"Odpiranje povezav z"</string> + <string name="whichOpenLinksWithApp" msgid="8225991685366651614">"Odpiranje povezav z aplikacijo <xliff:g id="APPLICATION">%1$s</xliff:g>"</string> + <string name="whichOpenHostLinksWithApp" msgid="3464470639011045589">"Odpiranje povezav <xliff:g id="HOST">%1$s</xliff:g> z aplikacijo <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"Omogoči dostop"</string> <string name="whichEditApplication" msgid="144727838241402655">"Urejanje z aplikacijo"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"Urejanje z aplikacijo %1$s"</string> @@ -1630,6 +1631,7 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"Ali želite odpreti brskalnik?"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"Ali želite sprejeti klic?"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"Vedno"</string> + <string name="activity_resolver_set_always" msgid="1422574191056490585">"Nastavi na »vedno odpri«"</string> <string name="activity_resolver_use_once" msgid="2404644797149173758">"Samo tokrat"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"Nastavitve"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"%1$s ne podpira delovnega profila"</string> @@ -1659,8 +1661,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"Prekrivanje #<xliff:g id="ID">%1$d</xliff:g>"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g> x <xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> pik na palec"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", varen"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"Ta zagon dejavnosti v ozadju za paket <xliff:g id="PACKAGENAME">%1$s</xliff:g> bo blokiran v prihodnjih različicah Androida Q. Za več informacij obiščite g.co/dev/bgblock."</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"Zagon dejavnosti v ozadju za paket <xliff:g id="PACKAGENAME">%1$s</xliff:g> je bil blokiran. Za več informacij obiščite g.co/dev/bgblock."</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Pozabljen vzorec"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"Napačen vzorec"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"Napačno geslo"</string> diff --git a/core/res/res/values-sq/strings.xml b/core/res/res/values-sq/strings.xml index 9fc5a69d1799..1c2f64ef900d 100644 --- a/core/res/res/values-sq/strings.xml +++ b/core/res/res/values-sq/strings.xml @@ -1130,8 +1130,10 @@ <string name="whichViewApplication" msgid="3272778576700572102">"Hap me"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"Hap me %1$s"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"Hap"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"Jep qasje për të hapur lidhjet e <xliff:g id="HOST">%1$s</xliff:g> me"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"Jep qasje për të hapur lidhjet e <xliff:g id="HOST">%1$s</xliff:g> me <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> + <string name="whichOpenHostLinksWith" msgid="3788174881117226583">"Hapi lidhjet e <xliff:g id="HOST">%1$s</xliff:g> me"</string> + <string name="whichOpenLinksWith" msgid="6392123355599572804">"Hapi lidhjet me"</string> + <string name="whichOpenLinksWithApp" msgid="8225991685366651614">"Hapi lidhjet me <xliff:g id="APPLICATION">%1$s</xliff:g>"</string> + <string name="whichOpenHostLinksWithApp" msgid="3464470639011045589">"Hapi lidhjet e <xliff:g id="HOST">%1$s</xliff:g> me <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"Jep qasje"</string> <string name="whichEditApplication" msgid="144727838241402655">"Redakto me"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"Redakto me %1$s"</string> @@ -1584,6 +1586,7 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"Të hapet shfletuesi?"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"Dëshiron ta pranosh telefonatën?"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"Gjithmonë"</string> + <string name="activity_resolver_set_always" msgid="1422574191056490585">"Caktoje si gjithmonë të hapur"</string> <string name="activity_resolver_use_once" msgid="2404644797149173758">"Vetëm një herë"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"Cilësimet"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"%1$s nuk e mbështet profilin e punës"</string> @@ -1613,8 +1616,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"Mbivendosja #<xliff:g id="ID">%1$d</xliff:g>"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g>x<xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> ppi"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", i sigurt"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"Kjo nisje e aktivitetit në sfond nga <xliff:g id="PACKAGENAME">%1$s</xliff:g> do të bllokohet në ndërtimet e ardhshme të Q. Shiko g.co/dev/bgblock."</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"Nisja e aktivitetit në sfond nga <xliff:g id="PACKAGENAME">%1$s</xliff:g> u bllokua. Shiko g.co/dev/bgblock."</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Harrova motivin"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"Motivi është i gabuar"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"Fjalëkalim i gabuar"</string> diff --git a/core/res/res/values-sr/strings.xml b/core/res/res/values-sr/strings.xml index ed14eae8029a..0b3656e1cb89 100644 --- a/core/res/res/values-sr/strings.xml +++ b/core/res/res/values-sr/strings.xml @@ -269,7 +269,7 @@ <string name="notification_channel_alerts" msgid="4496839309318519037">"Обавештења"</string> <string name="notification_channel_retail_mode" msgid="6088920674914038779">"Режим демонстрације за малопродајне објекте"</string> <string name="notification_channel_usb" msgid="9006850475328924681">"USB веза"</string> - <string name="notification_channel_heavy_weight_app" msgid="6218742927792852607">"Апликација је покренута"</string> + <string name="notification_channel_heavy_weight_app" msgid="6218742927792852607">"Активна апликација"</string> <string name="notification_channel_foreground_service" msgid="3931987440602669158">"Апликације које троше батерију"</string> <string name="foreground_service_app_in_background" msgid="1060198778219731292">"<xliff:g id="APP_NAME">%1$s</xliff:g> користи батерију"</string> <string name="foreground_service_apps_in_background" msgid="7175032677643332242">"Апликације (<xliff:g id="NUMBER">%1$d</xliff:g>) користе батерију"</string> @@ -1150,8 +1150,10 @@ <string name="whichViewApplication" msgid="3272778576700572102">"Отворите помоћу"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"Отворите помоћу апликације %1$s"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"Отвори"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"Дозволите да се линкови <xliff:g id="HOST">%1$s</xliff:g> отварају помоћу"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"Дозволите да <xliff:g id="APPLICATION">%2$s</xliff:g> отвара линикове <xliff:g id="HOST">%1$s</xliff:g>"</string> + <string name="whichOpenHostLinksWith" msgid="3788174881117226583">"Отварајте <xliff:g id="HOST">%1$s</xliff:g> линкове помоћу"</string> + <string name="whichOpenLinksWith" msgid="6392123355599572804">"Отваратеј линкове помоћу"</string> + <string name="whichOpenLinksWithApp" msgid="8225991685366651614">"Отварајте линкове помоћу апликације <xliff:g id="APPLICATION">%1$s</xliff:g>"</string> + <string name="whichOpenHostLinksWithApp" msgid="3464470639011045589">"Отварајте <xliff:g id="HOST">%1$s</xliff:g> линкове помоћу апликације <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"Дозволи приступ"</string> <string name="whichEditApplication" msgid="144727838241402655">"Измените помоћу"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"Измените помоћу апликације %1$s"</string> @@ -1606,6 +1608,7 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"Желите ли да покренете прегледач?"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"Желите ли да прихватите позив?"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"Увек"</string> + <string name="activity_resolver_set_always" msgid="1422574191056490585">"Подеси на „увек отварај“"</string> <string name="activity_resolver_use_once" msgid="2404644797149173758">"Само једном"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"Подешавања"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"%1$s не подржава пословни профил"</string> @@ -1635,8 +1638,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"Постављени елемент бр. <xliff:g id="ID">%1$d</xliff:g>"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g>×<xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", безбедно"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"Ово покретање активности у позадини са <xliff:g id="PACKAGENAME">%1$s</xliff:g> биће блокирано у будућим Q верзијама. Погледајте g.co/dev/bgblock."</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"Покретање активности у позадини са <xliff:g id="PACKAGENAME">%1$s</xliff:g> је блокирано. Погледајте g.co/dev/bgblock."</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Заборављени шаблон"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"Погрешан шаблон"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"Погрешна лозинка"</string> diff --git a/core/res/res/values-sv/strings.xml b/core/res/res/values-sv/strings.xml index 034301857b3d..66256fa550de 100644 --- a/core/res/res/values-sv/strings.xml +++ b/core/res/res/values-sv/strings.xml @@ -296,7 +296,7 @@ <string name="permgrouprequest_storage" msgid="7885942926944299560">"Vill du ge <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> åtkomst till foton, mediefiler och andra filer på enheten?"</string> <string name="permgrouplab_microphone" msgid="171539900250043464">"Mikrofon"</string> <string name="permgroupdesc_microphone" msgid="4988812113943554584">"spela in ljud"</string> - <string name="permgrouprequest_microphone" msgid="9167492350681916038">"Vill du ge <b><xliff:g id="APP_NAME">%1$s</xliff:g>n</b> behörighet att spela in ljud?"</string> + <string name="permgrouprequest_microphone" msgid="9167492350681916038">"Vill du ge <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> behörighet att spela in ljud?"</string> <string name="permgrouplab_activityRecognition" msgid="1565108047054378642">"Fysiska aktivitet"</string> <string name="permgroupdesc_activityRecognition" msgid="6949472038320473478">"åtkomst till data om fysisk aktivitet"</string> <string name="permgrouprequest_activityRecognition" msgid="7626438016904799383">"Vill du ge <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> to åtkomst till data om fysisk aktivitet?"</string> @@ -887,7 +887,7 @@ <string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"Expandera upplåsningsytan."</string> <string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"Lås upp genom att dra."</string> <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"Lås upp med grafiskt lösenord."</string> - <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"Lås upp med Ansiktslås."</string> + <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"Ansiktslås."</string> <string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"Lås upp med PIN-kod."</string> <string name="keyguard_accessibility_sim_pin_unlock" msgid="9149698847116962307">"Lås upp med SIM-kortets pinkod."</string> <string name="keyguard_accessibility_sim_puk_unlock" msgid="9106899279724723341">"Lås upp med SIM-kortets PUK-kod."</string> @@ -1130,8 +1130,10 @@ <string name="whichViewApplication" msgid="3272778576700572102">"Öppna med"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"Öppna med %1$s"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"Öppna"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"Tillåt att länkar från <xliff:g id="HOST">%1$s</xliff:g> öppnas med"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"Tillåt att länkar från <xliff:g id="HOST">%1$s</xliff:g> öppnas med <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> + <string name="whichOpenHostLinksWith" msgid="3788174881117226583">"Öppna länkar på <xliff:g id="HOST">%1$s</xliff:g> med"</string> + <string name="whichOpenLinksWith" msgid="6392123355599572804">"Öppna länkar med"</string> + <string name="whichOpenLinksWithApp" msgid="8225991685366651614">"Öppna länkar med <xliff:g id="APPLICATION">%1$s</xliff:g>"</string> + <string name="whichOpenHostLinksWithApp" msgid="3464470639011045589">"Öppna länkar på <xliff:g id="HOST">%1$s</xliff:g> med <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"Ge åtkomst"</string> <string name="whichEditApplication" msgid="144727838241402655">"Redigera med"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"Redigera med %1$s"</string> @@ -1583,6 +1585,7 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"Vill du öppna webbläsaren?"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"Vill du ta emot samtal?"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"Alltid"</string> + <string name="activity_resolver_set_always" msgid="1422574191056490585">"Ställ in på att alltid öppnas"</string> <string name="activity_resolver_use_once" msgid="2404644797149173758">"Bara en gång"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"Inställningar"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"%1$s har inte stöd för arbetsprofil"</string> @@ -1612,8 +1615,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"Överlagring #<xliff:g id="ID">%1$d</xliff:g>"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g> x <xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", säker"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"Denna bakgrundsaktivitet som startar från <xliff:g id="PACKAGENAME">%1$s</xliff:g> blockeras i framtida Q-versioner. Läs mer på g.co/dev/bgblock."</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"Start av bakgrundsaktivitet från <xliff:g id="PACKAGENAME">%1$s</xliff:g> blockerades. Läs mer på g.co/dev/bgblock."</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Har du glömt ditt grafiska lösenord?"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"Fel grafiskt lösenord"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"Fel lösenord"</string> diff --git a/core/res/res/values-sw/strings.xml b/core/res/res/values-sw/strings.xml index a2644cad896a..1071aef3cc30 100644 --- a/core/res/res/values-sw/strings.xml +++ b/core/res/res/values-sw/strings.xml @@ -131,8 +131,7 @@ <!-- no translation found for wfcSpnFormat_spn (4998685024207291232) --> <skip /> <string name="wfcSpnFormat_spn_wifi_calling" msgid="136001023263502280">"Kupiga Simu Kupitia Wi-Fi ya <xliff:g id="SPN">%s</xliff:g>"</string> - <!-- no translation found for wfcSpnFormat_spn_wifi_calling_vo_hyphen (1730997175789582756) --> - <skip /> + <string name="wfcSpnFormat_spn_wifi_calling_vo_hyphen" msgid="1730997175789582756">"Kupiga Simu Kupitia WiFi <xliff:g id="SPN">%s</xliff:g>"</string> <string name="wfcSpnFormat_wlan_call" msgid="2533371081782489793">"Simu ya WLAN"</string> <string name="wfcSpnFormat_spn_wlan_call" msgid="2315240198303197168">"Simu ya WLAN ya <xliff:g id="SPN">%s</xliff:g>"</string> <string name="wfcSpnFormat_spn_wifi" msgid="6546481665561961938">"Wi-Fi ya <xliff:g id="SPN">%s</xliff:g>"</string> @@ -309,7 +308,7 @@ <string name="permgrouprequest_calllog" msgid="8487355309583773267">"Ungependa kuiruhusu <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ifikie rekodi zako za nambari za simu?"</string> <string name="permgrouplab_phone" msgid="5229115638567440675">"Simu"</string> <string name="permgroupdesc_phone" msgid="6234224354060641055">"piga na udhibiti simu"</string> - <string name="permgrouprequest_phone" msgid="9166979577750581037">"Ungependa kuiruhusu <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ipige na kudhibiti simu?"</string> + <string name="permgrouprequest_phone" msgid="9166979577750581037">"Ungependa kuruhusu <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> kupiga na kudhibiti simu?"</string> <string name="permgrouplab_sensors" msgid="4838614103153567532">"Vihisi vya mwili"</string> <string name="permgroupdesc_sensors" msgid="7147968539346634043">"fikia data ya kitambuzi kuhusu alama zako muhimu"</string> <string name="permgrouprequest_sensors" msgid="6349806962814556786">"Ungependa kuiruhusu <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ifikie data ya vitambuzi kuhusu viashiria muhimu vya mwili wako?"</string> @@ -568,7 +567,7 @@ <string name="face_acquired_too_right" msgid="3667075962661863218">"Sogeza simu upande wa kushoto."</string> <string name="face_acquired_too_left" msgid="3148242963894703424">"Sogeza simu upande wa kulia."</string> <string name="face_acquired_poor_gaze" msgid="5606479370806754905">"Tafadhali angalia kifaa chako moja kwa moja."</string> - <string name="face_acquired_not_detected" msgid="4885504661626728809">"Imeshindwa kuona uso wako. Angalia simu."</string> + <string name="face_acquired_not_detected" msgid="4885504661626728809">"Uso wako hauonekani. Angalia simu."</string> <string name="face_acquired_too_much_motion" msgid="3149332171102108851">"Inatikisika sana. Ishike simu iwe thabiti."</string> <string name="face_acquired_recalibrate" msgid="8077949502893707539">"Tafadhali sajili uso wako tena."</string> <string name="face_acquired_too_different" msgid="7663983770123789694">"Haiwezi tena kutambua uso. Jaribu tena."</string> @@ -684,9 +683,9 @@ <string name="policylab_disableKeyguardFeatures" msgid="8552277871075367771">"Kuzima baadhi ya vipengele vya kufunga skrini"</string> <string name="policydesc_disableKeyguardFeatures" msgid="2044755691354158439">"Zuia matumizi ya baadhi ya vipengele vya kufunga skrini."</string> <string-array name="phoneTypes"> - <item msgid="8901098336658710359">"Nyumbani"</item> + <item msgid="8901098336658710359">"Ya nyumbani"</item> <item msgid="869923650527136615">"Simu ya mkononi"</item> - <item msgid="7897544654242874543">"Kazi"</item> + <item msgid="7897544654242874543">"Ya kazini"</item> <item msgid="1103601433382158155">"Pepesi ya Kazini"</item> <item msgid="1735177144948329370">"Pepesi ya Nyumbani"</item> <item msgid="603878674477207394">"Kurasa anwani"</item> @@ -727,9 +726,9 @@ <item msgid="1648797903785279353">"Jabber"</item> </string-array> <string name="phoneTypeCustom" msgid="1644738059053355820">"Maalum"</string> - <string name="phoneTypeHome" msgid="2570923463033985887">"Nyumbani"</string> + <string name="phoneTypeHome" msgid="2570923463033985887">"Ya nyumbani"</string> <string name="phoneTypeMobile" msgid="6501463557754751037">"Simu ya mkononi"</string> - <string name="phoneTypeWork" msgid="8863939667059911633">"Kazi"</string> + <string name="phoneTypeWork" msgid="8863939667059911633">"Ya kazini"</string> <string name="phoneTypeFaxWork" msgid="3517792160008890912">"Pepesi ya Kazini"</string> <string name="phoneTypeFaxHome" msgid="2067265972322971467">"Pepesi ya Nyumbani"</string> <string name="phoneTypePager" msgid="7582359955394921732">"Peja"</string> @@ -818,7 +817,7 @@ <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"Jaribu tena"</string> <string name="lockscreen_password_wrong" msgid="5737815393253165301">"Jaribu tena"</string> <string name="lockscreen_storage_locked" msgid="9167551160010625200">"Fungua kifaa ili upate data na vipengele vyote"</string> - <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Majaribio ya Juu ya Kufungua Uso yamezidishwa"</string> + <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Umepitisha idadi ya juu ya mara ambazo unaweza kujaribu Kufungua kwa Uso"</string> <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"Hakuna SIM kadi"</string> <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"Hakuna SIM kadi katika kompyuta ndogo."</string> <string name="lockscreen_missing_sim_message" product="tv" msgid="1943633865476989599">"Hakuna SIM kadi katika runinga."</string> @@ -1131,8 +1130,10 @@ <string name="whichViewApplication" msgid="3272778576700572102">"Fungua ukitumia"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"Fungua ukitumia %1$s"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"Fungua"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"Ipe <xliff:g id="HOST">%1$s</xliff:g> ruhusa ya kufungua viungo kwa kutumia"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"Ipe <xliff:g id="HOST">%1$s</xliff:g> ruhusa ya kufungua viungo kwa kutumia <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> + <string name="whichOpenHostLinksWith" msgid="3788174881117226583">"Fungua viungo vya <xliff:g id="HOST">%1$s</xliff:g> ukitumia"</string> + <string name="whichOpenLinksWith" msgid="6392123355599572804">"Fungua viungo ukitumia"</string> + <string name="whichOpenLinksWithApp" msgid="8225991685366651614">"Fungua viungo ukitumia <xliff:g id="APPLICATION">%1$s</xliff:g>"</string> + <string name="whichOpenHostLinksWithApp" msgid="3464470639011045589">"Fungua viungo vya <xliff:g id="HOST">%1$s</xliff:g> ukitumia <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"Idhinisha ufikiaji"</string> <string name="whichEditApplication" msgid="144727838241402655">"Badilisha kwa"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"Badilisha kwa %1$s"</string> @@ -1584,6 +1585,7 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"Zindua Kivinjari?"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"Kubali simu?"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"Kila mara"</string> + <string name="activity_resolver_set_always" msgid="1422574191056490585">"Weka ifunguke kila wakati"</string> <string name="activity_resolver_use_once" msgid="2404644797149173758">"Mara moja tu"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"Mipangilio"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"%1$s haitumii wasifu wa kazini"</string> @@ -1613,8 +1615,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"Uwekeleaji #<xliff:g id="ID">%1$d</xliff:g>"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g>x<xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", salama"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"Itazuia shughuli hii ya chinichini inayoanzia <xliff:g id="PACKAGENAME">%1$s</xliff:g> katika miundo ya baadaye ya Q. Angalia g.co/dev/bgblock."</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"Imezuia shughuli za chinichini zinazoanzia <xliff:g id="PACKAGENAME">%1$s</xliff:g>. Angalia g.co/dev/bgblock."</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Umesahau Ruwaza"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"Mchoro huo si sahihi"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"Nenosiri Lisilo sahihi"</string> @@ -1668,18 +1668,12 @@ <string name="accessibility_shortcut_enabling_service" msgid="7771852911861522636">"Njia ya mkato ya zana za walio na matatizo ya kuona au kusikia imewasha <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> <string name="accessibility_shortcut_disabling_service" msgid="2747243438223109821">"Njia ya mkato ya zana za walio na matatizo ya kuona au kusikia imezima <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> <string name="accessibility_shortcut_spoken_feedback" msgid="8376923232350078434">"Bonyeza na ushikilie vitufe vyote viwili vya sauti kwa sekunde tatu ili utumie <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for accessibility_button_prompt_text (1176658502969738564) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8259145549733019401) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (1041435574275047665) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (7003212763213614833) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (5261788874937410950) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (4969448938984394550) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="1176658502969738564">"Chagua huduma ya kutumia unapogusa kitufe cha ufikivu:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8259145549733019401">"Chagua huduma ya kutumia pamoja na ishara ya ufikivu (telezesha vidole viwili kutoka chini kwenda juu kwenye skrini):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="1041435574275047665">"Chagua huduma ya kutumia pamoja na ishara ya ufikivu (telezesha kutoka chini kwenda juu kwenye skrini kwa vidole vitatu):"</string> + <string name="accessibility_button_instructional_text" msgid="7003212763213614833">"Ili ubadilishe kati ya huduma, gusa na ushikilie kitufe cha ufikivu."</string> + <string name="accessibility_gesture_instructional_text" msgid="5261788874937410950">"Ili ubadilishe kati ya huduma, telezesha vidole viwili juu na ushikilie."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="4969448938984394550">"Ili ubadilishe kati ya huduma, telezesha vidole vitatu juu na ushikilie."</string> <string name="accessibility_magnification_chooser_text" msgid="1227146738764986237">"Ukuzaji"</string> <string name="user_switched" msgid="3768006783166984410">"Mtumiaji wa sasa <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="2871009331809089783">"Inabadili kwenda <xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -1912,7 +1906,7 @@ <string name="deprecated_target_sdk_app_store" msgid="5032340500368495077">"Angalia masasisho"</string> <string name="new_sms_notification_title" msgid="8442817549127555977">"Una ujumbe mpya"</string> <string name="new_sms_notification_content" msgid="7002938807812083463">"Fungua programu ya SMS ili uweze kuangalia"</string> - <string name="profile_encrypted_title" msgid="4260432497586829134">"Huenda ikadhibiti baadhi ya vipengele"</string> + <string name="profile_encrypted_title" msgid="4260432497586829134">"Huenda baadhi ya vipengele vinadhibitiwa"</string> <string name="profile_encrypted_detail" msgid="3700965619978314974">"Wasifu wa kazini umefungwa"</string> <string name="profile_encrypted_message" msgid="6964994232310195874">"Gusa ili ufungue wasifu wa kazini"</string> <string name="usb_mtp_launch_notification_title" msgid="8359219638312208932">"Imeunganishwa na <xliff:g id="PRODUCT_NAME">%1$s</xliff:g>"</string> diff --git a/core/res/res/values-ta/strings.xml b/core/res/res/values-ta/strings.xml index 7b164409e762..51d0ffa84a90 100644 --- a/core/res/res/values-ta/strings.xml +++ b/core/res/res/values-ta/strings.xml @@ -131,8 +131,7 @@ <!-- no translation found for wfcSpnFormat_spn (4998685024207291232) --> <skip /> <string name="wfcSpnFormat_spn_wifi_calling" msgid="136001023263502280">"<xliff:g id="SPN">%s</xliff:g> வைஃபை அழைப்பு"</string> - <!-- no translation found for wfcSpnFormat_spn_wifi_calling_vo_hyphen (1730997175789582756) --> - <skip /> + <string name="wfcSpnFormat_spn_wifi_calling_vo_hyphen" msgid="1730997175789582756">"<xliff:g id="SPN">%s</xliff:g> வைஃபை அழைப்பு"</string> <string name="wfcSpnFormat_wlan_call" msgid="2533371081782489793">"WLAN அழைப்பு"</string> <string name="wfcSpnFormat_spn_wlan_call" msgid="2315240198303197168">"<xliff:g id="SPN">%s</xliff:g> WLAN அழைப்பு"</string> <string name="wfcSpnFormat_spn_wifi" msgid="6546481665561961938">"<xliff:g id="SPN">%s</xliff:g> வைஃபை"</string> @@ -268,7 +267,7 @@ <string name="notification_channel_retail_mode" msgid="6088920674914038779">"விற்பனையாளர் டெமோ"</string> <string name="notification_channel_usb" msgid="9006850475328924681">"USB இணைப்பு"</string> <string name="notification_channel_heavy_weight_app" msgid="6218742927792852607">"ஆப்ஸ் இயங்குகிறது"</string> - <string name="notification_channel_foreground_service" msgid="3931987440602669158">"பேட்டரியைப் பயன்படுத்தும் பயன்பாடுகள்"</string> + <string name="notification_channel_foreground_service" msgid="3931987440602669158">"பேட்டரியைப் பயன்படுத்தும் ஆப்ஸ்"</string> <string name="foreground_service_app_in_background" msgid="1060198778219731292">"<xliff:g id="APP_NAME">%1$s</xliff:g> ஆப்ஸ் பேட்டரியைப் பயன்படுத்துகிறது"</string> <string name="foreground_service_apps_in_background" msgid="7175032677643332242">"<xliff:g id="NUMBER">%1$d</xliff:g> பயன்பாடுகள் பேட்டரியைப் பயன்படுத்துகின்றன"</string> <string name="foreground_service_tap_for_details" msgid="372046743534354644">"பேட்டரி மற்றும் டேட்டா உபயோக விவரங்களைக் காண, தட்டவும்"</string> @@ -888,7 +887,7 @@ <string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"திறப்பதற்கான பகுதியை விவரிக்கவும்."</string> <string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"ஸ்லைடு மூலம் திறத்தல்."</string> <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"வடிவம் மூலம் திறத்தல்."</string> - <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"முகத்தால் திறத்தல்."</string> + <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"முகம் காட்டித் திறத்தல்."</string> <string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"Pin மூலம் திறத்தல்."</string> <string name="keyguard_accessibility_sim_pin_unlock" msgid="9149698847116962307">"சிம்மைத் திறக்கும் பின்."</string> <string name="keyguard_accessibility_sim_puk_unlock" msgid="9106899279724723341">"சிம்மைத் திறக்கும் Puk."</string> @@ -1131,8 +1130,10 @@ <string name="whichViewApplication" msgid="3272778576700572102">"இதன்மூலம் திற"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"%1$s மூலம் திற"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"திற"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"மூலம் <xliff:g id="HOST">%1$s</xliff:g> இணைப்புகளைத் திறப்பதற்கான அணுகலை வழங்குதல்"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"<xliff:g id="APPLICATION">%2$s</xliff:g> மூலம் <xliff:g id="HOST">%1$s</xliff:g> இணைப்புகளைத் திறப்பதற்கான அணுகலை வழங்குதல்"</string> + <string name="whichOpenHostLinksWith" msgid="3788174881117226583">"<xliff:g id="HOST">%1$s</xliff:g> இணைப்புகளை இதன் மூலம் திற:"</string> + <string name="whichOpenLinksWith" msgid="6392123355599572804">"இணைப்புகளை இதன் மூலம் திற:"</string> + <string name="whichOpenLinksWithApp" msgid="8225991685366651614">"இணைப்புகளை <xliff:g id="APPLICATION">%1$s</xliff:g> ஆப்ஸில் திறத்தல்"</string> + <string name="whichOpenHostLinksWithApp" msgid="3464470639011045589">"<xliff:g id="HOST">%1$s</xliff:g> இணைப்புகளை <xliff:g id="APPLICATION">%2$s</xliff:g> ஆப்ஸில் திறத்தல்"</string> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"அணுகலை வழங்கு"</string> <string name="whichEditApplication" msgid="144727838241402655">"இதன் மூலம் திருத்து"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"%1$s மூலம் திருத்து"</string> @@ -1585,6 +1586,7 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"உலாவியைத் துவக்கவா?"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"அழைப்பை ஏற்கவா?"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"எப்போதும்"</string> + <string name="activity_resolver_set_always" msgid="1422574191056490585">"எப்போதும் திறக்குமாறு அமைத்தல்"</string> <string name="activity_resolver_use_once" msgid="2404644797149173758">"இப்போது மட்டும்"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"அமைப்புகள்"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"%1$s பணிக் கணக்கை ஆதரிக்காது"</string> @@ -1614,8 +1616,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"மேலோட்ட #<xliff:g id="ID">%1$d</xliff:g>"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g>x<xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", பாதுகாப்பானது"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"<xliff:g id="PACKAGENAME">%1$s</xliff:g>மின் \'பின்னணிச் செயல்பாடுத் தொடக்கம்\' இனிவரும் Q பதிப்புகளில் தடுக்கப்படும். g.co/dev/bgblock என்ற இணைப்பைப் பார்க்கவும்."</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"<xliff:g id="PACKAGENAME">%1$s</xliff:g>மில் \'பின்னணிச் செயல்பாட்டுத் தொடக்கம்\' தடுக்கப்பட்டுள்ளது. g.co/dev/bgblock என்ற இணைப்பைப் பார்க்கவும்."</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"வடிவத்தை மறந்துவிட்டீர்களா"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"தவறான வடிவம்"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"தவறான கடவுச்சொல்"</string> @@ -1669,18 +1669,12 @@ <string name="accessibility_shortcut_enabling_service" msgid="7771852911861522636">"அணுகல்தன்மை ஷார்ட்கட்டானது <xliff:g id="SERVICE_NAME">%1$s</xliff:g>ஐ இயக்கியது"</string> <string name="accessibility_shortcut_disabling_service" msgid="2747243438223109821">"அணுகல்தன்மை ஷார்ட்கட்டானது <xliff:g id="SERVICE_NAME">%1$s</xliff:g>ஐ முடக்கியது"</string> <string name="accessibility_shortcut_spoken_feedback" msgid="8376923232350078434">"<xliff:g id="SERVICE_NAME">%1$s</xliff:g>ஐப் பயன்படுத்த 3 விநாடிகளுக்கு இரண்டு ஒலியளவு பட்டன்களையும் அழுத்திப் பிடிக்கவும்"</string> - <!-- no translation found for accessibility_button_prompt_text (1176658502969738564) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8259145549733019401) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (1041435574275047665) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (7003212763213614833) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (5261788874937410950) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (4969448938984394550) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="1176658502969738564">"அணுகல்தன்மை பட்டனுக்கான சேவையைத் தேர்வுசெய்யவும்:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8259145549733019401">"அணுகல்தன்மை சைகைக்கான சேவையைத் தேர்வுசெய்யவும் (இரண்டு விரல்களால் திரையின் கீழிருந்து மேல் நோக்கி ஸ்வைப் செய்யவும்):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="1041435574275047665">"அணுகல்தன்மை சைகைக்கான சேவையைத் தேர்வுசெய்யவும் (மூன்று விரல்களால் திரையின் கீழிருந்து மேல் நோக்கி ஸ்வைப் செய்யவும்):"</string> + <string name="accessibility_button_instructional_text" msgid="7003212763213614833">"சேவைகளுக்கு இடையே மாற அணுகல்தன்மை பட்டனைத் தொட்டுப் பிடிக்கவும்."</string> + <string name="accessibility_gesture_instructional_text" msgid="5261788874937410950">"சேவைகளுக்கு இடையே மாற இரண்டு விரல்களால் மேல்நோக்கி ஸ்வைப் செய்து பிடிக்கவும்."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="4969448938984394550">"சேவைகளுக்கு இடையே மாற மூன்று விரல்களால் மேல்நோக்கி ஸ்வைப் செய்து பிடிக்கவும்."</string> <string name="accessibility_magnification_chooser_text" msgid="1227146738764986237">"பெரிதாக்கல்"</string> <string name="user_switched" msgid="3768006783166984410">"நடப்பு பயனர் <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="2871009331809089783">"<xliff:g id="NAME">%1$s</xliff:g>க்கு மாறுகிறது…"</string> diff --git a/core/res/res/values-te/strings.xml b/core/res/res/values-te/strings.xml index a5c562cad7af..1556b1739fb7 100644 --- a/core/res/res/values-te/strings.xml +++ b/core/res/res/values-te/strings.xml @@ -131,8 +131,7 @@ <!-- no translation found for wfcSpnFormat_spn (4998685024207291232) --> <skip /> <string name="wfcSpnFormat_spn_wifi_calling" msgid="136001023263502280">"<xliff:g id="SPN">%s</xliff:g> Wi-Fi కాలింగ్"</string> - <!-- no translation found for wfcSpnFormat_spn_wifi_calling_vo_hyphen (1730997175789582756) --> - <skip /> + <string name="wfcSpnFormat_spn_wifi_calling_vo_hyphen" msgid="1730997175789582756">"<xliff:g id="SPN">%s</xliff:g> Wi-Fi కాలింగ్"</string> <string name="wfcSpnFormat_wlan_call" msgid="2533371081782489793">"WLAN కాల్"</string> <string name="wfcSpnFormat_spn_wlan_call" msgid="2315240198303197168">"<xliff:g id="SPN">%s</xliff:g> WLAN కాల్"</string> <string name="wfcSpnFormat_spn_wifi" msgid="6546481665561961938">"<xliff:g id="SPN">%s</xliff:g> Wi-Fi"</string> @@ -255,7 +254,7 @@ <string name="notification_channel_virtual_keyboard" msgid="6969925135507955575">"వర్చువల్ కీబోర్డ్"</string> <string name="notification_channel_physical_keyboard" msgid="7297661826966861459">"భౌతిక కీబోర్డ్"</string> <string name="notification_channel_security" msgid="7345516133431326347">"భద్రత"</string> - <string name="notification_channel_car_mode" msgid="3553380307619874564">"కారు మోడ్"</string> + <string name="notification_channel_car_mode" msgid="3553380307619874564">"కార్ మోడ్"</string> <string name="notification_channel_account" msgid="7577959168463122027">"ఖాతా స్థితి"</string> <string name="notification_channel_developer" msgid="7579606426860206060">"డెవలపర్ సందేశాలు"</string> <string name="notification_channel_updates" msgid="4794517569035110397">"అప్డేట్లు"</string> @@ -263,7 +262,7 @@ <string name="notification_channel_network_alerts" msgid="2895141221414156525">"నెట్వర్క్ హెచ్చరికలు"</string> <string name="notification_channel_network_available" msgid="4531717914138179517">"నెట్వర్క్ అందుబాటులో ఉంది"</string> <string name="notification_channel_vpn" msgid="8330103431055860618">"VPN స్థితి"</string> - <string name="notification_channel_device_admin" msgid="8353118887482520565">"మీ IT నిర్వాహకులు నుండి వచ్చే హెచ్చరికలు"</string> + <string name="notification_channel_device_admin" msgid="8353118887482520565">"మీ IT నిర్వాహకుల నుండి వచ్చే హెచ్చరికలు"</string> <string name="notification_channel_alerts" msgid="4496839309318519037">"హెచ్చరికలు"</string> <string name="notification_channel_retail_mode" msgid="6088920674914038779">"రిటైల్ డెమో"</string> <string name="notification_channel_usb" msgid="9006850475328924681">"USB కనెక్షన్"</string> @@ -1131,8 +1130,10 @@ <string name="whichViewApplication" msgid="3272778576700572102">"దీనితో తెరువు"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"%1$sతో తెరువు"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"తెరువు"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"<xliff:g id="HOST">%1$s</xliff:g> లింక్లను తెరవడానికి యాక్సెస్ ఇవ్వండి"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"<xliff:g id="APPLICATION">%2$s</xliff:g>తో <xliff:g id="HOST">%1$s</xliff:g> లింక్లను తెరవడానికి యాక్సెస్ ఇవ్వండి"</string> + <string name="whichOpenHostLinksWith" msgid="3788174881117226583">"దీనితో <xliff:g id="HOST">%1$s</xliff:g> లింక్లను తెరవండి"</string> + <string name="whichOpenLinksWith" msgid="6392123355599572804">"దీనితో లింక్లను తెరవండి"</string> + <string name="whichOpenLinksWithApp" msgid="8225991685366651614">"<xliff:g id="APPLICATION">%1$s</xliff:g>తో లింక్లను తెరవండి"</string> + <string name="whichOpenHostLinksWithApp" msgid="3464470639011045589">"<xliff:g id="HOST">%1$s</xliff:g> లింక్లను <xliff:g id="APPLICATION">%2$s</xliff:g>తో తెరవండి"</string> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"యాక్సెస్ ఇవ్వండి"</string> <string name="whichEditApplication" msgid="144727838241402655">"దీనితో సవరించు"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"%1$sతో సవరించు"</string> @@ -1585,7 +1586,8 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"బ్రౌజర్ను ప్రారంభించాలా?"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"కాల్ను ఆమోదించాలా?"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"ఎల్లప్పుడూ"</string> - <string name="activity_resolver_use_once" msgid="2404644797149173758">"ఒకసారి"</string> + <string name="activity_resolver_set_always" msgid="1422574191056490585">"ఎల్లప్పుడూ తెరవడానికి సెట్ చేయి"</string> + <string name="activity_resolver_use_once" msgid="2404644797149173758">"ఒకసారి మాత్రమే"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"సెట్టింగ్లు"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"%1$s కార్యాలయ ప్రొఫైల్కు మద్దతు ఇవ్వదు"</string> <string name="default_audio_route_name" product="tablet" msgid="4617053898167127471">"టాబ్లెట్"</string> @@ -1614,8 +1616,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"అతివ్యాప్తి #<xliff:g id="ID">%1$d</xliff:g>"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g>x<xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", సురక్షితం"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"<xliff:g id="PACKAGENAME">%1$s</xliff:g> నుండి ప్రారంభం అయ్యే నేపథ్య కార్యకలాపం భవిష్యత్తు Q బిల్డ్లలో బ్లాక్ చేయబడుతుంది. See g.co/dev/bgblock."</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"<xliff:g id="PACKAGENAME">%1$s</xliff:g> నుండి ప్రారంభం అయ్యే నేపథ్య కార్యకలాపం బ్లాక్ చేయబడింది. See g.co/dev/bgblock."</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"నమూనాను మర్చిపోయాను"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"ఆకృతి తప్పు"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"పాస్వర్డ్ తప్పు"</string> diff --git a/core/res/res/values-th/strings.xml b/core/res/res/values-th/strings.xml index 71b81950d2cc..8328af539578 100644 --- a/core/res/res/values-th/strings.xml +++ b/core/res/res/values-th/strings.xml @@ -131,8 +131,7 @@ <!-- no translation found for wfcSpnFormat_spn (4998685024207291232) --> <skip /> <string name="wfcSpnFormat_spn_wifi_calling" msgid="136001023263502280">"การโทรผ่าน Wi-Fi <xliff:g id="SPN">%s</xliff:g>"</string> - <!-- no translation found for wfcSpnFormat_spn_wifi_calling_vo_hyphen (1730997175789582756) --> - <skip /> + <string name="wfcSpnFormat_spn_wifi_calling_vo_hyphen" msgid="1730997175789582756">"การโทรผ่าน Wi-Fi ของ <xliff:g id="SPN">%s</xliff:g>"</string> <string name="wfcSpnFormat_wlan_call" msgid="2533371081782489793">"การโทรผ่าน WLAN"</string> <string name="wfcSpnFormat_spn_wlan_call" msgid="2315240198303197168">"การโทรผ่าน WLAN <xliff:g id="SPN">%s</xliff:g>"</string> <string name="wfcSpnFormat_spn_wifi" msgid="6546481665561961938">"Wi-Fi <xliff:g id="SPN">%s</xliff:g>"</string> @@ -568,7 +567,7 @@ <string name="face_acquired_too_right" msgid="3667075962661863218">"เลื่อนโทรศัพท์ไปทางซ้าย"</string> <string name="face_acquired_too_left" msgid="3148242963894703424">"เลื่อนโทรศัพท์ไปทางขวา"</string> <string name="face_acquired_poor_gaze" msgid="5606479370806754905">"โปรดมองตรงมาที่อุปกรณ์"</string> - <string name="face_acquired_not_detected" msgid="4885504661626728809">"ไม่เห็นหน้า มองที่โทรศัพท์"</string> + <string name="face_acquired_not_detected" msgid="4885504661626728809">"ไม่เห็นหน้าเลย ลองมองที่โทรศัพท์"</string> <string name="face_acquired_too_much_motion" msgid="3149332171102108851">"มีการเคลื่อนไหวมากเกินไป ถือโทรศัพท์นิ่งๆ"</string> <string name="face_acquired_recalibrate" msgid="8077949502893707539">"โปรดลงทะเบียนใบหน้าอีกครั้ง"</string> <string name="face_acquired_too_different" msgid="7663983770123789694">"จำใบหน้าไม่ได้แล้ว ลองอีกครั้ง"</string> @@ -1131,8 +1130,10 @@ <string name="whichViewApplication" msgid="3272778576700572102">"เปิดด้วย"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"เปิดด้วย %1$s"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"เปิด"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"ให้สิทธิ์ในการเปิดลิงก์ของ <xliff:g id="HOST">%1$s</xliff:g> โดยใช้"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"ให้สิทธิ์ในการเปิดลิงก์ของ <xliff:g id="HOST">%1$s</xliff:g> โดยใช้ <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> + <string name="whichOpenHostLinksWith" msgid="3788174881117226583">"เปิดลิงก์ <xliff:g id="HOST">%1$s</xliff:g> ด้วย"</string> + <string name="whichOpenLinksWith" msgid="6392123355599572804">"เปิดลิงก์ด้วย"</string> + <string name="whichOpenLinksWithApp" msgid="8225991685366651614">"เปิดลิงก์ด้วย <xliff:g id="APPLICATION">%1$s</xliff:g>"</string> + <string name="whichOpenHostLinksWithApp" msgid="3464470639011045589">"เปิดลิงก์ <xliff:g id="HOST">%1$s</xliff:g> ด้วย <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"ให้สิทธิ์"</string> <string name="whichEditApplication" msgid="144727838241402655">"แก้ไขด้วย"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"แก้ไขด้วย %1$s"</string> @@ -1584,6 +1585,7 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"เปิดเบราว์เซอร์หรือไม่"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"รับสายหรือไม่"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"ทุกครั้ง"</string> + <string name="activity_resolver_set_always" msgid="1422574191056490585">"ตั้งค่าให้เปิดทุกครั้ง"</string> <string name="activity_resolver_use_once" msgid="2404644797149173758">"เฉพาะครั้งนี้"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"การตั้งค่า"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"%1$s ไม่สนับสนุนโปรไฟล์งาน"</string> @@ -1613,8 +1615,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"การวางซ้อน #<xliff:g id="ID">%1$d</xliff:g>"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g>x<xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", ปลอดภัย"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"การเริ่มกิจกรรมในเบื้องหลังจาก <xliff:g id="PACKAGENAME">%1$s</xliff:g> นี้จะถูกบล็อกในบิวด์ Q ในอนาคต โปรดดู g.co/dev/bgblock"</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"บล็อกการเริ่มกิจกรรมในเบื้องหลังจาก <xliff:g id="PACKAGENAME">%1$s</xliff:g> แล้ว โปรดดู g.co/dev/bgblock"</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"ลืมรูปแบบใช่หรือไม่"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"รูปแบบไม่ถูกต้อง"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"รหัสผ่านไม่ถูกต้อง"</string> @@ -1668,18 +1668,12 @@ <string name="accessibility_shortcut_enabling_service" msgid="7771852911861522636">"ทางลัดการเข้าถึงเปิด <xliff:g id="SERVICE_NAME">%1$s</xliff:g> แล้ว"</string> <string name="accessibility_shortcut_disabling_service" msgid="2747243438223109821">"ทางลัดการเข้าถึงปิด <xliff:g id="SERVICE_NAME">%1$s</xliff:g> แล้ว"</string> <string name="accessibility_shortcut_spoken_feedback" msgid="8376923232350078434">"กดปุ่มปรับระดับเสียงทั้ง 2 ปุ่มค้างไว้ 3 วินาทีเพื่อใช้ <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for accessibility_button_prompt_text (1176658502969738564) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8259145549733019401) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (1041435574275047665) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (7003212763213614833) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (5261788874937410950) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (4969448938984394550) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="1176658502969738564">"เลือกบริการที่จะใช้เมื่อคุณแตะปุ่มการช่วยเหลือพิเศษ:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8259145549733019401">"เลือกบริการที่จะใช้กับท่าทางสัมผัสการช่วยเหลือพิเศษ (ใช้ 2 นิ้วเลื่อนขึ้นจากด้านล่างของหน้าจอ):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="1041435574275047665">"เลือกบริการที่จะใช้กับท่าทางสัมผัสการช่วยเหลือพิเศษ (ใช้ 3 นิ้วเลื่อนขึ้นจากด้านล่างของหน้าจอ):"</string> + <string name="accessibility_button_instructional_text" msgid="7003212763213614833">"หากต้องการสลับระหว่างบริการ ให้แตะปุ่มการช่วยเหลือพิเศษค้างไว้"</string> + <string name="accessibility_gesture_instructional_text" msgid="5261788874937410950">"หากต้องการสลับระหว่างบริการ ให้ใช้ 2 นิ้วเลื่อนขึ้นค้างไว้"</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="4969448938984394550">"หากต้องการสลับระหว่างบริการ ให้ใช้ 3 นิ้วเลื่อนขึ้นค้างไว้"</string> <string name="accessibility_magnification_chooser_text" msgid="1227146738764986237">"การขยาย"</string> <string name="user_switched" msgid="3768006783166984410">"ผู้ใช้ปัจจุบัน <xliff:g id="NAME">%1$s</xliff:g>"</string> <string name="user_switching_message" msgid="2871009331809089783">"กำลังเปลี่ยนเป็น <xliff:g id="NAME">%1$s</xliff:g>…"</string> diff --git a/core/res/res/values-tl/strings.xml b/core/res/res/values-tl/strings.xml index ee88aa7fe574..db96753de7c4 100644 --- a/core/res/res/values-tl/strings.xml +++ b/core/res/res/values-tl/strings.xml @@ -131,8 +131,7 @@ <!-- no translation found for wfcSpnFormat_spn (4998685024207291232) --> <skip /> <string name="wfcSpnFormat_spn_wifi_calling" msgid="136001023263502280">"Pagtawag Gamit ang Wi-Fi ng <xliff:g id="SPN">%s</xliff:g>"</string> - <!-- no translation found for wfcSpnFormat_spn_wifi_calling_vo_hyphen (1730997175789582756) --> - <skip /> + <string name="wfcSpnFormat_spn_wifi_calling_vo_hyphen" msgid="1730997175789582756">"Pagtawag Gamit ang WiFi ng <xliff:g id="SPN">%s</xliff:g>"</string> <string name="wfcSpnFormat_wlan_call" msgid="2533371081782489793">"Pagtawag Gamit ang WLAN"</string> <string name="wfcSpnFormat_spn_wlan_call" msgid="2315240198303197168">"Pagtawag Gamit ang WLAN ng <xliff:g id="SPN">%s</xliff:g>"</string> <string name="wfcSpnFormat_spn_wifi" msgid="6546481665561961938">"Wi-Fi ng <xliff:g id="SPN">%s</xliff:g>"</string> @@ -1131,8 +1130,10 @@ <string name="whichViewApplication" msgid="3272778576700572102">"Buksan gamit ang"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"Buksan gamit ang %1$s"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"Buksan"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"Magbigay ng access para buksan ang mga link ng <xliff:g id="HOST">%1$s</xliff:g> sa"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"Magbigay ng access para buksan ang mga link ng <xliff:g id="HOST">%1$s</xliff:g> sa <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> + <string name="whichOpenHostLinksWith" msgid="3788174881117226583">"Buksan ang mga link ng <xliff:g id="HOST">%1$s</xliff:g> gamit ang"</string> + <string name="whichOpenLinksWith" msgid="6392123355599572804">"Buksan ang mga link gamit ang"</string> + <string name="whichOpenLinksWithApp" msgid="8225991685366651614">"Buksan ang mga link gamit ang <xliff:g id="APPLICATION">%1$s</xliff:g>"</string> + <string name="whichOpenHostLinksWithApp" msgid="3464470639011045589">"Buksan ang mga link ng <xliff:g id="HOST">%1$s</xliff:g> gamit ang <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"Bigyan ng access"</string> <string name="whichEditApplication" msgid="144727838241402655">"I-edit gamit ang"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"I-edit gamit ang %1$s"</string> @@ -1584,6 +1585,7 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"Ilunsad ang Browser?"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"Tanggapin ang tawag?"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"Palagi"</string> + <string name="activity_resolver_set_always" msgid="1422574191056490585">"Itakda sa palaging buksan"</string> <string name="activity_resolver_use_once" msgid="2404644797149173758">"Isang beses lang"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"Mga Setting"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"Hindi sinusuportahan ng %1$s ang profile sa trabaho"</string> @@ -1613,8 +1615,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"Overlay #<xliff:g id="ID">%1$d</xliff:g>"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g>x<xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", secure"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"Iba-block ang pagsisimula ng aktibidad sa background na ito mula sa <xliff:g id="PACKAGENAME">%1$s</xliff:g> sa mga Q build sa hinaharap. Tingnan ang g.co/dev/bgblock."</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"Na-block ang pagsisimula ng aktibidad sa background mula sa <xliff:g id="PACKAGENAME">%1$s</xliff:g>. Tingnan ang g.co/dev/bgblock."</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Nakalimutan ang Pattern"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"Maling Pattern"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"Maling Password"</string> @@ -1668,18 +1668,12 @@ <string name="accessibility_shortcut_enabling_service" msgid="7771852911861522636">"Na-on ng Shortcut sa Accessibility ang <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> <string name="accessibility_shortcut_disabling_service" msgid="2747243438223109821">"Na-off ng Shortcut sa Accessibility ang <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> <string name="accessibility_shortcut_spoken_feedback" msgid="8376923232350078434">"Pindutin nang matagal ang parehong volume key sa loob ng tatlong segundo para magamit ang <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for accessibility_button_prompt_text (1176658502969738564) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8259145549733019401) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (1041435574275047665) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (7003212763213614833) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (5261788874937410950) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (4969448938984394550) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="1176658502969738564">"Pumili ng serbisyong gagamitin kapag na-tap mo ang button ng pagiging accessible:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8259145549733019401">"Pumili ng serbisyong gagamitin sa galaw ng pagiging accessible (pag-swipe pataas mula sa ibaba ng screen gamit ang dalawang daliri):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="1041435574275047665">"Pumili ng serbisyong gagamitin sa galaw ng pagiging accessible (pag-swipe pataas mula sa ibaba ng screen gamit ang tatlong daliri):"</string> + <string name="accessibility_button_instructional_text" msgid="7003212763213614833">"Para magpalipat-lipat sa mga serbisyo, pindutin nang matagal ang button ng pagiging accessible."</string> + <string name="accessibility_gesture_instructional_text" msgid="5261788874937410950">"Para magpalipat-lipat sa mga serbisyo, mag-swipe pataas gamit ang dalawang daliri at i-hold."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="4969448938984394550">"Para magpalipat-lipat sa mga serbisyo, mag-swipe pataas gamit ang tatlong daliri at i-hold."</string> <string name="accessibility_magnification_chooser_text" msgid="1227146738764986237">"Pag-magnify"</string> <string name="user_switched" msgid="3768006783166984410">"Kasalukuyang user <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="2871009331809089783">"Lumilipat kay <xliff:g id="NAME">%1$s</xliff:g>…"</string> diff --git a/core/res/res/values-tr/strings.xml b/core/res/res/values-tr/strings.xml index 8e5f9de90db3..4dfb34874493 100644 --- a/core/res/res/values-tr/strings.xml +++ b/core/res/res/values-tr/strings.xml @@ -131,8 +131,7 @@ <!-- no translation found for wfcSpnFormat_spn (4998685024207291232) --> <skip /> <string name="wfcSpnFormat_spn_wifi_calling" msgid="136001023263502280">"<xliff:g id="SPN">%s</xliff:g> Kablosuz Çağrı"</string> - <!-- no translation found for wfcSpnFormat_spn_wifi_calling_vo_hyphen (1730997175789582756) --> - <skip /> + <string name="wfcSpnFormat_spn_wifi_calling_vo_hyphen" msgid="1730997175789582756">"<xliff:g id="SPN">%s</xliff:g> Kablosuz Arama"</string> <string name="wfcSpnFormat_wlan_call" msgid="2533371081782489793">"WLAN Üzerinden Çağrı"</string> <string name="wfcSpnFormat_spn_wlan_call" msgid="2315240198303197168">"<xliff:g id="SPN">%s</xliff:g> WLAN Üzerinden Çağrı"</string> <string name="wfcSpnFormat_spn_wifi" msgid="6546481665561961938">"<xliff:g id="SPN">%s</xliff:g> Kablosuz"</string> @@ -1131,8 +1130,10 @@ <string name="whichViewApplication" msgid="3272778576700572102">"Şununla aç:"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"%1$s ile aç"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"Aç"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"Şununla <xliff:g id="HOST">%1$s</xliff:g> bağlantılarını açma izni verin"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"<xliff:g id="APPLICATION">%2$s</xliff:g> uygulamasıyla <xliff:g id="HOST">%1$s</xliff:g> bağlantılarını açma izni verin"</string> + <string name="whichOpenHostLinksWith" msgid="3788174881117226583">"<xliff:g id="HOST">%1$s</xliff:g> bağlantılarını şununla aç:"</string> + <string name="whichOpenLinksWith" msgid="6392123355599572804">"Bağlantıları şununla aç:"</string> + <string name="whichOpenLinksWithApp" msgid="8225991685366651614">"Bağlantıları <xliff:g id="APPLICATION">%1$s</xliff:g> ile aç"</string> + <string name="whichOpenHostLinksWithApp" msgid="3464470639011045589">"<xliff:g id="HOST">%1$s</xliff:g> bağlantılarını <xliff:g id="APPLICATION">%2$s</xliff:g> ile aç"</string> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"Erişim ver"</string> <string name="whichEditApplication" msgid="144727838241402655">"Şununla düzenle:"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"%1$s ile düzenle"</string> @@ -1584,6 +1585,7 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"Tarayıcı Başlatılsın mı?"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"Çağrı kabul edilsin mi?"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"Her zaman"</string> + <string name="activity_resolver_set_always" msgid="1422574191056490585">"Her zaman açılmak üzere ayarla"</string> <string name="activity_resolver_use_once" msgid="2404644797149173758">"Yalnızca bir defa"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"Ayarlar"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"%1$s, iş profilini desteklemiyor"</string> @@ -1613,8 +1615,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"Yer Paylaşımı No. <xliff:g id="ID">%1$d</xliff:g>"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g>x<xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", güvenli"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"<xliff:g id="PACKAGENAME">%1$s</xliff:g> paketinden bu arka plan etkinliği başlangıcı, ilerideki Q derlemelerinde engellenecek. g.co/dev/bgblock adresini ziyaret edin."</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"<xliff:g id="PACKAGENAME">%1$s</xliff:g> paketinden arka plan etkinliği başlangıcı engellendi. g.co/dev/bgblock adresini ziyaret edin."</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Deseni Unuttunuz mu?"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"Yanlış Desen"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"Yanlış Şifre"</string> @@ -1668,18 +1668,12 @@ <string name="accessibility_shortcut_enabling_service" msgid="7771852911861522636">"Erişilebilirlik Kısayolu <xliff:g id="SERVICE_NAME">%1$s</xliff:g> hizmetini açtı"</string> <string name="accessibility_shortcut_disabling_service" msgid="2747243438223109821">"Erişilebilirlik Kısayolu <xliff:g id="SERVICE_NAME">%1$s</xliff:g> hizmetini kapattı"</string> <string name="accessibility_shortcut_spoken_feedback" msgid="8376923232350078434">"<xliff:g id="SERVICE_NAME">%1$s</xliff:g> hizmetini kullanmak için her iki ses tuşunu basılı tutun"</string> - <!-- no translation found for accessibility_button_prompt_text (1176658502969738564) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8259145549733019401) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (1041435574275047665) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (7003212763213614833) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (5261788874937410950) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (4969448938984394550) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="1176658502969738564">"Erişilebilirlik düğmesine dokunduğunuzda kullanmak üzere bir hizmet seçin:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8259145549733019401">"Erişilebilirlik hareketiyle (iki parmakla ekranın altından yukarı kaydırma) kullanılacak bir hizmet seçin:"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="1041435574275047665">"Erişilebilirlik hareketiyle (üç parmakla ekranın altından yukarı kaydırma) kullanılacak bir hizmet seçin:"</string> + <string name="accessibility_button_instructional_text" msgid="7003212763213614833">"Hizmetler arasında geçiş yapmak erişilebilirlik düğmesine dokunup basılı tutun."</string> + <string name="accessibility_gesture_instructional_text" msgid="5261788874937410950">"Hizmetler arasında geçiş yapmak için iki parmakla yukarı kaydırıp basılı tutun."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="4969448938984394550">"Hizmetler arasında geçiş yapmak için üç parmakla yukarı kaydırıp basılı tutun."</string> <string name="accessibility_magnification_chooser_text" msgid="1227146738764986237">"Büyütme"</string> <string name="user_switched" msgid="3768006783166984410">"Geçerli kullanıcı: <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="2871009331809089783">"<xliff:g id="NAME">%1$s</xliff:g> adlı kullanıcıya geçiliyor…"</string> @@ -1912,7 +1906,7 @@ <string name="deprecated_target_sdk_app_store" msgid="5032340500368495077">"Güncellemeleri denetle"</string> <string name="new_sms_notification_title" msgid="8442817549127555977">"Yeni mesajlarınız var"</string> <string name="new_sms_notification_content" msgid="7002938807812083463">"Görüntülemek için SMS uygulamasını açın"</string> - <string name="profile_encrypted_title" msgid="4260432497586829134">"Bazı işlevler sınırlı olabilir"</string> + <string name="profile_encrypted_title" msgid="4260432497586829134">"Bazı işlevler sınırlanabilir"</string> <string name="profile_encrypted_detail" msgid="3700965619978314974">"İş profili kilitlendi"</string> <string name="profile_encrypted_message" msgid="6964994232310195874">"İş profilinin kilidini açmak için dokunun"</string> <string name="usb_mtp_launch_notification_title" msgid="8359219638312208932">"<xliff:g id="PRODUCT_NAME">%1$s</xliff:g> cihazına bağlandı"</string> diff --git a/core/res/res/values-uk/strings.xml b/core/res/res/values-uk/strings.xml index 0d36070193bf..565021fd918d 100644 --- a/core/res/res/values-uk/strings.xml +++ b/core/res/res/values-uk/strings.xml @@ -133,8 +133,7 @@ <!-- no translation found for wfcSpnFormat_spn (4998685024207291232) --> <skip /> <string name="wfcSpnFormat_spn_wifi_calling" msgid="136001023263502280">"Виклики <xliff:g id="SPN">%s</xliff:g> через Wi-Fi"</string> - <!-- no translation found for wfcSpnFormat_spn_wifi_calling_vo_hyphen (1730997175789582756) --> - <skip /> + <string name="wfcSpnFormat_spn_wifi_calling_vo_hyphen" msgid="1730997175789582756">"Дзвінок від абонента <xliff:g id="SPN">%s</xliff:g> через Wi-Fi"</string> <string name="wfcSpnFormat_wlan_call" msgid="2533371081782489793">"Виклик через WLAN"</string> <string name="wfcSpnFormat_spn_wlan_call" msgid="2315240198303197168">"Виклик <xliff:g id="SPN">%s</xliff:g> через WLAN"</string> <string name="wfcSpnFormat_spn_wifi" msgid="6546481665561961938">"<xliff:g id="SPN">%s</xliff:g> через Wi-Fi"</string> @@ -1171,8 +1170,10 @@ <string name="whichViewApplication" msgid="3272778576700572102">"Відкрити за допомогою"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"Відкрити за допомогою %1$s"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"Відкрити"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"Дозвольте відкривати посилання на сайт <xliff:g id="HOST">%1$s</xliff:g> у додатку"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"Дозвольте відкривати посилання на сайт <xliff:g id="HOST">%1$s</xliff:g> у додатку <xliff:g id="APPLICATION">%2$s</xliff:g>."</string> + <string name="whichOpenHostLinksWith" msgid="3788174881117226583">"Відкривати посилання <xliff:g id="HOST">%1$s</xliff:g> за допомогою"</string> + <string name="whichOpenLinksWith" msgid="6392123355599572804">"Відкривати посилання за допомогою"</string> + <string name="whichOpenLinksWithApp" msgid="8225991685366651614">"Відкривати посилання за допомогою додатка <xliff:g id="APPLICATION">%1$s</xliff:g>"</string> + <string name="whichOpenHostLinksWithApp" msgid="3464470639011045589">"Відкривати посилання <xliff:g id="HOST">%1$s</xliff:g> за допомогою додатка <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"Дозволити"</string> <string name="whichEditApplication" msgid="144727838241402655">"Редагувати за допомогою"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"Редагувати за допомогою %1$s"</string> @@ -1630,6 +1631,7 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"Запустити веб-переглядач?"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"Прийняти виклик?"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"Завжди"</string> + <string name="activity_resolver_set_always" msgid="1422574191056490585">"Вибрати додаток для відкривання посилань"</string> <string name="activity_resolver_use_once" msgid="2404644797149173758">"Лише цього разу"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"Налаштування"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"%1$s не підтримує робочий профіль"</string> @@ -1659,8 +1661,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"Накладання №<xliff:g id="ID">%1$d</xliff:g>"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g>х<xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", безпечний"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"Фонову активність пакета <xliff:g id="PACKAGENAME">%1$s</xliff:g> буде заблоковано в майбутніх складаннях Q. Докладніше: g.co/dev/bgblock."</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"Фонову активність додатка <xliff:g id="PACKAGENAME">%1$s</xliff:g> заблоковано. Докладніше: g.co/dev/bgblock."</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Не пам’ятаю ключ"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"Неправильний ключ"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"Неправильний пароль"</string> @@ -1716,18 +1716,12 @@ <string name="accessibility_shortcut_enabling_service" msgid="7771852911861522636">"Ярлик спеціальних можливостей увімкнув <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> <string name="accessibility_shortcut_disabling_service" msgid="2747243438223109821">"Ярлик спеціальних можливостей вимкнув <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> <string name="accessibility_shortcut_spoken_feedback" msgid="8376923232350078434">"Щоб скористатися службою <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, утримуйте обидві клавіші гучності впродовж трьох секунд"</string> - <!-- no translation found for accessibility_button_prompt_text (1176658502969738564) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8259145549733019401) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (1041435574275047665) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (7003212763213614833) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (5261788874937410950) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (4969448938984394550) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="1176658502969738564">"Виберіть сервіс для кнопки спеціальних можливостей:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8259145549733019401">"Виберіть сервіс для жесту спеціальних можливостей (проведення двома пальцями знизу вгору):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="1041435574275047665">"Виберіть сервіс для жесту спеціальних можливостей (проведення трьома пальцями знизу вгору):"</string> + <string name="accessibility_button_instructional_text" msgid="7003212763213614833">"Щоб переключитися між сервісами, натисніть і утримуйте кнопку спеціальних можливостей."</string> + <string name="accessibility_gesture_instructional_text" msgid="5261788874937410950">"Щоб переключитися між сервісами, проведіть двома пальцями вгору й утримуйте екран."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="4969448938984394550">"Щоб переключитися між сервісами, проведіть трьома пальцями вгору й утримуйте екран."</string> <string name="accessibility_magnification_chooser_text" msgid="1227146738764986237">"Збільшення"</string> <string name="user_switched" msgid="3768006783166984410">"Поточний користувач: <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="2871009331809089783">"Перехід в обліковий запис \"<xliff:g id="NAME">%1$s</xliff:g>\"…"</string> @@ -2076,7 +2070,7 @@ <string name="notification_appops_overlay_active" msgid="633813008357934729">"показ поверх інших додатків на екрані"</string> <string name="dynamic_mode_notification_channel_name" msgid="2348803891571320452">"Сповіщення про послідовнсть дій"</string> <string name="dynamic_mode_notification_title" msgid="508815255807182035">"Акумулятор може розрядитися раніше ніж зазвичай"</string> - <string name="dynamic_mode_notification_summary" msgid="2541166298550402690">"Режим економії заряду акумулятора активовано для збільшення часу його роботи"</string> + <string name="dynamic_mode_notification_summary" msgid="2541166298550402690">"Режим енергозбереження активовано для збільшення часу роботи акумулятора"</string> <string name="battery_saver_notification_channel_name" msgid="2083316159716201806">"Режим енергозбереження"</string> <string name="battery_saver_sticky_disabled_notification_title" msgid="6376147579378764641">"Режим енергозбереження не ввімкнеться, доки рівень заряду знову не знизиться"</string> <string name="battery_saver_sticky_disabled_notification_summary" msgid="8090192609249817945">"Акумулятор заряджено достатньо. Режим енергозбереження буде знову ввімкнено, коли рівень заряду знизиться."</string> diff --git a/core/res/res/values-ur/strings.xml b/core/res/res/values-ur/strings.xml index 2940b5111eda..b510ed72b419 100644 --- a/core/res/res/values-ur/strings.xml +++ b/core/res/res/values-ur/strings.xml @@ -88,7 +88,7 @@ <string name="EmergencyCallWarningTitle" msgid="813380189532491336">"ہنگامی کالنگ دستیاب نہیں ہے"</string> <string name="EmergencyCallWarningSummary" msgid="1899692069750260619">"Wi‑Fi کے ذریعے ہنگامی کالز نہیں کر سکتے"</string> <string name="notification_channel_network_alert" msgid="4427736684338074967">"الرٹس"</string> - <string name="notification_channel_call_forward" msgid="2419697808481833249">"کال آگے منتقل کرنا"</string> + <string name="notification_channel_call_forward" msgid="2419697808481833249">"کال فارورڈنگ"</string> <string name="notification_channel_emergency_callback" msgid="6686166232265733921">"ہنگامی کال بیک وضع"</string> <string name="notification_channel_mobile_data_status" msgid="4575131690860945836">"موبائل ڈیٹا کی صورت حال"</string> <string name="notification_channel_sms" msgid="3441746047346135073">"SMS پیغامات"</string> @@ -131,8 +131,7 @@ <!-- no translation found for wfcSpnFormat_spn (4998685024207291232) --> <skip /> <string name="wfcSpnFormat_spn_wifi_calling" msgid="136001023263502280">"<xliff:g id="SPN">%s</xliff:g> Wi-Fi کالنگ"</string> - <!-- no translation found for wfcSpnFormat_spn_wifi_calling_vo_hyphen (1730997175789582756) --> - <skip /> + <string name="wfcSpnFormat_spn_wifi_calling_vo_hyphen" msgid="1730997175789582756">"<xliff:g id="SPN">%s</xliff:g> Wi-Fi کالنگ"</string> <string name="wfcSpnFormat_wlan_call" msgid="2533371081782489793">"WLAN کال"</string> <string name="wfcSpnFormat_spn_wlan_call" msgid="2315240198303197168">"<xliff:g id="SPN">%s</xliff:g> WLAN کال"</string> <string name="wfcSpnFormat_spn_wifi" msgid="6546481665561961938">"<xliff:g id="SPN">%s</xliff:g> Wi-Fi"</string> @@ -1131,8 +1130,10 @@ <string name="whichViewApplication" msgid="3272778576700572102">"اس کے ساتھ کھولیں"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"%1$s کے ساتھ کھولیں"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"کھولیں"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"اس کے ساتھ <xliff:g id="HOST">%1$s</xliff:g> لنکس کو کھولنے کے لیے رسائی ديں"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"<xliff:g id="APPLICATION">%2$s</xliff:g> کے ساتھ <xliff:g id="HOST">%1$s</xliff:g> لنکس کو کھولنے کے لیے رسائی ديں"</string> + <string name="whichOpenHostLinksWith" msgid="3788174881117226583">"<xliff:g id="HOST">%1$s</xliff:g> لنکس کے ساتھ کھولیں"</string> + <string name="whichOpenLinksWith" msgid="6392123355599572804">"لنکس کے ساتھ کھولیں"</string> + <string name="whichOpenLinksWithApp" msgid="8225991685366651614">"<xliff:g id="APPLICATION">%1$s</xliff:g> کے ذریعے لنکس کھولیں"</string> + <string name="whichOpenHostLinksWithApp" msgid="3464470639011045589">"<xliff:g id="HOST">%1$s</xliff:g> لنکس کو <xliff:g id="APPLICATION">%2$s</xliff:g> کے ذریعے کھولیں"</string> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"رسائی دیں"</string> <string name="whichEditApplication" msgid="144727838241402655">"اس کے ساتھ ترمیم کریں"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"%1$s کے ساتھ ترمیم کریں"</string> @@ -1585,6 +1586,7 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"براؤزر شروع کریں؟"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"کال قبول کریں؟"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"ہمیشہ"</string> + <string name="activity_resolver_set_always" msgid="1422574191056490585">"ہمیشہ کھلا ہوا ہونے پر سیٹ کریں"</string> <string name="activity_resolver_use_once" msgid="2404644797149173758">"بس ایک مرتبہ"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"ترتیبات"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"%1$s دفتری پروفائل کا تعاون نہیں کرتا ہے"</string> @@ -1614,8 +1616,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"اوور لے #<xliff:g id="ID">%1$d</xliff:g>"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g>x<xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">"، محفوظ"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"<xliff:g id="PACKAGENAME">%1$s</xliff:g> سے شروع ہونے والی پس منظر کی اس سرگرمی کو مستقبل کے Q بلڈز میں مسدود کر دیا جائے گا۔ g.co/dev/bgblock ملاحظہ کریں۔"</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"<xliff:g id="PACKAGENAME">%1$s</xliff:g> سے شروع ہونے والی پس منظر کی سرگرمی کو مسدود کر دیا گیا ہے۔ g.co/dev/bgblock ملاحظہ کریں۔"</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"پیٹرن بھول گئے"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"غلط پیٹرن"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"غلط پاس ورڈ"</string> @@ -1669,18 +1669,12 @@ <string name="accessibility_shortcut_enabling_service" msgid="7771852911861522636">"ایکسیسبیلٹی شارٹ کٹ نے <xliff:g id="SERVICE_NAME">%1$s</xliff:g> کو آن کر دیا"</string> <string name="accessibility_shortcut_disabling_service" msgid="2747243438223109821">"ایکسیسبیلٹی شارٹ کٹ نے <xliff:g id="SERVICE_NAME">%1$s</xliff:g> کو آف کر دیا"</string> <string name="accessibility_shortcut_spoken_feedback" msgid="8376923232350078434">"<xliff:g id="SERVICE_NAME">%1$s</xliff:g> کا استعمال کرنے کے لیے 3 سیکنڈ تک والیوم کی دونوں کلیدوں کو چھوئیں اور دبائے رکھیں"</string> - <!-- no translation found for accessibility_button_prompt_text (1176658502969738564) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8259145549733019401) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (1041435574275047665) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (7003212763213614833) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (5261788874937410950) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (4969448938984394550) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="1176658502969738564">"ایکسیسبیلٹی بٹن پر تھپتھپانے وقت استعمال کرنے کیلئے ایک سروس چنیں:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8259145549733019401">"ایکسیسبیلٹی اشارہ کے ساتھ استعمال کرنے کے لیے ایک سروس چنیں (دو انگلیوں سے اسکرین کے نیچے سے اوپر کی طرف سوائپ کریں):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="1041435574275047665">"ایکسیسبیلٹی اشارہ کے ساتھ استعمال کرنے کے لیے ایک سروس چنیں (تین انگلیوں سے اسکرین کے نیچے سے اوپر کی طرف سوائپ کریں):"</string> + <string name="accessibility_button_instructional_text" msgid="7003212763213614833">"سروسز کے مابین سوئچ کرنے کے لیے، ایکسیسبیلٹی بٹن کو ٹچ کرکے ہولڈ کریں۔"</string> + <string name="accessibility_gesture_instructional_text" msgid="5261788874937410950">"سروسز کے مابین سوئچ کرنے کے لیے، دو انگلیوں سے اوپر سوائپ کرکے ہولڈ کریں۔"</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="4969448938984394550">"سروسز کے مابین سوئچ کرنے کے لیے، تین انگلیوں سے اوپر سوائپ کرکے ہولڈ کریں۔"</string> <string name="accessibility_magnification_chooser_text" msgid="1227146738764986237">"میگنیفکیشن"</string> <string name="user_switched" msgid="3768006783166984410">"موجودہ صارف <xliff:g id="NAME">%1$s</xliff:g>۔"</string> <string name="user_switching_message" msgid="2871009331809089783">"<xliff:g id="NAME">%1$s</xliff:g> پر سوئچ کیا جا رہا ہے…"</string> diff --git a/core/res/res/values-uz/strings.xml b/core/res/res/values-uz/strings.xml index b10b031251e4..04672e4de0d6 100644 --- a/core/res/res/values-uz/strings.xml +++ b/core/res/res/values-uz/strings.xml @@ -256,17 +256,17 @@ <string name="notification_channel_security" msgid="7345516133431326347">"Xavfsizlik"</string> <string name="notification_channel_car_mode" msgid="3553380307619874564">"Avtomobil rejimi"</string> <string name="notification_channel_account" msgid="7577959168463122027">"Hisob holati"</string> - <string name="notification_channel_developer" msgid="7579606426860206060">"Dasturchi xabarlari"</string> + <string name="notification_channel_developer" msgid="7579606426860206060">"Dasturchilar uchun xabarlar"</string> <string name="notification_channel_updates" msgid="4794517569035110397">"Yangilanishlar"</string> <string name="notification_channel_network_status" msgid="5025648583129035447">"Tarmoq holati"</string> <string name="notification_channel_network_alerts" msgid="2895141221414156525">"Tarmoqqa oid bildirgilar"</string> <string name="notification_channel_network_available" msgid="4531717914138179517">"Tarmoq mavjud"</string> <string name="notification_channel_vpn" msgid="8330103431055860618">"VPN holati"</string> - <string name="notification_channel_device_admin" msgid="8353118887482520565">"IT administrator xabarlari"</string> + <string name="notification_channel_device_admin" msgid="8353118887482520565">"Administratordan xabarlar"</string> <string name="notification_channel_alerts" msgid="4496839309318519037">"Ogohlantirishlar"</string> <string name="notification_channel_retail_mode" msgid="6088920674914038779">"Demo rejim"</string> <string name="notification_channel_usb" msgid="9006850475328924681">"USB orqali ulanish"</string> - <string name="notification_channel_heavy_weight_app" msgid="6218742927792852607">"Ilova ishlamoqda"</string> + <string name="notification_channel_heavy_weight_app" msgid="6218742927792852607">"Ilova faol"</string> <string name="notification_channel_foreground_service" msgid="3931987440602669158">"Batareya quvvatini sarflayotgan ilovalar"</string> <string name="foreground_service_app_in_background" msgid="1060198778219731292">"<xliff:g id="APP_NAME">%1$s</xliff:g> ilovasi batareya quvvatini sarflamoqda"</string> <string name="foreground_service_apps_in_background" msgid="7175032677643332242">"<xliff:g id="NUMBER">%1$d</xliff:g> ta ilova batareya quvvatini sarflamoqda"</string> @@ -1130,8 +1130,10 @@ <string name="whichViewApplication" msgid="3272778576700572102">"Ochish…"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"%1$s bilan ochish"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"Ochish"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"<xliff:g id="HOST">%1$s</xliff:g> havolalarini ushbu ilova bilan ochishga ruxsat bering:"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"<xliff:g id="HOST">%1$s</xliff:g> havolalarini <xliff:g id="APPLICATION">%2$s</xliff:g> bilan ochishga ruxsat bering"</string> + <string name="whichOpenHostLinksWith" msgid="3788174881117226583">"<xliff:g id="HOST">%1$s</xliff:g> havolalarini quyidagi orqali ochish"</string> + <string name="whichOpenLinksWith" msgid="6392123355599572804">"Havolalarni quyidagi orqali ochish"</string> + <string name="whichOpenLinksWithApp" msgid="8225991685366651614">"Havolalarni <xliff:g id="APPLICATION">%1$s</xliff:g> orqali ochish"</string> + <string name="whichOpenHostLinksWithApp" msgid="3464470639011045589">"<xliff:g id="HOST">%1$s</xliff:g> havolalarini <xliff:g id="APPLICATION">%2$s</xliff:g> orqali ochish"</string> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"Ruxsat berish"</string> <string name="whichEditApplication" msgid="144727838241402655">"Tahrirlash…"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"“%1$s” yordamida tahrirlash"</string> @@ -1584,6 +1586,7 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"Brauzer ishga tushirilsinmi?"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"Qo‘ng‘iroqni qabul qilasizmi?"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"Har doim"</string> + <string name="activity_resolver_set_always" msgid="1422574191056490585">"Doim ochish"</string> <string name="activity_resolver_use_once" msgid="2404644797149173758">"Faqat hozir"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"Sozlamalar"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"“%1$s” ishchi profilni qo‘llab-quvvatlamaydi"</string> @@ -1613,8 +1616,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"Tasvir uzatish #<xliff:g id="ID">%1$d</xliff:g>"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g>x<xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", xavfsiz"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"Keyingi Android Q nashrlarida fondagi ushbu <xliff:g id="PACKAGENAME">%1$s</xliff:g> jarayoni bloklanadi. g.co/dev/bgblock bilan tanishing."</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"Fondagi <xliff:g id="PACKAGENAME">%1$s</xliff:g> jarayoni bloklandi. g.co/dev/bgblock bilan tanishing."</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Grafik kalit esimdan chiqdi"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"Grafik kalit xato"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"Parol noto‘g‘ri"</string> @@ -1669,9 +1670,9 @@ <string name="accessibility_shortcut_disabling_service" msgid="2747243438223109821">"<xliff:g id="SERVICE_NAME">%1$s</xliff:g> xizmati o‘chirib qo‘yildi"</string> <string name="accessibility_shortcut_spoken_feedback" msgid="8376923232350078434">"<xliff:g id="SERVICE_NAME">%1$s</xliff:g> xizmatidan foydalanish uchun ikkala ovoz balandligi tugmalarini uzoq bosib turing"</string> <string name="accessibility_button_prompt_text" msgid="1176658502969738564">"Maxsus imkoniyatlar tugmasi bosilganda ishga tushadigan xizmatni tanlang:"</string> - <string name="accessibility_gesture_prompt_text" msgid="8259145549733019401">"Maxsus imkoniyatlar ishorasi bilan ishga tushadigan xizmatni tanlang (2 barmoq bilan ekranning pastidan tepaga surib tortilganda:"</string> - <string name="accessibility_gesture_3finger_prompt_text" msgid="1041435574275047665">"Maxsus imkoniyatlar ishorasi bilan ishga tushadigan xizmatni tanlang (3 barmoq bilan ekranning pastidan tepaga surib tortilganda:"</string> - <string name="accessibility_button_instructional_text" msgid="7003212763213614833">"Xizmatlarni almashtirihs uchun maxsus imkoniyatlar tugmasini bosib turing."</string> + <string name="accessibility_gesture_prompt_text" msgid="8259145549733019401">"Maxsus imkoniyatlar ishorasi bilan ishga tushadigan xizmatni tanlang (2 barmoq bilan ekranning pastidan tepaga surib tortilganda):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="1041435574275047665">"Maxsus imkoniyatlar ishorasi bilan ishga tushadigan xizmatni tanlang (3 barmoq bilan ekranning pastidan tepaga surib tortilganda):"</string> + <string name="accessibility_button_instructional_text" msgid="7003212763213614833">"Xizmatlar orasida almashish uchun maxsus imkoniyatlar tugmasini bosib turing."</string> <string name="accessibility_gesture_instructional_text" msgid="5261788874937410950">"Xizmatlarni almashtirish uchun 2 barmoq bilan tepaga suring va bosib turing."</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="4969448938984394550">"Xizmatlarni almashtirish uchun 3 barmoq bilan tepaga suring va bosib turing."</string> <string name="accessibility_magnification_chooser_text" msgid="1227146738764986237">"Kattalashtirish"</string> @@ -1906,7 +1907,7 @@ <string name="deprecated_target_sdk_app_store" msgid="5032340500368495077">"Yangilanish borligini tekshirish"</string> <string name="new_sms_notification_title" msgid="8442817549127555977">"Sizga yangi SMS keldi"</string> <string name="new_sms_notification_content" msgid="7002938807812083463">"Ko‘rish uchun SMS ilovasini oching"</string> - <string name="profile_encrypted_title" msgid="4260432497586829134">"Ayrim funksiyalar cheklanishi mumkin"</string> + <string name="profile_encrypted_title" msgid="4260432497586829134">"Ayrim funksiyalar ishlamasligi mumkin"</string> <string name="profile_encrypted_detail" msgid="3700965619978314974">"Ishchi profil yopiq"</string> <string name="profile_encrypted_message" msgid="6964994232310195874">"Qulfini ochish uchun bosing"</string> <string name="usb_mtp_launch_notification_title" msgid="8359219638312208932">"<xliff:g id="PRODUCT_NAME">%1$s</xliff:g> qurilmasiga ulandi"</string> diff --git a/core/res/res/values-vi/strings.xml b/core/res/res/values-vi/strings.xml index 6d4083717238..2631d87cd67c 100644 --- a/core/res/res/values-vi/strings.xml +++ b/core/res/res/values-vi/strings.xml @@ -131,8 +131,7 @@ <!-- no translation found for wfcSpnFormat_spn (4998685024207291232) --> <skip /> <string name="wfcSpnFormat_spn_wifi_calling" msgid="136001023263502280">"Gọi qua Wi-Fi <xliff:g id="SPN">%s</xliff:g>"</string> - <!-- no translation found for wfcSpnFormat_spn_wifi_calling_vo_hyphen (1730997175789582756) --> - <skip /> + <string name="wfcSpnFormat_spn_wifi_calling_vo_hyphen" msgid="1730997175789582756">"Gọi qua Wi-Fi <xliff:g id="SPN">%s</xliff:g>"</string> <string name="wfcSpnFormat_wlan_call" msgid="2533371081782489793">"Cuộc gọi qua WLAN"</string> <string name="wfcSpnFormat_spn_wlan_call" msgid="2315240198303197168">"Cuộc gọi qua WLAN <xliff:g id="SPN">%s</xliff:g>"</string> <string name="wfcSpnFormat_spn_wifi" msgid="6546481665561961938">"Wi-Fi <xliff:g id="SPN">%s</xliff:g>"</string> @@ -568,7 +567,7 @@ <string name="face_acquired_too_right" msgid="3667075962661863218">"Đưa điện thoại sang bên trái."</string> <string name="face_acquired_too_left" msgid="3148242963894703424">"Đưa điện thoại sang bên phải."</string> <string name="face_acquired_poor_gaze" msgid="5606479370806754905">"Vui lòng nhìn thẳng vào thiết bị."</string> - <string name="face_acquired_not_detected" msgid="4885504661626728809">"Không thấy khuôn mặt bạn. Hãy nhìn vào điện thoại."</string> + <string name="face_acquired_not_detected" msgid="4885504661626728809">"Hệ thống không phát hiện được khuôn mặt bạn. Hãy nhìn vào điện thoại."</string> <string name="face_acquired_too_much_motion" msgid="3149332171102108851">"Thiết bị di chuyển quá nhiều. Giữ yên thiết bị."</string> <string name="face_acquired_recalibrate" msgid="8077949502893707539">"Vui lòng đăng ký lại khuôn mặt của bạn."</string> <string name="face_acquired_too_different" msgid="7663983770123789694">"Không nhận ra khuôn mặt. Hãy thử lại."</string> @@ -1131,8 +1130,10 @@ <string name="whichViewApplication" msgid="3272778576700572102">"Mở bằng"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"Mở bằng %1$s"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"Mở"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"Cấp quyền truy cập để mở đường dẫn liên kết <xliff:g id="HOST">%1$s</xliff:g> bằng"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"Cấp quyền truy cập để mở đường dẫn liên kết <xliff:g id="HOST">%1$s</xliff:g> bằng <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> + <string name="whichOpenHostLinksWith" msgid="3788174881117226583">"Mở đường dẫn liên kết <xliff:g id="HOST">%1$s</xliff:g> bằng"</string> + <string name="whichOpenLinksWith" msgid="6392123355599572804">"Mở đường dẫn liên kết bằng"</string> + <string name="whichOpenLinksWithApp" msgid="8225991685366651614">"Mở đường dẫn liên kết bằng <xliff:g id="APPLICATION">%1$s</xliff:g>"</string> + <string name="whichOpenHostLinksWithApp" msgid="3464470639011045589">"Mở đường dẫn liên kết <xliff:g id="HOST">%1$s</xliff:g> bằng <xliff:g id="APPLICATION">%2$s</xliff:g>"</string> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"Cấp quyền truy cập"</string> <string name="whichEditApplication" msgid="144727838241402655">"Chỉnh sửa bằng"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"Chỉnh sửa bằng %1$s"</string> @@ -1584,6 +1585,7 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"Chạy trình duyệt?"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"Chấp nhận cuộc gọi?"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"Luôn chọn"</string> + <string name="activity_resolver_set_always" msgid="1422574191056490585">"Đặt thành luôn mở"</string> <string name="activity_resolver_use_once" msgid="2404644797149173758">"Chỉ một lần"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"Cài đặt"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"%1$s không hỗ trợ hồ sơ công việc"</string> @@ -1613,8 +1615,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"Lớp phủ #<xliff:g id="ID">%1$d</xliff:g>"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g>x<xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", an toàn"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"Tính năng bắt đầu hoạt động trong nền từ <xliff:g id="PACKAGENAME">%1$s</xliff:g> này sẽ bị chặn ở các bản dựng Q trong tương lai. Hãy xem trang g.co/dev/bgblock để biết thêm chi tiết."</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"Tính năng bắt đầu hoạt động trong nền từ <xliff:g id="PACKAGENAME">%1$s</xliff:g> đã bị chặn. Hãy xem trang g.co/dev/bgblock để biết thêm chi tiết."</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Đã quên hình"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"Hình không chính xác"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"Mật khẩu sai"</string> @@ -1659,7 +1659,7 @@ <string name="kg_text_message_separator" product="default" msgid="4160700433287233771">" — "</string> <string name="kg_reordering_delete_drop_target_text" msgid="7899202978204438708">"Xóa"</string> <string name="safe_media_volume_warning" product="default" msgid="2276318909314492312">"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="8404780875025725199">"Sử dụng phím tắt trợ năng?"</string> + <string name="accessibility_shortcut_warning_dialog_title" msgid="8404780875025725199">"Sử dụng phím tắt Hỗ trợ tiếp cận?"</string> <string name="accessibility_shortcut_toogle_warning" msgid="7256507885737444807">"Khi phím tắt được bật, nhấn cả hai nút âm lượng trong 3 giây sẽ bắt đầu một tính năng trợ năng.\n\n Tính năng trợ năng hiện tại:\n <xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n Bạn có thể thay đổi tính năng trong Cài đặt > Trợ năng."</string> <string name="disable_accessibility_shortcut" msgid="627625354248453445">"Tắt phím tắt"</string> <string name="leave_accessibility_shortcut_on" msgid="7653111894438512680">"Sử dụng phím tắt"</string> @@ -1668,18 +1668,12 @@ <string name="accessibility_shortcut_enabling_service" msgid="7771852911861522636">"Đã bật phím tắt trợ năng <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> <string name="accessibility_shortcut_disabling_service" msgid="2747243438223109821">"Đã tắt phím tắt trợ năng <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> <string name="accessibility_shortcut_spoken_feedback" msgid="8376923232350078434">"Nhấn và giữ đồng thời cả hai phím âm lượng trong 3 giây để sử dụng <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for accessibility_button_prompt_text (1176658502969738564) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8259145549733019401) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (1041435574275047665) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (7003212763213614833) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (5261788874937410950) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (4969448938984394550) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="1176658502969738564">"Chọn dịch vụ sẽ sử dụng khi bạn nhấn vào nút hỗ trợ tiếp cận:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8259145549733019401">"Chọn dịch vụ sẽ sử dụng với cử chỉ hỗ trợ tiếp cận (vuốt lên từ cuối màn hình bằng 2 ngón tay):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="1041435574275047665">"Chọn dịch vụ sẽ sử dụng với cử chỉ hỗ trợ tiếp cận (vuốt lên từ cuối màn hình bằng 3 ngón tay):"</string> + <string name="accessibility_button_instructional_text" msgid="7003212763213614833">"Để chuyển đổi giữa các dịch vụ, hãy chạm và giữ nút hỗ trợ tiếp cận."</string> + <string name="accessibility_gesture_instructional_text" msgid="5261788874937410950">"Để chuyển đổi giữa các dịch vụ, hãy vuốt lên và giữ bằng 2 ngón tay."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="4969448938984394550">"Để chuyển đổi giữa các dịch vụ, hãy vuốt lên và giữ bằng 3 ngón tay."</string> <string name="accessibility_magnification_chooser_text" msgid="1227146738764986237">"Phóng to"</string> <string name="user_switched" msgid="3768006783166984410">"Người dùng hiện tại <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="2871009331809089783">"Đang chuyển sang <xliff:g id="NAME">%1$s</xliff:g>…"</string> diff --git a/core/res/res/values-zh-rCN/strings.xml b/core/res/res/values-zh-rCN/strings.xml index fec098d8ea56..5bcff6d87805 100644 --- a/core/res/res/values-zh-rCN/strings.xml +++ b/core/res/res/values-zh-rCN/strings.xml @@ -131,8 +131,7 @@ <!-- no translation found for wfcSpnFormat_spn (4998685024207291232) --> <skip /> <string name="wfcSpnFormat_spn_wifi_calling" msgid="136001023263502280">"<xliff:g id="SPN">%s</xliff:g> WLAN 通话"</string> - <!-- no translation found for wfcSpnFormat_spn_wifi_calling_vo_hyphen (1730997175789582756) --> - <skip /> + <string name="wfcSpnFormat_spn_wifi_calling_vo_hyphen" msgid="1730997175789582756">"<xliff:g id="SPN">%s</xliff:g> WLAN 通话"</string> <string name="wfcSpnFormat_wlan_call" msgid="2533371081782489793">"WLAN 通话"</string> <string name="wfcSpnFormat_spn_wlan_call" msgid="2315240198303197168">"<xliff:g id="SPN">%s</xliff:g> WLAN 通话"</string> <string name="wfcSpnFormat_spn_wifi" msgid="6546481665561961938">"<xliff:g id="SPN">%s</xliff:g> WLAN"</string> @@ -521,7 +520,7 @@ <string name="permdesc_imagesWrite" msgid="7073662756617474375">"允许该应用修改您的照片收藏。"</string> <string name="permlab_mediaLocation" msgid="8675148183726247864">"从您的媒体收藏中读取位置信息"</string> <string name="permdesc_mediaLocation" msgid="2237023389178865130">"允许该应用从您的媒体收藏中读取位置信息。"</string> - <string name="biometric_dialog_default_title" msgid="881952973720613213">"验证是您本人"</string> + <string name="biometric_dialog_default_title" msgid="881952973720613213">"验证您的身份"</string> <string name="biometric_error_hw_unavailable" msgid="645781226537551036">"生物识别硬件无法使用"</string> <string name="biometric_error_user_canceled" msgid="2260175018114348727">"身份验证已取消"</string> <string name="biometric_not_recognized" msgid="5770511773560736082">"无法识别"</string> @@ -568,7 +567,7 @@ <string name="face_acquired_too_right" msgid="3667075962661863218">"请将手机向左移动。"</string> <string name="face_acquired_too_left" msgid="3148242963894703424">"请将手机向右移动。"</string> <string name="face_acquired_poor_gaze" msgid="5606479370806754905">"请直视您的设备。"</string> - <string name="face_acquired_not_detected" msgid="4885504661626728809">"看不清您的脸部,请直视手机。"</string> + <string name="face_acquired_not_detected" msgid="4885504661626728809">"看不到您的脸部,请直视手机。"</string> <string name="face_acquired_too_much_motion" msgid="3149332171102108851">"摄像头过于晃动。请将手机拿稳。"</string> <string name="face_acquired_recalibrate" msgid="8077949502893707539">"请重新注册您的面孔。"</string> <string name="face_acquired_too_different" msgid="7663983770123789694">"已无法识别人脸,请重试。"</string> @@ -856,7 +855,7 @@ <string name="lockscreen_forgot_pattern_button_text" msgid="2626999449610695930">"忘记了图案?"</string> <string name="lockscreen_glogin_forgot_pattern" msgid="2588521501166032747">"帐号解锁"</string> <string name="lockscreen_glogin_too_many_attempts" msgid="2751368605287288808">"图案尝试次数过多"</string> - <string name="lockscreen_glogin_instructions" msgid="3931816256100707784">"要解除锁定,请使用您的Google帐号登录。"</string> + <string name="lockscreen_glogin_instructions" msgid="3931816256100707784">"要解除锁定,请使用您的 Google 帐号登录。"</string> <string name="lockscreen_glogin_username_hint" msgid="8846881424106484447">"用户名(电子邮件)"</string> <string name="lockscreen_glogin_password_hint" msgid="5958028383954738528">"密码"</string> <string name="lockscreen_glogin_submit_button" msgid="7130893694795786300">"登录"</string> @@ -1131,8 +1130,10 @@ <string name="whichViewApplication" msgid="3272778576700572102">"打开方式"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"使用%1$s打开"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"打开"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"授权使用以下应用打开 <xliff:g id="HOST">%1$s</xliff:g> 链接:"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"授权使用<xliff:g id="APPLICATION">%2$s</xliff:g>打开 <xliff:g id="HOST">%1$s</xliff:g> 链接"</string> + <string name="whichOpenHostLinksWith" msgid="3788174881117226583">"<xliff:g id="HOST">%1$s</xliff:g> 链接打开方式"</string> + <string name="whichOpenLinksWith" msgid="6392123355599572804">"链接打开方式"</string> + <string name="whichOpenLinksWithApp" msgid="8225991685366651614">"使用<xliff:g id="APPLICATION">%1$s</xliff:g>打开链接"</string> + <string name="whichOpenHostLinksWithApp" msgid="3464470639011045589">"使用<xliff:g id="APPLICATION">%2$s</xliff:g>打开 <xliff:g id="HOST">%1$s</xliff:g> 链接"</string> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"授予访问权限"</string> <string name="whichEditApplication" msgid="144727838241402655">"编辑方式"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"使用%1$s编辑"</string> @@ -1584,6 +1585,7 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"要启动浏览器吗?"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"要接听电话吗?"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"始终"</string> + <string name="activity_resolver_set_always" msgid="1422574191056490585">"设置为始终打开"</string> <string name="activity_resolver_use_once" msgid="2404644797149173758">"仅此一次"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"设置"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"%1$s不支持工作资料"</string> @@ -1613,8 +1615,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"叠加视图 #<xliff:g id="ID">%1$d</xliff:g>"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>:<xliff:g id="WIDTH">%2$d</xliff:g>x<xliff:g id="HEIGHT">%3$d</xliff:g>,<xliff:g id="DPI">%4$d</xliff:g> dpi"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">",安全"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"<xliff:g id="PACKAGENAME">%1$s</xliff:g> 的这类后台活动启动程序会在日后的 Android Q 版本中遭到屏蔽。请参阅 g.co/dev/bgblock。"</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"已屏蔽 <xliff:g id="PACKAGENAME">%1$s</xliff:g> 的后台活动启动程序。请参阅 g.co/dev/bgblock。"</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"忘记了图案"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"图案错误"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"密码错误"</string> @@ -1637,7 +1637,7 @@ <string name="kg_invalid_puk" msgid="3638289409676051243">"请重新输入正确的PUK码。如果尝试错误次数过多,SIM卡将永久停用。"</string> <string name="kg_invalid_confirm_pin_hint" product="default" msgid="7003469261464593516">"PIN 码不匹配"</string> <string name="kg_login_too_many_attempts" msgid="6486842094005698475">"图案尝试次数过多"</string> - <string name="kg_login_instructions" msgid="1100551261265506448">"要解锁,请登录您的Google帐号。"</string> + <string name="kg_login_instructions" msgid="1100551261265506448">"要解锁,请登录您的 Google 帐号。"</string> <string name="kg_login_username_hint" msgid="5718534272070920364">"用户名(电子邮件地址)"</string> <string name="kg_login_password_hint" msgid="9057289103827298549">"密码"</string> <string name="kg_login_submit_button" msgid="5355904582674054702">"登录"</string> @@ -1668,18 +1668,12 @@ <string name="accessibility_shortcut_enabling_service" msgid="7771852911861522636">"无障碍快捷方式已开启<xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> <string name="accessibility_shortcut_disabling_service" msgid="2747243438223109821">"无障碍快捷方式已关闭<xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> <string name="accessibility_shortcut_spoken_feedback" msgid="8376923232350078434">"同时按住两个音量键 3 秒钟即可使用 <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for accessibility_button_prompt_text (1176658502969738564) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8259145549733019401) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (1041435574275047665) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (7003212763213614833) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (5261788874937410950) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (4969448938984394550) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="1176658502969738564">"选择按“无障碍”按钮后要使用的服务:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8259145549733019401">"选择要搭配无障碍手势(用两指从屏幕底部向上滑动)使用的服务:"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="1041435574275047665">"选择要搭配无障碍手势(用三指从屏幕底部向上滑动)使用的服务:"</string> + <string name="accessibility_button_instructional_text" msgid="7003212763213614833">"要在多项服务之间切换,请轻触并按住“无障碍”按钮。"</string> + <string name="accessibility_gesture_instructional_text" msgid="5261788874937410950">"要在多项服务之间切换,请用两指向上滑动并按住。"</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="4969448938984394550">"要在多项服务之间切换,请用三指向上滑动并按住。"</string> <string name="accessibility_magnification_chooser_text" msgid="1227146738764986237">"放大功能"</string> <string name="user_switched" msgid="3768006783166984410">"当前用户是<xliff:g id="NAME">%1$s</xliff:g>。"</string> <string name="user_switching_message" msgid="2871009331809089783">"正在切换为<xliff:g id="NAME">%1$s</xliff:g>…"</string> diff --git a/core/res/res/values-zh-rHK/strings.xml b/core/res/res/values-zh-rHK/strings.xml index 70be1510a260..bf9d0cc070b2 100644 --- a/core/res/res/values-zh-rHK/strings.xml +++ b/core/res/res/values-zh-rHK/strings.xml @@ -131,8 +131,7 @@ <!-- no translation found for wfcSpnFormat_spn (4998685024207291232) --> <skip /> <string name="wfcSpnFormat_spn_wifi_calling" msgid="136001023263502280">"<xliff:g id="SPN">%s</xliff:g> Wi-Fi 通話"</string> - <!-- no translation found for wfcSpnFormat_spn_wifi_calling_vo_hyphen (1730997175789582756) --> - <skip /> + <string name="wfcSpnFormat_spn_wifi_calling_vo_hyphen" msgid="1730997175789582756">"<xliff:g id="SPN">%s</xliff:g> Wi-Fi 通話"</string> <string name="wfcSpnFormat_wlan_call" msgid="2533371081782489793">"WLAN 通話"</string> <string name="wfcSpnFormat_spn_wlan_call" msgid="2315240198303197168">"<xliff:g id="SPN">%s</xliff:g> WLAN 通話"</string> <string name="wfcSpnFormat_spn_wifi" msgid="6546481665561961938">"<xliff:g id="SPN">%s</xliff:g> Wi-Fi"</string> @@ -1131,8 +1130,10 @@ <string name="whichViewApplication" msgid="3272778576700572102">"選擇開啟方式"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"使用 %1$s 開啟"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"開啟"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"授予存取權以透過以下應用程式開啟 <xliff:g id="HOST">%1$s</xliff:g> 連結:"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"授予存取權以透過<xliff:g id="APPLICATION">%2$s</xliff:g>開啟 <xliff:g id="HOST">%1$s</xliff:g> 連結"</string> + <string name="whichOpenHostLinksWith" msgid="3788174881117226583">"開啟 <xliff:g id="HOST">%1$s</xliff:g> 連結的方式"</string> + <string name="whichOpenLinksWith" msgid="6392123355599572804">"開啟連結的方式"</string> + <string name="whichOpenLinksWithApp" msgid="8225991685366651614">"使用 <xliff:g id="APPLICATION">%1$s</xliff:g> 開啟連結"</string> + <string name="whichOpenHostLinksWithApp" msgid="3464470639011045589">"使用 <xliff:g id="APPLICATION">%2$s</xliff:g> 開啟 <xliff:g id="HOST">%1$s</xliff:g> 連結"</string> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"授予存取權"</string> <string name="whichEditApplication" msgid="144727838241402655">"使用以下選擇器編輯:"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"使用 %1$s 編輯"</string> @@ -1584,6 +1585,7 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"要啟動「瀏覽器」嗎?"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"接聽電話嗎?"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"一律採用"</string> + <string name="activity_resolver_set_always" msgid="1422574191056490585">"設為一律開啟"</string> <string name="activity_resolver_use_once" msgid="2404644797149173758">"只此一次"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"設定"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"%1$s 不支援公司檔案"</string> @@ -1613,8 +1615,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"重疊效果 #<xliff:g id="ID">%1$d</xliff:g>"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>:<xliff:g id="WIDTH">%2$d</xliff:g>x<xliff:g id="HEIGHT">%3$d</xliff:g>,<xliff:g id="DPI">%4$d</xliff:g> dpi"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">"(安全)"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"在日後的 Q 版本中,系統將會封鎖這個由 <xliff:g id="PACKAGENAME">%1$s</xliff:g> 啟動的背景活動。請瀏覽 g.co/dev/bgblock。"</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"已封鎖 <xliff:g id="PACKAGENAME">%1$s</xliff:g> 啟動的背景活動。請瀏覽 g.co/dev/bgblock。"</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"忘記圖案"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"圖形不對"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"密碼錯誤"</string> @@ -1668,18 +1668,12 @@ <string name="accessibility_shortcut_enabling_service" msgid="7771852911861522636">"無障礙功能快速鍵已啟用 <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> <string name="accessibility_shortcut_disabling_service" msgid="2747243438223109821">"無障礙功能快速鍵已停用 <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> <string name="accessibility_shortcut_spoken_feedback" msgid="8376923232350078434">"㩒住兩個音量鍵 3 秒就可以用 <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> - <!-- no translation found for accessibility_button_prompt_text (1176658502969738564) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8259145549733019401) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (1041435574275047665) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (7003212763213614833) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (5261788874937410950) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (4969448938984394550) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="1176658502969738564">"請選擇輕按無障礙功能按鈕時使用的服務:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8259145549733019401">"請選擇透過無障礙手勢 (使用兩隻手指從螢幕底部向上滑動) 使用的服務:"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="1041435574275047665">"請選擇透過無障礙手勢 (使用三隻手指從螢幕底部向上滑動) 使用的服務:"</string> + <string name="accessibility_button_instructional_text" msgid="7003212763213614833">"如要在服務之間切換,請按住無障礙功能按鈕。"</string> + <string name="accessibility_gesture_instructional_text" msgid="5261788874937410950">"如要在服務之間切換,請使用兩隻手指向上滑動並按住。"</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="4969448938984394550">"如要在服務之間切換,請使用三隻手指向上滑動並按住。"</string> <string name="accessibility_magnification_chooser_text" msgid="1227146738764986237">"放大"</string> <string name="user_switched" msgid="3768006783166984410">"目前的使用者是<xliff:g id="NAME">%1$s</xliff:g>。"</string> <string name="user_switching_message" msgid="2871009331809089783">"正在切換至<xliff:g id="NAME">%1$s</xliff:g>…"</string> diff --git a/core/res/res/values-zh-rTW/strings.xml b/core/res/res/values-zh-rTW/strings.xml index b419a4b1ea22..c50b10cec745 100644 --- a/core/res/res/values-zh-rTW/strings.xml +++ b/core/res/res/values-zh-rTW/strings.xml @@ -131,8 +131,7 @@ <!-- no translation found for wfcSpnFormat_spn (4998685024207291232) --> <skip /> <string name="wfcSpnFormat_spn_wifi_calling" msgid="136001023263502280">"<xliff:g id="SPN">%s</xliff:g> Wi-Fi 通話"</string> - <!-- no translation found for wfcSpnFormat_spn_wifi_calling_vo_hyphen (1730997175789582756) --> - <skip /> + <string name="wfcSpnFormat_spn_wifi_calling_vo_hyphen" msgid="1730997175789582756">"<xliff:g id="SPN">%s</xliff:g> Wi-Fi 通話"</string> <string name="wfcSpnFormat_wlan_call" msgid="2533371081782489793">"WLAN 通話"</string> <string name="wfcSpnFormat_spn_wlan_call" msgid="2315240198303197168">"<xliff:g id="SPN">%s</xliff:g> WLAN 通話"</string> <string name="wfcSpnFormat_spn_wifi" msgid="6546481665561961938">"<xliff:g id="SPN">%s</xliff:g> Wi-Fi"</string> @@ -1131,8 +1130,10 @@ <string name="whichViewApplication" msgid="3272778576700572102">"選擇開啟工具"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"透過 %1$s 開啟"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"開啟"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"授權系統使用以下應用程式開啟 <xliff:g id="HOST">%1$s</xliff:g> 連結"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"授權系統使用「<xliff:g id="APPLICATION">%2$s</xliff:g>」開啟 <xliff:g id="HOST">%1$s</xliff:g> 連結"</string> + <string name="whichOpenHostLinksWith" msgid="3788174881117226583">"開啟 <xliff:g id="HOST">%1$s</xliff:g> 連結時使用的瀏覽器/應用程式"</string> + <string name="whichOpenLinksWith" msgid="6392123355599572804">"開啟連結時使用的瀏覽器"</string> + <string name="whichOpenLinksWithApp" msgid="8225991685366651614">"使用「<xliff:g id="APPLICATION">%1$s</xliff:g>」開啟連結"</string> + <string name="whichOpenHostLinksWithApp" msgid="3464470639011045589">"使用「<xliff:g id="APPLICATION">%2$s</xliff:g>」開啟 <xliff:g id="HOST">%1$s</xliff:g> 連結"</string> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"授予存取權"</string> <string name="whichEditApplication" msgid="144727838241402655">"選擇編輯工具"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"使用 %1$s 編輯"</string> @@ -1584,6 +1585,7 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"啟動「瀏覽器」嗎?"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"接聽電話嗎?"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"一律採用"</string> + <string name="activity_resolver_set_always" msgid="1422574191056490585">"設為一律開啟"</string> <string name="activity_resolver_use_once" msgid="2404644797149173758">"僅限一次"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"設定"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"%1$s 不支援工作設定檔"</string> @@ -1613,8 +1615,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"第 <xliff:g id="ID">%1$d</xliff:g> 個重疊效果"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>:<xliff:g id="WIDTH">%2$d</xliff:g>x<xliff:g id="HEIGHT">%3$d</xliff:g>,<xliff:g id="DPI">%4$d</xliff:g> dpi"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">"(安全)"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"<xliff:g id="PACKAGENAME">%1$s</xliff:g> 的這類背景活動啟動程序會在日後的 Android Q 版本遭到封鎖。請前往 g.co/dev/bgblock 查看詳情。"</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"已封鎖 <xliff:g id="PACKAGENAME">%1$s</xliff:g> 的背景活動啟動程序。請前往 g.co/dev/bgblock 查看詳情。"</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"忘記圖案"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"圖案錯誤"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"密碼錯誤"</string> @@ -1668,18 +1668,12 @@ <string name="accessibility_shortcut_enabling_service" msgid="7771852911861522636">"無障礙捷徑啟用了「<xliff:g id="SERVICE_NAME">%1$s</xliff:g>」"</string> <string name="accessibility_shortcut_disabling_service" msgid="2747243438223109821">"無障礙捷徑停用了「<xliff:g id="SERVICE_NAME">%1$s</xliff:g>」"</string> <string name="accessibility_shortcut_spoken_feedback" msgid="8376923232350078434">"同時按住調低及調高音量鍵三秒即可使用「<xliff:g id="SERVICE_NAME">%1$s</xliff:g>」"</string> - <!-- no translation found for accessibility_button_prompt_text (1176658502969738564) --> - <skip /> - <!-- no translation found for accessibility_gesture_prompt_text (8259145549733019401) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_prompt_text (1041435574275047665) --> - <skip /> - <!-- no translation found for accessibility_button_instructional_text (7003212763213614833) --> - <skip /> - <!-- no translation found for accessibility_gesture_instructional_text (5261788874937410950) --> - <skip /> - <!-- no translation found for accessibility_gesture_3finger_instructional_text (4969448938984394550) --> - <skip /> + <string name="accessibility_button_prompt_text" msgid="1176658502969738564">"選擇輕觸無障礙按鈕後要使用的服務:"</string> + <string name="accessibility_gesture_prompt_text" msgid="8259145549733019401">"選擇要搭配無障礙手勢 (用兩指從螢幕底部向上滑動) 使用的服務:"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="1041435574275047665">"選擇要搭配無障礙手勢 (用三指從螢幕底部向上滑動) 使用的服務:"</string> + <string name="accessibility_button_instructional_text" msgid="7003212763213614833">"如要切換不同的服務,請輕觸並按住無障礙按鈕。"</string> + <string name="accessibility_gesture_instructional_text" msgid="5261788874937410950">"如要切換不同的服務,請用兩指向上滑動並按住。"</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="4969448938984394550">"如要切換不同的服務,請用三指向上滑動並按住。"</string> <string name="accessibility_magnification_chooser_text" msgid="1227146738764986237">"放大"</string> <string name="user_switched" msgid="3768006783166984410">"目前的使用者是 <xliff:g id="NAME">%1$s</xliff:g>。"</string> <string name="user_switching_message" msgid="2871009331809089783">"正在切換至<xliff:g id="NAME">%1$s</xliff:g>…"</string> diff --git a/core/res/res/values-zu/strings.xml b/core/res/res/values-zu/strings.xml index 57f9f66fd053..0c20cf4a10eb 100644 --- a/core/res/res/values-zu/strings.xml +++ b/core/res/res/values-zu/strings.xml @@ -131,8 +131,7 @@ <!-- no translation found for wfcSpnFormat_spn (4998685024207291232) --> <skip /> <string name="wfcSpnFormat_spn_wifi_calling" msgid="136001023263502280">"<xliff:g id="SPN">%s</xliff:g> ukushaya kwe-Wi-Fi"</string> - <!-- no translation found for wfcSpnFormat_spn_wifi_calling_vo_hyphen (1730997175789582756) --> - <skip /> + <string name="wfcSpnFormat_spn_wifi_calling_vo_hyphen" msgid="1730997175789582756">"<xliff:g id="SPN">%s</xliff:g> Ukushaya kwe-Wi-Fi"</string> <string name="wfcSpnFormat_wlan_call" msgid="2533371081782489793">"Ikholi ye-WLAN"</string> <string name="wfcSpnFormat_spn_wlan_call" msgid="2315240198303197168">"<xliff:g id="SPN">%s</xliff:g> ikholi ye-WLAN"</string> <string name="wfcSpnFormat_spn_wifi" msgid="6546481665561961938">"<xliff:g id="SPN">%s</xliff:g> Wi-Fi"</string> @@ -1131,8 +1130,10 @@ <string name="whichViewApplication" msgid="3272778576700572102">"Vula nge-"</string> <string name="whichViewApplicationNamed" msgid="2286418824011249620">"Vula nge-%1$s"</string> <string name="whichViewApplicationLabel" msgid="2666774233008808473">"Kuvuliwe"</string> - <string name="whichGiveAccessToApplication" msgid="8279395245414707442">"Nika ukufinyelela kuzixhumanisi ezivulekile ze-<xliff:g id="HOST">%1$s</xliff:g> nge-"</string> - <string name="whichGiveAccessToApplicationNamed" msgid="7992388824107710849">"Nika ukufinyelela kuzixhumanisi ze-<xliff:g id="HOST">%1$s</xliff:g> ezivulekile nge-<xliff:g id="APPLICATION">%2$s</xliff:g>"</string> + <string name="whichOpenHostLinksWith" msgid="3788174881117226583">"Vula izixhumanisi ze-<xliff:g id="HOST">%1$s</xliff:g> nge"</string> + <string name="whichOpenLinksWith" msgid="6392123355599572804">"Vula izixhumanisi nge"</string> + <string name="whichOpenLinksWithApp" msgid="8225991685366651614">"Vula izixhumanisi nge-<xliff:g id="APPLICATION">%1$s</xliff:g>"</string> + <string name="whichOpenHostLinksWithApp" msgid="3464470639011045589">"Vula izixhumanisi ze-<xliff:g id="HOST">%1$s</xliff:g> nge-<xliff:g id="APPLICATION">%2$s</xliff:g>"</string> <string name="whichGiveAccessToApplicationLabel" msgid="6142688895536868827">"Nikeza ukufinyel"</string> <string name="whichEditApplication" msgid="144727838241402655">"Hlela nge-"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"Hlela nge-%1$s"</string> @@ -1584,6 +1585,7 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"Qala Isiphequluli?"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"Amukela ucingo?"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"Njalo"</string> + <string name="activity_resolver_set_always" msgid="1422574191056490585">"Setha ukuthi kuhlale kuvuliwe"</string> <string name="activity_resolver_use_once" msgid="2404644797149173758">"Kanye nje"</string> <string name="activity_resolver_app_settings" msgid="8965806928986509855">"Izilungiselelo"</string> <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"%1$s ayisekeli iphrofayela yomsebenzi"</string> @@ -1613,8 +1615,6 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"Isendlalelo #<xliff:g id="ID">%1$d</xliff:g>"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g>x<xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", kuphephile"</string> - <string name="activity_starter_block_bg_activity_starts_permissive" msgid="6995473033438879646">"Lesi siqalo somsebenzi ongemuva kusukela ku-<xliff:g id="PACKAGENAME">%1$s</xliff:g> sizovinjelwa ekwakhiweni okuzayo kwe-Q. Bona i-g.co/dev/bgblock."</string> - <string name="activity_starter_block_bg_activity_starts_enforcing" msgid="3317816771072146229">"Umsebenzi ongemuva oqala kusukela ku-<xliff:g id="PACKAGENAME">%1$s</xliff:g> uvinjelwe. Bona i-g.co/dev/bgblock."</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Ukhohlwe iphethini?"</string> <string name="kg_wrong_pattern" msgid="1850806070801358830">"Iphatheni engalungile"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"Iphasiwedi engalungile"</string> diff --git a/core/res/res/values/attrs.xml b/core/res/res/values/attrs.xml index 81accdf82b00..2f301946402b 100644 --- a/core/res/res/values/attrs.xml +++ b/core/res/res/values/attrs.xml @@ -1560,7 +1560,8 @@ <flag name="email" value="0x02" /> <!-- Match phone numbers. --> <flag name="phone" value="0x04" /> - <!-- Match map addresses. --> + <!-- Match map addresses. + Deprecated: see {@link android.text.util.Linkify#MAP_ADDRESSES}. --> <flag name="map" value="0x08" /> <!-- Match all patterns (equivalent to web|email|phone|map). --> <flag name="all" value="0x0f" /> diff --git a/core/res/res/values/attrs_manifest.xml b/core/res/res/values/attrs_manifest.xml index 8dfb9694ac33..77fca8fe4d8e 100644 --- a/core/res/res/values/attrs_manifest.xml +++ b/core/res/res/values/attrs_manifest.xml @@ -326,6 +326,8 @@ grantable in its full form to apps that meet special criteria per platform policy. Otherwise, a weaker form of the permission would be granted. The weak grant depends on the permission. + <p>What weak grant means is described in the documentation of + the permissions. --> <flag name="softRestricted" value="0x8" /> <!-- This permission is restricted immutably which means that its diff --git a/core/res/res/values/colors.xml b/core/res/res/values/colors.xml index 3b282650d59e..1dcd389d9d8f 100644 --- a/core/res/res/values/colors.xml +++ b/core/res/res/values/colors.xml @@ -79,6 +79,7 @@ <drawable name="input_method_fullscreen_background">#fff9f9f9</drawable> <color name="decor_view_status_guard">#ff000000</color> + <color name="decor_view_status_guard_light">#ffffffff</color> <!-- For date picker widget --> <drawable name="selected_day_background">#ff0092f4</drawable> diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml index 14abb77aad7d..eb7d02bad168 100644 --- a/core/res/res/values/config.xml +++ b/core/res/res/values/config.xml @@ -364,7 +364,7 @@ overridden by the device to present the capability of creating socket keepalives. --> <!-- An Array of "[NetworkCapabilities.TRANSPORT_*],[supported keepalives] --> <string-array translatable="false" name="config_networkSupportedKeepaliveCount"> - <item>0,3</item> + <item>0,1</item> <item>1,3</item> </string-array> @@ -2787,6 +2787,9 @@ screen. --> <bool name="config_lowRamTaskSnapshotsAndRecents">false</bool> + <!-- The amount to scale fullscreen snapshots for Overview and snapshot starting windows. --> + <item name="config_fullTaskSnapshotScale" format="float" type="dimen">1.0</item> + <!-- Determines whether recent tasks are provided to the user. Default device has recents property. If this is false, then the following recents config flags are ignored. --> <bool name="config_hasRecents">true</bool> @@ -4140,4 +4143,6 @@ one bar higher than they actually are --> <bool name="config_inflateSignalStrength">false</bool> + <!-- Sharesheet: define a max number of targets per application for new shortcuts-based direct share introduced in Q --> + <integer name="config_maxShortcutTargetsPerApp">3</integer> </resources> diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml index a8f1c64a51f4..152b131af8f5 100644 --- a/core/res/res/values/strings.xml +++ b/core/res/res/values/strings.xml @@ -3074,12 +3074,20 @@ <string name="whichViewApplicationNamed">Open with %1$s</string> <!-- Label for a link to a intent resolver dialog to view something --> <string name="whichViewApplicationLabel">Open</string> - <!-- Title of intent resolver dialog when selecting a viewer application that opens URI + <!-- Title of intent resolver dialog when selecting a browser/application that opens specific URIs + [CHAR LIMIT=128]. --> + <string name="whichOpenHostLinksWith">Open <xliff:g id="host" example="mail.google.com">%1$s</xliff:g> links with</string> + <!-- Title of intent resolver dialog when selecting a browser that opens URI + [CHAR LIMIT=128]. --> + <string name="whichOpenLinksWith">Open links with</string> + <!-- Title of intent resolver dialog when defaulting to a specific browser that opens URI [CHAR LIMIT=128]. --> - <string name="whichGiveAccessToApplication">Give access to open <xliff:g id="host" example="mail.google.com">%1$s</xliff:g> links with</string> + <string name="whichOpenLinksWithApp">Open links with <xliff:g id="application" example="Chrome">%1$s</xliff:g></string> + <!-- Title of intent resolver dialog when defaulting to a specific browser that opens URI + [CHAR LIMIT=128]. --> + <string name="whichOpenHostLinksWithApp">Open <xliff:g id="host" example="mail.google.com">%1$s</xliff:g> links with <xliff:g id="application" example="Chrome">%2$s</xliff:g></string> <!-- Title of intent resolver dialog when selecting a viewer application that opens URI and a previously used application is known [CHAR LIMIT=128]. --> - <string name="whichGiveAccessToApplicationNamed">Give access to open <xliff:g id="host" example="mail.google.com">%1$s</xliff:g> links with <xliff:g id="application" example="Gmail">%2$s</xliff:g></string> <!-- Label for a link to an intent resolver dialog to open URI [CHAR LIMIT=18] --> <string name="whichGiveAccessToApplicationLabel">Give access</string> <!-- Title of intent resolver dialog when selecting an editor application to run. --> @@ -4212,6 +4220,10 @@ <string name="activity_resolver_use_always">Always</string> <!-- Title for a button to choose the currently selected activity + as the default in the activity resolver. [CHAR LIMIT=50] --> + <string name="activity_resolver_set_always">Set to always open</string> + + <!-- Title for a button to choose the currently selected activity from the activity resolver to use just this once. [CHAR LIMIT=25] --> <string name="activity_resolver_use_once">Just once</string> diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index 27a4a46c20dc..4504aa9fb932 100644 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -355,6 +355,7 @@ <java-symbol type="bool" name="config_enableMultiUserUI"/> <java-symbol type="bool" name="config_enableNewAutoSelectNetworkUI"/> <java-symbol type="bool" name="config_disableUsbPermissionDialogs"/> + <java-symbol type="dimen" name="config_fullTaskSnapshotScale" /> <java-symbol type="bool" name="config_lowRamTaskSnapshotsAndRecents" /> <java-symbol type="bool" name="config_hasRecents" /> <java-symbol type="string" name="config_recentsComponentName" /> @@ -766,8 +767,6 @@ <java-symbol type="string" name="display_manager_hdmi_display_name" /> <java-symbol type="string" name="display_manager_overlay_display_name" /> <java-symbol type="string" name="display_manager_overlay_display_secure_suffix" /> - <java-symbol type="string" name="activity_starter_block_bg_activity_starts_permissive" /> - <java-symbol type="string" name="activity_starter_block_bg_activity_starts_enforcing" /> <java-symbol type="string" name="display_manager_overlay_display_title" /> <java-symbol type="string" name="double_tap_toast" /> <java-symbol type="string" name="elapsed_time_short_format_h_mm_ss" /> @@ -1964,6 +1963,7 @@ <java-symbol type="bool" name="show_ongoing_ime_switcher" /> <java-symbol type="color" name="config_defaultNotificationColor" /> <java-symbol type="color" name="decor_view_status_guard" /> + <java-symbol type="color" name="decor_view_status_guard_light" /> <java-symbol type="drawable" name="ic_notification_ime_default" /> <java-symbol type="drawable" name="ic_menu_refresh" /> <java-symbol type="drawable" name="ic_settings" /> @@ -2238,7 +2238,6 @@ <java-symbol type="id" name="resolver_list" /> <java-symbol type="id" name="button_once" /> <java-symbol type="id" name="button_always" /> - <java-symbol type="id" name="button_app_settings" /> <java-symbol type="integer" name="config_globalActionsKeyTimeout" /> <java-symbol type="integer" name="config_screenshotChordKeyTimeout" /> <java-symbol type="integer" name="config_maxResolverActivityColumns" /> @@ -2623,14 +2622,17 @@ <java-symbol type="bool" name="config_use_voip_mode_for_ims" /> <java-symbol type="attr" name="touchscreenBlocksFocus" /> <java-symbol type="layout" name="resolver_list_with_default" /> - <java-symbol type="string" name="activity_resolver_app_settings" /> + <java-symbol type="string" name="activity_resolver_set_always" /> + <java-symbol type="string" name="activity_resolver_use_always" /> <java-symbol type="string" name="whichApplicationNamed" /> <java-symbol type="string" name="whichApplicationLabel" /> <java-symbol type="string" name="whichViewApplication" /> <java-symbol type="string" name="whichViewApplicationNamed" /> <java-symbol type="string" name="whichViewApplicationLabel" /> - <java-symbol type="string" name="whichGiveAccessToApplication" /> - <java-symbol type="string" name="whichGiveAccessToApplicationNamed" /> + <java-symbol type="string" name="whichOpenHostLinksWith" /> + <java-symbol type="string" name="whichOpenHostLinksWithApp" /> + <java-symbol type="string" name="whichOpenLinksWith" /> + <java-symbol type="string" name="whichOpenLinksWithApp" /> <java-symbol type="string" name="whichGiveAccessToApplicationLabel" /> <java-symbol type="string" name="whichEditApplication" /> <java-symbol type="string" name="whichEditApplicationNamed" /> @@ -2812,6 +2814,7 @@ <java-symbol type="layout" name="chooser_grid_preview_file" /> <java-symbol type="id" name="chooser_row_text_option" /> <java-symbol type="dimen" name="chooser_row_text_option_translate" /> + <java-symbol type="integer" name="config_maxShortcutTargetsPerApp" /> <java-symbol type="layout" name="resolve_grid_item" /> <java-symbol type="id" name="day_picker_view_pager" /> <java-symbol type="layout" name="day_picker_content_material" /> @@ -3805,7 +3808,9 @@ <java-symbol type="string" name="chooser_all_apps_button_label" /> <java-symbol type="anim" name="resolver_launch_anim" /> <java-symbol type="style" name="Animation.DeviceDefault.Activity.Resolver" /> - + + <java-symbol type="color" name="decor_view_status_guard_light" /> + <java-symbol type="string" name="config_defaultSupervisionProfileOwnerComponent" /> <java-symbol type="bool" name="config_inflateSignalStrength" /> </resources> diff --git a/core/tests/benchmarks/src/android/net/NetworkStatsBenchmark.java b/core/tests/benchmarks/src/android/net/NetworkStatsBenchmark.java index 707d7b30e09b..1b6560322a13 100644 --- a/core/tests/benchmarks/src/android/net/NetworkStatsBenchmark.java +++ b/core/tests/benchmarks/src/android/net/NetworkStatsBenchmark.java @@ -19,22 +19,13 @@ package android.net; import com.google.caliper.BeforeExperiment; import com.google.caliper.Param; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - public class NetworkStatsBenchmark { - private static final String[] UNDERLYING_IFACES = {"wlan0", "rmnet0"}; + private static final String UNDERLYING_IFACE = "wlan0"; private static final String TUN_IFACE = "tun0"; private static final int TUN_UID = 999999999; @Param({"100", "1000"}) private int mSize; - /** - * Should not be more than the length of {@link #UNDERLYING_IFACES}. - */ - @Param({"1", "2"}) - private int mNumUnderlyingIfaces; private NetworkStats mNetworkStats; @BeforeExperiment @@ -42,10 +33,8 @@ public class NetworkStatsBenchmark { mNetworkStats = new NetworkStats(0, mSize + 2); int uid = 0; NetworkStats.Entry recycle = new NetworkStats.Entry(); - final List<String> allIfaces = getAllIfacesForBenchmark(); // also contains TUN_IFACE. - final int totalIfaces = allIfaces.size(); for (int i = 0; i < mSize; i++) { - recycle.iface = allIfaces.get(i % totalIfaces); + recycle.iface = (i < mSize / 2) ? TUN_IFACE : UNDERLYING_IFACE; recycle.uid = uid; recycle.set = i % 2; recycle.tag = NetworkStats.TAG_NONE; @@ -59,39 +48,22 @@ public class NetworkStatsBenchmark { uid++; } } - - for (int i = 0; i < mNumUnderlyingIfaces; i++) { - recycle.iface = UNDERLYING_IFACES[i]; - recycle.uid = TUN_UID; - recycle.set = NetworkStats.SET_FOREGROUND; - recycle.tag = NetworkStats.TAG_NONE; - recycle.rxBytes = 90000 * mSize; - recycle.rxPackets = 40 * mSize; - recycle.txBytes = 180000 * mSize; - recycle.txPackets = 1200 * mSize; - recycle.operations = 0; - mNetworkStats.addValues(recycle); - } - } - - private String[] getVpnUnderlyingIfaces() { - return Arrays.copyOf(UNDERLYING_IFACES, mNumUnderlyingIfaces); - } - - /** - * Same as {@link #getVpnUnderlyingIfaces}, but also contains {@link #TUN_IFACE}. - */ - private List<String> getAllIfacesForBenchmark() { - List<String> ifaces = new ArrayList<>(); - ifaces.add(TUN_IFACE); - ifaces.addAll(Arrays.asList(getVpnUnderlyingIfaces())); - return ifaces; + recycle.iface = UNDERLYING_IFACE; + recycle.uid = TUN_UID; + recycle.set = NetworkStats.SET_FOREGROUND; + recycle.tag = NetworkStats.TAG_NONE; + recycle.rxBytes = 90000 * mSize; + recycle.rxPackets = 40 * mSize; + recycle.txBytes = 180000 * mSize; + recycle.txPackets = 1200 * mSize; + recycle.operations = 0; + mNetworkStats.addValues(recycle); } public void timeMigrateTun(int reps) { for (int i = 0; i < reps; i++) { NetworkStats stats = mNetworkStats.clone(); - stats.migrateTun(TUN_UID, TUN_IFACE, getVpnUnderlyingIfaces()); + stats.migrateTun(TUN_UID, TUN_IFACE, UNDERLYING_IFACE); } } diff --git a/core/tests/coretests/src/android/app/activity/ActivityThreadTest.java b/core/tests/coretests/src/android/app/activity/ActivityThreadTest.java index 711eaa7edc2a..c50cbe3773ab 100644 --- a/core/tests/coretests/src/android/app/activity/ActivityThreadTest.java +++ b/core/tests/coretests/src/android/app/activity/ActivityThreadTest.java @@ -19,6 +19,8 @@ package android.app.activity; import static android.content.Intent.ACTION_EDIT; import static android.content.Intent.ACTION_VIEW; +import static com.google.common.truth.Truth.assertThat; + import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotEquals; import static org.junit.Assert.assertNull; @@ -31,6 +33,7 @@ import android.app.servertransaction.ActivityConfigurationChangeItem; import android.app.servertransaction.ActivityRelaunchItem; import android.app.servertransaction.ClientTransaction; import android.app.servertransaction.ClientTransactionItem; +import android.app.servertransaction.NewIntentItem; import android.app.servertransaction.ResumeActivityItem; import android.app.servertransaction.StopActivityItem; import android.content.Intent; @@ -45,9 +48,13 @@ import androidx.test.filters.MediumTest; import androidx.test.rule.ActivityTestRule; import androidx.test.runner.AndroidJUnit4; +import com.android.internal.content.ReferrerIntent; + import org.junit.Test; import org.junit.runner.RunWith; +import java.util.ArrayList; +import java.util.List; import java.util.concurrent.CountDownLatch; /** @@ -307,6 +314,24 @@ public class ActivityThreadTest { assertEquals(400, activity.mConfig.smallestScreenWidthDp); } + @Test + public void testResumeAfterNewIntent() { + final Activity activity = mActivityTestRule.launchActivity(new Intent()); + final ActivityThread activityThread = activity.getActivityThread(); + final ArrayList<ReferrerIntent> rIntents = new ArrayList<>(); + rIntents.add(new ReferrerIntent(new Intent(), "android.app.activity")); + + InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> { + activityThread.executeTransaction(newNewIntentTransaction(activity, rIntents, false)); + }); + assertThat(activity.isResumed()).isFalse(); + + InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> { + activityThread.executeTransaction(newNewIntentTransaction(activity, rIntents, true)); + }); + assertThat(activity.isResumed()).isTrue(); + } + /** * Calls {@link ActivityThread#handleActivityConfigurationChanged(IBinder, Configuration, int)} * to try to push activity configuration to the activity for the given sequence number. @@ -386,6 +411,16 @@ public class ActivityThreadTest { return transaction; } + private static ClientTransaction newNewIntentTransaction(Activity activity, + List<ReferrerIntent> intents, boolean resume) { + final NewIntentItem item = NewIntentItem.obtain(intents, resume); + + final ClientTransaction transaction = newTransaction(activity); + transaction.addCallback(item); + + return transaction; + } + private static ClientTransaction newTransaction(Activity activity) { final IApplicationThread appThread = activity.getActivityThread().getApplicationThread(); return ClientTransaction.obtain(appThread, activity.getActivityToken()); diff --git a/core/tests/coretests/src/android/app/servertransaction/ObjectPoolTests.java b/core/tests/coretests/src/android/app/servertransaction/ObjectPoolTests.java index 1e49c0a7f55d..37d21f0928be 100644 --- a/core/tests/coretests/src/android/app/servertransaction/ObjectPoolTests.java +++ b/core/tests/coretests/src/android/app/servertransaction/ObjectPoolTests.java @@ -214,15 +214,15 @@ public class ObjectPoolTests { @Test public void testRecycleNewIntentItem() { - NewIntentItem emptyItem = NewIntentItem.obtain(null); - NewIntentItem item = NewIntentItem.obtain(referrerIntentList()); + NewIntentItem emptyItem = NewIntentItem.obtain(null, false); + NewIntentItem item = NewIntentItem.obtain(referrerIntentList(), false); assertNotSame(item, emptyItem); assertFalse(item.equals(emptyItem)); item.recycle(); assertEquals(item, emptyItem); - NewIntentItem item2 = NewIntentItem.obtain(referrerIntentList()); + NewIntentItem item2 = NewIntentItem.obtain(referrerIntentList(), false); assertSame(item, item2); assertFalse(item2.equals(emptyItem)); } diff --git a/core/tests/coretests/src/android/app/servertransaction/TransactionParcelTests.java b/core/tests/coretests/src/android/app/servertransaction/TransactionParcelTests.java index 36ed88fbe8d5..d2b18cb0bcb8 100644 --- a/core/tests/coretests/src/android/app/servertransaction/TransactionParcelTests.java +++ b/core/tests/coretests/src/android/app/servertransaction/TransactionParcelTests.java @@ -128,7 +128,7 @@ public class TransactionParcelTests { @Test public void testNewIntent() { // Write to parcel - NewIntentItem item = NewIntentItem.obtain(referrerIntentList()); + NewIntentItem item = NewIntentItem.obtain(referrerIntentList(), false); writeAndPrepareForReading(item); // Read from parcel and assert diff --git a/core/tests/coretests/src/android/content/ContextTest.java b/core/tests/coretests/src/android/content/ContextTest.java index 2f442c34f2c1..b1a54dcced46 100644 --- a/core/tests/coretests/src/android/content/ContextTest.java +++ b/core/tests/coretests/src/android/content/ContextTest.java @@ -19,6 +19,7 @@ package android.content; import static org.junit.Assert.assertEquals; import android.app.ActivityThread; +import android.os.UserHandle; import android.view.WindowManager; import androidx.test.InstrumentationRegistry; @@ -58,4 +59,32 @@ public class ContextTest { assertEquals(defaultDisplayContext.getDisplay().getDisplayId(), defaultDisplayContext.getDisplayId()); } + + @Test(expected = NullPointerException.class) + public void testStartActivityAsUserNullIntentNullUser() { + final Context testContext = + InstrumentationRegistry.getInstrumentation().getTargetContext(); + testContext.startActivityAsUser(null, null); + } + + @Test(expected = NullPointerException.class) + public void testStartActivityAsUserNullIntentNonNullUser() { + final Context testContext = + InstrumentationRegistry.getInstrumentation().getTargetContext(); + testContext.startActivityAsUser(null, new UserHandle(UserHandle.USER_ALL)); + } + + @Test(expected = NullPointerException.class) + public void testStartActivityAsUserNonNullIntentNullUser() { + final Context testContext = + InstrumentationRegistry.getInstrumentation().getTargetContext(); + testContext.startActivityAsUser(new Intent(), null); + } + + @Test(expected = RuntimeException.class) + public void testStartActivityAsUserNonNullIntentNonNullUser() { + final Context testContext = + InstrumentationRegistry.getInstrumentation().getTargetContext(); + testContext.startActivityAsUser(new Intent(), new UserHandle(UserHandle.USER_ALL)); + } } diff --git a/core/tests/coretests/src/android/content/pm/RegisteredServicesCacheTest.java b/core/tests/coretests/src/android/content/pm/RegisteredServicesCacheTest.java index c8150b12a23b..365e97ded928 100644 --- a/core/tests/coretests/src/android/content/pm/RegisteredServicesCacheTest.java +++ b/core/tests/coretests/src/android/content/pm/RegisteredServicesCacheTest.java @@ -16,7 +16,6 @@ package android.content.pm; -import android.content.Intent; import android.content.res.Resources; import android.os.FileUtils; import android.os.Parcel; @@ -190,36 +189,6 @@ public class RegisteredServicesCacheTest extends AndroidTestCase { assertEquals(0, cache.getPersistentServicesSize(u1)); } - /** - * Check that an optimization to skip a call to PackageManager handles an invalidated cache. - * - * We added an optimization in generateServicesMap to only query PackageManager for packages - * that have been changed, because if a package is unchanged, we have already cached the - * services info for it, so we can save a query to PackageManager (and save some memory). - * However, if invalidateCache was called, we cannot optimize, and must do a full query. - * The initial optimization was buggy because it failed to check for an invalidated cache, and - * only scanned the changed packages, given in the ACTION_PACKAGE_CHANGED intent (b/122912184). - */ - public void testParseServiceInfoOptimizationHandlesInvalidatedCache() { - TestServicesCache cache = new TestServicesCache(); - cache.addServiceForQuerying(U0, r1, newServiceInfo(t1, UID1)); - cache.addServiceForQuerying(U0, r2, newServiceInfo(t2, UID2)); - assertEquals(2, cache.getAllServicesSize(U0)); - - // simulate the client of the cache invalidating it - cache.invalidateCache(U0); - - // there should be 0 services (userServices.services == null ) at this point, but we don't - // call getAllServicesSize since that would force a full scan of packages, - // instead we trigger a package change in a package that is in the list of services - Intent intent = new Intent(Intent.ACTION_PACKAGE_CHANGED); - intent.putExtra(Intent.EXTRA_UID, UID1); - cache.handlePackageEvent(intent, U0); - - // check that the optimization does a full query and caches both services - assertEquals(2, cache.getAllServicesSize(U0)); - } - private static RegisteredServicesCache.ServiceInfo<TestServiceType> newServiceInfo( TestServiceType type, int uid) { final ComponentInfo info = new ComponentInfo(); @@ -297,11 +266,6 @@ public class RegisteredServicesCacheTest extends AndroidTestCase { map = new HashMap<>(); mServices.put(userId, map); } - // in actual cases, resolveInfo should always have a serviceInfo, since we specifically - // query for intent services - resolveInfo.serviceInfo = new android.content.pm.ServiceInfo(); - resolveInfo.serviceInfo.applicationInfo = - new ApplicationInfo(serviceInfo.componentInfo.applicationInfo); map.put(resolveInfo, serviceInfo); } @@ -340,11 +304,6 @@ public class RegisteredServicesCacheTest extends AndroidTestCase { public void onUserRemoved(int userId) { super.onUserRemoved(userId); } - - @Override - public void handlePackageEvent(Intent intent, int userId) { - super.handlePackageEvent(intent, userId); - } } static class TestSerializer implements XmlSerializerAndParser<TestServiceType> { diff --git a/core/tests/coretests/src/android/provider/SettingsBackupTest.java b/core/tests/coretests/src/android/provider/SettingsBackupTest.java index 9d5846440a13..cd36ba746a39 100644 --- a/core/tests/coretests/src/android/provider/SettingsBackupTest.java +++ b/core/tests/coretests/src/android/provider/SettingsBackupTest.java @@ -397,9 +397,6 @@ public class SettingsBackupTest { Settings.Global.POWER_MANAGER_CONSTANTS, Settings.Global.PREFERRED_NETWORK_MODE, Settings.Global.PRIVATE_DNS_DEFAULT_MODE, - Settings.Global.PRIVILEGED_DEVICE_IDENTIFIER_NON_PRIV_CHECK_RELAXED, - Settings.Global.PRIVILEGED_DEVICE_IDENTIFIER_PRIV_CHECK_RELAXED, - Settings.Global.PRIVILEGED_DEVICE_IDENTIFIER_3P_CHECK_RELAXED, Settings.Global.PROVISIONING_APN_ALARM_DELAY_IN_MS, Settings.Global.RADIO_BLUETOOTH, Settings.Global.RADIO_CELL, @@ -495,6 +492,7 @@ public class SettingsBackupTest { Settings.Global.GLOBAL_SETTINGS_ANGLE_WHITELIST, Settings.Global.GAME_DRIVER_ALL_APPS, Settings.Global.GAME_DRIVER_OPT_IN_APPS, + Settings.Global.GAME_DRIVER_PRERELEASE_OPT_IN_APPS, Settings.Global.GAME_DRIVER_OPT_OUT_APPS, Settings.Global.GAME_DRIVER_BLACKLISTS, Settings.Global.GAME_DRIVER_BLACKLIST, diff --git a/core/tests/coretests/src/android/service/notification/StatusBarNotificationTest.java b/core/tests/coretests/src/android/service/notification/StatusBarNotificationTest.java index 0f32a827377e..6161108d4d70 100644 --- a/core/tests/coretests/src/android/service/notification/StatusBarNotificationTest.java +++ b/core/tests/coretests/src/android/service/notification/StatusBarNotificationTest.java @@ -24,6 +24,7 @@ import static org.mockito.Mockito.when; import android.app.ActivityManager; import android.app.Notification; +import android.app.Person; import android.content.Context; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; @@ -87,6 +88,9 @@ public class StatusBarNotificationTest { assertEquals(0, logMaker.getTaggedData(MetricsEvent.FIELD_NOTIFICATION_GROUP_SUMMARY)); assertNull(logMaker.getTaggedData(MetricsEvent.FIELD_NOTIFICATION_CATEGORY)); + assertNull(logMaker.getTaggedData(MetricsEvent.FIELD_NOTIFICATION_STYLE)); + assertNull(logMaker.getTaggedData(MetricsEvent.FIELD_NOTIFICATION_PEOPLE)); + } /** Verify that modifying the returned logMaker won't leave stale data behind for @@ -159,6 +163,24 @@ public class StatusBarNotificationTest { sbn.getLogMaker().getTaggedData(MetricsEvent.FIELD_NOTIFICATION_GROUP_ID)); } + @Test + public void testLogMakerWithPerson() { + Notification.Builder builder = getNotificationBuilder(GROUP_ID_1, CHANNEL_ID) + .addPerson(new Person.Builder().build()); + final LogMaker logMaker = getNotification(PKG, builder).getLogMaker(); + assertEquals(1, + logMaker.getTaggedData(MetricsEvent.FIELD_NOTIFICATION_PEOPLE)); + } + + @Test + public void testLogMakerWithStyle() { + Notification.Builder builder = getNotificationBuilder(GROUP_ID_1, CHANNEL_ID) + .setStyle(new Notification.MessagingStyle(new Person.Builder().build())); + final LogMaker logMaker = getNotification(PKG, builder).getLogMaker(); + assertEquals("android.app.Notification$MessagingStyle".hashCode(), + logMaker.getTaggedData(MetricsEvent.FIELD_NOTIFICATION_STYLE)); + } + private StatusBarNotification getNotification(String pkg, String group, String channelId) { return getNotification(pkg, getNotificationBuilder(group, channelId)); } diff --git a/core/tests/coretests/src/android/text/LayoutTest.java b/core/tests/coretests/src/android/text/LayoutTest.java index 990161a88c22..93a6b15f744c 100644 --- a/core/tests/coretests/src/android/text/LayoutTest.java +++ b/core/tests/coretests/src/android/text/LayoutTest.java @@ -743,6 +743,9 @@ public class LayoutTest { assertPrimaryIsTrailingPrevious( RTL + LRI + RTL + LTR + PDI + RTL, new boolean[]{false, false, true, false, false, false, false}); + assertPrimaryIsTrailingPrevious( + "", + new boolean[]{false}); } } diff --git a/data/etc/com.android.systemui.xml b/data/etc/com.android.systemui.xml index a4337cc8ce79..a305d48c4633 100644 --- a/data/etc/com.android.systemui.xml +++ b/data/etc/com.android.systemui.xml @@ -54,6 +54,7 @@ <permission name="android.permission.TETHER_PRIVILEGED"/> <permission name="android.permission.UPDATE_APP_OPS_STATS"/> <permission name="android.permission.USE_RESERVED_DISK"/> + <permission name="android.permission.WATCH_APPOPS"/> <permission name="android.permission.WRITE_DREAM_STATE"/> <permission name="android.permission.WRITE_MEDIA_STORAGE"/> <permission name="android.permission.WRITE_SECURE_SETTINGS"/> diff --git a/data/etc/privapp-permissions-platform.xml b/data/etc/privapp-permissions-platform.xml index a640122f2b32..ff4e1005c9d9 100644 --- a/data/etc/privapp-permissions-platform.xml +++ b/data/etc/privapp-permissions-platform.xml @@ -185,6 +185,7 @@ applications that come with the platform <permission name="android.permission.ACCESS_CACHE_FILESYSTEM"/> <permission name="android.permission.CLEAR_APP_CACHE"/> <permission name="android.permission.CONNECTIVITY_INTERNAL"/> + <permission name="android.permission.START_ACTIVITIES_FROM_BACKGROUND"/> <permission name="android.permission.UPDATE_APP_OPS_STATS"/> <permission name="android.permission.UPDATE_DEVICE_STATS"/> </privapp-permissions> diff --git a/data/keyboards/Vendor_045e_Product_028e.kl b/data/keyboards/Vendor_045e_Product_028e.kl index 301601a1ffdd..e4f48f9fb326 100644 --- a/data/keyboards/Vendor_045e_Product_028e.kl +++ b/data/keyboards/Vendor_045e_Product_028e.kl @@ -22,9 +22,7 @@ key 307 BUTTON_X key 308 BUTTON_Y key 310 BUTTON_L1 key 311 BUTTON_R1 -key 314 BACK -key 315 BUTTON_START -key 316 HOME + key 317 BUTTON_THUMBL key 318 BUTTON_THUMBR @@ -44,3 +42,14 @@ axis 0x05 RTRIGGER # Hat. axis 0x10 HAT_X axis 0x11 HAT_Y + +# Mapping according to https://www.kernel.org/doc/Documentation/input/gamepad.txt + +# Button labeled as "BACK" (left-pointing triangle) +key 314 BUTTON_SELECT + +# The branded "X" button in the center of the controller +key 316 BUTTON_MODE + +# Button labeled as "START" (right-pointing triangle) +key 315 BUTTON_START diff --git a/data/keyboards/Vendor_045e_Product_02d1.kl b/data/keyboards/Vendor_045e_Product_02d1.kl index 5d1637bb012d..086767075941 100644 --- a/data/keyboards/Vendor_045e_Product_02d1.kl +++ b/data/keyboards/Vendor_045e_Product_02d1.kl @@ -13,20 +13,22 @@ # limitations under the License. # -# XBox One USB Controller +# XBox One Controller - Model 1537 - USB # +# Mapping according to https://developer.android.com/training/game-controllers/controller-input.html + key 304 BUTTON_A key 305 BUTTON_B key 307 BUTTON_X key 308 BUTTON_Y + key 310 BUTTON_L1 key 311 BUTTON_R1 -key 314 BACK -key 315 BUTTON_START -key 316 HOME -key 317 BUTTON_THUMBL -key 318 BUTTON_THUMBR + +# Triggers. +axis 0x02 LTRIGGER +axis 0x05 RTRIGGER # Left and right stick. # The reported value for flat is 128 out of a range from -32767 to 32768, which is absurd. @@ -37,10 +39,19 @@ axis 0x01 Y flat 4096 axis 0x03 Z flat 4096 axis 0x04 RZ flat 4096 -# Triggers. -axis 0x02 LTRIGGER -axis 0x05 RTRIGGER +key 317 BUTTON_THUMBL +key 318 BUTTON_THUMBR # Hat. axis 0x10 HAT_X axis 0x11 HAT_Y + + +# Mapping according to https://www.kernel.org/doc/Documentation/input/gamepad.txt +# Two overlapping rectangles +key 314 BUTTON_SELECT +# Hamburger - 3 parallel lines +key 315 BUTTON_START + +# Xbox key +key 316 BUTTON_MODE diff --git a/data/keyboards/Vendor_045e_Product_02e3.kl b/data/keyboards/Vendor_045e_Product_02e3.kl new file mode 100644 index 000000000000..0a6e7d75c2a7 --- /dev/null +++ b/data/keyboards/Vendor_045e_Product_02e3.kl @@ -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. + +# +# Microsoft X-Box One Elite Pad - Model 1698 - USB +# + +# Mapping according to https://developer.android.com/training/game-controllers/controller-input.html + +key 0x130 BUTTON_A +key 0x131 BUTTON_B +key 0x133 BUTTON_X +key 0x134 BUTTON_Y + +key 0x136 BUTTON_L1 +key 0x137 BUTTON_R1 + +# Triggers. +axis 0x02 LTRIGGER +axis 0x05 RTRIGGER + +# Left stick +axis 0x00 X +axis 0x01 Y +# Right stick +axis 0x03 Z +axis 0x04 RZ + +key 0x13d BUTTON_THUMBL +key 0x13e BUTTON_THUMBR + +# Hat. +axis 0x10 HAT_X +axis 0x11 HAT_Y + + +# Mapping according to https://www.kernel.org/doc/Documentation/input/gamepad.txt + +# Two overlapping rectangles +key 0x13a BUTTON_SELECT +# Hamburger - 3 parallel lines +key 0x13b BUTTON_START + +# Xbox key +key 0x13c BUTTON_MODE diff --git a/data/keyboards/Vendor_045e_Product_02ea.kl b/data/keyboards/Vendor_045e_Product_02ea.kl new file mode 100644 index 000000000000..3b46db2ce930 --- /dev/null +++ b/data/keyboards/Vendor_045e_Product_02ea.kl @@ -0,0 +1,57 @@ +# 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. + +# +# XBox One Controller - Model 1708 - USB +# + +# Mapping according to https://developer.android.com/training/game-controllers/controller-input.html + +key 304 BUTTON_A +key 305 BUTTON_B +key 307 BUTTON_X +key 308 BUTTON_Y + +key 310 BUTTON_L1 +key 311 BUTTON_R1 + +# Triggers. +axis 0x02 LTRIGGER +axis 0x05 RTRIGGER + +# Left and right stick. +# The reported value for flat is 128 out of a range from -32767 to 32768, which is absurd. +# This confuses applications that rely on the flat value because the joystick actually +# settles in a flat range of +/- 4096 or so. +axis 0x00 X flat 4096 +axis 0x01 Y flat 4096 +axis 0x03 Z flat 4096 +axis 0x04 RZ flat 4096 + +key 317 BUTTON_THUMBL +key 318 BUTTON_THUMBR + +# Hat. +axis 0x10 HAT_X +axis 0x11 HAT_Y + + +# Mapping according to https://www.kernel.org/doc/Documentation/input/gamepad.txt +# Two overlapping rectangles +key 314 BUTTON_SELECT +# Hamburger - 3 parallel lines +key 315 BUTTON_START + +# Xbox key +key 316 BUTTON_MODE diff --git a/data/keyboards/Vendor_045e_Product_02fd.kl b/data/keyboards/Vendor_045e_Product_02fd.kl new file mode 100644 index 000000000000..512f7e134978 --- /dev/null +++ b/data/keyboards/Vendor_045e_Product_02fd.kl @@ -0,0 +1,57 @@ +# 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. + +# +# XBox One Controller - Model 1708 - Bluetooth +# + +# Mapping according to https://developer.android.com/training/game-controllers/controller-input.html + +key 304 BUTTON_A +key 305 BUTTON_B +key 307 BUTTON_X +key 308 BUTTON_Y + +key 310 BUTTON_L1 +key 311 BUTTON_R1 + +# Triggers. +axis 0x0a LTRIGGER +axis 0x09 RTRIGGER + +# Left and right stick. +# The reported value for flat is 128 out of a range from -32767 to 32768, which is absurd. +# This confuses applications that rely on the flat value because the joystick actually +# settles in a flat range of +/- 4096 or so. +axis 0x00 X flat 4096 +axis 0x01 Y flat 4096 +axis 0x02 Z flat 4096 +axis 0x05 RZ flat 4096 + +key 317 BUTTON_THUMBL +key 318 BUTTON_THUMBR + +# Hat. +axis 0x10 HAT_X +axis 0x11 HAT_Y + + +# Mapping according to https://www.kernel.org/doc/Documentation/input/gamepad.txt +# Two overlapping rectangles +key 158 BUTTON_SELECT +# Hamburger - 3 parallel lines +key 315 BUTTON_START + +# Xbox key +key 172 BUTTON_MODE diff --git a/data/keyboards/Vendor_057e_Product_2009.kl b/data/keyboards/Vendor_057e_Product_2009.kl new file mode 100644 index 000000000000..b36e946a547f --- /dev/null +++ b/data/keyboards/Vendor_057e_Product_2009.kl @@ -0,0 +1,68 @@ +# 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. + +# +# Nintendo Switch Pro Controller - HAC-013 - Bluetooth +# + + +# Mapping according to https://developer.android.com/training/game-controllers/controller-input.html + +# Button labeled as "Y" but should really produce keycode "X" +key 0x132 BUTTON_X +# Button labeled as "B" but should really produce keycode "A" +key 0x130 BUTTON_A +# Button labeled as "A" but should really produce keycode "B" +key 0x131 BUTTON_B +# Button labeled as "X" but should really product keycode "Y" +key 0x133 BUTTON_Y + +# Button labeled as "L" +key 0x134 BUTTON_L1 +# Button labeled as "R" +key 0x135 BUTTON_R1 + +# No LT / RT axes on this controller. Instead, there are keys. +# Trigger labeled as "ZL" +key 0x136 BUTTON_L2 +# Trigger labeled as "ZR" +key 0x137 BUTTON_R2 + +# Left Analog Stick +axis 0x00 X +axis 0x01 Y +# Right Analog Stick +axis 0x03 Z +axis 0x04 RZ + +# Left stick click (generates linux BTN_SELECT) +key 0x13a BUTTON_THUMBL +# Right stick click (generates linux BTN_START) +key 0x13b BUTTON_THUMBR + +# Hat +axis 0x10 HAT_X +axis 0x11 HAT_Y + +# Mapping according to https://www.kernel.org/doc/Documentation/input/gamepad.txt +# Minus +key 0x138 BUTTON_SELECT +# Plus +key 0x139 BUTTON_START + +# Circle +key 0x13d BUTTON_MODE + +# Home key +key 0x13c HOME diff --git a/data/keyboards/Vendor_0e6f_Product_02a4.kl b/data/keyboards/Vendor_0e6f_Product_02a4.kl new file mode 100644 index 000000000000..9ffae33bc387 --- /dev/null +++ b/data/keyboards/Vendor_0e6f_Product_02a4.kl @@ -0,0 +1,54 @@ +# 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. + +# +# PDP Wired Controller for Xbox One - Stealth Series +# + +# Mapping according to https://developer.android.com/training/game-controllers/controller-input.html + +key 304 BUTTON_A +key 305 BUTTON_B +key 307 BUTTON_X +key 308 BUTTON_Y + +key 310 BUTTON_L1 +key 311 BUTTON_R1 + +# Triggers. +axis 0x02 LTRIGGER +axis 0x05 RTRIGGER + +# Left and right stick. +axis 0x00 X +axis 0x01 Y +axis 0x03 Z +axis 0x04 RZ + +key 317 BUTTON_THUMBL +key 318 BUTTON_THUMBR + +# Hat. +axis 0x10 HAT_X +axis 0x11 HAT_Y + + +# Mapping according to https://www.kernel.org/doc/Documentation/input/gamepad.txt +# Two overlapping rectangles +key 314 BUTTON_SELECT +# Hamburger - 3 parallel lines +key 315 BUTTON_START + +# Xbox key +key 316 BUTTON_MODE diff --git a/graphics/java/android/graphics/drawable/ColorStateListDrawable.java b/graphics/java/android/graphics/drawable/ColorStateListDrawable.java index 35021a66f572..20cd825fe306 100644 --- a/graphics/java/android/graphics/drawable/ColorStateListDrawable.java +++ b/graphics/java/android/graphics/drawable/ColorStateListDrawable.java @@ -25,6 +25,7 @@ import android.graphics.BlendMode; import android.graphics.Canvas; import android.graphics.ColorFilter; import android.graphics.PixelFormat; +import android.graphics.Rect; import android.util.MathUtils; /** @@ -136,6 +137,12 @@ public class ColorStateListDrawable extends Drawable implements Drawable.Callbac } @Override + protected void onBoundsChange(Rect bounds) { + super.onBoundsChange(bounds); + mColorDrawable.setBounds(bounds); + } + + @Override protected boolean onStateChange(int[] state) { if (mState.mColor != null) { int color = mState.mColor.getColorForState(state, mState.mColor.getDefaultColor()); diff --git a/graphics/java/android/graphics/drawable/GradientDrawable.java b/graphics/java/android/graphics/drawable/GradientDrawable.java index 32f2fc22acad..b9945cc735d8 100644 --- a/graphics/java/android/graphics/drawable/GradientDrawable.java +++ b/graphics/java/android/graphics/drawable/GradientDrawable.java @@ -1757,7 +1757,7 @@ public class GradientDrawable extends Drawable { } int angle = (int) a.getFloat(R.styleable.GradientDrawableGradient_angle, st.mAngle); - st.mAngle = angle % 360; + st.mAngle = ((angle % 360) + 360) % 360; // offset negative angle measures final TypedValue tv = a.peekValue(R.styleable.GradientDrawableGradient_gradientRadius); if (tv != null) { diff --git a/graphics/java/android/graphics/drawable/LayerDrawable.java b/graphics/java/android/graphics/drawable/LayerDrawable.java index f3a1b0eb52d5..760d554888ee 100644 --- a/graphics/java/android/graphics/drawable/LayerDrawable.java +++ b/graphics/java/android/graphics/drawable/LayerDrawable.java @@ -139,9 +139,12 @@ public class LayerDrawable extends Drawable implements Drawable.Callback { final ChildDrawable[] r = new ChildDrawable[length]; for (int i = 0; i < length; i++) { r[i] = new ChildDrawable(mLayerState.mDensity); - r[i].mDrawable = layers[i]; - layers[i].setCallback(this); - mLayerState.mChildrenChangingConfigurations |= layers[i].getChangingConfigurations(); + Drawable child = layers[i]; + r[i].mDrawable = child; + if (child != null) { + child.setCallback(this); + mLayerState.mChildrenChangingConfigurations |= child.getChangingConfigurations(); + } } mLayerState.mNumChildren = length; mLayerState.mChildren = r; @@ -416,7 +419,8 @@ public class LayerDrawable extends Drawable implements Drawable.Callback { final ChildDrawable[] layers = mLayerState.mChildren; final int N = mLayerState.mNumChildren; for (int i = 0; i < N; i++) { - if (layers[i].mDrawable.isProjected()) { + Drawable childDrawable = layers[i].mDrawable; + if (childDrawable != null && childDrawable.isProjected()) { return true; } } diff --git a/libs/androidfw/PosixUtils.cpp b/libs/androidfw/PosixUtils.cpp index df0dd7ce463d..f1ab1493012a 100644 --- a/libs/androidfw/PosixUtils.cpp +++ b/libs/androidfw/PosixUtils.cpp @@ -64,6 +64,9 @@ std::unique_ptr<ProcResult> ExecuteBinary(const std::vector<std::string>& argv) return nullptr; } + auto gid = getgid(); + auto uid = getuid(); + char const** argv0 = (char const**)malloc(sizeof(char*) * (argv.size() + 1)); for (size_t i = 0; i < argv.size(); i++) { argv0[i] = argv[i].c_str(); @@ -75,6 +78,16 @@ std::unique_ptr<ProcResult> ExecuteBinary(const std::vector<std::string>& argv) PLOG(ERROR) << "fork"; return nullptr; case 0: // child + if (setgid(gid) != 0) { + PLOG(ERROR) << "setgid"; + exit(1); + } + + if (setuid(uid) != 0) { + PLOG(ERROR) << "setuid"; + exit(1); + } + close(stdout[0]); if (dup2(stdout[1], STDOUT_FILENO) == -1) { abort(); diff --git a/libs/hwui/RenderNode.cpp b/libs/hwui/RenderNode.cpp index e0ed3e4940a8..b73347b233d7 100644 --- a/libs/hwui/RenderNode.cpp +++ b/libs/hwui/RenderNode.cpp @@ -264,6 +264,12 @@ void RenderNode::syncProperties() { } void RenderNode::pushStagingPropertiesChanges(TreeInfo& info) { + if (mPositionListenerDirty) { + mPositionListener = std::move(mStagingPositionListener); + mStagingPositionListener = nullptr; + mPositionListenerDirty = false; + } + // Push the animators first so that setupStartValueIfNecessary() is called // before properties() is trampled by stagingProperties(), as they are // required by some animators. diff --git a/libs/hwui/RenderNode.h b/libs/hwui/RenderNode.h index 23e7a0e60554..c6db7f1ba60d 100644 --- a/libs/hwui/RenderNode.h +++ b/libs/hwui/RenderNode.h @@ -188,11 +188,9 @@ public: virtual void onPositionLost(RenderNode& node, const TreeInfo* info) = 0; }; - // Note this is not thread safe, this needs to be called - // before the RenderNode is used for drawing. - // RenderNode takes ownership of the pointer ANDROID_API void setPositionListener(PositionListener* listener) { - mPositionListener = listener; + mStagingPositionListener = listener; + mPositionListenerDirty = true; } // This is only modified in MODE_FULL, so it can be safely accessed @@ -275,6 +273,8 @@ private: // mDisplayList, not mStagingDisplayList. uint32_t mParentCount; + bool mPositionListenerDirty = false; + sp<PositionListener> mStagingPositionListener; sp<PositionListener> mPositionListener; UsageHint mUsageHint = UsageHint::Unknown; diff --git a/media/apex/java/android/media/Media2Utils.java b/media/apex/java/android/media/Media2Utils.java index 5fd61915b4aa..a87e9676d017 100644 --- a/media/apex/java/android/media/Media2Utils.java +++ b/media/apex/java/android/media/Media2Utils.java @@ -75,5 +75,4 @@ public class Media2Utils { Log.v(TAG, "storeCookies: cookieHandler: " + cookieHandler + " Cookies: " + cookies); } - } diff --git a/media/apex/java/android/media/MediaController2.java b/media/apex/java/android/media/MediaController2.java index 9848f1a10a54..63a4510e7fe7 100644 --- a/media/apex/java/android/media/MediaController2.java +++ b/media/apex/java/android/media/MediaController2.java @@ -100,7 +100,7 @@ public class MediaController2 implements AutoCloseable { * @param callback controller callback to receive changes in. */ MediaController2(@NonNull Context context, @NonNull Session2Token token, - @Nullable Bundle connectionHints, @NonNull Executor executor, + @NonNull Bundle connectionHints, @NonNull Executor executor, @NonNull ControllerCallback callback) { if (context == null) { throw new IllegalArgumentException("context shouldn't be null"); @@ -259,7 +259,16 @@ public class MediaController2 implements AutoCloseable { Session2CommandGroup allowedCommands = connectionResult.getParcelable(KEY_ALLOWED_COMMANDS); boolean playbackActive = connectionResult.getBoolean(KEY_PLAYBACK_ACTIVE); + Bundle tokenExtras = connectionResult.getBundle(KEY_TOKEN_EXTRAS); + if (tokenExtras == null) { + Log.w(TAG, "extras shouldn't be null."); + tokenExtras = Bundle.EMPTY; + } else if (MediaSession2.hasCustomParcelable(tokenExtras)) { + Log.w(TAG, "extras contain custom parcelable. Ignoring."); + tokenExtras = Bundle.EMPTY; + } + if (DEBUG) { Log.d(TAG, "notifyConnected sessionBinder=" + sessionBinder + ", allowedCommands=" + allowedCommands); @@ -343,7 +352,7 @@ public class MediaController2 implements AutoCloseable { } } - private Bundle createConnectionRequest(@Nullable Bundle connectionHints) { + private Bundle createConnectionRequest(@NonNull Bundle connectionHints) { Bundle connectionRequest = new Bundle(); connectionRequest.putString(KEY_PACKAGE_NAME, mContext.getPackageName()); connectionRequest.putInt(KEY_PID, Process.myPid()); @@ -351,7 +360,7 @@ public class MediaController2 implements AutoCloseable { return connectionRequest; } - private boolean requestConnectToSession(@Nullable Bundle connectionHints) { + private boolean requestConnectToSession(@NonNull Bundle connectionHints) { Session2Link sessionBinder = mSessionToken.getSessionLink(); Bundle connectionRequest = createConnectionRequest(connectionHints); try { @@ -430,6 +439,9 @@ public class MediaController2 implements AutoCloseable { * <p> * {@code connectionHints} is a session-specific argument to send to the session when * connecting. The contents of this bundle may affect the connection result. + * <p> + * An {@link IllegalArgumentException} will be thrown if the bundle contains any + * non-framework Parcelable objects. * * @param connectionHints a bundle which contains the connection hints * @return The Builder to allow chaining @@ -439,6 +451,10 @@ public class MediaController2 implements AutoCloseable { if (connectionHints == null) { throw new IllegalArgumentException("connectionHints shouldn't be null"); } + if (MediaSession2.hasCustomParcelable(connectionHints)) { + throw new IllegalArgumentException("connectionHints shouldn't contain any custom " + + "parcelables"); + } mConnectionHints = new Bundle(connectionHints); return this; } @@ -477,6 +493,9 @@ public class MediaController2 implements AutoCloseable { if (mCallback == null) { mCallback = new ControllerCallback() {}; } + if (mConnectionHints == null) { + mConnectionHints = Bundle.EMPTY; + } return new MediaController2( mContext, mToken, mConnectionHints, mCallbackExecutor, mCallback); } diff --git a/media/apex/java/android/media/MediaSession2.java b/media/apex/java/android/media/MediaSession2.java index 081911896c04..b3edf3f50866 100644 --- a/media/apex/java/android/media/MediaSession2.java +++ b/media/apex/java/android/media/MediaSession2.java @@ -34,8 +34,10 @@ import android.content.Context; import android.content.Intent; import android.media.session.MediaSessionManager; import android.media.session.MediaSessionManager.RemoteUserInfo; +import android.os.BadParcelableException; import android.os.Bundle; import android.os.Handler; +import android.os.Parcel; import android.os.Process; import android.os.ResultReceiver; import android.util.ArrayMap; @@ -97,7 +99,7 @@ public class MediaSession2 implements AutoCloseable { MediaSession2(@NonNull Context context, @NonNull String id, PendingIntent sessionActivity, @NonNull Executor callbackExecutor, @NonNull SessionCallback callback, - Bundle tokenExtras) { + @NonNull Bundle tokenExtras) { synchronized (MediaSession2.class) { if (SESSION_ID_LIST.contains(id)) { throw new IllegalStateException("Session ID must be unique. ID=" + id); @@ -276,6 +278,35 @@ public class MediaSession2 implements AutoCloseable { return controllers; } + /** + * Returns whether the given bundle includes non-framework Parcelables. + */ + static boolean hasCustomParcelable(@Nullable Bundle bundle) { + if (bundle == null) { + return false; + } + + // Try writing the bundle to parcel, and read it with framework classloader. + Parcel parcel = null; + try { + parcel = Parcel.obtain(); + parcel.writeBundle(bundle); + parcel.setDataPosition(0); + Bundle out = parcel.readBundle(null); + + // Calling Bundle#size() will trigger Bundle#unparcel(). + out.size(); + } catch (BadParcelableException e) { + Log.d(TAG, "Custom parcelable in bundle.", e); + return true; + } finally { + if (parcel != null) { + parcel.recycle(); + } + } + return false; + } + boolean isClosed() { synchronized (mLock) { return mClosed; @@ -309,11 +340,21 @@ public class MediaSession2 implements AutoCloseable { String callingPkg = connectionRequest.getString(KEY_PACKAGE_NAME); RemoteUserInfo remoteUserInfo = new RemoteUserInfo(callingPkg, callingPid, callingUid); + + Bundle connectionHints = connectionRequest.getBundle(KEY_CONNECTION_HINTS); + if (connectionHints == null) { + Log.w(TAG, "connectionHints shouldn't be null."); + connectionHints = Bundle.EMPTY; + } else if (hasCustomParcelable(connectionHints)) { + Log.w(TAG, "connectionHints contain custom parcelable. Ignoring."); + connectionHints = Bundle.EMPTY; + } + final ControllerInfo controllerInfo = new ControllerInfo( remoteUserInfo, mSessionManager.isTrustedForMediaControl(remoteUserInfo), controller, - connectionRequest.getBundle(KEY_CONNECTION_HINTS)); + connectionHints); mCallbackExecutor.execute(() -> { boolean connected = false; try { @@ -516,7 +557,8 @@ public class MediaSession2 implements AutoCloseable { /** * Set extras for the session token. If null or not set, {@link Session2Token#getExtras()} - * will return {@link Bundle#EMPTY}. + * will return an empty {@link Bundle}. An {@link IllegalArgumentException} will be thrown + * if the bundle contains any non-framework Parcelable objects. * * @return The Builder to allow chaining * @see Session2Token#getExtras() @@ -526,7 +568,11 @@ public class MediaSession2 implements AutoCloseable { if (extras == null) { throw new NullPointerException("extras shouldn't be null"); } - mExtras = extras; + if (hasCustomParcelable(extras)) { + throw new IllegalArgumentException( + "extras shouldn't contain any custom parcelables"); + } + mExtras = new Bundle(extras); return this; } @@ -548,6 +594,9 @@ public class MediaSession2 implements AutoCloseable { if (mId == null) { mId = ""; } + if (mExtras == null) { + mExtras = Bundle.EMPTY; + } MediaSession2 session2 = new MediaSession2(mContext, mId, mSessionActivity, mCallbackExecutor, mCallback, mExtras); @@ -596,7 +645,7 @@ public class MediaSession2 implements AutoCloseable { * connection result. */ ControllerInfo(@NonNull RemoteUserInfo remoteUserInfo, boolean trusted, - @Nullable Controller2Link controllerBinder, @Nullable Bundle connectionHints) { + @Nullable Controller2Link controllerBinder, @NonNull Bundle connectionHints) { mRemoteUserInfo = remoteUserInfo; mIsTrusted = trusted; mControllerBinder = controllerBinder; @@ -629,11 +678,11 @@ public class MediaSession2 implements AutoCloseable { } /** - * @return connection hints sent from controller, or {@link Bundle#EMPTY} if none. + * @return connection hints sent from controller. */ @NonNull public Bundle getConnectionHints() { - return mConnectionHints == null ? Bundle.EMPTY : new Bundle(mConnectionHints); + return new Bundle(mConnectionHints); } /** diff --git a/media/apex/java/android/media/MediaSession2Service.java b/media/apex/java/android/media/MediaSession2Service.java index b8bf3842aae8..ee584e5eac30 100644 --- a/media/apex/java/android/media/MediaSession2Service.java +++ b/media/apex/java/android/media/MediaSession2Service.java @@ -378,12 +378,22 @@ public abstract class MediaSession2Service extends Service { callingPkg, pid == 0 ? connectionRequest.getInt(KEY_PID) : pid, uid); + + Bundle connectionHints = connectionRequest.getBundle(KEY_CONNECTION_HINTS); + if (connectionHints == null) { + Log.w(TAG, "connectionHints shouldn't be null."); + connectionHints = Bundle.EMPTY; + } else if (MediaSession2.hasCustomParcelable(connectionHints)) { + Log.w(TAG, "connectionHints contain custom parcelable. Ignoring."); + connectionHints = Bundle.EMPTY; + } + final ControllerInfo controllerInfo = new ControllerInfo( remoteUserInfo, service.getMediaSessionManager() .isTrustedForMediaControl(remoteUserInfo), caller, - connectionRequest.getBundle(KEY_CONNECTION_HINTS)); + connectionHints); if (DEBUG) { Log.d(TAG, "Handling incoming connection request from the" diff --git a/media/apex/java/android/media/Session2Token.java b/media/apex/java/android/media/Session2Token.java index d7cb9787cf08..6d499fa88815 100644 --- a/media/apex/java/android/media/Session2Token.java +++ b/media/apex/java/android/media/Session2Token.java @@ -118,11 +118,11 @@ public final class Session2Token implements Parcelable { mUid = uid; mType = TYPE_SESSION_SERVICE; mSessionLink = null; - mExtras = null; + mExtras = Bundle.EMPTY; } Session2Token(int uid, int type, String packageName, Session2Link sessionLink, - Bundle tokenExtras) { + @NonNull Bundle tokenExtras) { mUid = uid; mType = type; mPackageName = packageName; @@ -139,7 +139,16 @@ public final class Session2Token implements Parcelable { mServiceName = in.readString(); mSessionLink = in.readParcelable(null); mComponentName = ComponentName.unflattenFromString(in.readString()); - mExtras = in.readBundle(); + + Bundle extras = in.readBundle(); + if (extras == null) { + Log.w(TAG, "extras shouldn't be null."); + extras = Bundle.EMPTY; + } else if (MediaSession2.hasCustomParcelable(extras)) { + Log.w(TAG, "extras contain custom parcelable. Ignoring."); + extras = Bundle.EMPTY; + } + mExtras = extras; } @Override @@ -220,7 +229,7 @@ public final class Session2Token implements Parcelable { */ @NonNull public Bundle getExtras() { - return mExtras == null ? Bundle.EMPTY : mExtras; + return new Bundle(mExtras); } Session2Link getSessionLink() { diff --git a/media/java/android/media/AudioSystem.java b/media/java/android/media/AudioSystem.java index fde0e640d92c..53bc65d711b0 100644 --- a/media/java/android/media/AudioSystem.java +++ b/media/java/android/media/AudioSystem.java @@ -24,7 +24,6 @@ import android.content.Context; import android.content.pm.PackageManager; import android.media.audiofx.AudioEffect; import android.media.audiopolicy.AudioMix; -import android.os.Build; import android.util.Log; import java.util.ArrayList; @@ -981,6 +980,8 @@ public class AudioSystem public static native boolean getMasterMono(); /** @hide enables or disables the master mono mode. */ public static native int setMasterMono(boolean mono); + /** @hide enables or disables the RTT mode. */ + public static native int setRttEnabled(boolean enabled); /** @hide returns master balance value in range -1.f -> 1.f, where 0.f is dead center. */ @TestApi diff --git a/media/java/android/media/MediaCodec.java b/media/java/android/media/MediaCodec.java index 56e8e8579ec4..510ee442f852 100644 --- a/media/java/android/media/MediaCodec.java +++ b/media/java/android/media/MediaCodec.java @@ -644,6 +644,16 @@ import java.util.concurrent.locks.ReentrantLock; <p> Also since {@link android.os.Build.VERSION_CODES#M}, you can change the output Surface dynamically using {@link #setOutputSurface setOutputSurface}. + <p> + When rendering output to a Surface, the Surface may be configured to drop excessive frames (that + are not consumed by the Surface in a timely manner). Or it may be configured to not drop excessive + frames. In the latter mode if the Surface is not consuming output frames fast enough, it will + eventually block the decoder. Prior to {@link android.os.Build.VERSION_CODES#Q} the exact behavior + was undefined, with the exception that View surfaces (SuerfaceView or TextureView) always dropped + excessive frames. Since {@link android.os.Build.VERSION_CODES#Q} the default behavior is to drop + excessive frames. Applications can opt out of this behavior for non-View surfaces (such as + ImageReader or SurfaceTexture) by targeting SDK {@link android.os.Build.VERSION_CODES#Q} and + setting the key {@code "allow-frame-drop"} to {@code 0} in their configure format. <h4>Transformations When Rendering onto Surface</h4> diff --git a/media/java/android/media/session/MediaController.java b/media/java/android/media/session/MediaController.java index c1c7fcac0a8d..1fc4f7d59ca5 100644 --- a/media/java/android/media/session/MediaController.java +++ b/media/java/android/media/session/MediaController.java @@ -414,7 +414,7 @@ public final class MediaController { /** * Gets the additional session information which was set when the session was created. * - * @return The additional session information, or {@link Bundle#EMPTY} if not set. + * @return The additional session information, or an empty {@link Bundle} if not set. */ @NonNull public Bundle getSessionInfo() { @@ -430,6 +430,10 @@ public final class MediaController { } if (mSessionInfo == null) { + Log.w(TAG, "sessionInfo shouldn't be null."); + mSessionInfo = Bundle.EMPTY; + } else if (MediaSession.hasCustomParcelable(mSessionInfo)) { + Log.w(TAG, "sessionInfo contains custom parcelable. Ignoring."); mSessionInfo = Bundle.EMPTY; } return new Bundle(mSessionInfo); diff --git a/media/java/android/media/session/MediaSession.java b/media/java/android/media/session/MediaSession.java index c4085f876136..e11715ff7299 100644 --- a/media/java/android/media/session/MediaSession.java +++ b/media/java/android/media/session/MediaSession.java @@ -32,6 +32,7 @@ import android.media.Rating; import android.media.VolumeProvider; import android.media.session.MediaSessionManager.RemoteUserInfo; import android.net.Uri; +import android.os.BadParcelableException; import android.os.Bundle; import android.os.Handler; import android.os.Looper; @@ -168,6 +169,8 @@ public final class MediaSession { * @param sessionInfo A bundle for additional information about this session. * Controllers can get this information by calling * {@link MediaController#getSessionInfo()}. + * An {@link IllegalArgumentException} will be thrown if this contains + * any non-framework Parcelable objects. */ public MediaSession(@NonNull Context context, @NonNull String tag, @Nullable Bundle sessionInfo) { @@ -177,6 +180,11 @@ public final class MediaSession { if (TextUtils.isEmpty(tag)) { throw new IllegalArgumentException("tag cannot be null or empty"); } + if (hasCustomParcelable(sessionInfo)) { + throw new IllegalArgumentException("sessionInfo shouldn't contain any custom " + + "parcelables"); + } + mMaxBitmapSize = context.getResources().getDimensionPixelSize( com.android.internal.R.dimen.config_mediaMetadataBitmapMaxSize); mCbStub = new CallbackStub(this); @@ -600,6 +608,35 @@ public final class MediaSession { return false; } + /** + * Returns whether the given bundle includes non-framework Parcelables. + */ + static boolean hasCustomParcelable(@Nullable Bundle bundle) { + if (bundle == null) { + return false; + } + + // Try writing the bundle to parcel, and read it with framework classloader. + Parcel parcel = null; + try { + parcel = Parcel.obtain(); + parcel.writeBundle(bundle); + parcel.setDataPosition(0); + Bundle out = parcel.readBundle(null); + + // Calling Bundle#size() will trigger Bundle#unparcel(). + out.size(); + } catch (BadParcelableException e) { + Log.d(TAG, "Custom parcelable in bundle.", e); + return true; + } finally { + if (parcel != null) { + parcel.recycle(); + } + } + return false; + } + void dispatchPrepare(RemoteUserInfo caller) { postToCallback(caller, CallbackMessageHandler.MSG_PREPARE, null, null); } diff --git a/media/java/android/service/media/IMediaBrowserServiceCallbacks.aidl b/media/java/android/service/media/IMediaBrowserServiceCallbacks.aidl index 8238b8c4898d..7e3f2f8868fb 100644 --- a/media/java/android/service/media/IMediaBrowserServiceCallbacks.aidl +++ b/media/java/android/service/media/IMediaBrowserServiceCallbacks.aidl @@ -19,7 +19,9 @@ oneway interface IMediaBrowserServiceCallbacks { * the playback of the media app. * @param extra Extras returned by the media service. */ + @UnsupportedAppUsage void onConnect(String root, in MediaSession.Token session, in Bundle extras); + @UnsupportedAppUsage void onConnectFailed(); void onLoadChildren(String mediaId, in ParceledListSlice list); void onLoadChildrenWithOptions(String mediaId, in ParceledListSlice list, diff --git a/media/jni/Android.bp b/media/jni/Android.bp index 04545e8e7b1b..10f76b07c749 100644 --- a/media/jni/Android.bp +++ b/media/jni/Android.bp @@ -149,7 +149,6 @@ cc_library_shared { "libhidlbase", "libhidlmemory", "libhidltransport", - "libhwbinder_noltopgo", "libbinderthreadstate", // MediaPlayer2 implementation diff --git a/media/jni/android_media_MediaCodec.cpp b/media/jni/android_media_MediaCodec.cpp index 150b6f918685..8d420e2c5598 100644 --- a/media/jni/android_media_MediaCodec.cpp +++ b/media/jni/android_media_MediaCodec.cpp @@ -211,21 +211,22 @@ void JMediaCodec::registerSelf() { } void JMediaCodec::release() { - if (mCodec != NULL) { - mCodec->release(); - mCodec.clear(); - mInitStatus = NO_INIT; - } + std::call_once(mReleaseFlag, [this] { + if (mCodec != NULL) { + mCodec->release(); + mInitStatus = NO_INIT; + } - if (mLooper != NULL) { - mLooper->unregisterHandler(id()); - mLooper->stop(); - mLooper.clear(); - } + if (mLooper != NULL) { + mLooper->unregisterHandler(id()); + mLooper->stop(); + mLooper.clear(); + } + }); } JMediaCodec::~JMediaCodec() { - if (mCodec != NULL || mLooper != NULL) { + if (mLooper != NULL) { /* MediaCodec and looper should have been released explicitly already * in setMediaCodec() (see comments in setMediaCodec()). * diff --git a/media/jni/android_media_MediaCodec.h b/media/jni/android_media_MediaCodec.h index de08550fa3db..dfe30a3f5909 100644 --- a/media/jni/android_media_MediaCodec.h +++ b/media/jni/android_media_MediaCodec.h @@ -17,6 +17,8 @@ #ifndef _ANDROID_MEDIA_MEDIACODEC_H_ #define _ANDROID_MEDIA_MEDIACODEC_H_ +#include <mutex> + #include "jni.h" #include <media/MediaAnalyticsItem.h> @@ -156,6 +158,7 @@ private: sp<ALooper> mLooper; sp<MediaCodec> mCodec; AString mNameAtCreation; + std::once_flag mReleaseFlag; sp<AMessage> mCallbackNotification; sp<AMessage> mOnFrameRenderedNotification; diff --git a/packages/BackupRestoreConfirmation/res/values-fa/strings.xml b/packages/BackupRestoreConfirmation/res/values-fa/strings.xml index d8155a6bcdee..a8c9d9e1ab09 100644 --- a/packages/BackupRestoreConfirmation/res/values-fa/strings.xml +++ b/packages/BackupRestoreConfirmation/res/values-fa/strings.xml @@ -18,7 +18,7 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="backup_confirm_title" msgid="827563724209303345">"پشتیبانگیری کامل"</string> <string name="restore_confirm_title" msgid="5469365809567486602">"بازیابی کامل"</string> - <string name="backup_confirm_text" msgid="1878021282758896593">"درخواست پشتیبان گیری کامل از تمام دادهها به یک رایانه دسکتاپ متصل داده شده است. آیا میخواهید این عمل انجام شود؟\n\nاگر شما درخواست تهیهٔ نسخهٔ پشتیبان را ندادهاید، اجازه ادامه عملیات را ندهید."</string> + <string name="backup_confirm_text" msgid="1878021282758896593">"درخواست پشتیبان گیری کامل از تمام دادهها به یک رایانه دسکتاپ متصل داده شده است. آیا میخواهید این کار انجام شود؟\n\nاگر شما درخواست تهیهٔ نسخهٔ پشتیبان را ندادهاید، اجازه ادامه عملیات را ندهید."</string> <string name="allow_backup_button_label" msgid="4217228747769644068">"پشتیبانگیری از دادههای من"</string> <string name="deny_backup_button_label" msgid="6009119115581097708">"نسخهٔ پشتیبان تهیه نشود"</string> <string name="restore_confirm_text" msgid="7499866728030461776">"بازیابی کامل تمام دادهها از یک رایانه دسک تاپ متصل درخواست شده است. آیا میخواهید این اجازه را بدهید؟\n\nاگر خود شما درخواست بازیابی ندادهاید، اجازه ادامه این عملیات را ندهید. با این کار همه دادههایی که اکنون روی دستگاه است جایگزین میشود!"</string> @@ -31,9 +31,9 @@ <string name="backup_enc_password_optional" msgid="1350137345907579306">"اگر میخواهید تمام نسخه پشتیبانی داده را رمزدار کنید، یک گذرواژه در زیر وارد کنید:"</string> <string name="backup_enc_password_required" msgid="7889652203371654149">"چون دستگاهتان رمزگذاری شده است، باید نسخه پشتیبان خودتان را رمزگذاری کنید. لطفاً گذرواژهای را در زیر وارد کنید:"</string> <string name="restore_enc_password_text" msgid="6140898525580710823">"اگر داده بازیابی شده رمزگذاری شده است، لطفاً گذرواژه را در زیر وارد کنید:"</string> - <string name="toast_backup_started" msgid="550354281452756121">"شروع پشتیبانگیری..."</string> - <string name="toast_backup_ended" msgid="3818080769548726424">"پشتیبانگیری پایان یافت"</string> - <string name="toast_restore_started" msgid="7881679218971277385">"شروع بازیابی..."</string> + <string name="toast_backup_started" msgid="550354281452756121">"شروع پشتیبانگیری…"</string> + <string name="toast_backup_ended" msgid="3818080769548726424">"پشتیبانگیری تمام شد"</string> + <string name="toast_restore_started" msgid="7881679218971277385">"شروع بازیابی…"</string> <string name="toast_restore_ended" msgid="1764041639199696132">"بازیابی پایان یافت"</string> <string name="toast_timeout" msgid="5276598587087626877">"مهلت عملیات تمام شد"</string> </resources> diff --git a/packages/CarSystemUI/res/values/config.xml b/packages/CarSystemUI/res/values/config.xml index d946fbc9520a..467c4a41893d 100644 --- a/packages/CarSystemUI/res/values/config.xml +++ b/packages/CarSystemUI/res/values/config.xml @@ -29,6 +29,9 @@ <bool name="config_enableRightNavigationBar">false</bool> <bool name="config_enableBottomNavigationBar">true</bool> + <!-- Whether heads-up notifications should be shown when shade is open. --> + <bool name="config_enableHeadsUpNotificationWhenNotificationShadeOpen">true</bool> + <bool name="config_hideNavWhenKeyguardBouncerShown">true</bool> <bool name="config_enablePersistentDockedActivity">false</bool> <string name="config_persistentDockedActivityIntentUri" translatable="false"></string> diff --git a/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBar.java b/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBar.java index 8373761962ac..2874ce60bf16 100644 --- a/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBar.java +++ b/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBar.java @@ -63,6 +63,7 @@ import com.android.systemui.SystemUIFactory; import com.android.systemui.classifier.FalsingLog; import com.android.systemui.classifier.FalsingManagerFactory; import com.android.systemui.fragments.FragmentHostManager; +import com.android.systemui.keyguard.ScreenLifecycle; import com.android.systemui.plugins.qs.QS; import com.android.systemui.qs.car.CarQSFragment; import com.android.systemui.shared.system.ActivityManagerWrapper; @@ -127,6 +128,7 @@ public class CarStatusBar extends StatusBar implements private SwitchToGuestTimer mSwitchToGuestTimer; private NotificationDataManager mNotificationDataManager; private NotificationClickHandlerFactory mNotificationClickHandlerFactory; + private ScreenLifecycle mScreenLifecycle; // The container for the notifications. private CarNotificationView mNotificationView; @@ -163,6 +165,8 @@ public class CarStatusBar extends StatusBar implements private boolean mIsNotificationCardSwiping; // If notification shade is being swiped vertically to close. private boolean mIsSwipingVerticallyToClose; + // Whether heads-up notifications should be shown when shade is open. + private boolean mEnableHeadsUpNotificationWhenNotificationShadeOpen; private final CarPowerStateListener mCarPowerStateListener = (int state) -> { @@ -230,6 +234,9 @@ public class CarStatusBar extends StatusBar implements mPowerManagerHelper.connectToCarService(); mSwitchToGuestTimer = new SwitchToGuestTimer(mContext); + + mScreenLifecycle = Dependency.get(ScreenLifecycle.class); + mScreenLifecycle.addObserver(mScreenObserver); } /** @@ -315,7 +322,6 @@ public class CarStatusBar extends StatusBar implements public void showKeyguard() { super.showKeyguard(); updateNavBarForKeyguardContent(); - dismissKeyguardWhenUserSwitcherNotDisplayed(); } /** @@ -340,7 +346,7 @@ public class CarStatusBar extends StatusBar implements CarSystemUIFactory factory = SystemUIFactory.getInstance(); mCarFacetButtonController = factory.getCarDependencyComponent() - .getCarFacetButtonController(); + .getCarFacetButtonController(); mNotificationPanelBackground = getDefaultWallpaper(); mScrimController.setScrimBehindDrawable(mNotificationPanelBackground); @@ -455,6 +461,8 @@ public class CarStatusBar extends StatusBar implements } }); + mEnableHeadsUpNotificationWhenNotificationShadeOpen = mContext.getResources().getBoolean( + R.bool.config_enableHeadsUpNotificationWhenNotificationShadeOpen); CarHeadsUpNotificationManager carHeadsUpNotificationManager = new CarSystemUIHeadsUpNotificationManager(mContext, mNotificationClickHandlerFactory, mNotificationDataManager); @@ -917,6 +925,16 @@ public class CarStatusBar extends StatusBar implements Log.e(TAG, "Getting StackInfo from activity manager failed", e); } } + + @Override + public void onTaskDisplayChanged(int taskId, int newDisplayId) { + try { + mCarFacetButtonController.taskChanged( + ActivityTaskManager.getService().getAllStackInfos()); + } catch (Exception e) { + Log.e(TAG, "Getting StackInfo from activity manager failed", e); + } + } } private void onDrivingStateChanged(CarDrivingStateEvent notUsed) { @@ -978,6 +996,13 @@ public class CarStatusBar extends StatusBar implements } } + final ScreenLifecycle.Observer mScreenObserver = new ScreenLifecycle.Observer() { + @Override + public void onScreenTurnedOn() { + dismissKeyguardWhenUserSwitcherNotDisplayed(); + } + }; + // We automatically dismiss keyguard unless user switcher is being shown on the keyguard. private void dismissKeyguardWhenUserSwitcherNotDisplayed() { if (mFullscreenUserSwitcher == null) { @@ -1000,6 +1025,10 @@ public class CarStatusBar extends StatusBar implements * Dismisses the keyguard and shows bouncer if authentication is necessary. */ public void dismissKeyguard() { + // Don't dismiss keyguard when the screen is off. + if (mScreenLifecycle.getScreenState() == ScreenLifecycle.SCREEN_OFF) { + return; + } executeRunnableDismissingKeyguard(null/* runnable */, null /* cancelAction */, true /* dismissShade */, true /* afterKeyguardGone */, true /* deferred */); } @@ -1258,11 +1287,18 @@ public class CarStatusBar extends StatusBar implements } @Override + protected void setInternalInsetsInfo(ViewTreeObserver.InternalInsetsInfo info, + HeadsUpEntry currentNotification, boolean panelExpanded) { + super.setInternalInsetsInfo(info, currentNotification, mPanelExpanded); + } + + @Override protected void setHeadsUpVisible() { // if the Notifications panel is showing don't show the Heads up - if (mPanelExpanded) { + if (!mEnableHeadsUpNotificationWhenNotificationShadeOpen && mPanelExpanded) { return; } + super.setHeadsUpVisible(); if (mHeadsUpPanel.getVisibility() == View.VISIBLE) { mStatusBarWindowController.setHeadsUpShowing(true); diff --git a/packages/InputDevices/res/values-hy/strings.xml b/packages/InputDevices/res/values-hy/strings.xml index c7523e391807..64ddf7ac1b20 100644 --- a/packages/InputDevices/res/values-hy/strings.xml +++ b/packages/InputDevices/res/values-hy/strings.xml @@ -40,7 +40,7 @@ <string name="keyboard_layout_hebrew" msgid="7241473985890173812">"Եբրայերեն"</string> <string name="keyboard_layout_lithuanian" msgid="6943110873053106534">"Լիտվերեն"</string> <string name="keyboard_layout_spanish_latin" msgid="5690539836069535697">"Իսպաներեն (Լատինական)"</string> - <string name="keyboard_layout_latvian" msgid="4405417142306250595">"լատիշերեն"</string> + <string name="keyboard_layout_latvian" msgid="4405417142306250595">"լատվիերեն"</string> <string name="keyboard_layout_persian" msgid="3920643161015888527">"պարսկերեն"</string> <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"ադրբեջաներեն"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"լեհերեն"</string> diff --git a/packages/PackageInstaller/res/values-mr/strings.xml b/packages/PackageInstaller/res/values-mr/strings.xml index 200c99381bcd..70ab75ff2a0a 100644 --- a/packages/PackageInstaller/res/values-mr/strings.xml +++ b/packages/PackageInstaller/res/values-mr/strings.xml @@ -37,7 +37,7 @@ <string name="install_failed_msg" product="tv" msgid="1920009940048975221">"<xliff:g id="APP_NAME">%1$s</xliff:g> तुमच्या टीव्हीवर इंस्टॉल केले जाऊ शकत नाही."</string> <string name="install_failed_msg" product="default" msgid="6484461562647915707">"<xliff:g id="APP_NAME">%1$s</xliff:g> तुमच्या फोनवर इंस्टॉल केले जाऊ शकत नाही."</string> <string name="launch" msgid="3952550563999890101">"उघडा"</string> - <string name="unknown_apps_admin_dlg_text" msgid="4456572224020176095">"अज्ञात स्रोतांकडून मिळवलेल्या अॅप्स इंस्टॉलेशनला तुमचा प्रशासक अनुमती देत नाही"</string> + <string name="unknown_apps_admin_dlg_text" msgid="4456572224020176095">"अज्ञात स्रोतांकडून मिळवलेल्या अॅप्स इंस्टॉलेशनला तुमचा प्रशासक अनुमती देत नाही"</string> <string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"या वापरकर्त्याद्वारे अज्ञात अॅप्स इंस्टॉल केली जाऊ शकत नाहीत"</string> <string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"या वापरकर्त्याला अॅप्स इंस्टॉल करण्याची अनुमती नाही"</string> <string name="ok" msgid="7871959885003339302">"ओके"</string> @@ -67,8 +67,8 @@ <string name="uninstall_done_app" msgid="4588850984473605768">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> अनइंस्टॉल केले"</string> <string name="uninstall_failed" msgid="1847750968168364332">"अनइंस्टॉल करता आले नाही."</string> <string name="uninstall_failed_app" msgid="5506028705017601412">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> अनइंस्टॉल करता आले नाही."</string> - <string name="uninstall_failed_device_policy_manager" msgid="785293813665540305">"अॅक्टिव्ह डिव्हाइस प्रशासक अॅप अनइंस्टॉल करू शकत नाही"</string> - <string name="uninstall_failed_device_policy_manager_of_user" msgid="4813104025494168064">"<xliff:g id="USERNAME">%1$s</xliff:g> साठी अॅक्टिव्ह डिव्हाइस प्रशासक अॅप अनइंस्टॉल करू शकत नाही"</string> + <string name="uninstall_failed_device_policy_manager" msgid="785293813665540305">"अॅक्टिव्ह डिव्हाइस प्रशासक अॅप अनइंस्टॉल करू शकत नाही"</string> + <string name="uninstall_failed_device_policy_manager_of_user" msgid="4813104025494168064">"<xliff:g id="USERNAME">%1$s</xliff:g> साठी अॅक्टिव्ह डिव्हाइस प्रशासक अॅप अनइंस्टॉल करू शकत नाही"</string> <string name="uninstall_all_blocked_profile_owner" msgid="2009393666026751501">"हे अॅप काही वापरकर्ते किंवा प्रोफाइलसाठी आवश्यक आहे आणि इतरांसाठी अनइंस्टॉल करण्यात आले"</string> <string name="uninstall_blocked_profile_owner" msgid="6373897407002404848">"तुमच्या प्रोफाइलसाठी हे अॅप आवश्यक आहे आणि अनइंस्टॉल केले जाऊ शकत नाही."</string> <string name="uninstall_blocked_device_owner" msgid="6724602931761073901">"तुमच्या डिव्हाइस प्रशासकास हे अॅप आवश्यक आहे आणि ते अनइंस्टॉल केले जाऊ शकत नाही."</string> diff --git a/packages/PackageInstaller/res/values-th/strings.xml b/packages/PackageInstaller/res/values-th/strings.xml index 1f6e10a2e8c8..14c9d5f5729d 100644 --- a/packages/PackageInstaller/res/values-th/strings.xml +++ b/packages/PackageInstaller/res/values-th/strings.xml @@ -72,7 +72,7 @@ <string name="uninstall_all_blocked_profile_owner" msgid="2009393666026751501">"แอปนี้จำเป็นสำหรับผู้ใช้หรือโปรไฟล์บางส่วน และถอนการติดตั้งไปแล้วสำหรับส่วนอื่น"</string> <string name="uninstall_blocked_profile_owner" msgid="6373897407002404848">"แอปนี้จำเป็นสำหรับโปรไฟล์ของคุณและถอนการติดตั้งไม่ได้"</string> <string name="uninstall_blocked_device_owner" msgid="6724602931761073901">"ผู้ดูแลระบบอุปกรณ์กำหนดให้ใช้แอปนี้และถอนการติดตั้งไม่ได้"</string> - <string name="manage_device_administrators" msgid="3092696419363842816">"จัดการแอปผู้ดูแลระบบอุปกรณ์"</string> + <string name="manage_device_administrators" msgid="3092696419363842816">"จัดการแอปดูแลอุปกรณ์"</string> <string name="manage_users" msgid="1243995386982560813">"จัดการผู้ใช้"</string> <string name="uninstall_failed_msg" msgid="2176744834786696012">"ถอนการติดตั้ง <xliff:g id="APP_NAME">%1$s</xliff:g> ไม่ได้"</string> <string name="Parse_error_dlg_text" msgid="1661404001063076789">"พบปัญหาในการแยกวิเคราะห์แพ็กเกจ"</string> diff --git a/packages/PackageInstaller/src/com/android/packageinstaller/InstallInstalling.java b/packages/PackageInstaller/src/com/android/packageinstaller/InstallInstalling.java index 93f24f7881a6..4f85eea13dca 100755 --- a/packages/PackageInstaller/src/com/android/packageinstaller/InstallInstalling.java +++ b/packages/PackageInstaller/src/com/android/packageinstaller/InstallInstalling.java @@ -130,18 +130,15 @@ public class InstallInstalling extends AlertActivity { } else { PackageInstaller.SessionParams params = new PackageInstaller.SessionParams( PackageInstaller.SessionParams.MODE_FULL_INSTALL); - params.installFlags = PackageManager.INSTALL_FULL_APP; - params.referrerUri = getIntent().getParcelableExtra(Intent.EXTRA_REFERRER); - params.originatingUri = getIntent() - .getParcelableExtra(Intent.EXTRA_ORIGINATING_URI); - params.originatingUid = getIntent().getIntExtra(Intent.EXTRA_ORIGINATING_UID, - UID_UNKNOWN); - params.installerPackageName = - getIntent().getStringExtra(Intent.EXTRA_INSTALLER_PACKAGE_NAME); - params.installReason = PackageManager.INSTALL_REASON_USER; - - // Whitelist all restricted permissions. - params.setWhitelistedRestrictedPermissions(null /*permissions*/); + params.setInstallAsInstantApp(false); + params.setReferrerUri(getIntent().getParcelableExtra(Intent.EXTRA_REFERRER)); + params.setOriginatingUri(getIntent() + .getParcelableExtra(Intent.EXTRA_ORIGINATING_URI)); + params.setOriginatingUid(getIntent().getIntExtra(Intent.EXTRA_ORIGINATING_UID, + UID_UNKNOWN)); + params.setInstallerPackageName(getIntent().getStringExtra( + Intent.EXTRA_INSTALLER_PACKAGE_NAME)); + params.setInstallReason(PackageManager.INSTALL_REASON_USER); File file = new File(mPackageURI.getPath()); try { diff --git a/packages/SettingsLib/SearchWidget/res/values-sw/strings.xml b/packages/SettingsLib/SearchWidget/res/values-sw/strings.xml index 297ecdb8b32a..199845bc51da 100644 --- a/packages/SettingsLib/SearchWidget/res/values-sw/strings.xml +++ b/packages/SettingsLib/SearchWidget/res/values-sw/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="search_menu" msgid="1604061903696928905">"Tafuta mipangilio"</string> + <string name="search_menu" msgid="1604061903696928905">"Tafuta katika mipangilio"</string> </resources> diff --git a/packages/SettingsLib/res/values-bn/strings.xml b/packages/SettingsLib/res/values-bn/strings.xml index bdbde46fd95a..13890e029274 100644 --- a/packages/SettingsLib/res/values-bn/strings.xml +++ b/packages/SettingsLib/res/values-bn/strings.xml @@ -219,7 +219,7 @@ <string name="mock_location_app_set" msgid="8966420655295102685">"অনুরূপ লোকেশন অ্যাপ্লিকেশান: <xliff:g id="APP_NAME">%1$s</xliff:g>"</string> <string name="debug_networking_category" msgid="7044075693643009662">"নেটওয়ার্কিং"</string> <string name="wifi_display_certification" msgid="8611569543791307533">"ওয়্যারলেস ডিসপ্লে সার্টিফিকেশন"</string> - <string name="wifi_verbose_logging" msgid="4203729756047242344">"ওয়াই-ফাই ভারবোস লগিং সক্ষম করুন"</string> + <string name="wifi_verbose_logging" msgid="4203729756047242344">"ওয়াই-ফাই ভারবোস লগিং চালু করুন"</string> <string name="wifi_scan_throttling" msgid="160014287416479843">"ওয়াই-ফাই স্ক্যান থ্রোটলিং"</string> <string name="mobile_data_always_on" msgid="8774857027458200434">"মোবাইল ডেটা সব সময় সক্রিয় থাক"</string> <string name="tethering_hardware_offload" msgid="7470077827090325814">"টিথারিং হার্ডওয়্যার অ্যাক্সিলারেশন"</string> @@ -262,7 +262,7 @@ <string name="allow_mock_location_summary" msgid="317615105156345626">"মক অবস্থানগুলি মঞ্জুর করুন"</string> <string name="debug_view_attributes" msgid="6485448367803310384">"অ্যাট্রিবিউট ইন্সপেকশন দেখা চালু করুন"</string> <string name="mobile_data_always_on_summary" msgid="8149773901431697910">"ওয়াই-ফাই সক্রিয় থাকার সময়েও (দ্রুত নেটওয়ার্কে পাল্টানোর জন্য) সর্বদা মোবাইল ডেটা সক্রিয় রাখুন।"</string> - <string name="tethering_hardware_offload_summary" msgid="7726082075333346982">"টিথারিং হার্ডওয়্যার অ্যাক্সিলারেশন উপলব্ধ থাকলে ব্যবহার করুন"</string> + <string name="tethering_hardware_offload_summary" msgid="7726082075333346982">"টিথারিং হার্ডওয়্যার অ্যাক্সিলারেশন উপলভ্য থাকলে ব্যবহার করুন"</string> <string name="adb_warning_title" msgid="6234463310896563253">"USB ডিবাগিং মঞ্জুর করবেন?"</string> <string name="adb_warning_message" msgid="7316799925425402244">"USB ডিবাগিং কেবলমাত্র বিকাশ করার উদ্দেশ্যে। আপনার কম্পিউটার এবং আপনার ডিভাইসের মধ্যে ডেটা অনুলিপি করতে এটি ব্যবহার করুন, বিজ্ঞপ্তি ছাড়া আপনার ডিভাইসে অ্যাপ্লিকেশানগুলি ইনস্টল করুন এবং ডেটা লগ পড়ুন।"</string> <string name="adb_keys_warning_message" msgid="5659849457135841625">"আপনি আগে যে সব কম্পিউটার USB ডিবাগিং এর অ্যাক্সেসের অনুমতি দিয়েছিলেন তা প্রত্যাহার করবেন?"</string> diff --git a/packages/SettingsLib/res/values-ca/strings.xml b/packages/SettingsLib/res/values-ca/strings.xml index d464256f8f50..afdb105ca560 100644 --- a/packages/SettingsLib/res/values-ca/strings.xml +++ b/packages/SettingsLib/res/values-ca/strings.xml @@ -220,7 +220,7 @@ <string name="debug_networking_category" msgid="7044075693643009662">"Xarxes"</string> <string name="wifi_display_certification" msgid="8611569543791307533">"Certificació de pantalla sense fil"</string> <string name="wifi_verbose_logging" msgid="4203729756047242344">"Activa el registre Wi‑Fi detallat"</string> - <string name="wifi_scan_throttling" msgid="160014287416479843">"Regulació de la cerca de xarxes Wi‑Fi"</string> + <string name="wifi_scan_throttling" msgid="160014287416479843">"Limitació de la cerca de xarxes Wi‑Fi"</string> <string name="mobile_data_always_on" msgid="8774857027458200434">"Dades mòbils sempre actives"</string> <string name="tethering_hardware_offload" msgid="7470077827090325814">"Acceleració per maquinari per a compartició de xarxa"</string> <string name="bluetooth_show_devices_without_names" msgid="4708446092962060176">"Mostra els dispositius Bluetooth sense el nom"</string> diff --git a/packages/SettingsLib/res/values-de/strings.xml b/packages/SettingsLib/res/values-de/strings.xml index 0347f2d5a3a0..d8da638fcd2b 100644 --- a/packages/SettingsLib/res/values-de/strings.xml +++ b/packages/SettingsLib/res/values-de/strings.xml @@ -246,7 +246,7 @@ <string name="private_dns_mode_provider_hostname_hint" msgid="2487492386970928143">"Hostname des DNS-Anbieters eingeben"</string> <string name="private_dns_mode_provider_failure" msgid="231837290365031223">"Verbindung nicht möglich"</string> <string name="wifi_display_certification_summary" msgid="1155182309166746973">"Optionen zur Zertifizierung für kabellose Übertragung anzeigen"</string> - <string name="wifi_verbose_logging_summary" msgid="6615071616111731958">"WLAN-Protokollierungsebene erhöhen, in WiFi Picker pro SSID RSSI anzeigen"</string> + <string name="wifi_verbose_logging_summary" msgid="6615071616111731958">"WLAN-Protokollierungsebene erhöhen, pro SSID RSSI in WiFi Picker anzeigen"</string> <string name="wifi_scan_throttling_summary" msgid="4461922728822495763">"Verringert den Akkuverbrauch und verbessert die Netzwerkleistung"</string> <string name="wifi_metered_label" msgid="4514924227256839725">"Kostenpflichtig"</string> <string name="wifi_unmetered_label" msgid="6124098729457992931">"Kostenlos"</string> @@ -381,12 +381,12 @@ <string name="power_remaining_settings_home_page" msgid="4845022416859002011">"<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="6123167166221295462">"Noch etwa <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string> <string name="power_discharging_duration" msgid="8848256785736335185">"Noch etwa <xliff:g id="TIME_REMAINING">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> - <string name="power_remaining_duration_only_enhanced" msgid="4189311599812296592">"Noch etwa <xliff:g id="TIME_REMAINING">%1$s</xliff:g>, basierend auf deiner Nutzung"</string> - <string name="power_discharging_duration_enhanced" msgid="1992003260664804080">"Noch etwa <xliff:g id="TIME_REMAINING">%1$s</xliff:g>, basierend auf deiner Nutzung (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> + <string name="power_remaining_duration_only_enhanced" msgid="4189311599812296592">"Bei deinem Nutzungsmuster hast du noch ca. <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string> + <string name="power_discharging_duration_enhanced" msgid="1992003260664804080">"Bei deinem Nutzungsmuster hast du noch ca. <xliff:g id="TIME_REMAINING">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <!-- no translation found for power_remaining_duration_only_short (9183070574408359726) --> <skip /> - <string name="power_discharge_by_enhanced" msgid="2095821536747992464">"Sollte basierend auf deiner Nutzung etwa bis <xliff:g id="TIME">%1$s</xliff:g> reichen (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> - <string name="power_discharge_by_only_enhanced" msgid="2175151772952365149">"Sollte basierend auf deiner Nutzung etwa bis <xliff:g id="TIME">%1$s</xliff:g> reichen"</string> + <string name="power_discharge_by_enhanced" msgid="2095821536747992464">"Bei deinem Nutzungsmuster dürfte der Akku bis ca. <xliff:g id="TIME">%1$s</xliff:g> reichen (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> + <string name="power_discharge_by_only_enhanced" msgid="2175151772952365149">"Bei deinem Nutzungsmuster dürfte der Akku bis ca. <xliff:g id="TIME">%1$s</xliff:g> reichen"</string> <string name="power_discharge_by" msgid="6453537733650125582">"Sollte etwa bis <xliff:g id="TIME">%1$s</xliff:g> reichen (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_discharge_by_only" msgid="107616694963545745">"Sollte etwa bis <xliff:g id="TIME">%1$s</xliff:g> reichen"</string> <string name="power_discharge_by_only_short" msgid="1372817269546888804">"Bis <xliff:g id="TIME">%1$s</xliff:g>"</string> diff --git a/packages/SettingsLib/res/values-es/arrays.xml b/packages/SettingsLib/res/values-es/arrays.xml index 5e502972c3a3..63f6c3e3ea98 100644 --- a/packages/SettingsLib/res/values-es/arrays.xml +++ b/packages/SettingsLib/res/values-es/arrays.xml @@ -43,7 +43,7 @@ <item msgid="8937994881315223448">"Conectado a <xliff:g id="NETWORK_NAME">%1$s</xliff:g>"</item> <item msgid="1330262655415760617">"Suspendida"</item> <item msgid="7698638434317271902">"Desconectando de <xliff:g id="NETWORK_NAME">%1$s</xliff:g>..."</item> - <item msgid="197508606402264311">"Desconectada"</item> + <item msgid="197508606402264311">"Desconectado"</item> <item msgid="8578370891960825148">"Con error"</item> <item msgid="5660739516542454527">"Bloqueada"</item> <item msgid="1805837518286731242">"Inhabilitando conexión inestable temporalmente..."</item> diff --git a/packages/SettingsLib/res/values-es/strings.xml b/packages/SettingsLib/res/values-es/strings.xml index e1277d862122..8baf7a21c1ae 100644 --- a/packages/SettingsLib/res/values-es/strings.xml +++ b/packages/SettingsLib/res/values-es/strings.xml @@ -23,7 +23,7 @@ <string name="wifi_fail_to_scan" msgid="1265540342578081461">"No se puede buscar redes."</string> <string name="wifi_security_none" msgid="7985461072596594400">"Ninguna"</string> <string name="wifi_remembered" msgid="4955746899347821096">"Guardado"</string> - <string name="wifi_disconnected" msgid="8085419869003922556">"Desconectada"</string> + <string name="wifi_disconnected" msgid="8085419869003922556">"Desconectado"</string> <string name="wifi_disabled_generic" msgid="4259794910584943386">"Inhabilitado"</string> <string name="wifi_disabled_network_failure" msgid="2364951338436007124">"Error de configuración de IP"</string> <string name="wifi_disabled_by_recommendation_provider" msgid="5168315140978066096">"No conectado debido a la baja calidad de la red"</string> diff --git a/packages/SettingsLib/res/values-eu/strings.xml b/packages/SettingsLib/res/values-eu/strings.xml index d2e3a3868a5f..fd3936d39ed3 100644 --- a/packages/SettingsLib/res/values-eu/strings.xml +++ b/packages/SettingsLib/res/values-eu/strings.xml @@ -246,7 +246,7 @@ <string name="private_dns_mode_provider_hostname_hint" msgid="2487492386970928143">"Idatzi DNS hornitzailearen ostalari-izena"</string> <string name="private_dns_mode_provider_failure" msgid="231837290365031223">"Ezin izan da konektatu"</string> <string name="wifi_display_certification_summary" msgid="1155182309166746973">"Erakutsi hari gabe bistaratzeko ziurtagiriaren aukerak"</string> - <string name="wifi_verbose_logging_summary" msgid="6615071616111731958">"Erakutsi datu gehiago wifi-sareetan saioa hastean. Erakutsi sarearen identifikatzailea eta seinalearen indarra wifi-sareen hautagailuan."</string> + <string name="wifi_verbose_logging_summary" msgid="6615071616111731958">"Erakutsi datu gehiago wifi-sareetan saioa hastean. Erakutsi sarearen identifikatzailea eta seinalearen indarra wifi-sareen hautatzailean."</string> <string name="wifi_scan_throttling_summary" msgid="4461922728822495763">"Bateria gutxiago kontsumituko da, eta sarearen errendimendua hobetuko."</string> <string name="wifi_metered_label" msgid="4514924227256839725">"Sare neurtua"</string> <string name="wifi_unmetered_label" msgid="6124098729457992931">"Neurtu gabeko sarea"</string> @@ -261,7 +261,7 @@ <string name="allow_mock_location" msgid="2787962564578664888">"Onartu kokapen faltsuak"</string> <string name="allow_mock_location_summary" msgid="317615105156345626">"Onartu kokapen faltsuak"</string> <string name="debug_view_attributes" msgid="6485448367803310384">"Gaitu ikuspegiaren atributuak ikuskatzeko aukera"</string> - <string name="mobile_data_always_on_summary" msgid="8149773901431697910">"Mantendu mugikorreko datuak beti aktibo, baita wifi-konexioa aktibo dagoenean ere (sarez bizkor aldatu ahal izateko)"</string> + <string name="mobile_data_always_on_summary" msgid="8149773901431697910">"Mantendu datu-konexioa beti aktibo, baita wifi-konexioa aktibo dagoenean ere (sare batetik bestera bizkor aldatu ahal izateko)."</string> <string name="tethering_hardware_offload_summary" msgid="7726082075333346982">"Erabilgarri badago, erabili konexioa partekatzeko hardwarearen azelerazioa"</string> <string name="adb_warning_title" msgid="6234463310896563253">"USB arazketa onartu?"</string> <string name="adb_warning_message" msgid="7316799925425402244">"USB arazketa garapen-xedeetarako soilik dago diseinatuta. Erabil ezazu ordenagailuaren eta gailuaren artean datuak kopiatzeko, aplikazioak gailuan jakinarazi gabe instalatzeko eta erregistro-datuak irakurtzeko."</string> @@ -462,7 +462,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"data: <xliff:g id="WHEN">%1$s</xliff:g>"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"Iraupena"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Galdetu beti"</string> - <string name="zen_mode_forever" msgid="2704305038191592967">"Desaktibatu arte"</string> + <string name="zen_mode_forever" msgid="2704305038191592967">"Zuk desaktibatu arte"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"Oraintxe"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Gailu hau"</string> </resources> diff --git a/packages/SettingsLib/res/values-fa/strings.xml b/packages/SettingsLib/res/values-fa/strings.xml index 6632752c629c..352c27683834 100644 --- a/packages/SettingsLib/res/values-fa/strings.xml +++ b/packages/SettingsLib/res/values-fa/strings.xml @@ -261,7 +261,7 @@ <string name="allow_mock_location" msgid="2787962564578664888">"مکانهای کاذب مجاز هستند"</string> <string name="allow_mock_location_summary" msgid="317615105156345626">"مکانهای کاذب مجاز هستند"</string> <string name="debug_view_attributes" msgid="6485448367803310384">"فعال کردن نمایش بازبینی ویژگی"</string> - <string name="mobile_data_always_on_summary" msgid="8149773901431697910">"داده سلولی همیشه فعال نگه داشته میشود، حتی وقتی Wi-Fi فعال است (برای جابهجایی سریع شبکه)."</string> + <string name="mobile_data_always_on_summary" msgid="8149773901431697910">"داده تلفن همراه همیشه فعال نگه داشته میشود، حتی وقتی Wi-Fi فعال است (برای جابهجایی سریع شبکه)."</string> <string name="tethering_hardware_offload_summary" msgid="7726082075333346982">"استفاده از شتاب سختافزاری اشتراکگذاری اینترنت درصورت دردسترس بودن"</string> <string name="adb_warning_title" msgid="6234463310896563253">"اشکالزدایی USB انجام شود؟"</string> <string name="adb_warning_message" msgid="7316799925425402244">"اشکالزدایی USB فقط برای اهداف برنامهنویسی در نظر گرفته شده است. از آن برای رونوشتبرداری داده بین رایانه و دستگاهتان، نصب برنامهها در دستگاهتان بدون اعلان و خواندن دادههای گزارش استفاده کنید."</string> diff --git a/packages/SettingsLib/res/values-fr/strings.xml b/packages/SettingsLib/res/values-fr/strings.xml index 3aa8db984c3d..cf4ee1302872 100644 --- a/packages/SettingsLib/res/values-fr/strings.xml +++ b/packages/SettingsLib/res/values-fr/strings.xml @@ -146,7 +146,7 @@ <string name="tether_settings_title_bluetooth" msgid="355855408317564420">"Partage connexion Bluetooth"</string> <string name="tether_settings_title_usb_bluetooth" msgid="5355828977109785001">"Partage de connexion"</string> <string name="tether_settings_title_all" msgid="8356136101061143841">"Partage de connexion"</string> - <string name="managed_user_title" msgid="8109605045406748842">"Toutes applis profession."</string> + <string name="managed_user_title" msgid="8109605045406748842">"Toutes les applis professionnelles"</string> <string name="user_guest" msgid="8475274842845401871">"Invité"</string> <string name="unknown" msgid="1592123443519355854">"Inconnu"</string> <string name="running_process_item_user_label" msgid="3129887865552025943">"Utilisateur : <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> @@ -243,7 +243,7 @@ <string name="private_dns_mode_off" msgid="8236575187318721684">"Désactivé"</string> <string name="private_dns_mode_opportunistic" msgid="8314986739896927399">"Automatique"</string> <string name="private_dns_mode_provider" msgid="8354935160639360804">"Nom d\'hôte du fournisseur DNS privé"</string> - <string name="private_dns_mode_provider_hostname_hint" msgid="2487492386970928143">"Saisissez le nom d\'hôte du fournisseur DNS"</string> + <string name="private_dns_mode_provider_hostname_hint" msgid="2487492386970928143">"Indiquez le nom d\'hôte du fournisseur DNS"</string> <string name="private_dns_mode_provider_failure" msgid="231837290365031223">"Impossible de se connecter"</string> <string name="wifi_display_certification_summary" msgid="1155182309166746973">"Afficher les options pour la certification de l\'affichage sans fil"</string> <string name="wifi_verbose_logging_summary" msgid="6615071616111731958">"Détailler les infos Wi-Fi, afficher par RSSI de SSID dans l\'outil de sélection Wi-Fi"</string> @@ -385,8 +385,8 @@ <string name="power_discharging_duration_enhanced" msgid="1992003260664804080">"Temps restant en fonction de votre utilisation (<xliff:g id="LEVEL">%2$s</xliff:g>) : environ <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string> <!-- no translation found for power_remaining_duration_only_short (9183070574408359726) --> <skip /> - <string name="power_discharge_by_enhanced" msgid="2095821536747992464">"Devrait durer jusqu\'à environ <xliff:g id="TIME">%1$s</xliff:g> en fonction de votre utilisation (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> - <string name="power_discharge_by_only_enhanced" msgid="2175151772952365149">"Devrait durer jusqu\'à environ <xliff:g id="TIME">%1$s</xliff:g> en fonction de votre utilisation"</string> + <string name="power_discharge_by_enhanced" msgid="2095821536747992464">"Devrait durer jusqu\'à environ <xliff:g id="TIME">%1$s</xliff:g> selon utilisation (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> + <string name="power_discharge_by_only_enhanced" msgid="2175151772952365149">"Devrait durer jusqu\'à environ <xliff:g id="TIME">%1$s</xliff:g> selon utilisation"</string> <string name="power_discharge_by" msgid="6453537733650125582">"Devrait durer jusqu\'à environ <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_discharge_by_only" msgid="107616694963545745">"Devrait durer jusqu\'à environ <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_discharge_by_only_short" msgid="1372817269546888804">"Jusqu\'à <xliff:g id="TIME">%1$s</xliff:g>"</string> diff --git a/packages/SettingsLib/res/values-gl/strings.xml b/packages/SettingsLib/res/values-gl/strings.xml index 4bd1c785080c..b998a74700b5 100644 --- a/packages/SettingsLib/res/values-gl/strings.xml +++ b/packages/SettingsLib/res/values-gl/strings.xml @@ -402,8 +402,8 @@ <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7466484148515796216">"É posible que a tableta se apague en breve (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="603933521600231649">"É posible que o dispositivo se apague en breve (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_charging" msgid="1779532561355864267">"<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="1421102457410268886">"Tempo que queda ata cargar de todo: <xliff:g id="TIME">%1$s</xliff:g>"</string> - <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> ata completar a carga"</string> + <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"Tempo que queda para completar a carga: <xliff:g id="TIME">%1$s</xliff:g>"</string> + <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> para completar a carga"</string> <string name="battery_info_status_unknown" msgid="196130600938058547">"Descoñecido"</string> <string name="battery_info_status_charging" msgid="1705179948350365604">"Cargando"</string> <string name="battery_info_status_charging_lower" msgid="8689770213898117994">"cargando"</string> diff --git a/packages/SettingsLib/res/values-hi/strings.xml b/packages/SettingsLib/res/values-hi/strings.xml index 8c6ff8e51f88..5d512a84ef99 100644 --- a/packages/SettingsLib/res/values-hi/strings.xml +++ b/packages/SettingsLib/res/values-hi/strings.xml @@ -37,7 +37,7 @@ <string name="wifi_no_internet" msgid="4663834955626848401">"इंटरनेट नहीं है"</string> <string name="saved_network" msgid="4352716707126620811">"<xliff:g id="NAME">%1$s</xliff:g> के द्वारा सहेजा गया"</string> <string name="connected_via_network_scorer" msgid="5713793306870815341">"%1$s के ज़रिए ऑटोमैटिक रूप से कनेक्ट है"</string> - <string name="connected_via_network_scorer_default" msgid="7867260222020343104">"नेटवर्क रेटिंग प्रदाता के ज़रिए अपने आप कनेक्ट है"</string> + <string name="connected_via_network_scorer_default" msgid="7867260222020343104">"नेटवर्क रेटिंग कंपनी के ज़रिए अपने आप कनेक्ट है"</string> <string name="connected_via_passpoint" msgid="2826205693803088747">"%1$s के द्वारा उपलब्ध"</string> <string name="connected_via_app" msgid="5571999941988929520">"<xliff:g id="NAME">%1$s</xliff:g> के ज़रिए कनेक्ट किया गया"</string> <string name="available_via_passpoint" msgid="1617440946846329613">"%1$s के द्वारा उपलब्ध"</string> diff --git a/packages/SettingsLib/res/values-in/strings.xml b/packages/SettingsLib/res/values-in/strings.xml index 0684b3d292a5..798ea3c80cb0 100644 --- a/packages/SettingsLib/res/values-in/strings.xml +++ b/packages/SettingsLib/res/values-in/strings.xml @@ -41,7 +41,7 @@ <string name="connected_via_passpoint" msgid="2826205693803088747">"Terhubung melalui %1$s"</string> <string name="connected_via_app" msgid="5571999941988929520">"Tersambung melalui <xliff:g id="NAME">%1$s</xliff:g>"</string> <string name="available_via_passpoint" msgid="1617440946846329613">"Tersedia melalui %1$s"</string> - <string name="tap_to_sign_up" msgid="6449724763052579434">"Tap untuk mendaftar"</string> + <string name="tap_to_sign_up" msgid="6449724763052579434">"Ketuk untuk mendaftar"</string> <string name="wifi_connected_no_internet" msgid="8202906332837777829">"Tersambung, tidak ada internet"</string> <string name="wifi_limited_connection" msgid="7717855024753201527">"Koneksi terbatas"</string> <string name="wifi_status_no_internet" msgid="5784710974669608361">"Tidak ada internet"</string> @@ -52,7 +52,7 @@ <string name="osu_opening_provider" msgid="5488997661548640424">"Membuka <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string> <string name="osu_connect_failed" msgid="2187750899158158934">"Tidak dapat tersambung"</string> <string name="osu_completing_sign_up" msgid="9037638564719197082">"Menyelesaikan pendaftaran…"</string> - <string name="osu_sign_up_failed" msgid="7296159750352873260">"Tidak dapat menyelesaikan pendaftaran. Tap untuk mencoba lagi."</string> + <string name="osu_sign_up_failed" msgid="7296159750352873260">"Tidak dapat menyelesaikan pendaftaran. Ketuk untuk mencoba lagi."</string> <string name="osu_sign_up_complete" msgid="8207626049093289203">"Pendaftaran selesai. Menyambungkan…"</string> <string name="speed_label_very_slow" msgid="1867055264243608530">"Sangat Lambat"</string> <string name="speed_label_slow" msgid="813109590815810235">"Lambat"</string> @@ -338,7 +338,7 @@ <string name="enable_freeform_support_summary" msgid="8247310463288834487">"Aktifkan dukungan untuk jendela eksperimental berformat bebas."</string> <string name="local_backup_password_title" msgid="3860471654439418822">"Sandi backup desktop"</string> <string name="local_backup_password_summary_none" msgid="6951095485537767956">"Saat ini backup desktop sepenuhnya tidak dilindungi"</string> - <string name="local_backup_password_summary_change" msgid="5376206246809190364">"Tap guna mengubah atau menghapus sandi untuk cadangan lengkap desktop"</string> + <string name="local_backup_password_summary_change" msgid="5376206246809190364">"Ketuk guna mengubah atau menghapus sandi untuk cadangan lengkap desktop"</string> <string name="local_backup_password_toast_success" msgid="582016086228434290">"Sandi cadangan baru telah disetel"</string> <string name="local_backup_password_toast_confirmation_mismatch" msgid="7805892532752708288">"Sandi baru dan konfirmasinya tidak cocok."</string> <string name="local_backup_password_toast_validation_failure" msgid="5646377234895626531">"Gagal menyetel sandi cadangan"</string> @@ -354,8 +354,8 @@ <item msgid="5363960654009010371">"Warna yang dioptimalkan untuk konten digital"</item> </string-array> <string name="inactive_apps_title" msgid="9042996804461901648">"Aplikasi standby"</string> - <string name="inactive_app_inactive_summary" msgid="5091363706699855725">"Tidak aktif. Tap untuk beralih."</string> - <string name="inactive_app_active_summary" msgid="4174921824958516106">"Aktif. Tap untuk beralih."</string> + <string name="inactive_app_inactive_summary" msgid="5091363706699855725">"Tidak aktif. Ketuk untuk beralih."</string> + <string name="inactive_app_active_summary" msgid="4174921824958516106">"Aktif. Ketuk untuk beralih."</string> <string name="standby_bucket_summary" msgid="6567835350910684727">"Status standby aplikasi:<xliff:g id="BUCKET"> %s</xliff:g>"</string> <string name="runningservices_settings_title" msgid="8097287939865165213">"Layanan yang sedang berjalan"</string> <string name="runningservices_settings_summary" msgid="854608995821032748">"Melihat dan mengontrol layanan yang sedang berjalan"</string> diff --git a/packages/SettingsLib/res/values-it/strings.xml b/packages/SettingsLib/res/values-it/strings.xml index c5176b02a31a..68c0f17a3b41 100644 --- a/packages/SettingsLib/res/values-it/strings.xml +++ b/packages/SettingsLib/res/values-it/strings.xml @@ -220,7 +220,7 @@ <string name="debug_networking_category" msgid="7044075693643009662">"Reti"</string> <string name="wifi_display_certification" msgid="8611569543791307533">"Certificazione display wireless"</string> <string name="wifi_verbose_logging" msgid="4203729756047242344">"Attiva logging dettagliato Wi-Fi"</string> - <string name="wifi_scan_throttling" msgid="160014287416479843">"Limitazione della ricerca di reti Wi‑Fi"</string> + <string name="wifi_scan_throttling" msgid="160014287416479843">"Limita ricerca di reti Wi‑Fi"</string> <string name="mobile_data_always_on" msgid="8774857027458200434">"Dati mobili sempre attivi"</string> <string name="tethering_hardware_offload" msgid="7470077827090325814">"Tethering accelerazione hardware"</string> <string name="bluetooth_show_devices_without_names" msgid="4708446092962060176">"Mostra dispositivi Bluetooth senza nome"</string> diff --git a/packages/SettingsLib/res/values-kk/strings.xml b/packages/SettingsLib/res/values-kk/strings.xml index 1e572972a78f..246e3eb3c532 100644 --- a/packages/SettingsLib/res/values-kk/strings.xml +++ b/packages/SettingsLib/res/values-kk/strings.xml @@ -221,7 +221,7 @@ <string name="wifi_display_certification" msgid="8611569543791307533">"Сымсыз дисплей сертификаты"</string> <string name="wifi_verbose_logging" msgid="4203729756047242344">"Wi‑Fi егжей-тегжейлі журналы"</string> <string name="wifi_scan_throttling" msgid="160014287416479843">"Wi‑Fi іздеуін шектеу"</string> - <string name="mobile_data_always_on" msgid="8774857027458200434">"Мобильдік деректер әрқашан қосулы"</string> + <string name="mobile_data_always_on" msgid="8774857027458200434">"Мобильдік интернет әрқашан қосулы"</string> <string name="tethering_hardware_offload" msgid="7470077827090325814">"Тетеринг режиміндегі аппараттық жеделдету"</string> <string name="bluetooth_show_devices_without_names" msgid="4708446092962060176">"Bluetooth құрылғыларын атаусыз көрсету"</string> <string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"Абсолютті дыбыс деңгейін өшіру"</string> diff --git a/packages/SettingsLib/res/values-km/strings.xml b/packages/SettingsLib/res/values-km/strings.xml index fb09c2f494a0..36cf2d473faa 100644 --- a/packages/SettingsLib/res/values-km/strings.xml +++ b/packages/SettingsLib/res/values-km/strings.xml @@ -402,8 +402,8 @@ <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7466484148515796216">"ថេប្លេតអាចនឹងបិទក្នុងពេលបន្តិចទៀត (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="603933521600231649">"ឧបករណ៍អាចនឹងបិទក្នុងពេលបន្តិចទៀត (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_charging" msgid="1779532561355864267">"<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="1421102457410268886">"សល់ <xliff:g id="TIME">%1$s</xliff:g> ទើបសាកថ្មពេញ"</string> - <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> រហូតដល់សាកពេញ"</string> + <string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"<xliff:g id="TIME">%1$s</xliff:g> ទៀតទើបសាកថ្មពេញ"</string> + <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> ទៀតទើបសាកថ្មពេញ"</string> <string name="battery_info_status_unknown" msgid="196130600938058547">"មិនស្គាល់"</string> <string name="battery_info_status_charging" msgid="1705179948350365604">"កំពុងបញ្ចូលថ្ម"</string> <string name="battery_info_status_charging_lower" msgid="8689770213898117994">"កំពុងសាកថ្ម"</string> diff --git a/packages/SettingsLib/res/values-ko/strings.xml b/packages/SettingsLib/res/values-ko/strings.xml index abdfa041ada8..8f8bbc1a4721 100644 --- a/packages/SettingsLib/res/values-ko/strings.xml +++ b/packages/SettingsLib/res/values-ko/strings.xml @@ -247,7 +247,7 @@ <string name="private_dns_mode_provider_failure" msgid="231837290365031223">"연결할 수 없음"</string> <string name="wifi_display_certification_summary" msgid="1155182309166746973">"무선 디스플레이 인증서 옵션 표시"</string> <string name="wifi_verbose_logging_summary" msgid="6615071616111731958">"Wi‑Fi 로깅 수준을 높이고, Wi‑Fi 선택도구에서 SSID RSSI당 값을 표시"</string> - <string name="wifi_scan_throttling_summary" msgid="4461922728822495763">"배터리 소모를 줄이고 네트워크 성능을 개선합니다."</string> + <string name="wifi_scan_throttling_summary" msgid="4461922728822495763">"배터리 소모를 줄이고 네트워크 성능 개선"</string> <string name="wifi_metered_label" msgid="4514924227256839725">"종량제 네트워크"</string> <string name="wifi_unmetered_label" msgid="6124098729457992931">"무제한 네트워크"</string> <string name="select_logd_size_title" msgid="7433137108348553508">"로거 버퍼 크기"</string> diff --git a/packages/SettingsLib/res/values-mk/strings.xml b/packages/SettingsLib/res/values-mk/strings.xml index 8bed22f1e763..dda346242616 100644 --- a/packages/SettingsLib/res/values-mk/strings.xml +++ b/packages/SettingsLib/res/values-mk/strings.xml @@ -262,7 +262,7 @@ <string name="allow_mock_location_summary" msgid="317615105156345626">"Овозможи лажни локации"</string> <string name="debug_view_attributes" msgid="6485448367803310384">"Овозможете проверка на атрибутот на приказот"</string> <string name="mobile_data_always_on_summary" msgid="8149773901431697910">"Секогаш држи го активен мобилниот интернет, дури и при активно Wi-Fi (за брзо префрлување мрежа)."</string> - <string name="tethering_hardware_offload_summary" msgid="7726082075333346982">"Ако е достапно, користете хардверско забрзување за врзување"</string> + <string name="tethering_hardware_offload_summary" msgid="7726082075333346982">"Ако е достапно, користи хардверско забрзување за врзување"</string> <string name="adb_warning_title" msgid="6234463310896563253">"Овозможи отстранување грешки на USB?"</string> <string name="adb_warning_message" msgid="7316799925425402244">"Отстранувањето грешки на USB е наменето само за целите на развој. Користете го за копирање податоци меѓу вашиот компјутер и вашиот уред, за инсталирање апликации на вашиот уред без известување и за читање евиденција на податоци."</string> <string name="adb_keys_warning_message" msgid="5659849457135841625">"Отповикај пристап кон отстранување грешка од USB од сите претходно овластени компјутери?"</string> diff --git a/packages/SettingsLib/res/values-mr/arrays.xml b/packages/SettingsLib/res/values-mr/arrays.xml index a364db91beff..7b467601f9d5 100644 --- a/packages/SettingsLib/res/values-mr/arrays.xml +++ b/packages/SettingsLib/res/values-mr/arrays.xml @@ -145,9 +145,9 @@ </string-array> <string-array name="bluetooth_audio_active_device_summaries"> <item msgid="4862957058729193940"></item> - <item msgid="6481691720774549651">", अॅक्टिव्ह"</item> - <item msgid="8962366465966010158">", अॅक्टिव्ह (मीडिया)"</item> - <item msgid="4046665544396189228">", अॅक्टिव्ह (फोन)"</item> + <item msgid="6481691720774549651">", अॅक्टिव्ह"</item> + <item msgid="8962366465966010158">", अॅक्टिव्ह (मीडिया)"</item> + <item msgid="4046665544396189228">", अॅक्टिव्ह (फोन)"</item> </string-array> <string-array name="select_logd_size_titles"> <item msgid="8665206199209698501">"बंद"</item> diff --git a/packages/SettingsLib/res/values-mr/strings.xml b/packages/SettingsLib/res/values-mr/strings.xml index 367b13d4ce09..54723a80b51c 100644 --- a/packages/SettingsLib/res/values-mr/strings.xml +++ b/packages/SettingsLib/res/values-mr/strings.xml @@ -34,7 +34,7 @@ <string name="wifi_check_password_try_again" msgid="516958988102584767">"पासवर्ड तपासा आणि पुन्हा प्रयत्न करा"</string> <string name="wifi_not_in_range" msgid="1136191511238508967">"परिक्षेत्रामध्ये नाही"</string> <string name="wifi_no_internet_no_reconnect" msgid="5724903347310541706">"स्वयंचलितपणे कनेक्ट करणार नाही"</string> - <string name="wifi_no_internet" msgid="4663834955626848401">"इंटरनेट अॅक्सेस नाही"</string> + <string name="wifi_no_internet" msgid="4663834955626848401">"इंटरनेट अॅक्सेस नाही"</string> <string name="saved_network" msgid="4352716707126620811">"<xliff:g id="NAME">%1$s</xliff:g> द्वारे सेव्ह केले"</string> <string name="connected_via_network_scorer" msgid="5713793306870815341">"%1$s द्वारे स्वयंचलितपणे कनेक्ट केले"</string> <string name="connected_via_network_scorer_default" msgid="7867260222020343104">"नेटवर्क रेटिंग प्रदात्याद्वारे स्वयंचलितपणे कनेक्ट केले"</string> @@ -46,7 +46,7 @@ <string name="wifi_limited_connection" msgid="7717855024753201527">"मर्यादित कनेक्शन"</string> <string name="wifi_status_no_internet" msgid="5784710974669608361">"इंटरनेट नाही"</string> <string name="wifi_status_sign_in_required" msgid="123517180404752756">"साइन इन करणे आवश्यक आहे"</string> - <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"अॅक्सेस पॉइंट तात्पुरते भरलेले"</string> + <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"अॅक्सेस पॉइंट तात्पुरते भरलेले"</string> <string name="connected_via_carrier" msgid="7583780074526041912">"%1$s ने कनेक्ट केले"</string> <string name="available_via_carrier" msgid="1469036129740799053">"%1$s ने उपलब्ध"</string> <string name="osu_opening_provider" msgid="5488997661548640424">"<xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g> उघडत आहे"</string> @@ -74,8 +74,8 @@ <string name="bluetooth_connected_no_headset_battery_level" msgid="1610296229139400266">"कनेक्ट केले (फोन नाही), बॅटरी <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string> <string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"कनेक्ट केले (मीडिया नाही), बॅटरी <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string> <string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"कनेक्ट केले (फोन किंवा मीडिया नाही), बॅटरी <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string> - <string name="bluetooth_active_battery_level" msgid="3149689299296462009">"अॅक्टिव्ह, <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> बॅटरी"</string> - <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"अॅक्टिव्ह, L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> बॅटरी, R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> बॅटरी"</string> + <string name="bluetooth_active_battery_level" msgid="3149689299296462009">"अॅक्टिव्ह, <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> बॅटरी"</string> + <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"अॅक्टिव्ह, L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> बॅटरी, R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> बॅटरी"</string> <string name="bluetooth_battery_level" msgid="1447164613319663655">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> बॅटरी"</string> <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> बॅटरी, R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> बॅटरी"</string> <string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"अॅक्टिव्ह"</string> @@ -83,12 +83,12 @@ <string name="bluetooth_profile_headset" msgid="7815495680863246034">"फोन कॉल"</string> <string name="bluetooth_profile_opp" msgid="9168139293654233697">"फाइल स्थानांतरण"</string> <string name="bluetooth_profile_hid" msgid="3680729023366986480">"इनपुट डिव्हाइस"</string> - <string name="bluetooth_profile_pan" msgid="3391606497945147673">"इंटरनेट अॅक्सेस"</string> + <string name="bluetooth_profile_pan" msgid="3391606497945147673">"इंटरनेट अॅक्सेस"</string> <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"संपर्क शेअरिंग"</string> <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"संपर्क सामायिकरणासाठी वापरा"</string> <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"इंटरनेट कनेक्शन शेअररण"</string> <string name="bluetooth_profile_map" msgid="1019763341565580450">"मजकूर मेसेज"</string> - <string name="bluetooth_profile_sap" msgid="5764222021851283125">"सिम अॅक्सेस"</string> + <string name="bluetooth_profile_sap" msgid="5764222021851283125">"सिम अॅक्सेस"</string> <string name="bluetooth_profile_a2dp_high_quality" msgid="5444517801472820055">"HD ऑडिओ: <xliff:g id="CODEC_NAME">%1$s</xliff:g>"</string> <string name="bluetooth_profile_a2dp_high_quality_unknown_codec" msgid="8510588052415438887">"HD ऑडिओ"</string> <string name="bluetooth_profile_hearing_aid" msgid="6680721080542444257">"श्रवण यंत्रे"</string> @@ -102,7 +102,7 @@ <string name="bluetooth_hid_profile_summary_connected" msgid="3381760054215168689">"इनपुट डिव्हाइसवर कनेक्ट केले"</string> <string name="bluetooth_pan_user_profile_summary_connected" msgid="6436258151814414028">"इंटरनेट अॅक्सेससाठी डिव्हाइसशी कनेक्ट केले"</string> <string name="bluetooth_pan_nap_profile_summary_connected" msgid="1322694224800769308">"डिव्हाइससह स्थानिक इंटरनेट कनेक्शन शेअर करत आहे"</string> - <string name="bluetooth_pan_profile_summary_use_for" msgid="5736111170225304239">"इंटरनेट अॅक्सेस करण्यासाठी वापरा"</string> + <string name="bluetooth_pan_profile_summary_use_for" msgid="5736111170225304239">"इंटरनेट अॅक्सेस करण्यासाठी वापरा"</string> <string name="bluetooth_map_profile_summary_use_for" msgid="5154200119919927434">"नकाशासाठी वापरा"</string> <string name="bluetooth_sap_profile_summary_use_for" msgid="7085362712786907993">"SIM प्रवेशासाठी वापरा"</string> <string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"मीडिया ऑडिओसाठी वापरा"</string> @@ -113,7 +113,7 @@ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"पेअर करा"</string> <string name="bluetooth_pairing_accept_all_caps" msgid="6061699265220789149">"पेअर करा"</string> <string name="bluetooth_pairing_decline" msgid="4185420413578948140">"रद्द करा"</string> - <string name="bluetooth_pairing_will_share_phonebook" msgid="4982239145676394429">"कनेक्ट केल्यावर पेअरींग तुमचे संपर्क आणि कॉल इतिहास यामध्ये अॅक्सेस देते."</string> + <string name="bluetooth_pairing_will_share_phonebook" msgid="4982239145676394429">"कनेक्ट केल्यावर पेअरींग तुमचे संपर्क आणि कॉल इतिहास यामध्ये अॅक्सेस देते."</string> <string name="bluetooth_pairing_error_message" msgid="3748157733635947087">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> शी जोडू शकलो नाही."</string> <string name="bluetooth_pairing_pin_error_message" msgid="8337234855188925274">"अयोग्य पिन किंवा पासकीमुळे <xliff:g id="DEVICE_NAME">%1$s</xliff:g> सह जोडू शकलो नाही."</string> <string name="bluetooth_pairing_device_down_error_message" msgid="7870998403045801381">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> शी संवाद प्रस्थापित करू शकत नाही."</string> @@ -138,15 +138,15 @@ <string name="accessibility_wifi_security_type_none" msgid="1223747559986205423">"नेटवर्क उघडा"</string> <string name="accessibility_wifi_security_type_secured" msgid="862921720418885331">"सुरक्षित नेटवर्क"</string> <string name="process_kernel_label" msgid="3916858646836739323">"Android OS"</string> - <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"काढलेले अॅप्स"</string> - <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"काढलेले अॅप्स आणि वापरकर्ते"</string> + <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"काढलेले अॅप्स"</string> + <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"काढलेले अॅप्स आणि वापरकर्ते"</string> <string name="data_usage_ota" msgid="5377889154805560860">"सिस्टम अपडेट"</string> <string name="tether_settings_title_usb" msgid="6688416425801386511">"USB टेदरिंग"</string> <string name="tether_settings_title_wifi" msgid="3277144155960302049">"पोर्टेबल हॉटस्पॉट"</string> <string name="tether_settings_title_bluetooth" msgid="355855408317564420">"ब्लूटूथ टेदरिंग"</string> <string name="tether_settings_title_usb_bluetooth" msgid="5355828977109785001">"टेदरिंग"</string> <string name="tether_settings_title_all" msgid="8356136101061143841">"टेदरिंग आणि पोर्टेबल हॉटस्पॉट"</string> - <string name="managed_user_title" msgid="8109605045406748842">"सर्व कार्य अॅप्स"</string> + <string name="managed_user_title" msgid="8109605045406748842">"सर्व कार्य अॅप्स"</string> <string name="user_guest" msgid="8475274842845401871">"अतिथी"</string> <string name="unknown" msgid="1592123443519355854">"अज्ञात"</string> <string name="running_process_item_user_label" msgid="3129887865552025943">"वापरकर्ता: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> @@ -200,7 +200,7 @@ <string name="development_settings_not_available" msgid="4308569041701535607">"या वापरकर्त्यासाठी डेव्हलपर पर्याय उपलब्ध नाहीत"</string> <string name="vpn_settings_not_available" msgid="956841430176985598">"या वापरकर्त्यासाठी VPN सेटिंग्ज उपलब्ध नाहीत"</string> <string name="tethering_settings_not_available" msgid="6765770438438291012">"या वापरकर्त्यासाठी टेदरिंग सेटिंग्ज उपलब्ध नाहीत"</string> - <string name="apn_settings_not_available" msgid="7873729032165324000">"या वापरकर्त्यासाठी अॅक्सेस बिंदू नाव सेटिंग्ज उपलब्ध नाहीत"</string> + <string name="apn_settings_not_available" msgid="7873729032165324000">"या वापरकर्त्यासाठी अॅक्सेस बिंदू नाव सेटिंग्ज उपलब्ध नाहीत"</string> <string name="enable_adb" msgid="7982306934419797485">"USB डीबग करणे"</string> <string name="enable_adb_summary" msgid="4881186971746056635">"USB कनेक्ट केलेले असताना डीबग मोड"</string> <string name="clear_adb_keys" msgid="4038889221503122743">"USB डीबग करणारी प्रमाणीकरणे रीव्होक करा"</string> @@ -261,14 +261,14 @@ <string name="allow_mock_location" msgid="2787962564578664888">"बनावट स्थानांना अनुमती द्या"</string> <string name="allow_mock_location_summary" msgid="317615105156345626">"बनावट स्थानांना अनुमती द्या"</string> <string name="debug_view_attributes" msgid="6485448367803310384">"दृश्य विशेषता तपासणी सुरू करा"</string> - <string name="mobile_data_always_on_summary" msgid="8149773901431697910">"जरी वाय-फाय चालू असले तरीही, मोबाईल डेटा नेहमी चालू ठेवा (नेटवर्क जलदरीत्या स्विच करण्यासाठी)."</string> - <string name="tethering_hardware_offload_summary" msgid="7726082075333346982">"उपलब्ध असल्यास टेदरिंग हार्डवेअर प्रवेग वापरा"</string> + <string name="mobile_data_always_on_summary" msgid="8149773901431697910">"वाय-फाय चालू असतानाही मोबाइल डेटा नेहमी सुरू ठेवा (नेटवर्क जलदरीत्या स्विच करण्यासाठी)."</string> + <string name="tethering_hardware_offload_summary" msgid="7726082075333346982">"उपलब्ध असल्यास टेदरिंग हार्डवेअर अॅक्सिलरेशन वापरा"</string> <string name="adb_warning_title" msgid="6234463310896563253">"USB डीबग करण्यास अनुमती द्यायची?"</string> - <string name="adb_warning_message" msgid="7316799925425402244">"USB डीबग करण्याचा हेतू फक्त विकास उद्देशांसाठी आहे. याचा वापर तुमचा कॉंप्युटर आणि तुमचे डिव्हाइस यांच्या दरम्यान डेटा कॉपी करण्यासाठी करा, सूचनेशिवाय तुमच्या डिव्हाइस वर अॅप्स इंस्टॉल करा आणि लॉग डेटा वाचा."</string> - <string name="adb_keys_warning_message" msgid="5659849457135841625">"तुम्ही पूर्वी अॉथोराइझ केलेल्या सर्व संगणकांवरुन USB डीबग करण्यासाठी अॅक्सेस रीव्होक करायचा?"</string> + <string name="adb_warning_message" msgid="7316799925425402244">"USB डीबग करण्याचा हेतू फक्त विकास उद्देशांसाठी आहे. याचा वापर तुमचा कॉंप्युटर आणि तुमचे डिव्हाइस यांच्या दरम्यान डेटा कॉपी करण्यासाठी करा, सूचनेशिवाय तुमच्या डिव्हाइस वर अॅप्स इंस्टॉल करा आणि लॉग डेटा वाचा."</string> + <string name="adb_keys_warning_message" msgid="5659849457135841625">"तुम्ही पूर्वी अॉथोराइझ केलेल्या सर्व संगणकांवरुन USB डीबग करण्यासाठी अॅक्सेस रीव्होक करायचा?"</string> <string name="dev_settings_warning_title" msgid="7244607768088540165">"विकास सेटिंग्जला अनुमती द्यायची?"</string> <string name="dev_settings_warning_message" msgid="2298337781139097964">"या सेटिंग्जचा हेतू फक्त विकास वापरासाठी आहे. त्यामुळे तुमचे डिव्हाइस आणि त्यावरील अॅप्लिकेशन ब्रेक होऊ शकतात किंवा नेहमीपेक्षा वेगळे वर्तन करू शकतात."</string> - <string name="verify_apps_over_usb_title" msgid="4177086489869041953">"USB वर अॅप्स पडताळून पाहा"</string> + <string name="verify_apps_over_usb_title" msgid="4177086489869041953">"USB वर अॅप्स पडताळून पाहा"</string> <string name="verify_apps_over_usb_summary" msgid="9164096969924529200">"हानिकारक वर्तनासाठी ADB/ADT द्वारे इंस्टॉल अॅप्स तपासा."</string> <string name="bluetooth_show_devices_without_names_summary" msgid="2351196058115755520">"नावांशिवाय ब्लूटूथ डीव्हाइस (फक्त MAC पत्ते) दाखवले जातील"</string> <string name="bluetooth_disable_absolute_volume_summary" msgid="6031284410786545957">"रिमोट डिव्हाइसमध्ये सहन न होणारा मोठा आवाज किंवा नियंत्रणाचा अभाव यासारखी आवाजाची समस्या असल्यास ब्लूटूथ संपूर्ण आवाज वैशिष्ट्य बंद करते."</string> @@ -290,7 +290,7 @@ <string name="media_category" msgid="4388305075496848353">"मीडिया"</string> <string name="debug_monitoring_category" msgid="7640508148375798343">"परीक्षण"</string> <string name="strict_mode" msgid="1938795874357830695">"कठोर मोड सुरू"</string> - <string name="strict_mode_summary" msgid="142834318897332338">"मुख्य थ्रेडवर अॅप्स मोठी कार्ये करतात तेव्हा स्क्रीन फ्लॅश करा"</string> + <string name="strict_mode_summary" msgid="142834318897332338">"मुख्य थ्रेडवर अॅप्स मोठी कार्ये करतात तेव्हा स्क्रीन फ्लॅश करा"</string> <string name="pointer_location" msgid="6084434787496938001">"पॉइंटर स्थान"</string> <string name="pointer_location_summary" msgid="840819275172753713">"वर्तमान स्पर्श डेटा दर्शविणारे स्क्रीन ओव्हरले"</string> <string name="show_touches" msgid="2642976305235070316">"टॅप दाखवा"</string> @@ -322,7 +322,7 @@ <string name="transition_animation_scale_title" msgid="387527540523595875">"ट्रांझिशन अॅनिमेशन स्केल"</string> <string name="animator_duration_scale_title" msgid="3406722410819934083">"अॅनिमेटर कालावधी स्केल"</string> <string name="overlay_display_devices_title" msgid="5364176287998398539">"दुय्यम डिस्प्ले सिम्युलेट करा"</string> - <string name="debug_applications_category" msgid="4206913653849771549">"अॅप्स"</string> + <string name="debug_applications_category" msgid="4206913653849771549">"अॅप्स"</string> <string name="immediately_destroy_activities" msgid="1579659389568133959">"अॅक्टिव्हिटी ठेवू नका"</string> <string name="immediately_destroy_activities_summary" msgid="3592221124808773368">"वापरकर्त्याने प्रत्येक अॅक्टिव्हिटी सोडताच ती नष्ट करा"</string> <string name="app_process_limit_title" msgid="4280600650253107163">"पार्श्वभूमी प्रक्रिया मर्यादा"</string> @@ -353,7 +353,7 @@ <item msgid="8280754435979370728">"डोळ्यांनी पाहिले तसे नैसर्गिक रंग"</item> <item msgid="5363960654009010371">"डिजिटल सामग्रीसाठी ऑप्टिमाइझ केलेले रंग"</item> </string-array> - <string name="inactive_apps_title" msgid="9042996804461901648">"स्टँडबाय अॅप्स"</string> + <string name="inactive_apps_title" msgid="9042996804461901648">"स्टँडबाय अॅप्स"</string> <string name="inactive_app_inactive_summary" msgid="5091363706699855725">"निष्क्रिय. टॉगल करण्यासाठी टॅप करा."</string> <string name="inactive_app_active_summary" msgid="4174921824958516106">"सक्रिय. टॉगल करण्यासाठी टॅप करा."</string> <string name="standby_bucket_summary" msgid="6567835350910684727">"अॅप स्टँडबाय स्थिती: <xliff:g id="BUCKET"> %s</xliff:g>"</string> diff --git a/packages/SettingsLib/res/values-or/strings.xml b/packages/SettingsLib/res/values-or/strings.xml index 648cc4a99b4e..5725c22a5456 100644 --- a/packages/SettingsLib/res/values-or/strings.xml +++ b/packages/SettingsLib/res/values-or/strings.xml @@ -247,7 +247,7 @@ <string name="private_dns_mode_provider_failure" msgid="231837290365031223">"କନେକ୍ଟ କରିହେଲା ନାହିଁ"</string> <string name="wifi_display_certification_summary" msgid="1155182309166746973">"ୱେୟାରଲେସ୍ ଡିସ୍ପ୍ଲେ ସାର୍ଟିଫିକେସନ୍ ପାଇଁ ବିକଳ୍ପ ଦେଖାନ୍ତୁ"</string> <string name="wifi_verbose_logging_summary" msgid="6615071616111731958">"ୱାଇ-ଫାଇ ଲଗିଙ୍ଗ ସ୍ତର ବଢ଼ାନ୍ତୁ, ୱାଇ-ଫାଇ ପିକର୍ରେ ପ୍ରତି SSID RSSI ଦେଖାନ୍ତୁ"</string> - <string name="wifi_scan_throttling_summary" msgid="4461922728822495763">"ବ୍ୟାଟେରୀ ଖର୍ଚ୍ଚ କମ୍ ଏବଂ ନେଟ୍ୱାର୍କ ପ୍ରଦର୍ଶନ ଉନ୍ନତ କରିଥାଏ"</string> + <string name="wifi_scan_throttling_summary" msgid="4461922728822495763">"ବ୍ୟାଟେରୀ ଖର୍ଚ୍ଚ କମ୍ ଏବଂ ନେଟ୍ୱାର୍କ କାର୍ଯ୍ୟକ୍ଷମତା ଉନ୍ନତ କରିଥାଏ"</string> <string name="wifi_metered_label" msgid="4514924227256839725">"ମପାଯାଉଥିବା"</string> <string name="wifi_unmetered_label" msgid="6124098729457992931">"ମପାଯାଉନଥିବା"</string> <string name="select_logd_size_title" msgid="7433137108348553508">"ଲଗର୍ ବଫର୍ ସାଇଜ୍"</string> diff --git a/packages/SettingsLib/res/values-pa/strings.xml b/packages/SettingsLib/res/values-pa/strings.xml index 7967c71669c2..faccda7e9395 100644 --- a/packages/SettingsLib/res/values-pa/strings.xml +++ b/packages/SettingsLib/res/values-pa/strings.xml @@ -403,7 +403,7 @@ <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="603933521600231649">"ਡੀਵਾਈਸ ਛੇਤੀ ਹੀ ਬੰਦ ਹੋ ਸਕਦਾ ਹੈ (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_charging" msgid="1779532561355864267">"<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="1421102457410268886">"ਪੂਰੀ ਤਰ੍ਹਾਂ ਚਾਰਜ ਹੋਣ ਲਈ <xliff:g id="TIME">%1$s</xliff:g> ਬਾਕੀ"</string> - <string name="power_charging_duration" msgid="4676999980973411875">"ਪੂਰੀ ਤਰ੍ਹਾਂ ਚਾਰਜ ਹੋਣ ਤੱਕ <xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g>"</string> + <string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> - ਪੂਰੀ ਤਰ੍ਹਾਂ ਚਾਰਜ ਹੋਣ ਵਿੱਚ <xliff:g id="TIME">%2$s</xliff:g>"</string> <string name="battery_info_status_unknown" msgid="196130600938058547">"ਅਗਿਆਤ"</string> <string name="battery_info_status_charging" msgid="1705179948350365604">"ਚਾਰਜ ਹੋ ਰਿਹਾ ਹੈ"</string> <string name="battery_info_status_charging_lower" msgid="8689770213898117994">"ਚਾਰਜ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ"</string> diff --git a/packages/SettingsLib/res/values-ru/strings.xml b/packages/SettingsLib/res/values-ru/strings.xml index db43c7562dbc..806be6e5cdd6 100644 --- a/packages/SettingsLib/res/values-ru/strings.xml +++ b/packages/SettingsLib/res/values-ru/strings.xml @@ -60,7 +60,7 @@ <string name="speed_label_medium" msgid="3175763313268941953">"Средняя"</string> <string name="speed_label_fast" msgid="7715732164050975057">"Быстрая"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"Очень быстрая"</string> - <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="DESCRIPTION">%2$s</xliff:g>: <xliff:g id="STATE">%1$s</xliff:g>"</string> + <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"Нет подключения"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Отключение..."</string> <string name="bluetooth_connecting" msgid="8555009514614320497">"Подключение..."</string> @@ -220,7 +220,7 @@ <string name="debug_networking_category" msgid="7044075693643009662">"Сети"</string> <string name="wifi_display_certification" msgid="8611569543791307533">"Серт. беспроводн. мониторов"</string> <string name="wifi_verbose_logging" msgid="4203729756047242344">"Подробный журнал Wi‑Fi"</string> - <string name="wifi_scan_throttling" msgid="160014287416479843">"Регулирование поиска сетей Wi‑Fi"</string> + <string name="wifi_scan_throttling" msgid="160014287416479843">"Ограничивать поиск сетей Wi‑Fi"</string> <string name="mobile_data_always_on" msgid="8774857027458200434">"Не отключать мобильный Интернет"</string> <string name="tethering_hardware_offload" msgid="7470077827090325814">"Аппаратное ускорение в режиме модема"</string> <string name="bluetooth_show_devices_without_names" msgid="4708446092962060176">"Показывать Bluetooth-устройства без названий"</string> @@ -247,7 +247,7 @@ <string name="private_dns_mode_provider_failure" msgid="231837290365031223">"Ошибка подключения"</string> <string name="wifi_display_certification_summary" msgid="1155182309166746973">"Показывать параметры сертификации беспроводных мониторов"</string> <string name="wifi_verbose_logging_summary" msgid="6615071616111731958">"Вести подробный журнал, показывать RSSI для каждого SSID при выборе сети"</string> - <string name="wifi_scan_throttling_summary" msgid="4461922728822495763">"Уменьшает расход заряда батареи и улучшает работу сетей."</string> + <string name="wifi_scan_throttling_summary" msgid="4461922728822495763">"Уменьшает расход заряда батареи и улучшает работу сети"</string> <string name="wifi_metered_label" msgid="4514924227256839725">"Сеть с тарификацией трафика"</string> <string name="wifi_unmetered_label" msgid="6124098729457992931">"Сеть без тарификации трафика"</string> <string name="select_logd_size_title" msgid="7433137108348553508">"Размер буфера журнала"</string> diff --git a/packages/SettingsLib/res/values-sl/strings.xml b/packages/SettingsLib/res/values-sl/strings.xml index 213b28557142..b16d5d91f7eb 100644 --- a/packages/SettingsLib/res/values-sl/strings.xml +++ b/packages/SettingsLib/res/values-sl/strings.xml @@ -246,7 +246,7 @@ <string name="private_dns_mode_provider_hostname_hint" msgid="2487492386970928143">"Vnesite ime gostitelja pri ponudniku DNS"</string> <string name="private_dns_mode_provider_failure" msgid="231837290365031223">"Povezave ni bilo mogoče vzpostaviti"</string> <string name="wifi_display_certification_summary" msgid="1155182309166746973">"Pokaži možnosti za potrdilo brezžičnega zaslona"</string> - <string name="wifi_verbose_logging_summary" msgid="6615071616111731958">"Povečaj raven zapis. dnev. za Wi-Fi; v izbir. Wi‑Fi-ja pokaži glede na SSID RSSI"</string> + <string name="wifi_verbose_logging_summary" msgid="6615071616111731958">"Povečaj raven zapisovanja dnevnika za Wi-Fi; v izbirniku Wi‑Fi-ja pokaži glede na SSID RSSI"</string> <string name="wifi_scan_throttling_summary" msgid="4461922728822495763">"Zmanjša porabo energije akumulatorja in izboljša delovanje omrežja"</string> <string name="wifi_metered_label" msgid="4514924227256839725">"Omejen prenos podatkov"</string> <string name="wifi_unmetered_label" msgid="6124098729457992931">"Z neomejenim prenosom podatkov"</string> diff --git a/packages/SettingsLib/res/values-th/strings.xml b/packages/SettingsLib/res/values-th/strings.xml index 910b94ecdf03..0b184d241b55 100644 --- a/packages/SettingsLib/res/values-th/strings.xml +++ b/packages/SettingsLib/res/values-th/strings.xml @@ -247,7 +247,7 @@ <string name="private_dns_mode_provider_failure" msgid="231837290365031223">"เชื่อมต่อไม่ได้"</string> <string name="wifi_display_certification_summary" msgid="1155182309166746973">"แสดงตัวเลือกสำหรับการรับรองการแสดงผล แบบไร้สาย"</string> <string name="wifi_verbose_logging_summary" msgid="6615071616111731958">"เพิ่มระดับการบันทึก Wi‑Fi แสดงต่อ SSID RSSI ในตัวเลือก Wi‑Fi"</string> - <string name="wifi_scan_throttling_summary" msgid="4461922728822495763">"ลดการหมดเปลืองแบตเตอรี่และเพิ่มประสิทธิภาพเครือข่าย"</string> + <string name="wifi_scan_throttling_summary" msgid="4461922728822495763">"ลดการเปลืองแบตเตอรี่และเพิ่มประสิทธิภาพเครือข่าย"</string> <string name="wifi_metered_label" msgid="4514924227256839725">"มีการวัดปริมาณอินเทอร์เน็ต"</string> <string name="wifi_unmetered_label" msgid="6124098729457992931">"ไม่มีการวัดปริมาณอินเทอร์เน็ต"</string> <string name="select_logd_size_title" msgid="7433137108348553508">"ขนาดบัฟเฟอร์ของตัวบันทึก"</string> diff --git a/packages/SettingsLib/src/com/android/settingslib/graph/SignalDrawable.java b/packages/SettingsLib/src/com/android/settingslib/graph/SignalDrawable.java index 98eb57300f0b..c7380c580e2f 100644 --- a/packages/SettingsLib/src/com/android/settingslib/graph/SignalDrawable.java +++ b/packages/SettingsLib/src/com/android/settingslib/graph/SignalDrawable.java @@ -132,6 +132,7 @@ public class SignalDrawable extends DrawableWrapper { super.onLevelChange(unpackLevel(packedState)); updateAnimation(); setTintList(ColorStateList.valueOf(mForegroundPaint.getColor())); + invalidateSelf(); return true; } diff --git a/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java b/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java index e28c612453b4..f16fb1c91b7c 100644 --- a/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java +++ b/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java @@ -55,6 +55,7 @@ import android.util.ArraySet; import android.util.Log; import android.util.Pair; +import androidx.annotation.GuardedBy; import androidx.annotation.NonNull; import com.android.internal.annotations.VisibleForTesting; @@ -108,6 +109,14 @@ public class AccessPoint implements Comparable<AccessPoint> { /** The key which identifies this AccessPoint grouping. */ private String mKey; + /** + * Synchronization lock for managing concurrency between main and worker threads. + * + * <p>This lock should be held for all modifications to {@link #mScanResults} and + * {@link #mExtraScanResults}. + */ + private final Object mLock = new Object(); + @IntDef({Speed.NONE, Speed.SLOW, Speed.MODERATE, Speed.FAST, Speed.VERY_FAST}) @Retention(RetentionPolicy.SOURCE) public @interface Speed { @@ -134,12 +143,14 @@ public class AccessPoint implements Comparable<AccessPoint> { } /** The underlying set of scan results comprising this AccessPoint. */ + @GuardedBy("mLock") private final ArraySet<ScanResult> mScanResults = new ArraySet<>(); /** * Extra set of unused scan results corresponding to this AccessPoint for verbose logging * purposes, such as a set of Passpoint roaming scan results when home scans are available. */ + @GuardedBy("mLock") private final ArraySet<ScanResult> mExtraScanResults = new ArraySet<>(); /** @@ -489,8 +500,10 @@ public class AccessPoint implements Comparable<AccessPoint> { if (isVerboseLoggingEnabled()) { builder.append(",rssi=").append(mRssi); - builder.append(",scan cache size=").append(mScanResults.size() - + mExtraScanResults.size()); + synchronized (mLock) { + builder.append(",scan cache size=").append(mScanResults.size() + + mExtraScanResults.size()); + } } return builder.append(')').toString(); @@ -532,18 +545,20 @@ public class AccessPoint implements Comparable<AccessPoint> { */ private boolean updateScores(WifiNetworkScoreCache scoreCache, long maxScoreCacheAgeMillis) { long nowMillis = SystemClock.elapsedRealtime(); - for (ScanResult result : mScanResults) { - ScoredNetwork score = scoreCache.getScoredNetwork(result); - if (score == null) { - continue; - } - TimestampedScoredNetwork timedScore = mScoredNetworkCache.get(result.BSSID); - if (timedScore == null) { - mScoredNetworkCache.put( - result.BSSID, new TimestampedScoredNetwork(score, nowMillis)); - } else { - // Update data since the has been seen in the score cache - timedScore.update(score, nowMillis); + synchronized (mLock) { + for (ScanResult result : mScanResults) { + ScoredNetwork score = scoreCache.getScoredNetwork(result); + if (score == null) { + continue; + } + TimestampedScoredNetwork timedScore = mScoredNetworkCache.get(result.BSSID); + if (timedScore == null) { + mScoredNetworkCache.put( + result.BSSID, new TimestampedScoredNetwork(score, nowMillis)); + } else { + // Update data since the has been seen in the score cache + timedScore.update(score, nowMillis); + } } } @@ -619,12 +634,14 @@ public class AccessPoint implements Comparable<AccessPoint> { mIsScoredNetworkMetered |= score.meteredHint; } } else { - for (ScanResult result : mScanResults) { - ScoredNetwork score = scoreCache.getScoredNetwork(result); - if (score == null) { - continue; + synchronized (mLock) { + for (ScanResult result : mScanResults) { + ScoredNetwork score = scoreCache.getScoredNetwork(result); + if (score == null) { + continue; + } + mIsScoredNetworkMetered |= score.meteredHint; } - mIsScoredNetworkMetered |= score.meteredHint; } } return oldMetering == mIsScoredNetworkMetered; @@ -695,11 +712,25 @@ public class AccessPoint implements Comparable<AccessPoint> { public boolean matches(WifiConfiguration config) { if (config.isPasspoint()) { return (isPasspoint() && config.FQDN.equals(mConfig.FQDN)); - } else { - // Normal non-Passpoint network - return ssid.equals(removeDoubleQuotes(config.SSID)) - && security == getSecurity(config) - && (mConfig == null || mConfig.shared == config.shared); + } + + if (!ssid.equals(removeDoubleQuotes(config.SSID)) + || (mConfig != null && mConfig.shared != config.shared)) { + return false; + } + + final int configSecurity = getSecurity(config); + final WifiManager wifiManager = getWifiManager(); + switch (security) { + case SECURITY_PSK_SAE_TRANSITION: + return configSecurity == SECURITY_PSK + || (wifiManager.isWpa3SaeSupported() && configSecurity == SECURITY_SAE); + case SECURITY_OWE_TRANSITION: + return configSecurity == SECURITY_NONE + || (wifiManager.isEnhancedOpenSupported() + && configSecurity == SECURITY_OWE); + default: + return security == configSecurity; } } @@ -741,8 +772,10 @@ public class AccessPoint implements Comparable<AccessPoint> { */ public Set<ScanResult> getScanResults() { Set<ScanResult> allScans = new ArraySet<>(); - allScans.addAll(mScanResults); - allScans.addAll(mExtraScanResults); + synchronized (mLock) { + allScans.addAll(mScanResults); + allScans.addAll(mExtraScanResults); + } return allScans; } @@ -766,10 +799,12 @@ public class AccessPoint implements Comparable<AccessPoint> { ScanResult bestResult = null; int bestRssi = UNREACHABLE_RSSI; - for (ScanResult result : mScanResults) { - if (result.level > bestRssi) { - bestRssi = result.level; - bestResult = result; + synchronized (mLock) { + for (ScanResult result : mScanResults) { + if (result.level > bestRssi) { + bestRssi = result.level; + bestResult = result; + } } } @@ -999,8 +1034,7 @@ public class AccessPoint implements Comparable<AccessPoint> { summary.append(mContext.getString(R.string.tap_to_sign_up)); } } else if (isActive()) { - if (mConfig != null && getDetailedState() == DetailedState.CONNECTED - && mIsCarrierAp) { + if (getDetailedState() == DetailedState.CONNECTED && mIsCarrierAp) { // This is the active connection on a carrier AP summary.append(String.format(mContext.getString(R.string.connected_via_carrier), mCarrierName)); @@ -1211,9 +1245,11 @@ public class AccessPoint implements Comparable<AccessPoint> { savedState.putInt(KEY_EAPTYPE, mEapType); if (mConfig != null) savedState.putParcelable(KEY_CONFIG, mConfig); savedState.putParcelable(KEY_WIFIINFO, mInfo); - savedState.putParcelableArray(KEY_SCANRESULTS, - mScanResults.toArray(new Parcelable[mScanResults.size() - + mExtraScanResults.size()])); + synchronized (mLock) { + savedState.putParcelableArray(KEY_SCANRESULTS, + mScanResults.toArray(new Parcelable[mScanResults.size() + + mExtraScanResults.size()])); + } savedState.putParcelableArrayList(KEY_SCOREDNETWORKCACHE, new ArrayList<>(mScoredNetworkCache.values())); if (mNetworkInfo != null) { @@ -1292,8 +1328,10 @@ public class AccessPoint implements Comparable<AccessPoint> { } int oldLevel = getLevel(); - mScanResults.clear(); - mScanResults.addAll(scanResults); + synchronized (mLock) { + mScanResults.clear(); + mScanResults.addAll(scanResults); + } updateBestRssiInfo(); int newLevel = getLevel(); @@ -1324,16 +1362,18 @@ public class AccessPoint implements Comparable<AccessPoint> { void setScanResultsPasspoint( @Nullable Collection<ScanResult> homeScans, @Nullable Collection<ScanResult> roamingScans) { - mExtraScanResults.clear(); - if (!CollectionUtils.isEmpty(homeScans)) { - if (!CollectionUtils.isEmpty(roamingScans)) { - mExtraScanResults.addAll(roamingScans); + synchronized (mLock) { + mExtraScanResults.clear(); + if (!CollectionUtils.isEmpty(homeScans)) { + mIsRoaming = false; + if (!CollectionUtils.isEmpty(roamingScans)) { + mExtraScanResults.addAll(roamingScans); + } + setScanResults(homeScans); + } else if (!CollectionUtils.isEmpty(roamingScans)) { + mIsRoaming = true; + setScanResults(roamingScans); } - mIsRoaming = false; - setScanResults(homeScans); - } else if (!CollectionUtils.isEmpty(roamingScans)) { - mIsRoaming = true; - setScanResults(roamingScans); } } diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java index 636808ebcb66..3cd82dfca6b6 100644 --- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java +++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java @@ -716,6 +716,9 @@ class SettingsProtoDumpUtil { Settings.Global.GAME_DRIVER_OPT_IN_APPS, GlobalSettingsProto.Gpu.GAME_DRIVER_OPT_IN_APPS); dumpSetting(s, p, + Settings.Global.GAME_DRIVER_PRERELEASE_OPT_IN_APPS, + GlobalSettingsProto.Gpu.GAME_DRIVER_PRERELEASE_OPT_IN_APPS); + dumpSetting(s, p, Settings.Global.GAME_DRIVER_OPT_OUT_APPS, GlobalSettingsProto.Gpu.GAME_DRIVER_OPT_OUT_APPS); dumpSetting(s, p, diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java index d07bc327971a..5cd29b766c3b 100644 --- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java +++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java @@ -3238,7 +3238,7 @@ public class SettingsProvider extends ContentProvider { } private final class UpgradeController { - private static final int SETTINGS_VERSION = 181; + private static final int SETTINGS_VERSION = 182; private final int mUserId; @@ -4421,6 +4421,37 @@ public class SettingsProvider extends ContentProvider { currentVersion = 181; } + if (currentVersion == 181) { + // Version cd : by default, add STREAM_BLUETOOTH_SCO to list of streams that can + // be muted. + final SettingsState systemSettings = getSystemSettingsLocked(userId); + final Setting currentSetting = systemSettings.getSettingLocked( + Settings.System.MUTE_STREAMS_AFFECTED); + if (!currentSetting.isNull()) { + try { + int currentSettingIntegerValue = Integer.parseInt( + currentSetting.getValue()); + if ((currentSettingIntegerValue + & (1 << AudioManager.STREAM_BLUETOOTH_SCO)) == 0) { + systemSettings.insertSettingLocked( + Settings.System.MUTE_STREAMS_AFFECTED, + Integer.toString( + currentSettingIntegerValue + | (1 << AudioManager.STREAM_BLUETOOTH_SCO)), + null, true, SettingsState.SYSTEM_PACKAGE_NAME); + } + } catch (NumberFormatException e) { + // remove the setting in case it is not a valid integer + Slog.w("Failed to parse integer value of MUTE_STREAMS_AFFECTED" + + "setting, removing setting", e); + systemSettings.deleteSettingLocked( + Settings.System.MUTE_STREAMS_AFFECTED); + } + + } + currentVersion = 182; + } + // vXXX: Add new settings above this point. if (currentVersion != newVersion) { diff --git a/packages/SystemUI/AndroidManifest.xml b/packages/SystemUI/AndroidManifest.xml index 7db8969e2e04..17274f418a1e 100644 --- a/packages/SystemUI/AndroidManifest.xml +++ b/packages/SystemUI/AndroidManifest.xml @@ -222,6 +222,9 @@ <!-- to change themes - light or dark --> <uses-permission android:name="android.permission.CHANGE_OVERLAY_PACKAGES" /> + <!-- Listen app op changes --> + <uses-permission android:name="android.permission.WATCH_APPOPS" /> + <!-- to read and change hvac values in a car --> <uses-permission android:name="android.car.permission.CONTROL_CAR_CLIMATE" /> @@ -641,7 +644,8 @@ <provider android:name="com.android.keyguard.clock.ClockOptionsProvider" android:authorities="com.android.keyguard.clock" - android:exported="true" + android:enabled="false" + android:exported="false" android:grantUriPermissions="true"> </provider> diff --git a/packages/SystemUI/legacy/recents/res/values-sk/strings.xml b/packages/SystemUI/legacy/recents/res/values-sk/strings.xml index cbffcaf836ec..9c3a8570d75e 100644 --- a/packages/SystemUI/legacy/recents/res/values-sk/strings.xml +++ b/packages/SystemUI/legacy/recents/res/values-sk/strings.xml @@ -20,7 +20,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="accessibility_desc_recent_apps" msgid="2427210347871321373">"Prehľad"</string> - <string name="accessibility_recents_item_will_be_dismissed" msgid="2355882496933479534">"Zrušiť aplikáciu <xliff:g id="APP">%s</xliff:g>."</string> + <string name="accessibility_recents_item_will_be_dismissed" msgid="2355882496933479534">"Zavrieť aplikáciu <xliff:g id="APP">%s</xliff:g>."</string> <string name="accessibility_recents_item_dismissed" msgid="4816790842084268400">"Aplikácia <xliff:g id="APP">%s</xliff:g> bola zrušená."</string> <string name="accessibility_recents_all_items_dismissed" msgid="5693205751863608046">"Všetky nedávne aplikácie boli zrušené."</string> <string name="accessibility_recents_item_open_app_info" msgid="3406797323476801016">"Otvoriť informácie o aplikácii <xliff:g id="APP">%s</xliff:g>."</string> diff --git a/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/RecentsActivity.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/RecentsActivity.java index 79c691cf45e1..a7ccc3a49073 100644 --- a/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/RecentsActivity.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/RecentsActivity.java @@ -323,7 +323,7 @@ public class RecentsActivity extends Activity implements ViewTreeObserver.OnPreD mColorExtractor = Dependency.get(SysuiColorExtractor.class); mColorExtractor.addOnColorsChangedListener(this); mUsingDarkText = mColorExtractor.getColors(ColorExtractor.TYPE_DARK, - WallpaperManager.FLAG_SYSTEM, true).supportsDarkText(); + WallpaperManager.FLAG_SYSTEM).supportsDarkText(); setTheme(mUsingDarkText ? R.style.RecentsTheme_Wallpaper_Light : R.style.RecentsTheme_Wallpaper); @@ -394,8 +394,6 @@ public class RecentsActivity extends Activity implements ViewTreeObserver.OnPreD @Override public void onColorsChanged(ColorExtractor colorExtractor, int which) { if ((which & WallpaperManager.FLAG_SYSTEM) != 0) { - // Recents doesn't care about the wallpaper being visible or not, it always - // wants to scrim with wallpaper colors ColorExtractor.GradientColors colors = mColorExtractor.getNeutralColors(); boolean darkText = colors.supportsDarkText(); if (darkText != mUsingDarkText) { diff --git a/packages/SystemUI/res-keyguard/values-de/strings.xml b/packages/SystemUI/res-keyguard/values-de/strings.xml index 3a4d013d2a2e..d8bb0103f628 100644 --- a/packages/SystemUI/res-keyguard/values-de/strings.xml +++ b/packages/SystemUI/res-keyguard/values-de/strings.xml @@ -55,7 +55,7 @@ <string name="keyguard_accessibility_password" msgid="7695303207740941101">"Gerätepasswort"</string> <string name="keyguard_accessibility_sim_pin_area" msgid="912702510825058921">"SIM-PIN-Bereich"</string> <string name="keyguard_accessibility_sim_puk_area" msgid="136979425761438705">"SIM-PUK-Bereich"</string> - <string name="keyguard_accessibility_next_alarm" msgid="5835196989158584991">"Nächster Wecker gestellt für <xliff:g id="ALARM">%1$s</xliff:g>"</string> + <string name="keyguard_accessibility_next_alarm" msgid="5835196989158584991">"Nächster Weckruf eingerichtet für <xliff:g id="ALARM">%1$s</xliff:g>"</string> <string name="keyboardview_keycode_delete" msgid="6883116827512721630">"Löschen"</string> <string name="disable_carrier_button_text" msgid="6914341927421916114">"eSIM deaktivieren"</string> <string name="error_disable_esim_title" msgid="4852978431156228006">"Die eSIM kann nicht deaktiviert werden"</string> diff --git a/packages/SystemUI/res-keyguard/values/styles.xml b/packages/SystemUI/res-keyguard/values/styles.xml index 9a042228435b..67c4458de2f2 100644 --- a/packages/SystemUI/res-keyguard/values/styles.xml +++ b/packages/SystemUI/res-keyguard/values/styles.xml @@ -111,7 +111,7 @@ <item name="android:colorBackground">@*android:color/background_material_dark</item> </style> - <style name="TextAppearance.Keyguard" parent="Theme.SystemUI"> + <style name="TextAppearance.Keyguard"> <item name="android:textSize">@dimen/widget_title_font_size</item> <item name="android:gravity">center</item> <item name="android:ellipsize">end</item> diff --git a/packages/SystemUI/res/layout/notif_half_shelf.xml b/packages/SystemUI/res/layout/notif_half_shelf.xml index a563bb579540..26c887231349 100644 --- a/packages/SystemUI/res/layout/notif_half_shelf.xml +++ b/packages/SystemUI/res/layout/notif_half_shelf.xml @@ -69,7 +69,7 @@ <Switch android:id="@+id/toggle" - android:layout_height="wrap_content" + android:layout_height="48dp" android:layout_width="wrap_content" android:layout_gravity="center_vertical" android:padding="8dp" /> diff --git a/packages/SystemUI/res/layout/notif_half_shelf_row.xml b/packages/SystemUI/res/layout/notif_half_shelf_row.xml index 1b804556d146..b95d5e9a43f6 100644 --- a/packages/SystemUI/res/layout/notif_half_shelf_row.xml +++ b/packages/SystemUI/res/layout/notif_half_shelf_row.xml @@ -71,7 +71,7 @@ <Switch android:id="@+id/toggle" - android:layout_height="wrap_content" + android:layout_height="48dp" android:layout_width="wrap_content" android:layout_gravity="center_vertical" android:padding="8dp" diff --git a/packages/SystemUI/res/layout/status_bar_notification_section_header.xml b/packages/SystemUI/res/layout/status_bar_notification_section_header.xml index d3eb9aeb1710..508619a27e81 100644 --- a/packages/SystemUI/res/layout/status_bar_notification_section_header.xml +++ b/packages/SystemUI/res/layout/status_bar_notification_section_header.xml @@ -22,6 +22,7 @@ android:focusable="true" android:clickable="true" > + <com.android.systemui.statusbar.notification.row.NotificationBackgroundView android:id="@+id/backgroundNormal" android:layout_width="match_parent" @@ -38,27 +39,7 @@ android:gravity="center_vertical" android:orientation="horizontal" > - <TextView - android:id="@+id/header_label" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_weight="1" - android:layout_marginStart="@dimen/notification_section_header_padding_left" - android:gravity="start" - android:textAlignment="gravity" - android:text="@string/notification_section_header_gentle" - android:textSize="12sp" - android:textColor="@color/notification_section_header_label_color" - /> - <ImageView - android:id="@+id/btn_clear_all" - android:layout_width="@dimen/notification_section_header_height" - android:layout_height="@dimen/notification_section_header_height" - android:layout_marginEnd="4dp" - android:src="@drawable/status_bar_notification_section_header_clear_btn" - android:contentDescription="@string/accessibility_notification_section_header_gentle_clear_all" - android:scaleType="center" - /> + <include layout="@layout/status_bar_notification_section_header_contents"/> </LinearLayout> <com.android.systemui.statusbar.notification.FakeShadowView diff --git a/packages/SystemUI/res/layout/status_bar_notification_section_header_contents.xml b/packages/SystemUI/res/layout/status_bar_notification_section_header_contents.xml new file mode 100644 index 000000000000..feabd1c72a65 --- /dev/null +++ b/packages/SystemUI/res/layout/status_bar_notification_section_header_contents.xml @@ -0,0 +1,41 @@ +<!-- + ~ 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 + --> + +<!-- Used by both status_bar_notification_header and SectionHeaderView --> +<merge xmlns:android="http://schemas.android.com/apk/res/android" > + <TextView + android:id="@+id/header_label" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_weight="1" + android:layout_marginStart="@dimen/notification_section_header_padding_left" + android:gravity="start" + android:textAlignment="gravity" + android:text="@string/notification_section_header_gentle" + android:textSize="12sp" + android:textColor="@color/notification_section_header_label_color" + android:fontFamily="@*android:string/config_headlineFontFamilyMedium" + /> + <ImageView + android:id="@+id/btn_clear_all" + android:layout_width="@dimen/notification_section_header_height" + android:layout_height="@dimen/notification_section_header_height" + android:layout_marginEnd="4dp" + android:src="@drawable/status_bar_notification_section_header_clear_btn" + android:contentDescription="@string/accessibility_notification_section_header_gentle_clear_all" + android:scaleType="center" + /> +</merge> diff --git a/packages/SystemUI/res/values-af/strings.xml b/packages/SystemUI/res/values-af/strings.xml index ed29a0861432..d3dccfda2244 100644 --- a/packages/SystemUI/res/values-af/strings.xml +++ b/packages/SystemUI/res/values-af/strings.xml @@ -375,8 +375,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"Tot sonsopkoms"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"Aan om <xliff:g id="TIME">%s</xliff:g>"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"Tot <xliff:g id="TIME">%s</xliff:g>"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"Donker-tema"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"Donker-tema\nBatterybespaarder"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"Donker-tema"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"Donker-tema\nBatterybespaarder"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"NFC"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"NFC is gedeaktiveer"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"NFC is geaktiveer"</string> @@ -453,7 +453,7 @@ <string name="battery_saver_notification_action_text" msgid="132118784269455533">"Skakel Batterybespaarder af"</string> <string name="media_projection_dialog_text" msgid="8585357687598538511">"Terwyl dit opneem of uitsaai, kan <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> enige sensitiewe inligting vasvang wat op jou skerm gewys word of op jou toestel gespeel word, insluitend sensitiewe inligting soos oudio, wagwoorde, betaalinligting, foto\'s en boodskappe."</string> <string name="media_projection_dialog_service_text" msgid="3075544489835858258">"Terwyl dit opneem of uitsaai, kan die diens wat hierdie taak uitvoer enige sensitiewe inligting vasvang wat op jou skerm gewys word of op jou toestel gespeel word, insluitend sensitiewe inligting soos oudio, wagwoorde, betaalinligting, foto\'s en boodskappe."</string> - <string name="media_projection_dialog_title" msgid="8124184308671641248">"Maak sensitiewe inligting tydens uitsending/opname openbaar"</string> + <string name="media_projection_dialog_title" msgid="8124184308671641248">"Bekendmaking van sensitiewe inligting tydens uitsending/opname"</string> <string name="media_projection_remember_text" msgid="3103510882172746752">"Moenie weer wys nie"</string> <string name="clear_all_notifications_text" msgid="814192889771462828">"Vee alles uit"</string> <string name="manage_notifications_text" msgid="2386728145475108753">"Bestuur"</string> @@ -778,7 +778,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"Hou en sleep om teëls by te voeg"</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"Hou en sleep om teëls te herrangskik"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"Sleep hierheen om te verwyder"</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"Jy moet minstens 6 teëls hê"</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"Jy moet minstens <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> teëls hê"</string> <string name="qs_edit" msgid="2232596095725105230">"Wysig"</string> <string name="tuner_time" msgid="6572217313285536011">"Tyd"</string> <string-array name="clock_options"> diff --git a/packages/SystemUI/res/values-am/strings.xml b/packages/SystemUI/res/values-am/strings.xml index ae79febe1d87..362dc2433226 100644 --- a/packages/SystemUI/res/values-am/strings.xml +++ b/packages/SystemUI/res/values-am/strings.xml @@ -375,8 +375,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"ጸሐይ እስክትወጣ ድረስ"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"<xliff:g id="TIME">%s</xliff:g> ላይ ይበራል"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"እስከ <xliff:g id="TIME">%s</xliff:g> ድረስ"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"ጨለማ ገጽታ"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"ጨለም ያለ ገጽታ\nየባትሪ ቆጣቢ"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"ጨለማ ገጽታ"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"ጨለም ያለ ገጽታ\nየባትሪ ቆጣቢ"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"ኤንኤፍሲ"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"ኤንኤፍሲ ተሰናክሏል"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"ኤንኤፍሲ ነቅቷል"</string> @@ -778,7 +778,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"ፋይሎችን ለማከል ይዘት ይጎትቱ"</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"ሰድሮችን ዳግም ለማስተካከል ይያዙ እና ይጎትቱ።"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"ለማስወገድ ወደዚህ ይጎትቱ"</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"ቢያንስ 6 ሰቆች ያስፈልገዎታል"</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"ቢያንስ <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> ሰቆች ያስፈልገዎታል"</string> <string name="qs_edit" msgid="2232596095725105230">"አርትዕ"</string> <string name="tuner_time" msgid="6572217313285536011">"ሰዓት"</string> <string-array name="clock_options"> diff --git a/packages/SystemUI/res/values-ar/strings.xml b/packages/SystemUI/res/values-ar/strings.xml index 46d5390c748c..0c90466e3e04 100644 --- a/packages/SystemUI/res/values-ar/strings.xml +++ b/packages/SystemUI/res/values-ar/strings.xml @@ -383,8 +383,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"حتى شروق الشمس"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"تفعيل الإعداد في <xliff:g id="TIME">%s</xliff:g>"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"حتى <xliff:g id="TIME">%s</xliff:g>"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"مظهر الألوان الداكنة"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"مظهر داكن\nتوفير شحن البطارية"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"مظهر داكن"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"مظهر داكن\nتوفير شحن البطارية"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"الاتصالات قصيرة المدى (NFC)"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"تم إيقاف الاتصال القريب المدى"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"تم تفعيل الاتصال القريب المدى"</string> @@ -541,7 +541,7 @@ <string name="accessibility_volume_settings" msgid="4915364006817819212">"إعدادات الصوت"</string> <string name="accessibility_volume_expand" msgid="5946812790999244205">"توسيع"</string> <string name="accessibility_volume_collapse" msgid="3609549593031810875">"تصغير"</string> - <string name="volume_odi_captions_tip" msgid="1193653197906918269">"ترجمة تلقائية للوسائط"</string> + <string name="volume_odi_captions_tip" msgid="1193653197906918269">"شرح تلقائي للوسائط"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"إغلاق نصيحة الشرح"</string> <string name="volume_odi_captions_content_description" msgid="2950736796270214785">"تراكب الشرح"</string> <string name="volume_odi_captions_hint_enable" msgid="49750248924730302">"تفعيل"</string> @@ -570,7 +570,7 @@ <string name="stream_notification" msgid="2563720670905665031">"الإشعار"</string> <string name="stream_bluetooth_sco" msgid="2055645746402746292">"بلوتوث"</string> <string name="stream_dtmf" msgid="2447177903892477915">"تردد ثنائي متعدد النغمات"</string> - <string name="stream_accessibility" msgid="301136219144385106">"إمكانية الوصول"</string> + <string name="stream_accessibility" msgid="301136219144385106">"سهولة الاستخدام"</string> <string name="ring_toggle_title" msgid="3281244519428819576">"المكالمات"</string> <string name="volume_ringer_status_normal" msgid="4273142424125855384">"استصدار رنين"</string> <string name="volume_ringer_status_vibrate" msgid="1825615171021346557">"اهتزاز"</string> @@ -578,8 +578,8 @@ <string name="qs_status_phone_vibrate" msgid="204362991135761679">"الهاتف في وضع الاهتزاز"</string> <string name="qs_status_phone_muted" msgid="5437668875879171548">"تم كتم الهاتف."</string> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. انقر لإلغاء التجاهل."</string> - <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. انقر للتعيين على الاهتزاز. قد يتم تجاهل خدمات إمكانية الوصول."</string> - <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. انقر للتجاهل. قد يتم تجاهل خدمات إمكانية الوصول."</string> + <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. انقر للتعيين على الاهتزاز. قد يتم تجاهل خدمات \"سهولة الاستخدام\"."</string> + <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. انقر للتجاهل. قد يتم تجاهل خدمات \"سهولة الاستخدام\"."</string> <string name="volume_stream_content_description_vibrate_a11y" msgid="6427727603978431301">"%1$s. انقر للتعيين على الاهتزاز."</string> <string name="volume_stream_content_description_mute_a11y" msgid="8995013018414535494">"%1$s. انقر لكتم الصوت."</string> <string name="volume_ringer_hint_mute" msgid="9199811307292269601">"كتم الصوت"</string> @@ -798,7 +798,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"اضغط باستمرار مع السحب لإضافة الميزات."</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"اضغط باستمرار مع السحب لإعادة ترتيب الميزات."</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"اسحب هنا للإزالة"</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"تحتاج إلى 6 مربعات على الأقل."</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"الحدّ الأدنى من عدد المربعات الذي تحتاج إليه هو <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g>"</string> <string name="qs_edit" msgid="2232596095725105230">"تعديل"</string> <string name="tuner_time" msgid="6572217313285536011">"الوقت"</string> <string-array name="clock_options"> diff --git a/packages/SystemUI/res/values-as/strings.xml b/packages/SystemUI/res/values-as/strings.xml index f7c11a90fdb8..085db3441068 100644 --- a/packages/SystemUI/res/values-as/strings.xml +++ b/packages/SystemUI/res/values-as/strings.xml @@ -375,8 +375,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"সূৰ্যোদয়ৰ লৈকে"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"<xliff:g id="TIME">%s</xliff:g>ত অন কৰক"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"<xliff:g id="TIME">%s</xliff:g> পৰ্যন্ত"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"গাঢ় ৰঙৰ থীম"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"গাঢ় ৰঙৰ থীম\nবেটাৰী সঞ্চয়কাৰী"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"গাঢ় ৰঙৰ থীম"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"গাঢ় ৰঙৰ থীম\nবেটাৰী সঞ্চয়কাৰী"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"NFC"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"NFC নিষ্ক্ৰিয় হৈ আছে"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"NFC সক্ষম হৈ আছে"</string> @@ -778,7 +778,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"টাইল যোগ কৰিবলৈ হেঁচি ধৰি টানি আনক"</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"টাইলসমূহ পুনৰ সজাবলৈ ধৰি টানক"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"আঁতৰাবৰ বাবে টানি আনি ইয়াত এৰি দিয়ক"</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"আপোনাক অতি কমেও ৬খন টাইল লাগিব"</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"আপোনাক অতিকমেও <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g>খন টাইল লাগিব"</string> <string name="qs_edit" msgid="2232596095725105230">"সম্পাদনা কৰক"</string> <string name="tuner_time" msgid="6572217313285536011">"সময়"</string> <string-array name="clock_options"> diff --git a/packages/SystemUI/res/values-az/strings.xml b/packages/SystemUI/res/values-az/strings.xml index 64d2b7e5296d..0fc16c413e55 100644 --- a/packages/SystemUI/res/values-az/strings.xml +++ b/packages/SystemUI/res/values-az/strings.xml @@ -375,8 +375,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"Şəfəq vaxtına qədər"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"<xliff:g id="TIME">%s</xliff:g> olduqda aktiv ediləcək"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"<xliff:g id="TIME">%s</xliff:g> vaxtına qədər"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"Tünd Tema"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"Tünd Tema\nEnerjiyə Qənaət"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"Tünd tema"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"Tünd tema\nEnerjiyə Qənaət"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"NFC"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"NFC deaktiv edilib"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"NFC aktiv edilib"</string> @@ -558,7 +558,7 @@ <string name="stream_notification" msgid="2563720670905665031">"Bildiriş"</string> <string name="stream_bluetooth_sco" msgid="2055645746402746292">"Bluetooth"</string> <string name="stream_dtmf" msgid="2447177903892477915">"Çoxsaylı ton olan ikili tezlik"</string> - <string name="stream_accessibility" msgid="301136219144385106">"Münasiblik"</string> + <string name="stream_accessibility" msgid="301136219144385106">"Əlçatımlılıq"</string> <string name="ring_toggle_title" msgid="3281244519428819576">"Zənglər"</string> <string name="volume_ringer_status_normal" msgid="4273142424125855384">"Zəng"</string> <string name="volume_ringer_status_vibrate" msgid="1825615171021346557">"Vibrasiya"</string> @@ -778,7 +778,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"Mozaika əlavə etmək üçün basıb saxlayaraq çəkin"</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"Mozaikaları yenidən təşkil etmək üçün basıb saxlayın və çəkin"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"Silmək üçün bura sürüşdürün"</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"Minimum 6 mozaikaya ehtiyacınız var"</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"Minimum <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> mozaika lazımdır"</string> <string name="qs_edit" msgid="2232596095725105230">"Redaktə edin"</string> <string name="tuner_time" msgid="6572217313285536011">"Vaxt"</string> <string-array name="clock_options"> diff --git a/packages/SystemUI/res/values-b+sr+Latn/strings.xml b/packages/SystemUI/res/values-b+sr+Latn/strings.xml index 70f94f36fbe0..7c9562510e54 100644 --- a/packages/SystemUI/res/values-b+sr+Latn/strings.xml +++ b/packages/SystemUI/res/values-b+sr+Latn/strings.xml @@ -377,8 +377,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"Do izlaska sunca"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"Uključuje se u <xliff:g id="TIME">%s</xliff:g>"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"Do <xliff:g id="TIME">%s</xliff:g>"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"Tamna tema"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"Tamna tema\nUšteda baterije"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"Tamna tema"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"Tamna tema\nUšteda baterije"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"NFC"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"NFC je onemogućen"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"NFC je omogućen"</string> @@ -783,7 +783,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"Zadržite i prevucite da biste dodali pločice"</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"Zadržite i prevucite da biste promenili raspored pločica"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"Prevucite ovde da biste uklonili"</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"Treba da izaberete najmanje 6 pločica"</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"Minimalan broj pločica je <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g>"</string> <string name="qs_edit" msgid="2232596095725105230">"Izmeni"</string> <string name="tuner_time" msgid="6572217313285536011">"Vreme"</string> <string-array name="clock_options"> diff --git a/packages/SystemUI/res/values-be/strings.xml b/packages/SystemUI/res/values-be/strings.xml index 62d308c8a3cc..2924bdeb7657 100644 --- a/packages/SystemUI/res/values-be/strings.xml +++ b/packages/SystemUI/res/values-be/strings.xml @@ -381,8 +381,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"Да ўсходу сонца"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"Уключыць у <xliff:g id="TIME">%s</xliff:g>"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"Да <xliff:g id="TIME">%s</xliff:g>"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"Цёмная тэма"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"Цёмная тэма\nЭканомія зараду"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"Цёмная тэма"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"Цёмная тэма\nЭканомія зараду"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"NFC"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"NFC адключаны"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"NFC уключаны"</string> @@ -537,7 +537,7 @@ <string name="accessibility_volume_settings" msgid="4915364006817819212">"Налады гуку"</string> <string name="accessibility_volume_expand" msgid="5946812790999244205">"Разгарнуць"</string> <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Згарнуць"</string> - <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Аўтаматычныя цітры"</string> + <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Аўтаматычныя субцітры"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Падказка \"Схавайце цітры\""</string> <string name="volume_odi_captions_content_description" msgid="2950736796270214785">"Накладанне субцітраў"</string> <string name="volume_odi_captions_hint_enable" msgid="49750248924730302">"уключыць"</string> @@ -664,7 +664,7 @@ <string name="notification_multichannel_desc" msgid="4695920306092240550">"Тут канфігурыраваць гэту групу апавяшчэнняў забаронена"</string> <string name="notification_delegate_header" msgid="2857691673814814270">"Праксіраванае апавяшчэнне"</string> <string name="notification_channel_dialog_title" msgid="5745335243729167866">"Усе апавяшчэнні праграмы \"<xliff:g id="APP_NAME">%1$s</xliff:g>\""</string> - <string name="see_more_title" msgid="5358726697042112726">"Разгарнуць"</string> + <string name="see_more_title" msgid="5358726697042112726">"Яшчэ"</string> <string name="appops_camera" msgid="8100147441602585776">"Гэта праграма выкарыстоўвае камеру."</string> <string name="appops_microphone" msgid="741508267659494555">"Гэта праграма выкарыстоўвае мікрафон."</string> <string name="appops_overlay" msgid="6165912637560323464">"Гэта праграма паказваецца на экране паверх іншых праграм."</string> @@ -790,7 +790,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"Перацягніце патрэбныя пліткі"</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"Каб змяніць парадак плітак, утрымлівайце і перацягвайце іх"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"Перацягніце сюды, каб выдаліць"</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"Трэба па меншай меры 6 плітак"</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"Мінімальная колькасць плітак: <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g>"</string> <string name="qs_edit" msgid="2232596095725105230">"Рэдагаваць"</string> <string name="tuner_time" msgid="6572217313285536011">"Час"</string> <string-array name="clock_options"> @@ -945,6 +945,6 @@ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"Перамясціць лявей і ніжэй"</string> <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"Перамясціць правей і ніжэй"</string> <string name="bubble_dismiss_text" msgid="8028337712674081668">"Адхіліць"</string> - <string name="notification_content_system_nav_changed" msgid="7218093915747788444">"Сістэма навігацыі абноўлена. Каб унесці змяненні, перайдзіце ў Налады."</string> - <string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"Перайдзіце ў Налады, каб абнавіць сістэму навігацыі"</string> + <string name="notification_content_system_nav_changed" msgid="7218093915747788444">"Навігацыя ў сістэме абноўлена. Каб унесці змяненні, перайдзіце ў Налады."</string> + <string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"Перайдзіце ў Налады, каб абнавіць параметры навігацыі ў сістэме"</string> </resources> diff --git a/packages/SystemUI/res/values-bg/strings.xml b/packages/SystemUI/res/values-bg/strings.xml index 02768d197bc0..c2fdf92ce9ba 100644 --- a/packages/SystemUI/res/values-bg/strings.xml +++ b/packages/SystemUI/res/values-bg/strings.xml @@ -375,8 +375,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"До изгрев"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"Ще се включи в <xliff:g id="TIME">%s</xliff:g>"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"До <xliff:g id="TIME">%s</xliff:g>"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"Тъмна тема"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"Тъмна тема\nРежим за запазв. на батерията"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"Тъмна тема"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"Тъмна тема\nЗапазване на батерията: Режим"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"КБП"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"КБП е деактивирана"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"КБП е активирана"</string> @@ -778,7 +778,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"Задръжте и плъзнете, за да добавите плочки"</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"Задръжте и плъзнете, за да пренаредите плочките"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"Преместете тук с плъзгане за премахване"</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"Трябва да останат поне 6 плочки"</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"Трябва да останат поне <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> плочки"</string> <string name="qs_edit" msgid="2232596095725105230">"Редактиране"</string> <string name="tuner_time" msgid="6572217313285536011">"Час"</string> <string-array name="clock_options"> diff --git a/packages/SystemUI/res/values-bn/strings.xml b/packages/SystemUI/res/values-bn/strings.xml index 8a8687f92da3..5ed858c18d9d 100644 --- a/packages/SystemUI/res/values-bn/strings.xml +++ b/packages/SystemUI/res/values-bn/strings.xml @@ -375,8 +375,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"সূর্যোদয় পর্যন্ত"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"<xliff:g id="TIME">%s</xliff:g> এ চালু হবে"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"<xliff:g id="TIME">%s</xliff:g> পর্যন্ত"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"গাঢ় থিম"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"গাঢ় থিম\nব্যাটারি সেভার"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"গাঢ় থিম"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"গাঢ় থিম\nব্যাটারি সেভার"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"NFC"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"NFC অক্ষম করা আছে"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"NFC সক্ষম করা আছে"</string> diff --git a/packages/SystemUI/res/values-bs/strings.xml b/packages/SystemUI/res/values-bs/strings.xml index 75e0ba937f8b..61c8c8ab2c16 100644 --- a/packages/SystemUI/res/values-bs/strings.xml +++ b/packages/SystemUI/res/values-bs/strings.xml @@ -377,8 +377,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"Do svitanja"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"Uključuje se u <xliff:g id="TIME">%s</xliff:g>"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"Do <xliff:g id="TIME">%s</xliff:g>"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"Tamna tema"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"Tamna tema\nUšteda baterije"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"Tamna tema"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"Tamna tema\nUšteda baterije"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"NFC"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"NFC je onemogućen"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"NFC je omogućen"</string> @@ -785,7 +785,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"Držite i prevucite da dodate polja"</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"Držite i prevucite da preuredite polja"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"Prevucite ovdje za uklanjanje"</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"Trebate najmanje šest polja"</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"Broj polja mora biti najmanje <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g>"</string> <string name="qs_edit" msgid="2232596095725105230">"Uredite"</string> <string name="tuner_time" msgid="6572217313285536011">"Vrijeme"</string> <string-array name="clock_options"> diff --git a/packages/SystemUI/res/values-ca/strings.xml b/packages/SystemUI/res/values-ca/strings.xml index e29908f128dc..381c70b29808 100644 --- a/packages/SystemUI/res/values-ca/strings.xml +++ b/packages/SystemUI/res/values-ca/strings.xml @@ -375,8 +375,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"Fins a l\'alba"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"S\'activarà a les <xliff:g id="TIME">%s</xliff:g>"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"Fins a les <xliff:g id="TIME">%s</xliff:g>"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"Tema fosc"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"Tema fosc\nEstalvi de bateria"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"Tema fosc"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"Tema fosc\nEstalvi de bateria"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"NFC"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"L\'NFC està desactivada"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"L\'NFC està activada"</string> @@ -412,10 +412,10 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"Silenci\ntotal"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"Només\ninterr. prior."</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"Només\nalarmes"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="6959284458466962592">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • S\'està carregant sense fil (temps restant: <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • S\'està carregant (temps restant: <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> + <string name="keyguard_indication_charging_time_wireless" msgid="6959284458466962592">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • S\'està carregant sense fil (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> per completar la càrrega)"</string> + <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • S\'està carregant (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> per completar la càrrega)"</string> <string name="keyguard_indication_charging_time_fast" msgid="7767562163577492332">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Carregant ràpidament (temps restant: <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="3769655133567307069">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Carregant lentament (temps restant: <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> + <string name="keyguard_indication_charging_time_slowly" msgid="3769655133567307069">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Carregant lentament (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> per completar la càrrega)"</string> <string name="accessibility_multi_user_switch_switcher" msgid="7305948938141024937">"Canvia d\'usuari"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="8434880595284601601">"Canvia d\'usuari. Usuari actual: <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="1424081831468083402">"Usuari actual: <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -451,8 +451,8 @@ <string name="battery_saver_notification_title" msgid="8614079794522291840">"S\'ha activat l\'estalvi de bateria"</string> <string name="battery_saver_notification_text" msgid="820318788126672692">"Redueix el rendiment i l\'ús de les dades en segon pla."</string> <string name="battery_saver_notification_action_text" msgid="132118784269455533">"Desactiva l\'estalvi de bateria"</string> - <string name="media_projection_dialog_text" msgid="8585357687598538511">"Quan graves o emets contingut, <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> pot capturar la informació sensible que es mostri a la pantalla o que reprodueixi el dispositiu, com ara àudio, contrasenyes, informació de pagament, fotos i missatges."</string> - <string name="media_projection_dialog_service_text" msgid="3075544489835858258">"Quan graves o emets contingut, el servei que ofereix aquesta funció pot capturar informació sensible que es mostri a la pantalla o que reprodueixi el dispositiu, com ara àudio, contrasenyes, informació de pagament, fotos i missatges."</string> + <string name="media_projection_dialog_text" msgid="8585357687598538511">"Quan graves o emets contingut, <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> pot capturar la informació sensible que es mostri a la pantalla o que es reprodueixi al dispositiu, com ara àudio, contrasenyes, informació de pagament, fotos i missatges."</string> + <string name="media_projection_dialog_service_text" msgid="3075544489835858258">"Quan graves o emets contingut, el servei que ofereix aquesta funció pot capturar informació sensible que es mostri a la pantalla o que es reprodueixi al dispositiu, com ara àudio, contrasenyes, informació de pagament, fotos i missatges."</string> <string name="media_projection_dialog_title" msgid="8124184308671641248">"Es mostra informació sensible durant l\'emissió o la gravació"</string> <string name="media_projection_remember_text" msgid="3103510882172746752">"No ho tornis a mostrar"</string> <string name="clear_all_notifications_text" msgid="814192889771462828">"Esborra-ho tot"</string> @@ -529,7 +529,7 @@ <string name="accessibility_volume_settings" msgid="4915364006817819212">"Configuració del so"</string> <string name="accessibility_volume_expand" msgid="5946812790999244205">"Amplia"</string> <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Replega"</string> - <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Subtítols automàtics"</string> + <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Subtitula el contingut multimèdia automàticament"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Tanca el consell sobre subtítols"</string> <string name="volume_odi_captions_content_description" msgid="2950736796270214785">"Superposició de subtítols"</string> <string name="volume_odi_captions_hint_enable" msgid="49750248924730302">"activar"</string> @@ -778,7 +778,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"Mantén premut i arrossega per afegir mosaics"</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"Mantén premut i arrossega per reorganitzar els mosaics"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"Arrossega aquí per suprimir una funció"</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"Necessites com a mínim 6 mosaics"</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"Necessites com a mínim <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> mosaics"</string> <string name="qs_edit" msgid="2232596095725105230">"Edita"</string> <string name="tuner_time" msgid="6572217313285536011">"Hora"</string> <string-array name="clock_options"> diff --git a/packages/SystemUI/res/values-cs/strings.xml b/packages/SystemUI/res/values-cs/strings.xml index 5861873429c1..9cee77836218 100644 --- a/packages/SystemUI/res/values-cs/strings.xml +++ b/packages/SystemUI/res/values-cs/strings.xml @@ -197,7 +197,7 @@ <string name="carrier_network_change_mode" msgid="8149202439957837762">"Probíhá změna sítě operátora"</string> <string name="accessibility_battery_details" msgid="7645516654955025422">"Otevřít podrobnosti o baterii"</string> <string name="accessibility_battery_level" msgid="7451474187113371965">"Stav baterie: <xliff:g id="NUMBER">%d</xliff:g> procent."</string> - <string name="accessibility_battery_level_with_estimate" msgid="9033100930684311630">"Baterie je nabitá na <xliff:g id="PERCENTAGE">%1$s</xliff:g> %, při vašem používání vydrží ještě <xliff:g id="TIME">%2$s</xliff:g>"</string> + <string name="accessibility_battery_level_with_estimate" msgid="9033100930684311630">"Baterie je nabitá na <xliff:g id="PERCENTAGE">%1$s</xliff:g> procent, při vašem používání vydrží ještě <xliff:g id="TIME">%2$s</xliff:g>"</string> <string name="accessibility_battery_level_charging" msgid="1147587904439319646">"Baterie se nabíjí. Nabito: <xliff:g id="BATTERY_PERCENTAGE">%d</xliff:g> %%"</string> <string name="accessibility_settings_button" msgid="799583911231893380">"Systémová nastavení."</string> <string name="accessibility_notifications_button" msgid="4498000369779421892">"Oznámení."</string> @@ -379,8 +379,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"Do svítání"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"Zapnout v <xliff:g id="TIME">%s</xliff:g>"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"Do <xliff:g id="TIME">%s</xliff:g>"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"Tmavé téma"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"Tmavý motiv\nSpořič baterie"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"Tmavý motiv"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"Tmavý motiv\nSpořič baterie"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"NFC"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"NFC je vypnuto"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"NFC je zapnuto"</string> @@ -535,7 +535,7 @@ <string name="accessibility_volume_settings" msgid="4915364006817819212">"Nastavení zvuku"</string> <string name="accessibility_volume_expand" msgid="5946812790999244205">"Rozbalit"</string> <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Sbalit"</string> - <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Automatické titulky k médiím"</string> + <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Automatické přepisy médií"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Tip k titulkům"</string> <string name="volume_odi_captions_content_description" msgid="2950736796270214785">"Překryvná vrstva titulků"</string> <string name="volume_odi_captions_hint_enable" msgid="49750248924730302">"aktivovat"</string> @@ -788,7 +788,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"Dlaždice přidáte podržením a přetažením"</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"Dlaždice můžete uspořádat podržením a přetažením"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"Přetažením sem dlaždice odstraníte"</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"Potřebujete minimálně šest dlaždic"</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"Potřebujete alespoň tento počet dlaždic: <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g>"</string> <string name="qs_edit" msgid="2232596095725105230">"Upravit"</string> <string name="tuner_time" msgid="6572217313285536011">"Čas"</string> <string-array name="clock_options"> diff --git a/packages/SystemUI/res/values-da/strings.xml b/packages/SystemUI/res/values-da/strings.xml index 489b78532ebd..271fa6915836 100644 --- a/packages/SystemUI/res/values-da/strings.xml +++ b/packages/SystemUI/res/values-da/strings.xml @@ -375,8 +375,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"Indtil solopgang"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"Tænd kl. <xliff:g id="TIME">%s</xliff:g>"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"Indtil <xliff:g id="TIME">%s</xliff:g>"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"Mørkt tema"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"Mørkt tema\nBatterisparefunktion"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"Mørkt tema"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"Mørkt tema\nBatterisparefunktion"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"NFC"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"NFC er deaktiveret"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"NFC er aktiveret"</string> @@ -778,7 +778,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"Tilføj felter ved at holde dem nede og trække"</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"Flyt rundt på felterne ved at holde dem nede og trække"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"Træk herhen for at fjerne"</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"Du skal bruge mindst seks felter"</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"Du skal bruge mindst <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> felter"</string> <string name="qs_edit" msgid="2232596095725105230">"Rediger"</string> <string name="tuner_time" msgid="6572217313285536011">"Tid"</string> <string-array name="clock_options"> @@ -832,7 +832,7 @@ <string name="pip_phone_minimize" msgid="1079119422589131792">"Minimer"</string> <string name="pip_phone_close" msgid="8416647892889710330">"Luk"</string> <string name="pip_phone_settings" msgid="8080777499521528521">"Indstillinger"</string> - <string name="pip_phone_dismiss_hint" msgid="6351678169095923899">"Træk ned for at afvise"</string> + <string name="pip_phone_dismiss_hint" msgid="6351678169095923899">"Træk ned for at fjerne"</string> <string name="pip_menu_title" msgid="4707292089961887657">"Menu"</string> <string name="pip_notification_title" msgid="3204024940158161322">"<xliff:g id="NAME">%s</xliff:g> vises som integreret billede"</string> <string name="pip_notification_message" msgid="5619512781514343311">"Hvis du ikke ønsker, at <xliff:g id="NAME">%s</xliff:g> skal benytte denne funktion, kan du åbne indstillingerne og deaktivere den."</string> diff --git a/packages/SystemUI/res/values-de/strings.xml b/packages/SystemUI/res/values-de/strings.xml index b1f8e7dabf5f..5d659c6ff636 100644 --- a/packages/SystemUI/res/values-de/strings.xml +++ b/packages/SystemUI/res/values-de/strings.xml @@ -26,7 +26,7 @@ <string name="status_bar_latest_events_title" msgid="6594767438577593172">"Benachrichtigungen"</string> <string name="battery_low_title" msgid="9187898087363540349">"Der Akku ist fast leer"</string> <string name="battery_low_percent_format" msgid="2900940511201380775">"<xliff:g id="PERCENTAGE">%s</xliff:g> verbleibend"</string> - <string name="battery_low_percent_format_hybrid" msgid="6838677459286775617">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> ausstehend; noch ca. <xliff:g id="TIME">%2$s</xliff:g>, basierend auf deiner Nutzung"</string> + <string name="battery_low_percent_format_hybrid" msgid="6838677459286775617">"Noch <xliff:g id="PERCENTAGE">%1$s</xliff:g> übrig; bei deinem Nutzungsmuster hast du noch ca. <xliff:g id="TIME">%2$s</xliff:g>"</string> <string name="battery_low_percent_format_hybrid_short" msgid="9025795469949145586">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> ausstehend; noch ca. <xliff:g id="TIME">%2$s</xliff:g>"</string> <string name="battery_low_percent_format_saver_started" msgid="7879389868952879166">"Noch <xliff:g id="PERCENTAGE">%s</xliff:g>. Der Energiesparmodus ist aktiviert."</string> <string name="invalid_charger" msgid="2741987096648693172">"Aufladen über USB nicht möglich. Verwende das mit dem Gerät gelieferte Ladegerät."</string> @@ -199,7 +199,7 @@ <!-- String.format failed for translation --> <!-- no translation found for accessibility_battery_level (7451474187113371965) --> <skip /> - <string name="accessibility_battery_level_with_estimate" msgid="9033100930684311630">"Akku bei <xliff:g id="PERCENTAGE">%1$s</xliff:g> %, noch etwa <xliff:g id="TIME">%2$s</xliff:g>, basierend auf deiner Nutzung"</string> + <string name="accessibility_battery_level_with_estimate" msgid="9033100930684311630">"Akku bei <xliff:g id="PERCENTAGE">%1$s</xliff:g> Prozent. Bei deinem Nutzungsmuster hast du noch Strom für etwa <xliff:g id="TIME">%2$s</xliff:g>"</string> <!-- String.format failed for translation --> <!-- no translation found for accessibility_battery_level_charging (1147587904439319646) --> <skip /> @@ -234,7 +234,7 @@ <string name="accessibility_quick_settings_airplane_changed_off" msgid="66846307818850664">"Der Flugmodus ist deaktiviert."</string> <string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"Der Flugmodus ist aktiviert."</string> <string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"lautlos"</string> - <string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"nur Wecker"</string> + <string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"nur Weckrufe"</string> <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"Nicht stören."</string> <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"\"Bitte nicht stören\" deaktiviert."</string> <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"\"Bitte nicht stören\" aktiviert"</string> @@ -304,7 +304,7 @@ <string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"Halte die Symbole gedrückt, um weitere Optionen zu sehen"</string> <string name="quick_settings_dnd_label" msgid="7112342227663678739">"Bitte nicht stören"</string> <string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"Nur wichtige Unterbrechungen"</string> - <string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"Nur Wecker"</string> + <string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"Nur Weckrufe"</string> <string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"Lautlos"</string> <string name="quick_settings_bluetooth_label" msgid="6304190285170721401">"Bluetooth"</string> <string name="quick_settings_bluetooth_multiple_devices_label" msgid="3912245565613684735">"Bluetooth (<xliff:g id="NUMBER">%d</xliff:g> Geräte)"</string> @@ -379,8 +379,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"Bis Sonnenaufgang"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"An um <xliff:g id="TIME">%s</xliff:g>"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"Bis <xliff:g id="TIME">%s</xliff:g>"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"Dunkles Design"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"Dunkles Design\nEnergiesparmodus"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"Dunkles Design"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"Dunkles Design\nEnergiesparmodus"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"NFC"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"NFC ist deaktiviert"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"NFC ist aktiviert"</string> @@ -412,7 +412,7 @@ <string name="interruption_level_none_with_warning" msgid="5114872171614161084">"Lautlos. Damit werden auch Screenreader stummgeschaltet."</string> <string name="interruption_level_none" msgid="6000083681244492992">"Lautlos"</string> <string name="interruption_level_priority" msgid="6426766465363855505">"Nur wichtige Unterbrechungen"</string> - <string name="interruption_level_alarms" msgid="5226306993448328896">"Nur Wecker"</string> + <string name="interruption_level_alarms" msgid="5226306993448328896">"Nur Weckrufe"</string> <string name="interruption_level_none_twoline" msgid="3957581548190765889">"Laut-\nlos"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"Nur\nwichtige"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"Nur\nWecker"</string> @@ -596,7 +596,7 @@ <string name="enable_demo_mode" msgid="4844205668718636518">"Demomodus aktivieren"</string> <string name="show_demo_mode" msgid="2018336697782464029">"Demomodus anzeigen"</string> <string name="status_bar_ethernet" msgid="5044290963549500128">"Ethernet"</string> - <string name="status_bar_alarm" msgid="8536256753575881818">"Wecker"</string> + <string name="status_bar_alarm" msgid="8536256753575881818">"Weckruf"</string> <string name="status_bar_work" msgid="6022553324802866373">"Arbeitsprofil"</string> <string name="status_bar_airplane" msgid="7057575501472249002">"Flugmodus"</string> <string name="add_tile" msgid="2995389510240786221">"Kachel hinzufügen"</string> @@ -782,7 +782,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"Zum Hinzufügen von Kacheln Kachel halten und ziehen"</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"Zum Verschieben der Kacheln Kachel halten und ziehen"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"Zum Entfernen hierher ziehen"</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"Du brauchst mindestens sechs Kacheln"</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"Du brauchst mindestens <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> Kacheln"</string> <string name="qs_edit" msgid="2232596095725105230">"Bearbeiten"</string> <string name="tuner_time" msgid="6572217313285536011">"Uhrzeit"</string> <string-array name="clock_options"> @@ -823,7 +823,7 @@ <string name="accessibility_quick_settings_settings" msgid="6132460890024942157">"Einstellungen öffnen."</string> <string name="accessibility_quick_settings_expand" msgid="2375165227880477530">"Schnelleinstellungen öffnen."</string> <string name="accessibility_quick_settings_collapse" msgid="1792625797142648105">"Schnelleinstellungen schließen."</string> - <string name="accessibility_quick_settings_alarm_set" msgid="1863000242431528676">"Wecker eingestellt."</string> + <string name="accessibility_quick_settings_alarm_set" msgid="1863000242431528676">"Weckruf eingerichtet."</string> <string name="accessibility_quick_settings_user" msgid="1567445362870421770">"Angemeldet als <xliff:g id="ID_1">%s</xliff:g>"</string> <string name="data_connection_no_internet" msgid="4503302451650972989">"Kein Internet"</string> <string name="accessibility_quick_settings_open_details" msgid="4230931801728005194">"Details öffnen."</string> @@ -937,6 +937,6 @@ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"Nach unten links verschieben"</string> <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"Nach unten rechts verschieben"</string> <string name="bubble_dismiss_text" msgid="8028337712674081668">"Schließen"</string> - <string name="notification_content_system_nav_changed" msgid="7218093915747788444">"Systemsteuerung wurde aktualisiert. Änderungen kannst du in den \"Einstellungen\" vornehmen."</string> - <string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"Gehe zu den Einstellungen, um die Systemsteuerung zu aktualisieren"</string> + <string name="notification_content_system_nav_changed" msgid="7218093915747788444">"Systemsteuerungseinstellungen wurden angepasst. Änderungen kannst du in den Einstellungen vornehmen."</string> + <string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"Gehe zu den Einstellungen, um die Systemsteuerung anzupassen"</string> </resources> diff --git a/packages/SystemUI/res/values-el/strings.xml b/packages/SystemUI/res/values-el/strings.xml index 63a16f45fbf9..c232ad648a2f 100644 --- a/packages/SystemUI/res/values-el/strings.xml +++ b/packages/SystemUI/res/values-el/strings.xml @@ -375,8 +375,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"Μέχρι την ανατολή"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"Ενεργοποίηση στις <xliff:g id="TIME">%s</xliff:g>"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"Έως τις <xliff:g id="TIME">%s</xliff:g>"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"Σκούρο θέμα"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"Σκούρο θέμα\nΕξοικονόμηση μπαταρίας"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"Σκούρο θέμα"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"Σκούρο θέμα\nΕξοικονόμηση μπαταρίας"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"NFC"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"Το NFC είναι απενεργοποιημένο"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"Το NFC είναι ενεργοποιημένο"</string> @@ -778,7 +778,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"Κρατήστε και σύρετε για την προσθήκη πλακιδίων"</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"Κρατήστε και σύρετε για αναδιάταξη των πλακιδίων"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"Σύρετε εδώ για κατάργηση"</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"Απαιτούνται τουλάχιστον 6 πλακίδια"</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"Χρειάζεστε τουλάχιστον <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> πλακίδια"</string> <string name="qs_edit" msgid="2232596095725105230">"Επεξεργασία"</string> <string name="tuner_time" msgid="6572217313285536011">"Ώρα"</string> <string-array name="clock_options"> diff --git a/packages/SystemUI/res/values-en-rAU/strings.xml b/packages/SystemUI/res/values-en-rAU/strings.xml index db9ed9cdb011..41d3aeaea78a 100644 --- a/packages/SystemUI/res/values-en-rAU/strings.xml +++ b/packages/SystemUI/res/values-en-rAU/strings.xml @@ -375,8 +375,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"Until sunrise"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"On at <xliff:g id="TIME">%s</xliff:g>"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"Until <xliff:g id="TIME">%s</xliff:g>"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"Dark Theme"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"Dark theme\nBattery saver"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"Dark theme"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"Dark theme\nBattery Saver"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"NFC"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"NFC is disabled"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"NFC is enabled"</string> @@ -529,7 +529,7 @@ <string name="accessibility_volume_settings" msgid="4915364006817819212">"Sound settings"</string> <string name="accessibility_volume_expand" msgid="5946812790999244205">"Expand"</string> <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Collapse"</string> - <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Automatically caption media"</string> + <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Automatically subtitle media"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Close captions tip"</string> <string name="volume_odi_captions_content_description" msgid="2950736796270214785">"Captions overlay"</string> <string name="volume_odi_captions_hint_enable" msgid="49750248924730302">"enable"</string> @@ -778,7 +778,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"Hold and drag to add tiles"</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"Hold and drag to rearrange tiles"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"Drag here to remove"</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"You need at least 6 tiles"</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"You need at least <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> tiles"</string> <string name="qs_edit" msgid="2232596095725105230">"Edit"</string> <string name="tuner_time" msgid="6572217313285536011">"Time"</string> <string-array name="clock_options"> diff --git a/packages/SystemUI/res/values-en-rCA/strings.xml b/packages/SystemUI/res/values-en-rCA/strings.xml index 1a85de5990a7..5364da5928a7 100644 --- a/packages/SystemUI/res/values-en-rCA/strings.xml +++ b/packages/SystemUI/res/values-en-rCA/strings.xml @@ -375,8 +375,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"Until sunrise"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"On at <xliff:g id="TIME">%s</xliff:g>"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"Until <xliff:g id="TIME">%s</xliff:g>"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"Dark Theme"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"Dark theme\nBattery saver"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"Dark theme"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"Dark theme\nBattery Saver"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"NFC"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"NFC is disabled"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"NFC is enabled"</string> @@ -529,7 +529,7 @@ <string name="accessibility_volume_settings" msgid="4915364006817819212">"Sound settings"</string> <string name="accessibility_volume_expand" msgid="5946812790999244205">"Expand"</string> <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Collapse"</string> - <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Automatically caption media"</string> + <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Automatically subtitle media"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Close captions tip"</string> <string name="volume_odi_captions_content_description" msgid="2950736796270214785">"Captions overlay"</string> <string name="volume_odi_captions_hint_enable" msgid="49750248924730302">"enable"</string> @@ -778,7 +778,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"Hold and drag to add tiles"</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"Hold and drag to rearrange tiles"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"Drag here to remove"</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"You need at least 6 tiles"</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"You need at least <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> tiles"</string> <string name="qs_edit" msgid="2232596095725105230">"Edit"</string> <string name="tuner_time" msgid="6572217313285536011">"Time"</string> <string-array name="clock_options"> diff --git a/packages/SystemUI/res/values-en-rGB/strings.xml b/packages/SystemUI/res/values-en-rGB/strings.xml index db9ed9cdb011..41d3aeaea78a 100644 --- a/packages/SystemUI/res/values-en-rGB/strings.xml +++ b/packages/SystemUI/res/values-en-rGB/strings.xml @@ -375,8 +375,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"Until sunrise"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"On at <xliff:g id="TIME">%s</xliff:g>"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"Until <xliff:g id="TIME">%s</xliff:g>"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"Dark Theme"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"Dark theme\nBattery saver"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"Dark theme"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"Dark theme\nBattery Saver"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"NFC"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"NFC is disabled"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"NFC is enabled"</string> @@ -529,7 +529,7 @@ <string name="accessibility_volume_settings" msgid="4915364006817819212">"Sound settings"</string> <string name="accessibility_volume_expand" msgid="5946812790999244205">"Expand"</string> <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Collapse"</string> - <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Automatically caption media"</string> + <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Automatically subtitle media"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Close captions tip"</string> <string name="volume_odi_captions_content_description" msgid="2950736796270214785">"Captions overlay"</string> <string name="volume_odi_captions_hint_enable" msgid="49750248924730302">"enable"</string> @@ -778,7 +778,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"Hold and drag to add tiles"</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"Hold and drag to rearrange tiles"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"Drag here to remove"</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"You need at least 6 tiles"</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"You need at least <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> tiles"</string> <string name="qs_edit" msgid="2232596095725105230">"Edit"</string> <string name="tuner_time" msgid="6572217313285536011">"Time"</string> <string-array name="clock_options"> diff --git a/packages/SystemUI/res/values-en-rIN/strings.xml b/packages/SystemUI/res/values-en-rIN/strings.xml index db9ed9cdb011..41d3aeaea78a 100644 --- a/packages/SystemUI/res/values-en-rIN/strings.xml +++ b/packages/SystemUI/res/values-en-rIN/strings.xml @@ -375,8 +375,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"Until sunrise"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"On at <xliff:g id="TIME">%s</xliff:g>"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"Until <xliff:g id="TIME">%s</xliff:g>"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"Dark Theme"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"Dark theme\nBattery saver"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"Dark theme"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"Dark theme\nBattery Saver"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"NFC"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"NFC is disabled"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"NFC is enabled"</string> @@ -529,7 +529,7 @@ <string name="accessibility_volume_settings" msgid="4915364006817819212">"Sound settings"</string> <string name="accessibility_volume_expand" msgid="5946812790999244205">"Expand"</string> <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Collapse"</string> - <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Automatically caption media"</string> + <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Automatically subtitle media"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Close captions tip"</string> <string name="volume_odi_captions_content_description" msgid="2950736796270214785">"Captions overlay"</string> <string name="volume_odi_captions_hint_enable" msgid="49750248924730302">"enable"</string> @@ -778,7 +778,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"Hold and drag to add tiles"</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"Hold and drag to rearrange tiles"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"Drag here to remove"</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"You need at least 6 tiles"</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"You need at least <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> tiles"</string> <string name="qs_edit" msgid="2232596095725105230">"Edit"</string> <string name="tuner_time" msgid="6572217313285536011">"Time"</string> <string-array name="clock_options"> diff --git a/packages/SystemUI/res/values-en-rXC/strings.xml b/packages/SystemUI/res/values-en-rXC/strings.xml index c176856cc590..d12e881081c8 100644 --- a/packages/SystemUI/res/values-en-rXC/strings.xml +++ b/packages/SystemUI/res/values-en-rXC/strings.xml @@ -375,8 +375,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"Until sunrise"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"On at <xliff:g id="TIME">%s</xliff:g>"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"Until <xliff:g id="TIME">%s</xliff:g>"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"Dark Theme"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"Dark Theme\nBattery saver"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"Dark theme"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"Dark theme\nBattery saver"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"NFC"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"NFC is disabled"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"NFC is enabled"</string> @@ -778,7 +778,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"Hold and drag to add tiles"</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"Hold and drag to rearrange tiles"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"Drag here to remove"</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"You need at least 6 tiles"</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"You need at least <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> tiles"</string> <string name="qs_edit" msgid="2232596095725105230">"Edit"</string> <string name="tuner_time" msgid="6572217313285536011">"Time"</string> <string-array name="clock_options"> diff --git a/packages/SystemUI/res/values-es-rUS/strings.xml b/packages/SystemUI/res/values-es-rUS/strings.xml index de09ed88dc6d..c4cf829363ee 100644 --- a/packages/SystemUI/res/values-es-rUS/strings.xml +++ b/packages/SystemUI/res/values-es-rUS/strings.xml @@ -215,7 +215,7 @@ <string name="accessibility_notification_dismissed" msgid="854211387186306927">"Notificación ignorada"</string> <string name="accessibility_desc_notification_shade" msgid="4690274844447504208">"Pantalla de notificaciones"</string> <string name="accessibility_desc_quick_settings" msgid="6186378411582437046">"Configuración rápida"</string> - <string name="accessibility_desc_lock_screen" msgid="5625143713611759164">"Pantalla bloqueada"</string> + <string name="accessibility_desc_lock_screen" msgid="5625143713611759164">"Pantalla de bloqueo"</string> <string name="accessibility_desc_settings" msgid="3417884241751434521">"Configuración"</string> <string name="accessibility_desc_recent_apps" msgid="4876900986661819788">"Recientes"</string> <string name="accessibility_desc_work_lock" msgid="4288774420752813383">"Pantalla bloqueada del perfil de trabajo"</string> @@ -375,8 +375,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"Hasta el amanecer"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"A la(s) <xliff:g id="TIME">%s</xliff:g>"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"Hasta <xliff:g id="TIME">%s</xliff:g>"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"Tema oscuro"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"Tema oscuro\nAhorro de batería"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"Tema oscuro"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"Tema oscuro\nAhorro de batería"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"NFC"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"La tecnología NFC está inhabilitada"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"La tecnología NFC está habilitada"</string> @@ -778,7 +778,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"Mantén presionado y arrastra para agregar mosaicos"</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"Mantén presionado y arrastra para reorganizar los mosaicos"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"Arrastra aquí para quitar"</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"Necesitas al menos 6 mosaicos"</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"Necesitas al menos <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> tarjetas"</string> <string name="qs_edit" msgid="2232596095725105230">"Editar"</string> <string name="tuner_time" msgid="6572217313285536011">"Hora"</string> <string-array name="clock_options"> @@ -827,7 +827,7 @@ <string name="accessibility_quick_settings_open_settings" msgid="7806613775728380737">"Abrir configuración de <xliff:g id="ID_1">%s</xliff:g>"</string> <string name="accessibility_quick_settings_edit" msgid="7839992848995240393">"Editar orden de configuración"</string> <string name="accessibility_quick_settings_page" msgid="5032979051755200721">"Página <xliff:g id="ID_1">%1$d</xliff:g> de <xliff:g id="ID_2">%2$d</xliff:g>"</string> - <string name="tuner_lock_screen" msgid="5755818559638850294">"Pantalla bloqueada"</string> + <string name="tuner_lock_screen" msgid="5755818559638850294">"Pantalla de bloqueo"</string> <string name="pip_phone_expand" msgid="5889780005575693909">"Expandir"</string> <string name="pip_phone_minimize" msgid="1079119422589131792">"Minimizar"</string> <string name="pip_phone_close" msgid="8416647892889710330">"Cerrar"</string> diff --git a/packages/SystemUI/res/values-es/strings.xml b/packages/SystemUI/res/values-es/strings.xml index a6bd968ed65f..685f449b19ae 100644 --- a/packages/SystemUI/res/values-es/strings.xml +++ b/packages/SystemUI/res/values-es/strings.xml @@ -375,8 +375,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"Hasta el amanecer"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"Hora: <xliff:g id="TIME">%s</xliff:g>"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"Hasta las <xliff:g id="TIME">%s</xliff:g>"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"Tema oscuro"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"Tema oscuro\nAhorro de batería"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"Tema oscuro"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"Tema oscuro\nAhorro de batería"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"NFC"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"La conexión NFC está inhabilitada"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"La conexión NFC está habilitada"</string> @@ -451,9 +451,9 @@ <string name="battery_saver_notification_title" msgid="8614079794522291840">"Ahorro de batería activado"</string> <string name="battery_saver_notification_text" msgid="820318788126672692">"Reduce el rendimiento y los datos en segundo plano"</string> <string name="battery_saver_notification_action_text" msgid="132118784269455533">"Desactivar Ahorro de batería"</string> - <string name="media_projection_dialog_text" msgid="8585357687598538511">"Mientras graba o envía contenido, <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> puede obtener información sensible que se muestre en la pantalla o que se reproduzca en el dispositivo, como audio, contraseñas, información de pagos, fotos y mensajes."</string> - <string name="media_projection_dialog_service_text" msgid="3075544489835858258">"Mientras graba o envía contenido, el servicio que ofrece esta función puede obtener información sensible que se muestre en la pantalla o que se reproduzca en el dispositivo, como audio, contraseñas, información de pagos, fotos y mensajes."</string> - <string name="media_projection_dialog_title" msgid="8124184308671641248">"Se muestra información sensible durante el envío y la grabación"</string> + <string name="media_projection_dialog_text" msgid="8585357687598538511">"Mientras grabas o envías contenido, <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> puede capturar información sensible que se muestre en la pantalla o que se reproduzca en el dispositivo, como audio, contraseñas, información de pagos, fotos y mensajes."</string> + <string name="media_projection_dialog_service_text" msgid="3075544489835858258">"Mientras grabas o envías contenido, el servicio que ofrece esta función puede capturar información sensible que se muestre en la pantalla o que se reproduzca en el dispositivo, como audio, contraseñas, información de pagos, fotos y mensajes."</string> + <string name="media_projection_dialog_title" msgid="8124184308671641248">"Sobre información sensible durante el envío y la grabación"</string> <string name="media_projection_remember_text" msgid="3103510882172746752">"No volver a mostrar"</string> <string name="clear_all_notifications_text" msgid="814192889771462828">"Borrar todo"</string> <string name="manage_notifications_text" msgid="2386728145475108753">"Gestionar"</string> @@ -529,7 +529,7 @@ <string name="accessibility_volume_settings" msgid="4915364006817819212">"Ajustes de sonido"</string> <string name="accessibility_volume_expand" msgid="5946812790999244205">"Mostrar"</string> <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Ocultar"</string> - <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Subtítulos autom. multimedia"</string> + <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Transcripción instantánea"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Cerrar las recomendaciones de subtítulos"</string> <string name="volume_odi_captions_content_description" msgid="2950736796270214785">"Superposición de subtítulos"</string> <string name="volume_odi_captions_hint_enable" msgid="49750248924730302">"habilitar"</string> @@ -778,7 +778,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"Pulsa y arrastra para añadir funciones"</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"Mantén pulsado un icono y arrástralo para reubicarlo"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"Arrastra aquí para quitar una función"</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"Necesitas al menos 6 iconos"</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"Necesitas al menos <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> iconos"</string> <string name="qs_edit" msgid="2232596095725105230">"Editar"</string> <string name="tuner_time" msgid="6572217313285536011">"Hora"</string> <string-array name="clock_options"> diff --git a/packages/SystemUI/res/values-et/strings.xml b/packages/SystemUI/res/values-et/strings.xml index aa4585544f87..039100d2ef90 100644 --- a/packages/SystemUI/res/values-et/strings.xml +++ b/packages/SystemUI/res/values-et/strings.xml @@ -375,8 +375,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"Kuni päikesetõusuni"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"Sisselülitam. kell <xliff:g id="TIME">%s</xliff:g>"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"Kuni <xliff:g id="TIME">%s</xliff:g>"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"Tume teema"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"Tume teema\nAkusäästja"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"Tume teema"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"Tume teema\nAkusäästja"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"NFC"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"NFC on keelatud"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"NFC on lubatud"</string> @@ -778,7 +778,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"Paanide lisamiseks hoidke all ja lohistage"</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"Paanide ümberpaigutamiseks hoidke neid all ja lohistage"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"Lohistage eemaldamiseks siia"</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"Teil on vaja vähemalt kuut paani"</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"Teil on vaja vähemalt <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> paani"</string> <string name="qs_edit" msgid="2232596095725105230">"Muutmine"</string> <string name="tuner_time" msgid="6572217313285536011">"Kellaaeg"</string> <string-array name="clock_options"> diff --git a/packages/SystemUI/res/values-eu/strings.xml b/packages/SystemUI/res/values-eu/strings.xml index 542ec4300864..17f19f72c556 100644 --- a/packages/SystemUI/res/values-eu/strings.xml +++ b/packages/SystemUI/res/values-eu/strings.xml @@ -375,8 +375,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"Ilunabarrera arte"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"Aktibatze-ordua: <xliff:g id="TIME">%s</xliff:g>"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"<xliff:g id="TIME">%s</xliff:g> arte"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"Gai iluna"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"Gai iluna\nBateria-aurrezlea"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"Gai iluna"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"Gai iluna\nBateria-aurrezlea"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"NFC"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"Desgaituta dago NFC"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"Gaituta dago NFC"</string> @@ -778,7 +778,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"Lauzak gehitzeko, eduki sakatuta eta arrastatu"</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"Lauzak antolatzeko, eduki sakatuta eta arrastatu"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"Kentzeko, arrastatu hona"</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"Gutxienez sei lauza behar dituzu"</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"<xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> lauza behar dituzu gutxienez"</string> <string name="qs_edit" msgid="2232596095725105230">"Editatu"</string> <string name="tuner_time" msgid="6572217313285536011">"Ordua"</string> <string-array name="clock_options"> @@ -923,7 +923,7 @@ <string name="bubbles_prompt" msgid="8807968030159469710">"<xliff:g id="APP_NAME">%1$s</xliff:g> aplikazioaren burbuilak erabiltzeko baimena eman nahi duzu?"</string> <string name="manage_bubbles_text" msgid="7027739766859191408">"Kudeatu"</string> <string name="no_bubbles" msgid="337101288173078247">"Ukatu"</string> - <string name="yes_bubbles" msgid="668809525728633841">"Onartu"</string> + <string name="yes_bubbles" msgid="668809525728633841">"Baimendu"</string> <string name="ask_me_later_bubbles" msgid="2147688438402939029">"Galdetu geroago"</string> <string name="bubble_content_description_single" msgid="1184462974339387516">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> (<xliff:g id="APP_NAME">%2$s</xliff:g>)"</string> <string name="bubble_content_description_stack" msgid="8666349184095622232">"<xliff:g id="APP_NAME">%2$s</xliff:g> aplikazioaren \"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>\" jakinarazpena, eta beste <xliff:g id="BUBBLE_COUNT">%3$d</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-fa/strings.xml b/packages/SystemUI/res/values-fa/strings.xml index 02e017e6f86d..4ccf8ed28f7c 100644 --- a/packages/SystemUI/res/values-fa/strings.xml +++ b/packages/SystemUI/res/values-fa/strings.xml @@ -70,7 +70,7 @@ <string name="compat_mode_off" msgid="4434467572461327898">"گسترده کردن برای پر کردن صفحه"</string> <string name="global_action_screenshot" msgid="8329831278085426283">"عکس صفحهنمایش"</string> <string name="screenshot_saving_ticker" msgid="7403652894056693515">"در حال ذخیره عکس صفحهنمایش..."</string> - <string name="screenshot_saving_title" msgid="8242282144535555697">"در حال ذخیره عکس صفحهنمایش..."</string> + <string name="screenshot_saving_title" msgid="8242282144535555697">"درحال ذخیره عکس صفحهنمایش…"</string> <string name="screenshot_saved_title" msgid="5637073968117370753">"عکس صفحهنمایش ذخیره شد"</string> <string name="screenshot_saved_text" msgid="7574667448002050363">"برای مشاهده عکس صفحهنمایشتان ضربه بزنید"</string> <string name="screenshot_failed_title" msgid="7612509838919089748">"عکس صفحهنمایش ذخیره نشد"</string> @@ -151,9 +151,9 @@ <string name="accessibility_bluetooth_name" msgid="8441517146585531676">"به <xliff:g id="BLUETOOTH">%s</xliff:g> متصل شد."</string> <string name="accessibility_cast_name" msgid="4026393061247081201">"متصل به <xliff:g id="CAST">%s</xliff:g>."</string> <string name="accessibility_no_wimax" msgid="4329180129727630368">"WiMAX وجود ندارد."</string> - <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX دارای یک نوار است."</string> - <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX دارای دو نوار است."</string> - <string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"WiMAX دارای سه نوار است."</string> + <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX یک نوار دارد."</string> + <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX دو نوار دارد."</string> + <string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"WiMAX سه نوار دارد."</string> <string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"قدرت سیگنال WiMAX کامل است."</string> <string name="accessibility_ethernet_disconnected" msgid="5896059303377589469">"اترنت قطع شد."</string> <string name="accessibility_ethernet_connected" msgid="2692130313069182636">"اترنت متصل شد."</string> @@ -375,8 +375,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"تا طلوع"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"ساعت <xliff:g id="TIME">%s</xliff:g> روشن میشود"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"تا <xliff:g id="TIME">%s</xliff:g>"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"طرح زمینه تیره"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"طرح زمینه تیره\nبهینهسازی باتری"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"طرح زمینه تیره"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"طرح زمینه تیره\nبهینهسازی باتری"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"NFC"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"NFC غیرفعال است"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"NFC فعال است"</string> @@ -778,7 +778,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"برای افزودن کاشی، نگه دارید و بکشید"</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"برای تغییر دادن ترتیب کاشیها، آنها را نگه دارید و بکشید"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"برای حذف، به اینجا بکشید"</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"حداقل به ۶ کاشی نیاز دارید"</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"حداقل به <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> کاشی نیاز دارید"</string> <string name="qs_edit" msgid="2232596095725105230">"ویرایش"</string> <string name="tuner_time" msgid="6572217313285536011">"زمان"</string> <string-array name="clock_options"> diff --git a/packages/SystemUI/res/values-fi/strings.xml b/packages/SystemUI/res/values-fi/strings.xml index 85a89eff8494..0424e31903c1 100644 --- a/packages/SystemUI/res/values-fi/strings.xml +++ b/packages/SystemUI/res/values-fi/strings.xml @@ -197,7 +197,7 @@ <string name="carrier_network_change_mode" msgid="8149202439957837762">"Operaattorin verkko muuttuu"</string> <string name="accessibility_battery_details" msgid="7645516654955025422">"Avaa akun tiedot."</string> <string name="accessibility_battery_level" msgid="7451474187113371965">"Akun virta <xliff:g id="NUMBER">%d</xliff:g> prosenttia."</string> - <string name="accessibility_battery_level_with_estimate" msgid="9033100930684311630">"Akkua jäljellä <xliff:g id="PERCENTAGE">%1$s</xliff:g> % eli noin <xliff:g id="TIME">%2$s</xliff:g> käyttösi perusteella"</string> + <string name="accessibility_battery_level_with_estimate" msgid="9033100930684311630">"Akkua jäljellä <xliff:g id="PERCENTAGE">%1$s</xliff:g> prosenttia eli noin <xliff:g id="TIME">%2$s</xliff:g> käyttösi perusteella"</string> <string name="accessibility_battery_level_charging" msgid="1147587904439319646">"Akku latautuu: <xliff:g id="BATTERY_PERCENTAGE">%d</xliff:g> prosenttia"</string> <string name="accessibility_settings_button" msgid="799583911231893380">"Järjestelmän asetukset"</string> <string name="accessibility_notifications_button" msgid="4498000369779421892">"Ilmoitukset"</string> @@ -375,8 +375,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"Auringonnousuun"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"Käyttöön klo <xliff:g id="TIME">%s</xliff:g>"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"<xliff:g id="TIME">%s</xliff:g> saakka"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"Tumma teema"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"Tumma teema\nVirransäästö"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"Tumma teema"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"Tumma teema\nVirransäästö"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"NFC"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"NFC on poistettu käytöstä"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"NFC on käytössä"</string> @@ -651,7 +651,7 @@ <string name="notification_silence_title" msgid="5763240612242137433">"Äänetön"</string> <string name="notification_alert_title" msgid="8031196611815490340">"Hälyttää"</string> <string name="notification_channel_summary_low" msgid="3387466082089715555">"Keskittyminen on helpompaa ilman ääntä tai värinää."</string> - <string name="notification_channel_summary_default" msgid="5994062840431965586">"Kiinnittää huomion ilman ääntä tai värinää."</string> + <string name="notification_channel_summary_default" msgid="5994062840431965586">"Kiinnittää huomion äänellä tai värinällä"</string> <string name="notification_unblockable_desc" msgid="4556908766584964102">"Näitä ilmoituksia ei voi muokata"</string> <string name="notification_multichannel_desc" msgid="4695920306092240550">"Tätä ilmoitusryhmää ei voi määrittää tässä"</string> <string name="notification_delegate_header" msgid="2857691673814814270">"Välitetty ilmoitus"</string> @@ -778,7 +778,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"Lisää osioita koskettamalla pitkään ja vetämällä"</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"Järjestele osioita koskettamalla pitkään ja vetämällä"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"Poista vetämällä tähän."</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"Kuusi osiota on vähimmäismäärä."</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"<xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> kiekkoa on vähimmäismäärä"</string> <string name="qs_edit" msgid="2232596095725105230">"Muokkaa"</string> <string name="tuner_time" msgid="6572217313285536011">"Aika"</string> <string-array name="clock_options"> diff --git a/packages/SystemUI/res/values-fr-rCA/strings.xml b/packages/SystemUI/res/values-fr-rCA/strings.xml index ae288c9e8d72..119eb59c4137 100644 --- a/packages/SystemUI/res/values-fr-rCA/strings.xml +++ b/packages/SystemUI/res/values-fr-rCA/strings.xml @@ -197,7 +197,7 @@ <string name="carrier_network_change_mode" msgid="8149202439957837762">"Changer de réseau de fournisseur de services"</string> <string name="accessibility_battery_details" msgid="7645516654955025422">"Ouvrir les détails de la pile"</string> <string name="accessibility_battery_level" msgid="7451474187113371965">"Pile : <xliff:g id="NUMBER">%d</xliff:g> pour cent"</string> - <string name="accessibility_battery_level_with_estimate" msgid="9033100930684311630">"Pile chargée à <xliff:g id="PERCENTAGE">%1$s</xliff:g> % (environ <xliff:g id="TIME">%2$s</xliff:g> d\'autonomie en fonction de votre usage)"</string> + <string name="accessibility_battery_level_with_estimate" msgid="9033100930684311630">"Pile chargée à <xliff:g id="PERCENTAGE">%1$s</xliff:g> pour cent (environ <xliff:g id="TIME">%2$s</xliff:g> d\'autonomie en fonction de votre usage)"</string> <string name="accessibility_battery_level_charging" msgid="1147587904439319646">"La pile est en cours de charge : <xliff:g id="BATTERY_PERCENTAGE">%d</xliff:g> %%."</string> <string name="accessibility_settings_button" msgid="799583911231893380">"Paramètres système"</string> <string name="accessibility_notifications_button" msgid="4498000369779421892">"Notifications"</string> @@ -375,8 +375,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"Jusqu\'au lev. soleil"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"Actif à <xliff:g id="TIME">%s</xliff:g>"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"Jusqu\'à <xliff:g id="TIME">%s</xliff:g>"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"Thème sombre"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"Thème sombre\nÉconomiseur de pile"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"Thème sombre"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"Thème sombre\nÉconomiseur de pile"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"NFC"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"NFC désactivée"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"NFC activée"</string> @@ -778,7 +778,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"Maint. doigt sur écran, puis glissez-le pour ajouter tuiles"</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"Maint. doigt sur l\'écran, puis glissez-le pour réorg. tuiles"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"Faites glisser les tuiles ici pour les supprimer"</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"Vous avez besoin d\'au moins six tuiles"</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"Vous avez besoin d\'au moins <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> tuiles"</string> <string name="qs_edit" msgid="2232596095725105230">"Modifier"</string> <string name="tuner_time" msgid="6572217313285536011">"Heure"</string> <string-array name="clock_options"> diff --git a/packages/SystemUI/res/values-fr/strings.xml b/packages/SystemUI/res/values-fr/strings.xml index d02a3c8eab6c..75e84d322efc 100644 --- a/packages/SystemUI/res/values-fr/strings.xml +++ b/packages/SystemUI/res/values-fr/strings.xml @@ -24,7 +24,7 @@ <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"Aucune notification"</string> <string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"En cours"</string> <string name="status_bar_latest_events_title" msgid="6594767438577593172">"Notifications"</string> - <string name="battery_low_title" msgid="9187898087363540349">"Il est possible que vous soyez bientôt à court de batterie"</string> + <string name="battery_low_title" msgid="9187898087363540349">"La batterie est bientôt épuisée"</string> <string name="battery_low_percent_format" msgid="2900940511201380775">"<xliff:g id="PERCENTAGE">%s</xliff:g> restants"</string> <string name="battery_low_percent_format_hybrid" msgid="6838677459286775617">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> – Temps restant en fonction de votre utilisation : environ <xliff:g id="TIME">%2$s</xliff:g>"</string> <string name="battery_low_percent_format_hybrid_short" msgid="9025795469949145586">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> – Temps restant : environ <xliff:g id="TIME">%2$s</xliff:g>"</string> @@ -72,7 +72,7 @@ <string name="screenshot_saving_ticker" msgid="7403652894056693515">"Enregistrement capture écran…"</string> <string name="screenshot_saving_title" msgid="8242282144535555697">"Enregistrement de la capture d\'écran…"</string> <string name="screenshot_saved_title" msgid="5637073968117370753">"Capture d\'écran enregistrée"</string> - <string name="screenshot_saved_text" msgid="7574667448002050363">"Appuyez pour afficher votre capture d\'écran"</string> + <string name="screenshot_saved_text" msgid="7574667448002050363">"Appuyez pour voir la capture d\'écran"</string> <string name="screenshot_failed_title" msgid="7612509838919089748">"Impossible d\'enregistrer la capture d\'écran"</string> <string name="screenshot_failed_to_save_unknown_text" msgid="3637758096565605541">"Essayez de nouveau de faire une capture d\'écran"</string> <string name="screenshot_failed_to_save_text" msgid="3041612585107107310">"Impossible d\'enregistrer la capture d\'écran, car l\'espace de stockage est limité"</string> @@ -197,8 +197,7 @@ <string name="carrier_network_change_mode" msgid="8149202439957837762">"Modification du réseau de l\'opérateur"</string> <string name="accessibility_battery_details" msgid="7645516654955025422">"Ouvrir les détails de la batterie"</string> <string name="accessibility_battery_level" msgid="7451474187113371965">"Batterie : <xliff:g id="NUMBER">%d</xliff:g> pour cent"</string> - <!-- no translation found for accessibility_battery_level_with_estimate (9033100930684311630) --> - <skip /> + <string name="accessibility_battery_level_with_estimate" msgid="9033100930684311630">"Batterie chargée à <xliff:g id="PERCENTAGE">%1$s</xliff:g> pour cent : il reste environ <xliff:g id="TIME">%2$s</xliff:g> d\'autonomie, selon votre utilisation"</string> <string name="accessibility_battery_level_charging" msgid="1147587904439319646">"Batterie en charge : <xliff:g id="BATTERY_PERCENTAGE">%d</xliff:g> %%."</string> <string name="accessibility_settings_button" msgid="799583911231893380">"Paramètres système"</string> <string name="accessibility_notifications_button" msgid="4498000369779421892">"Notifications"</string> @@ -376,8 +375,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"Jusqu\'à l\'aube"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"À partir de <xliff:g id="TIME">%s</xliff:g>"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"Jusqu\'à <xliff:g id="TIME">%s</xliff:g>"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"Mode sombre"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"Thème foncé\nÉconomiseur de batterie"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"Thème foncé"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"Thème foncé\nÉconomiseur de batterie"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"NFC"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"La technologie NFC est désactivée"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"La technologie NFC est activée"</string> @@ -413,7 +412,7 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"Aucune\ninterruption"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"Priorité\nuniquement"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"Alarmes\nuniquement"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="6959284458466962592">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Recharge sans fil (à 100 % dans <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> + <string name="keyguard_indication_charging_time_wireless" msgid="6959284458466962592">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Recharge sans fil (à 100 %% dans <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Recharge... (à 100 %% dans <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> <string name="keyguard_indication_charging_time_fast" msgid="7767562163577492332">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Recharge rapide… (à 100 %% dans <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> <string name="keyguard_indication_charging_time_slowly" msgid="3769655133567307069">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Recharge lente… (à 100 %% dans <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> @@ -452,9 +451,9 @@ <string name="battery_saver_notification_title" msgid="8614079794522291840">"Économiseur de batterie activé"</string> <string name="battery_saver_notification_text" msgid="820318788126672692">"Limite les performances et les données en arrière-plan."</string> <string name="battery_saver_notification_action_text" msgid="132118784269455533">"Désactiver l\'économiseur de batterie"</string> - <string name="media_projection_dialog_text" msgid="8585357687598538511">"Pendant que vous enregistrez ou diffusez du contenu, <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> peut capturer des informations sensibles affichées à l\'écran ou lues par votre appareil, y compris des contenus audio, des mots de passe, des informations de paiement, des photos et des messages."</string> + <string name="media_projection_dialog_text" msgid="8585357687598538511">"Pendant que vous enregistrez ou diffusez du contenu, l\'appli <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> peut capturer des informations sensibles affichées à l\'écran ou lues par votre appareil, y compris des contenus audio, des mots de passe, des informations de paiement, des photos et des messages."</string> <string name="media_projection_dialog_service_text" msgid="3075544489835858258">"Pendant que vous enregistrez ou diffusez du contenu, le service concerné peut capturer des informations sensibles affichées à l\'écran ou lues par votre appareil, y compris des contenus audio, des mots de passe, des informations de paiement, des photos et des messages."</string> - <string name="media_projection_dialog_title" msgid="8124184308671641248">"Exposition d\'informations sensibles lors de l\'enregistrement ou de la diffusion de contenu"</string> + <string name="media_projection_dialog_title" msgid="8124184308671641248">"Présence d\'informations sensibles lors de l\'enregistrement ou de la diffusion de contenu"</string> <string name="media_projection_remember_text" msgid="3103510882172746752">"Ne plus afficher"</string> <string name="clear_all_notifications_text" msgid="814192889771462828">"Tout effacer"</string> <string name="manage_notifications_text" msgid="2386728145475108753">"Gérer"</string> @@ -779,7 +778,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"Sélectionnez et faites glisser les icônes pour les ajouter"</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"Sélectionnez et faites glisser les icônes pour réorganiser"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"Faites glisser les tuiles ici pour les supprimer."</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"Au minimum six tuiles sont nécessaires"</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"Au minimum <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> tuiles sont nécessaires"</string> <string name="qs_edit" msgid="2232596095725105230">"Modifier"</string> <string name="tuner_time" msgid="6572217313285536011">"Heure"</string> <string-array name="clock_options"> @@ -934,8 +933,6 @@ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"Déplacer en bas à gauche"</string> <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"Déplacer en bas à droite"</string> <string name="bubble_dismiss_text" msgid="8028337712674081668">"Ignorer"</string> - <!-- no translation found for notification_content_system_nav_changed (7218093915747788444) --> - <skip /> - <!-- no translation found for notification_content_gesture_nav_available (8111130443656460792) --> - <skip /> + <string name="notification_content_system_nav_changed" msgid="7218093915747788444">"Navigation système mise à jour. Pour apporter des modifications, accédez aux paramètres."</string> + <string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"Accédez aux paramètres pour mettre à jour la navigation système"</string> </resources> diff --git a/packages/SystemUI/res/values-gl/strings.xml b/packages/SystemUI/res/values-gl/strings.xml index c96ca9f6f7f7..f42c14f2fea0 100644 --- a/packages/SystemUI/res/values-gl/strings.xml +++ b/packages/SystemUI/res/values-gl/strings.xml @@ -197,8 +197,7 @@ <string name="carrier_network_change_mode" msgid="8149202439957837762">"Cambio de rede do operador"</string> <string name="accessibility_battery_details" msgid="7645516654955025422">"Abrir os detalles da batería"</string> <string name="accessibility_battery_level" msgid="7451474187113371965">"Carga da batería: <xliff:g id="NUMBER">%d</xliff:g> por cento."</string> - <!-- no translation found for accessibility_battery_level_with_estimate (9033100930684311630) --> - <skip /> + <string name="accessibility_battery_level_with_estimate" msgid="9033100930684311630">"Batería: <xliff:g id="PERCENTAGE">%1$s</xliff:g> por cento, durará <xliff:g id="TIME">%2$s</xliff:g> co uso que adoitas darlle"</string> <string name="accessibility_battery_level_charging" msgid="1147587904439319646">"A batería está cargando. Nivel: <xliff:g id="BATTERY_PERCENTAGE">%d</xliff:g> %%."</string> <string name="accessibility_settings_button" msgid="799583911231893380">"Configuración do sistema"</string> <string name="accessibility_notifications_button" msgid="4498000369779421892">"Notificacións"</string> @@ -376,8 +375,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"Ata o amencer"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"Desde: <xliff:g id="TIME">%s</xliff:g>"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"Ata: <xliff:g id="TIME">%s</xliff:g>"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"Tema escuro"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"Tema escuro\nAforro de batería"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"Tema escuro"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"Tema escuro\nAforro de batería"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"NFC"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"A opción NFC está desactivada"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"A opción NFC está activada"</string> @@ -779,7 +778,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"Mantén premido un elemento e arrástrao para engadir atallos"</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"Para reorganizar os atallos, mantenos premidos e arrástraos"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"Arrastra o elemento ata aquí para eliminalo"</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"Como mínimo ten que haber 6 atallos"</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"Como mínimo ten que haber <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> mosaicos"</string> <string name="qs_edit" msgid="2232596095725105230">"Editar"</string> <string name="tuner_time" msgid="6572217313285536011">"Hora"</string> <string-array name="clock_options"> @@ -934,8 +933,6 @@ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"Mover á parte infer. esquerda"</string> <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"Mover á parte inferior dereita"</string> <string name="bubble_dismiss_text" msgid="8028337712674081668">"Ignorar"</string> - <!-- no translation found for notification_content_system_nav_changed (7218093915747788444) --> - <skip /> - <!-- no translation found for notification_content_gesture_nav_available (8111130443656460792) --> - <skip /> + <string name="notification_content_system_nav_changed" msgid="7218093915747788444">"Actualizouse a navegación do sistema. Para facer cambios, vai a Configuración."</string> + <string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"Para actualizar a navegación do sistema, vai a Configuración"</string> </resources> diff --git a/packages/SystemUI/res/values-gu/strings.xml b/packages/SystemUI/res/values-gu/strings.xml index 0019f284ebb0..00308a3140d3 100644 --- a/packages/SystemUI/res/values-gu/strings.xml +++ b/packages/SystemUI/res/values-gu/strings.xml @@ -197,8 +197,7 @@ <string name="carrier_network_change_mode" msgid="8149202439957837762">"કૅરીઅર નેટવર્કમાં ફેરફાર થઈ રહ્યો છે"</string> <string name="accessibility_battery_details" msgid="7645516654955025422">"બૅટરીની વિગતો ખોલો"</string> <string name="accessibility_battery_level" msgid="7451474187113371965">"બૅટરી <xliff:g id="NUMBER">%d</xliff:g> ટકા."</string> - <!-- no translation found for accessibility_battery_level_with_estimate (9033100930684311630) --> - <skip /> + <string name="accessibility_battery_level_with_estimate" msgid="9033100930684311630">"તમારા વપરાશના આધારે બૅટરી <xliff:g id="PERCENTAGE">%1$s</xliff:g> ટકા, જે લગભગ <xliff:g id="TIME">%2$s</xliff:g> સુધી ચાલે તેટલી બચી છે"</string> <string name="accessibility_battery_level_charging" msgid="1147587904439319646">"બૅટરી ચાર્જ થઈ રહી છે, <xliff:g id="BATTERY_PERCENTAGE">%d</xliff:g>%%."</string> <string name="accessibility_settings_button" msgid="799583911231893380">"સિસ્ટમ સેટિંગ્સ."</string> <string name="accessibility_notifications_button" msgid="4498000369779421892">"નોટિફિકેશનો."</string> @@ -376,8 +375,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"સૂર્યોદય સુધી"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"<xliff:g id="TIME">%s</xliff:g> વાગ્યે"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"<xliff:g id="TIME">%s</xliff:g> સુધી"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"ઘેરી થીમ"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"ઘેરી થીમ\nબૅટરી સેવર"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"ઘેરી થીમ"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"ઘેરી થીમ\nબૅટરી સેવર"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"NFC"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"NFC અક્ષમ કરેલ છે"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"NFC સક્ષમ કરેલ છે"</string> @@ -779,7 +778,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"ટાઇલ ઉમેરવા માટે તેના પર આંગળી દબાવીને ખેંચો"</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"ટાઇલને ફરીથી ગોઠવવા માટે આંગળી દબાવીને ખેંચો"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"દૂર કરવા માટે અહીં ખેંચો"</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"તમને ઓછામાં ઓછી 6 ટાઇલની જરૂર છે"</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"તમને ઓછામાં ઓછી <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> ટાઇલની જરૂર છે"</string> <string name="qs_edit" msgid="2232596095725105230">"સંપાદિત કરો"</string> <string name="tuner_time" msgid="6572217313285536011">"સમય"</string> <string-array name="clock_options"> @@ -934,8 +933,6 @@ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"નીચે ડાબે ખસેડો"</string> <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"નીચે જમણે ખસેડો"</string> <string name="bubble_dismiss_text" msgid="8028337712674081668">"છોડી દો"</string> - <!-- no translation found for notification_content_system_nav_changed (7218093915747788444) --> - <skip /> - <!-- no translation found for notification_content_gesture_nav_available (8111130443656460792) --> - <skip /> + <string name="notification_content_system_nav_changed" msgid="7218093915747788444">"સિસ્ટમ નૅવિગેશન અપડેટ કર્યું. ફેરફારો કરવા માટે, સેટિંગ પર જાઓ."</string> + <string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"સિસ્ટમ નૅવિગેશનને અપડેટ કરવા માટે સેટિંગ પર જાઓ"</string> </resources> diff --git a/packages/SystemUI/res/values-hi/strings.xml b/packages/SystemUI/res/values-hi/strings.xml index 8c64a2ca24cd..63800ae71320 100644 --- a/packages/SystemUI/res/values-hi/strings.xml +++ b/packages/SystemUI/res/values-hi/strings.xml @@ -197,8 +197,7 @@ <string name="carrier_network_change_mode" msgid="8149202439957837762">"मोबाइल और इंटरनेट सेवा देने वाली कंपनी का नेटवर्क बदल रहा है"</string> <string name="accessibility_battery_details" msgid="7645516654955025422">"बैटरी का विवरण खोलें"</string> <string name="accessibility_battery_level" msgid="7451474187113371965">"<xliff:g id="NUMBER">%d</xliff:g> प्रतिशत बैटरी."</string> - <!-- no translation found for accessibility_battery_level_with_estimate (9033100930684311630) --> - <skip /> + <string name="accessibility_battery_level_with_estimate" msgid="9033100930684311630">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> प्रतिशत बैटरी बची है और आपके इस्तेमाल के हिसाब से यह <xliff:g id="TIME">%2$s</xliff:g> में खत्म हो जाएगी"</string> <string name="accessibility_battery_level_charging" msgid="1147587904439319646">"बैटरी चार्ज हो रही है, <xliff:g id="BATTERY_PERCENTAGE">%d</xliff:g>%%."</string> <string name="accessibility_settings_button" msgid="799583911231893380">"सिस्टम सेटिंग."</string> <string name="accessibility_notifications_button" msgid="4498000369779421892">"सूचनाएं."</string> @@ -376,8 +375,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"सुबह तक चालू रहेगी"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"<xliff:g id="TIME">%s</xliff:g> पर चालू की जाएगी"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"<xliff:g id="TIME">%s</xliff:g> तक"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"गहरे रंग वाली थीम"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"गहरे रंग वाली थीम\nबैटरी सेवर"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"गहरे रंग वाली थीम"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"गहरे रंग वाली थीम\nबैटरी सेवर"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"एनएफ़सी"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"NFC बंद है"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"NFC चालू है"</string> @@ -634,7 +633,7 @@ <string name="notification_channel_minimized" msgid="1664411570378910931">"इन सूचनाओं को छोटा कर दिया जाएगा"</string> <string name="notification_channel_silenced" msgid="2877199534497961942">"ये सूचनाएं बिना आवाज़ के दिखाई जाएंगी"</string> <string name="notification_channel_unsilenced" msgid="4790904571552394137">"ये सूचनाएं आपको अलर्ट करेंगी"</string> - <string name="inline_blocking_helper" msgid="3055064577771478591">"अाप अक्सर इन सूचनाओं को खारिज कर देते हैं. \nआगे भी इन्हें देखना जारी रखना चाहते हैं?"</string> + <string name="inline_blocking_helper" msgid="3055064577771478591">"आप अक्सर इन सूचनाओं को खारिज कर देते हैं. \nआगे भी इन्हें देखना जारी रखना चाहते हैं?"</string> <string name="inline_done_button" msgid="492513001558716452">"हो गया"</string> <string name="inline_ok_button" msgid="975600017662930615">"लागू करें"</string> <string name="inline_keep_showing" msgid="8945102997083836858">"ये सूचनाएं दिखाना जारी रखें?"</string> @@ -779,7 +778,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"टाइल जोड़ने के लिए दबाएं और खींचें"</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"टाइल का क्रम फिर से बदलने के लिए उन्हें दबाकर रखें और खींचें"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"हटाने के लिए यहां खींचें और छोड़ें"</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"आपके पास कम से कम 6 टाइल होनी चाहिए"</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"आपके पास कम से कम <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> टाइलें होनी चाहिए"</string> <string name="qs_edit" msgid="2232596095725105230">"बदलाव करें"</string> <string name="tuner_time" msgid="6572217313285536011">"समय"</string> <string-array name="clock_options"> @@ -934,8 +933,6 @@ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"बाईं ओर सबसे नीचे ले जाएं"</string> <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"सबसे नीचे दाईं ओर ले जाएं"</string> <string name="bubble_dismiss_text" msgid="8028337712674081668">"खारिज करें"</string> - <!-- no translation found for notification_content_system_nav_changed (7218093915747788444) --> - <skip /> - <!-- no translation found for notification_content_gesture_nav_available (8111130443656460792) --> - <skip /> + <string name="notification_content_system_nav_changed" msgid="7218093915747788444">"सिस्टम नेविगेशन अपडेट हो गया. बदलाव करने के लिए \'सेटिंग\' पर जाएं."</string> + <string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"सिस्टम नेविगेशन अपडेट करने के लिए \'सेटिंग\' में जाएं"</string> </resources> diff --git a/packages/SystemUI/res/values-hr/strings.xml b/packages/SystemUI/res/values-hr/strings.xml index 28da89ebf72d..4e0be9d5db11 100644 --- a/packages/SystemUI/res/values-hr/strings.xml +++ b/packages/SystemUI/res/values-hr/strings.xml @@ -377,8 +377,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"Do izlaska sunca"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"Uključuje se u <xliff:g id="TIME">%s</xliff:g>"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"Do <xliff:g id="TIME">%s</xliff:g>"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"Tamna tema"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"Tamna tema\nŠtednja baterije"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"Tamna tema"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"Tamna tema\nŠtednja baterije"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"NFC"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"NFC je onemogućen"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"NFC je omogućen"</string> @@ -532,7 +532,7 @@ <string name="accessibility_volume_settings" msgid="4915364006817819212">"Postavke zvuka"</string> <string name="accessibility_volume_expand" msgid="5946812790999244205">"Proširivanje"</string> <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Sažimanje"</string> - <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Automatski opisi medija"</string> + <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Automatski titlovi za medije"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Zatvorite opis"</string> <string name="volume_odi_captions_content_description" msgid="2950736796270214785">"Sloj titlova"</string> <string name="volume_odi_captions_hint_enable" msgid="49750248924730302">"omogući"</string> @@ -783,7 +783,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"Zadržite i povucite za dodavanje pločica"</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"Zadržite i povucite da biste premjestili pločice"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"Povucite ovdje za uklanjanje"</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"Potrebno je barem 6 pločica"</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"Potrebno je barem <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> pločica"</string> <string name="qs_edit" msgid="2232596095725105230">"Uredi"</string> <string name="tuner_time" msgid="6572217313285536011">"Vrijeme"</string> <string-array name="clock_options"> diff --git a/packages/SystemUI/res/values-hu/strings.xml b/packages/SystemUI/res/values-hu/strings.xml index c7eb051e6f72..2297f1eb8d5d 100644 --- a/packages/SystemUI/res/values-hu/strings.xml +++ b/packages/SystemUI/res/values-hu/strings.xml @@ -375,8 +375,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"Napfelkeltéig"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"Bekapcsolás: <xliff:g id="TIME">%s</xliff:g>"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"Eddig: <xliff:g id="TIME">%s</xliff:g>"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"Sötét téma"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"Sötét téma\nAkkumulátorkímélő mód"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"Sötét téma"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"Sötét téma\nAkkumulátorkímélő mód"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"NFC"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"Az NFC ki van kapcsolva"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"Az NFC be van kapcsolva"</string> @@ -778,7 +778,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"Tartsa lenyomva, és húzza a mozaikok hozzáadásához"</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"Tartsa lenyomva, és húzza a mozaikok átrendezéséhez"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"Húzza ide az eltávolításhoz"</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"Legalább hat mozaik szükséges"</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"Legalább <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> kártya szükséges"</string> <string name="qs_edit" msgid="2232596095725105230">"Szerkesztés"</string> <string name="tuner_time" msgid="6572217313285536011">"Idő"</string> <string-array name="clock_options"> diff --git a/packages/SystemUI/res/values-hy/strings.xml b/packages/SystemUI/res/values-hy/strings.xml index 96a5b6da3e32..07ad953c9b68 100644 --- a/packages/SystemUI/res/values-hy/strings.xml +++ b/packages/SystemUI/res/values-hy/strings.xml @@ -124,7 +124,7 @@ <string name="biometric_dialog_face_icon_description_authenticating" msgid="4512727754496228488">"Դեմքի նույնականացում"</string> <string name="biometric_dialog_face_icon_description_authenticated" msgid="595380451325425259">"Դեմքը ճանաչվեց"</string> <string name="biometric_dialog_face_icon_description_confirmed" msgid="2003141400387093967">"Հաստատվեց"</string> - <string name="fingerprint_dialog_touch_sensor" msgid="8511557690663181761">"Հպեք մատնահետքերի սկաներին"</string> + <string name="fingerprint_dialog_touch_sensor" msgid="8511557690663181761">"Հպեք մատնահետքի սկաներին"</string> <string name="accessibility_fingerprint_dialog_fingerprint_icon" msgid="3125122495414253226">"Մատնահետքի պատկերակ"</string> <string name="face_dialog_looking_for_face" msgid="7049276266074494689">"Դեմքի ճանաչում…"</string> <string name="accessibility_face_dialog_face_icon" msgid="2658119009870383490">"Դեմքի պատկերակ"</string> @@ -197,8 +197,7 @@ <string name="carrier_network_change_mode" msgid="8149202439957837762">"Օպերատորի ցանցի փոփոխություն"</string> <string name="accessibility_battery_details" msgid="7645516654955025422">"Բացել մարտկոցի տվյալները"</string> <string name="accessibility_battery_level" msgid="7451474187113371965">"Մարտկոցը <xliff:g id="NUMBER">%d</xliff:g> տոկոս է:"</string> - <!-- no translation found for accessibility_battery_level_with_estimate (9033100930684311630) --> - <skip /> + <string name="accessibility_battery_level_with_estimate" msgid="9033100930684311630">"Մարտկոցի լիցքը <xliff:g id="PERCENTAGE">%1$s</xliff:g> տոկոս է և կբավարարի մոտ <xliff:g id="TIME">%2$s</xliff:g>՝ կախված օգտագործման եղանակից:"</string> <string name="accessibility_battery_level_charging" msgid="1147587904439319646">"Մարտկոցը լիցքավորվում է: Լիցքը <xliff:g id="BATTERY_PERCENTAGE">%d</xliff:g> տոկոս է:"</string> <string name="accessibility_settings_button" msgid="799583911231893380">"Համակարգի կարգավորումներ:"</string> <string name="accessibility_notifications_button" msgid="4498000369779421892">"Ծանուցումներ:"</string> @@ -207,7 +206,7 @@ <string name="accessibility_gps_enabled" msgid="3511469499240123019">"GPS-ը միացված է:"</string> <string name="accessibility_gps_acquiring" msgid="8959333351058967158">"GPS-ի ստացում:"</string> <string name="accessibility_tty_enabled" msgid="4613200365379426561">"Հեռամուտքագրիչը միացված է:"</string> - <string name="accessibility_ringer_vibrate" msgid="666585363364155055">"Զանգի թրթռոց:"</string> + <string name="accessibility_ringer_vibrate" msgid="666585363364155055">"Թրթռազանգ:"</string> <string name="accessibility_ringer_silent" msgid="9061243307939135383">"Զանգակը լռեցված է:"</string> <!-- no translation found for accessibility_casting (6887382141726543668) --> <skip /> @@ -376,8 +375,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"Մինչև լուսաբաց"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"Կմիացվի ժամը <xliff:g id="TIME">%s</xliff:g>-ին"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"Մինչև <xliff:g id="TIME">%s</xliff:g>"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"Մուգ թեմա"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"Մուգ թեմա\nՄարտկոցի տնտեսում"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"Մուգ թեմա"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"Մուգ թեմա\nՄարտկոցի տնտեսում"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"NFC"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"NFC-ն անջատված է"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"NFC-ն միացված է"</string> @@ -779,7 +778,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"Պահեք և քաշեք՝ սալիկներ ավելացնելու համար"</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"Պահեք և քաշեք՝ սալիկները վերադասավորելու համար"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"Քաշեք այստեղ՝ հեռացնելու համար"</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"Հարկավոր է առնվազն 6 սալիկ"</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"Հարկավոր է առնվազն <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> սալիկ"</string> <string name="qs_edit" msgid="2232596095725105230">"Փոփոխել"</string> <string name="tuner_time" msgid="6572217313285536011">"Ժամ"</string> <string-array name="clock_options"> @@ -934,8 +933,6 @@ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"Տեղափոխել ներքև՝ ձախ"</string> <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"Տեղափոխել ներքև՝ աջ"</string> <string name="bubble_dismiss_text" msgid="8028337712674081668">"Փակել"</string> - <!-- no translation found for notification_content_system_nav_changed (7218093915747788444) --> - <skip /> - <!-- no translation found for notification_content_gesture_nav_available (8111130443656460792) --> - <skip /> + <string name="notification_content_system_nav_changed" msgid="7218093915747788444">"Համակարգի նավիգացիան թարմացվեց: Փոփոխություններ անելու համար անցեք կարգավորումներ:"</string> + <string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"Թարմացրեք համակարգի նավիգացիան կարգավորումներում"</string> </resources> diff --git a/packages/SystemUI/res/values-in/strings.xml b/packages/SystemUI/res/values-in/strings.xml index f0c9f1e67820..98af02a6f976 100644 --- a/packages/SystemUI/res/values-in/strings.xml +++ b/packages/SystemUI/res/values-in/strings.xml @@ -72,7 +72,7 @@ <string name="screenshot_saving_ticker" msgid="7403652894056693515">"Menyimpan screenshot..."</string> <string name="screenshot_saving_title" msgid="8242282144535555697">"Menyimpan screenshot..."</string> <string name="screenshot_saved_title" msgid="5637073968117370753">"Screenshot disimpan"</string> - <string name="screenshot_saved_text" msgid="7574667448002050363">"Tap untuk melihat screenshot"</string> + <string name="screenshot_saved_text" msgid="7574667448002050363">"Ketuk untuk melihat screenshot"</string> <string name="screenshot_failed_title" msgid="7612509838919089748">"Tidak dapat menyimpan screenshot"</string> <string name="screenshot_failed_to_save_unknown_text" msgid="3637758096565605541">"Coba ambil screenshot lagi"</string> <string name="screenshot_failed_to_save_text" msgid="3041612585107107310">"Tidak dapat menyimpan screenshot karena ruang penyimpanan terbatas"</string> @@ -89,7 +89,7 @@ <string name="screenrecord_share_label" msgid="4197867360204019389">"Bagikan"</string> <string name="screenrecord_delete_label" msgid="7893716870917824013">"Hapus"</string> <string name="screenrecord_cancel_success" msgid="7768976011702614782">"Rekaman layar dibatalkan"</string> - <string name="screenrecord_save_message" msgid="4733982661301846778">"Rekaman layar disimpan, tap untuk melihat"</string> + <string name="screenrecord_save_message" msgid="4733982661301846778">"Rekaman layar disimpan, ketuk untuk melihat"</string> <string name="screenrecord_delete_description" msgid="5743190456090354585">"Rekaman layar dihapus"</string> <string name="screenrecord_delete_error" msgid="8154904464563560282">"Error saat menghapus rekaman layar"</string> <string name="screenrecord_permission_error" msgid="1526755299469001000">"Gagal mendapatkan izin"</string> @@ -119,7 +119,7 @@ <string name="cancel" msgid="6442560571259935130">"Batal"</string> <string name="biometric_dialog_confirm" msgid="6468457350041712674">"Konfirmasi"</string> <string name="biometric_dialog_try_again" msgid="1900185172633183201">"Coba lagi"</string> - <string name="biometric_dialog_empty_space_description" msgid="7997936968009073717">"Area kosong. Tap untuk membatalkan autentikasi"</string> + <string name="biometric_dialog_empty_space_description" msgid="7997936968009073717">"Area kosong. Ketuk untuk membatalkan autentikasi"</string> <string name="biometric_dialog_face_icon_description_idle" msgid="4497694707475970790">"Coba lagi"</string> <string name="biometric_dialog_face_icon_description_authenticating" msgid="4512727754496228488">"Mencari wajah Anda"</string> <string name="biometric_dialog_face_icon_description_authenticated" msgid="595380451325425259">"Wajah diautentikasi"</string> @@ -297,7 +297,7 @@ <string name="dessert_case" msgid="1295161776223959221">"Etalase Hidangan Penutup"</string> <string name="start_dreams" msgid="5640361424498338327">"Screen saver"</string> <string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string> - <string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"Tap lama ikon untuk opsi lainnya"</string> + <string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"Sentuh lama ikon untuk opsi lainnya"</string> <string name="quick_settings_dnd_label" msgid="7112342227663678739">"Jangan Ganggu"</string> <string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"Hanya untuk prioritas"</string> <string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"Hanya alarm"</string> @@ -375,8 +375,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"Sampai pagi"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"Aktif pada <xliff:g id="TIME">%s</xliff:g>"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"Hingga <xliff:g id="TIME">%s</xliff:g>"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"Tema Gelap"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"Tema Gelap\nPenghemat baterai"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"Tema gelap"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"Tema gelap\nPenghemat baterai"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"NFC"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"NFC dinonaktifkan"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"NFC diaktifkan"</string> @@ -398,7 +398,7 @@ <string name="zen_silence_introduction" msgid="3137882381093271568">"SEMUA suara dan getaran, termasuk dari alarm, musik, video, dan game akan diblokir."</string> <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="1288875699658819755">"Notifikasi kurang darurat di bawah"</string> - <string name="notification_tap_again" msgid="7590196980943943842">"Tap lagi untuk membuka"</string> + <string name="notification_tap_again" msgid="7590196980943943842">"Ketuk lagi untuk membuka"</string> <string name="keyguard_unlock" msgid="8043466894212841998">"Geser ke atas untuk membuka kunci"</string> <string name="do_disclosure_generic" msgid="5615898451805157556">"Perangkat ini dikelola oleh organisasi"</string> <string name="do_disclosure_with_name" msgid="5640615509915445501">"Perangkat ini dikelola oleh <xliff:g id="ORGANIZATION_NAME">%s</xliff:g>"</string> @@ -536,13 +536,13 @@ <string name="volume_odi_captions_hint_disable" msgid="8980842810619956593">"nonaktifkan"</string> <string name="accessibility_output_chooser" msgid="8185317493017988680">"Ganti perangkat keluaran"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"Layar dipasangi pin"</string> - <string name="screen_pinning_description" msgid="8909878447196419623">"Ini akan terus ditampilkan sampai Anda melepas pin. Sentuh & tahan tombol Kembali dan Ringkasan untuk melepas pin."</string> - <string name="screen_pinning_description_recents_invisible" msgid="8281145542163727971">"Ini akan terus ditampilkan sampai Anda melepas pin. Sentuh & tahan tombol Kembali dan Beranda untuk melepas pin."</string> + <string name="screen_pinning_description" msgid="8909878447196419623">"Ini akan terus ditampilkan sampai Anda melepas pin. Sentuh lama tombol Kembali dan Ringkasan untuk melepas pin."</string> + <string name="screen_pinning_description_recents_invisible" msgid="8281145542163727971">"Ini akan terus ditampilkan sampai Anda melepas pin. Sentuh lama tombol Kembali dan Beranda untuk melepas pin."</string> <string name="screen_pinning_description_gestural" msgid="1191513974909607884">"Ini akan terus ditampilkan sampai Anda melepas pin. Geser ke atas & tahan untuk melepas pin."</string> - <string name="screen_pinning_description_accessible" msgid="426190689254018656">"Ini akan terus ditampilkan sampai Anda melepas pin. Sentuh dan tahan tombol Ringkasan untuk melepas pin."</string> - <string name="screen_pinning_description_recents_invisible_accessible" msgid="6134833683151189507">"Ini akan terus ditampilkan sampai Anda melepas pin. Sentuh dan tahan tombol Beranda untuk melepas pin."</string> - <string name="screen_pinning_toast" msgid="2266705122951934150">"Untuk melepas pin layar ini, sentuh & tahan tombol Kembali dan Ringkasan"</string> - <string name="screen_pinning_toast_recents_invisible" msgid="8252402309499161281">"Untuk melepas pin layar ini, sentuh & tahan tombol Kembali dan Beranda"</string> + <string name="screen_pinning_description_accessible" msgid="426190689254018656">"Ini akan terus ditampilkan sampai Anda melepas pin. Sentuh lama tombol Ringkasan untuk melepas pin."</string> + <string name="screen_pinning_description_recents_invisible_accessible" msgid="6134833683151189507">"Ini akan terus ditampilkan sampai Anda melepas pin. Sentuh lama tombol Beranda untuk melepas pin."</string> + <string name="screen_pinning_toast" msgid="2266705122951934150">"Untuk melepas pin layar ini, sentuh lama tombol Kembali dan Ringkasan"</string> + <string name="screen_pinning_toast_recents_invisible" msgid="8252402309499161281">"Untuk melepas pin layar ini, sentuh lama tombol Kembali dan Beranda"</string> <string name="screen_pinning_positive" msgid="3783985798366751226">"Mengerti"</string> <string name="screen_pinning_negative" msgid="3741602308343880268">"Lain kali"</string> <string name="screen_pinning_start" msgid="1022122128489278317">"Layar dipasangi pin"</string> @@ -565,11 +565,11 @@ <string name="volume_ringer_status_silent" msgid="6896394161022916369">"Nonaktifkan"</string> <string name="qs_status_phone_vibrate" msgid="204362991135761679">"Ponsel mode getar"</string> <string name="qs_status_phone_muted" msgid="5437668875879171548">"Ponsel dimatikan suaranya"</string> - <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Tap untuk menyuarakan."</string> - <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Tap untuk menyetel agar bergetar. Layanan aksesibilitas mungkin dibisukan."</string> - <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. Tap untuk membisukan. Layanan aksesibilitas mungkin dibisukan."</string> - <string name="volume_stream_content_description_vibrate_a11y" msgid="6427727603978431301">"%1$s. Tap untuk menyetel agar bergetar."</string> - <string name="volume_stream_content_description_mute_a11y" msgid="8995013018414535494">"%1$s. Tap untuk menonaktifkan."</string> + <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Ketuk untuk menyuarakan."</string> + <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Ketuk untuk menyetel agar bergetar. Layanan aksesibilitas mungkin dibisukan."</string> + <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. Ketuk untuk membisukan. Layanan aksesibilitas mungkin dibisukan."</string> + <string name="volume_stream_content_description_vibrate_a11y" msgid="6427727603978431301">"%1$s. Ketuk untuk menyetel agar bergetar."</string> + <string name="volume_stream_content_description_mute_a11y" msgid="8995013018414535494">"%1$s. Ketuk untuk menonaktifkan."</string> <string name="volume_ringer_hint_mute" msgid="9199811307292269601">"Tanpa suara"</string> <string name="volume_ringer_hint_unmute" msgid="6602880133293060368">"aktifkan"</string> <string name="volume_ringer_hint_vibrate" msgid="4036802135666515202">"getar"</string> @@ -778,7 +778,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"Tahan dan tarik untuk menambahkan kartu"</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"Tahan dan tarik untuk mengatur ulang kartu"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"Tarik ke sini untuk menghapus"</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"Anda membutuhkan setidaknya 6 tile"</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"Anda membutuhkan setidaknya <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> kartu"</string> <string name="qs_edit" msgid="2232596095725105230">"Edit"</string> <string name="tuner_time" msgid="6572217313285536011">"Waktu"</string> <string-array name="clock_options"> @@ -804,8 +804,8 @@ <string name="accessibility_action_divider_top_50" msgid="6385859741925078668">"Atas 50%"</string> <string name="accessibility_action_divider_top_30" msgid="6201455163864841205">"Atas 30%"</string> <string name="accessibility_action_divider_bottom_full" msgid="301433196679548001">"Layar penuh di bawah"</string> - <string name="accessibility_qs_edit_tile_label" msgid="8374924053307764245">"Posisi <xliff:g id="POSITION">%1$d</xliff:g>, <xliff:g id="TILE_NAME">%2$s</xliff:g>. Tap dua kali untuk mengedit."</string> - <string name="accessibility_qs_edit_add_tile_label" msgid="8133209638023882667">"<xliff:g id="TILE_NAME">%1$s</xliff:g>. Tap dua kali untuk menambahkan."</string> + <string name="accessibility_qs_edit_tile_label" msgid="8374924053307764245">"Posisi <xliff:g id="POSITION">%1$d</xliff:g>, <xliff:g id="TILE_NAME">%2$s</xliff:g>. Ketuk dua kali untuk mengedit."</string> + <string name="accessibility_qs_edit_add_tile_label" msgid="8133209638023882667">"<xliff:g id="TILE_NAME">%1$s</xliff:g>. Ketuk dua kali untuk menambahkan."</string> <string name="accessibility_qs_edit_move_tile" msgid="2461819993780159542">"Pindahkan <xliff:g id="TILE_NAME">%1$s</xliff:g>"</string> <string name="accessibility_qs_edit_remove_tile" msgid="7484493384665907197">"Hapus <xliff:g id="TILE_NAME">%1$s</xliff:g>"</string> <string name="accessibility_qs_edit_tile_add" msgid="3520406665865985109">"Tambahkan <xliff:g id="TILE_NAME">%1$s</xliff:g> ke posisi <xliff:g id="POSITION">%2$d</xliff:g>"</string> @@ -835,7 +835,7 @@ <string name="pip_phone_dismiss_hint" msgid="6351678169095923899">"Tarik ke bawah untuk menutup"</string> <string name="pip_menu_title" msgid="4707292089961887657">"Menu"</string> <string name="pip_notification_title" msgid="3204024940158161322">"<xliff:g id="NAME">%s</xliff:g> adalah picture-in-picture"</string> - <string name="pip_notification_message" msgid="5619512781514343311">"Jika Anda tidak ingin <xliff:g id="NAME">%s</xliff:g> menggunakan fitur ini, tap untuk membuka setelan dan menonaktifkannya."</string> + <string name="pip_notification_message" msgid="5619512781514343311">"Jika Anda tidak ingin <xliff:g id="NAME">%s</xliff:g> menggunakan fitur ini, ketuk untuk membuka setelan dan menonaktifkannya."</string> <string name="pip_play" msgid="1417176722760265888">"Putar"</string> <string name="pip_pause" msgid="8881063404466476571">"Jeda"</string> <string name="pip_skip_to_next" msgid="1948440006726306284">"Lewati ke berikutnya"</string> @@ -872,7 +872,7 @@ <string name="instant_apps" msgid="6647570248119804907">"Aplikasi Instan"</string> <string name="instant_apps_title" msgid="8738419517367449783">"<xliff:g id="APP">%1$s</xliff:g> berjalan"</string> <string name="instant_apps_message" msgid="1183313016396018086">"Aplikasi dapat dibuka tanpa perlu diinstal."</string> - <string name="instant_apps_message_with_help" msgid="6179830437630729747">"Aplikasi dapat dibuka tanpa perlu diinstal. Tap untuk mempelajari lebih lanjut."</string> + <string name="instant_apps_message_with_help" msgid="6179830437630729747">"Aplikasi dapat dibuka tanpa perlu diinstal. Ketuk untuk mempelajari lebih lanjut."</string> <string name="app_info" msgid="6856026610594615344">"Info aplikasi"</string> <string name="go_to_web" msgid="2650669128861626071">"Buka browser"</string> <string name="mobile_data" msgid="7094582042819250762">"Data seluler"</string> @@ -888,7 +888,7 @@ <string name="qs_dnd_keep" msgid="1825009164681928736">"Simpan"</string> <string name="qs_dnd_replace" msgid="8019520786644276623">"Ganti"</string> <string name="running_foreground_services_title" msgid="381024150898615683">"Aplikasi yang sedang berjalan di latar belakang"</string> - <string name="running_foreground_services_msg" msgid="6326247670075574355">"Tap untuk melihat detail penggunaan baterai dan data"</string> + <string name="running_foreground_services_msg" msgid="6326247670075574355">"Ketuk untuk melihat detail penggunaan baterai dan data"</string> <string name="mobile_data_disable_title" msgid="1068272097382942231">"Nonaktifkan kuota?"</string> <string name="mobile_data_disable_message" msgid="4756541658791493506">"Anda tidak akan dapat mengakses data atau internet melalui <xliff:g id="CARRIER">%s</xliff:g>. Internet hanya akan tersedia melalui Wi-Fi."</string> <string name="mobile_data_disable_message_default_carrier" msgid="6078110473451946831">"Operator Seluler Anda"</string> @@ -899,7 +899,7 @@ <string name="slice_permission_checkbox" msgid="7986504458640562900">"Izinkan <xliff:g id="APP">%1$s</xliff:g> menampilkan potongan dari aplikasi apa pun"</string> <string name="slice_permission_allow" msgid="2340244901366722709">"Izinkan"</string> <string name="slice_permission_deny" msgid="7683681514008048807">"Tolak"</string> - <string name="auto_saver_title" msgid="1217959994732964228">"Tap untuk menjadwalkan Penghemat Baterai"</string> + <string name="auto_saver_title" msgid="1217959994732964228">"Ketuk untuk menjadwalkan Penghemat Baterai"</string> <string name="auto_saver_text" msgid="2563289953551438248">"Aktifkan jika daya baterai kemungkinan akan habis"</string> <string name="no_auto_saver_action" msgid="8086002101711328500">"Tidak, terima kasih"</string> <string name="auto_saver_enabled_title" msgid="6726474226058316862">"Jadwal Penghemat Baterai diaktifkan"</string> @@ -917,7 +917,7 @@ <string name="sensor_privacy_mode" msgid="8982771253020769598">"Sensor nonaktif"</string> <string name="device_services" msgid="1191212554435440592">"Layanan Perangkat"</string> <string name="music_controls_no_title" msgid="5236895307087002011">"Tanpa judul"</string> - <string name="restart_button_description" msgid="2035077840254950187">"Tap untuk memulai ulang aplikasi ini dan membuka layar penuh."</string> + <string name="restart_button_description" msgid="2035077840254950187">"Ketuk untuk memulai ulang aplikasi ini dan membuka layar penuh."</string> <string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Buka <xliff:g id="APP_NAME">%1$s</xliff:g>"</string> <string name="bubbles_settings_button_description" msgid="2970630476657287189">"Setelan untuk balon <xliff:g id="APP_NAME">%1$s</xliff:g>"</string> <string name="bubbles_prompt" msgid="8807968030159469710">"Izinkan balon dari <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string> diff --git a/packages/SystemUI/res/values-is/strings.xml b/packages/SystemUI/res/values-is/strings.xml index bd160e755f7c..6067547fcfce 100644 --- a/packages/SystemUI/res/values-is/strings.xml +++ b/packages/SystemUI/res/values-is/strings.xml @@ -197,7 +197,7 @@ <string name="carrier_network_change_mode" msgid="8149202439957837762">"Skiptir um farsímakerfi"</string> <string name="accessibility_battery_details" msgid="7645516654955025422">"Opna upplýsingar um rafhlöðu"</string> <string name="accessibility_battery_level" msgid="7451474187113371965">"<xliff:g id="NUMBER">%d</xliff:g> prósent á rafhlöðu."</string> - <string name="accessibility_battery_level_with_estimate" msgid="9033100930684311630">"Rafhlaða í <xliff:g id="PERCENTAGE">%1$s</xliff:g>%, um það bil <xliff:g id="TIME">%2$s</xliff:g> eftir miðað við notkun þína"</string> + <string name="accessibility_battery_level_with_estimate" msgid="9033100930684311630">"Rafhlaða í <xliff:g id="PERCENTAGE">%1$s</xliff:g> prósentum, um það bil <xliff:g id="TIME">%2$s</xliff:g> eftir miðað við notkun þína"</string> <string name="accessibility_battery_level_charging" msgid="1147587904439319646">"Rafhlaða í hleðslu, <xliff:g id="BATTERY_PERCENTAGE">%d</xliff:g>%%."</string> <string name="accessibility_settings_button" msgid="799583911231893380">"Kerfisstillingar."</string> <string name="accessibility_notifications_button" msgid="4498000369779421892">"Tilkynningar."</string> @@ -375,8 +375,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"Til sólarupprásar"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"Kveikt klukkan <xliff:g id="TIME">%s</xliff:g>"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"Til klukkan <xliff:g id="TIME">%s</xliff:g>"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"Dökkt þema"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"Dökkt þema\nRafhlöðusparnaður"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"Dökkt þema"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"Dökkt þema\nRafhlöðusparnaður"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"NFC"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"Slökkt á NFC"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"Kveikt á NFC"</string> @@ -778,7 +778,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"Haltu inni og dragðu til að bæta við reitum"</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"Haltu og dragðu til að endurraða flísum"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"Dragðu hingað til að fjarlægja"</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"Reitirnir mega ekki vera færri en sex"</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"Reitirnir mega ekki vera færri en <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g>"</string> <string name="qs_edit" msgid="2232596095725105230">"Breyta"</string> <string name="tuner_time" msgid="6572217313285536011">"Tími"</string> <string-array name="clock_options"> diff --git a/packages/SystemUI/res/values-it/strings.xml b/packages/SystemUI/res/values-it/strings.xml index 8f70cbd3f4c9..ccff49450d00 100644 --- a/packages/SystemUI/res/values-it/strings.xml +++ b/packages/SystemUI/res/values-it/strings.xml @@ -117,7 +117,7 @@ <string name="voice_assist_label" msgid="3956854378310019854">"apri Voice Assist"</string> <string name="camera_label" msgid="7261107956054836961">"apri fotocamera"</string> <string name="cancel" msgid="6442560571259935130">"Annulla"</string> - <string name="biometric_dialog_confirm" msgid="6468457350041712674">"Confermo"</string> + <string name="biometric_dialog_confirm" msgid="6468457350041712674">"Conferma"</string> <string name="biometric_dialog_try_again" msgid="1900185172633183201">"Riprova"</string> <string name="biometric_dialog_empty_space_description" msgid="7997936968009073717">"Spazio vuoto, tocca per annullare l\'autenticazione"</string> <string name="biometric_dialog_face_icon_description_idle" msgid="4497694707475970790">"Riprova"</string> @@ -197,7 +197,7 @@ <string name="carrier_network_change_mode" msgid="8149202439957837762">"Cambio della rete dell\'operatore"</string> <string name="accessibility_battery_details" msgid="7645516654955025422">"Visualizza i dettagli relativi alla batteria"</string> <string name="accessibility_battery_level" msgid="7451474187113371965">"Batteria: <xliff:g id="NUMBER">%d</xliff:g> percento."</string> - <string name="accessibility_battery_level_with_estimate" msgid="9033100930684311630">"Batteria al <xliff:g id="PERCENTAGE">%1$s</xliff:g> percento. Tempo rimanente in base al tuo utilizzo: <xliff:g id="TIME">%2$s</xliff:g>"</string> + <string name="accessibility_battery_level_with_estimate" msgid="9033100930684311630">"Livello della batteria: <xliff:g id="PERCENTAGE">%1$s</xliff:g> percento. Tempo rimanente in base al tuo utilizzo: <xliff:g id="TIME">%2$s</xliff:g>"</string> <string name="accessibility_battery_level_charging" msgid="1147587904439319646">"Batteria in carica, <xliff:g id="BATTERY_PERCENTAGE">%d</xliff:g>%%."</string> <string name="accessibility_settings_button" msgid="799583911231893380">"Impostazioni di sistema."</string> <string name="accessibility_notifications_button" msgid="4498000369779421892">"Notifiche."</string> @@ -375,8 +375,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"Fino all\'alba"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"Dalle <xliff:g id="TIME">%s</xliff:g>"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"Fino alle <xliff:g id="TIME">%s</xliff:g>"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"Tema scuro"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"Tema scuro\nRisparmio energetico"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"Tema scuro"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"Tema scuro\nRisparmio energetico"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"NFC"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"NFC non attiva"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"NFC attiva"</string> @@ -778,7 +778,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"Tieni premuto e trascina per aggiungere riquadri"</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"Tieni premuto e trascina per riordinare i riquadri"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"Trascina qui per rimuovere"</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"Occorrono almeno sei riquadri"</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"Occorrono almeno <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> schede"</string> <string name="qs_edit" msgid="2232596095725105230">"Modifica"</string> <string name="tuner_time" msgid="6572217313285536011">"Ora"</string> <string-array name="clock_options"> diff --git a/packages/SystemUI/res/values-iw/strings.xml b/packages/SystemUI/res/values-iw/strings.xml index 3468f01edf9c..df8dac4a5476 100644 --- a/packages/SystemUI/res/values-iw/strings.xml +++ b/packages/SystemUI/res/values-iw/strings.xml @@ -379,8 +379,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"עד הזריחה"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"מופעל בשעה <xliff:g id="TIME">%s</xliff:g>"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"עד <xliff:g id="TIME">%s</xliff:g>"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"עיצוב כהה"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"עיצוב כהה\nלחיסכון בסוללה"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"עיצוב כהה"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"עיצוב כהה\nחיסכון בסוללה"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"NFC"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"NFC מושבת"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"NFC מופעל"</string> @@ -788,7 +788,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"יש ללחוץ ולגרור כדי להוסיף אריחים"</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"יש ללחוץ ולגרור כדי לסדר מחדש את האריחים"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"גרור לכאן כדי להסיר"</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"יש צורך בשישה אריחים לכל הפחות"</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"יש צורך ב-<xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> אריחים לפחות"</string> <string name="qs_edit" msgid="2232596095725105230">"עריכה"</string> <string name="tuner_time" msgid="6572217313285536011">"שעה"</string> <string-array name="clock_options"> diff --git a/packages/SystemUI/res/values-ja/strings.xml b/packages/SystemUI/res/values-ja/strings.xml index 78bb01351d02..534fad7fe501 100644 --- a/packages/SystemUI/res/values-ja/strings.xml +++ b/packages/SystemUI/res/values-ja/strings.xml @@ -375,8 +375,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"日の出まで"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"<xliff:g id="TIME">%s</xliff:g> に ON"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"<xliff:g id="TIME">%s</xliff:g> まで"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"ダークテーマ"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"ダークテーマ\nバッテリー セーバー"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"ダークテーマ"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"ダークテーマ\nバッテリー セーバー"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"NFC"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"NFC は無効です"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"NFC は有効です"</string> @@ -529,7 +529,7 @@ <string name="accessibility_volume_settings" msgid="4915364006817819212">"音声の設定"</string> <string name="accessibility_volume_expand" msgid="5946812790999244205">"展開"</string> <string name="accessibility_volume_collapse" msgid="3609549593031810875">"折りたたむ"</string> - <string name="volume_odi_captions_tip" msgid="1193653197906918269">"自動字幕起こしメディア"</string> + <string name="volume_odi_captions_tip" msgid="1193653197906918269">"メディアの自動字幕起こし"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"字幕のヒントを閉じる"</string> <string name="volume_odi_captions_content_description" msgid="2950736796270214785">"字幕のオーバーレイ"</string> <string name="volume_odi_captions_hint_enable" msgid="49750248924730302">"有効にする"</string> @@ -778,7 +778,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"タイルを追加するには長押ししてドラッグ"</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"タイルを並べ替えるには長押ししてドラッグ"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"削除するにはここにドラッグ"</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"タイルは 6 個以上必要"</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"タイルは <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> 個以上必要です"</string> <string name="qs_edit" msgid="2232596095725105230">"編集"</string> <string name="tuner_time" msgid="6572217313285536011">"時間"</string> <string-array name="clock_options"> diff --git a/packages/SystemUI/res/values-ka/strings.xml b/packages/SystemUI/res/values-ka/strings.xml index eec2f4b6a2e5..0bb4d829d075 100644 --- a/packages/SystemUI/res/values-ka/strings.xml +++ b/packages/SystemUI/res/values-ka/strings.xml @@ -134,9 +134,9 @@ <string name="accessibility_bluetooth_disconnected" msgid="7416648669976870175">"Bluetooth კავშირი გაწყვეტილია."</string> <string name="accessibility_no_battery" msgid="358343022352820946">"ბატარეა დამჯდარია."</string> <string name="accessibility_battery_one_bar" msgid="7774887721891057523">"ბატარეია ერთ ზოლზეა."</string> - <string name="accessibility_battery_two_bars" msgid="8500650438735009973">"ელემენტი ორ ზოლზე."</string> - <string name="accessibility_battery_three_bars" msgid="2302983330865040446">"ელემენტი სამ ზოლზე."</string> - <string name="accessibility_battery_full" msgid="8909122401720158582">"ელემენტი სავსეა."</string> + <string name="accessibility_battery_two_bars" msgid="8500650438735009973">"ბატარეა ორ ზოლზე."</string> + <string name="accessibility_battery_three_bars" msgid="2302983330865040446">"ბატარეა სამ ზოლზე."</string> + <string name="accessibility_battery_full" msgid="8909122401720158582">"ბატარეა სავსეა."</string> <string name="accessibility_no_phone" msgid="4894708937052611281">"ტელეფონი არ არის."</string> <string name="accessibility_phone_one_bar" msgid="687699278132664115">"ტელეფონის სიგნალი ერთ ზოლზეა."</string> <string name="accessibility_phone_two_bars" msgid="8384905382804815201">"ტელეფონის სიგნალი ორ ზოლზეა."</string> @@ -224,7 +224,7 @@ <string name="accessibility_quick_settings_wifi_changed_off" msgid="8716484460897819400">"Wifi გამორთულია."</string> <string name="accessibility_quick_settings_wifi_changed_on" msgid="6440117170789528622">"Wifi ჩართულია."</string> <string name="accessibility_quick_settings_mobile" msgid="4876806564086241341">"მობილურის <xliff:g id="SIGNAL">%1$s</xliff:g>. <xliff:g id="TYPE">%2$s</xliff:g>. <xliff:g id="NETWORK">%3$s</xliff:g>."</string> - <string name="accessibility_quick_settings_battery" msgid="1480931583381408972">"ელემენტი: <xliff:g id="STATE">%s</xliff:g>."</string> + <string name="accessibility_quick_settings_battery" msgid="1480931583381408972">"ბატარეა: <xliff:g id="STATE">%s</xliff:g>."</string> <string name="accessibility_quick_settings_airplane_off" msgid="7786329360056634412">"თვითმფრინავის რეჟიმი გამორთულია."</string> <string name="accessibility_quick_settings_airplane_on" msgid="6406141469157599296">"თვითმფრინავის რეჟიმი ჩართულია."</string> <string name="accessibility_quick_settings_airplane_changed_off" msgid="66846307818850664">"თვითმფრინავის რეჟიმი გამოირთო."</string> @@ -375,8 +375,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"მზის ამოსვლამდე"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"ჩაირთოს <xliff:g id="TIME">%s</xliff:g>-ზე"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"<xliff:g id="TIME">%s</xliff:g>-მდე"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"მუქი თემა"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"მუქი თემა\nბატარეის დამზოგი"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"მუქი თემა"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"მუქი თემა\nბატარეის დამზოგი"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"NFC"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"NFC გათიშულია"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"NFC ჩართულია"</string> @@ -529,7 +529,7 @@ <string name="accessibility_volume_settings" msgid="4915364006817819212">"ხმის პარამეტრები"</string> <string name="accessibility_volume_expand" msgid="5946812790999244205">"გავრცობა"</string> <string name="accessibility_volume_collapse" msgid="3609549593031810875">"ჩაკეცვა"</string> - <string name="volume_odi_captions_tip" msgid="1193653197906918269">"ავტომატური სუბტიტრების მედია"</string> + <string name="volume_odi_captions_tip" msgid="1193653197906918269">"მედიის ავტომ. სუბტიტრირება"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"მინიშნება სუბტიტრებისთვის"</string> <string name="volume_odi_captions_content_description" msgid="2950736796270214785">"სუბტიტრების გადაფარვა"</string> <string name="volume_odi_captions_hint_enable" msgid="49750248924730302">"ჩართვა"</string> @@ -778,7 +778,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"ჩავლებით გადაიტანეთ ბლოკების დასამატებლად"</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"ფილების გადაწყობა შეგიძლიათ მათი ჩავლებით გადატანით"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"ამოსაშლელად, ჩავლებით გადმოიტანეთ აქ"</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"გჭირდებათ მინიმუმ 6 ბლოკი"</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"თქვენ გჭირდებათ მოზაიკის <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> ფილა მაინც"</string> <string name="qs_edit" msgid="2232596095725105230">"რედაქტირება"</string> <string name="tuner_time" msgid="6572217313285536011">"დრო"</string> <string-array name="clock_options"> diff --git a/packages/SystemUI/res/values-kk/strings.xml b/packages/SystemUI/res/values-kk/strings.xml index 8e2631a5f7e5..e891fc044ba7 100644 --- a/packages/SystemUI/res/values-kk/strings.xml +++ b/packages/SystemUI/res/values-kk/strings.xml @@ -197,8 +197,7 @@ <string name="carrier_network_change_mode" msgid="8149202439957837762">"Оператор желісін өзгерту"</string> <string name="accessibility_battery_details" msgid="7645516654955025422">"Батарея мәліметтерін ашу"</string> <string name="accessibility_battery_level" msgid="7451474187113371965">"Батарея <xliff:g id="NUMBER">%d</xliff:g> пайыз."</string> - <!-- no translation found for accessibility_battery_level_with_estimate (9033100930684311630) --> - <skip /> + <string name="accessibility_battery_level_with_estimate" msgid="9033100930684311630">"Батарея заряды: <xliff:g id="PERCENTAGE">%1$s</xliff:g> пайыз. Пайдалануға байланысты шамамен <xliff:g id="TIME">%2$s</xliff:g> уақытқа жетеді."</string> <string name="accessibility_battery_level_charging" msgid="1147587904439319646">"Батарея зарядталуда, <xliff:g id="BATTERY_PERCENTAGE">%d</xliff:g> %%."</string> <string name="accessibility_settings_button" msgid="799583911231893380">"Жүйе параметрлері."</string> <string name="accessibility_notifications_button" msgid="4498000369779421892">"Хабарлар."</string> @@ -376,8 +375,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"Күн шыққанға дейін"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"Қосылу уақыты: <xliff:g id="TIME">%s</xliff:g>"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"<xliff:g id="TIME">%s</xliff:g> дейін"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"Қараңғы тақырып"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"Қараңғы тақырып\nBattery saver"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"Қараңғы тақырып"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"Қараңғы тақырып\nBattery saver"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"NFC"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"NFC өшірулі"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"NFC қосулы"</string> @@ -779,7 +778,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"Қажетті элементтерді сүйреп әкеліп қойыңыз"</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"Элементтердің ретін өзгерту үшін оларды басып тұрып сүйреңіз"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"Керексіздерін осы жерге сүйреңіз"</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"Кемінде 6 бөлшек қажет"</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"Кемінде <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> бөлшек қажет."</string> <string name="qs_edit" msgid="2232596095725105230">"Өңдеу"</string> <string name="tuner_time" msgid="6572217313285536011">"Уақыт"</string> <string-array name="clock_options"> @@ -876,7 +875,7 @@ <string name="instant_apps_message_with_help" msgid="6179830437630729747">"Қолданба орнатылмай-ақ ашылды. Толығырақ мәлімет алу үшін түртіңіз."</string> <string name="app_info" msgid="6856026610594615344">"Қолданба ақпараты"</string> <string name="go_to_web" msgid="2650669128861626071">"Браузерге өту"</string> - <string name="mobile_data" msgid="7094582042819250762">"Мобильдік деректер"</string> + <string name="mobile_data" msgid="7094582042819250762">"Мобильдік интернет"</string> <string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> – <xliff:g id="ID_2">%2$s</xliff:g>"</string> <string name="mobile_carrier_text_format" msgid="3241721038678469804">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>"</string> <string name="wifi_is_off" msgid="1838559392210456893">"Wi-Fi өшірулі"</string> @@ -934,8 +933,6 @@ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"Төменгі сол жаққа жылжыту"</string> <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"Төменгі оң жаққа жылжыту"</string> <string name="bubble_dismiss_text" msgid="8028337712674081668">"Жабу"</string> - <!-- no translation found for notification_content_system_nav_changed (7218093915747788444) --> - <skip /> - <!-- no translation found for notification_content_gesture_nav_available (8111130443656460792) --> - <skip /> + <string name="notification_content_system_nav_changed" msgid="7218093915747788444">"Жүйе навигациясы жаңартылды. Өзгерту енгізу үшін \"Параметрлер\" бөліміне өтіңіз."</string> + <string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"Жүйе навигациясын жаңарту үшін \"Параметрлер\" бөліміне өтіңіз."</string> </resources> diff --git a/packages/SystemUI/res/values-km/strings.xml b/packages/SystemUI/res/values-km/strings.xml index 13a0f1f7b5b6..173db1898efd 100644 --- a/packages/SystemUI/res/values-km/strings.xml +++ b/packages/SystemUI/res/values-km/strings.xml @@ -375,8 +375,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"រហូតដល់ពេលថ្ងៃរះ"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"បើកនៅម៉ោង <xliff:g id="TIME">%s</xliff:g>"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"រហូតដល់ម៉ោង <xliff:g id="TIME">%s</xliff:g>"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"រចនាប័ទ្មងងឹត"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"រចនាប័ទ្មងងឹត\nកម្មវិធីសន្សំថ្ម"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"រចនាប័ទ្មងងឹត"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"រចនាប័ទ្មងងឹត\nកម្មវិធីសន្សំថ្ម"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"NFC"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"បានបិទ NFC"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"បានបើក NFC"</string> @@ -451,9 +451,9 @@ <string name="battery_saver_notification_title" msgid="8614079794522291840">"កម្មវិធីសន្សំថ្មបានបើក"</string> <string name="battery_saver_notification_text" msgid="820318788126672692">"ការបន្ថយការប្រតិបត្តិ និងទិន្នន័យផ្ទៃខាងក្រោយ"</string> <string name="battery_saver_notification_action_text" msgid="132118784269455533">"បិទកម្មវិធីសន្សំថ្ម"</string> - <string name="media_projection_dialog_text" msgid="8585357687598538511">"នៅពេលកំពុងថត ឬបញ្ជូន <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> អាចថតព័ត៌មានរសើបទាំងឡាយដែលបង្ហាញនៅលើអេក្រង់របស់អ្នក ឬដែលចាក់ពីឧបករណ៍របស់អ្នក រួមទាំងព័ត៌មានរសើបដូចជា សំឡេង ពាក្យសម្ងាត់ ព័ត៌មានបង់ប្រាក់ រូបថត និងសារជាដើម។"</string> + <string name="media_projection_dialog_text" msgid="8585357687598538511">"នៅពេលកំពុងថត ឬភ្ជាប់ <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> អាចថតព័ត៌មានរសើបទាំងឡាយដែលបង្ហាញនៅលើអេក្រង់របស់អ្នក ឬដែលចាក់ពីឧបករណ៍របស់អ្នក រួមទាំងព័ត៌មានរសើបដូចជា សំឡេង ពាក្យសម្ងាត់ ព័ត៌មានបង់ប្រាក់ រូបថត និងសារជាដើម។"</string> <string name="media_projection_dialog_service_text" msgid="3075544489835858258">"នៅពេលកំពុងថត ឬបញ្ជូន សេវាកម្មដែលផ្ដល់មុខងារនេះអាចថតព័ត៌មានរសើបទាំងឡាយដែលបង្ហាញនៅលើអេក្រង់របស់អ្នក ឬដែលចាក់ពីឧបករណ៍របស់អ្នក រួមទាំងព័ត៌មានរសើបដូចជា សំឡេង ពាក្យសម្ងាត់ ព័ត៌មានបង់ប្រាក់ រូបថត និងសារជាដើម។"</string> - <string name="media_projection_dialog_title" msgid="8124184308671641248">"បង្ហាញព័ត៌មានរសើប អំឡុងពេលបញ្ជូន/ថត"</string> + <string name="media_projection_dialog_title" msgid="8124184308671641248">"ការបង្ហាញព័ត៌មានរសើប អំឡុងពេលភ្ជាប់/ថត"</string> <string name="media_projection_remember_text" msgid="3103510882172746752">"កុំបង្ហាញម្ដងទៀត"</string> <string name="clear_all_notifications_text" msgid="814192889771462828">"សម្អាតទាំងអស់"</string> <string name="manage_notifications_text" msgid="2386728145475108753">"គ្រប់គ្រង"</string> @@ -529,7 +529,7 @@ <string name="accessibility_volume_settings" msgid="4915364006817819212">"ការកំណត់សំឡេង"</string> <string name="accessibility_volume_expand" msgid="5946812790999244205">"ពង្រីក"</string> <string name="accessibility_volume_collapse" msgid="3609549593031810875">"បង្រួម"</string> - <string name="volume_odi_captions_tip" msgid="1193653197906918269">"ដាក់ចំណងជើងមេឌៀដោយស្វ័យប្រវត្តិ"</string> + <string name="volume_odi_captions_tip" msgid="1193653197906918269">"ដាក់អក្សររត់លើមេឌៀដោយស្វ័យប្រវត្តិ"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"គន្លឹះអក្សររត់"</string> <string name="volume_odi_captions_content_description" msgid="2950736796270214785">"ការដាក់ត្រួតគ្នាលើអក្សររត់"</string> <string name="volume_odi_captions_hint_enable" msgid="49750248924730302">"បើក"</string> @@ -778,7 +778,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"ចុចឱ្យជាប់ រួចអូសដើម្បីបញ្ចូលប្រអប់"</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"ចុចឱ្យជាប់ រួចអូសដើម្បីរៀបចំប្រអប់ឡើងវិញ"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"អូសទីនេះដើម្បីយកចេញ"</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"អ្នកត្រូវការប្រអប់យ៉ាងតិច 6"</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"អ្នកត្រូវការប្រអប់យ៉ាងតិច <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g>"</string> <string name="qs_edit" msgid="2232596095725105230">"កែសម្រួល"</string> <string name="tuner_time" msgid="6572217313285536011">"ម៉ោង"</string> <string-array name="clock_options"> diff --git a/packages/SystemUI/res/values-kn/strings.xml b/packages/SystemUI/res/values-kn/strings.xml index 63d9680a1596..b8f2324129f0 100644 --- a/packages/SystemUI/res/values-kn/strings.xml +++ b/packages/SystemUI/res/values-kn/strings.xml @@ -375,8 +375,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"ಸೂರ್ಯೋದಯದ ತನಕ"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"<xliff:g id="TIME">%s</xliff:g> ಸಮಯದಲ್ಲಿ"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"<xliff:g id="TIME">%s</xliff:g> ವರೆಗೂ"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"ಡಾರ್ಕ್ ಥೀಮ್"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"ಡಾರ್ಕ್ ಥೀಮ್\nಬ್ಯಾಟರಿ ಸೇವರ್"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"ಡಾರ್ಕ್ ಥೀಮ್"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"ಡಾರ್ಕ್ ಥೀಮ್\nಬ್ಯಾಟರಿ ಸೇವರ್"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"NFC"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"NFC ನಿಷ್ಕ್ರಿಯಗೊಂಡಿದೆ"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"NFC ಸಕ್ರಿಯಗೊಂಡಿದೆ"</string> @@ -778,7 +778,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"ಟೈಲ್ಗಳನ್ನು ಸೇರಿಸಲು ಹೋಲ್ಡ್ ಮಾಡಿ ಮತ್ತು ಡ್ರ್ಯಾಗ್ ಮಾಡಿ"</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"ಟೈಲ್ಗಳನ್ನು ಮರುಹೊಂದಿಸಲು ಹೋಲ್ಡ್ ಮಾಡಿ ಮತ್ತು ಡ್ರ್ಯಾಗ್ ಮಾಡಿ"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"ತೆಗೆದುಹಾಕಲು ಇಲ್ಲಿ ಡ್ರ್ಯಾಗ್ ಮಾಡಿ"</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"ನಿಮಗೆ ಕನಿಷ್ಠ 6 ಟೈಲ್ಗಳ ಅಗತ್ಯವಿದೆ"</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"ನಿಮಗೆ ಕನಿಷ್ಠ <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> ಟೈಲ್ಗಳ ಅಗತ್ಯವಿದೆ"</string> <string name="qs_edit" msgid="2232596095725105230">"ಎಡಿಟ್"</string> <string name="tuner_time" msgid="6572217313285536011">"ಸಮಯ"</string> <string-array name="clock_options"> diff --git a/packages/SystemUI/res/values-ko/strings.xml b/packages/SystemUI/res/values-ko/strings.xml index e162fa0f2b85..4a1b947141c1 100644 --- a/packages/SystemUI/res/values-ko/strings.xml +++ b/packages/SystemUI/res/values-ko/strings.xml @@ -375,8 +375,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"일출까지"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"<xliff:g id="TIME">%s</xliff:g>에"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"<xliff:g id="TIME">%s</xliff:g>까지"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"어두운 테마"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"어두운 테마\n절전 모드"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"어두운 테마"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"어두운 테마\n절전 모드"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"NFC"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"NFC 사용 중지됨"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"NFC 사용 설정됨"</string> @@ -529,7 +529,7 @@ <string name="accessibility_volume_settings" msgid="4915364006817819212">"소리 설정"</string> <string name="accessibility_volume_expand" msgid="5946812790999244205">"펼치기"</string> <string name="accessibility_volume_collapse" msgid="3609549593031810875">"접기"</string> - <string name="volume_odi_captions_tip" msgid="1193653197906918269">"자동 자막 미디어"</string> + <string name="volume_odi_captions_tip" msgid="1193653197906918269">"미디어 자막 자동 생성"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"자막 팁 닫기"</string> <string name="volume_odi_captions_content_description" msgid="2950736796270214785">"캡션 오버레이"</string> <string name="volume_odi_captions_hint_enable" msgid="49750248924730302">"사용"</string> @@ -651,7 +651,7 @@ <string name="notification_silence_title" msgid="5763240612242137433">"무음"</string> <string name="notification_alert_title" msgid="8031196611815490340">"주의를 끄는 알림"</string> <string name="notification_channel_summary_low" msgid="3387466082089715555">"소리나 진동 없이 집중할 수 있도록 도와줍니다"</string> - <string name="notification_channel_summary_default" msgid="5994062840431965586">"소리나 진동으로 주의를 끕니다"</string> + <string name="notification_channel_summary_default" msgid="5994062840431965586">"소리나 진동으로 알립니다."</string> <string name="notification_unblockable_desc" msgid="4556908766584964102">"이 알림은 수정할 수 없습니다."</string> <string name="notification_multichannel_desc" msgid="4695920306092240550">"이 알림 그룹은 여기에서 설정할 수 없습니다."</string> <string name="notification_delegate_header" msgid="2857691673814814270">"프록시를 통한 알림"</string> @@ -778,7 +778,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"길게 터치하고 드래그하여 타일 추가"</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"길게 터치하고 드래그하여 타일 재정렬"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"여기로 드래그하여 삭제"</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"6개 이상의 타일이 필요합니다."</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"<xliff:g id="MIN_NUM_TILES">%1$d</xliff:g>개 이상의 타일이 필요합니다."</string> <string name="qs_edit" msgid="2232596095725105230">"수정"</string> <string name="tuner_time" msgid="6572217313285536011">"시간"</string> <string-array name="clock_options"> diff --git a/packages/SystemUI/res/values-ky/strings.xml b/packages/SystemUI/res/values-ky/strings.xml index eb160f3a20ed..ce6b64cbfbbf 100644 --- a/packages/SystemUI/res/values-ky/strings.xml +++ b/packages/SystemUI/res/values-ky/strings.xml @@ -375,8 +375,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"Күн чыкканга чейин"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"Саат <xliff:g id="TIME">%s</xliff:g> күйөт"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"<xliff:g id="TIME">%s</xliff:g> чейин"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"Түнкү режим"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"Түнкү режим\nБатареяны үнөмдөгүч"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"Түнкү режим"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"Түнкү режим\nБатареяны үнөмдөгүч"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"NFC"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"NFC өчүрүлгөн"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"NFC иштетилген"</string> @@ -453,7 +453,7 @@ <string name="battery_saver_notification_action_text" msgid="132118784269455533">"Батареяны үнөмдөгүч режимин өчүрүү"</string> <string name="media_projection_dialog_text" msgid="8585357687598538511">"Жаздырып же тышкы экранга чыгаруу учурунда, <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> колдонмосу ойноткон аудиоңуз, сырсөздөрүңүз, төлөө маалыматыңыз, сүрөттөрүңүз жана билдирүүлөрүңүз сыяктуу экранда көрсөтүлгөн купуя маалыматты жаздырып калышы мүмкүн."</string> <string name="media_projection_dialog_service_text" msgid="3075544489835858258">"Жаздырып же тышкы экранга чыгаруу учурунда, бул функцияны аткарып жаткан колдонмо ойноткон аудиоңуз, сырсөздөрүңүз, төлөө маалыматыңыз, сүрөттөрүңүз жана билдирүүлөрүңүз сыяктуу экранда көрсөтүлгөн купуя маалыматты жаздырып калышы мүмкүн."</string> - <string name="media_projection_dialog_title" msgid="8124184308671641248">"Тышкы экранга чыгарууда/жаздырууда купуя маалыматты ачыкка чыгаруу"</string> + <string name="media_projection_dialog_title" msgid="8124184308671641248">"Тышкы экранга чыгарууда/жаздырууда купуя маалыматты ачыктоо"</string> <string name="media_projection_remember_text" msgid="3103510882172746752">"Экинчи көрсөтүлбөсүн"</string> <string name="clear_all_notifications_text" msgid="814192889771462828">"Бардыгын тазалап салуу"</string> <string name="manage_notifications_text" msgid="2386728145475108753">"Башкаруу"</string> @@ -529,7 +529,7 @@ <string name="accessibility_volume_settings" msgid="4915364006817819212">"Добуштун жөндөөлөрү"</string> <string name="accessibility_volume_expand" msgid="5946812790999244205">"Жайып көрсөтүү"</string> <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Жыйнап коюу"</string> - <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Медиага автоматтык коштомо жазуу"</string> + <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Автоматтык коштомо жазуулар"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Коштомо жазуулар кеңеши"</string> <string name="volume_odi_captions_content_description" msgid="2950736796270214785">"Коштомо жазуулардын үстүнө коюу"</string> <string name="volume_odi_captions_hint_enable" msgid="49750248924730302">"иштетүү"</string> @@ -649,9 +649,9 @@ <string name="inline_turn_off_notifications" msgid="8635596135532202355">"Билдирмелерди өчүрүү"</string> <string name="inline_keep_showing_app" msgid="1723113469580031041">"Бул колдонмонун эскертмелери көрсөтүлө берсинби?"</string> <string name="notification_silence_title" msgid="5763240612242137433">"Үнсүз"</string> - <string name="notification_alert_title" msgid="8031196611815490340">"Шашылыш билдирме"</string> + <string name="notification_alert_title" msgid="8031196611815490340">"Шашылыш билдирүү"</string> <string name="notification_channel_summary_low" msgid="3387466082089715555">"Үн же дирилдөөсүз ой топтоого жардам берет."</string> - <string name="notification_channel_summary_default" msgid="5994062840431965586">"Үн чыгарып же дирилдеп көңүлүңүздү бурат."</string> + <string name="notification_channel_summary_default" msgid="5994062840431965586">"Билдирүүдөн үн чыгат же дирилдейт."</string> <string name="notification_unblockable_desc" msgid="4556908766584964102">"Бул билдирмелерди өзгөртүүгө болбойт."</string> <string name="notification_multichannel_desc" msgid="4695920306092240550">"Бул билдирмелердин тобун бул жерде конфигурациялоого болбойт"</string> <string name="notification_delegate_header" msgid="2857691673814814270">"Прокси билдирмеси"</string> @@ -778,7 +778,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"Керектүү элементтерди сүйрөп келиңиз"</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"Элементтердин иретин өзгөртүү үчүн кармап туруп, сүйрөңүз"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"Алып салуу үчүн бул жерге сүйрөңүз"</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"Сизге жок дегенде 6 мозаика керек"</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"Сизге жок дегенде <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> мозаика керек"</string> <string name="qs_edit" msgid="2232596095725105230">"Түзөтүү"</string> <string name="tuner_time" msgid="6572217313285536011">"Убакыт"</string> <string-array name="clock_options"> diff --git a/packages/SystemUI/res/values-lo/strings.xml b/packages/SystemUI/res/values-lo/strings.xml index 69de4fd39b67..beaf98b2c67f 100644 --- a/packages/SystemUI/res/values-lo/strings.xml +++ b/packages/SystemUI/res/values-lo/strings.xml @@ -375,8 +375,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"ຈົນກວ່າຕາເວັນຂຶ້ນ"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"ເປີດຕອນ <xliff:g id="TIME">%s</xliff:g>"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"ຈົນກວ່າຈະຮອດ <xliff:g id="TIME">%s</xliff:g>"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"ຮູບແບບສີສັນມືດ"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"ຮູບແບບສີສັນມືດ\nຕົວປະຢັດແບັດເຕີຣີ"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"ຮູບແບບສີສັນມືດ"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"ຮູບແບບສີສັນມືດ\nຕົວປະຢັດແບັດເຕີຣີ"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"NFC"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"NFC is disabled"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"NFC is enabled"</string> @@ -778,7 +778,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"ກົດຄ້າງໄວ້ແລ້ວລາກເພື່ອເພີ່ມຊ່ອງ"</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"ກົດຄ້າງໄວ້ແລ້ວລາກເພື່ອຈັດຮຽງໃໝ່"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"ລາກມາບ່ອນນີ້ເພື່ອລຶບອອກ"</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"ທ່ານຍຕ້ອງໃຊ້ຢ່າງໜ້ອຍ 6 ຊ່ອງ"</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"ທ່ານຍຕ້ອງໃຊ້ຢ່າງໜ້ອຍ <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> ຊ່ອງ"</string> <string name="qs_edit" msgid="2232596095725105230">"ແກ້ໄຂ"</string> <string name="tuner_time" msgid="6572217313285536011">"ເວລາ"</string> <string-array name="clock_options"> diff --git a/packages/SystemUI/res/values-lt/strings.xml b/packages/SystemUI/res/values-lt/strings.xml index 0c444caf25be..8897bcbceb57 100644 --- a/packages/SystemUI/res/values-lt/strings.xml +++ b/packages/SystemUI/res/values-lt/strings.xml @@ -379,8 +379,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"Iki saulėtekio"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"<xliff:g id="TIME">%s</xliff:g>"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"Iki <xliff:g id="TIME">%s</xliff:g>"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"Tamsioji tema"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"Tamsioji tema\nAkum. tausojimo priemonė"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"Tamsioji tema"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"Tamsioji tema\nAkumul. tausojimo priemonė"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"ALR"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"ALR išjungtas"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"ALR įjungtas"</string> @@ -788,7 +788,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"Jei norite pridėti išklotinių, laikykite nuspaudę ir vilkite"</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"Norėdami pertvarkyti išklot., laikykite nuspaudę ir vilkite"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"Vilkite čia, jei norite pašalinti"</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"Turi būti bent 6 išklotinės"</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"Turi būti bent <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> išklotinės elem."</string> <string name="qs_edit" msgid="2232596095725105230">"Redaguoti"</string> <string name="tuner_time" msgid="6572217313285536011">"Laikas"</string> <string-array name="clock_options"> diff --git a/packages/SystemUI/res/values-lv/strings.xml b/packages/SystemUI/res/values-lv/strings.xml index 876ba845616d..89be039862b7 100644 --- a/packages/SystemUI/res/values-lv/strings.xml +++ b/packages/SystemUI/res/values-lv/strings.xml @@ -377,8 +377,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"Līdz saullēktam"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"Plkst. <xliff:g id="TIME">%s</xliff:g>"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"Līdz <xliff:g id="TIME">%s</xliff:g>"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"Tumšais motīvs"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"Tumšais motīvs\nJaudas taupīšanas režīms"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"Tumšais motīvs"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"Tumšais motīvs\nJaudas taupīšanas režīms"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"NFC"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"NFC ir atspējoti"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"NFC ir iespējoti"</string> @@ -783,7 +783,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"Lai pievienotu elementus, pieturiet tos un velciet"</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"Lai pārkārtotu elementus, turiet un velciet tos"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"Lai noņemtu vienumus, velciet tos šeit."</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"Nepieciešami vismaz 6 elementi"</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"Nepieciešami vismaz <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> elementi"</string> <string name="qs_edit" msgid="2232596095725105230">"Rediģēt"</string> <string name="tuner_time" msgid="6572217313285536011">"Laiks"</string> <string-array name="clock_options"> diff --git a/packages/SystemUI/res/values-mk/strings.xml b/packages/SystemUI/res/values-mk/strings.xml index e98d0ab17d94..1ecb83308349 100644 --- a/packages/SystemUI/res/values-mk/strings.xml +++ b/packages/SystemUI/res/values-mk/strings.xml @@ -375,8 +375,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"До изгрејсонце"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"Ќе се вклучи во <xliff:g id="TIME">%s</xliff:g>"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"До <xliff:g id="TIME">%s</xliff:g>"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"Темна тема"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"Темна тема\nШтедач на батерија"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"Темна тема"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"Темна тема\nШтедач на батерија"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"NFC"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"NFC е оневозможено"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"NFC е овозможено"</string> @@ -778,7 +778,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"Задржете и влечете за да додадете плочки"</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"Задржете и влечете за да ги преуредите плочките"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"Повлечете тука за да се отстрани"</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"Потребни ви се најмалку 6 плочки"</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"Потребни ви се најмалку <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> плочки"</string> <string name="qs_edit" msgid="2232596095725105230">"Измени"</string> <string name="tuner_time" msgid="6572217313285536011">"Време"</string> <string-array name="clock_options"> diff --git a/packages/SystemUI/res/values-ml/strings.xml b/packages/SystemUI/res/values-ml/strings.xml index fdeed95f5ffe..c038b84b1ba8 100644 --- a/packages/SystemUI/res/values-ml/strings.xml +++ b/packages/SystemUI/res/values-ml/strings.xml @@ -197,8 +197,7 @@ <string name="carrier_network_change_mode" msgid="8149202439957837762">"കാരിയർ നെറ്റ്വർക്ക് മാറ്റൽ"</string> <string name="accessibility_battery_details" msgid="7645516654955025422">"ബാറ്ററി വിശദാംശങ്ങൾ തുറക്കുക"</string> <string name="accessibility_battery_level" msgid="7451474187113371965">"ബാറ്ററി <xliff:g id="NUMBER">%d</xliff:g> ശതമാനം."</string> - <!-- no translation found for accessibility_battery_level_with_estimate (9033100930684311630) --> - <skip /> + <string name="accessibility_battery_level_with_estimate" msgid="9033100930684311630">"ബാറ്ററി <xliff:g id="PERCENTAGE">%1$s</xliff:g> ശതമാനം, നിങ്ങളുടെ ഉപയോഗത്തിൻ്റെ അടിസ്ഥാനത്തിൽ ഏകദേശം <xliff:g id="TIME">%2$s</xliff:g> സമയം കൂടി ശേഷിക്കുന്നു"</string> <string name="accessibility_battery_level_charging" msgid="1147587904439319646">"ബാറ്ററി ചാർജുചെയ്യുന്നു, <xliff:g id="BATTERY_PERCENTAGE">%d</xliff:g>%%."</string> <string name="accessibility_settings_button" msgid="799583911231893380">"സിസ്റ്റം ക്രമീകരണങ്ങൾ."</string> <string name="accessibility_notifications_button" msgid="4498000369779421892">"അറിയിപ്പുകൾ."</string> @@ -376,8 +375,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"സൂര്യോദയം വരെ"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"<xliff:g id="TIME">%s</xliff:g>-ന്"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"<xliff:g id="TIME">%s</xliff:g> വരെ"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"ഇരുണ്ട തീം"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"ഇരുണ്ട തീം\nബാറ്ററി ലാഭിക്കൽ"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"ഇരുണ്ട തീം"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"ഇരുണ്ട തീം\nബാറ്ററി ലാഭിക്കൽ"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"NFC"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"NFC പ്രവർത്തനരഹിതമാക്കി"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"NFC പ്രവർത്തനക്ഷമമാക്കി"</string> @@ -452,7 +451,7 @@ <string name="battery_saver_notification_title" msgid="8614079794522291840">"ബാറ്ററി ലാഭിക്കൽ ഓണാണ്"</string> <string name="battery_saver_notification_text" msgid="820318788126672692">"പ്രവർത്തനവും പശ്ചാത്തല ഡാറ്റയും കുറയ്ക്കുന്നു"</string> <string name="battery_saver_notification_action_text" msgid="132118784269455533">"ബാറ്ററി ലാഭിക്കൽ ഓഫാക്കുക"</string> - <string name="media_projection_dialog_text" msgid="8585357687598538511">"റെക്കോർഡ് അല്ലെങ്കിൽ കാസ്റ്റ് ചെയ്യുന്നതിനിടെ, <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> നിങ്ങളുടെ സ്ക്രീനിൽ ദൃശ്യമാകുന്നതോ നിങ്ങളുടെ ഉപകരണത്തിൽ നിന്ന് പ്ലേ ചെയ്തതോ ആയ ഓഡിയോ, പാസ്വേഡുകൾ, പേയ്മെന്റ് വിവരം, ഫോട്ടോകൾ, സന്ദേശങ്ങൾ എന്നിവ ഉൾപ്പെടെയുള്ള തന്ത്രപ്രധാന വിവരങ്ങൾ ക്യാപ്ചർ ചെയ്യാനാവും."</string> + <string name="media_projection_dialog_text" msgid="8585357687598538511">"റെക്കോർഡ് അല്ലെങ്കിൽ കാസ്റ്റ് ചെയ്യുന്നതിനിടെ, <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> എന്നതിന് നിങ്ങളുടെ സ്ക്രീനിൽ ദൃശ്യമാകുന്നതോ നിങ്ങളുടെ ഉപകരണത്തിൽ നിന്ന് പ്ലേ ചെയ്തതോ ആയ ഓഡിയോ, പാസ്വേഡുകൾ, പേയ്മെന്റ് വിവരം, ഫോട്ടോകൾ, സന്ദേശങ്ങൾ എന്നിവ ഉൾപ്പെടെയുള്ള തന്ത്രപ്രധാന വിവരങ്ങൾ ക്യാപ്ചർ ചെയ്യാനാവും."</string> <string name="media_projection_dialog_service_text" msgid="3075544489835858258">"റെക്കോർഡ് അല്ലെങ്കിൽ കാസ്റ്റ് ചെയ്യുന്നതിനിടെ, ഈ പ്രവർത്തനത്തിനാവശ്യമായ സേവനത്തിന്, നിങ്ങളുടെ സ്ക്രീനിൽ ദൃശ്യമാകുന്നതോ ഉപകരണത്തിൽ നിന്ന് പ്ലേ ചെയ്തതോ ആയ ഓഡിയോ, പാസ്വേഡുകൾ, പേയ്മെന്റ് വിവരം, ഫോട്ടോകൾ, സന്ദേശങ്ങൾ എന്നിവ ഉൾപ്പെടെയുള്ള തന്ത്രപ്രധാന വിവരങ്ങൾ ക്യാപ്ചർ ചെയ്യാനാവും."</string> <string name="media_projection_dialog_title" msgid="8124184308671641248">"കാസ്റ്റ്/റെക്കോർഡ് ചെയ്യുമ്പോൾ സൂക്ഷ്മമായി കൈകാര്യം ചെയ്യേണ്ട വിവരം വെളിപ്പെടുത്തുന്നു"</string> <string name="media_projection_remember_text" msgid="3103510882172746752">"വീണ്ടും കാണിക്കരുത്"</string> @@ -779,7 +778,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"ടൈലുകൾ ചേർക്കാൻ ക്ലിക്ക് ചെയ്ത് ഇഴയ്ക്കുക"</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"ടൈലുകൾ പുനഃക്രമീകരിക്കാൻ അമർത്തിപ്പിടിച്ച് വലിച്ചിടുക"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"നീക്കംചെയ്യുന്നതിന് ഇവിടെ വലിച്ചിടുക"</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"നിങ്ങൾക്ക് ചുരുങ്ങിയത് 6 ടൈലുകൾ വേണം"</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"നിങ്ങൾക്ക് ചുരുങ്ങിയത് <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> ടൈലുകളെങ്കിലും വേണം"</string> <string name="qs_edit" msgid="2232596095725105230">"എഡിറ്റുചെയ്യുക"</string> <string name="tuner_time" msgid="6572217313285536011">"സമയം"</string> <string-array name="clock_options"> @@ -934,8 +933,6 @@ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"ചുവടെ ഇടതുഭാഗത്തേക്ക് നീക്കുക"</string> <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"ചുവടെ വലതുഭാഗത്തേക്ക് നീക്കുക"</string> <string name="bubble_dismiss_text" msgid="8028337712674081668">"ഡിസ്മിസ് ചെയ്യുക"</string> - <!-- no translation found for notification_content_system_nav_changed (7218093915747788444) --> - <skip /> - <!-- no translation found for notification_content_gesture_nav_available (8111130443656460792) --> - <skip /> + <string name="notification_content_system_nav_changed" msgid="7218093915747788444">"സിസ്റ്റം നാവിഗേഷൻ അപ്ഡേറ്റ് ചെയ്തു. മാറ്റങ്ങൾ വരുത്താൻ ക്രമീകരണത്തിലേക്ക് പോവുക."</string> + <string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"സിസ്റ്റം നാവിഗേഷൻ അപ്ഡേറ്റ് ചെയ്യാൻ ക്രമീകരണത്തിലേക്ക് പോവുക"</string> </resources> diff --git a/packages/SystemUI/res/values-mn/strings.xml b/packages/SystemUI/res/values-mn/strings.xml index 1f7034813ec7..0803dcb7a373 100644 --- a/packages/SystemUI/res/values-mn/strings.xml +++ b/packages/SystemUI/res/values-mn/strings.xml @@ -375,8 +375,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"Нар мандах хүртэл"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"<xliff:g id="TIME">%s</xliff:g>-д"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"<xliff:g id="TIME">%s</xliff:g> хүртэл"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"Бараан загвар"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"Бараан загвар\nБатарей хэмнэгч"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"Бараан загвар"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"Бараан загвар\nБатарей хэмнэгч"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"NFC"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"NFC-г цуцалсан"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"NFC-г идэвхжүүлсэн"</string> @@ -778,7 +778,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"Хавтанд нэмэхийн тулд дараад чирэх"</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"Хавтангуудыг дахин засварлахын тулд дараад чирнэ үү"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"Устгахын тулд энд зөөнө үү"</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"Танд хамгийн багадаа 6 хавтан шаардлагатай"</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"Танд хамгийн багадаа <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> хавтан шаардлагатай"</string> <string name="qs_edit" msgid="2232596095725105230">"Засах"</string> <string name="tuner_time" msgid="6572217313285536011">"Цаг"</string> <string-array name="clock_options"> diff --git a/packages/SystemUI/res/values-mr/strings.xml b/packages/SystemUI/res/values-mr/strings.xml index 6feaa9677a73..e40f5aa57554 100644 --- a/packages/SystemUI/res/values-mr/strings.xml +++ b/packages/SystemUI/res/values-mr/strings.xml @@ -46,11 +46,11 @@ <string name="bluetooth_tethered" msgid="7094101612161133267">"ब्लूटूथ टेदर केले"</string> <string name="status_bar_input_method_settings_configure_input_methods" msgid="3504292471512317827">"इनपुट पद्धती सेट करा"</string> <string name="status_bar_use_physical_keyboard" msgid="7551903084416057810">"वास्तविक कीबोर्ड"</string> - <string name="usb_device_permission_prompt" msgid="1825685909587559679">"<xliff:g id="APPLICATION">%1$s</xliff:g> ला <xliff:g id="USB_DEVICE">%2$s</xliff:g> अॅक्सेस करण्याची अनुमती द्यायची का?"</string> - <string name="usb_accessory_permission_prompt" msgid="2465531696941369047">"<xliff:g id="APPLICATION">%1$s</xliff:g> ला <xliff:g id="USB_ACCESSORY">%2$s</xliff:g> अॅक्सेस करण्याची अनुमती द्यायची का?"</string> + <string name="usb_device_permission_prompt" msgid="1825685909587559679">"<xliff:g id="APPLICATION">%1$s</xliff:g> ला <xliff:g id="USB_DEVICE">%2$s</xliff:g> अॅक्सेस करण्याची अनुमती द्यायची का?"</string> + <string name="usb_accessory_permission_prompt" msgid="2465531696941369047">"<xliff:g id="APPLICATION">%1$s</xliff:g> ला <xliff:g id="USB_ACCESSORY">%2$s</xliff:g> अॅक्सेस करण्याची अनुमती द्यायची का?"</string> <string name="usb_device_confirm_prompt" msgid="7440562274256843905">"<xliff:g id="USB_DEVICE">%2$s</xliff:g> हाताळण्यासाठी <xliff:g id="APPLICATION">%1$s</xliff:g> उघडायचे का?"</string> <string name="usb_accessory_confirm_prompt" msgid="4333670517539993561">"<xliff:g id="USB_ACCESSORY">%2$s</xliff:g> हाताळण्यासाठी <xliff:g id="APPLICATION">%1$s</xliff:g> उघडायचे का?"</string> - <string name="usb_accessory_uri_prompt" msgid="513450621413733343">"इंस्टॉल केलेली अॅप्स या USB उपसाधनासह कार्य करत नाहीत. <xliff:g id="URL">%1$s</xliff:g> येथे या उपसाधनाविषयी अधिक जाणून घ्या"</string> + <string name="usb_accessory_uri_prompt" msgid="513450621413733343">"इंस्टॉल केलेली अॅप्स या USB उपसाधनासह कार्य करत नाहीत. <xliff:g id="URL">%1$s</xliff:g> येथे या उपसाधनाविषयी अधिक जाणून घ्या"</string> <string name="title_usb_accessory" msgid="4966265263465181372">"USB उपसाधन"</string> <string name="label_view" msgid="6304565553218192990">"पहा"</string> <string name="always_use_device" msgid="4015357883336738417">"<xliff:g id="USB_DEVICE">%2$s</xliff:g> कनेक्ट केलेली असताना नेहमी <xliff:g id="APPLICATION">%1$s</xliff:g> उघडा"</string> @@ -197,8 +197,7 @@ <string name="carrier_network_change_mode" msgid="8149202439957837762">"वाहक नेटवर्क बदलत आहे"</string> <string name="accessibility_battery_details" msgid="7645516654955025422">"बॅटरी तपशील उघडा"</string> <string name="accessibility_battery_level" msgid="7451474187113371965">"बॅटरी <xliff:g id="NUMBER">%d</xliff:g> टक्के."</string> - <!-- no translation found for accessibility_battery_level_with_estimate (9033100930684311630) --> - <skip /> + <string name="accessibility_battery_level_with_estimate" msgid="9033100930684311630">"बॅटरी <xliff:g id="PERCENTAGE">%1$s</xliff:g> टक्के, तुमच्या वापराच्या आधारावर सुमारे <xliff:g id="TIME">%2$s</xliff:g> शिल्लक आहे"</string> <string name="accessibility_battery_level_charging" msgid="1147587904439319646">"बॅटरी चार्ज होत आहे, <xliff:g id="BATTERY_PERCENTAGE">%d</xliff:g> टक्के."</string> <string name="accessibility_settings_button" msgid="799583911231893380">"सिस्टम सेटिंग्ज."</string> <string name="accessibility_notifications_button" msgid="4498000369779421892">"सूचना."</string> @@ -376,13 +375,13 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"सूर्योदयापर्यंत"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"<xliff:g id="TIME">%s</xliff:g> वाजता चालू"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"<xliff:g id="TIME">%s</xliff:g> पर्यंत"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"गडद थीम"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"गडद थीम\nबॅटरी सेव्हर"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"गडद थीम"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"गडद थीम\nबॅटरी सेव्हर"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"NFC"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"NFC अक्षम केले आहे"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"NFC सक्षम केले आहे"</string> <string name="recents_swipe_up_onboarding" msgid="3824607135920170001">"अॅप्स स्विच करण्यासाठी वर स्वाइप करा"</string> - <string name="recents_quick_scrub_onboarding" msgid="2778062804333285789">"अॅप्स वर झटपट स्विच करण्यासाठी उजवीकडे ड्रॅग करा"</string> + <string name="recents_quick_scrub_onboarding" msgid="2778062804333285789">"अॅप्स वर झटपट स्विच करण्यासाठी उजवीकडे ड्रॅग करा"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7171470775439860480">"अवलोकन टॉगल करा."</string> <string name="expanded_header_battery_charged" msgid="5945855970267657951">"चार्ज झाली"</string> <string name="expanded_header_battery_charging" msgid="205623198487189724">"चार्ज होत आहे"</string> @@ -440,14 +439,14 @@ <string name="user_logout_notification_text" msgid="3350262809611876284">"वर्तमान वापरकर्ता लॉगआउट करा"</string> <string name="user_logout_notification_action" msgid="1195428991423425062">"वापरकर्त्यास लॉगआउट करा"</string> <string name="user_add_user_title" msgid="4553596395824132638">"नवीन वापरकर्ता जोडायचा?"</string> - <string name="user_add_user_message_short" msgid="2161624834066214559">"तुम्ही एक नवीन वापरकर्ता जोडता तेव्हा, त्या व्यक्तीने त्यांचे स्थान सेट करणे आवश्यक असते.\n\nकोणताही वापरकर्ता इतर सर्व वापरकर्त्यांसाठी अॅप्स अपडेट करू शकतो."</string> + <string name="user_add_user_message_short" msgid="2161624834066214559">"तुम्ही एक नवीन वापरकर्ता जोडता तेव्हा, त्या व्यक्तीने त्यांचे स्थान सेट करणे आवश्यक असते.\n\nकोणताही वापरकर्ता इतर सर्व वापरकर्त्यांसाठी अॅप्स अपडेट करू शकतो."</string> <string name="user_limit_reached_title" msgid="7374910700117359177">"वापरकर्ता मर्यादा गाठली"</string> <plurals name="user_limit_reached_message" formatted="false" msgid="1855040563671964242"> <item quantity="other">तुम्ही <xliff:g id="COUNT">%d</xliff:g> वापरकर्त्यांपर्यंत जोडू शकता.</item> <item quantity="one">फक्त एक वापरकर्ता तयार केला जाऊ शकतो.</item> </plurals> <string name="user_remove_user_title" msgid="4681256956076895559">"वापरकर्त्यास काढायचे?"</string> - <string name="user_remove_user_message" msgid="1453218013959498039">"या वापरकर्त्याचे सर्व अॅप्स आणि डेटा काढून टाकला जाईल."</string> + <string name="user_remove_user_message" msgid="1453218013959498039">"या वापरकर्त्याचे सर्व अॅप्स आणि डेटा काढून टाकला जाईल."</string> <string name="user_remove_user_remove" msgid="7479275741742178297">"काढा"</string> <string name="battery_saver_notification_title" msgid="8614079794522291840">"बॅटरी सेव्हर चालू आहे"</string> <string name="battery_saver_notification_text" msgid="820318788126672692">"कामगिरी आणि पार्श्वभूमीवरील डेटा कमी करते"</string> @@ -490,8 +489,8 @@ <string name="disable_vpn" msgid="4435534311510272506">"VPN अक्षम करा"</string> <string name="disconnect_vpn" msgid="1324915059568548655">"VPN डिस्कनेक्ट करा"</string> <string name="monitoring_button_view_policies" msgid="100913612638514424">"धोरणे पहा"</string> - <string name="monitoring_description_named_management" msgid="5281789135578986303">"तुमचे डिव्हाइस <xliff:g id="ORGANIZATION_NAME">%1$s</xliff:g> व्यवस्थापित करते.\n\nतुमचा प्रशासक सेटिंग्ज, कॉर्पोरेट अॅक्सेस, अॅप्स, तुमच्या डिव्हाइस शी संबंधित डेटा आणि तुमच्या डिव्हाइस च्या ठिकाणाची माहिती मॉनिटर करू शकते आणि ती व्यवस्थापित करू शकतो.\n\nआणखी माहितीसाठी, तुमच्या प्रशासकाशी संपर्क साधा."</string> - <string name="monitoring_description_management" msgid="4573721970278370790">"तुमचे डिव्हाइस तुमची संस्था व्यवस्थापित करते.\n\nतुमचा प्रशासक सेटिंग्ज, कॉर्पोरेट अॅक्सेस, अॅप्स, तुमच्या डिव्हाइस शी संबंधित डेटा आणि तुमच्या डिव्हाइस च्या ठिकाणाची माहिती मॉनिटर करू शकतो आणि ती व्यवस्थापित करू शकतो.\n\nआणखी माहितीसाठी, तुमच्या प्रशासकाशी संपर्क साधा."</string> + <string name="monitoring_description_named_management" msgid="5281789135578986303">"तुमचे डिव्हाइस <xliff:g id="ORGANIZATION_NAME">%1$s</xliff:g> व्यवस्थापित करते.\n\nतुमचा प्रशासक सेटिंग्ज, कॉर्पोरेट अॅक्सेस, अॅप्स, तुमच्या डिव्हाइस शी संबंधित डेटा आणि तुमच्या डिव्हाइस च्या ठिकाणाची माहिती मॉनिटर करू शकते आणि ती व्यवस्थापित करू शकतो.\n\nआणखी माहितीसाठी, तुमच्या प्रशासकाशी संपर्क साधा."</string> + <string name="monitoring_description_management" msgid="4573721970278370790">"तुमचे डिव्हाइस तुमची संस्था व्यवस्थापित करते.\n\nतुमचा प्रशासक सेटिंग्ज, कॉर्पोरेट अॅक्सेस, अॅप्स, तुमच्या डिव्हाइस शी संबंधित डेटा आणि तुमच्या डिव्हाइस च्या ठिकाणाची माहिती मॉनिटर करू शकतो आणि ती व्यवस्थापित करू शकतो.\n\nआणखी माहितीसाठी, तुमच्या प्रशासकाशी संपर्क साधा."</string> <string name="monitoring_description_management_ca_certificate" msgid="5202023784131001751">"आपल्या संस्थेने या डिव्हाइसवर प्रमाणपत्र अधिकार इंस्टॉल केला आहे. आपल्या सुरक्षित नेटवर्क रहदारीचे परीक्षण केले जाऊ शकते किंवा ती सुधारली जाऊ शकते."</string> <string name="monitoring_description_managed_profile_ca_certificate" msgid="4683248196789897964">"आपल्या संस्थेने आपल्या कार्य प्रोफाइलवर प्रमाणपत्र अधिकार इंस्टॉल केला आहे. आपल्या सुरक्षित नेटवर्क रहदारीचे परीक्षण केले जाऊ शकते किंवा ती सुधारली जाऊ शकते."</string> <string name="monitoring_description_ca_certificate" msgid="7886985418413598352">"या डिव्हाइसवर प्रमाणपत्र अधिकार इंस्टॉल केला आहे. आपल्या सुरक्षित नेटवर्क रहदारीचे परीक्षण केले जाऊ शकते किंवा ती सुधारली जाऊ शकते."</string> @@ -502,7 +501,7 @@ <string name="monitoring_description_personal_profile_named_vpn" msgid="3133980926929069283">"तुमचे वैयक्तिक प्रोफाइल <xliff:g id="VPN_APP">%1$s</xliff:g> शी कनेक्ट केले आहे, जे ईमेल, अॅप्स आणि वेबसाइटसह आपल्या नेटवर्क क्रियाकलापाचे परीक्षण करू शकते."</string> <string name="monitoring_description_do_header_generic" msgid="96588491028288691">"तुमचे डिव्हाइस <xliff:g id="DEVICE_OWNER_APP">%1$s</xliff:g> ने व्यवस्थापित केले आहे."</string> <string name="monitoring_description_do_header_with_name" msgid="5511133708978206460">"तुमचे डिव्हाइस व्यवस्थापित करण्यासाठी <xliff:g id="ORGANIZATION_NAME">%1$s</xliff:g> <xliff:g id="DEVICE_OWNER_APP">%2$s</xliff:g> वापरते."</string> - <string name="monitoring_description_do_body" msgid="3639594537660975895">"तुमचा प्रशासक सेटिंग्ज, कॉर्पोरेट प्रवेश, अॅप्स, आपल्या डिव्हाइशी संबंधित डेटा आणि डिव्हाइसच्या स्थान माहितीचे निरीक्षण आणि व्यवस्थापन करू शकतो."</string> + <string name="monitoring_description_do_body" msgid="3639594537660975895">"तुमचा प्रशासक सेटिंग्ज, कॉर्पोरेट प्रवेश, अॅप्स, आपल्या डिव्हाइशी संबंधित डेटा आणि डिव्हाइसच्या स्थान माहितीचे निरीक्षण आणि व्यवस्थापन करू शकतो."</string> <string name="monitoring_description_do_learn_more_separator" msgid="3785251953067436862">" "</string> <string name="monitoring_description_do_learn_more" msgid="1849514470437907421">"अधिक जाणून घ्या"</string> <string name="monitoring_description_do_body_vpn" msgid="8255218762488901796">"तुम्ही <xliff:g id="VPN_APP">%1$s</xliff:g> शी कनेक्ट केले आहे, जो ईमेल, अॅप्स आणि वेबसाइटसह आपल्या नेटवर्क क्रियाकलापाचे परीक्षण करू शकतो."</string> @@ -512,7 +511,7 @@ <string name="monitoring_description_ca_cert_settings" msgid="5489969458872997092">"विश्वासू क्रेडेंशियल उघडा"</string> <string name="monitoring_description_network_logging" msgid="7223505523384076027">"आपल्या प्रशासकाने नेटवर्क लॉगिंग चालू केले आहे, जे आपल्या डिव्हाइसवरील रहदारीचे निरीक्षण करते.\n\nअधिक माहितीसाठी आपल्या प्रशासकाशी संपर्क साधा."</string> <string name="monitoring_description_vpn" msgid="4445150119515393526">"तुम्ही VPN कनेक्शन सेट करण्यासाठी अॅपला परवानगी दिली.\n\nहा अॅप ईमेल, अॅप्स आणि वेबसाइटसह, तुमच्या डिव्हाइस आणि नेटवर्क अॅक्टिव्हिटीचे परीक्षण करू शकतो."</string> - <string name="monitoring_description_vpn_profile_owned" msgid="2958019119161161530">"तुमचे कार्य प्रोफाइल <xliff:g id="ORGANIZATION">%1$s</xliff:g> द्वारे व्यवस्थापित केले जाते.\n\nतुमचा प्रशासक ईमेल, अॅप्स आणि वेबसाइटसह आपल्या नेटवर्क अॅक्टिव्हिटीचे निरीक्षण करण्यास सक्षम आहे.\n\nअधिक माहितीसाठी आपल्या प्रशासकाशी संपर्क साधा.\n\nतुम्ही VPN शी देखील कनेक्ट आहात, जे आपल्या नेटवर्क अॅक्टिव्हिटीचे निरीक्षण करू शकते."</string> + <string name="monitoring_description_vpn_profile_owned" msgid="2958019119161161530">"तुमचे कार्य प्रोफाइल <xliff:g id="ORGANIZATION">%1$s</xliff:g> द्वारे व्यवस्थापित केले जाते.\n\nतुमचा प्रशासक ईमेल, अॅप्स आणि वेबसाइटसह आपल्या नेटवर्क अॅक्टिव्हिटीचे निरीक्षण करण्यास सक्षम आहे.\n\nअधिक माहितीसाठी आपल्या प्रशासकाशी संपर्क साधा.\n\nतुम्ही VPN शी देखील कनेक्ट आहात, जे आपल्या नेटवर्क अॅक्टिव्हिटीचे निरीक्षण करू शकते."</string> <string name="legacy_vpn_name" msgid="6604123105765737830">"VPN"</string> <string name="monitoring_description_app" msgid="1828472472674709532">"तुम्ही <xliff:g id="APPLICATION">%1$s</xliff:g> शी कनेक्ट केले आहे, जे ईमेल, अॅप्स आणि वेबसाइटसह आपल्या नेटवर्क क्रियाकलापाचे परीक्षण करू शकते."</string> <string name="monitoring_description_app_personal" msgid="484599052118316268">"तुम्ही <xliff:g id="APPLICATION">%1$s</xliff:g> शी कनेक्ट केले आहे, जो ईमेल, अॅप्स आणि वेबसाइटसह आपल्या वैयक्तिक नेटवर्क क्रियाकलापाचे परीक्षण करू शकतो."</string> @@ -779,7 +778,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"टाइल जोडण्यासाठी धरून ठेवा आणि ड्रॅग करा"</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"टाइलची पुनर्रचना करण्यासाठी धरून ठेवा आणि ड्रॅग करा"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"काढण्यासाठी येथे ड्रॅग करा"</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"तुम्हाला किमान ६ टाइलची गरज आहे"</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"तुम्हाला किमान <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> टाइलची गरज आहे"</string> <string name="qs_edit" msgid="2232596095725105230">"संपादित करा"</string> <string name="tuner_time" msgid="6572217313285536011">"वेळ"</string> <string-array name="clock_options"> @@ -856,7 +855,7 @@ <string name="lockscreen_unlock_right" msgid="1529992940510318775">"उजवा शॉर्टकट देखील अनलॉक करतो"</string> <string name="lockscreen_none" msgid="4783896034844841821">"काहीही नाही"</string> <string name="tuner_launch_app" msgid="1527264114781925348">"<xliff:g id="APP">%1$s</xliff:g> लाँच करा"</string> - <string name="tuner_other_apps" msgid="4726596850501162493">"इतर अॅप्स"</string> + <string name="tuner_other_apps" msgid="4726596850501162493">"इतर अॅप्स"</string> <string name="tuner_circle" msgid="2340998864056901350">"मंडळ"</string> <string name="tuner_plus" msgid="6792960658533229675">"अधिक आयकन"</string> <string name="tuner_minus" msgid="4806116839519226809">"उणे आयकन"</string> @@ -891,7 +890,7 @@ <string name="running_foreground_services_title" msgid="381024150898615683">"अॅप्स बॅकग्राउंडमध्ये चालू आहेत"</string> <string name="running_foreground_services_msg" msgid="6326247670075574355">"बॅटरी आणि डेटा वापराच्या तपशीलांसाठी टॅप करा"</string> <string name="mobile_data_disable_title" msgid="1068272097382942231">"मोबाइल डेटा बंद करायचा?"</string> - <string name="mobile_data_disable_message" msgid="4756541658791493506">"तुम्हाला <xliff:g id="CARRIER">%s</xliff:g> मधून डेटा किंवा इंटरनेटचा अॅक्सेस नसेल. इंटरनेट फक्त वाय-फाय मार्फत उपलब्ध असेल."</string> + <string name="mobile_data_disable_message" msgid="4756541658791493506">"तुम्हाला <xliff:g id="CARRIER">%s</xliff:g> मधून डेटा किंवा इंटरनेटचा अॅक्सेस नसेल. इंटरनेट फक्त वाय-फाय मार्फत उपलब्ध असेल."</string> <string name="mobile_data_disable_message_default_carrier" msgid="6078110473451946831">"तुमचा वाहक"</string> <string name="touch_filtered_warning" msgid="8671693809204767551">"अॅप परवानगी विनंती अस्पष्ट करत असल्याने, सेटिंग्ज तुमचा प्रतिसाद पडताळू शकत नाहीत."</string> <string name="slice_permission_title" msgid="7465009437851044444">"<xliff:g id="APP_0">%1$s</xliff:g> ला <xliff:g id="APP_2">%2$s</xliff:g> चे तुकडे दाखवण्याची अनुमती द्यायची का?"</string> @@ -934,8 +933,6 @@ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"तळाशी डावीकडे हलवा"</string> <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"तळाशी उजवीकडे हलवा"</string> <string name="bubble_dismiss_text" msgid="8028337712674081668">"डिसमिस करा"</string> - <!-- no translation found for notification_content_system_nav_changed (7218093915747788444) --> - <skip /> - <!-- no translation found for notification_content_gesture_nav_available (8111130443656460792) --> - <skip /> + <string name="notification_content_system_nav_changed" msgid="7218093915747788444">"सिस्टम नेव्हिगेशन अपडेट केले. बदल करण्यासाठी, सेटिंग्जवर जा."</string> + <string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"सिस्टम नेव्हिगेशन अपडेट करण्यासाठी सेटिंग्जवर जा"</string> </resources> diff --git a/packages/SystemUI/res/values-ms/strings.xml b/packages/SystemUI/res/values-ms/strings.xml index d0f9448c32d8..871be05e444b 100644 --- a/packages/SystemUI/res/values-ms/strings.xml +++ b/packages/SystemUI/res/values-ms/strings.xml @@ -375,8 +375,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"Hingga matahari terbit"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"Dihidupkan pada <xliff:g id="TIME">%s</xliff:g>"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"Hingga <xliff:g id="TIME">%s</xliff:g>"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"Tema Gelap"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"Tema Gelap\nPenjimat bateri"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"Tema gelap"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"Tema gelap\nPenjimat bateri"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"NFC"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"NFC dilumpuhkan"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"NFC didayakan"</string> @@ -778,7 +778,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"Tahan dan seret untuk menambah jubin"</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"Tahan dan seret untuk mengatur semula jubin"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"Seret ke sini untuk mengalih keluar"</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"Anda memerlukan sekurang-kurangnya 6 jubin"</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"Anda memerlukan sekurang-kurangnya <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> jubin"</string> <string name="qs_edit" msgid="2232596095725105230">"Edit"</string> <string name="tuner_time" msgid="6572217313285536011">"Masa"</string> <string-array name="clock_options"> diff --git a/packages/SystemUI/res/values-my/strings.xml b/packages/SystemUI/res/values-my/strings.xml index 650f35e30353..d8a9a64ba5c0 100644 --- a/packages/SystemUI/res/values-my/strings.xml +++ b/packages/SystemUI/res/values-my/strings.xml @@ -375,8 +375,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"နေထွက်ချိန် အထိ"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"<xliff:g id="TIME">%s</xliff:g> တွင် ဖွင့်ရန်"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"<xliff:g id="TIME">%s</xliff:g> အထိ"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"မှောင်သည့် အပြင်အဆင်"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"မှောင်သည့် အပြင်အဆင်\nဘက်ထရီ အားထိန်း"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"မှောင်သည့် အပြင်အဆင်"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"မှောင်သည့် အပြင်အဆင်\nဘက်ထရီ အားထိန်း"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"NFC"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"NFC ကို ပိတ်ထားသည်"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"NFC ကို ဖွင့်ထားသည်"</string> @@ -451,7 +451,7 @@ <string name="battery_saver_notification_title" msgid="8614079794522291840">"ဘက်ထရီ အားထိန်းကို ဖွင့်ထားခြင်း"</string> <string name="battery_saver_notification_text" msgid="820318788126672692">"လုပ်ကိုင်မှုကို လျှော့ချလျက် နောက်ခံ ဒေတာကို ကန့်သတ်သည်"</string> <string name="battery_saver_notification_action_text" msgid="132118784269455533">"ဘက်ထရီ အားထိန်းကို ပိတ်ရန်"</string> - <string name="media_projection_dialog_text" msgid="8585357687598538511">"အသံဖမ်းနေစဉ် (သို့) ကာစ်လုပ်နေစဉ် <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> သည် အသံ၊ စကားဝှက်၊ ငွေပေးချေမှုဆိုင်ရာ အချက်အလက်၊ ဓာတ်ပုံနှင့် မက်ဆေ့ဂျ်များကဲ့သို့ အရေးကြီးသည့် အချက်အလက်များအပါအဝင် သင့်မျက်နှာပြင်တွင် ပြသထားသော (သို့) သင့်စက်တွင် ဖွင့်ထားသော အရေးကြီးသည့် အချက်အလက်မှန်သမျှကို ဖမ်းယူနိုင်ပါသည်။"</string> + <string name="media_projection_dialog_text" msgid="8585357687598538511">"အသံဖမ်းနေစဉ် (သို့) ကာစ်လုပ်နေစဉ် <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> သည် အသံ၊ စကားဝှက်၊ ငွေပေးချေမှုဆိုင်ရာ အချက်အလက်၊ ဓာတ်ပုံနှင့် မက်ဆေ့ဂျ်များကဲ့သို့ အရေးကြီးသည့် အချက်အလက်များအပါအဝင် ဖန်သားပြင်တွင် ပြသထားသော (သို့) သင့်စက်တွင် ဖွင့်ထားသော အရေးကြီးသည့် အချက်အလက်မှန်သမျှကို ဖမ်းယူနိုင်ပါသည်။"</string> <string name="media_projection_dialog_service_text" msgid="3075544489835858258">"အသံဖမ်းနေစဉ် (သို့) ကာစ်လုပ်နေစဉ် ဤလုပ်ဆောင်ချက်ကို ပေးအပ်သည့် ဝန်ဆောင်မှုသည် အသံ၊ စကားဝှက်၊ ငွေပေးချေမှုဆိုင်ရာ အချက်အလက်၊ ဓာတ်ပုံနှင့် မက်ဆေ့ဂျ်များကဲ့သို့ အရေးကြီးသည့် အချက်အလက်များအပါအဝင် သင့်မျက်နှာပြင်တွင် ပြသထားသော (သို့) သင့်စက်တွင် ဖွင့်ထားသော အရေးကြီးသည့် အချက်အလက်မှန်သမျှကို ဖမ်းယူနိုင်ပါသည်။"</string> <string name="media_projection_dialog_title" msgid="8124184308671641248">"ကာစ်လုပ်နေစဉ်/အသံဖမ်းနေစဉ် အရေးကြီးသောအချက်အလက်များ ထုတ်ဖော်မိခြင်း"</string> <string name="media_projection_remember_text" msgid="3103510882172746752">"နောက်ထပ် မပြပါနှင့်"</string> @@ -529,7 +529,7 @@ <string name="accessibility_volume_settings" msgid="4915364006817819212">"အသံဆက်တင်များ"</string> <string name="accessibility_volume_expand" msgid="5946812790999244205">"တိုးချဲ့ရန်"</string> <string name="accessibility_volume_collapse" msgid="3609549593031810875">"ခေါက်သိမ်းရန်..."</string> - <string name="volume_odi_captions_tip" msgid="1193653197906918269">"အလိုလို မီဒီယာ စာတန်းထိုးရန်"</string> + <string name="volume_odi_captions_tip" msgid="1193653197906918269">"အလိုအလျောက် စာတန်းထိုးရန်"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"စာတန်းအကြံပြုချက်ကို ပိတ်ပါ"</string> <string name="volume_odi_captions_content_description" msgid="2950736796270214785">"စာတန်းများ ထပ်ပိုးရန်"</string> <string name="volume_odi_captions_hint_enable" msgid="49750248924730302">"ဖွင့်ရန်"</string> @@ -778,7 +778,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"အကွက်များထည့်ရန် ဖိဆွဲပါ"</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"အကွက်ငယ်များ ပြန်စီစဉ်ရန် ဖိပြီးဆွဲပါ"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"ဖယ်ရှားရန် ဤနေရာသို့ဖိဆွဲပါ"</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"အနည်းဆုံး ၆ ကွက် ရှိရမည်"</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"အနည်းဆုံး <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> ကွက် ရှိရမည်"</string> <string name="qs_edit" msgid="2232596095725105230">"တည်းဖြတ်ပါ"</string> <string name="tuner_time" msgid="6572217313285536011">"အချိန်"</string> <string-array name="clock_options"> diff --git a/packages/SystemUI/res/values-nb/strings.xml b/packages/SystemUI/res/values-nb/strings.xml index 7b373fc10590..3d00633d13dd 100644 --- a/packages/SystemUI/res/values-nb/strings.xml +++ b/packages/SystemUI/res/values-nb/strings.xml @@ -197,7 +197,7 @@ <string name="carrier_network_change_mode" msgid="8149202439957837762">"Bytting av operatørnettverk"</string> <string name="accessibility_battery_details" msgid="7645516654955025422">"Åpne informasjon om batteriet"</string> <string name="accessibility_battery_level" msgid="7451474187113371965">"Batteri – <xliff:g id="NUMBER">%d</xliff:g> prosent."</string> - <string name="accessibility_battery_level_with_estimate" msgid="9033100930684311630">"Batteri <xliff:g id="PERCENTAGE">%1$s</xliff:g> prosent, omtrent <xliff:g id="TIME">%2$s</xliff:g> gjenstår basert på bruken din"</string> + <string name="accessibility_battery_level_with_estimate" msgid="9033100930684311630">"Batterinivået er <xliff:g id="PERCENTAGE">%1$s</xliff:g> prosent – omtrent <xliff:g id="TIME">%2$s</xliff:g> gjenstår basert på bruken din"</string> <string name="accessibility_battery_level_charging" msgid="1147587904439319646">"Batteriet lades – <xliff:g id="BATTERY_PERCENTAGE">%d</xliff:g> prosent."</string> <string name="accessibility_settings_button" msgid="799583911231893380">"Systeminnstillinger."</string> <string name="accessibility_notifications_button" msgid="4498000369779421892">"Varsler."</string> @@ -375,8 +375,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"Til soloppgang"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"På kl. <xliff:g id="TIME">%s</xliff:g>"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"Til <xliff:g id="TIME">%s</xliff:g>"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"Mørkt tema"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"Mørkt tema\nBatterisparing"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"Mørkt tema"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"Mørkt tema\nBatterisparing"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"NFC"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"NFC er slått av"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"NFC er slått på"</string> @@ -778,7 +778,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"Hold og dra for å legge til ruter"</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"Hold og dra for å flytte på rutene"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"Dra hit for å fjerne"</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"Du trenger minst seks ruter"</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"Du trenger minst <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> infobrikker"</string> <string name="qs_edit" msgid="2232596095725105230">"Endre"</string> <string name="tuner_time" msgid="6572217313285536011">"Tid"</string> <string-array name="clock_options"> @@ -933,6 +933,6 @@ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"Flytt til nederst til venstre"</string> <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"Flytt til nederst til høyre"</string> <string name="bubble_dismiss_text" msgid="8028337712674081668">"Avvis"</string> - <string name="notification_content_system_nav_changed" msgid="7218093915747788444">"Systemnavigering er oppdatert. For å gjøre endringer, gå til Innstillinger."</string> - <string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"Gå til Innstillinger for å oppdatere systemnavigering"</string> + <string name="notification_content_system_nav_changed" msgid="7218093915747788444">"Systemnavigeringen er oppdatert. For å gjøre endringer, gå til Innstillinger."</string> + <string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"Gå til Innstillinger for å oppdatere systemnavigeringen"</string> </resources> diff --git a/packages/SystemUI/res/values-ne/strings.xml b/packages/SystemUI/res/values-ne/strings.xml index 4f6ffa5341c7..ccf5037d62f5 100644 --- a/packages/SystemUI/res/values-ne/strings.xml +++ b/packages/SystemUI/res/values-ne/strings.xml @@ -375,8 +375,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"सूर्योदयसम्म"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"<xliff:g id="TIME">%s</xliff:g> मा सक्रिय"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"<xliff:g id="TIME">%s</xliff:g> सम्म"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"अँध्यारो विषयवस्तु"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"अँध्यारो विषयवस्तु\nब्याट्री सेभर"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"अँध्यारो विषयवस्तु"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"अँध्यारो विषयवस्तु\nब्याट्री सेभर"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"NFC"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"NFC लाई असक्षम पारिएको छ"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"NFC लाई सक्षम पारिएको छ"</string> @@ -778,7 +778,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"टाइलहरू थप्न होल्ड गरी ड्र्याग गर्नुहोस्"</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"टाइलहरू पुनः क्रमबद्ध गर्न होल्ड गरी ड्र्याग गर्नुहोस्"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"हटाउनका लागि यहाँ तान्नुहोस्"</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"तपाईंलाई कम्तीमा ६ वटा टाइलहरू चाहिन्छ"</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"तपाईंलाई कम्तीमा <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> वटा टाइल चाहिन्छ"</string> <string name="qs_edit" msgid="2232596095725105230">"सम्पादन गर्नुहोस्"</string> <string name="tuner_time" msgid="6572217313285536011">"समय"</string> <string-array name="clock_options"> diff --git a/packages/SystemUI/res/values-nl/strings.xml b/packages/SystemUI/res/values-nl/strings.xml index 8a9061a35732..ae0149205bfd 100644 --- a/packages/SystemUI/res/values-nl/strings.xml +++ b/packages/SystemUI/res/values-nl/strings.xml @@ -375,8 +375,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"Tot zonsopgang"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"Aan om <xliff:g id="TIME">%s</xliff:g>"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"Tot <xliff:g id="TIME">%s</xliff:g>"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"Donker thema"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"Donker thema\nBatterijbesparing"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"Donker thema"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"Donker thema\nBatterijbesparing"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"NFC"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"NFC is uitgeschakeld"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"NFC is ingeschakeld"</string> @@ -778,7 +778,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"Houd vast en sleep om tegels toe te voegen"</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"Houd vast en sleep om tegels opnieuw in te delen"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"Sleep hier naartoe om te verwijderen"</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"Je hebt minimaal zes tegels nodig"</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"Je hebt minimaal <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> tegels nodig"</string> <string name="qs_edit" msgid="2232596095725105230">"Bewerken"</string> <string name="tuner_time" msgid="6572217313285536011">"Tijd"</string> <string-array name="clock_options"> diff --git a/packages/SystemUI/res/values-or/strings.xml b/packages/SystemUI/res/values-or/strings.xml index b77c4ba3cb6c..6646b8d30e10 100644 --- a/packages/SystemUI/res/values-or/strings.xml +++ b/packages/SystemUI/res/values-or/strings.xml @@ -197,8 +197,7 @@ <string name="carrier_network_change_mode" msgid="8149202439957837762">"କେରିଅର୍ ନେଟ୍ୱର୍କ ବଦଳୁଛି"</string> <string name="accessibility_battery_details" msgid="7645516654955025422">"ବ୍ୟାଟେରୀ ବିବରଣୀ ଖୋଲନ୍ତୁ"</string> <string name="accessibility_battery_level" msgid="7451474187113371965">"ବ୍ୟାଟେରୀ <xliff:g id="NUMBER">%d</xliff:g> ଶତକଡ଼ା ଅଛି।"</string> - <!-- no translation found for accessibility_battery_level_with_estimate (9033100930684311630) --> - <skip /> + <string name="accessibility_battery_level_with_estimate" msgid="9033100930684311630">"ବ୍ୟାଟେରୀ <xliff:g id="PERCENTAGE">%1$s</xliff:g> ଶତକଡା, ଆପଣଙ୍କର ବ୍ୟବହାରକୁ ଆଧାର କରି ପାଖାପାଖି <xliff:g id="TIME">%2$s</xliff:g> ବାକି ଅଛି"</string> <string name="accessibility_battery_level_charging" msgid="1147587904439319646">"ବ୍ୟାଟେରୀ ଚାର୍ଜ ହେଉଛି, <xliff:g id="BATTERY_PERCENTAGE">%d</xliff:g> ଶତକଡ଼ା।"</string> <string name="accessibility_settings_button" msgid="799583911231893380">"ସିଷ୍ଟମ୍ ସେଟିଙ୍ଗ।"</string> <string name="accessibility_notifications_button" msgid="4498000369779421892">"ବିଜ୍ଞପ୍ତି"</string> @@ -376,8 +375,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"ସୂର୍ଯ୍ୟୋଦୟ ପର୍ଯ୍ୟନ୍ତ"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"<xliff:g id="TIME">%s</xliff:g>ରେ ଅନ୍ ହେବ"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"<xliff:g id="TIME">%s</xliff:g> ପର୍ଯ୍ୟନ୍ତ"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"ଗାଢ଼ା ଥିମ୍"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"ଗାଢ଼ା ଥିମ୍\nବ୍ୟାଟେରୀ ସେଭର୍"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"ଗାଢ଼ ଥିମ୍"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"ଗାଢ଼ ଥିମ୍\nବ୍ୟାଟେରୀ ସେଭର୍"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"NFC"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"NFC ଅକ୍ଷମ କରାଯାଇଛି"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"NFC ସକ୍ଷମ କରାଯାଇଛି"</string> @@ -453,7 +452,7 @@ <string name="battery_saver_notification_text" msgid="820318788126672692">"କାର୍ଯ୍ୟ ସମ୍ପାଦନ ଓ ବ୍ୟାକ୍ଗ୍ରାଉଣ୍ଡ ଡାଟା କମ୍ କରନ୍ତୁ"</string> <string name="battery_saver_notification_action_text" msgid="132118784269455533">"ବ୍ୟାଟେରୀ ସେଭର୍ ଅଫ୍ କରନ୍ତୁ"</string> <string name="media_projection_dialog_text" msgid="8585357687598538511">"ରେକର୍ଡିଂ କିମ୍ବା କାଷ୍ଟିଂ ସମୟରେ <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> ଯେ କୌଣସି ସମ୍ବେଦନଶୀଳ ସୂଚନା କ୍ୟାପଚର୍ କରିପାରିବ ଯାହା ଅଡ଼ିଓ, ପାସ୍ୱାର୍ଡ, ପେମେଣ୍ଟ ସୂଚନା, ଫଟୋ ଏବଂ ମେସେଜ୍ଗୁଡ଼ିକ ପରି ସମ୍ବେଦନଶୀଳ ସୂଚନା ଆପଣଙ୍କର ଡିଭାଇସ୍ରେ ଚାଲିବ ବା ଆପଣଙ୍କ ସ୍କ୍ରିନ୍ରେ ଦେଖାଯିବ।"</string> - <string name="media_projection_dialog_service_text" msgid="3075544489835858258">"ରେକର୍ଡିଂ କିମ୍ବା କାଷ୍ଟିଂ ସମୟରେ ସେବା ପ୍ରଦାନ କରୁଥିବା ଏହି ଫଙ୍କ୍ସନ୍ ଯେ କୌଣସି ସମ୍ବେଦନଶୀଳ ସୂଚନା କ୍ୟାପଚର୍ କରିପାରିବ ଯାହା ଅଡ଼ିଓ, ପାସ୍ୱାର୍ଡ, ପେମେଣ୍ଟ ସୂଚନା, ଫଟୋ ଏବଂ ମେସେଜ୍ଗୁଡ଼ିକ ପରି ସମ୍ବେଦନଶୀଳ ସୂଚନା ଆପଣଙ୍କର ଡିଭାଇସ୍ରେ ଚାଲିବ ବା ଆପଣଙ୍କ ସ୍କ୍ରିନ୍ରେ ଦେଖାଯିବ।"</string> + <string name="media_projection_dialog_service_text" msgid="3075544489835858258">"ରେକର୍ଡିଂ କିମ୍ବା କାଷ୍ଟିଂ ସମୟରେ ଏହି ପ୍ରକାର୍ଯ୍ୟ ପ୍ରଦାନ କରୁଥିବା ସେବା ଅଡ଼ିଓ, ପାସ୍ୱାର୍ଡ, ପେମେଣ୍ଟ ସୂଚନା, ଫଟୋ ଏବଂ ମେସେଜ୍ଗୁଡ଼ିକ ପରି ସମ୍ବେଦନଶୀଳ ସୂଚନା କ୍ୟାପଚର୍ କରିପାରିବ ଯାହା ଆପଣଙ୍କର ଡିଭାଇସ୍ରେ ଚାଲିବ ବା ଆପଣଙ୍କ ସ୍କ୍ରିନ୍ରେ ଦେଖାଯିବ।"</string> <string name="media_projection_dialog_title" msgid="8124184308671641248">"କାଷ୍ଟିଂ/ରେକର୍ଡିଂ ସମୟରେ ସମ୍ବେଦନଶୀଳ ସୂଚନା ଦେଖାନ୍ତୁ"</string> <string name="media_projection_remember_text" msgid="3103510882172746752">"ପୁଣି ଦେଖାନ୍ତୁ ନାହିଁ"</string> <string name="clear_all_notifications_text" msgid="814192889771462828">"ସମସ୍ତ ଖାଲି କରନ୍ତୁ"</string> @@ -779,7 +778,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"ଟାଇଲ୍ ଯୋଡ଼ିବା ପାଇଁ ଦାବିଧରି ଟାଣନ୍ତୁ"</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"ଟାଇଲ୍ ପୁଣି ସଜାଇବାକୁ ଦାବିଧରି ଟାଣନ୍ତୁ"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"ବାହାର କରିବାକୁ ଏଠାକୁ ଡ୍ରାଗ୍ କରନ୍ତୁ"</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"ଆପଣଙ୍କର ଅତିକମରେ 6ଟି ଟାଇଲ୍ ଆବଶ୍ୟକ"</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"ଆପଣଙ୍କର ଅତିକମ୍ରେ <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g>ଟି ଟାଇଲ୍ ଆବଶ୍ୟକ"</string> <string name="qs_edit" msgid="2232596095725105230">"ଏଡିଟ୍ କରନ୍ତୁ"</string> <string name="tuner_time" msgid="6572217313285536011">"ସମୟ"</string> <string-array name="clock_options"> @@ -934,8 +933,6 @@ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"ତଳ ବାମକୁ ନିଅନ୍ତୁ"</string> <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"ତଳ ଡାହାଣକୁ ନିଅନ୍ତୁ"</string> <string name="bubble_dismiss_text" msgid="8028337712674081668">"ଖାରଜ କରନ୍ତୁ"</string> - <!-- no translation found for notification_content_system_nav_changed (7218093915747788444) --> - <skip /> - <!-- no translation found for notification_content_gesture_nav_available (8111130443656460792) --> - <skip /> + <string name="notification_content_system_nav_changed" msgid="7218093915747788444">"ସିଷ୍ଟମ୍ ନାଭିଗେସନ୍ ଅପ୍ଡେଟ୍ ହୋଇଛି। ପରିବର୍ତ୍ତନ କରିବା ପାଇଁ, ସେଟିଂସ୍କୁ ଯାଆନ୍ତୁ।"</string> + <string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"ସିଷ୍ଟମ୍ ନାଭିଗେସନ୍ ଅପ୍ଡେଟ୍ କରିବା ପାଇଁ ସେଟିଂସ୍କୁ ଯାଆନ୍ତୁ"</string> </resources> diff --git a/packages/SystemUI/res/values-pa/strings.xml b/packages/SystemUI/res/values-pa/strings.xml index 4be4ca3c595c..897875c8fcfc 100644 --- a/packages/SystemUI/res/values-pa/strings.xml +++ b/packages/SystemUI/res/values-pa/strings.xml @@ -375,8 +375,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"ਸੂਰਜ ਚੜ੍ਹਨ ਤੱਕ"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"<xliff:g id="TIME">%s</xliff:g> ਵਜੇ ਚਾਲੂ"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"<xliff:g id="TIME">%s</xliff:g> ਤੱਕ"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"ਗੂੜ੍ਹਾ ਥੀਮ"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"ਗੂੜ੍ਹਾ ਥੀਮ\nਬੈਟਰੀ ਸੇਵਰ"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"ਗੂੜ੍ਹਾ ਥੀਮ"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"ਗੂੜ੍ਹਾ ਥੀਮ\nਬੈਟਰੀ ਸੇਵਰ"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"NFC"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"NFC ਨੂੰ ਅਯੋਗ ਬਣਾਇਆ ਗਿਆ ਹੈ"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"NFC ਨੂੰ ਯੋਗ ਬਣਾਇਆ ਗਿਆ ਹੈ"</string> @@ -648,7 +648,7 @@ <string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"ਸੁਚੇਤ ਰਖੋ"</string> <string name="inline_turn_off_notifications" msgid="8635596135532202355">"ਸੂਚਨਾਵਾਂ ਬੰਦ ਕਰੋ"</string> <string name="inline_keep_showing_app" msgid="1723113469580031041">"ਕੀ ਇਸ ਐਪ ਤੋਂ ਸੂਚਨਾਵਾਂ ਨੂੰ ਦਿਖਾਉਣਾ ਜਾਰੀ ਰੱਖਣਾ ਹੈ?"</string> - <string name="notification_silence_title" msgid="5763240612242137433">"ਖਮੋਸ਼"</string> + <string name="notification_silence_title" msgid="5763240612242137433">"ਸ਼ਾਂਤ"</string> <string name="notification_alert_title" msgid="8031196611815490340">"ਸੁਚੇਤਨਾ"</string> <string name="notification_channel_summary_low" msgid="3387466082089715555">"ਤੁਹਾਨੂੰ ਬਿਨਾਂ ਧੁਨੀ ਅਤੇ ਥਰਥਰਾਹਟ ਦੇ ਫੋਕਸ ਕਰਨ ਵਿੱਚ ਮਦਦ ਕਰਦਾ ਹੈ।"</string> <string name="notification_channel_summary_default" msgid="5994062840431965586">"ਧੁਨੀ ਅਤੇ ਥਰਥਰਾਹਟ ਨਾਲ ਤੁਹਾਡਾ ਧਿਆਨ ਖਿੱਚਦੀ ਹੈ।"</string> diff --git a/packages/SystemUI/res/values-pl/strings.xml b/packages/SystemUI/res/values-pl/strings.xml index 29c423af0cfb..51c76a518de4 100644 --- a/packages/SystemUI/res/values-pl/strings.xml +++ b/packages/SystemUI/res/values-pl/strings.xml @@ -381,8 +381,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"Do wschodu słońca"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"Włącz o <xliff:g id="TIME">%s</xliff:g>"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"Do <xliff:g id="TIME">%s</xliff:g>"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"Ciemny motyw"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"Ciemny motywy\nOszczędzanie baterii"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"Ciemny motyw"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"Ciemny motyw\nOszczędzanie baterii"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"Komunikacja NFC"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"Komunikacja NFC jest wyłączona"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"Komunikacja NFC jest włączona"</string> @@ -459,7 +459,7 @@ <string name="battery_saver_notification_title" msgid="8614079794522291840">"Oszczędzanie baterii jest włączone"</string> <string name="battery_saver_notification_text" msgid="820318788126672692">"Zmniejsza wydajność i ogranicza dane w tle"</string> <string name="battery_saver_notification_action_text" msgid="132118784269455533">"Wyłącz Oszczędzanie baterii"</string> - <string name="media_projection_dialog_text" msgid="8585357687598538511">"Podczas nagrywania lub przesyłania aplikacja <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> może rejestrować wszelkie informacje poufne wyświetlane na ekranie lub odtwarzane na urządzeniu takie jak dźwięki czy podawane hasła, informacje o płatnościach, zdjęcia i wiadomości."</string> + <string name="media_projection_dialog_text" msgid="8585357687598538511">"Podczas nagrywania lub przesyłania aplikacja <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> może rejestrować wszelkie informacje poufne wyświetlane na ekranie lub odtwarzane na urządzeniu, takie jak dźwięki czy podawane hasła, informacje o płatnościach, zdjęcia i wiadomości."</string> <string name="media_projection_dialog_service_text" msgid="3075544489835858258">"Podczas nagrywania lub przesyłania usługa udostępniająca tę funkcję może rejestrować wszelkie informacje poufne wyświetlane na ekranie lub odtwarzane na urządzeniu takie jak dźwięki czy podawane hasła, informacje o płatnościach, zdjęcia i wiadomości."</string> <string name="media_projection_dialog_title" msgid="8124184308671641248">"Ujawnianie poufnych informacji podczas przesyłania/nagrywania"</string> <string name="media_projection_remember_text" msgid="3103510882172746752">"Nie pokazuj ponownie"</string> @@ -790,7 +790,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"Przytrzymaj i przeciągnij, by dodać kafelki"</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"Przytrzymaj i przeciągnij, by przestawić kafelki"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"Przeciągnij tutaj, by usunąć"</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"Potrzebnych jest co najmniej sześć kafelków"</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"Minimalna liczba kafelków to <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g>"</string> <string name="qs_edit" msgid="2232596095725105230">"Edytuj"</string> <string name="tuner_time" msgid="6572217313285536011">"Godzina"</string> <string-array name="clock_options"> diff --git a/packages/SystemUI/res/values-pt-rBR/strings.xml b/packages/SystemUI/res/values-pt-rBR/strings.xml index 4d6551269bd7..2e74881ff847 100644 --- a/packages/SystemUI/res/values-pt-rBR/strings.xml +++ b/packages/SystemUI/res/values-pt-rBR/strings.xml @@ -375,8 +375,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"Até o nascer do sol"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"Ativado às <xliff:g id="TIME">%s</xliff:g>"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"Até <xliff:g id="TIME">%s</xliff:g>"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"Tema escuro"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"Tema escuro\nEconomia de bateria"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"Tema escuro"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"Tema escuro\nEconomia de bateria"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"NFC"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"A NFC está desativada"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"A NFC está ativada"</string> @@ -778,7 +778,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"Mantenha pressionado e arraste para adicionar blocos"</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"Mantenha pressionado e arraste para reorganizar os blocos"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"Arraste aqui para remover"</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"É preciso haver pelo menos seis blocos"</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"É preciso haver pelo menos <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> blocos"</string> <string name="qs_edit" msgid="2232596095725105230">"Editar"</string> <string name="tuner_time" msgid="6572217313285536011">"Horas"</string> <string-array name="clock_options"> diff --git a/packages/SystemUI/res/values-pt-rPT/strings.xml b/packages/SystemUI/res/values-pt-rPT/strings.xml index 4a08f2e69f0f..f6ee81ec932a 100644 --- a/packages/SystemUI/res/values-pt-rPT/strings.xml +++ b/packages/SystemUI/res/values-pt-rPT/strings.xml @@ -375,8 +375,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"Até ao amanhecer"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"Ativada à(s) <xliff:g id="TIME">%s</xliff:g>"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"Até à(s) <xliff:g id="TIME">%s</xliff:g>"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"Tema escuro"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"Tema escuro\nPoupança de bateria"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"Tema escuro"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"Tema escuro\nPoupança de bateria"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"NFC"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"O NFC está desativado"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"O NFC está ativado"</string> @@ -778,7 +778,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"Toque sem soltar e arraste para adicionar mosaicos."</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"Tocar sem soltar e arrastar para reorganizar os mosaicos"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"Arrastar para aqui para remover"</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"Necessita de, pelo menos, 6 mosaicos."</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"Necessita de, pelo menos, <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> cartões"</string> <string name="qs_edit" msgid="2232596095725105230">"Editar"</string> <string name="tuner_time" msgid="6572217313285536011">"Hora"</string> <string-array name="clock_options"> diff --git a/packages/SystemUI/res/values-pt/strings.xml b/packages/SystemUI/res/values-pt/strings.xml index 4d6551269bd7..2e74881ff847 100644 --- a/packages/SystemUI/res/values-pt/strings.xml +++ b/packages/SystemUI/res/values-pt/strings.xml @@ -375,8 +375,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"Até o nascer do sol"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"Ativado às <xliff:g id="TIME">%s</xliff:g>"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"Até <xliff:g id="TIME">%s</xliff:g>"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"Tema escuro"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"Tema escuro\nEconomia de bateria"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"Tema escuro"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"Tema escuro\nEconomia de bateria"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"NFC"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"A NFC está desativada"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"A NFC está ativada"</string> @@ -778,7 +778,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"Mantenha pressionado e arraste para adicionar blocos"</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"Mantenha pressionado e arraste para reorganizar os blocos"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"Arraste aqui para remover"</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"É preciso haver pelo menos seis blocos"</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"É preciso haver pelo menos <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> blocos"</string> <string name="qs_edit" msgid="2232596095725105230">"Editar"</string> <string name="tuner_time" msgid="6572217313285536011">"Horas"</string> <string-array name="clock_options"> diff --git a/packages/SystemUI/res/values-ro/strings.xml b/packages/SystemUI/res/values-ro/strings.xml index c74df0a4f7d1..78c8ed2ff6a1 100644 --- a/packages/SystemUI/res/values-ro/strings.xml +++ b/packages/SystemUI/res/values-ro/strings.xml @@ -197,8 +197,7 @@ <string name="carrier_network_change_mode" msgid="8149202439957837762">"Se schimbă rețeaua operatorului"</string> <string name="accessibility_battery_details" msgid="7645516654955025422">"Deschideți detaliile privind bateria"</string> <string name="accessibility_battery_level" msgid="7451474187113371965">"Baterie: <xliff:g id="NUMBER">%d</xliff:g> la sută."</string> - <!-- no translation found for accessibility_battery_level_with_estimate (9033100930684311630) --> - <skip /> + <string name="accessibility_battery_level_with_estimate" msgid="9033100930684311630">"Procentul rămas din baterie este <xliff:g id="PERCENTAGE">%1$s</xliff:g>. În baza utilizării, timpul rămas este de aproximativ <xliff:g id="TIME">%2$s</xliff:g>"</string> <string name="accessibility_battery_level_charging" msgid="1147587904439319646">"Se încarcă bateria, <xliff:g id="BATTERY_PERCENTAGE">%d</xliff:g>%%."</string> <string name="accessibility_settings_button" msgid="799583911231893380">"Setări de sistem."</string> <string name="accessibility_notifications_button" msgid="4498000369779421892">"Notificări."</string> @@ -378,8 +377,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"Până la răsărit"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"Activată la <xliff:g id="TIME">%s</xliff:g>"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"Până la <xliff:g id="TIME">%s</xliff:g>"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"Temă întunecată"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"Temă întunecată\nEconomisirea bateriei"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"Temă întunecată"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"Temă întunecată\nEconomisirea bateriei"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"NFC"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"Serviciul NFC este dezactivat"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"Serviciul NFC este activat"</string> @@ -784,7 +783,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"Țineți apăsat și trageți pentru a adăuga piese"</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"Țineți apăsat și trageți pentru a rearanja piesele"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"Trageți aici pentru a elimina"</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"Aveți nevoie de cel puțin 6 piese"</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"Aveți nevoie de cel puțin <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> carduri"</string> <string name="qs_edit" msgid="2232596095725105230">"Editați"</string> <string name="tuner_time" msgid="6572217313285536011">"Oră"</string> <string-array name="clock_options"> @@ -939,8 +938,6 @@ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"Mutați în stânga jos"</string> <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"Mutați în dreapta jos"</string> <string name="bubble_dismiss_text" msgid="8028337712674081668">"Închideți"</string> - <!-- no translation found for notification_content_system_nav_changed (7218093915747788444) --> - <skip /> - <!-- no translation found for notification_content_gesture_nav_available (8111130443656460792) --> - <skip /> + <string name="notification_content_system_nav_changed" msgid="7218093915747788444">"Navigarea în sistem a fost actualizată. Pentru a face modificări, accesați Setările."</string> + <string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"Accesați Setările pentru a actualiza navigarea în sistem"</string> </resources> diff --git a/packages/SystemUI/res/values-ru/strings.xml b/packages/SystemUI/res/values-ru/strings.xml index c03c108613f3..bcb6837bdb46 100644 --- a/packages/SystemUI/res/values-ru/strings.xml +++ b/packages/SystemUI/res/values-ru/strings.xml @@ -197,7 +197,7 @@ <string name="carrier_network_change_mode" msgid="8149202439957837762">"Сменить сеть"</string> <string name="accessibility_battery_details" msgid="7645516654955025422">"Сведения о расходе заряда батареи"</string> <string name="accessibility_battery_level" msgid="7451474187113371965">"Заряд батареи в процентах: <xliff:g id="NUMBER">%d</xliff:g>."</string> - <string name="accessibility_battery_level_with_estimate" msgid="9033100930684311630">"Заряд батареи – <xliff:g id="PERCENTAGE">%1$s</xliff:g> %. При текущем уровне расхода его хватит примерно на такое время: <xliff:g id="TIME">%2$s</xliff:g>."</string> + <string name="accessibility_battery_level_with_estimate" msgid="9033100930684311630">"Заряд батареи в процентах: <xliff:g id="PERCENTAGE">%1$s</xliff:g>. Оценка оставшегося времени работы: <xliff:g id="TIME">%2$s</xliff:g>."</string> <string name="accessibility_battery_level_charging" msgid="1147587904439319646">"Зарядка батареи. Текущий заряд: <xliff:g id="BATTERY_PERCENTAGE">%d</xliff:g> %%."</string> <string name="accessibility_settings_button" msgid="799583911231893380">"Настройки"</string> <string name="accessibility_notifications_button" msgid="4498000369779421892">"Уведомления"</string> @@ -379,8 +379,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"До рассвета"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"Включить в <xliff:g id="TIME">%s</xliff:g>"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"До <xliff:g id="TIME">%s</xliff:g>"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"Тёмная тема"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"Тёмная тема\nРежим энергосбережения"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"Тёмная тема"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"Тёмная тема\nРежим энергосбережения"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"Модуль NFC"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"Модуль NFC отключен"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"Модуль NFC включен"</string> @@ -457,7 +457,7 @@ <string name="battery_saver_notification_title" msgid="8614079794522291840">"Режим энергосбережения включен"</string> <string name="battery_saver_notification_text" msgid="820318788126672692">"Откл. фоновой передачи данных"</string> <string name="battery_saver_notification_action_text" msgid="132118784269455533">"Отключить режим энергосбережения"</string> - <string name="media_projection_dialog_text" msgid="8585357687598538511">"При записи сообщений или трансляции экрана приложение \"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>\" может получить доступ к конфиденциальной информации, которая отображается на экране или воспроизводится на устройстве, например к аудиозаписям, паролям, фото, сообщениям и платежным данным."</string> + <string name="media_projection_dialog_text" msgid="8585357687598538511">"При записи сообщений или трансляции экрана приложение <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> может получить доступ к конфиденциальной информации, которая отображается на экране или воспроизводится на устройстве, например к аудиозаписям, паролям, фото, сообщениям и платежным данным."</string> <string name="media_projection_dialog_service_text" msgid="3075544489835858258">"При записи сообщений или трансляции экрана сервис может получить доступ к конфиденциальной информации, которая отображается на экране или воспроизводится на устройстве, например к аудиозаписям, паролям, фото, сообщениям и платежным данным."</string> <string name="media_projection_dialog_title" msgid="8124184308671641248">"Раскрытие личной информации при записи или трансляции"</string> <string name="media_projection_remember_text" msgid="3103510882172746752">"Больше не показывать"</string> @@ -788,7 +788,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"Перетащите нужные элементы"</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"Чтобы изменить порядок элементов, перетащите их"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"Чтобы удалить, перетащите сюда"</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"Должно остаться не менее 6 элементов"</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"Должно остаться не менее <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> элементов"</string> <string name="qs_edit" msgid="2232596095725105230">"Изменить"</string> <string name="tuner_time" msgid="6572217313285536011">"Время"</string> <string-array name="clock_options"> diff --git a/packages/SystemUI/res/values-si/strings.xml b/packages/SystemUI/res/values-si/strings.xml index f347e03dd440..7bfa250f80d0 100644 --- a/packages/SystemUI/res/values-si/strings.xml +++ b/packages/SystemUI/res/values-si/strings.xml @@ -375,8 +375,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"හිරු නගින තෙක්"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"<xliff:g id="TIME">%s</xliff:g>ට ක්රියාත්මකයි"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"<xliff:g id="TIME">%s</xliff:g> තෙක්"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"අඳුරු තේමාව"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"අඳුරු තේමාව\nබැටරි සුරැකුම"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"අඳුරු තේමාව"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"අඳුරු තේමාව\nබැටරි සුරැකුම"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"NFC"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"NFC අබලයි"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"NFC සබලයි"</string> @@ -778,7 +778,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"ටයිල් එක් කිරීමට අල්ලාගෙන සිට අදින්න"</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"ටයිල් නැවත සකස් කිරීමට අල්ලාගෙන සිට අදින්න"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"ඉවත් කිරීමට මෙතැනට අදින්න"</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"ඔබ අවම වශයෙන් ටයිල් 6ක් අවශ්ය වේ"</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"ඔබ අවම වශයෙන් ටයිල් <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> ක් අවශ්ය වෙයි"</string> <string name="qs_edit" msgid="2232596095725105230">"සංස්කරණය"</string> <string name="tuner_time" msgid="6572217313285536011">"වේලාව"</string> <string-array name="clock_options"> diff --git a/packages/SystemUI/res/values-sk/strings.xml b/packages/SystemUI/res/values-sk/strings.xml index 18a7b386e5bb..cff792cb9316 100644 --- a/packages/SystemUI/res/values-sk/strings.xml +++ b/packages/SystemUI/res/values-sk/strings.xml @@ -379,8 +379,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"Do východu slnka"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"Od <xliff:g id="TIME">%s</xliff:g>"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"Do <xliff:g id="TIME">%s</xliff:g>"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"Tmavý motív"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"Tmavý motív\nŠetrič batérie"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"Tmavý motív"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"Tmavý motív\nŠetrič batérie"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"NFC"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"NFC je deaktivované"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"NFC je aktivované"</string> @@ -788,7 +788,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"Pridržaním a presunutím pridáte dlaždice"</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"Dlaždice môžete usporiadať pridržaním a presunutím"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"Presunutím sem odstránite"</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"Potrebujete aspoň šesť dlaždíc"</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"Minimálny počet vyžadovaných dlaždíc: <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g>"</string> <string name="qs_edit" msgid="2232596095725105230">"Upraviť"</string> <string name="tuner_time" msgid="6572217313285536011">"Čas"</string> <string-array name="clock_options"> diff --git a/packages/SystemUI/res/values-sl/strings.xml b/packages/SystemUI/res/values-sl/strings.xml index e8a98899e65f..dd3b1c544188 100644 --- a/packages/SystemUI/res/values-sl/strings.xml +++ b/packages/SystemUI/res/values-sl/strings.xml @@ -379,8 +379,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"Do sončnega vzhoda"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"Vklop ob <xliff:g id="TIME">%s</xliff:g>"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"Do <xliff:g id="TIME">%s</xliff:g>"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"Temna tema"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"Temna tema\nVarčevanje energije"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"Temna tema"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"Temna tema\nVarčevanje z energijo akumul."</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"NFC"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"Tehnologija NFC je onemogočena"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"Tehnologija NFC je omogočena"</string> @@ -650,14 +650,14 @@ <string name="inline_minimize_button" msgid="966233327974702195">"Minimiraj"</string> <string name="inline_silent_button_silent" msgid="5315879183296940969">"Tiho"</string> <string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"Še naprej prikazuj brez zvoka"</string> - <string name="inline_silent_button_alert" msgid="6008435419895088034">"Z zvočnim opozorilom"</string> + <string name="inline_silent_button_alert" msgid="6008435419895088034">"Z opozorilom"</string> <string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"Še naprej opozarjaj"</string> <string name="inline_turn_off_notifications" msgid="8635596135532202355">"Izklopi obvestila"</string> <string name="inline_keep_showing_app" msgid="1723113469580031041">"Želite, da so obvestila te aplikacije še naprej prikazana?"</string> <string name="notification_silence_title" msgid="5763240612242137433">"Tiho"</string> - <string name="notification_alert_title" msgid="8031196611815490340">"Z zvočnim opozorilom"</string> + <string name="notification_alert_title" msgid="8031196611815490340">"Z opozorilom"</string> <string name="notification_channel_summary_low" msgid="3387466082089715555">"Nemoteč prikaz brez zvoka ali vibriranja"</string> - <string name="notification_channel_summary_default" msgid="5994062840431965586">"Pritegnitev pozornosti z zvokom ali vibriranjem"</string> + <string name="notification_channel_summary_default" msgid="5994062840431965586">"Pritegne vašo pozornost z zvokom ali vibriranjem"</string> <string name="notification_unblockable_desc" msgid="4556908766584964102">"Za ta obvestila ni mogoče spremeniti nastavitev."</string> <string name="notification_multichannel_desc" msgid="4695920306092240550">"Te skupine obvestil ni mogoče konfigurirati tukaj"</string> <string name="notification_delegate_header" msgid="2857691673814814270">"Posredovano obvestilo"</string> @@ -788,7 +788,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"Držite in povlecite, da dodate ploščice"</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"Držite in povlecite, da prerazporedite ploščice"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"Če želite odstraniti, povlecite sem"</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"Imeti morate vsaj 6 ploščic"</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"Imeti morate vsaj toliko ploščic: <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g>"</string> <string name="qs_edit" msgid="2232596095725105230">"Uredi"</string> <string name="tuner_time" msgid="6572217313285536011">"Ura"</string> <string-array name="clock_options"> diff --git a/packages/SystemUI/res/values-sq/strings.xml b/packages/SystemUI/res/values-sq/strings.xml index 3aacb9be3e6b..7e97a3decf32 100644 --- a/packages/SystemUI/res/values-sq/strings.xml +++ b/packages/SystemUI/res/values-sq/strings.xml @@ -29,9 +29,9 @@ <string name="battery_low_percent_format_hybrid" msgid="6838677459286775617">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> të mbetura, rreth <xliff:g id="TIME">%2$s</xliff:g> të mbetura bazuar në përdorimin tënd"</string> <string name="battery_low_percent_format_hybrid_short" msgid="9025795469949145586">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> të mbetura, rreth <xliff:g id="TIME">%2$s</xliff:g> të mbetura"</string> <string name="battery_low_percent_format_saver_started" msgid="7879389868952879166">"Ka mbetur edhe <xliff:g id="PERCENTAGE">%s</xliff:g>. \"Kursyesi i baterisë\" është i aktivizuar."</string> - <string name="invalid_charger" msgid="2741987096648693172">"Nuk mund të ngarkohet përmes USB-së. Përdor ngarkuesin që ke marrë me pajisjen."</string> + <string name="invalid_charger" msgid="2741987096648693172">"Nuk mund të karikohet përmes USB-së. Përdor karikuesin që ke marrë me pajisjen."</string> <string name="invalid_charger_title" msgid="2836102177577255404">"Nuk mund të ngarkohet përmes USB-së"</string> - <string name="invalid_charger_text" msgid="6480624964117840005">"Përdor ngarkuesin që ke marrë me pajisjen"</string> + <string name="invalid_charger_text" msgid="6480624964117840005">"Përdor karikuesin që ke marrë me pajisjen"</string> <string name="battery_low_why" msgid="4553600287639198111">"Cilësimet"</string> <string name="battery_saver_confirmation_title" msgid="2052100465684817154">"Të aktivizohet \"Kursyesi i baterisë\"?"</string> <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"Rreth \"Kursyesit të baterisë\""</string> @@ -197,7 +197,7 @@ <string name="carrier_network_change_mode" msgid="8149202439957837762">"Rrjeti i operatorit celular po ndryshohet"</string> <string name="accessibility_battery_details" msgid="7645516654955025422">"Hap detajet e baterisë"</string> <string name="accessibility_battery_level" msgid="7451474187113371965">"Bateria ka edhe <xliff:g id="NUMBER">%d</xliff:g> për qind."</string> - <string name="accessibility_battery_level_with_estimate" msgid="9033100930684311630">"Bateria <xliff:g id="PERCENTAGE">%1$s</xliff:g> përqind, mbeten <xliff:g id="TIME">%2$s</xliff:g> bazuar në përdorimin tënd"</string> + <string name="accessibility_battery_level_with_estimate" msgid="9033100930684311630">"Bateria <xliff:g id="PERCENTAGE">%1$s</xliff:g> përqind, rreth <xliff:g id="TIME">%2$s</xliff:g> të mbetura bazuar në përdorimin tënd"</string> <string name="accessibility_battery_level_charging" msgid="1147587904439319646">"Bateria po karikohet, <xliff:g id="BATTERY_PERCENTAGE">%d</xliff:g>%%."</string> <string name="accessibility_settings_button" msgid="799583911231893380">"Cilësimet e sistemit."</string> <string name="accessibility_notifications_button" msgid="4498000369779421892">"Njoftimet."</string> @@ -375,8 +375,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"Deri në lindje të diellit"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"Aktive në <xliff:g id="TIME">%s</xliff:g>"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"Deri në <xliff:g id="TIME">%s</xliff:g>"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"Tema e errët"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"Tema e errët\nKursyesi i baterisë"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"Tema e errët"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"Tema e errët\nKursyesi i baterisë"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"NFC"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"NFC është çaktivizuar"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"NFC është aktivizuar"</string> @@ -778,7 +778,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"Mbaje të shtypur dhe zvarrit për të shtuar pllakëza"</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"Mbaje të shtypur dhe zvarrit për të risistemuar pllakëzat"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"Zvarrit këtu për ta hequr"</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"Të duhen të paktën 6 pllakëza"</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"Të duhen të paktën <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> pllakëza"</string> <string name="qs_edit" msgid="2232596095725105230">"Redakto"</string> <string name="tuner_time" msgid="6572217313285536011">"Ora"</string> <string-array name="clock_options"> diff --git a/packages/SystemUI/res/values-sr/strings.xml b/packages/SystemUI/res/values-sr/strings.xml index 69149913baa4..fe9109150050 100644 --- a/packages/SystemUI/res/values-sr/strings.xml +++ b/packages/SystemUI/res/values-sr/strings.xml @@ -377,8 +377,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"До изласка сунца"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"Укључује се у <xliff:g id="TIME">%s</xliff:g>"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"До <xliff:g id="TIME">%s</xliff:g>"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"Тамна тема"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"Тамна тема\nУштеда батерије"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"Тамна тема"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"Тамна тема\nУштеда батерије"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"NFC"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"NFC је онемогућен"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"NFC је омогућен"</string> @@ -783,7 +783,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"Задржите и превуците да бисте додали плочице"</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"Задржите и превуците да бисте променили распоред плочица"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"Превуците овде да бисте уклонили"</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"Треба да изаберете најмање 6 плочица"</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"Минималан број плочица је <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g>"</string> <string name="qs_edit" msgid="2232596095725105230">"Измени"</string> <string name="tuner_time" msgid="6572217313285536011">"Време"</string> <string-array name="clock_options"> diff --git a/packages/SystemUI/res/values-sv/strings.xml b/packages/SystemUI/res/values-sv/strings.xml index 6a9d3d3f902e..b848c6c0bc81 100644 --- a/packages/SystemUI/res/values-sv/strings.xml +++ b/packages/SystemUI/res/values-sv/strings.xml @@ -375,8 +375,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"Till soluppgången"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"På från <xliff:g id="TIME">%s</xliff:g>"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"Till <xliff:g id="TIME">%s</xliff:g>"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"Mörkt tema"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"Mörkt tema\nBatterisparläge"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"Mörkt tema"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"Mörkt tema\nBatterisparläge"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"NFC"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"NFC är inaktiverat"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"NFC är aktiverat"</string> @@ -453,7 +453,7 @@ <string name="battery_saver_notification_action_text" msgid="132118784269455533">"Inaktivera batterisparläget"</string> <string name="media_projection_dialog_text" msgid="8585357687598538511">"När du spelar in eller castar kan <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> registrera vilka känsliga uppgifter som helst som visas på skärmen eller spelas upp på enheten, inklusive ljud, lösenord, betalningsuppgifter, foton och meddelanden."</string> <string name="media_projection_dialog_service_text" msgid="3075544489835858258">"När du spelar in eller castar kan tjänsten som tillhandahåller funktionen registrera vilka känsliga uppgifter som helst som visas på skärmen eller spelas upp på enheten, inklusive ljud, lösenord, betalningsuppgifter, foton och meddelanden."</string> - <string name="media_projection_dialog_title" msgid="8124184308671641248">"Avslöja känsliga uppgifter under inspelning och vid castning"</string> + <string name="media_projection_dialog_title" msgid="8124184308671641248">"Känsliga uppgifters synlighet under inspelning och vid castning"</string> <string name="media_projection_remember_text" msgid="3103510882172746752">"Visa inte igen"</string> <string name="clear_all_notifications_text" msgid="814192889771462828">"Rensa alla"</string> <string name="manage_notifications_text" msgid="2386728145475108753">"Hantera"</string> @@ -778,7 +778,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"Lägg till rutor genom att trycka och dra"</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"Ordna om rutor genom att trycka och dra"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"Ta bort genom att dra här"</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"Minst sex rutor måste finnas kvar"</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"Minst <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> rutor måste finnas kvar"</string> <string name="qs_edit" msgid="2232596095725105230">"Redigera"</string> <string name="tuner_time" msgid="6572217313285536011">"Tid"</string> <string-array name="clock_options"> diff --git a/packages/SystemUI/res/values-sw/strings.xml b/packages/SystemUI/res/values-sw/strings.xml index 0acb60185e3b..328b6eaaf46a 100644 --- a/packages/SystemUI/res/values-sw/strings.xml +++ b/packages/SystemUI/res/values-sw/strings.xml @@ -375,8 +375,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"Hadi macheo"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"Itawashwa saa <xliff:g id="TIME">%s</xliff:g>"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"Hadi <xliff:g id="TIME">%s</xliff:g>"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"Mandhari Meusi"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"Mandhari Meusi\nKiokoa betri"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"Mandhari meusi"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"Mandhari meusi\nKiokoa betri"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"NFC"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"NFC imezimwa"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"NFC imewashwa"</string> @@ -778,7 +778,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"Shikilia na uburute ili uongeze vigae"</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"Shikilia na uburute ili upange vigae upya"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"Buruta hapa ili uondoe"</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"Unahitaji angalau vigae 6"</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"Unahitaji angalau vigae <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g>"</string> <string name="qs_edit" msgid="2232596095725105230">"Badilisha"</string> <string name="tuner_time" msgid="6572217313285536011">"Wakati"</string> <string-array name="clock_options"> diff --git a/packages/SystemUI/res/values-ta/strings.xml b/packages/SystemUI/res/values-ta/strings.xml index fdee175ce600..fbf851e9895d 100644 --- a/packages/SystemUI/res/values-ta/strings.xml +++ b/packages/SystemUI/res/values-ta/strings.xml @@ -197,8 +197,7 @@ <string name="carrier_network_change_mode" msgid="8149202439957837762">"மொபைல் நிறுவன நெட்வொர்க்கை மாற்றும்"</string> <string name="accessibility_battery_details" msgid="7645516654955025422">"பேட்டரி விவரங்களைத் திறக்கும்"</string> <string name="accessibility_battery_level" msgid="7451474187113371965">"பேட்டரி சக்தி <xliff:g id="NUMBER">%d</xliff:g> சதவிகிதம் உள்ளது."</string> - <!-- no translation found for accessibility_battery_level_with_estimate (9033100930684311630) --> - <skip /> + <string name="accessibility_battery_level_with_estimate" msgid="9033100930684311630">"பேட்டரி: <xliff:g id="PERCENTAGE">%1$s</xliff:g> சதவீதம், உபயோகத்தின் அடிப்படையில் <xliff:g id="TIME">%2$s</xliff:g> மீதமுள்ளது"</string> <string name="accessibility_battery_level_charging" msgid="1147587904439319646">"பேட்டரி சார்ஜ் செய்யப்படுகிறது, <xliff:g id="BATTERY_PERCENTAGE">%d</xliff:g> சதவீதம்."</string> <string name="accessibility_settings_button" msgid="799583911231893380">"கணினி அமைப்பு."</string> <string name="accessibility_notifications_button" msgid="4498000369779421892">"அறிவிப்புகள்."</string> @@ -376,8 +375,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"காலை வரை"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"<xliff:g id="TIME">%s</xliff:g>க்கு ஆன் செய்"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"<xliff:g id="TIME">%s</xliff:g> வரை"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"டார்க் தீம்"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"டார்க் தீம்\nபேட்டரி சேமிப்பான்"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"டார்க் தீம்"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"டார்க் தீம்\nபேட்டரி சேமிப்பான்"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"NFC"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"NFC முடக்கப்பட்டது"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"NFC இயக்கப்பட்டது"</string> @@ -779,7 +778,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"கட்டங்களைச் சேர்க்க, அவற்றைப் பிடித்து இழுக்கவும்"</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"கட்டங்களை மறுவரிசைப்படுத்த அவற்றைப் பிடித்து இழுக்கவும்"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"அகற்ற, இங்கே இழுக்கவும்"</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"குறைந்தது 6 கட்டங்கள் தேவை"</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"குறைந்தது <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> கட்டங்கள் தேவை"</string> <string name="qs_edit" msgid="2232596095725105230">"மாற்று"</string> <string name="tuner_time" msgid="6572217313285536011">"நேரம்"</string> <string-array name="clock_options"> @@ -934,8 +933,6 @@ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"கீழே இடப்புறமாக நகர்த்து"</string> <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"கீழே வலதுபுறமாக நகர்த்து"</string> <string name="bubble_dismiss_text" msgid="8028337712674081668">"மூடுக"</string> - <!-- no translation found for notification_content_system_nav_changed (7218093915747788444) --> - <skip /> - <!-- no translation found for notification_content_gesture_nav_available (8111130443656460792) --> - <skip /> + <string name="notification_content_system_nav_changed" msgid="7218093915747788444">"சிஸ்டம் நேவிகேஷன் மாற்றப்பட்டது. மாற்றங்களைச் செய்ய ‘அமைப்புகளுக்குச்’ செல்லவும்."</string> + <string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"சிஸ்டம் நேவிகேஷனை மாற்ற ’அமைப்புகளுக்குச்’ செல்லவும்"</string> </resources> diff --git a/packages/SystemUI/res/values-te/strings.xml b/packages/SystemUI/res/values-te/strings.xml index d57647506de6..0b92b7822cac 100644 --- a/packages/SystemUI/res/values-te/strings.xml +++ b/packages/SystemUI/res/values-te/strings.xml @@ -375,8 +375,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"సూర్యోదయం వరకు"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"<xliff:g id="TIME">%s</xliff:g>కి"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"<xliff:g id="TIME">%s</xliff:g> వరకు"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"ముదురు రంగు థీమ్"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"ముదురు రంగు థీమ్\nబ్యాటరీ సేవర్"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"ముదురు రంగు థీమ్"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"ముదురు రంగు థీమ్\nబ్యాటరీ సేవర్"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"NFC"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"NFC నిలిపివేయబడింది"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"NFC ప్రారంభించబడింది"</string> @@ -778,7 +778,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"టైల్లను జోడించడం కోసం పట్టుకుని, లాగండి"</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"టైల్ల క్రమం మార్చడానికి వాటిని పట్టుకుని, లాగండి"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"తీసివేయడానికి ఇక్కడికి లాగండి"</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"మీ వద్ద కనీసం 6 టైల్లు ఉండాలి"</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"మీ వద్ద కనీసం <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> టైల్లు ఉండాలి"</string> <string name="qs_edit" msgid="2232596095725105230">"సవరించు"</string> <string name="tuner_time" msgid="6572217313285536011">"సమయం"</string> <string-array name="clock_options"> diff --git a/packages/SystemUI/res/values-th/strings.xml b/packages/SystemUI/res/values-th/strings.xml index 81c6e0d8196e..fcaf280c0495 100644 --- a/packages/SystemUI/res/values-th/strings.xml +++ b/packages/SystemUI/res/values-th/strings.xml @@ -375,8 +375,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"จนพระอาทิตย์ขึ้น"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"เปิดเวลา <xliff:g id="TIME">%s</xliff:g>"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"จนถึง <xliff:g id="TIME">%s</xliff:g>"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"ธีมสีเข้ม"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"ทีมสีเข้ม\nโหมดประหยัดแบตเตอรี่"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"ธีมสีเข้ม"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"ธีมสีเข้ม\nโหมดประหยัดแบตเตอรี่"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"NFC"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"NFC ถูกปิดใช้งาน"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"เปิดใช้งาน NFC แล้ว"</string> @@ -778,7 +778,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"กดค้างแล้วลากเพื่อเพิ่มไทล์"</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"กดไทล์ค้างไว้แล้วลากเพื่อจัดเรียงใหม่"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"ลากมาที่นี่เพื่อนำออก"</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"คุณต้องมีชิ้นส่วนอย่างน้อย 6 ชิ้น"</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"คุณต้องมีการ์ดอย่างน้อย <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> รายการ"</string> <string name="qs_edit" msgid="2232596095725105230">"แก้ไข"</string> <string name="tuner_time" msgid="6572217313285536011">"เวลา"</string> <string-array name="clock_options"> diff --git a/packages/SystemUI/res/values-tl/strings.xml b/packages/SystemUI/res/values-tl/strings.xml index f89061ead1a3..f209a6896f74 100644 --- a/packages/SystemUI/res/values-tl/strings.xml +++ b/packages/SystemUI/res/values-tl/strings.xml @@ -375,8 +375,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"Hanggang sunrise"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"Mao-on sa ganap na <xliff:g id="TIME">%s</xliff:g>"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"Hanggang <xliff:g id="TIME">%s</xliff:g>"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"Madilim na Tema"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"Madilim na Tema\nPangtipid sa Baterya"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"Madilim na tema"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"Madilim na tema\nPangtipid sa baterya"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"NFC"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"Naka-disable ang NFC"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"Naka-enable ang NFC"</string> @@ -453,7 +453,7 @@ <string name="battery_saver_notification_action_text" msgid="132118784269455533">"I-off ang Pangtipid sa Baterya"</string> <string name="media_projection_dialog_text" msgid="8585357687598538511">"Habang nagre-record o nagka-cast, puwedeng kunin ng <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> ang anumang sensitibong impormasyong ipinapakita sa iyong screen o pine-play mula sa device mo, kasama ang sensitibong impormasyon gaya ng audio, mga password, impormasyon sa pagbabayad, mga larawan, at mga mensahe."</string> <string name="media_projection_dialog_service_text" msgid="3075544489835858258">"Habang nagre-record o nagka-cast, puwedeng kunin ng serbisyong nagbibigay ng function na ito ang anumang sensitibong impormasyong ipinapakita sa iyong screen o pine-play mula sa device mo, kasama ang sensitibong impormasyon gaya ng audio, mga password, impormasyon sa pagbabayad, mga larawan, at mga mensahe."</string> - <string name="media_projection_dialog_title" msgid="8124184308671641248">"Maglalantad ng sensitibong impormasyon habang nagka-cast/nagre-record"</string> + <string name="media_projection_dialog_title" msgid="8124184308671641248">"Mag-e-expose ng sensitibong impormasyon habang nagka-cast/nagre-record"</string> <string name="media_projection_remember_text" msgid="3103510882172746752">"Huwag ipakitang muli"</string> <string name="clear_all_notifications_text" msgid="814192889771462828">"I-clear lahat"</string> <string name="manage_notifications_text" msgid="2386728145475108753">"Pamahalaan"</string> @@ -778,7 +778,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"Pindutin nang matagal at i-drag para magdagdag ng mga tile"</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"Pindutin nang matagal at i-drag para ayusin ulit ang tile"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"I-drag dito upang alisin"</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"Kailangan mo ng hindi bababa sa 6 na tile"</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"Kailangan mo ng kahit <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> (na) tile"</string> <string name="qs_edit" msgid="2232596095725105230">"I-edit"</string> <string name="tuner_time" msgid="6572217313285536011">"Oras"</string> <string-array name="clock_options"> diff --git a/packages/SystemUI/res/values-tr/strings.xml b/packages/SystemUI/res/values-tr/strings.xml index 347f6452f648..3e2ccae4c901 100644 --- a/packages/SystemUI/res/values-tr/strings.xml +++ b/packages/SystemUI/res/values-tr/strings.xml @@ -197,8 +197,7 @@ <string name="carrier_network_change_mode" msgid="8149202439957837762">"Operatör ağı değiştiriliyor"</string> <string name="accessibility_battery_details" msgid="7645516654955025422">"Pil ayrıntılarını aç"</string> <string name="accessibility_battery_level" msgid="7451474187113371965">"Pil yüzdesi: <xliff:g id="NUMBER">%d</xliff:g>"</string> - <!-- no translation found for accessibility_battery_level_with_estimate (9033100930684311630) --> - <skip /> + <string name="accessibility_battery_level_with_estimate" msgid="9033100930684311630">"Pil yüzde <xliff:g id="PERCENTAGE">%1$s</xliff:g> dolu. Kullanımınıza göre yaklaşık <xliff:g id="TIME">%2$s</xliff:g> süresi kaldı"</string> <string name="accessibility_battery_level_charging" msgid="1147587904439319646">"Pil şarj oluyor, yüzde <xliff:g id="BATTERY_PERCENTAGE">%d</xliff:g>."</string> <string name="accessibility_settings_button" msgid="799583911231893380">"Sistem ayarları."</string> <string name="accessibility_notifications_button" msgid="4498000369779421892">"Bildirimler."</string> @@ -376,8 +375,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"Gün doğumuna kadar"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"Şu saatte açılacak: <xliff:g id="TIME">%s</xliff:g>"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"Şu saate kadar: <xliff:g id="TIME">%s</xliff:g>"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"Koyu Tema"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"Koyu Tema\nPil tasarrufu"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"Koyu tema"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"Koyu tema\nPil tasarrufu"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"NFC"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"NFC devre dışı"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"NFC etkin"</string> @@ -779,7 +778,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"Blok eklemek için basılı tutup sürükleyin"</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"Blokları yeniden düzenlemek için basılı tutun ve sürükleyin"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"Kaldırmak için buraya sürükleyin"</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"En az 6 blok gerekiyor"</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"En az <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> blok gerekiyor"</string> <string name="qs_edit" msgid="2232596095725105230">"Düzenle"</string> <string name="tuner_time" msgid="6572217313285536011">"Saat"</string> <string-array name="clock_options"> @@ -934,8 +933,6 @@ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"Sol alta taşı"</string> <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"Sağ alta taşı"</string> <string name="bubble_dismiss_text" msgid="8028337712674081668">"Kapat"</string> - <!-- no translation found for notification_content_system_nav_changed (7218093915747788444) --> - <skip /> - <!-- no translation found for notification_content_gesture_nav_available (8111130443656460792) --> - <skip /> + <string name="notification_content_system_nav_changed" msgid="7218093915747788444">"Sistemde gezinme yöntemi güncellendi. Değişiklik yapmak için Ayarlar\'a gidin."</string> + <string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"Sistemde gezinme yöntemini güncellemek için Ayarlar\'a gidin"</string> </resources> diff --git a/packages/SystemUI/res/values-uk/strings.xml b/packages/SystemUI/res/values-uk/strings.xml index 9e04fbea2f8a..28eec2b17ce6 100644 --- a/packages/SystemUI/res/values-uk/strings.xml +++ b/packages/SystemUI/res/values-uk/strings.xml @@ -33,7 +33,7 @@ <string name="invalid_charger_title" msgid="2836102177577255404">"Не вдається зарядити через USB"</string> <string name="invalid_charger_text" msgid="6480624964117840005">"Використовуйте зарядний пристрій, який входить у комплект пристрою"</string> <string name="battery_low_why" msgid="4553600287639198111">"Налаштування"</string> - <string name="battery_saver_confirmation_title" msgid="2052100465684817154">"Увімкнути режим економії заряду акумулятора?"</string> + <string name="battery_saver_confirmation_title" msgid="2052100465684817154">"Увімкнути режим енергозбереження?"</string> <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"Про режим енергозбереження"</string> <string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"Увімкнути"</string> <string name="battery_saver_start_action" msgid="8187820911065797519">"Увімкнути режим економії заряду акумулятора"</string> @@ -379,8 +379,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"До сходу сонця"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"Вмикається о <xliff:g id="TIME">%s</xliff:g>"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"До <xliff:g id="TIME">%s</xliff:g>"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"Темна тема"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"Нічний режим\nЕнергозбереження"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"Темна тема"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"Темна тема\nЕнергозбереження"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"NFC"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"NFC вимкнено"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"NFC ввімкнено"</string> @@ -454,7 +454,7 @@ <string name="user_remove_user_title" msgid="4681256956076895559">"Видалити користувача?"</string> <string name="user_remove_user_message" msgid="1453218013959498039">"Усі додатки й дані цього користувача буде видалено."</string> <string name="user_remove_user_remove" msgid="7479275741742178297">"Видалити"</string> - <string name="battery_saver_notification_title" msgid="8614079794522291840">"Режим економії заряду акумулятора ввімкнено"</string> + <string name="battery_saver_notification_title" msgid="8614079794522291840">"Режим енергозбереження ввімкнено"</string> <string name="battery_saver_notification_text" msgid="820318788126672692">"Знижується продуктивність і обмежуються фонові дані"</string> <string name="battery_saver_notification_action_text" msgid="132118784269455533">"Вимкнути режим економії заряду акумулятора"</string> <string name="media_projection_dialog_text" msgid="8585357687598538511">"Під час запису або трансляції додаток <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> може фіксувати будь-яку конфіденційну інформацію (зокрема, аудіо, паролі, платіжну інформацію, фотографії та повідомлення), яка з\'являється на екрані або відтворюється на пристрої."</string> @@ -788,7 +788,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"Перетягніть потрібні елементи, щоб додати їх"</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"Щоб змінити порядок елементів, перетягуйте їх"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"Перетягніть сюди, щоб видалити"</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"Потрібно принаймні 6 фрагментів"</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"Мінімальна кількість фрагментів: <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g>"</string> <string name="qs_edit" msgid="2232596095725105230">"Редагувати"</string> <string name="tuner_time" msgid="6572217313285536011">"Час"</string> <string-array name="clock_options"> @@ -912,7 +912,7 @@ <string name="auto_saver_title" msgid="1217959994732964228">"Торкніться, щоб увімкнути автоматичний режим економії заряду акумулятора"</string> <string name="auto_saver_text" msgid="2563289953551438248">"Вмикати, коли заряд акумулятора закінчується"</string> <string name="no_auto_saver_action" msgid="8086002101711328500">"Ні, дякую"</string> - <string name="auto_saver_enabled_title" msgid="6726474226058316862">"Автоматичний режим економії заряду акумулятора ввімкнено"</string> + <string name="auto_saver_enabled_title" msgid="6726474226058316862">"Автоматичний перехід у режим енергозбереження ввімкнено"</string> <string name="auto_saver_enabled_text" msgid="874711029884777579">"Режим економії заряду акумулятора вмикається автоматично, коли рівень заряду нижчий за <xliff:g id="PERCENTAGE">%d</xliff:g>%%."</string> <string name="open_saver_setting_action" msgid="8314624730997322529">"Налаштування"</string> <string name="auto_saver_okay_action" msgid="2701221740227683650">"OK"</string> diff --git a/packages/SystemUI/res/values-ur/strings.xml b/packages/SystemUI/res/values-ur/strings.xml index 38fb1a8fd859..669982e857a0 100644 --- a/packages/SystemUI/res/values-ur/strings.xml +++ b/packages/SystemUI/res/values-ur/strings.xml @@ -375,8 +375,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"طلوع آفتاب تک"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"آن ہوگی بوقت <xliff:g id="TIME">%s</xliff:g>"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"<xliff:g id="TIME">%s</xliff:g> تک"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"گہری تھیم"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"گہری تھیم\nبیٹری سیور"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"گہری تھیم"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"گہری تھیم\nبیٹری سیور"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"NFC"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"NFC غیر فعال ہے"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"NFC فعال ہے"</string> @@ -453,7 +453,7 @@ <string name="battery_saver_notification_action_text" msgid="132118784269455533">"بیٹری سیور آف کریں"</string> <string name="media_projection_dialog_text" msgid="8585357687598538511">"ریکارڈ یا کاسٹ کرنے کے دوران، <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> کسی بھی ایسی حساس معلومات کو کیپچر کر سکتا ہے جو آپ کی اسکرین پر ڈسپلے ہوتی ہے یا آپ کے آلہ سے چلائی جاتی ہے، بشمول حساس معلومات جیسے کہ آڈیو، پاسورڈز، ادائیگی کی معلومات، تصاویر اور پیغامات۔"</string> <string name="media_projection_dialog_service_text" msgid="3075544489835858258">"ریکارڈ یا کاسٹ کرنے کے دوران، اس فنکشن کی خدمت کا فراہم کنندہ کسی بھی ایسی حساس معلومات کو کیپچر کر سکتا ہے جو آپ کی اسکرین پر ڈسپلے ہوتی ہے یا آپ کے آلہ سے چلائی جاتی ہے، بشمول حساس معلومات جیسے کہ آڈیو، پاسورڈز، ادائیگی کی معلومات، تصاویر اور پیغامات۔"</string> - <string name="media_projection_dialog_title" msgid="8124184308671641248">"کاسٹ/ریکارڈ کرنے کے دوران حساس معلومات کا افشاء کیا جا رہا ہے"</string> + <string name="media_projection_dialog_title" msgid="8124184308671641248">"کاسٹ/ریکارڈ کرنے کے دوران حساس معلومات کا افشاء"</string> <string name="media_projection_remember_text" msgid="3103510882172746752">"دوبارہ نہ دکھائیں"</string> <string name="clear_all_notifications_text" msgid="814192889771462828">"سبھی کو صاف کریں"</string> <string name="manage_notifications_text" msgid="2386728145475108753">"نظم کریں"</string> @@ -778,7 +778,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"ٹائلز شامل کرنے کے لئے پکڑ کر گھسیٹیں"</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"ٹائلز کو دوبارہ ترتیب دینے کیلئے پکڑ کر گھسیٹیں"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"ہٹانے کیلئے یہاں گھسیٹیں؟"</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"آپ کو کم از کم 6 ٹائلز کی ضرورت ہے"</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"آپ کو کم از کم <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> ٹائلز کی ضرورت ہے"</string> <string name="qs_edit" msgid="2232596095725105230">"ترمیم کریں"</string> <string name="tuner_time" msgid="6572217313285536011">"وقت"</string> <string-array name="clock_options"> diff --git a/packages/SystemUI/res/values-uz/strings.xml b/packages/SystemUI/res/values-uz/strings.xml index 0f93809eae96..a1b88bddc66a 100644 --- a/packages/SystemUI/res/values-uz/strings.xml +++ b/packages/SystemUI/res/values-uz/strings.xml @@ -375,8 +375,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"Quyosh chiqqunicha"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"<xliff:g id="TIME">%s</xliff:g> da yoqish"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"<xliff:g id="TIME">%s</xliff:g> gacha"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"Tungi mavzu"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"Tungi mavzu\nQuvvat tejash"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"Tungi mavzu"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"Tungi mavzu\nQuvvat tejash"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"NFC"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"NFC o‘chiq"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"NFC yoniq"</string> @@ -778,7 +778,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"Keraklisini ushlab torting"</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"Qayta tartiblash uchun ushlab torting"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"O‘chirish uchun bu yerga torting"</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"Kamida 6 ta katakcha lozim"</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"Kamida <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> ta katakcha lozim"</string> <string name="qs_edit" msgid="2232596095725105230">"Tahrirlash"</string> <string name="tuner_time" msgid="6572217313285536011">"Vaqt"</string> <string-array name="clock_options"> diff --git a/packages/SystemUI/res/values-vi/strings.xml b/packages/SystemUI/res/values-vi/strings.xml index d1a2fdc2621a..395af14b6e40 100644 --- a/packages/SystemUI/res/values-vi/strings.xml +++ b/packages/SystemUI/res/values-vi/strings.xml @@ -375,8 +375,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"Cho đến khi trời sáng"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"Bật vào lúc <xliff:g id="TIME">%s</xliff:g>"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"Cho đến <xliff:g id="TIME">%s</xliff:g>"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"Giao diện tối"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"Giao diện tối\nTrình tiết kiệm pin"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"Giao diện tối"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"Giao diện tối\nTrình tiết kiệm pin"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"NFC"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"NFC đã được tắt"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"NFC đã được bật"</string> @@ -529,7 +529,7 @@ <string name="accessibility_volume_settings" msgid="4915364006817819212">"Cài đặt âm thanh"</string> <string name="accessibility_volume_expand" msgid="5946812790999244205">"Mở rộng"</string> <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Thu gọn"</string> - <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Tự động chú thích nội dung"</string> + <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Tự động tạo phụ đề cho nội dung nghe nhìn"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Đóng mẹo về chú thích"</string> <string name="volume_odi_captions_content_description" msgid="2950736796270214785">"Lớp phủ phụ đề"</string> <string name="volume_odi_captions_hint_enable" msgid="49750248924730302">"bật"</string> @@ -778,7 +778,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"Giữ và kéo để thêm ô"</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"Giữ và kéo để sắp xếp lại các ô"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"Kéo vào đây để xóa"</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"Bạn cần ít nhất 6 ô"</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"Bạn cần ít nhất <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> ô"</string> <string name="qs_edit" msgid="2232596095725105230">"Chỉnh sửa"</string> <string name="tuner_time" msgid="6572217313285536011">"Thời gian"</string> <string-array name="clock_options"> diff --git a/packages/SystemUI/res/values-zh-rCN/strings.xml b/packages/SystemUI/res/values-zh-rCN/strings.xml index 69d71575991b..d5801b978dbd 100644 --- a/packages/SystemUI/res/values-zh-rCN/strings.xml +++ b/packages/SystemUI/res/values-zh-rCN/strings.xml @@ -126,7 +126,7 @@ <string name="biometric_dialog_face_icon_description_confirmed" msgid="2003141400387093967">"已确认"</string> <string name="fingerprint_dialog_touch_sensor" msgid="8511557690663181761">"请触摸指纹传感器"</string> <string name="accessibility_fingerprint_dialog_fingerprint_icon" msgid="3125122495414253226">"指纹图标"</string> - <string name="face_dialog_looking_for_face" msgid="7049276266074494689">"正在查找中…"</string> + <string name="face_dialog_looking_for_face" msgid="7049276266074494689">"正在查找您的面孔…"</string> <string name="accessibility_face_dialog_face_icon" msgid="2658119009870383490">"面孔图标"</string> <string name="accessibility_compatibility_zoom_button" msgid="8461115318742350699">"兼容性缩放按钮。"</string> <string name="accessibility_compatibility_zoom_example" msgid="4220687294564945780">"将小屏幕的图片放大在较大屏幕上显示。"</string> @@ -375,8 +375,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"在日出时关闭"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"在<xliff:g id="TIME">%s</xliff:g> 开启"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"直到<xliff:g id="TIME">%s</xliff:g>"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"深色主题背景"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"深色主题背景\n省电模式"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"深色主题背景"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"深色主题背景\n省电模式"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"NFC"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"NFC 已停用"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"NFC 已启用"</string> @@ -778,7 +778,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"按住并拖动即可添加图块"</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"按住并拖动即可重新排列图块"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"拖动到此处即可移除"</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"您至少需要 6 个图块"</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"您至少需要 <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> 个卡片"</string> <string name="qs_edit" msgid="2232596095725105230">"编辑"</string> <string name="tuner_time" msgid="6572217313285536011">"时间"</string> <string-array name="clock_options"> diff --git a/packages/SystemUI/res/values-zh-rHK/strings.xml b/packages/SystemUI/res/values-zh-rHK/strings.xml index 814ae2e50fca..6da44adb7017 100644 --- a/packages/SystemUI/res/values-zh-rHK/strings.xml +++ b/packages/SystemUI/res/values-zh-rHK/strings.xml @@ -375,8 +375,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"在日出時關閉"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"<xliff:g id="TIME">%s</xliff:g> 開啟"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"直到<xliff:g id="TIME">%s</xliff:g>"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"深色主題背景"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"深色主題背景\n省電模式"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"深色主題背景"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"深色主題背景\n省電模式"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"NFC"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"NFC 已停用"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"NFC 已啟用"</string> @@ -778,7 +778,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"按住並拖曳即可新增圖塊"</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"按住並拖曳即可重新排列圖塊"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"拖曳這裡即可移除"</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"您必須至少有 6 個圖塊"</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"您需要有至少 <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> 個資訊方塊"</string> <string name="qs_edit" msgid="2232596095725105230">"編輯"</string> <string name="tuner_time" msgid="6572217313285536011">"時間"</string> <string-array name="clock_options"> diff --git a/packages/SystemUI/res/values-zh-rTW/strings.xml b/packages/SystemUI/res/values-zh-rTW/strings.xml index 029e00f79e20..596e27fbb7f8 100644 --- a/packages/SystemUI/res/values-zh-rTW/strings.xml +++ b/packages/SystemUI/res/values-zh-rTW/strings.xml @@ -375,8 +375,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"於日出時關閉"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"<xliff:g id="TIME">%s</xliff:g> 開啟"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"<xliff:g id="TIME">%s</xliff:g> 關閉"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"深色主題"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"深色主題\n節約耗電量"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"深色主題"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"深色主題\n節約耗電量"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"NFC"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"NFC 已停用"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"NFC 已啟用"</string> @@ -778,7 +778,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"按住並拖曳即可新增圖塊"</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"按住並拖曳即可重新排列圖塊"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"拖曳到這裡即可移除"</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"你至少必須要有 6 個圖塊"</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"你至少必須要有 <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> 個資訊方塊"</string> <string name="qs_edit" msgid="2232596095725105230">"編輯"</string> <string name="tuner_time" msgid="6572217313285536011">"時間"</string> <string-array name="clock_options"> diff --git a/packages/SystemUI/res/values-zu/strings.xml b/packages/SystemUI/res/values-zu/strings.xml index 8447ef86bcf9..f930b7d4a1b6 100644 --- a/packages/SystemUI/res/values-zu/strings.xml +++ b/packages/SystemUI/res/values-zu/strings.xml @@ -375,8 +375,8 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"Kuze kube sekuphumeni kwelanga"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"Kuvulwe ngo-<xliff:g id="TIME">%s</xliff:g>"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"Kuze kube ngu-<xliff:g id="TIME">%s</xliff:g>"</string> - <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"Itimu emnyama"</string> - <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="3496696903886673256">"Itimu emnyama\nIsilondolozi sebethri"</string> + <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"Itimu emnyama"</string> + <string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"Itimu emnyama\nIsilondolozi sebethri"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"I-NFC"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"I-NFC ikhutshaziwe"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"I-NFC inikwe amandla"</string> @@ -778,7 +778,7 @@ <string name="drag_to_add_tiles" msgid="230586591689084925">"Bamba uphinde uhudule ukuze ungeze amathayela"</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"Bamba uphinde uhudule ukuze uphinde ulungise amathayela"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"Hudulela lapha ukuze ususe"</string> - <string name="drag_to_remove_disabled" msgid="2390968976638993382">"Udinga okungenani amathayela angu-6"</string> + <string name="drag_to_remove_disabled" msgid="4785920129548299268">"Udinga okungenani amathayela angu-<xliff:g id="MIN_NUM_TILES">%1$d</xliff:g>"</string> <string name="qs_edit" msgid="2232596095725105230">"Hlela"</string> <string name="tuner_time" msgid="6572217313285536011">"Isikhathi"</string> <string-array name="clock_options"> diff --git a/packages/SystemUI/res/values/config.xml b/packages/SystemUI/res/values/config.xml index 19e7b734912a..6e6c009dd18c 100644 --- a/packages/SystemUI/res/values/config.xml +++ b/packages/SystemUI/res/values/config.xml @@ -112,6 +112,9 @@ wifi,bt,dnd,flashlight,rotation,battery,cell,airplane,cast </string> + <!-- The minimum number of tiles to display in QuickSettings --> + <integer name="quick_settings_min_num_tiles">6</integer> + <!-- Tiles native to System UI. Order should match "quick_settings_tiles_default" --> <string name="quick_settings_tiles_stock" translatable="false"> wifi,cell,battery,dnd,flashlight,rotation,bt,airplane,location,hotspot,inversion,saver,dark,work,cast,night diff --git a/packages/SystemUI/res/values/strings.xml b/packages/SystemUI/res/values/strings.xml index 3fe24929a778..591af82ecb4e 100644 --- a/packages/SystemUI/res/values/strings.xml +++ b/packages/SystemUI/res/values/strings.xml @@ -885,10 +885,10 @@ <string name="quick_settings_night_secondary_label_on_at">On at <xliff:g id="time" example="10 pm">%s</xliff:g></string> <!-- QuickSettings: Secondary text for when the Night Light or some other tile will be on until some user-selected time. [CHAR LIMIT=20] --> <string name="quick_settings_secondary_label_until">Until <xliff:g id="time" example="7 am">%s</xliff:g></string> - <!-- QuickSettings: Label for the toggle to activate Dark theme (A.K.A Dark Mode). [CHAR LIMIT=20] --> - <string name="quick_settings_ui_mode_night_label">Dark Theme</string> - <!-- QuickSettings: Label for the Dark theme tile when enabled by battery saver. [CHAR LIMIT=40] --> - <string name="quick_settings_ui_mode_night_label_battery_saver">Dark Theme\nBattery saver</string> + <!-- QuickSettings: Label for the toggle to activate dark theme (A.K.A Dark Mode). [CHAR LIMIT=20] --> + <string name="quick_settings_ui_mode_night_label">Dark theme</string> + <!-- QuickSettings: Label for the dark theme tile when enabled by battery saver. [CHAR LIMIT=40] --> + <string name="quick_settings_ui_mode_night_label_battery_saver">Dark theme\nBattery saver</string> <!-- QuickSettings: NFC tile [CHAR LIMIT=NONE] --> <string name="quick_settings_nfc_label">NFC</string> @@ -2009,7 +2009,7 @@ <string name="drag_to_remove_tiles">Drag here to remove</string> <!-- Label to indicate to users that additional tiles cannot be removed. [CHAR LIMIT=60] --> - <string name="drag_to_remove_disabled">You need at least 6 tiles</string> + <string name="drag_to_remove_disabled">You need at least <xliff:g id="min_num_tiles" example="6">%1$d</xliff:g> tiles</string> <!-- Button to edit the tile ordering of quick settings [CHAR LIMIT=60] --> <string name="qs_edit">Edit</string> diff --git a/packages/SystemUI/res/values/styles.xml b/packages/SystemUI/res/values/styles.xml index b3877931bd4f..2f1770a39f02 100644 --- a/packages/SystemUI/res/values/styles.xml +++ b/packages/SystemUI/res/values/styles.xml @@ -450,7 +450,7 @@ <style name="TextAppearance.NotificationInfo.Secondary"> <item name="android:textSize">14sp</item> - <item name="android:alpha">0.54</item> + <item name="android:alpha">0.62</item> </style> <style name="TextAppearance.NotificationInfo.Title"> diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/recents/ISystemUiProxy.aidl b/packages/SystemUI/shared/src/com/android/systemui/shared/recents/ISystemUiProxy.aidl index 77bb5141d1e0..9228b178c76f 100644 --- a/packages/SystemUI/shared/src/com/android/systemui/shared/recents/ISystemUiProxy.aidl +++ b/packages/SystemUI/shared/src/com/android/systemui/shared/recents/ISystemUiProxy.aidl @@ -55,10 +55,17 @@ interface ISystemUiProxy { /** * Control the {@param alpha} of the back button in the navigation bar and {@param animate} if * needed from current value + * @deprecated */ void setBackButtonAlpha(float alpha, boolean animate) = 8; /** + * Control the {@param alpha} of the option nav bar button (back-button in 2 button mode + * and home bar in no-button mode) and {@param animate} if needed from current value + */ + void setNavBarButtonAlpha(float alpha, boolean animate) = 19; + + /** * Proxies motion events from the homescreen UI to the status bar. Only called when * swipe down is detected on WORKSPACE. The sender guarantees the following order of events on * the tracking pointer. diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/system/ActivityManagerWrapper.java b/packages/SystemUI/shared/src/com/android/systemui/shared/system/ActivityManagerWrapper.java index 6b07ed8e8edc..a2abb4b1695c 100644 --- a/packages/SystemUI/shared/src/com/android/systemui/shared/system/ActivityManagerWrapper.java +++ b/packages/SystemUI/shared/src/com/android/systemui/shared/system/ActivityManagerWrapper.java @@ -64,6 +64,7 @@ import com.android.systemui.shared.recents.model.ThumbnailData; import java.util.ArrayList; import java.util.List; +import java.util.concurrent.Future; import java.util.function.Consumer; public class ActivityManagerWrapper { @@ -380,8 +381,8 @@ public class ActivityManagerWrapper { /** * Requests that the system close any open system windows (including other SystemUI). */ - public void closeSystemWindows(final String reason) { - mBackgroundExecutor.submit(new Runnable() { + public Future<?> closeSystemWindows(final String reason) { + return mBackgroundExecutor.submit(new Runnable() { @Override public void run() { try { diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/system/QuickStepContract.java b/packages/SystemUI/shared/src/com/android/systemui/shared/system/QuickStepContract.java index db13ef4821e8..7fbe5db99569 100644 --- a/packages/SystemUI/shared/src/com/android/systemui/shared/system/QuickStepContract.java +++ b/packages/SystemUI/shared/src/com/android/systemui/shared/system/QuickStepContract.java @@ -21,7 +21,9 @@ import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_3BUTTON; import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_GESTURAL; import android.annotation.IntDef; +import android.content.Context; import android.content.res.Resources; +import android.view.ViewConfiguration; import android.view.WindowManagerPolicyConstants; import com.android.internal.policy.ScreenDecorationsUtils; @@ -101,6 +103,18 @@ public class QuickStepContract { } /** + * Ratio of quickstep touch slop (when system takes over the touch) to view touch slop + */ + public static final float QUICKSTEP_TOUCH_SLOP_RATIO = 3; + + /** + * Touch slop for quickstep gesture + */ + public static final float getQuickStepTouchSlopPx(Context context) { + return QUICKSTEP_TOUCH_SLOP_RATIO * ViewConfiguration.get(context).getScaledTouchSlop(); + } + + /** * Touch slopes and thresholds for quick step operations. Drag slop is the point where the * home button press/long press over are ignored and will start to drag when exceeded and the * touch slop is when the respected operation will occur when exceeded. Touch slop must be diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/system/SyncRtSurfaceTransactionApplierCompat.java b/packages/SystemUI/shared/src/com/android/systemui/shared/system/SyncRtSurfaceTransactionApplierCompat.java index bd7b3d598927..9ba21a328ca4 100644 --- a/packages/SystemUI/shared/src/com/android/systemui/shared/system/SyncRtSurfaceTransactionApplierCompat.java +++ b/packages/SystemUI/shared/src/com/android/systemui/shared/system/SyncRtSurfaceTransactionApplierCompat.java @@ -22,6 +22,7 @@ import android.graphics.Rect; import android.os.Handler; import android.os.Handler.Callback; import android.os.Message; +import android.os.Trace; import android.view.Surface; import android.view.View; import android.view.ViewRootImpl; @@ -95,6 +96,7 @@ public class SyncRtSurfaceTransactionApplierCompat { .sendToTarget(); return; } + Trace.traceBegin(Trace.TRACE_TAG_VIEW, "Sync transaction frameNumber=" + frame); TransactionCompat t = new TransactionCompat(); for (int i = params.length - 1; i >= 0; i--) { SyncRtSurfaceTransactionApplierCompat.SurfaceParams surfaceParams = @@ -105,6 +107,7 @@ public class SyncRtSurfaceTransactionApplierCompat { } t.setEarlyWakeup(); t.apply(); + Trace.traceEnd(Trace.TRACE_TAG_VIEW); Message.obtain(mApplyHandler, MSG_UPDATE_SEQUENCE_NUMBER, toApplySeqNo, 0) .sendToTarget(); } diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/system/TaskStackChangeListener.java b/packages/SystemUI/shared/src/com/android/systemui/shared/system/TaskStackChangeListener.java index 21b3a0082319..3d9abafa0d73 100644 --- a/packages/SystemUI/shared/src/com/android/systemui/shared/system/TaskStackChangeListener.java +++ b/packages/SystemUI/shared/src/com/android/systemui/shared/system/TaskStackChangeListener.java @@ -79,6 +79,14 @@ public abstract class TaskStackChangeListener { public void onBackPressedOnTaskRoot(RunningTaskInfo taskInfo) { } /** + * Called when a task is reparented to a stack on a different display. + * + * @param taskId id of the task which was moved to a different display. + * @param newDisplayId id of the new display. + */ + public void onTaskDisplayChanged(int taskId, int newDisplayId) { } + + /** * Checks that the current user matches the process. Since * {@link android.app.ITaskStackListener} is not multi-user aware, handlers of * {@link TaskStackChangeListener} should make this call to verify that we don't act on events diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/system/TaskStackChangeListeners.java b/packages/SystemUI/shared/src/com/android/systemui/shared/system/TaskStackChangeListeners.java index 06ae399a5e4e..beb4f05d814c 100644 --- a/packages/SystemUI/shared/src/com/android/systemui/shared/system/TaskStackChangeListeners.java +++ b/packages/SystemUI/shared/src/com/android/systemui/shared/system/TaskStackChangeListeners.java @@ -112,7 +112,7 @@ public class TaskStackChangeListeners extends TaskStackListener { @Override public void onPinnedActivityRestartAttempt(boolean clearedTask) - throws RemoteException{ + throws RemoteException { mHandler.removeMessages(H.ON_PINNED_ACTIVITY_RESTART_ATTEMPT); mHandler.obtainMessage(H.ON_PINNED_ACTIVITY_RESTART_ATTEMPT, clearedTask ? 1 : 0, 0) .sendToTarget(); @@ -154,7 +154,7 @@ public class TaskStackChangeListeners extends TaskStackListener { public void onActivityLaunchOnSecondaryDisplayRerouted(RunningTaskInfo taskInfo, int requestedDisplayId) throws RemoteException { mHandler.obtainMessage(H.ON_ACTIVITY_LAUNCH_ON_SECONDARY_DISPLAY_REROUTED, - requestedDisplayId, 0 /* unused */, taskInfo).sendToTarget(); + requestedDisplayId, 0 /* unused */, taskInfo).sendToTarget(); } @Override @@ -201,6 +201,11 @@ public class TaskStackChangeListeners extends TaskStackListener { activityToken).sendToTarget(); } + @Override + public void onTaskDisplayChanged(int taskId, int newDisplayId) throws RemoteException { + mHandler.obtainMessage(H.ON_TASK_DISPLAY_CHANGED, taskId, newDisplayId).sendToTarget(); + } + private final class H extends Handler { private static final int ON_TASK_STACK_CHANGED = 1; private static final int ON_TASK_SNAPSHOT_CHANGED = 2; @@ -220,6 +225,7 @@ public class TaskStackChangeListeners extends TaskStackListener { private static final int ON_ACTIVITY_LAUNCH_ON_SECONDARY_DISPLAY_REROUTED = 16; private static final int ON_SIZE_COMPAT_MODE_ACTIVITY_CHANGED = 17; private static final int ON_BACK_PRESSED_ON_TASK_ROOT = 18; + private static final int ON_TASK_DISPLAY_CHANGED = 19; public H(Looper looper) { @@ -305,7 +311,7 @@ public class TaskStackChangeListeners extends TaskStackListener { final RunningTaskInfo info = (RunningTaskInfo) msg.obj; for (int i = mTaskStackListeners.size() - 1; i >= 0; i--) { mTaskStackListeners.get(i) - .onActivityLaunchOnSecondaryDisplayRerouted(info); + .onActivityLaunchOnSecondaryDisplayRerouted(info); } break; } @@ -356,6 +362,12 @@ public class TaskStackChangeListeners extends TaskStackListener { } break; } + case ON_TASK_DISPLAY_CHANGED: { + for (int i = mTaskStackListeners.size() - 1; i >= 0; i--) { + mTaskStackListeners.get(i).onTaskDisplayChanged(msg.arg1, msg.arg2); + } + break; + } } } } diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitch.java b/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitch.java index 0bb9e744f2b6..b1cba53c4bca 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitch.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitch.java @@ -49,6 +49,7 @@ import javax.inject.Named; public class KeyguardClockSwitch extends RelativeLayout { private static final String TAG = "KeyguardClockSwitch"; + private static final boolean CUSTOM_CLOCKS_ENABLED = false; /** * Animation fraction when text is transitioned to/from bold. @@ -192,7 +193,9 @@ public class KeyguardClockSwitch extends RelativeLayout { @Override protected void onAttachedToWindow() { super.onAttachedToWindow(); - mClockManager.addOnClockChangedListener(mClockChangedListener); + if (CUSTOM_CLOCKS_ENABLED) { + mClockManager.addOnClockChangedListener(mClockChangedListener); + } mStatusBarStateController.addCallback(mStateListener); mSysuiColorExtractor.addOnColorsChangedListener(mColorsListener); updateColors(); @@ -201,7 +204,9 @@ public class KeyguardClockSwitch extends RelativeLayout { @Override protected void onDetachedFromWindow() { super.onDetachedFromWindow(); - mClockManager.removeOnClockChangedListener(mClockChangedListener); + if (CUSTOM_CLOCKS_ENABLED) { + mClockManager.removeOnClockChangedListener(mClockChangedListener); + } mStatusBarStateController.removeCallback(mStateListener); mSysuiColorExtractor.removeOnColorsChangedListener(mColorsListener); setClockPlugin(null); @@ -374,7 +379,7 @@ public class KeyguardClockSwitch extends RelativeLayout { private void updateColors() { ColorExtractor.GradientColors colors = mSysuiColorExtractor.getColors( - WallpaperManager.FLAG_LOCK, true); + WallpaperManager.FLAG_LOCK); mSupportsDarkText = colors.supportsDarkText(); mColorPalette = colors.getColorPalette(); if (mClockPlugin != null) { diff --git a/packages/SystemUI/src/com/android/keyguard/clock/AnalogClockController.java b/packages/SystemUI/src/com/android/keyguard/clock/AnalogClockController.java index f468ecaae4c1..558ac4b564d1 100644 --- a/packages/SystemUI/src/com/android/keyguard/clock/AnalogClockController.java +++ b/packages/SystemUI/src/com/android/keyguard/clock/AnalogClockController.java @@ -130,7 +130,7 @@ public class AnalogClockController implements ClockPlugin { setDarkAmount(1f); setTextColor(Color.WHITE); ColorExtractor.GradientColors colors = mColorExtractor.getColors( - WallpaperManager.FLAG_LOCK, true); + WallpaperManager.FLAG_LOCK); setColorPalette(colors.supportsDarkText(), colors.getColorPalette()); onTimeTick(); diff --git a/packages/SystemUI/src/com/android/keyguard/clock/BubbleClockController.java b/packages/SystemUI/src/com/android/keyguard/clock/BubbleClockController.java index 61a6952cacac..bdf9dc4865b2 100644 --- a/packages/SystemUI/src/com/android/keyguard/clock/BubbleClockController.java +++ b/packages/SystemUI/src/com/android/keyguard/clock/BubbleClockController.java @@ -130,7 +130,7 @@ public class BubbleClockController implements ClockPlugin { setDarkAmount(1f); setTextColor(Color.WHITE); ColorExtractor.GradientColors colors = mColorExtractor.getColors( - WallpaperManager.FLAG_LOCK, true); + WallpaperManager.FLAG_LOCK); setColorPalette(colors.supportsDarkText(), colors.getColorPalette()); onTimeTick(); diff --git a/packages/SystemUI/src/com/android/keyguard/clock/DefaultClockController.java b/packages/SystemUI/src/com/android/keyguard/clock/DefaultClockController.java index ce1f09c9355c..98679ade1022 100644 --- a/packages/SystemUI/src/com/android/keyguard/clock/DefaultClockController.java +++ b/packages/SystemUI/src/com/android/keyguard/clock/DefaultClockController.java @@ -124,7 +124,7 @@ public class DefaultClockController implements ClockPlugin { setDarkAmount(1f); setTextColor(Color.WHITE); ColorExtractor.GradientColors colors = mColorExtractor.getColors( - WallpaperManager.FLAG_LOCK, true); + WallpaperManager.FLAG_LOCK); setColorPalette(colors.supportsDarkText(), colors.getColorPalette()); onTimeTick(); diff --git a/packages/SystemUI/src/com/android/systemui/BatteryMeterView.java b/packages/SystemUI/src/com/android/systemui/BatteryMeterView.java index f66463e4ef9b..ffa69fa87436 100644 --- a/packages/SystemUI/src/com/android/systemui/BatteryMeterView.java +++ b/packages/SystemUI/src/com/android/systemui/BatteryMeterView.java @@ -365,6 +365,10 @@ public class BatteryMeterView extends LinearLayout implements } else { setPercentTextAtCurrentLevel(); } + } else { + setContentDescription( + getContext().getString(mCharging ? R.string.accessibility_battery_level_charging + : R.string.accessibility_battery_level, mLevel)); } } diff --git a/packages/SystemUI/src/com/android/systemui/ImageWallpaper.java b/packages/SystemUI/src/com/android/systemui/ImageWallpaper.java index 84842563cbdc..9a0e9fc92af6 100644 --- a/packages/SystemUI/src/com/android/systemui/ImageWallpaper.java +++ b/packages/SystemUI/src/com/android/systemui/ImageWallpaper.java @@ -19,6 +19,7 @@ package com.android.systemui; import android.app.ActivityManager; import android.content.Context; import android.graphics.Rect; +import android.os.HandlerThread; import android.service.wallpaper.WallpaperService; import android.util.Log; import android.util.Size; @@ -45,12 +46,27 @@ public class ImageWallpaper extends WallpaperService { // We delayed destroy render context that subsequent render requests have chance to cancel it. // This is to avoid destroying then recreating render context in a very short time. private static final int DELAY_FINISH_RENDERING = 1000; + private HandlerThread mWorker; + + @Override + public void onCreate() { + super.onCreate(); + mWorker = new HandlerThread(TAG); + mWorker.start(); + } @Override public Engine onCreateEngine() { return new GLEngine(this); } + @Override + public void onDestroy() { + super.onDestroy(); + mWorker.quitSafely(); + mWorker = null; + } + class GLEngine extends Engine implements GLWallpaperRenderer.SurfaceProxy, StateListener { // Surface is rejected if size below a threshold on some devices (ie. 8px on elfin) // set min to 64 px (CTS covers this), please refer to ag/4867989 for detail. @@ -83,7 +99,7 @@ public class ImageWallpaper extends WallpaperService { @Override public void onCreate(SurfaceHolder surfaceHolder) { setFixedSizeAllowed(true); - setOffsetNotificationsEnabled(false); + setOffsetNotificationsEnabled(true); updateSurfaceSize(); } @@ -96,9 +112,16 @@ public class ImageWallpaper extends WallpaperService { } @Override + public void onOffsetsChanged(float xOffset, float yOffset, float xOffsetStep, + float yOffsetStep, int xPixelOffset, int yPixelOffset) { + mWorker.getThreadHandler().post(() -> mRenderer.updateOffsets(xOffset, yOffset)); + } + + @Override public void onAmbientModeChanged(boolean inAmbientMode, long animationDuration) { - mRenderer.updateAmbientMode(inAmbientMode, - (mNeedTransition || animationDuration != 0) ? animationDuration : 0); + long duration = mNeedTransition || animationDuration != 0 ? animationDuration : 0; + mWorker.getThreadHandler().post( + () -> mRenderer.updateAmbientMode(inAmbientMode, duration)); } @Override @@ -107,53 +130,61 @@ public class ImageWallpaper extends WallpaperService { mController.removeCallback(this /* StateListener */); } mController = null; - mRenderer.finish(); - mRenderer = null; - mEglHelper.finish(); - mEglHelper = null; - getSurfaceHolder().getSurface().hwuiDestroy(); + + mWorker.getThreadHandler().post(() -> { + mRenderer.finish(); + mRenderer = null; + mEglHelper.finish(); + mEglHelper = null; + getSurfaceHolder().getSurface().hwuiDestroy(); + }); } @Override public void onSurfaceCreated(SurfaceHolder holder) { - mEglHelper.init(holder); - mRenderer.onSurfaceCreated(); + mWorker.getThreadHandler().post(() -> { + mEglHelper.init(holder); + mRenderer.onSurfaceCreated(); + }); } @Override public void onSurfaceChanged(SurfaceHolder holder, int format, int width, int height) { - mRenderer.onSurfaceChanged(width, height); - mNeedRedraw = true; + mWorker.getThreadHandler().post(() -> { + mRenderer.onSurfaceChanged(width, height); + mNeedRedraw = true; + }); } @Override public void onSurfaceRedrawNeeded(SurfaceHolder holder) { - if (mNeedRedraw) { - preRender(); - requestRender(); - postRender(); - mNeedRedraw = false; - } - } - - @Override - public SurfaceHolder getHolder() { - return getSurfaceHolder(); + mWorker.getThreadHandler().post(() -> { + if (mNeedRedraw) { + preRender(); + requestRender(); + postRender(); + mNeedRedraw = false; + } + }); } @Override public void onStatePostChange() { // When back to home, we try to release EGL, which is preserved in lock screen or aod. if (mController.getState() == StatusBarState.SHADE) { - scheduleFinishRendering(); + mWorker.getThreadHandler().post(this::scheduleFinishRendering); } } @Override public void preRender() { + mWorker.getThreadHandler().post(this::preRenderInternal); + } + + private void preRenderInternal() { boolean contextRecreated = false; Rect frame = getSurfaceHolder().getSurfaceFrame(); - getMainThreadHandler().removeCallbacks(mFinishRenderingTask); + cancelFinishRenderingTask(); // Check if we need to recreate egl context. if (!mEglHelper.hasEglContext()) { @@ -181,6 +212,10 @@ public class ImageWallpaper extends WallpaperService { @Override public void requestRender() { + mWorker.getThreadHandler().post(this::requestRenderInternal); + } + + private void requestRenderInternal() { Rect frame = getSurfaceHolder().getSurfaceFrame(); boolean readyToRender = mEglHelper.hasEglContext() && mEglHelper.hasEglSurface() && frame.width() > 0 && frame.height() > 0; @@ -199,12 +234,16 @@ public class ImageWallpaper extends WallpaperService { @Override public void postRender() { - scheduleFinishRendering(); + mWorker.getThreadHandler().post(this::scheduleFinishRendering); + } + + private void cancelFinishRenderingTask() { + mWorker.getThreadHandler().removeCallbacks(mFinishRenderingTask); } private void scheduleFinishRendering() { - getMainThreadHandler().removeCallbacks(mFinishRenderingTask); - getMainThreadHandler().postDelayed(mFinishRenderingTask, DELAY_FINISH_RENDERING); + cancelFinishRenderingTask(); + mWorker.getThreadHandler().postDelayed(mFinishRenderingTask, DELAY_FINISH_RENDERING); } private void finishRendering() { diff --git a/packages/SystemUI/src/com/android/systemui/ScreenDecorations.java b/packages/SystemUI/src/com/android/systemui/ScreenDecorations.java index 305558fd9efa..73e57de3f915 100644 --- a/packages/SystemUI/src/com/android/systemui/ScreenDecorations.java +++ b/packages/SystemUI/src/com/android/systemui/ScreenDecorations.java @@ -64,6 +64,7 @@ import android.view.ViewGroup; import android.view.ViewGroup.LayoutParams; import android.view.ViewTreeObserver; import android.view.WindowManager; +import android.view.animation.AccelerateInterpolator; import android.view.animation.Interpolator; import android.view.animation.PathInterpolator; import android.widget.FrameLayout; @@ -231,7 +232,10 @@ public class ScreenDecorations extends SystemUI implements Tunable, anim.start(); } else { view.animate().cancel(); - view.animate().setDuration(400).alpha(0f); + view.animate() + .setInterpolator(new AccelerateInterpolator(1.5f)) + .setDuration(250) + .alpha(0f); } } @@ -764,6 +768,10 @@ public class ScreenDecorations extends SystemUI implements Tunable, @Override public void onDarkIntensity(float darkIntensity) { + if (!mHandler.getLooper().isCurrentThread()) { + mHandler.post(() -> onDarkIntensity(darkIntensity)); + return; + } if (mOverlay != null) { CornerHandleView assistHintTopLeft = mOverlay.findViewById(R.id.assist_hint_left); CornerHandleView assistHintTopRight = mOverlay.findViewById(R.id.assist_hint_right); @@ -911,6 +919,7 @@ public class ScreenDecorations extends SystemUI implements Tunable, if (shouldDrawCutout(getContext()) && hasCutout()) { mBounds.addAll(mInfo.displayCutout.getBoundingRects()); localBounds(mBoundingRect); + updateGravity(); updateBoundingPath(); invalidate(); newVisible = VISIBLE; @@ -961,6 +970,18 @@ public class ScreenDecorations extends SystemUI implements Tunable, } } + private void updateGravity() { + LayoutParams lp = getLayoutParams(); + if (lp instanceof FrameLayout.LayoutParams) { + FrameLayout.LayoutParams flp = (FrameLayout.LayoutParams) lp; + int newGravity = getGravity(mInfo.displayCutout); + if (flp.gravity != newGravity) { + flp.gravity = newGravity; + setLayoutParams(flp); + } + } + } + private boolean hasCutout() { final DisplayCutout displayCutout = mInfo.displayCutout; if (displayCutout == null) { @@ -1007,21 +1028,25 @@ public class ScreenDecorations extends SystemUI implements Tunable, } private void localBounds(Rect out) { - final DisplayCutout displayCutout = mInfo.displayCutout; + DisplayCutout displayCutout = mInfo.displayCutout; + boundsFromDirection(displayCutout, getGravity(displayCutout), out); + } + private int getGravity(DisplayCutout displayCutout) { if (mStart) { if (displayCutout.getSafeInsetLeft() > 0) { - boundsFromDirection(displayCutout, Gravity.LEFT, out); + return Gravity.LEFT; } else if (displayCutout.getSafeInsetTop() > 0) { - boundsFromDirection(displayCutout, Gravity.TOP, out); + return Gravity.TOP; } } else { if (displayCutout.getSafeInsetRight() > 0) { - boundsFromDirection(displayCutout, Gravity.RIGHT, out); + return Gravity.RIGHT; } else if (displayCutout.getSafeInsetBottom() > 0) { - boundsFromDirection(displayCutout, Gravity.BOTTOM, out); + return Gravity.BOTTOM; } } + return Gravity.NO_GRAVITY; } @Override diff --git a/packages/SystemUI/src/com/android/systemui/SystemUIFactory.java b/packages/SystemUI/src/com/android/systemui/SystemUIFactory.java index 0fdab014439b..d815d95f23d5 100644 --- a/packages/SystemUI/src/com/android/systemui/SystemUIFactory.java +++ b/packages/SystemUI/src/com/android/systemui/SystemUIFactory.java @@ -144,10 +144,9 @@ public class SystemUIFactory { } public NotificationIconAreaController createNotificationIconAreaController(Context context, - StatusBar statusBar, StatusBarStateController statusBarStateController, - NotificationListener listener) { + StatusBar statusBar, StatusBarStateController statusBarStateController) { return new NotificationIconAreaController(context, statusBar, statusBarStateController, - listener, Dependency.get(NotificationMediaManager.class)); + Dependency.get(NotificationMediaManager.class)); } public KeyguardIndicationController createKeyguardIndicationController(Context context, diff --git a/packages/SystemUI/src/com/android/systemui/assist/AssistHandleBehaviorController.java b/packages/SystemUI/src/com/android/systemui/assist/AssistHandleBehaviorController.java index 6d109fb59abb..002d4f34be11 100644 --- a/packages/SystemUI/src/com/android/systemui/assist/AssistHandleBehaviorController.java +++ b/packages/SystemUI/src/com/android/systemui/assist/AssistHandleBehaviorController.java @@ -20,7 +20,6 @@ import android.content.ComponentName; import android.content.Context; import android.os.Handler; import android.os.SystemClock; -import android.provider.DeviceConfig; import android.util.Log; import androidx.annotation.Nullable; @@ -30,11 +29,15 @@ import com.android.internal.app.AssistUtils; import com.android.internal.config.sysui.SystemUiDeviceConfigFlags; import com.android.keyguard.KeyguardUpdateMonitor; import com.android.systemui.Dependency; +import com.android.systemui.DumpController; +import com.android.systemui.Dumpable; import com.android.systemui.ScreenDecorations; import com.android.systemui.SysUiServiceProvider; import com.android.systemui.shared.system.QuickStepContract; import com.android.systemui.statusbar.phone.NavigationModeController; +import java.io.FileDescriptor; +import java.io.PrintWriter; import java.util.EnumMap; import java.util.Map; import java.util.concurrent.TimeUnit; @@ -46,11 +49,11 @@ import java.util.function.Supplier; * Controls when visual handles for Assistant gesture affordance should be shown or hidden using an * {@link AssistHandleBehavior}. */ -public final class AssistHandleBehaviorController implements AssistHandleCallbacks { +public final class AssistHandleBehaviorController implements AssistHandleCallbacks, Dumpable { private static final String TAG = "AssistHandleBehavior"; - private static final long DEFAULT_SHOWN_FREQUENCY_THRESHOLD_MS = TimeUnit.SECONDS.toMillis(10); + private static final long DEFAULT_SHOWN_FREQUENCY_THRESHOLD_MS = 0; private static final long DEFAULT_SHOW_AND_GO_DURATION_MS = TimeUnit.SECONDS.toMillis(3); /** @@ -63,7 +66,9 @@ public final class AssistHandleBehaviorController implements AssistHandleCallbac private final AssistUtils mAssistUtils; private final Handler mHandler; private final Runnable mHideHandles = this::hideHandles; + private final Runnable mShowAndGo = this::showAndGoInternal; private final Supplier<ScreenDecorations> mScreenDecorationsSupplier; + private final PhenotypeHelper mPhenotypeHelper; private final Map<AssistHandleBehavior, BehaviorController> mBehaviorMap = new EnumMap<>(AssistHandleBehavior.class); @@ -80,7 +85,9 @@ public final class AssistHandleBehaviorController implements AssistHandleCallbac this( context, assistUtils, - handler, () -> SysUiServiceProvider.getComponent(context, ScreenDecorations.class), + handler, + () -> SysUiServiceProvider.getComponent(context, ScreenDecorations.class), + new PhenotypeHelper(), /* testBehavior = */ null); } @@ -90,15 +97,18 @@ public final class AssistHandleBehaviorController implements AssistHandleCallbac AssistUtils assistUtils, Handler handler, Supplier<ScreenDecorations> screenDecorationsSupplier, + PhenotypeHelper phenotypeHelper, @Nullable BehaviorController testBehavior) { mContext = context; mAssistUtils = assistUtils; mHandler = handler; mScreenDecorationsSupplier = screenDecorationsSupplier; - + mPhenotypeHelper = phenotypeHelper; mBehaviorMap.put(AssistHandleBehavior.OFF, new AssistHandleOffBehavior()); mBehaviorMap.put(AssistHandleBehavior.LIKE_HOME, new AssistHandleLikeHomeBehavior()); - mBehaviorMap.put(AssistHandleBehavior.REMINDER_EXP, new AssistHandleReminderExpBehavior()); + mBehaviorMap.put( + AssistHandleBehavior.REMINDER_EXP, + new AssistHandleReminderExpBehavior(handler, phenotypeHelper)); if (testBehavior != null) { mBehaviorMap.put(AssistHandleBehavior.TEST, testBehavior); } @@ -107,38 +117,48 @@ public final class AssistHandleBehaviorController implements AssistHandleCallbac Dependency.get(NavigationModeController.class) .addListener(this::handleNavigationModeChange)); - setBehavior(DeviceConfig.getString( - DeviceConfig.NAMESPACE_SYSTEMUI, - SystemUiDeviceConfigFlags.ASSIST_HANDLES_BEHAVIOR_MODE, - DEFAULT_BEHAVIOR.toString())); - DeviceConfig.addOnPropertyChangedListener( - DeviceConfig.NAMESPACE_SYSTEMUI, + setBehavior(getBehaviorMode()); + mPhenotypeHelper.addOnPropertiesChangedListener( mHandler::post, - (namespace, name, value) -> { - if (SystemUiDeviceConfigFlags.ASSIST_HANDLES_BEHAVIOR_MODE.equals(name)) { - setBehavior(value); + (properties) -> { + if (properties.getKeyset().contains( + SystemUiDeviceConfigFlags.ASSIST_HANDLES_BEHAVIOR_MODE)) { + setBehavior(properties.getString( + SystemUiDeviceConfigFlags.ASSIST_HANDLES_BEHAVIOR_MODE, null)); } }); + Dependency.get(DumpController.class).addListener(this); } - @Override + @Override // AssistHandleCallbacks public void hide() { - mHandler.removeCallbacks(mHideHandles); + clearPendingCommands(); mHandler.post(mHideHandles); } - @Override + @Override // AssistHandleCallbacks public void showAndGo() { - mHandler.removeCallbacks(mHideHandles); - mHandler.post(() -> { - maybeShowHandles(/* ignoreThreshold = */ false); - mHandler.postDelayed(mHideHandles, getShowAndGoDuration()); - }); + clearPendingCommands(); + mHandler.post(mShowAndGo); + } + + private void showAndGoInternal() { + maybeShowHandles(/* ignoreThreshold = */ false); + mHandler.postDelayed(mHideHandles, getShowAndGoDuration()); + } + + @Override // AssistHandleCallbacks + public void showAndGoDelayed(long delayMs, boolean hideIfShowing) { + clearPendingCommands(); + if (hideIfShowing) { + mHandler.post(mHideHandles); + } + mHandler.postDelayed(mShowAndGo, delayMs); } - @Override + @Override // AssistHandleCallbacks public void showAndStay() { - mHandler.removeCallbacks(mHideHandles); + clearPendingCommands(); mHandler.post(() -> maybeShowHandles(/* ignoreThreshold = */ true)); } @@ -178,37 +198,41 @@ public final class AssistHandleBehaviorController implements AssistHandleCallbac private boolean handlesUnblocked(boolean ignoreThreshold) { long timeSinceHidden = SystemClock.elapsedRealtime() - mHandlesLastHiddenAt; - boolean notThrottled = ignoreThreshold || timeSinceHidden > getShownFrequencyThreshold(); + boolean notThrottled = ignoreThreshold || timeSinceHidden >= getShownFrequencyThreshold(); ComponentName assistantComponent = mAssistUtils.getAssistComponentForUser(KeyguardUpdateMonitor.getCurrentUser()); return notThrottled && assistantComponent != null; } private long getShownFrequencyThreshold() { - return DeviceConfig.getLong( - DeviceConfig.NAMESPACE_SYSTEMUI, + return mPhenotypeHelper.getLong( SystemUiDeviceConfigFlags.ASSIST_HANDLES_SHOWN_FREQUENCY_THRESHOLD_MS, DEFAULT_SHOWN_FREQUENCY_THRESHOLD_MS); } private long getShowAndGoDuration() { - return DeviceConfig.getLong( - DeviceConfig.NAMESPACE_SYSTEMUI, + return mPhenotypeHelper.getLong( SystemUiDeviceConfigFlags.ASSIST_HANDLES_SHOW_AND_GO_DURATION_MS, DEFAULT_SHOW_AND_GO_DURATION_MS); } + private String getBehaviorMode() { + return mPhenotypeHelper.getString( + SystemUiDeviceConfigFlags.ASSIST_HANDLES_BEHAVIOR_MODE, + DEFAULT_BEHAVIOR.toString()); + } + private void maybeShowHandles(boolean ignoreThreshold) { if (mHandlesShowing) { return; } if (handlesUnblocked(ignoreThreshold)) { - mHandlesShowing = true; ScreenDecorations screenDecorations = mScreenDecorationsSupplier.get(); if (screenDecorations == null) { Log.w(TAG, "Couldn't show handles, ScreenDecorations unavailable"); } else { + mHandlesShowing = true; screenDecorations.setAssistHintVisible(true); } } @@ -219,12 +243,12 @@ public final class AssistHandleBehaviorController implements AssistHandleCallbac return; } - mHandlesShowing = false; - mHandlesLastHiddenAt = SystemClock.elapsedRealtime(); ScreenDecorations screenDecorations = mScreenDecorationsSupplier.get(); if (screenDecorations == null) { Log.w(TAG, "Couldn't hide handles, ScreenDecorations unavailable"); } else { + mHandlesShowing = false; + mHandlesLastHiddenAt = SystemClock.elapsedRealtime(); screenDecorations.setAssistHintVisible(false); } } @@ -244,14 +268,46 @@ public final class AssistHandleBehaviorController implements AssistHandleCallbac } } + private void clearPendingCommands() { + mHandler.removeCallbacks(mHideHandles); + mHandler.removeCallbacks(mShowAndGo); + } + @VisibleForTesting void setInGesturalModeForTest(boolean inGesturalMode) { mInGesturalMode = inGesturalMode; } + @Override // Dumpable + public void dump(FileDescriptor fd, PrintWriter pw, String[] args) { + pw.println("Current AssistHandleBehaviorController State:"); + + pw.println(" mHandlesShowing=" + mHandlesShowing); + pw.println(" mHandlesLastHiddenAt=" + mHandlesLastHiddenAt); + pw.println(" mInGesturalMode=" + mInGesturalMode); + + pw.println(" Phenotype Flags:"); + pw.println(" " + + SystemUiDeviceConfigFlags.ASSIST_HANDLES_SHOW_AND_GO_DURATION_MS + + "=" + + getShowAndGoDuration()); + pw.println(" " + + SystemUiDeviceConfigFlags.ASSIST_HANDLES_SHOWN_FREQUENCY_THRESHOLD_MS + + "=" + + getShownFrequencyThreshold()); + pw.println(" " + + SystemUiDeviceConfigFlags.ASSIST_HANDLES_BEHAVIOR_MODE + + "=" + + getBehaviorMode()); + + pw.println(" mCurrentBehavior=" + mCurrentBehavior.toString()); + mBehaviorMap.get(mCurrentBehavior).dump(pw, " "); + } + interface BehaviorController { void onModeActivated(Context context, AssistHandleCallbacks callbacks); default void onModeDeactivated() {} default void onAssistantGesturePerformed() {} + default void dump(PrintWriter pw, String prefix) {} } } diff --git a/packages/SystemUI/src/com/android/systemui/assist/AssistHandleCallbacks.java b/packages/SystemUI/src/com/android/systemui/assist/AssistHandleCallbacks.java index 0577d37217e2..3db861d57268 100644 --- a/packages/SystemUI/src/com/android/systemui/assist/AssistHandleCallbacks.java +++ b/packages/SystemUI/src/com/android/systemui/assist/AssistHandleCallbacks.java @@ -29,6 +29,13 @@ public interface AssistHandleCallbacks { */ void showAndGo(); + /** + * Same as show and go, but will not do anything until a delay has elapsed. + * + * Will be cancelled if another command is given during the delay. + */ + void showAndGoDelayed(long delayMs, boolean hideIfShowing); + /** Show the Assistant handles. */ void showAndStay(); } diff --git a/packages/SystemUI/src/com/android/systemui/assist/AssistHandleLikeHomeBehavior.java b/packages/SystemUI/src/com/android/systemui/assist/AssistHandleLikeHomeBehavior.java index 05e504c93b82..6cf2034e6c9b 100644 --- a/packages/SystemUI/src/com/android/systemui/assist/AssistHandleLikeHomeBehavior.java +++ b/packages/SystemUI/src/com/android/systemui/assist/AssistHandleLikeHomeBehavior.java @@ -26,6 +26,8 @@ import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.recents.OverviewProxyService; import com.android.systemui.shared.system.QuickStepContract; +import java.io.PrintWriter; + /** * Assistant Handle behavior that makes Assistant handles show/hide when the home handle is * shown/hidden, respectively. @@ -108,4 +110,12 @@ final class AssistHandleLikeHomeBehavior implements BehaviorController { mAssistHandleCallbacks.showAndStay(); } } + + @Override + public void dump(PrintWriter pw, String prefix) { + pw.println("Current AssistHandleLikeHomeBehavior State:"); + + pw.println(prefix + " mIsDozing=" + mIsDozing); + pw.println(prefix + " mIsHomeHandleHiding=" + mIsHomeHandleHiding); + } } diff --git a/packages/SystemUI/src/com/android/systemui/assist/AssistHandleReminderExpBehavior.java b/packages/SystemUI/src/com/android/systemui/assist/AssistHandleReminderExpBehavior.java index 4b6a6dcee91d..f9ddeaef3e86 100644 --- a/packages/SystemUI/src/com/android/systemui/assist/AssistHandleReminderExpBehavior.java +++ b/packages/SystemUI/src/com/android/systemui/assist/AssistHandleReminderExpBehavior.java @@ -17,10 +17,14 @@ package com.android.systemui.assist; import android.app.ActivityManager; +import android.content.BroadcastReceiver; import android.content.ComponentName; import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; +import android.content.pm.ResolveInfo; +import android.os.Handler; import android.os.SystemClock; -import android.provider.DeviceConfig; import android.provider.Settings; import androidx.annotation.Nullable; @@ -31,10 +35,15 @@ import com.android.systemui.assist.AssistHandleBehaviorController.BehaviorContro import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.recents.OverviewProxyService; import com.android.systemui.shared.system.ActivityManagerWrapper; +import com.android.systemui.shared.system.PackageManagerWrapper; import com.android.systemui.shared.system.QuickStepContract; import com.android.systemui.shared.system.TaskStackChangeListener; import com.android.systemui.statusbar.StatusBarState; +import java.io.PrintWriter; +import java.time.LocalDate; +import java.util.ArrayList; +import java.util.List; import java.util.concurrent.TimeUnit; /** @@ -46,8 +55,27 @@ final class AssistHandleReminderExpBehavior implements BehaviorController { private static final String LEARNING_TIME_ELAPSED_KEY = "reminder_exp_learning_time_elapsed"; private static final String LEARNING_EVENT_COUNT_KEY = "reminder_exp_learning_event_count"; - private static final long DEFAULT_LEARNING_TIME_MS = TimeUnit.DAYS.toMillis(3); - private static final int DEFAULT_LEARNING_COUNT = 3; + private static final String LEARNED_HINT_LAST_SHOWN_KEY = + "reminder_exp_learned_hint_last_shown"; + private static final long DEFAULT_LEARNING_TIME_MS = TimeUnit.DAYS.toMillis(10); + private static final int DEFAULT_LEARNING_COUNT = 10; + private static final long DEFAULT_SHOW_AND_GO_DELAYED_SHORT_DELAY_MS = 150; + private static final long DEFAULT_SHOW_AND_GO_DELAYED_LONG_DELAY_MS = + TimeUnit.SECONDS.toMillis(1); + private static final long DEFAULT_SHOW_AND_GO_DELAY_RESET_TIMEOUT_MS = + TimeUnit.SECONDS.toMillis(3); + private static final boolean DEFAULT_SUPPRESS_ON_LOCKSCREEN = false; + private static final boolean DEFAULT_SUPPRESS_ON_LAUNCHER = false; + private static final boolean DEFAULT_SUPPRESS_ON_APPS = true; + private static final boolean DEFAULT_SHOW_WHEN_TAUGHT = false; + + private static final String[] DEFAULT_HOME_CHANGE_ACTIONS = new String[] { + PackageManagerWrapper.ACTION_PREFERRED_ACTIVITY_CHANGED, + Intent.ACTION_BOOT_COMPLETED, + Intent.ACTION_PACKAGE_ADDED, + Intent.ACTION_PACKAGE_CHANGED, + Intent.ACTION_PACKAGE_REMOVED + }; private final StatusBarStateController.StateListener mStatusBarStateListener = new StatusBarStateController.StateListener() { @@ -64,13 +92,13 @@ final class AssistHandleReminderExpBehavior implements BehaviorController { private final TaskStackChangeListener mTaskStackChangeListener = new TaskStackChangeListener() { @Override - public void onTaskMovedToFront(int taskId) { - handleTaskStackTopChanged(taskId); + public void onTaskMovedToFront(ActivityManager.RunningTaskInfo taskInfo) { + handleTaskStackTopChanged(taskInfo.taskId, taskInfo.topActivity); } @Override public void onTaskCreated(int taskId, ComponentName componentName) { - handleTaskStackTopChanged(taskId); + handleTaskStackTopChanged(taskId, componentName); } }; private final OverviewProxyService.OverviewProxyListener mOverviewProxyListener = @@ -85,7 +113,17 @@ final class AssistHandleReminderExpBehavior implements BehaviorController { handleSystemUiStateChanged(sysuiStateFlags); } }; + private final BroadcastReceiver mDefaultHomeBroadcastReceiver = new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + mDefaultHome = getCurrentDefaultHome(); + } + }; + private final IntentFilter mDefaultHomeIntentFilter; + private final Runnable mResetConsecutiveTaskSwitches = this::resetConsecutiveTaskSwitches; + private final Handler mHandler; + private final PhenotypeHelper mPhenotypeHelper; private final StatusBarStateController mStatusBarStateController; private final ActivityManagerWrapper mActivityManagerWrapper; private final OverviewProxyService mOverviewProxyService; @@ -94,6 +132,8 @@ final class AssistHandleReminderExpBehavior implements BehaviorController { private boolean mIsDozing; private int mRunningTaskId; private boolean mIsNavBarHidden; + private boolean mIsLauncherShowing; + private int mConsecutiveTaskSwitches; /** Whether user has learned the gesture. */ private boolean mIsLearned; @@ -102,20 +142,31 @@ final class AssistHandleReminderExpBehavior implements BehaviorController { private long mLearningTimeElapsed; /** Number of successful Assistant invocations while in this behavior. */ private int mLearningCount; + private long mLearnedHintLastShownEpochDay; @Nullable private Context mContext; @Nullable private AssistHandleCallbacks mAssistHandleCallbacks; + @Nullable private ComponentName mDefaultHome; - AssistHandleReminderExpBehavior() { + AssistHandleReminderExpBehavior(Handler handler, PhenotypeHelper phenotypeHelper) { + mHandler = handler; + mPhenotypeHelper = phenotypeHelper; mStatusBarStateController = Dependency.get(StatusBarStateController.class); mActivityManagerWrapper = ActivityManagerWrapper.getInstance(); mOverviewProxyService = Dependency.get(OverviewProxyService.class); + mDefaultHomeIntentFilter = new IntentFilter(); + for (String action : DEFAULT_HOME_CHANGE_ACTIONS) { + mDefaultHomeIntentFilter.addAction(action); + } } @Override public void onModeActivated(Context context, AssistHandleCallbacks callbacks) { mContext = context; mAssistHandleCallbacks = callbacks; + mConsecutiveTaskSwitches = 0; + mDefaultHome = getCurrentDefaultHome(); + context.registerReceiver(mDefaultHomeBroadcastReceiver, mDefaultHomeIntentFilter); mOnLockscreen = onLockscreen(mStatusBarStateController.getState()); mIsDozing = mStatusBarStateController.isDozing(); mStatusBarStateController.addCallback(mStatusBarStateListener); @@ -128,6 +179,8 @@ final class AssistHandleReminderExpBehavior implements BehaviorController { context.getContentResolver(), LEARNING_TIME_ELAPSED_KEY, /* default = */ 0); mLearningCount = Settings.Secure.getInt( context.getContentResolver(), LEARNING_EVENT_COUNT_KEY, /* default = */ 0); + mLearnedHintLastShownEpochDay = Settings.Secure.getLong( + context.getContentResolver(), LEARNED_HINT_LAST_SHOWN_KEY, /* default = */ 0); mLastLearningTimestamp = SystemClock.uptimeMillis(); callbackForCurrentState(/* justUnlocked = */ false); @@ -137,10 +190,10 @@ final class AssistHandleReminderExpBehavior implements BehaviorController { public void onModeDeactivated() { mAssistHandleCallbacks = null; if (mContext != null) { - Settings.Secure.putLong( - mContext.getContentResolver(), LEARNING_TIME_ELAPSED_KEY, mLearningTimeElapsed); - Settings.Secure.putInt( - mContext.getContentResolver(), LEARNING_EVENT_COUNT_KEY, mLearningCount); + mContext.unregisterReceiver(mDefaultHomeBroadcastReceiver); + Settings.Secure.putLong(mContext.getContentResolver(), LEARNING_TIME_ELAPSED_KEY, 0); + Settings.Secure.putInt(mContext.getContentResolver(), LEARNING_EVENT_COUNT_KEY, 0); + Settings.Secure.putLong(mContext.getContentResolver(), LEARNED_HINT_LAST_SHOWN_KEY, 0); mContext = null; } mStatusBarStateController.removeCallback(mStatusBarStateListener); @@ -162,12 +215,35 @@ final class AssistHandleReminderExpBehavior implements BehaviorController { return (sysuiStateFlags & QuickStepContract.SYSUI_STATE_NAV_BAR_HIDDEN) != 0; } + @Nullable + private static ComponentName getCurrentDefaultHome() { + List<ResolveInfo> homeActivities = new ArrayList<>(); + ComponentName defaultHome = + PackageManagerWrapper.getInstance().getHomeActivities(homeActivities); + if (defaultHome != null) { + return defaultHome; + } + + int topPriority = Integer.MIN_VALUE; + ComponentName topComponent = null; + for (ResolveInfo resolveInfo : homeActivities) { + if (resolveInfo.priority > topPriority) { + topComponent = resolveInfo.activityInfo.getComponentName(); + topPriority = resolveInfo.priority; + } else if (resolveInfo.priority == topPriority) { + topComponent = null; + } + } + return topComponent; + } + private void handleStatusBarStateChanged(int newState) { boolean onLockscreen = onLockscreen(newState); if (mOnLockscreen == onLockscreen) { return; } + resetConsecutiveTaskSwitches(); mOnLockscreen = onLockscreen; callbackForCurrentState(!onLockscreen); } @@ -177,16 +253,24 @@ final class AssistHandleReminderExpBehavior implements BehaviorController { return; } + resetConsecutiveTaskSwitches(); mIsDozing = isDozing; callbackForCurrentState(/* justUnlocked = */ false); } - private void handleTaskStackTopChanged(int taskId) { - if (mRunningTaskId == taskId) { + private void handleTaskStackTopChanged(int taskId, @Nullable ComponentName taskComponentName) { + if (mRunningTaskId == taskId || taskComponentName == null) { return; } mRunningTaskId = taskId; + mIsLauncherShowing = taskComponentName.equals(mDefaultHome); + if (mIsLauncherShowing) { + resetConsecutiveTaskSwitches(); + } else { + rescheduleConsecutiveTaskSwitchesReset(); + mConsecutiveTaskSwitches++; + } callbackForCurrentState(/* justUnlocked = */ false); } @@ -196,11 +280,13 @@ final class AssistHandleReminderExpBehavior implements BehaviorController { return; } + resetConsecutiveTaskSwitches(); mIsNavBarHidden = isNavBarHidden; callbackForCurrentState(/* justUnlocked = */ false); } private void handleOverviewShown() { + resetConsecutiveTaskSwitches(); callbackForCurrentState(/* justUnlocked = */ false); } @@ -224,10 +310,20 @@ final class AssistHandleReminderExpBehavior implements BehaviorController { return; } - if (mIsDozing || mIsNavBarHidden || mOnLockscreen) { + if (mIsDozing || mIsNavBarHidden || mOnLockscreen || !getShowWhenTaught()) { mAssistHandleCallbacks.hide(); } else if (justUnlocked) { - mAssistHandleCallbacks.showAndGo(); + long currentEpochDay = LocalDate.now().toEpochDay(); + if (mLearnedHintLastShownEpochDay < currentEpochDay) { + if (mContext != null) { + Settings.Secure.putLong( + mContext.getContentResolver(), + LEARNED_HINT_LAST_SHOWN_KEY, + currentEpochDay); + } + mLearnedHintLastShownEpochDay = currentEpochDay; + mAssistHandleCallbacks.showAndGo(); + } } } @@ -236,12 +332,28 @@ final class AssistHandleReminderExpBehavior implements BehaviorController { return; } - if (mIsDozing || mIsNavBarHidden) { + if (mIsDozing || mIsNavBarHidden || isSuppressed()) { mAssistHandleCallbacks.hide(); } else if (mOnLockscreen) { mAssistHandleCallbacks.showAndStay(); - } else { + } else if (mIsLauncherShowing) { mAssistHandleCallbacks.showAndGo(); + } else if (mConsecutiveTaskSwitches == 1) { + mAssistHandleCallbacks.showAndGoDelayed( + getShowAndGoDelayedShortDelayMs(), /* hideIfShowing = */ false); + } else { + mAssistHandleCallbacks.showAndGoDelayed( + getShowAndGoDelayedLongDelayMs(), /* hideIfShowing = */ true); + } + } + + private boolean isSuppressed() { + if (mOnLockscreen) { + return getSuppressOnLockscreen(); + } else if (mIsLauncherShowing) { + return getSuppressOnLauncher(); + } else { + return getSuppressOnApps(); } } @@ -260,17 +372,124 @@ final class AssistHandleReminderExpBehavior implements BehaviorController { mLearningCount >= getLearningCount() || mLearningTimeElapsed >= getLearningTimeMs(); } + private void resetConsecutiveTaskSwitches() { + mHandler.removeCallbacks(mResetConsecutiveTaskSwitches); + mConsecutiveTaskSwitches = 0; + } + + private void rescheduleConsecutiveTaskSwitchesReset() { + mHandler.removeCallbacks(mResetConsecutiveTaskSwitches); + mHandler.postDelayed(mResetConsecutiveTaskSwitches, getShowAndGoDelayResetTimeoutMs()); + } + private long getLearningTimeMs() { - return DeviceConfig.getLong( - DeviceConfig.NAMESPACE_SYSTEMUI, + return mPhenotypeHelper.getLong( SystemUiDeviceConfigFlags.ASSIST_HANDLES_LEARN_TIME_MS, DEFAULT_LEARNING_TIME_MS); } private int getLearningCount() { - return DeviceConfig.getInt( - DeviceConfig.NAMESPACE_SYSTEMUI, + return mPhenotypeHelper.getInt( SystemUiDeviceConfigFlags.ASSIST_HANDLES_LEARN_COUNT, DEFAULT_LEARNING_COUNT); } + + private long getShowAndGoDelayedShortDelayMs() { + return mPhenotypeHelper.getLong( + SystemUiDeviceConfigFlags.ASSIST_HANDLES_SHOW_AND_GO_DELAYED_SHORT_DELAY_MS, + DEFAULT_SHOW_AND_GO_DELAYED_SHORT_DELAY_MS); + } + + private long getShowAndGoDelayedLongDelayMs() { + return mPhenotypeHelper.getLong( + SystemUiDeviceConfigFlags.ASSIST_HANDLES_SHOW_AND_GO_DELAYED_LONG_DELAY_MS, + DEFAULT_SHOW_AND_GO_DELAYED_LONG_DELAY_MS); + } + + private long getShowAndGoDelayResetTimeoutMs() { + return mPhenotypeHelper.getLong( + SystemUiDeviceConfigFlags.ASSIST_HANDLES_SHOW_AND_GO_DELAY_RESET_TIMEOUT_MS, + DEFAULT_SHOW_AND_GO_DELAY_RESET_TIMEOUT_MS); + } + + private boolean getSuppressOnLockscreen() { + return mPhenotypeHelper.getBoolean( + SystemUiDeviceConfigFlags.ASSIST_HANDLES_SUPPRESS_ON_LOCKSCREEN, + DEFAULT_SUPPRESS_ON_LOCKSCREEN); + } + + private boolean getSuppressOnLauncher() { + return mPhenotypeHelper.getBoolean( + SystemUiDeviceConfigFlags.ASSIST_HANDLES_SUPPRESS_ON_LAUNCHER, + DEFAULT_SUPPRESS_ON_LAUNCHER); + } + + private boolean getSuppressOnApps() { + return mPhenotypeHelper.getBoolean( + SystemUiDeviceConfigFlags.ASSIST_HANDLES_SUPPRESS_ON_APPS, + DEFAULT_SUPPRESS_ON_APPS); + } + + private boolean getShowWhenTaught() { + return mPhenotypeHelper.getBoolean( + SystemUiDeviceConfigFlags.ASSIST_HANDLES_SHOW_WHEN_TAUGHT, + DEFAULT_SHOW_WHEN_TAUGHT); + } + + @Override + public void dump(PrintWriter pw, String prefix) { + pw.println(prefix + "Current AssistHandleReminderExpBehavior State:"); + pw.println(prefix + " mOnLockscreen=" + mOnLockscreen); + pw.println(prefix + " mIsDozing=" + mIsDozing); + pw.println(prefix + " mRunningTaskId=" + mRunningTaskId); + pw.println(prefix + " mDefaultHome=" + mDefaultHome); + pw.println(prefix + " mIsNavBarHidden=" + mIsNavBarHidden); + pw.println(prefix + " mIsLauncherShowing=" + mIsLauncherShowing); + pw.println(prefix + " mConsecutiveTaskSwitches=" + mConsecutiveTaskSwitches); + pw.println(prefix + " mIsLearned=" + mIsLearned); + pw.println(prefix + " mLastLearningTimestamp=" + mLastLearningTimestamp); + pw.println(prefix + " mLearningTimeElapsed=" + mLearningTimeElapsed); + pw.println(prefix + " mLearningCount=" + mLearningCount); + pw.println(prefix + " mLearnedHintLastShownEpochDay=" + mLearnedHintLastShownEpochDay); + pw.println( + prefix + " mAssistHandleCallbacks present: " + (mAssistHandleCallbacks != null)); + + pw.println(prefix + " Phenotype Flags:"); + pw.println(prefix + " " + + SystemUiDeviceConfigFlags.ASSIST_HANDLES_LEARN_TIME_MS + + "=" + + getLearningTimeMs()); + pw.println(prefix + " " + + SystemUiDeviceConfigFlags.ASSIST_HANDLES_LEARN_COUNT + + "=" + + getLearningCount()); + pw.println(prefix + " " + + SystemUiDeviceConfigFlags.ASSIST_HANDLES_SHOW_AND_GO_DELAYED_SHORT_DELAY_MS + + "=" + + getShowAndGoDelayedShortDelayMs()); + pw.println(prefix + " " + + SystemUiDeviceConfigFlags.ASSIST_HANDLES_SHOW_AND_GO_DELAYED_LONG_DELAY_MS + + "=" + + getShowAndGoDelayedLongDelayMs()); + pw.println(prefix + " " + + SystemUiDeviceConfigFlags.ASSIST_HANDLES_SHOW_AND_GO_DELAY_RESET_TIMEOUT_MS + + "=" + + getShowAndGoDelayResetTimeoutMs()); + pw.println(prefix + " " + + SystemUiDeviceConfigFlags.ASSIST_HANDLES_SUPPRESS_ON_LOCKSCREEN + + "=" + + getSuppressOnLockscreen()); + pw.println(prefix + " " + + SystemUiDeviceConfigFlags.ASSIST_HANDLES_SUPPRESS_ON_LAUNCHER + + "=" + + getSuppressOnLauncher()); + pw.println(prefix + " " + + SystemUiDeviceConfigFlags.ASSIST_HANDLES_SUPPRESS_ON_APPS + + "=" + + getSuppressOnApps()); + pw.println(prefix + " " + + SystemUiDeviceConfigFlags.ASSIST_HANDLES_SHOW_WHEN_TAUGHT + + "=" + + getShowWhenTaught()); + } } diff --git a/packages/SystemUI/src/com/android/systemui/assist/PhenotypeHelper.java b/packages/SystemUI/src/com/android/systemui/assist/PhenotypeHelper.java new file mode 100644 index 000000000000..61395f158aea --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/assist/PhenotypeHelper.java @@ -0,0 +1,51 @@ +/* + * Copyright (C) 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.assist; + +import android.provider.DeviceConfig; + +import androidx.annotation.Nullable; + +import java.util.concurrent.Executor; + +class PhenotypeHelper { + + PhenotypeHelper() {} + + long getLong(String name, long defaultValue) { + return DeviceConfig.getLong(DeviceConfig.NAMESPACE_SYSTEMUI, name, defaultValue); + } + + int getInt(String name, int defaultValue) { + return DeviceConfig.getInt(DeviceConfig.NAMESPACE_SYSTEMUI, name, defaultValue); + } + + @Nullable + String getString(String name, @Nullable String defaultValue) { + return DeviceConfig.getString(DeviceConfig.NAMESPACE_SYSTEMUI, name, defaultValue); + } + + boolean getBoolean(String name, boolean defaultValue) { + return DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_SYSTEMUI, name, defaultValue); + } + + void addOnPropertiesChangedListener( + Executor executor, DeviceConfig.OnPropertiesChangedListener listener) { + DeviceConfig.addOnPropertiesChangedListener( + DeviceConfig.NAMESPACE_SYSTEMUI, executor, listener); + } +} diff --git a/packages/SystemUI/src/com/android/systemui/assist/PhoneStateMonitor.java b/packages/SystemUI/src/com/android/systemui/assist/PhoneStateMonitor.java index 1fd3089aaa41..e73dc4a57bd7 100644 --- a/packages/SystemUI/src/com/android/systemui/assist/PhoneStateMonitor.java +++ b/packages/SystemUI/src/com/android/systemui/assist/PhoneStateMonitor.java @@ -16,8 +16,6 @@ package com.android.systemui.assist; -import static com.android.systemui.shared.system.PackageManagerWrapper.ACTION_PREFERRED_ACTIVITY_CHANGED; - import android.app.ActivityManager; import android.app.KeyguardManager; import android.content.BroadcastReceiver; @@ -25,6 +23,7 @@ import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; +import android.content.pm.ResolveInfo; import androidx.annotation.Nullable; @@ -38,6 +37,7 @@ import com.android.systemui.statusbar.StatusBarState; import com.android.systemui.statusbar.phone.StatusBar; import java.util.ArrayList; +import java.util.List; /** Class to monitor and report the state of the phone. */ final class PhoneStateMonitor { @@ -53,6 +53,14 @@ final class PhoneStateMonitor { private static final int PHONE_STATE_APP_IMMERSIVE = 9; private static final int PHONE_STATE_APP_FULLSCREEN = 10; + private static final String[] DEFAULT_HOME_CHANGE_ACTIONS = new String[] { + PackageManagerWrapper.ACTION_PREFERRED_ACTIVITY_CHANGED, + Intent.ACTION_BOOT_COMPLETED, + Intent.ACTION_PACKAGE_ADDED, + Intent.ACTION_PACKAGE_CHANGED, + Intent.ACTION_PACKAGE_REMOVED + }; + private final Context mContext; private final StatusBarStateController mStatusBarStateController; @@ -64,14 +72,17 @@ final class PhoneStateMonitor { mStatusBarStateController = Dependency.get(StatusBarStateController.class); ActivityManagerWrapper activityManagerWrapper = ActivityManagerWrapper.getInstance(); - mDefaultHome = PackageManagerWrapper.getInstance().getHomeActivities(new ArrayList<>()); + mDefaultHome = getCurrentDefaultHome(); + IntentFilter intentFilter = new IntentFilter(); + for (String action : DEFAULT_HOME_CHANGE_ACTIONS) { + intentFilter.addAction(action); + } mContext.registerReceiver(new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { - mDefaultHome = - PackageManagerWrapper.getInstance().getHomeActivities(new ArrayList<>()); + mDefaultHome = getCurrentDefaultHome(); } - }, new IntentFilter(ACTION_PREFERRED_ACTIVITY_CHANGED)); + }, intentFilter); mLauncherShowing = isLauncherShowing(activityManagerWrapper.getRunningTask()); activityManagerWrapper.registerTaskStackListener(new TaskStackChangeListener() { @Override @@ -93,6 +104,28 @@ final class PhoneStateMonitor { return phoneState; } + @Nullable + private static ComponentName getCurrentDefaultHome() { + List<ResolveInfo> homeActivities = new ArrayList<>(); + ComponentName defaultHome = + PackageManagerWrapper.getInstance().getHomeActivities(homeActivities); + if (defaultHome != null) { + return defaultHome; + } + + int topPriority = Integer.MIN_VALUE; + ComponentName topComponent = null; + for (ResolveInfo resolveInfo : homeActivities) { + if (resolveInfo.priority > topPriority) { + topComponent = resolveInfo.activityInfo.getComponentName(); + topPriority = resolveInfo.priority; + } else if (resolveInfo.priority == topPriority) { + topComponent = null; + } + } + return topComponent; + } + private int getPhoneLockscreenState() { if (isDozing()) { return PHONE_STATE_AOD1; diff --git a/packages/SystemUI/src/com/android/systemui/assist/ui/CircularCornerPathRenderer.java b/packages/SystemUI/src/com/android/systemui/assist/ui/CircularCornerPathRenderer.java index 162e09e4d23d..00346a36d3f1 100644 --- a/packages/SystemUI/src/com/android/systemui/assist/ui/CircularCornerPathRenderer.java +++ b/packages/SystemUI/src/com/android/systemui/assist/ui/CircularCornerPathRenderer.java @@ -53,11 +53,12 @@ public final class CircularCornerPathRenderer extends CornerPathRenderer { break; case TOP_RIGHT: mPath.moveTo(mWidth, mCornerRadiusTop); - mPath.arcTo(mWidth - mCornerRadiusTop, 0, mWidth, mCornerRadiusTop, 0, -90, true); + mPath.arcTo(mWidth - mCornerRadiusTop * 2, 0, mWidth, mCornerRadiusTop * 2, 0, -90, + true); break; case TOP_LEFT: mPath.moveTo(mCornerRadiusTop, 0); - mPath.arcTo(0, 0, mCornerRadiusTop, mCornerRadiusTop, 270, -90, true); + mPath.arcTo(0, 0, mCornerRadiusTop * 2, mCornerRadiusTop * 2, 270, -90, true); break; } return mPath; diff --git a/packages/SystemUI/src/com/android/systemui/assist/ui/DefaultUiController.java b/packages/SystemUI/src/com/android/systemui/assist/ui/DefaultUiController.java index 95c136f062b5..662de3a5b5f5 100644 --- a/packages/SystemUI/src/com/android/systemui/assist/ui/DefaultUiController.java +++ b/packages/SystemUI/src/com/android/systemui/assist/ui/DefaultUiController.java @@ -21,7 +21,6 @@ import static com.android.systemui.assist.AssistManager.DISMISS_REASON_INVOCATIO import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.animation.ValueAnimator; -import android.annotation.ColorInt; import android.content.Context; import android.graphics.PixelFormat; import android.metrics.LogMaker; @@ -52,6 +51,7 @@ public class DefaultUiController implements AssistManager.UiController { private static final long ANIM_DURATION_MS = 200; protected final FrameLayout mRoot; + protected InvocationLightsView mInvocationLightsView; private final WindowManager mWindowManager; private final WindowManager.LayoutParams mLayoutParams; @@ -62,7 +62,6 @@ public class DefaultUiController implements AssistManager.UiController { private float mLastInvocationProgress = 0; private ValueAnimator mInvocationAnimator = new ValueAnimator(); - private InvocationLightsView mInvocationLightsView; public DefaultUiController(Context context) { mRoot = new FrameLayout(context); @@ -129,14 +128,6 @@ public class DefaultUiController implements AssistManager.UiController { updateAssistHandleVisibility(); } - /** - * Sets the colors of the four invocation lights, from left to right. - */ - public void setInvocationColors(@ColorInt int color1, @ColorInt int color2, - @ColorInt int color3, @ColorInt int color4) { - mInvocationLightsView.setColors(color1, color2, color3, color4); - } - protected static void logInvocationProgressMetrics( int type, float progress, boolean invocationWasInProgress) { // Logs assistant invocation start. diff --git a/packages/SystemUI/src/com/android/systemui/assist/ui/InvocationLightsView.java b/packages/SystemUI/src/com/android/systemui/assist/ui/InvocationLightsView.java index de1d7c8c0a04..8ef7b6c564e9 100644 --- a/packages/SystemUI/src/com/android/systemui/assist/ui/InvocationLightsView.java +++ b/packages/SystemUI/src/com/android/systemui/assist/ui/InvocationLightsView.java @@ -16,24 +16,34 @@ package com.android.systemui.assist.ui; +import android.animation.ArgbEvaluator; import android.annotation.ColorInt; +import android.annotation.Nullable; import android.content.Context; import android.graphics.Canvas; +import android.graphics.Color; import android.graphics.Paint; import android.graphics.Path; import android.util.AttributeSet; import android.util.Log; import android.util.MathUtils; +import android.view.ContextThemeWrapper; import android.view.View; +import com.android.settingslib.Utils; +import com.android.systemui.Dependency; import com.android.systemui.R; +import com.android.systemui.statusbar.NavigationBarController; +import com.android.systemui.statusbar.phone.NavigationBarFragment; +import com.android.systemui.statusbar.phone.NavigationBarTransitions; import java.util.ArrayList; /** * Shows lights at the bottom of the phone, marking the invocation progress. */ -public class InvocationLightsView extends View { +public class InvocationLightsView extends View + implements NavigationBarTransitions.DarkIntensityListener { private static final String TAG = "InvocationLightsView"; @@ -49,9 +59,16 @@ public class InvocationLightsView extends View { // allocation on each frame. private final Path mPath = new Path(); private final int mViewHeight; + private final int mStrokeWidth; + @ColorInt + private final int mLightColor; + @ColorInt + private final int mDarkColor; // Allocate variable for screen location lookup to avoid memory alloc onDraw() private int[] mScreenLocation = new int[2]; + private boolean mRegistered = false; + private boolean mUseNavBarColor = true; public InvocationLightsView(Context context) { this(context, null); @@ -69,26 +86,31 @@ public class InvocationLightsView extends View { int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); - int strokeWidth = DisplayUtils.convertDpToPx(LIGHT_HEIGHT_DP, context); - mPaint.setStrokeWidth(strokeWidth); + mStrokeWidth = DisplayUtils.convertDpToPx(LIGHT_HEIGHT_DP, context); + mPaint.setStrokeWidth(mStrokeWidth); mPaint.setStyle(Paint.Style.STROKE); mPaint.setStrokeJoin(Paint.Join.MITER); mPaint.setAntiAlias(true); - int cornerRadiusBottom = DisplayUtils.getCornerRadiusBottom(context); - int cornerRadiusTop = DisplayUtils.getCornerRadiusTop(context); + int displayWidth = DisplayUtils.getWidth(context); int displayHeight = DisplayUtils.getHeight(context); - CircularCornerPathRenderer cornerPathRenderer = new CircularCornerPathRenderer( - cornerRadiusBottom, cornerRadiusTop, displayWidth, displayHeight); - mGuide = new PerimeterPathGuide(context, cornerPathRenderer, - strokeWidth / 2, displayWidth, displayHeight); + mGuide = new PerimeterPathGuide(context, createCornerPathRenderer(context), + mStrokeWidth / 2, displayWidth, displayHeight); + int cornerRadiusBottom = DisplayUtils.getCornerRadiusBottom(context); + int cornerRadiusTop = DisplayUtils.getCornerRadiusTop(context); mViewHeight = Math.max(cornerRadiusBottom, cornerRadiusTop); - @ColorInt int lightColor = getResources().getColor(R.color.default_invocation_lights_color); + final int dualToneDarkTheme = Utils.getThemeAttr(mContext, R.attr.darkIconTheme); + final int dualToneLightTheme = Utils.getThemeAttr(mContext, R.attr.lightIconTheme); + Context lightContext = new ContextThemeWrapper(mContext, dualToneLightTheme); + Context darkContext = new ContextThemeWrapper(mContext, dualToneDarkTheme); + mLightColor = Utils.getColorAttrDefaultColor(lightContext, R.attr.singleToneColor); + mDarkColor = Utils.getColorAttrDefaultColor(darkContext, R.attr.singleToneColor); + for (int i = 0; i < 4; i++) { - mAssistInvocationLights.add(new EdgeLight(lightColor, 0, 0)); + mAssistInvocationLights.add(new EdgeLight(Color.TRANSPARENT, 0, 0)); } } @@ -100,6 +122,8 @@ public class InvocationLightsView extends View { if (progress == 0) { setVisibility(View.GONE); } else { + attemptRegisterNavBarListener(); + float cornerLengthNormalized = mGuide.getRegionWidth(PerimeterPathGuide.Region.BOTTOM_LEFT); float arcLengthNormalized = cornerLengthNormalized * MINIMUM_CORNER_RATIO; @@ -131,6 +155,21 @@ public class InvocationLightsView extends View { for (EdgeLight light : mAssistInvocationLights) { light.setLength(0); } + attemptUnregisterNavBarListener(); + } + + /** + * Sets all invocation lights to a single color. If color is null, uses the navigation bar + * color (updated when the nav bar color changes). + */ + public void setColors(@Nullable @ColorInt Integer color) { + if (color == null) { + mUseNavBarColor = true; + mPaint.setStrokeCap(Paint.Cap.BUTT); + attemptRegisterNavBarListener(); + } else { + setColors(color, color, color, color); + } } /** @@ -138,12 +177,25 @@ public class InvocationLightsView extends View { */ public void setColors(@ColorInt int color1, @ColorInt int color2, @ColorInt int color3, @ColorInt int color4) { + mUseNavBarColor = false; + attemptUnregisterNavBarListener(); mAssistInvocationLights.get(0).setColor(color1); mAssistInvocationLights.get(1).setColor(color2); mAssistInvocationLights.get(2).setColor(color3); mAssistInvocationLights.get(3).setColor(color4); } + /** + * Reacts to changes in the navigation bar color + * + * @param darkIntensity 0 is the lightest color, 1 is the darkest. + */ + @Override // NavigationBarTransitions.DarkIntensityListener + public void onDarkIntensity(float darkIntensity) { + updateDarkness(darkIntensity); + } + + @Override protected void onFinishInflate() { getLayoutParams().height = mViewHeight; @@ -166,15 +218,19 @@ public class InvocationLightsView extends View { getLocationOnScreen(mScreenLocation); canvas.translate(-mScreenLocation[0], -mScreenLocation[1]); - // if the lights are different colors, the inner ones need to be drawn last and with a - // square cap so that the join between lights is straight - mPaint.setStrokeCap(Paint.Cap.ROUND); - renderLight(mAssistInvocationLights.get(0), canvas); - renderLight(mAssistInvocationLights.get(3), canvas); + if (mUseNavBarColor) { + for (EdgeLight light : mAssistInvocationLights) { + renderLight(light, canvas); + } + } else { + mPaint.setStrokeCap(Paint.Cap.ROUND); + renderLight(mAssistInvocationLights.get(0), canvas); + renderLight(mAssistInvocationLights.get(3), canvas); - mPaint.setStrokeCap(Paint.Cap.SQUARE); - renderLight(mAssistInvocationLights.get(1), canvas); - renderLight(mAssistInvocationLights.get(2), canvas); + mPaint.setStrokeCap(Paint.Cap.BUTT); + renderLight(mAssistInvocationLights.get(1), canvas); + renderLight(mAssistInvocationLights.get(2), canvas); + } } protected void setLight(int index, float offset, float length) { @@ -185,10 +241,71 @@ public class InvocationLightsView extends View { mAssistInvocationLights.get(index).setLength(length); } + /** + * Returns CornerPathRenderer to be used for rendering invocation lights. + * + * To render corners that aren't circular, override this method in a subclass. + */ + protected CornerPathRenderer createCornerPathRenderer(Context context) { + int displayWidth = DisplayUtils.getWidth(context); + int displayHeight = DisplayUtils.getHeight(context); + int cornerRadiusBottom = DisplayUtils.getCornerRadiusBottom(context); + int cornerRadiusTop = DisplayUtils.getCornerRadiusTop(context); + return new CircularCornerPathRenderer( + cornerRadiusBottom, cornerRadiusTop, displayWidth, displayHeight); + } + /** + * Receives an intensity from 0 (lightest) to 1 (darkest) and sets the handle color + * appropriately. Intention is to match the home handle color. + */ + protected void updateDarkness(float darkIntensity) { + if (mUseNavBarColor) { + @ColorInt int invocationColor = (int) ArgbEvaluator.getInstance().evaluate( + darkIntensity, mLightColor, mDarkColor); + for (EdgeLight light : mAssistInvocationLights) { + light.setColor(invocationColor); + } + invalidate(); + } + } + private void renderLight(EdgeLight light, Canvas canvas) { mGuide.strokeSegment(mPath, light.getOffset(), light.getOffset() + light.getLength()); mPaint.setColor(light.getColor()); canvas.drawPath(mPath, mPaint); } + private void attemptRegisterNavBarListener() { + if (!mRegistered) { + NavigationBarController controller = Dependency.get(NavigationBarController.class); + if (controller == null) { + return; + } + + NavigationBarFragment navBar = controller.getDefaultNavigationBarFragment(); + if (navBar == null) { + return; + } + + updateDarkness(navBar.getBarTransitions().addDarkIntensityListener(this)); + mRegistered = true; + } + } + + private void attemptUnregisterNavBarListener() { + if (mRegistered) { + NavigationBarController controller = Dependency.get(NavigationBarController.class); + if (controller == null) { + return; + } + + NavigationBarFragment navBar = controller.getDefaultNavigationBarFragment(); + if (navBar == null) { + return; + } + + navBar.getBarTransitions().removeDarkIntensityListener(this); + mRegistered = false; + } + } } diff --git a/packages/SystemUI/src/com/android/systemui/classifier/Classifier.java b/packages/SystemUI/src/com/android/systemui/classifier/Classifier.java index f8856ce15f83..ae7d142a9e45 100644 --- a/packages/SystemUI/src/com/android/systemui/classifier/Classifier.java +++ b/packages/SystemUI/src/com/android/systemui/classifier/Classifier.java @@ -16,9 +16,13 @@ package com.android.systemui.classifier; +import android.annotation.IntDef; import android.hardware.SensorEvent; import android.view.MotionEvent; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + /** * An abstract class for classifiers for touch and sensor events. */ @@ -34,6 +38,21 @@ public abstract class Classifier { public static final int BOUNCER_UNLOCK = 8; public static final int PULSE_EXPAND = 9; + @IntDef({ + QUICK_SETTINGS, + NOTIFICATION_DISMISS, + NOTIFICATION_DRAG_DOWN, + NOTIFICATION_DOUBLE_TAP, + UNLOCK, + LEFT_AFFORDANCE, + RIGHT_AFFORDANCE, + GENERIC, + BOUNCER_UNLOCK, + PULSE_EXPAND + }) + @Retention(RetentionPolicy.SOURCE) + public @interface InteractionType {} + /** * Contains all the information about touch events from which the classifier can query */ diff --git a/packages/SystemUI/src/com/android/systemui/classifier/FalsingManagerProxy.java b/packages/SystemUI/src/com/android/systemui/classifier/FalsingManagerProxy.java index 28454b007d41..3cc8ec9afbb2 100644 --- a/packages/SystemUI/src/com/android/systemui/classifier/FalsingManagerProxy.java +++ b/packages/SystemUI/src/com/android/systemui/classifier/FalsingManagerProxy.java @@ -16,31 +16,51 @@ package com.android.systemui.classifier; +import static com.android.internal.config.sysui.SystemUiDeviceConfigFlags.BRIGHTLINE_FALSING_MANAGER_ENABLED; +import static com.android.systemui.Dependency.MAIN_HANDLER_NAME; + import android.content.Context; import android.net.Uri; +import android.os.Handler; +import android.provider.DeviceConfig; import android.view.MotionEvent; +import com.android.internal.annotations.VisibleForTesting; +import com.android.systemui.Dependency; +import com.android.systemui.classifier.brightline.BrightLineFalsingManager; +import com.android.systemui.classifier.brightline.FalsingDataProvider; import com.android.systemui.plugins.FalsingManager; import com.android.systemui.plugins.FalsingPlugin; import com.android.systemui.plugins.PluginListener; import com.android.systemui.shared.plugins.PluginManager; +import com.android.systemui.util.AsyncSensorManager; import java.io.PrintWriter; import javax.inject.Inject; +import javax.inject.Named; +import javax.inject.Singleton; /** * Simple passthrough implementation of {@link FalsingManager} allowing plugins to swap in. * * {@link FalsingManagerImpl} is used when a Plugin is not loaded. */ +@Singleton public class FalsingManagerProxy implements FalsingManager { private FalsingManager mInternalFalsingManager; + private final Handler mMainHandler; @Inject - FalsingManagerProxy(Context context, PluginManager pluginManager) { - mInternalFalsingManager = new FalsingManagerImpl(context); + FalsingManagerProxy(Context context, PluginManager pluginManager, + @Named(MAIN_HANDLER_NAME) Handler handler) { + mMainHandler = handler; + DeviceConfig.addOnPropertiesChangedListener(DeviceConfig.NAMESPACE_SYSTEMUI, + command -> mMainHandler.post(command), + properties -> onDeviceConfigPropertiesChanged(context, properties.getNamespace()) + ); + setupFalsingManager(context); final PluginListener<FalsingPlugin> mPluginListener = new PluginListener<FalsingPlugin>() { public void onPluginConnected(FalsingPlugin plugin, Context context) { FalsingManager pluginFalsingManager = plugin.getFalsingManager(context); @@ -57,6 +77,40 @@ public class FalsingManagerProxy implements FalsingManager { pluginManager.addPluginListener(mPluginListener, FalsingPlugin.class); } + private void onDeviceConfigPropertiesChanged(Context context, String namespace) { + if (!DeviceConfig.NAMESPACE_SYSTEMUI.equals(namespace)) { + return; + } + + setupFalsingManager(context); + } + + /** + * Chooses the FalsingManager implementation. + */ + @VisibleForTesting + public void setupFalsingManager(Context context) { + boolean brightlineEnabled = DeviceConfig.getBoolean( + DeviceConfig.NAMESPACE_SYSTEMUI, BRIGHTLINE_FALSING_MANAGER_ENABLED, false); + if (!brightlineEnabled) { + mInternalFalsingManager = new FalsingManagerImpl(context); + } else { + mInternalFalsingManager = new BrightLineFalsingManager( + new FalsingDataProvider(context.getResources().getDisplayMetrics()), + Dependency.get(AsyncSensorManager.class) + ); + } + + } + + /** + * Returns the FalsingManager implementation in use. + */ + @VisibleForTesting + FalsingManager getInternalFalsingManager() { + return mInternalFalsingManager; + } + @Override public void onSucccessfulUnlock() { mInternalFalsingManager.onSucccessfulUnlock(); diff --git a/packages/SystemUI/src/com/android/systemui/classifier/brightline/BrightLineFalsingManager.java b/packages/SystemUI/src/com/android/systemui/classifier/brightline/BrightLineFalsingManager.java new file mode 100644 index 000000000000..19c46e40f604 --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/classifier/brightline/BrightLineFalsingManager.java @@ -0,0 +1,329 @@ +/* + * Copyright (C) 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.classifier.brightline; + +import android.hardware.Sensor; +import android.hardware.SensorEvent; +import android.hardware.SensorEventListener; +import android.hardware.SensorManager; +import android.net.Uri; +import android.util.Log; +import android.view.MotionEvent; + +import com.android.systemui.classifier.Classifier; +import com.android.systemui.plugins.FalsingManager; + +import java.io.PrintWriter; +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +/** + * FalsingManager designed to make clear why a touch was rejected. + */ +public class BrightLineFalsingManager implements FalsingManager { + + static final boolean DEBUG = false; + private static final String TAG = "FalsingManagerPlugin"; + + private final SensorManager mSensorManager; + private final FalsingDataProvider mDataProvider; + private boolean mSessionStarted; + + private final ExecutorService mBackgroundExecutor = Executors.newSingleThreadExecutor(); + + private final List<FalsingClassifier> mClassifiers; + + private SensorEventListener mSensorEventListener = new SensorEventListener() { + @Override + public synchronized void onSensorChanged(SensorEvent event) { + onSensorEvent(event); + } + + @Override + public void onAccuracyChanged(Sensor sensor, int accuracy) { + } + }; + + public BrightLineFalsingManager(FalsingDataProvider falsingDataProvider, + SensorManager sensorManager) { + mDataProvider = falsingDataProvider; + mSensorManager = sensorManager; + mClassifiers = new ArrayList<>(); + DistanceClassifier distanceClassifier = new DistanceClassifier(mDataProvider); + ProximityClassifier proximityClassifier = new ProximityClassifier(distanceClassifier, + mDataProvider); + mClassifiers.add(new PointerCountClassifier(mDataProvider)); + mClassifiers.add(new TypeClassifier(mDataProvider)); + mClassifiers.add(new DiagonalClassifier(mDataProvider)); + mClassifiers.add(distanceClassifier); + mClassifiers.add(proximityClassifier); + mClassifiers.add(new ZigZagClassifier(mDataProvider)); + } + + private void registerSensors() { + Sensor s = mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY); + if (s != null) { + // This can be expensive, and doesn't need to happen on the main thread. + mBackgroundExecutor.submit(() -> { + logDebug("registering sensor listener"); + mSensorManager.registerListener( + mSensorEventListener, s, SensorManager.SENSOR_DELAY_GAME); + }); + } + } + + + private void unregisterSensors() { + // This can be expensive, and doesn't need to happen on the main thread. + mBackgroundExecutor.submit(() -> { + logDebug("unregistering sensor listener"); + mSensorManager.unregisterListener(mSensorEventListener); + }); + } + + private void sessionStart() { + logDebug("Starting Session"); + mSessionStarted = true; + registerSensors(); + mClassifiers.forEach(FalsingClassifier::onSessionStarted); + } + + private void sessionEnd() { + if (mSessionStarted) { + logDebug("Ending Session"); + mSessionStarted = false; + unregisterSensors(); + mDataProvider.onSessionEnd(); + mClassifiers.forEach(FalsingClassifier::onSessionEnded); + } + } + + private void updateInteractionType(@Classifier.InteractionType int type) { + logDebug("InteractionType: " + type); + mClassifiers.forEach((classifier) -> classifier.setInteractionType(type)); + } + + @Override + public boolean isClassiferEnabled() { + return true; + } + + @Override + public boolean isFalseTouch() { + boolean r = mClassifiers.stream().anyMatch(falsingClassifier -> { + boolean result = falsingClassifier.isFalseTouch(); + if (result) { + logInfo(falsingClassifier.getClass().getName() + ": true"); + } else { + logDebug(falsingClassifier.getClass().getName() + ": false"); + } + return result; + }); + + logDebug("Is false touch? " + r); + + return r; + } + + @Override + public void onTouchEvent(MotionEvent motionEvent, int width, int height) { + // TODO: some of these classifiers might allow us to abort early, meaning we don't have to + // make these calls. + mDataProvider.onMotionEvent(motionEvent); + mClassifiers.forEach((classifier) -> classifier.onTouchEvent(motionEvent)); + } + + private void onSensorEvent(SensorEvent sensorEvent) { + // TODO: some of these classifiers might allow us to abort early, meaning we don't have to + // make these calls. + mClassifiers.forEach((classifier) -> classifier.onSensorEvent(sensorEvent)); + } + + @Override + public void onSucccessfulUnlock() { + } + + @Override + public void onNotificationActive() { + } + + @Override + public void setShowingAod(boolean showingAod) { + if (showingAod) { + sessionEnd(); + } else { + sessionStart(); + } + } + + @Override + public void onNotificatonStartDraggingDown() { + updateInteractionType(Classifier.NOTIFICATION_DRAG_DOWN); + + } + + @Override + public boolean isUnlockingDisabled() { + return false; + } + + + @Override + public void onNotificatonStopDraggingDown() { + } + + @Override + public void setNotificationExpanded() { + } + + @Override + public void onQsDown() { + updateInteractionType(Classifier.QUICK_SETTINGS); + } + + @Override + public void setQsExpanded(boolean b) { + } + + @Override + public boolean shouldEnforceBouncer() { + return false; + } + + @Override + public void onTrackingStarted(boolean secure) { + updateInteractionType(secure ? Classifier.BOUNCER_UNLOCK : Classifier.UNLOCK); + } + + @Override + public void onTrackingStopped() { + } + + @Override + public void onLeftAffordanceOn() { + } + + @Override + public void onCameraOn() { + } + + @Override + public void onAffordanceSwipingStarted(boolean rightCorner) { + updateInteractionType( + rightCorner ? Classifier.RIGHT_AFFORDANCE : Classifier.LEFT_AFFORDANCE); + } + + @Override + public void onAffordanceSwipingAborted() { + } + + @Override + public void onStartExpandingFromPulse() { + updateInteractionType(Classifier.PULSE_EXPAND); + } + + @Override + public void onExpansionFromPulseStopped() { + } + + @Override + public Uri reportRejectedTouch() { + return null; + } + + @Override + public void onScreenOnFromTouch() { + sessionStart(); + } + + @Override + public boolean isReportingEnabled() { + return false; + } + + @Override + public void onUnlockHintStarted() { + } + + @Override + public void onCameraHintStarted() { + } + + @Override + public void onLeftAffordanceHintStarted() { + } + + @Override + public void onScreenTurningOn() { + sessionStart(); + } + + @Override + public void onScreenOff() { + sessionEnd(); + } + + + @Override + public void onNotificatonStopDismissing() { + } + + @Override + public void onNotificationDismissed() { + } + + @Override + public void onNotificatonStartDismissing() { + updateInteractionType(Classifier.NOTIFICATION_DISMISS); + } + + @Override + public void onNotificationDoubleTap(boolean b, float v, float v1) { + } + + @Override + public void onBouncerShown() { + } + + @Override + public void onBouncerHidden() { + } + + @Override + public void dump(PrintWriter printWriter) { + } + + static void logDebug(String msg) { + logDebug(msg, null); + } + + static void logDebug(String msg, Throwable throwable) { + if (DEBUG) { + Log.d(TAG, msg, throwable); + } + } + + static void logInfo(String msg) { + Log.i(TAG, msg); + } + + static void logError(String msg) { + Log.e(TAG, msg); + } +} diff --git a/packages/SystemUI/src/com/android/systemui/classifier/brightline/DiagonalClassifier.java b/packages/SystemUI/src/com/android/systemui/classifier/brightline/DiagonalClassifier.java new file mode 100644 index 000000000000..730907e1fa9c --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/classifier/brightline/DiagonalClassifier.java @@ -0,0 +1,89 @@ +/* + * Copyright (C) 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.classifier.brightline; + +import static com.android.systemui.classifier.Classifier.LEFT_AFFORDANCE; +import static com.android.systemui.classifier.Classifier.RIGHT_AFFORDANCE; + +/** + * False on swipes that are too close to 45 degrees. + * + * Horizontal swipes may have a different threshold than vertical. + * + * This falser should not run on "affordance" swipes, as they will always be close to 45. + */ +class DiagonalClassifier extends FalsingClassifier { + + private static final float HORIZONTAL_ANGLE_RANGE = (float) (5f / 360f * Math.PI * 2f); + private static final float VERTICAL_ANGLE_RANGE = (float) (5f / 360f * Math.PI * 2f); + private static final float DIAGONAL = (float) (Math.PI / 4); // 45 deg + private static final float NINETY_DEG = (float) (Math.PI / 2); + private static final float ONE_HUNDRED_EIGHTY_DEG = (float) (Math.PI); + private static final float THREE_HUNDRED_SIXTY_DEG = (float) (2 * Math.PI); + + DiagonalClassifier(FalsingDataProvider dataProvider) { + super(dataProvider); + } + + @Override + boolean isFalseTouch() { + float angle = getAngle(); + + if (angle == Float.MAX_VALUE) { // Unknown angle + return false; + } + + if (getInteractionType() == LEFT_AFFORDANCE + || getInteractionType() == RIGHT_AFFORDANCE) { + return false; + } + + float minAngle = DIAGONAL - HORIZONTAL_ANGLE_RANGE; + float maxAngle = DIAGONAL + HORIZONTAL_ANGLE_RANGE; + if (isVertical()) { + minAngle = DIAGONAL - VERTICAL_ANGLE_RANGE; + maxAngle = DIAGONAL + VERTICAL_ANGLE_RANGE; + } + + return angleBetween(angle, minAngle, maxAngle) + || angleBetween(angle, minAngle + NINETY_DEG, maxAngle + NINETY_DEG) + || angleBetween(angle, minAngle - NINETY_DEG, maxAngle - NINETY_DEG) + || angleBetween(angle, minAngle + ONE_HUNDRED_EIGHTY_DEG, + maxAngle + ONE_HUNDRED_EIGHTY_DEG); + } + + private boolean angleBetween(float angle, float min, float max) { + // No need to normalize angle as it is guaranteed to be between 0 and 2*PI. + min = normalizeAngle(min); + max = normalizeAngle(max); + + if (min > max) { // Can happen when angle is close to 0. + return angle >= min || angle <= max; + } + + return angle >= min && angle <= max; + } + + private float normalizeAngle(float angle) { + if (angle < 0) { + return THREE_HUNDRED_SIXTY_DEG + (angle % THREE_HUNDRED_SIXTY_DEG); + } else if (angle > THREE_HUNDRED_SIXTY_DEG) { + return angle % THREE_HUNDRED_SIXTY_DEG; + } + return angle; + } +} diff --git a/packages/SystemUI/src/com/android/systemui/classifier/brightline/DistanceClassifier.java b/packages/SystemUI/src/com/android/systemui/classifier/brightline/DistanceClassifier.java new file mode 100644 index 000000000000..005ee12c4f61 --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/classifier/brightline/DistanceClassifier.java @@ -0,0 +1,158 @@ +/* + * Copyright (C) 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.classifier.brightline; + +import android.view.MotionEvent; +import android.view.VelocityTracker; + +import java.util.List; + +/** + * Ensure that the swipe + momentum covers a minimum distance. + */ +class DistanceClassifier extends FalsingClassifier { + + private static final float HORIZONTAL_FLING_THRESHOLD_DISTANCE_IN = 1; + private static final float VERTICAL_FLING_THRESHOLD_DISTANCE_IN = 1; + private static final float HORIZONTAL_SWIPE_THRESHOLD_DISTANCE_IN = 3; + private static final float VERTICAL_SWIPE_THRESHOLD_DISTANCE_IN = 3; + private static final float VELOCITY_TO_DISTANCE = 80f; + private static final float SCREEN_FRACTION_MIN_DISTANCE = 0.8f; + + private final float mVerticalFlingThresholdPx; + private final float mHorizontalFlingThresholdPx; + private final float mVerticalSwipeThresholdPx; + private final float mHorizontalSwipeThresholdPx; + + private boolean mDistanceDirty; + private DistanceVectors mCachedDistance; + + DistanceClassifier(FalsingDataProvider dataProvider) { + super(dataProvider); + + mHorizontalFlingThresholdPx = Math + .min(getWidthPixels() * SCREEN_FRACTION_MIN_DISTANCE, + HORIZONTAL_FLING_THRESHOLD_DISTANCE_IN * getXdpi()); + mVerticalFlingThresholdPx = Math + .min(getHeightPixels() * SCREEN_FRACTION_MIN_DISTANCE, + VERTICAL_FLING_THRESHOLD_DISTANCE_IN * getYdpi()); + mHorizontalSwipeThresholdPx = Math + .min(getWidthPixels() * SCREEN_FRACTION_MIN_DISTANCE, + HORIZONTAL_SWIPE_THRESHOLD_DISTANCE_IN * getXdpi()); + mVerticalSwipeThresholdPx = Math + .min(getHeightPixels() * SCREEN_FRACTION_MIN_DISTANCE, + VERTICAL_SWIPE_THRESHOLD_DISTANCE_IN * getYdpi()); + mDistanceDirty = true; + } + + private DistanceVectors getDistances() { + if (mDistanceDirty) { + mCachedDistance = calculateDistances(); + mDistanceDirty = false; + } + + return mCachedDistance; + } + + private DistanceVectors calculateDistances() { + // This code assumes that there will be no missed DOWN or UP events. + VelocityTracker velocityTracker = VelocityTracker.obtain(); + List<MotionEvent> motionEvents = getRecentMotionEvents(); + + if (motionEvents.size() < 3) { + logDebug("Only " + motionEvents.size() + " motion events recorded."); + return new DistanceVectors(0, 0, 0, 0); + } + + for (MotionEvent motionEvent : motionEvents) { + velocityTracker.addMovement(motionEvent); + } + velocityTracker.computeCurrentVelocity(1); + + float vX = velocityTracker.getXVelocity(); + float vY = velocityTracker.getYVelocity(); + + velocityTracker.recycle(); + + float dX = getLastMotionEvent().getX() - getFirstMotionEvent().getX(); + float dY = getLastMotionEvent().getY() - getFirstMotionEvent().getY(); + + logInfo("dX: " + dX + " dY: " + dY + " xV: " + vX + " yV: " + vY); + + return new DistanceVectors(dX, dY, vX, vY); + } + + @Override + public void onTouchEvent(MotionEvent motionEvent) { + mDistanceDirty = true; + } + + @Override + public boolean isFalseTouch() { + return !getDistances().getPassedFlingThreshold(); + } + + boolean isLongSwipe() { + boolean longSwipe = getDistances().getPassedDistanceThreshold(); + logDebug("Is longSwipe? " + longSwipe); + return longSwipe; + } + + private class DistanceVectors { + final float mDx; + final float mDy; + private final float mVx; + private final float mVy; + + DistanceVectors(float dX, float dY, float vX, float vY) { + this.mDx = dX; + this.mDy = dY; + this.mVx = vX; + this.mVy = vY; + } + + boolean getPassedDistanceThreshold() { + if (isHorizontal()) { + logDebug("Horizontal swipe distance: " + Math.abs(mDx)); + logDebug("Threshold: " + mHorizontalSwipeThresholdPx); + + return Math.abs(mDx) >= mHorizontalSwipeThresholdPx; + } + + logDebug("Vertical swipe distance: " + Math.abs(mDy)); + logDebug("Threshold: " + mVerticalSwipeThresholdPx); + return Math.abs(mDy) >= mVerticalSwipeThresholdPx; + } + + boolean getPassedFlingThreshold() { + float dX = this.mDx + this.mVx * VELOCITY_TO_DISTANCE; + float dY = this.mDy + this.mVy * VELOCITY_TO_DISTANCE; + + if (isHorizontal()) { + logDebug("Horizontal swipe and fling distance: " + this.mDx + ", " + + this.mVx * VELOCITY_TO_DISTANCE); + logDebug("Threshold: " + mHorizontalFlingThresholdPx); + return Math.abs(dX) >= mHorizontalFlingThresholdPx; + } + + logDebug("Vertical swipe and fling distance: " + this.mDy + ", " + + this.mVy * VELOCITY_TO_DISTANCE); + logDebug("Threshold: " + mVerticalFlingThresholdPx); + return Math.abs(dY) >= mVerticalFlingThresholdPx; + } + } +} diff --git a/packages/SystemUI/src/com/android/systemui/classifier/brightline/FalsingClassifier.java b/packages/SystemUI/src/com/android/systemui/classifier/brightline/FalsingClassifier.java new file mode 100644 index 000000000000..685e7c534b66 --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/classifier/brightline/FalsingClassifier.java @@ -0,0 +1,131 @@ +/* + * Copyright (C) 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.classifier.brightline; + +import android.hardware.SensorEvent; +import android.view.MotionEvent; + +import com.android.systemui.classifier.Classifier; + +import java.util.List; + +/** + * Base class for rules that determine False touches. + */ +abstract class FalsingClassifier { + private final FalsingDataProvider mDataProvider; + + FalsingClassifier(FalsingDataProvider dataProvider) { + this.mDataProvider = dataProvider; + } + + List<MotionEvent> getRecentMotionEvents() { + return mDataProvider.getRecentMotionEvents(); + } + + MotionEvent getFirstMotionEvent() { + return mDataProvider.getFirstRecentMotionEvent(); + } + + MotionEvent getLastMotionEvent() { + return mDataProvider.getLastMotionEvent(); + } + + boolean isHorizontal() { + return mDataProvider.isHorizontal(); + } + + boolean isRight() { + return mDataProvider.isRight(); + } + + boolean isVertical() { + return mDataProvider.isVertical(); + } + + boolean isUp() { + return mDataProvider.isUp(); + } + + float getAngle() { + return mDataProvider.getAngle(); + } + + int getWidthPixels() { + return mDataProvider.getWidthPixels(); + } + + int getHeightPixels() { + return mDataProvider.getHeightPixels(); + } + + float getXdpi() { + return mDataProvider.getXdpi(); + } + + float getYdpi() { + return mDataProvider.getYdpi(); + } + + final @Classifier.InteractionType int getInteractionType() { + return mDataProvider.getInteractionType(); + } + + final void setInteractionType(@Classifier.InteractionType int interactionType) { + mDataProvider.setInteractionType(interactionType); + } + + /** + * Called whenever a MotionEvent occurs. + * + * Useful for classifiers that need to see every MotionEvent, but most can probably + * use {@link #getRecentMotionEvents()} instead, which will return a list of MotionEvents. + */ + void onTouchEvent(MotionEvent motionEvent) {}; + + /** + * Called whenever a SensorEvent occurs, specifically the ProximitySensor. + */ + void onSensorEvent(SensorEvent sensorEvent) {}; + + /** + * The phone screen has turned on and we need to begin falsing detection. + */ + void onSessionStarted() {}; + + /** + * The phone screen has turned off and falsing data can be discarded. + */ + void onSessionEnded() {}; + + /** + * Returns true if the data captured so far looks like a false touch. + */ + abstract boolean isFalseTouch(); + + static void logDebug(String msg) { + BrightLineFalsingManager.logDebug(msg); + } + + static void logInfo(String msg) { + BrightLineFalsingManager.logInfo(msg); + } + + static void logError(String msg) { + BrightLineFalsingManager.logError(msg); + } +} diff --git a/packages/SystemUI/src/com/android/systemui/classifier/brightline/FalsingDataProvider.java b/packages/SystemUI/src/com/android/systemui/classifier/brightline/FalsingDataProvider.java new file mode 100644 index 000000000000..8b11ceb34ea0 --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/classifier/brightline/FalsingDataProvider.java @@ -0,0 +1,266 @@ +/* + * Copyright (C) 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.classifier.brightline; + +import android.util.DisplayMetrics; +import android.view.MotionEvent; +import android.view.MotionEvent.PointerCoords; +import android.view.MotionEvent.PointerProperties; + +import com.android.systemui.classifier.Classifier; + +import java.util.ArrayList; +import java.util.List; + +/** + * Acts as a cache and utility class for FalsingClassifiers. + */ +public class FalsingDataProvider { + + private static final long MOTION_EVENT_AGE_MS = 1000; + private static final float THREE_HUNDRED_SIXTY_DEG = (float) (2 * Math.PI); + + private final int mWidthPixels; + private final int mHeightPixels; + private final float mXdpi; + private final float mYdpi; + + private @Classifier.InteractionType int mInteractionType; + private final TimeLimitedMotionEventBuffer mRecentMotionEvents = + new TimeLimitedMotionEventBuffer(MOTION_EVENT_AGE_MS); + + private boolean mDirty = true; + + private float mAngle = 0; + private MotionEvent mFirstActualMotionEvent; + private MotionEvent mFirstRecentMotionEvent; + private MotionEvent mLastMotionEvent; + + public FalsingDataProvider(DisplayMetrics displayMetrics) { + mXdpi = displayMetrics.xdpi; + mYdpi = displayMetrics.ydpi; + mWidthPixels = displayMetrics.widthPixels; + mHeightPixels = displayMetrics.heightPixels; + + FalsingClassifier.logInfo("xdpi, ydpi: " + getXdpi() + ", " + getYdpi()); + FalsingClassifier.logInfo("width, height: " + getWidthPixels() + ", " + getHeightPixels()); + } + + void onMotionEvent(MotionEvent motionEvent) { + if (motionEvent.getActionMasked() == MotionEvent.ACTION_DOWN) { + mFirstActualMotionEvent = motionEvent; + } + + List<MotionEvent> motionEvents = unpackMotionEvent(motionEvent); + FalsingClassifier.logDebug("Unpacked into: " + motionEvents.size()); + if (BrightLineFalsingManager.DEBUG) { + for (MotionEvent m : motionEvents) { + FalsingClassifier.logDebug( + "x,y,t: " + m.getX() + "," + m.getY() + "," + m.getEventTime()); + } + } + + if (motionEvent.getActionMasked() == MotionEvent.ACTION_DOWN) { + mRecentMotionEvents.clear(); + } + mRecentMotionEvents.addAll(motionEvents); + + FalsingClassifier.logDebug("Size: " + mRecentMotionEvents.size()); + + mDirty = true; + } + + /** Returns screen width in pixels. */ + int getWidthPixels() { + return mWidthPixels; + } + + /** Returns screen height in pixels. */ + int getHeightPixels() { + return mHeightPixels; + } + + float getXdpi() { + return mXdpi; + } + + float getYdpi() { + return mYdpi; + } + + List<MotionEvent> getRecentMotionEvents() { + return mRecentMotionEvents; + } + + /** + * interactionType is defined by {@link com.android.systemui.classifier.Classifier}. + */ + final void setInteractionType(@Classifier.InteractionType int interactionType) { + this.mInteractionType = interactionType; + } + + final int getInteractionType() { + return mInteractionType; + } + + MotionEvent getFirstActualMotionEvent() { + return mFirstActualMotionEvent; + } + + MotionEvent getFirstRecentMotionEvent() { + recalculateData(); + return mFirstRecentMotionEvent; + } + + MotionEvent getLastMotionEvent() { + recalculateData(); + return mLastMotionEvent; + } + + /** + * Returns the angle between the first and last point of the recent points. + * + * The angle will be in radians, always be between 0 and 2*PI, inclusive. + */ + float getAngle() { + recalculateData(); + return mAngle; + } + + boolean isHorizontal() { + recalculateData(); + if (mRecentMotionEvents.isEmpty()) { + return false; + } + + return Math.abs(mFirstRecentMotionEvent.getX() - mLastMotionEvent.getX()) > Math + .abs(mFirstRecentMotionEvent.getY() - mLastMotionEvent.getY()); + } + + boolean isRight() { + recalculateData(); + if (mRecentMotionEvents.isEmpty()) { + return false; + } + + return mLastMotionEvent.getX() > mFirstRecentMotionEvent.getX(); + } + + boolean isVertical() { + return !isHorizontal(); + } + + boolean isUp() { + recalculateData(); + if (mRecentMotionEvents.isEmpty()) { + return false; + } + + return mLastMotionEvent.getY() < mFirstRecentMotionEvent.getY(); + } + + private void recalculateData() { + if (!mDirty) { + return; + } + + if (mRecentMotionEvents.isEmpty()) { + mFirstRecentMotionEvent = null; + mLastMotionEvent = null; + } else { + mFirstRecentMotionEvent = mRecentMotionEvents.get(0); + mLastMotionEvent = mRecentMotionEvents.get(mRecentMotionEvents.size() - 1); + } + + calculateAngleInternal(); + + mDirty = false; + } + + private void calculateAngleInternal() { + if (mRecentMotionEvents.size() < 2) { + mAngle = Float.MAX_VALUE; + } else { + float lastX = mLastMotionEvent.getX() - mFirstRecentMotionEvent.getX(); + float lastY = mLastMotionEvent.getY() - mFirstRecentMotionEvent.getY(); + + mAngle = (float) Math.atan2(lastY, lastX); + while (mAngle < 0) { + mAngle += THREE_HUNDRED_SIXTY_DEG; + } + while (mAngle > THREE_HUNDRED_SIXTY_DEG) { + mAngle -= THREE_HUNDRED_SIXTY_DEG; + } + } + } + + private List<MotionEvent> unpackMotionEvent(MotionEvent motionEvent) { + List<MotionEvent> motionEvents = new ArrayList<>(); + List<PointerProperties> pointerPropertiesList = new ArrayList<>(); + int pointerCount = motionEvent.getPointerCount(); + for (int i = 0; i < pointerCount; i++) { + PointerProperties pointerProperties = new PointerProperties(); + motionEvent.getPointerProperties(i, pointerProperties); + pointerPropertiesList.add(pointerProperties); + } + PointerProperties[] pointerPropertiesArray = new PointerProperties[pointerPropertiesList + .size()]; + pointerPropertiesList.toArray(pointerPropertiesArray); + + int historySize = motionEvent.getHistorySize(); + for (int i = 0; i < historySize; i++) { + List<PointerCoords> pointerCoordsList = new ArrayList<>(); + for (int j = 0; j < pointerCount; j++) { + PointerCoords pointerCoords = new PointerCoords(); + motionEvent.getHistoricalPointerCoords(j, i, pointerCoords); + pointerCoordsList.add(pointerCoords); + } + motionEvents.add(MotionEvent.obtain( + motionEvent.getDownTime(), + motionEvent.getHistoricalEventTime(i), + motionEvent.getAction(), + pointerCount, + pointerPropertiesArray, + pointerCoordsList.toArray(new PointerCoords[0]), + motionEvent.getMetaState(), + motionEvent.getButtonState(), + motionEvent.getXPrecision(), + motionEvent.getYPrecision(), + motionEvent.getDeviceId(), + motionEvent.getEdgeFlags(), + motionEvent.getSource(), + motionEvent.getFlags() + )); + } + + motionEvents.add(MotionEvent.obtainNoHistory(motionEvent)); + + return motionEvents; + } + + void onSessionEnd() { + mFirstActualMotionEvent = null; + + for (MotionEvent ev : mRecentMotionEvents) { + ev.recycle(); + } + + mRecentMotionEvents.clear(); + + mDirty = true; + } +} diff --git a/packages/SystemUI/src/com/android/systemui/classifier/brightline/PointerCountClassifier.java b/packages/SystemUI/src/com/android/systemui/classifier/brightline/PointerCountClassifier.java new file mode 100644 index 000000000000..40e141fbf988 --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/classifier/brightline/PointerCountClassifier.java @@ -0,0 +1,53 @@ +/* + * Copyright (C) 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.classifier.brightline; + +import android.view.MotionEvent; + +/** + * False touch if more than one finger touches the screen. + * + * IMPORTANT: This should not be used for certain cases (i.e. a11y) as we expect multiple fingers + * for them. + */ +class PointerCountClassifier extends FalsingClassifier { + + private static final int MAX_ALLOWED_POINTERS = 1; + private int mMaxPointerCount; + + PointerCountClassifier(FalsingDataProvider dataProvider) { + super(dataProvider); + } + + @Override + public void onTouchEvent(MotionEvent motionEvent) { + int pCount = mMaxPointerCount; + if (motionEvent.getActionMasked() == MotionEvent.ACTION_DOWN) { + mMaxPointerCount = motionEvent.getPointerCount(); + } else { + mMaxPointerCount = Math.max(mMaxPointerCount, motionEvent.getPointerCount()); + } + if (pCount != mMaxPointerCount) { + logDebug("Pointers observed:" + mMaxPointerCount); + } + } + + @Override + public boolean isFalseTouch() { + return mMaxPointerCount > MAX_ALLOWED_POINTERS; + } +} diff --git a/packages/SystemUI/src/com/android/systemui/classifier/brightline/ProximityClassifier.java b/packages/SystemUI/src/com/android/systemui/classifier/brightline/ProximityClassifier.java new file mode 100644 index 000000000000..94a8ac85b724 --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/classifier/brightline/ProximityClassifier.java @@ -0,0 +1,134 @@ +/* + * Copyright (C) 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.classifier.brightline; + +import static com.android.systemui.classifier.Classifier.QUICK_SETTINGS; + +import android.hardware.Sensor; +import android.hardware.SensorEvent; +import android.view.MotionEvent; + + +/** + * False touch if proximity sensor is covered for more than a certain percentage of the gesture. + * + * This classifer is essentially a no-op for QUICK_SETTINGS, as we assume the sensor may be + * covered when swiping from the top. + */ +class ProximityClassifier extends FalsingClassifier { + + private static final double PERCENT_COVERED_THRESHOLD = 0.1; + private final DistanceClassifier mDistanceClassifier; + + private boolean mNear; + private long mGestureStartTimeNs; + private long mPrevNearTimeNs; + private long mNearDurationNs; + private float mPercentNear; + + ProximityClassifier(DistanceClassifier distanceClassifier, + FalsingDataProvider dataProvider) { + super(dataProvider); + this.mDistanceClassifier = distanceClassifier; + } + + @Override + void onSessionStarted() { + mPrevNearTimeNs = 0; + mPercentNear = 0; + } + + @Override + void onSessionEnded() { + mPrevNearTimeNs = 0; + mPercentNear = 0; + } + + @Override + public void onTouchEvent(MotionEvent motionEvent) { + int action = motionEvent.getActionMasked(); + + if (action == MotionEvent.ACTION_DOWN) { + mGestureStartTimeNs = motionEvent.getEventTimeNano(); + if (mPrevNearTimeNs > 0) { + // We only care about if the proximity sensor is triggered while a move event is + // happening. + mPrevNearTimeNs = motionEvent.getEventTimeNano(); + } + logDebug("Gesture start time: " + mGestureStartTimeNs); + mNearDurationNs = 0; + } + + if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_CANCEL) { + update(mNear, motionEvent.getEventTimeNano()); + long duration = motionEvent.getEventTimeNano() - mGestureStartTimeNs; + + logDebug("Gesture duration, Proximity duration: " + duration + ", " + mNearDurationNs); + + if (duration == 0) { + mPercentNear = mNear ? 1.0f : 0.0f; + } else { + mPercentNear = (float) mNearDurationNs / (float) duration; + } + } + + } + + @Override + public void onSensorEvent(SensorEvent sensorEvent) { + if (sensorEvent.sensor.getType() == Sensor.TYPE_PROXIMITY) { + logDebug("Sensor is: " + (sensorEvent.values[0] < sensorEvent.sensor.getMaximumRange()) + + " at time " + sensorEvent.timestamp); + update( + sensorEvent.values[0] < sensorEvent.sensor.getMaximumRange(), + sensorEvent.timestamp); + } + } + + @Override + public boolean isFalseTouch() { + if (getInteractionType() == QUICK_SETTINGS) { + return false; + } + + logInfo("Percent of gesture in proximity: " + mPercentNear); + + if (mPercentNear > PERCENT_COVERED_THRESHOLD) { + return !mDistanceClassifier.isLongSwipe(); + } + + return false; + } + + /** + * @param near is the sensor showing the near state right now + * @param timeStampNs time of this event in nanoseconds + */ + private void update(boolean near, long timeStampNs) { + if (mPrevNearTimeNs != 0 && timeStampNs > mPrevNearTimeNs && mNear) { + mNearDurationNs += timeStampNs - mPrevNearTimeNs; + logDebug("Updating duration: " + mNearDurationNs); + } + + if (near) { + logDebug("Set prevNearTimeNs: " + timeStampNs); + mPrevNearTimeNs = timeStampNs; + } + + mNear = near; + } +} diff --git a/packages/SystemUI/src/com/android/systemui/classifier/brightline/TimeLimitedMotionEventBuffer.java b/packages/SystemUI/src/com/android/systemui/classifier/brightline/TimeLimitedMotionEventBuffer.java new file mode 100644 index 000000000000..9a83b5bd8328 --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/classifier/brightline/TimeLimitedMotionEventBuffer.java @@ -0,0 +1,242 @@ +/* + * Copyright (C) 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.classifier.brightline; + +import android.view.MotionEvent; + +import java.util.Collection; +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; +import java.util.ListIterator; + +/** + * Maintains an ordered list of the last N milliseconds of MotionEvents. + * + * This class is simply a convenience class designed to look like a simple list, but that + * automatically discards old MotionEvents. It functions much like a queue - first in first out - + * but does not have a fixed size like a circular buffer. + */ +public class TimeLimitedMotionEventBuffer implements List<MotionEvent> { + + private final LinkedList<MotionEvent> mMotionEvents; + private long mMaxAgeMs; + + TimeLimitedMotionEventBuffer(long maxAgeMs) { + super(); + this.mMaxAgeMs = maxAgeMs; + this.mMotionEvents = new LinkedList<>(); + } + + private void ejectOldEvents() { + if (mMotionEvents.isEmpty()) { + return; + } + Iterator<MotionEvent> iter = listIterator(); + long mostRecentMs = mMotionEvents.getLast().getEventTime(); + while (iter.hasNext()) { + MotionEvent ev = iter.next(); + if (mostRecentMs - ev.getEventTime() > mMaxAgeMs) { + iter.remove(); + ev.recycle(); + } + } + } + + @Override + public void add(int index, MotionEvent element) { + throw new UnsupportedOperationException(); + } + + @Override + public MotionEvent remove(int index) { + return mMotionEvents.remove(index); + } + + @Override + public int indexOf(Object o) { + return mMotionEvents.indexOf(o); + } + + @Override + public int lastIndexOf(Object o) { + return mMotionEvents.lastIndexOf(o); + } + + @Override + public int size() { + return mMotionEvents.size(); + } + + @Override + public boolean isEmpty() { + return mMotionEvents.isEmpty(); + } + + @Override + public boolean contains(Object o) { + return mMotionEvents.contains(o); + } + + @Override + public Iterator<MotionEvent> iterator() { + return mMotionEvents.iterator(); + } + + @Override + public Object[] toArray() { + return mMotionEvents.toArray(); + } + + @Override + public <T> T[] toArray(T[] a) { + return mMotionEvents.toArray(a); + } + + @Override + public boolean add(MotionEvent element) { + boolean result = mMotionEvents.add(element); + ejectOldEvents(); + return result; + } + + @Override + public boolean remove(Object o) { + return mMotionEvents.remove(o); + } + + @Override + public boolean containsAll(Collection<?> c) { + return mMotionEvents.containsAll(c); + } + + @Override + public boolean addAll(Collection<? extends MotionEvent> collection) { + boolean result = mMotionEvents.addAll(collection); + ejectOldEvents(); + return result; + } + + @Override + public boolean addAll(int index, Collection<? extends MotionEvent> elements) { + throw new UnsupportedOperationException(); + } + + @Override + public boolean removeAll(Collection<?> c) { + return mMotionEvents.removeAll(c); + } + + @Override + public boolean retainAll(Collection<?> c) { + return mMotionEvents.retainAll(c); + } + + @Override + public void clear() { + mMotionEvents.clear(); + } + + @Override + public boolean equals(Object o) { + return mMotionEvents.equals(o); + } + + @Override + public int hashCode() { + return mMotionEvents.hashCode(); + } + + @Override + public MotionEvent get(int index) { + return mMotionEvents.get(index); + } + + @Override + public MotionEvent set(int index, MotionEvent element) { + throw new UnsupportedOperationException(); + } + + @Override + public ListIterator<MotionEvent> listIterator() { + return new Iter(0); + } + + @Override + public ListIterator<MotionEvent> listIterator(int index) { + return new Iter(index); + } + + @Override + public List<MotionEvent> subList(int fromIndex, int toIndex) { + throw new UnsupportedOperationException(); + } + + class Iter implements ListIterator<MotionEvent> { + + private final ListIterator<MotionEvent> mIterator; + + Iter(int index) { + this.mIterator = mMotionEvents.listIterator(index); + } + + @Override + public boolean hasNext() { + return mIterator.hasNext(); + } + + @Override + public MotionEvent next() { + return mIterator.next(); + } + + @Override + public boolean hasPrevious() { + return mIterator.hasPrevious(); + } + + @Override + public MotionEvent previous() { + return mIterator.previous(); + } + + @Override + public int nextIndex() { + return mIterator.nextIndex(); + } + + @Override + public int previousIndex() { + return mIterator.previousIndex(); + } + + @Override + public void remove() { + mIterator.remove(); + } + + @Override + public void set(MotionEvent motionEvent) { + throw new UnsupportedOperationException(); + } + + @Override + public void add(MotionEvent element) { + throw new UnsupportedOperationException(); + } + } +} diff --git a/packages/SystemUI/src/com/android/systemui/classifier/brightline/TypeClassifier.java b/packages/SystemUI/src/com/android/systemui/classifier/brightline/TypeClassifier.java new file mode 100644 index 000000000000..b6ceab559301 --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/classifier/brightline/TypeClassifier.java @@ -0,0 +1,61 @@ +/* + * Copyright (C) 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.classifier.brightline; + + +import static com.android.systemui.classifier.Classifier.BOUNCER_UNLOCK; +import static com.android.systemui.classifier.Classifier.LEFT_AFFORDANCE; +import static com.android.systemui.classifier.Classifier.NOTIFICATION_DISMISS; +import static com.android.systemui.classifier.Classifier.NOTIFICATION_DRAG_DOWN; +import static com.android.systemui.classifier.Classifier.PULSE_EXPAND; +import static com.android.systemui.classifier.Classifier.QUICK_SETTINGS; +import static com.android.systemui.classifier.Classifier.RIGHT_AFFORDANCE; +import static com.android.systemui.classifier.Classifier.UNLOCK; + +/** + * Ensure that the swipe direction generally matches that of the interaction type. + */ +public class TypeClassifier extends FalsingClassifier { + TypeClassifier(FalsingDataProvider dataProvider) { + super(dataProvider); + } + + @Override + public boolean isFalseTouch() { + boolean vertical = isVertical(); + boolean up = isUp(); + boolean right = isRight(); + + switch (getInteractionType()) { + case QUICK_SETTINGS: + case PULSE_EXPAND: + case NOTIFICATION_DRAG_DOWN: + return !vertical || up; + case NOTIFICATION_DISMISS: + return vertical; + case UNLOCK: + case BOUNCER_UNLOCK: + return !vertical || !up; + case LEFT_AFFORDANCE: // Swiping from the bottom left corner for camera or similar. + return !right || !up; + case RIGHT_AFFORDANCE: // Swiping from the bottom right corner for camera or similar. + return right || !up; + default: + return true; + } + } +} diff --git a/packages/SystemUI/src/com/android/systemui/classifier/brightline/ZigZagClassifier.java b/packages/SystemUI/src/com/android/systemui/classifier/brightline/ZigZagClassifier.java new file mode 100644 index 000000000000..a62574f26399 --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/classifier/brightline/ZigZagClassifier.java @@ -0,0 +1,168 @@ +/* + * Copyright (C) 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.classifier.brightline; + +import android.graphics.Point; +import android.view.MotionEvent; + +import java.util.ArrayList; +import java.util.List; + +/** + * Penalizes gestures that change direction in either the x or y too much. + */ +class ZigZagClassifier extends FalsingClassifier { + + // Define how far one can move back and forth over one inch of travel before being falsed. + // `PRIMARY` defines how far one can deviate in the primary direction of travel. I.e. if you're + // swiping vertically, you shouldn't have a lot of zig zag in the vertical direction. Since + // most swipes will follow somewhat of a 'C' or 'S' shape, we allow more deviance along the + // `SECONDARY` axis. + private static final float MAX_X_PRIMARY_DEVIANCE = .05f; + private static final float MAX_Y_PRIMARY_DEVIANCE = .05f; + private static final float MAX_X_SECONDARY_DEVIANCE = .3f; + private static final float MAX_Y_SECONDARY_DEVIANCE = .3f; + + ZigZagClassifier(FalsingDataProvider dataProvider) { + super(dataProvider); + } + + @Override + boolean isFalseTouch() { + List<MotionEvent> motionEvents = getRecentMotionEvents(); + // Rotate horizontal gestures to be horizontal between their first and last point. + // Rotate vertical gestures to be vertical between their first and last point. + // Sum the absolute value of every dx and dy along the gesture. Compare this with the dx + // and dy + // between the first and last point. + // For horizontal lines, the difference in the x direction should be small. + // For vertical lines, the difference in the y direction should be small. + + if (motionEvents.size() < 3) { + return false; + } + + List<Point> rotatedPoints; + if (isHorizontal()) { + rotatedPoints = rotateHorizontal(); + } else { + rotatedPoints = rotateVertical(); + } + + float actualDx = Math + .abs(rotatedPoints.get(0).x - rotatedPoints.get(rotatedPoints.size() - 1).x); + float actualDy = Math + .abs(rotatedPoints.get(0).y - rotatedPoints.get(rotatedPoints.size() - 1).y); + logDebug("Actual: (" + actualDx + "," + actualDy + ")"); + float runningAbsDx = 0; + float runningAbsDy = 0; + float pX = 0; + float pY = 0; + boolean firstLoop = true; + for (Point point : rotatedPoints) { + if (firstLoop) { + pX = point.x; + pY = point.y; + firstLoop = false; + continue; + } + runningAbsDx += Math.abs(point.x - pX); + runningAbsDy += Math.abs(point.y - pY); + pX = point.x; + pY = point.y; + logDebug("(x, y, runningAbsDx, runningAbsDy) - (" + pX + ", " + pY + ", " + runningAbsDx + + ", " + runningAbsDy + ")"); + } + + float devianceX = runningAbsDx - actualDx; + float devianceY = runningAbsDy - actualDy; + float distanceXIn = actualDx / getXdpi(); + float distanceYIn = actualDy / getYdpi(); + float totalDistanceIn = (float) Math + .sqrt(distanceXIn * distanceXIn + distanceYIn * distanceYIn); + + float maxXDeviance; + float maxYDeviance; + if (actualDx > actualDy) { + maxXDeviance = MAX_X_PRIMARY_DEVIANCE * totalDistanceIn * getXdpi(); + maxYDeviance = MAX_Y_SECONDARY_DEVIANCE * totalDistanceIn * getYdpi(); + } else { + maxXDeviance = MAX_X_SECONDARY_DEVIANCE * totalDistanceIn * getXdpi(); + maxYDeviance = MAX_Y_PRIMARY_DEVIANCE * totalDistanceIn * getYdpi(); + } + + logDebug("Straightness Deviance: (" + devianceX + "," + devianceY + ") vs " + + "(" + maxXDeviance + "," + maxYDeviance + ")"); + return devianceX > maxXDeviance || devianceY > maxYDeviance; + } + + private float getAtan2LastPoint() { + MotionEvent firstEvent = getFirstMotionEvent(); + MotionEvent lastEvent = getLastMotionEvent(); + float offsetX = firstEvent.getX(); + float offsetY = firstEvent.getY(); + float lastX = lastEvent.getX() - offsetX; + float lastY = lastEvent.getY() - offsetY; + + return (float) Math.atan2(lastY, lastX); + } + + private List<Point> rotateVertical() { + // Calculate the angle relative to the y axis. + double angle = Math.PI / 2 - getAtan2LastPoint(); + logDebug("Rotating to vertical by: " + angle); + return rotateMotionEvents(getRecentMotionEvents(), -angle); + } + + private List<Point> rotateHorizontal() { + // Calculate the angle relative to the x axis. + double angle = getAtan2LastPoint(); + logDebug("Rotating to horizontal by: " + angle); + return rotateMotionEvents(getRecentMotionEvents(), angle); + } + + private List<Point> rotateMotionEvents(List<MotionEvent> motionEvents, double angle) { + List<Point> points = new ArrayList<>(); + double cosAngle = Math.cos(angle); + double sinAngle = Math.sin(angle); + MotionEvent firstEvent = motionEvents.get(0); + float offsetX = firstEvent.getX(); + float offsetY = firstEvent.getY(); + for (MotionEvent motionEvent : motionEvents) { + float x = motionEvent.getX() - offsetX; + float y = motionEvent.getY() - offsetY; + double rotatedX = cosAngle * x + sinAngle * y + offsetX; + double rotatedY = -sinAngle * x + cosAngle * y + offsetY; + points.add(new Point((int) rotatedX, (int) rotatedY)); + } + + MotionEvent lastEvent = motionEvents.get(motionEvents.size() - 1); + Point firstPoint = points.get(0); + Point lastPoint = points.get(points.size() - 1); + logDebug( + "Before: (" + firstEvent.getX() + "," + firstEvent.getY() + "), (" + + lastEvent.getX() + "," + + lastEvent.getY() + ")"); + logDebug( + "After: (" + firstPoint.x + "," + firstPoint.y + "), (" + lastPoint.x + "," + + lastPoint.y + + ")"); + + return points; + } + +} diff --git a/packages/SystemUI/src/com/android/systemui/colorextraction/SysuiColorExtractor.java b/packages/SystemUI/src/com/android/systemui/colorextraction/SysuiColorExtractor.java index 835ffc976e9f..6f56a53c1c49 100644 --- a/packages/SystemUI/src/com/android/systemui/colorextraction/SysuiColorExtractor.java +++ b/packages/SystemUI/src/com/android/systemui/colorextraction/SysuiColorExtractor.java @@ -16,18 +16,11 @@ package com.android.systemui.colorextraction; -import android.annotation.ColorInt; import android.app.WallpaperColors; import android.app.WallpaperManager; import android.content.Context; -import android.os.Handler; -import android.os.RemoteException; +import android.graphics.Color; import android.os.UserHandle; -import android.util.Log; -import android.view.Display; -import android.view.IWallpaperVisibilityListener; -import android.view.IWindowManager; -import android.view.WindowManagerGlobal; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.colorextraction.ColorExtractor; @@ -52,46 +45,28 @@ public class SysuiColorExtractor extends ColorExtractor implements Dumpable, ConfigurationController.ConfigurationListener { private static final String TAG = "SysuiColorExtractor"; private final Tonal mTonal; - private boolean mWallpaperVisible; - private boolean mHasBackdrop; - // Colors to return when the wallpaper isn't visible - private final GradientColors mWpHiddenColors; + private boolean mHasMediaArtwork; + private final GradientColors mNeutralColorsLock; + private final GradientColors mBackdropColors; @Inject public SysuiColorExtractor(Context context, ConfigurationController configurationController) { - this(context, new Tonal(context), configurationController, true); + this(context, new Tonal(context), configurationController, + context.getSystemService(WallpaperManager.class), false /* immediately */); } @VisibleForTesting public SysuiColorExtractor(Context context, ExtractionType type, - ConfigurationController configurationController, boolean registerVisibility) { - super(context, type, false /* immediately */); + ConfigurationController configurationController, + WallpaperManager wallpaperManager, boolean immediately) { + super(context, type, immediately, wallpaperManager); mTonal = type instanceof Tonal ? (Tonal) type : new Tonal(context); - mWpHiddenColors = new GradientColors(); + mNeutralColorsLock = new GradientColors(); configurationController.addCallback(this); - WallpaperColors systemColors = getWallpaperColors(WallpaperManager.FLAG_SYSTEM); - updateDefaultGradients(systemColors); - - if (registerVisibility) { - try { - IWindowManager windowManagerService = WindowManagerGlobal.getWindowManagerService(); - Handler handler = Handler.getMain(); - boolean visible = windowManagerService.registerWallpaperVisibilityListener( - new IWallpaperVisibilityListener.Stub() { - @Override - public void onWallpaperVisibilityChanged(boolean newVisibility, - int displayId) throws RemoteException { - handler.post(() -> setWallpaperVisible(newVisibility)); - } - }, Display.DEFAULT_DISPLAY); - setWallpaperVisible(visible); - } catch (RemoteException e) { - Log.w(TAG, "Can't listen to wallpaper visibility changes", e); - } - } + mBackdropColors = new GradientColors(); + mBackdropColors.setMainColor(Color.BLACK); - WallpaperManager wallpaperManager = context.getSystemService(WallpaperManager.class); if (wallpaperManager != null) { // Listen to all users instead of only the current one. wallpaperManager.removeOnColorsChangedListener(this); @@ -100,8 +75,14 @@ public class SysuiColorExtractor extends ColorExtractor implements Dumpable, } } - private void updateDefaultGradients(WallpaperColors colors) { - mTonal.applyFallback(colors, mWpHiddenColors); + @Override + protected void extractWallpaperColors() { + super.extractWallpaperColors(); + // mTonal is final but this method will be invoked by the base class during its ctor. + if (mTonal == null) { + return; + } + mTonal.applyFallback(mLockColors == null ? mSystemColors : mLockColors, mNeutralColorsLock); } @Override @@ -110,27 +91,28 @@ public class SysuiColorExtractor extends ColorExtractor implements Dumpable, // Colors do not belong to current user, ignoring. return; } - - super.onColorsChanged(colors, which); - - if ((which & WallpaperManager.FLAG_SYSTEM) != 0) { - @ColorInt int oldColor = mWpHiddenColors.getMainColor(); - updateDefaultGradients(colors); - if (oldColor != mWpHiddenColors.getMainColor()) { - triggerColorsChanged(WallpaperManager.FLAG_SYSTEM); - } + if ((which & WallpaperManager.FLAG_LOCK) != 0) { + mTonal.applyFallback(colors, mNeutralColorsLock); } + super.onColorsChanged(colors, which); } @Override public void onUiModeChanged() { - WallpaperColors systemColors = getWallpaperColors(WallpaperManager.FLAG_SYSTEM); - updateDefaultGradients(systemColors); - triggerColorsChanged(WallpaperManager.FLAG_SYSTEM); + extractWallpaperColors(); + triggerColorsChanged(WallpaperManager.FLAG_SYSTEM | WallpaperManager.FLAG_LOCK); + } + + @Override + public GradientColors getColors(int which, int type) { + if (mHasMediaArtwork && (which & WallpaperManager.FLAG_LOCK) != 0) { + return mBackdropColors; + } + return super.getColors(which, type); } /** - * Colors the should be using for scrims. + * Colors that should be using for scrims. * * They will be: * - A light gray if the wallpaper is light @@ -138,81 +120,12 @@ public class SysuiColorExtractor extends ColorExtractor implements Dumpable, * - Black otherwise */ public GradientColors getNeutralColors() { - return mWpHiddenColors; - } - - /** - * Get TYPE_NORMAL colors when wallpaper is visible, or fallback otherwise. - * - * @param which FLAG_LOCK or FLAG_SYSTEM - * @return colors - */ - @Override - public GradientColors getColors(int which) { - return getColors(which, TYPE_DARK); - } - - /** - * Wallpaper colors when the wallpaper is visible, fallback otherwise. - * - * @param which FLAG_LOCK or FLAG_SYSTEM - * @param type TYPE_NORMAL, TYPE_DARK or TYPE_EXTRA_DARK - * @return colors - */ - @Override - public GradientColors getColors(int which, int type) { - return getColors(which, type, false /* ignoreVisibility */); - } - - /** - * Get TYPE_NORMAL colors, possibly ignoring wallpaper visibility. - * - * @param which FLAG_LOCK or FLAG_SYSTEM - * @param ignoreWallpaperVisibility whether you want fallback colors or not if the wallpaper - * isn't visible - * @return - */ - public GradientColors getColors(int which, boolean ignoreWallpaperVisibility) { - return getColors(which, TYPE_NORMAL, ignoreWallpaperVisibility); - } - - /** - * - * @param which FLAG_LOCK or FLAG_SYSTEM - * @param type TYPE_NORMAL, TYPE_DARK or TYPE_EXTRA_DARK - * @param ignoreWallpaperVisibility true if true wallpaper colors should be returning - * if it's visible or not - * @return colors - */ - public GradientColors getColors(int which, int type, boolean ignoreWallpaperVisibility) { - // mWallpaperVisible only handles the "system wallpaper" and will be always set to false - // if we have different lock and system wallpapers. - if (which == WallpaperManager.FLAG_SYSTEM) { - if (mWallpaperVisible || ignoreWallpaperVisibility) { - return super.getColors(which, type); - } else { - return mWpHiddenColors; - } - } else { - if (mHasBackdrop) { - return mWpHiddenColors; - } else { - return super.getColors(which, type); - } - } - } - - @VisibleForTesting - void setWallpaperVisible(boolean visible) { - if (mWallpaperVisible != visible) { - mWallpaperVisible = visible; - triggerColorsChanged(WallpaperManager.FLAG_SYSTEM); - } + return mHasMediaArtwork ? mBackdropColors : mNeutralColorsLock; } - public void setHasBackdrop(boolean hasBackdrop) { - if (mHasBackdrop != hasBackdrop) { - mHasBackdrop = hasBackdrop; + public void setHasMediaArtwork(boolean hasBackdrop) { + if (mHasMediaArtwork != hasBackdrop) { + mHasMediaArtwork = hasBackdrop; triggerColorsChanged(WallpaperManager.FLAG_LOCK); } } @@ -230,7 +143,8 @@ public class SysuiColorExtractor extends ColorExtractor implements Dumpable, pw.println(" Gradients:"); pw.println(" system: " + Arrays.toString(system)); pw.println(" lock: " + Arrays.toString(lock)); - pw.println(" Default scrim: " + mWpHiddenColors); + pw.println(" Neutral colors: " + mNeutralColorsLock); + pw.println(" Has media backdrop: " + mHasMediaArtwork); } } diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeSensors.java b/packages/SystemUI/src/com/android/systemui/doze/DozeSensors.java index 831d07446e7c..5f52486b2bc6 100644 --- a/packages/SystemUI/src/com/android/systemui/doze/DozeSensors.java +++ b/packages/SystemUI/src/com/android/systemui/doze/DozeSensors.java @@ -70,11 +70,12 @@ public class DozeSensors { private final Consumer<Boolean> mProxCallback; private final Callback mCallback; @VisibleForTesting - protected final TriggerSensor[] mSensors; + protected TriggerSensor[] mSensors; private final Handler mHandler = new Handler(); private final ProxSensor mProxSensor; private long mDebounceFrom; + private boolean mSettingRegistered; public DozeSensors(Context context, AlarmManager alarmManager, SensorManager sensorManager, DozeParameters dozeParameters, AmbientDisplayConfiguration config, WakeLock wakeLock, @@ -172,13 +173,8 @@ public class DozeSensors { public void setListening(boolean listen) { for (TriggerSensor s : mSensors) { s.setListening(listen); - if (listen) { - s.registerSettingsObserver(mSettingsObserver); - } - } - if (!listen) { - mResolver.unregisterContentObserver(mSettingsObserver); } + registerSettingsObserverIfNeeded(listen); } /** Set the listening state of only the sensors that require the touchscreen. */ @@ -240,6 +236,17 @@ public class DozeSensors { return mProxSensor.mCurrentlyFar; } + private void registerSettingsObserverIfNeeded(boolean register) { + if (!register) { + mResolver.unregisterContentObserver(mSettingsObserver); + } else if (!mSettingRegistered) { + for (TriggerSensor s : mSensors) { + s.registerSettingsObserver(mSettingsObserver); + } + } + mSettingRegistered = register; + } + private class ProxSensor implements SensorEventListener { boolean mRequested; diff --git a/packages/SystemUI/src/com/android/systemui/glwallpaper/EglHelper.java b/packages/SystemUI/src/com/android/systemui/glwallpaper/EglHelper.java index 1744c4e5af19..d74112608491 100644 --- a/packages/SystemUI/src/com/android/systemui/glwallpaper/EglHelper.java +++ b/packages/SystemUI/src/com/android/systemui/glwallpaper/EglHelper.java @@ -60,6 +60,9 @@ import java.io.PrintWriter; */ public class EglHelper { private static final String TAG = EglHelper.class.getSimpleName(); + // Below two constants make drawing at low priority, so other things can preempt our drawing. + private static final int EGL_CONTEXT_PRIORITY_LEVEL_IMG = 0x3100; + private static final int EGL_CONTEXT_PRIORITY_LOW_IMG = 0x3103; private EGLDisplay mEglDisplay; private EGLConfig mEglConfig; @@ -181,7 +184,8 @@ public class EglHelper { * @return true if EglContext is ready. */ public boolean createEglContext() { - int[] attrib_list = new int[] {EGL_CONTEXT_CLIENT_VERSION, 2, EGL_NONE}; + int[] attrib_list = new int[] {EGL_CONTEXT_CLIENT_VERSION, 2, + EGL_CONTEXT_PRIORITY_LEVEL_IMG, EGL_CONTEXT_PRIORITY_LOW_IMG, EGL_NONE}; mEglContext = eglCreateContext(mEglDisplay, mEglConfig, EGL_NO_CONTEXT, attrib_list, 0); if (mEglContext == EGL_NO_CONTEXT) { Log.w(TAG, "eglCreateContext failed: " + GLUtils.getEGLErrorString(eglGetError())); diff --git a/packages/SystemUI/src/com/android/systemui/glwallpaper/GLWallpaperRenderer.java b/packages/SystemUI/src/com/android/systemui/glwallpaper/GLWallpaperRenderer.java index 5d85cbf88f4e..60ea1cdf6b22 100644 --- a/packages/SystemUI/src/com/android/systemui/glwallpaper/GLWallpaperRenderer.java +++ b/packages/SystemUI/src/com/android/systemui/glwallpaper/GLWallpaperRenderer.java @@ -17,7 +17,6 @@ package com.android.systemui.glwallpaper; import android.util.Size; -import android.view.SurfaceHolder; import java.io.FileDescriptor; import java.io.PrintWriter; @@ -52,6 +51,13 @@ public interface GLWallpaperRenderer { void updateAmbientMode(boolean inAmbientMode, long duration); /** + * Notify the wallpaper offsets changed. + * @param xOffset offset along x axis. + * @param yOffset offset along y axis. + */ + void updateOffsets(float xOffset, float yOffset); + + /** * Ask renderer to report the surface size it needs. */ Size reportSurfaceSize(); @@ -76,12 +82,6 @@ public interface GLWallpaperRenderer { interface SurfaceProxy { /** - * Get surface holder. - * @return surface holder. - */ - SurfaceHolder getHolder(); - - /** * Ask proxy to start rendering frame to surface. */ void requestRender(); diff --git a/packages/SystemUI/src/com/android/systemui/glwallpaper/ImageGLWallpaper.java b/packages/SystemUI/src/com/android/systemui/glwallpaper/ImageGLWallpaper.java index 4be7623f90f2..626d0cfed997 100644 --- a/packages/SystemUI/src/com/android/systemui/glwallpaper/ImageGLWallpaper.java +++ b/packages/SystemUI/src/com/android/systemui/glwallpaper/ImageGLWallpaper.java @@ -33,9 +33,12 @@ import static android.opengl.GLES20.glUniform1i; import static android.opengl.GLES20.glVertexAttribPointer; import android.graphics.Bitmap; +import android.graphics.Rect; import android.opengl.GLUtils; import android.util.Log; +import java.io.FileDescriptor; +import java.io.PrintWriter; import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.nio.FloatBuffer; @@ -91,6 +94,8 @@ class ImageGLWallpaper { private int mUniTexture; private int mTextureId; + private float[] mCurrentTexCoordinate; + ImageGLWallpaper(ImageGLProgram program) { mProgram = program; @@ -195,4 +200,106 @@ class ImageGLWallpaper { glUniform1i(mUniTexture, 0); } + /** + * This method adjust s(x-axis), t(y-axis) texture coordinates to get current display area + * of texture and will be used during transition. + * The adjustment happens if either the width or height of the surface is larger than + * corresponding size of the display area. + * If both width and height are larger than corresponding size of the display area, + * the adjustment will happen at both s, t side. + * + * @param surface The size of the surface. + * @param scissor The display area. + * @param xOffset The offset amount along s axis. + * @param yOffset The offset amount along t axis. + */ + void adjustTextureCoordinates(Rect surface, Rect scissor, float xOffset, float yOffset) { + mCurrentTexCoordinate = TEXTURES.clone(); + + if (surface == null || scissor == null) { + mTextureBuffer.put(mCurrentTexCoordinate); + mTextureBuffer.position(0); + return; + } + + int surfaceWidth = surface.width(); + int surfaceHeight = surface.height(); + int scissorWidth = scissor.width(); + int scissorHeight = scissor.height(); + + if (surfaceWidth > scissorWidth) { + // Calculate the new s pos in pixels. + float pixelS = (float) Math.round((surfaceWidth - scissorWidth) * xOffset); + // Calculate the s pos in texture coordinate. + float coordinateS = pixelS / surfaceWidth; + // Calculate the percentage occupied by the scissor width in surface width. + float surfacePercentageW = (float) scissorWidth / surfaceWidth; + // Need also consider the case if surface height is smaller than scissor height. + if (surfaceHeight < scissorHeight) { + // We will narrow the surface percentage to keep aspect ratio. + surfacePercentageW *= (float) surfaceHeight / scissorHeight; + } + // Determine the final s pos, also limit the legal s pos to prevent from out of range. + float s = coordinateS + surfacePercentageW > 1f ? 1f - surfacePercentageW : coordinateS; + // Traverse the s pos in texture coordinates array and adjust the s pos accordingly. + for (int i = 0; i < mCurrentTexCoordinate.length; i += 2) { + // indices 2, 4 and 6 are the end of s coordinates. + if (i == 2 || i == 4 || i == 6) { + mCurrentTexCoordinate[i] = Math.min(1f, s + surfacePercentageW); + } else { + mCurrentTexCoordinate[i] = s; + } + } + } + + if (surfaceHeight > scissorHeight) { + // Calculate the new t pos in pixels. + float pixelT = (float) Math.round((surfaceHeight - scissorHeight) * yOffset); + // Calculate the t pos in texture coordinate. + float coordinateT = pixelT / surfaceHeight; + // Calculate the percentage occupied by the scissor height in surface height. + float surfacePercentageH = (float) scissorHeight / surfaceHeight; + // Need also consider the case if surface width is smaller than scissor width. + if (surfaceWidth < scissorWidth) { + // We will narrow the surface percentage to keep aspect ratio. + surfacePercentageH *= (float) surfaceWidth / scissorWidth; + } + // Determine the final t pos, also limit the legal t pos to prevent from out of range. + float t = coordinateT + surfacePercentageH > 1f ? 1f - surfacePercentageH : coordinateT; + // Traverse the t pos in texture coordinates array and adjust the t pos accordingly. + for (int i = 1; i < mCurrentTexCoordinate.length; i += 2) { + // indices 1, 3 and 11 are the end of t coordinates. + if (i == 1 || i == 3 || i == 11) { + mCurrentTexCoordinate[i] = Math.min(1f, t + surfacePercentageH); + } else { + mCurrentTexCoordinate[i] = t; + } + } + } + + mTextureBuffer.put(mCurrentTexCoordinate); + mTextureBuffer.position(0); + } + + /** + * Called to dump current state. + * @param prefix prefix. + * @param fd fd. + * @param out out. + * @param args args. + */ + public void dump(String prefix, FileDescriptor fd, PrintWriter out, String[] args) { + StringBuilder sb = new StringBuilder(); + sb.append('{'); + if (mCurrentTexCoordinate != null) { + for (int i = 0; i < mCurrentTexCoordinate.length; i++) { + sb.append(mCurrentTexCoordinate[i]).append(','); + if (i == mCurrentTexCoordinate.length - 1) { + sb.deleteCharAt(sb.length() - 1); + } + } + } + sb.append('}'); + out.print(prefix); out.print("mTexCoordinates="); out.println(sb.toString()); + } } diff --git a/packages/SystemUI/src/com/android/systemui/glwallpaper/ImageWallpaperRenderer.java b/packages/SystemUI/src/com/android/systemui/glwallpaper/ImageWallpaperRenderer.java index 21711fb1890c..93d8dd6146a6 100644 --- a/packages/SystemUI/src/com/android/systemui/glwallpaper/ImageWallpaperRenderer.java +++ b/packages/SystemUI/src/com/android/systemui/glwallpaper/ImageWallpaperRenderer.java @@ -29,6 +29,8 @@ import android.graphics.Rect; import android.util.Log; import android.util.MathUtils; import android.util.Size; +import android.view.DisplayInfo; +import android.view.WindowManager; import com.android.systemui.R; @@ -41,8 +43,8 @@ import java.io.PrintWriter; public class ImageWallpaperRenderer implements GLWallpaperRenderer, ImageRevealHelper.RevealStateListener { private static final String TAG = ImageWallpaperRenderer.class.getSimpleName(); - private static final float SCALE_VIEWPORT_MIN = 0.98f; - private static final float SCALE_VIEWPORT_MAX = 1f; + private static final float SCALE_VIEWPORT_MIN = 1f; + private static final float SCALE_VIEWPORT_MAX = 1.1f; private final WallpaperManager mWallpaperManager; private final ImageGLProgram mProgram; @@ -51,8 +53,13 @@ public class ImageWallpaperRenderer implements GLWallpaperRenderer, private final ImageRevealHelper mImageRevealHelper; private SurfaceProxy mProxy; - private Rect mSurfaceSize; + private final Rect mScissor; + private final Rect mSurfaceSize = new Rect(); + private final Rect mViewport = new Rect(); private Bitmap mBitmap; + private boolean mScissorMode; + private float mXOffset; + private float mYOffset; public ImageWallpaperRenderer(Context context, SurfaceProxy proxy) { mWallpaperManager = context.getSystemService(WallpaperManager.class); @@ -60,6 +67,11 @@ public class ImageWallpaperRenderer implements GLWallpaperRenderer, Log.w(TAG, "WallpaperManager not available"); } + DisplayInfo displayInfo = new DisplayInfo(); + WindowManager wm = context.getSystemService(WindowManager.class); + wm.getDefaultDisplay().getDisplayInfo(displayInfo); + mScissor = new Rect(0, 0, displayInfo.logicalWidth, displayInfo.logicalHeight); + mProxy = proxy; mProgram = new ImageGLProgram(context); mWallpaper = new ImageGLWallpaper(mProgram); @@ -91,7 +103,7 @@ public class ImageWallpaperRenderer implements GLWallpaperRenderer, mBitmap = mWallpaperManager.getBitmap(); mWallpaperManager.forgetLoadedWallpaper(); if (mBitmap != null) { - mSurfaceSize = new Rect(0, 0, mBitmap.getWidth(), mBitmap.getHeight()); + mSurfaceSize.set(0, 0, mBitmap.getWidth(), mBitmap.getHeight()); } } return mBitmap != null; @@ -107,13 +119,17 @@ public class ImageWallpaperRenderer implements GLWallpaperRenderer, float threshold = mImageProcessHelper.getThreshold(); float reveal = mImageRevealHelper.getReveal(); - glClear(GL_COLOR_BUFFER_BIT); - glUniform1f(mWallpaper.getHandle(ImageGLWallpaper.U_AOD2OPACITY), 1); glUniform1f(mWallpaper.getHandle(ImageGLWallpaper.U_PER85), threshold); glUniform1f(mWallpaper.getHandle(ImageGLWallpaper.U_REVEAL), reveal); - scaleViewport(reveal); + glClear(GL_COLOR_BUFFER_BIT); + // We only need to scale viewport while doing transition. + if (mScissorMode) { + scaleViewport(reveal); + } else { + glViewport(0, 0, mSurfaceSize.width(), mSurfaceSize.height()); + } mWallpaper.useTexture(); mWallpaper.draw(); } @@ -124,6 +140,15 @@ public class ImageWallpaperRenderer implements GLWallpaperRenderer, } @Override + public void updateOffsets(float xOffset, float yOffset) { + mXOffset = xOffset; + mYOffset = yOffset; + int left = (int) ((mSurfaceSize.width() - mScissor.width()) * xOffset); + int right = left + mScissor.width(); + mScissor.set(left, mScissor.top, right, mScissor.bottom); + } + + @Override public Size reportSurfaceSize() { return new Size(mSurfaceSize.width(), mSurfaceSize.height()); } @@ -134,15 +159,18 @@ public class ImageWallpaperRenderer implements GLWallpaperRenderer, } private void scaleViewport(float reveal) { - int width = mSurfaceSize.width(); - int height = mSurfaceSize.height(); + int left = mScissor.left; + int top = mScissor.top; + int width = mScissor.width(); + int height = mScissor.height(); // Interpolation between SCALE_VIEWPORT_MAX and SCALE_VIEWPORT_MIN by reveal. - float vpScaled = MathUtils.lerp(SCALE_VIEWPORT_MAX, SCALE_VIEWPORT_MIN, reveal); + float vpScaled = MathUtils.lerp(SCALE_VIEWPORT_MIN, SCALE_VIEWPORT_MAX, reveal); // Calculate the offset amount from the lower left corner. - float offset = (SCALE_VIEWPORT_MAX - vpScaled) / 2; + float offset = (SCALE_VIEWPORT_MIN - vpScaled) / 2; // Change the viewport. - glViewport((int) (width * offset), (int) (height * offset), + mViewport.set((int) (left + width * offset), (int) (top + height * offset), (int) (width * vpScaled), (int) (height * vpScaled)); + glViewport(mViewport.left, mViewport.top, mViewport.right, mViewport.bottom); } @Override @@ -152,11 +180,19 @@ public class ImageWallpaperRenderer implements GLWallpaperRenderer, @Override public void onRevealStart() { + mScissorMode = true; + // Use current display area of texture. + mWallpaper.adjustTextureCoordinates(mSurfaceSize, mScissor, mXOffset, mYOffset); mProxy.preRender(); } @Override public void onRevealEnd() { + mScissorMode = false; + // reset texture coordinates to use full texture. + mWallpaper.adjustTextureCoordinates(null, null, 0, 0); + // We need draw full texture back before finishing render. + mProxy.requestRender(); mProxy.postRender(); } @@ -164,6 +200,12 @@ public class ImageWallpaperRenderer implements GLWallpaperRenderer, public void dump(String prefix, FileDescriptor fd, PrintWriter out, String[] args) { out.print(prefix); out.print("mProxy="); out.print(mProxy); out.print(prefix); out.print("mSurfaceSize="); out.print(mSurfaceSize); + out.print(prefix); out.print("mScissor="); out.print(mScissor); + out.print(prefix); out.print("mViewport="); out.print(mViewport); + out.print(prefix); out.print("mScissorMode="); out.print(mScissorMode); + out.print(prefix); out.print("mXOffset="); out.print(mXOffset); + out.print(prefix); out.print("mYOffset="); out.print(mYOffset); out.print(prefix); out.print("threshold="); out.print(mImageProcessHelper.getThreshold()); + mWallpaper.dump(prefix, fd, out, args); } } diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardSliceProvider.java b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardSliceProvider.java index d4c73668d0ed..20477975a6dd 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardSliceProvider.java +++ b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardSliceProvider.java @@ -104,15 +104,19 @@ public class KeyguardSliceProvider extends SliceProvider implements private final AlarmManager.OnAlarmListener mUpdateNextAlarm = this::updateNextAlarm; private final HashSet<Integer> mMediaInvisibleStates; private final Object mMediaToken = new Object(); - private SettableWakeLock mMediaWakeLock; - private ZenModeController mZenModeController; + @VisibleForTesting + protected SettableWakeLock mMediaWakeLock; + @VisibleForTesting + protected ZenModeController mZenModeController; private String mDatePattern; private DateFormat mDateFormat; private String mLastText; private boolean mRegistered; private String mNextAlarm; private NextAlarmController mNextAlarmController; + @VisibleForTesting protected AlarmManager mAlarmManager; + @VisibleForTesting protected ContentResolver mContentResolver; private AlarmManager.AlarmClockInfo mNextAlarmInfo; private PendingIntent mPendingIntent; @@ -297,22 +301,44 @@ public class KeyguardSliceProvider extends SliceProvider implements @Override public boolean onCreateSliceProvider() { - mAlarmManager = getContext().getSystemService(AlarmManager.class); - mContentResolver = getContext().getContentResolver(); - mNextAlarmController = new NextAlarmControllerImpl(getContext()); - mNextAlarmController.addCallback(this); - mZenModeController = new ZenModeControllerImpl(getContext(), mHandler); - mZenModeController.addCallback(this); - mDatePattern = getContext().getString(R.string.system_ui_aod_date_pattern); - mPendingIntent = PendingIntent.getActivity(getContext(), 0, new Intent(), 0); - mMediaWakeLock = new SettableWakeLock(WakeLock.createPartial(getContext(), "media"), - "media"); - KeyguardSliceProvider.sInstance = this; - registerClockUpdate(); - updateClockLocked(); + synchronized (this) { + KeyguardSliceProvider oldInstance = KeyguardSliceProvider.sInstance; + if (oldInstance != null) { + oldInstance.onDestroy(); + } + + mAlarmManager = getContext().getSystemService(AlarmManager.class); + mContentResolver = getContext().getContentResolver(); + mNextAlarmController = new NextAlarmControllerImpl(getContext()); + mNextAlarmController.addCallback(this); + mZenModeController = new ZenModeControllerImpl(getContext(), mHandler); + mZenModeController.addCallback(this); + mDatePattern = getContext().getString(R.string.system_ui_aod_date_pattern); + mPendingIntent = PendingIntent.getActivity(getContext(), 0, new Intent(), 0); + mMediaWakeLock = new SettableWakeLock(WakeLock.createPartial(getContext(), "media"), + "media"); + KeyguardSliceProvider.sInstance = this; + registerClockUpdate(); + updateClockLocked(); + } return true; } + @VisibleForTesting + protected void onDestroy() { + synchronized (this) { + mNextAlarmController.removeCallback(this); + mZenModeController.removeCallback(this); + mMediaWakeLock.setAcquired(false); + mAlarmManager.cancel(mUpdateNextAlarm); + if (mRegistered) { + mRegistered = false; + getKeyguardUpdateMonitor().removeCallback(mKeyguardUpdateMonitorCallback); + getContext().unregisterReceiver(mIntentReceiver); + } + } + } + @Override public void onZenChanged(int zen) { notifyChange(); @@ -350,7 +376,8 @@ public class KeyguardSliceProvider extends SliceProvider implements * Registers a broadcast receiver for clock updates, include date, time zone and manually * changing the date/time via the settings app. */ - private void registerClockUpdate() { + @VisibleForTesting + protected void registerClockUpdate() { synchronized (this) { if (mRegistered) { return; diff --git a/packages/SystemUI/src/com/android/systemui/qs/PagedTileLayout.java b/packages/SystemUI/src/com/android/systemui/qs/PagedTileLayout.java index e22a21ad1fed..991d9fa549ac 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/PagedTileLayout.java +++ b/packages/SystemUI/src/com/android/systemui/qs/PagedTileLayout.java @@ -244,7 +244,9 @@ public class PagedTileLayout extends ViewPager implements QSTileLayout { private void emptyAndInflateOrRemovePages() { final int nTiles = mTiles.size(); - int numPages = nTiles / mPages.get(0).maxTiles(); + // We should always have at least one page, even if it's empty. + int numPages = Math.max(nTiles / mPages.get(0).maxTiles(), 1); + // Add one more not full page if needed numPages += (nTiles % mPages.get(0).maxTiles() == 0 ? 0 : 1); @@ -434,11 +436,14 @@ public class PagedTileLayout extends ViewPager implements QSTileLayout { } public boolean isFull() { - return mRecords.size() >= mColumns * mRows; + return mRecords.size() >= maxTiles(); } public int maxTiles() { - return mColumns * mRows; + // Each page should be able to hold at least one tile. If there's not enough room to + // show even 1 or there are no tiles, it probably means we are in the middle of setting + // up. + return Math.max(mColumns * mRows, 1); } @Override diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSTileHost.java b/packages/SystemUI/src/com/android/systemui/qs/QSTileHost.java index 3c4898c7658b..fed59a526bab 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSTileHost.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSTileHost.java @@ -19,6 +19,7 @@ import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.res.Resources; +import android.os.Build; import android.os.Handler; import android.os.Looper; import android.os.UserHandle; @@ -48,6 +49,7 @@ import com.android.systemui.statusbar.phone.StatusBar; import com.android.systemui.statusbar.phone.StatusBarIconController; import com.android.systemui.tuner.TunerService; import com.android.systemui.tuner.TunerService.Tunable; +import com.android.systemui.util.leak.GarbageMonitor; import java.io.FileDescriptor; import java.io.PrintWriter; @@ -259,12 +261,19 @@ public class QSTileHost implements QSHost, Tunable, PluginListener<QSFactory>, D } } mCurrentUser = currentUser; + List<String> currentSpecs = new ArrayList(mTileSpecs); mTileSpecs.clear(); mTileSpecs.addAll(tileSpecs); mTiles.clear(); mTiles.putAll(newTiles); - for (int i = 0; i < mCallbacks.size(); i++) { - mCallbacks.get(i).onTilesChanged(); + if (newTiles.isEmpty() && !tileSpecs.isEmpty()) { + // If we didn't manage to create any tiles, set it to empty (default) + if (DEBUG) Log.d(TAG, "No valid tiles on tuning changed. Setting to default."); + changeTiles(currentSpecs, loadTileSpecs(mContext, "")); + } else { + for (int i = 0; i < mCallbacks.size(); i++) { + mCallbacks.get(i).onTilesChanged(); + } } } @@ -364,6 +373,10 @@ public class QSTileHost implements QSHost, Tunable, PluginListener<QSFactory>, D if (tile.equals("default")) { if (!addedDefault) { tiles.addAll(Arrays.asList(defaultTileList.split(","))); + if (Build.IS_DEBUGGABLE + && GarbageMonitor.MemoryTile.ADD_TO_DEFAULT_ON_DEBUGGABLE_BUILDS) { + tiles.add(GarbageMonitor.MemoryTile.TILE_SPEC); + } addedDefault = true; } } else { diff --git a/packages/SystemUI/src/com/android/systemui/qs/customize/TileAdapter.java b/packages/SystemUI/src/com/android/systemui/qs/customize/TileAdapter.java index 8ed5424cf673..2542abdbef72 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/customize/TileAdapter.java +++ b/packages/SystemUI/src/com/android/systemui/qs/customize/TileAdapter.java @@ -19,6 +19,7 @@ import android.app.AlertDialog.Builder; import android.content.ComponentName; import android.content.Context; import android.content.DialogInterface; +import android.content.res.Resources; import android.graphics.Canvas; import android.graphics.drawable.Drawable; import android.os.Handler; @@ -54,7 +55,6 @@ import java.util.ArrayList; import java.util.List; public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileStateListener { - private static final int MIN_NUM_TILES = 6; private static final long DRAG_LENGTH = 100; private static final float DRAG_SCALE = 1.2f; public static final long MOVE_DURATION = 150; @@ -79,6 +79,7 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta private final ItemTouchHelper mItemTouchHelper; private final ItemDecoration mDecoration; private final AccessibilityManager mAccessibilityManager; + private final int mMinNumTiles; private int mEditIndex; private int mTileDividerIndex; private boolean mNeedsFocus; @@ -97,6 +98,7 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta mAccessibilityManager = context.getSystemService(AccessibilityManager.class); mItemTouchHelper = new ItemTouchHelper(mCallbacks); mDecoration = new TileItemDecoration(context); + mMinNumTiles = context.getResources().getInteger(R.integer.quick_settings_min_num_tiles); } public void setHost(QSTileHost host) { @@ -247,15 +249,17 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta return; } if (holder.getItemViewType() == TYPE_EDIT) { - final int titleResId; + final String titleText; + Resources res = mContext.getResources(); if (mCurrentDrag == null) { - titleResId = R.string.drag_to_add_tiles; + titleText = res.getString(R.string.drag_to_add_tiles); } else if (!canRemoveTiles() && mCurrentDrag.getAdapterPosition() < mEditIndex) { - titleResId = R.string.drag_to_remove_disabled; + titleText = res.getString(R.string.drag_to_remove_disabled, mMinNumTiles); } else { - titleResId = R.string.drag_to_remove_tiles; + titleText = res.getString(R.string.drag_to_remove_tiles); } - ((TextView) holder.itemView.findViewById(android.R.id.title)).setText(titleResId); + + ((TextView) holder.itemView.findViewById(android.R.id.title)).setText(titleText); return; } if (holder.getItemViewType() == TYPE_ACCESSIBLE_DROP) { @@ -337,7 +341,7 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta } private boolean canRemoveTiles() { - return mCurrentSpecs.size() > MIN_NUM_TILES; + return mCurrentSpecs.size() > mMinNumTiles; } private void selectPosition(int position, View v) { diff --git a/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java b/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java index b0f77ceccd58..e5caf68c416e 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java +++ b/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java @@ -27,6 +27,9 @@ import static com.android.systemui.shared.system.QuickStepContract.KEY_EXTRA_INP import static com.android.systemui.shared.system.QuickStepContract.KEY_EXTRA_SUPPORTS_WINDOW_CORNERS; import static com.android.systemui.shared.system.QuickStepContract.KEY_EXTRA_SYSUI_PROXY; import static com.android.systemui.shared.system.QuickStepContract.KEY_EXTRA_WINDOW_CORNER_RADIUS; +import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_BOUNCER_SHOWING; +import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING; +import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING_OCCLUDED; import android.annotation.FloatRange; import android.app.ActivityTaskManager; @@ -53,7 +56,6 @@ import android.view.MotionEvent; import android.view.accessibility.AccessibilityManager; import com.android.internal.policy.ScreenDecorationsUtils; -import com.android.systemui.Dependency; import com.android.systemui.Dumpable; import com.android.systemui.SysUiServiceProvider; import com.android.systemui.recents.OverviewProxyService.OverviewProxyListener; @@ -68,6 +70,7 @@ import com.android.systemui.statusbar.phone.NavigationBarFragment; import com.android.systemui.statusbar.phone.NavigationBarView; import com.android.systemui.statusbar.phone.NavigationModeController; import com.android.systemui.statusbar.phone.StatusBar; +import com.android.systemui.statusbar.phone.StatusBarWindowCallback; import com.android.systemui.statusbar.phone.StatusBarWindowController; import com.android.systemui.statusbar.policy.CallbackController; import com.android.systemui.statusbar.policy.DeviceProvisionedController; @@ -91,7 +94,6 @@ public class OverviewProxyService implements CallbackController<OverviewProxyLis private static final String ACTION_QUICKSTEP = "android.intent.action.QUICKSTEP_SERVICE"; public static final String TAG_OPS = "OverviewProxyService"; - public static final boolean DEBUG_OVERVIEW_PROXY = false; private static final long BACKOFF_MILLIS = 1000; private static final long DEFERRED_CALLBACK_MILLIS = 5000; @@ -100,6 +102,8 @@ public class OverviewProxyService implements CallbackController<OverviewProxyLis private final Context mContext; private final Handler mHandler; + private final NavigationBarController mNavBarController; + private final StatusBarWindowController mStatusBarWinController; private final Runnable mConnectionRunnable = this::internalConnectToCurrentUser; private final ComponentName mRecentsComponentName; private final DeviceProvisionedController mDeviceProvisionedController; @@ -114,7 +118,7 @@ public class OverviewProxyService implements CallbackController<OverviewProxyLis private boolean mBound; private boolean mIsEnabled; private int mCurrentBoundedUserId = -1; - private float mBackButtonAlpha; + private float mNavBarButtonAlpha; private MotionEvent mStatusBarGestureDownEvent; private float mWindowCornerRadius; private boolean mSupportsRoundedCornersOnWindows; @@ -240,22 +244,25 @@ public class OverviewProxyService implements CallbackController<OverviewProxyLis } @Override - public void setBackButtonAlpha(float alpha, boolean animate) { - if (!verifyCaller("setBackButtonAlpha")) { + public void setNavBarButtonAlpha(float alpha, boolean animate) { + if (!verifyCaller("setNavBarButtonAlpha")) { return; } long token = Binder.clearCallingIdentity(); try { - mBackButtonAlpha = alpha; - mHandler.post(() -> { - notifyBackButtonAlphaChanged(alpha, animate); - }); + mNavBarButtonAlpha = alpha; + mHandler.post(() -> notifyNavBarButtonAlphaChanged(alpha, animate)); } finally { Binder.restoreCallingIdentity(token); } } @Override + public void setBackButtonAlpha(float alpha, boolean animate) { + setNavBarButtonAlpha(alpha, animate); + } + + @Override public void onAssistantProgress(@FloatRange(from = 0.0, to = 1.0) float progress) { if (!verifyCaller("onAssistantProgress")) { return; @@ -441,14 +448,20 @@ public class OverviewProxyService implements CallbackController<OverviewProxyLis } }; + private final StatusBarWindowCallback mStatusBarWindowCallback = this::onStatusBarStateChanged; + // This is the death handler for the binder from the launcher service private final IBinder.DeathRecipient mOverviewServiceDeathRcpt = this::cleanupAfterDeath; @Inject - public OverviewProxyService(Context context, DeviceProvisionedController provisionController) { + public OverviewProxyService(Context context, DeviceProvisionedController provisionController, + NavigationBarController navBarController, NavigationModeController navModeController, + StatusBarWindowController statusBarWinController) { mContext = context; mHandler = new Handler(); + mNavBarController = navBarController; + mStatusBarWinController = statusBarWinController; mDeviceProvisionedController = provisionController; mConnectionBackoffAttempts = 0; mRecentsComponentName = ComponentName.unflattenFromString(context.getString( @@ -460,10 +473,10 @@ public class OverviewProxyService implements CallbackController<OverviewProxyLis .supportsRoundedCornersOnWindows(mContext.getResources()); // Assumes device always starts with back button until launcher tells it that it does not - mBackButtonAlpha = 1.0f; + mNavBarButtonAlpha = 1.0f; // Listen for nav bar mode changes - mNavBarMode = Dependency.get(NavigationModeController.class).addListener(this); + mNavBarMode = navModeController.addListener(this); // Listen for device provisioned/user setup updateEnabledState(); @@ -476,6 +489,9 @@ public class OverviewProxyService implements CallbackController<OverviewProxyLis PatternMatcher.PATTERN_LITERAL); filter.addAction(Intent.ACTION_PACKAGE_CHANGED); mContext.registerReceiver(mLauncherStateChangedReceiver, filter); + + // Listen for status bar state changes + statusBarWinController.registerCallback(mStatusBarWindowCallback); } public void notifyBackAction(boolean completed, int downX, int downY, boolean isButton, @@ -513,11 +529,10 @@ public class OverviewProxyService implements CallbackController<OverviewProxyLis } private void updateSystemUiStateFlags() { - final NavigationBarController navBar = Dependency.get(NavigationBarController.class); - final NavigationBarFragment navBarFragment = navBar.getDefaultNavigationBarFragment(); - final NavigationBarView navBarView = navBar.getNavigationBarView(mContext.getDisplayId()); - final StatusBarWindowController statusBarController = - Dependency.get(StatusBarWindowController.class); + final NavigationBarFragment navBarFragment = + mNavBarController.getDefaultNavigationBarFragment(); + final NavigationBarView navBarView = + mNavBarController.getNavigationBarView(mContext.getDisplayId()); mSysUiStateFlags = 0; if (navBarFragment != null) { @@ -526,8 +541,8 @@ public class OverviewProxyService implements CallbackController<OverviewProxyLis if (navBarView != null) { navBarView.updateSystemUiStateFlags(); } - if (statusBarController != null) { - statusBarController.updateSystemUiStateFlags(); + if (mStatusBarWinController != null) { + mStatusBarWinController.notifyStateChangedCallbacks(); } notifySystemUiStateFlags(mSysUiStateFlags); } @@ -542,6 +557,16 @@ public class OverviewProxyService implements CallbackController<OverviewProxyLis } } + private void onStatusBarStateChanged(boolean keyguardShowing, boolean keyguardOccluded, + boolean bouncerShowing) { + int displayId = mContext.getDisplayId(); + setSystemUiStateFlag(SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING, + keyguardShowing && !keyguardOccluded, displayId); + setSystemUiStateFlag(SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING_OCCLUDED, + keyguardShowing && keyguardOccluded, displayId); + setSystemUiStateFlag(SYSUI_STATE_BOUNCER_SHOWING, bouncerShowing, displayId); + } + /** * Sets the navbar region which can receive touch inputs */ @@ -561,7 +586,7 @@ public class OverviewProxyService implements CallbackController<OverviewProxyLis } public float getBackButtonAlpha() { - return mBackButtonAlpha; + return mNavBarButtonAlpha; } public void cleanupAfterDeath() { @@ -633,7 +658,7 @@ public class OverviewProxyService implements CallbackController<OverviewProxyLis public void addCallback(OverviewProxyListener listener) { mConnectionCallbacks.add(listener); listener.onConnectionChanged(mOverviewProxy != null); - listener.onBackButtonAlphaChanged(mBackButtonAlpha, false); + listener.onNavBarButtonAlphaChanged(mNavBarButtonAlpha, false); listener.onSystemUiStateChanged(mSysUiStateFlags); } @@ -664,14 +689,14 @@ public class OverviewProxyService implements CallbackController<OverviewProxyLis if (mOverviewProxy != null) { mOverviewProxy.asBinder().unlinkToDeath(mOverviewServiceDeathRcpt, 0); mOverviewProxy = null; - notifyBackButtonAlphaChanged(1f, false /* animate */); + notifyNavBarButtonAlphaChanged(1f, false /* animate */); notifyConnectionChanged(); } } - private void notifyBackButtonAlphaChanged(float alpha, boolean animate) { + private void notifyNavBarButtonAlphaChanged(float alpha, boolean animate) { for (int i = mConnectionCallbacks.size() - 1; i >= 0; --i) { - mConnectionCallbacks.get(i).onBackButtonAlphaChanged(alpha, animate); + mConnectionCallbacks.get(i).onNavBarButtonAlphaChanged(alpha, animate); } } @@ -762,7 +787,8 @@ public class OverviewProxyService implements CallbackController<OverviewProxyLis default void onQuickStepStarted() {} default void onOverviewShown(boolean fromHome) {} default void onQuickScrubStarted() {} - default void onBackButtonAlphaChanged(float alpha, boolean animate) {} + /** Notify changes in the nav bar button alpha */ + default void onNavBarButtonAlphaChanged(float alpha, boolean animate) {} default void onSystemUiStateChanged(int sysuiStateFlags) {} default void onAssistantProgress(@FloatRange(from = 0.0, to = 1.0) float progress) {} default void onAssistantGestureCompletion(float velocity) {} diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java b/packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java index 341461bf7202..11ca94f6f4e6 100644 --- a/packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java +++ b/packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java @@ -92,6 +92,11 @@ import java.io.OutputStream; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; + + /** * POD used in the AsyncTask which saves an image in the background. @@ -446,6 +451,8 @@ class GlobalScreenshot { static final String EXTRA_CANCEL_NOTIFICATION = "android:screenshot_cancel_notification"; static final String EXTRA_DISALLOW_ENTER_PIP = "android:screenshot_disallow_enter_pip"; + private static final String TAG = "GlobalScreenshot"; + private static final int SCREENSHOT_FLASH_TO_PEAK_DURATION = 130; private static final int SCREENSHOT_DROP_IN_DURATION = 430; private static final int SCREENSHOT_DROP_OUT_DELAY = 500; @@ -902,11 +909,19 @@ class GlobalScreenshot { * appropriate signals to the system (ie. to dismiss the keyguard if necessary). */ public static class ActionProxyReceiver extends BroadcastReceiver { + static final int CLOSE_WINDOWS_TIMEOUT_MILLIS = 3000; + @Override public void onReceive(Context context, final Intent intent) { Runnable startActivityRunnable = () -> { - ActivityManagerWrapper.getInstance().closeSystemWindows( - SYSTEM_DIALOG_REASON_SCREENSHOT); + try { + ActivityManagerWrapper.getInstance().closeSystemWindows( + SYSTEM_DIALOG_REASON_SCREENSHOT).get( + CLOSE_WINDOWS_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS); + } catch (TimeoutException | InterruptedException | ExecutionException e) { + Slog.e(TAG, "Unable to share screenshot", e); + return; + } Intent actionIntent = intent.getParcelableExtra(EXTRA_ACTION_INTENT); if (intent.getBooleanExtra(EXTRA_CANCEL_NOTIFICATION, false)) { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java b/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java index fd76a79eab2e..ca12deb3904e 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java @@ -43,6 +43,7 @@ import com.android.internal.annotations.VisibleForTesting; import com.android.internal.app.IBatteryStats; import com.android.internal.logging.nano.MetricsProto; import com.android.internal.widget.LockPatternUtils; +import com.android.internal.widget.ViewClippingUtil; import com.android.keyguard.KeyguardUpdateMonitor; import com.android.keyguard.KeyguardUpdateMonitorCallback; import com.android.settingslib.Utils; @@ -118,6 +119,13 @@ public class KeyguardIndicationController implements StateListener, private final DevicePolicyManager mDevicePolicyManager; private boolean mDozing; + private final ViewClippingUtil.ClippingParameters mClippingParams = + new ViewClippingUtil.ClippingParameters() { + @Override + public boolean shouldFinish(View view) { + return view == mIndicationArea; + } + }; /** * Creates a new KeyguardIndicationController and registers callbacks. @@ -413,6 +421,7 @@ public class KeyguardIndicationController implements StateListener, R.integer.wired_charging_keyguard_text_animation_duration_down); textView.animate().cancel(); float translation = textView.getTranslationY(); + ViewClippingUtil.setClippingDeactivated(textView, true, mClippingParams); textView.animate() .translationYBy(yTranslation) .setInterpolator(Interpolators.LINEAR) @@ -434,6 +443,8 @@ public class KeyguardIndicationController implements StateListener, @Override public void onAnimationEnd(Animator animation) { if (mCancelled) { + ViewClippingUtil.setClippingDeactivated(textView, false, + mClippingParams); return; } textView.animate() @@ -445,6 +456,12 @@ public class KeyguardIndicationController implements StateListener, public void onAnimationCancel(Animator animation) { textView.setTranslationY(translation); } + + @Override + public void onAnimationEnd(Animator animation) { + ViewClippingUtil.setClippingDeactivated(textView, false, + mClippingParams); + } }); } }); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationLockscreenUserManagerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationLockscreenUserManagerImpl.java index 905a8e68f3d1..4ea1ed5b9451 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationLockscreenUserManagerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationLockscreenUserManagerImpl.java @@ -320,7 +320,7 @@ public class NotificationLockscreenUserManagerImpl implements private boolean hideSilentNotificationsOnLockscreen() { return Settings.Secure.getInt(mContext.getContentResolver(), - Settings.Secure.LOCK_SCREEN_SHOW_SILENT_NOTIFICATIONS, 0) == 0; + Settings.Secure.LOCK_SCREEN_SHOW_SILENT_NOTIFICATIONS, 1) == 0; } private void setShowLockscreenNotifications(boolean show) { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationMediaManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationMediaManager.java index 75ef18545fdf..6c36ab95f923 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationMediaManager.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationMediaManager.java @@ -488,6 +488,7 @@ public class NotificationMediaManager implements Dumpable { if (bmp != null) { artworkDrawable = new BitmapDrawable(mBackdropBack.getResources(), bmp); } + boolean hasMediaArtwork = artworkDrawable != null; boolean allowWhenShade = false; if (ENABLE_LOCKSCREEN_WALLPAPER && artworkDrawable == null) { Bitmap lockWallpaper = @@ -506,7 +507,7 @@ public class NotificationMediaManager implements Dumpable { boolean hideBecauseOccluded = shadeController != null && shadeController.isOccluded(); final boolean hasArtwork = artworkDrawable != null; - mColorExtractor.setHasBackdrop(hasArtwork); + mColorExtractor.setHasMediaArtwork(hasMediaArtwork); if (mScrimController != null) { mScrimController.setHasBackdrop(hasArtwork); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShelf.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShelf.java index fc2705f054e0..312ea473d9e6 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShelf.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShelf.java @@ -929,7 +929,6 @@ public class NotificationShelf extends ActivatableNotificationView implements public void setAnimationsEnabled(boolean enabled) { mAnimationsEnabled = enabled; - mCollapsedIcons.setAnimationsEnabled(enabled); if (!enabled) { // we need to wait with enabling the animations until the first frame has passed mShelfIcons.setAnimationsEnabled(false); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationViewHierarchyManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationViewHierarchyManager.java index b3da62eef35b..792594e7a5e4 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationViewHierarchyManager.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationViewHierarchyManager.java @@ -16,8 +16,11 @@ package com.android.systemui.statusbar; +import static com.android.systemui.Dependency.MAIN_HANDLER_NAME; + import android.content.Context; import android.content.res.Resources; +import android.os.Handler; import android.os.Trace; import android.os.UserHandle; import android.util.Log; @@ -35,7 +38,7 @@ import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow import com.android.systemui.statusbar.notification.stack.NotificationListContainer; import com.android.systemui.statusbar.phone.NotificationGroupManager; import com.android.systemui.statusbar.phone.ShadeController; -import com.android.systemui.statusbar.phone.UnlockMethodCache; +import com.android.systemui.util.Assert; import java.util.ArrayList; import java.util.HashMap; @@ -43,6 +46,7 @@ import java.util.List; import java.util.Stack; import javax.inject.Inject; +import javax.inject.Named; import javax.inject.Singleton; import dagger.Lazy; @@ -58,6 +62,8 @@ import dagger.Lazy; public class NotificationViewHierarchyManager implements DynamicPrivacyController.Listener { private static final String TAG = "NotificationViewHierarchyManager"; + private final Handler mHandler; + //TODO: change this top <Entry, List<Entry>>? private final HashMap<ExpandableNotificationRow, List<ExpandableNotificationRow>> mTmpChildOrderMap = new HashMap<>(); @@ -84,8 +90,15 @@ public class NotificationViewHierarchyManager implements DynamicPrivacyControlle private NotificationPresenter mPresenter; private NotificationListContainer mListContainer; + // Used to help track down re-entrant calls to our update methods, which will cause bugs. + private boolean mPerformingUpdate; + // Hack to get around re-entrant call in onDynamicPrivacyChanged() until we can track down + // the problem. + private boolean mIsHandleDynamicPrivacyChangeScheduled; + @Inject public NotificationViewHierarchyManager(Context context, + @Named(MAIN_HANDLER_NAME) Handler mainHandler, NotificationLockscreenUserManager notificationLockscreenUserManager, NotificationGroupManager groupManager, VisualStabilityManager visualStabilityManager, @@ -94,6 +107,7 @@ public class NotificationViewHierarchyManager implements DynamicPrivacyControlle Lazy<ShadeController> shadeController, BubbleData bubbleData, DynamicPrivacyController privacyController) { + mHandler = mainHandler; mLockscreenUserManager = notificationLockscreenUserManager; mGroupManager = groupManager; mVisualStabilityManager = visualStabilityManager; @@ -119,6 +133,9 @@ public class NotificationViewHierarchyManager implements DynamicPrivacyControlle */ //TODO: Rewrite this to focus on Entries, or some other data object instead of views public void updateNotificationViews() { + Assert.isMainThread(); + beginUpdate(); + ArrayList<NotificationEntry> activeNotifications = mEntryManager.getNotificationData() .getActiveNotifications(); ArrayList<ExpandableNotificationRow> toShow = new ArrayList<>(activeNotifications.size()); @@ -244,9 +261,11 @@ public class NotificationViewHierarchyManager implements DynamicPrivacyControlle // clear the map again for the next usage mTmpChildOrderMap.clear(); - updateRowStates(); + updateRowStatesInternal(); mListContainer.onNotificationViewUpdateFinished(); + + endUpdate(); } private void addNotificationChildrenAndSort() { @@ -330,6 +349,13 @@ public class NotificationViewHierarchyManager implements DynamicPrivacyControlle * Updates expanded, dimmed and locked states of notification rows. */ public void updateRowStates() { + Assert.isMainThread(); + beginUpdate(); + updateRowStatesInternal(); + endUpdate(); + } + + private void updateRowStatesInternal() { Trace.beginSection("NotificationViewHierarchyManager#updateRowStates"); final int N = mListContainer.getContainerChildCount(); @@ -420,6 +446,34 @@ public class NotificationViewHierarchyManager implements DynamicPrivacyControlle @Override public void onDynamicPrivacyChanged() { + if (mPerformingUpdate) { + Log.w(TAG, "onDynamicPrivacyChanged made a re-entrant call"); + } + // This listener can be called from updateNotificationViews() via a convoluted listener + // chain, so we post here to prevent a re-entrant call. See b/136186188 + // TODO: Refactor away the need for this + if (!mIsHandleDynamicPrivacyChangeScheduled) { + mIsHandleDynamicPrivacyChangeScheduled = true; + mHandler.post(this::onHandleDynamicPrivacyChanged); + } + } + + private void onHandleDynamicPrivacyChanged() { + mIsHandleDynamicPrivacyChangeScheduled = false; updateNotificationViews(); } + + private void beginUpdate() { + if (mPerformingUpdate) { + throw new IllegalStateException("Re-entrant code during update."); + } + mPerformingUpdate = true; + } + + private void endUpdate() { + if (!mPerformingUpdate) { + throw new IllegalStateException("Manager state has become desynced."); + } + mPerformingUpdate = false; + } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ChannelEditorDialogController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ChannelEditorDialogController.kt index 5378f907e95a..8e6822770694 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ChannelEditorDialogController.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ChannelEditorDialogController.kt @@ -29,6 +29,7 @@ import android.graphics.drawable.Drawable import android.graphics.drawable.ColorDrawable import android.util.Log import android.view.Gravity +import android.view.View import android.view.ViewGroup.LayoutParams.MATCH_PARENT import android.view.ViewGroup.LayoutParams.WRAP_CONTENT import android.view.Window @@ -86,13 +87,17 @@ class ChannelEditorDialogController @Inject constructor( internal val groupNameLookup = hashMapOf<String, CharSequence>() private val channelGroupList = mutableListOf<NotificationChannelGroup>() + /** + * Give the controller all of the information it needs to present the dialog + * for a given app. Does a bunch of querying of NoMan, but won't present anything yet + */ fun prepareDialogForApp( appName: String, packageName: String, uid: Int, channels: Set<NotificationChannel>, appIcon: Drawable, - onSettingsClickListener: NotificationInfo.OnSettingsClickListener + onSettingsClickListener: NotificationInfo.OnSettingsClickListener? ) { this.appName = appName this.packageName = packageName @@ -156,6 +161,13 @@ class ChannelEditorDialogController @Inject constructor( dialog.show() } + /** + * Close the dialog without saving. For external callers + */ + fun close() { + done() + } + private fun done() { resetState() dialog.dismiss() @@ -235,6 +247,11 @@ class ChannelEditorDialogController @Inject constructor( } } + @VisibleForTesting + fun launchSettings(sender: View) { + onSettingsClickListener?.onClick(sender, null, appUid!!) + } + private fun initDialog() { dialog = Dialog(context) @@ -257,7 +274,7 @@ class ChannelEditorDialogController @Inject constructor( } findViewById<TextView>(R.id.see_more_button)?.setOnClickListener { - onSettingsClickListener?.onClick(it, null, appUid!!) + launchSettings(it) done() } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ChannelEditorListView.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ChannelEditorListView.kt index 6fe14777e41f..6faf77ec60c7 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ChannelEditorListView.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ChannelEditorListView.kt @@ -24,6 +24,7 @@ import android.content.Context import android.graphics.drawable.Drawable import android.text.TextUtils import android.transition.AutoTransition +import android.transition.Transition import android.transition.TransitionManager import android.util.AttributeSet import android.view.LayoutInflater @@ -62,6 +63,23 @@ class ChannelEditorListView(c: Context, attrs: AttributeSet) : LinearLayout(c, a val transition = AutoTransition() transition.duration = 200 + transition.addListener(object : Transition.TransitionListener { + override fun onTransitionEnd(p0: Transition?) { + notifySubtreeAccessibilityStateChangedIfNeeded() + } + + override fun onTransitionResume(p0: Transition?) { + } + + override fun onTransitionPause(p0: Transition?) { + } + + override fun onTransitionCancel(p0: Transition?) { + } + + override fun onTransitionStart(p0: Transition?) { + } + }) TransitionManager.beginDelayedTransition(this, transition) // Remove any rows diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationGutsManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationGutsManager.java index fe890fb3b471..b5a8aadf651f 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationGutsManager.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationGutsManager.java @@ -41,12 +41,14 @@ import com.android.internal.logging.MetricsLogger; import com.android.internal.logging.nano.MetricsProto; import com.android.systemui.Dependency; import com.android.systemui.Dumpable; +import com.android.systemui.SysUiServiceProvider; import com.android.systemui.plugins.statusbar.NotificationMenuRowPlugin; import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.statusbar.NotificationLifetimeExtender; import com.android.systemui.statusbar.NotificationLockscreenUserManager; import com.android.systemui.statusbar.NotificationPresenter; import com.android.systemui.statusbar.StatusBarState; +import com.android.systemui.statusbar.StatusBarStateControllerImpl; import com.android.systemui.statusbar.notification.NotificationActivityStarter; import com.android.systemui.statusbar.notification.VisualStabilityManager; import com.android.systemui.statusbar.notification.collection.NotificationEntry; @@ -97,6 +99,8 @@ public class NotificationGutsManager implements Dumpable, NotificationLifetimeEx @VisibleForTesting protected String mKeyToRemoveOnGutsClosed; + private StatusBar mStatusBar; + @Inject public NotificationGutsManager( Context context, @@ -114,6 +118,7 @@ public class NotificationGutsManager implements Dumpable, NotificationLifetimeEx mListContainer = listContainer; mCheckSaveListener = checkSave; mOnSettingsClickListener = onSettingsClick; + mStatusBar = SysUiServiceProvider.getComponent(mContext, StatusBar.class); } public void setNotificationActivityStarter( @@ -376,6 +381,34 @@ public class NotificationGutsManager implements Dumpable, NotificationLifetimeEx int x, int y, NotificationMenuRowPlugin.MenuItem menuItem) { + if (menuItem.getGutsView() instanceof NotificationInfo) { + if (mStatusBarStateController instanceof StatusBarStateControllerImpl) { + ((StatusBarStateControllerImpl) mStatusBarStateController) + .setLeaveOpenOnKeyguardHide(true); + } + + Runnable r = () -> Dependency.get(Dependency.MAIN_HANDLER).post( + () -> openGutsInternal(view, x, y, menuItem)); + + mStatusBar.executeRunnableDismissingKeyguard( + r, + null /* cancelAction */, + false /* dismissShade */, + true /* afterKeyguardGone */, + true /* deferred */); + + return true; + } + return openGutsInternal(view, x, y, menuItem); + } + + @VisibleForTesting + boolean openGutsInternal( + View view, + int x, + int y, + NotificationMenuRowPlugin.MenuItem menuItem) { + if (!(view instanceof ExpandableNotificationRow)) { return false; } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationInfo.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationInfo.java index 7c6c556b5241..148d83b5ab5c 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationInfo.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationInfo.java @@ -118,6 +118,7 @@ public class NotificationInfo extends LinearLayout implements NotificationGuts.G private int mStartingChannelImportance; private boolean mWasShownHighPriority; private boolean mPressedApply; + private boolean mPresentingChannelEditorDialog = false; /** * The last importance level chosen by the user. Null if the user has not chosen an importance @@ -447,11 +448,15 @@ public class NotificationInfo extends LinearLayout implements NotificationGuts.G private OnClickListener getTurnOffNotificationsClickListener() { return ((View view) -> { - if (mChannelEditorDialogController != null) { + if (!mPresentingChannelEditorDialog && mChannelEditorDialogController != null) { + mPresentingChannelEditorDialog = true; + mChannelEditorDialogController.prepareDialogForApp(mAppName, mPackageName, mAppUid, mUniqueChannelsInRow, mPkgIcon, mOnSettingsClickListener); - mChannelEditorDialogController.setOnFinishListener( - () -> closeControls(this, false)); + mChannelEditorDialogController.setOnFinishListener(() -> { + mPresentingChannelEditorDialog = false; + closeControls(this, false); + }); mChannelEditorDialogController.show(); } }); @@ -772,6 +777,13 @@ public class NotificationInfo extends LinearLayout implements NotificationGuts.G @Override public boolean handleCloseControls(boolean save, boolean force) { + if (mPresentingChannelEditorDialog && mChannelEditorDialogController != null) { + mPresentingChannelEditorDialog = false; + // No need for the finish listener because we're closing + mChannelEditorDialogController.setOnFinishListener(null); + mChannelEditorDialogController.close(); + } + // Save regardless of the importance so we can lock the importance field if the user wants // to keep getting notifications if (save) { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationSectionsManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationSectionsManager.java index 5747bb122fc4..170a4d570688 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationSectionsManager.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationSectionsManager.java @@ -19,7 +19,6 @@ package com.android.systemui.statusbar.notification.stack; import static com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayout.ROWS_GENTLE; import android.annotation.Nullable; -import android.content.Context; import android.content.Intent; import android.provider.Settings; import android.view.LayoutInflater; @@ -32,6 +31,8 @@ import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.statusbar.StatusBarState; import com.android.systemui.statusbar.notification.row.ActivatableNotificationView; import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow; +import com.android.systemui.statusbar.policy.ConfigurationController; +import com.android.systemui.statusbar.policy.ConfigurationController.ConfigurationListener; /** * Manages the boundaries of the two notification sections (high priority and low priority). Also @@ -43,8 +44,10 @@ class NotificationSectionsManager implements StackScrollAlgorithm.SectionProvide private final NotificationStackScrollLayout mParent; private final ActivityStarter mActivityStarter; private final StatusBarStateController mStatusBarStateController; + private final ConfigurationController mConfigurationController; private final boolean mUseMultipleSections; + private boolean mInitialized = false; private SectionHeaderView mGentleHeader; private boolean mGentleHeaderVisible = false; @Nullable private ExpandableNotificationRow mFirstGentleNotif; @@ -54,18 +57,29 @@ class NotificationSectionsManager implements StackScrollAlgorithm.SectionProvide NotificationStackScrollLayout parent, ActivityStarter activityStarter, StatusBarStateController statusBarStateController, + ConfigurationController configurationController, boolean useMultipleSections) { mParent = parent; mActivityStarter = activityStarter; mStatusBarStateController = statusBarStateController; + mConfigurationController = configurationController; mUseMultipleSections = useMultipleSections; } + /** Must be called before use. */ + void initialize(LayoutInflater layoutInflater) { + if (mInitialized) { + throw new IllegalStateException("NotificationSectionsManager already initialized"); + } + mInitialized = true; + reinflateViews(layoutInflater); + mConfigurationController.addCallback(mConfigurationListener); + } + /** - * Must be called before use. Should be called again whenever inflation-related things change, - * such as density or theme changes. + * Reinflates the entire notification header, including all decoration views. */ - void inflateViews(Context context) { + void reinflateViews(LayoutInflater layoutInflater) { int oldPos = -1; if (mGentleHeader != null) { if (mGentleHeader.getTransientContainer() != null) { @@ -76,7 +90,7 @@ class NotificationSectionsManager implements StackScrollAlgorithm.SectionProvide } } - mGentleHeader = (SectionHeaderView) LayoutInflater.from(context).inflate( + mGentleHeader = (SectionHeaderView) layoutInflater.inflate( R.layout.status_bar_notification_section_header, mParent, false); mGentleHeader.setOnHeaderClickListener(this::onGentleHeaderClick); mGentleHeader.setOnClearAllClickListener(this::onClearGentleNotifsClick); @@ -244,6 +258,13 @@ class NotificationSectionsManager implements StackScrollAlgorithm.SectionProvide return lastChildBeforeGap; } + private final ConfigurationListener mConfigurationListener = new ConfigurationListener() { + @Override + public void onLocaleListChanged() { + mGentleHeader.reinflateContents(); + } + }; + private void onGentleHeaderClick(View v) { Intent intent = new Intent(Settings.ACTION_NOTIFICATION_SETTINGS); mActivityStarter.startActivity( diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java index b53fe3a795fc..8fe34180203f 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java @@ -20,7 +20,7 @@ import static com.android.systemui.Dependency.ALLOW_NOTIFICATION_LONG_PRESS_NAME import static com.android.systemui.statusbar.notification.ActivityLaunchAnimator.ExpandAnimationParameters; import static com.android.systemui.statusbar.notification.stack.StackScrollAlgorithm.ANCHOR_SCROLLING; import static com.android.systemui.statusbar.notification.stack.StackStateAnimator.ANIMATION_DURATION_SWIPE; -import static com.android.systemui.statusbar.phone.NotificationIconAreaController.LOW_PRIORITY; +import static com.android.systemui.statusbar.phone.NotificationIconAreaController.HIGH_PRIORITY; import static com.android.systemui.util.InjectionInflationController.VIEW_CONTEXT; import static java.lang.annotation.RetentionPolicy.SOURCE; @@ -32,7 +32,6 @@ import android.animation.ValueAnimator; import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.Nullable; -import android.app.WallpaperManager; import android.content.Context; import android.content.Intent; import android.content.res.Configuration; @@ -143,6 +142,7 @@ import com.android.systemui.statusbar.policy.ConfigurationController.Configurati import com.android.systemui.statusbar.policy.HeadsUpUtil; import com.android.systemui.statusbar.policy.ScrollAdapter; import com.android.systemui.tuner.TunerService; +import com.android.systemui.util.Assert; import java.io.FileDescriptor; import java.io.PrintWriter; @@ -187,7 +187,7 @@ public class NotificationStackScrollLayout extends ViewGroup implements ScrollAd private int mCurrentStackHeight = Integer.MAX_VALUE; private final Paint mBackgroundPaint = new Paint(); private final boolean mShouldDrawNotificationBackground; - private boolean mLowPriorityBeforeSpeedBump; + private boolean mHighPriorityBeforeSpeedBump; private final boolean mAllowLongPress; private boolean mDismissRtl; @@ -515,6 +515,7 @@ public class NotificationStackScrollLayout extends ViewGroup implements ScrollAd NotificationRoundnessManager notificationRoundnessManager, AmbientPulseManager ambientPulseManager, DynamicPrivacyController dynamicPrivacyController, + ConfigurationController configurationController, ActivityStarter activityStarter, StatusBarStateController statusBarStateController) { super(context, attrs, 0, 0); @@ -533,8 +534,9 @@ public class NotificationStackScrollLayout extends ViewGroup implements ScrollAd this, activityStarter, statusBarStateController, + configurationController, NotificationUtils.useNewInterruptionModel(context)); - mSectionsManager.inflateViews(context); + mSectionsManager.initialize(LayoutInflater.from(context)); mSectionsManager.setOnClearGentleNotifsClickListener(v -> { // Leave the shade open if there will be other notifs left over to clear final boolean closeShade = !hasActiveClearableNotifications(ROWS_HIGH_PRIORITY); @@ -584,12 +586,12 @@ public class NotificationStackScrollLayout extends ViewGroup implements ScrollAd TunerService tunerService = Dependency.get(TunerService.class); tunerService.addTunable((key, newValue) -> { - if (key.equals(LOW_PRIORITY)) { - mLowPriorityBeforeSpeedBump = "1".equals(newValue); + if (key.equals(HIGH_PRIORITY)) { + mHighPriorityBeforeSpeedBump = "1".equals(newValue); } else if (key.equals(Settings.Secure.NOTIFICATION_DISMISS_RTL)) { updateDismissRtlSetting("1".equals(newValue)); } - }, LOW_PRIORITY, Settings.Secure.NOTIFICATION_DISMISS_RTL); + }, HIGH_PRIORITY, Settings.Secure.NOTIFICATION_DISMISS_RTL); mEntryManager.addNotificationEntryListener(new NotificationEntryListener() { @Override @@ -648,21 +650,13 @@ public class NotificationStackScrollLayout extends ViewGroup implements ScrollAd inflateFooterView(); inflateEmptyShadeView(); updateFooter(); - mSectionsManager.inflateViews(mContext); + mSectionsManager.reinflateViews(LayoutInflater.from(mContext)); } @Override @ShadeViewRefactor(RefactorComponent.SHADE_VIEW) public void onThemeChanged() { - int which; - if (mStatusBarState == StatusBarState.KEYGUARD - || mStatusBarState == StatusBarState.SHADE_LOCKED) { - which = WallpaperManager.FLAG_LOCK; - } else { - which = WallpaperManager.FLAG_SYSTEM; - } - final boolean useDarkText = mColorExtractor.getColors(which, - true /* ignoreVisibility */).supportsDarkText(); + final boolean useDarkText = mColorExtractor.getNeutralColors().supportsDarkText(); updateDecorViews(useDarkText); updateFooter(); @@ -868,8 +862,8 @@ public class NotificationStackScrollLayout extends ViewGroup implements ScrollAd int backgroundRectTop = top; int lastSectionBottom = mSections[0].getCurrentBounds().bottom + animationYOffset; - int previousLeft = left; - int previousRight = right; + int currentLeft = left; + int currentRight = right; boolean first = true; for (NotificationSection section : mSections) { if (section.getFirstVisibleChild() == null) { @@ -882,23 +876,23 @@ public class NotificationStackScrollLayout extends ViewGroup implements ScrollAd // as separate roundrects, as the rounded corners right next to each other look // bad. if (sectionTop - lastSectionBottom > DISTANCE_BETWEEN_ADJACENT_SECTIONS_PX - || (previousLeft != ownLeft && !first)) { - canvas.drawRoundRect(ownLeft, + || ((currentLeft != ownLeft || currentRight != ownRight) && !first)) { + canvas.drawRoundRect(currentLeft, backgroundRectTop, - ownRight, + currentRight, lastSectionBottom, mCornerRadius, mCornerRadius, mBackgroundPaint); backgroundRectTop = sectionTop; } - previousLeft = ownLeft; - previousRight = ownRight; + currentLeft = ownLeft; + currentRight = ownRight; lastSectionBottom = section.getCurrentBounds().bottom + animationYOffset; first = false; } - canvas.drawRoundRect(previousLeft, + canvas.drawRoundRect(currentLeft, backgroundRectTop, - previousRight, + currentRight, lastSectionBottom, mCornerRadius, mCornerRadius, mBackgroundPaint); } @@ -2857,6 +2851,7 @@ public class NotificationStackScrollLayout extends ViewGroup implements ScrollAd @ShadeViewRefactor(RefactorComponent.SHADE_VIEW) public void setChildTransferInProgress(boolean childTransferInProgress) { + Assert.isMainThread(); mChildTransferInProgress = childTransferInProgress; } @@ -3223,6 +3218,7 @@ public class NotificationStackScrollLayout extends ViewGroup implements ScrollAd private void updateNotificationAnimationStates() { boolean running = mAnimationsEnabled || hasPulsingNotifications(); mShelf.setAnimationsEnabled(running); + mIconAreaController.setAnimationsEnabled(running); int childCount = getChildCount(); for (int i = 0; i < childCount; i++) { View child = getChildAt(i); @@ -3299,6 +3295,11 @@ public class NotificationStackScrollLayout extends ViewGroup implements ScrollAd @Override @ShadeViewRefactor(RefactorComponent.STATE_RESOLVER) public void changeViewPosition(ExpandableView child, int newIndex) { + Assert.isMainThread(); + if (mChangePositionInProgress) { + throw new IllegalStateException("Reentrant call to changeViewPosition"); + } + int currentIndex = indexOfChild(child); if (currentIndex == -1) { @@ -5059,12 +5060,14 @@ public class NotificationStackScrollLayout extends ViewGroup implements ScrollAd @Override @ShadeViewRefactor(RefactorComponent.SHADE_VIEW) public void removeContainerView(View v) { + Assert.isMainThread(); removeView(v); } @Override @ShadeViewRefactor(RefactorComponent.SHADE_VIEW) public void addContainerView(View v) { + Assert.isMainThread(); addView(v); } @@ -5764,10 +5767,10 @@ public class NotificationStackScrollLayout extends ViewGroup implements ScrollAd ExpandableNotificationRow row = (ExpandableNotificationRow) view; currentIndex++; boolean beforeSpeedBump; - if (mLowPriorityBeforeSpeedBump) { - beforeSpeedBump = !row.getEntry().ambient; - } else { + if (mHighPriorityBeforeSpeedBump) { beforeSpeedBump = row.getEntry().isHighPriority(); + } else { + beforeSpeedBump = !row.getEntry().ambient; } if (beforeSpeedBump) { speedBumpIndex = currentIndex; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationSwipeHelper.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationSwipeHelper.java index 8dd324b33287..4dfc343df283 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationSwipeHelper.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationSwipeHelper.java @@ -23,7 +23,6 @@ import android.content.Context; import android.graphics.Rect; import android.os.Handler; import android.service.notification.StatusBarNotification; -import android.util.Log; import android.view.MotionEvent; import android.view.View; @@ -313,8 +312,6 @@ class NotificationSwipeHelper extends SwipeHelper public void setTranslation(View v, float translate) { if (v instanceof ExpandableNotificationRow) { ((ExpandableNotificationRow) v).setTranslation(translate); - } else { - Log.wtf(TAG, "setTranslation should only be called on an ExpandableNotificationRow."); } } @@ -324,7 +321,6 @@ class NotificationSwipeHelper extends SwipeHelper return ((ExpandableNotificationRow) v).getTranslation(); } else { - Log.wtf(TAG, "getTranslation should only be called on an ExpandableNotificationRow."); return 0f; } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/SectionHeaderView.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/SectionHeaderView.java index e2f702dcb732..cc1170f7409b 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/SectionHeaderView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/SectionHeaderView.java @@ -16,11 +16,16 @@ package com.android.systemui.statusbar.notification.stack; +import static com.android.internal.util.Preconditions.checkNotNull; + +import android.annotation.Nullable; import android.content.Context; import android.graphics.RectF; import android.util.AttributeSet; +import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.View; +import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; @@ -32,9 +37,10 @@ import com.android.systemui.statusbar.notification.row.ActivatableNotificationVi * notification sections. Currently only used for gentle notifications. */ public class SectionHeaderView extends ActivatableNotificationView { - private View mContents; + private ViewGroup mContents; private TextView mLabelView; private ImageView mClearAllButton; + @Nullable private View.OnClickListener mOnClearClickListener = null; private final RectF mTmpRect = new RectF(); @@ -45,9 +51,16 @@ public class SectionHeaderView extends ActivatableNotificationView { @Override protected void onFinishInflate() { super.onFinishInflate(); - mContents = findViewById(R.id.content); - mLabelView = findViewById(R.id.header_label); - mClearAllButton = findViewById(R.id.btn_clear_all); + mContents = checkNotNull(findViewById(R.id.content)); + bindContents(); + } + + private void bindContents() { + mLabelView = checkNotNull(findViewById(R.id.header_label)); + mClearAllButton = checkNotNull(findViewById(R.id.btn_clear_all)); + if (mOnClearClickListener != null) { + mClearAllButton.setOnClickListener(mOnClearClickListener); + } } @Override @@ -55,6 +68,21 @@ public class SectionHeaderView extends ActivatableNotificationView { return mContents; } + /** + * Destroys and reinflates the visible contents of the section header. For use on configuration + * changes or any other time that layout values might need to be re-evaluated. + * + * Does not reinflate the base content view itself ({@link #getContentView()} or any of the + * decorator views, such as the background view or shadow view. + */ + void reinflateContents() { + mContents.removeAllViews(); + LayoutInflater.from(getContext()).inflate( + R.layout.status_bar_notification_section_header_contents, + mContents); + bindContents(); + } + /** Must be called whenever the UI mode changes (i.e. when we enter night mode). */ void onUiModeChanged() { updateBackgroundColors(); @@ -88,6 +116,7 @@ public class SectionHeaderView extends ActivatableNotificationView { /** Fired when the user clicks on the "X" button on the far right of the header. */ void setOnClearAllClickListener(View.OnClickListener listener) { + mOnClearClickListener = listener; mClearAllButton.setOnClickListener(listener); } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackStateAnimator.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackStateAnimator.java index 7332b034b9bf..a6f4ca54ba91 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackStateAnimator.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackStateAnimator.java @@ -61,6 +61,7 @@ public class StackStateAnimator { public static final int DELAY_EFFECT_MAX_INDEX_DIFFERENCE = 2; public static final int ANIMATION_DELAY_HEADS_UP = 120; public static final int ANIMATION_DELAY_HEADS_UP_CLICKED= 120; + private static final int MAX_STAGGER_COUNT = 5; private final int mGoToFullShadeAppearingTranslation; private final int mPulsingAppearingTranslation; @@ -78,8 +79,6 @@ public class StackStateAnimator { private long mCurrentLength; private long mCurrentAdditionalDelay; - /** The current index for the last child which was not added in this event set. */ - private int mCurrentLastNotAddedIndex; private ValueAnimator mTopOverScrollAnimator; private ValueAnimator mBottomOverScrollAnimator; private int mHeadsUpAppearHeightBottom; @@ -137,7 +136,8 @@ public class StackStateAnimator { mAnimationFilter.applyCombination(mNewEvents); mCurrentAdditionalDelay = additionalDelay; mCurrentLength = NotificationStackScrollLayout.AnimationEvent.combineLength(mNewEvents); - mCurrentLastNotAddedIndex = findLastNotAddedIndex(); + // Used to stagger concurrent animations' delays and durations for visual effect + int animationStaggerCount = 0; for (int i = 0; i < childCount; i++) { final ExpandableView child = (ExpandableView) mHostLayout.getChildAt(i); @@ -147,7 +147,10 @@ public class StackStateAnimator { continue; } - initAnimationProperties(child, viewState); + if (mAnimationProperties.wasAdded(child) && animationStaggerCount < MAX_STAGGER_COUNT) { + animationStaggerCount++; + } + initAnimationProperties(child, viewState, animationStaggerCount); viewState.animateTo(child, mAnimationProperties); } if (!isRunning()) { @@ -161,10 +164,10 @@ public class StackStateAnimator { } private void initAnimationProperties(ExpandableView child, - ExpandableViewState viewState) { + ExpandableViewState viewState, int animationStaggerCount) { boolean wasAdded = mAnimationProperties.wasAdded(child); mAnimationProperties.duration = mCurrentLength; - adaptDurationWhenGoingToFullShade(child, viewState, wasAdded); + adaptDurationWhenGoingToFullShade(child, viewState, wasAdded, animationStaggerCount); mAnimationProperties.delay = 0; if (wasAdded || mAnimationFilter.hasDelays && (viewState.yTranslation != child.getTranslationY() @@ -174,16 +177,15 @@ public class StackStateAnimator { || viewState.clipTopAmount != child.getClipTopAmount() || viewState.dark != child.isDark())) { mAnimationProperties.delay = mCurrentAdditionalDelay - + calculateChildAnimationDelay(viewState); + + calculateChildAnimationDelay(viewState, animationStaggerCount); } } private void adaptDurationWhenGoingToFullShade(ExpandableView child, - ExpandableViewState viewState, boolean wasAdded) { + ExpandableViewState viewState, boolean wasAdded, int animationStaggerCount) { if (wasAdded && mAnimationFilter.hasGoToFullShadeEvent) { child.setTranslationY(child.getTranslationY() + mGoToFullShadeAppearingTranslation); - float longerDurationFactor = viewState.notGoneIndex - mCurrentLastNotAddedIndex; - longerDurationFactor = (float) Math.pow(longerDurationFactor, 0.7f); + float longerDurationFactor = (float) Math.pow(animationStaggerCount, 0.7f); mAnimationProperties.duration = ANIMATION_DURATION_APPEAR_DISAPPEAR + 50 + (long) (100 * longerDurationFactor); } @@ -214,25 +216,10 @@ public class StackStateAnimator { return true; } - private int findLastNotAddedIndex() { - int childCount = mHostLayout.getChildCount(); - for (int i = childCount - 1; i >= 0; i--) { - final ExpandableView child = (ExpandableView) mHostLayout.getChildAt(i); - - ExpandableViewState viewState = child.getViewState(); - if (viewState == null || child.getVisibility() == View.GONE) { - continue; - } - if (!mNewAddChildren.contains(child)) { - return viewState.notGoneIndex; - } - } - return -1; - } - - private long calculateChildAnimationDelay(ExpandableViewState viewState) { + private long calculateChildAnimationDelay(ExpandableViewState viewState, + int animationStaggerCount) { if (mAnimationFilter.hasGoToFullShadeEvent) { - return calculateDelayGoToFullShade(viewState); + return calculateDelayGoToFullShade(viewState, animationStaggerCount); } if (mAnimationFilter.customDelay != AnimationFilter.NO_DELAY) { return mAnimationFilter.customDelay; @@ -286,13 +273,13 @@ public class StackStateAnimator { return minDelay; } - private long calculateDelayGoToFullShade(ExpandableViewState viewState) { + private long calculateDelayGoToFullShade(ExpandableViewState viewState, + int animationStaggerCount) { int shelfIndex = mShelf.getNotGoneIndex(); float index = viewState.notGoneIndex; long result = 0; if (index > shelfIndex) { - float diff = index - shelfIndex; - diff = (float) Math.pow(diff, 0.7f); + float diff = (float) Math.pow(animationStaggerCount, 0.7f); result += (long) (diff * ANIMATION_DELAY_PER_ELEMENT_GO_TO_FULL_SHADE * 0.25); index = shelfIndex; } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeScrimController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeScrimController.java index d9d74b9d17a6..a2438552e8af 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeScrimController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeScrimController.java @@ -84,6 +84,14 @@ public class DozeScrimController implements StateListener { public void onCancelled() { pulseFinished(); } + + /** + * Whether to timeout wallpaper or not. + */ + @Override + public boolean shouldTimeoutWallpaper() { + return mPulseReason == DozeLog.PULSE_REASON_DOCKING; + } }; public DozeScrimController(DozeParameters dozeParameters) { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/EdgeBackGestureHandler.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/EdgeBackGestureHandler.java index 38ff468304b7..f9cdde8059d4 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/EdgeBackGestureHandler.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/EdgeBackGestureHandler.java @@ -57,6 +57,7 @@ import com.android.systemui.recents.OverviewProxyService; import com.android.systemui.shared.system.QuickStepContract; import com.android.systemui.shared.system.WindowManagerWrapper; +import java.io.PrintWriter; import java.util.concurrent.Executor; /** @@ -65,6 +66,7 @@ import java.util.concurrent.Executor; public class EdgeBackGestureHandler implements DisplayListener { private static final String TAG = "EdgeBackGestureHandler"; + private static final int MAX_LONG_PRESS_TIMEOUT = 250; private final IPinnedStackListener.Stub mImeChangedListener = new IPinnedStackListener.Stub() { @Override @@ -118,7 +120,7 @@ public class EdgeBackGestureHandler implements DisplayListener { private final Region mExcludeRegion = new Region(); // The edge width where touch down is allowed - private final int mEdgeWidth; + private int mEdgeWidth; // The slop to distinguish between horizontal and vertical motion private final float mTouchSlop; // Duration after which we consider the event as longpress. @@ -163,19 +165,22 @@ public class EdgeBackGestureHandler implements DisplayListener { mWm = context.getSystemService(WindowManager.class); mOverviewProxyService = overviewProxyService; - // TODO: Get this for the current user - mEdgeWidth = res.getDimensionPixelSize( - com.android.internal.R.dimen.config_backGestureInset); - // Reduce the default touch slop to ensure that we can intercept the gesture // before the app starts to react to it. // TODO(b/130352502) Tune this value and extract into a constant mTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop() * 0.75f; - mLongPressTimeout = ViewConfiguration.getLongPressTimeout(); + mLongPressTimeout = Math.min(MAX_LONG_PRESS_TIMEOUT, + ViewConfiguration.getLongPressTimeout()); mNavBarHeight = res.getDimensionPixelSize(R.dimen.navigation_bar_frame_height); mMinArrowPosition = res.getDimensionPixelSize(R.dimen.navigation_edge_arrow_min_y); mFingerOffset = res.getDimensionPixelSize(R.dimen.navigation_edge_finger_offset); + updateCurrentUserResources(res); + } + + public void updateCurrentUserResources(Resources res) { + mEdgeWidth = res.getDimensionPixelSize( + com.android.internal.R.dimen.config_backGestureInset); } /** @@ -194,9 +199,10 @@ public class EdgeBackGestureHandler implements DisplayListener { updateIsEnabled(); } - public void onNavigationModeChanged(int mode) { + public void onNavigationModeChanged(int mode, Context currentUserContext) { mIsGesturalModeEnabled = QuickStepContract.isGesturalMode(mode); updateIsEnabled(); + updateCurrentUserResources(currentUserContext.getResources()); } private void disposeInputChannel() { @@ -270,6 +276,8 @@ public class EdgeBackGestureHandler implements DisplayListener { | WindowManager.LayoutParams.FLAG_SPLIT_TOUCH | WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN, PixelFormat.TRANSLUCENT); + mEdgePanelLp.privateFlags |= + WindowManager.LayoutParams.PRIVATE_FLAG_SHOW_FOR_ALL_USERS; mEdgePanelLp.setTitle(TAG + mDisplayId); mEdgePanelLp.accessibilityTitle = mContext.getString(R.string.nav_bar_edge_panel); mEdgePanelLp.windowAnimations = 0; @@ -449,6 +457,16 @@ public class EdgeBackGestureHandler implements DisplayListener { mRightInset = rightInset; } + public void dump(PrintWriter pw) { + pw.println("EdgeBackGestureHandler:"); + pw.println(" mIsEnabled=" + mIsEnabled); + pw.println(" mAllowGesture=" + mAllowGesture); + pw.println(" mExcludeRegion=" + mExcludeRegion); + pw.println(" mImeHeight=" + mImeHeight); + pw.println(" mIsAttached=" + mIsAttached); + pw.println(" mEdgeWidth=" + mEdgeWidth); + } + class SysUiInputEventReceiver extends InputEventReceiver { SysUiInputEventReceiver(InputChannel channel, Looper looper) { super(channel, looper); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/FloatingRotationButton.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/FloatingRotationButton.java index a4965ba59c6a..deb314bae5c9 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/FloatingRotationButton.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/FloatingRotationButton.java @@ -16,8 +16,10 @@ package com.android.systemui.statusbar.phone; +import android.annotation.ColorInt; import android.content.Context; import android.content.res.Resources; +import android.graphics.Color; import android.graphics.PixelFormat; import android.view.ContextThemeWrapper; import android.view.Gravity; @@ -26,6 +28,7 @@ import android.view.Surface; import android.view.View; import android.view.WindowManager; +import com.android.settingslib.Utils; import com.android.systemui.R; import com.android.systemui.statusbar.policy.KeyButtonDrawable; import com.android.systemui.statusbar.policy.KeyButtonView; @@ -33,6 +36,8 @@ import com.android.systemui.statusbar.policy.KeyButtonView; /** Containing logic for the rotation button on the physical left bottom corner of the screen. */ public class FloatingRotationButton implements RotationButton { + private static final float BACKGROUND_ALPHA = 0.92f; + private final Context mContext; private final WindowManager mWindowManager; private final KeyButtonView mKeyButtonView; @@ -73,8 +78,7 @@ public class FloatingRotationButton implements RotationButton { return false; } mIsShowing = true; - int flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE - | WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN; + int flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE; final WindowManager.LayoutParams lp = new WindowManager.LayoutParams(mDiameter, mDiameter, mMargin, mMargin, WindowManager.LayoutParams.TYPE_NAVIGATION_BAR_PANEL, flags, PixelFormat.TRANSLUCENT); @@ -111,7 +115,6 @@ public class FloatingRotationButton implements RotationButton { return false; } mWindowManager.removeViewImmediate(mKeyButtonView); - mRotationButtonController.cleanUp(); mIsShowing = false; return true; } @@ -137,10 +140,7 @@ public class FloatingRotationButton implements RotationButton { @Override public void setOnClickListener(View.OnClickListener onClickListener) { - mKeyButtonView.setOnClickListener(view -> { - hide(); - onClickListener.onClick(view); - }); + mKeyButtonView.setOnClickListener(onClickListener); } @Override @@ -152,8 +152,18 @@ public class FloatingRotationButton implements RotationButton { public KeyButtonDrawable getImageDrawable() { Context context = new ContextThemeWrapper(mContext.getApplicationContext(), mRotationButtonController.getStyleRes()); - return KeyButtonDrawable.create(context, R.drawable.ic_sysbar_rotate_button, - false /* shadow */, true /* hasOvalBg */); + final int dualToneDarkTheme = Utils.getThemeAttr(context, R.attr.darkIconTheme); + final int dualToneLightTheme = Utils.getThemeAttr(context, R.attr.lightIconTheme); + Context lightContext = new ContextThemeWrapper(context, dualToneLightTheme); + Context darkContext = new ContextThemeWrapper(context, dualToneDarkTheme); + @ColorInt int darkColor = Utils.getColorAttrDefaultColor(darkContext, + R.attr.singleToneColor); + Color ovalBackgroundColor = Color.valueOf(Color.red(darkColor), Color.green(darkColor), + Color.blue(darkColor), BACKGROUND_ALPHA); + + return KeyButtonDrawable.create(lightContext, + Utils.getColorAttrDefaultColor(lightContext, R.attr.singleToneColor), darkColor, + R.drawable.ic_sysbar_rotate_button, false /* shadow */, ovalBackgroundColor); } @Override diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/LockIcon.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LockIcon.java index 61a394092761..3d0c9e88ac9e 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/LockIcon.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LockIcon.java @@ -60,8 +60,6 @@ public class LockIcon extends KeyguardAffordanceView implements OnUserInfoChange StatusBarStateController.StateListener, ConfigurationController.ConfigurationListener, UnlockMethodCache.OnUnlockMethodChangedListener { - private static final int FP_DRAW_OFF_TIMEOUT = 800; - private static final int STATE_LOCKED = 0; private static final int STATE_LOCK_OPEN = 1; private static final int STATE_SCANNING_FACE = 2; @@ -77,8 +75,6 @@ public class LockIcon extends KeyguardAffordanceView implements OnUserInfoChange private int mLastState = 0; private boolean mTransientBiometricsError; - private boolean mScreenOn; - private boolean mLastScreenOn; private boolean mIsFaceUnlockState; private boolean mSimLocked; private int mDensity; @@ -105,7 +101,6 @@ public class LockIcon extends KeyguardAffordanceView implements OnUserInfoChange update(false /* force */); } }; - private final Runnable mDrawOffTimeout = () -> update(true /* forceUpdate */); private final DockManager.DockEventListener mDockEventListener = new DockManager.DockEventListener() { @Override @@ -122,18 +117,6 @@ public class LockIcon extends KeyguardAffordanceView implements OnUserInfoChange private final KeyguardUpdateMonitorCallback mUpdateMonitorCallback = new KeyguardUpdateMonitorCallback() { @Override - public void onScreenTurnedOn() { - mScreenOn = true; - update(); - } - - @Override - public void onScreenTurnedOff() { - mScreenOn = false; - update(); - } - - @Override public void onSimStateChanged(int subId, int slotId, IccCardConstants.State simState) { boolean oldSimLocked = mSimLocked; @@ -246,7 +229,7 @@ public class LockIcon extends KeyguardAffordanceView implements OnUserInfoChange int state = getState(); mIsFaceUnlockState = state == STATE_SCANNING_FACE; if (state != mLastState || mLastDozing != mDozing || mLastPulsing != mPulsing - || mLastScreenOn != mScreenOn || mLastBouncerVisible != mBouncerVisible || force) { + || mLastBouncerVisible != mBouncerVisible || force) { int iconAnimRes = getAnimationResForTransition(mLastState, state, mLastPulsing, mPulsing, mLastDozing, mDozing, mBouncerVisible); boolean isAnim = iconAnimRes != -1; @@ -285,15 +268,7 @@ public class LockIcon extends KeyguardAffordanceView implements OnUserInfoChange } updateDarkTint(); - if (isAnim && !mLastScreenOn) { - removeCallbacks(mDrawOffTimeout); - postDelayed(mDrawOffTimeout, FP_DRAW_OFF_TIMEOUT); - } else { - removeCallbacks(mDrawOffTimeout); - } - mLastState = state; - mLastScreenOn = mScreenOn; mLastDozing = mDozing; mLastPulsing = mPulsing; mLastBouncerVisible = mBouncerVisible; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/MultiUserSwitch.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/MultiUserSwitch.java index 443cc4397bd3..c0a1b123fe77 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/MultiUserSwitch.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/MultiUserSwitch.java @@ -112,7 +112,9 @@ public class MultiUserSwitch extends FrameLayout implements View.OnClickListener final boolean guestEnabled = !mContext.getSystemService(DevicePolicyManager.class) .getGuestUserDisabled(null); - return mUserSwitcherController.getSwitchableUserCount() > 1 || guestEnabled + return mUserSwitcherController.getSwitchableUserCount() > 1 + // If we cannot add guests even if they are enabled, do not show + || (guestEnabled && !mUserManager.hasUserRestriction(UserManager.DISALLOW_ADD_USER)) || mContext.getResources().getBoolean(R.bool.qs_show_user_switcher_for_single_user); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavBarTintController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavBarTintController.java index 2f245fff1824..bfd17b9abc72 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavBarTintController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavBarTintController.java @@ -45,6 +45,7 @@ public class NavBarTintController implements View.OnAttachStateChangeListener, private final NavigationBarView mNavigationBarView; private final LightBarTransitionsController mLightBarController; private int mNavBarMode = NAV_BAR_MODE_3BUTTON; + private boolean mWindowVisible; private final CompositionSamplingListener mSamplingListener; private final Runnable mUpdateSamplingListener = this::updateSamplingListener; @@ -148,7 +149,7 @@ public class NavBarTintController implements View.OnAttachStateChangeListener, mSamplingListenerRegistered = false; CompositionSamplingListener.unregister(mSamplingListener); } - if (mSamplingEnabled && !mSamplingBounds.isEmpty() + if (mSamplingEnabled && mWindowVisible && !mSamplingBounds.isEmpty() && mNavigationBarView.isAttachedToWindow()) { if (!mNavigationBarView.getViewRootImpl().getSurfaceControl().isValid()) { // The view may still be attached, but the surface backing the window can be @@ -180,6 +181,11 @@ public class NavBarTintController implements View.OnAttachStateChangeListener, } } + public void setWindowVisible(boolean visible) { + mWindowVisible = visible; + requestUpdateSamplingListener(); + } + public void onNavigationModeChanged(int mode) { mNavBarMode = mode; } @@ -194,6 +200,7 @@ public class NavBarTintController implements View.OnAttachStateChangeListener, pw.println(" mSamplingBounds: " + mSamplingBounds); pw.println(" mLastMedianLuma: " + mLastMedianLuma); pw.println(" mCurrentMedianLuma: " + mCurrentMedianLuma); + pw.println(" mWindowVisible: " + mWindowVisible); } public static boolean isEnabled(Context context, int navBarMode) { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarFragment.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarFragment.java index d94a33556a43..e9731c521308 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarFragment.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarFragment.java @@ -136,6 +136,7 @@ public class NavigationBarFragment extends LifecycleFragment implements Callback protected final AssistManager mAssistManager; private final MetricsLogger mMetricsLogger; private final DeviceProvisionedController mDeviceProvisionedController; + private final StatusBarStateController mStatusBarStateController; protected NavigationBarView mNavigationBarView = null; @@ -202,17 +203,16 @@ public class NavigationBarFragment extends LifecycleFragment implements Callback } @Override - public void onBackButtonAlphaChanged(float alpha, boolean animate) { - final ButtonDispatcher backButton = mNavigationBarView.getBackButton(); - final boolean useAltBack = - (mNavigationIconHints & StatusBarManager.NAVIGATION_HINT_BACK_ALT) != 0; - if (QuickStepContract.isGesturalMode(mNavBarMode) && !useAltBack) { - // If property was changed to hide/show back button, going home will trigger - // launcher to to change the back button alpha to reflect property change - backButton.setVisibility(View.GONE); - } else { - backButton.setVisibility(alpha > 0 ? View.VISIBLE : View.INVISIBLE); - backButton.setAlpha(alpha, animate); + public void onNavBarButtonAlphaChanged(float alpha, boolean animate) { + ButtonDispatcher buttonDispatcher = null; + if (QuickStepContract.isSwipeUpMode(mNavBarMode)) { + buttonDispatcher = mNavigationBarView.getBackButton(); + } else if (QuickStepContract.isGesturalMode(mNavBarMode)) { + buttonDispatcher = mNavigationBarView.getHomeHandle(); + } + if (buttonDispatcher != null) { + buttonDispatcher.setVisibility(alpha > 0 ? View.VISIBLE : View.INVISIBLE); + buttonDispatcher.setAlpha(alpha, animate); } } }; @@ -244,9 +244,11 @@ public class NavigationBarFragment extends LifecycleFragment implements Callback public NavigationBarFragment(AccessibilityManagerWrapper accessibilityManagerWrapper, DeviceProvisionedController deviceProvisionedController, MetricsLogger metricsLogger, AssistManager assistManager, OverviewProxyService overviewProxyService, - NavigationModeController navigationModeController) { + NavigationModeController navigationModeController, + StatusBarStateController statusBarStateController) { mAccessibilityManagerWrapper = accessibilityManagerWrapper; mDeviceProvisionedController = deviceProvisionedController; + mStatusBarStateController = statusBarStateController; mMetricsLogger = metricsLogger; mAssistManager = assistManager; mAssistantAvailable = mAssistManager.getAssistInfoForUser(UserHandle.USER_CURRENT) != null; @@ -320,6 +322,7 @@ public class NavigationBarFragment extends LifecycleFragment implements Callback mNavigationBarView.getLightTransitionsController().restoreState(savedInstanceState); } mNavigationBarView.setNavigationIconHints(mNavigationIconHints); + mNavigationBarView.setWindowVisible(isNavBarWindowVisible()); prepareNavigationBarView(); checkNavBarModes(); @@ -465,8 +468,7 @@ public class NavigationBarFragment extends LifecycleFragment implements Callback if (DEBUG_WINDOW_STATE) Log.d(TAG, "Navigation bar " + windowStateToString(state)); updateSystemUiStateFlags(-1); - mNavigationBarView.getRotationButtonController().onNavigationBarWindowVisibilityChange( - isNavBarWindowVisible()); + mNavigationBarView.setWindowVisible(isNavBarWindowVisible()); } } @@ -869,9 +871,6 @@ public class NavigationBarFragment extends LifecycleFragment implements Callback boolean[] feedbackEnabled = new boolean[1]; int a11yFlags = getA11yButtonState(feedbackEnabled); - mNavigationBarView.getRotationButtonController().setAccessibilityFeedbackEnabled( - feedbackEnabled[0]); - boolean clickable = (a11yFlags & SYSUI_STATE_A11Y_BUTTON_CLICKABLE) != 0; boolean longClickable = (a11yFlags & SYSUI_STATE_A11Y_BUTTON_LONG_CLICKABLE) != 0; mNavigationBarView.setAccessibilityButtonState(clickable, longClickable); @@ -951,7 +950,7 @@ public class NavigationBarFragment extends LifecycleFragment implements Callback public void touchAutoDim() { getBarTransitions().setAutoDim(false); mHandler.removeCallbacks(mAutoDim); - int state = Dependency.get(StatusBarStateController.class).getState(); + int state = mStatusBarStateController.getState(); if (state != StatusBarState.KEYGUARD && state != StatusBarState.SHADE_LOCKED) { mHandler.postDelayed(mAutoDim, AUTODIM_TIMEOUT_MS); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarTransitions.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarTransitions.java index 2b5a28e60082..23cc0fc51ec0 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarTransitions.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarTransitions.java @@ -213,9 +213,12 @@ public final class NavigationBarTransitions extends BarTransitions implements /** * Register {@code listener} to be notified when the color of nav bar elements changes. + * + * Returns the current nav bar color. */ - public void addDarkIntensityListener(DarkIntensityListener listener) { + public float addDarkIntensityListener(DarkIntensityListener listener) { mDarkIntensityListeners.add(listener); + return mLightTransitionsController.getCurrentDarkIntensity(); } /** diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java index 90bce391c68d..776cd4d71c94 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java @@ -533,6 +533,11 @@ public class NavigationBarView extends FrameLayout implements return KeyButtonDrawable.create(mContext, icon, hasShadow); } + public void setWindowVisible(boolean visible) { + mTintController.setWindowVisible(visible); + mRotationButtonController.onNavigationBarWindowVisibilityChange(visible); + } + @Override public void setLayoutDirection(int layoutDirection) { reloadNavIcons(); @@ -772,9 +777,10 @@ public class NavigationBarView extends FrameLayout implements @Override public void onNavigationModeChanged(int mode) { + Context curUserCtx = Dependency.get(NavigationModeController.class).getCurrentUserContext(); mNavBarMode = mode; mBarTransitions.onNavigationModeChanged(mNavBarMode); - mEdgeBackGestureHandler.onNavigationModeChanged(mNavBarMode); + mEdgeBackGestureHandler.onNavigationModeChanged(mNavBarMode, curUserCtx); mRecentsOnboarding.onNavigationModeChanged(mNavBarMode); getRotateSuggestionButton().onNavigationModeChanged(mNavBarMode); @@ -1039,6 +1045,9 @@ public class NavigationBarView extends FrameLayout implements reorient(); onNavigationModeChanged(mNavBarMode); setUpSwipeUpOnboarding(isQuickStepSwipeUpEnabled()); + if (mRotationButtonController != null) { + mRotationButtonController.registerListeners(); + } mEdgeBackGestureHandler.onNavBarAttached(); getViewTreeObserver().addOnComputeInternalInsetsListener(mOnComputeInternalInsetsListener); @@ -1052,6 +1061,10 @@ public class NavigationBarView extends FrameLayout implements for (int i = 0; i < mButtonDispatchers.size(); ++i) { mButtonDispatchers.valueAt(i).onDestroy(); } + if (mRotationButtonController != null) { + mRotationButtonController.unregisterListeners(); + } + mEdgeBackGestureHandler.onNavBarDetached(); getViewTreeObserver().removeOnComputeInternalInsetsListener( mOnComputeInternalInsetsListener); @@ -1103,6 +1116,7 @@ public class NavigationBarView extends FrameLayout implements mContextualButtonGroup.dump(pw); mRecentsOnboarding.dump(pw); mTintController.dump(pw); + mEdgeBackGestureHandler.dump(pw); } @Override diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationModeController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationModeController.java index 7cd8f7b6687f..4d7cf2715f9c 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationModeController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationModeController.java @@ -24,12 +24,16 @@ import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_3BUTTON_OVE import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_GESTURAL; import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_GESTURAL_OVERLAY; +import android.app.Notification; +import android.app.NotificationManager; +import android.app.PendingIntent; import android.content.BroadcastReceiver; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.om.IOverlayManager; +import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.content.res.ApkAssets; import android.os.PatternMatcher; @@ -38,13 +42,16 @@ import android.os.ServiceManager; import android.os.UserHandle; import android.provider.Settings; import android.provider.Settings.Secure; +import android.text.TextUtils; import android.util.Log; import android.util.SparseBooleanArray; import com.android.systemui.Dumpable; +import com.android.systemui.R; import com.android.systemui.UiOffloadThread; import com.android.systemui.shared.system.ActivityManagerWrapper; import com.android.systemui.statusbar.policy.DeviceProvisionedController; +import com.android.systemui.util.NotificationChannels; import java.io.FileDescriptor; import java.io.PrintWriter; @@ -63,6 +70,11 @@ public class NavigationModeController implements Dumpable { private static final String TAG = NavigationModeController.class.getSimpleName(); private static final boolean DEBUG = false; + private static final int SYSTEM_APP_MASK = + ApplicationInfo.FLAG_SYSTEM | ApplicationInfo.FLAG_UPDATED_SYSTEM_APP; + static final String SHARED_PREFERENCES_NAME = "navigation_mode_controller_preferences"; + static final String PREFS_SWITCHED_FROM_GESTURE_NAV_KEY = "switched_from_gesture_nav"; + public interface ModeChangedListener { void onNavigationModeChanged(int mode); } @@ -78,6 +90,8 @@ public class NavigationModeController implements Dumpable { private int mMode = NAV_BAR_MODE_3BUTTON; private ArrayList<ModeChangedListener> mListeners = new ArrayList<>(); + private String mLastDefaultLauncher; + private BroadcastReceiver mReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { @@ -92,7 +106,13 @@ public class NavigationModeController implements Dumpable { if (DEBUG) { Log.d(TAG, "ACTION_PREFERRED_ACTIVITY_CHANGED"); } - switchFromGestureNavModeIfNotSupportedByDefaultLauncher(); + final String launcher = getDefaultLauncherPackageName(mCurrentUserContext); + // Check if it is a default launcher change + if (!TextUtils.equals(mLastDefaultLauncher, launcher)) { + switchFromGestureNavModeIfNotSupportedByDefaultLauncher(); + showNotificationIfDefaultLauncherSupportsGestureNav(); + mLastDefaultLauncher = launcher; + } break; } } @@ -157,6 +177,8 @@ public class NavigationModeController implements Dumpable { IntentFilter preferredActivityFilter = new IntentFilter(ACTION_PREFERRED_ACTIVITY_CHANGED); mContext.registerReceiverAsUser(mReceiver, UserHandle.ALL, preferredActivityFilter, null, null); + // We are only interested in launcher changes, so keeping track of the current default. + mLastDefaultLauncher = getDefaultLauncherPackageName(mContext); updateCurrentInteractionMode(false /* notify */); switchFromGestureNavModeIfNotSupportedByDefaultLauncher(); @@ -205,7 +227,7 @@ public class NavigationModeController implements Dumpable { return mode; } - private Context getCurrentUserContext() { + public Context getCurrentUserContext() { int userId = ActivityManagerWrapper.getInstance().getCurrentUserId(); if (DEBUG) { Log.d(TAG, "getCurrentUserContext: contextUser=" + mContext.getUserId() @@ -287,6 +309,100 @@ public class NavigationModeController implements Dumpable { }); } + private void switchFromGestureNavModeIfNotSupportedByDefaultLauncher() { + if (getCurrentInteractionMode(mCurrentUserContext) != NAV_BAR_MODE_GESTURAL) { + return; + } + final Boolean supported = isGestureNavSupportedByDefaultLauncher(mCurrentUserContext); + if (supported == null || supported) { + return; + } + + Log.d(TAG, "Switching system navigation to 3-button mode:" + + " defaultLauncher=" + getDefaultLauncherPackageName(mCurrentUserContext) + + " contextUser=" + mCurrentUserContext.getUserId()); + + setModeOverlay(NAV_BAR_MODE_3BUTTON_OVERLAY, USER_CURRENT); + showNotification(mCurrentUserContext, R.string.notification_content_system_nav_changed); + mCurrentUserContext.getSharedPreferences(SHARED_PREFERENCES_NAME, Context.MODE_PRIVATE) + .edit().putBoolean(PREFS_SWITCHED_FROM_GESTURE_NAV_KEY, true).apply(); + } + + private void showNotificationIfDefaultLauncherSupportsGestureNav() { + boolean previouslySwitchedFromGestureNav = mCurrentUserContext + .getSharedPreferences(SHARED_PREFERENCES_NAME, Context.MODE_PRIVATE) + .getBoolean(PREFS_SWITCHED_FROM_GESTURE_NAV_KEY, false); + if (!previouslySwitchedFromGestureNav) { + return; + } + if (getCurrentInteractionMode(mCurrentUserContext) == NAV_BAR_MODE_GESTURAL) { + return; + } + final Boolean supported = isGestureNavSupportedByDefaultLauncher(mCurrentUserContext); + if (supported == null || !supported) { + return; + } + + showNotification(mCurrentUserContext, R.string.notification_content_gesture_nav_available); + mCurrentUserContext.getSharedPreferences(SHARED_PREFERENCES_NAME, Context.MODE_PRIVATE) + .edit().putBoolean(PREFS_SWITCHED_FROM_GESTURE_NAV_KEY, false).apply(); + } + + /** + * Returns null if there is no default launcher set for the current user. Returns true if the + * current default launcher supports Gesture Navigation. Returns false otherwise. + */ + private Boolean isGestureNavSupportedByDefaultLauncher(Context context) { + final String defaultLauncherPackageName = getDefaultLauncherPackageName(context); + if (DEBUG) { + Log.d(TAG, "isGestureNavSupportedByDefaultLauncher:" + + " defaultLauncher=" + defaultLauncherPackageName + + " contextUser=" + context.getUserId()); + } + if (defaultLauncherPackageName == null) { + return null; + } + if (isSystemApp(context, defaultLauncherPackageName)) { + return true; + } + return false; + } + + private String getDefaultLauncherPackageName(Context context) { + final ComponentName cn = context.getPackageManager().getHomeActivities(new ArrayList<>()); + if (cn == null) { + return null; + } + return cn.getPackageName(); + } + + /** Returns true if the app for the given package name is a system app for this device */ + private boolean isSystemApp(Context context, String packageName) { + try { + ApplicationInfo ai = context.getPackageManager().getApplicationInfo(packageName, + PackageManager.GET_META_DATA); + return ai != null && ((ai.flags & SYSTEM_APP_MASK) != 0); + } catch (PackageManager.NameNotFoundException e) { + return false; + } + } + + private void showNotification(Context context, int resId) { + final CharSequence message = context.getResources().getString(resId); + if (DEBUG) { + Log.d(TAG, "showNotification: message=" + message); + } + + final Notification.Builder builder = + new Notification.Builder(mContext, NotificationChannels.ALERTS) + .setContentText(message) + .setStyle(new Notification.BigTextStyle()) + .setSmallIcon(R.drawable.ic_info) + .setAutoCancel(true) + .setContentIntent(PendingIntent.getActivity(context, 0, new Intent(), 0)); + context.getSystemService(NotificationManager.class).notify(TAG, 0, builder.build()); + } + @Override public void dump(FileDescriptor fd, PrintWriter pw, String[] args) { pw.println("NavigationModeController:"); @@ -299,6 +415,12 @@ public class NavigationModeController implements Dumpable { } pw.println(" defaultOverlays=" + defaultOverlays); dumpAssetPaths(mCurrentUserContext); + + pw.println(" defaultLauncher=" + mLastDefaultLauncher); + boolean previouslySwitchedFromGestureNav = mCurrentUserContext + .getSharedPreferences(SHARED_PREFERENCES_NAME, Context.MODE_PRIVATE) + .getBoolean(PREFS_SWITCHED_FROM_GESTURE_NAV_KEY, false); + pw.println(" previouslySwitchedFromGestureNav=" + previouslySwitchedFromGestureNav); } private void dumpAssetPaths(Context context) { @@ -308,27 +430,4 @@ public class NavigationModeController implements Dumpable { Log.d(TAG, " " + a.getAssetPath()); } } - - private void switchFromGestureNavModeIfNotSupportedByDefaultLauncher() { - if (getCurrentInteractionMode(mCurrentUserContext) == NAV_BAR_MODE_GESTURAL - && !isGestureNavSupportedByDefaultLauncher(mCurrentUserContext)) { - setModeOverlay(NAV_BAR_MODE_3BUTTON_OVERLAY, USER_CURRENT); - } - } - - private boolean isGestureNavSupportedByDefaultLauncher(Context context) { - final ComponentName cn = context.getPackageManager().getHomeActivities(new ArrayList<>()); - if (cn == null) { - // There is no default home app set for the current user, don't make any changes yet. - return true; - } - if (DEBUG) { - Log.d(TAG, "isGestureNavSupportedByDefaultLauncher: launcher=" + cn.getPackageName() - + " contextUser=" + context.getUserId()); - } - - ComponentName recentsComponentName = ComponentName.unflattenFromString(context.getString( - com.android.internal.R.string.config_recentsComponentName)); - return recentsComponentName.getPackageName().equals(cn.getPackageName()); - } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationIconAreaController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationIconAreaController.java index e8ca3eef24de..f52becaf7b00 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationIconAreaController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationIconAreaController.java @@ -24,6 +24,7 @@ import com.android.systemui.statusbar.NotificationListener; import com.android.systemui.statusbar.NotificationMediaManager; import com.android.systemui.statusbar.NotificationShelf; import com.android.systemui.statusbar.StatusBarIconView; +import com.android.systemui.statusbar.StatusBarState; import com.android.systemui.statusbar.notification.NotificationEntryManager; import com.android.systemui.statusbar.notification.NotificationUtils; import com.android.systemui.statusbar.notification.collection.NotificationEntry; @@ -40,26 +41,13 @@ import java.util.function.Function; public class NotificationIconAreaController implements DarkReceiver, StatusBarStateController.StateListener { - public static final String LOW_PRIORITY = "low_priority"; + public static final String HIGH_PRIORITY = "high_priority"; private final ContrastColorUtil mContrastColorUtil; private final NotificationEntryManager mEntryManager; private final Runnable mUpdateStatusBarIcons = this::updateStatusBarIcons; private final StatusBarStateController mStatusBarStateController; private final NotificationMediaManager mMediaManager; - @VisibleForTesting - final NotificationListener.NotificationSettingsListener mSettingsListener = - new NotificationListener.NotificationSettingsListener() { - @Override - public void onStatusBarIconsBehaviorChanged(boolean hideSilentStatusIcons) { - if (NotificationUtils.useNewInterruptionModel(mContext)) { - mShowLowPriority = !hideSilentStatusIcons; - if (mNotificationScrollLayout != null) { - updateStatusBarIcons(); - } - } - } - }; private int mIconSize; private int mIconHPadding; @@ -77,7 +65,7 @@ public class NotificationIconAreaController implements DarkReceiver, private ViewGroup mNotificationScrollLayout; private Context mContext; private boolean mFullyDark; - private boolean mShowLowPriority = true; + private boolean mAnimationsEnabled; /** * Ratio representing being awake or in ambient mode, where 1 is dark and 0 awake. @@ -86,7 +74,6 @@ public class NotificationIconAreaController implements DarkReceiver, public NotificationIconAreaController(Context context, StatusBar statusBar, StatusBarStateController statusBarStateController, - NotificationListener notificationListener, NotificationMediaManager notificationMediaManager) { mStatusBar = statusBar; mContrastColorUtil = ContrastColorUtil.getInstance(context); @@ -95,7 +82,6 @@ public class NotificationIconAreaController implements DarkReceiver, mStatusBarStateController = statusBarStateController; mStatusBarStateController.addCallback(this); mMediaManager = notificationMediaManager; - notificationListener.addNotificationSettingsListener(mSettingsListener); initializeNotificationAreaViews(context); } @@ -256,7 +242,7 @@ public class NotificationIconAreaController implements DarkReceiver, private void updateShelfIcons() { updateIconsForLayout(entry -> entry.expandedIcon, mShelfIcons, true /* showAmbient */, - !mFullyDark /* showLowPriority */, + true /* showLowPriority */, false /* hideDismissed */, mFullyDark /* hideRepliedMessages */, mFullyDark /* hideCurrentMedia */, @@ -266,7 +252,7 @@ public class NotificationIconAreaController implements DarkReceiver, public void updateStatusBarIcons() { updateIconsForLayout(entry -> entry.icon, mNotificationIcons, false /* showAmbient */, - mShowLowPriority /* showLowPriority */, + true /* showLowPriority */, true /* hideDismissed */, true /* hideRepliedMessages */, false /* hideCurrentMedia */, @@ -276,16 +262,30 @@ public class NotificationIconAreaController implements DarkReceiver, private void updateCenterIcon() { updateIconsForLayout(entry -> entry.centeredIcon, mCenteredIcon, false /* showAmbient */, - !mFullyDark /* showLowPriority */, + true /* showLowPriority */, false /* hideDismissed */, false /* hideRepliedMessages */, mFullyDark /* hideCurrentMedia */, false /* hide centered icon */); } - @VisibleForTesting - boolean shouldShouldLowPriorityIcons() { - return mShowLowPriority; + /** + * If icons of the status bar should animate when they are added or removed. + */ + public void setAnimationsEnabled(boolean enabled) { + mAnimationsEnabled = enabled; + updateAnimations(); + } + + @Override + public void onStateChanged(int newState) { + updateAnimations(); + } + + private void updateAnimations() { + boolean inShade = mStatusBarStateController.getState() == StatusBarState.SHADE; + mCenteredIcon.setAnimationsEnabled(mAnimationsEnabled && inShade); + mNotificationIcons.setAnimationsEnabled(mAnimationsEnabled && inShade); } /** diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationIconContainer.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationIconContainer.java index 009afca5b034..e20a23edc66d 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationIconContainer.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationIconContainer.java @@ -315,10 +315,11 @@ public class NotificationIconContainer extends AlphaOptimizedFrameLayout { @Override public void onViewRemoved(View child) { super.onViewRemoved(child); + if (child instanceof StatusBarIconView) { boolean isReplacingIcon = isReplacingIcon(child); final StatusBarIconView icon = (StatusBarIconView) child; - if (icon.getVisibleState() != StatusBarIconView.STATE_HIDDEN + if (mAnimationsEnabled && icon.getVisibleState() != StatusBarIconView.STATE_HIDDEN && child.getVisibility() == VISIBLE && isReplacingIcon) { int animationStartIndex = findFirstViewIndexAfter(icon.getTranslationX()); if (mAddAnimationStartIndex < 0) { @@ -329,7 +330,7 @@ public class NotificationIconContainer extends AlphaOptimizedFrameLayout { } if (!mChangingViewPositions) { mIconStates.remove(child); - if (!isReplacingIcon) { + if (mAnimationsEnabled && !isReplacingIcon) { addTransientView(icon, 0); boolean isIsolatedIcon = child == mIsolatedIcon; icon.setVisibleState(StatusBarIconView.STATE_HIDDEN, true /* animate */, diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java index 4e4d6a42c4b6..1027046b0c28 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java @@ -303,6 +303,8 @@ public class NotificationPanelView extends PanelView implements private int mCurrentPanelAlpha; private final Paint mAlphaPaint = new Paint(); private Runnable mPanelAlphaEndAction; + private float mBottomAreaShadeAlpha; + private final ValueAnimator mBottomAreaShadeAlphaAnimator; private AnimatorListenerAdapter mAnimatorListenerAdapter = new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { @@ -366,6 +368,14 @@ public class NotificationPanelView extends PanelView implements mPulseExpansionHandler = pulseExpansionHandler; mThemeResId = context.getThemeResId(); dynamicPrivacyController.addListener(this); + + mBottomAreaShadeAlphaAnimator = ValueAnimator.ofFloat(1f, 0); + mBottomAreaShadeAlphaAnimator.addUpdateListener(animation -> { + mBottomAreaShadeAlpha = (float) animation.getAnimatedValue(); + updateKeyguardBottomAreaAlpha(); + }); + mBottomAreaShadeAlphaAnimator.setDuration(160); + mBottomAreaShadeAlphaAnimator.setInterpolator(Interpolators.ALPHA_OUT); } /** @@ -1368,10 +1378,20 @@ public class NotificationPanelView extends PanelView implements updateDozingVisibilities(false /* animate */); } + maybeAnimateBottomAreaAlpha(); resetHorizontalPanelPosition(); updateQsState(); } + private void maybeAnimateBottomAreaAlpha() { + mBottomAreaShadeAlphaAnimator.cancel(); + if (mBarState == StatusBarState.SHADE_LOCKED) { + mBottomAreaShadeAlphaAnimator.start(); + } else { + mBottomAreaShadeAlpha = 1f; + } + } + private final Runnable mAnimateKeyguardStatusViewInvisibleEndRunnable = new Runnable() { @Override public void run() { @@ -1462,6 +1482,7 @@ public class NotificationPanelView extends PanelView implements } else if (statusBarState == StatusBarState.KEYGUARD || statusBarState == StatusBarState.SHADE_LOCKED) { mKeyguardBottomArea.setVisibility(View.VISIBLE); + mKeyguardBottomArea.setAlpha(1f); } else { mKeyguardBottomArea.setVisibility(View.GONE); } @@ -1980,6 +2001,7 @@ public class NotificationPanelView extends PanelView implements ? 0 : KeyguardBouncer.ALPHA_EXPANSION_THRESHOLD, 1f, 0f, 1f, getExpandedFraction()); float alpha = Math.min(expansionAlpha, 1 - getQsExpansionFraction()); + alpha *= mBottomAreaShadeAlpha; mKeyguardBottomArea.setAffordanceAlpha(alpha); mKeyguardBottomArea.setImportantForAccessibility(alpha == 0f ? IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS @@ -2890,6 +2912,10 @@ public class NotificationPanelView extends PanelView implements mNotificationStackScroller.setDark(mDozing, animate, wakeUpTouchLocation); mKeyguardBottomArea.setDozing(mDozing, animate); + if (dozing) { + mBottomAreaShadeAlphaAnimator.cancel(); + } + if (mBarState == StatusBarState.KEYGUARD || mBarState == StatusBarState.SHADE_LOCKED) { updateDozingVisibilities(animate); 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 1e5406f3a537..0147e7ff7cb2 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/RotationButtonController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/RotationButtonController.java @@ -26,7 +26,7 @@ import android.app.StatusBarManager; import android.content.ContentResolver; import android.content.Context; import android.os.Handler; -import android.os.Message; +import android.os.Looper; import android.os.RemoteException; import android.provider.Settings; import android.view.IRotationWatcher.Stub; @@ -34,6 +34,7 @@ import android.view.MotionEvent; import android.view.Surface; import android.view.View; import android.view.WindowManagerGlobal; +import android.view.accessibility.AccessibilityManager; import com.android.internal.logging.MetricsLogger; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; @@ -42,6 +43,7 @@ import com.android.systemui.Interpolators; import com.android.systemui.R; import com.android.systemui.shared.system.ActivityManagerWrapper; import com.android.systemui.shared.system.TaskStackChangeListener; +import com.android.systemui.statusbar.policy.AccessibilityManagerWrapper; import com.android.systemui.statusbar.policy.KeyButtonDrawable; import com.android.systemui.statusbar.policy.RotationLockController; @@ -64,8 +66,10 @@ public class RotationButtonController { private boolean mPendingRotationSuggestion; private boolean mHoveringRotationSuggestion; private RotationLockController mRotationLockController; + private AccessibilityManagerWrapper mAccessibilityManagerWrapper; private TaskStackListenerImpl mTaskStackListener; private Consumer<Integer> mRotWatcherListener; + private boolean mListenersRegistered = false; private boolean mIsNavigationBarShowing; private final Runnable mRemoveRotationProposal = @@ -73,22 +77,17 @@ public class RotationButtonController { private final Runnable mCancelPendingRotationProposal = () -> mPendingRotationSuggestion = false; private Animator mRotateHideAnimator; - private boolean mAccessibilityFeedbackEnabled; private final Context mContext; private final RotationButton mRotationButton; + private final Handler mMainThreadHandler = new Handler(Looper.getMainLooper()); private final Stub mRotationWatcher = new Stub() { @Override public void onRotationChanged(final int rotation) throws RemoteException { - if (mRotationButton.getCurrentView() == null) { - return; - } - // We need this to be scheduled as early as possible to beat the redrawing of // window in response to the orientation change. - Handler h = mRotationButton.getCurrentView().getHandler(); - Message msg = Message.obtain(h, () -> { + mMainThreadHandler.postAtFrontOfQueue(() -> { // If the screen rotation changes while locked, potentially update lock to flow with // new screen rotation and hide any showing suggestions. if (mRotationLockController.isRotationLocked()) { @@ -102,8 +101,6 @@ public class RotationButtonController { mRotWatcherListener.accept(rotation); } }); - msg.setAsynchronous(true); - h.sendMessageAtFrontOfQueue(msg); } }; @@ -124,40 +121,49 @@ public class RotationButtonController { mStyleRes = style; mIsNavigationBarShowing = true; mRotationLockController = Dependency.get(RotationLockController.class); + mAccessibilityManagerWrapper = Dependency.get(AccessibilityManagerWrapper.class); // Register the task stack listener mTaskStackListener = new TaskStackListenerImpl(); - ActivityManagerWrapper.getInstance().registerTaskStackListener(mTaskStackListener); mRotationButton.setOnClickListener(this::onRotateSuggestionClick); mRotationButton.setOnHoverListener(this::onRotateSuggestionHover); + } + + void registerListeners() { + if (mListenersRegistered) { + return; + } + mListenersRegistered = true; try { WindowManagerGlobal.getWindowManagerService() .watchRotation(mRotationWatcher, mContext.getDisplay().getDisplayId()); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } + + ActivityManagerWrapper.getInstance().registerTaskStackListener(mTaskStackListener); } - void cleanUp() { - // Unregister the task stack listener - ActivityManagerWrapper.getInstance().unregisterTaskStackListener(mTaskStackListener); + void unregisterListeners() { + if (!mListenersRegistered) { + return; + } + mListenersRegistered = false; try { WindowManagerGlobal.getWindowManagerService().removeRotationWatcher(mRotationWatcher); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } + + ActivityManagerWrapper.getInstance().unregisterTaskStackListener(mTaskStackListener); } void addRotationCallback(Consumer<Integer> watcher) { mRotWatcherListener = watcher; } - void setAccessibilityFeedbackEnabled(boolean flag) { - mAccessibilityFeedbackEnabled = flag; - } - void setRotationLockedAtAngle(int rotationSuggestion) { mRotationLockController.setRotationLockedAtAngle(true /* locked */, rotationSuggestion); } @@ -185,7 +191,7 @@ public class RotationButtonController { // Clear any pending suggestion flag as it has either been nullified or is being shown mPendingRotationSuggestion = false; - view.removeCallbacks(mCancelPendingRotationProposal); + mMainThreadHandler.removeCallbacks(mCancelPendingRotationProposal); // Handle the visibility change and animation if (visible) { // Appear and change (cannot force) @@ -255,13 +261,9 @@ public class RotationButtonController { return; } - final View currentView = mRotationButton.getCurrentView(); - // If window rotation matches suggested rotation, remove any current suggestions if (rotation == windowRotation) { - if (currentView != null) { - currentView.removeCallbacks(mRemoveRotationProposal); - } + mMainThreadHandler.removeCallbacks(mRemoveRotationProposal); setRotateSuggestionButtonState(false /* visible */); return; } @@ -285,11 +287,9 @@ public class RotationButtonController { // If the navbar isn't shown, flag the rotate icon to be shown should the navbar become // visible given some time limit. mPendingRotationSuggestion = true; - if (currentView != null) { - currentView.removeCallbacks(mCancelPendingRotationProposal); - currentView.postDelayed(mCancelPendingRotationProposal, - NAVBAR_HIDDEN_PENDING_ICON_TIMEOUT_MS); - } + mMainThreadHandler.removeCallbacks(mCancelPendingRotationProposal); + mMainThreadHandler.postDelayed(mCancelPendingRotationProposal, + NAVBAR_HIDDEN_PENDING_ICON_TIMEOUT_MS); } } @@ -334,9 +334,7 @@ public class RotationButtonController { private void onRotationSuggestionsDisabled() { // Immediately hide the rotate button and clear any planned removal setRotateSuggestionButtonState(false /* visible */, true /* force */); - if (mRotationButton.getCurrentView() != null) { - mRotationButton.getCurrentView().removeCallbacks(mRemoveRotationProposal); - } + mMainThreadHandler.removeCallbacks(mRemoveRotationProposal); } private void showAndLogRotationSuggestion() { @@ -369,10 +367,6 @@ public class RotationButtonController { } private void rescheduleRotationTimeout(final boolean reasonHover) { - if (mRotationButton.getCurrentView() == null) { - return; - } - // May be called due to a new rotation proposal or a change in hover state if (reasonHover) { // Don't reschedule if a hide animator is running @@ -382,16 +376,16 @@ public class RotationButtonController { } // Stop any pending removal - mRotationButton.getCurrentView().removeCallbacks(mRemoveRotationProposal); + mMainThreadHandler.removeCallbacks(mRemoveRotationProposal); // Schedule timeout - mRotationButton.getCurrentView().postDelayed(mRemoveRotationProposal, + mMainThreadHandler.postDelayed(mRemoveRotationProposal, computeRotationProposalTimeout()); } private int computeRotationProposalTimeout() { - if (mAccessibilityFeedbackEnabled) return 10000; - if (mHoveringRotationSuggestion) return 8000; - return 5000; + return mAccessibilityManagerWrapper.getRecommendedTimeoutMillis( + mHoveringRotationSuggestion ? 16000 : 5000, + AccessibilityManager.FLAG_CONTENT_CONTROLS); } private boolean isRotateSuggestionIntroduced() { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/RotationContextButton.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/RotationContextButton.java index b117dec44cb4..bd9675280b0b 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/RotationContextButton.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/RotationContextButton.java @@ -24,7 +24,6 @@ import android.content.Context; import android.view.ContextThemeWrapper; import android.view.View; -import com.android.systemui.shared.system.QuickStepContract; import com.android.systemui.statusbar.policy.KeyButtonDrawable; /** Containing logic for the rotation button in nav bar. */ @@ -61,14 +60,7 @@ public class RotationContextButton extends ContextualButton implements Context context = new ContextThemeWrapper(getContext().getApplicationContext(), mRotationButtonController.getStyleRes()); return KeyButtonDrawable.create(context, mIconResId, false /* shadow */, - QuickStepContract.isGesturalMode(mNavBarMode)); - } - - @Override - public void onDestroy() { - if (mRotationButtonController != null) { - mRotationButtonController.cleanUp(); - } + null /* ovalBackgroundColor */); } @Override diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java index 5dcbea22eea1..3f38c049a977 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java @@ -284,15 +284,12 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, OnCo // AOD wallpapers should fade away after a while. // Docking pulses may take a long time, wallpapers should also fade away after a while. - if (mWallpaperSupportsAmbientMode && mDozeParameters.getAlwaysOn() - && mState == ScrimState.AOD) { - if (!mWallpaperVisibilityTimedOut) { - mTimeTicker.schedule(mDozeParameters.getWallpaperAodDuration(), - AlarmTimeout.MODE_IGNORE_IF_SCHEDULED); - } + mWallpaperVisibilityTimedOut = false; + if (shouldFadeAwayWallpaper()) { + mTimeTicker.schedule(mDozeParameters.getWallpaperAodDuration(), + AlarmTimeout.MODE_IGNORE_IF_SCHEDULED); } else { mTimeTicker.cancel(); - mWallpaperVisibilityTimedOut = false; } if (mKeyguardUpdateMonitor.needsSlowUnlockTransition() && mState == ScrimState.UNLOCKED) { @@ -313,6 +310,23 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, OnCo dispatchScrimState(mScrimBehind.getViewAlpha()); } + private boolean shouldFadeAwayWallpaper() { + if (!mWallpaperSupportsAmbientMode) { + return false; + } + + if (mState == ScrimState.AOD && mDozeParameters.getAlwaysOn()) { + return true; + } + + if (mState == ScrimState.PULSING + && mCallback != null && mCallback.shouldTimeoutWallpaper()) { + return true; + } + + return false; + } + public ScrimState getState() { return mState; } @@ -387,6 +401,14 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, OnCo setOrAdaptCurrentAnimation(mScrimInFront); dispatchScrimState(mScrimBehind.getViewAlpha()); + + // Reset wallpaper timeout if it's already timeout like expanding panel while PULSING + // and docking. + if (mWallpaperVisibilityTimedOut) { + mWallpaperVisibilityTimedOut = false; + mTimeTicker.schedule(mDozeParameters.getWallpaperAodDuration(), + AlarmTimeout.MODE_IGNORE_IF_SCHEDULED); + } } } @@ -925,6 +947,10 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, OnCo } default void onCancelled() { } + /** Returns whether to timeout wallpaper or not. */ + default boolean shouldTimeoutWallpaper() { + return false; + } } /** diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java index 5fff054b3bc2..1aa8bd79af35 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java @@ -317,17 +317,6 @@ public class StatusBar extends SystemUI implements DemoMode, /** If true, the lockscreen will show a distinct wallpaper */ public static final boolean ENABLE_LOCKSCREEN_WALLPAPER = true; - private static final AudioAttributes AUDIO_ATTRIBUTES = - new AudioAttributes.Builder() - .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION) - // Temporary fix for b/123870990. No time in this release to - // introduce a new vibration type, but we need to distinguish these vibrations - // from other haptic feedback vibrations. Fortunately, Alarm vibrations have - // exactly the same behavior as we need - // TODO: refactor within the scope of b/132170758 - .setUsage(AudioAttributes.USAGE_ALARM) - .build(); - static { boolean onlyCoreApps; try { @@ -504,7 +493,7 @@ public class StatusBar extends SystemUI implements DemoMode, private Runnable mLaunchTransitionEndRunnable; private NotificationEntry mDraggedDownEntry; - private boolean mLaunchCameraOnScreenTurningOn; + private boolean mLaunchCameraWhenFinishedWaking; private boolean mLaunchCameraOnFinishedGoingToSleep; private int mLastCameraLaunchSource; protected PowerManager.WakeLock mGestureWakeLock; @@ -806,8 +795,7 @@ public class StatusBar extends SystemUI implements DemoMode, mNotificationLogger.setUpWithContainer(notifListContainer); mNotificationIconAreaController = SystemUIFactory.getInstance() - .createNotificationIconAreaController(context, this, - mStatusBarStateController, mNotificationListener); + .createNotificationIconAreaController(context, this, mStatusBarStateController); inflateShelf(); mNotificationIconAreaController.setupShelf(mNotificationShelf); @@ -3222,8 +3210,7 @@ public class StatusBar extends SystemUI implements DemoMode, // Lock wallpaper defines the color of the majority of the views, hence we'll use it // to set our default theme. - final boolean lockDarkText = mColorExtractor.getColors(WallpaperManager.FLAG_LOCK, true - /* ignoreVisibility */).supportsDarkText(); + final boolean lockDarkText = mColorExtractor.getNeutralColors().supportsDarkText(); final int themeResId = lockDarkText ? R.style.Theme_SystemUI_Light : R.style.Theme_SystemUI; if (mContext.getThemeResId() != themeResId) { mContext.setTheme(themeResId); @@ -3607,7 +3594,7 @@ public class StatusBar extends SystemUI implements DemoMode, public void onFinishedGoingToSleep() { mNotificationPanel.onAffordanceLaunchEnded(); releaseGestureWakeLock(); - mLaunchCameraOnScreenTurningOn = false; + mLaunchCameraWhenFinishedWaking = false; mDeviceInteractive = false; mWakeUpComingFromTouch = false; mWakeUpTouchLocation = null; @@ -3652,6 +3639,11 @@ public class StatusBar extends SystemUI implements DemoMode, @Override public void onFinishedWakingUp() { mWakeUpCoordinator.setWakingUp(false); + if (mLaunchCameraWhenFinishedWaking) { + mNotificationPanel.launchCamera(false /* animate */, mLastCameraLaunchSource); + mLaunchCameraWhenFinishedWaking = false; + } + updateScrimController(); } }; @@ -3672,13 +3664,6 @@ public class StatusBar extends SystemUI implements DemoMode, public void onScreenTurningOn() { mFalsingManager.onScreenTurningOn(); mNotificationPanel.onScreenTurningOn(); - - if (mLaunchCameraOnScreenTurningOn) { - mNotificationPanel.launchCamera(false, mLastCameraLaunchSource); - mLaunchCameraOnScreenTurningOn = false; - } - - updateScrimController(); } @Override @@ -3700,7 +3685,7 @@ public class StatusBar extends SystemUI implements DemoMode, private void vibrateForCameraGesture() { // Make sure to pass -1 for repeat so VibratorService doesn't stop us when going to sleep. - mVibrator.vibrate(mCameraLaunchGestureVibePattern, -1 /* repeat */, AUDIO_ATTRIBUTES); + mVibrator.vibrate(mCameraLaunchGestureVibePattern, -1 /* repeat */); } /** @@ -3773,7 +3758,7 @@ public class StatusBar extends SystemUI implements DemoMode, // comes on. mGestureWakeLock.acquire(LAUNCH_TRANSITION_TIMEOUT_MS + 1000L); } - if (isScreenTurningOnOrOn()) { + if (isWakingUpOrAwake()) { if (DEBUG_CAMERA_LIFT) Slog.d(TAG, "Launching camera"); if (mStatusBarKeyguardViewManager.isBouncerShowing()) { mStatusBarKeyguardViewManager.reset(true /* hide */); @@ -3786,7 +3771,7 @@ public class StatusBar extends SystemUI implements DemoMode, // incorrectly get notified because of the screen on event (which resumes and pauses // some activities) if (DEBUG_CAMERA_LIFT) Slog.d(TAG, "Deferring until screen turns on"); - mLaunchCameraOnScreenTurningOn = true; + mLaunchCameraWhenFinishedWaking = true; } } } @@ -3811,9 +3796,9 @@ public class StatusBar extends SystemUI implements DemoMode, == WakefulnessLifecycle.WAKEFULNESS_GOING_TO_SLEEP; } - private boolean isScreenTurningOnOrOn() { - return mScreenLifecycle.getScreenState() == ScreenLifecycle.SCREEN_TURNING_ON - || mScreenLifecycle.getScreenState() == ScreenLifecycle.SCREEN_ON; + private boolean isWakingUpOrAwake() { + return mWakefulnessLifecycle.getWakefulness() == WAKEFULNESS_AWAKE + || mWakefulnessLifecycle.getWakefulness() == WAKEFULNESS_WAKING; } public void notifyBiometricAuthModeChanged() { @@ -3845,7 +3830,7 @@ public class StatusBar extends SystemUI implements DemoMode, ScrimState state = mStatusBarKeyguardViewManager.bouncerNeedsScrimming() ? ScrimState.BOUNCER_SCRIMMED : ScrimState.BOUNCER; mScrimController.transitionTo(state); - } else if (isInLaunchTransition() || mLaunchCameraOnScreenTurningOn + } else if (isInLaunchTransition() || mLaunchCameraWhenFinishedWaking || launchingAffordanceWithPreview) { mScrimController.transitionTo(ScrimState.UNLOCKED, mUnlockScrimCallback); } else if (mBrightnessMirrorVisible) { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowCallback.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowCallback.java new file mode 100644 index 000000000000..f33ff2732cda --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowCallback.java @@ -0,0 +1,20 @@ +/* + * Copyright (C) 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.android.systemui.statusbar.phone; + +public interface StatusBarWindowCallback { + void onStateChanged(boolean keyguardShowing, boolean keyguardOccluded, boolean bouncerShowing); +} diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowController.java index 891bb35127ee..8621b7293711 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowController.java @@ -18,14 +18,10 @@ package com.android.systemui.statusbar.phone; import static android.view.WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS; -import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_BOUNCER_SHOWING; -import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING; -import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING_OCCLUDED; import static com.android.systemui.statusbar.NotificationRemoteInputManager.ENABLE_REMOTE_INPUT; import android.app.ActivityManager; import android.app.IActivityManager; -import android.app.WallpaperManager; import android.content.Context; import android.content.pm.ActivityInfo; import android.content.res.Resources; @@ -48,17 +44,19 @@ import com.android.systemui.colorextraction.SysuiColorExtractor; import com.android.systemui.keyguard.KeyguardViewMediator; import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.plugins.statusbar.StatusBarStateController.StateListener; -import com.android.systemui.recents.OverviewProxyService; import com.android.systemui.statusbar.RemoteInputController.Callback; import com.android.systemui.statusbar.StatusBarState; import com.android.systemui.statusbar.SysuiStatusBarStateController; import com.android.systemui.statusbar.policy.ConfigurationController; import com.android.systemui.statusbar.policy.ConfigurationController.ConfigurationListener; +import com.google.android.collect.Lists; import java.io.FileDescriptor; import java.io.PrintWriter; +import java.lang.ref.WeakReference; import java.lang.reflect.Field; +import java.util.ArrayList; import javax.inject.Inject; import javax.inject.Singleton; @@ -84,6 +82,8 @@ public class StatusBarWindowController implements Callback, Dumpable, Configurat private float mScreenBrightnessDoze; private final State mCurrentState = new State(); private OtherwisedCollapsedListener mListener; + private final ArrayList<WeakReference<StatusBarWindowCallback>> + mCallbacks = Lists.newArrayList(); private final SysuiColorExtractor mColorExtractor = Dependency.get(SysuiColorExtractor.class); @@ -109,6 +109,19 @@ public class StatusBarWindowController implements Callback, Dumpable, Configurat Dependency.get(ConfigurationController.class).addCallback(this); } + /** + * Register to receive notifications about status bar window state changes. + */ + public void registerCallback(StatusBarWindowCallback callback) { + // Prevent adding duplicate callbacks + for (int i = 0; i < mCallbacks.size(); i++) { + if (mCallbacks.get(i).get() == callback) { + return; + } + } + mCallbacks.add(new WeakReference<StatusBarWindowCallback>(callback)); + } + private boolean shouldEnableKeyguardScreenRotation() { Resources res = mContext.getResources(); return SystemProperties.getBoolean("lockscreen.rot_override", false) @@ -319,18 +332,18 @@ public class StatusBarWindowController implements Callback, Dumpable, Configurat } mHasTopUi = mHasTopUiChanged; } - updateSystemUiStateFlags(); + notifyStateChangedCallbacks(); } - public void updateSystemUiStateFlags() { - int displayId = mContext.getDisplayId(); - OverviewProxyService overviewProxyService = Dependency.get(OverviewProxyService.class); - overviewProxyService.setSystemUiStateFlag(SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING, - mCurrentState.keyguardShowing && !mCurrentState.keyguardOccluded, displayId); - overviewProxyService.setSystemUiStateFlag(SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING_OCCLUDED, - mCurrentState.keyguardShowing && mCurrentState.keyguardOccluded, displayId); - overviewProxyService.setSystemUiStateFlag(SYSUI_STATE_BOUNCER_SHOWING, - mCurrentState.bouncerShowing, displayId); + public void notifyStateChangedCallbacks() { + for (int i = 0; i < mCallbacks.size(); i++) { + StatusBarWindowCallback cb = mCallbacks.get(i).get(); + if (cb != null) { + cb.onStateChanged(mCurrentState.keyguardShowing, + mCurrentState.keyguardOccluded, + mCurrentState.bouncerShowing); + } + } } private void applyForceStatusBarVisibleFlag(State state) { @@ -556,17 +569,7 @@ public class StatusBarWindowController implements Callback, Dumpable, Configurat return; } - StatusBarStateController state = Dependency.get(StatusBarStateController.class); - int which; - if (state.getState() == StatusBarState.KEYGUARD - || state.getState() == StatusBarState.SHADE_LOCKED) { - which = WallpaperManager.FLAG_LOCK; - } else { - which = WallpaperManager.FLAG_SYSTEM; - } - final boolean useDarkText = mColorExtractor.getColors(which, - true /* ignoreVisibility */).supportsDarkText(); - + final boolean useDarkText = mColorExtractor.getNeutralColors().supportsDarkText(); // Make sure we have the correct navbar/statusbar colors. setKeyguardDark(useDarkText); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonDrawable.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonDrawable.java index 568de63b0112..8fcaa67e7614 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonDrawable.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonDrawable.java @@ -82,9 +82,9 @@ public class KeyButtonDrawable extends Drawable { private AnimatedVectorDrawable mAnimatedDrawable; public KeyButtonDrawable(Drawable d, @ColorInt int lightColor, @ColorInt int darkColor, - boolean horizontalFlip, boolean hasOvalBg) { + boolean horizontalFlip, Color ovalBackgroundColor) { this(d, new ShadowDrawableState(lightColor, darkColor, - d instanceof AnimatedVectorDrawable, horizontalFlip, hasOvalBg)); + d instanceof AnimatedVectorDrawable, horizontalFlip, ovalBackgroundColor)); } private KeyButtonDrawable(Drawable d, ShadowDrawableState state) { @@ -166,7 +166,7 @@ public class KeyButtonDrawable extends Drawable { public void setColorFilter(ColorFilter colorFilter) { mIconPaint.setColorFilter(colorFilter); if (mAnimatedDrawable != null) { - if (mState.mHasOvalBg) { + if (hasOvalBg()) { mAnimatedDrawable.setColorFilter( new PorterDuffColorFilter(mState.mLightColor, PorterDuff.Mode.SRC_IN)); } else { @@ -212,15 +212,6 @@ public class KeyButtonDrawable extends Drawable { return mState.mBaseWidth + (mState.mShadowSize + Math.abs(mState.mShadowOffsetX)) * 2; } - /** Return if the drawable has oval background. */ - public boolean hasOvalBg() { - return mState.mHasOvalBg; - } - - public int getDarkColor() { - return mState.mDarkColor; - } - public boolean canAnimate() { return mState.mSupportsAnimation; } @@ -290,6 +281,14 @@ public class KeyButtonDrawable extends Drawable { return mState.canApplyTheme(); } + @ColorInt int getDrawableBackgroundColor() { + return mState.mOvalBackgroundColor.toArgb(); + } + + boolean hasOvalBg() { + return mState.mOvalBackgroundColor != null; + } + private void regenerateBitmapIconCache() { final int width = getIntrinsicWidth(); final int height = getIntrinsicHeight(); @@ -394,16 +393,16 @@ public class KeyButtonDrawable extends Drawable { final int mLightColor; final int mDarkColor; final boolean mSupportsAnimation; - final boolean mHasOvalBg; + final Color mOvalBackgroundColor; public ShadowDrawableState(@ColorInt int lightColor, @ColorInt int darkColor, - boolean animated, boolean horizontalFlip, boolean hasOvalBg) { + boolean animated, boolean horizontalFlip, Color ovalBackgroundColor) { mLightColor = lightColor; mDarkColor = darkColor; mSupportsAnimation = animated; mAlpha = 255; mHorizontalFlip = horizontalFlip; - mHasOvalBg = hasOvalBg; + mOvalBackgroundColor = ovalBackgroundColor; } @Override @@ -428,16 +427,17 @@ public class KeyButtonDrawable extends Drawable { * @param ctx Context to get the drawable and determine the dark and light theme * @param icon the icon resource id * @param hasShadow if a shadow will appear with the drawable - * @param hasOvalBg if an oval bg will be drawn + * @param ovalBackgroundColor the color of the oval bg that will be drawn * @return KeyButtonDrawable */ public static KeyButtonDrawable create(@NonNull Context ctx, @DrawableRes int icon, - boolean hasShadow, boolean hasOvalBg) { + boolean hasShadow, Color ovalBackgroundColor) { final int dualToneDarkTheme = Utils.getThemeAttr(ctx, R.attr.darkIconTheme); final int dualToneLightTheme = Utils.getThemeAttr(ctx, R.attr.lightIconTheme); Context lightContext = new ContextThemeWrapper(ctx, dualToneLightTheme); Context darkContext = new ContextThemeWrapper(ctx, dualToneDarkTheme); - return KeyButtonDrawable.create(lightContext, darkContext, icon, hasShadow, hasOvalBg); + return KeyButtonDrawable.create(lightContext, darkContext, icon, hasShadow, + ovalBackgroundColor); } /** @@ -446,7 +446,7 @@ public class KeyButtonDrawable extends Drawable { */ public static KeyButtonDrawable create(@NonNull Context ctx, @DrawableRes int icon, boolean hasShadow) { - return create(ctx, icon, hasShadow, false /* hasOvalBg */); + return create(ctx, icon, hasShadow, null /* ovalBackgroundColor */); } /** @@ -454,11 +454,11 @@ public class KeyButtonDrawable extends Drawable { * {@link #create(Context, int, boolean, boolean)}. */ public static KeyButtonDrawable create(Context lightContext, Context darkContext, - @DrawableRes int iconResId, boolean hasShadow, boolean hasOvalBg) { + @DrawableRes int iconResId, boolean hasShadow, Color ovalBackgroundColor) { return create(lightContext, Utils.getColorAttrDefaultColor(lightContext, R.attr.singleToneColor), Utils.getColorAttrDefaultColor(darkContext, R.attr.singleToneColor), - iconResId, hasShadow, hasOvalBg); + iconResId, hasShadow, ovalBackgroundColor); } /** @@ -467,12 +467,12 @@ public class KeyButtonDrawable extends Drawable { */ public static KeyButtonDrawable create(Context context, @ColorInt int lightColor, @ColorInt int darkColor, @DrawableRes int iconResId, boolean hasShadow, - boolean hasOvalBg) { + Color ovalBackgroundColor) { final Resources res = context.getResources(); boolean isRtl = res.getConfiguration().getLayoutDirection() == View.LAYOUT_DIRECTION_RTL; Drawable d = context.getDrawable(iconResId); final KeyButtonDrawable drawable = new KeyButtonDrawable(d, lightColor, darkColor, - isRtl && d.isAutoMirrored(), hasOvalBg); + isRtl && d.isAutoMirrored(), ovalBackgroundColor); if (hasShadow) { int offsetX = res.getDimensionPixelSize(R.dimen.nav_key_button_shadow_offset_x); int offsetY = res.getDimensionPixelSize(R.dimen.nav_key_button_shadow_offset_y); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonView.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonView.java index c9579fdd3788..c2f246f3922f 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonView.java @@ -79,6 +79,7 @@ public class KeyButtonView extends ImageView implements ButtonInterface { private final MetricsLogger mMetricsLogger = Dependency.get(MetricsLogger.class); private final InputManager mInputManager; private final Paint mOvalBgPaint = new Paint(Paint.ANTI_ALIAS_FLAG | Paint.FILTER_BITMAP_FLAG); + private float mDarkIntensity; private boolean mHasOvalBg = false; private final Runnable mCheckLongPress = new Runnable() { @@ -248,13 +249,8 @@ public class KeyButtonView extends ImageView implements ButtonInterface { x = (int)ev.getRawX(); y = (int)ev.getRawY(); - boolean exceededTouchSlopX = Math.abs(x - mTouchDownX) > (mIsVertical - ? QuickStepContract.getQuickScrubTouchSlopPx() - : QuickStepContract.getQuickStepTouchSlopPx()); - boolean exceededTouchSlopY = Math.abs(y - mTouchDownY) > (mIsVertical - ? QuickStepContract.getQuickStepTouchSlopPx() - : QuickStepContract.getQuickScrubTouchSlopPx()); - if (exceededTouchSlopX || exceededTouchSlopY) { + float slop = QuickStepContract.getQuickStepTouchSlopPx(getContext()); + if (Math.abs(x - mTouchDownX) > slop || Math.abs(y - mTouchDownY) > slop) { // When quick step is enabled, prevent animating the ripple triggered by // setPressed and decide to run it on touch up setPressed(false); @@ -304,6 +300,23 @@ public class KeyButtonView extends ImageView implements ButtonInterface { return true; } + @Override + public void setImageDrawable(Drawable drawable) { + super.setImageDrawable(drawable); + + if (drawable == null) { + return; + } + KeyButtonDrawable keyButtonDrawable = (KeyButtonDrawable) drawable; + keyButtonDrawable.setDarkIntensity(mDarkIntensity); + mHasOvalBg = keyButtonDrawable.hasOvalBg(); + if (mHasOvalBg) { + mOvalBgPaint.setColor(keyButtonDrawable.getDrawableBackgroundColor()); + } + mRipple.setType(keyButtonDrawable.hasOvalBg() ? KeyButtonRipple.Type.OVAL + : KeyButtonRipple.Type.ROUNDED_RECT); + } + public void playSoundEffect(int soundConstant) { if (!mPlaySounds) return; mAudioManager.playSoundEffect(soundConstant, ActivityManager.getCurrentUser()); @@ -360,17 +373,11 @@ public class KeyButtonView extends ImageView implements ButtonInterface { @Override public void setDarkIntensity(float darkIntensity) { + mDarkIntensity = darkIntensity; + Drawable drawable = getDrawable(); if (drawable != null) { - KeyButtonDrawable keyButtonDrawable = (KeyButtonDrawable) drawable; - keyButtonDrawable.setDarkIntensity(darkIntensity); - mHasOvalBg = keyButtonDrawable.hasOvalBg(); - if (mHasOvalBg) { - mOvalBgPaint.setColor(keyButtonDrawable.getDarkColor()); - } - mRipple.setType(keyButtonDrawable.hasOvalBg() ? KeyButtonRipple.Type.OVAL - : KeyButtonRipple.Type.ROUNDED_RECT); - + ((KeyButtonDrawable) drawable).setDarkIntensity(darkIntensity); // Since we reuse the same drawable for multiple views, we need to invalidate the view // manually. invalidate(); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java index 2afe485eff8e..13f93b923505 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java @@ -545,7 +545,7 @@ public class MobileSignalController extends SignalController< } private boolean isDataDisabled() { - return !mPhone.getDataEnabled(mSubscriptionInfo.getSubscriptionId()); + return !mPhone.isDataCapable(); } @VisibleForTesting @@ -566,6 +566,7 @@ public class MobileSignalController extends SignalController< pw.println(" mDataState=" + mDataState + ","); pw.println(" mDataNetType=" + mDataNetType + ","); pw.println(" mInflateSignalStrengths=" + mInflateSignalStrengths + ","); + pw.println(" isDataDisabled=" + isDataDisabled() + ","); } class MobilePhoneStateListener extends PhoneStateListener { diff --git a/packages/SystemUI/src/com/android/systemui/util/leak/DumpTruck.java b/packages/SystemUI/src/com/android/systemui/util/leak/DumpTruck.java index efd6e03b0d20..fa7af0be77f1 100644 --- a/packages/SystemUI/src/com/android/systemui/util/leak/DumpTruck.java +++ b/packages/SystemUI/src/com/android/systemui/util/leak/DumpTruck.java @@ -16,6 +16,8 @@ package com.android.systemui.util.leak; +import android.content.ClipData; +import android.content.ClipDescription; import android.content.Context; import android.content.Intent; import android.net.Uri; @@ -47,10 +49,11 @@ public class DumpTruck { private static final String FILEPROVIDER_PATH = "leak"; private static final String TAG = "DumpTruck"; - private static final int BUFSIZ = 512 * 1024; // 512K + private static final int BUFSIZ = 1024 * 1024; // 1MB private final Context context; private Uri hprofUri; + private long pss; final StringBuilder body = new StringBuilder(); public DumpTruck(Context context) { @@ -89,6 +92,7 @@ public class DumpTruck { .append(info.currentPss) .append(" uss=") .append(info.currentUss); + pss = info.currentPss; } } if (pid == myPid) { @@ -114,6 +118,7 @@ public class DumpTruck { if (DumpTruck.zipUp(zipfile, paths)) { final File pathFile = new File(zipfile); hprofUri = FileProvider.getUriForFile(context, FILEPROVIDER_AUTHORITY, pathFile); + Log.v(TAG, "Heap dump accessible at URI: " + hprofUri); } } catch (IOException e) { Log.e(TAG, "unable to zip up heapdumps", e); @@ -138,16 +143,27 @@ public class DumpTruck { * @return share intent */ public Intent createShareIntent() { - Intent shareIntent = new Intent(Intent.ACTION_SEND); + Intent shareIntent = new Intent(Intent.ACTION_SEND_MULTIPLE); shareIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); - shareIntent.putExtra(Intent.EXTRA_SUBJECT, "SystemUI memory dump"); + shareIntent.putExtra(Intent.EXTRA_SUBJECT, + String.format("SystemUI memory dump (pss=%dM)", pss / 1024)); shareIntent.putExtra(Intent.EXTRA_TEXT, body.toString()); if (hprofUri != null) { + final ArrayList<Uri> uriList = new ArrayList<>(); + uriList.add(hprofUri); shareIntent.setType("application/zip"); - shareIntent.putExtra(Intent.EXTRA_STREAM, hprofUri); + shareIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uriList); + + // Include URI in ClipData also, so that grantPermission picks it up. + // We don't use setData here because some apps interpret this as "to:". + ClipData clipdata = new ClipData(new ClipDescription("content", + new String[]{ClipDescription.MIMETYPE_TEXT_PLAIN}), + new ClipData.Item(hprofUri)); + shareIntent.setClipData(clipdata); + shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); } return shareIntent; } diff --git a/packages/SystemUI/src/com/android/systemui/util/leak/GarbageMonitor.java b/packages/SystemUI/src/com/android/systemui/util/leak/GarbageMonitor.java index b590e7738f08..583f6b340d47 100644 --- a/packages/SystemUI/src/com/android/systemui/util/leak/GarbageMonitor.java +++ b/packages/SystemUI/src/com/android/systemui/util/leak/GarbageMonitor.java @@ -16,9 +16,13 @@ package com.android.systemui.util.leak; +import static android.service.quicksettings.Tile.STATE_ACTIVE; +import static android.telephony.ims.feature.ImsFeature.STATE_UNAVAILABLE; + import static com.android.internal.logging.MetricsLogger.VIEW_UNKNOWN; import static com.android.systemui.Dependency.BG_LOOPER_NAME; +import android.annotation.Nullable; import android.app.ActivityManager; import android.content.Context; import android.content.Intent; @@ -38,11 +42,11 @@ import android.os.Message; import android.os.Process; import android.os.SystemProperties; import android.provider.Settings; -import android.service.quicksettings.Tile; import android.text.format.DateUtils; import android.util.Log; import android.util.LongSparseArray; +import com.android.systemui.Dumpable; import com.android.systemui.R; import com.android.systemui.SystemUI; import com.android.systemui.SystemUIFactory; @@ -50,6 +54,8 @@ import com.android.systemui.plugins.qs.QSTile; import com.android.systemui.qs.QSHost; import com.android.systemui.qs.tileimpl.QSTileImpl; +import java.io.FileDescriptor; +import java.io.PrintWriter; import java.util.ArrayList; import javax.inject.Inject; @@ -59,26 +65,33 @@ import javax.inject.Singleton; /** */ @Singleton -public class GarbageMonitor { +public class GarbageMonitor implements Dumpable { private static final boolean LEAK_REPORTING_ENABLED = Build.IS_DEBUGGABLE && SystemProperties.getBoolean("debug.enable_leak_reporting", false); private static final String FORCE_ENABLE_LEAK_REPORTING = "sysui_force_enable_leak_reporting"; private static final boolean HEAP_TRACKING_ENABLED = Build.IS_DEBUGGABLE; - private static final boolean ENABLE_AM_HEAP_LIMIT = true; // use ActivityManager.setHeapLimit + + // whether to use ActivityManager.setHeapLimit + private static final boolean ENABLE_AM_HEAP_LIMIT = Build.IS_DEBUGGABLE; + // heap limit value, in KB (overrides R.integer.watch_heap_limit) + private static final String SETTINGS_KEY_AM_HEAP_LIMIT = "systemui_am_heap_limit"; private static final String TAG = "GarbageMonitor"; private static final long GARBAGE_INSPECTION_INTERVAL = 15 * DateUtils.MINUTE_IN_MILLIS; // 15 min private static final long HEAP_TRACK_INTERVAL = 1 * DateUtils.MINUTE_IN_MILLIS; // 1 min + private static final int HEAP_TRACK_HISTORY_LEN = 720; // 12 hours private static final int DO_GARBAGE_INSPECTION = 1000; private static final int DO_HEAP_TRACK = 3000; private static final int GARBAGE_ALLOWANCE = 5; + private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG); + private final Handler mHandler; private final TrackedGarbage mTrackedGarbage; private final LeakReporter mLeakReporter; @@ -112,7 +125,9 @@ public class GarbageMonitor { mDumpTruck = new DumpTruck(mContext); if (ENABLE_AM_HEAP_LIMIT) { - mHeapLimit = mContext.getResources().getInteger(R.integer.watch_heap_limit); + mHeapLimit = Settings.Global.getInt(context.getContentResolver(), + SETTINGS_KEY_AM_HEAP_LIMIT, + mContext.getResources().getInteger(R.integer.watch_heap_limit)); } } @@ -174,7 +189,7 @@ public class GarbageMonitor { sb.append(p); sb.append(" "); } - Log.v(TAG, sb.toString()); + if (DEBUG) Log.v(TAG, sb.toString()); } private void update() { @@ -183,18 +198,18 @@ public class GarbageMonitor { for (int i = 0; i < dinfos.length; i++) { Debug.MemoryInfo dinfo = dinfos[i]; if (i > mPids.size()) { - Log.e(TAG, "update: unknown process info received: " + dinfo); + if (DEBUG) Log.e(TAG, "update: unknown process info received: " + dinfo); break; } final long pid = mPids.get(i).intValue(); final ProcessMemInfo info = mData.get(pid); - info.head = (info.head + 1) % info.pss.length; info.pss[info.head] = info.currentPss = dinfo.getTotalPss(); info.uss[info.head] = info.currentUss = dinfo.getTotalPrivateDirty(); + info.head = (info.head + 1) % info.pss.length; if (info.currentPss > info.max) info.max = info.currentPss; if (info.currentUss > info.max) info.max = info.currentUss; if (info.currentPss == 0) { - Log.v(TAG, "update: pid " + pid + " has pss=0, it probably died"); + if (DEBUG) Log.v(TAG, "update: pid " + pid + " has pss=0, it probably died"); mData.remove(pid); } } @@ -224,11 +239,36 @@ public class GarbageMonitor { return b + SUFFIXES[i]; } - private void dumpHprofAndShare() { - final Intent share = mDumpTruck.captureHeaps(getTrackedProcesses()).createShareIntent(); - mContext.startActivity(share); + private Intent dumpHprofAndGetShareIntent() { + return mDumpTruck.captureHeaps(getTrackedProcesses()).createShareIntent(); + } + + @Override + public void dump(@Nullable FileDescriptor fd, PrintWriter pw, @Nullable String[] args) { + pw.println("GarbageMonitor params:"); + pw.println(String.format(" mHeapLimit=%d KB", mHeapLimit)); + pw.println(String.format(" GARBAGE_INSPECTION_INTERVAL=%d (%.1f mins)", + GARBAGE_INSPECTION_INTERVAL, + (float) GARBAGE_INSPECTION_INTERVAL / DateUtils.MINUTE_IN_MILLIS)); + final float htiMins = HEAP_TRACK_INTERVAL / DateUtils.MINUTE_IN_MILLIS; + pw.println(String.format(" HEAP_TRACK_INTERVAL=%d (%.1f mins)", + HEAP_TRACK_INTERVAL, + htiMins)); + pw.println(String.format(" HEAP_TRACK_HISTORY_LEN=%d (%.1f hr total)", + HEAP_TRACK_HISTORY_LEN, + (float) HEAP_TRACK_HISTORY_LEN * htiMins / 60f)); + + pw.println("GarbageMonitor tracked processes:"); + + for (long pid : mPids) { + final ProcessMemInfo pmi = mData.get(pid); + if (pmi != null) { + pmi.dump(fd, pw, args); + } + } } + private static class MemoryIconDrawable extends Drawable { long pss, limit; final Drawable baseIcon; @@ -238,7 +278,7 @@ public class GarbageMonitor { MemoryIconDrawable(Context context) { baseIcon = context.getDrawable(R.drawable.ic_memory).mutate(); dp = context.getResources().getDisplayMetrics().density; - paint.setColor(QSTileImpl.getColorForState(context, Tile.STATE_ACTIVE)); + paint.setColor(QSTileImpl.getColorForState(context, STATE_ACTIVE)); } public void setPss(long pss) { @@ -343,8 +383,12 @@ public class GarbageMonitor { public static class MemoryTile extends QSTileImpl<QSTile.State> { public static final String TILE_SPEC = "dbg:mem"; + // Tell QSTileHost.java to toss this into the default tileset? + public static final boolean ADD_TO_DEFAULT_ON_DEBUGGABLE_BUILDS = true; + private final GarbageMonitor gm; private ProcessMemInfo pmi; + private boolean dumpInProgress; @Inject public MemoryTile(QSHost host) { @@ -364,8 +408,26 @@ public class GarbageMonitor { @Override protected void handleClick() { - getHost().collapsePanels(); - mHandler.post(gm::dumpHprofAndShare); + if (dumpInProgress) return; + + dumpInProgress = true; + refreshState(); + new Thread("HeapDumpThread") { + @Override + public void run() { + try { + // wait for animations & state changes + Thread.sleep(500); + } catch (InterruptedException ignored) { } + final Intent shareIntent = gm.dumpHprofAndGetShareIntent(); + mHandler.post(() -> { + dumpInProgress = false; + refreshState(); + getHost().collapsePanels(); + mContext.startActivity(shareIntent); + }); + } + }.start(); } @Override @@ -395,9 +457,12 @@ public class GarbageMonitor { pmi = gm.getMemInfo(Process.myPid()); final MemoryGraphIcon icon = new MemoryGraphIcon(); icon.setHeapLimit(gm.mHeapLimit); + state.state = dumpInProgress ? STATE_UNAVAILABLE : STATE_ACTIVE; + state.label = dumpInProgress + ? "Dumping..." + : mContext.getString(R.string.heap_dump_tile_name); if (pmi != null) { icon.setPss(pmi.currentPss); - state.label = mContext.getString(R.string.heap_dump_tile_name); state.secondaryLabel = String.format( "pss: %s / %s", @@ -405,7 +470,6 @@ public class GarbageMonitor { formatBytes(gm.mHeapLimit * 1024)); } else { icon.setPss(0); - state.label = "Dump SysUI"; state.secondaryLabel = null; } state.icon = icon; @@ -424,13 +488,14 @@ public class GarbageMonitor { } } - public static class ProcessMemInfo { + /** */ + public static class ProcessMemInfo implements Dumpable { public long pid; public String name; public long startTime; public long currentPss, currentUss; - public long[] pss = new long[256]; - public long[] uss = new long[256]; + public long[] pss = new long[HEAP_TRACK_HISTORY_LEN]; + public long[] uss = new long[HEAP_TRACK_HISTORY_LEN]; public long max = 1; public int head = 0; @@ -443,9 +508,33 @@ public class GarbageMonitor { public long getUptime() { return System.currentTimeMillis() - startTime; } + + @Override + public void dump(@Nullable FileDescriptor fd, PrintWriter pw, @Nullable String[] args) { + pw.print("{ \"pid\": "); + pw.print(pid); + pw.print(", \"name\": \""); + pw.print(name.replace('"', '-')); + pw.print("\", \"start\": "); + pw.print(startTime); + pw.print(", \"pss\": ["); + // write pss values starting from the oldest, which is pss[head], wrapping around to + // pss[(head-1) % pss.length] + for (int i = 0; i < pss.length; i++) { + if (i > 0) pw.print(","); + pw.print(pss[(head + i) % pss.length]); + } + pw.print("], \"uss\": ["); + for (int i = 0; i < uss.length; i++) { + if (i > 0) pw.print(","); + pw.print(uss[(head + i) % uss.length]); + } + pw.println("] }"); + } } - public static class Service extends SystemUI { + /** */ + public static class Service extends SystemUI implements Dumpable { private GarbageMonitor mGarbageMonitor; @Override @@ -463,6 +552,11 @@ public class GarbageMonitor { mGarbageMonitor.startHeapTracking(); } } + + @Override + public void dump(@Nullable FileDescriptor fd, PrintWriter pw, @Nullable String[] args) { + if (mGarbageMonitor != null) mGarbageMonitor.dump(fd, pw, args); + } } private class BackgroundHeapCheckHandler extends Handler { diff --git a/packages/SystemUI/src/com/android/systemui/util/wakelock/WakeLock.java b/packages/SystemUI/src/com/android/systemui/util/wakelock/WakeLock.java index bebc20b116a3..775a3ab3360c 100644 --- a/packages/SystemUI/src/com/android/systemui/util/wakelock/WakeLock.java +++ b/packages/SystemUI/src/com/android/systemui/util/wakelock/WakeLock.java @@ -31,6 +31,11 @@ public interface WakeLock { static final String REASON_WRAP = "wrap"; /** + * Default wake-lock timeout, to avoid battery regressions. + */ + long DEFAULT_MAX_TIMEOUT = 20000; + + /** * @param why A tag that will be saved for sysui dumps. * @see android.os.PowerManager.WakeLock#acquire() **/ @@ -46,7 +51,14 @@ public interface WakeLock { Runnable wrap(Runnable r); static WakeLock createPartial(Context context, String tag) { - return wrap(createPartialInner(context, tag)); + return createPartial(context, tag, DEFAULT_MAX_TIMEOUT); + } + + /** + * Creates a {@link WakeLock} that has a default release timeout. + * @see android.os.PowerManager.WakeLock#acquire(long) */ + static WakeLock createPartial(Context context, String tag, long maxTimeout) { + return wrap(createPartialInner(context, tag), maxTimeout); } @VisibleForTesting @@ -66,7 +78,14 @@ public interface WakeLock { }; } - static WakeLock wrap(final PowerManager.WakeLock inner) { + /** + * Create a {@link WakeLock} containing a {@link PowerManager.WakeLock}. + * @param inner To be wrapped. + * @param maxTimeout When to expire. + * @return The new wake lock. + */ + @VisibleForTesting + static WakeLock wrap(final PowerManager.WakeLock inner, long maxTimeout) { return new WakeLock() { private final HashMap<String, Integer> mActiveClients = new HashMap<>(); @@ -74,7 +93,7 @@ public interface WakeLock { public void acquire(String why) { mActiveClients.putIfAbsent(why, 0); mActiveClients.put(why, mActiveClients.get(why) + 1); - inner.acquire(); + inner.acquire(maxTimeout); } /** @see PowerManager.WakeLock#release() */ diff --git a/packages/SystemUI/tests/src/com/android/systemui/assist/AssistHandleBehaviorControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/assist/AssistHandleBehaviorControllerTest.java index 18f114a71a8d..a583b1c4308e 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/assist/AssistHandleBehaviorControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/assist/AssistHandleBehaviorControllerTest.java @@ -20,6 +20,7 @@ import static org.mockito.AdditionalAnswers.answerVoid; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.anyLong; +import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.inOrder; import static org.mockito.Mockito.reset; @@ -35,11 +36,13 @@ import android.testing.TestableLooper.RunWithLooper; import androidx.test.filters.SmallTest; import com.android.internal.app.AssistUtils; +import com.android.internal.config.sysui.SystemUiDeviceConfigFlags; import com.android.systemui.ScreenDecorations; import com.android.systemui.SysuiTestCase; import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.recents.OverviewProxyService; +import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -59,6 +62,7 @@ public class AssistHandleBehaviorControllerTest extends SysuiTestCase { @Mock private ScreenDecorations mMockScreenDecorations; @Mock private AssistUtils mMockAssistUtils; @Mock private Handler mMockHandler; + @Mock private PhenotypeHelper mMockPhenotypeHelper; @Mock private AssistHandleBehaviorController.BehaviorController mMockBehaviorController; @Before @@ -69,14 +73,21 @@ public class AssistHandleBehaviorControllerTest extends SysuiTestCase { doAnswer(answerVoid(Runnable::run)).when(mMockHandler).post(any(Runnable.class)); doAnswer(answerVoid(Runnable::run)).when(mMockHandler) .postDelayed(any(Runnable.class), anyLong()); + mAssistHandleBehaviorController = new AssistHandleBehaviorController( mContext, mMockAssistUtils, mMockHandler, () -> mMockScreenDecorations, + mMockPhenotypeHelper, mMockBehaviorController); } + @After + public void teardown() { + mAssistHandleBehaviorController.setBehavior(AssistHandleBehavior.OFF); + } + @Test public void hide_hidesHandlesWhenShowing() { // Arrange @@ -185,6 +196,9 @@ public class AssistHandleBehaviorControllerTest extends SysuiTestCase { public void showAndGo_doesNothingIfRecentlyHidden() { // Arrange when(mMockAssistUtils.getAssistComponentForUser(anyInt())).thenReturn(COMPONENT_NAME); + when(mMockPhenotypeHelper.getLong( + eq(SystemUiDeviceConfigFlags.ASSIST_HANDLES_SHOWN_FREQUENCY_THRESHOLD_MS), + anyLong())).thenReturn(10000L); mAssistHandleBehaviorController.showAndGo(); reset(mMockScreenDecorations); @@ -210,6 +224,87 @@ public class AssistHandleBehaviorControllerTest extends SysuiTestCase { } @Test + public void showAndGoDelayed_showsThenHidesHandlesWhenHiding() { + // Arrange + when(mMockAssistUtils.getAssistComponentForUser(anyInt())).thenReturn(COMPONENT_NAME); + mAssistHandleBehaviorController.hide(); + reset(mMockScreenDecorations); + + // Act + mAssistHandleBehaviorController.showAndGoDelayed(1000, false); + + // Assert + InOrder inOrder = inOrder(mMockScreenDecorations); + inOrder.verify(mMockScreenDecorations).setAssistHintVisible(true); + inOrder.verify(mMockScreenDecorations).setAssistHintVisible(false); + inOrder.verifyNoMoreInteractions(); + } + + @Test + public void showAndGoDelayed_hidesHandlesAfterTimeoutWhenShowing() { + // Arrange + when(mMockAssistUtils.getAssistComponentForUser(anyInt())).thenReturn(COMPONENT_NAME); + mAssistHandleBehaviorController.showAndStay(); + reset(mMockScreenDecorations); + + // Act + mAssistHandleBehaviorController.showAndGoDelayed(1000, false); + + // Assert + verify(mMockScreenDecorations).setAssistHintVisible(false); + verifyNoMoreInteractions(mMockScreenDecorations); + } + + @Test + public void showAndGoDelayed_hidesInitiallyThenShowsThenHidesAfterTimeoutWhenHideRequested() { + // Arrange + when(mMockAssistUtils.getAssistComponentForUser(anyInt())).thenReturn(COMPONENT_NAME); + mAssistHandleBehaviorController.showAndStay(); + reset(mMockScreenDecorations); + + // Act + mAssistHandleBehaviorController.showAndGoDelayed(1000, true); + + // Assert + InOrder inOrder = inOrder(mMockScreenDecorations); + inOrder.verify(mMockScreenDecorations).setAssistHintVisible(false); + inOrder.verify(mMockScreenDecorations).setAssistHintVisible(true); + inOrder.verify(mMockScreenDecorations).setAssistHintVisible(false); + inOrder.verifyNoMoreInteractions(); + } + + @Test + public void showAndGoDelayed_doesNothingIfRecentlyHidden() { + // Arrange + when(mMockAssistUtils.getAssistComponentForUser(anyInt())).thenReturn(COMPONENT_NAME); + when(mMockPhenotypeHelper.getLong( + eq(SystemUiDeviceConfigFlags.ASSIST_HANDLES_SHOWN_FREQUENCY_THRESHOLD_MS), + anyLong())).thenReturn(10000L); + mAssistHandleBehaviorController.showAndGo(); + reset(mMockScreenDecorations); + + // Act + mAssistHandleBehaviorController.showAndGoDelayed(1000, false); + + // Assert + verifyNoMoreInteractions(mMockScreenDecorations); + } + + @Test + public void showAndGoDelayed_doesNothingWhenThereIsNoAssistant() { + // Arrange + when(mMockAssistUtils.getAssistComponentForUser(anyInt())).thenReturn(null); + mAssistHandleBehaviorController.hide(); + reset(mMockScreenDecorations); + + // Act + mAssistHandleBehaviorController.showAndGoDelayed(1000, false); + + // Assert + verifyNoMoreInteractions(mMockScreenDecorations); + } + + @Test public void setBehavior_activatesTheBehaviorWhenInGesturalMode() { // Arrange when(mMockAssistUtils.getAssistComponentForUser(anyInt())).thenReturn(COMPONENT_NAME); diff --git a/packages/SystemUI/tests/src/com/android/systemui/classifier/FalsingManagerProxyTest.java b/packages/SystemUI/tests/src/com/android/systemui/classifier/FalsingManagerProxyTest.java new file mode 100644 index 000000000000..329ef1c19a2b --- /dev/null +++ b/packages/SystemUI/tests/src/com/android/systemui/classifier/FalsingManagerProxyTest.java @@ -0,0 +1,100 @@ +/* + * Copyright (C) 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.classifier; + +import static com.android.internal.config.sysui.SystemUiDeviceConfigFlags.BRIGHTLINE_FALSING_MANAGER_ENABLED; + +import static org.hamcrest.CoreMatchers.instanceOf; +import static org.junit.Assert.assertThat; + +import android.os.Handler; +import android.provider.DeviceConfig; +import android.testing.AndroidTestingRunner; +import android.testing.TestableLooper; + +import androidx.test.filters.SmallTest; + +import com.android.systemui.SysuiTestCase; +import com.android.systemui.classifier.brightline.BrightLineFalsingManager; +import com.android.systemui.shared.plugins.PluginManager; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; + +@SmallTest +@RunWith(AndroidTestingRunner.class) +@TestableLooper.RunWithLooper +public class FalsingManagerProxyTest extends SysuiTestCase { + @Mock + PluginManager mPluginManager; + private boolean mDefaultConfigValue; + private Handler mHandler; + private TestableLooper mTestableLooper; + + @Before + public void setup() { + MockitoAnnotations.initMocks(this); + mTestableLooper = TestableLooper.get(this); + mHandler = new Handler(mTestableLooper.getLooper()); + mDefaultConfigValue = DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_SYSTEMUI, + BRIGHTLINE_FALSING_MANAGER_ENABLED, false); + } + + @After + public void tearDown() { + DeviceConfig.setProperty(DeviceConfig.NAMESPACE_SYSTEMUI, + BRIGHTLINE_FALSING_MANAGER_ENABLED, mDefaultConfigValue ? "true" : "false", false); + } + + @Test + public void test_brightLineFalsingManagerDisabled() { + FalsingManagerProxy proxy = new FalsingManagerProxy(getContext(), mPluginManager, mHandler); + + assertThat(proxy.getInternalFalsingManager(), instanceOf(FalsingManagerImpl.class)); + } + + @Test + public void test_brightLineFalsingManagerEnabled() { + DeviceConfig.setProperty(DeviceConfig.NAMESPACE_SYSTEMUI, + BRIGHTLINE_FALSING_MANAGER_ENABLED, "true", false); + FalsingManagerProxy proxy = new FalsingManagerProxy(getContext(), mPluginManager, mHandler); + + assertThat(proxy.getInternalFalsingManager(), instanceOf(BrightLineFalsingManager.class)); + } + + @Test + public void test_brightLineFalsingManagerToggled() { + FalsingManagerProxy proxy = new FalsingManagerProxy(getContext(), mPluginManager, mHandler); + assertThat(proxy.getInternalFalsingManager(), instanceOf(FalsingManagerImpl.class)); + + DeviceConfig.setProperty(DeviceConfig.NAMESPACE_SYSTEMUI, + BRIGHTLINE_FALSING_MANAGER_ENABLED, "true", false); + mTestableLooper.processAllMessages(); + proxy.setupFalsingManager(getContext()); + assertThat(proxy.getInternalFalsingManager(), instanceOf(BrightLineFalsingManager.class)); + + DeviceConfig.setProperty(DeviceConfig.NAMESPACE_SYSTEMUI, + BRIGHTLINE_FALSING_MANAGER_ENABLED, "false", false); + mTestableLooper.processAllMessages(); + proxy.setupFalsingManager(getContext()); + assertThat(proxy.getInternalFalsingManager(), instanceOf(FalsingManagerImpl.class)); + } +} diff --git a/packages/SystemUI/tests/src/com/android/systemui/classifier/brightline/ClassifierTest.java b/packages/SystemUI/tests/src/com/android/systemui/classifier/brightline/ClassifierTest.java new file mode 100644 index 000000000000..d011e486d2e0 --- /dev/null +++ b/packages/SystemUI/tests/src/com/android/systemui/classifier/brightline/ClassifierTest.java @@ -0,0 +1,118 @@ +/* + * Copyright (C) 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.classifier.brightline; + +import android.util.DisplayMetrics; +import android.view.MotionEvent; + +import com.android.systemui.SysuiTestCase; + +import org.junit.After; +import org.junit.Before; + +import java.util.ArrayList; +import java.util.List; + +public class ClassifierTest extends SysuiTestCase { + + private FalsingDataProvider mDataProvider; + private List<MotionEvent> mMotionEvents = new ArrayList<>(); + private float mOffsetX = 0; + private float mOffsetY = 0; + + @Before + public void setup() { + DisplayMetrics displayMetrics = new DisplayMetrics(); + displayMetrics.xdpi = 100; + displayMetrics.ydpi = 100; + displayMetrics.widthPixels = 1000; + displayMetrics.heightPixels = 1000; + mDataProvider = new FalsingDataProvider(displayMetrics); + } + + @After + public void tearDown() { + resetDataProvider(); + } + + FalsingDataProvider getDataProvider() { + return mDataProvider; + } + + void setOffsetX(float offsetX) { + mOffsetX = offsetX; + } + + void setOffsetY(float offsetY) { + mOffsetY = offsetY; + } + + void resetDataProvider() { + for (MotionEvent motionEvent : mMotionEvents) { + motionEvent.recycle(); + } + + mMotionEvents.clear(); + + mDataProvider.onSessionEnd(); + } + + MotionEvent appendDownEvent(float x, float y) { + return appendMotionEvent(MotionEvent.ACTION_DOWN, x, y); + } + + MotionEvent appendDownEvent(float x, float y, long eventTime) { + return appendMotionEvent(MotionEvent.ACTION_DOWN, x, y, eventTime); + } + + MotionEvent appendMoveEvent(float x, float y) { + return appendMotionEvent(MotionEvent.ACTION_MOVE, x, y); + } + + MotionEvent appendMoveEvent(float x, float y, long eventTime) { + return appendMotionEvent(MotionEvent.ACTION_MOVE, x, y, eventTime); + } + + + MotionEvent appendUpEvent(float x, float y) { + return appendMotionEvent(MotionEvent.ACTION_UP, x, y); + } + + MotionEvent appendUpEvent(float x, float y, long eventTime) { + return appendMotionEvent(MotionEvent.ACTION_UP, x, y, eventTime); + } + + private MotionEvent appendMotionEvent(int actionType, float x, float y) { + + long eventTime = mMotionEvents.isEmpty() ? 1 : mMotionEvents.get( + mMotionEvents.size() - 1).getEventTime() + 1; + return appendMotionEvent(actionType, x, y, eventTime); + } + + private MotionEvent appendMotionEvent(int actionType, float x, float y, long eventTime) { + x += mOffsetX; + y += mOffsetY; + + MotionEvent motionEvent = MotionEvent.obtain(1, eventTime, actionType, x, y, + 0); + mMotionEvents.add(motionEvent); + + mDataProvider.onMotionEvent(motionEvent); + + return motionEvent; + } +} diff --git a/packages/SystemUI/tests/src/com/android/systemui/classifier/brightline/DiagonalClassifierTest.java b/packages/SystemUI/tests/src/com/android/systemui/classifier/brightline/DiagonalClassifierTest.java new file mode 100644 index 000000000000..b45d3f2855ee --- /dev/null +++ b/packages/SystemUI/tests/src/com/android/systemui/classifier/brightline/DiagonalClassifierTest.java @@ -0,0 +1,218 @@ +/* + * Copyright (C) 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.classifier.brightline; + +import static com.android.systemui.classifier.Classifier.LEFT_AFFORDANCE; +import static com.android.systemui.classifier.Classifier.RIGHT_AFFORDANCE; + +import static org.hamcrest.CoreMatchers.is; +import static org.junit.Assert.assertThat; +import static org.mockito.Mockito.when; + +import android.testing.AndroidTestingRunner; +import android.testing.TestableLooper; + +import androidx.test.filters.SmallTest; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; + +@SmallTest +@RunWith(AndroidTestingRunner.class) +@TestableLooper.RunWithLooper +public class DiagonalClassifierTest extends ClassifierTest { + + // Next variable is not actually five, but is very close. 5 degrees is currently the value + // used in the diagonal classifier, so we want slightly less than that to deal with + // floating point errors. + private static final float FIVE_DEG_IN_RADIANS = (float) (4.99f / 360f * Math.PI * 2f); + private static final float UP_IN_RADIANS = (float) (Math.PI / 2f); + private static final float DOWN_IN_RADIANS = (float) (3 * Math.PI / 2f); + private static final float RIGHT_IN_RADIANS = 0; + private static final float LEFT_IN_RADIANS = (float) Math.PI; + private static final float FORTY_FIVE_DEG_IN_RADIANS = (float) (Math.PI / 4); + + @Mock + private FalsingDataProvider mDataProvider; + private FalsingClassifier mClassifier; + + @Before + public void setup() { + super.setup(); + MockitoAnnotations.initMocks(this); + mClassifier = new DiagonalClassifier(mDataProvider); + } + + @After + public void tearDown() { + super.tearDown(); + } + + @Test + public void testPass_UnknownAngle() { + when(mDataProvider.getAngle()).thenReturn(Float.MAX_VALUE); + assertThat(mClassifier.isFalseTouch(), is(false)); + } + + @Test + public void testPass_VerticalSwipe() { + when(mDataProvider.getAngle()).thenReturn(UP_IN_RADIANS); + assertThat(mClassifier.isFalseTouch(), is(false)); + + when(mDataProvider.getAngle()).thenReturn(DOWN_IN_RADIANS); + assertThat(mClassifier.isFalseTouch(), is(false)); + } + + @Test + public void testPass_MostlyVerticalSwipe() { + when(mDataProvider.getAngle()).thenReturn(UP_IN_RADIANS + 2 * FIVE_DEG_IN_RADIANS); + assertThat(mClassifier.isFalseTouch(), is(false)); + + when(mDataProvider.getAngle()).thenReturn(UP_IN_RADIANS - 2 * FIVE_DEG_IN_RADIANS); + assertThat(mClassifier.isFalseTouch(), is(false)); + + when(mDataProvider.getAngle()).thenReturn(DOWN_IN_RADIANS + 2 * FIVE_DEG_IN_RADIANS); + assertThat(mClassifier.isFalseTouch(), is(false)); + + when(mDataProvider.getAngle()).thenReturn(DOWN_IN_RADIANS - 2 * FIVE_DEG_IN_RADIANS * 2); + assertThat(mClassifier.isFalseTouch(), is(false)); + } + + @Test + public void testPass_BarelyVerticalSwipe() { + when(mDataProvider.getAngle()).thenReturn( + UP_IN_RADIANS - FORTY_FIVE_DEG_IN_RADIANS + 2 * FIVE_DEG_IN_RADIANS); + assertThat(mClassifier.isFalseTouch(), is(false)); + + when(mDataProvider.getAngle()).thenReturn( + UP_IN_RADIANS + FORTY_FIVE_DEG_IN_RADIANS - 2 * FIVE_DEG_IN_RADIANS); + assertThat(mClassifier.isFalseTouch(), is(false)); + + when(mDataProvider.getAngle()).thenReturn( + DOWN_IN_RADIANS - FORTY_FIVE_DEG_IN_RADIANS + 2 * FIVE_DEG_IN_RADIANS); + assertThat(mClassifier.isFalseTouch(), is(false)); + + when(mDataProvider.getAngle()).thenReturn( + DOWN_IN_RADIANS + FORTY_FIVE_DEG_IN_RADIANS - 2 * FIVE_DEG_IN_RADIANS * 2); + assertThat(mClassifier.isFalseTouch(), is(false)); + } + + @Test + public void testPass_HorizontalSwipe() { + when(mDataProvider.getAngle()).thenReturn(RIGHT_IN_RADIANS); + assertThat(mClassifier.isFalseTouch(), is(false)); + + when(mDataProvider.getAngle()).thenReturn(LEFT_IN_RADIANS); + assertThat(mClassifier.isFalseTouch(), is(false)); + } + + @Test + public void testPass_MostlyHorizontalSwipe() { + when(mDataProvider.getAngle()).thenReturn(RIGHT_IN_RADIANS + 2 * FIVE_DEG_IN_RADIANS); + assertThat(mClassifier.isFalseTouch(), is(false)); + + when(mDataProvider.getAngle()).thenReturn(RIGHT_IN_RADIANS - 2 * FIVE_DEG_IN_RADIANS); + assertThat(mClassifier.isFalseTouch(), is(false)); + + when(mDataProvider.getAngle()).thenReturn(LEFT_IN_RADIANS + 2 * FIVE_DEG_IN_RADIANS); + assertThat(mClassifier.isFalseTouch(), is(false)); + + when(mDataProvider.getAngle()).thenReturn(LEFT_IN_RADIANS - 2 * FIVE_DEG_IN_RADIANS); + assertThat(mClassifier.isFalseTouch(), is(false)); + } + + @Test + public void testPass_BarelyHorizontalSwipe() { + when(mDataProvider.getAngle()).thenReturn( + RIGHT_IN_RADIANS + FORTY_FIVE_DEG_IN_RADIANS - 2 * FIVE_DEG_IN_RADIANS); + assertThat(mClassifier.isFalseTouch(), is(false)); + + when(mDataProvider.getAngle()).thenReturn( + LEFT_IN_RADIANS - FORTY_FIVE_DEG_IN_RADIANS + 2 * FIVE_DEG_IN_RADIANS); + assertThat(mClassifier.isFalseTouch(), is(false)); + + when(mDataProvider.getAngle()).thenReturn( + LEFT_IN_RADIANS + FORTY_FIVE_DEG_IN_RADIANS - 2 * FIVE_DEG_IN_RADIANS); + assertThat(mClassifier.isFalseTouch(), is(false)); + + when(mDataProvider.getAngle()).thenReturn( + RIGHT_IN_RADIANS - FORTY_FIVE_DEG_IN_RADIANS + 2 * FIVE_DEG_IN_RADIANS * 2); + assertThat(mClassifier.isFalseTouch(), is(false)); + } + + @Test + public void testPass_AffordanceSwipe() { + when(mDataProvider.getInteractionType()).thenReturn(LEFT_AFFORDANCE); + when(mDataProvider.getAngle()).thenReturn( + RIGHT_IN_RADIANS + FORTY_FIVE_DEG_IN_RADIANS); + assertThat(mClassifier.isFalseTouch(), is(false)); + + when(mDataProvider.getInteractionType()).thenReturn(RIGHT_AFFORDANCE); + when(mDataProvider.getAngle()).thenReturn( + LEFT_IN_RADIANS - FORTY_FIVE_DEG_IN_RADIANS); + assertThat(mClassifier.isFalseTouch(), is(false)); + + // This classifier may return false for other angles, but these are the only + // two that actually matter, as affordances generally only travel in these two directions. + // We expect other classifiers to false in those cases, so it really doesn't matter what + // we do here. + } + + @Test + public void testFail_DiagonalSwipe() { + // Horizontal Swipes + when(mDataProvider.isVertical()).thenReturn(false); + when(mDataProvider.getAngle()).thenReturn( + RIGHT_IN_RADIANS + FORTY_FIVE_DEG_IN_RADIANS - FIVE_DEG_IN_RADIANS); + assertThat(mClassifier.isFalseTouch(), is(true)); + + when(mDataProvider.getAngle()).thenReturn( + UP_IN_RADIANS + FORTY_FIVE_DEG_IN_RADIANS + FIVE_DEG_IN_RADIANS); + assertThat(mClassifier.isFalseTouch(), is(true)); + + when(mDataProvider.getAngle()).thenReturn( + LEFT_IN_RADIANS + FORTY_FIVE_DEG_IN_RADIANS - FIVE_DEG_IN_RADIANS); + assertThat(mClassifier.isFalseTouch(), is(true)); + + when(mDataProvider.getAngle()).thenReturn( + DOWN_IN_RADIANS + FORTY_FIVE_DEG_IN_RADIANS + FIVE_DEG_IN_RADIANS); + assertThat(mClassifier.isFalseTouch(), is(true)); + + // Vertical Swipes + when(mDataProvider.isVertical()).thenReturn(true); + when(mDataProvider.getAngle()).thenReturn( + RIGHT_IN_RADIANS + FORTY_FIVE_DEG_IN_RADIANS + FIVE_DEG_IN_RADIANS); + assertThat(mClassifier.isFalseTouch(), is(true)); + + when(mDataProvider.getAngle()).thenReturn( + UP_IN_RADIANS + FORTY_FIVE_DEG_IN_RADIANS - FIVE_DEG_IN_RADIANS); + assertThat(mClassifier.isFalseTouch(), is(true)); + + + when(mDataProvider.getAngle()).thenReturn( + LEFT_IN_RADIANS + FORTY_FIVE_DEG_IN_RADIANS + FIVE_DEG_IN_RADIANS); + assertThat(mClassifier.isFalseTouch(), is(true)); + + when(mDataProvider.getAngle()).thenReturn( + DOWN_IN_RADIANS + FORTY_FIVE_DEG_IN_RADIANS - FIVE_DEG_IN_RADIANS); + assertThat(mClassifier.isFalseTouch(), is(true)); + } +} diff --git a/packages/SystemUI/tests/src/com/android/systemui/classifier/brightline/DistanceClassifierTest.java b/packages/SystemUI/tests/src/com/android/systemui/classifier/brightline/DistanceClassifierTest.java new file mode 100644 index 000000000000..805bb91591e5 --- /dev/null +++ b/packages/SystemUI/tests/src/com/android/systemui/classifier/brightline/DistanceClassifierTest.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.systemui.classifier.brightline; + +import static org.hamcrest.CoreMatchers.is; +import static org.junit.Assert.assertThat; + +import android.testing.AndroidTestingRunner; +import android.testing.TestableLooper; + +import androidx.test.filters.SmallTest; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; + +@SmallTest +@RunWith(AndroidTestingRunner.class) +@TestableLooper.RunWithLooper +public class DistanceClassifierTest extends ClassifierTest { + + private FalsingDataProvider mDataProvider; + private FalsingClassifier mClassifier; + + @Before + public void setup() { + super.setup(); + mDataProvider = getDataProvider(); + mClassifier = new DistanceClassifier(mDataProvider); + } + + @After + public void tearDown() { + super.tearDown(); + } + + @Test + public void testPass_noPointer() { + assertThat(mClassifier.isFalseTouch(), is(true)); + } + + @Test + public void testPass_fling() { + + mClassifier.onTouchEvent(appendDownEvent(1, 1)); + assertThat(mClassifier.isFalseTouch(), is(true)); + + mClassifier.onTouchEvent(appendMoveEvent(1, 2)); + assertThat(mClassifier.isFalseTouch(), is(true)); + + mClassifier.onTouchEvent(appendUpEvent(1, 40)); + assertThat(mClassifier.isFalseTouch(), is(false)); + } + + @Test + public void testFail_flingShort() { + mClassifier.onTouchEvent(appendDownEvent(1, 1)); + assertThat(mClassifier.isFalseTouch(), is(true)); + + mClassifier.onTouchEvent(appendMoveEvent(1, 2)); + assertThat(mClassifier.isFalseTouch(), is(true)); + + mClassifier.onTouchEvent(appendUpEvent(1, 10)); + assertThat(mClassifier.isFalseTouch(), is(true)); + } + + @Test + public void testFail_flingSlowly() { + // These events, in testing, result in a fling that falls just short of the threshold. + + mClassifier.onTouchEvent(appendDownEvent(1, 1, 1)); + assertThat(mClassifier.isFalseTouch(), is(true)); + + mClassifier.onTouchEvent(appendMoveEvent(1, 15, 2)); + assertThat(mClassifier.isFalseTouch(), is(true)); + + mClassifier.onTouchEvent(appendMoveEvent(1, 16, 3)); + mClassifier.onTouchEvent(appendMoveEvent(1, 17, 300)); + mClassifier.onTouchEvent(appendMoveEvent(1, 18, 301)); + mClassifier.onTouchEvent(appendUpEvent(1, 19, 501)); + assertThat(mClassifier.isFalseTouch(), is(true)); + } + + @Test + public void testPass_swipe() { + + mClassifier.onTouchEvent(appendDownEvent(1, 1)); + assertThat(mClassifier.isFalseTouch(), is(true)); + + mClassifier.onTouchEvent(appendMoveEvent(1, mDataProvider.getYdpi() * 3, 3)); + mClassifier.onTouchEvent(appendUpEvent(1, mDataProvider.getYdpi() * 3, 300)); + assertThat(mClassifier.isFalseTouch(), is(false)); + } +} diff --git a/packages/SystemUI/tests/src/com/android/systemui/classifier/brightline/FalsingDataProviderTest.java b/packages/SystemUI/tests/src/com/android/systemui/classifier/brightline/FalsingDataProviderTest.java new file mode 100644 index 000000000000..748c1377f7a0 --- /dev/null +++ b/packages/SystemUI/tests/src/com/android/systemui/classifier/brightline/FalsingDataProviderTest.java @@ -0,0 +1,251 @@ +/* + * Copyright (C) 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.classifier.brightline; + +import static org.hamcrest.CoreMatchers.is; +import static org.hamcrest.Matchers.closeTo; +import static org.junit.Assert.assertThat; + +import android.testing.AndroidTestingRunner; +import android.testing.TestableLooper; +import android.util.DisplayMetrics; +import android.view.MotionEvent; + +import androidx.test.filters.SmallTest; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; + +import java.util.List; + +@SmallTest +@RunWith(AndroidTestingRunner.class) +@TestableLooper.RunWithLooper +public class FalsingDataProviderTest extends ClassifierTest { + + private FalsingDataProvider mDataProvider; + + @Before + public void setup() { + super.setup(); + DisplayMetrics displayMetrics = new DisplayMetrics(); + displayMetrics.xdpi = 100; + displayMetrics.ydpi = 100; + displayMetrics.widthPixels = 1000; + displayMetrics.heightPixels = 1000; + mDataProvider = new FalsingDataProvider(displayMetrics); + } + + @After + public void tearDown() { + super.tearDown(); + mDataProvider.onSessionEnd(); + } + + @Test + public void test_trackMotionEvents() { + mDataProvider.onMotionEvent(appendDownEvent(2, 9)); + mDataProvider.onMotionEvent(appendMoveEvent(4, 7)); + mDataProvider.onMotionEvent(appendUpEvent(6, 5)); + List<MotionEvent> motionEventList = mDataProvider.getRecentMotionEvents(); + + assertThat(motionEventList.size(), is(3)); + assertThat(motionEventList.get(0).getActionMasked(), is(MotionEvent.ACTION_DOWN)); + assertThat(motionEventList.get(1).getActionMasked(), is(MotionEvent.ACTION_MOVE)); + assertThat(motionEventList.get(2).getActionMasked(), is(MotionEvent.ACTION_UP)); + assertThat(motionEventList.get(0).getEventTime(), is(1L)); + assertThat(motionEventList.get(1).getEventTime(), is(2L)); + assertThat(motionEventList.get(2).getEventTime(), is(3L)); + assertThat(motionEventList.get(0).getX(), is(2f)); + assertThat(motionEventList.get(1).getX(), is(4f)); + assertThat(motionEventList.get(2).getX(), is(6f)); + assertThat(motionEventList.get(0).getY(), is(9f)); + assertThat(motionEventList.get(1).getY(), is(7f)); + assertThat(motionEventList.get(2).getY(), is(5f)); + } + + @Test + public void test_trackRecentMotionEvents() { + mDataProvider.onMotionEvent(appendDownEvent(2, 9, 1)); + mDataProvider.onMotionEvent(appendMoveEvent(4, 7, 800)); + List<MotionEvent> motionEventList = mDataProvider.getRecentMotionEvents(); + + assertThat(motionEventList.size(), is(2)); + assertThat(motionEventList.get(0).getActionMasked(), is(MotionEvent.ACTION_DOWN)); + assertThat(motionEventList.get(1).getActionMasked(), is(MotionEvent.ACTION_MOVE)); + assertThat(motionEventList.get(0).getEventTime(), is(1L)); + assertThat(motionEventList.get(1).getEventTime(), is(800L)); + assertThat(motionEventList.get(0).getX(), is(2f)); + assertThat(motionEventList.get(1).getX(), is(4f)); + assertThat(motionEventList.get(0).getY(), is(9f)); + assertThat(motionEventList.get(1).getY(), is(7f)); + + mDataProvider.onMotionEvent(appendUpEvent(6, 5, 1200)); + + // Still two events, but event a is gone. + assertThat(motionEventList.size(), is(2)); + assertThat(motionEventList.get(0).getActionMasked(), is(MotionEvent.ACTION_MOVE)); + assertThat(motionEventList.get(1).getActionMasked(), is(MotionEvent.ACTION_UP)); + assertThat(motionEventList.get(0).getEventTime(), is(800L)); + assertThat(motionEventList.get(1).getEventTime(), is(1200L)); + assertThat(motionEventList.get(0).getX(), is(4f)); + assertThat(motionEventList.get(1).getX(), is(6f)); + assertThat(motionEventList.get(0).getY(), is(7f)); + assertThat(motionEventList.get(1).getY(), is(5f)); + + // The first, real event should still be a, however. + MotionEvent firstRealMotionEvent = mDataProvider.getFirstActualMotionEvent(); + assertThat(firstRealMotionEvent.getActionMasked(), is(MotionEvent.ACTION_DOWN)); + assertThat(firstRealMotionEvent.getEventTime(), is(1L)); + assertThat(firstRealMotionEvent.getX(), is(2f)); + assertThat(firstRealMotionEvent.getY(), is(9f)); + } + + @Test + public void test_unpackMotionEvents() { + // Batching only works for motion events of the same type. + MotionEvent motionEventA = appendMoveEvent(2, 9); + MotionEvent motionEventB = appendMoveEvent(4, 7); + MotionEvent motionEventC = appendMoveEvent(6, 5); + motionEventA.addBatch(motionEventB); + motionEventA.addBatch(motionEventC); + // Note that calling addBatch changes properties on the original event, not just it's + // historical artifacts. + + mDataProvider.onMotionEvent(motionEventA); + List<MotionEvent> motionEventList = mDataProvider.getRecentMotionEvents(); + + assertThat(motionEventList.size(), is(3)); + assertThat(motionEventList.get(0).getActionMasked(), is(MotionEvent.ACTION_MOVE)); + assertThat(motionEventList.get(1).getActionMasked(), is(MotionEvent.ACTION_MOVE)); + assertThat(motionEventList.get(2).getActionMasked(), is(MotionEvent.ACTION_MOVE)); + assertThat(motionEventList.get(0).getEventTime(), is(1L)); + assertThat(motionEventList.get(1).getEventTime(), is(2L)); + assertThat(motionEventList.get(2).getEventTime(), is(3L)); + assertThat(motionEventList.get(0).getX(), is(2f)); + assertThat(motionEventList.get(1).getX(), is(4f)); + assertThat(motionEventList.get(2).getX(), is(6f)); + assertThat(motionEventList.get(0).getY(), is(9f)); + assertThat(motionEventList.get(1).getY(), is(7f)); + assertThat(motionEventList.get(2).getY(), is(5f)); + } + + @Test + public void test_getAngle() { + MotionEvent motionEventOrigin = appendDownEvent(0, 0); + + mDataProvider.onMotionEvent(motionEventOrigin); + mDataProvider.onMotionEvent(appendMoveEvent(1, 1)); + assertThat((double) mDataProvider.getAngle(), closeTo(Math.PI / 4, .001)); + mDataProvider.onSessionEnd(); + + mDataProvider.onMotionEvent(motionEventOrigin); + mDataProvider.onMotionEvent(appendMoveEvent(-1, -1)); + assertThat((double) mDataProvider.getAngle(), closeTo(5 * Math.PI / 4, .001)); + mDataProvider.onSessionEnd(); + + + mDataProvider.onMotionEvent(motionEventOrigin); + mDataProvider.onMotionEvent(appendMoveEvent(2, 0)); + assertThat((double) mDataProvider.getAngle(), closeTo(0, .001)); + mDataProvider.onSessionEnd(); + } + + @Test + public void test_isHorizontal() { + MotionEvent motionEventOrigin = appendDownEvent(0, 0); + + mDataProvider.onMotionEvent(motionEventOrigin); + mDataProvider.onMotionEvent(appendMoveEvent(1, 1)); + assertThat(mDataProvider.isHorizontal(), is(false)); + mDataProvider.onSessionEnd(); + + mDataProvider.onMotionEvent(motionEventOrigin); + mDataProvider.onMotionEvent(appendMoveEvent(2, 1)); + assertThat(mDataProvider.isHorizontal(), is(true)); + mDataProvider.onSessionEnd(); + + mDataProvider.onMotionEvent(motionEventOrigin); + mDataProvider.onMotionEvent(appendMoveEvent(-3, -1)); + assertThat(mDataProvider.isHorizontal(), is(true)); + mDataProvider.onSessionEnd(); + } + + @Test + public void test_isVertical() { + MotionEvent motionEventOrigin = appendDownEvent(0, 0); + + mDataProvider.onMotionEvent(motionEventOrigin); + mDataProvider.onMotionEvent(appendMoveEvent(1, 0)); + assertThat(mDataProvider.isVertical(), is(false)); + mDataProvider.onSessionEnd(); + + mDataProvider.onMotionEvent(motionEventOrigin); + mDataProvider.onMotionEvent(appendMoveEvent(0, 1)); + assertThat(mDataProvider.isVertical(), is(true)); + mDataProvider.onSessionEnd(); + + mDataProvider.onMotionEvent(motionEventOrigin); + mDataProvider.onMotionEvent(appendMoveEvent(-3, -10)); + assertThat(mDataProvider.isVertical(), is(true)); + mDataProvider.onSessionEnd(); + } + + @Test + public void test_isRight() { + MotionEvent motionEventOrigin = appendDownEvent(0, 0); + + mDataProvider.onMotionEvent(motionEventOrigin); + mDataProvider.onMotionEvent(appendMoveEvent(1, 1)); + assertThat(mDataProvider.isRight(), is(true)); + mDataProvider.onSessionEnd(); + + mDataProvider.onMotionEvent(motionEventOrigin); + mDataProvider.onMotionEvent(appendMoveEvent(0, 1)); + assertThat(mDataProvider.isRight(), is(false)); + mDataProvider.onSessionEnd(); + + mDataProvider.onMotionEvent(motionEventOrigin); + mDataProvider.onMotionEvent(appendMoveEvent(-3, -10)); + assertThat(mDataProvider.isRight(), is(false)); + mDataProvider.onSessionEnd(); + } + + @Test + public void test_isUp() { + // Remember that our y axis is flipped. + + MotionEvent motionEventOrigin = appendDownEvent(0, 0); + + mDataProvider.onMotionEvent(motionEventOrigin); + mDataProvider.onMotionEvent(appendMoveEvent(1, -1)); + assertThat(mDataProvider.isUp(), is(true)); + mDataProvider.onSessionEnd(); + + mDataProvider.onMotionEvent(motionEventOrigin); + mDataProvider.onMotionEvent(appendMoveEvent(0, 0)); + assertThat(mDataProvider.isUp(), is(false)); + mDataProvider.onSessionEnd(); + + mDataProvider.onMotionEvent(motionEventOrigin); + mDataProvider.onMotionEvent(appendMoveEvent(-3, 10)); + assertThat(mDataProvider.isUp(), is(false)); + mDataProvider.onSessionEnd(); + } +} diff --git a/packages/SystemUI/tests/src/com/android/systemui/classifier/brightline/PointerCountClassifierTest.java b/packages/SystemUI/tests/src/com/android/systemui/classifier/brightline/PointerCountClassifierTest.java new file mode 100644 index 000000000000..341b74b33784 --- /dev/null +++ b/packages/SystemUI/tests/src/com/android/systemui/classifier/brightline/PointerCountClassifierTest.java @@ -0,0 +1,77 @@ +/* + * Copyright (C) 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.classifier.brightline; + +import static org.hamcrest.CoreMatchers.is; +import static org.junit.Assert.assertThat; + +import android.testing.AndroidTestingRunner; +import android.testing.TestableLooper; +import android.view.MotionEvent; + +import androidx.test.filters.SmallTest; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; + +@SmallTest +@RunWith(AndroidTestingRunner.class) +@TestableLooper.RunWithLooper +public class PointerCountClassifierTest extends ClassifierTest { + + private FalsingClassifier mClassifier; + + @Before + public void setup() { + super.setup(); + mClassifier = new PointerCountClassifier(getDataProvider()); + } + + @After + public void tearDown() { + super.tearDown(); + } + + @Test + public void testPass_noPointer() { + assertThat(mClassifier.isFalseTouch(), is(false)); + } + + @Test + public void testPass_singlePointer() { + mClassifier.onTouchEvent(appendDownEvent(1, 1)); + assertThat(mClassifier.isFalseTouch(), is(false)); + } + + @Test + public void testFail_multiPointer() { + MotionEvent.PointerProperties[] pointerProperties = + MotionEvent.PointerProperties.createArray(2); + pointerProperties[0].id = 0; + pointerProperties[1].id = 1; + MotionEvent.PointerCoords[] pointerCoords = MotionEvent.PointerCoords.createArray(2); + MotionEvent motionEvent = MotionEvent.obtain( + 1, 1, MotionEvent.ACTION_DOWN, 2, pointerProperties, pointerCoords, 0, 0, 0, 0, 0, + 0, + 0, 0); + mClassifier.onTouchEvent(motionEvent); + motionEvent.recycle(); + assertThat(mClassifier.isFalseTouch(), is(true)); + } +} diff --git a/packages/SystemUI/tests/src/com/android/systemui/classifier/brightline/ProximityClassifierTest.java b/packages/SystemUI/tests/src/com/android/systemui/classifier/brightline/ProximityClassifierTest.java new file mode 100644 index 000000000000..a6cabbf49458 --- /dev/null +++ b/packages/SystemUI/tests/src/com/android/systemui/classifier/brightline/ProximityClassifierTest.java @@ -0,0 +1,164 @@ +/* + * Copyright (C) 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.classifier.brightline; + +import static com.android.systemui.classifier.Classifier.GENERIC; +import static com.android.systemui.classifier.Classifier.QUICK_SETTINGS; + +import static org.hamcrest.CoreMatchers.is; +import static org.junit.Assert.assertThat; +import static org.mockito.Mockito.when; + +import android.hardware.Sensor; +import android.hardware.SensorEvent; +import android.testing.AndroidTestingRunner; +import android.testing.TestableLooper; +import android.view.MotionEvent; + +import androidx.test.filters.SmallTest; + +import org.junit.After; +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; + +import java.lang.reflect.Field; + +@SmallTest +@RunWith(AndroidTestingRunner.class) +@TestableLooper.RunWithLooper +public class ProximityClassifierTest extends ClassifierTest { + + private static final long NS_PER_MS = 1000000; + + @Mock + private FalsingDataProvider mDataProvider; + @Mock + private DistanceClassifier mDistanceClassifier; + private FalsingClassifier mClassifier; + + @Before + public void setup() { + super.setup(); + MockitoAnnotations.initMocks(this); + when(mDataProvider.getInteractionType()).thenReturn(GENERIC); + when(mDistanceClassifier.isLongSwipe()).thenReturn(false); + mClassifier = new ProximityClassifier(mDistanceClassifier, mDataProvider); + } + + @After + public void tearDown() { + super.tearDown(); + } + + @Test + public void testPass_uncovered() { + touchDown(); + touchUp(10); + assertThat(mClassifier.isFalseTouch(), is(false)); + } + + @Test + public void testPass_mostlyUncovered() { + touchDown(); + mClassifier.onSensorEvent(createSensorEvent(true, 1)); + mClassifier.onSensorEvent(createSensorEvent(false, 2)); + touchUp(20); + assertThat(mClassifier.isFalseTouch(), is(false)); + } + + @Test + public void testPass_quickSettings() { + touchDown(); + when(mDataProvider.getInteractionType()).thenReturn(QUICK_SETTINGS); + mClassifier.onSensorEvent(createSensorEvent(true, 1)); + mClassifier.onSensorEvent(createSensorEvent(false, 11)); + touchUp(10); + assertThat(mClassifier.isFalseTouch(), is(false)); + } + + @Test + public void testFail_covered() { + touchDown(); + mClassifier.onSensorEvent(createSensorEvent(true, 1)); + mClassifier.onSensorEvent(createSensorEvent(false, 11)); + touchUp(10); + assertThat(mClassifier.isFalseTouch(), is(true)); + } + + @Test + public void testFail_mostlyCovered() { + touchDown(); + mClassifier.onSensorEvent(createSensorEvent(true, 1)); + mClassifier.onSensorEvent(createSensorEvent(true, 95)); + mClassifier.onSensorEvent(createSensorEvent(true, 96)); + mClassifier.onSensorEvent(createSensorEvent(false, 100)); + touchUp(100); + assertThat(mClassifier.isFalseTouch(), is(true)); + } + + @Test + public void testPass_coveredWithLongSwipe() { + touchDown(); + mClassifier.onSensorEvent(createSensorEvent(true, 1)); + mClassifier.onSensorEvent(createSensorEvent(false, 11)); + touchUp(10); + when(mDistanceClassifier.isLongSwipe()).thenReturn(true); + assertThat(mClassifier.isFalseTouch(), is(false)); + } + + private void touchDown() { + MotionEvent motionEvent = MotionEvent.obtain(1, 1, MotionEvent.ACTION_DOWN, 0, 0, 0); + mClassifier.onTouchEvent(motionEvent); + motionEvent.recycle(); + } + + private void touchUp(long duration) { + MotionEvent motionEvent = MotionEvent.obtain(1, 1 + duration, MotionEvent.ACTION_UP, 0, + 100, 0); + + mClassifier.onTouchEvent(motionEvent); + + motionEvent.recycle(); + } + + private SensorEvent createSensorEvent(boolean covered, long timestampMs) { + SensorEvent sensorEvent = Mockito.mock(SensorEvent.class); + Sensor sensor = Mockito.mock(Sensor.class); + when(sensor.getType()).thenReturn(Sensor.TYPE_PROXIMITY); + when(sensor.getMaximumRange()).thenReturn(1f); + sensorEvent.sensor = sensor; + sensorEvent.timestamp = timestampMs * NS_PER_MS; + try { + Field valuesField = SensorEvent.class.getField("values"); + valuesField.setAccessible(true); + float[] sensorValue = {covered ? 0 : 1}; + try { + valuesField.set(sensorEvent, sensorValue); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + } catch (NoSuchFieldException e) { + e.printStackTrace(); + } + + return sensorEvent; + } +} diff --git a/packages/SystemUI/tests/src/com/android/systemui/classifier/brightline/TypeClassifierTest.java b/packages/SystemUI/tests/src/com/android/systemui/classifier/brightline/TypeClassifierTest.java new file mode 100644 index 000000000000..0355dc362593 --- /dev/null +++ b/packages/SystemUI/tests/src/com/android/systemui/classifier/brightline/TypeClassifierTest.java @@ -0,0 +1,305 @@ +/* + * Copyright (C) 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.classifier.brightline; + +import static com.android.systemui.classifier.Classifier.BOUNCER_UNLOCK; +import static com.android.systemui.classifier.Classifier.LEFT_AFFORDANCE; +import static com.android.systemui.classifier.Classifier.NOTIFICATION_DISMISS; +import static com.android.systemui.classifier.Classifier.NOTIFICATION_DRAG_DOWN; +import static com.android.systemui.classifier.Classifier.PULSE_EXPAND; +import static com.android.systemui.classifier.Classifier.QUICK_SETTINGS; +import static com.android.systemui.classifier.Classifier.RIGHT_AFFORDANCE; +import static com.android.systemui.classifier.Classifier.UNLOCK; + +import static org.hamcrest.CoreMatchers.is; +import static org.junit.Assert.assertThat; +import static org.mockito.Mockito.when; + +import android.testing.AndroidTestingRunner; +import android.testing.TestableLooper; + +import androidx.test.filters.SmallTest; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; + +@SmallTest +@RunWith(AndroidTestingRunner.class) +@TestableLooper.RunWithLooper +public class TypeClassifierTest extends ClassifierTest { + + @Mock + private FalsingDataProvider mDataProvider; + private FalsingClassifier mClassifier; + + @Before + public void setup() { + super.setup(); + MockitoAnnotations.initMocks(this); + mClassifier = new TypeClassifier(mDataProvider); + } + + @Test + public void testPass_QuickSettings() { + when(mDataProvider.getInteractionType()).thenReturn(QUICK_SETTINGS); + when(mDataProvider.isVertical()).thenReturn(true); + when(mDataProvider.isUp()).thenReturn(false); + + when(mDataProvider.isRight()).thenReturn(false); // right should cause no effect. + assertThat(mClassifier.isFalseTouch(), is(false)); + + when(mDataProvider.isRight()).thenReturn(true); + assertThat(mClassifier.isFalseTouch(), is(false)); + } + + @Test + public void testFalse_QuickSettings() { + when(mDataProvider.getInteractionType()).thenReturn(QUICK_SETTINGS); + + when(mDataProvider.isVertical()).thenReturn(false); + when(mDataProvider.isUp()).thenReturn(false); + assertThat(mClassifier.isFalseTouch(), is(true)); + + when(mDataProvider.isVertical()).thenReturn(true); + when(mDataProvider.isUp()).thenReturn(true); + assertThat(mClassifier.isFalseTouch(), is(true)); + } + + @Test + public void testPass_PulseExpand() { + when(mDataProvider.getInteractionType()).thenReturn(PULSE_EXPAND); + when(mDataProvider.isVertical()).thenReturn(true); + when(mDataProvider.isUp()).thenReturn(false); + + when(mDataProvider.isRight()).thenReturn(false); // right should cause no effect. + assertThat(mClassifier.isFalseTouch(), is(false)); + + when(mDataProvider.isRight()).thenReturn(true); + assertThat(mClassifier.isFalseTouch(), is(false)); + } + + @Test + public void testFalse_PulseExpand() { + when(mDataProvider.getInteractionType()).thenReturn(PULSE_EXPAND); + + when(mDataProvider.isVertical()).thenReturn(false); + when(mDataProvider.isUp()).thenReturn(false); + assertThat(mClassifier.isFalseTouch(), is(true)); + + when(mDataProvider.isVertical()).thenReturn(true); + when(mDataProvider.isUp()).thenReturn(true); + assertThat(mClassifier.isFalseTouch(), is(true)); + } + + @Test + public void testPass_NotificationDragDown() { + when(mDataProvider.getInteractionType()).thenReturn(NOTIFICATION_DRAG_DOWN); + when(mDataProvider.isVertical()).thenReturn(true); + when(mDataProvider.isUp()).thenReturn(false); + + when(mDataProvider.isRight()).thenReturn(false); // right should cause no effect. + assertThat(mClassifier.isFalseTouch(), is(false)); + + when(mDataProvider.isRight()).thenReturn(true); + assertThat(mClassifier.isFalseTouch(), is(false)); + } + + @Test + public void testFalse_NotificationDragDown() { + when(mDataProvider.getInteractionType()).thenReturn(NOTIFICATION_DRAG_DOWN); + + when(mDataProvider.isVertical()).thenReturn(false); + when(mDataProvider.isUp()).thenReturn(false); + assertThat(mClassifier.isFalseTouch(), is(true)); + + when(mDataProvider.isVertical()).thenReturn(true); + when(mDataProvider.isUp()).thenReturn(true); + assertThat(mClassifier.isFalseTouch(), is(true)); + } + + @Test + public void testPass_NotificationDismiss() { + when(mDataProvider.getInteractionType()).thenReturn(NOTIFICATION_DISMISS); + when(mDataProvider.isVertical()).thenReturn(false); + + when(mDataProvider.isUp()).thenReturn(false); // up and right should cause no effect. + when(mDataProvider.isRight()).thenReturn(false); + assertThat(mClassifier.isFalseTouch(), is(false)); + + when(mDataProvider.isUp()).thenReturn(true); + when(mDataProvider.isRight()).thenReturn(false); + assertThat(mClassifier.isFalseTouch(), is(false)); + + when(mDataProvider.isUp()).thenReturn(false); + when(mDataProvider.isRight()).thenReturn(true); + assertThat(mClassifier.isFalseTouch(), is(false)); + + when(mDataProvider.isUp()).thenReturn(true); + when(mDataProvider.isRight()).thenReturn(true); + assertThat(mClassifier.isFalseTouch(), is(false)); + } + + @Test + public void testFalse_NotificationDismiss() { + when(mDataProvider.getInteractionType()).thenReturn(NOTIFICATION_DISMISS); + when(mDataProvider.isVertical()).thenReturn(true); + + when(mDataProvider.isUp()).thenReturn(false); // up and right should cause no effect. + when(mDataProvider.isRight()).thenReturn(false); + assertThat(mClassifier.isFalseTouch(), is(true)); + + when(mDataProvider.isUp()).thenReturn(true); + when(mDataProvider.isRight()).thenReturn(false); + assertThat(mClassifier.isFalseTouch(), is(true)); + + when(mDataProvider.isUp()).thenReturn(false); + when(mDataProvider.isRight()).thenReturn(true); + assertThat(mClassifier.isFalseTouch(), is(true)); + + when(mDataProvider.isUp()).thenReturn(true); + when(mDataProvider.isRight()).thenReturn(true); + assertThat(mClassifier.isFalseTouch(), is(true)); + } + + + @Test + public void testPass_Unlock() { + when(mDataProvider.getInteractionType()).thenReturn(UNLOCK); + when(mDataProvider.isVertical()).thenReturn(true); + when(mDataProvider.isUp()).thenReturn(true); + + + when(mDataProvider.isRight()).thenReturn(false); // right should cause no effect. + assertThat(mClassifier.isFalseTouch(), is(false)); + + when(mDataProvider.isRight()).thenReturn(true); + assertThat(mClassifier.isFalseTouch(), is(false)); + } + + @Test + public void testFalse_Unlock() { + when(mDataProvider.getInteractionType()).thenReturn(UNLOCK); + + when(mDataProvider.isVertical()).thenReturn(false); + when(mDataProvider.isUp()).thenReturn(true); + assertThat(mClassifier.isFalseTouch(), is(true)); + + when(mDataProvider.isVertical()).thenReturn(true); + when(mDataProvider.isUp()).thenReturn(false); + assertThat(mClassifier.isFalseTouch(), is(true)); + + when(mDataProvider.isVertical()).thenReturn(false); + when(mDataProvider.isUp()).thenReturn(false); + assertThat(mClassifier.isFalseTouch(), is(true)); + } + + @Test + public void testPass_BouncerUnlock() { + when(mDataProvider.getInteractionType()).thenReturn(BOUNCER_UNLOCK); + when(mDataProvider.isVertical()).thenReturn(true); + when(mDataProvider.isUp()).thenReturn(true); + + + when(mDataProvider.isRight()).thenReturn(false); // right should cause no effect. + assertThat(mClassifier.isFalseTouch(), is(false)); + + when(mDataProvider.isRight()).thenReturn(true); + assertThat(mClassifier.isFalseTouch(), is(false)); + } + + @Test + public void testFalse_BouncerUnlock() { + when(mDataProvider.getInteractionType()).thenReturn(BOUNCER_UNLOCK); + + when(mDataProvider.isVertical()).thenReturn(false); + when(mDataProvider.isUp()).thenReturn(true); + assertThat(mClassifier.isFalseTouch(), is(true)); + + when(mDataProvider.isVertical()).thenReturn(true); + when(mDataProvider.isUp()).thenReturn(false); + assertThat(mClassifier.isFalseTouch(), is(true)); + + when(mDataProvider.isVertical()).thenReturn(false); + when(mDataProvider.isUp()).thenReturn(false); + assertThat(mClassifier.isFalseTouch(), is(true)); + } + + @Test + public void testPass_LeftAffordance() { + when(mDataProvider.getInteractionType()).thenReturn(LEFT_AFFORDANCE); + when(mDataProvider.isUp()).thenReturn(true); + when(mDataProvider.isRight()).thenReturn(true); + + + when(mDataProvider.isVertical()).thenReturn(false); // vertical should cause no effect. + assertThat(mClassifier.isFalseTouch(), is(false)); + + when(mDataProvider.isVertical()).thenReturn(true); + assertThat(mClassifier.isFalseTouch(), is(false)); + } + + @Test + public void testFalse_LeftAffordance() { + when(mDataProvider.getInteractionType()).thenReturn(LEFT_AFFORDANCE); + + when(mDataProvider.isRight()).thenReturn(false); + when(mDataProvider.isUp()).thenReturn(true); + assertThat(mClassifier.isFalseTouch(), is(true)); + + when(mDataProvider.isRight()).thenReturn(true); + when(mDataProvider.isUp()).thenReturn(false); + assertThat(mClassifier.isFalseTouch(), is(true)); + + when(mDataProvider.isRight()).thenReturn(false); + when(mDataProvider.isUp()).thenReturn(false); + assertThat(mClassifier.isFalseTouch(), is(true)); + } + + @Test + public void testPass_RightAffordance() { + when(mDataProvider.getInteractionType()).thenReturn(RIGHT_AFFORDANCE); + when(mDataProvider.isUp()).thenReturn(true); + when(mDataProvider.isRight()).thenReturn(false); + + + when(mDataProvider.isVertical()).thenReturn(false); // vertical should cause no effect. + assertThat(mClassifier.isFalseTouch(), is(false)); + + when(mDataProvider.isVertical()).thenReturn(true); + assertThat(mClassifier.isFalseTouch(), is(false)); + } + + @Test + public void testFalse_RightAffordance() { + when(mDataProvider.getInteractionType()).thenReturn(RIGHT_AFFORDANCE); + + when(mDataProvider.isUp()).thenReturn(true); + when(mDataProvider.isRight()).thenReturn(true); + assertThat(mClassifier.isFalseTouch(), is(true)); + + when(mDataProvider.isUp()).thenReturn(false); + when(mDataProvider.isRight()).thenReturn(true); + assertThat(mClassifier.isFalseTouch(), is(true)); + + when(mDataProvider.isUp()).thenReturn(false); + when(mDataProvider.isRight()).thenReturn(true); + assertThat(mClassifier.isFalseTouch(), is(true)); + } +} diff --git a/packages/SystemUI/tests/src/com/android/systemui/classifier/brightline/ZigZagClassifierTest.java b/packages/SystemUI/tests/src/com/android/systemui/classifier/brightline/ZigZagClassifierTest.java new file mode 100644 index 000000000000..25a1a75b0cbf --- /dev/null +++ b/packages/SystemUI/tests/src/com/android/systemui/classifier/brightline/ZigZagClassifierTest.java @@ -0,0 +1,411 @@ +/* + * Copyright (C) 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.classifier.brightline; + +import static org.hamcrest.CoreMatchers.is; +import static org.junit.Assert.assertThat; + +import android.testing.AndroidTestingRunner; +import android.testing.TestableLooper; + +import androidx.test.filters.SmallTest; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; + +import java.util.Random; + +@SmallTest +@RunWith(AndroidTestingRunner.class) +@TestableLooper.RunWithLooper +public class ZigZagClassifierTest extends ClassifierTest { + + private FalsingClassifier mClassifier; + + @Before + public void setup() { + super.setup(); + mClassifier = new ZigZagClassifier(getDataProvider()); + } + + @After + public void tearDown() { + super.tearDown(); + } + + @Test + public void testPass_fewTouchesVertical() { + assertThat(mClassifier.isFalseTouch(), is(false)); + appendMoveEvent(0, 0); + assertThat(mClassifier.isFalseTouch(), is(false)); + appendMoveEvent(0, 100); + assertThat(mClassifier.isFalseTouch(), is(false)); + } + + @Test + public void testPass_vertical() { + appendMoveEvent(0, 0); + appendMoveEvent(0, 100); + appendMoveEvent(0, 200); + assertThat(mClassifier.isFalseTouch(), is(false)); + } + + @Test + public void testPass_fewTouchesHorizontal() { + assertThat(mClassifier.isFalseTouch(), is(false)); + appendMoveEvent(0, 0); + assertThat(mClassifier.isFalseTouch(), is(false)); + appendMoveEvent(100, 0); + assertThat(mClassifier.isFalseTouch(), is(false)); + } + + @Test + public void testPass_horizontal() { + appendMoveEvent(0, 0); + appendMoveEvent(100, 0); + appendMoveEvent(200, 0); + assertThat(mClassifier.isFalseTouch(), is(false)); + } + + + @Test + public void testFail_minimumTouchesVertical() { + appendMoveEvent(0, 0); + appendMoveEvent(0, 100); + appendMoveEvent(0, 1); + assertThat(mClassifier.isFalseTouch(), is(true)); + } + + @Test + public void testFail_minimumTouchesHorizontal() { + appendMoveEvent(0, 0); + appendMoveEvent(100, 0); + appendMoveEvent(1, 0); + assertThat(mClassifier.isFalseTouch(), is(true)); + } + + @Test + public void testPass_fortyFiveDegreesStraight() { + appendMoveEvent(0, 0); + appendMoveEvent(10, 10); + appendMoveEvent(20, 20); + assertThat(mClassifier.isFalseTouch(), is(false)); + } + + @Test + public void testPass_horizontalZigZagVerticalStraight() { + // This test looks just like testFail_horizontalZigZagVerticalStraight but with + // a longer y range, making it look straighter. + appendMoveEvent(0, 0); + appendMoveEvent(5, 100); + appendMoveEvent(-5, 200); + assertThat(mClassifier.isFalseTouch(), is(false)); + } + + @Test + public void testPass_horizontalStraightVerticalZigZag() { + // This test looks just like testFail_horizontalStraightVerticalZigZag but with + // a longer x range, making it look straighter. + appendMoveEvent(0, 0); + appendMoveEvent(100, 5); + appendMoveEvent(200, -5); + assertThat(mClassifier.isFalseTouch(), is(false)); + } + + @Test + public void testFail_horizontalZigZagVerticalStraight() { + // This test looks just like testPass_horizontalZigZagVerticalStraight but with + // a shorter y range, making it look more crooked. + appendMoveEvent(0, 0); + appendMoveEvent(5, 10); + appendMoveEvent(-5, 20); + assertThat(mClassifier.isFalseTouch(), is(true)); + } + + @Test + public void testFail_horizontalStraightVerticalZigZag() { + // This test looks just like testPass_horizontalStraightVerticalZigZag but with + // a shorter x range, making it look more crooked. + appendMoveEvent(0, 0); + appendMoveEvent(10, 5); + appendMoveEvent(20, -5); + assertThat(mClassifier.isFalseTouch(), is(true)); + } + + @Test + public void test_between0And45() { + appendMoveEvent(0, 0); + appendMoveEvent(100, 5); + appendMoveEvent(200, 10); + assertThat(mClassifier.isFalseTouch(), is(false)); + + resetDataProvider(); + appendMoveEvent(0, 0); + appendMoveEvent(100, 0); + appendMoveEvent(200, 10); + assertThat(mClassifier.isFalseTouch(), is(false)); + + resetDataProvider(); + appendMoveEvent(0, 0); + appendMoveEvent(100, -10); + appendMoveEvent(200, 10); + assertThat(mClassifier.isFalseTouch(), is(false)); + + resetDataProvider(); + appendMoveEvent(0, 0); + appendMoveEvent(100, -10); + appendMoveEvent(200, 50); + assertThat(mClassifier.isFalseTouch(), is(true)); + } + + @Test + public void test_between45And90() { + appendMoveEvent(0, 0); + appendMoveEvent(10, 50); + appendMoveEvent(8, 100); + assertThat(mClassifier.isFalseTouch(), is(false)); + + resetDataProvider(); + appendMoveEvent(0, 0); + appendMoveEvent(1, 800); + appendMoveEvent(2, 900); + assertThat(mClassifier.isFalseTouch(), is(false)); + + resetDataProvider(); + appendMoveEvent(0, 0); + appendMoveEvent(-10, 600); + appendMoveEvent(30, 700); + assertThat(mClassifier.isFalseTouch(), is(false)); + + resetDataProvider(); + appendMoveEvent(0, 0); + appendMoveEvent(40, 100); + appendMoveEvent(0, 101); + assertThat(mClassifier.isFalseTouch(), is(true)); + } + + @Test + public void test_between90And135() { + appendMoveEvent(0, 0); + appendMoveEvent(-10, 50); + appendMoveEvent(-24, 100); + assertThat(mClassifier.isFalseTouch(), is(false)); + + resetDataProvider(); + appendMoveEvent(0, 0); + appendMoveEvent(-20, 800); + appendMoveEvent(-20, 900); + assertThat(mClassifier.isFalseTouch(), is(false)); + + resetDataProvider(); + appendMoveEvent(0, 0); + appendMoveEvent(30, 600); + appendMoveEvent(-10, 700); + assertThat(mClassifier.isFalseTouch(), is(false)); + + resetDataProvider(); + appendMoveEvent(0, 0); + appendMoveEvent(-80, 100); + appendMoveEvent(-10, 101); + assertThat(mClassifier.isFalseTouch(), is(true)); + } + + @Test + public void test_between135And180() { + appendMoveEvent(0, 0); + appendMoveEvent(-120, 10); + appendMoveEvent(-200, 20); + assertThat(mClassifier.isFalseTouch(), is(false)); + + resetDataProvider(); + appendMoveEvent(0, 0); + appendMoveEvent(-20, 8); + appendMoveEvent(-40, 2); + assertThat(mClassifier.isFalseTouch(), is(false)); + + resetDataProvider(); + appendMoveEvent(0, 0); + appendMoveEvent(-500, -2); + appendMoveEvent(-600, 70); + assertThat(mClassifier.isFalseTouch(), is(false)); + + resetDataProvider(); + appendMoveEvent(0, 0); + appendMoveEvent(-80, 100); + appendMoveEvent(-100, 1); + assertThat(mClassifier.isFalseTouch(), is(true)); + } + + @Test + public void test_between180And225() { + appendMoveEvent(0, 0); + appendMoveEvent(-120, -10); + appendMoveEvent(-200, -20); + assertThat(mClassifier.isFalseTouch(), is(false)); + + resetDataProvider(); + appendMoveEvent(0, 0); + appendMoveEvent(-20, -8); + appendMoveEvent(-40, -2); + assertThat(mClassifier.isFalseTouch(), is(false)); + + resetDataProvider(); + appendMoveEvent(0, 0); + appendMoveEvent(-500, 2); + appendMoveEvent(-600, -70); + assertThat(mClassifier.isFalseTouch(), is(false)); + + resetDataProvider(); + appendMoveEvent(0, 0); + appendMoveEvent(-80, -100); + appendMoveEvent(-100, -1); + assertThat(mClassifier.isFalseTouch(), is(true)); + } + + @Test + public void test_between225And270() { + appendMoveEvent(0, 0); + appendMoveEvent(-12, -20); + appendMoveEvent(-20, -40); + assertThat(mClassifier.isFalseTouch(), is(false)); + + resetDataProvider(); + appendMoveEvent(0, 0); + appendMoveEvent(-20, -130); + appendMoveEvent(-40, -260); + assertThat(mClassifier.isFalseTouch(), is(false)); + + resetDataProvider(); + appendMoveEvent(0, 0); + appendMoveEvent(1, -100); + appendMoveEvent(-6, -200); + assertThat(mClassifier.isFalseTouch(), is(false)); + + resetDataProvider(); + appendMoveEvent(0, 0); + appendMoveEvent(-80, -100); + appendMoveEvent(-10, -110); + assertThat(mClassifier.isFalseTouch(), is(true)); + } + + @Test + public void test_between270And315() { + appendMoveEvent(0, 0); + appendMoveEvent(12, -20); + appendMoveEvent(20, -40); + assertThat(mClassifier.isFalseTouch(), is(false)); + + resetDataProvider(); + appendMoveEvent(0, 0); + appendMoveEvent(20, -130); + appendMoveEvent(40, -260); + assertThat(mClassifier.isFalseTouch(), is(false)); + + resetDataProvider(); + appendMoveEvent(0, 0); + appendMoveEvent(-1, -100); + appendMoveEvent(6, -200); + assertThat(mClassifier.isFalseTouch(), is(false)); + + resetDataProvider(); + appendMoveEvent(0, 0); + appendMoveEvent(80, -100); + appendMoveEvent(10, -110); + assertThat(mClassifier.isFalseTouch(), is(true)); + } + + @Test + public void test_between315And360() { + appendMoveEvent(0, 0); + appendMoveEvent(120, -20); + appendMoveEvent(200, -40); + assertThat(mClassifier.isFalseTouch(), is(false)); + + resetDataProvider(); + appendMoveEvent(0, 0); + appendMoveEvent(200, -13); + appendMoveEvent(400, -30); + assertThat(mClassifier.isFalseTouch(), is(false)); + + resetDataProvider(); + appendMoveEvent(0, 0); + appendMoveEvent(100, 10); + appendMoveEvent(600, -20); + assertThat(mClassifier.isFalseTouch(), is(false)); + + resetDataProvider(); + appendMoveEvent(0, 0); + appendMoveEvent(80, -100); + appendMoveEvent(100, -1); + assertThat(mClassifier.isFalseTouch(), is(true)); + } + + @Test + public void test_randomOrigins() { + // The purpose of this test is to try all the other tests from different starting points. + // We use a pre-determined seed to make this test repeatable. + Random rand = new Random(23); + for (int i = 0; i < 100; i++) { + setOffsetX(rand.nextInt(2000) - 1000); + setOffsetY(rand.nextInt(2000) - 1000); + try { + resetDataProvider(); + testPass_fewTouchesVertical(); + resetDataProvider(); + testPass_vertical(); + resetDataProvider(); + testFail_horizontalStraightVerticalZigZag(); + resetDataProvider(); + testFail_horizontalZigZagVerticalStraight(); + resetDataProvider(); + testFail_minimumTouchesHorizontal(); + resetDataProvider(); + testFail_minimumTouchesVertical(); + resetDataProvider(); + testPass_fewTouchesHorizontal(); + resetDataProvider(); + testPass_fortyFiveDegreesStraight(); + resetDataProvider(); + testPass_horizontal(); + resetDataProvider(); + testPass_horizontalStraightVerticalZigZag(); + resetDataProvider(); + testPass_horizontalZigZagVerticalStraight(); + resetDataProvider(); + test_between0And45(); + resetDataProvider(); + test_between45And90(); + resetDataProvider(); + test_between90And135(); + resetDataProvider(); + test_between135And180(); + resetDataProvider(); + test_between180And225(); + resetDataProvider(); + test_between225And270(); + resetDataProvider(); + test_between270And315(); + resetDataProvider(); + test_between315And360(); + } catch (AssertionError e) { + throw new AssertionError("Random origin failure in iteration " + i, e); + } + } + } +} diff --git a/packages/SystemUI/tests/src/com/android/systemui/colorextraction/SysuiColorExtractorTests.java b/packages/SystemUI/tests/src/com/android/systemui/colorextraction/SysuiColorExtractorTests.java index 9c2c82257173..41747f407546 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/colorextraction/SysuiColorExtractorTests.java +++ b/packages/SystemUI/tests/src/com/android/systemui/colorextraction/SysuiColorExtractorTests.java @@ -40,6 +40,7 @@ import com.android.systemui.statusbar.policy.ConfigurationController; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; +import org.mockito.Mock; import org.mockito.MockitoAnnotations; /** @@ -57,6 +58,8 @@ public class SysuiColorExtractorTests extends SysuiTestCase { ColorExtractor.TYPE_DARK, ColorExtractor.TYPE_EXTRA_DARK}; + @Mock + private WallpaperManager mWallpaperManager; private ColorExtractor.GradientColors mColors; private SysuiColorExtractor mColorExtractor; @@ -72,32 +75,15 @@ public class SysuiColorExtractorTests extends SysuiTestCase { outGradientColorsNormal.set(mColors); outGradientColorsDark.set(mColors); outGradientColorsExtraDark.set(mColors); - }, mock(ConfigurationController.class), false); + }, mock(ConfigurationController.class), mWallpaperManager, true /* immediately */); } @Test - public void getColors_usesGreyIfWallpaperNotVisible() { - simulateEvent(mColorExtractor); - mColorExtractor.setWallpaperVisible(false); - - ColorExtractor.GradientColors fallbackColors = mColorExtractor.getNeutralColors(); - - for (int type : sTypes) { - assertEquals("Not using fallback!", - mColorExtractor.getColors(WallpaperManager.FLAG_SYSTEM, type), fallbackColors); - assertNotEquals("Wallpaper visibility event should not affect lock wallpaper.", - mColorExtractor.getColors(WallpaperManager.FLAG_LOCK, type), fallbackColors); - } - } - - @Test - public void getColors_doesntUseFallbackIfVisible() { + public void getColors() { mColors.setMainColor(Color.RED); mColors.setSecondaryColor(Color.RED); simulateEvent(mColorExtractor); - mColorExtractor.setWallpaperVisible(true); - for (int which : sWhich) { for (int type : sTypes) { assertEquals("Not using extracted colors!", @@ -109,8 +95,7 @@ public class SysuiColorExtractorTests extends SysuiTestCase { @Test public void getColors_fallbackWhenMediaIsVisible() { simulateEvent(mColorExtractor); - mColorExtractor.setWallpaperVisible(true); - mColorExtractor.setHasBackdrop(true); + mColorExtractor.setHasMediaArtwork(true); ColorExtractor.GradientColors fallbackColors = mColorExtractor.getNeutralColors(); @@ -127,7 +112,7 @@ public class SysuiColorExtractorTests extends SysuiTestCase { Tonal tonal = mock(Tonal.class); ConfigurationController configurationController = mock(ConfigurationController.class); SysuiColorExtractor sysuiColorExtractor = new SysuiColorExtractor(getContext(), - tonal, configurationController, false /* registerVisibility */); + tonal, configurationController, mWallpaperManager, true /* immediately */); verify(configurationController).addCallback(eq(sysuiColorExtractor)); reset(tonal); diff --git a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeSensorsTest.java b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeSensorsTest.java index 4467faf66830..33042918cfc9 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeSensorsTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeSensorsTest.java @@ -27,10 +27,12 @@ import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.reset; +import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.app.AlarmManager; +import android.database.ContentObserver; import android.hardware.display.AmbientDisplayConfiguration; import android.testing.AndroidTestingRunner; import android.testing.TestableLooper; @@ -39,6 +41,7 @@ import android.testing.TestableLooper.RunWithLooper; import androidx.test.filters.SmallTest; import com.android.systemui.SysuiTestCase; +import com.android.systemui.doze.DozeSensors.TriggerSensor; import com.android.systemui.plugins.SensorManagerPlugin; import com.android.systemui.statusbar.phone.DozeParameters; import com.android.systemui.util.AsyncSensorManager; @@ -73,6 +76,8 @@ public class DozeSensorsTest extends SysuiTestCase { private Consumer<Boolean> mProxCallback; @Mock private AlwaysOnDisplayPolicy mAlwaysOnDisplayPolicy; + @Mock + private TriggerSensor mMockTriggerSensor; private SensorManagerPlugin.SensorEventListener mWakeLockScreenListener; private TestableLooper mTestableLooper; private DozeSensors mDozeSensors; @@ -107,6 +112,25 @@ public class DozeSensorsTest extends SysuiTestCase { anyBoolean(), anyFloat(), anyFloat(), eq(null)); } + @Test + public void testSetListening_firstTrue_registerSettingsObserver() { + mDozeSensors.mSensors = new TriggerSensor[] {mMockTriggerSensor}; + + mDozeSensors.setListening(true); + + verify(mMockTriggerSensor).registerSettingsObserver(any(ContentObserver.class)); + } + + @Test + public void testSetListening_twiceTrue_onlyRegisterSettingsObserverOnce() { + mDozeSensors.mSensors = new TriggerSensor[] {mMockTriggerSensor}; + mDozeSensors.setListening(true); + + mDozeSensors.setListening(true); + + verify(mMockTriggerSensor, times(1)).registerSettingsObserver(any(ContentObserver.class)); + } + private class TestableDozeSensors extends DozeSensors { TestableDozeSensors() { diff --git a/packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardSliceProviderTest.java b/packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardSliceProviderTest.java index 355e26071b2a..44191147f914 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardSliceProviderTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardSliceProviderTest.java @@ -48,6 +48,8 @@ import com.android.keyguard.KeyguardUpdateMonitor; import com.android.systemui.SysuiTestCase; import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.statusbar.NotificationMediaManager; +import com.android.systemui.statusbar.policy.ZenModeController; +import com.android.systemui.util.wakelock.SettableWakeLock; import org.junit.Assert; import org.junit.Before; @@ -73,6 +75,12 @@ public class KeyguardSliceProviderTest extends SysuiTestCase { private NotificationMediaManager mNotificationMediaManager; @Mock private StatusBarStateController mStatusBarStateController; + @Mock + private ZenModeController mZenModeController; + @Mock + private SettableWakeLock mMediaWakeLock; + @Mock + private KeyguardUpdateMonitor mKeyguardUpdateMonitor; private TestableKeyguardSliceProvider mProvider; private boolean mIsZenMode; @@ -194,6 +202,20 @@ public class KeyguardSliceProviderTest extends SysuiTestCase { verify(mContentResolver, never()).notifyChange(eq(mProvider.getUri()), eq(null)); } + @Test + public void onDestroy_noCrash() { + mProvider.onDestroy(); + } + + @Test + public void onDestroy_unregisterListeners() { + mProvider.registerClockUpdate(); + mProvider.onDestroy(); + verify(mMediaWakeLock).setAcquired(eq(false)); + verify(mAlarmManager).cancel(any(AlarmManager.OnAlarmListener.class)); + verify(mKeyguardUpdateMonitor).removeCallback(any()); + } + private class TestableKeyguardSliceProvider extends KeyguardSliceProvider { int mCleanDateFormatInvokations; private int mCounter; @@ -207,6 +229,8 @@ public class KeyguardSliceProviderTest extends SysuiTestCase { super.onCreateSliceProvider(); mAlarmManager = KeyguardSliceProviderTest.this.mAlarmManager; mContentResolver = KeyguardSliceProviderTest.this.mContentResolver; + mZenModeController = KeyguardSliceProviderTest.this.mZenModeController; + mMediaWakeLock = KeyguardSliceProviderTest.this.mMediaWakeLock; return true; } @@ -223,7 +247,7 @@ public class KeyguardSliceProviderTest extends SysuiTestCase { @Override public KeyguardUpdateMonitor getKeyguardUpdateMonitor() { - return mock(KeyguardUpdateMonitor.class); + return mKeyguardUpdateMonitor; } @Override diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/QSTileHostTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/QSTileHostTest.java index f73472f86d8c..f2292fd96b8d 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/qs/QSTileHostTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/qs/QSTileHostTest.java @@ -18,23 +18,28 @@ package com.android.systemui.qs; import static junit.framework.Assert.assertEquals; +import static junit.framework.Assert.assertTrue; import static junit.framework.TestCase.assertFalse; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; +import android.app.ActivityManager; import android.content.Context; import android.content.Intent; import android.os.Handler; import android.os.Looper; +import android.provider.Settings; import android.testing.AndroidTestingRunner; import android.testing.TestableLooper; import android.testing.TestableLooper.RunWithLooper; import androidx.test.filters.SmallTest; +import com.android.internal.util.CollectionUtils; import com.android.systemui.DumpController; +import com.android.systemui.R; import com.android.systemui.SysuiTestCase; import com.android.systemui.plugins.qs.QSFactory; import com.android.systemui.plugins.qs.QSTile; @@ -108,7 +113,6 @@ public class QSTileHostTest extends SysuiTestCase { return null; } }); - } @Test @@ -124,6 +128,26 @@ public class QSTileHostTest extends SysuiTestCase { } @Test + public void testInvalidSpecUsesDefault() { + mContext.getOrCreateTestableResources() + .addOverride(R.string.quick_settings_tiles, "spec1,spec2"); + mQSTileHost.onTuningChanged(QSTileHost.TILES_SETTING, "not-valid"); + + assertEquals(2, mQSTileHost.getTiles().size()); + } + + @Test + public void testSpecWithInvalidDoesNotUseDefault() { + mContext.getOrCreateTestableResources() + .addOverride(R.string.quick_settings_tiles, "spec1,spec2"); + mQSTileHost.onTuningChanged(QSTileHost.TILES_SETTING, "spec2,not-valid"); + + assertEquals(1, mQSTileHost.getTiles().size()); + QSTile element = CollectionUtils.firstOrNull(mQSTileHost.getTiles()); + assertTrue(element instanceof TestTile2); + } + + @Test public void testDump() { mQSTileHost.onTuningChanged(QSTileHost.TILES_SETTING, "spec1,spec2"); StringWriter w = new StringWriter(); @@ -153,6 +177,21 @@ public class QSTileHostTest extends SysuiTestCase { @Override public void onPluginDisconnected(QSFactory plugin) { } + + @Override + public void changeTiles(List<String> previousTiles, List<String> newTiles) { + String previousSetting = Settings.Secure.getStringForUser( + getContext().getContentResolver(), TILES_SETTING, + ActivityManager.getCurrentUser()); + super.changeTiles(previousTiles, newTiles); + // After tiles are changed, make sure to call onTuningChanged with the new setting if it + // changed + String newSetting = Settings.Secure.getStringForUser(getContext().getContentResolver(), + TILES_SETTING, ActivityManager.getCurrentUser()); + if (!previousSetting.equals(newSetting)) { + onTuningChanged(TILES_SETTING, newSetting); + } + } } private class TestTile extends QSTileImpl<QSTile.State> { diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/NotificationViewHierarchyManagerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/NotificationViewHierarchyManagerTest.java index c476d802c4e5..5103e8e89209 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/NotificationViewHierarchyManagerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/NotificationViewHierarchyManagerTest.java @@ -20,12 +20,16 @@ import static junit.framework.Assert.assertTrue; import static org.junit.Assert.assertEquals; import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyInt; +import static org.mockito.Mockito.clearInvocations; +import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; +import android.os.Handler; import android.testing.AndroidTestingRunner; import android.testing.TestableLooper; import android.view.View; @@ -78,13 +82,19 @@ public class NotificationViewHierarchyManagerTest extends SysuiTestCase { @Mock private VisualStabilityManager mVisualStabilityManager; @Mock private ShadeController mShadeController; + private TestableLooper mTestableLooper; + private Handler mHandler; private NotificationViewHierarchyManager mViewHierarchyManager; private NotificationTestHelper mHelper; + private boolean mMadeReentrantCall = false; @Before public void setUp() { MockitoAnnotations.initMocks(this); - Assert.sMainLooper = TestableLooper.get(this).getLooper(); + mTestableLooper = TestableLooper.get(this); + Assert.sMainLooper = mTestableLooper.getLooper(); + mHandler = Handler.createAsync(mTestableLooper.getLooper()); + mDependency.injectTestDependency(NotificationEntryManager.class, mEntryManager); mDependency.injectTestDependency(NotificationLockscreenUserManager.class, mLockscreenUserManager); @@ -97,7 +107,7 @@ public class NotificationViewHierarchyManagerTest extends SysuiTestCase { when(mEntryManager.getNotificationData()).thenReturn(mNotificationData); mViewHierarchyManager = new NotificationViewHierarchyManager(mContext, - mLockscreenUserManager, mGroupManager, mVisualStabilityManager, + mHandler, mLockscreenUserManager, mGroupManager, mVisualStabilityManager, mock(StatusBarStateControllerImpl.class), mEntryManager, () -> mShadeController, new BubbleData(mContext), mock(DynamicPrivacyController.class)); Dependency.get(InitController.class).executePostInitTasks(); @@ -212,9 +222,60 @@ public class NotificationViewHierarchyManagerTest extends SysuiTestCase { verify(entry0.getRow(), times(1)).showAppOpsIcons(any()); } + @Test + public void testReentrantCallsToOnDynamicPrivacyChangedPostForLater() { + // GIVEN a ListContainer that will make a re-entrant call to updateNotificationViews() + mMadeReentrantCall = false; + doAnswer((invocation) -> { + if (!mMadeReentrantCall) { + mMadeReentrantCall = true; + mViewHierarchyManager.onDynamicPrivacyChanged(); + } + return null; + }).when(mListContainer).setMaxDisplayedNotifications(anyInt()); + + // WHEN we call updateNotificationViews() + mViewHierarchyManager.updateNotificationViews(); + + // THEN onNotificationViewUpdateFinished() is only called once + verify(mListContainer).onNotificationViewUpdateFinished(); + + // WHEN we drain the looper + mTestableLooper.processAllMessages(); + + // THEN updateNotificationViews() is called a second time (for the reentrant call) + verify(mListContainer, times(2)).onNotificationViewUpdateFinished(); + } + + @Test + public void testMultipleReentrantCallsToOnDynamicPrivacyChangedOnlyPostOnce() { + // GIVEN a ListContainer that will make many re-entrant calls to updateNotificationViews() + mMadeReentrantCall = false; + doAnswer((invocation) -> { + if (!mMadeReentrantCall) { + mMadeReentrantCall = true; + mViewHierarchyManager.onDynamicPrivacyChanged(); + mViewHierarchyManager.onDynamicPrivacyChanged(); + mViewHierarchyManager.onDynamicPrivacyChanged(); + mViewHierarchyManager.onDynamicPrivacyChanged(); + } + return null; + }).when(mListContainer).setMaxDisplayedNotifications(anyInt()); + + // WHEN we call updateNotificationViews() and drain the looper + mViewHierarchyManager.updateNotificationViews(); + verify(mListContainer).onNotificationViewUpdateFinished(); + clearInvocations(mListContainer); + mTestableLooper.processAllMessages(); + + // THEN updateNotificationViews() is called only one more time + verify(mListContainer).onNotificationViewUpdateFinished(); + } + private class FakeListContainer implements NotificationListContainer { final LinearLayout mLayout = new LinearLayout(mContext); final List<View> mRows = Lists.newArrayList(); + private boolean mMakeReentrantCallDuringSetMaxDisplayedNotifications; @Override public void setChildTransferInProgress(boolean childTransferInProgress) {} @@ -263,7 +324,11 @@ public class NotificationViewHierarchyManagerTest extends SysuiTestCase { } @Override - public void setMaxDisplayedNotifications(int maxNotifications) {} + public void setMaxDisplayedNotifications(int maxNotifications) { + if (mMakeReentrantCallDuringSetMaxDisplayedNotifications) { + mViewHierarchyManager.onDynamicPrivacyChanged(); + } + } @Override public ViewGroup getViewParentForNotification(NotificationEntry entry) { @@ -298,5 +363,7 @@ public class NotificationViewHierarchyManagerTest extends SysuiTestCase { return false; } + @Override + public void onNotificationViewUpdateFinished() { } } } diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/ChannelEditorDialogControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/ChannelEditorDialogControllerTest.kt index 76326303ff96..8b81a7a29f84 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/ChannelEditorDialogControllerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/ChannelEditorDialogControllerTest.kt @@ -109,7 +109,7 @@ class ChannelEditorDialogControllerTest : SysuiTestCase() { } @Test - fun testPrepareDialogForApp_retrievesUpto4Channels() { + fun testPrepareDialogForApp_retrievesUpTo4Channels() { val channel3 = NotificationChannel("test_channel_3", "Test channel 3", IMPORTANCE_DEFAULT) val channel4 = NotificationChannel("test_channel_4", "Test channel 4", IMPORTANCE_DEFAULT) @@ -169,6 +169,16 @@ class ChannelEditorDialogControllerTest : SysuiTestCase() { eq(TEST_PACKAGE_NAME), eq(TEST_UID), eq(true)) } + @Test + fun testSettingsClickListenerNull_noCrash() { + group.channels = listOf(channel1, channel2) + controller.prepareDialogForApp(TEST_APP_NAME, TEST_PACKAGE_NAME, TEST_UID, + setOf(channel1, channel2), appIcon, null) + + // Pass in any old view, it should never actually be used + controller.launchSettings(View(context)) + } + private val clickListener = object : NotificationInfo.OnSettingsClickListener { override fun onClick(v: View, c: NotificationChannel, appUid: Int) { } diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationContentInflaterTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationContentInflaterTest.java index 025296d14da4..06ff0478a804 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationContentInflaterTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationContentInflaterTest.java @@ -101,7 +101,7 @@ public class NotificationContentInflaterTest extends SysuiTestCase { mNotificationInflater.setUsesIncreasedHeadsUpHeight(true); Notification.Builder builder = spy(mBuilder); mNotificationInflater.inflateNotificationViews( - false /* inflateSynchronously */, + true /* inflateSynchronously */, FLAG_CONTENT_VIEW_ALL, builder, mContext); @@ -113,7 +113,7 @@ public class NotificationContentInflaterTest extends SysuiTestCase { mNotificationInflater.setUsesIncreasedHeight(true); Notification.Builder builder = spy(mBuilder); mNotificationInflater.inflateNotificationViews( - false /* inflateSynchronously */, + true /* inflateSynchronously */, FLAG_CONTENT_VIEW_ALL, builder, mContext); @@ -161,6 +161,7 @@ public class NotificationContentInflaterTest extends SysuiTestCase { @Test public void testRemovedNotInflated() throws Exception { mRow.setRemoved(); + mNotificationInflater.setInflateSynchronously(true); mNotificationInflater.inflateNotificationViews(); Assert.assertNull(mRow.getEntry().getRunningTask()); } diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationGutsManagerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationGutsManagerTest.java index ef13b61162c5..795948470295 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationGutsManagerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationGutsManagerTest.java @@ -67,6 +67,7 @@ import com.android.systemui.statusbar.notification.VisualStabilityManager; import com.android.systemui.statusbar.notification.collection.NotificationEntry; import com.android.systemui.statusbar.notification.row.NotificationGutsManager.OnSettingsClickListener; import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayout; +import com.android.systemui.statusbar.phone.StatusBar; import com.android.systemui.statusbar.policy.DeviceProvisionedController; import com.android.systemui.util.Assert; @@ -105,6 +106,7 @@ public class NotificationGutsManagerTest extends SysuiTestCase { @Mock private NotificationInfo.CheckSaveListener mCheckSaveListener; @Mock private OnSettingsClickListener mOnSettingsClickListener; @Mock private DeviceProvisionedController mDeviceProvisionedController; + @Mock private StatusBar mStatusBar; @Before public void setUp() { @@ -115,7 +117,7 @@ public class NotificationGutsManagerTest extends SysuiTestCase { mDependency.injectTestDependency(MetricsLogger.class, mMetricsLogger); mDependency.injectTestDependency(VisualStabilityManager.class, mVisualStabilityManager); mHandler = Handler.createAsync(mTestableLooper.getLooper()); - + mContext.putComponent(StatusBar.class, mStatusBar); mHelper = new NotificationTestHelper(mContext); mGutsManager = new NotificationGutsManager(mContext, mVisualStabilityManager); @@ -150,7 +152,7 @@ public class NotificationGutsManagerTest extends SysuiTestCase { when(row.getWindowToken()).thenReturn(new Binder()); when(row.getGuts()).thenReturn(guts); - assertTrue(mGutsManager.openGuts(row, 0, 0, menuItem)); + assertTrue(mGutsManager.openGutsInternal(row, 0, 0, menuItem)); assertEquals(View.INVISIBLE, guts.getVisibility()); mTestableLooper.processAllMessages(); verify(guts).openControls( @@ -198,7 +200,7 @@ public class NotificationGutsManagerTest extends SysuiTestCase { when(entry.getRow()).thenReturn(row); when(entry.getGuts()).thenReturn(guts); - assertTrue(mGutsManager.openGuts(row, 0, 0, menuItem)); + assertTrue(mGutsManager.openGutsInternal(row, 0, 0, menuItem)); mTestableLooper.processAllMessages(); verify(guts).openControls( eq(true), diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/NotificationSectionsManagerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/NotificationSectionsManagerTest.java index b99958a07ced..73abda9a5da7 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/NotificationSectionsManagerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/NotificationSectionsManagerTest.java @@ -31,6 +31,7 @@ import static org.mockito.Mockito.when; import android.testing.AndroidTestingRunner; import android.testing.TestableLooper; import android.util.AttributeSet; +import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -41,6 +42,7 @@ import com.android.systemui.SysuiTestCase; import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.statusbar.StatusBarState; import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow; +import com.android.systemui.statusbar.policy.ConfigurationController; import org.junit.Before; import org.junit.Rule; @@ -60,6 +62,7 @@ public class NotificationSectionsManagerTest extends SysuiTestCase { @Mock private NotificationStackScrollLayout mNssl; @Mock private ActivityStarterDelegate mActivityStarterDelegate; @Mock private StatusBarStateController mStatusBarStateController; + @Mock private ConfigurationController mConfigurationController; private NotificationSectionsManager mSectionsManager; @@ -70,15 +73,21 @@ public class NotificationSectionsManagerTest extends SysuiTestCase { mNssl, mActivityStarterDelegate, mStatusBarStateController, + mConfigurationController, true); // Required in order for the header inflation to work properly when(mNssl.generateLayoutParams(any(AttributeSet.class))) .thenReturn(new ViewGroup.LayoutParams(WRAP_CONTENT, WRAP_CONTENT)); - mSectionsManager.inflateViews(mContext); + mSectionsManager.initialize(LayoutInflater.from(mContext)); when(mNssl.indexOfChild(any(View.class))).thenReturn(-1); when(mStatusBarStateController.getState()).thenReturn(StatusBarState.SHADE); } + @Test(expected = IllegalStateException.class) + public void testDuplicateInitializeThrows() { + mSectionsManager.initialize(LayoutInflater.from(mContext)); + } + @Test public void testInsertHeader() { // GIVEN a stack with HI and LO rows but no section headers diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutTest.java index 56265d08c131..ff835871d822 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutTest.java @@ -38,11 +38,12 @@ import static org.mockito.Mockito.when; import android.metrics.LogMaker; import android.provider.Settings; +import android.testing.AndroidTestingRunner; +import android.testing.TestableLooper; import android.view.View; import androidx.test.annotation.UiThreadTest; import androidx.test.filters.SmallTest; -import androidx.test.runner.AndroidJUnit4; import com.android.internal.logging.MetricsLogger; import com.android.internal.logging.nano.MetricsProto; @@ -70,10 +71,12 @@ import com.android.systemui.statusbar.notification.row.FooterView; import com.android.systemui.statusbar.notification.row.NotificationBlockingHelperManager; import com.android.systemui.statusbar.phone.HeadsUpManagerPhone; import com.android.systemui.statusbar.phone.NotificationGroupManager; +import com.android.systemui.statusbar.phone.NotificationIconAreaController; import com.android.systemui.statusbar.phone.ScrimController; import com.android.systemui.statusbar.phone.ShadeController; import com.android.systemui.statusbar.phone.StatusBar; import com.android.systemui.statusbar.phone.StatusBarTest.TestableNotificationEntryManager; +import com.android.systemui.statusbar.policy.ConfigurationController; import org.junit.After; import org.junit.Assert; @@ -93,7 +96,8 @@ import java.util.ArrayList; * Tests for {@link NotificationStackScrollLayout}. */ @SmallTest -@RunWith(AndroidJUnit4.class) +@RunWith(AndroidTestingRunner.class) +@TestableLooper.RunWithLooper public class NotificationStackScrollLayoutTest extends SysuiTestCase { private NotificationStackScrollLayout mStackScroller; // Normally test this @@ -110,6 +114,7 @@ public class NotificationStackScrollLayoutTest extends SysuiTestCase { @Mock private NotificationData mNotificationData; @Mock private NotificationRemoteInputManager mRemoteInputManager; @Mock private RemoteInputController mRemoteInputController; + @Mock private NotificationIconAreaController mNotificationIconAreaController; @Mock private MetricsLogger mMetricsLogger; @Mock private NotificationRoundnessManager mNotificationRoundnessManager; private TestableNotificationEntryManager mEntryManager; @@ -119,6 +124,8 @@ public class NotificationStackScrollLayoutTest extends SysuiTestCase { @Before @UiThreadTest public void setUp() throws Exception { + com.android.systemui.util.Assert.sMainLooper = TestableLooper.get(this).getLooper(); + mOriginalInterruptionModelSetting = Settings.Secure.getInt(mContext.getContentResolver(), NOTIFICATION_NEW_INTERRUPTION_MODEL, 0); Settings.Secure.putInt(mContext.getContentResolver(), @@ -153,6 +160,7 @@ public class NotificationStackScrollLayoutTest extends SysuiTestCase { true /* allowLongPress */, mNotificationRoundnessManager, new AmbientPulseManager(mContext), mock(DynamicPrivacyController.class), + mock(ConfigurationController.class), mock(ActivityStarterDelegate.class), mock(StatusBarStateController.class)); mStackScroller = spy(mStackScrollerInternal); @@ -162,6 +170,7 @@ public class NotificationStackScrollLayoutTest extends SysuiTestCase { mStackScroller.setHeadsUpManager(mHeadsUpManager); mStackScroller.setGroupManager(mGroupManager); mStackScroller.setEmptyShadeView(mEmptyShadeView); + mStackScroller.setIconAreaController(mNotificationIconAreaController); // Stub out functionality that isn't necessary to test. doNothing().when(mBar) diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NavigationBarContextTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NavigationBarContextTest.java index cb70a1fa3a3b..be69f5f8a844 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NavigationBarContextTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NavigationBarContextTest.java @@ -180,9 +180,9 @@ public class NavigationBarContextTest extends SysuiTestCase { final Drawable d = mock(Drawable.class); final ContextualButton button = spy(mBtn0); final KeyButtonDrawable kbd1 = spy(new KeyButtonDrawable(d, unusedColor, unusedColor, - false /* horizontalFlip */, false /* hasOvalBg */)); + false /* horizontalFlip */, null /* ovalBackgroundColor */)); final KeyButtonDrawable kbd2 = spy(new KeyButtonDrawable(d, unusedColor, unusedColor, - false /* horizontalFlip */, false /* hasOvalBg */)); + false /* horizontalFlip */, null /* ovalBackgroundColor */)); kbd1.setDarkIntensity(TEST_DARK_INTENSITY); kbd2.setDarkIntensity(0f); diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NavigationBarFragmentTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NavigationBarFragmentTest.java index faf5a9706735..3da9a4bdf759 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NavigationBarFragmentTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NavigationBarFragmentTest.java @@ -56,6 +56,7 @@ import com.android.systemui.Dependency; import com.android.systemui.SysuiBaseFragmentTest; import com.android.systemui.SysuiTestableContext; import com.android.systemui.assist.AssistManager; +import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.recents.OverviewProxyService; import com.android.systemui.recents.Recents; import com.android.systemui.stackdivider.Divider; @@ -215,7 +216,8 @@ public class NavigationBarFragmentTest extends SysuiBaseFragmentTest { new MetricsLogger(), mock(AssistManager.class), mOverviewProxyService, - mock(NavigationModeController.class)); + mock(NavigationModeController.class), + mock(StatusBarStateController.class)); } private class HostCallbacksForExternalDisplay extends diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationIconAreaControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationIconAreaControllerTest.java deleted file mode 100644 index 7f7a3e7e7cd6..000000000000 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationIconAreaControllerTest.java +++ /dev/null @@ -1,88 +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.systemui.statusbar.phone; - -import static android.provider.Settings.Secure.NOTIFICATION_NEW_INTERRUPTION_MODEL; - -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; - -import android.provider.Settings; -import android.testing.AndroidTestingRunner; -import android.testing.TestableLooper; - -import androidx.test.filters.SmallTest; - -import com.android.systemui.SysuiTestCase; -import com.android.systemui.plugins.statusbar.StatusBarStateController; -import com.android.systemui.statusbar.NotificationListener; -import com.android.systemui.statusbar.NotificationMediaManager; - -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.Mock; -import org.mockito.MockitoAnnotations; - -@SmallTest -@RunWith(AndroidTestingRunner.class) -@TestableLooper.RunWithLooper -public class NotificationIconAreaControllerTest extends SysuiTestCase { - - @Mock - private NotificationListener mListener; - @Mock - StatusBar mStatusBar; - @Mock - StatusBarStateController mStatusBarStateController; - @Mock - private NotificationMediaManager mMediaManager; - private NotificationIconAreaController mController; - - @Before - public void setup() { - MockitoAnnotations.initMocks(this); - - mController = new NotificationIconAreaController(mContext, mStatusBar, - mStatusBarStateController, mListener, mMediaManager); - } - - @Test - public void testNotificationIcons_featureOff() { - Settings.Secure.putInt( - mContext.getContentResolver(), NOTIFICATION_NEW_INTERRUPTION_MODEL, 0); - assertTrue(mController.shouldShouldLowPriorityIcons()); - } - - @Test - public void testNotificationIcons_featureOn_settingHideIcons() { - Settings.Secure.putInt( - mContext.getContentResolver(), NOTIFICATION_NEW_INTERRUPTION_MODEL, 1); - mController.mSettingsListener.onStatusBarIconsBehaviorChanged(true); - - assertFalse(mController.shouldShouldLowPriorityIcons()); - } - - @Test - public void testNotificationIcons_featureOn_settingShowIcons() { - Settings.Secure.putInt( - mContext.getContentResolver(), NOTIFICATION_NEW_INTERRUPTION_MODEL, 1); - mController.mSettingsListener.onStatusBarIconsBehaviorChanged(false); - - assertTrue(mController.shouldShouldLowPriorityIcons()); - } -} diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java index 191c983ad156..d8e90a584058 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java @@ -508,6 +508,38 @@ public class ScrimControllerTest extends SysuiTestCase { } @Test + public void transitionToPulsing_withTimeoutWallpaperCallback_willHideWallpaper() { + mScrimController.setWallpaperSupportsAmbientMode(true); + + mScrimController.transitionTo(ScrimState.PULSING, new ScrimController.Callback() { + @Override + public boolean shouldTimeoutWallpaper() { + return true; + } + }); + + verify(mAlarmManager).setExact(anyInt(), anyLong(), any(), any(), any()); + } + + @Test + public void transitionToPulsing_withDefaultCallback_wontHideWallpaper() { + mScrimController.setWallpaperSupportsAmbientMode(true); + + mScrimController.transitionTo(ScrimState.PULSING, new ScrimController.Callback() {}); + + verify(mAlarmManager, never()).setExact(anyInt(), anyLong(), any(), any(), any()); + } + + @Test + public void transitionToPulsing_withoutCallback_wontHideWallpaper() { + mScrimController.setWallpaperSupportsAmbientMode(true); + + mScrimController.transitionTo(ScrimState.PULSING); + + verify(mAlarmManager, never()).setExact(anyInt(), anyLong(), any(), any(), any()); + } + + @Test public void testConservesExpansionOpacityAfterTransition() { mScrimController.transitionTo(ScrimState.UNLOCKED); mScrimController.setPanelExpansion(0.5f); diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java index 616b46a6d316..3464fe574007 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java @@ -164,7 +164,7 @@ public class NetworkControllerBaseTest extends SysuiTestCase { protected void setupNetworkController() { // For now just pretend to be the data sim, so we can test that too. mSubId = SubscriptionManager.DEFAULT_SUBSCRIPTION_ID; - when(mMockTm.getDataEnabled(mSubId)).thenReturn(true); + when(mMockTm.isDataCapable()).thenReturn(true); setDefaultSubId(mSubId); setSubscriptions(mSubId); mMobileSignalController = mNetworkController.mMobileSignalControllers.get(mSubId); diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerDataTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerDataTest.java index cd0a04411ee1..5128675e2723 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerDataTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerDataTest.java @@ -119,7 +119,7 @@ public class NetworkControllerDataTest extends NetworkControllerBaseTest { @Test public void testNoInternetIcon_withDefaultSub() { setupNetworkController(); - when(mMockTm.getDataEnabled(mSubId)).thenReturn(false); + when(mMockTm.isDataCapable()).thenReturn(false); setupDefaultSignal(); updateDataConnectionState(TelephonyManager.DATA_CONNECTED, 0); setConnectivityViaBroadcast(NetworkCapabilities.TRANSPORT_CELLULAR, false, false); @@ -133,7 +133,7 @@ public class NetworkControllerDataTest extends NetworkControllerBaseTest { @Test public void testDataDisabledIcon_withDefaultSub() { setupNetworkController(); - when(mMockTm.getDataEnabled(mSubId)).thenReturn(false); + when(mMockTm.isDataCapable()).thenReturn(false); setupDefaultSignal(); updateDataConnectionState(TelephonyManager.DATA_DISCONNECTED, 0); setConnectivityViaBroadcast(NetworkCapabilities.TRANSPORT_CELLULAR, false, false); @@ -147,7 +147,7 @@ public class NetworkControllerDataTest extends NetworkControllerBaseTest { @Test public void testNoInternetIcon_withoutDefaultSub() { setupNetworkController(); - when(mMockTm.getDataEnabled(mSubId)).thenReturn(false); + when(mMockTm.isDataCapable()).thenReturn(false); setupDefaultSignal(); setDefaultSubId(mSubId + 1); updateDataConnectionState(TelephonyManager.DATA_CONNECTED, 0); @@ -162,7 +162,7 @@ public class NetworkControllerDataTest extends NetworkControllerBaseTest { @Test public void testDataDisabledIcon_withoutDefaultSub() { setupNetworkController(); - when(mMockTm.getDataEnabled(mSubId)).thenReturn(false); + when(mMockTm.isDataCapable()).thenReturn(false); setupDefaultSignal(); setDefaultSubId(mSubId + 1); updateDataConnectionState(TelephonyManager.DATA_DISCONNECTED, 0); @@ -218,7 +218,7 @@ public class NetworkControllerDataTest extends NetworkControllerBaseTest { @Test public void testDataDisabledIcon_UserNotSetup() { setupNetworkController(); - when(mMockTm.getDataEnabled(mSubId)).thenReturn(false); + when(mMockTm.isDataCapable()).thenReturn(false); setupDefaultSignal(); updateDataConnectionState(TelephonyManager.DATA_DISCONNECTED, 0); setConnectivityViaBroadcast(NetworkCapabilities.TRANSPORT_CELLULAR, false, false); @@ -233,7 +233,7 @@ public class NetworkControllerDataTest extends NetworkControllerBaseTest { @Test public void testAlwaysShowDataRatIcon() { setupDefaultSignal(); - when(mMockTm.getDataEnabled(mSubId)).thenReturn(false); + when(mMockTm.isDataCapable()).thenReturn(false); updateDataConnectionState(TelephonyManager.DATA_DISCONNECTED, TelephonyManager.NETWORK_TYPE_GSM); diff --git a/packages/SystemUI/tests/src/com/android/systemui/util/wakelock/WakeLockTest.java b/packages/SystemUI/tests/src/com/android/systemui/util/wakelock/WakeLockTest.java index 66eb29964116..3357be8c8b84 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/util/wakelock/WakeLockTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/util/wakelock/WakeLockTest.java @@ -42,7 +42,7 @@ public class WakeLockTest extends SysuiTestCase { @Before public void setUp() { mInner = WakeLock.createPartialInner(mContext, WakeLockTest.class.getName()); - mWakeLock = WakeLock.wrap(mInner); + mWakeLock = WakeLock.wrap(mInner, 20000); } @After @@ -70,14 +70,6 @@ public class WakeLockTest extends SysuiTestCase { } @Test - public void wakeLock_refCounted() { - mWakeLock.acquire(WHY); - mWakeLock.acquire(WHY); - mWakeLock.release(WHY); - assertTrue(mInner.isHeld()); - } - - @Test public void wakeLock_wrap() { boolean[] ran = new boolean[1]; diff --git a/packages/VpnDialogs/res/values-sk/strings.xml b/packages/VpnDialogs/res/values-sk/strings.xml index 00029641e57b..a08117adfac1 100644 --- a/packages/VpnDialogs/res/values-sk/strings.xml +++ b/packages/VpnDialogs/res/values-sk/strings.xml @@ -32,5 +32,5 @@ <string name="configure" msgid="4905518375574791375">"Konfigurovať"</string> <string name="disconnect" msgid="971412338304200056">"Odpojiť"</string> <string name="open_app" msgid="3717639178595958667">"Otvoriť aplikáciu"</string> - <string name="dismiss" msgid="6192859333764711227">"Zrušiť"</string> + <string name="dismiss" msgid="6192859333764711227">"Zavrieť"</string> </resources> diff --git a/packages/overlays/NavigationBarModeGesturalOverlay/res/values/dimens.xml b/packages/overlays/NavigationBarModeGesturalOverlay/res/values/dimens.xml index 1232201de862..ac1f0226be52 100644 --- a/packages/overlays/NavigationBarModeGesturalOverlay/res/values/dimens.xml +++ b/packages/overlays/NavigationBarModeGesturalOverlay/res/values/dimens.xml @@ -25,6 +25,6 @@ <dimen name="navigation_bar_width">16dp</dimen> <!-- Height of the bottom navigation / system bar. --> <dimen name="navigation_bar_frame_height">48dp</dimen> - <!-- The height of the bottom navigation gesture area. --> + <!-- The height of the bottom navigation gesture area. --> <dimen name="navigation_bar_gesture_height">32dp</dimen> </resources>
\ No newline at end of file diff --git a/packages/overlays/NavigationBarModeGesturalOverlayExtraWideBack/res/values/config.xml b/packages/overlays/NavigationBarModeGesturalOverlayExtraWideBack/res/values/config.xml index c8f994c982e5..d5991f367c43 100644 --- a/packages/overlays/NavigationBarModeGesturalOverlayExtraWideBack/res/values/config.xml +++ b/packages/overlays/NavigationBarModeGesturalOverlayExtraWideBack/res/values/config.xml @@ -37,6 +37,15 @@ {@link Window#setEnsuringNavigationBarContrastWhenTransparent}. --> <bool name="config_navBarNeedsScrim">false</bool> + <!-- Controls the opacity of the navigation bar depending on the visibility of the + various workspace stacks. + 0 - Nav bar is always opaque when either the freeform stack or docked stack is visible. + 1 - Nav bar is always translucent when the freeform stack is visible, otherwise always + opaque. + 2 - Nav bar is never forced opaque. + --> + <integer name="config_navBarOpacityMode">2</integer> + <!-- Controls whether seamless rotation should be allowed even though the navbar can move (which normally prevents seamless rotation). --> <bool name="config_allowSeamlessRotationDespiteNavBarMoving">true</bool> diff --git a/packages/overlays/NavigationBarModeGesturalOverlayExtraWideBack/res/values/dimens.xml b/packages/overlays/NavigationBarModeGesturalOverlayExtraWideBack/res/values/dimens.xml index 987d20375e5e..ac1f0226be52 100644 --- a/packages/overlays/NavigationBarModeGesturalOverlayExtraWideBack/res/values/dimens.xml +++ b/packages/overlays/NavigationBarModeGesturalOverlayExtraWideBack/res/values/dimens.xml @@ -25,4 +25,6 @@ <dimen name="navigation_bar_width">16dp</dimen> <!-- Height of the bottom navigation / system bar. --> <dimen name="navigation_bar_frame_height">48dp</dimen> + <!-- The height of the bottom navigation gesture area. --> + <dimen name="navigation_bar_gesture_height">32dp</dimen> </resources>
\ No newline at end of file diff --git a/packages/overlays/NavigationBarModeGesturalOverlayNarrowBack/res/values/config.xml b/packages/overlays/NavigationBarModeGesturalOverlayNarrowBack/res/values/config.xml index 693110adb312..ff507ee9f46c 100644 --- a/packages/overlays/NavigationBarModeGesturalOverlayNarrowBack/res/values/config.xml +++ b/packages/overlays/NavigationBarModeGesturalOverlayNarrowBack/res/values/config.xml @@ -37,6 +37,15 @@ {@link Window#setEnsuringNavigationBarContrastWhenTransparent}. --> <bool name="config_navBarNeedsScrim">false</bool> + <!-- Controls the opacity of the navigation bar depending on the visibility of the + various workspace stacks. + 0 - Nav bar is always opaque when either the freeform stack or docked stack is visible. + 1 - Nav bar is always translucent when the freeform stack is visible, otherwise always + opaque. + 2 - Nav bar is never forced opaque. + --> + <integer name="config_navBarOpacityMode">2</integer> + <!-- Controls whether seamless rotation should be allowed even though the navbar can move (which normally prevents seamless rotation). --> <bool name="config_allowSeamlessRotationDespiteNavBarMoving">true</bool> diff --git a/packages/overlays/NavigationBarModeGesturalOverlayNarrowBack/res/values/dimens.xml b/packages/overlays/NavigationBarModeGesturalOverlayNarrowBack/res/values/dimens.xml index 987d20375e5e..ac1f0226be52 100644 --- a/packages/overlays/NavigationBarModeGesturalOverlayNarrowBack/res/values/dimens.xml +++ b/packages/overlays/NavigationBarModeGesturalOverlayNarrowBack/res/values/dimens.xml @@ -25,4 +25,6 @@ <dimen name="navigation_bar_width">16dp</dimen> <!-- Height of the bottom navigation / system bar. --> <dimen name="navigation_bar_frame_height">48dp</dimen> + <!-- The height of the bottom navigation gesture area. --> + <dimen name="navigation_bar_gesture_height">32dp</dimen> </resources>
\ No newline at end of file diff --git a/packages/overlays/NavigationBarModeGesturalOverlayWideBack/res/values/config.xml b/packages/overlays/NavigationBarModeGesturalOverlayWideBack/res/values/config.xml index 5cd6ce3d7d50..378756a50f16 100644 --- a/packages/overlays/NavigationBarModeGesturalOverlayWideBack/res/values/config.xml +++ b/packages/overlays/NavigationBarModeGesturalOverlayWideBack/res/values/config.xml @@ -37,6 +37,15 @@ {@link Window#setEnsuringNavigationBarContrastWhenTransparent}. --> <bool name="config_navBarNeedsScrim">false</bool> + <!-- Controls the opacity of the navigation bar depending on the visibility of the + various workspace stacks. + 0 - Nav bar is always opaque when either the freeform stack or docked stack is visible. + 1 - Nav bar is always translucent when the freeform stack is visible, otherwise always + opaque. + 2 - Nav bar is never forced opaque. + --> + <integer name="config_navBarOpacityMode">2</integer> + <!-- Controls whether seamless rotation should be allowed even though the navbar can move (which normally prevents seamless rotation). --> <bool name="config_allowSeamlessRotationDespiteNavBarMoving">true</bool> diff --git a/packages/overlays/NavigationBarModeGesturalOverlayWideBack/res/values/dimens.xml b/packages/overlays/NavigationBarModeGesturalOverlayWideBack/res/values/dimens.xml index 987d20375e5e..ac1f0226be52 100644 --- a/packages/overlays/NavigationBarModeGesturalOverlayWideBack/res/values/dimens.xml +++ b/packages/overlays/NavigationBarModeGesturalOverlayWideBack/res/values/dimens.xml @@ -25,4 +25,6 @@ <dimen name="navigation_bar_width">16dp</dimen> <!-- Height of the bottom navigation / system bar. --> <dimen name="navigation_bar_frame_height">48dp</dimen> + <!-- The height of the bottom navigation gesture area. --> + <dimen name="navigation_bar_gesture_height">32dp</dimen> </resources>
\ No newline at end of file diff --git a/proto/src/metrics_constants/metrics_constants.proto b/proto/src/metrics_constants/metrics_constants.proto index 0f0e6f9fb446..5a4892c75d9e 100644 --- a/proto/src/metrics_constants/metrics_constants.proto +++ b/proto/src/metrics_constants/metrics_constants.proto @@ -5780,7 +5780,7 @@ message MetricsEvent { // OS: P WIFI_SCANNING_NEEDED_DIALOG = 1373; - // OPEN: Settings > System > Gestures > Swipe up gesture + // OPEN: Settings > System > Gestures > System navigation // CATEGORY: SETTINGS // OS: P SETTINGS_GESTURE_SWIPE_UP = 1374; @@ -7388,6 +7388,32 @@ message MetricsEvent { // CATEGORY: NOTIFICATION MEDIA_NOTIFICATION_SEEKBAR = 1743; + // Custom tag for StatusBarNotification. Length of + // Notification.extras[EXTRA_PEOPLE_LIST], set by addPerson(). + FIELD_NOTIFICATION_PEOPLE = 1744; + + // Custom tag for StatusBarNotification. The Java hashcode of + // Notification.extras[EXTRA_TEMPLATE], which is a string like + // android.app.Notification$MessagingStyle, set by setStyle(). + FIELD_NOTIFICATION_STYLE = 1745; + + // OPEN: Settings > About phone > Legal information > Google Play system update licenses + // CATEGORY: SETTINGS + // OS: Q + MODULE_LICENSES_DASHBOARD = 1746; + + // OPEN: Settings > System > Gestures > System navigation > Info icon + // CATEGORY: SETTINGS + // OS: Q + // Note: Info icon is visible only when gesture navigation is not available and disabled + SETTINGS_GESTURE_NAV_NOT_AVAILABLE_DLG = 1747; + + // OPEN: Settings > System > Gestures > System navigation > Gear icon + // CATEGORY: SETTINGS + // OS: Q + // Note: Gear icon is shown next to gesture navigation preference and opens sensitivity dialog + SETTINGS_GESTURE_NAV_BACK_SENSITIVITY_DLG = 1748; + // ---- End Q Constants, all Q constants go above this line ---- // Add new aosp constants above this line. // END OF AOSP CONSTANTS diff --git a/proto/src/task_snapshot.proto b/proto/src/task_snapshot.proto index a1bbe5212bbf..381d9834fa87 100644 --- a/proto/src/task_snapshot.proto +++ b/proto/src/task_snapshot.proto @@ -32,4 +32,5 @@ int32 system_ui_visibility = 8; bool is_translucent = 9; string top_activity_component = 10; + float scale = 11; }
\ No newline at end of file diff --git a/services/appprediction/java/com/android/server/appprediction/AppPredictionPerUserService.java b/services/appprediction/java/com/android/server/appprediction/AppPredictionPerUserService.java index 10ba9a5e98d9..03c4542a50d4 100644 --- a/services/appprediction/java/com/android/server/appprediction/AppPredictionPerUserService.java +++ b/services/appprediction/java/com/android/server/appprediction/AppPredictionPerUserService.java @@ -28,7 +28,7 @@ import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.content.pm.ParceledListSlice; import android.content.pm.ServiceInfo; -import android.os.IBinder; +import android.os.RemoteCallbackList; import android.os.RemoteException; import android.service.appprediction.AppPredictionService; import android.util.ArrayMap; @@ -37,7 +37,7 @@ import android.util.Slog; import com.android.internal.annotations.GuardedBy; import com.android.server.infra.AbstractPerUserSystemService; -import java.util.ArrayList; +import java.util.function.Consumer; /** * Per-user instance of {@link AppPredictionManagerService}. @@ -108,15 +108,10 @@ public class AppPredictionPerUserService extends if (service != null) { service.onCreatePredictionSession(context, sessionId); - mSessionInfos.put(sessionId, new AppPredictionSessionInfo(sessionId, context, () -> { - synchronized (mLock) { - AppPredictionSessionInfo sessionInfo = mSessionInfos.get(sessionId); - if (sessionInfo != null) { - sessionInfo.removeAllCallbacksLocked(); - mSessionInfos.remove(sessionId); - } - } - })); + if (!mSessionInfos.containsKey(sessionId)) { + mSessionInfos.put(sessionId, new AppPredictionSessionInfo(sessionId, context, + this::removeAppPredictionSessionInfo)); + } } } @@ -212,8 +207,7 @@ public class AppPredictionPerUserService extends AppPredictionSessionInfo sessionInfo = mSessionInfos.get(sessionId); if (sessionInfo != null) { - sessionInfo.removeAllCallbacksLocked(); - mSessionInfos.remove(sessionId); + sessionInfo.destroy(); } } } @@ -273,6 +267,15 @@ public class AppPredictionPerUserService extends } } + private void removeAppPredictionSessionInfo(AppPredictionSessionId sessionId) { + if (isDebug()) { + Slog.d(TAG, "removeAppPredictionSessionInfo(): sessionId=" + sessionId); + } + synchronized (mLock) { + mSessionInfos.remove(sessionId); + } + } + @GuardedBy("mLock") @Nullable private RemoteAppPredictionService getRemoteServiceLocked() { @@ -295,55 +298,71 @@ public class AppPredictionPerUserService extends } private static final class AppPredictionSessionInfo { + private static final boolean DEBUG = false; // Do not submit with true + private final AppPredictionSessionId mSessionId; - private final AppPredictionContext mContext; - private final ArrayList<IPredictionCallback> mCallbacks = new ArrayList<>(); - private final IBinder.DeathRecipient mBinderDeathHandler; + private final AppPredictionContext mPredictionContext; + private final Consumer<AppPredictionSessionId> mRemoveSessionInfoAction; + + private final RemoteCallbackList<IPredictionCallback> mCallbacks = + new RemoteCallbackList<IPredictionCallback>() { + @Override + public void onCallbackDied(IPredictionCallback callback) { + if (DEBUG) { + Slog.d(TAG, "Binder died for session Id=" + mSessionId + + " and callback=" + callback.asBinder()); + } + if (mCallbacks.getRegisteredCallbackCount() == 0) { + destroy(); + } + } + }; - AppPredictionSessionInfo(AppPredictionSessionId id, AppPredictionContext context, - IBinder.DeathRecipient binderDeathHandler) { + AppPredictionSessionInfo(AppPredictionSessionId id, AppPredictionContext predictionContext, + Consumer<AppPredictionSessionId> removeSessionInfoAction) { + if (DEBUG) { + Slog.d(TAG, "Creating AppPredictionSessionInfo for session Id=" + id); + } mSessionId = id; - mContext = context; - mBinderDeathHandler = binderDeathHandler; + mPredictionContext = predictionContext; + mRemoveSessionInfoAction = removeSessionInfoAction; } void addCallbackLocked(IPredictionCallback callback) { - if (mBinderDeathHandler != null) { - try { - callback.asBinder().linkToDeath(mBinderDeathHandler, 0); - } catch (RemoteException e) { - Slog.e(TAG, "Failed to link to death: " + e); - } + if (DEBUG) { + Slog.d(TAG, "Storing callback for session Id=" + mSessionId + + " and callback=" + callback.asBinder()); } - mCallbacks.add(callback); + mCallbacks.register(callback); } void removeCallbackLocked(IPredictionCallback callback) { - if (mBinderDeathHandler != null) { - callback.asBinder().unlinkToDeath(mBinderDeathHandler, 0); + if (DEBUG) { + Slog.d(TAG, "Removing callback for session Id=" + mSessionId + + " and callback=" + callback.asBinder()); } - mCallbacks.remove(callback); + mCallbacks.unregister(callback); } - void removeAllCallbacksLocked() { - if (mBinderDeathHandler != null) { - for (IPredictionCallback callback : mCallbacks) { - callback.asBinder().unlinkToDeath(mBinderDeathHandler, 0); - } + void destroy() { + if (DEBUG) { + Slog.d(TAG, "Removing all callbacks for session Id=" + mSessionId + + " and " + mCallbacks.getRegisteredCallbackCount() + " callbacks."); } - mCallbacks.clear(); + mCallbacks.kill(); + mRemoveSessionInfoAction.accept(mSessionId); } void resurrectSessionLocked(AppPredictionPerUserService service) { - if (service.isDebug()) { + int callbackCount = mCallbacks.getRegisteredCallbackCount(); + if (DEBUG) { Slog.d(TAG, "Resurrecting remote service (" + service.getRemoteServiceLocked() + ") for session Id=" + mSessionId + " and " - + mCallbacks.size() + " callbacks."); - } - service.onCreatePredictionSessionLocked(mContext, mSessionId); - for (IPredictionCallback callback : mCallbacks) { - service.registerPredictionUpdatesLocked(mSessionId, callback); + + callbackCount + " callbacks."); } + service.onCreatePredictionSessionLocked(mPredictionContext, mSessionId); + mCallbacks.broadcast( + callback -> service.registerPredictionUpdatesLocked(mSessionId, callback)); } } } diff --git a/services/autofill/java/com/android/server/autofill/RemoteFillService.java b/services/autofill/java/com/android/server/autofill/RemoteFillService.java index 0ce6c87f1f28..3143bcb23c3a 100644 --- a/services/autofill/java/com/android/server/autofill/RemoteFillService.java +++ b/services/autofill/java/com/android/server/autofill/RemoteFillService.java @@ -41,6 +41,8 @@ import android.util.Slog; import com.android.internal.infra.AbstractSinglePendingRequestRemoteService; +import java.util.concurrent.CompletableFuture; + final class RemoteFillService extends AbstractSinglePendingRequestRemoteService<RemoteFillService, IAutoFillService> { @@ -103,26 +105,21 @@ final class RemoteFillService * <p>This can be used when the request is unnecessary or will be superceeded by a request that * will soon be queued. * - * @return the id of the canceled request, or {@link FillRequest#INVALID_REQUEST_ID} if no - * {@link PendingFillRequest} was canceled. + * @return the future id of the canceled request, or {@link FillRequest#INVALID_REQUEST_ID} if + * no {@link PendingFillRequest} was canceled. */ - // TODO(b/117779333): move this logic to super class (and make mPendingRequest private) - public int cancelCurrentRequest() { - if (isDestroyed()) { - return INVALID_REQUEST_ID; - } - - int requestId = INVALID_REQUEST_ID; - if (mPendingRequest != null) { - if (mPendingRequest instanceof PendingFillRequest) { - requestId = ((PendingFillRequest) mPendingRequest).mRequest.getId(); + public CompletableFuture<Integer> cancelCurrentRequest() { + return CompletableFuture.supplyAsync(() -> { + if (isDestroyed()) { + return INVALID_REQUEST_ID; } - mPendingRequest.cancel(); - mPendingRequest = null; - } - - return requestId; + BasePendingRequest<RemoteFillService, IAutoFillService> canceledRequest = + handleCancelPendingRequest(); + return canceledRequest instanceof PendingFillRequest + ? ((PendingFillRequest) canceledRequest).mRequest.getId() + : INVALID_REQUEST_ID; + }, mHandler::post); } public void onFillRequest(@NonNull FillRequest request) { diff --git a/services/autofill/java/com/android/server/autofill/Session.java b/services/autofill/java/com/android/server/autofill/Session.java index af9b0e2aa7b1..d260985190f7 100644 --- a/services/autofill/java/com/android/server/autofill/Session.java +++ b/services/autofill/java/com/android/server/autofill/Session.java @@ -546,21 +546,26 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState + "mForAugmentedAutofillOnly: %s", mForAugmentedAutofillOnly); return; } - final int canceledRequest = mRemoteFillService.cancelCurrentRequest(); + mRemoteFillService.cancelCurrentRequest().whenComplete((canceledRequest, err) -> { + if (err != null) { + Slog.e(TAG, "cancelCurrentRequest(): unexpected exception", err); + return; + } - // Remove the FillContext as there will never be a response for the service - if (canceledRequest != INVALID_REQUEST_ID && mContexts != null) { - final int numContexts = mContexts.size(); + // Remove the FillContext as there will never be a response for the service + if (canceledRequest != INVALID_REQUEST_ID && mContexts != null) { + final int numContexts = mContexts.size(); - // It is most likely the last context, hence search backwards - for (int i = numContexts - 1; i >= 0; i--) { - if (mContexts.get(i).getRequestId() == canceledRequest) { - if (sDebug) Slog.d(TAG, "cancelCurrentRequest(): id = " + canceledRequest); - mContexts.remove(i); - break; + // It is most likely the last context, hence search backwards + for (int i = numContexts - 1; i >= 0; i--) { + if (mContexts.get(i).getRequestId() == canceledRequest) { + if (sDebug) Slog.d(TAG, "cancelCurrentRequest(): id = " + canceledRequest); + mContexts.remove(i); + break; + } } } - } + }); } /** @@ -569,12 +574,13 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState @GuardedBy("mLock") private void requestNewFillResponseLocked(@NonNull ViewState viewState, int newState, int flags) { - if (mForAugmentedAutofillOnly) { + if (mForAugmentedAutofillOnly || mRemoteFillService == null) { if (sVerbose) { Slog.v(TAG, "requestNewFillResponse(): triggering augmented autofill instead " + "(mForAugmentedAutofillOnly=" + mForAugmentedAutofillOnly + ", flags=" + flags + ")"); } + mForAugmentedAutofillOnly = true; triggerAugmentedAutofillLocked(); return; } @@ -2089,8 +2095,8 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState updateValuesForSaveLocked(); // Remove pending fill requests as the session is finished. - cancelCurrentRequestLocked(); + cancelCurrentRequestLocked(); final ArrayList<FillContext> contexts = mergePreviousSessionLocked( /* forSave= */ true); final SaveRequest saveRequest = @@ -2923,6 +2929,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState if (sVerbose) { Slog.v(TAG, "Adding autofillable view with id " + id + " and state " + state); } + viewState.setCurrentValue(findValueLocked(id)); mViewStates.put(id, viewState); } if ((state & ViewState.STATE_AUTOFILLED) != 0) { diff --git a/services/autofill/java/com/android/server/autofill/ViewState.java b/services/autofill/java/com/android/server/autofill/ViewState.java index e1b089cf28b2..84886f83027d 100644 --- a/services/autofill/java/com/android/server/autofill/ViewState.java +++ b/services/autofill/java/com/android/server/autofill/ViewState.java @@ -227,6 +227,7 @@ final class ViewState { if (mVirtualBounds != null) { builder.append(", virtualBounds:" ).append(mVirtualBounds); } + builder.append("]"); return builder.toString(); } diff --git a/services/contentsuggestions/java/com/android/server/contentsuggestions/ContentSuggestionsPerUserService.java b/services/contentsuggestions/java/com/android/server/contentsuggestions/ContentSuggestionsPerUserService.java index 593478c65a1c..06d9395cd7d6 100644 --- a/services/contentsuggestions/java/com/android/server/contentsuggestions/ContentSuggestionsPerUserService.java +++ b/services/contentsuggestions/java/com/android/server/contentsuggestions/ContentSuggestionsPerUserService.java @@ -95,7 +95,7 @@ public final class ContentSuggestionsPerUserService extends @GuardedBy("mLock") void provideContextImageLocked(int taskId, @NonNull Bundle imageContextRequestExtras) { - RemoteContentSuggestionsService service = getRemoteServiceLocked(); + RemoteContentSuggestionsService service = ensureRemoteServiceLocked(); if (service != null) { ActivityManager.TaskSnapshot snapshot = mActivityTaskManagerInternal.getTaskSnapshotNoRestore(taskId, false); @@ -118,7 +118,7 @@ public final class ContentSuggestionsPerUserService extends void suggestContentSelectionsLocked( @NonNull SelectionsRequest selectionsRequest, @NonNull ISelectionsCallback selectionsCallback) { - RemoteContentSuggestionsService service = getRemoteServiceLocked(); + RemoteContentSuggestionsService service = ensureRemoteServiceLocked(); if (service != null) { service.suggestContentSelections(selectionsRequest, selectionsCallback); } @@ -128,7 +128,7 @@ public final class ContentSuggestionsPerUserService extends void classifyContentSelectionsLocked( @NonNull ClassificationsRequest classificationsRequest, @NonNull IClassificationsCallback callback) { - RemoteContentSuggestionsService service = getRemoteServiceLocked(); + RemoteContentSuggestionsService service = ensureRemoteServiceLocked(); if (service != null) { service.classifyContentSelections(classificationsRequest, callback); } @@ -136,7 +136,7 @@ public final class ContentSuggestionsPerUserService extends @GuardedBy("mLock") void notifyInteractionLocked(@NonNull String requestId, @NonNull Bundle bundle) { - RemoteContentSuggestionsService service = getRemoteServiceLocked(); + RemoteContentSuggestionsService service = ensureRemoteServiceLocked(); if (service != null) { service.notifyInteraction(requestId, bundle); } @@ -153,12 +153,12 @@ public final class ContentSuggestionsPerUserService extends @GuardedBy("mLock") @Nullable - private RemoteContentSuggestionsService getRemoteServiceLocked() { + private RemoteContentSuggestionsService ensureRemoteServiceLocked() { if (mRemoteService == null) { final String serviceName = getComponentNameLocked(); if (serviceName == null) { if (mMaster.verbose) { - Slog.v(TAG, "getRemoteServiceLocked(): not set"); + Slog.v(TAG, "ensureRemoteServiceLocked(): not set"); } return null; } @@ -170,8 +170,8 @@ public final class ContentSuggestionsPerUserService extends @Override public void onServiceDied( @NonNull RemoteContentSuggestionsService service) { - // TODO(b/120865921): properly implement Slog.w(TAG, "remote content suggestions service died"); + updateRemoteServiceLocked(); } }, mMaster.isBindInstantServiceAllowed(), mMaster.verbose); } diff --git a/services/core/java/com/android/server/AlarmManagerService.java b/services/core/java/com/android/server/AlarmManagerService.java index b9679133b739..d16244167c62 100644 --- a/services/core/java/com/android/server/AlarmManagerService.java +++ b/services/core/java/com/android/server/AlarmManagerService.java @@ -1767,8 +1767,7 @@ class AlarmManagerService extends SystemService { + ", callingPackage: " + callingPackage; mHandler.obtainMessage(AlarmHandler.UNREGISTER_CANCEL_LISTENER, operation).sendToTarget(); - // STOPSHIP (b/128866264): Just to catch breakages. Remove before final release. - Slog.wtf(TAG, errorMsg); + Slog.w(TAG, errorMsg); throw new IllegalStateException(errorMsg); } setImplLocked(type, triggerAtTime, triggerElapsed, windowLength, maxElapsed, @@ -3020,46 +3019,10 @@ class AlarmManagerService extends SystemService { DateFormat.format(pattern, info.getTriggerTime()).toString(); } - /** - * If the last time AlarmThread woke up precedes any due wakeup or non-wakeup alarm that we set - * by more than half a minute, log a wtf. - */ - private void validateLastAlarmExpiredLocked(long nowElapsed) { - final StringBuilder errorMsg = new StringBuilder(); - boolean stuck = false; - if (mNextNonWakeup < (nowElapsed - 10_000) && mLastWakeup < mNextNonWakeup) { - stuck = true; - errorMsg.append("[mNextNonWakeup="); - TimeUtils.formatDuration(mNextNonWakeup - nowElapsed, errorMsg); - errorMsg.append(" set at "); - TimeUtils.formatDuration(mNextNonWakeUpSetAt - nowElapsed, errorMsg); - errorMsg.append(", mLastWakeup="); - TimeUtils.formatDuration(mLastWakeup - nowElapsed, errorMsg); - errorMsg.append(", timerfd_gettime=" + mInjector.getNextAlarm(ELAPSED_REALTIME)); - errorMsg.append("];"); - } - if (mNextWakeup < (nowElapsed - 10_000) && mLastWakeup < mNextWakeup) { - stuck = true; - errorMsg.append("[mNextWakeup="); - TimeUtils.formatDuration(mNextWakeup - nowElapsed, errorMsg); - errorMsg.append(" set at "); - TimeUtils.formatDuration(mNextWakeUpSetAt - nowElapsed, errorMsg); - errorMsg.append(", mLastWakeup="); - TimeUtils.formatDuration(mLastWakeup - nowElapsed, errorMsg); - errorMsg.append(", timerfd_gettime=" - + mInjector.getNextAlarm(ELAPSED_REALTIME_WAKEUP)); - errorMsg.append("];"); - } - if (stuck) { - Slog.wtf(TAG, "Alarm delivery stuck: " + errorMsg.toString()); - } - } - void rescheduleKernelAlarmsLocked() { // Schedule the next upcoming wakeup alarm. If there is a deliverable batch // prior to that which contains no wakeups, we schedule that as well. final long nowElapsed = mInjector.getElapsedRealtime(); - validateLastAlarmExpiredLocked(nowElapsed); long nextNonWakeup = 0; if (mAlarmBatches.size() > 0) { final Batch firstWakeup = findFirstWakeupBatchLocked(); diff --git a/services/core/java/com/android/server/ConnectivityService.java b/services/core/java/com/android/server/ConnectivityService.java index a2abf26891e9..fc67c38560fa 100644 --- a/services/core/java/com/android/server/ConnectivityService.java +++ b/services/core/java/com/android/server/ConnectivityService.java @@ -20,6 +20,7 @@ import static android.Manifest.permission.RECEIVE_DATA_ACTIVITY_CHANGE; import static android.content.pm.PackageManager.PERMISSION_GRANTED; import static android.net.ConnectivityManager.CONNECTIVITY_ACTION; import static android.net.ConnectivityManager.NETID_UNSET; +import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_OPPORTUNISTIC; import static android.net.ConnectivityManager.TYPE_ETHERNET; import static android.net.ConnectivityManager.TYPE_NONE; import static android.net.ConnectivityManager.TYPE_VPN; @@ -2615,9 +2616,11 @@ public class ConnectivityService extends IConnectivityManager.Stub final boolean valid = ((msg.arg1 & NETWORK_VALIDATION_RESULT_VALID) != 0); final boolean wasValidated = nai.lastValidated; final boolean wasDefault = isDefaultNetwork(nai); - if (nai.everCaptivePortalDetected && !nai.captivePortalLoginNotified - && valid) { - nai.captivePortalLoginNotified = true; + // Only show a connected notification if the network is pending validation + // after the captive portal app was open, and it has now validated. + if (nai.captivePortalValidationPending && valid) { + // User is now logged in, network validated. + nai.captivePortalValidationPending = false; showNetworkNotification(nai, NotificationType.LOGGED_IN); } @@ -2688,9 +2691,6 @@ public class ConnectivityService extends IConnectivityManager.Stub final int oldScore = nai.getCurrentScore(); nai.lastCaptivePortalDetected = visible; nai.everCaptivePortalDetected |= visible; - if (visible) { - nai.captivePortalLoginNotified = false; - } if (nai.lastCaptivePortalDetected && Settings.Global.CAPTIVE_PORTAL_MODE_AVOID == getCaptivePortalMode()) { if (DBG) log("Avoiding captive portal network: " + nai.name()); @@ -3499,6 +3499,12 @@ public class ConnectivityService extends IConnectivityManager.Stub new CaptivePortal(new CaptivePortalImpl(network).asBinder())); appIntent.setFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT | Intent.FLAG_ACTIVITY_NEW_TASK); + // This runs on a random binder thread, but getNetworkAgentInfoForNetwork is thread-safe, + // and captivePortalValidationPending is volatile. + final NetworkAgentInfo nai = getNetworkAgentInfoForNetwork(network); + if (nai != null) { + nai.captivePortalValidationPending = true; + } Binder.withCleanCallingIdentity(() -> mContext.startActivityAsUser(appIntent, UserHandle.CURRENT)); } @@ -4383,7 +4389,7 @@ public class ConnectivityService extends IConnectivityManager.Stub /** * @return VPN information for accounting, or null if we can't retrieve all required - * information, e.g underlying ifaces. + * information, e.g primary underlying iface. */ @Nullable private VpnInfo createVpnInfo(Vpn vpn) { @@ -4395,24 +4401,17 @@ public class ConnectivityService extends IConnectivityManager.Stub // see VpnService.setUnderlyingNetworks()'s javadoc about how to interpret // the underlyingNetworks list. if (underlyingNetworks == null) { - NetworkAgentInfo defaultNai = getDefaultNetwork(); - if (defaultNai != null) { - underlyingNetworks = new Network[] { defaultNai.network }; - } - } - if (underlyingNetworks != null && underlyingNetworks.length > 0) { - List<String> interfaces = new ArrayList<>(); - for (Network network : underlyingNetworks) { - LinkProperties lp = getLinkProperties(network); - if (lp != null && !TextUtils.isEmpty(lp.getInterfaceName())) { - interfaces.add(lp.getInterfaceName()); - } + NetworkAgentInfo defaultNetwork = getDefaultNetwork(); + if (defaultNetwork != null && defaultNetwork.linkProperties != null) { + info.primaryUnderlyingIface = getDefaultNetwork().linkProperties.getInterfaceName(); } - if (!interfaces.isEmpty()) { - info.underlyingIfaces = interfaces.toArray(new String[interfaces.size()]); + } else if (underlyingNetworks.length > 0) { + LinkProperties linkProperties = getLinkProperties(underlyingNetworks[0]); + if (linkProperties != null) { + info.primaryUnderlyingIface = linkProperties.getInterfaceName(); } } - return info.underlyingIfaces == null ? null : info; + return info.primaryUnderlyingIface == null ? null : info; } /** @@ -6908,8 +6907,10 @@ public class ConnectivityService extends IConnectivityManager.Stub final int userId = UserHandle.getCallingUserId(); - final IpMemoryStore ipMemoryStore = IpMemoryStore.getMemoryStore(mContext); - ipMemoryStore.factoryReset(); + Binder.withCleanCallingIdentity(() -> { + final IpMemoryStore ipMemoryStore = IpMemoryStore.getMemoryStore(mContext); + ipMemoryStore.factoryReset(); + }); // Turn airplane mode off setAirplaneMode(false); @@ -6959,6 +6960,12 @@ public class ConnectivityService extends IConnectivityManager.Stub } } + // restore private DNS settings to default mode (opportunistic) + if (!mUserManager.hasUserRestriction(UserManager.DISALLOW_CONFIG_PRIVATE_DNS)) { + Settings.Global.putString(mContext.getContentResolver(), + Settings.Global.PRIVATE_DNS_MODE, PRIVATE_DNS_MODE_OPPORTUNISTIC); + } + Settings.Global.putString(mContext.getContentResolver(), Settings.Global.NETWORK_AVOID_BAD_WIFI, null); } diff --git a/services/core/java/com/android/server/LocationManagerService.java b/services/core/java/com/android/server/LocationManagerService.java index 78f0603c5359..8a639c543366 100644 --- a/services/core/java/com/android/server/LocationManagerService.java +++ b/services/core/java/com/android/server/LocationManagerService.java @@ -2361,7 +2361,7 @@ public class LocationManagerService extends ILocationManager.Stub { mRealRequest, mReceiver.isListener(), mReceiver.isPendingIntent(), - /* radius= */ 0, + /* geofence= */ null, mActivityManager.getPackageImportance(packageName)); // remove from mRecordsByProvider @@ -2541,7 +2541,7 @@ public class LocationManagerService extends ILocationManager.Stub { LocationStatsEnums.USAGE_STARTED, LocationStatsEnums.API_REQUEST_LOCATION_UPDATES, packageName, request, listener != null, intent != null, - /* radius= */ 0, + /* geofence= */ null, mActivityManager.getPackageImportance(packageName)); Receiver receiver; @@ -2844,7 +2844,7 @@ public class LocationManagerService extends ILocationManager.Stub { request, /* hasListener= */ false, intent != null, - geofence.getRadius(), + geofence, mActivityManager.getPackageImportance(packageName)); } @@ -2876,7 +2876,7 @@ public class LocationManagerService extends ILocationManager.Stub { /* LocationRequest= */ null, /* hasListener= */ false, intent != null, - geofence.getRadius(), + geofence, mActivityManager.getPackageImportance(packageName)); } mGeofenceManager.removeFence(geofence, intent); @@ -2973,7 +2973,7 @@ public class LocationManagerService extends ILocationManager.Stub { /* LocationRequest= */ null, /* hasListener= */ true, /* hasIntent= */ false, - /* radius */ 0, + /* geofence= */ null, mActivityManager.getPackageImportance(packageName)); } if (isThrottlingExemptLocked(callerIdentity) @@ -3014,7 +3014,7 @@ public class LocationManagerService extends ILocationManager.Stub { /* LocationRequest= */ null, /* hasListener= */ true, /* hasIntent= */ false, - /* radius= */ 0, + /* geofence= */ null, mActivityManager.getPackageImportance( linkedListener.mCallerIdentity.mPackageName)); } diff --git a/services/core/java/com/android/server/LocationUsageLogger.java b/services/core/java/com/android/server/LocationUsageLogger.java index c5030351f69d..4ca74bf3aa91 100644 --- a/services/core/java/com/android/server/LocationUsageLogger.java +++ b/services/core/java/com/android/server/LocationUsageLogger.java @@ -17,6 +17,7 @@ package com.android.server; import android.app.ActivityManager; +import android.location.Geofence; import android.location.LocationManager; import android.location.LocationRequest; import android.os.SystemClock; @@ -180,13 +181,14 @@ class LocationUsageLogger { public void logLocationApiUsage(int usageType, int apiInUse, String packageName, LocationRequest locationRequest, boolean hasListener, boolean hasIntent, - float radius, int activityImportance) { + Geofence geofence, int activityImportance) { try { if (!checkApiUsageLogCap()) { return; } boolean isLocationRequestNull = locationRequest == null; + boolean isGeofenceNull = geofence == null; if (D) { Log.d(TAG, "log API Usage to statsd. usageType: " + usageType + ", apiInUse: " + apiInUse + ", packageName: " + (packageName == null ? "" : packageName) @@ -194,7 +196,8 @@ class LocationUsageLogger { + (isLocationRequestNull ? "" : locationRequest.toString()) + ", hasListener: " + hasListener + ", hasIntent: " + hasIntent - + ", radius: " + radius + + ", geofence: " + + (isGeofenceNull ? "" : geofence.toString()) + ", importance: " + activityImportance); } @@ -219,7 +222,9 @@ class LocationUsageLogger { ? LocationStatsEnums.EXPIRATION_UNKNOWN : getBucketizedExpireIn(locationRequest.getExpireAt()), getCallbackType(apiInUse, hasListener, hasIntent), - bucketizeRadiusToStatsdEnum(radius), + isGeofenceNull + ? LocationStatsEnums.RADIUS_UNKNOWN + : bucketizeRadiusToStatsdEnum(geofence.getRadius()), categorizeActivityImportance(activityImportance)); } catch (Exception e) { // Swallow exceptions to avoid crashing LMS. diff --git a/services/core/java/com/android/server/StorageManagerService.java b/services/core/java/com/android/server/StorageManagerService.java index d2b992bad462..deff7ef7d39a 100644 --- a/services/core/java/com/android/server/StorageManagerService.java +++ b/services/core/java/com/android/server/StorageManagerService.java @@ -580,6 +580,7 @@ class StorageManagerService extends IStorageManager.Stub private static final int H_RUN_IDLE_MAINT = 11; private static final int H_ABORT_IDLE_MAINT = 12; private static final int H_BOOT_COMPLETED = 13; + private static final int H_COMPLETE_UNLOCK_USER = 14; class StorageManagerServiceHandler extends Handler { public StorageManagerServiceHandler(Looper looper) { @@ -698,7 +699,10 @@ class StorageManagerService extends IStorageManager.Stub abortIdleMaint((Runnable)msg.obj); break; } - + case H_COMPLETE_UNLOCK_USER: { + completeUnlockUser((int) msg.obj); + break; + } } } } @@ -978,6 +982,17 @@ class StorageManagerService extends IStorageManager.Stub Slog.wtf(TAG, e); } + mHandler.obtainMessage(H_COMPLETE_UNLOCK_USER, userId).sendToTarget(); + } + + private void completeUnlockUser(int userId) { + // If user 0 has completed unlock, perform a one-time migration of legacy obb data + // to its new location. This may take time depending on the size of the data to be copied + // so it's done on the StorageManager handler thread. + if (userId == 0) { + mPmInternal.migrateLegacyObbData(); + } + // Record user as started so newly mounted volumes kick off events // correctly, then synthesize events for any already-mounted volumes. synchronized (mLock) { @@ -2820,6 +2835,12 @@ class StorageManagerService extends IStorageManager.Stub } } + private boolean isSystemUnlocked(int userId) { + synchronized (mLock) { + return ArrayUtils.contains(mSystemUnlockedUsers, userId); + } + } + @Override public void prepareUserStorage(String volumeUuid, int userId, int serialNumber, int flags) { enforcePermission(android.Manifest.permission.STORAGE_INTERNAL); @@ -2996,6 +3017,11 @@ class StorageManagerService extends IStorageManager.Stub final boolean realState = (flags & StorageManager.FLAG_REAL_STATE) != 0; final boolean includeInvisible = (flags & StorageManager.FLAG_INCLUDE_INVISIBLE) != 0; + // Report all volumes as unmounted until we've recorded that user 0 has unlocked. There + // are no guarantees that callers will see a consistent view of the volume before that + // point + final boolean systemUserUnlocked = isSystemUnlocked(UserHandle.USER_SYSTEM); + final boolean userKeyUnlocked; final boolean storagePermission; final long token = Binder.clearCallingIdentity(); @@ -3031,7 +3057,9 @@ class StorageManagerService extends IStorageManager.Stub if (!match) continue; boolean reportUnmounted = false; - if ((vol.getType() == VolumeInfo.TYPE_EMULATED) && !userKeyUnlocked) { + if (!systemUserUnlocked) { + reportUnmounted = true; + } else if ((vol.getType() == VolumeInfo.TYPE_EMULATED) && !userKeyUnlocked) { reportUnmounted = true; } else if (!storagePermission && !realState) { reportUnmounted = true; diff --git a/services/core/java/com/android/server/UiModeManagerService.java b/services/core/java/com/android/server/UiModeManagerService.java index 0eb3a8438ae3..bc7da3fe2edc 100644 --- a/services/core/java/com/android/server/UiModeManagerService.java +++ b/services/core/java/com/android/server/UiModeManagerService.java @@ -46,7 +46,9 @@ import android.os.ResultReceiver; import android.os.ServiceManager; import android.os.ShellCallback; import android.os.ShellCommand; +import android.os.SystemProperties; import android.os.UserHandle; +import android.os.UserManager; import android.provider.Settings.Secure; import android.service.dreams.Sandman; import android.service.vr.IVrManager; @@ -71,6 +73,7 @@ final class UiModeManagerService extends SystemService { // Enable launching of applications when entering the dock. private static final boolean ENABLE_LAUNCH_DESK_DOCK_APP = true; + private static final String SYSTEM_PROPERTY_DEVICE_THEME = "persist.sys.theme"; final Object mLock = new Object(); private int mDockState = Intent.EXTRA_DOCK_STATE_UNDOCKED; @@ -330,8 +333,7 @@ final class UiModeManagerService extends SystemService { mNightMode = defaultNightMode; } - // false if night mode stayed the same, true otherwise. - return !(oldNightMode == mNightMode); + return oldNightMode != mNightMode; } private final IUiModeManager.Stub mService = new IUiModeManager.Stub() { @@ -411,6 +413,11 @@ final class UiModeManagerService extends SystemService { try { synchronized (mLock) { if (mNightMode != mode) { + if (UserManager.get(getContext()).isPrimaryUser()) { + SystemProperties.set(SYSTEM_PROPERTY_DEVICE_THEME, + Integer.toString(mode)); + } + // Only persist setting if not in car mode if (!mCarModeEnabled) { Secure.putIntForUser(getContext().getContentResolver(), diff --git a/services/core/java/com/android/server/VibratorService.java b/services/core/java/com/android/server/VibratorService.java index 7a947f192263..6eb9f0c7a6bc 100644 --- a/services/core/java/com/android/server/VibratorService.java +++ b/services/core/java/com/android/server/VibratorService.java @@ -116,6 +116,7 @@ public class VibratorService extends IVibratorService.Stub private final LinkedList<VibrationInfo> mPreviousRingVibrations; private final LinkedList<VibrationInfo> mPreviousNotificationVibrations; private final LinkedList<VibrationInfo> mPreviousAlarmVibrations; + private final LinkedList<ExternalVibration> mPreviousExternalVibrations; private final LinkedList<VibrationInfo> mPreviousVibrations; private final int mPreviousVibrationsLimit; private final boolean mAllowPriorityVibrationsInLowPowerMode; @@ -368,6 +369,7 @@ public class VibratorService extends IVibratorService.Stub mPreviousNotificationVibrations = new LinkedList<>(); mPreviousAlarmVibrations = new LinkedList<>(); mPreviousVibrations = new LinkedList<>(); + mPreviousExternalVibrations = new LinkedList<>(); IntentFilter filter = new IntentFilter(); filter.addAction(Intent.ACTION_SCREEN_OFF); @@ -618,7 +620,6 @@ public class VibratorService extends IVibratorService.Stub linkVibration(vib); long ident = Binder.clearCallingIdentity(); try { - doCancelVibrateLocked(); startVibrationLocked(vib); addToPreviousVibrationsLocked(vib); @@ -1418,6 +1419,12 @@ public class VibratorService extends IVibratorService.Stub pw.print(" "); pw.println(info.toString()); } + + pw.println(" Previous external vibrations:"); + for (ExternalVibration vib : mPreviousExternalVibrations) { + pw.print(" "); + pw.println(vib.toString()); + } } } @@ -1429,6 +1436,8 @@ public class VibratorService extends IVibratorService.Stub } final class ExternalVibratorService extends IExternalVibratorService.Stub { + ExternalVibrationDeathRecipient mCurrentExternalDeathRecipient; + @Override public int onExternalVibrationStart(ExternalVibration vib) { if (!mSupportsExternalControl) { @@ -1462,6 +1471,12 @@ public class VibratorService extends IVibratorService.Stub // Note that this doesn't support multiple concurrent external controls, as we // would need to mute the old one still if it came from a different controller. mCurrentExternalVibration = vib; + mCurrentExternalDeathRecipient = new ExternalVibrationDeathRecipient(); + mCurrentExternalVibration.linkToDeath(mCurrentExternalDeathRecipient); + if (mPreviousExternalVibrations.size() > mPreviousVibrationsLimit) { + mPreviousExternalVibrations.removeFirst(); + } + mPreviousExternalVibrations.addLast(vib); if (DEBUG) { Slog.e(TAG, "Playing external vibration: " + vib); } @@ -1502,6 +1517,8 @@ public class VibratorService extends IVibratorService.Stub public void onExternalVibrationStop(ExternalVibration vib) { synchronized (mLock) { if (vib.equals(mCurrentExternalVibration)) { + mCurrentExternalVibration.unlinkToDeath(mCurrentExternalDeathRecipient); + mCurrentExternalDeathRecipient = null; mCurrentExternalVibration = null; setVibratorUnderExternalControl(false); if (DEBUG) { @@ -1510,6 +1527,14 @@ public class VibratorService extends IVibratorService.Stub } } } + + private class ExternalVibrationDeathRecipient implements IBinder.DeathRecipient { + public void binderDied() { + synchronized (mLock) { + onExternalVibrationStop(mCurrentExternalVibration); + } + } + } } private final class VibratorShellCommand extends ShellCommand { diff --git a/services/core/java/com/android/server/am/ActivityManagerDebugConfig.java b/services/core/java/com/android/server/am/ActivityManagerDebugConfig.java index 7ab70fad70d4..ed64475084b8 100644 --- a/services/core/java/com/android/server/am/ActivityManagerDebugConfig.java +++ b/services/core/java/com/android/server/am/ActivityManagerDebugConfig.java @@ -42,7 +42,7 @@ class ActivityManagerDebugConfig { static final boolean DEBUG_ALL = false; // Available log categories in the activity manager package. - static final boolean DEBUG_ANR = true; // STOPSHIP disable it (b/113252928) + static final boolean DEBUG_ANR = false; static final boolean DEBUG_BACKGROUND_CHECK = DEBUG_ALL || false; static final boolean DEBUG_BACKUP = DEBUG_ALL || false; static final boolean DEBUG_BROADCAST = DEBUG_ALL || false; diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index c5fc5c89cce1..91ae156afdf5 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -120,8 +120,6 @@ import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_UID_OBSER import static com.android.server.am.ActivityManagerDebugConfig.TAG_AM; import static com.android.server.am.ActivityManagerDebugConfig.TAG_WITH_CLASS_NAME; import static com.android.server.am.MemoryStatUtil.hasMemcg; -import static com.android.server.am.MemoryStatUtil.readMemoryStatFromFilesystem; -import static com.android.server.am.MemoryStatUtil.readRssHighWaterMarkFromProcfs; import static com.android.server.pm.PackageManagerService.PLATFORM_PACKAGE_NAME; import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_CLEANUP; import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_CONFIGURATION; @@ -178,7 +176,6 @@ import android.app.Instrumentation; import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; -import android.app.ProcessMemoryHighWaterMark; import android.app.ProcessMemoryState; import android.app.ProfilerInfo; import android.app.WaitResult; @@ -275,6 +272,7 @@ import android.os.storage.IStorageManager; import android.os.storage.StorageManager; import android.provider.DeviceConfig; import android.provider.Settings; +import android.provider.DeviceConfig.Properties; import android.server.ServerProtoEnums; import android.sysprop.VoldProperties; import android.text.TextUtils; @@ -349,7 +347,6 @@ import com.android.server.SystemServiceManager; import com.android.server.ThreadPriorityBooster; import com.android.server.Watchdog; import com.android.server.am.ActivityManagerServiceDumpProcessesProto.UidObserverRegistrationProto; -import com.android.server.am.MemoryStatUtil.MemoryStat; import com.android.server.appop.AppOpsService; import com.android.server.contentcapture.ContentCaptureManagerInternal; import com.android.server.firewall.IntentFirewall; @@ -360,6 +357,7 @@ import com.android.server.uri.GrantUri; import com.android.server.uri.UriGrantsManagerInternal; import com.android.server.utils.PriorityDump; import com.android.server.vr.VrManagerInternal; +import com.android.server.wm.ActivityMetricsLaunchObserver; import com.android.server.wm.ActivityServiceConnectionsHolder; import com.android.server.wm.ActivityTaskManagerInternal; import com.android.server.wm.ActivityTaskManagerService; @@ -396,6 +394,7 @@ import java.util.Set; import java.util.concurrent.CountDownLatch; 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.function.BiFunction; @@ -547,6 +546,7 @@ public class ActivityManagerService extends IActivityManager.Stub private static final int MAX_BUGREPORT_TITLE_SIZE = 50; private static final int NATIVE_DUMP_TIMEOUT_MS = 2000; // 2 seconds; + private static final int JAVA_DUMP_MINIMUM_SIZE = 100; // 100 bytes. OomAdjuster mOomAdjuster; final LowMemDetector mLowMemDetector; @@ -864,6 +864,51 @@ public class ActivityManagerService extends IActivityManager.Stub */ final ArrayList<ProcessRecord> mPendingPssProcesses = new ArrayList<ProcessRecord>(); + /** + * Depth of overlapping activity-start PSS deferral notes + */ + private final AtomicInteger mActivityStartingNesting = new AtomicInteger(0); + + private final ActivityMetricsLaunchObserver mActivityLaunchObserver = + new ActivityMetricsLaunchObserver() { + @Override + public void onActivityLaunched(byte[] activity, int temperature) { + // This is safe to force to the head of the queue because it relies only + // on refcounting to track begin/end of deferrals, not on actual + // message ordering. We don't care *what* activity is being + // launched; only that we're doing so. + if (mPssDeferralTime > 0) { + final Message msg = mBgHandler.obtainMessage(DEFER_PSS_MSG); + mBgHandler.sendMessageAtFrontOfQueue(msg); + } + } + + // The other observer methods are unused + @Override + public void onIntentStarted(Intent intent) { + } + + @Override + public void onIntentFailed() { + } + + @Override + public void onActivityLaunchCancelled(byte[] abortingActivity) { + } + + @Override + public void onActivityLaunchFinished(byte[] finalActivity) { + } + }; + + /** + * How long we defer PSS gathering while activities are starting, in milliseconds. + * This is adjustable via DeviceConfig. If it is zero or negative, no PSS deferral + * is done. + */ + private volatile long mPssDeferralTime = 0; + private static final String ACTIVITY_START_PSS_DEFER_CONFIG = "activity_start_pss_defer"; + private boolean mBinderTransactionTrackingEnabled = false; /** @@ -877,6 +922,20 @@ public class ActivityManagerService extends IActivityManager.Stub */ boolean mFullPssPending = false; + /** + * Observe DeviceConfig changes to the PSS calculation interval + */ + private final DeviceConfig.OnPropertiesChangedListener mPssDelayConfigListener = + new DeviceConfig.OnPropertiesChangedListener() { + @Override + public void onPropertiesChanged(Properties properties) { + mPssDeferralTime = properties.getLong(ACTIVITY_START_PSS_DEFER_CONFIG, 0); + if (DEBUG_PSS) { + Slog.d(TAG_PSS, "Activity-start PSS delay now " + + mPssDeferralTime + " ms"); + } + } + }; /** * This is for verifying the UID report flow. @@ -1841,6 +1900,8 @@ public class ActivityManagerService extends IActivityManager.Stub } static final int COLLECT_PSS_BG_MSG = 1; + static final int DEFER_PSS_MSG = 2; + static final int STOP_DEFERRING_PSS_MSG = 3; final Handler mBgHandler = new Handler(BackgroundThread.getHandler().getLooper()) { @Override @@ -1948,6 +2009,30 @@ public class ActivityManagerService extends IActivityManager.Stub } } while (true); } + + case DEFER_PSS_MSG: { + deferPssForActivityStart(); + } break; + + case STOP_DEFERRING_PSS_MSG: { + final int nesting = mActivityStartingNesting.decrementAndGet(); + if (nesting <= 0) { + if (DEBUG_PSS) { + Slog.d(TAG_PSS, "PSS activity start deferral interval ended; now " + + nesting); + } + if (nesting < 0) { + Slog.wtf(TAG, "Activity start nesting undercount!"); + mActivityStartingNesting.incrementAndGet(); + } + } else { + if (DEBUG_PSS) { + Slog.d(TAG_PSS, "Still deferring PSS, nesting=" + nesting); + } + } + } + break; + } } }; @@ -3697,9 +3782,7 @@ public class ActivityManagerService extends IActivityManager.Stub ArrayList<Integer> nativePids) { ArrayList<Integer> extraPids = null; - if (DEBUG_ANR) { - Slog.d(TAG, "dumpStackTraces pids=" + lastPids + " nativepids=" + nativePids); - } + Slog.i(TAG, "dumpStackTraces pids=" + lastPids + " nativepids=" + nativePids); // Measure CPU usage as soon as we're called in order to get a realistic sampling // of the top users at the time of the request. @@ -3721,8 +3804,8 @@ public class ActivityManagerService extends IActivityManager.Stub if (DEBUG_ANR) Slog.d(TAG, "Collecting stacks for extra pid " + stats.pid); extraPids.add(stats.pid); - } else if (DEBUG_ANR) { - Slog.d(TAG, "Skipping next CPU consuming process, not a java proc: " + } else { + Slog.i(TAG, "Skipping next CPU consuming process, not a java proc: " + stats.pid); } } @@ -3740,9 +3823,6 @@ public class ActivityManagerService extends IActivityManager.Stub if (tracesFile == null) { return null; } - if (DEBUG_ANR) { - Slog.d(TAG, "Dumping to " + tracesFile.getAbsolutePath()); - } dumpStackTraces(tracesFile.getAbsolutePath(), firstPids, nativePids, extraPids); return tracesFile; @@ -3805,9 +3885,28 @@ public class ActivityManagerService extends IActivityManager.Stub */ private static long dumpJavaTracesTombstoned(int pid, String fileName, long timeoutMs) { final long timeStart = SystemClock.elapsedRealtime(); - if (!Debug.dumpJavaBacktraceToFileTimeout(pid, fileName, (int) (timeoutMs / 1000))) { - Debug.dumpNativeBacktraceToFileTimeout(pid, fileName, - (NATIVE_DUMP_TIMEOUT_MS / 1000)); + boolean javaSuccess = Debug.dumpJavaBacktraceToFileTimeout(pid, fileName, + (int) (timeoutMs / 1000)); + if (javaSuccess) { + // Check that something is in the file, actually. Try-catch should not be necessary, + // but better safe than sorry. + try { + long size = new File(fileName).length(); + if (size < JAVA_DUMP_MINIMUM_SIZE) { + Slog.w(TAG, "Successfully created Java ANR file is empty!"); + javaSuccess = false; + } + } catch (Exception e) { + Slog.w(TAG, "Unable to get ANR file size", e); + javaSuccess = false; + } + } + if (!javaSuccess) { + Slog.w(TAG, "Dumping Java threads failed, initiating native stack dump."); + if (!Debug.dumpNativeBacktraceToFileTimeout(pid, fileName, + (NATIVE_DUMP_TIMEOUT_MS / 1000))) { + Slog.w(TAG, "Native stack dump failed!"); + } } return SystemClock.elapsedRealtime() - timeStart; @@ -3816,6 +3915,8 @@ public class ActivityManagerService extends IActivityManager.Stub public static void dumpStackTraces(String tracesFile, ArrayList<Integer> firstPids, ArrayList<Integer> nativePids, ArrayList<Integer> extraPids) { + Slog.i(TAG, "Dumping to " + tracesFile); + // We don't need any sort of inotify based monitoring when we're dumping traces via // tombstoned. Data is piped to an "intercept" FD installed in tombstoned so we're in full // control of all writes to the file in question. @@ -3827,7 +3928,7 @@ public class ActivityManagerService extends IActivityManager.Stub if (firstPids != null) { int num = firstPids.size(); for (int i = 0; i < num; i++) { - if (DEBUG_ANR) Slog.d(TAG, "Collecting stacks for pid " + firstPids.get(i)); + Slog.i(TAG, "Collecting stacks for pid " + firstPids.get(i)); final long timeTaken = dumpJavaTracesTombstoned(firstPids.get(i), tracesFile, remainingTime); @@ -3847,7 +3948,7 @@ public class ActivityManagerService extends IActivityManager.Stub // Next collect the stacks of the native pids if (nativePids != null) { for (int pid : nativePids) { - if (DEBUG_ANR) Slog.d(TAG, "Collecting stacks for native pid " + pid); + Slog.i(TAG, "Collecting stacks for native pid " + pid); final long nativeDumpTimeoutMs = Math.min(NATIVE_DUMP_TIMEOUT_MS, remainingTime); final long start = SystemClock.elapsedRealtime(); @@ -3871,7 +3972,7 @@ public class ActivityManagerService extends IActivityManager.Stub // Lastly, dump stacks for all extra PIDs from the CPU tracker. if (extraPids != null) { for (int pid : extraPids) { - if (DEBUG_ANR) Slog.d(TAG, "Collecting stacks for extra pid " + pid); + Slog.i(TAG, "Collecting stacks for extra pid " + pid); final long timeTaken = dumpJavaTracesTombstoned(pid, tracesFile, remainingTime); @@ -3887,6 +3988,7 @@ public class ActivityManagerService extends IActivityManager.Stub } } } + Slog.i(TAG, "Done dumping"); } @Override @@ -5375,34 +5477,13 @@ public class ActivityManagerService extends IActivityManager.Stub @Override public void registerIntentSenderCancelListener(IIntentSender sender, IResultReceiver receiver) { - if (!(sender instanceof PendingIntentRecord)) { - return; - } - boolean isCancelled; - synchronized(this) { - PendingIntentRecord pendingIntent = (PendingIntentRecord) sender; - isCancelled = pendingIntent.canceled; - if (!isCancelled) { - pendingIntent.registerCancelListenerLocked(receiver); - } - } - if (isCancelled) { - try { - receiver.send(Activity.RESULT_CANCELED, null); - } catch (RemoteException e) { - } - } + mPendingIntentController.registerIntentSenderCancelListener(sender, receiver); } @Override public void unregisterIntentSenderCancelListener(IIntentSender sender, IResultReceiver receiver) { - if (!(sender instanceof PendingIntentRecord)) { - return; - } - synchronized(this) { - ((PendingIntentRecord)sender).unregisterCancelListenerLocked(receiver); - } + mPendingIntentController.unregisterIntentSenderCancelListener(sender, receiver); } @Override @@ -7300,6 +7381,13 @@ public class ActivityManagerService extends IActivityManager.Stub if (wasInLaunchingProviders) { mHandler.removeMessages(CONTENT_PROVIDER_PUBLISH_TIMEOUT_MSG, r); } + // Make sure the package is associated with the process. + // XXX We shouldn't need to do this, since we have added the package + // when we generated the providers in generateApplicationProvidersLocked(). + // But for some reason in some cases we get here with the package no longer + // added... for now just patch it in to make things happy. + r.addPackage(dst.info.applicationInfo.packageName, + dst.info.applicationInfo.longVersionCode, mProcessStats); synchronized (dst) { dst.provider = src.provider; dst.setProcess(r); @@ -8843,6 +8931,12 @@ public class ActivityManagerService extends IActivityManager.Stub NETWORK_ACCESS_TIMEOUT_MS, NETWORK_ACCESS_TIMEOUT_DEFAULT_MS); mHiddenApiBlacklist.registerObserver(); + final long pssDeferralMs = DeviceConfig.getLong(DeviceConfig.NAMESPACE_ACTIVITY_MANAGER, + ACTIVITY_START_PSS_DEFER_CONFIG, 0L); + DeviceConfig.addOnPropertiesChangedListener(DeviceConfig.NAMESPACE_ACTIVITY_MANAGER, + ActivityThread.currentApplication().getMainExecutor(), + mPssDelayConfigListener); + synchronized (this) { mDebugApp = mOrigDebugApp = debugApp; mWaitForDebugger = mOrigWaitForDebugger = waitForDebugger; @@ -8859,6 +8953,7 @@ public class ActivityManagerService extends IActivityManager.Stub com.android.internal.R.bool.config_multiuserDelayUserDataLocking); mWaitForNetworkTimeoutMs = waitForNetworkTimeoutMs; + mPssDeferralTime = pssDeferralMs; } } @@ -8921,6 +9016,7 @@ public class ActivityManagerService extends IActivityManager.Stub EventLog.writeEvent(EventLogTags.BOOT_PROGRESS_AMS_READY, SystemClock.uptimeMillis()); mAtmInternal.updateTopComponentForFactoryTest(); + mAtmInternal.getLaunchObserverRegistry().registerLaunchObserver(mActivityLaunchObserver); watchDeviceProvisioning(mContext); @@ -16144,7 +16240,13 @@ public class ActivityManagerService extends IActivityManager.Stub return false; } if (mPendingPssProcesses.size() == 0) { - mBgHandler.sendEmptyMessage(COLLECT_PSS_BG_MSG); + final long deferral = (mPssDeferralTime > 0 && mActivityStartingNesting.get() > 0) + ? mPssDeferralTime : 0; + if (DEBUG_PSS && deferral > 0) { + Slog.d(TAG_PSS, "requestPssLocked() deferring PSS request by " + + deferral + " ms"); + } + mBgHandler.sendEmptyMessageDelayed(COLLECT_PSS_BG_MSG, deferral); } if (DEBUG_PSS) Slog.d(TAG_PSS, "Requesting pss of: " + proc); proc.pssProcState = procState; @@ -16154,6 +16256,30 @@ public class ActivityManagerService extends IActivityManager.Stub } /** + * Re-defer a posted PSS collection pass, if one exists. Assumes deferral is + * currently active policy when called. + */ + private void deferPssIfNeededLocked() { + if (mPendingPssProcesses.size() > 0) { + mBgHandler.removeMessages(COLLECT_PSS_BG_MSG); + mBgHandler.sendEmptyMessageDelayed(COLLECT_PSS_BG_MSG, mPssDeferralTime); + } + } + + private void deferPssForActivityStart() { + synchronized (ActivityManagerService.this) { + if (mPssDeferralTime > 0) { + if (DEBUG_PSS) { + Slog.d(TAG_PSS, "Deferring PSS collection for activity start"); + } + deferPssIfNeededLocked(); + mActivityStartingNesting.getAndIncrement(); + mBgHandler.sendEmptyMessageDelayed(STOP_DEFERRING_PSS_MSG, mPssDeferralTime); + } + } + } + + /** * Schedule PSS collection of all processes. */ void requestPssAllProcsLocked(long now, boolean always, boolean memLowered) { @@ -17679,13 +17805,8 @@ public class ActivityManagerService extends IActivityManager.Stub @Override public void setPendingIntentWhitelistDuration(IIntentSender target, IBinder whitelistToken, long duration) { - if (!(target instanceof PendingIntentRecord)) { - Slog.w(TAG, "markAsSentFromNotification(): not a PendingIntentRecord: " + target); - return; - } - synchronized (ActivityManagerService.this) { - ((PendingIntentRecord) target).setWhitelistDurationLocked(whitelistToken, duration); - } + mPendingIntentController.setPendingIntentWhitelistDuration(target, whitelistToken, + duration); } @Override @@ -17860,43 +17981,14 @@ public class ActivityManagerService extends IActivityManager.Stub synchronized (mPidsSelfLocked) { for (int i = 0, size = mPidsSelfLocked.size(); i < size; i++) { final ProcessRecord r = mPidsSelfLocked.valueAt(i); - final int pid = r.pid; - final int uid = r.uid; - final MemoryStat memoryStat = readMemoryStatFromFilesystem(uid, pid); - if (memoryStat == null) { - continue; - } - ProcessMemoryState processMemoryState = - new ProcessMemoryState(uid, - r.processName, - r.curAdj, - memoryStat.pgfault, - memoryStat.pgmajfault, - memoryStat.rssInBytes, - memoryStat.cacheInBytes, - memoryStat.swapInBytes, - memoryStat.startTimeNanos); - processMemoryStates.add(processMemoryState); + processMemoryStates.add( + new ProcessMemoryState(r.uid, r.pid, r.processName, r.curAdj)); } } return processMemoryStates; } @Override - public List<ProcessMemoryHighWaterMark> getMemoryHighWaterMarkForProcesses() { - List<ProcessMemoryHighWaterMark> results = new ArrayList<>(); - synchronized (mPidsSelfLocked) { - for (int i = 0, size = mPidsSelfLocked.size(); i < size; i++) { - final ProcessRecord r = mPidsSelfLocked.valueAt(i); - final long rssHighWaterMarkInBytes = readRssHighWaterMarkFromProcfs(r.pid); - results.add(new ProcessMemoryHighWaterMark(r.uid, r.processName, - rssHighWaterMarkInBytes)); - } - } - return results; - } - - @Override public int handleIncomingUser(int callingPid, int callingUid, int userId, boolean allowAll, int allowMode, String name, String callerPackage) { return mUserController.handleIncomingUser(callingPid, callingUid, userId, allowAll, diff --git a/services/core/java/com/android/server/am/BroadcastDispatcher.java b/services/core/java/com/android/server/am/BroadcastDispatcher.java index d029482ac528..f8a3d1eefd50 100644 --- a/services/core/java/com/android/server/am/BroadcastDispatcher.java +++ b/services/core/java/com/android/server/am/BroadcastDispatcher.java @@ -725,6 +725,14 @@ public class BroadcastDispatcher { final Dumper dumper = new Dumper(pw, queueName, dumpPackage, sdf); boolean printed = false; + dumper.setHeading("Currently in flight"); + dumper.setLabel("In-Flight Ordered Broadcast"); + if (mCurrentBroadcast != null) { + dumper.dump(mCurrentBroadcast); + } else { + pw.println(" (null)"); + } + dumper.setHeading("Active ordered broadcasts"); dumper.setLabel("Active Ordered Broadcast"); for (Deferrals d : mAlarmBroadcasts) { diff --git a/services/core/java/com/android/server/am/ConnectionRecord.java b/services/core/java/com/android/server/am/ConnectionRecord.java index fe9554255feb..459508486384 100644 --- a/services/core/java/com/android/server/am/ConnectionRecord.java +++ b/services/core/java/com/android/server/am/ConnectionRecord.java @@ -65,6 +65,8 @@ final class ConnectionRecord { Context.BIND_VISIBLE, Context.BIND_SHOWING_UI, Context.BIND_NOT_VISIBLE, + Context.BIND_NOT_PERCEPTIBLE, + Context.BIND_INCLUDE_CAPABILITIES, }; private static final int[] BIND_PROTO_ENUMS = new int[] { ConnectionRecordProto.AUTO_CREATE, @@ -82,6 +84,8 @@ final class ConnectionRecord { ConnectionRecordProto.VISIBLE, ConnectionRecordProto.SHOWING_UI, ConnectionRecordProto.NOT_VISIBLE, + ConnectionRecordProto.NOT_PERCEPTIBLE, + ConnectionRecordProto.INCLUDE_CAPABILITIES, }; void dump(PrintWriter pw, String prefix) { @@ -212,6 +216,12 @@ final class ConnectionRecord { if ((flags&Context.BIND_NOT_VISIBLE) != 0) { sb.append("!VIS "); } + if ((flags & Context.BIND_NOT_PERCEPTIBLE) != 0) { + sb.append("!PRCP "); + } + if ((flags & Context.BIND_INCLUDE_CAPABILITIES) != 0) { + sb.append("CAPS "); + } if (serviceDead) { sb.append("DEAD "); } diff --git a/services/core/java/com/android/server/am/CoreSettingsObserver.java b/services/core/java/com/android/server/am/CoreSettingsObserver.java index b053d84de7d6..aa8bc04f0f7c 100644 --- a/services/core/java/com/android/server/am/CoreSettingsObserver.java +++ b/services/core/java/com/android/server/am/CoreSettingsObserver.java @@ -76,6 +76,8 @@ final class CoreSettingsObserver extends ContentObserver { sGlobalSettingToTypeMap.put(Settings.Global.GPU_DEBUG_LAYER_APP, String.class); sGlobalSettingToTypeMap.put(Settings.Global.GAME_DRIVER_ALL_APPS, int.class); sGlobalSettingToTypeMap.put(Settings.Global.GAME_DRIVER_OPT_IN_APPS, String.class); + sGlobalSettingToTypeMap.put( + Settings.Global.GAME_DRIVER_PRERELEASE_OPT_IN_APPS, String.class); sGlobalSettingToTypeMap.put(Settings.Global.GAME_DRIVER_OPT_OUT_APPS, String.class); sGlobalSettingToTypeMap.put(Settings.Global.GAME_DRIVER_BLACKLIST, String.class); sGlobalSettingToTypeMap.put(Settings.Global.GAME_DRIVER_WHITELIST, String.class); diff --git a/services/core/java/com/android/server/am/MemoryStatUtil.java b/services/core/java/com/android/server/am/MemoryStatUtil.java index 78d2634e9236..95eb2c69024e 100644 --- a/services/core/java/com/android/server/am/MemoryStatUtil.java +++ b/services/core/java/com/android/server/am/MemoryStatUtil.java @@ -26,12 +26,17 @@ import android.os.SystemProperties; import android.system.Os; import android.system.OsConstants; import android.util.Slog; +import android.util.SparseArray; import com.android.internal.annotations.VisibleForTesting; import java.io.File; import java.io.IOException; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; import java.util.Locale; +import java.util.Objects; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -69,11 +74,15 @@ public final class MemoryStatUtil { Pattern.compile("VmHWM:\\s*(\\d+)\\s*kB"); private static final Pattern PROCFS_RSS_IN_KILOBYTES = Pattern.compile("VmRSS:\\s*(\\d+)\\s*kB"); + private static final Pattern PROCFS_ANON_RSS_IN_KILOBYTES = + Pattern.compile("RssAnon:\\s*(\\d+)\\s*kB"); private static final Pattern PROCFS_SWAP_IN_KILOBYTES = Pattern.compile("VmSwap:\\s*(\\d+)\\s*kB"); private static final Pattern ION_HEAP_SIZE_IN_BYTES = Pattern.compile("\n\\s*total\\s*(\\d+)\\s*\n"); + private static final Pattern PROCESS_ION_HEAP_SIZE_IN_BYTES = + Pattern.compile("\n\\s+\\S+\\s+(\\d+)\\s+(\\d+)"); private static final int PGFAULT_INDEX = 9; private static final int PGMAJFAULT_INDEX = 11; @@ -145,6 +154,16 @@ public final class MemoryStatUtil { return parseIonHeapSizeFromDebugfs(readFileContents(DEBUG_SYSTEM_ION_HEAP_FILE)); } + /** + * Reads process allocation sizes on the system ion heap from debugfs. + * + * Returns values of allocation sizes in bytes on the system ion heap from + * /sys/kernel/debug/ion/heaps/system. + */ + public static List<IonAllocations> readProcessSystemIonHeapSizesFromDebugfs() { + return parseProcessIonHeapSizesFromDebugfs(readFileContents(DEBUG_SYSTEM_ION_HEAP_FILE)); + } + private static String readFileContents(String path) { final File file = new File(path); if (!file.exists()) { @@ -204,6 +223,8 @@ public final class MemoryStatUtil { memoryStat.pgmajfault = Long.parseLong(splits[PGMAJFAULT_INDEX]); memoryStat.rssInBytes = tryParseLong(PROCFS_RSS_IN_KILOBYTES, procStatusContents) * BYTES_IN_KILOBYTE; + memoryStat.anonRssInBytes = + tryParseLong(PROCFS_ANON_RSS_IN_KILOBYTES, procStatusContents) * BYTES_IN_KILOBYTE; memoryStat.swapInBytes = tryParseLong(PROCFS_SWAP_IN_KILOBYTES, procStatusContents) * BYTES_IN_KILOBYTE; memoryStat.startTimeNanos = Long.parseLong(splits[START_TIME_INDEX]) * JIFFY_NANOS; @@ -259,6 +280,43 @@ public final class MemoryStatUtil { } /** + * Parses per-process allocation sizes on the ion heap from the contents of a file under + * /sys/kernel/debug/ion/heaps in debugfs. + */ + @VisibleForTesting + static List<IonAllocations> parseProcessIonHeapSizesFromDebugfs(String contents) { + if (contents == null || contents.isEmpty()) { + return Collections.emptyList(); + } + + final Matcher m = PROCESS_ION_HEAP_SIZE_IN_BYTES.matcher(contents); + final SparseArray<IonAllocations> entries = new SparseArray<>(); + while (m.find()) { + try { + final int pid = Integer.parseInt(m.group(1)); + final long sizeInBytes = Long.parseLong(m.group(2)); + IonAllocations allocations = entries.get(pid); + if (allocations == null) { + allocations = new IonAllocations(); + entries.put(pid, allocations); + } + allocations.pid = pid; + allocations.totalSizeInBytes += sizeInBytes; + allocations.count += 1; + allocations.maxSizeInBytes = Math.max(allocations.maxSizeInBytes, sizeInBytes); + } catch (NumberFormatException e) { + Slog.e(TAG, "Failed to parse value", e); + } + } + + final List<IonAllocations> result = new ArrayList<>(entries.size()); + for (int i = 0; i < entries.size(); i++) { + result.add(entries.valueAt(i)); + } + return result; + } + + /** * Returns whether per-app memcg is available on device. */ static boolean hasMemcg() { @@ -284,13 +342,51 @@ public final class MemoryStatUtil { public long pgfault; /** Number of major page faults */ public long pgmajfault; - /** Number of bytes of anonymous and swap cache memory */ + /** For memcg stats, the anon rss + swap cache size. Otherwise total RSS. */ public long rssInBytes; - /** Number of bytes of page cache memory */ + /** Number of bytes of the anonymous RSS. Only present for non-memcg stats. */ + public long anonRssInBytes; + /** Number of bytes of page cache memory. Only present for memcg stats. */ public long cacheInBytes; /** Number of bytes of swap usage */ public long swapInBytes; /** Device time when the processes started. */ public long startTimeNanos; } + + /** Summary information about process ion allocations. */ + public static final class IonAllocations { + /** PID these allocations belong to. */ + public int pid; + /** Size of all individual allocations added together. */ + public long totalSizeInBytes; + /** Number of allocations. */ + public int count; + /** Size of the largest allocation. */ + public long maxSizeInBytes; + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + IonAllocations that = (IonAllocations) o; + return pid == that.pid && totalSizeInBytes == that.totalSizeInBytes + && count == that.count && maxSizeInBytes == that.maxSizeInBytes; + } + + @Override + public int hashCode() { + return Objects.hash(pid, totalSizeInBytes, count, maxSizeInBytes); + } + + @Override + public String toString() { + return "IonAllocations{" + + "pid=" + pid + + ", totalSizeInBytes=" + totalSizeInBytes + + ", count=" + count + + ", maxSizeInBytes=" + maxSizeInBytes + + '}'; + } + } } diff --git a/services/core/java/com/android/server/am/OomAdjuster.java b/services/core/java/com/android/server/am/OomAdjuster.java index 7abfcea306cc..bcfe71b82a6a 100644 --- a/services/core/java/com/android/server/am/OomAdjuster.java +++ b/services/core/java/com/android/server/am/OomAdjuster.java @@ -431,7 +431,7 @@ public final class OomAdjuster { for (int i = 0; i < N; i++) { ProcessRecord app = mProcessList.mLruProcesses.get(i); if (!app.killedByAm && app.thread != null && app.containsCycle == true) { - if (computeOomAdjLocked(app, ProcessList.UNKNOWN_ADJ, TOP_APP, true, now, + if (computeOomAdjLocked(app, app.getCurRawAdj(), TOP_APP, true, now, true)) { retryCycles = true; } @@ -1264,7 +1264,7 @@ public final class OomAdjuster { cr.trackProcState(procState, mAdjSeq, now); trackedProcState = true; } - } else if ((cr.flags & Context.BIND_ADJUST_BELOW_PERCEPTIBLE) != 0 + } else if ((cr.flags & Context.BIND_NOT_PERCEPTIBLE) != 0 && clientAdj < ProcessList.PERCEPTIBLE_APP_ADJ && adj > ProcessList.PERCEPTIBLE_LOW_APP_ADJ) { newAdj = ProcessList.PERCEPTIBLE_LOW_APP_ADJ; diff --git a/services/core/java/com/android/server/am/PendingIntentController.java b/services/core/java/com/android/server/am/PendingIntentController.java index a5d47386afb5..d75591cc7432 100644 --- a/services/core/java/com/android/server/am/PendingIntentController.java +++ b/services/core/java/com/android/server/am/PendingIntentController.java @@ -17,6 +17,7 @@ package com.android.server.am; import static android.content.pm.PackageManager.MATCH_DEBUG_TRIAGED_MISSING; + import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_MU; import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_MU; import static com.android.server.am.ActivityManagerDebugConfig.TAG_AM; @@ -39,6 +40,7 @@ import android.os.RemoteException; import android.os.UserHandle; import android.util.ArrayMap; import android.util.Slog; + import com.android.internal.os.IResultReceiver; import com.android.internal.util.function.pooled.PooledLambda; import com.android.server.LocalServices; @@ -242,6 +244,47 @@ public class PendingIntentController { } } + void registerIntentSenderCancelListener(IIntentSender sender, IResultReceiver receiver) { + if (!(sender instanceof PendingIntentRecord)) { + return; + } + boolean isCancelled; + synchronized (mLock) { + PendingIntentRecord pendingIntent = (PendingIntentRecord) sender; + isCancelled = pendingIntent.canceled; + if (!isCancelled) { + pendingIntent.registerCancelListenerLocked(receiver); + } + } + if (isCancelled) { + try { + receiver.send(Activity.RESULT_CANCELED, null); + } catch (RemoteException e) { + } + } + } + + void unregisterIntentSenderCancelListener(IIntentSender sender, + IResultReceiver receiver) { + if (!(sender instanceof PendingIntentRecord)) { + return; + } + synchronized (mLock) { + ((PendingIntentRecord) sender).unregisterCancelListenerLocked(receiver); + } + } + + void setPendingIntentWhitelistDuration(IIntentSender target, IBinder whitelistToken, + long duration) { + if (!(target instanceof PendingIntentRecord)) { + Slog.w(TAG, "markAsSentFromNotification(): not a PendingIntentRecord: " + target); + return; + } + synchronized (mLock) { + ((PendingIntentRecord) target).setWhitelistDurationLocked(whitelistToken, duration); + } + } + private void makeIntentSenderCanceled(PendingIntentRecord rec) { rec.canceled = true; final RemoteCallbackList<IResultReceiver> callbacks = rec.detachCancelListenersLocked(); diff --git a/services/core/java/com/android/server/am/ProcessList.java b/services/core/java/com/android/server/am/ProcessList.java index 943fe75b425a..b399971d1ad5 100644 --- a/services/core/java/com/android/server/am/ProcessList.java +++ b/services/core/java/com/android/server/am/ProcessList.java @@ -63,7 +63,6 @@ import android.os.AppZygote; import android.os.Binder; import android.os.Build; import android.os.Bundle; -import android.os.GraphicsEnvironment; import android.os.Handler; import android.os.IBinder; import android.os.Looper; @@ -185,8 +184,8 @@ public final class ProcessList { // is not entirely fatal but is generally a bad idea. static final int BACKUP_APP_ADJ = 300; - // This is a process bound by the system that's more important than services but not so - // perceptible that it affects the user immediately if killed. + // This is a process bound by the system (or other app) that's more important than services but + // not so perceptible that it affects the user immediately if killed. static final int PERCEPTIBLE_LOW_APP_ADJ = 250; // This is a process only hosting components that are perceptible to the @@ -280,7 +279,7 @@ public final class ProcessList { // can't give it a different value for every possible kind of process. private final int[] mOomAdj = new int[] { FOREGROUND_APP_ADJ, VISIBLE_APP_ADJ, PERCEPTIBLE_APP_ADJ, - BACKUP_APP_ADJ, CACHED_APP_MIN_ADJ, CACHED_APP_LMK_FIRST_ADJ + PERCEPTIBLE_LOW_APP_ADJ, CACHED_APP_MIN_ADJ, CACHED_APP_LMK_FIRST_ADJ }; // These are the low-end OOM level limits. This is appropriate for an // HVGA or smaller phone with less than 512MB. Values are in KB. @@ -705,16 +704,6 @@ public final class ProcessList { return prefix + "+" + Integer.toString(diff); } - private static boolean shouldUseSystemGraphicsDriver(Context context, Bundle coreSettings, - ApplicationInfo applicationInfo) { - final boolean shouldUseGameDriver = - GraphicsEnvironment.shouldUseGameDriver(context, coreSettings, applicationInfo); - final boolean shouldUseAngle = - GraphicsEnvironment.shouldUseAngle(context, coreSettings, - applicationInfo.packageName); - return !shouldUseGameDriver && !shouldUseAngle; - } - public static String makeOomAdjString(int setAdj, boolean compact) { if (setAdj >= ProcessList.CACHED_APP_MIN_ADJ) { return buildOomTag("cch", "cch", " ", setAdj, @@ -1811,8 +1800,6 @@ public final class ProcessList { String seInfo, String requiredAbi, String instructionSet, String invokeWith, long startTime) { try { - final boolean useSystemGraphicsDriver = shouldUseSystemGraphicsDriver(mService.mContext, - mService.mCoreSettingsObserver.getCoreSettingsLocked(), app.info); Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "Start proc: " + app.processName); checkSlow(startTime, "startProcess: asking zygote to start proc"); @@ -1822,7 +1809,6 @@ public final class ProcessList { app.processName, uid, uid, gids, runtimeFlags, mountExternal, app.info.targetSdkVersion, seInfo, requiredAbi, instructionSet, app.info.dataDir, null, app.info.packageName, - useSystemGraphicsDriver, new String[] {PROC_START_SEQ_IDENT + app.startSeq}); } else if (hostingRecord.usesAppZygote()) { final AppZygote appZygote = createAppZygoteForProcessIfNeeded(app); @@ -1831,14 +1817,13 @@ public final class ProcessList { app.processName, uid, uid, gids, runtimeFlags, mountExternal, app.info.targetSdkVersion, seInfo, requiredAbi, instructionSet, app.info.dataDir, null, app.info.packageName, - /*useUsapPool=*/ false, useSystemGraphicsDriver, + /*useUsapPool=*/ false, new String[] {PROC_START_SEQ_IDENT + app.startSeq}); } else { startResult = Process.start(entryPoint, app.processName, uid, uid, gids, runtimeFlags, mountExternal, app.info.targetSdkVersion, seInfo, requiredAbi, instructionSet, app.info.dataDir, invokeWith, app.info.packageName, - useSystemGraphicsDriver, new String[] {PROC_START_SEQ_IDENT + app.startSeq}); } checkSlow(startTime, "startProcess: returned from zygote!"); diff --git a/services/core/java/com/android/server/am/UserController.java b/services/core/java/com/android/server/am/UserController.java index 2399d0525cc4..b311233694ce 100644 --- a/services/core/java/com/android/server/am/UserController.java +++ b/services/core/java/com/android/server/am/UserController.java @@ -559,7 +559,7 @@ class UserController implements Handler.Callback { // Spin up app widgets prior to boot-complete, so they can be ready promptly mInjector.startUserWidgets(userId); - Slog.i(TAG, "Sending BOOT_COMPLETE user #" + userId); + Slog.i(TAG, "Posting BOOT_COMPLETED user #" + userId); // Do not report secondary users, runtime restarts or first boot/upgrade if (userId == UserHandle.USER_SYSTEM && !mInjector.isRuntimeRestarted() && !mInjector.isFirstBootOrUpgrade()) { @@ -572,18 +572,26 @@ class UserController implements Handler.Callback { bootIntent.addFlags(Intent.FLAG_RECEIVER_NO_ABORT | Intent.FLAG_RECEIVER_INCLUDE_BACKGROUND | Intent.FLAG_RECEIVER_OFFLOAD); - mInjector.broadcastIntent(bootIntent, null, new IIntentReceiver.Stub() { - @Override - public void performReceive(Intent intent, int resultCode, String data, - Bundle extras, boolean ordered, boolean sticky, int sendingUser) - throws RemoteException { - Slog.i(UserController.TAG, "Finished processing BOOT_COMPLETED for u" + userId); - mBootCompleted = true; - } - }, 0, null, null, - new String[]{android.Manifest.permission.RECEIVE_BOOT_COMPLETED}, - AppOpsManager.OP_NONE, null, true, false, MY_PID, SYSTEM_UID, - Binder.getCallingUid(), Binder.getCallingPid(), userId); + // Widget broadcasts are outbound via FgThread, so to guarantee sequencing + // we also send the boot_completed broadcast from that thread. + final int callingUid = Binder.getCallingUid(); + final int callingPid = Binder.getCallingPid(); + FgThread.getHandler().post(() -> { + mInjector.broadcastIntent(bootIntent, null, + new IIntentReceiver.Stub() { + @Override + public void performReceive(Intent intent, int resultCode, String data, + Bundle extras, boolean ordered, boolean sticky, int sendingUser) + throws RemoteException { + Slog.i(UserController.TAG, "Finished processing BOOT_COMPLETED for u" + + userId); + mBootCompleted = true; + } + }, 0, null, null, + new String[]{android.Manifest.permission.RECEIVE_BOOT_COMPLETED}, + AppOpsManager.OP_NONE, null, true, false, MY_PID, SYSTEM_UID, + callingUid, callingPid, userId); + }); } int restartUser(final int userId, final boolean foreground) { diff --git a/services/core/java/com/android/server/appop/AppOpsService.java b/services/core/java/com/android/server/appop/AppOpsService.java index 0a7684553c08..7569363a7134 100644 --- a/services/core/java/com/android/server/appop/AppOpsService.java +++ b/services/core/java/com/android/server/appop/AppOpsService.java @@ -201,7 +201,7 @@ public class AppOpsService extends IAppOpsService.Stub { @VisibleForTesting final SparseArray<UidState> mUidStates = new SparseArray<>(); - private final HistoricalRegistry mHistoricalRegistry = new HistoricalRegistry(this); + final HistoricalRegistry mHistoricalRegistry = new HistoricalRegistry(this); long mLastRealtime; diff --git a/services/core/java/com/android/server/appop/HistoricalRegistry.java b/services/core/java/com/android/server/appop/HistoricalRegistry.java index 69a1c9f584cb..35fbfe1d4044 100644 --- a/services/core/java/com/android/server/appop/HistoricalRegistry.java +++ b/services/core/java/com/android/server/appop/HistoricalRegistry.java @@ -108,6 +108,12 @@ import java.util.concurrent.TimeUnit; * must be called with the mInMemoryLock, xxxDMLocked suffix means the method * must be called with the mOnDiskLock and mInMemoryLock locks acquired in that * exact order. + * <p> + * INITIALIZATION: We can initialize persistence only after the system is ready + * as we need to check the optional configuration override from the settings + * database which is not initialized at the time the app ops service is created. + * This means that all entry points that touch persistence should be short + * circuited via isPersistenceInitialized() check. */ // TODO (bug:122218838): Make sure we handle start of epoch time // TODO (bug:122218838): Validate changed time is handled correctly @@ -144,9 +150,11 @@ final class HistoricalRegistry { /** * Whether history is enabled. + * + * <p>The feature is permanently disabled in Android Q */ @GuardedBy("mInMemoryLock") - private int mMode = AppOpsManager.HISTORICAL_MODE_ENABLED_ACTIVE; + private final int mMode = AppOpsManager.HISTORICAL_MODE_DISABLED; /** * This granularity has been chosen to allow clean delineation for intervals @@ -177,14 +185,33 @@ final class HistoricalRegistry { // Object managing persistence (read/write) @GuardedBy("mOnDiskLock") - private Persistence mPersistence = new Persistence(mBaseSnapshotInterval, - mIntervalCompressionMultiplier); + private Persistence mPersistence; HistoricalRegistry(@NonNull Object lock) { mInMemoryLock = lock; - if (mMode != AppOpsManager.HISTORICAL_MODE_DISABLED) { - synchronized (mOnDiskLock) { - synchronized (mInMemoryLock) { + } + + void systemReady(@NonNull ContentResolver resolver) { + final Uri uri = Settings.Global.getUriFor(Settings.Global.APPOP_HISTORY_PARAMETERS); + resolver.registerContentObserver(uri, false, new ContentObserver( + FgThread.getHandler()) { + @Override + public void onChange(boolean selfChange) { + updateParametersFromSetting(resolver); + } + }); + + updateParametersFromSetting(resolver); + + synchronized (mOnDiskLock) { + synchronized (mInMemoryLock) { + if (mMode != AppOpsManager.HISTORICAL_MODE_DISABLED) { + // Can be uninitialized if there is no config in the settings table. + if (!isPersistenceInitializedMLocked()) { + mPersistence = new Persistence(mBaseSnapshotInterval, + mIntervalCompressionMultiplier); + } + // When starting always adjust history to now. final long lastPersistTimeMills = mPersistence.getLastPersistTimeMillisDLocked(); @@ -197,16 +224,8 @@ final class HistoricalRegistry { } } - void systemReady(@NonNull ContentResolver resolver) { - updateParametersFromSetting(resolver); - final Uri uri = Settings.Global.getUriFor(Settings.Global.APPOP_HISTORY_PARAMETERS); - resolver.registerContentObserver(uri, false, new ContentObserver( - FgThread.getHandler()) { - @Override - public void onChange(boolean selfChange) { - updateParametersFromSetting(resolver); - } - }); + private boolean isPersistenceInitializedMLocked() { + return mPersistence != null; } private void updateParametersFromSetting(@NonNull ContentResolver resolver) { @@ -274,6 +293,11 @@ final class HistoricalRegistry { makeRelativeToEpochStart(currentOps, nowMillis); currentOps.accept(visitor); + if(isPersistenceInitializedMLocked()) { + Slog.e(LOG_TAG, "Interaction before persistence initialized"); + return; + } + final List<HistoricalOps> ops = mPersistence.readHistoryDLocked(); if (ops != null) { // TODO (bug:122218838): Make sure this is properly dumped @@ -302,12 +326,21 @@ final class HistoricalRegistry { void getHistoricalOpsFromDiskRaw(int uid, @NonNull String packageName, @Nullable String[] opNames, long beginTimeMillis, long endTimeMillis, @OpFlags int flags, @NonNull RemoteCallback callback) { - final HistoricalOps result = new HistoricalOps(beginTimeMillis, endTimeMillis); - mPersistence.collectHistoricalOpsDLocked(result, uid, packageName, opNames, - beginTimeMillis, endTimeMillis, flags); - final Bundle payload = new Bundle(); - payload.putParcelable(AppOpsManager.KEY_HISTORICAL_OPS, result); - callback.sendResult(payload); + synchronized (mOnDiskLock) { + synchronized (mInMemoryLock) { + if (!isPersistenceInitializedMLocked()) { + Slog.e(LOG_TAG, "Interaction before persistence initialized"); + callback.sendResult(new Bundle()); + return; + } + final HistoricalOps result = new HistoricalOps(beginTimeMillis, endTimeMillis); + mPersistence.collectHistoricalOpsDLocked(result, uid, packageName, opNames, + beginTimeMillis, endTimeMillis, flags); + final Bundle payload = new Bundle(); + payload.putParcelable(AppOpsManager.KEY_HISTORICAL_OPS, result); + callback.sendResult(payload); + } + } } void getHistoricalOps(int uid, @NonNull String packageName, @@ -331,6 +364,12 @@ final class HistoricalRegistry { boolean collectOpsFromDisk; synchronized (mInMemoryLock) { + if (!isPersistenceInitializedMLocked()) { + Slog.e(LOG_TAG, "Interaction before persistence initialized"); + callback.sendResult(new Bundle()); + return; + } + currentOps = getUpdatedPendingHistoricalOpsMLocked(currentTimeMillis); if (!(inMemoryAdjBeginTimeMillis >= currentOps.getEndTimeMillis() || inMemoryAdjEndTimeMillis <= currentOps.getBeginTimeMillis())) { @@ -374,6 +413,10 @@ final class HistoricalRegistry { @UidState int uidState, @OpFlags int flags) { synchronized (mInMemoryLock) { if (mMode == AppOpsManager.HISTORICAL_MODE_ENABLED_ACTIVE) { + if (!isPersistenceInitializedMLocked()) { + Slog.e(LOG_TAG, "Interaction before persistence initialized"); + return; + } getUpdatedPendingHistoricalOpsMLocked(System.currentTimeMillis()) .increaseAccessCount(op, uid, packageName, uidState, flags, 1); } @@ -384,6 +427,10 @@ final class HistoricalRegistry { @UidState int uidState, @OpFlags int flags) { synchronized (mInMemoryLock) { if (mMode == AppOpsManager.HISTORICAL_MODE_ENABLED_ACTIVE) { + if (!isPersistenceInitializedMLocked()) { + Slog.e(LOG_TAG, "Interaction before persistence initialized"); + return; + } getUpdatedPendingHistoricalOpsMLocked(System.currentTimeMillis()) .increaseRejectCount(op, uid, packageName, uidState, flags, 1); } @@ -394,6 +441,10 @@ final class HistoricalRegistry { @UidState int uidState, @OpFlags int flags, long increment) { synchronized (mInMemoryLock) { if (mMode == AppOpsManager.HISTORICAL_MODE_ENABLED_ACTIVE) { + if (!isPersistenceInitializedMLocked()) { + Slog.e(LOG_TAG, "Interaction before persistence initialized"); + return; + } getUpdatedPendingHistoricalOpsMLocked(System.currentTimeMillis()) .increaseAccessDuration(op, uid, packageName, uidState, flags, increment); } @@ -402,8 +453,11 @@ final class HistoricalRegistry { void setHistoryParameters(@HistoricalMode int mode, long baseSnapshotInterval, long intervalCompressionMultiplier) { + /* synchronized (mOnDiskLock) { synchronized (mInMemoryLock) { + // NOTE: We allow this call if persistence is not initialized as + // it is a part of the persistence initialization process. boolean resampleHistory = false; Slog.i(LOG_TAG, "New history parameters: mode:" + AppOpsManager.historicalModeToString(mMode) + " baseSnapshotInterval:" @@ -412,7 +466,7 @@ final class HistoricalRegistry { if (mMode != mode) { mMode = mode; if (mMode == AppOpsManager.HISTORICAL_MODE_DISABLED) { - clearHistoryOnDiskLocked(); + clearHistoryOnDiskDLocked(); } } if (mBaseSnapshotInterval != baseSnapshotInterval) { @@ -428,11 +482,16 @@ final class HistoricalRegistry { } } } + */ } void offsetHistory(long offsetMillis) { synchronized (mOnDiskLock) { synchronized (mInMemoryLock) { + if (!isPersistenceInitializedMLocked()) { + Slog.e(LOG_TAG, "Interaction before persistence initialized"); + return; + } final List<HistoricalOps> history = mPersistence.readHistoryDLocked(); clearHistory(); if (history != null) { @@ -453,6 +512,10 @@ final class HistoricalRegistry { void addHistoricalOps(HistoricalOps ops) { final List<HistoricalOps> pendingWrites; synchronized (mInMemoryLock) { + if (!isPersistenceInitializedMLocked()) { + Slog.e(LOG_TAG, "Interaction before persistence initialized"); + return; + } // The history files start from mBaseSnapshotInterval - take this into account. ops.offsetBeginAndEndTime(mBaseSnapshotInterval); mPendingWrites.offerFirst(ops); @@ -468,6 +531,10 @@ final class HistoricalRegistry { } void resetHistoryParameters() { + if (!isPersistenceInitializedMLocked()) { + Slog.e(LOG_TAG, "Interaction before persistence initialized"); + return; + } setHistoryParameters(DEFAULT_MODE, DEFAULT_SNAPSHOT_INTERVAL_MILLIS, DEFAULT_COMPRESSION_STEP); } @@ -475,6 +542,10 @@ final class HistoricalRegistry { void clearHistory(int uid, String packageName) { synchronized (mOnDiskLock) { synchronized (mInMemoryLock) { + if (!isPersistenceInitializedMLocked()) { + Slog.e(LOG_TAG, "Interaction before persistence initialized"); + return; + } if (mMode != AppOpsManager.HISTORICAL_MODE_ENABLED_ACTIVE) { return; } @@ -493,18 +564,24 @@ final class HistoricalRegistry { void clearHistory() { synchronized (mOnDiskLock) { - clearHistoryOnDiskLocked(); + synchronized (mInMemoryLock) { + if (!isPersistenceInitializedMLocked()) { + Slog.e(LOG_TAG, "Interaction before persistence initialized"); + return; + } + clearHistoryOnDiskDLocked(); + } } } - private void clearHistoryOnDiskLocked() { + private void clearHistoryOnDiskDLocked() { BackgroundThread.getHandler().removeMessages(MSG_WRITE_PENDING_HISTORY); synchronized (mInMemoryLock) { mCurrentHistoricalOps = null; mNextPersistDueTimeMillis = System.currentTimeMillis(); mPendingWrites.clear(); } - mPersistence.clearHistoryDLocked(); + Persistence.clearHistoryDLocked(); } private @NonNull HistoricalOps getUpdatedPendingHistoricalOpsMLocked(long now) { @@ -639,7 +716,7 @@ final class HistoricalRegistry { mIntervalCompressionMultiplier = intervalCompressionMultiplier; } - private final AtomicDirectory mHistoricalAppOpsDir = new AtomicDirectory( + private static final AtomicDirectory sHistoricalAppOpsDir = new AtomicDirectory( new File(new File(Environment.getDataSystemDirectory(), "appops"), "history")); private File generateFile(@NonNull File baseDir, int depth) { @@ -663,8 +740,8 @@ final class HistoricalRegistry { persistHistoricalOpsDLocked(historicalOps); } - void clearHistoryDLocked() { - mHistoricalAppOpsDir.delete(); + static void clearHistoryDLocked() { + sHistoricalAppOpsDir.delete(); } void persistHistoricalOpsDLocked(@NonNull List<HistoricalOps> ops) { @@ -673,8 +750,8 @@ final class HistoricalRegistry { enforceOpsWellFormed(ops); } try { - final File newBaseDir = mHistoricalAppOpsDir.startWrite(); - final File oldBaseDir = mHistoricalAppOpsDir.getBackupDirectory(); + final File newBaseDir = sHistoricalAppOpsDir.startWrite(); + final File oldBaseDir = sHistoricalAppOpsDir.getBackupDirectory(); final HistoricalFilesInvariant filesInvariant; if (DEBUG) { filesInvariant = new HistoricalFilesInvariant(); @@ -686,10 +763,10 @@ final class HistoricalRegistry { if (DEBUG) { filesInvariant.stopTracking(newBaseDir); } - mHistoricalAppOpsDir.finishWrite(); + sHistoricalAppOpsDir.finishWrite(); } catch (Throwable t) { wtf("Failed to write historical app ops, restoring backup", t, null); - mHistoricalAppOpsDir.failWrite(); + sHistoricalAppOpsDir.failWrite(); } } @@ -715,22 +792,36 @@ final class HistoricalRegistry { long getLastPersistTimeMillisDLocked() { File baseDir = null; try { - baseDir = mHistoricalAppOpsDir.startRead(); + baseDir = sHistoricalAppOpsDir.startRead(); final File[] files = baseDir.listFiles(); if (files != null && files.length > 0) { - final Set<File> historyFiles = new ArraySet<>(); - Collections.addAll(historyFiles, files); - for (int i = 0;; i++) { - final File file = generateFile(baseDir, i); - if (historyFiles.contains(file)) { - return file.lastModified(); + File shortestFile = null; + for (File candidate : files) { + final String candidateName = candidate.getName(); + if (!candidateName.endsWith(HISTORY_FILE_SUFFIX)) { + continue; + } + if (shortestFile == null) { + shortestFile = candidate; + } else if (candidateName.length() < shortestFile.getName().length()) { + shortestFile = candidate; } } + if (shortestFile == null) { + return 0; + } + final String shortestNameNoExtension = shortestFile.getName() + .replace(HISTORY_FILE_SUFFIX, ""); + try { + return Long.parseLong(shortestNameNoExtension); + } catch (NumberFormatException e) { + return 0; + } } - mHistoricalAppOpsDir.finishRead(); + sHistoricalAppOpsDir.finishRead(); } catch (Throwable e) { wtf("Error reading historical app ops. Deleting history.", e, baseDir); - mHistoricalAppOpsDir.delete(); + sHistoricalAppOpsDir.delete(); } return 0; } @@ -755,7 +846,7 @@ final class HistoricalRegistry { long filterBeginTimeMillis, long filterEndTimeMillis, @OpFlags int filterFlags) { File baseDir = null; try { - baseDir = mHistoricalAppOpsDir.startRead(); + baseDir = sHistoricalAppOpsDir.startRead(); final HistoricalFilesInvariant filesInvariant; if (DEBUG) { filesInvariant = new HistoricalFilesInvariant(); @@ -770,11 +861,11 @@ final class HistoricalRegistry { if (DEBUG) { filesInvariant.stopTracking(baseDir); } - mHistoricalAppOpsDir.finishRead(); + sHistoricalAppOpsDir.finishRead(); return ops; } catch (Throwable t) { wtf("Error reading historical app ops. Deleting history.", t, baseDir); - mHistoricalAppOpsDir.delete(); + sHistoricalAppOpsDir.delete(); } return null; } @@ -1241,7 +1332,7 @@ final class HistoricalRegistry { private void writeHistoricalOpsDLocked(@Nullable List<HistoricalOps> allOps, long intervalOverflowMillis, @NonNull File file) throws IOException { - final FileOutputStream output = mHistoricalAppOpsDir.openWrite(file); + final FileOutputStream output = sHistoricalAppOpsDir.openWrite(file); try { final XmlSerializer serializer = Xml.newSerializer(); serializer.setOutput(output, StandardCharsets.UTF_8.name()); @@ -1263,9 +1354,9 @@ final class HistoricalRegistry { } serializer.endTag(null, TAG_HISTORY); serializer.endDocument(); - mHistoricalAppOpsDir.closeWrite(output); + sHistoricalAppOpsDir.closeWrite(output); } catch (IOException e) { - mHistoricalAppOpsDir.failWrite(output); + sHistoricalAppOpsDir.failWrite(output); throw e; } } diff --git a/services/core/java/com/android/server/audio/AudioService.java b/services/core/java/com/android/server/audio/AudioService.java index e43c548eb66a..4b08db6be047 100644 --- a/services/core/java/com/android/server/audio/AudioService.java +++ b/services/core/java/com/android/server/audio/AudioService.java @@ -1016,6 +1016,7 @@ public class AudioService extends IAudioService.Stub sendEncodedSurroundMode(mContentResolver, "onAudioServerDied"); sendEnabledSurroundFormats(mContentResolver, true); updateAssistantUId(true); + updateRttEanbled(mContentResolver); } synchronized (mAccessibilityServiceUidsLock) { AudioSystem.setA11yServicesUids(mAccessibilityServiceUids); @@ -1480,6 +1481,12 @@ public class AudioService extends IAudioService.Stub } } + private void updateRttEanbled(ContentResolver cr) { + final boolean rttEnabled = Settings.Secure.getIntForUser(cr, + Settings.Secure.RTT_CALLING_MODE, 0, UserHandle.USER_CURRENT) != 0; + AudioSystem.setRttEnabled(rttEnabled); + } + private void readPersistedSettings() { final ContentResolver cr = mContentResolver; @@ -1524,6 +1531,7 @@ public class AudioService extends IAudioService.Stub sendEncodedSurroundMode(cr, "readPersistedSettings"); sendEnabledSurroundFormats(cr, true); updateAssistantUId(true); + updateRttEanbled(cr); } mMuteAffectedStreams = System.getIntForUser(cr, @@ -2044,8 +2052,11 @@ public class AudioService extends IAudioService.Stub setRingerMode(getNewRingerMode(stream, index, flags), TAG + ".onSetStreamVolume", false /*external*/); } - // setting non-zero volume for a muted stream unmutes the stream and vice versa - mStreamStates[stream].mute(index == 0); + // setting non-zero volume for a muted stream unmutes the stream and vice versa, + // except for BT SCO stream where only explicit mute is allowed to comply to BT requirements + if (streamType != AudioSystem.STREAM_BLUETOOTH_SCO) { + mStreamStates[stream].mute(index == 0); + } } private void enforceModifyAudioRoutingPermission() { @@ -2123,14 +2134,11 @@ public class AudioService extends IAudioService.Stub + " CHANGE_ACCESSIBILITY_VOLUME callingPackage=" + callingPackage); return; } - if ((streamType == AudioManager.STREAM_VOICE_CALL || - streamType == AudioManager.STREAM_BLUETOOTH_SCO) && - (index == 0) && - (mContext.checkCallingOrSelfPermission( - android.Manifest.permission.MODIFY_PHONE_STATE) + if ((streamType == AudioManager.STREAM_VOICE_CALL) && (index == 0) + && (mContext.checkCallingOrSelfPermission( + android.Manifest.permission.MODIFY_PHONE_STATE) != PackageManager.PERMISSION_GRANTED)) { - Log.w(TAG, "Trying to call setStreamVolume() for STREAM_VOICE_CALL or" - + " STREAM_BLUETOOTH_SCO and index 0 without" + Log.w(TAG, "Trying to call setStreamVolume() for STREAM_VOICE_CALL and index 0 without" + " MODIFY_PHONE_STATE callingPackage=" + callingPackage); return; } @@ -4633,6 +4641,16 @@ public class AudioService extends IAudioService.Stub return index; } + private void setStreamVolumeIndex(int index, int device) { + // Only set audio policy BT SCO stream volume to 0 when the stream is actually muted. + // This allows RX path muting by the audio HAL only when explicitly muted but not when + // index is just set to 0 to repect BT requirements + if (mStreamType == AudioSystem.STREAM_BLUETOOTH_SCO && index == 0 && !mIsMuted) { + index = 1; + } + AudioSystem.setStreamVolumeIndexAS(mStreamType, index, device); + } + // must be called while synchronized VolumeStreamState.class /*package*/ void applyDeviceVolume_syncVSS(int device, boolean isAvrcpAbsVolSupported) { int index; @@ -4647,7 +4665,7 @@ public class AudioService extends IAudioService.Stub } else { index = (getIndex(device) + 5)/10; } - AudioSystem.setStreamVolumeIndexAS(mStreamType, index, device); + setStreamVolumeIndex(index, device); } public void applyAllVolumes() { @@ -4670,7 +4688,7 @@ public class AudioService extends IAudioService.Stub } else { index = (mIndexMap.valueAt(i) + 5)/10; } - AudioSystem.setStreamVolumeIndexAS(mStreamType, index, device); + setStreamVolumeIndex(index, device); } } // apply default volume last: by convention , default device volume will be used @@ -4680,8 +4698,7 @@ public class AudioService extends IAudioService.Stub } else { index = (getIndex(AudioSystem.DEVICE_OUT_DEFAULT) + 5)/10; } - AudioSystem.setStreamVolumeIndexAS( - mStreamType, index, AudioSystem.DEVICE_OUT_DEFAULT); + setStreamVolumeIndex(index, AudioSystem.DEVICE_OUT_DEFAULT); } } @@ -5502,6 +5519,8 @@ public class AudioService extends IAudioService.Stub mContentResolver.registerContentObserver(Settings.Secure.getUriFor( Settings.Secure.VOICE_INTERACTION_SERVICE), false, this); + mContentResolver.registerContentObserver(Settings.Secure.getUriFor( + Settings.Secure.RTT_CALLING_MODE), false, this); } @Override @@ -5525,6 +5544,7 @@ public class AudioService extends IAudioService.Stub updateEncodedSurroundOutput(); sendEnabledSurroundFormats(mContentResolver, mSurroundModeChanged); updateAssistantUId(false); + updateRttEanbled(mContentResolver); } } diff --git a/services/core/java/com/android/server/biometrics/ClientMonitor.java b/services/core/java/com/android/server/biometrics/ClientMonitor.java index 421b3f5ae106..942e0501d88d 100644 --- a/services/core/java/com/android/server/biometrics/ClientMonitor.java +++ b/services/core/java/com/android/server/biometrics/ClientMonitor.java @@ -42,12 +42,7 @@ public abstract class ClientMonitor extends LoggableMonitor implements IBinder.D private static final AudioAttributes FINGERPRINT_SONFICATION_ATTRIBUTES = new AudioAttributes.Builder() .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION) - // Temporary fix for b/123870990. No time in this release to - // introduce a new vibration type, but we need to distinguish these vibrations - // from other haptic feedback vibrations. Fortunately, Alarm vibrations have - // exactly the same behavior as we need - // TODO: refactor within the scope of b/132170758 - .setUsage(AudioAttributes.USAGE_ALARM) + .setUsage(AudioAttributes.USAGE_ASSISTANCE_SONIFICATION) .build(); private final Context mContext; diff --git a/services/core/java/com/android/server/connectivity/KeepaliveTracker.java b/services/core/java/com/android/server/connectivity/KeepaliveTracker.java index 4b2e21d943ce..cb6424540f71 100644 --- a/services/core/java/com/android/server/connectivity/KeepaliveTracker.java +++ b/services/core/java/com/android/server/connectivity/KeepaliveTracker.java @@ -564,7 +564,7 @@ public class KeepaliveTracker { if (KeepaliveInfo.STARTING == ki.mStartedState) { if (SUCCESS == reason) { // Keepalive successfully started. - if (DBG) Log.d(TAG, "Started keepalive " + slot + " on " + nai.name()); + Log.d(TAG, "Started keepalive " + slot + " on " + nai.name()); ki.mStartedState = KeepaliveInfo.STARTED; try { ki.mCallback.onStarted(slot); diff --git a/services/core/java/com/android/server/connectivity/NetworkAgentInfo.java b/services/core/java/com/android/server/connectivity/NetworkAgentInfo.java index 864a793b8f40..5b043799f848 100644 --- a/services/core/java/com/android/server/connectivity/NetworkAgentInfo.java +++ b/services/core/java/com/android/server/connectivity/NetworkAgentInfo.java @@ -155,9 +155,9 @@ public class NetworkAgentInfo implements Comparable<NetworkAgentInfo> { // Whether a captive portal was found during the last network validation attempt. public boolean lastCaptivePortalDetected; - // Indicates the user was notified of a successful captive portal login since a portal was - // last detected. - public boolean captivePortalLoginNotified; + // Indicates the captive portal app was opened to show a login UI to the user, but the network + // has not validated yet. + public volatile boolean captivePortalValidationPending; // Set to true when partial connectivity was detected. public boolean partialConnectivity; @@ -629,7 +629,7 @@ public class NetworkAgentInfo implements Comparable<NetworkAgentInfo> { + "acceptUnvalidated{" + networkMisc.acceptUnvalidated + "} " + "everCaptivePortalDetected{" + everCaptivePortalDetected + "} " + "lastCaptivePortalDetected{" + lastCaptivePortalDetected + "} " - + "captivePortalLoginNotified{" + captivePortalLoginNotified + "} " + + "captivePortalValidationPending{" + captivePortalValidationPending + "} " + "partialConnectivity{" + partialConnectivity + "} " + "acceptPartialConnectivity{" + networkMisc.acceptPartialConnectivity + "} " + "clat{" + clatd + "} " diff --git a/services/core/java/com/android/server/connectivity/NetworkNotificationManager.java b/services/core/java/com/android/server/connectivity/NetworkNotificationManager.java index f6735d983466..077c4057a3a0 100644 --- a/services/core/java/com/android/server/connectivity/NetworkNotificationManager.java +++ b/services/core/java/com/android/server/connectivity/NetworkNotificationManager.java @@ -232,6 +232,11 @@ public class NetworkNotificationManager { title = r.getString(R.string.network_switch_metered, toTransport); details = r.getString(R.string.network_switch_metered_detail, toTransport, fromTransport); + } else if (notifyType == NotificationType.NO_INTERNET + || notifyType == NotificationType.PARTIAL_CONNECTIVITY) { + // NO_INTERNET and PARTIAL_CONNECTIVITY notification for non-WiFi networks + // are sent, but they are not implemented yet. + return; } else { Slog.wtf(TAG, "Unknown notification type " + notifyType + " on network transport " + getTransportName(transportType)); diff --git a/services/core/java/com/android/server/display/AutomaticBrightnessController.java b/services/core/java/com/android/server/display/AutomaticBrightnessController.java index 6d7dff5736fa..31632dc007a5 100644 --- a/services/core/java/com/android/server/display/AutomaticBrightnessController.java +++ b/services/core/java/com/android/server/display/AutomaticBrightnessController.java @@ -322,7 +322,7 @@ class AutomaticBrightnessController { } changed |= setLightSensorEnabled(enable && !dozing); if (changed) { - updateAutoBrightness(false /*sendUpdate*/); + updateAutoBrightness(false /*sendUpdate*/, userInitiatedChange); } } @@ -667,7 +667,7 @@ class AutomaticBrightnessController { "mAmbientLightRingBuffer=" + mAmbientLightRingBuffer + ", " + "mAmbientLux=" + mAmbientLux); } - updateAutoBrightness(true); + updateAutoBrightness(true /* sendUpdate */, false /* isManuallySet */); } long nextBrightenTransition = nextAmbientLightBrighteningTransition(time); @@ -697,7 +697,7 @@ class AutomaticBrightnessController { + "mAmbientLightRingBuffer=" + mAmbientLightRingBuffer + ", " + "mAmbientLux=" + mAmbientLux); } - updateAutoBrightness(true); + updateAutoBrightness(true /* sendUpdate */, false /* isManuallySet */); nextBrightenTransition = nextAmbientLightBrighteningTransition(time); nextDarkenTransition = nextAmbientLightDarkeningTransition(time); } @@ -717,7 +717,7 @@ class AutomaticBrightnessController { mHandler.sendEmptyMessageAtTime(MSG_UPDATE_AMBIENT_LUX, nextTransitionTime); } - private void updateAutoBrightness(boolean sendUpdate) { + private void updateAutoBrightness(boolean sendUpdate, boolean isManuallySet) { if (!mAmbientLuxValid) { return; } @@ -732,6 +732,7 @@ class AutomaticBrightnessController { // in which case we ignore the new screen brightness if it doesn't differ enough from the // previous one. if (mScreenAutoBrightness != -1 + && !isManuallySet && newScreenAutoBrightness > mScreenDarkeningThreshold && newScreenAutoBrightness < mScreenBrighteningThreshold) { if (mLoggingEnabled) { @@ -879,7 +880,7 @@ class AutomaticBrightnessController { mPendingForegroundAppPackageName = null; mForegroundAppCategory = mPendingForegroundAppCategory; mPendingForegroundAppCategory = ApplicationInfo.CATEGORY_UNDEFINED; - updateAutoBrightness(true /* sendUpdate */); + updateAutoBrightness(true /* sendUpdate */, false /* isManuallySet */); } private final class AutomaticBrightnessHandler extends Handler { diff --git a/services/core/java/com/android/server/gpu/GpuService.java b/services/core/java/com/android/server/gpu/GpuService.java index d4396534d067..955f17781540 100644 --- a/services/core/java/com/android/server/gpu/GpuService.java +++ b/services/core/java/com/android/server/gpu/GpuService.java @@ -64,7 +64,6 @@ public class GpuService extends SystemService { private static final String PROPERTY_GFX_DRIVER = "ro.gfx.driver.0"; private static final String GAME_DRIVER_WHITELIST_FILENAME = "whitelist.txt"; - private static final String GAME_DRIVER_SPHAL_LIBRARIES_FILENAME = "sphal_libraries.txt"; private static final int BASE64_FLAGS = Base64.NO_PADDING | Base64.NO_WRAP; private final Context mContext; @@ -230,9 +229,6 @@ public class GpuService extends SystemService { // Reset the whitelist. Settings.Global.putString(mContentResolver, Settings.Global.GAME_DRIVER_WHITELIST, ""); - // Reset the sphal libraries - Settings.Global.putString(mContentResolver, - Settings.Global.GAME_DRIVER_SPHAL_LIBRARIES, ""); mGameDriverVersionCode = driverInfo.longVersionCode; try { @@ -241,10 +237,6 @@ public class GpuService extends SystemService { assetToSettingsGlobal(mContext, driverContext, GAME_DRIVER_WHITELIST_FILENAME, Settings.Global.GAME_DRIVER_WHITELIST, ","); - - assetToSettingsGlobal(mContext, driverContext, GAME_DRIVER_SPHAL_LIBRARIES_FILENAME, - Settings.Global.GAME_DRIVER_SPHAL_LIBRARIES, ":"); - } catch (PackageManager.NameNotFoundException e) { if (DEBUG) { Slog.w(TAG, "driver package '" + mDriverPackageName + "' not installed"); diff --git a/services/core/java/com/android/server/incident/PendingReports.java b/services/core/java/com/android/server/incident/PendingReports.java index c45a904ad8b8..9fcbab71519d 100644 --- a/services/core/java/com/android/server/incident/PendingReports.java +++ b/services/core/java/com/android/server/incident/PendingReports.java @@ -17,6 +17,7 @@ package com.android.server.incident; import android.app.AppOpsManager; +import android.app.BroadcastOptions; import android.content.ComponentName; import android.content.Context; import android.content.Intent; @@ -358,10 +359,12 @@ class PendingReports { private void sendBroadcast(ComponentName receiver, int primaryUser) { final Intent intent = new Intent(Intent.ACTION_PENDING_INCIDENT_REPORTS_CHANGED); intent.setComponent(receiver); + final BroadcastOptions options = BroadcastOptions.makeBasic(); + options.setBackgroundActivityStartsAllowed(true); // Send it to the primary user. mContext.sendBroadcastAsUser(intent, UserHandle.getUserHandleForUid(primaryUser), - android.Manifest.permission.APPROVE_INCIDENT_REPORTS); + android.Manifest.permission.APPROVE_INCIDENT_REPORTS, options.toBundle()); } /** diff --git a/services/core/java/com/android/server/job/JobServiceContext.java b/services/core/java/com/android/server/job/JobServiceContext.java index 7689bd26a193..7da128f9d3ec 100644 --- a/services/core/java/com/android/server/job/JobServiceContext.java +++ b/services/core/java/com/android/server/job/JobServiceContext.java @@ -247,10 +247,20 @@ public final class JobServiceContext implements ServiceConnection { mVerb = VERB_BINDING; scheduleOpTimeOutLocked(); final Intent intent = new Intent().setComponent(job.getServiceComponent()); - boolean binding = mContext.bindServiceAsUser(intent, this, - Context.BIND_AUTO_CREATE | Context.BIND_NOT_FOREGROUND - | Context.BIND_NOT_VISIBLE | Context.BIND_ADJUST_BELOW_PERCEPTIBLE, - new UserHandle(job.getUserId())); + boolean binding = false; + try { + binding = mContext.bindServiceAsUser(intent, this, + Context.BIND_AUTO_CREATE | Context.BIND_NOT_FOREGROUND + | Context.BIND_NOT_PERCEPTIBLE, + new UserHandle(job.getUserId())); + } catch (SecurityException e) { + // Some permission policy, for example INTERACT_ACROSS_USERS and + // android:singleUser, can result in a SecurityException being thrown from + // bindServiceAsUser(). If this happens, catch it and fail gracefully. + Slog.w(TAG, "Job service " + job.getServiceComponent().getShortClassName() + + " cannot be executed: " + e.getMessage()); + binding = false; + } if (!binding) { if (DEBUG) { Slog.d(TAG, job.getServiceComponent().getShortClassName() + " unavailable."); diff --git a/services/core/java/com/android/server/location/GnssLocationProvider.java b/services/core/java/com/android/server/location/GnssLocationProvider.java index f28bce5d5e7b..c312b76cc463 100644 --- a/services/core/java/com/android/server/location/GnssLocationProvider.java +++ b/services/core/java/com/android/server/location/GnssLocationProvider.java @@ -222,6 +222,8 @@ public class GnssLocationProvider extends AbstractLocationProvider implements private static final long LOCATION_UPDATE_MIN_TIME_INTERVAL_MILLIS = 1000; // Default update duration in milliseconds for REQUEST_LOCATION. private static final long LOCATION_UPDATE_DURATION_MILLIS = 10 * 1000; + // 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 { @@ -724,30 +726,35 @@ public class GnssLocationProvider extends AbstractLocationProvider implements Context.LOCATION_SERVICE); String provider; LocationChangeListener locationListener; + LocationRequest locationRequest = new LocationRequest() + .setInterval(LOCATION_UPDATE_MIN_TIME_INTERVAL_MILLIS) + .setFastestInterval(LOCATION_UPDATE_MIN_TIME_INTERVAL_MILLIS); if (independentFromGnss) { // For fast GNSS TTFF provider = LocationManager.NETWORK_PROVIDER; locationListener = mNetworkLocationListener; + locationRequest.setQuality(LocationRequest.POWER_LOW); } else { // For Device-Based Hybrid (E911) provider = LocationManager.FUSED_PROVIDER; locationListener = mFusedLocationListener; + locationRequest.setQuality(LocationRequest.ACCURACY_FINE); } - Log.i(TAG, - String.format( - "GNSS HAL Requesting location updates from %s provider for %d millis.", - provider, durationMillis)); - - LocationRequest locationRequest = LocationRequest.createFromDeprecatedProvider(provider, - LOCATION_UPDATE_MIN_TIME_INTERVAL_MILLIS, /* minDistance= */ 0, - /* singleShot= */ false); + locationRequest.setProvider(provider); // Ignore location settings if in emergency mode. if (isUserEmergency && mNIHandler.getInEmergency()) { locationRequest.setLocationSettingsIgnored(true); + durationMillis *= EMERGENCY_LOCATION_UPDATE_DURATION_MULTIPLIER; } + + Log.i(TAG, + String.format( + "GNSS HAL Requesting location updates from %s provider for %d millis.", + provider, durationMillis)); + try { locationManager.requestLocationUpdates(locationRequest, locationListener, mHandler.getLooper()); @@ -765,6 +772,9 @@ public class GnssLocationProvider extends AbstractLocationProvider implements } private void injectBestLocation(Location location) { + if (DEBUG) { + Log.d(TAG, "injectBestLocation: " + location); + } int gnssLocationFlags = LOCATION_HAS_LAT_LONG | (location.hasAltitude() ? LOCATION_HAS_ALTITUDE : 0) | (location.hasSpeed() ? LOCATION_HAS_SPEED : 0) | @@ -869,6 +879,9 @@ public class GnssLocationProvider extends AbstractLocationProvider implements private void handleUpdateLocation(Location location) { if (location.hasAccuracy()) { + if (DEBUG) { + Log.d(TAG, "injectLocation: " + location); + } native_inject_location(location.getLatitude(), location.getLongitude(), location.getAccuracy()); } @@ -937,7 +950,7 @@ public class GnssLocationProvider extends AbstractLocationProvider implements mGnssNavigationMessageProvider.onGpsEnabledChanged(); mGnssBatchingProvider.enable(); if (mGnssVisibilityControl != null) { - mGnssVisibilityControl.onGpsEnabledChanged(/* isEnabled= */true); + mGnssVisibilityControl.onGpsEnabledChanged(/* isEnabled= */ true); } } else { setGpsEnabled(false); diff --git a/services/core/java/com/android/server/location/GnssVisibilityControl.java b/services/core/java/com/android/server/location/GnssVisibilityControl.java index 65bd5c6a14da..ea4f9c456856 100644 --- a/services/core/java/com/android/server/location/GnssVisibilityControl.java +++ b/services/core/java/com/android/server/location/GnssVisibilityControl.java @@ -78,7 +78,6 @@ class GnssVisibilityControl { private final Handler mHandler; private final Context mContext; private final GpsNetInitiatedHandler mNiHandler; - private final Notification mEmergencyLocationUserNotification; private boolean mIsGpsEnabled; @@ -107,7 +106,6 @@ class GnssVisibilityControl { mNiHandler = niHandler; mAppOps = mContext.getSystemService(AppOpsManager.class); mPackageManager = mContext.getPackageManager(); - mEmergencyLocationUserNotification = createEmergencyLocationUserNotification(mContext); // Complete initialization as the first event to run in mHandler thread. After that, // all object state read/update events run in the mHandler thread. @@ -153,7 +151,6 @@ class GnssVisibilityControl { } private void handleInitialize() { - disableNfwLocationAccess(); // Disable until config properties are loaded. listenForProxyAppsPackageUpdates(); } @@ -263,25 +260,21 @@ class GnssVisibilityControl { return false; } - private void handleGpsEnabledChanged(boolean isEnabled) { - if (DEBUG) Log.d(TAG, "handleGpsEnabledChanged, isEnabled: " + isEnabled); - - if (mIsGpsEnabled == isEnabled) { - return; + private void handleGpsEnabledChanged(boolean isGpsEnabled) { + if (DEBUG) { + Log.d(TAG, "handleGpsEnabledChanged, mIsGpsEnabled: " + mIsGpsEnabled + + ", isGpsEnabled: " + isGpsEnabled); } - mIsGpsEnabled = isEnabled; + // The proxy app list in the GNSS HAL needs to be configured if it restarts after + // a crash. So, update HAL irrespective of the previous GPS enabled state. + mIsGpsEnabled = isGpsEnabled; if (!mIsGpsEnabled) { disableNfwLocationAccess(); return; } - // When GNSS was disabled, we already set the proxy app list to empty in GNSS HAL. - // Update only if the proxy app list is not empty. - String[] locationPermissionEnabledProxyApps = getLocationPermissionEnabledProxyApps(); - if (locationPermissionEnabledProxyApps.length != 0) { - setNfwLocationAccessProxyAppsInGnssHal(locationPermissionEnabledProxyApps); - } + setNfwLocationAccessProxyAppsInGnssHal(getLocationPermissionEnabledProxyApps()); } private void disableNfwLocationAccess() { @@ -632,13 +625,15 @@ class GnssVisibilityControl { } notificationManager.notifyAsUser(/* tag= */ null, /* notificationId= */ 0, - mEmergencyLocationUserNotification, UserHandle.ALL); + createEmergencyLocationUserNotification(mContext), UserHandle.ALL); } private static Notification createEmergencyLocationUserNotification(Context context) { - String firstLineText = context.getString(R.string.gpsNotifTitle); - String secondLineText = context.getString(R.string.global_action_emergency); - String accessibilityServicesText = firstLineText + " (" + secondLineText + ")"; + // NOTE: Do not reuse the returned notification object as it will not reflect + // changes to notification text when the system language is changed. + final String firstLineText = context.getString(R.string.gpsNotifTitle); + final String secondLineText = context.getString(R.string.global_action_emergency); + final String accessibilityServicesText = firstLineText + " (" + secondLineText + ")"; return new Notification.Builder(context, SystemNotificationChannels.NETWORK_ALERTS) .setSmallIcon(com.android.internal.R.drawable.stat_sys_gps_on) .setWhen(0) diff --git a/services/core/java/com/android/server/media/MediaSessionService.java b/services/core/java/com/android/server/media/MediaSessionService.java index adc15611c438..5bd4b2029e7b 100644 --- a/services/core/java/com/android/server/media/MediaSessionService.java +++ b/services/core/java/com/android/server/media/MediaSessionService.java @@ -54,6 +54,7 @@ import android.media.session.ISession; import android.media.session.ISession2TokensListener; import android.media.session.ISessionCallback; import android.media.session.ISessionManager; +import android.media.session.MediaController; import android.media.session.MediaSession; import android.media.session.MediaSessionManager; import android.net.Uri; @@ -1183,6 +1184,9 @@ public class MediaSessionService extends SystemService implements Monitor { } /** + * Dispaches media key events. This is called when the foreground activity didn't handled + * the incoming media key event. + * <p> * Handles the dispatching of the media button events to one of the * registered listeners, or if there was none, broadcast an * ACTION_MEDIA_BUTTON intent to the rest of the system. @@ -1262,6 +1266,18 @@ public class MediaSessionService extends SystemService implements Monitor { } } + /** + * Dispatches media key events to session as system service. This is used only when the + * foreground activity has set + * {@link android.app.Activity#setMediaController(MediaController)} and a media key was + * pressed. + * + * @param packageName The caller's package name, obtained by Context#getPackageName() + * @param opPackageName The caller's op package name, obtained by Context#getOpPackageName() + * @param sessionToken token for the session that the controller is pointing to + * @param keyEvent media key event + * @see #dispatchVolumeKeyEvent + */ @Override public boolean dispatchMediaKeyEventToSessionAsSystemService(String packageName, MediaSession.Token sessionToken, KeyEvent keyEvent) { @@ -1272,9 +1288,7 @@ public class MediaSessionService extends SystemService implements Monitor { synchronized (mLock) { MediaSessionRecord record = getMediaSessionRecordLocked(sessionToken); if (record == null) { - if (DEBUG) { - Log.d(TAG, "Failed to find session to dispatch key event."); - } + Log.w(TAG, "Failed to find session to dispatch key event."); return false; } if (DEBUG) { @@ -1452,9 +1466,12 @@ public class MediaSessionService extends SystemService implements Monitor { } /** + * Dispaches volume key events. This is called when the foreground activity didn't handled + * the incoming volume key event. + * <p> * Handles the dispatching of the volume button events to one of the * registered listeners. If there's a volume key long-press listener and - * there's no active global priority session, long-pressess will be sent to the + * there's no active global priority session, long-presses will be sent to the * long-press listener instead of adjusting volume. * * @param packageName The caller's package name, obtained by Context#getPackageName() @@ -1471,6 +1488,7 @@ public class MediaSessionService extends SystemService implements Monitor { * or {@link KeyEvent#KEYCODE_VOLUME_MUTE}. * @param stream stream type to adjust volume. * @param musicOnly true if both UI nor haptic feedback aren't needed when adjust volume. + * @see #dispatchVolumeKeyEventToSessionAsSystemService */ @Override public void dispatchVolumeKeyEvent(String packageName, String opPackageName, @@ -1597,6 +1615,18 @@ public class MediaSessionService extends SystemService implements Monitor { } } + /** + * Dispatches volume key events to session as system service. This is used only when the + * foreground activity has set + * {@link android.app.Activity#setMediaController(MediaController)} and a hardware volume + * key was pressed. + * + * @param packageName The caller's package name, obtained by Context#getPackageName() + * @param opPackageName The caller's op package name, obtained by Context#getOpPackageName() + * @param sessionToken token for the session that the controller is pointing to + * @param keyEvent volume key event + * @see #dispatchVolumeKeyEvent + */ @Override public void dispatchVolumeKeyEventToSessionAsSystemService(String packageName, String opPackageName, MediaSession.Token sessionToken, KeyEvent keyEvent) { @@ -1607,9 +1637,10 @@ public class MediaSessionService extends SystemService implements Monitor { synchronized (mLock) { MediaSessionRecord record = getMediaSessionRecordLocked(sessionToken); if (record == null) { - if (DEBUG) { - Log.d(TAG, "Failed to find session to dispatch key event."); - } + Log.w(TAG, "Failed to find session to dispatch key event, token=" + + sessionToken + ". Fallbacks to the default handling."); + dispatchVolumeKeyEventLocked(packageName, opPackageName, pid, uid, true, + keyEvent, AudioManager.USE_DEFAULT_STREAM_TYPE, false); return; } if (DEBUG) { diff --git a/services/core/java/com/android/server/net/NetworkStatsFactory.java b/services/core/java/com/android/server/net/NetworkStatsFactory.java index 473cc97b7edc..69efd02dea9c 100644 --- a/services/core/java/com/android/server/net/NetworkStatsFactory.java +++ b/services/core/java/com/android/server/net/NetworkStatsFactory.java @@ -263,10 +263,6 @@ public class NetworkStatsFactory { return stats; } - /** - * @deprecated Use NetworkStatsService#getDetailedUidStats which also accounts for - * VPN traffic - */ public NetworkStats readNetworkStatsDetail() throws IOException { return readNetworkStatsDetail(UID_ALL, null, TAG_ALL, null); } diff --git a/services/core/java/com/android/server/net/NetworkStatsRecorder.java b/services/core/java/com/android/server/net/NetworkStatsRecorder.java index bdff50053fae..a2e7e0cae96b 100644 --- a/services/core/java/com/android/server/net/NetworkStatsRecorder.java +++ b/services/core/java/com/android/server/net/NetworkStatsRecorder.java @@ -41,10 +41,10 @@ import com.android.internal.net.VpnInfo; import com.android.internal.util.FileRotator; import com.android.internal.util.IndentingPrintWriter; -import com.google.android.collect.Sets; - import libcore.io.IoUtils; +import com.google.android.collect.Sets; + import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; import java.io.File; @@ -234,7 +234,7 @@ public class NetworkStatsRecorder { if (vpnArray != null) { for (VpnInfo info : vpnArray) { - delta.migrateTun(info.ownerUid, info.vpnIface, info.underlyingIfaces); + delta.migrateTun(info.ownerUid, info.vpnIface, info.primaryUnderlyingIface); } } diff --git a/services/core/java/com/android/server/net/NetworkStatsService.java b/services/core/java/com/android/server/net/NetworkStatsService.java index a13368ff9de4..e0692f698bc6 100644 --- a/services/core/java/com/android/server/net/NetworkStatsService.java +++ b/services/core/java/com/android/server/net/NetworkStatsService.java @@ -293,22 +293,6 @@ public class NetworkStatsService extends INetworkStatsService.Stub { /** Data layer operation counters for splicing into other structures. */ private NetworkStats mUidOperations = new NetworkStats(0L, 10); - /** - * Snapshot containing most recent network stats for all UIDs across all interfaces and tags - * since boot. - * - * <p>Maintains migrated VPN stats which are result of performing TUN migration on {@link - * #mLastUidDetailSnapshot}. - */ - @GuardedBy("mStatsLock") - private NetworkStats mTunAdjustedStats; - /** - * Used by {@link #mTunAdjustedStats} to migrate VPN traffic over delta between this snapshot - * and latest snapshot. - */ - @GuardedBy("mStatsLock") - private NetworkStats mLastUidDetailSnapshot; - /** Must be set in factory by calling #setHandler. */ private Handler mHandler; private Handler.Callback mHandlerCallback; @@ -828,39 +812,15 @@ public class NetworkStatsService extends INetworkStatsService.Stub { @Override public NetworkStats getDetailedUidStats(String[] requiredIfaces) { try { - // Get the latest snapshot from NetworkStatsFactory. - // TODO: Querying for INTERFACES_ALL may incur performance penalty. Consider restricting - // this to limited set of ifaces. - NetworkStats uidDetailStats = getNetworkStatsUidDetail(INTERFACES_ALL); - - // Migrate traffic from VPN UID over delta and update mTunAdjustedStats. - NetworkStats result; - synchronized (mStatsLock) { - migrateTunTraffic(uidDetailStats, mVpnInfos); - result = mTunAdjustedStats.clone(); - } - - // Apply filter based on ifacesToQuery. final String[] ifacesToQuery = NetworkStatsFactory.augmentWithStackedInterfaces(requiredIfaces); - result.filter(UID_ALL, ifacesToQuery, TAG_ALL); - return result; + return getNetworkStatsUidDetail(ifacesToQuery); } catch (RemoteException e) { Log.wtf(TAG, "Error compiling UID stats", e); return new NetworkStats(0L, 0); } } - @VisibleForTesting - NetworkStats getTunAdjustedStats() { - synchronized (mStatsLock) { - if (mTunAdjustedStats == null) { - return null; - } - return mTunAdjustedStats.clone(); - } - } - @Override public String[] getMobileIfaces() { return mMobileIfaces; @@ -1257,14 +1217,22 @@ public class NetworkStatsService extends INetworkStatsService.Stub { } } - // Traffic occurring on stacked interfaces is usually clatd, - // which is already accounted against its final egress interface - // by the kernel. Thus, we only need to collect stacked - // interface stats at the UID level. + // Traffic occurring on stacked interfaces is usually clatd. + // UID stats are always counted on the stacked interface and never + // on the base interface, because the packets on the base interface + // do not actually match application sockets until they are translated. + // + // Interface stats are more complicated. Packets subject to BPF offload + // never appear on the base interface and only appear on the stacked + // interface, so to ensure those packets increment interface stats, interface + // stats from stacked interfaces must be collected. final List<LinkProperties> stackedLinks = state.linkProperties.getStackedLinks(); for (LinkProperties stackedLink : stackedLinks) { final String stackedIface = stackedLink.getInterfaceName(); if (stackedIface != null) { + if (mUseBpfTrafficStats) { + findOrCreateNetworkIdentitySet(mActiveIfaces, stackedIface).add(ident); + } findOrCreateNetworkIdentitySet(mActiveUidIfaces, stackedIface).add(ident); if (isMobile) { mobileIfaces.add(stackedIface); @@ -1335,34 +1303,6 @@ public class NetworkStatsService extends INetworkStatsService.Stub { // a race condition between the service handler thread and the observer's mStatsObservers.updateStats(xtSnapshot, uidSnapshot, new ArrayMap<>(mActiveIfaces), new ArrayMap<>(mActiveUidIfaces), vpnArray, currentTime); - - migrateTunTraffic(uidSnapshot, vpnArray); - } - - /** - * Updates {@link #mTunAdjustedStats} with the delta containing traffic migrated off of VPNs. - */ - @GuardedBy("mStatsLock") - private void migrateTunTraffic(NetworkStats uidDetailStats, VpnInfo[] vpnInfoArray) { - if (mTunAdjustedStats == null) { - // Either device booted or system server restarted, hence traffic cannot be migrated - // correctly without knowing the past state of VPN's underlying networks. - mTunAdjustedStats = uidDetailStats; - mLastUidDetailSnapshot = uidDetailStats; - return; - } - // Migrate delta traffic from VPN to other apps. - NetworkStats delta = uidDetailStats.subtract(mLastUidDetailSnapshot); - for (VpnInfo info : vpnInfoArray) { - delta.migrateTun(info.ownerUid, info.vpnIface, info.underlyingIfaces); - } - // Filter out debug entries as that may lead to over counting. - delta.filterDebugEntries(); - // Update #mTunAdjustedStats with migrated delta. - mTunAdjustedStats.combineAllValues(delta); - mTunAdjustedStats.setElapsedRealtime(uidDetailStats.getElapsedRealtime()); - // Update last snapshot. - mLastUidDetailSnapshot = uidDetailStats; } /** diff --git a/services/core/java/com/android/server/notification/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java index 8485f46aefd4..bd198dd74af7 100644 --- a/services/core/java/com/android/server/notification/NotificationManagerService.java +++ b/services/core/java/com/android/server/notification/NotificationManagerService.java @@ -42,10 +42,10 @@ import static android.app.NotificationManager.Policy.SUPPRESSED_EFFECT_PEEK; import static android.app.NotificationManager.Policy.SUPPRESSED_EFFECT_SCREEN_OFF; import static android.app.NotificationManager.Policy.SUPPRESSED_EFFECT_SCREEN_ON; import static android.app.NotificationManager.Policy.SUPPRESSED_EFFECT_STATUS_BAR; -import static android.content.Context.BIND_ADJUST_BELOW_PERCEPTIBLE; import static android.content.Context.BIND_ALLOW_WHITELIST_MANAGEMENT; import static android.content.Context.BIND_AUTO_CREATE; import static android.content.Context.BIND_FOREGROUND_SERVICE; +import static android.content.Context.BIND_NOT_PERCEPTIBLE; import static android.content.pm.ActivityInfo.DOCUMENT_LAUNCH_ALWAYS; import static android.content.pm.PackageManager.FEATURE_LEANBACK; import static android.content.pm.PackageManager.FEATURE_TELEVISION; @@ -7151,6 +7151,10 @@ public class NotificationManagerService extends SystemService { return false; } + if (userId == UserHandle.USER_ALL) { + userId = USER_SYSTEM; + } + try { final String[] pkgs = mPackageManager.getPackagesForUid(callingUid); if (pkgs == null) { @@ -7234,72 +7238,42 @@ public class NotificationManagerService extends SystemService { @GuardedBy("mNotificationLock") private NotificationRankingUpdate makeRankingUpdateLocked(ManagedServiceInfo info) { final int N = mNotificationList.size(); - ArrayList<String> keys = new ArrayList<String>(N); - ArrayList<String> interceptedKeys = new ArrayList<String>(N); - ArrayList<Integer> importance = new ArrayList<>(N); - Bundle overrideGroupKeys = new Bundle(); - Bundle visibilityOverrides = new Bundle(); - Bundle suppressedVisualEffects = new Bundle(); - Bundle explanation = new Bundle(); - Bundle channels = new Bundle(); - Bundle overridePeople = new Bundle(); - Bundle snoozeCriteria = new Bundle(); - Bundle showBadge = new Bundle(); - Bundle userSentiment = new Bundle(); - Bundle hidden = new Bundle(); - Bundle systemGeneratedSmartActions = new Bundle(); - Bundle smartReplies = new Bundle(); - Bundle lastAudiblyAlerted = new Bundle(); - Bundle noisy = new Bundle(); - ArrayList<Boolean> canBubble = new ArrayList<>(N); + final ArrayList<NotificationListenerService.Ranking> rankings = new ArrayList<>(); + for (int i = 0; i < N; i++) { NotificationRecord record = mNotificationList.get(i); if (!isVisibleToListener(record.sbn, info)) { continue; } final String key = record.sbn.getKey(); - keys.add(key); - importance.add(record.getImportance()); - if (record.getImportanceExplanation() != null) { - explanation.putCharSequence(key, record.getImportanceExplanation()); - } - if (record.isIntercepted()) { - interceptedKeys.add(key); - - } - suppressedVisualEffects.putInt(key, record.getSuppressedVisualEffects()); - if (record.getPackageVisibilityOverride() - != NotificationListenerService.Ranking.VISIBILITY_NO_OVERRIDE) { - visibilityOverrides.putInt(key, record.getPackageVisibilityOverride()); - } - overrideGroupKeys.putString(key, record.sbn.getOverrideGroupKey()); - channels.putParcelable(key, record.getChannel()); - overridePeople.putStringArrayList(key, record.getPeopleOverride()); - snoozeCriteria.putParcelableArrayList(key, record.getSnoozeCriteria()); - showBadge.putBoolean(key, record.canShowBadge()); - userSentiment.putInt(key, record.getUserSentiment()); - hidden.putBoolean(key, record.isHidden()); - systemGeneratedSmartActions.putParcelableArrayList(key, - record.getSystemGeneratedSmartActions()); - smartReplies.putCharSequenceArrayList(key, record.getSmartReplies()); - lastAudiblyAlerted.putLong(key, record.getLastAudiblyAlertedMs()); - noisy.putBoolean(key, record.getSound() != null || record.getVibration() != null); - canBubble.add(record.canBubble()); - } - final int M = keys.size(); - String[] keysAr = keys.toArray(new String[M]); - String[] interceptedKeysAr = interceptedKeys.toArray(new String[interceptedKeys.size()]); - int[] importanceAr = new int[M]; - boolean[] canBubbleAr = new boolean[M]; - for (int i = 0; i < M; i++) { - importanceAr[i] = importance.get(i); - canBubbleAr[i] = canBubble.get(i); - } - return new NotificationRankingUpdate(keysAr, interceptedKeysAr, visibilityOverrides, - suppressedVisualEffects, importanceAr, explanation, overrideGroupKeys, - channels, overridePeople, snoozeCriteria, showBadge, userSentiment, hidden, - systemGeneratedSmartActions, smartReplies, lastAudiblyAlerted, noisy, - canBubbleAr); + final NotificationListenerService.Ranking ranking = + new NotificationListenerService.Ranking(); + ranking.populate( + key, + rankings.size(), + !record.isIntercepted(), + record.getPackageVisibilityOverride(), + record.getSuppressedVisualEffects(), + record.getImportance(), + record.getImportanceExplanation(), + record.sbn.getOverrideGroupKey(), + record.getChannel(), + record.getPeopleOverride(), + record.getSnoozeCriteria(), + record.canShowBadge(), + record.getUserSentiment(), + record.isHidden(), + record.getLastAudiblyAlertedMs(), + record.getSound() != null || record.getVibration() != null, + record.getSystemGeneratedSmartActions(), + record.getSmartReplies(), + record.canBubble() + ); + rankings.add(ranking); + } + + return new NotificationRankingUpdate( + rankings.toArray(new NotificationListenerService.Ranking[0])); } boolean hasCompanionDevice(ManagedServiceInfo info) { @@ -7816,12 +7790,12 @@ public class NotificationManagerService extends SystemService { @Override protected int getBindFlags() { - // Most of the same flags as the base, but also add BIND_ADJUST_BELOW_PERCEPTIBLE + // Most of the same flags as the base, but also add BIND_NOT_PERCEPTIBLE // because too many 3P apps could be kept in memory as notification listeners and // cause extreme memory pressure. // TODO: Change the binding lifecycle of NotificationListeners to avoid this situation. return BIND_AUTO_CREATE | BIND_FOREGROUND_SERVICE - | BIND_ADJUST_BELOW_PERCEPTIBLE | BIND_ALLOW_WHITELIST_MANAGEMENT; + | BIND_NOT_PERCEPTIBLE | BIND_ALLOW_WHITELIST_MANAGEMENT; } @Override diff --git a/services/core/java/com/android/server/oemlock/PersistentDataBlockLock.java b/services/core/java/com/android/server/oemlock/PersistentDataBlockLock.java index a1c27d6432f1..2474b2aa9184 100644 --- a/services/core/java/com/android/server/oemlock/PersistentDataBlockLock.java +++ b/services/core/java/com/android/server/oemlock/PersistentDataBlockLock.java @@ -73,6 +73,10 @@ class PersistentDataBlockLock extends OemLock { // unlocked but doesn't actually do any unlocking. final PersistentDataBlockManager pdbm = (PersistentDataBlockManager) mContext.getSystemService(Context.PERSISTENT_DATA_BLOCK_SERVICE); + if (pdbm == null) { + Slog.w(TAG, "PersistentDataBlock is not supported on this device"); + return; + } pdbm.setOemUnlockEnabled(allowedByDevice); } @@ -80,6 +84,10 @@ class PersistentDataBlockLock extends OemLock { boolean isOemUnlockAllowedByDevice() { final PersistentDataBlockManager pdbm = (PersistentDataBlockManager) mContext.getSystemService(Context.PERSISTENT_DATA_BLOCK_SERVICE); + if (pdbm == null) { + Slog.w(TAG, "PersistentDataBlock is not supported on this device"); + return false; + } return pdbm.getOemUnlockEnabled(); } @@ -91,6 +99,10 @@ class PersistentDataBlockLock extends OemLock { private void disallowUnlockIfNotUnlocked() { final PersistentDataBlockManager pdbm = (PersistentDataBlockManager) mContext.getSystemService(Context.PERSISTENT_DATA_BLOCK_SERVICE); + if (pdbm == null) { + Slog.w(TAG, "PersistentDataBlock is not supported on this device"); + return; + } if (pdbm.getFlashLockState() != PersistentDataBlockManager.FLASH_LOCK_UNLOCKED) { pdbm.setOemUnlockEnabled(false); } diff --git a/services/core/java/com/android/server/om/IdmapManager.java b/services/core/java/com/android/server/om/IdmapManager.java index 4b435de3538b..b604aa87f8f3 100644 --- a/services/core/java/com/android/server/om/IdmapManager.java +++ b/services/core/java/com/android/server/om/IdmapManager.java @@ -58,9 +58,16 @@ class IdmapManager { private static final boolean VENDOR_IS_Q_OR_LATER; static { - // STOPSHIP(b/119390857): Check api version once Q sdk version is finalized - final String value = SystemProperties.get("ro.vndk.version", "Q"); - VENDOR_IS_Q_OR_LATER = value.equals("Q") || value.equals("q"); + final String value = SystemProperties.get("ro.vndk.version", "29"); + boolean isQOrLater; + try { + isQOrLater = Integer.parseInt(value) >= 29; + } catch (NumberFormatException e) { + // The version is not a number, therefore it is a development codename. + isQOrLater = true; + } + + VENDOR_IS_Q_OR_LATER = isQOrLater; } IdmapManager(final Installer installer, final PackageManagerHelper packageManager) { diff --git a/services/core/java/com/android/server/pm/Installer.java b/services/core/java/com/android/server/pm/Installer.java index c2d5b2f86002..adcd19e9bb5a 100644 --- a/services/core/java/com/android/server/pm/Installer.java +++ b/services/core/java/com/android/server/pm/Installer.java @@ -121,24 +121,6 @@ public class Installer extends SystemService { } } - @Override - public void onUnlockUser(int userId) { - if (userId == 0) { - if (!checkBeforeRemote()) return; - - if (mInstalld == null) { - Slog.wtf(TAG, "Call to onUnlockUser prior to onStart."); - return; - } - - try { - mInstalld.migrateLegacyObbData(); - } catch (RemoteException re) { - Slog.wtf(TAG, "Error migrating legacy OBB data.", re); - } - } - } - private void connect() { IBinder binder = ServiceManager.getService("installd"); if (binder != null) { @@ -708,6 +690,24 @@ public class Installer extends SystemService { } } + /** + * Migrates obb data from its legacy location {@code /data/media/obb} to + * {@code /data/media/0/Android/obb}. This call is idempotent and a fast no-op if data has + * already been migrated. + * + * @throws InstallerException if an error occurs. + */ + public boolean migrateLegacyObbData() throws InstallerException { + if (!checkBeforeRemote()) return false; + + try { + mInstalld.migrateLegacyObbData(); + return true; + } catch (Exception e) { + throw InstallerException.from(e); + } + } + private static void assertValidInstructionSet(String instructionSet) throws InstallerException { for (String abi : Build.SUPPORTED_ABIS) { diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index 4a5e61bc7d72..9f5fc9269a7c 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -111,9 +111,6 @@ import static com.android.server.pm.PackageManagerServiceUtils.getCompressedFile import static com.android.server.pm.PackageManagerServiceUtils.getLastModifiedTime; import static com.android.server.pm.PackageManagerServiceUtils.logCriticalInfo; import static com.android.server.pm.PackageManagerServiceUtils.verifySignatures; -import static com.android.server.pm.permission.PermissionsState.PERMISSION_OPERATION_FAILURE; -import static com.android.server.pm.permission.PermissionsState.PERMISSION_OPERATION_SUCCESS; -import static com.android.server.pm.permission.PermissionsState.PERMISSION_OPERATION_SUCCESS_GIDS_CHANGED; import android.Manifest; import android.annotation.IntDef; @@ -294,6 +291,7 @@ import com.android.internal.util.ConcurrentUtils; import com.android.internal.util.DumpUtils; import com.android.internal.util.FastXmlSerializer; import com.android.internal.util.IndentingPrintWriter; +import com.android.internal.util.IntPair; import com.android.internal.util.Preconditions; import com.android.server.AttributeCache; import com.android.server.DeviceIdleController; @@ -1507,7 +1505,8 @@ public class PackageManagerService extends IPackageManager.Stub final List<String> whitelistedRestrictedPermissions = ((args.installFlags & PackageManager.INSTALL_ALL_WHITELIST_RESTRICTED_PERMISSIONS) != 0 && parentRes.pkg != null) - ? parentRes.pkg.requestedPermissions : null; + ? parentRes.pkg.requestedPermissions + : args.whitelistedRestrictedPermissions; // Handle the parent package handlePackagePostInstall(parentRes, grantPermissions, @@ -5643,27 +5642,6 @@ public class PackageManagerService extends IPackageManager.Stub for (int i = 0; pkg == null && i < N; i++) { pkg = mPackages.get(packageNames[i]); } - // Additional logs for b/111075456; ignore system UIDs - if (pkg == null && UserHandle.getAppId(uid) >= Process.FIRST_APPLICATION_UID) { - if (packageNames == null || packageNames.length < 2) { - // unclear if this is shared user or just a missing application - Log.e(TAG, "Failed to find package" - + "; permName: " + permName - + ", uid: " + uid - + ", caller: " + Binder.getCallingUid(), - new Throwable()); - } else { - // definitely shared user - Log.e(TAG, "Failed to find package" - + "; permName: " + permName - + ", uid: " + uid - + ", caller: " + Binder.getCallingUid() - + ", packages: " + Arrays.toString(packageNames), - new Throwable()); - } - // run again just to try to get debug output - getPackagesForUid_debug(uid, true); - } return mPermissionManager.checkUidPermission(permName, pkg, uid, getCallingUid()); } } @@ -6391,25 +6369,15 @@ public class PackageManagerService extends IPackageManager.Stub */ @Override public String[] getPackagesForUid(int uid) { - return getPackagesForUid_debug(uid, false); - } - // Debug output for b/111075456 - private String[] getPackagesForUid_debug(int uid, boolean debug) { final int callingUid = Binder.getCallingUid(); final boolean isCallerInstantApp = getInstantAppPackageName(callingUid) != null; final int userId = UserHandle.getUserId(uid); final int appId = UserHandle.getAppId(uid); - if (debug) Slog.e(TAG, "Finding packages for UID" - + "; uid: " + uid - + ", userId: " + userId - + ", appId: " + appId - + ", caller: " + callingUid); // reader synchronized (mPackages) { final Object obj = mSettings.getSettingLPr(appId); if (obj instanceof SharedUserSetting) { if (isCallerInstantApp) { - if (debug) Slog.e(TAG, "Caller is instant and package has shared users"); return null; } final SharedUserSetting sus = (SharedUserSetting) obj; @@ -6417,13 +6385,8 @@ public class PackageManagerService extends IPackageManager.Stub String[] res = new String[N]; final Iterator<PackageSetting> it = sus.packages.iterator(); int i = 0; - if (debug && !it.hasNext()) Slog.e(TAG, "Shared user, but, no packages"); while (it.hasNext()) { PackageSetting ps = it.next(); - if (debug) Slog.e(TAG, "Check shared package" - + "; installed? " + ps.getInstalled(userId) - + ", shared setting: " + ps - + ", package setting: " + mSettings.mPackages.get(ps.name)); if (ps.getInstalled(userId)) { res[i++] = ps.name; } else { @@ -6436,12 +6399,6 @@ public class PackageManagerService extends IPackageManager.Stub if (ps.getInstalled(userId) && !filterAppAccessLPr(ps, callingUid, userId)) { return new String[]{ps.name}; } - if (debug) Slog.e(TAG, "Removing normal package" - + "; installed? " + ps.getInstalled(userId) - + ", filtered? " + filterAppAccessLPr(ps, callingUid, userId)); - } else if (debug) { - if (debug) Slog.e(TAG, "No setting found" - + "; obj: " + (obj == null ? "<<NULL>>" : obj.toString())); } } return null; @@ -15012,7 +14969,6 @@ public class PackageManagerService extends IPackageManager.Stub params.handleStartCopy(); if (params.mRet != INSTALL_SUCCEEDED) { mRet = params.mRet; - break; } } } @@ -15023,7 +14979,6 @@ public class PackageManagerService extends IPackageManager.Stub params.handleReturnCode(); if (params.mRet != INSTALL_SUCCEEDED) { mRet = params.mRet; - break; } } } @@ -19845,6 +19800,8 @@ public class PackageManagerService extends IPackageManager.Stub return; } + final String packageName = ps.pkg.packageName; + // These are flags that can change base on user actions. final int userSettableMask = FLAG_PERMISSION_USER_SET | FLAG_PERMISSION_USER_FIXED @@ -19854,8 +19811,59 @@ public class PackageManagerService extends IPackageManager.Stub final int policyOrSystemFlags = FLAG_PERMISSION_SYSTEM_FIXED | FLAG_PERMISSION_POLICY_FIXED; - boolean writeInstallPermissions = false; - boolean writeRuntimePermissions = false; + // Delay and combine non-async permission callbacks + final boolean[] permissionRemoved = new boolean[1]; + final ArraySet<Long> revokedPermissions = new ArraySet<>(); + final SparseBooleanArray updatedUsers = new SparseBooleanArray(); + + PermissionCallback delayingPermCallback = new PermissionCallback() { + public void onGidsChanged(int appId, int userId) { + mPermissionCallback.onGidsChanged(appId, userId); + } + + public void onPermissionChanged() { + mPermissionCallback.onPermissionChanged(); + } + + public void onPermissionGranted(int uid, int userId) { + mPermissionCallback.onPermissionGranted(uid, userId); + } + + public void onInstallPermissionGranted() { + mPermissionCallback.onInstallPermissionGranted(); + } + + public void onPermissionRevoked(int uid, int userId) { + revokedPermissions.add(IntPair.of(uid, userId)); + + updatedUsers.put(userId, true); + } + + public void onInstallPermissionRevoked() { + mPermissionCallback.onInstallPermissionRevoked(); + } + + public void onPermissionUpdated(int[] updatedUserIds, boolean sync) { + for (int userId : updatedUserIds) { + if (sync) { + updatedUsers.put(userId, true); + } else { + // Don't override sync=true by sync=false + if (!updatedUsers.get(userId)) { + updatedUsers.put(userId, false); + } + } + } + } + + public void onPermissionRemoved() { + permissionRemoved[0] = true; + } + + public void onInstallPermissionUpdated() { + mPermissionCallback.onInstallPermissionUpdated(); + } + }; final int permissionCount = ps.pkg.requestedPermissions.size(); for (int i = 0; i < permissionCount; i++) { @@ -19887,26 +19895,20 @@ public class PackageManagerService extends IPackageManager.Stub } } - final PermissionsState permissionsState = ps.getPermissionsState(); - - final int oldFlags = permissionsState.getPermissionFlags(permName, userId); + final int oldFlags = mPermissionManager.getPermissionFlags(permName, packageName, + Process.SYSTEM_UID, userId); // Always clear the user settable flags. - final boolean hasInstallState = - permissionsState.getInstallPermissionState(permName) != null; // If permission review is enabled and this is a legacy app, mark the // permission as requiring a review as this is the initial state. int flags = 0; if (ps.pkg.applicationInfo.targetSdkVersion < Build.VERSION_CODES.M && bp.isRuntime()) { flags |= FLAG_PERMISSION_REVIEW_REQUIRED | FLAG_PERMISSION_REVOKE_ON_UPGRADE; } - if (permissionsState.updatePermissionFlags(bp, userId, userSettableMask, flags)) { - if (hasInstallState) { - writeInstallPermissions = true; - } else { - writeRuntimePermissions = true; - } - } + + mPermissionManager.updatePermissionFlags(permName, packageName, + userSettableMask, flags, Process.SYSTEM_UID, userId, false, + delayingPermCallback); // Below is only runtime permission handling. if (!bp.isRuntime()) { @@ -19920,35 +19922,42 @@ public class PackageManagerService extends IPackageManager.Stub // If this permission was granted by default, make sure it is. if ((oldFlags & FLAG_PERMISSION_GRANTED_BY_DEFAULT) != 0) { - if (permissionsState.grantRuntimePermission(bp, userId) - != PERMISSION_OPERATION_FAILURE) { - writeRuntimePermissions = true; - } + mPermissionManager.grantRuntimePermission(permName, packageName, false, + Process.SYSTEM_UID, userId, delayingPermCallback); // If permission review is enabled the permissions for a legacy apps // are represented as constantly granted runtime ones, so don't revoke. } else if ((flags & FLAG_PERMISSION_REVIEW_REQUIRED) == 0) { // Otherwise, reset the permission. - final int revokeResult = permissionsState.revokeRuntimePermission(bp, userId); - switch (revokeResult) { - case PERMISSION_OPERATION_SUCCESS: - case PERMISSION_OPERATION_SUCCESS_GIDS_CHANGED: { - writeRuntimePermissions = true; - final int appId = ps.appId; - mHandler.post( - () -> killUid(appId, userId, KILL_APP_REASON_PERMISSIONS_REVOKED)); - } break; - } + mPermissionManager.revokeRuntimePermission(permName, packageName, false, userId, + delayingPermCallback); } } - // Synchronously write as we are taking permissions away. - if (writeRuntimePermissions) { - mSettings.writeRuntimePermissionsForUserLPr(userId, true); + // Execute delayed callbacks + if (permissionRemoved[0]) { + mPermissionCallback.onPermissionRemoved(); } - // Synchronously write as we are taking permissions away. - if (writeInstallPermissions) { - mSettings.writeLPr(); + // Slight variation on the code in mPermissionCallback.onPermissionRevoked() as we cannot + // kill uid while holding mPackages-lock + if (!revokedPermissions.isEmpty()) { + int numRevokedPermissions = revokedPermissions.size(); + for (int i = 0; i < numRevokedPermissions; i++) { + int revocationUID = IntPair.first(revokedPermissions.valueAt(i)); + int revocationUserId = IntPair.second(revokedPermissions.valueAt(i)); + + mOnPermissionChangeListeners.onPermissionsChanged(revocationUID); + + // Kill app later as we are holding mPackages + mHandler.post(() -> killUid(UserHandle.getAppId(revocationUID), revocationUserId, + KILL_APP_REASON_PERMISSIONS_REVOKED)); + } + } + + int numUpdatedUsers = updatedUsers.size(); + for (int i = 0; i < numUpdatedUsers; i++) { + mSettings.writeRuntimePermissionsForUserLPr(updatedUsers.keyAt(i), + updatedUsers.valueAt(i)); } } @@ -24378,8 +24387,12 @@ public class PackageManagerService extends IPackageManager.Stub @Override public boolean isPermissionsReviewRequired(String packageName, int userId) { synchronized (mPackages) { - return mPermissionManager.isPermissionsReviewRequired( - mPackages.get(packageName), userId); + final PackageParser.Package pkg = mPackages.get(packageName); + if (pkg == null) { + return false; + } + + return mPermissionManager.isPermissionsReviewRequired(pkg, userId); } } @@ -24965,6 +24978,15 @@ public class PackageManagerService extends IPackageManager.Stub mSettings.setRuntimePermissionsFingerPrintLPr(fingerPrint, userId); } } + + @Override + public void migrateLegacyObbData() { + try { + mInstaller.migrateLegacyObbData(); + } catch (Exception e) { + Slog.wtf(TAG, e); + } + } } @GuardedBy("mPackages") diff --git a/services/core/java/com/android/server/pm/ShareTargetInfo.java b/services/core/java/com/android/server/pm/ShareTargetInfo.java index 9e8b73e36f69..fdfee773ea74 100644 --- a/services/core/java/com/android/server/pm/ShareTargetInfo.java +++ b/services/core/java/com/android/server/pm/ShareTargetInfo.java @@ -15,12 +15,36 @@ */ package com.android.server.pm; +import android.annotation.NonNull; import android.text.TextUtils; +import org.xmlpull.v1.XmlPullParser; +import org.xmlpull.v1.XmlPullParserException; +import org.xmlpull.v1.XmlSerializer; + +import java.io.IOException; +import java.util.ArrayList; + /** * Represents a Share Target definition, read from the application's manifest (shortcuts.xml) */ class ShareTargetInfo { + + private static final String TAG_SHARE_TARGET = "share-target"; + private static final String ATTR_TARGET_CLASS = "targetClass"; + + private static final String TAG_DATA = "data"; + private static final String ATTR_SCHEME = "scheme"; + private static final String ATTR_HOST = "host"; + private static final String ATTR_PORT = "port"; + private static final String ATTR_PATH = "path"; + private static final String ATTR_PATH_PATTERN = "pathPattern"; + private static final String ATTR_PATH_PREFIX = "pathPrefix"; + private static final String ATTR_MIME_TYPE = "mimeType"; + + private static final String TAG_CATEGORY = "category"; + private static final String ATTR_NAME = "name"; + static class TargetData { final String mScheme; final String mHost; @@ -98,4 +122,72 @@ class ShareTargetInfo { return strBuilder.toString(); } + + void saveToXml(@NonNull XmlSerializer out) throws IOException { + out.startTag(null, TAG_SHARE_TARGET); + + ShortcutService.writeAttr(out, ATTR_TARGET_CLASS, mTargetClass); + + for (int i = 0; i < mTargetData.length; i++) { + out.startTag(null, TAG_DATA); + ShortcutService.writeAttr(out, ATTR_SCHEME, mTargetData[i].mScheme); + ShortcutService.writeAttr(out, ATTR_HOST, mTargetData[i].mHost); + ShortcutService.writeAttr(out, ATTR_PORT, mTargetData[i].mPort); + ShortcutService.writeAttr(out, ATTR_PATH, mTargetData[i].mPath); + ShortcutService.writeAttr(out, ATTR_PATH_PATTERN, mTargetData[i].mPathPattern); + ShortcutService.writeAttr(out, ATTR_PATH_PREFIX, mTargetData[i].mPathPrefix); + ShortcutService.writeAttr(out, ATTR_MIME_TYPE, mTargetData[i].mMimeType); + out.endTag(null, TAG_DATA); + } + + for (int i = 0; i < mCategories.length; i++) { + out.startTag(null, TAG_CATEGORY); + ShortcutService.writeAttr(out, ATTR_NAME, mCategories[i]); + out.endTag(null, TAG_CATEGORY); + } + + out.endTag(null, TAG_SHARE_TARGET); + } + + static ShareTargetInfo loadFromXml(XmlPullParser parser) + throws IOException, XmlPullParserException { + final String targetClass = ShortcutService.parseStringAttribute(parser, ATTR_TARGET_CLASS); + final ArrayList<ShareTargetInfo.TargetData> targetData = new ArrayList<>(); + final ArrayList<String> categories = new ArrayList<>(); + + int type; + while ((type = parser.next()) != XmlPullParser.END_DOCUMENT) { + if (type == XmlPullParser.START_TAG) { + switch (parser.getName()) { + case TAG_DATA: + targetData.add(parseTargetData(parser)); + break; + case TAG_CATEGORY: + categories.add(ShortcutService.parseStringAttribute(parser, ATTR_NAME)); + break; + } + } else if (type == XmlPullParser.END_TAG && parser.getName().equals(TAG_SHARE_TARGET)) { + break; + } + } + if (targetData.isEmpty() || targetClass == null || categories.isEmpty()) { + return null; + } + return new ShareTargetInfo( + targetData.toArray(new ShareTargetInfo.TargetData[targetData.size()]), + targetClass, categories.toArray(new String[categories.size()])); + } + + private static ShareTargetInfo.TargetData parseTargetData(XmlPullParser parser) { + final String scheme = ShortcutService.parseStringAttribute(parser, ATTR_SCHEME); + final String host = ShortcutService.parseStringAttribute(parser, ATTR_HOST); + final String port = ShortcutService.parseStringAttribute(parser, ATTR_PORT); + final String path = ShortcutService.parseStringAttribute(parser, ATTR_PATH); + final String pathPattern = ShortcutService.parseStringAttribute(parser, ATTR_PATH_PATTERN); + final String pathPrefix = ShortcutService.parseStringAttribute(parser, ATTR_PATH_PREFIX); + final String mimeType = ShortcutService.parseStringAttribute(parser, ATTR_MIME_TYPE); + + return new ShareTargetInfo.TargetData(scheme, host, port, path, pathPattern, pathPrefix, + mimeType); + } } diff --git a/services/core/java/com/android/server/pm/ShortcutPackage.java b/services/core/java/com/android/server/pm/ShortcutPackage.java index d6e87aab35fe..06c71baade42 100644 --- a/services/core/java/com/android/server/pm/ShortcutPackage.java +++ b/services/core/java/com/android/server/pm/ShortcutPackage.java @@ -73,6 +73,7 @@ class ShortcutPackage extends ShortcutPackageItem { private static final String TAG_INTENT = "intent"; private static final String TAG_EXTRAS = "extras"; private static final String TAG_SHORTCUT = "shortcut"; + private static final String TAG_SHARE_TARGET = "share-target"; private static final String TAG_CATEGORIES = "categories"; private static final String TAG_PERSON = "person"; @@ -1453,8 +1454,9 @@ class ShortcutPackage extends ShortcutPackageItem { public void saveToXml(@NonNull XmlSerializer out, boolean forBackup) throws IOException, XmlPullParserException { final int size = mShortcuts.size(); + final int shareTargetSize = mShareTargets.size(); - if (size == 0 && mApiCallCount == 0) { + if (size == 0 && shareTargetSize == 0 && mApiCallCount == 0) { return; // nothing to write. } @@ -1470,6 +1472,12 @@ class ShortcutPackage extends ShortcutPackageItem { getPackageInfo().isBackupAllowed()); } + if (!forBackup) { + for (int j = 0; j < shareTargetSize; j++) { + mShareTargets.get(j).saveToXml(out); + } + } + out.endTag(null, TAG_ROOT); } @@ -1627,6 +1635,9 @@ class ShortcutPackage extends ShortcutPackageItem { // Don't use addShortcut(), we don't need to save the icon. ret.mShortcuts.put(si.getId(), si); continue; + case TAG_SHARE_TARGET: + ret.mShareTargets.add(ShareTargetInfo.loadFromXml(parser)); + continue; } } ShortcutService.warnForInvalidTag(depth, tag); diff --git a/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.java b/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.java index 22eb9fdaa53c..f8c4f6b2cdba 100644 --- a/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.java +++ b/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.java @@ -143,12 +143,6 @@ public final class DefaultPermissionGrantPolicy { CONTACTS_PERMISSIONS.add(Manifest.permission.GET_ACCOUNTS); } - private static final Set<String> LOCATION_PERMISSIONS = new ArraySet<>(); - static { - LOCATION_PERMISSIONS.add(Manifest.permission.ACCESS_FINE_LOCATION); - LOCATION_PERMISSIONS.add(Manifest.permission.ACCESS_COARSE_LOCATION); - } - private static final Set<String> ALWAYS_LOCATION_PERMISSIONS = new ArraySet<>(); static { ALWAYS_LOCATION_PERMISSIONS.add(Manifest.permission.ACCESS_FINE_LOCATION); @@ -453,7 +447,8 @@ public final class DefaultPermissionGrantPolicy { // SetupWizard grantPermissionsToSystemPackage( getKnownPackage(PackageManagerInternal.PACKAGE_SETUP_WIZARD, userId), userId, - PHONE_PERMISSIONS, CONTACTS_PERMISSIONS, LOCATION_PERMISSIONS, CAMERA_PERMISSIONS); + PHONE_PERMISSIONS, CONTACTS_PERMISSIONS, ALWAYS_LOCATION_PERMISSIONS, + CAMERA_PERMISSIONS); // Camera grantPermissionsToSystemPackage( @@ -585,7 +580,7 @@ public final class DefaultPermissionGrantPolicy { // Maps grantPermissionsToSystemPackage( getDefaultSystemHandlerActivityPackageForCategory(Intent.CATEGORY_APP_MAPS, userId), - userId, LOCATION_PERMISSIONS); + userId, ALWAYS_LOCATION_PERMISSIONS); // Gallery grantPermissionsToSystemPackage( @@ -609,14 +604,14 @@ public final class DefaultPermissionGrantPolicy { } } grantPermissionsToPackage(browserPackage, userId, false /* ignoreSystemPackage */, - true /*whitelistRestrictedPermissions*/, LOCATION_PERMISSIONS); + true /*whitelistRestrictedPermissions*/, ALWAYS_LOCATION_PERMISSIONS); // Voice interaction if (voiceInteractPackageNames != null) { for (String voiceInteractPackageName : voiceInteractPackageNames) { grantPermissionsToSystemPackage(voiceInteractPackageName, userId, CONTACTS_PERMISSIONS, CALENDAR_PERMISSIONS, MICROPHONE_PERMISSIONS, - PHONE_PERMISSIONS, SMS_PERMISSIONS, LOCATION_PERMISSIONS); + PHONE_PERMISSIONS, SMS_PERMISSIONS, ALWAYS_LOCATION_PERMISSIONS); } } @@ -625,7 +620,7 @@ public final class DefaultPermissionGrantPolicy { grantPermissionsToSystemPackage( getDefaultSystemHandlerActivityPackage( SearchManager.INTENT_ACTION_GLOBAL_SEARCH, userId), - userId, MICROPHONE_PERMISSIONS, LOCATION_PERMISSIONS); + userId, MICROPHONE_PERMISSIONS, ALWAYS_LOCATION_PERMISSIONS); } // Voice recognition @@ -667,7 +662,7 @@ public final class DefaultPermissionGrantPolicy { .addCategory(Intent.CATEGORY_LAUNCHER_APP); grantPermissionsToSystemPackage( getDefaultSystemHandlerActivityPackage(homeIntent, userId), userId, - LOCATION_PERMISSIONS); + ALWAYS_LOCATION_PERMISSIONS); // Watches if (mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_WATCH, 0)) { @@ -676,18 +671,18 @@ public final class DefaultPermissionGrantPolicy { String wearPackage = getDefaultSystemHandlerActivityPackageForCategory( Intent.CATEGORY_HOME_MAIN, userId); grantPermissionsToSystemPackage(wearPackage, userId, - CONTACTS_PERMISSIONS, MICROPHONE_PERMISSIONS, LOCATION_PERMISSIONS); + CONTACTS_PERMISSIONS, MICROPHONE_PERMISSIONS, ALWAYS_LOCATION_PERMISSIONS); grantSystemFixedPermissionsToSystemPackage(wearPackage, userId, PHONE_PERMISSIONS); // Fitness tracking on watches grantPermissionsToSystemPackage( getDefaultSystemHandlerActivityPackage(ACTION_TRACK, userId), userId, - SENSORS_PERMISSIONS, LOCATION_PERMISSIONS); + SENSORS_PERMISSIONS, ALWAYS_LOCATION_PERMISSIONS); } // Print Spooler grantSystemFixedPermissionsToSystemPackage(PrintManager.PRINT_SPOOLER_PACKAGE_NAME, userId, - LOCATION_PERMISSIONS); + ALWAYS_LOCATION_PERMISSIONS); // EmergencyInfo grantSystemFixedPermissionsToSystemPackage( @@ -725,7 +720,7 @@ public final class DefaultPermissionGrantPolicy { if (!TextUtils.isEmpty(textClassifierPackageName)) { grantPermissionsToSystemPackage(textClassifierPackageName, userId, PHONE_PERMISSIONS, SMS_PERMISSIONS, CALENDAR_PERMISSIONS, - LOCATION_PERMISSIONS, CONTACTS_PERMISSIONS); + ALWAYS_LOCATION_PERMISSIONS, CONTACTS_PERMISSIONS); } // Atthention Service @@ -835,7 +830,7 @@ public final class DefaultPermissionGrantPolicy { } for (String packageName : packageNames) { grantPermissionsToSystemPackage(packageName, userId, - PHONE_PERMISSIONS, MICROPHONE_PERMISSIONS, LOCATION_PERMISSIONS, + PHONE_PERMISSIONS, MICROPHONE_PERMISSIONS, ALWAYS_LOCATION_PERMISSIONS, CAMERA_PERMISSIONS, CONTACTS_PERMISSIONS); } } @@ -850,7 +845,7 @@ public final class DefaultPermissionGrantPolicy { // Grant these permissions as system-fixed, so that nobody can accidentally // break cellular data. grantSystemFixedPermissionsToSystemPackage(packageName, userId, - PHONE_PERMISSIONS, LOCATION_PERMISSIONS); + PHONE_PERMISSIONS, ALWAYS_LOCATION_PERMISSIONS); } } @@ -864,7 +859,7 @@ public final class DefaultPermissionGrantPolicy { PackageInfo pkg = getSystemPackageInfo(packageName); if (isSystemPackage(pkg) && doesPackageSupportRuntimePermissions(pkg)) { revokeRuntimePermissions(packageName, PHONE_PERMISSIONS, true, userId); - revokeRuntimePermissions(packageName, LOCATION_PERMISSIONS, true, userId); + revokeRuntimePermissions(packageName, ALWAYS_LOCATION_PERMISSIONS, true, userId); } } } @@ -889,7 +884,7 @@ public final class DefaultPermissionGrantPolicy { public void grantDefaultPermissionsToDefaultBrowser(String packageName, int userId) { Log.i(TAG, "Granting permissions to default browser for user:" + userId); - grantPermissionsToSystemPackage(packageName, userId, LOCATION_PERMISSIONS); + grantPermissionsToSystemPackage(packageName, userId, ALWAYS_LOCATION_PERMISSIONS); } private String getDefaultSystemHandlerActivityPackage(String intentAction, int userId) { diff --git a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java index 4edd9eff7397..a7da3ec950f4 100644 --- a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java +++ b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java @@ -1897,14 +1897,15 @@ public class PermissionManagerService { return Boolean.TRUE == granted; } - private boolean isPermissionsReviewRequired(PackageParser.Package pkg, int userId) { + private boolean isPermissionsReviewRequired(@NonNull PackageParser.Package pkg, + @UserIdInt int userId) { // Permission review applies only to apps not supporting the new permission model. if (pkg.applicationInfo.targetSdkVersion >= Build.VERSION_CODES.M) { return false; } // Legacy apps have the permission and get user consent on launch. - if (pkg == null || pkg.mExtras == null) { + if (pkg.mExtras == null) { return false; } final PackageSetting ps = (PackageSetting) pkg.mExtras; @@ -2128,7 +2129,7 @@ public class PermissionManagerService { } if (bp.isSoftRestricted() && !SoftRestrictedPermissionPolicy.forPermission(mContext, - pkg.applicationInfo, permName).canBeGranted()) { + pkg.applicationInfo, UserHandle.of(userId), permName).canBeGranted()) { Log.e(TAG, "Cannot grant soft restricted permission " + permName + " for package " + packageName); return; @@ -2952,7 +2953,7 @@ public class PermissionManagerService { PermissionManagerService.this.systemReady(); } @Override - public boolean isPermissionsReviewRequired(Package pkg, int userId) { + public boolean isPermissionsReviewRequired(@NonNull Package pkg, @UserIdInt int userId) { return PermissionManagerService.this.isPermissionsReviewRequired(pkg, userId); } @Override @@ -3126,6 +3127,27 @@ public class PermissionManagerService { } @Override + public @NonNull ArrayList<PermissionInfo> getAllPermissionWithProtectionLevel( + @PermissionInfo.Protection int protectionLevel) { + ArrayList<PermissionInfo> matchingPermissions = new ArrayList<>(); + + synchronized (PermissionManagerService.this.mLock) { + int numTotalPermissions = mSettings.mPermissions.size(); + + for (int i = 0; i < numTotalPermissions; i++) { + BasePermission bp = mSettings.mPermissions.valueAt(i); + + if (bp.perm != null && bp.perm.info != null + && bp.protectionLevel == protectionLevel) { + matchingPermissions.add(bp.perm.info); + } + } + } + + return matchingPermissions; + } + + @Override public @Nullable byte[] backupRuntimePermissions(@NonNull UserHandle user) { return PermissionManagerService.this.backupRuntimePermissions(user); } diff --git a/services/core/java/com/android/server/pm/permission/PermissionManagerServiceInternal.java b/services/core/java/com/android/server/pm/permission/PermissionManagerServiceInternal.java index 9fb71f44716b..e5e9598bec57 100644 --- a/services/core/java/com/android/server/pm/permission/PermissionManagerServiceInternal.java +++ b/services/core/java/com/android/server/pm/permission/PermissionManagerServiceInternal.java @@ -18,6 +18,7 @@ package com.android.server.pm.permission; import android.annotation.NonNull; import android.annotation.Nullable; +import android.annotation.UserIdInt; import android.content.pm.PackageManager; import android.content.pm.PackageManager.PermissionInfoFlags; import android.content.pm.PackageParser; @@ -65,7 +66,8 @@ public abstract class PermissionManagerServiceInternal extends PermissionManager public abstract void systemReady(); - public abstract boolean isPermissionsReviewRequired(PackageParser.Package pkg, int userId); + public abstract boolean isPermissionsReviewRequired(@NonNull PackageParser.Package pkg, + @UserIdInt int userId); public abstract void grantRuntimePermission( @NonNull String permName, @NonNull String packageName, boolean overridePolicy, @@ -193,4 +195,8 @@ public abstract class PermissionManagerServiceInternal extends PermissionManager /** HACK HACK methods to allow for partial migration of data to the PermissionManager class */ public abstract @Nullable BasePermission getPermissionTEMP(@NonNull String permName); + + /** Get all permission that have a certain protection level */ + public abstract @NonNull ArrayList<PermissionInfo> getAllPermissionWithProtectionLevel( + @PermissionInfo.Protection int protectionLevel); } diff --git a/services/core/java/com/android/server/policy/PermissionPolicyService.java b/services/core/java/com/android/server/policy/PermissionPolicyService.java index 1d01a84138a4..037293f9536c 100644 --- a/services/core/java/com/android/server/policy/PermissionPolicyService.java +++ b/services/core/java/com/android/server/policy/PermissionPolicyService.java @@ -19,9 +19,11 @@ package com.android.server.policy; import static android.app.AppOpsManager.MODE_ALLOWED; import static android.app.AppOpsManager.MODE_DEFAULT; import static android.app.AppOpsManager.MODE_ERRORED; +import static android.app.AppOpsManager.MODE_FOREGROUND; import static android.app.AppOpsManager.MODE_IGNORED; import static android.app.AppOpsManager.OP_NONE; import static android.content.pm.PackageManager.FLAG_PERMISSION_APPLY_RESTRICTION; +import static android.content.pm.PackageManager.FLAG_PERMISSION_REVIEW_REQUIRED; import static android.content.pm.PackageManager.GET_PERMISSIONS; import android.annotation.NonNull; @@ -40,20 +42,29 @@ import android.content.pm.PackageParser; import android.content.pm.PermissionInfo; import android.os.Build; import android.os.Process; +import android.os.RemoteException; +import android.os.ServiceManager; import android.os.UserHandle; import android.os.UserManagerInternal; import android.permission.PermissionControllerManager; -import android.permission.PermissionManagerInternal; import android.provider.Telephony; import android.telecom.TelecomManager; +import android.util.ArraySet; +import android.util.LongSparseLongArray; +import android.util.Pair; import android.util.Slog; import android.util.SparseBooleanArray; import android.util.SparseIntArray; import com.android.internal.annotations.GuardedBy; +import com.android.internal.app.IAppOpsCallback; +import com.android.internal.app.IAppOpsService; +import com.android.internal.util.IntPair; +import com.android.internal.util.function.pooled.PooledLambda; import com.android.server.FgThread; import com.android.server.LocalServices; import com.android.server.SystemService; +import com.android.server.pm.permission.PermissionManagerServiceInternal; import java.util.ArrayList; import java.util.concurrent.CountDownLatch; @@ -75,6 +86,13 @@ public final class PermissionPolicyService extends SystemService { @GuardedBy("mLock") private final SparseBooleanArray mIsStarted = new SparseBooleanArray(); + /** + * Whether an async {@link #synchronizePackagePermissionsAndAppOpsForUser} is currently + * scheduled for a package/user. + */ + @GuardedBy("mLock") + private final ArraySet<Pair<String, Integer>> mIsPackageSyncsScheduled = new ArraySet<>(); + public PermissionPolicyService(@NonNull Context context) { super(context); @@ -85,8 +103,10 @@ public final class PermissionPolicyService extends SystemService { public void onStart() { final PackageManagerInternal packageManagerInternal = LocalServices.getService( PackageManagerInternal.class); - final PermissionManagerInternal permManagerInternal = LocalServices.getService( - PermissionManagerInternal.class); + final PermissionManagerServiceInternal permManagerInternal = LocalServices.getService( + PermissionManagerServiceInternal.class); + final IAppOpsService appOpsService = IAppOpsService.Stub.asInterface( + ServiceManager.getService(Context.APP_OPS_SERVICE)); packageManagerInternal.getPackageList(new PackageListObserver() { @Override @@ -110,11 +130,79 @@ public final class PermissionPolicyService extends SystemService { }); permManagerInternal.addOnRuntimePermissionStateChangedListener( - (packageName, changedUserId) -> { - if (isStarted(changedUserId)) { - synchronizePackagePermissionsAndAppOpsForUser(packageName, changedUserId); + this::synchronizePackagePermissionsAndAppOpsAsyncForUser); + + IAppOpsCallback appOpsListener = new IAppOpsCallback.Stub() { + public void opChanged(int op, int uid, String packageName) { + synchronizePackagePermissionsAndAppOpsAsyncForUser(packageName, + UserHandle.getUserId(uid)); + } + }; + + final ArrayList<PermissionInfo> dangerousPerms = + permManagerInternal.getAllPermissionWithProtectionLevel( + PermissionInfo.PROTECTION_DANGEROUS); + + try { + int numDangerousPerms = dangerousPerms.size(); + for (int i = 0; i < numDangerousPerms; i++) { + PermissionInfo perm = dangerousPerms.get(i); + + if (perm.isHardRestricted() || perm.backgroundPermission != null) { + appOpsService.startWatchingMode(getSwitchOp(perm.name), null, appOpsListener); + } else if (perm.isSoftRestricted()) { + appOpsService.startWatchingMode(getSwitchOp(perm.name), null, appOpsListener); + + SoftRestrictedPermissionPolicy policy = + SoftRestrictedPermissionPolicy.forPermission(null, null, null, + perm.name); + if (policy.resolveAppOp() != OP_NONE) { + appOpsService.startWatchingMode(policy.resolveAppOp(), null, + appOpsListener); } - }); + } + } + } catch (RemoteException doesNotHappen) { + Slog.wtf(LOG_TAG, "Cannot set up app-ops listener"); + } + } + + /** + * Get op that controls the access related to the permission. + * + * <p>Usually the permission-op relationship is 1:1 but some permissions (e.g. fine location) + * {@link AppOpsManager#sOpToSwitch share an op} to control the access. + * + * @param permission The permission + * + * @return The op that controls the access of the permission + */ + private static int getSwitchOp(@NonNull String permission) { + int op = AppOpsManager.permissionToOpCode(permission); + if (op == OP_NONE) { + return OP_NONE; + } + + return AppOpsManager.opToSwitch(op); + } + + private void synchronizePackagePermissionsAndAppOpsAsyncForUser(@NonNull String packageName, + @UserIdInt int changedUserId) { + if (isStarted(changedUserId)) { + synchronized (mLock) { + if (mIsPackageSyncsScheduled.add(new Pair<>(packageName, changedUserId))) { + FgThread.getHandler().sendMessage(PooledLambda.obtainMessage( + PermissionPolicyService + ::synchronizePackagePermissionsAndAppOpsForUser, + this, packageName, changedUserId)); + } else { + if (DEBUG) { + Slog.v(LOG_TAG, "sync for " + packageName + "/" + changedUserId + + " already scheduled"); + } + } + } + } } @Override @@ -229,10 +317,14 @@ public final class PermissionPolicyService extends SystemService { */ private void synchronizePackagePermissionsAndAppOpsForUser(@NonNull String packageName, @UserIdInt int userId) { + synchronized (mLock) { + mIsPackageSyncsScheduled.remove(new Pair<>(packageName, userId)); + } + if (DEBUG) { Slog.v(LOG_TAG, - "synchronizePackagePermissionsAndAppOpsForUser(" + packageName + ", " + userId - + ")"); + "synchronizePackagePermissionsAndAppOpsForUser(" + packageName + ", " + + userId + ")"); } final PackageManagerInternal packageManagerInternal = LocalServices.getService( @@ -290,43 +382,60 @@ public final class PermissionPolicyService extends SystemService { * * Currently, only used by the restricted permissions logic. * - * @see #syncRestrictedOps + * @see #syncPackages */ - private final @NonNull ArrayList<OpToRestrict> mOpsToDefault = new ArrayList<>(); + private final @NonNull ArrayList<OpToChange> mOpsToDefault = new ArrayList<>(); /** * All ops that need to be flipped to allow if default. * * Currently, only used by the restricted permissions logic. * - * @see #syncRestrictedOps + * @see #syncPackages */ - private final @NonNull ArrayList<OpToUnrestrict> mOpsToAllowIfDefault = new ArrayList<>(); + private final @NonNull ArrayList<OpToChange> mOpsToAllowIfDefault = new ArrayList<>(); /** * All ops that need to be flipped to allow. * - * Currently, only used by the restricted permissions logic. - * - * @see #syncRestrictedOps + * @see #syncPackages */ - private final @NonNull ArrayList<OpToUnrestrict> mOpsToAllow = new ArrayList<>(); + private final @NonNull ArrayList<OpToChange> mOpsToAllow = new ArrayList<>(); /** * All ops that need to be flipped to ignore if default. * * Currently, only used by the restricted permissions logic. * - * @see #syncRestrictedOps + * @see #syncPackages + */ + private final @NonNull ArrayList<OpToChange> mOpsToIgnoreIfDefault = new ArrayList<>(); + + /** + * All ops that need to be flipped to ignore. + * + * @see #syncPackages */ - private final @NonNull ArrayList<OpToUnrestrict> mOpsToIgnoreIfDefault = new ArrayList<>(); + private final @NonNull ArrayList<OpToChange> mOpsToIgnore = new ArrayList<>(); /** - * All foreground permissions + * All ops that need to be flipped to foreground. + * + * Currently, only used by the foreground/background permissions logic. + * + * @see #syncPackages + */ + private final @NonNull ArrayList<OpToChange> mOpsToForeground = new ArrayList<>(); + + /** + * All ops that need to be flipped to foreground if allow. + * + * Currently, only used by the foreground/background permissions logic. * - * @see #syncOpsOfFgPermissions() + * @see #syncPackages */ - private final @NonNull ArrayList<FgPermission> mFgPermOps = new ArrayList<>(); + private final @NonNull ArrayList<OpToChange> mOpsToForegroundIfAllow = + new ArrayList<>(); PermissionToOpSynchroniser(@NonNull Context context) { mContext = context; @@ -335,74 +444,100 @@ public final class PermissionPolicyService extends SystemService { } /** - * Set app ops that belong to restricted permissions. + * Set app ops that were added in {@link #addPackage}. * * <p>This processes ops previously added by {@link #addOpIfRestricted} */ - private void syncRestrictedOps() { + private void syncPackages() { + // Remember which ops were already set. This makes sure that we always set the most + // permissive mode if two OpChanges are scheduled. This can e.g. happen if two + // permissions change the same op. See {@link #getSwitchOp}. + LongSparseLongArray alreadySetAppOps = new LongSparseLongArray(); + final int allowCount = mOpsToAllow.size(); for (int i = 0; i < allowCount; i++) { - final OpToUnrestrict op = mOpsToAllow.get(i); - setUidModeAllowed(op.code, op.uid); + final OpToChange op = mOpsToAllow.get(i); + + setUidModeAllowed(op.code, op.uid, op.packageName); + alreadySetAppOps.put(IntPair.of(op.uid, op.code), 1); } + final int allowIfDefaultCount = mOpsToAllowIfDefault.size(); for (int i = 0; i < allowIfDefaultCount; i++) { - final OpToUnrestrict op = mOpsToAllowIfDefault.get(i); - setUidModeAllowedIfDefault(op.code, op.uid, op.packageName); + final OpToChange op = mOpsToAllowIfDefault.get(i); + if (alreadySetAppOps.indexOfKey(IntPair.of(op.uid, op.code)) >= 0) { + continue; + } + + boolean wasSet = setUidModeAllowedIfDefault(op.code, op.uid, op.packageName); + if (wasSet) { + alreadySetAppOps.put(IntPair.of(op.uid, op.code), 1); + } } + + final int foregroundIfAllowedCount = mOpsToForegroundIfAllow.size(); + for (int i = 0; i < foregroundIfAllowedCount; i++) { + final OpToChange op = mOpsToForegroundIfAllow.get(i); + if (alreadySetAppOps.indexOfKey(IntPair.of(op.uid, op.code)) >= 0) { + continue; + } + + boolean wasSet = setUidModeForegroundIfAllow(op.code, op.uid, op.packageName); + if (wasSet) { + alreadySetAppOps.put(IntPair.of(op.uid, op.code), 1); + } + } + + final int foregroundCount = mOpsToForeground.size(); + for (int i = 0; i < foregroundCount; i++) { + final OpToChange op = mOpsToForeground.get(i); + if (alreadySetAppOps.indexOfKey(IntPair.of(op.uid, op.code)) >= 0) { + continue; + } + + setUidModeForeground(op.code, op.uid, op.packageName); + alreadySetAppOps.put(IntPair.of(op.uid, op.code), 1); + } + + final int ignoreCount = mOpsToIgnore.size(); + for (int i = 0; i < ignoreCount; i++) { + final OpToChange op = mOpsToIgnore.get(i); + if (alreadySetAppOps.indexOfKey(IntPair.of(op.uid, op.code)) >= 0) { + continue; + } + + setUidModeIgnored(op.code, op.uid, op.packageName); + alreadySetAppOps.put(IntPair.of(op.uid, op.code), 1); + } + final int ignoreIfDefaultCount = mOpsToIgnoreIfDefault.size(); for (int i = 0; i < ignoreIfDefaultCount; i++) { - final OpToUnrestrict op = mOpsToIgnoreIfDefault.get(i); - setUidModeIgnoredIfDefault(op.code, op.uid, op.packageName); + final OpToChange op = mOpsToIgnoreIfDefault.get(i); + if (alreadySetAppOps.indexOfKey(IntPair.of(op.uid, op.code)) >= 0) { + continue; + } + + boolean wasSet = setUidModeIgnoredIfDefault(op.code, op.uid, op.packageName); + if (wasSet) { + alreadySetAppOps.put(IntPair.of(op.uid, op.code), 1); + } } + final int defaultCount = mOpsToDefault.size(); for (int i = 0; i < defaultCount; i++) { - final OpToRestrict op = mOpsToDefault.get(i); - setUidModeDefault(op.code, op.uid); - } - } - - /** - * Set app ops that belong to restricted permissions. - * - * <p>This processed ops previously added by {@link #addOpIfRestricted} - */ - private void syncOpsOfFgPermissions() { - int numFgPermOps = mFgPermOps.size(); - for (int i = 0; i < numFgPermOps; i++) { - FgPermission perm = mFgPermOps.get(i); - - if (mPackageManager.checkPermission(perm.fgPermissionName, perm.packageName) - == PackageManager.PERMISSION_GRANTED) { - if (mPackageManager.checkPermission(perm.bgPermissionName, perm.packageName) - == PackageManager.PERMISSION_GRANTED) { - mAppOpsManager.setUidMode( - AppOpsManager.permissionToOpCode(perm.fgPermissionName), perm.uid, - AppOpsManager.MODE_ALLOWED); - } else { - mAppOpsManager.setUidMode( - AppOpsManager.permissionToOpCode(perm.fgPermissionName), perm.uid, - AppOpsManager.MODE_FOREGROUND); - } - } else { - mAppOpsManager.setUidMode( - AppOpsManager.permissionToOpCode(perm.fgPermissionName), perm.uid, - AppOpsManager.MODE_IGNORED); + final OpToChange op = mOpsToDefault.get(i); + if (alreadySetAppOps.indexOfKey(IntPair.of(op.uid, op.code)) >= 0) { + continue; } - } - } - /** - * Synchronize all previously {@link #addPackage added} packages. - */ - void syncPackages() { - syncRestrictedOps(); - syncOpsOfFgPermissions(); + setUidModeDefault(op.code, op.uid, op.packageName); + alreadySetAppOps.put(IntPair.of(op.uid, op.code), 1); + } } /** * Add op that belong to a restricted permission for later processing in - * {@link #syncRestrictedOps}. + * {@link #syncPackages()}. * * <p>Note: Called with the package lock held. Do <u>not</u> call into app-op manager. * @@ -412,7 +547,7 @@ public final class PermissionPolicyService extends SystemService { private void addOpIfRestricted(@NonNull PermissionInfo permissionInfo, @NonNull PackageInfo pkg) { final String permission = permissionInfo.name; - final int opCode = AppOpsManager.permissionToOpCode(permission); + final int opCode = getSwitchOp(permission); final int uid = pkg.applicationInfo.uid; if (!permissionInfo.isRestricted()) { @@ -424,36 +559,51 @@ public final class PermissionPolicyService extends SystemService { mContext.getUser()) & FLAG_PERMISSION_APPLY_RESTRICTION) != 0; if (permissionInfo.isHardRestricted()) { - if (applyRestriction) { - mOpsToDefault.add(new OpToRestrict(uid, opCode)); - } else { - mOpsToAllowIfDefault.add(new OpToUnrestrict(uid, pkg.packageName, opCode)); + if (opCode != OP_NONE) { + if (applyRestriction) { + mOpsToDefault.add(new OpToChange(uid, pkg.packageName, opCode)); + } else { + mOpsToAllowIfDefault.add(new OpToChange(uid, pkg.packageName, opCode)); + } } } else if (permissionInfo.isSoftRestricted()) { final SoftRestrictedPermissionPolicy policy = SoftRestrictedPermissionPolicy.forPermission(mContext, pkg.applicationInfo, - permission); + mContext.getUser(), permission); - final int op = policy.getAppOp(); + if (opCode != OP_NONE) { + if (policy.canBeGranted()) { + mOpsToAllowIfDefault.add(new OpToChange(uid, pkg.packageName, opCode)); + } else { + mOpsToDefault.add(new OpToChange(uid, pkg.packageName, opCode)); + } + } + + final int op = policy.resolveAppOp(); if (op != OP_NONE) { - switch (policy.getAppOpMode()) { + switch (policy.getDesiredOpMode()) { case MODE_DEFAULT: - mOpsToDefault.add(new OpToRestrict(uid, op)); + mOpsToDefault.add(new OpToChange(uid, pkg.packageName, op)); break; case MODE_ALLOWED: if (policy.shouldSetAppOpIfNotDefault()) { - mOpsToAllow.add(new OpToUnrestrict(uid, pkg.packageName, op)); + mOpsToAllow.add(new OpToChange(uid, pkg.packageName, op)); } else { - mOpsToAllowIfDefault.add(new OpToUnrestrict(uid, pkg.packageName, - op)); + mOpsToAllowIfDefault.add( + new OpToChange(uid, pkg.packageName, op)); } break; + case MODE_FOREGROUND: + Slog.wtf(LOG_TAG, + "Setting appop to foreground is not implemented"); + break; case MODE_IGNORED: if (policy.shouldSetAppOpIfNotDefault()) { - Slog.wtf(LOG_TAG, "Always ignoring appops is not implemented"); + mOpsToIgnore.add(new OpToChange(uid, pkg.packageName, op)); } else { - mOpsToIgnoreIfDefault.add(new OpToUnrestrict(uid, pkg.packageName, - op)); + mOpsToIgnoreIfDefault.add( + new OpToChange(uid, pkg.packageName, + op)); } break; case MODE_ERRORED: @@ -463,19 +613,78 @@ public final class PermissionPolicyService extends SystemService { } } + private boolean isBgPermRestricted(@NonNull String pkg, @NonNull String perm, int uid) { + try { + final PermissionInfo bgPermInfo = mPackageManager.getPermissionInfo(perm, 0); + + if (bgPermInfo.isSoftRestricted()) { + Slog.wtf(LOG_TAG, "Support for soft restricted background permissions not " + + "implemented"); + } + + return bgPermInfo.isHardRestricted() && (mPackageManager.getPermissionFlags( + perm, pkg, UserHandle.getUserHandleForUid(uid)) + & FLAG_PERMISSION_APPLY_RESTRICTION) != 0; + } catch (NameNotFoundException e) { + Slog.w(LOG_TAG, "Cannot read permission state of " + perm, e); + return false; + } + } + + /** + * Add op that belong to a foreground permission for later processing in + * {@link #syncPackages()}. + * + * <p>Note: Called with the package lock held. Do <u>not</u> call into app-op manager. + * + * @param permissionInfo The permission that is currently looked at + * @param pkg The package looked at + */ private void addOpIfFgPermissions(@NonNull PermissionInfo permissionInfo, @NonNull PackageInfo pkg) { - if (pkg.applicationInfo.targetSdkVersion < Build.VERSION_CODES.M) { - // Pre-M apps do not store their fg/bg state in the permissions + final String bgPermissionName = permissionInfo.backgroundPermission; + + if (bgPermissionName == null) { return; } - if (permissionInfo.backgroundPermission == null) { + final String permission = permissionInfo.name; + final int opCode = getSwitchOp(permission); + final String pkgName = pkg.packageName; + final int uid = pkg.applicationInfo.uid; + + // App does not support runtime permissions. Hence the state is encoded in the app-op. + // To not override unrecoverable state don't change app-op unless bg perm is reviewed. + if (pkg.applicationInfo.targetSdkVersion < Build.VERSION_CODES.M) { + // If the review is required for this permission, the grant state does not + // really matter. To have a stable state, don't change the app-op if review is still + // pending. + int flags = mPackageManager.getPermissionFlags(bgPermissionName, + pkg.packageName, UserHandle.getUserHandleForUid(uid)); + + if ((flags & FLAG_PERMISSION_REVIEW_REQUIRED) == 0 + && isBgPermRestricted(pkgName, bgPermissionName, uid)) { + mOpsToForegroundIfAllow.add(new OpToChange(uid, pkgName, opCode)); + } + return; } - mFgPermOps.add(new FgPermission(pkg.applicationInfo.uid, pkg.packageName, - permissionInfo.name, permissionInfo.backgroundPermission)); + if (mPackageManager.checkPermission(permission, pkgName) + == PackageManager.PERMISSION_GRANTED) { + final boolean isBgHardRestricted = isBgPermRestricted(pkgName, bgPermissionName, + uid); + final boolean isBgPermGranted = mPackageManager.checkPermission(bgPermissionName, + pkgName) == PackageManager.PERMISSION_GRANTED; + + if (!isBgHardRestricted && isBgPermGranted) { + mOpsToAllow.add(new OpToChange(uid, pkgName, opCode)); + } else { + mOpsToForeground.add(new OpToChange(uid, pkgName, opCode)); + } + } else { + mOpsToIgnore.add(new OpToChange(uid, pkgName, opCode)); + } } /** @@ -500,7 +709,7 @@ public final class PermissionPolicyService extends SystemService { } for (String permission : pkg.requestedPermissions) { - final int opCode = AppOpsManager.permissionToOpCode(permission); + final int opCode = getSwitchOp(permission); if (opCode == OP_NONE) { continue; } @@ -517,65 +726,69 @@ public final class PermissionPolicyService extends SystemService { } } - private void setUidModeAllowedIfDefault(int opCode, int uid, @NonNull String packageName) { - setUidModeIfDefault(opCode, uid, AppOpsManager.MODE_ALLOWED, packageName); + private boolean setUidModeAllowedIfDefault(int opCode, int uid, + @NonNull String packageName) { + return setUidModeIfMode(opCode, uid, MODE_DEFAULT, MODE_ALLOWED, packageName); + } + + private void setUidModeAllowed(int opCode, int uid, @NonNull String packageName) { + setUidMode(opCode, uid, MODE_ALLOWED, packageName); } - private void setUidModeAllowed(int opCode, int uid) { - mAppOpsManager.setUidMode(opCode, uid, AppOpsManager.MODE_ALLOWED); + private boolean setUidModeForegroundIfAllow(int opCode, int uid, + @NonNull String packageName) { + return setUidModeIfMode(opCode, uid, MODE_ALLOWED, MODE_FOREGROUND, packageName); } - private void setUidModeIgnoredIfDefault(int opCode, int uid, @NonNull String packageName) { - setUidModeIfDefault(opCode, uid, AppOpsManager.MODE_IGNORED, packageName); + private void setUidModeForeground(int opCode, int uid, @NonNull String packageName) { + setUidMode(opCode, uid, MODE_FOREGROUND, packageName); } - private void setUidModeIfDefault(int opCode, int uid, int mode, + private boolean setUidModeIgnoredIfDefault(int opCode, int uid, @NonNull String packageName) { - final int currentMode = mAppOpsManager.unsafeCheckOpRaw(AppOpsManager - .opToPublicName(opCode), uid, packageName); - if (currentMode == MODE_DEFAULT) { - mAppOpsManager.setUidMode(opCode, uid, mode); - } + return setUidModeIfMode(opCode, uid, MODE_DEFAULT, MODE_IGNORED, packageName); } - private void setUidModeDefault(int opCode, int uid) { - mAppOpsManager.setUidMode(opCode, uid, MODE_DEFAULT); + private void setUidModeIgnored(int opCode, int uid, @NonNull String packageName) { + setUidMode(opCode, uid, MODE_IGNORED, packageName); } - private class OpToRestrict { - final int uid; - final int code; + private void setUidMode(int opCode, int uid, int mode, + @NonNull String packageName) { + final int currentMode = mAppOpsManager.unsafeCheckOpRaw(AppOpsManager + .opToPublicName(opCode), uid, packageName); - OpToRestrict(int uid, int code) { - this.uid = uid; - this.code = code; + if (currentMode != mode) { + mAppOpsManager.setUidMode(opCode, uid, mode); } } - private class OpToUnrestrict { - final int uid; - final @NonNull String packageName; - final int code; + private boolean setUidModeIfMode(int opCode, int uid, int requiredModeBefore, int newMode, + @NonNull String packageName) { + final int currentMode = mAppOpsManager.unsafeCheckOpRaw(AppOpsManager + .opToPublicName(opCode), uid, packageName); - OpToUnrestrict(int uid, @NonNull String packageName, int code) { - this.uid = uid; - this.packageName = packageName; - this.code = code; + if (currentMode == requiredModeBefore) { + mAppOpsManager.setUidMode(opCode, uid, newMode); + return true; } + + return false; } - private class FgPermission { + private void setUidModeDefault(int opCode, int uid, String packageName) { + setUidMode(opCode, uid, MODE_DEFAULT, packageName); + } + + private class OpToChange { final int uid; final @NonNull String packageName; - final @NonNull String fgPermissionName; - final @NonNull String bgPermissionName; + final int code; - private FgPermission(int uid, @NonNull String packageName, - @NonNull String fgPermissionName, @NonNull String bgPermissionName) { + OpToChange(int uid, @NonNull String packageName, int code) { this.uid = uid; this.packageName = packageName; - this.fgPermissionName = fgPermissionName; - this.bgPermissionName = bgPermissionName; + this.code = code; } } } diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java index d624a85acb6e..da87b2f1994b 100644 --- a/services/core/java/com/android/server/policy/PhoneWindowManager.java +++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java @@ -4863,6 +4863,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { } } startedWakingUp(ON_BECAUSE_OF_UNKNOWN); + finishedWakingUp(ON_BECAUSE_OF_UNKNOWN); screenTurningOn(null); screenTurnedOn(); } @@ -5198,6 +5199,11 @@ public class PhoneWindowManager implements WindowManagerPolicy { awakenDreams(); } + if (!isUserSetupComplete()) { + Slog.i(TAG, "Not going home because user setup is in progress."); + return; + } + // Start dock. Intent dock = createHomeDockIntent(); if (dock != null) { diff --git a/services/core/java/com/android/server/policy/SoftRestrictedPermissionPolicy.java b/services/core/java/com/android/server/policy/SoftRestrictedPermissionPolicy.java index e19b708bcdae..d53f6854dfdf 100644 --- a/services/core/java/com/android/server/policy/SoftRestrictedPermissionPolicy.java +++ b/services/core/java/com/android/server/policy/SoftRestrictedPermissionPolicy.java @@ -29,11 +29,12 @@ import static android.content.pm.PackageManager.FLAG_PERMISSION_RESTRICTION_SYST import static android.content.pm.PackageManager.FLAG_PERMISSION_RESTRICTION_UPGRADE_EXEMPT; import android.annotation.NonNull; +import android.annotation.Nullable; import android.app.AppOpsManager; import android.content.Context; import android.content.pm.ApplicationInfo; import android.os.Build; -import android.util.Log; +import android.os.UserHandle; /** * The behavior of soft restricted permissions is different for each permission. This class collects @@ -43,8 +44,6 @@ import android.util.Log; * {@link com.android.packageinstaller.permission.utils.SoftRestrictedPermissionPolicy} */ public abstract class SoftRestrictedPermissionPolicy { - private static final String LOG_TAG = SoftRestrictedPermissionPolicy.class.getSimpleName(); - private static final int FLAGS_PERMISSION_RESTRICTION_ANY_EXEMPT = FLAG_PERMISSION_RESTRICTION_SYSTEM_EXEMPT | FLAG_PERMISSION_RESTRICTION_UPGRADE_EXEMPT @@ -53,12 +52,12 @@ public abstract class SoftRestrictedPermissionPolicy { private static final SoftRestrictedPermissionPolicy DUMMY_POLICY = new SoftRestrictedPermissionPolicy() { @Override - public int getAppOp() { + public int resolveAppOp() { return OP_NONE; } @Override - public int getAppOpMode() { + public int getDesiredOpMode() { return MODE_DEFAULT; } @@ -77,35 +76,51 @@ public abstract class SoftRestrictedPermissionPolicy { * Get the policy for a soft restricted permission. * * @param context A context to use - * @param appInfo The application the permission belongs to + * @param appInfo The application the permission belongs to. Can be {@code null}, but then + * only {@link #resolveAppOp} will work. + * @param user The user the app belongs to. Can be {@code null}, but then only + * {@link #resolveAppOp} will work. * @param permission The name of the permission * * @return The policy for this permission */ public static @NonNull SoftRestrictedPermissionPolicy forPermission(@NonNull Context context, - @NonNull ApplicationInfo appInfo, @NonNull String permission) { + @Nullable ApplicationInfo appInfo, @Nullable UserHandle user, + @NonNull String permission) { switch (permission) { // Storage uses a special app op to decide the mount state and supports soft restriction // where the restricted state allows the permission but only for accessing the medial // collections. - case READ_EXTERNAL_STORAGE: - case WRITE_EXTERNAL_STORAGE: { - int flags = context.getPackageManager().getPermissionFlags( - permission, appInfo.packageName, context.getUser()); - boolean applyRestriction = (flags & FLAG_PERMISSION_APPLY_RESTRICTION) != 0; - boolean isWhiteListed = (flags & FLAGS_PERMISSION_RESTRICTION_ANY_EXEMPT) != 0; - boolean hasRequestedLegacyExternalStorage = - appInfo.hasRequestedLegacyExternalStorage(); - int targetSDK = appInfo.targetSdkVersion; + case READ_EXTERNAL_STORAGE: { + final int flags; + final boolean applyRestriction; + final boolean isWhiteListed; + final boolean hasRequestedLegacyExternalStorage; + final int targetSDK; + + if (appInfo != null) { + flags = context.getPackageManager().getPermissionFlags(permission, + appInfo.packageName, user); + applyRestriction = (flags & FLAG_PERMISSION_APPLY_RESTRICTION) != 0; + isWhiteListed = (flags & FLAGS_PERMISSION_RESTRICTION_ANY_EXEMPT) != 0; + hasRequestedLegacyExternalStorage = appInfo.hasRequestedLegacyExternalStorage(); + targetSDK = appInfo.targetSdkVersion; + } else { + flags = 0; + applyRestriction = false; + isWhiteListed = false; + hasRequestedLegacyExternalStorage = false; + targetSDK = 0; + } return new SoftRestrictedPermissionPolicy() { @Override - public int getAppOp() { + public int resolveAppOp() { return OP_LEGACY_STORAGE; } @Override - public int getAppOpMode() { + public int getDesiredOpMode() { if (applyRestriction) { return MODE_DEFAULT; } else if (hasRequestedLegacyExternalStorage) { @@ -119,7 +134,7 @@ public abstract class SoftRestrictedPermissionPolicy { public boolean shouldSetAppOpIfNotDefault() { // Do not switch from allowed -> ignored as this would mean to retroactively // turn on isolated storage. This will make the app loose all its files. - return getAppOpMode() != MODE_IGNORED; + return getDesiredOpMode() != MODE_IGNORED; } @Override @@ -127,15 +142,47 @@ public abstract class SoftRestrictedPermissionPolicy { if (isWhiteListed || targetSDK >= Build.VERSION_CODES.Q) { return true; } else { - Log.w(LOG_TAG, permission + " for " + appInfo.packageName - + " is not whitelisted and targetSDK " + targetSDK + "<" - + Build.VERSION_CODES.Q); - return false; } } }; } + case WRITE_EXTERNAL_STORAGE: { + final boolean isWhiteListed; + final int targetSDK; + + if (appInfo != null) { + final int flags = context.getPackageManager().getPermissionFlags(permission, + appInfo.packageName, user); + isWhiteListed = (flags & FLAGS_PERMISSION_RESTRICTION_ANY_EXEMPT) != 0; + targetSDK = appInfo.targetSdkVersion; + } else { + isWhiteListed = false; + targetSDK = 0; + } + + return new SoftRestrictedPermissionPolicy() { + @Override + public int resolveAppOp() { + return OP_NONE; + } + + @Override + public int getDesiredOpMode() { + return MODE_DEFAULT; + } + + @Override + public boolean shouldSetAppOpIfNotDefault() { + return false; + } + + @Override + public boolean canBeGranted() { + return isWhiteListed || targetSDK >= Build.VERSION_CODES.Q; + } + }; + } default: return DUMMY_POLICY; } @@ -145,16 +192,16 @@ public abstract class SoftRestrictedPermissionPolicy { * @return An app op to be changed based on the state of the permission or * {@link AppOpsManager#OP_NONE} if not app-op should be set. */ - public abstract int getAppOp(); + public abstract int resolveAppOp(); /** - * @return The mode the {@link #getAppOp() app op} should be in. + * @return The mode the {@link #resolveAppOp() app op} should be in. */ - public abstract @AppOpsManager.Mode int getAppOpMode(); + public abstract @AppOpsManager.Mode int getDesiredOpMode(); /** - * @return If the {@link #getAppOp() app op} should be set even if the app-op is currently not - * {@link AppOpsManager#MODE_DEFAULT}. + * @return If the {@link #resolveAppOp() app op} should be set even if the app-op is currently + * not {@link AppOpsManager#MODE_DEFAULT}. */ public abstract boolean shouldSetAppOpIfNotDefault(); diff --git a/services/core/java/com/android/server/policy/TEST_MAPPING b/services/core/java/com/android/server/policy/TEST_MAPPING index 02b0e21a33c0..c7e241b35e9a 100644 --- a/services/core/java/com/android/server/policy/TEST_MAPPING +++ b/services/core/java/com/android/server/policy/TEST_MAPPING @@ -35,6 +35,17 @@ "include-filter": "android.permission2.cts.RestrictedPermissionsTest" } ] + }, + { + "name": "CtsPermissionTestCases", + "options": [ + { + "include-filter": "android.permission.cts.SplitPermissionTest" + }, + { + "include-filter": "android.permission.cts.BackgroundPermissionsTest" + } + ] } ], "postsubmit": [ diff --git a/services/core/java/com/android/server/role/RoleManagerService.java b/services/core/java/com/android/server/role/RoleManagerService.java index 9cd6b0d32793..c6a1867fa1e9 100644 --- a/services/core/java/com/android/server/role/RoleManagerService.java +++ b/services/core/java/com/android/server/role/RoleManagerService.java @@ -49,6 +49,7 @@ import android.os.ResultReceiver; import android.os.ShellCallback; import android.os.UserHandle; import android.os.UserManagerInternal; +import android.provider.Telephony; import android.service.sms.FinancialSmsService; import android.telephony.IFinancialSmsCallback; import android.text.TextUtils; @@ -60,6 +61,7 @@ import android.util.SparseArray; import android.util.proto.ProtoOutputStream; import com.android.internal.annotations.GuardedBy; +import com.android.internal.telephony.SmsApplication; import com.android.internal.util.ArrayUtils; import com.android.internal.util.BitUtils; import com.android.internal.util.CollectionUtils; @@ -377,13 +379,16 @@ public class RoleManagerService extends SystemService implements RoleUserState.C } @Override - public void onRoleHoldersChanged(@NonNull String roleName, @UserIdInt int userId) { + public void onRoleHoldersChanged(@NonNull String roleName, @UserIdInt int userId, + @Nullable String removedHolder, @Nullable String addedHolder) { mListenerHandler.sendMessage(PooledLambda.obtainMessage( - RoleManagerService::notifyRoleHoldersChanged, this, roleName, userId)); + RoleManagerService::notifyRoleHoldersChanged, this, roleName, userId, + removedHolder, addedHolder)); } @WorkerThread - private void notifyRoleHoldersChanged(@NonNull String roleName, @UserIdInt int userId) { + private void notifyRoleHoldersChanged(@NonNull String roleName, @UserIdInt int userId, + @Nullable String removedHolder, @Nullable String addedHolder) { RemoteCallbackList<IOnRoleHoldersChangedListener> listeners = getListeners(userId); if (listeners != null) { notifyRoleHoldersChangedForListeners(listeners, roleName, userId); @@ -394,6 +399,12 @@ public class RoleManagerService extends SystemService implements RoleUserState.C if (allUsersListeners != null) { notifyRoleHoldersChangedForListeners(allUsersListeners, roleName, userId); } + + // Legacy: sms app changed broadcasts + if (RoleManager.ROLE_SMS.equals(roleName)) { + SmsApplication.broadcastSmsAppChange(getContext(), UserHandle.of(userId), + removedHolder, addedHolder); + } } @WorkerThread diff --git a/services/core/java/com/android/server/role/RoleUserState.java b/services/core/java/com/android/server/role/RoleUserState.java index c7e3fa4f2074..6375b4851283 100644 --- a/services/core/java/com/android/server/role/RoleUserState.java +++ b/services/core/java/com/android/server/role/RoleUserState.java @@ -294,7 +294,7 @@ public class RoleUserState { } if (changed) { - mCallback.onRoleHoldersChanged(roleName, mUserId); + mCallback.onRoleHoldersChanged(roleName, mUserId, null, packageName); } return true; } @@ -328,7 +328,7 @@ public class RoleUserState { } if (changed) { - mCallback.onRoleHoldersChanged(roleName, mUserId); + mCallback.onRoleHoldersChanged(roleName, mUserId, packageName, null); } return true; } @@ -632,6 +632,7 @@ public class RoleUserState { * @param roleName the name of the role whose holders are changed * @param userId the user id for this role holder change */ - void onRoleHoldersChanged(@NonNull String roleName, @UserIdInt int userId); + void onRoleHoldersChanged(@NonNull String roleName, @UserIdInt int userId, + @Nullable String removedHolder, @Nullable String addedHolder); } } diff --git a/services/core/java/com/android/server/slice/SliceManagerService.java b/services/core/java/com/android/server/slice/SliceManagerService.java index 73775b4387b9..5fd2ab87f410 100644 --- a/services/core/java/com/android/server/slice/SliceManagerService.java +++ b/services/core/java/com/android/server/slice/SliceManagerService.java @@ -26,10 +26,7 @@ import static android.content.pm.PackageManager.PERMISSION_GRANTED; import static android.os.Process.SYSTEM_UID; import android.Manifest.permission; -import android.app.ActivityManager; import android.app.AppOpsManager; -import android.app.ContentProviderHolder; -import android.app.IActivityManager; import android.app.slice.ISliceManager; import android.app.slice.SliceSpec; import android.app.usage.UsageStatsManagerInternal; @@ -391,7 +388,7 @@ public class SliceManagerService extends ISliceManager.Stub { } protected int checkAccess(String pkg, Uri uri, int uid, int pid) { - return checkSlicePermission(uri, null, pkg, uid, pid, null); + return checkSlicePermission(uri, null, pkg, pid, uid, null); } private String getProviderPkg(Uri uri, int user) { diff --git a/services/core/java/com/android/server/stats/StatsCompanionService.java b/services/core/java/com/android/server/stats/StatsCompanionService.java index 63439d538224..c76bbb05a359 100644 --- a/services/core/java/com/android/server/stats/StatsCompanionService.java +++ b/services/core/java/com/android/server/stats/StatsCompanionService.java @@ -25,7 +25,9 @@ import static android.os.storage.VolumeInfo.TYPE_PUBLIC; import static com.android.internal.util.Preconditions.checkNotNull; import static com.android.server.am.MemoryStatUtil.readCmdlineFromProcfs; +import static com.android.server.am.MemoryStatUtil.readMemoryStatFromFilesystem; import static com.android.server.am.MemoryStatUtil.readMemoryStatFromProcfs; +import static com.android.server.am.MemoryStatUtil.readProcessSystemIonHeapSizesFromDebugfs; import static com.android.server.am.MemoryStatUtil.readRssHighWaterMarkFromProcfs; import static com.android.server.am.MemoryStatUtil.readSystemIonHeapSizeFromDebugfs; @@ -39,7 +41,6 @@ import android.app.AppOpsManager.HistoricalOps; import android.app.AppOpsManager.HistoricalOpsRequest; import android.app.AppOpsManager.HistoricalPackageOps; import android.app.AppOpsManager.HistoricalUidOps; -import android.app.ProcessMemoryHighWaterMark; import android.app.ProcessMemoryState; import android.app.StatsManager; import android.bluetooth.BluetoothActivityEnergyInfo; @@ -137,6 +138,7 @@ import com.android.server.BinderCallsStatsService; import com.android.server.LocalServices; import com.android.server.SystemService; import com.android.server.SystemServiceManager; +import com.android.server.am.MemoryStatUtil.IonAllocations; import com.android.server.am.MemoryStatUtil.MemoryStat; import com.android.server.role.RoleManagerInternal; import com.android.server.storage.DiskStatsFileLogger; @@ -1170,17 +1172,23 @@ public class StatsCompanionService extends IStatsCompanionService.Stub { LocalServices.getService( ActivityManagerInternal.class).getMemoryStateForProcesses(); for (ProcessMemoryState processMemoryState : processMemoryStates) { + final MemoryStat memoryStat = readMemoryStatFromFilesystem(processMemoryState.uid, + processMemoryState.pid); + if (memoryStat == null) { + continue; + } StatsLogEventWrapper e = new StatsLogEventWrapper(tagId, elapsedNanos, wallClockNanos); e.writeInt(processMemoryState.uid); e.writeString(processMemoryState.processName); e.writeInt(processMemoryState.oomScore); - e.writeLong(processMemoryState.pgfault); - e.writeLong(processMemoryState.pgmajfault); - e.writeLong(processMemoryState.rssInBytes); - e.writeLong(processMemoryState.cacheInBytes); - e.writeLong(processMemoryState.swapInBytes); + e.writeLong(memoryStat.pgfault); + e.writeLong(memoryStat.pgmajfault); + e.writeLong(memoryStat.rssInBytes); + e.writeLong(memoryStat.cacheInBytes); + e.writeLong(memoryStat.swapInBytes); e.writeLong(0); // unused - e.writeLong(processMemoryState.startTimeNanos); + e.writeLong(memoryStat.startTimeNanos); + e.writeInt(anonAndSwapInKilobytes(memoryStat)); pulledData.add(e); } } @@ -1213,20 +1221,31 @@ public class StatsCompanionService extends IStatsCompanionService.Stub { e.writeLong(0); // unused e.writeLong(memoryStat.startTimeNanos); e.writeLong(memoryStat.swapInBytes); + e.writeInt(anonAndSwapInKilobytes(memoryStat)); pulledData.add(e); } } + private static int anonAndSwapInKilobytes(MemoryStat memoryStat) { + return (int) ((memoryStat.anonRssInBytes + memoryStat.swapInBytes) / 1024); + } + private void pullProcessMemoryHighWaterMark( int tagId, long elapsedNanos, long wallClockNanos, List<StatsLogEventWrapper> pulledData) { - List<ProcessMemoryHighWaterMark> results = LocalServices.getService( - ActivityManagerInternal.class).getMemoryHighWaterMarkForProcesses(); - for (ProcessMemoryHighWaterMark processMemoryHighWaterMark : results) { + List<ProcessMemoryState> managedProcessList = + LocalServices.getService( + ActivityManagerInternal.class).getMemoryStateForProcesses(); + for (ProcessMemoryState managedProcess : managedProcessList) { + final long rssHighWaterMarkInBytes = + readRssHighWaterMarkFromProcfs(managedProcess.pid); + if (rssHighWaterMarkInBytes == 0) { + continue; + } StatsLogEventWrapper e = new StatsLogEventWrapper(tagId, elapsedNanos, wallClockNanos); - e.writeInt(processMemoryHighWaterMark.uid); - e.writeString(processMemoryHighWaterMark.processName); - e.writeLong(processMemoryHighWaterMark.rssHighWaterMarkInBytes); + e.writeInt(managedProcess.uid); + e.writeString(managedProcess.processName); + e.writeLong(rssHighWaterMarkInBytes); pulledData.add(e); } int[] pids = getPidsForCommands(MEMORY_INTERESTING_NATIVE_PROCESSES); @@ -1254,6 +1273,21 @@ public class StatsCompanionService extends IStatsCompanionService.Stub { pulledData.add(e); } + private void pullProcessSystemIonHeapSize( + int tagId, long elapsedNanos, long wallClockNanos, + List<StatsLogEventWrapper> pulledData) { + List<IonAllocations> result = readProcessSystemIonHeapSizesFromDebugfs(); + for (IonAllocations allocations : result) { + StatsLogEventWrapper e = new StatsLogEventWrapper(tagId, elapsedNanos, wallClockNanos); + e.writeInt(getUidForPid(allocations.pid)); + e.writeString(readCmdlineFromProcfs(allocations.pid)); + e.writeInt((int) (allocations.totalSizeInBytes / 1024)); + e.writeInt(allocations.count); + e.writeInt((int) (allocations.maxSizeInBytes / 1024)); + pulledData.add(e); + } + } + private void pullBinderCallsStats( int tagId, long elapsedNanos, long wallClockNanos, List<StatsLogEventWrapper> pulledData) { @@ -1983,10 +2017,9 @@ public class StatsCompanionService extends IStatsCompanionService.Stub { e.writeString(permName); e.writeInt(pkg.applicationInfo.uid); e.writeString(pkg.packageName); - e.writeInt(permissionFlags); - e.writeBoolean((pkg.requestedPermissionsFlags[permNum] & REQUESTED_PERMISSION_GRANTED) != 0); + e.writeInt(permissionFlags); pulledData.add(e); } @@ -2317,6 +2350,10 @@ public class StatsCompanionService extends IStatsCompanionService.Stub { pullSystemIonHeapSize(tagId, elapsedNanos, wallClockNanos, ret); break; } + case StatsLog.PROCESS_SYSTEM_ION_HEAP_SIZE: { + pullProcessSystemIonHeapSize(tagId, elapsedNanos, wallClockNanos, ret); + break; + } case StatsLog.BINDER_CALLS: { pullBinderCallsStats(tagId, elapsedNanos, wallClockNanos, ret); break; diff --git a/services/core/java/com/android/server/trust/TrustManagerService.java b/services/core/java/com/android/server/trust/TrustManagerService.java index a2eb40b0c6fa..7408dd40b5ca 100644 --- a/services/core/java/com/android/server/trust/TrustManagerService.java +++ b/services/core/java/com/android/server/trust/TrustManagerService.java @@ -199,6 +199,7 @@ public class TrustManagerService extends SystemService { private final Uri LOCK_SCREEN_WHEN_TRUST_LOST = Settings.Secure.getUriFor(Settings.Secure.LOCK_SCREEN_WHEN_TRUST_LOST); + private final boolean mIsAutomotive; private final ContentResolver mContentResolver; private boolean mTrustAgentsExtendUnlock; private boolean mLockWhenTrustLost; @@ -210,6 +211,10 @@ public class TrustManagerService extends SystemService { */ SettingsObserver(Handler handler) { super(handler); + + PackageManager packageManager = getContext().getPackageManager(); + mIsAutomotive = packageManager.hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE); + mContentResolver = getContext().getContentResolver(); updateContentObserver(); } @@ -233,11 +238,15 @@ public class TrustManagerService extends SystemService { @Override public void onChange(boolean selfChange, Uri uri) { if (TRUST_AGENTS_EXTEND_UNLOCK.equals(uri)) { + // Smart lock should only extend unlock. The only exception is for automotive, + // where it can actively unlock the head unit. + int defaultValue = mIsAutomotive ? 0 : 1; + mTrustAgentsExtendUnlock = Settings.Secure.getIntForUser( mContentResolver, Settings.Secure.TRUST_AGENTS_EXTEND_UNLOCK, - 0 /* default */, + defaultValue, mCurrentUser) != 0; } else if (LOCK_SCREEN_WHEN_TRUST_LOST.equals(uri)) { mLockWhenTrustLost = diff --git a/services/core/java/com/android/server/uri/UriGrantsManagerService.java b/services/core/java/com/android/server/uri/UriGrantsManagerService.java index 8b332d271a3a..55f062bca2d1 100644 --- a/services/core/java/com/android/server/uri/UriGrantsManagerService.java +++ b/services/core/java/com/android/server/uri/UriGrantsManagerService.java @@ -1032,11 +1032,13 @@ public class UriGrantsManagerService extends IUriGrantsManager.Stub { // must always grant permissions on behalf of someone explicit. final int callingAppId = UserHandle.getAppId(callingUid); if ((callingAppId == SYSTEM_UID) || (callingAppId == ROOT_UID)) { - if ("com.android.settings.files".equals(grantUri.uri.getAuthority())) { + if ("com.android.settings.files".equals(grantUri.uri.getAuthority()) + || "com.android.settings.module_licenses".equals(grantUri.uri.getAuthority())) { // Exempted authority for // 1. cropping user photos and sharing a generated license html // file in Settings app // 2. sharing a generated license html file in TvSettings app + // 3. Sharing module license files from Settings app } else { Slog.w(TAG, "For security reasons, the system cannot issue a Uri permission" + " grant to " + grantUri + "; use startActivityAsCaller() instead"); diff --git a/services/core/java/com/android/server/webkit/WebViewUpdateServiceImpl.java b/services/core/java/com/android/server/webkit/WebViewUpdateServiceImpl.java index 165055ac828c..11fd7953e08f 100644 --- a/services/core/java/com/android/server/webkit/WebViewUpdateServiceImpl.java +++ b/services/core/java/com/android/server/webkit/WebViewUpdateServiceImpl.java @@ -82,6 +82,22 @@ public class WebViewUpdateServiceImpl { void prepareWebViewInSystemServer() { migrateFallbackStateOnBoot(); mWebViewUpdater.prepareWebViewInSystemServer(); + if (getCurrentWebViewPackage() == null) { + // We didn't find a valid WebView implementation. Try explicitly re-enabling the + // fallback package for all users in case it was disabled, even if we already did the + // one-time migration before. If this actually changes the state, WebViewUpdater will + // see the PackageManager broadcast shortly and try again. + WebViewProviderInfo[] webviewProviders = mSystemInterface.getWebViewPackages(); + WebViewProviderInfo fallbackProvider = getFallbackProvider(webviewProviders); + if (fallbackProvider != null) { + Slog.w(TAG, "No valid provider, trying to enable " + fallbackProvider.packageName); + mSystemInterface.enablePackageForAllUsers(mContext, fallbackProvider.packageName, + true); + } else { + Slog.e(TAG, "No valid provider and no fallback available."); + } + } + boolean multiProcessEnabled = isMultiProcessEnabled(); mSystemInterface.notifyZygote(multiProcessEnabled); if (multiProcessEnabled) { diff --git a/services/core/java/com/android/server/wm/ActivityMetricsLogger.java b/services/core/java/com/android/server/wm/ActivityMetricsLogger.java index feef5e27d26a..bc0f74715240 100644 --- a/services/core/java/com/android/server/wm/ActivityMetricsLogger.java +++ b/services/core/java/com/android/server/wm/ActivityMetricsLogger.java @@ -544,14 +544,30 @@ class ActivityMetricsLogger { // If we have an active transition that's waiting on a certain activity that will be // invisible now, we'll never get onWindowsDrawn, so abort the transition if necessary. - if (info != null && !hasVisibleNonFinishingActivity(t)) { - if (DEBUG_METRICS) Slog.i(TAG, "notifyVisibilityChanged to invisible" - + " activity=" + r); - logAppTransitionCancel(info); - mWindowingModeTransitionInfo.remove(r.getWindowingMode()); - if (mWindowingModeTransitionInfo.size() == 0) { - reset(true /* abort */, info, "notifyVisibilityChanged to invisible"); - } + + // We have no active transitions. + if (info == null) { + return; + } + + // The notified activity whose visibility changed is no longer the launched activity. + // We can still wait to get onWindowsDrawn. + if (info.launchedActivity != r) { + return; + } + + // Check if there is any activity in the task that is visible and not finishing. If the + // launched activity finished before it is drawn and if there is another activity in + // the task then that activity will be draw on screen. + if (hasVisibleNonFinishingActivity(t)) { + return; + } + + if (DEBUG_METRICS) Slog.i(TAG, "notifyVisibilityChanged to invisible activity=" + r); + logAppTransitionCancel(info); + mWindowingModeTransitionInfo.remove(r.getWindowingMode()); + if (mWindowingModeTransitionInfo.size() == 0) { + reset(true /* abort */, info, "notifyVisibilityChanged to invisible"); } } } diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java index 1344727ab36d..371a94356432 100644 --- a/services/core/java/com/android/server/wm/ActivityRecord.java +++ b/services/core/java/com/android/server/wm/ActivityRecord.java @@ -1616,8 +1616,11 @@ final class ActivityRecord extends ConfigurationContainer { try { ArrayList<ReferrerIntent> ar = new ArrayList<>(1); ar.add(rintent); + // Making sure the client state is RESUMED after transaction completed and doing + // so only if activity is currently RESUMED. Otherwise, client may have extra + // life-cycle calls to RESUMED (and PAUSED later). mAtmService.getLifecycleManager().scheduleTransaction(app.getThread(), appToken, - NewIntentItem.obtain(ar)); + NewIntentItem.obtain(ar, mState == RESUMED)); unsent = false; } catch (RemoteException e) { Slog.w(TAG, "Exception thrown sending new intent to " + this, e); @@ -2039,6 +2042,13 @@ final class ActivityRecord extends ConfigurationContainer { mAtmService.getLifecycleManager().scheduleTransaction(app.getThread(), appToken, WindowVisibilityItem.obtain(true /* showWindow */)); makeActiveIfNeeded(null /* activeActivity*/); + if (isState(STOPPING, STOPPED) && isFocusable()) { + // #shouldMakeActive() only evaluates the topmost activities in task, so + // activities that are not the topmost in task are not being resumed or paused. + // For activities that are still in STOPPING or STOPPED state, updates the state + // to PAUSE at least when making it visible. + setState(PAUSED, "makeClientVisible"); + } } catch (Exception e) { Slog.w(TAG, "Exception thrown sending visibility update: " + intent.getComponent(), e); } diff --git a/services/core/java/com/android/server/wm/ActivityStack.java b/services/core/java/com/android/server/wm/ActivityStack.java index 5ba47d8433cc..6bed46226b42 100644 --- a/services/core/java/com/android/server/wm/ActivityStack.java +++ b/services/core/java/com/android/server/wm/ActivityStack.java @@ -1387,13 +1387,12 @@ class ActivityStack extends ConfigurationContainer { } if (DEBUG_TASKS) Slog.d(TAG_TASKS, "Comparing existing cls=" - + taskIntent.getComponent().flattenToShortString() + + (task.realActivity != null ? task.realActivity.flattenToShortString() : "") + "/aff=" + r.getTaskRecord().rootAffinity + " to new cls=" + intent.getComponent().flattenToShortString() + "/aff=" + info.taskAffinity); // TODO Refactor to remove duplications. Check if logic can be simplified. - if (taskIntent != null && taskIntent.getComponent() != null && - taskIntent.getComponent().compareTo(cls) == 0 && - Objects.equals(documentData, taskDocumentData)) { + if (task.realActivity != null && task.realActivity.compareTo(cls) == 0 + && Objects.equals(documentData, taskDocumentData)) { if (DEBUG_TASKS) Slog.d(TAG_TASKS, "Found matching class!"); //dump(); if (DEBUG_TASKS) Slog.d(TAG_TASKS, @@ -2965,7 +2964,8 @@ class ActivityStack extends ConfigurationContainer { } if (next.newIntents != null) { - transaction.addCallback(NewIntentItem.obtain(next.newIntents)); + transaction.addCallback( + NewIntentItem.obtain(next.newIntents, true /* resume */)); } // Well the app will no longer be stopped. @@ -4995,6 +4995,17 @@ class ActivityStack extends ConfigurationContainer { return true; } + ActivityRecord topActivity = getDisplay().topRunningActivity(); + ActivityStack topStack = topActivity.getActivityStack(); + if (topStack != null && topStack != this && topActivity.isState(RESUMED)) { + // The new top activity is already resumed, so there's a good chance that nothing will + // get resumed below. So, update visibility now in case the transition is closed + // prematurely. + mRootActivityContainer.ensureVisibilityAndConfig(null /* starting */, + getDisplay().mDisplayId, false /* markFrozenIfConfigChanged */, + false /* deferResume */); + } + mRootActivityContainer.resumeFocusedStacksTopActivities(); return true; } diff --git a/services/core/java/com/android/server/wm/ActivityStackSupervisor.java b/services/core/java/com/android/server/wm/ActivityStackSupervisor.java index c992a69c2ecb..19916bc617f4 100644 --- a/services/core/java/com/android/server/wm/ActivityStackSupervisor.java +++ b/services/core/java/com/android/server/wm/ActivityStackSupervisor.java @@ -415,7 +415,7 @@ public class ActivityStackSupervisor implements RecentTasks.Callbacks { void sendErrorResult(String message) { try { - if (callerApp.hasThread()) { + if (callerApp != null && callerApp.hasThread()) { callerApp.getThread().scheduleCrash(message); } } catch (RemoteException e) { diff --git a/services/core/java/com/android/server/wm/ActivityStarter.java b/services/core/java/com/android/server/wm/ActivityStarter.java index 5c55c2e63da1..0a88eef86ea8 100644 --- a/services/core/java/com/android/server/wm/ActivityStarter.java +++ b/services/core/java/com/android/server/wm/ActivityStarter.java @@ -1419,6 +1419,13 @@ class ActivityStarter { stack.finishActivityLocked(mStartActivity, RESULT_CANCELED, null /* intentResultData */, "startActivity", true /* oomAdj */); } + + // Stack should also be detached from display and be removed if it's empty. + if (startedActivityStack != null && startedActivityStack.isAttached() + && startedActivityStack.numActivities() == 0 + && !startedActivityStack.isActivityTypeHome()) { + startedActivityStack.remove(); + } } mService.mWindowManager.continueSurfaceLayout(); } @@ -2289,15 +2296,17 @@ class ActivityStarter { } private int setTaskFromReuseOrCreateNewTask(TaskRecord taskToAffiliate) { + if (mRestrictedBgActivity && (mReuseTask == null || !mReuseTask.containsAppUid(mCallingUid)) + && handleBackgroundActivityAbort(mStartActivity)) { + return START_ABORTED; + } + mTargetStack = computeStackFocus(mStartActivity, true, mLaunchFlags, mOptions); // Do no move the target stack to front yet, as we might bail if // isLockTaskModeViolation fails below. if (mReuseTask == null) { - if (mRestrictedBgActivity && handleBackgroundActivityAbort(mStartActivity)) { - return START_ABORTED; - } final TaskRecord task = mTargetStack.createTaskRecord( mSupervisor.getNextTaskIdForUserLocked(mStartActivity.mUserId), mNewTaskInfo != null ? mNewTaskInfo : mStartActivity.info, @@ -2310,11 +2319,6 @@ class ActivityStarter { if (DEBUG_TASKS) Slog.v(TAG_TASKS, "Starting new activity " + mStartActivity + " in new task " + mStartActivity.getTaskRecord()); } else { - if (mRestrictedBgActivity && !mReuseTask.containsAppUid(mCallingUid)) { - if (handleBackgroundActivityAbort(mStartActivity)) { - return START_ABORTED; - } - } addOrReparentStartingActivity(mReuseTask, "setTaskFromReuseOrCreateNewTask"); } diff --git a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java index 142c3b32bff0..e2421d6d1a93 100644 --- a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java +++ b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java @@ -4781,18 +4781,12 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub { private void applyUpdateVrModeLocked(ActivityRecord r) { // VR apps are expected to run in a main display. If an app is turning on VR for - // itself, but lives in a dynamic stack, then make sure that it is moved to the main - // fullscreen stack before enabling VR Mode. - // TODO: The goal of this code is to keep the VR app on the main display. When the - // stack implementation changes in the future, keep in mind that the use of the fullscreen - // stack is a means to move the activity to the main display and a moveActivityToDisplay() - // option would be a better choice here. + // itself, but isn't on the main display, then move it there before enabling VR Mode. if (r.requestedVrComponent != null && r.getDisplayId() != DEFAULT_DISPLAY) { - Slog.i(TAG, "Moving " + r.shortComponentName + " from stack " + r.getStackId() - + " to main stack for VR"); - final ActivityStack stack = mRootActivityContainer.getDefaultDisplay().getOrCreateStack( - WINDOWING_MODE_FULLSCREEN, r.getActivityType(), true /* toTop */); - moveTaskToStack(r.getTaskRecord().taskId, stack.mStackId, true /* toTop */); + Slog.i(TAG, "Moving " + r.shortComponentName + " from display " + r.getDisplayId() + + " to main display for VR"); + mRootActivityContainer.moveStackToDisplay( + r.getStackId(), DEFAULT_DISPLAY, true /* toTop */); } mH.post(() -> { if (!mVrController.onVrModeChanged(r)) { diff --git a/services/core/java/com/android/server/wm/AppTransition.java b/services/core/java/com/android/server/wm/AppTransition.java index ddd5c0aa7dc0..e6a83dedded9 100644 --- a/services/core/java/com/android/server/wm/AppTransition.java +++ b/services/core/java/com/android/server/wm/AppTransition.java @@ -87,6 +87,7 @@ import android.content.res.Configuration; import android.content.res.ResourceId; import android.content.res.Resources; import android.content.res.Resources.NotFoundException; +import android.content.res.TypedArray; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Color; @@ -258,6 +259,8 @@ public class AppTransition implements Dump { private final boolean mGridLayoutRecentsEnabled; private final boolean mLowRamRecentsEnabled; + private final int mDefaultWindowAnimationStyleResId; + private RemoteAnimationController mRemoteAnimationController; final Handler mHandler; @@ -305,6 +308,12 @@ public class AppTransition implements Dump { * mContext.getResources().getDisplayMetrics().density); mGridLayoutRecentsEnabled = SystemProperties.getBoolean("ro.recents.grid", false); mLowRamRecentsEnabled = ActivityManager.isLowRamDeviceStatic(); + + final TypedArray windowStyle = mContext.getTheme().obtainStyledAttributes( + com.android.internal.R.styleable.Window); + mDefaultWindowAnimationStyleResId = windowStyle.getResourceId( + com.android.internal.R.styleable.Window_windowAnimationStyle, 0); + windowStyle.recycle(); } boolean isTransitionSet() { @@ -523,6 +532,25 @@ public class AppTransition implements Dump { return redoLayout; } + @VisibleForTesting + int getDefaultWindowAnimationStyleResId() { + return mDefaultWindowAnimationStyleResId; + } + + /** Returns window animation style ID from {@link LayoutParams} or from system in some cases */ + @VisibleForTesting + int getAnimationStyleResId(@NonNull LayoutParams lp) { + int resId = lp.windowAnimations; + if (lp.type == LayoutParams.TYPE_APPLICATION_STARTING) { + // Note that we don't want application to customize starting window animation. + // Since this window is specific for displaying while app starting, + // application should not change its animation directly. + // In this case, it will use system resource to get default animation. + resId = mDefaultWindowAnimationStyleResId; + } + return resId; + } + private AttributeCache.Entry getCachedAnimations(LayoutParams lp) { if (DEBUG_ANIM) Slog.v(TAG, "Loading animations: layout params pkg=" + (lp != null ? lp.packageName : null) @@ -532,7 +560,7 @@ public class AppTransition implements Dump { // application resources. It is nice to avoid loading application // resources if we can. String packageName = lp.packageName != null ? lp.packageName : "android"; - int resId = lp.windowAnimations; + int resId = getAnimationStyleResId(lp); if ((resId&0xFF000000) == 0x01000000) { packageName = "android"; } diff --git a/services/core/java/com/android/server/wm/AppWindowToken.java b/services/core/java/com/android/server/wm/AppWindowToken.java index 4a9a3f71f90e..03cae429904f 100644 --- a/services/core/java/com/android/server/wm/AppWindowToken.java +++ b/services/core/java/com/android/server/wm/AppWindowToken.java @@ -1322,7 +1322,15 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree if (prevDc == null || prevDc == mDisplayContent) { return; } - if (prevDc.mChangingApps.contains(this)) { + + if (prevDc.mOpeningApps.remove(this)) { + // Transfer opening transition to new display. + mDisplayContent.mOpeningApps.add(this); + mDisplayContent.prepareAppTransition(prevDc.mAppTransition.getAppTransition(), true); + mDisplayContent.executeAppTransition(); + } + + if (prevDc.mChangingApps.remove(this)) { // This gets called *after* the AppWindowToken has been reparented to the new display. // That reparenting resulted in this window changing modes (eg. FREEFORM -> FULLSCREEN), // so this token is now "frozen" while waiting for the animation to start on prevDc @@ -1331,6 +1339,8 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree // so we need to cancel the change transition here. clearChangeLeash(getPendingTransaction(), true /* cancel */); } + prevDc.mClosingApps.remove(this); + if (prevDc.mFocusedApp == this) { prevDc.setFocusedApp(null); final TaskStack stack = dc.getTopStack(); @@ -3216,16 +3226,6 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree true /* topToBottom */); } - void removeFromPendingTransition() { - if (isWaitingForTransitionStart() && mDisplayContent != null) { - mDisplayContent.mOpeningApps.remove(this); - if (mDisplayContent.mChangingApps.remove(this)) { - clearChangeLeash(getPendingTransaction(), true /* cancel */); - } - mDisplayContent.mClosingApps.remove(this); - } - } - private void updateColorTransform() { if (mSurfaceControl != null && mLastAppSaturationInfo != null) { getPendingTransaction().setColorTransform(mSurfaceControl, diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java index c3a769b63e5a..1659131d880d 100644 --- a/services/core/java/com/android/server/wm/DisplayContent.java +++ b/services/core/java/com/android/server/wm/DisplayContent.java @@ -30,16 +30,21 @@ import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_USER; import static android.content.res.Configuration.ORIENTATION_LANDSCAPE; import static android.content.res.Configuration.ORIENTATION_PORTRAIT; import static android.os.Trace.TRACE_TAG_WINDOW_MANAGER; +import static android.util.DisplayMetrics.DENSITY_DEFAULT; import static android.view.Display.DEFAULT_DISPLAY; import static android.view.Display.FLAG_PRIVATE; import static android.view.Display.FLAG_SHOULD_SHOW_SYSTEM_DECORATIONS; import static android.view.Display.INVALID_DISPLAY; import static android.view.InsetsState.TYPE_IME; +import static android.view.InsetsState.TYPE_LEFT_GESTURES; +import static android.view.InsetsState.TYPE_RIGHT_GESTURES; import static android.view.Surface.ROTATION_0; import static android.view.Surface.ROTATION_180; import static android.view.Surface.ROTATION_270; import static android.view.Surface.ROTATION_90; import static android.view.View.GONE; +import static android.view.View.SYSTEM_UI_FLAG_HIDE_NAVIGATION; +import static android.view.View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY; import static android.view.WindowManager.DOCKED_BOTTOM; import static android.view.WindowManager.DOCKED_INVALID; import static android.view.WindowManager.DOCKED_TOP; @@ -135,6 +140,7 @@ import static com.android.server.wm.WindowManagerService.logSurface; import static com.android.server.wm.WindowState.RESIZE_HANDLE_WIDTH_IN_DP; import static com.android.server.wm.WindowStateAnimator.DRAW_PENDING; import static com.android.server.wm.WindowStateAnimator.READY_TO_SHOW; +import static com.android.server.wm.utils.RegionUtils.forEachRect; import static com.android.server.wm.utils.RegionUtils.rectListToRegion; import android.animation.AnimationHandler; @@ -324,6 +330,7 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo private final RemoteCallbackList<ISystemGestureExclusionListener> mSystemGestureExclusionListeners = new RemoteCallbackList<>(); private final Region mSystemGestureExclusion = new Region(); + private int mSystemGestureExclusionLimit; /** * For default display it contains real metrics, empty for others. @@ -894,6 +901,8 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo mWallpaperController = new WallpaperController(mWmService, this); display.getDisplayInfo(mDisplayInfo); display.getMetrics(mDisplayMetrics); + mSystemGestureExclusionLimit = mWmService.mSystemGestureExclusionLimitDp + * mDisplayMetrics.densityDpi / DENSITY_DEFAULT; isDefaultDisplay = mDisplayId == DEFAULT_DISPLAY; mDisplayFrames = new DisplayFrames(mDisplayId, mDisplayInfo, calculateDisplayCutoutForRotation(mDisplayInfo.rotation)); @@ -1549,8 +1558,8 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo longSize = height; } - final int shortSizeDp = shortSize * DisplayMetrics.DENSITY_DEFAULT / mBaseDisplayDensity; - final int longSizeDp = longSize * DisplayMetrics.DENSITY_DEFAULT / mBaseDisplayDensity; + final int shortSizeDp = shortSize * DENSITY_DEFAULT / mBaseDisplayDensity; + final int longSizeDp = longSize * DENSITY_DEFAULT / mBaseDisplayDensity; mDisplayPolicy.updateConfigurationAndScreenSizeDependentBehaviors(); mDisplayRotation.configure(width, height, shortSizeDp, longSizeDp); @@ -2200,6 +2209,18 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo onDisplayChanged(this); } + @Override + void onDisplayChanged(DisplayContent dc) { + super.onDisplayChanged(dc); + updateSystemGestureExclusionLimit(); + } + + void updateSystemGestureExclusionLimit() { + mSystemGestureExclusionLimit = mWmService.mSystemGestureExclusionLimitDp + * mDisplayMetrics.densityDpi / DENSITY_DEFAULT; + updateSystemGestureExclusion(); + } + void initializeDisplayBaseInfo() { final DisplayManagerInternal displayManagerInternal = mWmService.mDisplayManagerInternal; if (displayManagerInternal != null) { @@ -2377,9 +2398,6 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo + " to its current displayId=" + mDisplayId); } - // Clean up all pending transitions when stack reparent to another display. - stack.forAllAppWindows(AppWindowToken::removeFromPendingTransition); - prevDc.mTaskStackContainers.removeChild(stack); mTaskStackContainers.addStackToDisplay(stack, onTop); } @@ -5110,24 +5128,35 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo @VisibleForTesting Region calculateSystemGestureExclusion() { + final Region unhandled = Region.obtain(); + unhandled.set(0, 0, mDisplayFrames.mDisplayWidth, mDisplayFrames.mDisplayHeight); + + final Rect leftEdge = mInsetsStateController.getSourceProvider(TYPE_LEFT_GESTURES) + .getSource().getFrame(); + final Rect rightEdge = mInsetsStateController.getSourceProvider(TYPE_RIGHT_GESTURES) + .getSource().getFrame(); + final Region global = Region.obtain(); final Region touchableRegion = Region.obtain(); final Region local = Region.obtain(); + final int[] remainingLeftRight = + {mSystemGestureExclusionLimit, mSystemGestureExclusionLimit}; // Traverse all windows bottom up to assemble the gesture exclusion rects. // For each window, we only take the rects that fall within its touchable region. forAllWindows(w -> { if (w.cantReceiveTouchInput() || !w.isVisible() - || (w.getAttrs().flags & FLAG_NOT_TOUCHABLE) != 0) { + || (w.getAttrs().flags & FLAG_NOT_TOUCHABLE) != 0 + || unhandled.isEmpty()) { return; } final boolean modal = (w.mAttrs.flags & (FLAG_NOT_TOUCH_MODAL | FLAG_NOT_FOCUSABLE)) == 0; - // Only keep the exclusion zones from the windows behind where the current window - // isn't touchable. + // Get the touchable region of the window, and intersect with where the screen is still + // touchable, i.e. touchable regions on top are not covering it yet. w.getTouchableRegion(touchableRegion); - global.op(touchableRegion, Op.DIFFERENCE); + touchableRegion.op(unhandled, Op.INTERSECT); rectListToRegion(w.getSystemGestureExclusion(), local); @@ -5139,13 +5168,78 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo // A window can only exclude system gestures where it is actually touchable local.op(touchableRegion, Op.INTERSECT); - global.op(local, Op.UNION); - }, false /* topToBottom */); + // Apply restriction if necessary. + if (needsGestureExclusionRestrictions(w, mLastDispatchedSystemUiVisibility)) { + + // Processes the region along the left edge. + remainingLeftRight[0] = addToGlobalAndConsumeLimit(local, global, leftEdge, + remainingLeftRight[0]); + + // Processes the region along the right edge. + remainingLeftRight[1] = addToGlobalAndConsumeLimit(local, global, rightEdge, + remainingLeftRight[1]); + + // Adds the middle (unrestricted area) + final Region middle = Region.obtain(local); + middle.op(leftEdge, Op.DIFFERENCE); + middle.op(rightEdge, Op.DIFFERENCE); + global.op(middle, Op.UNION); + middle.recycle(); + } else { + global.op(local, Op.UNION); + } + unhandled.op(touchableRegion, Op.DIFFERENCE); + }, true /* topToBottom */); local.recycle(); touchableRegion.recycle(); + unhandled.recycle(); return global; } + /** + * @return Whether gesture exclusion area should be restricted from the window depending on the + * current SystemUI visibility flags. + */ + private static boolean needsGestureExclusionRestrictions(WindowState win, int sysUiVisibility) { + final int type = win.mAttrs.type; + final int stickyHideNavFlags = + SYSTEM_UI_FLAG_HIDE_NAVIGATION | SYSTEM_UI_FLAG_IMMERSIVE_STICKY; + final boolean stickyHideNav = + (sysUiVisibility & stickyHideNavFlags) == stickyHideNavFlags; + return !stickyHideNav && type != TYPE_INPUT_METHOD && type != TYPE_STATUS_BAR + && win.getActivityType() != ACTIVITY_TYPE_HOME; + } + + /** + * Adds a local gesture exclusion area to the global area while applying a limit per edge. + * + * @param local The gesture exclusion area to add. + * @param global The destination. + * @param edge Only processes the part in that region. + * @param limit How much limit in pixels we have. + * @return How much of the limit are remaining. + */ + private static int addToGlobalAndConsumeLimit(Region local, Region global, Rect edge, + int limit) { + final Region r = Region.obtain(local); + r.op(edge, Op.INTERSECT); + + final int[] remaining = {limit}; + forEachRect(r, rect -> { + if (remaining[0] <= 0) { + return; + } + final int height = rect.height(); + if (height > remaining[0]) { + rect.bottom = rect.top + remaining[0]; + } + remaining[0] -= height; + global.op(rect, Op.UNION); + }); + r.recycle(); + return remaining[0]; + } + void registerSystemGestureExclusionListener(ISystemGestureExclusionListener listener) { mSystemGestureExclusionListeners.register(listener); final boolean changed; diff --git a/services/core/java/com/android/server/wm/DisplayPolicy.java b/services/core/java/com/android/server/wm/DisplayPolicy.java index 7badc7a43774..cf87203893cf 100644 --- a/services/core/java/com/android/server/wm/DisplayPolicy.java +++ b/services/core/java/com/android/server/wm/DisplayPolicy.java @@ -478,8 +478,10 @@ public class DisplayPolicy { @Override public void onSwipeFromRight() { - final Region excludedRegion = - mDisplayContent.calculateSystemGestureExclusion(); + final Region excludedRegion; + synchronized (mLock) { + excludedRegion = mDisplayContent.calculateSystemGestureExclusion(); + } final boolean sideAllowed = mNavigationBarAlwaysShowOnSideGesture || mNavigationBarPosition == NAV_BAR_RIGHT; if (mNavigationBar != null && sideAllowed @@ -490,8 +492,10 @@ public class DisplayPolicy { @Override public void onSwipeFromLeft() { - final Region excludedRegion = - mDisplayContent.calculateSystemGestureExclusion(); + final Region excludedRegion; + synchronized (mLock) { + excludedRegion = mDisplayContent.calculateSystemGestureExclusion(); + } final boolean sideAllowed = mNavigationBarAlwaysShowOnSideGesture || mNavigationBarPosition == NAV_BAR_LEFT; if (mNavigationBar != null && sideAllowed @@ -1494,8 +1498,6 @@ public class DisplayPolicy { } sTmpRect.setEmpty(); - sTmpDockedFrame.set(displayFrames.mDock); - final int displayId = displayFrames.mDisplayId; final Rect dockFrame = displayFrames.mDock; final int displayHeight = displayFrames.mDisplayHeight; @@ -1508,11 +1510,13 @@ public class DisplayPolicy { continue; } - w.getWindowFrames().setFrames(sTmpDockedFrame /* parentFrame */, - sTmpDockedFrame /* displayFrame */, sTmpDockedFrame /* overscanFrame */, - sTmpDockedFrame /* contentFrame */, sTmpDockedFrame /* visibleFrame */, - sTmpRect /* decorFrame */, sTmpDockedFrame /* stableFrame */, - sTmpDockedFrame /* outsetFrame */); + w.getWindowFrames().setFrames(displayFrames.mUnrestricted /* parentFrame */, + displayFrames.mUnrestricted /* displayFrame */, + displayFrames.mUnrestricted /* overscanFrame */, + displayFrames.mUnrestricted /* contentFrame */, + displayFrames.mUnrestricted /* visibleFrame */, sTmpRect /* decorFrame */, + displayFrames.mUnrestricted /* stableFrame */, + displayFrames.mUnrestricted /* outsetFrame */); w.getWindowFrames().setDisplayCutout(displayFrames.mDisplayCutout); w.computeFrameLw(); final Rect frame = w.getFrameLw(); diff --git a/services/core/java/com/android/server/wm/DragState.java b/services/core/java/com/android/server/wm/DragState.java index 6127303141f4..553b0ffa6999 100644 --- a/services/core/java/com/android/server/wm/DragState.java +++ b/services/core/java/com/android/server/wm/DragState.java @@ -176,6 +176,8 @@ class DragState { mTransaction.transferTouchFocus(mTransferTouchFromToken, h.token); mTransferTouchFromToken = null; + // syncInputWindows here to ensure the input channel isn't removed before the transfer. + mTransaction.syncInputWindows(); mTransaction.apply(); } diff --git a/services/core/java/com/android/server/wm/PinnedStackController.java b/services/core/java/com/android/server/wm/PinnedStackController.java index ba2325877075..af729317392b 100644 --- a/services/core/java/com/android/server/wm/PinnedStackController.java +++ b/services/core/java/com/android/server/wm/PinnedStackController.java @@ -25,6 +25,7 @@ import static com.android.server.wm.PinnedStackControllerProto.MOVEMENT_BOUNDS; import static com.android.server.wm.WindowManagerDebugConfig.TAG_WITH_CLASS_NAME; import static com.android.server.wm.WindowManagerDebugConfig.TAG_WM; +import android.annotation.NonNull; import android.app.RemoteAction; import android.content.pm.ParceledListSlice; import android.content.res.Resources; @@ -45,6 +46,7 @@ import android.view.IPinnedStackController; import android.view.IPinnedStackListener; import com.android.internal.policy.PipSnapAlgorithm; +import com.android.internal.util.Preconditions; import com.android.server.UiThread; import java.io.PrintWriter; @@ -326,8 +328,8 @@ class PinnedStackController { boolean onTaskStackBoundsChanged(Rect targetBounds, Rect outBounds) { synchronized (mService.mGlobalLock) { final DisplayInfo displayInfo = mDisplayContent.getDisplayInfo(); - if (mDisplayInfo.equals(displayInfo)) { - // We are already in the right orientation, ignore + if (isSameDimensionAndRotation(mDisplayInfo, displayInfo)) { + // No dimension/rotation change, ignore outBounds.setEmpty(); return false; } else if (targetBounds.isEmpty()) { @@ -427,6 +429,15 @@ class PinnedStackController { notifyActionsChanged(mActions); } + private boolean isSameDimensionAndRotation(@NonNull DisplayInfo display1, + @NonNull DisplayInfo display2) { + Preconditions.checkNotNull(display1); + Preconditions.checkNotNull(display2); + return ((display1.rotation == display2.rotation) + && (display1.logicalWidth == display2.logicalWidth) + && (display1.logicalHeight == display2.logicalHeight)); + } + /** * Notifies listeners that the PIP needs to be adjusted for the IME. */ diff --git a/services/core/java/com/android/server/wm/RecentTasks.java b/services/core/java/com/android/server/wm/RecentTasks.java index e0ab72271745..541a8bbc8865 100644 --- a/services/core/java/com/android/server/wm/RecentTasks.java +++ b/services/core/java/com/android/server/wm/RecentTasks.java @@ -308,11 +308,13 @@ class RecentTasks { */ @VisibleForTesting void resetFreezeTaskListReorderingOnTimeout() { - final ActivityStack focusedStack = mService.getTopDisplayFocusedStack(); - final TaskRecord topTask = focusedStack != null - ? focusedStack.topTask() - : null; - resetFreezeTaskListReordering(topTask); + synchronized (mService.mGlobalLock) { + final ActivityStack focusedStack = mService.getTopDisplayFocusedStack(); + final TaskRecord topTask = focusedStack != null + ? focusedStack.topTask() + : null; + resetFreezeTaskListReordering(topTask); + } } @VisibleForTesting diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java index 38201069ebca..fd86faa6d035 100644 --- a/services/core/java/com/android/server/wm/Task.java +++ b/services/core/java/com/android/server/wm/Task.java @@ -348,6 +348,9 @@ class Task extends WindowContainer<AppWindowToken> implements ConfigurationConta void onDisplayChanged(DisplayContent dc) { adjustBoundsForDisplayChangeIfNeeded(dc); super.onDisplayChanged(dc); + final int displayId = (dc != null) ? dc.getDisplayId() : Display.INVALID_DISPLAY; + mWmService.mAtmService.getTaskChangeNotificationController().notifyTaskDisplayChanged( + mTaskId, displayId); } /** diff --git a/services/core/java/com/android/server/wm/TaskChangeNotificationController.java b/services/core/java/com/android/server/wm/TaskChangeNotificationController.java index 66200e39938b..c7fcc2cda80f 100644 --- a/services/core/java/com/android/server/wm/TaskChangeNotificationController.java +++ b/services/core/java/com/android/server/wm/TaskChangeNotificationController.java @@ -54,6 +54,7 @@ class TaskChangeNotificationController { private static final int NOTIFY_ACTIVITY_LAUNCH_ON_SECONDARY_DISPLAY_REROUTED_MSG = 19; private static final int NOTIFY_SIZE_COMPAT_MODE_ACTIVITY_CHANGED_MSG = 20; private static final int NOTIFY_BACK_PRESSED_ON_TASK_ROOT = 21; + private static final int NOTIFY_TASK_DISPLAY_CHANGED_LISTENERS_MSG = 22; // Delay in notifying task stack change listeners (in millis) private static final int NOTIFY_TASK_STACK_CHANGE_LISTENERS_DELAY = 100; @@ -154,6 +155,10 @@ class TaskChangeNotificationController { l.onSizeCompatModeActivityChanged(m.arg1, (IBinder) m.obj); }; + private final TaskStackConsumer mNotifyTaskDisplayChanged = (l, m) -> { + l.onTaskDisplayChanged(m.arg1, m.arg2); + }; + @FunctionalInterface public interface TaskStackConsumer { void accept(ITaskStackListener t, Message m) throws RemoteException; @@ -233,6 +238,9 @@ class TaskChangeNotificationController { case NOTIFY_BACK_PRESSED_ON_TASK_ROOT: forAllRemoteListeners(mNotifyBackPressedOnTaskRoot, msg); break; + case NOTIFY_TASK_DISPLAY_CHANGED_LISTENERS_MSG: + forAllRemoteListeners(mNotifyTaskDisplayChanged, msg); + break; } } } @@ -477,4 +485,14 @@ class TaskChangeNotificationController { forAllLocalListeners(mNotifyBackPressedOnTaskRoot, msg); msg.sendToTarget(); } + + /** + * Notify listeners that a task is reparented to another display. + */ + void notifyTaskDisplayChanged(int taskId, int newDisplayId) { + final Message msg = mHandler.obtainMessage(NOTIFY_TASK_DISPLAY_CHANGED_LISTENERS_MSG, + taskId, newDisplayId); + forAllLocalListeners(mNotifyTaskStackChanged, msg); + msg.sendToTarget(); + } } diff --git a/services/core/java/com/android/server/wm/TaskSnapshotController.java b/services/core/java/com/android/server/wm/TaskSnapshotController.java index 181521850369..9fdc0453424e 100644 --- a/services/core/java/com/android/server/wm/TaskSnapshotController.java +++ b/services/core/java/com/android/server/wm/TaskSnapshotController.java @@ -95,6 +95,7 @@ class TaskSnapshotController { private final ArraySet<Task> mSkipClosingAppSnapshotTasks = new ArraySet<>(); private final ArraySet<Task> mTmpTasks = new ArraySet<>(); private final Handler mHandler = new Handler(); + private final float mFullSnapshotScale; private final Rect mTmpRect = new Rect(); @@ -124,6 +125,8 @@ class TaskSnapshotController { PackageManager.FEATURE_EMBEDDED); mIsRunningOnWear = mService.mContext.getPackageManager().hasSystemFeature( PackageManager.FEATURE_WATCH); + mFullSnapshotScale = mService.mContext.getResources().getFloat( + com.android.internal.R.dimen.config_fullTaskSnapshotScale); } void systemReady() { @@ -287,7 +290,9 @@ class TaskSnapshotController { } final boolean isLowRamDevice = ActivityManager.isLowRamDeviceStatic(); - final float scaleFraction = isLowRamDevice ? mPersister.getReducedScale() : 1f; + final float scaleFraction = isLowRamDevice + ? mPersister.getReducedScale() + : mFullSnapshotScale; final WindowState mainWindow = appWindowToken.findMainWindow(); if (mainWindow == null) { @@ -306,7 +311,8 @@ class TaskSnapshotController { final boolean isWindowTranslucent = mainWindow.getAttrs().format != PixelFormat.OPAQUE; return new TaskSnapshot( appWindowToken.mActivityComponent, screenshotBuffer.getGraphicBuffer(), - screenshotBuffer.getColorSpace(), appWindowToken.getConfiguration().orientation, + screenshotBuffer.getColorSpace(), + appWindowToken.getTask().getConfiguration().orientation, getInsets(mainWindow), isLowRamDevice /* reduced */, scaleFraction /* scale */, true /* isRealSnapshot */, task.getWindowingMode(), getSystemUiVisibility(task), !appWindowToken.fillsParent() || isWindowTranslucent); @@ -378,9 +384,10 @@ class TaskSnapshotController { task.getTaskDescription().getBackgroundColor(), 255); final LayoutParams attrs = mainWindow.getAttrs(); final SystemBarBackgroundPainter decorPainter = new SystemBarBackgroundPainter(attrs.flags, - attrs.privateFlags, attrs.systemUiVisibility, task.getTaskDescription()); - final int width = mainWindow.getFrameLw().width(); - final int height = mainWindow.getFrameLw().height(); + attrs.privateFlags, attrs.systemUiVisibility, task.getTaskDescription(), + mFullSnapshotScale); + final int width = (int) (task.getBounds().width() * mFullSnapshotScale); + final int height = (int) (task.getBounds().height() * mFullSnapshotScale); final RenderNode node = RenderNode.create("TaskSnapshotController", null); node.setLeftTopRightBottom(0, 0, width, height); @@ -394,12 +401,13 @@ class TaskSnapshotController { if (hwBitmap == null) { return null; } + // Note, the app theme snapshot is never translucent because we enforce a non-translucent // color above return new TaskSnapshot(topChild.mActivityComponent, hwBitmap.createGraphicBufferHandle(), - hwBitmap.getColorSpace(), topChild.getConfiguration().orientation, - mainWindow.getStableInsets(), ActivityManager.isLowRamDeviceStatic() /* reduced */, - 1.0f /* scale */, false /* isRealSnapshot */, task.getWindowingMode(), + hwBitmap.getColorSpace(), topChild.getTask().getConfiguration().orientation, + getInsets(mainWindow), ActivityManager.isLowRamDeviceStatic() /* reduced */, + mFullSnapshotScale, false /* isRealSnapshot */, task.getWindowingMode(), getSystemUiVisibility(task), false); } @@ -481,6 +489,7 @@ class TaskSnapshotController { } void dump(PrintWriter pw, String prefix) { + pw.println(prefix + "mFullSnapshotScale=" + mFullSnapshotScale); mCache.dump(pw, prefix); } } diff --git a/services/core/java/com/android/server/wm/TaskSnapshotLoader.java b/services/core/java/com/android/server/wm/TaskSnapshotLoader.java index f7b8945d9729..fcd97c1bac5d 100644 --- a/services/core/java/com/android/server/wm/TaskSnapshotLoader.java +++ b/services/core/java/com/android/server/wm/TaskSnapshotLoader.java @@ -87,14 +87,16 @@ class TaskSnapshotLoader { + bitmapFile.getPath()); return null; } - ComponentName topActivityComponent = ComponentName.unflattenFromString( + final ComponentName topActivityComponent = ComponentName.unflattenFromString( proto.topActivityComponent); + // For legacy snapshots, restore the scale based on the reduced resolution state + final float legacyScale = reducedResolution ? mPersister.getReducedScale() : 1f; + final float scale = Float.compare(proto.scale, 0f) != 0 ? proto.scale : legacyScale; return new TaskSnapshot(topActivityComponent, buffer, bitmap.getColorSpace(), proto.orientation, new Rect(proto.insetLeft, proto.insetTop, proto.insetRight, proto.insetBottom), - reducedResolution, reducedResolution ? mPersister.getReducedScale() : 1f, - proto.isRealSnapshot, proto.windowingMode, proto.systemUiVisibility, - proto.isTranslucent); + reducedResolution, scale, proto.isRealSnapshot, proto.windowingMode, + proto.systemUiVisibility, proto.isTranslucent); } catch (IOException e) { Slog.w(TAG, "Unable to load task snapshot data for taskId=" + taskId); return null; diff --git a/services/core/java/com/android/server/wm/TaskSnapshotPersister.java b/services/core/java/com/android/server/wm/TaskSnapshotPersister.java index 0b63f484c8e2..72fc18937ece 100644 --- a/services/core/java/com/android/server/wm/TaskSnapshotPersister.java +++ b/services/core/java/com/android/server/wm/TaskSnapshotPersister.java @@ -342,6 +342,7 @@ class TaskSnapshotPersister { proto.systemUiVisibility = mSnapshot.getSystemUiVisibility(); proto.isTranslucent = mSnapshot.isTranslucent(); proto.topActivityComponent = mSnapshot.getTopActivityComponent().flattenToString(); + proto.scale = mSnapshot.getScale(); final byte[] bytes = TaskSnapshotProto.toByteArray(proto); final File file = getProtoFile(mTaskId, mUserId); final AtomicFile atomicFile = new AtomicFile(file); @@ -369,12 +370,13 @@ class TaskSnapshotPersister { } final Bitmap swBitmap = bitmap.copy(Config.ARGB_8888, false /* isMutable */); - final File reducedFile = getReducedResolutionBitmapFile(mTaskId, mUserId); final Bitmap reduced = mSnapshot.isReducedResolution() ? swBitmap : Bitmap.createScaledBitmap(swBitmap, (int) (bitmap.getWidth() * mReducedScale), (int) (bitmap.getHeight() * mReducedScale), true /* filter */); + + final File reducedFile = getReducedResolutionBitmapFile(mTaskId, mUserId); try { FileOutputStream reducedFos = new FileOutputStream(reducedFile); reduced.compress(JPEG, QUALITY, reducedFos); @@ -383,6 +385,7 @@ class TaskSnapshotPersister { Slog.e(TAG, "Unable to open " + reducedFile +" for persisting.", e); return false; } + reduced.recycle(); // For snapshots with reduced resolution, do not create or save full sized bitmaps if (mSnapshot.isReducedResolution()) { @@ -399,7 +402,6 @@ class TaskSnapshotPersister { Slog.e(TAG, "Unable to open " + file + " for persisting.", e); return false; } - reduced.recycle(); swBitmap.recycle(); return true; } diff --git a/services/core/java/com/android/server/wm/TaskSnapshotSurface.java b/services/core/java/com/android/server/wm/TaskSnapshotSurface.java index 5d99db5a00de..c3762d6352b8 100644 --- a/services/core/java/com/android/server/wm/TaskSnapshotSurface.java +++ b/services/core/java/com/android/server/wm/TaskSnapshotSurface.java @@ -248,7 +248,7 @@ class TaskSnapshotSurface implements StartingSurface { mBackgroundPaint.setColor(backgroundColor != 0 ? backgroundColor : WHITE); mTaskBounds = taskBounds; mSystemBarBackgroundPainter = new SystemBarBackgroundPainter(windowFlags, - windowPrivateFlags, sysUiVis, taskDescription); + windowPrivateFlags, sysUiVis, taskDescription, 1f); mStatusBarColor = taskDescription.getStatusBarColor(); mOrientationOnCreation = currentOrientation; } @@ -317,6 +317,11 @@ class TaskSnapshotSurface implements StartingSurface { throw new IllegalStateException("mSurface does not hold a valid surface."); } final SurfaceSession session = new SurfaceSession(); + // We consider nearly matched dimensions as there can be rounding errors and the user won't + // notice very minute differences from scaling one dimension more than the other + final boolean aspectRatioMismatch = Math.abs( + ((float) buffer.getWidth() / buffer.getHeight()) + - ((float) mFrame.width() / mFrame.height())) > 0.01f; // Keep a reference to it such that it doesn't get destroyed when finalized. mChildSurfaceControl = new SurfaceControl.Builder(session) @@ -328,16 +333,21 @@ class TaskSnapshotSurface implements StartingSurface { Surface surface = new Surface(); surface.copyFrom(mChildSurfaceControl); - // Clip off ugly navigation bar. - final Rect crop = calculateSnapshotCrop(); - final Rect frame = calculateSnapshotFrame(crop); + final Rect frame; SurfaceControl.openTransaction(); try { // We can just show the surface here as it will still be hidden as the parent is // still hidden. mChildSurfaceControl.show(); - mChildSurfaceControl.setWindowCrop(crop); - mChildSurfaceControl.setPosition(frame.left, frame.top); + if (aspectRatioMismatch) { + // Clip off ugly navigation bar. + final Rect crop = calculateSnapshotCrop(); + frame = calculateSnapshotFrame(crop); + mChildSurfaceControl.setWindowCrop(crop); + mChildSurfaceControl.setPosition(frame.left, frame.top); + } else { + frame = null; + } // Scale the mismatch dimensions to fill the task bounds final float scale = 1 / mSnapshot.getScale(); @@ -348,10 +358,12 @@ class TaskSnapshotSurface implements StartingSurface { surface.attachAndQueueBuffer(buffer); surface.release(); - final Canvas c = mSurface.lockCanvas(null); - drawBackgroundAndBars(c, frame); - mSurface.unlockCanvasAndPost(c); - mSurface.release(); + if (aspectRatioMismatch) { + final Canvas c = mSurface.lockCanvas(null); + drawBackgroundAndBars(c, frame); + mSurface.unlockCanvasAndPost(c); + mSurface.release(); + } } /** @@ -488,12 +500,14 @@ class TaskSnapshotSurface implements StartingSurface { private final int mWindowFlags; private final int mWindowPrivateFlags; private final int mSysUiVis; + private final float mScale; - SystemBarBackgroundPainter( int windowFlags, int windowPrivateFlags, int sysUiVis, - TaskDescription taskDescription) { + SystemBarBackgroundPainter(int windowFlags, int windowPrivateFlags, int sysUiVis, + TaskDescription taskDescription, float scale) { mWindowFlags = windowFlags; mWindowPrivateFlags = windowPrivateFlags; mSysUiVis = sysUiVis; + mScale = scale; final Context context = ActivityThread.currentActivityThread().getSystemUiContext(); final int semiTransparent = context.getColor( R.color.system_bar_background_semi_transparent); @@ -521,7 +535,7 @@ class TaskSnapshotSurface implements StartingSurface { (mWindowPrivateFlags & PRIVATE_FLAG_FORCE_DRAW_BAR_BACKGROUNDS) != 0; if (STATUS_BAR_COLOR_VIEW_ATTRIBUTES.isVisible( mSysUiVis, mStatusBarColor, mWindowFlags, forceBarBackground)) { - return getColorViewTopInset(mStableInsets.top, mContentInsets.top); + return (int) (getColorViewTopInset(mStableInsets.top, mContentInsets.top) * mScale); } else { return 0; } @@ -544,8 +558,8 @@ class TaskSnapshotSurface implements StartingSurface { int statusBarHeight) { if (statusBarHeight > 0 && Color.alpha(mStatusBarColor) != 0 && (alreadyDrawnFrame == null || c.getWidth() > alreadyDrawnFrame.right)) { - final int rightInset = DecorView.getColorViewRightInset(mStableInsets.right, - mContentInsets.right); + final int rightInset = (int) (DecorView.getColorViewRightInset(mStableInsets.right, + mContentInsets.right) * mScale); final int left = alreadyDrawnFrame != null ? alreadyDrawnFrame.right : 0; c.drawRect(left, 0, c.getWidth() - rightInset, statusBarHeight, mStatusBarPaint); } @@ -555,7 +569,7 @@ class TaskSnapshotSurface implements StartingSurface { void drawNavigationBarBackground(Canvas c) { final Rect navigationBarRect = new Rect(); getNavigationBarRect(c.getWidth(), c.getHeight(), mStableInsets, mContentInsets, - navigationBarRect); + navigationBarRect, mScale); final boolean visible = isNavigationBarColorViewVisible(); if (visible && Color.alpha(mNavigationBarColor) != 0 && !navigationBarRect.isEmpty()) { c.drawRect(navigationBarRect, mNavigationBarPaint); diff --git a/services/core/java/com/android/server/wm/TaskStack.java b/services/core/java/com/android/server/wm/TaskStack.java index d83869109ff3..114a56feaf73 100644 --- a/services/core/java/com/android/server/wm/TaskStack.java +++ b/services/core/java/com/android/server/wm/TaskStack.java @@ -1640,6 +1640,7 @@ public class TaskStack extends WindowContainer<Task> implements if (mAnimationType == BoundsAnimationController.FADE_IN) { setPinnedStackAlpha(1f); mActivityStack.mService.notifyPinnedStackAnimationEnded(); + return; } if (finalStackSize != null && !mCancelCurrentBoundsAnimation) { @@ -1935,14 +1936,15 @@ public class TaskStack extends WindowContainer<Task> implements public boolean setPinnedStackAlpha(float alpha) { // Hold the lock since this is called from the BoundsAnimator running on the UiThread synchronized (mWmService.mGlobalLock) { - if (mCancelCurrentBoundsAnimation) { + final SurfaceControl sc = getSurfaceControl(); + if (sc == null || !sc.isValid()) { + // If the stack is already removed, don't bother updating any stack animation return false; } - getPendingTransaction().setAlpha(getSurfaceControl(), alpha); + getPendingTransaction().setAlpha(sc, mCancelCurrentBoundsAnimation ? 1 : alpha); scheduleAnimation(); + return !mCancelCurrentBoundsAnimation; } - - return true; } public DisplayInfo getDisplayInfo() { diff --git a/services/core/java/com/android/server/wm/WallpaperController.java b/services/core/java/com/android/server/wm/WallpaperController.java index da873b8bc308..21410c4448e5 100644 --- a/services/core/java/com/android/server/wm/WallpaperController.java +++ b/services/core/java/com/android/server/wm/WallpaperController.java @@ -24,7 +24,6 @@ import static android.view.WindowManager.LayoutParams.TYPE_WALLPAPER; import static android.view.WindowManager.TRANSIT_FLAG_KEYGUARD_GOING_AWAY_WITH_WALLPAPER; import static com.android.server.policy.WindowManagerPolicy.FINISH_LAYOUT_REDO_WALLPAPER; -import static com.android.server.wm.RecentsAnimationController.REORDER_MOVE_TO_ORIGINAL_POSITION; import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_APP_TRANSITIONS; import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_SCREENSHOT; import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_WALLPAPER; @@ -612,10 +611,10 @@ class WallpaperController { if (DEBUG_APP_TRANSITIONS || DEBUG_WALLPAPER) Slog.v(TAG, "*** WALLPAPER DRAW TIMEOUT"); - // If there was a recents animation in progress, cancel that animation + // If there was a pending recents animation, start the animation anyways (it's better + // to not see the wallpaper than for the animation to not start) if (mService.getRecentsAnimationController() != null) { - mService.getRecentsAnimationController().cancelAnimation( - REORDER_MOVE_TO_ORIGINAL_POSITION, "wallpaperDrawPendingTimeout"); + mService.getRecentsAnimationController().startAnimation(); } return true; } diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index ce8720a2883c..2db0131a122f 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -32,6 +32,7 @@ import static android.content.pm.PackageManager.PERMISSION_GRANTED; import static android.os.Process.SYSTEM_UID; import static android.os.Process.myPid; import static android.os.Trace.TRACE_TAG_WINDOW_MANAGER; +import static android.provider.DeviceConfig.WindowManager.KEY_SYSTEM_GESTURE_EXCLUSION_LIMIT_DP; import static android.provider.Settings.Global.DEVELOPMENT_FORCE_DESKTOP_MODE_ON_EXTERNAL_DISPLAYS; import static android.view.Display.DEFAULT_DISPLAY; import static android.view.Display.INVALID_DISPLAY; @@ -154,6 +155,7 @@ import android.os.Build; import android.os.Bundle; import android.os.Debug; import android.os.Handler; +import android.os.HandlerExecutor; import android.os.IBinder; import android.os.IRemoteCallback; import android.os.Looper; @@ -175,6 +177,7 @@ import android.os.SystemService; import android.os.Trace; import android.os.UserHandle; import android.os.WorkSource; +import android.provider.DeviceConfig; import android.provider.Settings; import android.service.vr.IVrManager; import android.service.vr.IVrStateCallbacks; @@ -380,6 +383,8 @@ public class WindowManagerService extends IWindowManager.Stub private static final int ANIMATION_COMPLETED_TIMEOUT_MS = 5000; + private static final int MIN_GESTURE_EXCLUSION_LIMIT_DP = 200; + final WindowTracing mWindowTracing; final private KeyguardDisableHandler mKeyguardDisableHandler; @@ -838,6 +843,8 @@ public class WindowManagerService extends IWindowManager.Stub final ArrayList<WindowChangeListener> mWindowChangeListeners = new ArrayList<>(); boolean mWindowsChanged = false; + int mSystemGestureExclusionLimitDp; + public interface WindowChangeListener { public void windowsChanged(); public void focusChanged(); @@ -1132,6 +1139,21 @@ public class WindowManagerService extends IWindowManager.Stub this, mInputManager, mActivityTaskManager, mH.getLooper()); mDragDropController = new DragDropController(this, mH.getLooper()); + mSystemGestureExclusionLimitDp = Math.max(MIN_GESTURE_EXCLUSION_LIMIT_DP, + DeviceConfig.getInt(DeviceConfig.NAMESPACE_WINDOW_MANAGER, + KEY_SYSTEM_GESTURE_EXCLUSION_LIMIT_DP, 0)); + DeviceConfig.addOnPropertiesChangedListener(DeviceConfig.NAMESPACE_WINDOW_MANAGER, + new HandlerExecutor(mH), properties -> { + synchronized (mGlobalLock) { + final int exclusionLimitDp = Math.max(MIN_GESTURE_EXCLUSION_LIMIT_DP, + properties.getInt(KEY_SYSTEM_GESTURE_EXCLUSION_LIMIT_DP, 0)); + if (mSystemGestureExclusionLimitDp != exclusionLimitDp) { + mSystemGestureExclusionLimitDp = exclusionLimitDp; + mRoot.forAllDisplays(DisplayContent::updateSystemGestureExclusionLimit); + } + } + }); + LocalServices.addService(WindowManagerInternal.class, new LocalService()); } @@ -7626,22 +7648,30 @@ public class WindowManagerService extends IWindowManager.Stub @Override public boolean injectInputAfterTransactionsApplied(InputEvent ev, int mode) { - boolean shouldWaitForAnimToComplete = false; + boolean isDown; + boolean isUp; + if (ev instanceof KeyEvent) { KeyEvent keyEvent = (KeyEvent) ev; - shouldWaitForAnimToComplete = keyEvent.getSource() == InputDevice.SOURCE_MOUSE - || keyEvent.getAction() == KeyEvent.ACTION_DOWN; - } else if (ev instanceof MotionEvent) { + isDown = keyEvent.getAction() == KeyEvent.ACTION_DOWN; + isUp = keyEvent.getAction() == KeyEvent.ACTION_UP; + } else { MotionEvent motionEvent = (MotionEvent) ev; - shouldWaitForAnimToComplete = motionEvent.getSource() == InputDevice.SOURCE_MOUSE - || motionEvent.getAction() == MotionEvent.ACTION_DOWN; + isDown = motionEvent.getAction() == MotionEvent.ACTION_DOWN; + isUp = motionEvent.getAction() == MotionEvent.ACTION_UP; } - if (shouldWaitForAnimToComplete) { + // For ACTION_DOWN, syncInputTransactions before injecting input. + // For ACTION_UP, sync after injecting. + if (isDown) { syncInputTransactions(); } - - return LocalServices.getService(InputManagerInternal.class).injectInputEvent(ev, mode); + final boolean result = + LocalServices.getService(InputManagerInternal.class).injectInputEvent(ev, mode); + if (isUp) { + syncInputTransactions(); + } + return result; } @Override @@ -7682,7 +7712,7 @@ public class WindowManagerService extends IWindowManager.Stub private void onPointerDownOutsideFocusLocked(IBinder touchedToken) { final WindowState touchedWindow = windowForClientLocked(null, touchedToken, false); - if (touchedWindow == null) { + if (touchedWindow == null || !touchedWindow.canReceiveKeys()) { return; } diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java index de9d769a19d1..c6c9e1b39db4 100644 --- a/services/core/java/com/android/server/wm/WindowState.java +++ b/services/core/java/com/android/server/wm/WindowState.java @@ -1548,7 +1548,8 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP */ boolean isInteresting() { return mAppToken != null && !mAppDied - && (!mAppToken.isFreezingScreen() || !mAppFreezing); + && (!mAppToken.isFreezingScreen() || !mAppFreezing) + && mViewVisibility == View.VISIBLE; } /** diff --git a/services/core/java/com/android/server/wm/WindowStateAnimator.java b/services/core/java/com/android/server/wm/WindowStateAnimator.java index 10a63ee91dc5..2c0a733eebde 100644 --- a/services/core/java/com/android/server/wm/WindowStateAnimator.java +++ b/services/core/java/com/android/server/wm/WindowStateAnimator.java @@ -20,6 +20,7 @@ import static android.view.WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED; import static android.view.WindowManager.LayoutParams.FLAG_SCALED; import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_IS_ROUNDED_CORNERS_OVERLAY; import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_STARTING; +import static android.view.WindowManager.LayoutParams.TYPE_BASE_APPLICATION; import static android.view.WindowManager.LayoutParams.TYPE_INPUT_METHOD; import static android.view.WindowManager.LayoutParams.TYPE_WALLPAPER; import static android.view.WindowManager.TRANSIT_NONE; @@ -1294,6 +1295,7 @@ class WindowStateAnimator { if (mWin.mSkipEnterAnimationForSeamlessReplacement) { return; } + final int transit; if (mEnterAnimationPending) { mEnterAnimationPending = false; @@ -1301,7 +1303,13 @@ class WindowStateAnimator { } else { transit = WindowManagerPolicy.TRANSIT_SHOW; } - applyAnimationLocked(transit, true); + + // We don't apply animation for application main window here since this window type + // should be controlled by AppWindowToken in general. + if (mAttrType != TYPE_BASE_APPLICATION) { + applyAnimationLocked(transit, true); + } + if (mService.mAccessibilityController != null) { mService.mAccessibilityController.onWindowTransitionLocked(mWin, transit); } @@ -1365,6 +1373,7 @@ class WindowStateAnimator { + " anim=" + anim + " attr=0x" + Integer.toHexString(attr) + " a=" + a + " transit=" + transit + + " type=" + mAttrType + " isEntrance=" + isEntrance + " Callers " + Debug.getCallers(3)); if (a != null) { if (DEBUG_ANIM) logWithStack(TAG, "Loaded animation " + a + " for " + this); diff --git a/services/core/java/com/android/server/wm/utils/RegionUtils.java b/services/core/java/com/android/server/wm/utils/RegionUtils.java index 1458440f7b81..8cd6f8826083 100644 --- a/services/core/java/com/android/server/wm/utils/RegionUtils.java +++ b/services/core/java/com/android/server/wm/utils/RegionUtils.java @@ -18,8 +18,10 @@ package com.android.server.wm.utils; import android.graphics.Rect; import android.graphics.Region; +import android.graphics.RegionIterator; import java.util.List; +import java.util.function.Consumer; /** * Utility methods to handle Regions. @@ -42,4 +44,18 @@ public class RegionUtils { outRegion.union(rects.get(i)); } } + + /** + * Applies actions on each rect contained within a {@code Region}. + * + * @param region the given region. + * @param rectConsumer the action holder. + */ + public static void forEachRect(Region region, Consumer<Rect> rectConsumer) { + final RegionIterator it = new RegionIterator(region); + final Rect rect = new Rect(); + while (it.next(rect)) { + rectConsumer.accept(rect); + } + } } diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java index ba59cdbe7f59..e5518d05e9c5 100644 --- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java +++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java @@ -6443,7 +6443,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { .setAdmin(admin) .setStrings(vpnPackage) .setBoolean(lockdown) - .setInt(/* number of vpn packages */ 0) + .setInt(lockdownWhitelist != null ? lockdownWhitelist.size() : 0) .write(); } finally { mInjector.binderRestoreCallingIdentity(token); @@ -11018,7 +11018,11 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { return false; } mLockPatternUtils.setLockScreenDisabled(disabled, userId); - mInjector.getIWindowManager().dismissKeyguard(null /* callback */, null /* message */); + if (disabled) { + mInjector + .getIWindowManager() + .dismissKeyguard(null /* callback */, null /* message */); + } DevicePolicyEventLogger .createEvent(DevicePolicyEnums.SET_KEYGUARD_DISABLED) .setAdmin(who) diff --git a/services/java/com/android/server/SystemServer.java b/services/java/com/android/server/SystemServer.java index 203704bf7224..3a7cbf8cc06a 100644 --- a/services/java/com/android/server/SystemServer.java +++ b/services/java/com/android/server/SystemServer.java @@ -731,8 +731,13 @@ public final class SystemServer { (int) SystemClock.elapsedRealtime()); } traceBeginAndSlog("StartPackageManagerService"); - mPackageManagerService = PackageManagerService.main(mSystemContext, installer, - mFactoryTestMode != FactoryTest.FACTORY_TEST_OFF, mOnlyCore); + try { + Watchdog.getInstance().pauseWatchingCurrentThread("packagemanagermain"); + mPackageManagerService = PackageManagerService.main(mSystemContext, installer, + mFactoryTestMode != FactoryTest.FACTORY_TEST_OFF, mOnlyCore); + } finally { + Watchdog.getInstance().resumeWatchingCurrentThread("packagemanagermain"); + } mFirstBoot = mPackageManagerService.isFirstBoot(); mPackageManager = mSystemContext.getPackageManager(); traceEnd(); @@ -1879,6 +1884,10 @@ public final class SystemServer { mSystemServiceManager.startService(IncidentCompanionService.class); traceEnd(); + if (safeMode) { + mActivityManagerService.enterSafeMode(); + } + // MMS service broker traceBeginAndSlog("StartMmsService"); mmsService = mSystemServiceManager.startService(MmsServiceBroker.class); diff --git a/services/net/aidl/ipmemorystore/3/android/net/IIpMemoryStore.aidl b/services/net/aidl/ipmemorystore/3/android/net/IIpMemoryStore.aidl index 1e688d0874de..30893b215001 100644 --- a/services/net/aidl/ipmemorystore/3/android/net/IIpMemoryStore.aidl +++ b/services/net/aidl/ipmemorystore/3/android/net/IIpMemoryStore.aidl @@ -1,3 +1,20 @@ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a frozen snapshot of an AIDL interface (or parcelable). Do not +// try to edit this file. It looks like you are doing that because you have +// modified an AIDL interface in a backward-incompatible way, e.g., deleting a +// function from an interface or a field from a parcelable and it broke the +// build. That breakage is intended. +// +// You must not make a backward incompatible changes to the AIDL files built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + package android.net; interface IIpMemoryStore { oneway void storeNetworkAttributes(String l2Key, in android.net.ipmemorystore.NetworkAttributesParcelable attributes, android.net.ipmemorystore.IOnStatusListener listener); diff --git a/services/net/aidl/ipmemorystore/3/android/net/IIpMemoryStoreCallbacks.aidl b/services/net/aidl/ipmemorystore/3/android/net/IIpMemoryStoreCallbacks.aidl index cf02c26c2fe3..535ae2cf25e4 100644 --- a/services/net/aidl/ipmemorystore/3/android/net/IIpMemoryStoreCallbacks.aidl +++ b/services/net/aidl/ipmemorystore/3/android/net/IIpMemoryStoreCallbacks.aidl @@ -1,3 +1,20 @@ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a frozen snapshot of an AIDL interface (or parcelable). Do not +// try to edit this file. It looks like you are doing that because you have +// modified an AIDL interface in a backward-incompatible way, e.g., deleting a +// function from an interface or a field from a parcelable and it broke the +// build. That breakage is intended. +// +// You must not make a backward incompatible changes to the AIDL files built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + package android.net; interface IIpMemoryStoreCallbacks { oneway void onIpMemoryStoreFetched(in android.net.IIpMemoryStore ipMemoryStore); diff --git a/services/net/aidl/ipmemorystore/3/android/net/ipmemorystore/Blob.aidl b/services/net/aidl/ipmemorystore/3/android/net/ipmemorystore/Blob.aidl index 291dbef817e6..6d2dc0ccaaac 100644 --- a/services/net/aidl/ipmemorystore/3/android/net/ipmemorystore/Blob.aidl +++ b/services/net/aidl/ipmemorystore/3/android/net/ipmemorystore/Blob.aidl @@ -1,3 +1,20 @@ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a frozen snapshot of an AIDL interface (or parcelable). Do not +// try to edit this file. It looks like you are doing that because you have +// modified an AIDL interface in a backward-incompatible way, e.g., deleting a +// function from an interface or a field from a parcelable and it broke the +// build. That breakage is intended. +// +// You must not make a backward incompatible changes to the AIDL files built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + package android.net.ipmemorystore; parcelable Blob { byte[] data; diff --git a/services/net/aidl/ipmemorystore/3/android/net/ipmemorystore/IOnBlobRetrievedListener.aidl b/services/net/aidl/ipmemorystore/3/android/net/ipmemorystore/IOnBlobRetrievedListener.aidl index 52f40d49abd5..48c1fb8c180a 100644 --- a/services/net/aidl/ipmemorystore/3/android/net/ipmemorystore/IOnBlobRetrievedListener.aidl +++ b/services/net/aidl/ipmemorystore/3/android/net/ipmemorystore/IOnBlobRetrievedListener.aidl @@ -1,3 +1,20 @@ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a frozen snapshot of an AIDL interface (or parcelable). Do not +// try to edit this file. It looks like you are doing that because you have +// modified an AIDL interface in a backward-incompatible way, e.g., deleting a +// function from an interface or a field from a parcelable and it broke the +// build. That breakage is intended. +// +// You must not make a backward incompatible changes to the AIDL files built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + package android.net.ipmemorystore; interface IOnBlobRetrievedListener { oneway void onBlobRetrieved(in android.net.ipmemorystore.StatusParcelable status, in String l2Key, in String name, in android.net.ipmemorystore.Blob data); diff --git a/services/net/aidl/ipmemorystore/3/android/net/ipmemorystore/IOnL2KeyResponseListener.aidl b/services/net/aidl/ipmemorystore/3/android/net/ipmemorystore/IOnL2KeyResponseListener.aidl index 785351435d73..aebc7240bc9e 100644 --- a/services/net/aidl/ipmemorystore/3/android/net/ipmemorystore/IOnL2KeyResponseListener.aidl +++ b/services/net/aidl/ipmemorystore/3/android/net/ipmemorystore/IOnL2KeyResponseListener.aidl @@ -1,3 +1,20 @@ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a frozen snapshot of an AIDL interface (or parcelable). Do not +// try to edit this file. It looks like you are doing that because you have +// modified an AIDL interface in a backward-incompatible way, e.g., deleting a +// function from an interface or a field from a parcelable and it broke the +// build. That breakage is intended. +// +// You must not make a backward incompatible changes to the AIDL files built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + package android.net.ipmemorystore; interface IOnL2KeyResponseListener { oneway void onL2KeyResponse(in android.net.ipmemorystore.StatusParcelable status, in String l2Key); diff --git a/services/net/aidl/ipmemorystore/3/android/net/ipmemorystore/IOnNetworkAttributesRetrievedListener.aidl b/services/net/aidl/ipmemorystore/3/android/net/ipmemorystore/IOnNetworkAttributesRetrievedListener.aidl index 3dd2ae6e9bab..b66db5ab21cb 100644 --- a/services/net/aidl/ipmemorystore/3/android/net/ipmemorystore/IOnNetworkAttributesRetrievedListener.aidl +++ b/services/net/aidl/ipmemorystore/3/android/net/ipmemorystore/IOnNetworkAttributesRetrievedListener.aidl @@ -1,3 +1,20 @@ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a frozen snapshot of an AIDL interface (or parcelable). Do not +// try to edit this file. It looks like you are doing that because you have +// modified an AIDL interface in a backward-incompatible way, e.g., deleting a +// function from an interface or a field from a parcelable and it broke the +// build. That breakage is intended. +// +// You must not make a backward incompatible changes to the AIDL files built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + package android.net.ipmemorystore; interface IOnNetworkAttributesRetrievedListener { oneway void onNetworkAttributesRetrieved(in android.net.ipmemorystore.StatusParcelable status, in String l2Key, in android.net.ipmemorystore.NetworkAttributesParcelable attributes); diff --git a/services/net/aidl/ipmemorystore/3/android/net/ipmemorystore/IOnSameL3NetworkResponseListener.aidl b/services/net/aidl/ipmemorystore/3/android/net/ipmemorystore/IOnSameL3NetworkResponseListener.aidl index 46d4ecb9ed7c..e9f2db445d38 100644 --- a/services/net/aidl/ipmemorystore/3/android/net/ipmemorystore/IOnSameL3NetworkResponseListener.aidl +++ b/services/net/aidl/ipmemorystore/3/android/net/ipmemorystore/IOnSameL3NetworkResponseListener.aidl @@ -1,3 +1,20 @@ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a frozen snapshot of an AIDL interface (or parcelable). Do not +// try to edit this file. It looks like you are doing that because you have +// modified an AIDL interface in a backward-incompatible way, e.g., deleting a +// function from an interface or a field from a parcelable and it broke the +// build. That breakage is intended. +// +// You must not make a backward incompatible changes to the AIDL files built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + package android.net.ipmemorystore; interface IOnSameL3NetworkResponseListener { oneway void onSameL3NetworkResponse(in android.net.ipmemorystore.StatusParcelable status, in android.net.ipmemorystore.SameL3NetworkResponseParcelable response); diff --git a/services/net/aidl/ipmemorystore/3/android/net/ipmemorystore/IOnStatusListener.aidl b/services/net/aidl/ipmemorystore/3/android/net/ipmemorystore/IOnStatusListener.aidl index 54e654b80c9e..49172cea9587 100644 --- a/services/net/aidl/ipmemorystore/3/android/net/ipmemorystore/IOnStatusListener.aidl +++ b/services/net/aidl/ipmemorystore/3/android/net/ipmemorystore/IOnStatusListener.aidl @@ -1,3 +1,20 @@ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a frozen snapshot of an AIDL interface (or parcelable). Do not +// try to edit this file. It looks like you are doing that because you have +// modified an AIDL interface in a backward-incompatible way, e.g., deleting a +// function from an interface or a field from a parcelable and it broke the +// build. That breakage is intended. +// +// You must not make a backward incompatible changes to the AIDL files built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + package android.net.ipmemorystore; interface IOnStatusListener { oneway void onComplete(in android.net.ipmemorystore.StatusParcelable status); diff --git a/services/net/aidl/ipmemorystore/3/android/net/ipmemorystore/NetworkAttributesParcelable.aidl b/services/net/aidl/ipmemorystore/3/android/net/ipmemorystore/NetworkAttributesParcelable.aidl index 9531ea3963fb..188db20b531a 100644 --- a/services/net/aidl/ipmemorystore/3/android/net/ipmemorystore/NetworkAttributesParcelable.aidl +++ b/services/net/aidl/ipmemorystore/3/android/net/ipmemorystore/NetworkAttributesParcelable.aidl @@ -1,3 +1,20 @@ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a frozen snapshot of an AIDL interface (or parcelable). Do not +// try to edit this file. It looks like you are doing that because you have +// modified an AIDL interface in a backward-incompatible way, e.g., deleting a +// function from an interface or a field from a parcelable and it broke the +// build. That breakage is intended. +// +// You must not make a backward incompatible changes to the AIDL files built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + package android.net.ipmemorystore; parcelable NetworkAttributesParcelable { byte[] assignedV4Address; diff --git a/services/net/aidl/ipmemorystore/3/android/net/ipmemorystore/SameL3NetworkResponseParcelable.aidl b/services/net/aidl/ipmemorystore/3/android/net/ipmemorystore/SameL3NetworkResponseParcelable.aidl index 414272b49f1d..7a2ed48241e7 100644 --- a/services/net/aidl/ipmemorystore/3/android/net/ipmemorystore/SameL3NetworkResponseParcelable.aidl +++ b/services/net/aidl/ipmemorystore/3/android/net/ipmemorystore/SameL3NetworkResponseParcelable.aidl @@ -1,3 +1,20 @@ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a frozen snapshot of an AIDL interface (or parcelable). Do not +// try to edit this file. It looks like you are doing that because you have +// modified an AIDL interface in a backward-incompatible way, e.g., deleting a +// function from an interface or a field from a parcelable and it broke the +// build. That breakage is intended. +// +// You must not make a backward incompatible changes to the AIDL files built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + package android.net.ipmemorystore; parcelable SameL3NetworkResponseParcelable { String l2Key1; diff --git a/services/net/aidl/ipmemorystore/3/android/net/ipmemorystore/StatusParcelable.aidl b/services/net/aidl/ipmemorystore/3/android/net/ipmemorystore/StatusParcelable.aidl index 92c6779b5dc0..d9b067875e84 100644 --- a/services/net/aidl/ipmemorystore/3/android/net/ipmemorystore/StatusParcelable.aidl +++ b/services/net/aidl/ipmemorystore/3/android/net/ipmemorystore/StatusParcelable.aidl @@ -1,3 +1,20 @@ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a frozen snapshot of an AIDL interface (or parcelable). Do not +// try to edit this file. It looks like you are doing that because you have +// modified an AIDL interface in a backward-incompatible way, e.g., deleting a +// function from an interface or a field from a parcelable and it broke the +// build. That breakage is intended. +// +// You must not make a backward incompatible changes to the AIDL files built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + package android.net.ipmemorystore; parcelable StatusParcelable { int resultCode; diff --git a/services/net/aidl/networkstack/3/android/net/DhcpResultsParcelable.aidl b/services/net/aidl/networkstack/3/android/net/DhcpResultsParcelable.aidl index 31891de7230a..07ff32111bb1 100644 --- a/services/net/aidl/networkstack/3/android/net/DhcpResultsParcelable.aidl +++ b/services/net/aidl/networkstack/3/android/net/DhcpResultsParcelable.aidl @@ -1,3 +1,20 @@ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a frozen snapshot of an AIDL interface (or parcelable). Do not +// try to edit this file. It looks like you are doing that because you have +// modified an AIDL interface in a backward-incompatible way, e.g., deleting a +// function from an interface or a field from a parcelable and it broke the +// build. That breakage is intended. +// +// You must not make a backward incompatible changes to the AIDL files built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + package android.net; parcelable DhcpResultsParcelable { android.net.StaticIpConfiguration baseConfiguration; diff --git a/services/net/aidl/networkstack/3/android/net/INetworkMonitor.aidl b/services/net/aidl/networkstack/3/android/net/INetworkMonitor.aidl index 029968b6f324..8aa68bd1c7bf 100644 --- a/services/net/aidl/networkstack/3/android/net/INetworkMonitor.aidl +++ b/services/net/aidl/networkstack/3/android/net/INetworkMonitor.aidl @@ -1,3 +1,20 @@ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a frozen snapshot of an AIDL interface (or parcelable). Do not +// try to edit this file. It looks like you are doing that because you have +// modified an AIDL interface in a backward-incompatible way, e.g., deleting a +// function from an interface or a field from a parcelable and it broke the +// build. That breakage is intended. +// +// You must not make a backward incompatible changes to the AIDL files built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + package android.net; interface INetworkMonitor { oneway void start(); diff --git a/services/net/aidl/networkstack/3/android/net/INetworkMonitorCallbacks.aidl b/services/net/aidl/networkstack/3/android/net/INetworkMonitorCallbacks.aidl index ee9871ddcd15..ea93729da5e7 100644 --- a/services/net/aidl/networkstack/3/android/net/INetworkMonitorCallbacks.aidl +++ b/services/net/aidl/networkstack/3/android/net/INetworkMonitorCallbacks.aidl @@ -1,3 +1,20 @@ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a frozen snapshot of an AIDL interface (or parcelable). Do not +// try to edit this file. It looks like you are doing that because you have +// modified an AIDL interface in a backward-incompatible way, e.g., deleting a +// function from an interface or a field from a parcelable and it broke the +// build. That breakage is intended. +// +// You must not make a backward incompatible changes to the AIDL files built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + package android.net; interface INetworkMonitorCallbacks { oneway void onNetworkMonitorCreated(in android.net.INetworkMonitor networkMonitor); diff --git a/services/net/aidl/networkstack/3/android/net/INetworkStackConnector.aidl b/services/net/aidl/networkstack/3/android/net/INetworkStackConnector.aidl index 7da11e476c0e..e3a83d17eb0b 100644 --- a/services/net/aidl/networkstack/3/android/net/INetworkStackConnector.aidl +++ b/services/net/aidl/networkstack/3/android/net/INetworkStackConnector.aidl @@ -1,3 +1,20 @@ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a frozen snapshot of an AIDL interface (or parcelable). Do not +// try to edit this file. It looks like you are doing that because you have +// modified an AIDL interface in a backward-incompatible way, e.g., deleting a +// function from an interface or a field from a parcelable and it broke the +// build. That breakage is intended. +// +// You must not make a backward incompatible changes to the AIDL files built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + package android.net; interface INetworkStackConnector { oneway void makeDhcpServer(in String ifName, in android.net.dhcp.DhcpServingParamsParcel params, in android.net.dhcp.IDhcpServerCallbacks cb); diff --git a/services/net/aidl/networkstack/3/android/net/INetworkStackStatusCallback.aidl b/services/net/aidl/networkstack/3/android/net/INetworkStackStatusCallback.aidl index f6ca6f7a78e2..3112a081735a 100644 --- a/services/net/aidl/networkstack/3/android/net/INetworkStackStatusCallback.aidl +++ b/services/net/aidl/networkstack/3/android/net/INetworkStackStatusCallback.aidl @@ -1,3 +1,20 @@ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a frozen snapshot of an AIDL interface (or parcelable). Do not +// try to edit this file. It looks like you are doing that because you have +// modified an AIDL interface in a backward-incompatible way, e.g., deleting a +// function from an interface or a field from a parcelable and it broke the +// build. That breakage is intended. +// +// You must not make a backward incompatible changes to the AIDL files built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + package android.net; interface INetworkStackStatusCallback { oneway void onStatusAvailable(int statusCode); diff --git a/services/net/aidl/networkstack/3/android/net/InitialConfigurationParcelable.aidl b/services/net/aidl/networkstack/3/android/net/InitialConfigurationParcelable.aidl index c80a78785b3b..f846b26af808 100644 --- a/services/net/aidl/networkstack/3/android/net/InitialConfigurationParcelable.aidl +++ b/services/net/aidl/networkstack/3/android/net/InitialConfigurationParcelable.aidl @@ -1,3 +1,20 @@ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a frozen snapshot of an AIDL interface (or parcelable). Do not +// try to edit this file. It looks like you are doing that because you have +// modified an AIDL interface in a backward-incompatible way, e.g., deleting a +// function from an interface or a field from a parcelable and it broke the +// build. That breakage is intended. +// +// You must not make a backward incompatible changes to the AIDL files built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + package android.net; parcelable InitialConfigurationParcelable { android.net.LinkAddress[] ipAddresses; diff --git a/services/net/aidl/networkstack/3/android/net/NattKeepalivePacketDataParcelable.aidl b/services/net/aidl/networkstack/3/android/net/NattKeepalivePacketDataParcelable.aidl index 65de8833e6c5..de75940f5a50 100644 --- a/services/net/aidl/networkstack/3/android/net/NattKeepalivePacketDataParcelable.aidl +++ b/services/net/aidl/networkstack/3/android/net/NattKeepalivePacketDataParcelable.aidl @@ -1,3 +1,20 @@ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a frozen snapshot of an AIDL interface (or parcelable). Do not +// try to edit this file. It looks like you are doing that because you have +// modified an AIDL interface in a backward-incompatible way, e.g., deleting a +// function from an interface or a field from a parcelable and it broke the +// build. That breakage is intended. +// +// You must not make a backward incompatible changes to the AIDL files built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + package android.net; parcelable NattKeepalivePacketDataParcelable { byte[] srcAddress; diff --git a/services/net/aidl/networkstack/3/android/net/PrivateDnsConfigParcel.aidl b/services/net/aidl/networkstack/3/android/net/PrivateDnsConfigParcel.aidl index 2de790bb7754..cf0fbce94c91 100644 --- a/services/net/aidl/networkstack/3/android/net/PrivateDnsConfigParcel.aidl +++ b/services/net/aidl/networkstack/3/android/net/PrivateDnsConfigParcel.aidl @@ -1,3 +1,20 @@ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a frozen snapshot of an AIDL interface (or parcelable). Do not +// try to edit this file. It looks like you are doing that because you have +// modified an AIDL interface in a backward-incompatible way, e.g., deleting a +// function from an interface or a field from a parcelable and it broke the +// build. That breakage is intended. +// +// You must not make a backward incompatible changes to the AIDL files built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + package android.net; parcelable PrivateDnsConfigParcel { String hostname; diff --git a/services/net/aidl/networkstack/3/android/net/ProvisioningConfigurationParcelable.aidl b/services/net/aidl/networkstack/3/android/net/ProvisioningConfigurationParcelable.aidl index 3a6c30496fd8..c0f2d4d1747e 100644 --- a/services/net/aidl/networkstack/3/android/net/ProvisioningConfigurationParcelable.aidl +++ b/services/net/aidl/networkstack/3/android/net/ProvisioningConfigurationParcelable.aidl @@ -1,3 +1,20 @@ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a frozen snapshot of an AIDL interface (or parcelable). Do not +// try to edit this file. It looks like you are doing that because you have +// modified an AIDL interface in a backward-incompatible way, e.g., deleting a +// function from an interface or a field from a parcelable and it broke the +// build. That breakage is intended. +// +// You must not make a backward incompatible changes to the AIDL files built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + package android.net; parcelable ProvisioningConfigurationParcelable { boolean enableIPv4; diff --git a/services/net/aidl/networkstack/3/android/net/TcpKeepalivePacketDataParcelable.aidl b/services/net/aidl/networkstack/3/android/net/TcpKeepalivePacketDataParcelable.aidl index e121c064f7ac..5926794c2e8a 100644 --- a/services/net/aidl/networkstack/3/android/net/TcpKeepalivePacketDataParcelable.aidl +++ b/services/net/aidl/networkstack/3/android/net/TcpKeepalivePacketDataParcelable.aidl @@ -1,3 +1,20 @@ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a frozen snapshot of an AIDL interface (or parcelable). Do not +// try to edit this file. It looks like you are doing that because you have +// modified an AIDL interface in a backward-incompatible way, e.g., deleting a +// function from an interface or a field from a parcelable and it broke the +// build. That breakage is intended. +// +// You must not make a backward incompatible changes to the AIDL files built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + package android.net; parcelable TcpKeepalivePacketDataParcelable { byte[] srcAddress; diff --git a/services/net/aidl/networkstack/3/android/net/dhcp/DhcpServingParamsParcel.aidl b/services/net/aidl/networkstack/3/android/net/dhcp/DhcpServingParamsParcel.aidl index 67193ae904bc..7ab156f10553 100644 --- a/services/net/aidl/networkstack/3/android/net/dhcp/DhcpServingParamsParcel.aidl +++ b/services/net/aidl/networkstack/3/android/net/dhcp/DhcpServingParamsParcel.aidl @@ -1,3 +1,20 @@ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a frozen snapshot of an AIDL interface (or parcelable). Do not +// try to edit this file. It looks like you are doing that because you have +// modified an AIDL interface in a backward-incompatible way, e.g., deleting a +// function from an interface or a field from a parcelable and it broke the +// build. That breakage is intended. +// +// You must not make a backward incompatible changes to the AIDL files built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + package android.net.dhcp; parcelable DhcpServingParamsParcel { int serverAddr; diff --git a/services/net/aidl/networkstack/3/android/net/dhcp/IDhcpServer.aidl b/services/net/aidl/networkstack/3/android/net/dhcp/IDhcpServer.aidl index 914315855496..d281ecfee61d 100644 --- a/services/net/aidl/networkstack/3/android/net/dhcp/IDhcpServer.aidl +++ b/services/net/aidl/networkstack/3/android/net/dhcp/IDhcpServer.aidl @@ -1,3 +1,20 @@ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a frozen snapshot of an AIDL interface (or parcelable). Do not +// try to edit this file. It looks like you are doing that because you have +// modified an AIDL interface in a backward-incompatible way, e.g., deleting a +// function from an interface or a field from a parcelable and it broke the +// build. That breakage is intended. +// +// You must not make a backward incompatible changes to the AIDL files built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + package android.net.dhcp; interface IDhcpServer { oneway void start(in android.net.INetworkStackStatusCallback cb); diff --git a/services/net/aidl/networkstack/3/android/net/dhcp/IDhcpServerCallbacks.aidl b/services/net/aidl/networkstack/3/android/net/dhcp/IDhcpServerCallbacks.aidl index dcc4489d52a6..98be0ab1d540 100644 --- a/services/net/aidl/networkstack/3/android/net/dhcp/IDhcpServerCallbacks.aidl +++ b/services/net/aidl/networkstack/3/android/net/dhcp/IDhcpServerCallbacks.aidl @@ -1,3 +1,20 @@ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a frozen snapshot of an AIDL interface (or parcelable). Do not +// try to edit this file. It looks like you are doing that because you have +// modified an AIDL interface in a backward-incompatible way, e.g., deleting a +// function from an interface or a field from a parcelable and it broke the +// build. That breakage is intended. +// +// You must not make a backward incompatible changes to the AIDL files built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + package android.net.dhcp; interface IDhcpServerCallbacks { oneway void onDhcpServerCreated(int statusCode, in android.net.dhcp.IDhcpServer server); diff --git a/services/net/aidl/networkstack/3/android/net/ip/IIpClient.aidl b/services/net/aidl/networkstack/3/android/net/ip/IIpClient.aidl index 176a5ce85373..85c8676ab8d0 100644 --- a/services/net/aidl/networkstack/3/android/net/ip/IIpClient.aidl +++ b/services/net/aidl/networkstack/3/android/net/ip/IIpClient.aidl @@ -1,3 +1,20 @@ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a frozen snapshot of an AIDL interface (or parcelable). Do not +// try to edit this file. It looks like you are doing that because you have +// modified an AIDL interface in a backward-incompatible way, e.g., deleting a +// function from an interface or a field from a parcelable and it broke the +// build. That breakage is intended. +// +// You must not make a backward incompatible changes to the AIDL files built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + package android.net.ip; interface IIpClient { oneway void completedPreDhcpAction(); diff --git a/services/net/aidl/networkstack/3/android/net/ip/IIpClientCallbacks.aidl b/services/net/aidl/networkstack/3/android/net/ip/IIpClientCallbacks.aidl index d6bc8089a0be..7fe39ed1ed7a 100644 --- a/services/net/aidl/networkstack/3/android/net/ip/IIpClientCallbacks.aidl +++ b/services/net/aidl/networkstack/3/android/net/ip/IIpClientCallbacks.aidl @@ -1,3 +1,20 @@ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a frozen snapshot of an AIDL interface (or parcelable). Do not +// try to edit this file. It looks like you are doing that because you have +// modified an AIDL interface in a backward-incompatible way, e.g., deleting a +// function from an interface or a field from a parcelable and it broke the +// build. That breakage is intended. +// +// You must not make a backward incompatible changes to the AIDL files built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + package android.net.ip; interface IIpClientCallbacks { oneway void onIpClientCreated(in android.net.ip.IIpClient ipClient); diff --git a/services/net/java/android/net/ip/IpServer.java b/services/net/java/android/net/ip/IpServer.java index 66884c60b0bc..6a6a1307723e 100644 --- a/services/net/java/android/net/ip/IpServer.java +++ b/services/net/java/android/net/ip/IpServer.java @@ -433,6 +433,9 @@ public class IpServer extends StateMachine { } } ifcg.clearFlag("running"); + + // TODO: this may throw if the interface is already gone. Do proper handling and + // simplify the DHCP server start/stop. mNMService.setInterfaceConfig(mIfaceName, ifcg); if (!configureDhcp(enabled, (Inet4Address) addr, prefixLen)) { @@ -440,6 +443,14 @@ public class IpServer extends StateMachine { } } catch (Exception e) { mLog.e("Error configuring interface " + e); + if (!enabled) { + try { + // Calling stopDhcp several times is fine + stopDhcp(); + } catch (Exception dhcpError) { + mLog.e("Error stopping DHCP", dhcpError); + } + } return false; } diff --git a/services/net/java/android/net/ipmemorystore/NetworkAttributes.java b/services/net/java/android/net/ipmemorystore/NetworkAttributes.java index e76976991797..818515ac9af1 100644 --- a/services/net/java/android/net/ipmemorystore/NetworkAttributes.java +++ b/services/net/java/android/net/ipmemorystore/NetworkAttributes.java @@ -127,6 +127,7 @@ public class NetworkAttributes { @Nullable private static InetAddress getByAddressOrNull(@Nullable final byte[] address) { + if (null == address) return null; try { return InetAddress.getByAddress(address); } catch (UnknownHostException e) { @@ -227,7 +228,9 @@ public class NetworkAttributes { } /** - * Set the lease expiry timestamp of assigned v4 address. + * Set the lease expiry timestamp of assigned v4 address. Long.MAX_VALUE is used + * to represent "infinite lease". + * * @param assignedV4AddressExpiry The lease expiry timestamp of assigned v4 address. * @return This builder. */ diff --git a/services/net/java/android/net/ipmemorystore/OnNetworkAttributesRetrievedListener.java b/services/net/java/android/net/ipmemorystore/OnNetworkAttributesRetrievedListener.java index ca6f3029d496..395ad98f38e0 100644 --- a/services/net/java/android/net/ipmemorystore/OnNetworkAttributesRetrievedListener.java +++ b/services/net/java/android/net/ipmemorystore/OnNetworkAttributesRetrievedListener.java @@ -40,8 +40,8 @@ public interface OnNetworkAttributesRetrievedListener { // NonNull, but still don't crash the system server if null if (null != listener) { listener.onNetworkAttributesRetrieved( - new Status(statusParcelable), l2Key, - new NetworkAttributes(networkAttributesParcelable)); + new Status(statusParcelable), l2Key, null == networkAttributesParcelable + ? null : new NetworkAttributes(networkAttributesParcelable)); } } diff --git a/services/tests/servicestests/src/com/android/server/am/MemoryStatUtilTest.java b/services/tests/servicestests/src/com/android/server/am/MemoryStatUtilTest.java index 174571de1e4c..6678a7833f9a 100644 --- a/services/tests/servicestests/src/com/android/server/am/MemoryStatUtilTest.java +++ b/services/tests/servicestests/src/com/android/server/am/MemoryStatUtilTest.java @@ -23,13 +23,18 @@ import static com.android.server.am.MemoryStatUtil.parseCmdlineFromProcfs; import static com.android.server.am.MemoryStatUtil.parseIonHeapSizeFromDebugfs; import static com.android.server.am.MemoryStatUtil.parseMemoryStatFromMemcg; import static com.android.server.am.MemoryStatUtil.parseMemoryStatFromProcfs; +import static com.android.server.am.MemoryStatUtil.parseProcessIonHeapSizesFromDebugfs; import static com.android.server.am.MemoryStatUtil.parseVmHWMFromProcfs; +import static com.google.common.truth.Truth.assertThat; + import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; import androidx.test.filters.SmallTest; +import com.android.server.am.MemoryStatUtil.IonAllocations; + import org.junit.Test; import java.io.ByteArrayOutputStream; @@ -178,32 +183,70 @@ public class MemoryStatUtilTest { + "voluntary_ctxt_switches:\t903\n" + "nonvoluntary_ctxt_switches:\t104\n"; + // Repeated lines have been removed. private static final String DEBUG_SYSTEM_ION_HEAP_CONTENTS = String.join( - " client pid size\n", - "----------------------------------------------------\n", - " audio@2.0-servi 765 4096\n", - " audio@2.0-servi 765 61440\n", - " audio@2.0-servi 765 4096\n", - " voip_client 96 8192\n", - " voip_client 96 4096\n", - " system_server 1232 16728064\n", - " surfaceflinger 611 50642944\n", - "----------------------------------------------------\n", - "orphaned allocations (info is from last known client):\n", - "----------------------------------------------------\n", - " total orphaned 0\n", - " total 55193600\n", - " deferred free 0\n", - "----------------------------------------------------\n", - "0 order 4 highmem pages in uncached pool = 0 total\n", - "0 order 4 lowmem pages in uncached pool = 0 total\n", - "1251 order 4 lowmem pages in cached pool = 81985536 total\n", - "VMID 8: 0 order 4 highmem pages in secure pool = 0 total\n", - "VMID 8: 0 order 4 lowmem pages in secure pool = 0 total\n", - "--------------------------------------------\n", - "uncached pool = 4096 cached pool = 83566592 secure pool = 0\n", - "pool total (uncached + cached + secure) = 83570688\n", - "--------------------------------------------\n"); + "\n", + " client pid size", + "----------------------------------------------------", + " audio@2.0-servi 765 4096", + " audio@2.0-servi 765 61440", + " audio@2.0-servi 765 4096", + " voip_client 96 8192", + " voip_client 96 4096", + " system_server 1232 16728064", + " surfaceflinger 611 50642944", + "----------------------------------------------------", + "orphaned allocations (info is from last known client):", + "----------------------------------------------------", + " total orphaned 0", + " total 55193600", + " deferred free 0", + "----------------------------------------------------", + "0 order 4 highmem pages in uncached pool = 0 total", + "0 order 4 lowmem pages in uncached pool = 0 total", + "1251 order 4 lowmem pages in cached pool = 81985536 total", + "VMID 8: 0 order 4 highmem pages in secure pool = 0 total", + "VMID 8: 0 order 4 lowmem pages in secure pool = 0 total", + "--------------------------------------------", + "uncached pool = 4096 cached pool = 83566592 secure pool = 0", + "pool total (uncached + cached + secure) = 83570688", + "--------------------------------------------"); + + // Repeated lines have been removed. + private static final String DEBUG_SYSTEM_ION_HEAP_CONTENTS_SARGO = String.join( + "\n", + " client pid size page counts" + + "-------------------------------------------------- 4K 8K " + + "16K 32K 64K 128K 256K 512K 1M 2M " + + "4M >=8M", + " system_server 1705 58097664 13120 532 " + + "0 0 0 0 0 0 0 0 " + + "0 0M", + " audio@2.0-servi 851 16384 0 2 0 " + + "0 0 0 0 0 0 0 " + + "0 0M", + " audio@2.0-servi 851 4096 1 0 0 " + + " 0 0 0 0 0 0 0 0 " + + "0M", + " audio@2.0-servi 851 4096 1 0 " + + " 0 0 0 0 0 0 0 0 " + + "0 0M", + "----------------------------------------------------", + "orphaned allocations (info is from last known client):", + "----------------------------------------------------", + " total orphaned 0", + " total 159928320", + " deferred free 0", + "----------------------------------------------------", + "0 order 4 highmem pages in uncached pool = 0 total", + "0 order 4 lowmem pages in uncached pool = 0 total", + "1251 order 4 lowmem pages in cached pool = 81985536 total", + "VMID 8: 0 order 4 highmem pages in secure pool = 0 total", + "VMID 8: 0 order 4 lowmem pages in secure pool = 0 total", + "--------------------------------------------", + "uncached pool = 4096 cached pool = 83566592 secure pool = 0", + "pool total (uncached + cached + secure) = 83570688", + "--------------------------------------------"); @Test public void testParseMemoryStatFromMemcg_parsesCorrectValues() { @@ -233,6 +276,7 @@ public class MemoryStatUtilTest { assertEquals(0, stat.cacheInBytes); assertEquals(22 * BYTES_IN_KILOBYTE, stat.swapInBytes); assertEquals(2222 * JIFFY_NANOS, stat.startTimeNanos); + assertEquals(37860 * BYTES_IN_KILOBYTE, stat.anonRssInBytes); } @Test @@ -322,5 +366,47 @@ public class MemoryStatUtilTest { @Test public void testParseIonHeapSizeFromDebugfs_correctValue() { assertEquals(55193600, parseIonHeapSizeFromDebugfs(DEBUG_SYSTEM_ION_HEAP_CONTENTS)); + + assertEquals(159928320, parseIonHeapSizeFromDebugfs(DEBUG_SYSTEM_ION_HEAP_CONTENTS_SARGO)); + } + + @Test + public void testParseProcessIonHeapSizesFromDebugfs_emptyContents() { + assertEquals(0, parseProcessIonHeapSizesFromDebugfs("").size()); + + assertEquals(0, parseProcessIonHeapSizesFromDebugfs(null).size()); + } + + @Test + public void testParseProcessIonHeapSizesFromDebugfs_invalidValue() { + assertEquals(0, parseProcessIonHeapSizesFromDebugfs("<<no-value>>").size()); + } + + @Test + public void testParseProcessIonHeapSizesFromDebugfs_correctValue1() { + assertThat(parseProcessIonHeapSizesFromDebugfs(DEBUG_SYSTEM_ION_HEAP_CONTENTS)) + .containsExactly( + createIonAllocations(765, 61440 + 4096 + 4096, 3, 61440), + createIonAllocations(96, 8192 + 4096, 2, 8192), + createIonAllocations(1232, 16728064, 1, 16728064), + createIonAllocations(611, 50642944, 1, 50642944)); + } + + @Test + public void testParseProcessIonHeapSizesFromDebugfs_correctValue2() { + assertThat(parseProcessIonHeapSizesFromDebugfs(DEBUG_SYSTEM_ION_HEAP_CONTENTS_SARGO)) + .containsExactly( + createIonAllocations(1705, 58097664, 1, 58097664), + createIonAllocations(851, 16384 + 4096 + 4096, 3, 16384)); + } + + private static IonAllocations createIonAllocations(int pid, long totalSizeInBytes, int count, + long maxSizeInBytes) { + IonAllocations allocations = new IonAllocations(); + allocations.pid = pid; + allocations.totalSizeInBytes = totalSizeInBytes; + allocations.count = count; + allocations.maxSizeInBytes = maxSizeInBytes; + return allocations; } } diff --git a/services/tests/servicestests/src/com/android/server/appop/AppOpsServiceTest.java b/services/tests/servicestests/src/com/android/server/appop/AppOpsServiceTest.java index d90117905de6..71661452d800 100644 --- a/services/tests/servicestests/src/com/android/server/appop/AppOpsServiceTest.java +++ b/services/tests/servicestests/src/com/android/server/appop/AppOpsServiceTest.java @@ -37,12 +37,16 @@ import android.os.Handler; import android.os.HandlerThread; import android.os.Process; import android.os.RemoteCallback; +import android.provider.Settings; import androidx.test.InstrumentationRegistry; import androidx.test.filters.SmallTest; import androidx.test.runner.AndroidJUnit4; +import org.junit.AfterClass; import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; @@ -68,11 +72,14 @@ public class AppOpsServiceTest { private File mAppOpsFile; private Context mContext; private Handler mHandler; + private AppOpsManager mAppOpsManager; private AppOpsService mAppOpsService; private String mMyPackageName; private int mMyUid; private long mTestStartMillis; + private static String sDefaultAppopHistoryParameters; + @Before public void setUp() { mContext = InstrumentationRegistry.getTargetContext(); @@ -88,11 +95,29 @@ public class AppOpsServiceTest { mMyPackageName = mContext.getOpPackageName(); mMyUid = Process.myUid(); + mAppOpsManager = mContext.getSystemService(AppOpsManager.class); mAppOpsService = new AppOpsService(mAppOpsFile, mHandler); + mAppOpsService.mHistoricalRegistry.systemReady(mContext.getContentResolver()); mAppOpsService.mContext = mContext; mTestStartMillis = System.currentTimeMillis(); } + @BeforeClass + public static void configureDesiredAppopHistoryParameters() { + final Context context = InstrumentationRegistry.getTargetContext(); + sDefaultAppopHistoryParameters = Settings.Global.getString(context.getContentResolver(), + Settings.Global.APPOP_HISTORY_PARAMETERS); + Settings.Global.putString(InstrumentationRegistry.getTargetContext().getContentResolver(), + Settings.Global.APPOP_HISTORY_PARAMETERS, null); + } + + @AfterClass + public static void restoreDefaultAppopHistoryParameters() { + Settings.Global.putString(InstrumentationRegistry.getTargetContext().getContentResolver(), + Settings.Global.APPOP_HISTORY_PARAMETERS, + sDefaultAppopHistoryParameters); + } + @Test public void testGetOpsForPackage_noOpsLogged() { assertThat(getLoggedOps()).isNull(); @@ -218,6 +243,7 @@ public class AppOpsServiceTest { assertThat(getLoggedOps()).isNull(); } + @Ignore("Historical appops are disabled in Android Q") @Test public void testPackageRemovedHistoricalOps() throws InterruptedException { mAppOpsService.setMode(OP_READ_SMS, mMyUid, mMyPackageName, MODE_ALLOWED); diff --git a/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest1.java b/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest1.java index 7e6b7da4a058..6c917b7f8636 100644 --- a/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest1.java +++ b/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest1.java @@ -97,16 +97,25 @@ import android.os.UserHandle; import android.test.suitebuilder.annotation.SmallTest; import android.util.Log; import android.util.SparseArray; +import android.util.Xml; import com.android.frameworks.servicestests.R; +import com.android.internal.util.FastXmlSerializer; import com.android.server.pm.ShortcutService.ConfigConstants; import com.android.server.pm.ShortcutService.FileOutputStreamWithPath; import com.android.server.pm.ShortcutUser.PackageWithUser; import org.mockito.ArgumentCaptor; +import org.xmlpull.v1.XmlPullParser; +import org.xmlpull.v1.XmlPullParserException; +import org.xmlpull.v1.XmlSerializer; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.File; import java.io.IOException; +import java.io.InputStreamReader; +import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; import java.util.Locale; @@ -8089,4 +8098,70 @@ public class ShortcutManagerTest1 extends BaseShortcutManagerTest { } } } + + public void testShareTargetInfo_saveToXml() throws IOException, XmlPullParserException { + List<ShareTargetInfo> expectedValues = new ArrayList<>(); + expectedValues.add(new ShareTargetInfo( + new ShareTargetInfo.TargetData[]{new ShareTargetInfo.TargetData( + "http", "www.google.com", "1234", "somePath", "somePathPattern", + "somePathPrefix", "text/plain")}, "com.test.directshare.TestActivity1", + new String[]{"com.test.category.CATEGORY1", "com.test.category.CATEGORY2"})); + expectedValues.add(new ShareTargetInfo(new ShareTargetInfo.TargetData[]{ + new ShareTargetInfo.TargetData(null, null, null, null, null, null, "video/mp4"), + new ShareTargetInfo.TargetData("content", null, null, null, null, null, "video/*")}, + "com.test.directshare.TestActivity5", + new String[]{"com.test.category.CATEGORY5", "com.test.category.CATEGORY6"})); + + // Write ShareTargets to Xml + ByteArrayOutputStream outStream = new ByteArrayOutputStream(); + final XmlSerializer outXml = new FastXmlSerializer(); + outXml.setOutput(outStream, StandardCharsets.UTF_8.name()); + outXml.startDocument(null, true); + for (int i = 0; i < expectedValues.size(); i++) { + expectedValues.get(i).saveToXml(outXml); + } + outXml.endDocument(); + outXml.flush(); + + // Read ShareTargets from Xml + ByteArrayInputStream inStream = new ByteArrayInputStream(outStream.toByteArray()); + XmlPullParser parser = Xml.newPullParser(); + parser.setInput(new InputStreamReader(inStream)); + List<ShareTargetInfo> shareTargets = new ArrayList<>(); + int type; + while ((type = parser.next()) != XmlPullParser.END_DOCUMENT) { + if (type == XmlPullParser.START_TAG && parser.getName().equals("share-target")) { + shareTargets.add(ShareTargetInfo.loadFromXml(parser)); + } + } + + // Assert two lists are equal + assertNotNull(shareTargets); + assertEquals(expectedValues.size(), shareTargets.size()); + + for (int i = 0; i < expectedValues.size(); i++) { + ShareTargetInfo expected = expectedValues.get(i); + ShareTargetInfo actual = shareTargets.get(i); + + assertEquals(expected.mTargetData.length, actual.mTargetData.length); + for (int j = 0; j < expected.mTargetData.length; j++) { + assertEquals(expected.mTargetData[j].mScheme, actual.mTargetData[j].mScheme); + assertEquals(expected.mTargetData[j].mHost, actual.mTargetData[j].mHost); + assertEquals(expected.mTargetData[j].mPort, actual.mTargetData[j].mPort); + assertEquals(expected.mTargetData[j].mPath, actual.mTargetData[j].mPath); + assertEquals(expected.mTargetData[j].mPathPrefix, + actual.mTargetData[j].mPathPrefix); + assertEquals(expected.mTargetData[j].mPathPattern, + actual.mTargetData[j].mPathPattern); + assertEquals(expected.mTargetData[j].mMimeType, actual.mTargetData[j].mMimeType); + } + + assertEquals(expected.mTargetClass, actual.mTargetClass); + + assertEquals(expected.mCategories.length, actual.mCategories.length); + for (int j = 0; j < expected.mCategories.length; j++) { + assertEquals(expected.mCategories[j], actual.mCategories[j]); + } + } + } } diff --git a/services/tests/uiservicestests/src/com/android/server/UiServiceTestCase.java b/services/tests/uiservicestests/src/com/android/server/UiServiceTestCase.java index a1d48cc9d638..14b71ec526a8 100644 --- a/services/tests/uiservicestests/src/com/android/server/UiServiceTestCase.java +++ b/services/tests/uiservicestests/src/com/android/server/UiServiceTestCase.java @@ -49,7 +49,7 @@ public class UiServiceTestCase { } @Before - public void setup() { + public final void setup() { MockitoAnnotations.initMocks(this); // Share classloader to allow package access. 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 52c199a34f67..397d2155beeb 100644 --- a/services/tests/uiservicestests/src/com/android/server/notification/NotificationListenerServiceTest.java +++ b/services/tests/uiservicestests/src/com/android/server/notification/NotificationListenerServiceTest.java @@ -16,12 +16,16 @@ package com.android.server.notification; +import static android.app.Notification.EXTRA_SMALL_ICON; import static android.service.notification.NotificationListenerService.Ranking.USER_SENTIMENT_NEGATIVE; import static android.service.notification.NotificationListenerService.Ranking.USER_SENTIMENT_NEUTRAL; import static android.service.notification.NotificationListenerService.Ranking.USER_SENTIMENT_POSITIVE; +import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotEquals; import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.Mockito.mock; @@ -31,31 +35,49 @@ import android.app.INotificationManager; import android.app.Notification; import android.app.NotificationChannel; import android.app.PendingIntent; +import android.content.Context; import android.content.Intent; +import android.content.pm.ApplicationInfo; +import android.graphics.Bitmap; +import android.graphics.drawable.Icon; import android.os.Binder; -import android.os.Bundle; +import android.os.Build; import android.os.IBinder; +import android.os.Parcel; import android.service.notification.NotificationListenerService; import android.service.notification.NotificationListenerService.Ranking; +import android.service.notification.NotificationListenerService.RankingMap; import android.service.notification.NotificationRankingUpdate; import android.service.notification.SnoozeCriterion; import android.test.suitebuilder.annotation.SmallTest; -import androidx.test.runner.AndroidJUnit4; - import com.android.server.UiServiceTestCase; +import org.junit.After; +import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import java.util.ArrayList; import java.util.List; +import androidx.test.runner.AndroidJUnit4; + @SmallTest @RunWith(AndroidJUnit4.class) public class NotificationListenerServiceTest extends UiServiceTestCase { - private String[] mKeys = new String[] { "key", "key1", "key2", "key3", "key4"}; + int targetSdk = 0; + + @Before + public void setUp() { + targetSdk = mContext.getApplicationInfo().targetSdkVersion; + } + + @After + public void tearDown() { + mContext.getApplicationInfo().targetSdkVersion = targetSdk; + } @Test public void testGetActiveNotifications_notNull() throws Exception { @@ -97,52 +119,150 @@ public class NotificationListenerServiceTest extends UiServiceTestCase { } } - private NotificationRankingUpdate generateUpdate() { - List<String> interceptedKeys = new ArrayList<>(); - Bundle visibilityOverrides = new Bundle(); - Bundle overrideGroupKeys = new Bundle(); - Bundle suppressedVisualEffects = new Bundle(); - Bundle explanation = new Bundle(); - Bundle channels = new Bundle(); - Bundle overridePeople = new Bundle(); - Bundle snoozeCriteria = new Bundle(); - Bundle showBadge = new Bundle(); - int[] importance = new int[mKeys.length]; - Bundle userSentiment = new Bundle(); - Bundle mHidden = new Bundle(); - Bundle smartActions = new Bundle(); - Bundle smartReplies = new Bundle(); - Bundle lastAudiblyAlerted = new Bundle(); - Bundle noisy = new Bundle(); - boolean[] canBubble = new boolean[mKeys.length]; + // Tests parceling of NotificationRankingUpdate, and by extension, RankingMap and Ranking. + @Test + public void testRankingUpdate_parcel() { + NotificationRankingUpdate nru = generateUpdate(); + Parcel parcel = Parcel.obtain(); + nru.writeToParcel(parcel, 0); + parcel.setDataPosition(0); + NotificationRankingUpdate nru1 = NotificationRankingUpdate.CREATOR.createFromParcel(parcel); + assertEquals(nru, nru1); + } + + // Tests parceling of RankingMap and RankingMap.equals + @Test + public void testRankingMap_parcel() { + RankingMap rmap = generateUpdate().getRankingMap(); + Parcel parcel = Parcel.obtain(); + rmap.writeToParcel(parcel, 0); + parcel.setDataPosition(0); + RankingMap rmap1 = RankingMap.CREATOR.createFromParcel(parcel); + + detailedAssertEquals(rmap, rmap1); + assertEquals(rmap, rmap1); + } + // Tests parceling of Ranking and Ranking.equals + @Test + public void testRanking_parcel() { + Ranking ranking = generateUpdate().getRankingMap().getRawRankingObject(mKeys[0]); + Parcel parcel = Parcel.obtain(); + ranking.writeToParcel(parcel, 0); + parcel.setDataPosition(0); + Ranking ranking1 = new Ranking(parcel); + detailedAssertEquals("rankings differ: ", ranking, ranking1); + assertEquals(ranking, ranking1); + } + + // Tests NotificationRankingUpdate.equals(), and by extension, RankingMap and Ranking. + @Test + public void testRankingUpdate_equals() { + NotificationRankingUpdate nru = generateUpdate(); + NotificationRankingUpdate nru2 = generateUpdate(); + detailedAssertEquals(nru, nru2); + assertEquals(nru, nru2); + Ranking tweak = nru2.getRankingMap().getRawRankingObject(mKeys[0]); + tweak.populate( + tweak.getKey(), + tweak.getRank(), + !tweak.matchesInterruptionFilter(), // note the inversion here! + tweak.getVisibilityOverride(), + tweak.getSuppressedVisualEffects(), + tweak.getImportance(), + tweak.getImportanceExplanation(), + tweak.getOverrideGroupKey(), + tweak.getChannel(), + (ArrayList) tweak.getAdditionalPeople(), + (ArrayList) tweak.getSnoozeCriteria(), + tweak.canShowBadge(), + tweak.getUserSentiment(), + tweak.isSuspended(), + tweak.getLastAudiblyAlertedMillis(), + tweak.isNoisy(), + (ArrayList) tweak.getSmartActions(), + (ArrayList) tweak.getSmartReplies(), + tweak.canBubble() + ); + assertNotEquals(nru, nru2); + } + + @Test + public void testLegacyIcons_preM() { + TestListenerService service = new TestListenerService(); + service.attachBaseContext(mContext); + service.targetSdk = Build.VERSION_CODES.LOLLIPOP_MR1; + + Bitmap largeIcon = Bitmap.createBitmap(100, 200, Bitmap.Config.RGB_565); + + Notification n = new Notification.Builder(mContext, "channel") + .setSmallIcon(android.R.drawable.star_on) + .setLargeIcon(Icon.createWithBitmap(largeIcon)) + .setContentTitle("test") + .build(); + + service.createLegacyIconExtras(n); + + assertEquals(android.R.drawable.star_on, n.extras.getInt(EXTRA_SMALL_ICON)); + assertEquals(android.R.drawable.star_on, n.icon); + assertNotNull(n.largeIcon); + assertNotNull(n.extras.getParcelable(Notification.EXTRA_LARGE_ICON)); + } + + @Test + public void testLegacyIcons_mPlus() { + TestListenerService service = new TestListenerService(); + service.attachBaseContext(mContext); + service.targetSdk = Build.VERSION_CODES.M; + + Bitmap largeIcon = Bitmap.createBitmap(100, 200, Bitmap.Config.RGB_565); + + Notification n = new Notification.Builder(mContext, "channel") + .setSmallIcon(android.R.drawable.star_on) + .setLargeIcon(Icon.createWithBitmap(largeIcon)) + .setContentTitle("test") + .build(); + + service.createLegacyIconExtras(n); + + assertEquals(0, n.extras.getInt(EXTRA_SMALL_ICON)); + assertNull(n.largeIcon); + } + + + // Test data + + private String[] mKeys = new String[] { "key", "key1", "key2", "key3", "key4"}; + + private NotificationRankingUpdate generateUpdate() { + Ranking[] rankings = new Ranking[mKeys.length]; for (int i = 0; i < mKeys.length; i++) { - String key = mKeys[i]; - visibilityOverrides.putInt(key, getVisibilityOverride(i)); - overrideGroupKeys.putString(key, getOverrideGroupKey(key)); - if (isIntercepted(i)) { - interceptedKeys.add(key); - } - suppressedVisualEffects.putInt(key, getSuppressedVisualEffects(i)); - importance[i] = getImportance(i); - explanation.putString(key, getExplanation(key)); - channels.putParcelable(key, getChannel(key, i)); - overridePeople.putStringArrayList(key, getPeople(key, i)); - snoozeCriteria.putParcelableArrayList(key, getSnoozeCriteria(key, i)); - showBadge.putBoolean(key, getShowBadge(i)); - userSentiment.putInt(key, getUserSentiment(i)); - mHidden.putBoolean(key, getHidden(i)); - smartActions.putParcelableArrayList(key, getSmartActions(key, i)); - smartReplies.putCharSequenceArrayList(key, getSmartReplies(key, i)); - lastAudiblyAlerted.putLong(key, lastAudiblyAlerted(i)); - noisy.putBoolean(key, getNoisy(i)); - canBubble[i] = canBubble(i); + final String key = mKeys[i]; + Ranking ranking = new Ranking(); + ranking.populate( + key, + i, + !isIntercepted(i), + getVisibilityOverride(i), + getSuppressedVisualEffects(i), + getImportance(i), + getExplanation(key), + getOverrideGroupKey(key), + getChannel(key, i), + getPeople(key, i), + getSnoozeCriteria(key, i), + getShowBadge(i), + getUserSentiment(i), + getHidden(i), + lastAudiblyAlerted(i), + getNoisy(i), + getSmartActions(key, i), + getSmartReplies(key, i), + canBubble(i) + ); + rankings[i] = ranking; } - NotificationRankingUpdate update = new NotificationRankingUpdate(mKeys, - interceptedKeys.toArray(new String[0]), visibilityOverrides, - suppressedVisualEffects, importance, explanation, overrideGroupKeys, - channels, overridePeople, snoozeCriteria, showBadge, userSentiment, mHidden, - smartActions, smartReplies, lastAudiblyAlerted, noisy, canBubble); + NotificationRankingUpdate update = new NotificationRankingUpdate(rankings); return update; } @@ -253,8 +373,46 @@ public class NotificationListenerServiceTest extends UiServiceTestCase { } } + private void detailedAssertEquals(NotificationRankingUpdate a, NotificationRankingUpdate b) { + assertEquals(a.getRankingMap(), b.getRankingMap()); + } + + private void detailedAssertEquals(String comment, Ranking a, Ranking b) { + assertEquals(comment, a.getKey(), b.getKey()); + assertEquals(comment, a.getRank(), b.getRank()); + assertEquals(comment, a.matchesInterruptionFilter(), b.matchesInterruptionFilter()); + assertEquals(comment, a.getVisibilityOverride(), b.getVisibilityOverride()); + assertEquals(comment, a.getSuppressedVisualEffects(), b.getSuppressedVisualEffects()); + assertEquals(comment, a.getImportance(), b.getImportance()); + assertEquals(comment, a.getImportanceExplanation(), b.getImportanceExplanation()); + assertEquals(comment, a.getOverrideGroupKey(), b.getOverrideGroupKey()); + assertEquals(comment, a.getChannel(), b.getChannel()); + assertEquals(comment, a.getAdditionalPeople(), b.getAdditionalPeople()); + assertEquals(comment, a.getSnoozeCriteria(), b.getSnoozeCriteria()); + assertEquals(comment, a.canShowBadge(), b.canShowBadge()); + assertEquals(comment, a.getUserSentiment(), b.getUserSentiment()); + assertEquals(comment, a.isSuspended(), b.isSuspended()); + assertEquals(comment, a.getLastAudiblyAlertedMillis(), b.getLastAudiblyAlertedMillis()); + assertEquals(comment, a.isNoisy(), b.isNoisy()); + assertEquals(comment, a.getSmartReplies(), b.getSmartReplies()); + assertEquals(comment, a.canBubble(), b.canBubble()); + assertActionsEqual(a.getSmartActions(), b.getSmartActions()); + } + + private void detailedAssertEquals(RankingMap a, RankingMap b) { + Ranking arank = new Ranking(); + Ranking brank = new Ranking(); + assertArrayEquals(a.getOrderedKeys(), b.getOrderedKeys()); + for (String key : a.getOrderedKeys()) { + a.getRanking(key, arank); + b.getRanking(key, brank); + detailedAssertEquals("ranking for key <" + key + ">", arank, brank); + } + } + public static class TestListenerService extends NotificationListenerService { private final IBinder binder = new LocalBinder(); + public int targetSdk = 0; public TestListenerService() { mWrapper = mock(NotificationListenerWrapper.class); @@ -276,5 +434,19 @@ public class NotificationListenerServiceTest extends UiServiceTestCase { return TestListenerService.this; } } + + @Override + protected void attachBaseContext(Context base) { + super.attachBaseContext(base); + } + + @Override + public ApplicationInfo getApplicationInfo() { + ApplicationInfo info = super.getApplicationInfo(); + if (targetSdk != 0) { + info.targetSdkVersion = targetSdk; + } + return info; + } } } diff --git a/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java b/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java index e75a30b12f68..5ba1eb29f6b4 100644 --- a/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java +++ b/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java @@ -3807,6 +3807,20 @@ public class NotificationManagerServiceTest extends UiServiceTestCase { } @Test + public void testIsCallerInstantApp_userAllNotification() throws Exception { + ApplicationInfo info = new ApplicationInfo(); + info.privateFlags = ApplicationInfo.PRIVATE_FLAG_INSTANT; + when(mPackageManager.getApplicationInfo(anyString(), anyInt(), eq(UserHandle.USER_SYSTEM))) + .thenReturn(info); + when(mPackageManager.getPackagesForUid(anyInt())).thenReturn(new String[]{"any"}); + + assertTrue(mService.isCallerInstantApp(45770, UserHandle.USER_ALL)); + + info.privateFlags = 0; + assertFalse(mService.isCallerInstantApp(575370, UserHandle.USER_ALL )); + } + + @Test public void testResolveNotificationUid_sameApp_nonSystemUser() throws Exception { ApplicationInfo info = new ApplicationInfo(); info.uid = Binder.getCallingUid(); diff --git a/services/tests/uiservicestests/src/com/android/server/slice/PinnedSliceStateTest.java b/services/tests/uiservicestests/src/com/android/server/slice/PinnedSliceStateTest.java index 4c2822af264c..f5002ace6690 100644 --- a/services/tests/uiservicestests/src/com/android/server/slice/PinnedSliceStateTest.java +++ b/services/tests/uiservicestests/src/com/android/server/slice/PinnedSliceStateTest.java @@ -68,7 +68,7 @@ public class PinnedSliceStateTest extends UiServiceTestCase { private IBinder mToken = new Binder(); @Before - public void setup() { + public void setUp() { mSliceService = mock(SliceManagerService.class); when(mSliceService.getContext()).thenReturn(mContext); when(mSliceService.getLock()).thenReturn(new Object()); diff --git a/services/tests/uiservicestests/src/com/android/server/slice/SliceFullAccessListTest.java b/services/tests/uiservicestests/src/com/android/server/slice/SliceFullAccessListTest.java index d942c5af0422..4958daf8dce6 100644 --- a/services/tests/uiservicestests/src/com/android/server/slice/SliceFullAccessListTest.java +++ b/services/tests/uiservicestests/src/com/android/server/slice/SliceFullAccessListTest.java @@ -47,7 +47,7 @@ public class SliceFullAccessListTest extends UiServiceTestCase { private SliceFullAccessList mAccessList; @Before - public void setup() { + public void setUp() { mAccessList = new SliceFullAccessList(mContext); } diff --git a/services/tests/uiservicestests/src/com/android/server/slice/SliceManagerServiceTest.java b/services/tests/uiservicestests/src/com/android/server/slice/SliceManagerServiceTest.java index 7182f0f3bf80..a4436951f48b 100644 --- a/services/tests/uiservicestests/src/com/android/server/slice/SliceManagerServiceTest.java +++ b/services/tests/uiservicestests/src/com/android/server/slice/SliceManagerServiceTest.java @@ -71,7 +71,7 @@ public class SliceManagerServiceTest extends UiServiceTestCase { private TestableContext mContextSpy; @Before - public void setup() { + public void setUp() { LocalServices.addService(UsageStatsManagerInternal.class, mock(UsageStatsManagerInternal.class)); mContext.addMockSystemService(AppOpsManager.class, mock(AppOpsManager.class)); diff --git a/services/tests/wmtests/AndroidManifest.xml b/services/tests/wmtests/AndroidManifest.xml index 5136705ffbc2..2ce33fcc62b4 100644 --- a/services/tests/wmtests/AndroidManifest.xml +++ b/services/tests/wmtests/AndroidManifest.xml @@ -36,6 +36,7 @@ <uses-permission android:name="android.permission.READ_FRAME_BUFFER" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.REORDER_TASKS" /> + <uses-permission android:name="android.permission.READ_DEVICE_CONFIG" /> <!-- TODO: Remove largeHeap hack when memory leak is fixed (b/123984854) --> <application android:debuggable="true" diff --git a/services/tests/wmtests/src/com/android/server/policy/PhoneWindowManagerTests.java b/services/tests/wmtests/src/com/android/server/policy/PhoneWindowManagerTests.java new file mode 100644 index 000000000000..fc24f5e207a8 --- /dev/null +++ b/services/tests/wmtests/src/com/android/server/policy/PhoneWindowManagerTests.java @@ -0,0 +1,95 @@ +/* + * 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.policy; + +import static com.android.dx.mockito.inline.extended.ExtendedMockito.doNothing; +import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn; +import static com.android.dx.mockito.inline.extended.ExtendedMockito.mock; +import static com.android.dx.mockito.inline.extended.ExtendedMockito.never; +import static com.android.dx.mockito.inline.extended.ExtendedMockito.reset; +import static com.android.dx.mockito.inline.extended.ExtendedMockito.spy; +import static com.android.dx.mockito.inline.extended.ExtendedMockito.spyOn; +import static com.android.dx.mockito.inline.extended.ExtendedMockito.verify; +import static com.android.dx.mockito.inline.extended.ExtendedMockito.when; + +import static org.mockito.ArgumentMatchers.anyBoolean; +import static org.mockito.ArgumentMatchers.anyInt; +import static org.mockito.ArgumentMatchers.anyString; + +import android.app.ActivityManager; + +import androidx.test.filters.SmallTest; + +import com.android.server.wm.ActivityTaskManagerInternal; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +/** + * Test class for {@link PhoneWindowManager}. + * + * Build/Install/Run: + * atest WmTests:PhoneWindowManagerTests + */ +@SmallTest +public class PhoneWindowManagerTests { + + PhoneWindowManager mPhoneWindowManager; + + @Before + public void setUp() { + mPhoneWindowManager = spy(new PhoneWindowManager()); + spyOn(ActivityManager.getService()); + } + + @After + public void tearDown() { + reset(ActivityManager.getService()); + } + + @Test + public void testShouldNotStartDockOrHomeWhenSetup() throws Exception { + mockStartDockOrHome(); + doReturn(false).when(mPhoneWindowManager).isUserSetupComplete(); + + mPhoneWindowManager.startDockOrHome( + 0 /* displayId */, false /* fromHomeKey */, false /* awakenFromDreams */); + + verify(mPhoneWindowManager, never()).createHomeDockIntent(); + } + + @Test + public void testShouldStartDockOrHomeAfterSetup() throws Exception { + mockStartDockOrHome(); + doReturn(true).when(mPhoneWindowManager).isUserSetupComplete(); + + mPhoneWindowManager.startDockOrHome( + 0 /* displayId */, false /* fromHomeKey */, false /* awakenFromDreams */); + + verify(mPhoneWindowManager).createHomeDockIntent(); + } + + private void mockStartDockOrHome() throws Exception { + doNothing().when(ActivityManager.getService()).stopAppSwitches(); + ActivityTaskManagerInternal mMockActivityTaskManagerInternal = + mock(ActivityTaskManagerInternal.class); + when(mMockActivityTaskManagerInternal.startHomeOnDisplay( + anyInt(), anyString(), anyInt(), anyBoolean(), anyBoolean())).thenReturn(false); + mPhoneWindowManager.mActivityTaskManagerInternal = mMockActivityTaskManagerInternal; + } +} diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java b/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java index 11a177a71a10..8fbb7f53e668 100644 --- a/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java @@ -31,6 +31,7 @@ import static com.android.dx.mockito.inline.extended.ExtendedMockito.spyOn; import static com.android.dx.mockito.inline.extended.ExtendedMockito.verify; import static com.android.dx.mockito.inline.extended.ExtendedMockito.when; import static com.android.server.wm.ActivityStack.ActivityState.INITIALIZING; +import static com.android.server.wm.ActivityStack.ActivityState.PAUSED; import static com.android.server.wm.ActivityStack.ActivityState.PAUSING; import static com.android.server.wm.ActivityStack.ActivityState.RESUMED; import static com.android.server.wm.ActivityStack.ActivityState.STOPPED; @@ -56,7 +57,6 @@ import android.app.servertransaction.PauseActivityItem; import android.content.pm.ActivityInfo; import android.content.res.Configuration; import android.graphics.Rect; -import android.os.RemoteException; import android.platform.test.annotations.Presubmit; import android.util.MergedConfiguration; import android.util.MutableBoolean; @@ -163,12 +163,10 @@ public class ActivityRecordTests extends ActivityTestsBase { // Make sure the state does not change if we are not the current top activity. mActivity.setState(STOPPED, "testPausingWhenVisibleFromStopped behind"); - // Make sure that the state does not change when we have an activity becoming translucent final ActivityRecord topActivity = new ActivityBuilder(mService).setTask(mTask).build(); mStack.mTranslucentActivityWaiting = topActivity; mActivity.makeVisibleIfNeeded(null /* starting */, true /* reportToClient */); - - assertTrue(mActivity.isState(STOPPED)); + assertTrue(mActivity.isState(PAUSED)); } private void ensureActivityConfiguration() { @@ -439,6 +437,15 @@ public class ActivityRecordTests extends ActivityTestsBase { } @Test + public void testShouldPauseWhenMakeClientVisible() { + ActivityRecord topActivity = new ActivityBuilder(mService).setTask(mTask).build(); + topActivity.changeWindowTranslucency(false); + mActivity.setState(ActivityStack.ActivityState.STOPPED, "Testing"); + mActivity.makeClientVisible(); + assertEquals(PAUSED, mActivity.getState()); + } + + @Test public void testSizeCompatMode_FixedAspectRatioBoundsWithDecor() { setupDisplayContentForCompatDisplayInsets(); final int decorHeight = 200; // e.g. The device has cutout. diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityStackTests.java b/services/tests/wmtests/src/com/android/server/wm/ActivityStackTests.java index 757267e56fa2..bde0ef6aa39e 100644 --- a/services/tests/wmtests/src/com/android/server/wm/ActivityStackTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/ActivityStackTests.java @@ -262,6 +262,35 @@ public class ActivityStackTests extends ActivityTestsBase { } @Test + public void testFindTaskAlias() { + final String targetActivity = "target.activity"; + final String aliasActivity = "alias.activity"; + final ComponentName target = new ComponentName(DEFAULT_COMPONENT_PACKAGE_NAME, + targetActivity); + final ComponentName alias = new ComponentName(DEFAULT_COMPONENT_PACKAGE_NAME, + aliasActivity); + final TaskRecord task = new TaskBuilder(mService.mStackSupervisor).setStack(mStack).build(); + task.origActivity = alias; + task.realActivity = target; + new ActivityBuilder(mService).setComponent(target).setTask(task).setTargetActivity( + targetActivity).build(); + + // Using target activity to find task. + final ActivityRecord r1 = new ActivityBuilder(mService).setComponent( + target).setTargetActivity(targetActivity).build(); + RootActivityContainer.FindTaskResult result = new RootActivityContainer.FindTaskResult(); + mStack.findTaskLocked(r1, result); + assertThat(result.mRecord).isNotNull(); + + // Using alias activity to find task. + final ActivityRecord r2 = new ActivityBuilder(mService).setComponent( + alias).setTargetActivity(targetActivity).build(); + result = new RootActivityContainer.FindTaskResult(); + mStack.findTaskLocked(r2, result); + assertThat(result.mRecord).isNotNull(); + } + + @Test public void testMoveStackToBackIncludingParent() { final ActivityDisplay display = addNewActivityDisplayAt(ActivityDisplay.POSITION_TOP); final ActivityStack stack1 = createStackForShouldBeVisibleTest(display, diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityTestsBase.java b/services/tests/wmtests/src/com/android/server/wm/ActivityTestsBase.java index 53b0add8c37e..4986a6d5bd0d 100644 --- a/services/tests/wmtests/src/com/android/server/wm/ActivityTestsBase.java +++ b/services/tests/wmtests/src/com/android/server/wm/ActivityTestsBase.java @@ -585,7 +585,10 @@ class ActivityTestsBase { } void tearDown() { - mHandlerThread.quitSafely(); + // Make sure there are no running messages and then quit the thread so the next test + // won't be affected. + mHandlerThread.getThreadHandler().runWithScissors(mHandlerThread::quit, + 0 /* timeout */); } } @@ -630,7 +633,8 @@ class ActivityTestsBase { mWindowManager = prepareMockWindowManager(); mKeyguardController = mock(KeyguardController.class); - // Do not schedule idle timeouts + // Do not schedule idle that may touch methods outside the scope of the test. + doNothing().when(this).scheduleIdleLocked(); doNothing().when(this).scheduleIdleTimeoutLocked(any()); // unit test version does not handle launch wake lock doNothing().when(this).acquireLaunchWakelock(); diff --git a/services/tests/wmtests/src/com/android/server/wm/AppTransitionTests.java b/services/tests/wmtests/src/com/android/server/wm/AppTransitionTests.java index 5a72a584b122..f60241846044 100644 --- a/services/tests/wmtests/src/com/android/server/wm/AppTransitionTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/AppTransitionTests.java @@ -18,6 +18,7 @@ package com.android.server.wm; import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD; import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN; +import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_STARTING; import static android.view.WindowManager.LayoutParams.TYPE_BASE_APPLICATION; import static android.view.WindowManager.TRANSIT_ACTIVITY_CLOSE; import static android.view.WindowManager.TRANSIT_ACTIVITY_OPEN; @@ -45,6 +46,7 @@ import android.view.IRemoteAnimationFinishedCallback; import android.view.IRemoteAnimationRunner; import android.view.RemoteAnimationAdapter; import android.view.RemoteAnimationTarget; +import android.view.WindowManager; import androidx.test.filters.FlakyTest; import androidx.test.filters.SmallTest; @@ -224,6 +226,21 @@ public class AppTransitionTests extends WindowTestsBase { assertTrue(runner.mCancelled); } + @Test + public void testGetAnimationStyleResId() { + // Verify getAnimationStyleResId will return as LayoutParams.windowAnimations when without + // specifying window type. + final WindowManager.LayoutParams attrs = new WindowManager.LayoutParams(); + attrs.windowAnimations = 0x12345678; + assertEquals(attrs.windowAnimations, mDc.mAppTransition.getAnimationStyleResId(attrs)); + + // Verify getAnimationStyleResId will return system resource Id when the window type is + // starting window. + attrs.type = TYPE_APPLICATION_STARTING; + assertEquals(mDc.mAppTransition.getDefaultWindowAnimationStyleResId(), + mDc.mAppTransition.getAnimationStyleResId(attrs)); + } + private class TestRemoteAnimationRunner implements IRemoteAnimationRunner { boolean mCancelled = false; @Override diff --git a/services/tests/wmtests/src/com/android/server/wm/DisplayPolicyLayoutTests.java b/services/tests/wmtests/src/com/android/server/wm/DisplayPolicyLayoutTests.java index 4a87aa46db58..de184b84857b 100644 --- a/services/tests/wmtests/src/com/android/server/wm/DisplayPolicyLayoutTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/DisplayPolicyLayoutTests.java @@ -16,6 +16,10 @@ package com.android.server.wm; +import static android.view.Gravity.BOTTOM; +import static android.view.Gravity.LEFT; +import static android.view.Gravity.RIGHT; +import static android.view.Gravity.TOP; import static android.view.Surface.ROTATION_0; import static android.view.Surface.ROTATION_270; import static android.view.Surface.ROTATION_90; @@ -26,9 +30,11 @@ import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; import static android.view.WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS; import static android.view.WindowManager.LayoutParams.FLAG_LAYOUT_INSET_DECOR; import static android.view.WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN; +import static android.view.WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE; import static android.view.WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS; import static android.view.WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER; import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_FORCE_DRAW_BAR_BACKGROUNDS; +import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_IS_SCREEN_DECOR; import static android.view.WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING; import static android.view.WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE; import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION; @@ -66,6 +72,7 @@ public class DisplayPolicyLayoutTests extends DisplayPolicyTestsBase { private WindowState mWindow; private int mRotation = ROTATION_0; private boolean mHasDisplayCutout; + private static final int DECOR_WINDOW_INSET = 50; @Before public void setUp() throws Exception { @@ -520,6 +527,58 @@ public class DisplayPolicyLayoutTests extends DisplayPolicyTestsBase { } } + @Test + public void testScreenDecorWindows() { + synchronized (mWm.mGlobalLock) { + final WindowState decorWindow = createWindow(null, TYPE_APPLICATION_OVERLAY, + "decorWindow"); + decorWindow.mAttrs.flags |= FLAG_NOT_FOCUSABLE; + decorWindow.mAttrs.privateFlags |= PRIVATE_FLAG_IS_SCREEN_DECOR; + addWindow(decorWindow); + addWindow(mWindow); + + // Decor on top + updateDecorWindow(decorWindow, MATCH_PARENT, DECOR_WINDOW_INSET, TOP); + mDisplayPolicy.beginLayoutLw(mFrames, 0 /* UI mode */); + mDisplayPolicy.layoutWindowLw(mWindow, null, mFrames); + assertInsetByTopBottom(mWindow.getContentFrameLw(), DECOR_WINDOW_INSET, NAV_BAR_HEIGHT); + + // Decor on bottom + updateDecorWindow(decorWindow, MATCH_PARENT, DECOR_WINDOW_INSET, BOTTOM); + mDisplayPolicy.beginLayoutLw(mFrames, 0 /* UI mode */); + mDisplayPolicy.layoutWindowLw(mWindow, null, mFrames); + assertInsetByTopBottom(mWindow.getContentFrameLw(), STATUS_BAR_HEIGHT, + DECOR_WINDOW_INSET); + + // Decor on the left + updateDecorWindow(decorWindow, DECOR_WINDOW_INSET, MATCH_PARENT, LEFT); + mDisplayPolicy.beginLayoutLw(mFrames, 0 /* UI mode */); + mDisplayPolicy.layoutWindowLw(mWindow, null, mFrames); + assertInsetBy(mWindow.getContentFrameLw(), DECOR_WINDOW_INSET, STATUS_BAR_HEIGHT, 0, + NAV_BAR_HEIGHT); + + // Decor on the right + updateDecorWindow(decorWindow, DECOR_WINDOW_INSET, MATCH_PARENT, RIGHT); + mDisplayPolicy.beginLayoutLw(mFrames, 0 /* UI mode */); + mDisplayPolicy.layoutWindowLw(mWindow, null, mFrames); + assertInsetBy(mWindow.getContentFrameLw(), 0, STATUS_BAR_HEIGHT, DECOR_WINDOW_INSET, + NAV_BAR_HEIGHT); + + // Decor not allowed as inset + updateDecorWindow(decorWindow, DECOR_WINDOW_INSET, DECOR_WINDOW_INSET, TOP); + mDisplayPolicy.beginLayoutLw(mFrames, 0 /* UI mode */); + mDisplayPolicy.layoutWindowLw(mWindow, null, mFrames); + assertInsetByTopBottom(mWindow.getContentFrameLw(), STATUS_BAR_HEIGHT, NAV_BAR_HEIGHT); + } + } + + private void updateDecorWindow(WindowState decorWindow, int width, int height, int gravity) { + decorWindow.mAttrs.width = width; + decorWindow.mAttrs.height = height; + decorWindow.mAttrs.gravity = gravity; + decorWindow.setRequestedSize(width, height); + } + /** * Asserts that {@code actual} is inset by the given amounts from the full display rect. * diff --git a/services/tests/wmtests/src/com/android/server/wm/SystemServicesTestRule.java b/services/tests/wmtests/src/com/android/server/wm/SystemServicesTestRule.java index 366aceafd7bf..d0ee63435280 100644 --- a/services/tests/wmtests/src/com/android/server/wm/SystemServicesTestRule.java +++ b/services/tests/wmtests/src/com/android/server/wm/SystemServicesTestRule.java @@ -162,6 +162,9 @@ public class SystemServicesTestRule implements TestRule { } final ActivityTaskManagerService atms = mock(ActivityTaskManagerService.class); + final TaskChangeNotificationController taskChangeNotificationController = mock( + TaskChangeNotificationController.class); + doReturn(taskChangeNotificationController).when(atms).getTaskChangeNotificationController(); final WindowManagerGlobalLock wmLock = new WindowManagerGlobalLock(); doReturn(wmLock).when(atms).getGlobalLock(); diff --git a/services/tests/wmtests/src/com/android/server/wm/TaskSnapshotPersisterLoaderTest.java b/services/tests/wmtests/src/com/android/server/wm/TaskSnapshotPersisterLoaderTest.java index b0eafeeae043..f958867274cd 100644 --- a/services/tests/wmtests/src/com/android/server/wm/TaskSnapshotPersisterLoaderTest.java +++ b/services/tests/wmtests/src/com/android/server/wm/TaskSnapshotPersisterLoaderTest.java @@ -145,7 +145,10 @@ public class TaskSnapshotPersisterLoaderTest extends TaskSnapshotPersisterTestBa @Test public void testLowResolutionPersistAndLoadSnapshot() { - TaskSnapshot a = createSnapshot(0.5f /* reducedResolution */); + TaskSnapshot a = new TaskSnapshotBuilder() + .setScale(0.5f) + .setReducedResolution(true) + .build(); assertTrue(a.isReducedResolution()); mPersister.persistSnapshot(1 , mTestUserId, a); mPersister.waitForQueueEmpty(); @@ -253,6 +256,27 @@ public class TaskSnapshotPersisterLoaderTest extends TaskSnapshotPersisterTestBa } @Test + public void testScalePersistAndLoadSnapshot() { + TaskSnapshot a = new TaskSnapshotBuilder() + .setScale(0.25f) + .build(); + TaskSnapshot b = new TaskSnapshotBuilder() + .setScale(0.75f) + .build(); + assertEquals(0.25f, a.getScale(), 1E-5); + assertEquals(0.75f, b.getScale(), 1E-5); + mPersister.persistSnapshot(1, mTestUserId, a); + mPersister.persistSnapshot(2, mTestUserId, b); + mPersister.waitForQueueEmpty(); + final TaskSnapshot snapshotA = mLoader.loadTask(1, mTestUserId, false /* reduced */); + final TaskSnapshot snapshotB = mLoader.loadTask(2, mTestUserId, false /* reduced */); + assertNotNull(snapshotA); + assertNotNull(snapshotB); + assertEquals(0.25f, snapshotA.getScale(), 1E-5); + assertEquals(0.75f, snapshotB.getScale(), 1E-5); + } + + @Test public void testRemoveObsoleteFiles() { mPersister.persistSnapshot(1, mTestUserId, createSnapshot()); mPersister.persistSnapshot(2, mTestUserId, createSnapshot()); diff --git a/services/tests/wmtests/src/com/android/server/wm/TaskSnapshotPersisterTestBase.java b/services/tests/wmtests/src/com/android/server/wm/TaskSnapshotPersisterTestBase.java index c3b0a67e2ee1..e004cd3fb0c4 100644 --- a/services/tests/wmtests/src/com/android/server/wm/TaskSnapshotPersisterTestBase.java +++ b/services/tests/wmtests/src/com/android/server/wm/TaskSnapshotPersisterTestBase.java @@ -77,12 +77,7 @@ class TaskSnapshotPersisterTestBase extends WindowTestsBase { } TaskSnapshot createSnapshot() { - return createSnapshot(1f /* scale */); - } - - TaskSnapshot createSnapshot(float scale) { return new TaskSnapshotBuilder() - .setScale(scale) .build(); } @@ -92,6 +87,7 @@ class TaskSnapshotPersisterTestBase extends WindowTestsBase { static class TaskSnapshotBuilder { private float mScale = 1f; + private boolean mReducedResolution = false; private boolean mIsRealSnapshot = true; private boolean mIsTranslucent = false; private int mWindowingMode = WINDOWING_MODE_FULLSCREEN; @@ -102,6 +98,11 @@ class TaskSnapshotPersisterTestBase extends WindowTestsBase { return this; } + TaskSnapshotBuilder setReducedResolution(boolean reducedResolution) { + mReducedResolution = reducedResolution; + return this; + } + TaskSnapshotBuilder setIsRealSnapshot(boolean isRealSnapshot) { mIsRealSnapshot = isRealSnapshot; return this; @@ -130,7 +131,7 @@ class TaskSnapshotPersisterTestBase extends WindowTestsBase { buffer.unlockCanvasAndPost(c); return new TaskSnapshot(new ComponentName("", ""), buffer, ColorSpace.get(ColorSpace.Named.SRGB), ORIENTATION_PORTRAIT, TEST_INSETS, - mScale < 1f /* reducedResolution */, mScale, mIsRealSnapshot, + mReducedResolution, mScale, mIsRealSnapshot, mWindowingMode, mSystemUiVisibility, mIsTranslucent); } } diff --git a/telecomm/java/android/telecom/ConferenceParticipant.java b/telecomm/java/android/telecom/ConferenceParticipant.java index 2f1505cd9e4e..5e4818a67b31 100644 --- a/telecomm/java/android/telecom/ConferenceParticipant.java +++ b/telecomm/java/android/telecom/ConferenceParticipant.java @@ -19,6 +19,7 @@ package android.telecom; import android.net.Uri; import android.os.Parcel; import android.os.Parcelable; +import android.telephony.PhoneNumberUtils; import android.text.TextUtils; import com.android.internal.annotations.VisibleForTesting; @@ -69,18 +70,28 @@ public class ConferenceParticipant implements Parcelable { private long mConnectElapsedTime; /** + * The direction of the call; + * {@link Call.Details#DIRECTION_INCOMING} for incoming calls, or + * {@link Call.Details#DIRECTION_OUTGOING} for outgoing calls. + */ + private int mCallDirection; + + /** * Creates an instance of {@code ConferenceParticipant}. * * @param handle The conference participant's handle (e.g., phone number). * @param displayName The display name for the participant. * @param endpoint The enpoint Uri which uniquely identifies this conference participant. * @param state The state of the participant in the conference. + * @param callDirection The direction of the call (incoming/outgoing). */ - public ConferenceParticipant(Uri handle, String displayName, Uri endpoint, int state) { + public ConferenceParticipant(Uri handle, String displayName, Uri endpoint, int state, + int callDirection) { mHandle = handle; mDisplayName = displayName; mEndpoint = endpoint; mState = state; + mCallDirection = callDirection; } /** @@ -96,7 +107,16 @@ public class ConferenceParticipant implements Parcelable { String displayName = source.readString(); Uri endpoint = source.readParcelable(classLoader); int state = source.readInt(); - return new ConferenceParticipant(handle, displayName, endpoint, state); + long connectTime = source.readLong(); + long elapsedRealTime = source.readLong(); + int callDirection = source.readInt(); + ConferenceParticipant participant = + new ConferenceParticipant(handle, displayName, endpoint, state, + callDirection); + participant.setConnectTime(connectTime); + participant.setConnectElapsedTime(elapsedRealTime); + participant.setCallDirection(callDirection); + return participant; } @Override @@ -170,6 +190,9 @@ public class ConferenceParticipant implements Parcelable { dest.writeString(mDisplayName); dest.writeParcelable(mEndpoint, 0); dest.writeInt(mState); + dest.writeLong(mConnectTime); + dest.writeLong(mConnectElapsedTime); + dest.writeInt(mCallDirection); } /** @@ -192,6 +215,8 @@ public class ConferenceParticipant implements Parcelable { sb.append(getConnectTime()); sb.append(" ConnectElapsedTime: "); sb.append(getConnectElapsedTime()); + sb.append(" Direction: "); + sb.append(getCallDirection() == Call.Details.DIRECTION_INCOMING ? "Incoming" : "Outgoing"); sb.append("]"); return sb.toString(); } @@ -239,7 +264,7 @@ public class ConferenceParticipant implements Parcelable { } /** - * The connect elpased time of the participant to the conference. + * The connect elapsed time of the participant to the conference. */ public long getConnectElapsedTime() { return mConnectElapsedTime; @@ -248,4 +273,76 @@ public class ConferenceParticipant implements Parcelable { public void setConnectElapsedTime(long connectElapsedTime) { mConnectElapsedTime = connectElapsedTime; } + + /** + * @return The direction of the call (incoming/outgoing). + */ + public @Call.Details.CallDirection int getCallDirection() { + return mCallDirection; + } + + /** + * Sets the direction of the call. + * @param callDirection Whether the call is incoming or outgoing. + */ + public void setCallDirection(@Call.Details.CallDirection int callDirection) { + mCallDirection = callDirection; + } + + /** + * Attempts to build a tel: style URI from a conference participant. + * Conference event package data contains SIP URIs, so we try to extract the phone number and + * format into a typical tel: style URI. + * + * @param address The conference participant's address. + * @param countryIso The country ISO of the current subscription; used when formatting the + * participant phone number to E.164 format. + * @return The participant's address URI. + * @hide + */ + @VisibleForTesting + public static Uri getParticipantAddress(Uri address, String countryIso) { + if (address == null) { + return address; + } + // Even if address is already in tel: format, still parse it and rebuild. + // This is to recognize tel URIs such as: + // tel:6505551212;phone-context=ims.mnc012.mcc034.3gppnetwork.org + + // Conference event package participants are identified using SIP URIs (see RFC3261). + // A valid SIP uri has the format: sip:user:password@host:port;uri-parameters?headers + // Per RFC3261, the "user" can be a telephone number. + // For example: sip:1650555121;phone-context=blah.com@host.com + // In this case, the phone number is in the user field of the URI, and the parameters can be + // ignored. + // + // A SIP URI can also specify a phone number in a format similar to: + // sip:+1-212-555-1212@something.com;user=phone + // In this case, the phone number is again in user field and the parameters can be ignored. + // We can get the user field in these instances by splitting the string on the @, ;, or : + // and looking at the first found item. + String number = address.getSchemeSpecificPart(); + if (TextUtils.isEmpty(number)) { + return address; + } + + String numberParts[] = number.split("[@;:]"); + if (numberParts.length == 0) { + return address; + } + number = numberParts[0]; + + // Attempt to format the number in E.164 format and use that as part of the TEL URI. + // RFC2806 recommends to format telephone numbers using E.164 since it is independent of + // how the dialing of said numbers takes place. + // If conversion to E.164 fails, the returned value is null. In that case, fallback to the + // number which was in the CEP data. + String formattedNumber = null; + if (!TextUtils.isEmpty(countryIso)) { + formattedNumber = PhoneNumberUtils.formatNumberToE164(number, countryIso); + } + + return Uri.fromParts(PhoneAccount.SCHEME_TEL, + formattedNumber != null ? formattedNumber : number, null); + } } diff --git a/telecomm/java/android/telecom/Connection.java b/telecomm/java/android/telecom/Connection.java index 47587c5787f4..0983eea8e819 100644 --- a/telecomm/java/android/telecom/Connection.java +++ b/telecomm/java/android/telecom/Connection.java @@ -1793,6 +1793,11 @@ public abstract class Connection extends Conferenceable { private ConnectionService mConnectionService; private Bundle mExtras; private final Object mExtrasLock = new Object(); + /** + * The direction of the connection; used where an existing connection is created and we need to + * communicate to Telecom whether its incoming or outgoing. + */ + private @Call.Details.CallDirection int mCallDirection = Call.Details.DIRECTION_UNKNOWN; /** * Tracks the key set for the extras bundle provided on the last invocation of @@ -3357,4 +3362,21 @@ public abstract class Connection extends Conferenceable { l.onConnectionEvent(this, event, extras); } } + + /** + * @return The direction of the call. + * @hide + */ + public final @Call.Details.CallDirection int getCallDirection() { + return mCallDirection; + } + + /** + * Sets the direction of this connection. + * @param callDirection The direction of this connection. + * @hide + */ + public void setCallDirection(@Call.Details.CallDirection int callDirection) { + mCallDirection = callDirection; + } } diff --git a/telecomm/java/android/telecom/ConnectionService.java b/telecomm/java/android/telecom/ConnectionService.java index 626fcc4ddc1e..35488100fb58 100644 --- a/telecomm/java/android/telecom/ConnectionService.java +++ b/telecomm/java/android/telecom/ConnectionService.java @@ -2144,7 +2144,8 @@ public abstract class ConnectionService extends Service { connection.getDisconnectCause(), emptyList, connection.getExtras(), - conferenceId); + conferenceId, + connection.getCallDirection()); mAdapter.addExistingConnection(id, parcelableConnection); } } diff --git a/telecomm/java/android/telecom/ParcelableConnection.java b/telecomm/java/android/telecom/ParcelableConnection.java index dab1c6e7ae77..4734af6371d4 100644 --- a/telecomm/java/android/telecom/ParcelableConnection.java +++ b/telecomm/java/android/telecom/ParcelableConnection.java @@ -53,6 +53,7 @@ public final class ParcelableConnection implements Parcelable { private final List<String> mConferenceableConnectionIds; private final Bundle mExtras; private String mParentCallId; + private @Call.Details.CallDirection int mCallDirection; /** @hide */ public ParcelableConnection( @@ -75,13 +76,15 @@ public final class ParcelableConnection implements Parcelable { DisconnectCause disconnectCause, List<String> conferenceableConnectionIds, Bundle extras, - String parentCallId) { + String parentCallId, + @Call.Details.CallDirection int callDirection) { this(phoneAccount, state, capabilities, properties, supportedAudioRoutes, address, addressPresentation, callerDisplayName, callerDisplayNamePresentation, videoProvider, videoState, ringbackRequested, isVoipAudioMode, connectTimeMillis, connectElapsedTimeMillis, statusHints, disconnectCause, conferenceableConnectionIds, extras); mParentCallId = parentCallId; + mCallDirection = callDirection; } /** @hide */ @@ -125,6 +128,7 @@ public final class ParcelableConnection implements Parcelable { mConferenceableConnectionIds = conferenceableConnectionIds; mExtras = extras; mParentCallId = null; + mCallDirection = Call.Details.DIRECTION_UNKNOWN; } public PhoneAccountHandle getPhoneAccount() { @@ -219,6 +223,10 @@ public final class ParcelableConnection implements Parcelable { return mParentCallId; } + public @Call.Details.CallDirection int getCallDirection() { + return mCallDirection; + } + @Override public String toString() { return new StringBuilder() @@ -234,6 +242,8 @@ public final class ParcelableConnection implements Parcelable { .append(mExtras) .append(", parent:") .append(mParentCallId) + .append(", callDirection:") + .append(mCallDirection) .toString(); } @@ -265,6 +275,7 @@ public final class ParcelableConnection implements Parcelable { int supportedAudioRoutes = source.readInt(); String parentCallId = source.readString(); long connectElapsedTimeMillis = source.readLong(); + int callDirection = source.readInt(); return new ParcelableConnection( phoneAccount, @@ -286,7 +297,8 @@ public final class ParcelableConnection implements Parcelable { disconnectCause, conferenceableConnectionIds, extras, - parentCallId); + parentCallId, + callDirection); } @Override @@ -325,5 +337,6 @@ public final class ParcelableConnection implements Parcelable { destination.writeInt(mSupportedAudioRoutes); destination.writeString(mParentCallId); destination.writeLong(mConnectElapsedTimeMillis); + destination.writeInt(mCallDirection); } } diff --git a/telephony/java/android/telephony/CarrierConfigManager.java b/telephony/java/android/telephony/CarrierConfigManager.java index 9806199003d7..19f8203f7502 100755 --- a/telephony/java/android/telephony/CarrierConfigManager.java +++ b/telephony/java/android/telephony/CarrierConfigManager.java @@ -1021,6 +1021,15 @@ public class CarrierConfigManager { "support_manage_ims_conference_call_bool"; /** + * Determines whether the IMS conference merge process supports and returns its participants + * data. When {@code true}, on merge complete, conference call would have a list of its + * participants returned in XML format, {@code false otherwise}. + * @hide + */ + public static final String KEY_SUPPORT_IMS_CONFERENCE_EVENT_PACKAGE_BOOL = + "support_ims_conference_event_package_bool"; + + /** * Determines whether High Definition audio property is displayed in the dialer UI. * If {@code false}, remove the HD audio property from the connection so that HD audio related * UI is not displayed. If {@code true}, keep HD audio property as it is configured. @@ -3148,6 +3157,7 @@ public class CarrierConfigManager { sDefaults.putBoolean(KEY_SUPPORT_CONFERENCE_CALL_BOOL, true); sDefaults.putBoolean(KEY_SUPPORT_IMS_CONFERENCE_CALL_BOOL, true); sDefaults.putBoolean(KEY_SUPPORT_MANAGE_IMS_CONFERENCE_CALL_BOOL, true); + sDefaults.putBoolean(KEY_SUPPORT_IMS_CONFERENCE_EVENT_PACKAGE_BOOL, true); sDefaults.putBoolean(KEY_SUPPORT_VIDEO_CONFERENCE_CALL_BOOL, false); sDefaults.putBoolean(KEY_IS_IMS_CONFERENCE_SIZE_ENFORCED_BOOL, false); sDefaults.putInt(KEY_IMS_CONFERENCE_SIZE_LIMIT_INT, 5); diff --git a/telephony/java/android/telephony/SmsManager.java b/telephony/java/android/telephony/SmsManager.java index 68602354d3b0..b44e4f179392 100644 --- a/telephony/java/android/telephony/SmsManager.java +++ b/telephony/java/android/telephony/SmsManager.java @@ -1975,9 +1975,11 @@ public final class SmsManager { */ public static int getDefaultSmsSubscriptionId() { try { - return getISmsServiceOrThrow().getPreferredSmsSubscription(); + return getISmsService().getPreferredSmsSubscription(); } catch (RemoteException e) { return SubscriptionManager.INVALID_SUBSCRIPTION_ID; + } catch (NullPointerException e) { + return SubscriptionManager.INVALID_SUBSCRIPTION_ID; } } diff --git a/telephony/java/android/telephony/SubscriptionManager.java b/telephony/java/android/telephony/SubscriptionManager.java index 65db458df159..a10454ed752a 100644 --- a/telephony/java/android/telephony/SubscriptionManager.java +++ b/telephony/java/android/telephony/SubscriptionManager.java @@ -791,6 +791,14 @@ public class SubscriptionManager { public static final int PROFILE_CLASS_DEFAULT = PROFILE_CLASS_UNSET; /** + * IMSI (International Mobile Subscriber Identity). + * <P>Type: TEXT </P> + * @hide + */ + //TODO: add @SystemApi + public static final String IMSI = "imsi"; + + /** * Broadcast Action: The user has changed one of the default subs related to * data, phone calls, or sms</p> * @@ -3070,18 +3078,10 @@ public class SubscriptionManager { } /** - * Returns whether the subscription is enabled or not. This is different from activated - * or deactivated for two aspects. 1) For when user disables a physical subscription, we - * actually disable the modem because we can't switch off the subscription. 2) For eSIM, - * user may enable one subscription but the system may activate another temporarily. In this - * case, user enabled one is different from current active one. - - * @param subscriptionId The subscription it asks about. - * @return whether it's enabled or not. {@code true} if user set this subscription enabled - * earlier, or user never set subscription enable / disable on this slot explicitly, and - * this subscription is currently active. Otherwise, it returns {@code false}. - * + * DO NOT USE. + * This API is designed for features that are not finished at this point. Do not call this API. * @hide + * TODO b/135547512: further clean up */ @SystemApi @RequiresPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE) @@ -3099,14 +3099,10 @@ public class SubscriptionManager { } /** - * Get which subscription is enabled on this slot. See {@link #isSubscriptionEnabled(int)} - * for more details. - * - * @param slotIndex which slot it asks about. - * @return which subscription is enabled on this slot. If there's no enabled subscription - * in this slot, it will return {@link SubscriptionManager#INVALID_SUBSCRIPTION_ID}. - * + * DO NOT USE. + * This API is designed for features that are not finished at this point. Do not call this API. * @hide + * TODO b/135547512: further clean up */ @SystemApi @RequiresPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE) diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java index b7b511e5eb4b..39ad0d0b85f4 100644 --- a/telephony/java/android/telephony/TelephonyManager.java +++ b/telephony/java/android/telephony/TelephonyManager.java @@ -1605,7 +1605,7 @@ public class TelephonyManager { * higher, then a SecurityException is thrown.</li> * </ul> * - * @deprecated Use (@link getImei} which returns IMEI for GSM or (@link getMeid} which returns + * @deprecated Use {@link #getImei} which returns IMEI for GSM or {@link #getMeid} which returns * MEID for CDMA. */ @Deprecated @@ -1648,7 +1648,7 @@ public class TelephonyManager { * * @param slotIndex of which deviceID is returned * - * @deprecated Use (@link getImei} which returns IMEI for GSM or (@link getMeid} which returns + * @deprecated Use {@link #getImei} which returns IMEI for GSM or {@link #getMeid} which returns * MEID for CDMA. */ @Deprecated @@ -1672,23 +1672,8 @@ public class TelephonyManager { * Returns the IMEI (International Mobile Equipment Identity). Return null if IMEI is not * available. * - * <p>Requires Permission: READ_PRIVILEGED_PHONE_STATE, for the calling app to be the device or - * profile owner and have the READ_PHONE_STATE permission, or that the calling app has carrier - * privileges (see {@link #hasCarrierPrivileges}). The profile owner is an app that owns a - * managed profile on the device; for more details see <a - * href="https://developer.android.com/work/managed-profiles">Work profiles</a>. Profile owner - * access is deprecated and will be removed in a future release. - * - * <p>If the calling app does not meet one of these requirements then this method will behave - * as follows: - * - * <ul> - * <li>If the calling app's target SDK is API level 28 or lower and the app has the - * READ_PHONE_STATE permission then null is returned.</li> - * <li>If the calling app's target SDK is API level 28 or lower and the app does not have - * the READ_PHONE_STATE permission, or if the calling app is targeting API level 29 or - * higher, then a SecurityException is thrown.</li> - * </ul> + * See {@link #getImei(int)} for details on the required permissions and behavior + * when the caller does not hold sufficient permissions. */ @SuppressAutoDoc // No support for device / profile owner or carrier privileges (b/72967236). @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) @@ -1700,12 +1685,17 @@ public class TelephonyManager { * Returns the IMEI (International Mobile Equipment Identity). Return null if IMEI is not * available. * - * <p>Requires Permission: READ_PRIVILEGED_PHONE_STATE, for the calling app to be the device or - * profile owner and have the READ_PHONE_STATE permission, or that the calling app has carrier - * privileges (see {@link #hasCarrierPrivileges}). The profile owner is an app that owns a - * managed profile on the device; for more details see <a - * href="https://developer.android.com/work/managed-profiles">Work profiles</a>. Profile owner - * access is deprecated and will be removed in a future release. + * <p>This API requires one of the following: + * <ul> + * <li>The caller holds the READ_PRIVILEGED_PHONE_STATE permission.</li> + * <li>If the caller is the device or profile owner, the caller holds the + * {@link Manifest.permission#READ_PHONE_STATE} permission.</li> + * <li>The caller has carrier privileges (see {@link #hasCarrierPrivileges()}.</li> + * <li>The caller is the default SMS app for the device.</li> + * </ul> + * <p>The profile owner is an app that owns a managed profile on the device; for more details + * see <a href="https://developer.android.com/work/managed-profiles">Work profiles</a>. + * Access by profile owners is deprecated and will be removed in a future release. * * <p>If the calling app does not meet one of these requirements then this method will behave * as follows: diff --git a/telephony/java/android/telephony/data/ApnSetting.java b/telephony/java/android/telephony/data/ApnSetting.java index 165be641032c..116c05129a96 100644 --- a/telephony/java/android/telephony/data/ApnSetting.java +++ b/telephony/java/android/telephony/data/ApnSetting.java @@ -1417,6 +1417,28 @@ public class ApnSetting implements Parcelable { return port == UNSPECIFIED_INT ? null : Integer.toString(port); } + /** + * Check if this APN setting can support the given network + * + * @param networkType The network type + * @return {@code true} if this APN setting can support the given network. + * + * @hide + */ + public boolean canSupportNetworkType(@TelephonyManager.NetworkType int networkType) { + // Do a special checking for GSM. In reality, GSM is a voice only network type and can never + // be used for data. We allow it here because in some DSDS corner cases, on the non-DDS + // sub, modem reports data rat unknown. In that case if voice is GSM and this APN supports + // GPRS or EDGE, this APN setting should be selected. + if (networkType == TelephonyManager.NETWORK_TYPE_GSM + && (mNetworkTypeBitmask & (TelephonyManager.NETWORK_TYPE_BITMASK_GPRS + | TelephonyManager.NETWORK_TYPE_BITMASK_EDGE)) != 0) { + return true; + } + + return ServiceState.bitmaskHasTech(mNetworkTypeBitmask, networkType); + } + // Implement Parcelable. @Override /** @hide */ diff --git a/telephony/java/com/android/internal/telephony/SmsApplication.java b/telephony/java/com/android/internal/telephony/SmsApplication.java index 44dc24bf716e..98f52cbf93da 100644 --- a/telephony/java/com/android/internal/telephony/SmsApplication.java +++ b/telephony/java/com/android/internal/telephony/SmsApplication.java @@ -17,6 +17,7 @@ package com.android.internal.telephony; import android.Manifest.permission; +import android.annotation.Nullable; import android.app.AppOpsManager; import android.app.role.RoleManager; import android.content.ComponentName; @@ -662,49 +663,69 @@ public final class SmsApplication { } defaultSmsAppChanged(context); + } + } + + /** + * Sends broadcasts on sms app change: + * {@link Intent#ACTION_DEFAULT_SMS_PACKAGE_CHANGED} + * {@link Intents.ACTION_DEFAULT_SMS_PACKAGE_CHANGED_INTERNAL} + */ + public static void broadcastSmsAppChange(Context context, + UserHandle userHandle, @Nullable String oldPackage, @Nullable String newPackage) { + Collection<SmsApplicationData> apps = getApplicationCollection(context); + broadcastSmsAppChange(context, userHandle, + getApplicationForPackage(apps, oldPackage), + getApplicationForPackage(apps, newPackage)); + } + + private static void broadcastSmsAppChange(Context context, UserHandle userHandle, + @Nullable SmsApplicationData oldAppData, + @Nullable SmsApplicationData applicationData) { + if (DEBUG_MULTIUSER) { + Log.i(LOG_TAG, "setDefaultApplicationInternal oldAppData=" + oldAppData); + } + if (oldAppData != null && oldAppData.mSmsAppChangedReceiverClass != null) { + // Notify the old sms app that it's no longer the default + final Intent oldAppIntent = + new Intent(Intents.ACTION_DEFAULT_SMS_PACKAGE_CHANGED); + final ComponentName component = new ComponentName(oldAppData.mPackageName, + oldAppData.mSmsAppChangedReceiverClass); + oldAppIntent.setComponent(component); + oldAppIntent.putExtra(Intents.EXTRA_IS_DEFAULT_SMS_APP, false); if (DEBUG_MULTIUSER) { - Log.i(LOG_TAG, "setDefaultApplicationInternal oldAppData=" + oldAppData); - } - if (oldAppData != null && oldAppData.mSmsAppChangedReceiverClass != null) { - // Notify the old sms app that it's no longer the default - final Intent oldAppIntent = - new Intent(Telephony.Sms.Intents.ACTION_DEFAULT_SMS_PACKAGE_CHANGED); - final ComponentName component = new ComponentName(oldAppData.mPackageName, - oldAppData.mSmsAppChangedReceiverClass); - oldAppIntent.setComponent(component); - oldAppIntent.putExtra(Telephony.Sms.Intents.EXTRA_IS_DEFAULT_SMS_APP, false); - if (DEBUG_MULTIUSER) { - Log.i(LOG_TAG, "setDefaultApplicationInternal old=" + oldAppData.mPackageName); - } - context.sendBroadcastAsUser(oldAppIntent, userHandle); + Log.i(LOG_TAG, "setDefaultApplicationInternal old=" + oldAppData.mPackageName); } - // Notify the new sms app that it's now the default (if the new sms app has a receiver - // to handle the changed default sms intent). + context.sendBroadcastAsUser(oldAppIntent, userHandle); + } + // Notify the new sms app that it's now the default (if the new sms app has a receiver + // to handle the changed default sms intent). + if (DEBUG_MULTIUSER) { + Log.i(LOG_TAG, "setDefaultApplicationInternal new applicationData=" + + applicationData); + } + if (applicationData != null && applicationData.mSmsAppChangedReceiverClass != null) { + final Intent intent = + new Intent(Intents.ACTION_DEFAULT_SMS_PACKAGE_CHANGED); + final ComponentName component = new ComponentName(applicationData.mPackageName, + applicationData.mSmsAppChangedReceiverClass); + intent.setComponent(component); + intent.putExtra(Intents.EXTRA_IS_DEFAULT_SMS_APP, true); if (DEBUG_MULTIUSER) { - Log.i(LOG_TAG, "setDefaultApplicationInternal new applicationData=" + - applicationData); - } - if (applicationData.mSmsAppChangedReceiverClass != null) { - final Intent intent = - new Intent(Telephony.Sms.Intents.ACTION_DEFAULT_SMS_PACKAGE_CHANGED); - final ComponentName component = new ComponentName(applicationData.mPackageName, - applicationData.mSmsAppChangedReceiverClass); - intent.setComponent(component); - intent.putExtra(Telephony.Sms.Intents.EXTRA_IS_DEFAULT_SMS_APP, true); - if (DEBUG_MULTIUSER) { - Log.i(LOG_TAG, "setDefaultApplicationInternal new=" + packageName); - } - context.sendBroadcastAsUser(intent, userHandle); + Log.i(LOG_TAG, "setDefaultApplicationInternal new=" + applicationData.mPackageName); } + context.sendBroadcastAsUser(intent, userHandle); + } - // Send an implicit broadcast for the system server. - // (or anyone with MONITOR_DEFAULT_SMS_PACKAGE, really.) - final Intent intent = - new Intent(Telephony.Sms.Intents.ACTION_DEFAULT_SMS_PACKAGE_CHANGED_INTERNAL); - context.sendBroadcastAsUser(intent, userHandle, - permission.MONITOR_DEFAULT_SMS_PACKAGE); + // Send an implicit broadcast for the system server. + // (or anyone with MONITOR_DEFAULT_SMS_PACKAGE, really.) + final Intent intent = + new Intent(Intents.ACTION_DEFAULT_SMS_PACKAGE_CHANGED_INTERNAL); + context.sendBroadcastAsUser(intent, userHandle, + permission.MONITOR_DEFAULT_SMS_PACKAGE); + if (applicationData != null) { MetricsLogger.action(context, MetricsEvent.ACTION_DEFAULT_SMS_APP_CHANGED, applicationData.mPackageName); } diff --git a/telephony/java/com/android/internal/telephony/TelephonyPermissions.java b/telephony/java/com/android/internal/telephony/TelephonyPermissions.java index e8e2a3d8453e..7a0ab9ca6a28 100644 --- a/telephony/java/com/android/internal/telephony/TelephonyPermissions.java +++ b/telephony/java/com/android/internal/telephony/TelephonyPermissions.java @@ -29,8 +29,6 @@ import android.os.Process; import android.os.RemoteException; import android.os.ServiceManager; import android.os.UserHandle; -import android.provider.DeviceConfig; -import android.provider.Settings; import android.telephony.Rlog; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; @@ -364,23 +362,8 @@ public final class TelephonyPermissions { */ private static boolean reportAccessDeniedToReadIdentifiers(Context context, int subId, int pid, int uid, String callingPackage, String message) { - // Check if the application is not preinstalled; if not then a separate setting is required - // to relax the check to begin flagging problems with non-preinstalled apps early. - boolean relax3PDeviceIdentifierCheck = Settings.Global.getInt(context.getContentResolver(), - Settings.Global.PRIVILEGED_DEVICE_IDENTIFIER_3P_CHECK_RELAXED, 0) == 1; boolean isPreinstalled = false; - // Also check if the application is a preloaded non-privileged app; if so there is a - // separate setting to relax the check for these apps to ensure users can relax the check - // for non-preinstalled or non-priv apps as needed while continuing to test the other. - boolean relaxNonPrivDeviceIdentifierCheck = Settings.Global.getInt( - context.getContentResolver(), - Settings.Global.PRIVILEGED_DEVICE_IDENTIFIER_NON_PRIV_CHECK_RELAXED, 0) == 1; boolean isPrivApp = false; - // Similar to above support relaxing the check for privileged apps while still enforcing it - // for non-privileged and non-preinstalled apps. - boolean relaxPrivDeviceIdentifierCheck = Settings.Global.getInt( - context.getContentResolver(), - Settings.Global.PRIVILEGED_DEVICE_IDENTIFIER_PRIV_CHECK_RELAXED, 0) == 1; ApplicationInfo callingPackageInfo = null; try { callingPackageInfo = context.getPackageManager().getApplicationInfoAsUser( @@ -399,58 +382,40 @@ public final class TelephonyPermissions { Log.e(LOG_TAG, "Exception caught obtaining package info for package " + callingPackage, e); } - // The new Q restrictions for device identifier access will be enforced for all apps with - // settings to individually disable the new restrictions for privileged, preloaded - // non-privileged, and non-preinstalled apps. - if (!isIdentifierCheckDisabled() && ( - (isPrivApp && !relaxPrivDeviceIdentifierCheck) - || (!isPreinstalled && !relax3PDeviceIdentifierCheck) - || (isPreinstalled && !isPrivApp && !relaxNonPrivDeviceIdentifierCheck))) { - // The current package should only be reported in StatsLog if it has not previously been - // reported for the currently invoked device identifier method. - boolean packageReported = sReportedDeviceIDPackages.containsKey(callingPackage); - if (!packageReported || !sReportedDeviceIDPackages.get(callingPackage).contains( - message)) { - Set invokedMethods; - if (!packageReported) { - invokedMethods = new HashSet<String>(); - sReportedDeviceIDPackages.put(callingPackage, invokedMethods); - } else { - invokedMethods = sReportedDeviceIDPackages.get(callingPackage); - } - invokedMethods.add(message); - StatsLog.write(StatsLog.DEVICE_IDENTIFIER_ACCESS_DENIED, callingPackage, message, - isPreinstalled, isPrivApp); + // The current package should only be reported in StatsLog if it has not previously been + // reported for the currently invoked device identifier method. + boolean packageReported = sReportedDeviceIDPackages.containsKey(callingPackage); + if (!packageReported || !sReportedDeviceIDPackages.get(callingPackage).contains( + message)) { + Set invokedMethods; + if (!packageReported) { + invokedMethods = new HashSet<String>(); + sReportedDeviceIDPackages.put(callingPackage, invokedMethods); + } else { + invokedMethods = sReportedDeviceIDPackages.get(callingPackage); } - Log.w(LOG_TAG, "reportAccessDeniedToReadIdentifiers:" + callingPackage + ":" + message - + ":isPreinstalled=" + isPreinstalled + ":isPrivApp=" + isPrivApp); - // if the target SDK is pre-Q then check if the calling package would have previously - // had access to device identifiers. - if (callingPackageInfo != null && ( - callingPackageInfo.targetSdkVersion < Build.VERSION_CODES.Q)) { - if (context.checkPermission( - android.Manifest.permission.READ_PHONE_STATE, - pid, - uid) == PackageManager.PERMISSION_GRANTED) { - return false; - } - if (checkCarrierPrivilegeForSubId(subId)) { - return false; - } + invokedMethods.add(message); + StatsLog.write(StatsLog.DEVICE_IDENTIFIER_ACCESS_DENIED, callingPackage, message, + isPreinstalled, isPrivApp); + } + Log.w(LOG_TAG, "reportAccessDeniedToReadIdentifiers:" + callingPackage + ":" + message + + ":isPreinstalled=" + isPreinstalled + ":isPrivApp=" + isPrivApp); + // if the target SDK is pre-Q then check if the calling package would have previously + // had access to device identifiers. + if (callingPackageInfo != null && ( + callingPackageInfo.targetSdkVersion < Build.VERSION_CODES.Q)) { + if (context.checkPermission( + android.Manifest.permission.READ_PHONE_STATE, + pid, + uid) == PackageManager.PERMISSION_GRANTED) { + return false; + } + if (checkCarrierPrivilegeForSubId(subId)) { + return false; } - throw new SecurityException(message + ": The user " + uid - + " does not meet the requirements to access device identifiers."); - } else { - return checkReadPhoneState(context, subId, pid, uid, callingPackage, message); } - } - - /** - * Returns true if the new device identifier access restrictions are disabled. - */ - private static boolean isIdentifierCheckDisabled() { - return DeviceConfig.getInt(DeviceConfig.NAMESPACE_PRIVACY, - PROPERTY_DEVICE_IDENTIFIER_ACCESS_RESTRICTIONS_DISABLED, 0) == 1; + throw new SecurityException(message + ": The user " + uid + + " does not meet the requirements to access device identifiers."); } /** diff --git a/tests/Internal/src/com/android/internal/colorextraction/ColorExtractorTest.java b/tests/Internal/src/com/android/internal/colorextraction/ColorExtractorTest.java index 17fa93135c7d..45ddc3eed39c 100644 --- a/tests/Internal/src/com/android/internal/colorextraction/ColorExtractorTest.java +++ b/tests/Internal/src/com/android/internal/colorextraction/ColorExtractorTest.java @@ -39,6 +39,8 @@ import com.android.internal.colorextraction.types.Tonal; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; /** * Tests color extraction generation. @@ -48,16 +50,19 @@ import org.junit.runner.RunWith; public class ColorExtractorTest { Context mContext; + @Mock + WallpaperManager mWallpaperManager; @Before public void setup() { + MockitoAnnotations.initMocks(this); mContext = InstrumentationRegistry.getContext(); } @Test public void ColorExtractor_extractWhenInitialized() { ExtractionType type = mock(Tonal.class); - new ColorExtractor(mContext, type, true); + new ColorExtractor(mContext, type, true, mWallpaperManager); // 1 for lock and 1 for system verify(type, times(2)) .extractInto(any(), any(), any(), any()); @@ -84,7 +89,7 @@ public class ColorExtractorTest { outGradientColorsDark.set(colorsExpectedDark); outGradientColorsExtraDark.set(colorsExpectedExtraDark); }; - ColorExtractor extractor = new ColorExtractor(mContext, type, true); + ColorExtractor extractor = new ColorExtractor(mContext, type, true, mWallpaperManager); GradientColors colors = extractor.getColors(WallpaperManager.FLAG_SYSTEM, ColorExtractor.TYPE_NORMAL); @@ -99,7 +104,8 @@ public class ColorExtractorTest { public void addOnColorsChangedListener_invokesListener() { ColorExtractor.OnColorsChangedListener mockedListeners = mock(ColorExtractor.OnColorsChangedListener.class); - ColorExtractor extractor = new ColorExtractor(mContext, new Tonal(mContext), true); + ColorExtractor extractor = new ColorExtractor(mContext, new Tonal(mContext), true, + mWallpaperManager); extractor.addOnColorsChangedListener(mockedListeners); extractor.onColorsChanged(new WallpaperColors(Color.valueOf(Color.RED), null, null), diff --git a/tests/net/java/android/net/NetworkStatsTest.java b/tests/net/java/android/net/NetworkStatsTest.java index c16a0f446651..b5b0384ca599 100644 --- a/tests/net/java/android/net/NetworkStatsTest.java +++ b/tests/net/java/android/net/NetworkStatsTest.java @@ -569,7 +569,7 @@ public class NetworkStatsTest { .addValues(underlyingIface, tunUid, SET_FOREGROUND, TAG_NONE, METERED_NO, ROAMING_NO, DEFAULT_NETWORK_NO, 0L, 0L, 0L, 0L, 0L); - delta.migrateTun(tunUid, tunIface, new String[] {underlyingIface}); + assertTrue(delta.toString(), delta.migrateTun(tunUid, tunIface, underlyingIface)); assertEquals(20, delta.size()); // tunIface and TEST_IFACE entries are not changed. @@ -650,7 +650,7 @@ public class NetworkStatsTest { .addValues(underlyingIface, tunUid, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO, DEFAULT_NETWORK_NO, 75500L, 37L, 130000L, 70L, 0L); - delta.migrateTun(tunUid, tunIface, new String[]{underlyingIface}); + assertTrue(delta.migrateTun(tunUid, tunIface, underlyingIface)); assertEquals(9, delta.size()); // tunIface entries should not be changed. @@ -813,37 +813,6 @@ public class NetworkStatsTest { } @Test - public void testFilterDebugEntries() { - NetworkStats.Entry entry1 = new NetworkStats.Entry( - "test1", 10100, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO, - DEFAULT_NETWORK_NO, 50000L, 25L, 100000L, 50L, 0L); - - NetworkStats.Entry entry2 = new NetworkStats.Entry( - "test2", 10101, SET_DBG_VPN_IN, TAG_NONE, METERED_NO, ROAMING_NO, - DEFAULT_NETWORK_NO, 50000L, 25L, 100000L, 50L, 0L); - - NetworkStats.Entry entry3 = new NetworkStats.Entry( - "test2", 10101, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO, - DEFAULT_NETWORK_NO, 50000L, 25L, 100000L, 50L, 0L); - - NetworkStats.Entry entry4 = new NetworkStats.Entry( - "test2", 10101, SET_DBG_VPN_OUT, TAG_NONE, METERED_NO, ROAMING_NO, - DEFAULT_NETWORK_NO, 50000L, 25L, 100000L, 50L, 0L); - - NetworkStats stats = new NetworkStats(TEST_START, 4) - .addValues(entry1) - .addValues(entry2) - .addValues(entry3) - .addValues(entry4); - - stats.filterDebugEntries(); - - assertEquals(2, stats.size()); - assertEquals(entry1, stats.getValues(0, null)); - assertEquals(entry3, stats.getValues(1, null)); - } - - @Test public void testApply464xlatAdjustments() { final String v4Iface = "v4-wlan0"; final String baseIface = "wlan0"; diff --git a/tests/net/java/android/net/util/KeepaliveUtilsTest.kt b/tests/net/java/android/net/util/KeepaliveUtilsTest.kt index 814e06e311b3..8ea226db938e 100644 --- a/tests/net/java/android/net/util/KeepaliveUtilsTest.kt +++ b/tests/net/java/android/net/util/KeepaliveUtilsTest.kt @@ -78,7 +78,6 @@ class KeepaliveUtilsTest { assertRunWithException(arrayOf("5")) // Check resource with invalid slots value. - assertRunWithException(arrayOf("2,2")) assertRunWithException(arrayOf("3,-1")) // Check resource with invalid transport type. diff --git a/tests/net/java/com/android/server/ConnectivityServiceTest.java b/tests/net/java/com/android/server/ConnectivityServiceTest.java index 8c024a5a53c7..73ee7f544b5f 100644 --- a/tests/net/java/com/android/server/ConnectivityServiceTest.java +++ b/tests/net/java/com/android/server/ConnectivityServiceTest.java @@ -18,6 +18,7 @@ package com.android.server; import static android.content.pm.PackageManager.GET_PERMISSIONS; import static android.content.pm.PackageManager.MATCH_ANY_USER; +import static android.net.ConnectivityManager.ACTION_CAPTIVE_PORTAL_SIGN_IN; import static android.net.ConnectivityManager.CONNECTIVITY_ACTION; import static android.net.ConnectivityManager.NETID_UNSET; import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_OFF; @@ -80,13 +81,13 @@ import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; +import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Matchers.anyInt; import static org.mockito.Mockito.any; import static org.mockito.Mockito.atLeastOnce; import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.doNothing; -import static org.mockito.Mockito.eq; import static org.mockito.Mockito.inOrder; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; @@ -141,6 +142,7 @@ import android.net.NetworkInfo.DetailedState; import android.net.NetworkMisc; import android.net.NetworkRequest; import android.net.NetworkSpecifier; +import android.net.NetworkStack; import android.net.NetworkStackClient; import android.net.NetworkState; import android.net.NetworkUtils; @@ -154,6 +156,7 @@ import android.net.shared.NetworkMonitorUtils; import android.net.shared.PrivateDnsConfig; import android.net.util.MultinetworkPolicyTracker; import android.os.Binder; +import android.os.Bundle; import android.os.ConditionVariable; import android.os.Handler; import android.os.HandlerThread; @@ -191,6 +194,7 @@ import com.android.server.connectivity.DefaultNetworkMetrics; import com.android.server.connectivity.IpConnectivityMetrics; import com.android.server.connectivity.MockableSystemProperties; import com.android.server.connectivity.Nat464Xlat; +import com.android.server.connectivity.NetworkNotificationManager.NotificationType; import com.android.server.connectivity.ProxyTracker; import com.android.server.connectivity.Tethering; import com.android.server.connectivity.Vpn; @@ -282,6 +286,7 @@ public class ConnectivityServiceTest { @Mock NetworkStackClient mNetworkStack; @Mock PackageManager mPackageManager; @Mock UserManager mUserManager; + @Mock NotificationManager mNotificationManager; private ArgumentCaptor<ResolverParamsParcel> mResolverParamsParcelCaptor = ArgumentCaptor.forClass(ResolverParamsParcel.class); @@ -351,7 +356,7 @@ public class ConnectivityServiceTest { @Override public Object getSystemService(String name) { if (Context.CONNECTIVITY_SERVICE.equals(name)) return mCm; - if (Context.NOTIFICATION_SERVICE.equals(name)) return mock(NotificationManager.class); + if (Context.NOTIFICATION_SERVICE.equals(name)) return mNotificationManager; if (Context.NETWORK_STACK_SERVICE.equals(name)) return mNetworkStack; if (Context.USER_SERVICE.equals(name)) return mUserManager; return super.getSystemService(name); @@ -371,7 +376,17 @@ public class ConnectivityServiceTest { public PackageManager getPackageManager() { return mPackageManager; } - } + + @Override + public void enforceCallingOrSelfPermission(String permission, String message) { + // The mainline permission can only be held if signed with the network stack certificate + // Skip testing for this permission. + if (NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK.equals(permission)) return; + // All other permissions should be held by the test or unnecessary: check as normal to + // make sure the code does not rely on unexpected permissions. + super.enforceCallingOrSelfPermission(permission, message); + } + } public void waitForIdle(int timeoutMsAsInt) { long timeoutMs = timeoutMsAsInt; @@ -2856,6 +2871,9 @@ public class ConnectivityServiceTest { // Expect NET_CAPABILITY_VALIDATED onAvailable callback. validatedCallback.expectAvailableDoubleValidatedCallbacks(mWiFiNetworkAgent); + // Expect no notification to be shown when captive portal disappears by itself + verify(mNotificationManager, never()).notifyAsUser( + anyString(), eq(NotificationType.LOGGED_IN.eventId), any(), any()); // Break network connectivity. // Expect NET_CAPABILITY_VALIDATED onLost callback. @@ -2885,6 +2903,8 @@ public class ConnectivityServiceTest { // Check that calling startCaptivePortalApp does nothing. final int fastTimeoutMs = 100; mCm.startCaptivePortalApp(wifiNetwork); + waitForIdle(); + verify(mWiFiNetworkAgent.mNetworkMonitor, never()).launchCaptivePortalApp(); mServiceContext.expectNoStartActivityIntent(fastTimeoutMs); // Turn into a captive portal. @@ -2895,14 +2915,26 @@ public class ConnectivityServiceTest { // Check that startCaptivePortalApp sends the expected command to NetworkMonitor. mCm.startCaptivePortalApp(wifiNetwork); - verify(mWiFiNetworkAgent.mNetworkMonitor, timeout(TIMEOUT_MS).times(1)) - .launchCaptivePortalApp(); + waitForIdle(); + verify(mWiFiNetworkAgent.mNetworkMonitor).launchCaptivePortalApp(); + + // NetworkMonitor uses startCaptivePortal(Network, Bundle) (startCaptivePortalAppInternal) + final Bundle testBundle = new Bundle(); + final String testKey = "testkey"; + final String testValue = "testvalue"; + testBundle.putString(testKey, testValue); + mCm.startCaptivePortalApp(wifiNetwork, testBundle); + final Intent signInIntent = mServiceContext.expectStartActivityIntent(TIMEOUT_MS); + assertEquals(ACTION_CAPTIVE_PORTAL_SIGN_IN, signInIntent.getAction()); + assertEquals(testValue, signInIntent.getStringExtra(testKey)); // Report that the captive portal is dismissed, and check that callbacks are fired mWiFiNetworkAgent.setNetworkValid(); mWiFiNetworkAgent.mNetworkMonitor.forceReevaluation(Process.myUid()); validatedCallback.expectAvailableCallbacksValidated(mWiFiNetworkAgent); captivePortalCallback.expectCallback(CallbackState.LOST, mWiFiNetworkAgent); + verify(mNotificationManager, times(1)).notifyAsUser(anyString(), + eq(NotificationType.LOGGED_IN.eventId), any(), eq(UserHandle.ALL)); mCm.unregisterNetworkCallback(validatedCallback); mCm.unregisterNetworkCallback(captivePortalCallback); diff --git a/tests/net/java/com/android/server/net/NetworkStatsServiceTest.java b/tests/net/java/com/android/server/net/NetworkStatsServiceTest.java index d9f2c201fe37..bce526d3ae29 100644 --- a/tests/net/java/com/android/server/net/NetworkStatsServiceTest.java +++ b/tests/net/java/com/android/server/net/NetworkStatsServiceTest.java @@ -57,11 +57,11 @@ import static com.android.server.net.NetworkStatsService.ACTION_NETWORK_STATS_PO import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.anyLong; +import static org.mockito.ArgumentMatchers.argThat; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; @@ -216,16 +216,11 @@ public class NetworkStatsServiceTest { expectNetworkStatsUidDetail(buildEmptyStats()); expectSystemReady(); - assertNull(mService.getTunAdjustedStats()); mService.systemReady(); - // Verify that system ready fetches realtime stats and initializes tun adjusted stats. - verify(mNetManager).getNetworkStatsUidDetail(UID_ALL, INTERFACES_ALL); - assertNotNull("failed to initialize TUN adjusted stats", mService.getTunAdjustedStats()); - assertEquals(0, mService.getTunAdjustedStats().size()); - mSession = mService.openSession(); assertNotNull("openSession() failed", mSession); + // catch INetworkManagementEventObserver during systemReady() ArgumentCaptor<INetworkManagementEventObserver> networkObserver = ArgumentCaptor.forClass(INetworkManagementEventObserver.class); @@ -738,13 +733,11 @@ public class NetworkStatsServiceTest { NetworkStats stats = mService.getDetailedUidStats(ifaceFilter); - // mNetManager#getNetworkStatsUidDetail(UID_ALL, INTERFACES_ALL) has following invocations: - // 1) NetworkStatsService#systemReady from #setUp. - // 2) mService#forceUpdateIfaces in the test above. - // 3) Finally, mService#getDetailedUidStats. - verify(mNetManager, times(3)).getNetworkStatsUidDetail(UID_ALL, INTERFACES_ALL); - assertTrue(ArrayUtils.contains(stats.getUniqueIfaces(), TEST_IFACE)); - assertTrue(ArrayUtils.contains(stats.getUniqueIfaces(), stackedIface)); + verify(mNetManager, times(1)).getNetworkStatsUidDetail(eq(UID_ALL), argThat(ifaces -> + ifaces != null && ifaces.length == 2 + && ArrayUtils.contains(ifaces, TEST_IFACE) + && ArrayUtils.contains(ifaces, stackedIface))); + assertEquals(2, stats.size()); assertEquals(uidStats, stats.getValues(0, null)); assertEquals(tetheredStats1, stats.getValues(1, null)); @@ -930,111 +923,11 @@ public class NetworkStatsServiceTest { } @Test - public void vpnRewriteTrafficThroughItself() throws Exception { - // WiFi network is connected and VPN is using WiFi (which has TEST_IFACE). - expectDefaultSettings(); - NetworkState[] networkStates = new NetworkState[] {buildWifiState(), buildVpnState()}; - VpnInfo[] vpnInfos = new VpnInfo[] {createVpnInfo(new String[] {TEST_IFACE})}; - expectNetworkStatsUidDetail(buildEmptyStats()); - expectBandwidthControlCheck(); - - mService.forceUpdateIfaces( - new Network[] {WIFI_NETWORK, VPN_NETWORK}, - vpnInfos, - networkStates, - getActiveIface(networkStates)); - // create some traffic (assume 10 bytes of MTU for VPN interface and 1 byte encryption - // overhead per packet): - // - // 1000 bytes (100 packets) were sent, and 2000 bytes (200 packets) were received by UID_RED - // over VPN. - // 500 bytes (50 packets) were sent, and 1000 bytes (100 packets) were received by UID_BLUE - // over VPN. - // - // VPN UID rewrites packets read from TUN back to TUN, plus some of its own traffic - // (100 bytes). - incrementCurrentTime(HOUR_IN_MILLIS); - expectNetworkStatsUidDetail(new NetworkStats(getElapsedRealtime(), 5) - .addValues(TUN_IFACE, UID_RED, SET_DEFAULT, TAG_NONE, 2000L, 200L, 1000L, 100L, 1L) - .addValues(TUN_IFACE, UID_BLUE, SET_DEFAULT, TAG_NONE, 1000L, 100L, 500L, 50L, 1L) - // VPN rewrites all the packets read from TUN + 100 additional bytes of VPN's - // own traffic. - .addValues(TUN_IFACE, UID_VPN, SET_DEFAULT, TAG_NONE, 0L, 0L, 1600L, 160L, 2L) - // VPN sent 1760 bytes over WiFi in foreground (SET_FOREGROUND) i.e. 1600 - // bytes (160 packets) + 1 byte/packet overhead (=160 bytes). - .addValues(TEST_IFACE, UID_VPN, SET_FOREGROUND, TAG_NONE, 0L, 0L, 1760L, 176L, 1L) - // VPN received 3300 bytes over WiFi in background (SET_DEFAULT) i.e. 3000 bytes - // (300 packets) + 1 byte/packet encryption overhead (=300 bytes). - .addValues(TEST_IFACE, UID_VPN, SET_DEFAULT, TAG_NONE, 3300L, 300L, 0L, 0L, 1L)); - - forcePollAndWaitForIdle(); - - // Verify increased TUN usage by UID_VPN does not get attributed to other apps. - NetworkStats tunStats = - mService.getDetailedUidStats(new String[] {TUN_IFACE}); - assertValues( - tunStats, TUN_IFACE, UID_RED, SET_ALL, TAG_NONE, METERED_ALL, ROAMING_ALL, - DEFAULT_NETWORK_ALL, 2000L, 200L, 1000L, 100L, 1); - assertValues( - tunStats, TUN_IFACE, UID_BLUE, SET_ALL, TAG_NONE, METERED_ALL, ROAMING_ALL, - DEFAULT_NETWORK_ALL, 1000L, 100L, 500L, 50L, 1); - assertValues( - tunStats, TUN_IFACE, UID_VPN, SET_ALL, TAG_NONE, METERED_ALL, ROAMING_ALL, - DEFAULT_NETWORK_ALL, 0L, 0L, 1600L, 160L, 2); - - // Verify correct attribution over WiFi. - assertUidTotal(sTemplateWifi, UID_RED, 2000L, 200L, 1000L, 100L, 1); - assertUidTotal(sTemplateWifi, UID_BLUE, 1000L, 100L, 500L, 50L, 1); - assertUidTotal(sTemplateWifi, UID_VPN, 300L, 0L, 260L, 26L, 2); - } - - @Test public void vpnWithOneUnderlyingIface() throws Exception { // WiFi network is connected and VPN is using WiFi (which has TEST_IFACE). expectDefaultSettings(); NetworkState[] networkStates = new NetworkState[] {buildWifiState(), buildVpnState()}; - VpnInfo[] vpnInfos = new VpnInfo[] {createVpnInfo(new String[] {TEST_IFACE})}; - expectNetworkStatsUidDetail(buildEmptyStats()); - expectBandwidthControlCheck(); - - mService.forceUpdateIfaces( - new Network[] {WIFI_NETWORK, VPN_NETWORK}, - vpnInfos, - networkStates, - getActiveIface(networkStates)); - // create some traffic (assume 10 bytes of MTU for VPN interface and 1 byte encryption - // overhead per packet): - // 1000 bytes (100 packets) were sent, and 2000 bytes (200 packets) were received by UID_RED - // over VPN. - // 500 bytes (50 packets) were sent, and 1000 bytes (100 packets) were received by UID_BLUE - // over VPN. - // VPN sent 1650 bytes (150 packets), and received 3300 (300 packets) over WiFi. - // Of 1650 bytes sent over WiFi, expect 1000 bytes attributed to UID_RED, 500 bytes - // attributed to UID_BLUE, and 150 bytes attributed to UID_VPN. - // Of 3300 bytes received over WiFi, expect 2000 bytes attributed to UID_RED, 1000 bytes - // attributed to UID_BLUE, and 300 bytes attributed to UID_VPN. - incrementCurrentTime(HOUR_IN_MILLIS); - expectNetworkStatsUidDetail(new NetworkStats(getElapsedRealtime(), 3) - .addValues(TUN_IFACE, UID_RED, SET_DEFAULT, TAG_NONE, 2000L, 200L, 1000L, 100L, 1L) - .addValues(TUN_IFACE, UID_BLUE, SET_DEFAULT, TAG_NONE, 1000L, 100L, 500L, 50L, 1L) - // VPN received 3300 bytes over WiFi in background (SET_DEFAULT). - .addValues(TEST_IFACE, UID_VPN, SET_DEFAULT, TAG_NONE, 3300L, 300L, 0L, 0L, 1L) - // VPN sent 1650 bytes over WiFi in foreground (SET_FOREGROUND). - .addValues(TEST_IFACE, UID_VPN, SET_FOREGROUND, TAG_NONE, 0L, 0L, 1650L, 150L, 1L)); - - forcePollAndWaitForIdle(); - - assertUidTotal(sTemplateWifi, UID_RED, 2000L, 200L, 1000L, 100L, 1); - assertUidTotal(sTemplateWifi, UID_BLUE, 1000L, 100L, 500L, 50L, 1); - assertUidTotal(sTemplateWifi, UID_VPN, 300L, 0L, 150L, 0L, 2); - } - - @Test - public void vpnWithOneUnderlyingIfaceAndOwnTraffic() throws Exception { - // WiFi network is connected and VPN is using WiFi (which has TEST_IFACE). - expectDefaultSettings(); - NetworkState[] networkStates = new NetworkState[] {buildWifiState(), buildVpnState()}; - VpnInfo[] vpnInfos = new VpnInfo[] {createVpnInfo(new String[] {TEST_IFACE})}; + VpnInfo[] vpnInfos = new VpnInfo[] {createVpnInfo(TEST_IFACE)}; expectNetworkStatsUidDetail(buildEmptyStats()); expectBandwidthControlCheck(); @@ -1045,33 +938,23 @@ public class NetworkStatsServiceTest { getActiveIface(networkStates)); // create some traffic (assume 10 bytes of MTU for VPN interface and 1 byte encryption // overhead per packet): - // 1000 bytes (100 packets) were sent, and 2000 bytes (200 packets) were received by UID_RED - // over VPN. - // 500 bytes (50 packets) were sent, and 1000 bytes (100 packets) were received by UID_BLUE - // over VPN. - // Additionally, the VPN sends 6000 bytes (600 packets) of its own traffic into the tun - // interface (passing that traffic to the VPN endpoint), and receives 5000 bytes (500 - // packets) from it. Including overhead that is 6600/5500 bytes. - // VPN sent 8250 bytes (750 packets), and received 8800 (800 packets) over WiFi. - // Of 8250 bytes sent over WiFi, expect 1000 bytes attributed to UID_RED, 500 bytes - // attributed to UID_BLUE, and 6750 bytes attributed to UID_VPN. - // Of 8800 bytes received over WiFi, expect 2000 bytes attributed to UID_RED, 1000 bytes - // attributed to UID_BLUE, and 5800 bytes attributed to UID_VPN. + // 1000 bytes (100 packets) were sent/received by UID_RED over VPN. + // 500 bytes (50 packets) were sent/received by UID_BLUE over VPN. + // VPN sent/received 1650 bytes (150 packets) over WiFi. + // Of 1650 bytes over WiFi, expect 1000 bytes attributed to UID_RED, 500 bytes attributed to + // UID_BLUE, and 150 bytes attributed to UID_VPN for both rx/tx traffic. incrementCurrentTime(HOUR_IN_MILLIS); expectNetworkStatsUidDetail(new NetworkStats(getElapsedRealtime(), 3) - .addValues(TUN_IFACE, UID_RED, SET_DEFAULT, TAG_NONE, 2000L, 200L, 1000L, 100L, 1L) - .addValues(TUN_IFACE, UID_BLUE, SET_DEFAULT, TAG_NONE, 1000L, 100L, 500L, 50L, 1L) - .addValues(TUN_IFACE, UID_VPN, SET_DEFAULT, TAG_NONE, 5000L, 500L, 6000L, 600L, 1L) - // VPN received 8800 bytes over WiFi in background (SET_DEFAULT). - .addValues(TEST_IFACE, UID_VPN, SET_DEFAULT, TAG_NONE, 8800L, 800L, 0L, 0L, 1L) - // VPN sent 8250 bytes over WiFi in foreground (SET_FOREGROUND). - .addValues(TEST_IFACE, UID_VPN, SET_FOREGROUND, TAG_NONE, 0L, 0L, 8250L, 750L, 1L)); + .addValues(TUN_IFACE, UID_RED, SET_DEFAULT, TAG_NONE, 1000L, 100L, 1000L, 100L, 1L) + .addValues(TUN_IFACE, UID_BLUE, SET_DEFAULT, TAG_NONE, 500L, 50L, 500L, 50L, 1L) + .addValues( + TEST_IFACE, UID_VPN, SET_DEFAULT, TAG_NONE, 1650L, 150L, 1650L, 150L, 2L)); forcePollAndWaitForIdle(); - assertUidTotal(sTemplateWifi, UID_RED, 2000L, 200L, 1000L, 100L, 1); - assertUidTotal(sTemplateWifi, UID_BLUE, 1000L, 100L, 500L, 50L, 1); - assertUidTotal(sTemplateWifi, UID_VPN, 5800L, 500L, 6750L, 600L, 2); + assertUidTotal(sTemplateWifi, UID_RED, 1000L, 100L, 1000L, 100L, 1); + assertUidTotal(sTemplateWifi, UID_BLUE, 500L, 50L, 500L, 50L, 1); + assertUidTotal(sTemplateWifi, UID_VPN, 150L, 0L, 150L, 0L, 2); } @Test @@ -1079,7 +962,7 @@ public class NetworkStatsServiceTest { // WiFi network is connected and VPN is using WiFi (which has TEST_IFACE). expectDefaultSettings(); NetworkState[] networkStates = new NetworkState[] {buildWifiState(), buildVpnState()}; - VpnInfo[] vpnInfos = new VpnInfo[] {createVpnInfo(new String[] {TEST_IFACE})}; + VpnInfo[] vpnInfos = new VpnInfo[] {createVpnInfo(TEST_IFACE)}; expectNetworkStatsUidDetail(buildEmptyStats()); expectBandwidthControlCheck(); @@ -1110,136 +993,6 @@ public class NetworkStatsServiceTest { } @Test - public void vpnWithTwoUnderlyingIfaces_packetDuplication() throws Exception { - // WiFi and Cell networks are connected and VPN is using WiFi (which has TEST_IFACE) and - // Cell (which has TEST_IFACE2) and has declared both of them in its underlying network set. - // Additionally, VPN is duplicating traffic across both WiFi and Cell. - expectDefaultSettings(); - NetworkState[] networkStates = - new NetworkState[] { - buildWifiState(), buildMobile4gState(TEST_IFACE2), buildVpnState() - }; - VpnInfo[] vpnInfos = new VpnInfo[] {createVpnInfo(new String[] {TEST_IFACE, TEST_IFACE2})}; - expectNetworkStatsUidDetail(buildEmptyStats()); - expectBandwidthControlCheck(); - - mService.forceUpdateIfaces( - new Network[] {WIFI_NETWORK, VPN_NETWORK}, - vpnInfos, - networkStates, - getActiveIface(networkStates)); - // create some traffic (assume 10 bytes of MTU for VPN interface and 1 byte encryption - // overhead per packet): - // 1000 bytes (100 packets) were sent/received by UID_RED and UID_BLUE over VPN. - // VPN sent/received 4400 bytes (400 packets) over both WiFi and Cell (8800 bytes in total). - // Of 8800 bytes over WiFi/Cell, expect: - // - 500 bytes rx/tx each over WiFi/Cell attributed to both UID_RED and UID_BLUE. - // - 1200 bytes rx/tx each over WiFi/Cell for VPN_UID. - incrementCurrentTime(HOUR_IN_MILLIS); - expectNetworkStatsUidDetail(new NetworkStats(getElapsedRealtime(), 4) - .addValues(TUN_IFACE, UID_RED, SET_DEFAULT, TAG_NONE, 1000L, 100L, 1000L, 100L, 2L) - .addValues(TUN_IFACE, UID_BLUE, SET_DEFAULT, TAG_NONE, 1000L, 100L, 1000L, 100L, 2L) - .addValues(TEST_IFACE, UID_VPN, SET_DEFAULT, TAG_NONE, 2200L, 200L, 2200L, 200L, 2L) - .addValues( - TEST_IFACE2, UID_VPN, SET_DEFAULT, TAG_NONE, 2200L, 200L, 2200L, 200L, 2L)); - - forcePollAndWaitForIdle(); - - assertUidTotal(sTemplateWifi, UID_RED, 500L, 50L, 500L, 50L, 1); - assertUidTotal(sTemplateWifi, UID_BLUE, 500L, 50L, 500L, 50L, 1); - assertUidTotal(sTemplateWifi, UID_VPN, 1200L, 100L, 1200L, 100L, 2); - - assertUidTotal(buildTemplateMobileWildcard(), UID_RED, 500L, 50L, 500L, 50L, 1); - assertUidTotal(buildTemplateMobileWildcard(), UID_BLUE, 500L, 50L, 500L, 50L, 1); - assertUidTotal(buildTemplateMobileWildcard(), UID_VPN, 1200L, 100L, 1200L, 100L, 2); - } - - @Test - public void vpnWithTwoUnderlyingIfaces_splitTraffic() throws Exception { - // WiFi and Cell networks are connected and VPN is using WiFi (which has TEST_IFACE) and - // Cell (which has TEST_IFACE2) and has declared both of them in its underlying network set. - // Additionally, VPN is arbitrarily splitting traffic across WiFi and Cell. - expectDefaultSettings(); - NetworkState[] networkStates = - new NetworkState[] { - buildWifiState(), buildMobile4gState(TEST_IFACE2), buildVpnState() - }; - VpnInfo[] vpnInfos = new VpnInfo[] {createVpnInfo(new String[] {TEST_IFACE, TEST_IFACE2})}; - expectNetworkStatsUidDetail(buildEmptyStats()); - expectBandwidthControlCheck(); - - mService.forceUpdateIfaces( - new Network[] {WIFI_NETWORK, VPN_NETWORK}, - vpnInfos, - networkStates, - getActiveIface(networkStates)); - // create some traffic (assume 10 bytes of MTU for VPN interface and 1 byte encryption - // overhead per packet): - // 1000 bytes (100 packets) were sent, and 500 bytes (50 packets) received by UID_RED over - // VPN. - // VPN sent 660 bytes (60 packets) over WiFi and 440 bytes (40 packets) over Cell. - // And, it received 330 bytes (30 packets) over WiFi and 220 bytes (20 packets) over Cell. - // For UID_RED, expect 600 bytes attributed over WiFi and 400 bytes over Cell for sent (tx) - // traffic. For received (rx) traffic, expect 300 bytes over WiFi and 200 bytes over Cell. - // - // For UID_VPN, expect 60 bytes attributed over WiFi and 40 bytes over Cell for tx traffic. - // And, 30 bytes over WiFi and 20 bytes over Cell for rx traffic. - incrementCurrentTime(HOUR_IN_MILLIS); - expectNetworkStatsUidDetail(new NetworkStats(getElapsedRealtime(), 3) - .addValues(TUN_IFACE, UID_RED, SET_DEFAULT, TAG_NONE, 500L, 50L, 1000L, 100L, 2L) - .addValues(TEST_IFACE, UID_VPN, SET_DEFAULT, TAG_NONE, 330L, 30L, 660L, 60L, 1L) - .addValues(TEST_IFACE2, UID_VPN, SET_DEFAULT, TAG_NONE, 220L, 20L, 440L, 40L, 1L)); - - forcePollAndWaitForIdle(); - - assertUidTotal(sTemplateWifi, UID_RED, 300L, 30L, 600L, 60L, 1); - assertUidTotal(sTemplateWifi, UID_VPN, 30L, 0L, 60L, 0L, 1); - - assertUidTotal(buildTemplateMobileWildcard(), UID_RED, 200L, 20L, 400L, 40L, 1); - assertUidTotal(buildTemplateMobileWildcard(), UID_VPN, 20L, 0L, 40L, 0L, 1); - } - - @Test - public void vpnWithTwoUnderlyingIfaces_splitTrafficWithCompression() throws Exception { - // WiFi and Cell networks are connected and VPN is using WiFi (which has TEST_IFACE) and - // Cell (which has TEST_IFACE2) and has declared both of them in its underlying network set. - // Additionally, VPN is arbitrarily splitting compressed traffic across WiFi and Cell. - expectDefaultSettings(); - NetworkState[] networkStates = - new NetworkState[] { - buildWifiState(), buildMobile4gState(TEST_IFACE2), buildVpnState() - }; - VpnInfo[] vpnInfos = new VpnInfo[] {createVpnInfo(new String[] {TEST_IFACE, TEST_IFACE2})}; - expectNetworkStatsUidDetail(buildEmptyStats()); - expectBandwidthControlCheck(); - - mService.forceUpdateIfaces( - new Network[] {WIFI_NETWORK, VPN_NETWORK}, - vpnInfos, - networkStates, - getActiveIface(networkStates)); - // create some traffic (assume 10 bytes of MTU for VPN interface: - // 1000 bytes (100 packets) were sent/received by UID_RED over VPN. - // VPN sent/received 600 bytes (60 packets) over WiFi and 200 bytes (20 packets) over Cell. - // For UID_RED, expect 600 bytes attributed over WiFi and 200 bytes over Cell for both - // rx/tx. - // UID_VPN gets nothing attributed to it (avoiding negative stats). - incrementCurrentTime(HOUR_IN_MILLIS); - expectNetworkStatsUidDetail(new NetworkStats(getElapsedRealtime(), 4) - .addValues(TUN_IFACE, UID_RED, SET_DEFAULT, TAG_NONE, 1000L, 100L, 1000L, 100L, 1L) - .addValues(TEST_IFACE, UID_VPN, SET_DEFAULT, TAG_NONE, 600L, 60L, 600L, 60L, 0L) - .addValues(TEST_IFACE2, UID_VPN, SET_DEFAULT, TAG_NONE, 200L, 20L, 200L, 20L, 0L)); - - forcePollAndWaitForIdle(); - - assertUidTotal(sTemplateWifi, UID_RED, 600L, 60L, 600L, 60L, 0); - assertUidTotal(sTemplateWifi, UID_VPN, 0L, 0L, 0L, 0L, 0); - - assertUidTotal(buildTemplateMobileWildcard(), UID_RED, 200L, 20L, 200L, 20L, 0); - assertUidTotal(buildTemplateMobileWildcard(), UID_VPN, 0L, 0L, 0L, 0L, 0); - } - - @Test public void vpnWithIncorrectUnderlyingIface() throws Exception { // WiFi and Cell networks are connected and VPN is using Cell (which has TEST_IFACE2), // but has declared only WiFi (TEST_IFACE) in its underlying network set. @@ -1248,7 +1001,7 @@ public class NetworkStatsServiceTest { new NetworkState[] { buildWifiState(), buildMobile4gState(TEST_IFACE2), buildVpnState() }; - VpnInfo[] vpnInfos = new VpnInfo[] {createVpnInfo(new String[] {TEST_IFACE})}; + VpnInfo[] vpnInfos = new VpnInfo[] {createVpnInfo(TEST_IFACE)}; expectNetworkStatsUidDetail(buildEmptyStats()); expectBandwidthControlCheck(); @@ -1277,134 +1030,6 @@ public class NetworkStatsServiceTest { } @Test - public void recordSnapshot_migratesTunTrafficAndUpdatesTunAdjustedStats() throws Exception { - assertEquals(0, mService.getTunAdjustedStats().size()); - // VPN using WiFi (TEST_IFACE). - VpnInfo[] vpnInfos = new VpnInfo[] {createVpnInfo(new String[] {TEST_IFACE})}; - expectBandwidthControlCheck(); - // create some traffic (assume 10 bytes of MTU for VPN interface and 1 byte encryption - // overhead per packet): - // 1000 bytes (100 packets) were downloaded by UID_RED over VPN. - // VPN received 1100 bytes (100 packets) over WiFi. - incrementCurrentTime(HOUR_IN_MILLIS); - expectNetworkStatsUidDetail(new NetworkStats(getElapsedRealtime(), 2) - .addValues(TUN_IFACE, UID_RED, SET_DEFAULT, TAG_NONE, 1000L, 100L, 0L, 0L, 0L) - .addValues(TEST_IFACE, UID_VPN, SET_DEFAULT, TAG_NONE, 1100L, 100L, 0L, 0L, 0L)); - - // this should lead to NSS#recordSnapshotLocked - mService.forceUpdateIfaces( - new Network[0], vpnInfos, new NetworkState[0], null /* activeIface */); - - // Verify TUN adjusted stats have traffic migrated correctly. - // Of 1100 bytes VPN received over WiFi, expect 1000 bytes attributed to UID_RED and 100 - // bytes attributed to UID_VPN. - NetworkStats tunAdjStats = mService.getTunAdjustedStats(); - assertValues( - tunAdjStats, TEST_IFACE, UID_RED, SET_ALL, TAG_NONE, METERED_ALL, ROAMING_ALL, - DEFAULT_NETWORK_ALL, 1000L, 100L, 0L, 0L, 0); - assertValues( - tunAdjStats, TEST_IFACE, UID_VPN, SET_ALL, TAG_NONE, METERED_ALL, ROAMING_ALL, - DEFAULT_NETWORK_ALL, 100L, 0L, 0L, 0L, 0); - } - - @Test - public void getDetailedUidStats_migratesTunTrafficAndUpdatesTunAdjustedStats() - throws Exception { - assertEquals(0, mService.getTunAdjustedStats().size()); - // VPN using WiFi (TEST_IFACE). - VpnInfo[] vpnInfos = new VpnInfo[] {createVpnInfo(new String[] {TEST_IFACE})}; - expectBandwidthControlCheck(); - mService.forceUpdateIfaces( - new Network[0], vpnInfos, new NetworkState[0], null /* activeIface */); - // create some traffic (assume 10 bytes of MTU for VPN interface and 1 byte encryption - // overhead per packet): - // 1000 bytes (100 packets) were downloaded by UID_RED over VPN. - // VPN received 1100 bytes (100 packets) over WiFi. - incrementCurrentTime(HOUR_IN_MILLIS); - expectNetworkStatsUidDetail(new NetworkStats(getElapsedRealtime(), 2) - .addValues(TUN_IFACE, UID_RED, SET_DEFAULT, TAG_NONE, 1000L, 100L, 0L, 0L, 0L) - .addValues(TEST_IFACE, UID_VPN, SET_DEFAULT, TAG_NONE, 1100L, 100L, 0L, 0L, 0L)); - - mService.getDetailedUidStats(INTERFACES_ALL); - - // Verify internally maintained TUN adjusted stats - NetworkStats tunAdjStats = mService.getTunAdjustedStats(); - // Verify stats for TEST_IFACE (WiFi): - // Of 1100 bytes VPN received over WiFi, expect 1000 bytes attributed to UID_RED and 100 - // bytes attributed to UID_VPN. - assertValues( - tunAdjStats, TEST_IFACE, UID_RED, SET_ALL, TAG_NONE, METERED_ALL, ROAMING_ALL, - DEFAULT_NETWORK_ALL, 1000L, 100L, 0L, 0L, 0); - assertValues( - tunAdjStats, TEST_IFACE, UID_VPN, SET_ALL, TAG_NONE, METERED_ALL, ROAMING_ALL, - DEFAULT_NETWORK_ALL, 100L, 0L, 0L, 0L, 0); - // Verify stats for TUN_IFACE; only UID_RED should have usage on it. - assertValues( - tunAdjStats, TUN_IFACE, UID_RED, SET_ALL, TAG_NONE, METERED_ALL, ROAMING_ALL, - DEFAULT_NETWORK_ALL, 1000L, 100L, 0L, 0L, 0); - assertValues( - tunAdjStats, TUN_IFACE, UID_VPN, SET_ALL, TAG_NONE, METERED_ALL, ROAMING_ALL, - DEFAULT_NETWORK_ALL, 0L, 0L, 0L, 0L, 0); - - // lets assume that since last time, VPN received another 1100 bytes (same assumptions as - // before i.e. UID_RED downloaded another 1000 bytes). - incrementCurrentTime(HOUR_IN_MILLIS); - // Note - NetworkStatsFactory returns counters that are monotonically increasing. - expectNetworkStatsUidDetail(new NetworkStats(getElapsedRealtime(), 2) - .addValues(TUN_IFACE, UID_RED, SET_DEFAULT, TAG_NONE, 2000L, 200L, 0L, 0L, 0L) - .addValues(TEST_IFACE, UID_VPN, SET_DEFAULT, TAG_NONE, 2200L, 200L, 0L, 0L, 0L)); - - mService.getDetailedUidStats(INTERFACES_ALL); - - tunAdjStats = mService.getTunAdjustedStats(); - // verify TEST_IFACE stats: - assertValues( - tunAdjStats, TEST_IFACE, UID_RED, SET_ALL, TAG_NONE, METERED_ALL, ROAMING_ALL, - DEFAULT_NETWORK_ALL, 2000L, 200L, 0L, 0L, 0); - assertValues( - tunAdjStats, TEST_IFACE, UID_VPN, SET_ALL, TAG_NONE, METERED_ALL, ROAMING_ALL, - DEFAULT_NETWORK_ALL, 200L, 0L, 0L, 0L, 0); - // verify TUN_IFACE stats: - assertValues( - tunAdjStats, TUN_IFACE, UID_RED, SET_ALL, TAG_NONE, METERED_ALL, ROAMING_ALL, - DEFAULT_NETWORK_ALL, 2000L, 200L, 0L, 0L, 0); - assertValues( - tunAdjStats, TUN_IFACE, UID_VPN, SET_ALL, TAG_NONE, METERED_ALL, ROAMING_ALL, - DEFAULT_NETWORK_ALL, 0L, 0L, 0L, 0L, 0); - } - - @Test - public void getDetailedUidStats_returnsCorrectStatsWithVpnRunning() throws Exception { - // VPN using WiFi (TEST_IFACE). - VpnInfo[] vpnInfos = new VpnInfo[] {createVpnInfo(new String[] {TEST_IFACE})}; - expectBandwidthControlCheck(); - mService.forceUpdateIfaces( - new Network[0], vpnInfos, new NetworkState[0], null /* activeIface */); - // create some traffic (assume 10 bytes of MTU for VPN interface and 1 byte encryption - // overhead per packet): - // 1000 bytes (100 packets) were downloaded by UID_RED over VPN. - // VPN received 1100 bytes (100 packets) over WiFi. - incrementCurrentTime(HOUR_IN_MILLIS); - expectNetworkStatsUidDetail(new NetworkStats(getElapsedRealtime(), 2) - .addValues(TUN_IFACE, UID_RED, SET_DEFAULT, TAG_NONE, 1000L, 100L, 0L, 0L, 0L) - .addValues(TEST_IFACE, UID_VPN, SET_DEFAULT, TAG_NONE, 1100L, 100L, 0L, 0L, 0L)); - - // Query realtime stats for TEST_IFACE. - NetworkStats queriedStats = - mService.getDetailedUidStats(new String[] {TEST_IFACE}); - - assertEquals(HOUR_IN_MILLIS, queriedStats.getElapsedRealtime()); - // verify that returned stats are only for TEST_IFACE and VPN traffic is migrated correctly. - assertEquals(new String[] {TEST_IFACE}, queriedStats.getUniqueIfaces()); - assertValues( - queriedStats, TEST_IFACE, UID_RED, SET_ALL, TAG_NONE, METERED_ALL, ROAMING_ALL, - DEFAULT_NETWORK_ALL, 1000L, 100L, 0L, 0L, 0); - assertValues( - queriedStats, TEST_IFACE, UID_VPN, SET_ALL, TAG_NONE, METERED_ALL, ROAMING_ALL, - DEFAULT_NETWORK_ALL, 100L, 0L, 0L, 0L, 0); - } - - @Test public void testRegisterUsageCallback() throws Exception { // pretend that wifi network comes online; service should ask about full // network state, and poll any existing interfaces before updating. @@ -1757,11 +1382,11 @@ public class NetworkStatsServiceTest { return new NetworkState(info, prop, new NetworkCapabilities(), VPN_NETWORK, null, null); } - private static VpnInfo createVpnInfo(String[] underlyingIfaces) { + private static VpnInfo createVpnInfo(String underlyingIface) { VpnInfo info = new VpnInfo(); info.ownerUid = UID_VPN; info.vpnIface = TUN_IFACE; - info.underlyingIfaces = underlyingIfaces; + info.primaryUnderlyingIface = underlyingIface; return info; } diff --git a/tools/incident_section_gen/main.cpp b/tools/incident_section_gen/main.cpp index c9c0edc59585..91f875ed9918 100644 --- a/tools/incident_section_gen/main.cpp +++ b/tools/incident_section_gen/main.cpp @@ -408,9 +408,10 @@ static bool generateSectionListCpp(Descriptor const* descriptor) { for (int i=0; i<descriptor->field_count(); i++) { const FieldDescriptor* field = descriptor->field(i); - if (field->type() != FieldDescriptor::TYPE_MESSAGE - && field->type() != FieldDescriptor::TYPE_STRING) { - continue; + if (field->type() != FieldDescriptor::TYPE_MESSAGE && + field->type() != FieldDescriptor::TYPE_STRING && + field->type() != FieldDescriptor::TYPE_BYTES) { + continue; } const SectionFlags s = getSectionFlags(field); diff --git a/tools/stats_log_api_gen/main.cpp b/tools/stats_log_api_gen/main.cpp index 1aad4be5d66f..f62fef076f48 100644 --- a/tools/stats_log_api_gen/main.cpp +++ b/tools/stats_log_api_gen/main.cpp @@ -131,14 +131,10 @@ static void write_atoms_info_cpp(FILE *out, const Atoms &atoms) { "mobile_bytes_transfer"}; fprintf(out, "const std::set<int> " - "AtomsInfo::kNotTruncatingTimestampAtomWhiteList = {\n"); - for (set<AtomDecl>::const_iterator atom = atoms.decls.begin(); - atom != atoms.decls.end(); atom++) { - if (kTruncatingAtomNames.find(atom->name) == - kTruncatingAtomNames.end()) { - string constant = make_constant_name(atom->name); - fprintf(out, " %s,\n", constant.c_str()); - } + "AtomsInfo::kTruncatingTimestampAtomBlackList = {\n"); + for (set<string>::const_iterator blacklistedAtom = kTruncatingAtomNames.begin(); + blacklistedAtom != kTruncatingAtomNames.end(); blacklistedAtom++) { + fprintf(out, " %s,\n", make_constant_name(*blacklistedAtom).c_str()); } fprintf(out, "};\n"); fprintf(out, "\n"); @@ -840,7 +836,7 @@ write_stats_log_header(FILE* out, const Atoms& atoms, const AtomDecl &attributio fprintf(out, "struct AtomsInfo {\n"); fprintf(out, " const static std::set<int> " - "kNotTruncatingTimestampAtomWhiteList;\n"); + "kTruncatingTimestampAtomBlackList;\n"); fprintf(out, " const static std::map<int, int> kAtomsWithUidField;\n"); fprintf(out, " const static std::set<int> kAtomsWithAttributionChain;\n"); diff --git a/wifi/java/android/net/wifi/aware/WifiAwareNetworkSpecifier.java b/wifi/java/android/net/wifi/aware/WifiAwareNetworkSpecifier.java index daea601e9f96..0511f2411647 100644 --- a/wifi/java/android/net/wifi/aware/WifiAwareNetworkSpecifier.java +++ b/wifi/java/android/net/wifi/aware/WifiAwareNetworkSpecifier.java @@ -31,11 +31,8 @@ import java.util.Arrays; import java.util.Objects; /** - * Network specifier object used to request a Wi-Fi Aware network. Apps do not create these objects - * directly but obtain them using - * {@link WifiAwareSession#createNetworkSpecifierOpen(int, byte[])} or - * {@link DiscoverySession#createNetworkSpecifierOpen(PeerHandle)} or their secure (Passphrase) - * versions. + * Network specifier object used to request a Wi-Fi Aware network. Apps should use the + * {@link WifiAwareNetworkSpecifier.Builder} class to create an instance. */ public final class WifiAwareNetworkSpecifier extends NetworkSpecifier implements Parcelable { /** |