diff options
169 files changed, 1553 insertions, 1018 deletions
diff --git a/api/current.txt b/api/current.txt index 7a2cecd930ab..b4c60892ee4e 100644 --- a/api/current.txt +++ b/api/current.txt @@ -49085,6 +49085,7 @@ package android.webkit { method public int getRendererRequestedPriority(); method public deprecated float getScale(); method public android.webkit.WebSettings getSettings(); + method public android.view.textclassifier.TextClassifier getTextClassifier(); method public java.lang.String getTitle(); method public java.lang.String getUrl(); method public android.webkit.WebChromeClient getWebChromeClient(); @@ -49133,6 +49134,7 @@ package android.webkit { method public deprecated void setPictureListener(android.webkit.WebView.PictureListener); method public void setRendererPriorityPolicy(int, boolean); method public static void setSafeBrowsingWhitelist(java.util.List<java.lang.String>, android.webkit.ValueCallback<java.lang.Boolean>); + method public void setTextClassifier(android.view.textclassifier.TextClassifier); method public deprecated void setVerticalScrollbarOverlay(boolean); method public void setWebChromeClient(android.webkit.WebChromeClient); method public static void setWebContentsDebuggingEnabled(boolean); diff --git a/api/system-current.txt b/api/system-current.txt index 27d3ee4299cc..57bf4b4093e5 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -52842,6 +52842,7 @@ package android.webkit { method public int getRendererRequestedPriority(); method public deprecated float getScale(); method public android.webkit.WebSettings getSettings(); + method public android.view.textclassifier.TextClassifier getTextClassifier(); method public java.lang.String getTitle(); method public java.lang.String getUrl(); method public android.webkit.WebChromeClient getWebChromeClient(); @@ -52891,6 +52892,7 @@ package android.webkit { method public deprecated void setPictureListener(android.webkit.WebView.PictureListener); method public void setRendererPriorityPolicy(int, boolean); method public static void setSafeBrowsingWhitelist(java.util.List<java.lang.String>, android.webkit.ValueCallback<java.lang.Boolean>); + method public void setTextClassifier(android.view.textclassifier.TextClassifier); method public deprecated void setVerticalScrollbarOverlay(boolean); method public void setWebChromeClient(android.webkit.WebChromeClient); method public static void setWebContentsDebuggingEnabled(boolean); diff --git a/api/test-current.txt b/api/test-current.txt index 282e9d0893bd..52a659e5d254 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -12032,6 +12032,31 @@ package android.database.sqlite { ctor public SQLiteDatatypeMismatchException(java.lang.String); } + public final class SQLiteDebug { + method public static void dump(android.util.Printer, java.lang.String[]); + method public static android.database.sqlite.SQLiteDebug.PagerStats getDatabaseInfo(); + field public static final boolean DEBUG_SQL_LOG; + field public static final boolean DEBUG_SQL_STATEMENTS; + field public static final boolean DEBUG_SQL_TIME; + } + + public static class SQLiteDebug.DbStats { + ctor public SQLiteDebug.DbStats(java.lang.String, long, long, int, int, int, int); + field public java.lang.String cache; + field public java.lang.String dbName; + field public long dbSize; + field public int lookaside; + field public long pageSize; + } + + public static class SQLiteDebug.PagerStats { + ctor public SQLiteDebug.PagerStats(); + field public java.util.ArrayList<android.database.sqlite.SQLiteDebug.DbStats> dbStats; + field public int largestMemAlloc; + field public int memoryUsed; + field public int pageCacheOverflow; + } + public class SQLiteDiskIOException extends android.database.sqlite.SQLiteException { ctor public SQLiteDiskIOException(); ctor public SQLiteDiskIOException(java.lang.String); @@ -49507,6 +49532,7 @@ package android.webkit { method public int getRendererRequestedPriority(); method public deprecated float getScale(); method public android.webkit.WebSettings getSettings(); + method public android.view.textclassifier.TextClassifier getTextClassifier(); method public java.lang.String getTitle(); method public java.lang.String getUrl(); method public android.webkit.WebChromeClient getWebChromeClient(); @@ -49555,6 +49581,7 @@ package android.webkit { method public deprecated void setPictureListener(android.webkit.WebView.PictureListener); method public void setRendererPriorityPolicy(int, boolean); method public static void setSafeBrowsingWhitelist(java.util.List<java.lang.String>, android.webkit.ValueCallback<java.lang.Boolean>); + method public void setTextClassifier(android.view.textclassifier.TextClassifier); method public deprecated void setVerticalScrollbarOverlay(boolean); method public void setWebChromeClient(android.webkit.WebChromeClient); method public static void setWebContentsDebuggingEnabled(boolean); diff --git a/cmds/screencap/screencap.cpp b/cmds/screencap/screencap.cpp index 23668786abee..35f8bbb57e50 100644 --- a/cmds/screencap/screencap.cpp +++ b/cmds/screencap/screencap.cpp @@ -116,13 +116,6 @@ static status_t notifyMediaScanner(const char* fileName) { int main(int argc, char** argv) { - // setThreadPoolMaxThreadCount(0) actually tells the kernel it's - // not allowed to spawn any additional threads, but we still spawn - // a binder thread from userspace when we call startThreadPool(). - // See b/36066697 for rationale - ProcessState::self()->setThreadPoolMaxThreadCount(0); - ProcessState::self()->startThreadPool(); - const char* pname = argv[0]; bool png = false; int32_t displayId = DEFAULT_DISPLAY_ID; @@ -182,11 +175,19 @@ int main(int argc, char** argv) ISurfaceComposer::eRotate90, // 3 == DISPLAY_ORIENTATION_270 }; + // setThreadPoolMaxThreadCount(0) actually tells the kernel it's + // not allowed to spawn any additional threads, but we still spawn + // a binder thread from userspace when we call startThreadPool(). + // See b/36066697 for rationale + ProcessState::self()->setThreadPoolMaxThreadCount(0); + ProcessState::self()->startThreadPool(); + ScreenshotClient screenshot; sp<IBinder> display = SurfaceComposerClient::getBuiltInDisplay(displayId); if (display == NULL) { fprintf(stderr, "Unable to get handle for display %d\n", displayId); - return 1; + // b/36066697: Avoid running static destructors. + _exit(1); } Vector<DisplayInfo> configs; @@ -195,7 +196,8 @@ int main(int argc, char** argv) if (static_cast<size_t>(activeConfig) >= configs.size()) { fprintf(stderr, "Active config %d not inside configs (size %zu)\n", activeConfig, configs.size()); - return 1; + // b/36066697: Avoid running static destructors. + _exit(1); } uint8_t displayOrientation = configs[activeConfig].orientation; uint32_t captureOrientation = ORIENTATION_MAP[displayOrientation]; diff --git a/core/java/android/app/NotificationManager.java b/core/java/android/app/NotificationManager.java index 0f0c4bac5f9f..885817231175 100644 --- a/core/java/android/app/NotificationManager.java +++ b/core/java/android/app/NotificationManager.java @@ -416,12 +416,16 @@ public class NotificationManager { * Creates a notification channel that notifications can be posted to. * * This can also be used to restore a deleted channel and to update an existing channel's - * name and description. + * name, description, and/or importance. * * <p>The name and description should only be changed if the locale changes * or in response to the user renaming this channel. For example, if a user has a channel * named 'John Doe' that represents messages from a 'John Doe', and 'John Doe' changes his name * to 'John Smith,' the channel can be renamed to match. + * + * <p>The importance of an existing channel will only be changed if the new importance is lower + * than the current value and the user has not altered any settings on this channel. + * * All other fields are ignored for channels that already exist. * * @param channel the channel to create. Note that the created channel may differ from this diff --git a/core/java/android/content/pm/PackageManager.java b/core/java/android/content/pm/PackageManager.java index cc197a23d835..175293d82203 100644 --- a/core/java/android/content/pm/PackageManager.java +++ b/core/java/android/content/pm/PackageManager.java @@ -4021,6 +4021,7 @@ public abstract class PackageManager { * @hide */ @SystemApi + @RequiresPermission(Manifest.permission.INTERACT_ACROSS_USERS) public List<ResolveInfo> queryBroadcastReceiversAsUser(Intent intent, @ResolveInfoFlags int flags, UserHandle userHandle) { return queryBroadcastReceiversAsUser(intent, flags, userHandle.getIdentifier()); @@ -4809,6 +4810,7 @@ public abstract class PackageManager { * @hide */ @SystemApi + @RequiresPermission(Manifest.permission.INTERACT_ACROSS_USERS_FULL) public abstract int getIntentVerificationStatusAsUser(String packageName, @UserIdInt int userId); /** @@ -4878,6 +4880,7 @@ public abstract class PackageManager { */ @TestApi @SystemApi + @RequiresPermission(Manifest.permission.INTERACT_ACROSS_USERS_FULL) public abstract String getDefaultBrowserPackageNameAsUser(@UserIdInt int userId); /** @@ -4893,7 +4896,9 @@ public abstract class PackageManager { * @hide */ @SystemApi - @RequiresPermission(android.Manifest.permission.SET_PREFERRED_APPLICATIONS) + @RequiresPermission(allOf = { + Manifest.permission.SET_PREFERRED_APPLICATIONS, + Manifest.permission.INTERACT_ACROSS_USERS_FULL}) public abstract boolean setDefaultBrowserPackageNameAsUser(String packageName, @UserIdInt int userId); diff --git a/core/java/android/database/sqlite/SQLiteConnectionPool.java b/core/java/android/database/sqlite/SQLiteConnectionPool.java index 765f27ec7cf8..6ce8787e6c38 100644 --- a/core/java/android/database/sqlite/SQLiteConnectionPool.java +++ b/core/java/android/database/sqlite/SQLiteConnectionPool.java @@ -1009,13 +1009,15 @@ public final class SQLiteConnectionPool implements Closeable { } private void setMaxConnectionPoolSizeLocked() { - if ((mConfiguration.openFlags & SQLiteDatabase.ENABLE_WRITE_AHEAD_LOGGING) != 0) { + if (!mConfiguration.isInMemoryDb() + && (mConfiguration.openFlags & SQLiteDatabase.ENABLE_WRITE_AHEAD_LOGGING) != 0) { mMaxConnectionPoolSize = SQLiteGlobal.getWALConnectionPoolSize(); } else { - // TODO: We don't actually need to restrict the connection pool size to 1 + // We don't actually need to always restrict the connection pool size to 1 // for non-WAL databases. There might be reasons to use connection pooling - // with other journal modes. For now, enabling connection pooling and - // using WAL are the same thing in the API. + // with other journal modes. However, we should always keep pool size of 1 for in-memory + // databases since every :memory: db is separate from another. + // For now, enabling connection pooling and using WAL are the same thing in the API. mMaxConnectionPoolSize = 1; } } diff --git a/core/java/android/database/sqlite/SQLiteDebug.java b/core/java/android/database/sqlite/SQLiteDebug.java index 11973312a3a3..a921aa34eb92 100644 --- a/core/java/android/database/sqlite/SQLiteDebug.java +++ b/core/java/android/database/sqlite/SQLiteDebug.java @@ -16,13 +16,14 @@ package android.database.sqlite; -import java.util.ArrayList; - +import android.annotation.TestApi; import android.os.Build; import android.os.SystemProperties; import android.util.Log; import android.util.Printer; +import java.util.ArrayList; + /** * Provides debugging info about all SQLite databases running in the current process. * @@ -117,6 +118,7 @@ public final class SQLiteDebug { /** * contains statistics about a database */ + @TestApi public static class DbStats { /** name of the database */ public String dbName; @@ -127,7 +129,8 @@ public final class SQLiteDebug { /** the database size */ public long dbSize; - /** documented here http://www.sqlite.org/c3ref/c_dbstatus_lookaside_used.html */ + /** + * Number of lookaside slots: http://www.sqlite.org/c3ref/c_dbstatus_lookaside_used.html */ public int lookaside; /** statement cache stats: hits/misses/cachesize */ @@ -147,6 +150,7 @@ public final class SQLiteDebug { * return all pager and database stats for the current process. * @return {@link PagerStats} */ + @TestApi public static PagerStats getDatabaseInfo() { PagerStats stats = new PagerStats(); nativeGetPagerStats(stats); diff --git a/core/java/android/service/autofill/Dataset.java b/core/java/android/service/autofill/Dataset.java index a2ec0993c2c9..65b0efcbe032 100644 --- a/core/java/android/service/autofill/Dataset.java +++ b/core/java/android/service/autofill/Dataset.java @@ -26,6 +26,7 @@ import android.os.Parcelable; import android.view.autofill.AutofillId; import android.view.autofill.AutofillValue; import android.widget.RemoteViews; + import com.android.internal.util.Preconditions; import java.util.ArrayList; diff --git a/core/java/android/service/autofill/FillResponse.java b/core/java/android/service/autofill/FillResponse.java index e13fdf68c831..95e8c88a12f4 100644 --- a/core/java/android/service/autofill/FillResponse.java +++ b/core/java/android/service/autofill/FillResponse.java @@ -23,15 +23,16 @@ import android.annotation.NonNull; import android.annotation.Nullable; import android.app.Activity; import android.content.IntentSender; +import android.content.pm.ParceledListSlice; import android.os.Bundle; import android.os.Parcel; import android.os.Parcelable; import android.view.autofill.AutofillId; -import android.view.autofill.AutofillManager; import android.widget.RemoteViews; import java.util.ArrayList; import java.util.Arrays; +import java.util.List; /** * Response for a {@link @@ -41,7 +42,7 @@ import java.util.Arrays; */ public final class FillResponse implements Parcelable { - private final @Nullable ArrayList<Dataset> mDatasets; + private final @Nullable ParceledListSlice<Dataset> mDatasets; private final @Nullable SaveInfo mSaveInfo; private final @Nullable Bundle mClientState; private final @Nullable RemoteViews mPresentation; @@ -51,7 +52,7 @@ public final class FillResponse implements Parcelable { private int mRequestId; private FillResponse(@NonNull Builder builder) { - mDatasets = builder.mDatasets; + mDatasets = (builder.mDatasets != null) ? new ParceledListSlice<>(builder.mDatasets) : null; mSaveInfo = builder.mSaveInfo; mClientState = builder.mCLientState; mPresentation = builder.mPresentation; @@ -67,8 +68,8 @@ public final class FillResponse implements Parcelable { } /** @hide */ - public @Nullable ArrayList<Dataset> getDatasets() { - return mDatasets; + public @Nullable List<Dataset> getDatasets() { + return (mDatasets != null) ? mDatasets.getList() : null; } /** @hide */ @@ -143,12 +144,13 @@ public final class FillResponse implements Parcelable { * for the user to trigger your authentication flow. * * <p>When a user triggers autofill, the system launches the provided intent - * whose extras will have the {@link AutofillManager#EXTRA_ASSIST_STRUCTURE screen + * whose extras will have the + * {@link android.view.autofill.AutofillManager#EXTRA_ASSIST_STRUCTURE screen * content} and your {@link android.view.autofill.AutofillManager#EXTRA_CLIENT_STATE * client state}. Once you complete your authentication flow you should set the * {@link Activity} result to {@link android.app.Activity#RESULT_OK} and provide the fully - * populated {@link FillResponse response} by setting it to the {@link - * AutofillManager#EXTRA_AUTHENTICATION_RESULT} extra. + * populated {@link FillResponse response} by setting it to the + * {@link android.view.autofill.AutofillManager#EXTRA_AUTHENTICATION_RESULT} extra. * For example, if you provided an empty {@link FillResponse resppnse} because the * user's data was locked and marked that the response needs an authentication then * in the response returned if authentication succeeds you need to provide all @@ -205,6 +207,15 @@ public final class FillResponse implements Parcelable { /** * Adds a new {@link Dataset} to this response. * + * <p><b>Note: </b> on Android {@link android.os.Build.VERSION_CODES#O}, the total number of + * datasets is limited by the Binder transaction size, so it's recommended to keep it + * small (in the range of 10-20 at most) and use pagination by adding a fake + * {@link Dataset.Builder#setAuthentication(IntentSender) authenticated} at the end with + * a presentation string like "Next 10" that would return a new {@link FillResponse} with + * the next 10 datasets, and so on. This limitation was lifted on + * Android {@link android.os.Build.VERSION_CODES#O_MR1}, although the Binder transaction + * size can still be reached if each dataset itself is too big. + * * @return This builder. */ public @NonNull Builder addDataset(@Nullable Dataset dataset) { @@ -313,7 +324,7 @@ public final class FillResponse implements Parcelable { @Override public void writeToParcel(Parcel parcel, int flags) { - parcel.writeTypedArrayList(mDatasets, flags); + parcel.writeParcelable(mDatasets, flags); parcel.writeParcelable(mSaveInfo, flags); parcel.writeParcelable(mClientState, flags); parcel.writeParcelableArray(mAuthenticationIds, flags); @@ -331,7 +342,8 @@ public final class FillResponse implements Parcelable { // the system obeys the contract of the builder to avoid attacks // using specially crafted parcels. final Builder builder = new Builder(); - final ArrayList<Dataset> datasets = parcel.readTypedArrayList(null); + final ParceledListSlice<Dataset> datasetSlice = parcel.readParcelable(null); + final List<Dataset> datasets = (datasetSlice != null) ? datasetSlice.getList() : null; final int datasetCount = (datasets != null) ? datasets.size() : 0; for (int i = 0; i < datasetCount; i++) { builder.addDataset(datasets.get(i)); diff --git a/core/java/android/service/autofill/SaveInfo.java b/core/java/android/service/autofill/SaveInfo.java index 389341b0836e..f8a94d6ce467 100644 --- a/core/java/android/service/autofill/SaveInfo.java +++ b/core/java/android/service/autofill/SaveInfo.java @@ -118,6 +118,9 @@ import java.util.Arrays; * <li>The {@link AutofillValue} of at least one view (be it required or optional) has changed * (i.e., it's neither the same value passed in a {@link Dataset}, nor the initial value * presented in the view). + * <li>There is no {@link Dataset} in the last {@link FillResponse} that completely matches the + * screen state (i.e., all required and optional fields in the dataset have the same value as + * the fields in the screen). * <li>The user explicitly tapped the UI affordance asking to save data for autofill. * </ul> * diff --git a/core/java/android/service/notification/ZenModeConfig.java b/core/java/android/service/notification/ZenModeConfig.java index 6ba11b9954c4..7bec898ac347 100644 --- a/core/java/android/service/notification/ZenModeConfig.java +++ b/core/java/android/service/notification/ZenModeConfig.java @@ -712,7 +712,8 @@ public class ZenModeConfig implements Parcelable { int userHandle, boolean shortVersion) { final int num; String summary, line1, line2; - final CharSequence formattedTime = getFormattedTime(context, time, userHandle); + final CharSequence formattedTime = + getFormattedTime(context, time, isToday(time), userHandle); final Resources res = context.getResources(); if (minutes < 60) { // display as minutes @@ -738,33 +739,43 @@ public class ZenModeConfig implements Parcelable { // display as day/time summary = line1 = line2 = res.getString(R.string.zen_mode_until, formattedTime); } - final Uri id = toCountdownConditionId(time); + final Uri id = toCountdownConditionId(time, false); return new Condition(id, summary, line1, line2, 0, Condition.STATE_TRUE, Condition.FLAG_RELEVANT_NOW); } - public static Condition toNextAlarmCondition(Context context, long now, long alarm, + /** + * Converts countdown to alarm parameters into a condition with user facing summary + */ + public static Condition toNextAlarmCondition(Context context, long alarm, int userHandle) { - final CharSequence formattedTime = getFormattedTime(context, alarm, userHandle); + boolean isSameDay = isToday(alarm); + final CharSequence formattedTime = getFormattedTime(context, alarm, isSameDay, userHandle); final Resources res = context.getResources(); - final String line1 = res.getString(R.string.zen_mode_alarm, formattedTime); - final Uri id = toCountdownConditionId(alarm); + final String line1 = res.getString(R.string.zen_mode_until, formattedTime); + final Uri id = toCountdownConditionId(alarm, true); return new Condition(id, "", line1, "", 0, Condition.STATE_TRUE, Condition.FLAG_RELEVANT_NOW); } - private static CharSequence getFormattedTime(Context context, long time, int userHandle) { - String skeleton = "EEE " + (DateFormat.is24HourFormat(context, userHandle) ? "Hm" : "hma"); + private static CharSequence getFormattedTime(Context context, long time, boolean isSameDay, + int userHandle) { + String skeleton = (!isSameDay ? "EEE " : "") + + (DateFormat.is24HourFormat(context, userHandle) ? "Hm" : "hma"); + final String pattern = DateFormat.getBestDateTimePattern(Locale.getDefault(), skeleton); + return DateFormat.format(pattern, time); + } + + private static boolean isToday(long time) { GregorianCalendar now = new GregorianCalendar(); GregorianCalendar endTime = new GregorianCalendar(); endTime.setTimeInMillis(time); if (now.get(Calendar.YEAR) == endTime.get(Calendar.YEAR) && now.get(Calendar.MONTH) == endTime.get(Calendar.MONTH) && now.get(Calendar.DATE) == endTime.get(Calendar.DATE)) { - skeleton = DateFormat.is24HourFormat(context, userHandle) ? "Hm" : "hma"; + return true; } - final String pattern = DateFormat.getBestDateTimePattern(Locale.getDefault(), skeleton); - return DateFormat.format(pattern, time); + return false; } // ==== Built-in system conditions ==== @@ -775,17 +786,24 @@ public class ZenModeConfig implements Parcelable { public static final String COUNTDOWN_PATH = "countdown"; - public static Uri toCountdownConditionId(long time) { + public static final String IS_ALARM_PATH = "alarm"; + + /** + * Converts countdown condition parameters into a condition id. + */ + public static Uri toCountdownConditionId(long time, boolean alarm) { return new Uri.Builder().scheme(Condition.SCHEME) .authority(SYSTEM_AUTHORITY) .appendPath(COUNTDOWN_PATH) .appendPath(Long.toString(time)) + .appendPath(IS_ALARM_PATH) + .appendPath(Boolean.toString(alarm)) .build(); } public static long tryParseCountdownConditionId(Uri conditionId) { if (!Condition.isValidId(conditionId, SYSTEM_AUTHORITY)) return 0; - if (conditionId.getPathSegments().size() != 2 + if (conditionId.getPathSegments().size() < 2 || !COUNTDOWN_PATH.equals(conditionId.getPathSegments().get(0))) return 0; try { return Long.parseLong(conditionId.getPathSegments().get(1)); @@ -795,10 +813,32 @@ public class ZenModeConfig implements Parcelable { } } + /** + * Returns whether this condition is a countdown condition. + */ public static boolean isValidCountdownConditionId(Uri conditionId) { return tryParseCountdownConditionId(conditionId) != 0; } + /** + * Returns whether this condition is a countdown to an alarm. + */ + public static boolean isValidCountdownToAlarmConditionId(Uri conditionId) { + if (tryParseCountdownConditionId(conditionId) != 0) { + if (conditionId.getPathSegments().size() < 4 + || !IS_ALARM_PATH.equals(conditionId.getPathSegments().get(2))) { + return false; + } + try { + return Boolean.parseBoolean(conditionId.getPathSegments().get(3)); + } catch (RuntimeException e) { + Slog.w(TAG, "Error parsing countdown alarm condition: " + conditionId, e); + return false; + } + } + return false; + } + // ==== Built-in system condition: schedule ==== public static final String SCHEDULE_PATH = "schedule"; diff --git a/core/java/android/view/autofill/AutofillManager.java b/core/java/android/view/autofill/AutofillManager.java index 4f9f7e1b7bbf..e2ad1e06057b 100644 --- a/core/java/android/view/autofill/AutofillManager.java +++ b/core/java/android/view/autofill/AutofillManager.java @@ -694,8 +694,13 @@ public final class AutofillManager { /** * Called to indicate the current autofill context should be commited. * - * <p>For example, when a virtual view is rendering an {@code HTML} page with a form, it should - * call this method after the form is submitted and another page is rendered. + * <p>This method is typically called by {@link View Views} that manage virtual views; for + * example, when the view is rendering an {@code HTML} page with a form and virtual views + * that represent the HTML elements, it should call this method after the form is submitted and + * another page is rendered. + * + * <p><b>Note:</b> This method does not need to be called on regular application lifecycle + * methods such as {@link android.app.Activity#finish()}. */ public void commit() { if (!hasAutofillFeature()) { @@ -713,8 +718,13 @@ public final class AutofillManager { /** * Called to indicate the current autofill context should be cancelled. * - * <p>For example, when a virtual view is rendering an {@code HTML} page with a form, it should - * call this method if the user does not post the form but moves to another form in this page. + * <p>This method is typically called by {@link View Views} that manage virtual views; for + * example, when the view is rendering an {@code HTML} page with a form and virtual views + * that represent the HTML elements, it should call this method if the user does not post the + * form but moves to another form in this page. + * + * <p><b>Note:</b> This method does not need to be called on regular application lifecycle + * methods such as {@link android.app.Activity#finish()}. */ public void cancel() { if (!hasAutofillFeature()) { diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java index 333c44c5910d..da76731092d3 100644 --- a/core/java/android/webkit/WebView.java +++ b/core/java/android/webkit/WebView.java @@ -2289,7 +2289,6 @@ public class WebView extends AbsoluteLayout /** * Sets the {@link TextClassifier} for this WebView. - * @hide */ public void setTextClassifier(@Nullable TextClassifier textClassifier) { mProvider.setTextClassifier(textClassifier); @@ -2298,7 +2297,6 @@ public class WebView extends AbsoluteLayout /** * Returns the {@link TextClassifier} used by this WebView. * If no TextClassifier has been set, this WebView uses the default set by the system. - * @hide */ @NonNull public TextClassifier getTextClassifier() { diff --git a/core/java/android/widget/EdgeEffect.java b/core/java/android/widget/EdgeEffect.java index f9f5901a6651..98d8a13d68b5 100644 --- a/core/java/android/widget/EdgeEffect.java +++ b/core/java/android/widget/EdgeEffect.java @@ -59,8 +59,7 @@ public class EdgeEffect { // Time it will take in ms for a pulled glow to decay to partial strength before release private static final int PULL_DECAY_TIME = 2000; - private static final float MAX_ALPHA = 0.15f; - private static final float GLOW_ALPHA_START = .09f; + private static final float MAX_ALPHA = 0.5f; private static final float MAX_GLOW_SCALE = 2.f; @@ -76,7 +75,6 @@ public class EdgeEffect { private static final double ANGLE = Math.PI / 6; private static final float SIN = (float) Math.sin(ANGLE); private static final float COS = (float) Math.cos(ANGLE); - private static final float RADIUS_FACTOR = 0.6f; private float mGlowAlpha; private float mGlowScaleY; @@ -136,10 +134,10 @@ public class EdgeEffect { * @param height Effect height in pixels */ public void setSize(int width, int height) { - final float r = width * RADIUS_FACTOR / SIN; + final float r = width * 0.75f / SIN; final float y = COS * r; final float h = r - y; - final float or = height * RADIUS_FACTOR / SIN; + final float or = height * 0.75f / SIN; final float oy = COS * or; final float oh = or - oy; @@ -274,7 +272,7 @@ public class EdgeEffect { // The glow depends more on the velocity, and therefore starts out // nearly invisible. - mGlowAlphaStart = GLOW_ALPHA_START; + mGlowAlphaStart = 0.3f; mGlowScaleYStart = Math.max(mGlowScaleY, 0.f); diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java index 69edbbba1386..243e21500206 100644 --- a/core/java/android/widget/TextView.java +++ b/core/java/android/widget/TextView.java @@ -10320,7 +10320,16 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener return; } - setText(value.getTextValue(), mBufferType, true, 0); + final CharSequence autofilledValue = value.getTextValue(); + + // First autofill it... + setText(autofilledValue, mBufferType, true, 0); + + // ...then move cursor to the end. + final CharSequence text = getText(); + if ((text instanceof Spannable)) { + Selection.setSelection((Spannable) text, text.length()); + } } @Override diff --git a/core/java/com/android/internal/colorextraction/ColorExtractor.java b/core/java/com/android/internal/colorextraction/ColorExtractor.java index 477285e63f37..727412b03e28 100644 --- a/core/java/com/android/internal/colorextraction/ColorExtractor.java +++ b/core/java/com/android/internal/colorextraction/ColorExtractor.java @@ -45,12 +45,12 @@ public class ColorExtractor implements WallpaperManager.OnColorsChangedListener private static final String TAG = "ColorExtractor"; - private final SparseArray<GradientColors[]> mGradientColors; + protected final SparseArray<GradientColors[]> mGradientColors; private final ArrayList<WeakReference<OnColorsChangedListener>> mOnColorsChangedListeners; private final Context mContext; private final ExtractionType mExtractionType; - private WallpaperColors mSystemColors; - private WallpaperColors mLockColors; + protected WallpaperColors mSystemColors; + protected WallpaperColors mLockColors; public ColorExtractor(Context context) { this(context, new Tonal(context)); diff --git a/core/java/com/android/internal/util/AsyncChannel.java b/core/java/com/android/internal/util/AsyncChannel.java index 6fbfff8f381d..e760f2526701 100644 --- a/core/java/com/android/internal/util/AsyncChannel.java +++ b/core/java/com/android/internal/util/AsyncChannel.java @@ -402,7 +402,6 @@ public class AsyncChannel { // Initialize destination fields mDstMessenger = dstMessenger; - linkToDeathMonitor(); if (DBG) log("connected srcHandler to the dstMessenger X"); } diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml index d1754224bdc6..aa98bacede70 100644 --- a/core/res/AndroidManifest.xml +++ b/core/res/AndroidManifest.xml @@ -545,6 +545,7 @@ <protected-broadcast android:name="android.media.tv.action.PREVIEW_PROGRAM_BROWSABLE_DISABLED" /> <protected-broadcast android:name="android.media.tv.action.WATCH_NEXT_PROGRAM_BROWSABLE_DISABLED" /> <protected-broadcast android:name="android.media.tv.action.CHANNEL_BROWSABLE_REQUESTED" /> + <protected-broadcast android:name="com.android.server.InputMethodManagerService.SHOW_INPUT_METHOD_PICKER" /> <!-- ====================================================================== --> <!-- RUNTIME PERMISSIONS --> diff --git a/core/res/res/drawable-hdpi/toast_frame.9.png b/core/res/res/drawable-hdpi/toast_frame.9.png Binary files differnew file mode 100644 index 000000000000..a804a8a94564 --- /dev/null +++ b/core/res/res/drawable-hdpi/toast_frame.9.png diff --git a/core/res/res/drawable-ldpi/toast_frame.9.png b/core/res/res/drawable-ldpi/toast_frame.9.png Binary files differnew file mode 100644 index 000000000000..e64dc7575051 --- /dev/null +++ b/core/res/res/drawable-ldpi/toast_frame.9.png diff --git a/core/res/res/drawable-mdpi/toast_frame.9.png b/core/res/res/drawable-mdpi/toast_frame.9.png Binary files differnew file mode 100644 index 000000000000..778e4e67653d --- /dev/null +++ b/core/res/res/drawable-mdpi/toast_frame.9.png diff --git a/core/res/res/drawable-xhdpi/toast_frame.9.png b/core/res/res/drawable-xhdpi/toast_frame.9.png Binary files differnew file mode 100644 index 000000000000..77e69c72ab9a --- /dev/null +++ b/core/res/res/drawable-xhdpi/toast_frame.9.png diff --git a/core/res/res/drawable-xxhdpi/toast_frame.9.png b/core/res/res/drawable-xxhdpi/toast_frame.9.png Binary files differnew file mode 100644 index 000000000000..edecb6320de5 --- /dev/null +++ b/core/res/res/drawable-xxhdpi/toast_frame.9.png diff --git a/core/res/res/drawable/toast_frame.xml b/core/res/res/drawable/toast_frame.xml deleted file mode 100644 index 053b4f4fed5f..000000000000 --- a/core/res/res/drawable/toast_frame.xml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -/* Copyright 2017, The Android Open Source Project -** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. -*/ ---> -<shape xmlns:android="http://schemas.android.com/apk/res/android" - android:shape="rectangle"> - <!-- background is material_grey_300 with .9 alpha --> - <solid android:color="#E6E0E0E0" /> - <corners android:radius="22dp" /> -</shape> - diff --git a/core/res/res/layout/transient_notification.xml b/core/res/res/layout/transient_notification.xml index 2c08bf70491e..daa9faf70bb2 100644 --- a/core/res/res/layout/transient_notification.xml +++ b/core/res/res/layout/transient_notification.xml @@ -29,11 +29,9 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" - android:layout_marginHorizontal="24dp" - android:layout_marginVertical="15dp" android:layout_gravity="center_horizontal" android:textAppearance="@style/TextAppearance.Toast" - android:textColor="@color/primary_text_default_material_light" + android:textColor="@color/bright_foreground_dark" android:shadowColor="#BB000000" android:shadowRadius="2.75" /> diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml index 27d55ba2b3ed..46dbf046d12b 100644 --- a/core/res/res/values/config.xml +++ b/core/res/res/values/config.xml @@ -603,10 +603,6 @@ during voice calls --> <bool translatable="false" name="config_wifi_framework_enable_voice_call_sar_tx_power_limit">false</bool> - <!-- Integer indicating the value that framework needs to set the tx power to for meeting SAR requirements - during voice calls --> - <integer translatable="false" name="config_wifi_framework_voice_call_sar_tx_power_limit_in_dbm">0</integer> - <!-- Wifi driver supports batched scan --> <bool translatable="false" name="config_wifi_batched_scan_supported">false</bool> @@ -1889,10 +1885,12 @@ states. --> <bool name="config_dozeAlwaysOnDisplayAvailable">false</bool> - <!-- Whether the display hardware requires we go to the off state before transitioning - out of any doze states. --> - <bool name="config_displayTransitionOffAfterDoze">false</bool> + <!-- Whether the display blanks itself when transitioning from a doze to a non-doze state --> + <bool name="config_displayBlanksAfterDoze">false</bool> + <!-- True if the display hardware only has brightness buckets rather than a full range of + backlight values --> + <bool name="config_displayBrightnessBucketsInDoze">false</bool> <!-- Power Management: Specifies whether to decouple the auto-suspend state of the device from the display on/off state. diff --git a/core/res/res/values/dimens.xml b/core/res/res/values/dimens.xml index 12feba941103..4f769b65165d 100644 --- a/core/res/res/values/dimens.xml +++ b/core/res/res/values/dimens.xml @@ -30,7 +30,7 @@ will be displayed in the app launcher and elsewhere. --> <dimen name="app_icon_size">48dip</dimen> - <dimen name="toast_y_offset">24dp</dimen> + <dimen name="toast_y_offset">64dip</dimen> <!-- Height of the status bar --> <dimen name="status_bar_height">24dp</dimen> <!-- Height of the bottom navigation / system bar. --> diff --git a/core/res/res/values/styles.xml b/core/res/res/values/styles.xml index 4b0fe3f3a04c..71299d8b3434 100644 --- a/core/res/res/values/styles.xml +++ b/core/res/res/values/styles.xml @@ -956,8 +956,7 @@ please see styles_device_defaults.xml. </style> <style name="TextAppearance.Toast"> - <item name="fontFamily">sans-serif</item> - <item name="textSize">14sp</item> + <item name="fontFamily">sans-serif-condensed</item> </style> <style name="TextAppearance.Tooltip"> @@ -1493,6 +1492,12 @@ please see styles_device_defaults.xml. <item name="background">@drawable/autofill_dataset_picker_background</item> </style> + <!-- @hide --> + <style name="AutofillSaveAnimation"> + <item name="android:windowEnterAnimation">@anim/slide_in_up</item> + <item name="android:windowExitAnimation">@anim/slide_out_down</item> + </style> + <!-- The style for the container of media actions in a notification. --> <!-- @hide --> <style name="NotificationMediaActionContainer"> diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index a8aba0b44621..37f1daa2193b 100644 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -315,7 +315,6 @@ <java-symbol type="bool" name="config_wifi_framework_enable_associated_network_selection" /> <java-symbol type="bool" name="config_wifi_only_link_same_credential_configurations" /> <java-symbol type="bool" name="config_wifi_framework_enable_voice_call_sar_tx_power_limit" /> - <java-symbol type="integer" name="config_wifi_framework_voice_call_sar_tx_power_limit_in_dbm" /> <java-symbol type="bool" name="config_wifi_enable_disconnection_debounce" /> <java-symbol type="bool" name="config_wifi_revert_country_code_on_cellular_loss" /> <java-symbol type="bool" name="config_wifi_enable_wifi_firmware_debugging" /> @@ -2919,6 +2918,7 @@ <java-symbol type="string" name="autofill_save_type_email_address" /> <java-symbol type="drawable" name="autofill_dataset_picker_background" /> <java-symbol type="style" name="AutofillDatasetPicker" /> + <java-symbol type="style" name="AutofillSaveAnimation" /> <java-symbol type="dimen" name="autofill_dataset_picker_max_size"/> <java-symbol type="dimen" name="autofill_save_custom_subtitle_max_height"/> @@ -3039,7 +3039,8 @@ <java-symbol type="bool" name="config_handleVolumeKeysInWindowManager" /> <java-symbol type="integer" name="config_inCallNotificationVolumeRelative" /> <java-symbol type="bool" name="config_dozeAlwaysOnDisplayAvailable" /> - <java-symbol type="bool" name="config_displayTransitionOffAfterDoze" /> + <java-symbol type="bool" name="config_displayBlanksAfterDoze" /> + <java-symbol type="bool" name="config_displayBrightnessBucketsInDoze" /> <java-symbol type="integer" name="config_storageManagerDaystoRetainDefault" /> <java-symbol type="string" name="config_headlineFontFamily" /> <java-symbol type="string" name="config_headlineFontFamilyLight" /> diff --git a/packages/SettingsLib/res/values-af/strings.xml b/packages/SettingsLib/res/values-af/strings.xml index 2cb292e1a814..c174d5cc1d41 100644 --- a/packages/SettingsLib/res/values-af/strings.xml +++ b/packages/SettingsLib/res/values-af/strings.xml @@ -40,8 +40,7 @@ <string name="connected_via_passpoint" msgid="2826205693803088747">"Gekoppel via %1$s"</string> <string name="available_via_passpoint" msgid="1617440946846329613">"Beskikbaar via %1$s"</string> <string name="wifi_connected_no_internet" msgid="3149853966840874992">"Gekoppel, geen internet nie"</string> - <!-- no translation found for wifi_ap_unable_to_handle_new_sta (5348824313514404541) --> - <skip /> + <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Toegangspunt is tydelik vol"</string> <string name="speed_label_very_slow" msgid="1867055264243608530">"Baie stadig"</string> <string name="speed_label_slow" msgid="813109590815810235">"Stadig"</string> <string name="speed_label_okay" msgid="2331665440671174858">"OK"</string> @@ -104,10 +103,8 @@ <string name="accessibility_wifi_two_bars" msgid="3569851234710034416">"Wi-Fi twee stawe."</string> <string name="accessibility_wifi_three_bars" msgid="8134185644861380311">"Wi-Fi drie stawe."</string> <string name="accessibility_wifi_signal_full" msgid="7061045677694702">"Wi-Fi-sein vol."</string> - <!-- no translation found for accessibility_wifi_security_type_none (1223747559986205423) --> - <skip /> - <!-- no translation found for accessibility_wifi_security_type_secured (862921720418885331) --> - <skip /> + <string name="accessibility_wifi_security_type_none" msgid="1223747559986205423">"Oop netwerk"</string> + <string name="accessibility_wifi_security_type_secured" msgid="862921720418885331">"Veilige netwerk"</string> <string name="process_kernel_label" msgid="3916858646836739323">"Android-bedryfstelsel"</string> <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"Verwyderde programme"</string> <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"Verwyderde programme en gebruikers"</string> diff --git a/packages/SettingsLib/res/values-am/strings.xml b/packages/SettingsLib/res/values-am/strings.xml index 8d220e2ea95e..e1f61079c3c7 100644 --- a/packages/SettingsLib/res/values-am/strings.xml +++ b/packages/SettingsLib/res/values-am/strings.xml @@ -40,8 +40,7 @@ <string name="connected_via_passpoint" msgid="2826205693803088747">"በ%1$s በኩል መገናኘት"</string> <string name="available_via_passpoint" msgid="1617440946846329613">"በ%1$s በኩል የሚገኝ"</string> <string name="wifi_connected_no_internet" msgid="3149853966840874992">"ተገናኝቷል፣ ምንም በይነመረብ የለም"</string> - <!-- no translation found for wifi_ap_unable_to_handle_new_sta (5348824313514404541) --> - <skip /> + <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"የመዳረሻ ነጥብ ለጊዜው ሞልቷል"</string> <string name="speed_label_very_slow" msgid="1867055264243608530">"በጣም ቀርፋፋ"</string> <string name="speed_label_slow" msgid="813109590815810235">"አዘግይ"</string> <string name="speed_label_okay" msgid="2331665440671174858">"እሺ"</string> @@ -104,10 +103,8 @@ <string name="accessibility_wifi_two_bars" msgid="3569851234710034416">"ሁለት የWiFi አሞሌዎች።"</string> <string name="accessibility_wifi_three_bars" msgid="8134185644861380311">"ሦስት የWiFi አሞሌዎች።"</string> <string name="accessibility_wifi_signal_full" msgid="7061045677694702">"የWiFi ምልክት ሙሉ ነው።"</string> - <!-- no translation found for accessibility_wifi_security_type_none (1223747559986205423) --> - <skip /> - <!-- no translation found for accessibility_wifi_security_type_secured (862921720418885331) --> - <skip /> + <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 ስርዓተ ክወና"</string> <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"የተወገዱ መተግበሪያዎች"</string> <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"የተወገዱ መተግበሪያዎች እና ተጠቃሚዎች"</string> diff --git a/packages/SettingsLib/res/values-ar/strings.xml b/packages/SettingsLib/res/values-ar/strings.xml index f076d5680e88..c7d825047cb5 100644 --- a/packages/SettingsLib/res/values-ar/strings.xml +++ b/packages/SettingsLib/res/values-ar/strings.xml @@ -40,8 +40,7 @@ <string name="connected_via_passpoint" msgid="2826205693803088747">"تم الاتصال عبر %1$s"</string> <string name="available_via_passpoint" msgid="1617440946846329613">"متوفرة عبر %1$s"</string> <string name="wifi_connected_no_internet" msgid="3149853966840874992">"متصلة، ولا يتوفر إنترنت"</string> - <!-- no translation found for wifi_ap_unable_to_handle_new_sta (5348824313514404541) --> - <skip /> + <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"نقطة الدخول ممتلئة مؤقتًا"</string> <string name="speed_label_very_slow" msgid="1867055264243608530">"بطيئة جدًا"</string> <string name="speed_label_slow" msgid="813109590815810235">"بطيئة"</string> <string name="speed_label_okay" msgid="2331665440671174858">"موافق"</string> @@ -104,10 +103,8 @@ <string name="accessibility_wifi_two_bars" msgid="3569851234710034416">"إشارة Wi-Fi تتكون من شريطين."</string> <string name="accessibility_wifi_three_bars" msgid="8134185644861380311">"إشارة Wi-Fi تتكون من ثلاثة أشرطة."</string> <string name="accessibility_wifi_signal_full" msgid="7061045677694702">"إشارة Wi-Fi كاملة."</string> - <!-- no translation found for accessibility_wifi_security_type_none (1223747559986205423) --> - <skip /> - <!-- no translation found for accessibility_wifi_security_type_secured (862921720418885331) --> - <skip /> + <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"</string> <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"التطبيقات المزالة"</string> <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"التطبيقات والمستخدمون الذين تمت إزالتهم"</string> diff --git a/packages/SettingsLib/res/values-az/strings.xml b/packages/SettingsLib/res/values-az/strings.xml index 8c5206b1c075..34736c649ba8 100644 --- a/packages/SettingsLib/res/values-az/strings.xml +++ b/packages/SettingsLib/res/values-az/strings.xml @@ -40,8 +40,7 @@ <string name="connected_via_passpoint" msgid="2826205693803088747">"%1$s vasitəsilə qoşuludur"</string> <string name="available_via_passpoint" msgid="1617440946846329613">"%1$s vasitəsilə əlçatandır"</string> <string name="wifi_connected_no_internet" msgid="3149853966840874992">"Qoşuludur, internet yoxdur"</string> - <!-- no translation found for wifi_ap_unable_to_handle_new_sta (5348824313514404541) --> - <skip /> + <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Giriş nöqtəsi müvəqqəti olaraq doludur"</string> <string name="speed_label_very_slow" msgid="1867055264243608530">"Çox Yavaş"</string> <string name="speed_label_slow" msgid="813109590815810235">"Yavaş"</string> <string name="speed_label_okay" msgid="2331665440671174858">"OK"</string> @@ -104,10 +103,8 @@ <string name="accessibility_wifi_two_bars" msgid="3569851234710034416">"Wifi iki xətdir."</string> <string name="accessibility_wifi_three_bars" msgid="8134185644861380311">"Wifi üç xətdir."</string> <string name="accessibility_wifi_signal_full" msgid="7061045677694702">"Wifi siqnalı tamdır."</string> - <!-- no translation found for accessibility_wifi_security_type_none (1223747559986205423) --> - <skip /> - <!-- no translation found for accessibility_wifi_security_type_secured (862921720418885331) --> - <skip /> + <string name="accessibility_wifi_security_type_none" msgid="1223747559986205423">"Açıq şəbəkə"</string> + <string name="accessibility_wifi_security_type_secured" msgid="862921720418885331">"Təhlükəsiz şəbəkə"</string> <string name="process_kernel_label" msgid="3916858646836739323">"Android OS"</string> <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"Silinmiş tətbiqlər"</string> <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"Tətbiqləri və istifadəçiləri silin"</string> diff --git a/packages/SettingsLib/res/values-b+sr+Latn/strings.xml b/packages/SettingsLib/res/values-b+sr+Latn/strings.xml index b2cf7810ef1d..bbffe8f94e17 100644 --- a/packages/SettingsLib/res/values-b+sr+Latn/strings.xml +++ b/packages/SettingsLib/res/values-b+sr+Latn/strings.xml @@ -40,8 +40,7 @@ <string name="connected_via_passpoint" msgid="2826205693803088747">"Veza je uspostavljena preko pristupne tačke %1$s"</string> <string name="available_via_passpoint" msgid="1617440946846329613">"Dostupna je preko pristupne tačke %1$s"</string> <string name="wifi_connected_no_internet" msgid="3149853966840874992">"Veza je uspostavljena, nema interneta"</string> - <!-- no translation found for wifi_ap_unable_to_handle_new_sta (5348824313514404541) --> - <skip /> + <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Pristupna tačka je privremeno zauzeta"</string> <string name="speed_label_very_slow" msgid="1867055264243608530">"Veoma spora"</string> <string name="speed_label_slow" msgid="813109590815810235">"Spora"</string> <string name="speed_label_okay" msgid="2331665440671174858">"Potvrdi"</string> @@ -104,10 +103,8 @@ <string name="accessibility_wifi_two_bars" msgid="3569851234710034416">"Wi-Fi signal ima dve crte."</string> <string name="accessibility_wifi_three_bars" msgid="8134185644861380311">"Wi-Fi signal ima tri crte."</string> <string name="accessibility_wifi_signal_full" msgid="7061045677694702">"Wi-Fi signal je najjači."</string> - <!-- no translation found for accessibility_wifi_security_type_none (1223747559986205423) --> - <skip /> - <!-- no translation found for accessibility_wifi_security_type_secured (862921720418885331) --> - <skip /> + <string name="accessibility_wifi_security_type_none" msgid="1223747559986205423">"Otvorena mreža"</string> + <string name="accessibility_wifi_security_type_secured" msgid="862921720418885331">"Bezbedna mreža"</string> <string name="process_kernel_label" msgid="3916858646836739323">"Android OS"</string> <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"Uklonjene aplikacije"</string> <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"Uklonjene aplikacije i korisnici"</string> diff --git a/packages/SettingsLib/res/values-be/strings.xml b/packages/SettingsLib/res/values-be/strings.xml index e7030b3238c7..aaf7e9a2f0ca 100644 --- a/packages/SettingsLib/res/values-be/strings.xml +++ b/packages/SettingsLib/res/values-be/strings.xml @@ -40,8 +40,7 @@ <string name="connected_via_passpoint" msgid="2826205693803088747">"Падлучана праз %1$s"</string> <string name="available_via_passpoint" msgid="1617440946846329613">"Даступна праз %1$s"</string> <string name="wifi_connected_no_internet" msgid="3149853966840874992">"Падлучана, няма інтэрнэту"</string> - <!-- no translation found for wifi_ap_unable_to_handle_new_sta (5348824313514404541) --> - <skip /> + <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Пункт доступу часова заняты"</string> <string name="speed_label_very_slow" msgid="1867055264243608530">"Вельмі павольная"</string> <string name="speed_label_slow" msgid="813109590815810235">"Павольная"</string> <string name="speed_label_okay" msgid="2331665440671174858">"ОК"</string> @@ -104,10 +103,8 @@ <string name="accessibility_wifi_two_bars" msgid="3569851234710034416">"Два слупкi Wi-Fi."</string> <string name="accessibility_wifi_three_bars" msgid="8134185644861380311">"Тры слупкi Wi-Fi."</string> <string name="accessibility_wifi_signal_full" msgid="7061045677694702">"Поўны сігнал Wi-Fi."</string> - <!-- no translation found for accessibility_wifi_security_type_none (1223747559986205423) --> - <skip /> - <!-- no translation found for accessibility_wifi_security_type_secured (862921720418885331) --> - <skip /> + <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"</string> <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"Выдаленыя прыкладанні"</string> <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"Выдаленыя прыкладанні і карыстальнiкi"</string> diff --git a/packages/SettingsLib/res/values-bg/strings.xml b/packages/SettingsLib/res/values-bg/strings.xml index 33f801783b62..628234cea488 100644 --- a/packages/SettingsLib/res/values-bg/strings.xml +++ b/packages/SettingsLib/res/values-bg/strings.xml @@ -40,8 +40,7 @@ <string name="connected_via_passpoint" msgid="2826205693803088747">"Установена е връзка през „%1$s“"</string> <string name="available_via_passpoint" msgid="1617440946846329613">"Мрежата е достъпна през „%1$s“"</string> <string name="wifi_connected_no_internet" msgid="3149853966840874992">"Установена е връзка – няма достъп до интернет"</string> - <!-- no translation found for wifi_ap_unable_to_handle_new_sta (5348824313514404541) --> - <skip /> + <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Точката за достъп временно е пълна"</string> <string name="speed_label_very_slow" msgid="1867055264243608530">"Много бавна"</string> <string name="speed_label_slow" msgid="813109590815810235">"Бавна"</string> <string name="speed_label_okay" msgid="2331665440671174858">"ОK"</string> @@ -104,10 +103,8 @@ <string name="accessibility_wifi_two_bars" msgid="3569851234710034416">"Wi-Fi е с две чертички."</string> <string name="accessibility_wifi_three_bars" msgid="8134185644861380311">"Wi-Fi е с три чертички."</string> <string name="accessibility_wifi_signal_full" msgid="7061045677694702">"Сигналът за Wi-Fi е пълен."</string> - <!-- no translation found for accessibility_wifi_security_type_none (1223747559986205423) --> - <skip /> - <!-- no translation found for accessibility_wifi_security_type_secured (862921720418885331) --> - <skip /> + <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 (ОС)"</string> <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"Премахнати приложения"</string> <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"Премахнати приложения и потребители"</string> diff --git a/packages/SettingsLib/res/values-bn/strings.xml b/packages/SettingsLib/res/values-bn/strings.xml index 1fcb669348fa..6c8ff8ceb9dd 100644 --- a/packages/SettingsLib/res/values-bn/strings.xml +++ b/packages/SettingsLib/res/values-bn/strings.xml @@ -40,8 +40,7 @@ <string name="connected_via_passpoint" msgid="2826205693803088747">"%1$s মাধ্যমে সংযুক্ত হয়েছে"</string> <string name="available_via_passpoint" msgid="1617440946846329613">"%1$s এর মাধ্যমে উপলব্ধ"</string> <string name="wifi_connected_no_internet" msgid="3149853966840874992">"সংযুক্ত, ইন্টারনেট নেই"</string> - <!-- no translation found for wifi_ap_unable_to_handle_new_sta (5348824313514404541) --> - <skip /> + <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"এই মুহূর্তে অ্যাক্সেস পয়েন্টের কোনও কানেকশন ফাঁকা নেই"</string> <string name="speed_label_very_slow" msgid="1867055264243608530">"খুব ধীরে"</string> <string name="speed_label_slow" msgid="813109590815810235">"ধীরে"</string> <string name="speed_label_okay" msgid="2331665440671174858">"ঠিক আছে"</string> @@ -104,10 +103,8 @@ <string name="accessibility_wifi_two_bars" msgid="3569851234710034416">"ওয়াই ফাই এ দুইটি দণ্ড৷"</string> <string name="accessibility_wifi_three_bars" msgid="8134185644861380311">"ওয়াই ফাই এ তিনটি দণ্ড৷"</string> <string name="accessibility_wifi_signal_full" msgid="7061045677694702">"ওয়াই ফাই এ সম্পূর্ণ সিগন্যাল৷"</string> - <!-- no translation found for accessibility_wifi_security_type_none (1223747559986205423) --> - <skip /> - <!-- no translation found for accessibility_wifi_security_type_secured (862921720418885331) --> - <skip /> + <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> diff --git a/packages/SettingsLib/res/values-bs/strings.xml b/packages/SettingsLib/res/values-bs/strings.xml index d52f144f0694..e6d62d3d41e8 100644 --- a/packages/SettingsLib/res/values-bs/strings.xml +++ b/packages/SettingsLib/res/values-bs/strings.xml @@ -40,8 +40,7 @@ <string name="connected_via_passpoint" msgid="2826205693803088747">"Povezani preko %1$s"</string> <string name="available_via_passpoint" msgid="1617440946846329613">"Dostupan preko %1$s"</string> <string name="wifi_connected_no_internet" msgid="3149853966840874992">"Povezano. Nema interneta"</string> - <!-- no translation found for wifi_ap_unable_to_handle_new_sta (5348824313514404541) --> - <skip /> + <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Pristupna tačka je privremeno puna"</string> <string name="speed_label_very_slow" msgid="1867055264243608530">"Veoma sporo"</string> <string name="speed_label_slow" msgid="813109590815810235">"Sporo"</string> <string name="speed_label_okay" msgid="2331665440671174858">"UREDU"</string> @@ -104,10 +103,8 @@ <string name="accessibility_wifi_two_bars" msgid="3569851234710034416">"Wi-Fi dvije crtice."</string> <string name="accessibility_wifi_three_bars" msgid="8134185644861380311">"Wi-Fi tri crtice."</string> <string name="accessibility_wifi_signal_full" msgid="7061045677694702">"Wi-Fi puni signal."</string> - <!-- no translation found for accessibility_wifi_security_type_none (1223747559986205423) --> - <skip /> - <!-- no translation found for accessibility_wifi_security_type_secured (862921720418885331) --> - <skip /> + <string name="accessibility_wifi_security_type_none" msgid="1223747559986205423">"Otvorena mreža"</string> + <string name="accessibility_wifi_security_type_secured" msgid="862921720418885331">"Sigurna mreža"</string> <string name="process_kernel_label" msgid="3916858646836739323">"Android OS"</string> <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"Uklonjene aplikacije"</string> <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"Uklonjene aplikacije i korisnici"</string> diff --git a/packages/SettingsLib/res/values-ca/strings.xml b/packages/SettingsLib/res/values-ca/strings.xml index 8691bd877a6a..75f464d78bf9 100644 --- a/packages/SettingsLib/res/values-ca/strings.xml +++ b/packages/SettingsLib/res/values-ca/strings.xml @@ -40,8 +40,7 @@ <string name="connected_via_passpoint" msgid="2826205693803088747">"Connectada mitjançant %1$s"</string> <string name="available_via_passpoint" msgid="1617440946846329613">"Disponible mitjançant %1$s"</string> <string name="wifi_connected_no_internet" msgid="3149853966840874992">"Connectada, sense Internet"</string> - <!-- no translation found for wifi_ap_unable_to_handle_new_sta (5348824313514404541) --> - <skip /> + <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"El punt d\'accés està temporalment ple"</string> <string name="speed_label_very_slow" msgid="1867055264243608530">"Molt lenta"</string> <string name="speed_label_slow" msgid="813109590815810235">"Lenta"</string> <string name="speed_label_okay" msgid="2331665440671174858">"Correcta"</string> @@ -104,10 +103,8 @@ <string name="accessibility_wifi_two_bars" msgid="3569851234710034416">"Senyal Wi-Fi: dues barres."</string> <string name="accessibility_wifi_three_bars" msgid="8134185644861380311">"Senyal Wi-Fi: tres barres."</string> <string name="accessibility_wifi_signal_full" msgid="7061045677694702">"Senyal Wi-Fi: complet."</string> - <!-- no translation found for accessibility_wifi_security_type_none (1223747559986205423) --> - <skip /> - <!-- no translation found for accessibility_wifi_security_type_secured (862921720418885331) --> - <skip /> + <string name="accessibility_wifi_security_type_none" msgid="1223747559986205423">"Xarxa oberta"</string> + <string name="accessibility_wifi_security_type_secured" msgid="862921720418885331">"Xarxa segura"</string> <string name="process_kernel_label" msgid="3916858646836739323">"Android OS"</string> <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"Aplicacions eliminades"</string> <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"Aplicacions i usuaris eliminats"</string> diff --git a/packages/SettingsLib/res/values-cs/strings.xml b/packages/SettingsLib/res/values-cs/strings.xml index f4c40c746d7b..7af97e18ca0d 100644 --- a/packages/SettingsLib/res/values-cs/strings.xml +++ b/packages/SettingsLib/res/values-cs/strings.xml @@ -40,8 +40,7 @@ <string name="connected_via_passpoint" msgid="2826205693803088747">"Připojeno prostřednictvím %1$s"</string> <string name="available_via_passpoint" msgid="1617440946846329613">"Dostupné prostřednictvím %1$s"</string> <string name="wifi_connected_no_internet" msgid="3149853966840874992">"Připojeno, není k dispozici internet"</string> - <!-- no translation found for wifi_ap_unable_to_handle_new_sta (5348824313514404541) --> - <skip /> + <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Přístupový bod je dočasně zaplněn"</string> <string name="speed_label_very_slow" msgid="1867055264243608530">"Velmi pomalá"</string> <string name="speed_label_slow" msgid="813109590815810235">"Pomalá"</string> <string name="speed_label_okay" msgid="2331665440671174858">"OK"</string> @@ -104,10 +103,8 @@ <string name="accessibility_wifi_two_bars" msgid="3569851234710034416">"Wi-Fi – dvě čárky."</string> <string name="accessibility_wifi_three_bars" msgid="8134185644861380311">"Wi-Fi – tři čárky."</string> <string name="accessibility_wifi_signal_full" msgid="7061045677694702">"Wi-Fi – plný signál."</string> - <!-- no translation found for accessibility_wifi_security_type_none (1223747559986205423) --> - <skip /> - <!-- no translation found for accessibility_wifi_security_type_secured (862921720418885331) --> - <skip /> + <string name="accessibility_wifi_security_type_none" msgid="1223747559986205423">"Nezabezpečená síť"</string> + <string name="accessibility_wifi_security_type_secured" msgid="862921720418885331">"Zabezpečená síť"</string> <string name="process_kernel_label" msgid="3916858646836739323">"OS Android"</string> <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"Odebrané aplikace"</string> <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"Odebrané aplikace a odebraní uživatelé"</string> diff --git a/packages/SettingsLib/res/values-da/strings.xml b/packages/SettingsLib/res/values-da/strings.xml index f5a41919dc64..948096c11505 100644 --- a/packages/SettingsLib/res/values-da/strings.xml +++ b/packages/SettingsLib/res/values-da/strings.xml @@ -40,8 +40,7 @@ <string name="connected_via_passpoint" msgid="2826205693803088747">"Tilsluttet via %1$s"</string> <string name="available_via_passpoint" msgid="1617440946846329613">"Tilgængelig via %1$s"</string> <string name="wifi_connected_no_internet" msgid="3149853966840874992">"Tilsluttet – intet internet"</string> - <!-- no translation found for wifi_ap_unable_to_handle_new_sta (5348824313514404541) --> - <skip /> + <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Adgangspunktet er midlertidigt fuldt"</string> <string name="speed_label_very_slow" msgid="1867055264243608530">"Meget langsom"</string> <string name="speed_label_slow" msgid="813109590815810235">"Langsom"</string> <string name="speed_label_okay" msgid="2331665440671174858">"OK"</string> @@ -104,10 +103,8 @@ <string name="accessibility_wifi_two_bars" msgid="3569851234710034416">"Wi-Fi har to bjælker."</string> <string name="accessibility_wifi_three_bars" msgid="8134185644861380311">"Wi-Fi har tre bjælker."</string> <string name="accessibility_wifi_signal_full" msgid="7061045677694702">"Wi-Fi har fuldt signal."</string> - <!-- no translation found for accessibility_wifi_security_type_none (1223747559986205423) --> - <skip /> - <!-- no translation found for accessibility_wifi_security_type_secured (862921720418885331) --> - <skip /> + <string name="accessibility_wifi_security_type_none" msgid="1223747559986205423">"Åbent netværk"</string> + <string name="accessibility_wifi_security_type_secured" msgid="862921720418885331">"Sikkert netværk"</string> <string name="process_kernel_label" msgid="3916858646836739323">"Android OS"</string> <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"Fjernede apps"</string> <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"Fjernede apps og brugere"</string> diff --git a/packages/SettingsLib/res/values-de/strings.xml b/packages/SettingsLib/res/values-de/strings.xml index 4e0157421e6a..40c5e7abd90f 100644 --- a/packages/SettingsLib/res/values-de/strings.xml +++ b/packages/SettingsLib/res/values-de/strings.xml @@ -40,8 +40,7 @@ <string name="connected_via_passpoint" msgid="2826205693803088747">"Über %1$s verbunden"</string> <string name="available_via_passpoint" msgid="1617440946846329613">"Verfügbar über %1$s"</string> <string name="wifi_connected_no_internet" msgid="3149853966840874992">"Verbunden, kein Internet"</string> - <!-- no translation found for wifi_ap_unable_to_handle_new_sta (5348824313514404541) --> - <skip /> + <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Zugangspunkt vorübergehend voll belegt"</string> <string name="speed_label_very_slow" msgid="1867055264243608530">"Sehr langsam"</string> <string name="speed_label_slow" msgid="813109590815810235">"Langsam"</string> <string name="speed_label_okay" msgid="2331665440671174858">"OK"</string> @@ -104,10 +103,8 @@ <string name="accessibility_wifi_two_bars" msgid="3569851234710034416">"WLAN: zwei Balken"</string> <string name="accessibility_wifi_three_bars" msgid="8134185644861380311">"WLAN: drei Balken"</string> <string name="accessibility_wifi_signal_full" msgid="7061045677694702">"WLAN: volle Signalstärke"</string> - <!-- no translation found for accessibility_wifi_security_type_none (1223747559986205423) --> - <skip /> - <!-- no translation found for accessibility_wifi_security_type_secured (862921720418885331) --> - <skip /> + <string name="accessibility_wifi_security_type_none" msgid="1223747559986205423">"Offenes Netzwerk"</string> + <string name="accessibility_wifi_security_type_secured" msgid="862921720418885331">"Sicheres Netzwerk"</string> <string name="process_kernel_label" msgid="3916858646836739323">"Android OS"</string> <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"Entfernte Apps"</string> <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"Entfernte Apps und Nutzer"</string> diff --git a/packages/SettingsLib/res/values-el/strings.xml b/packages/SettingsLib/res/values-el/strings.xml index 22d25582908e..13072def68ba 100644 --- a/packages/SettingsLib/res/values-el/strings.xml +++ b/packages/SettingsLib/res/values-el/strings.xml @@ -40,8 +40,7 @@ <string name="connected_via_passpoint" msgid="2826205693803088747">"Συνδέθηκε μέσω %1$s"</string> <string name="available_via_passpoint" msgid="1617440946846329613">"Διαθέσιμο μέσω %1$s"</string> <string name="wifi_connected_no_internet" msgid="3149853966840874992">"Συνδέθηκε, χωρίς διαδίκτυο"</string> - <!-- no translation found for wifi_ap_unable_to_handle_new_sta (5348824313514404541) --> - <skip /> + <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Το σημείο πρόσβασης είναι προσωρινά πλήρες"</string> <string name="speed_label_very_slow" msgid="1867055264243608530">"Πολύ αργή"</string> <string name="speed_label_slow" msgid="813109590815810235">"Αργή"</string> <string name="speed_label_okay" msgid="2331665440671174858">"ΟΚ"</string> @@ -104,10 +103,8 @@ <string name="accessibility_wifi_two_bars" msgid="3569851234710034416">"Δύο γραμμές Wi-Fi."</string> <string name="accessibility_wifi_three_bars" msgid="8134185644861380311">"Τρεις γραμμές Wi-Fi."</string> <string name="accessibility_wifi_signal_full" msgid="7061045677694702">"Άριστο σήμα Wi-Fi."</string> - <!-- no translation found for accessibility_wifi_security_type_none (1223747559986205423) --> - <skip /> - <!-- no translation found for accessibility_wifi_security_type_secured (862921720418885331) --> - <skip /> + <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"</string> <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"Εφαρμογές που καταργήθηκαν"</string> <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"Εφαρμογές και χρήστες που έχουν καταργηθεί"</string> diff --git a/packages/SettingsLib/res/values-en-rAU/strings.xml b/packages/SettingsLib/res/values-en-rAU/strings.xml index 11ef6809589f..768dc8dfb1a9 100644 --- a/packages/SettingsLib/res/values-en-rAU/strings.xml +++ b/packages/SettingsLib/res/values-en-rAU/strings.xml @@ -40,8 +40,7 @@ <string name="connected_via_passpoint" msgid="2826205693803088747">"Connected via %1$s"</string> <string name="available_via_passpoint" msgid="1617440946846329613">"Available via %1$s"</string> <string name="wifi_connected_no_internet" msgid="3149853966840874992">"Connected, no Internet"</string> - <!-- no translation found for wifi_ap_unable_to_handle_new_sta (5348824313514404541) --> - <skip /> + <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Access point temporarily full"</string> <string name="speed_label_very_slow" msgid="1867055264243608530">"Very slow"</string> <string name="speed_label_slow" msgid="813109590815810235">"Slow"</string> <string name="speed_label_okay" msgid="2331665440671174858">"OK"</string> @@ -104,10 +103,8 @@ <string name="accessibility_wifi_two_bars" msgid="3569851234710034416">"Wi-Fi two bars."</string> <string name="accessibility_wifi_three_bars" msgid="8134185644861380311">"Wi-Fi three bars."</string> <string name="accessibility_wifi_signal_full" msgid="7061045677694702">"Wi-Fi signal full."</string> - <!-- no translation found for accessibility_wifi_security_type_none (1223747559986205423) --> - <skip /> - <!-- no translation found for accessibility_wifi_security_type_secured (862921720418885331) --> - <skip /> + <string name="accessibility_wifi_security_type_none" msgid="1223747559986205423">"Open network"</string> + <string name="accessibility_wifi_security_type_secured" msgid="862921720418885331">"Secure network"</string> <string name="process_kernel_label" msgid="3916858646836739323">"Android OS"</string> <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"Removed apps"</string> <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"Removed apps and users"</string> diff --git a/packages/SettingsLib/res/values-en-rGB/strings.xml b/packages/SettingsLib/res/values-en-rGB/strings.xml index 11ef6809589f..768dc8dfb1a9 100644 --- a/packages/SettingsLib/res/values-en-rGB/strings.xml +++ b/packages/SettingsLib/res/values-en-rGB/strings.xml @@ -40,8 +40,7 @@ <string name="connected_via_passpoint" msgid="2826205693803088747">"Connected via %1$s"</string> <string name="available_via_passpoint" msgid="1617440946846329613">"Available via %1$s"</string> <string name="wifi_connected_no_internet" msgid="3149853966840874992">"Connected, no Internet"</string> - <!-- no translation found for wifi_ap_unable_to_handle_new_sta (5348824313514404541) --> - <skip /> + <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Access point temporarily full"</string> <string name="speed_label_very_slow" msgid="1867055264243608530">"Very slow"</string> <string name="speed_label_slow" msgid="813109590815810235">"Slow"</string> <string name="speed_label_okay" msgid="2331665440671174858">"OK"</string> @@ -104,10 +103,8 @@ <string name="accessibility_wifi_two_bars" msgid="3569851234710034416">"Wi-Fi two bars."</string> <string name="accessibility_wifi_three_bars" msgid="8134185644861380311">"Wi-Fi three bars."</string> <string name="accessibility_wifi_signal_full" msgid="7061045677694702">"Wi-Fi signal full."</string> - <!-- no translation found for accessibility_wifi_security_type_none (1223747559986205423) --> - <skip /> - <!-- no translation found for accessibility_wifi_security_type_secured (862921720418885331) --> - <skip /> + <string name="accessibility_wifi_security_type_none" msgid="1223747559986205423">"Open network"</string> + <string name="accessibility_wifi_security_type_secured" msgid="862921720418885331">"Secure network"</string> <string name="process_kernel_label" msgid="3916858646836739323">"Android OS"</string> <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"Removed apps"</string> <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"Removed apps and users"</string> diff --git a/packages/SettingsLib/res/values-en-rIN/strings.xml b/packages/SettingsLib/res/values-en-rIN/strings.xml index 11ef6809589f..768dc8dfb1a9 100644 --- a/packages/SettingsLib/res/values-en-rIN/strings.xml +++ b/packages/SettingsLib/res/values-en-rIN/strings.xml @@ -40,8 +40,7 @@ <string name="connected_via_passpoint" msgid="2826205693803088747">"Connected via %1$s"</string> <string name="available_via_passpoint" msgid="1617440946846329613">"Available via %1$s"</string> <string name="wifi_connected_no_internet" msgid="3149853966840874992">"Connected, no Internet"</string> - <!-- no translation found for wifi_ap_unable_to_handle_new_sta (5348824313514404541) --> - <skip /> + <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Access point temporarily full"</string> <string name="speed_label_very_slow" msgid="1867055264243608530">"Very slow"</string> <string name="speed_label_slow" msgid="813109590815810235">"Slow"</string> <string name="speed_label_okay" msgid="2331665440671174858">"OK"</string> @@ -104,10 +103,8 @@ <string name="accessibility_wifi_two_bars" msgid="3569851234710034416">"Wi-Fi two bars."</string> <string name="accessibility_wifi_three_bars" msgid="8134185644861380311">"Wi-Fi three bars."</string> <string name="accessibility_wifi_signal_full" msgid="7061045677694702">"Wi-Fi signal full."</string> - <!-- no translation found for accessibility_wifi_security_type_none (1223747559986205423) --> - <skip /> - <!-- no translation found for accessibility_wifi_security_type_secured (862921720418885331) --> - <skip /> + <string name="accessibility_wifi_security_type_none" msgid="1223747559986205423">"Open network"</string> + <string name="accessibility_wifi_security_type_secured" msgid="862921720418885331">"Secure network"</string> <string name="process_kernel_label" msgid="3916858646836739323">"Android OS"</string> <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"Removed apps"</string> <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"Removed apps and users"</string> diff --git a/packages/SettingsLib/res/values-es-rUS/strings.xml b/packages/SettingsLib/res/values-es-rUS/strings.xml index 830d5ab9d5f9..6f990ae544f2 100644 --- a/packages/SettingsLib/res/values-es-rUS/strings.xml +++ b/packages/SettingsLib/res/values-es-rUS/strings.xml @@ -40,8 +40,7 @@ <string name="connected_via_passpoint" msgid="2826205693803088747">"Conexión a través de %1$s"</string> <string name="available_via_passpoint" msgid="1617440946846329613">"Disponible a través de %1$s"</string> <string name="wifi_connected_no_internet" msgid="3149853966840874992">"Conectado a Wi-Fi, sin conexión a Internet"</string> - <!-- no translation found for wifi_ap_unable_to_handle_new_sta (5348824313514404541) --> - <skip /> + <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"El punto de acceso está completo temporalmente"</string> <string name="speed_label_very_slow" msgid="1867055264243608530">"Muy lenta"</string> <string name="speed_label_slow" msgid="813109590815810235">"Lenta"</string> <string name="speed_label_okay" msgid="2331665440671174858">"Aceptar"</string> @@ -104,10 +103,8 @@ <string name="accessibility_wifi_two_bars" msgid="3569851234710034416">"Dos barras de Wi-Fi"</string> <string name="accessibility_wifi_three_bars" msgid="8134185644861380311">"Tres barras de Wi-Fi"</string> <string name="accessibility_wifi_signal_full" msgid="7061045677694702">"Señal de Wi-Fi excelente"</string> - <!-- no translation found for accessibility_wifi_security_type_none (1223747559986205423) --> - <skip /> - <!-- no translation found for accessibility_wifi_security_type_secured (862921720418885331) --> - <skip /> + <string name="accessibility_wifi_security_type_none" msgid="1223747559986205423">"Red abierta"</string> + <string name="accessibility_wifi_security_type_secured" msgid="862921720418885331">"Red segura"</string> <string name="process_kernel_label" msgid="3916858646836739323">"SO Android"</string> <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"Aplicaciones eliminadas"</string> <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"Aplicaciones y usuarios eliminados"</string> diff --git a/packages/SettingsLib/res/values-es/strings.xml b/packages/SettingsLib/res/values-es/strings.xml index 102ea0536d72..6d60362c740e 100644 --- a/packages/SettingsLib/res/values-es/strings.xml +++ b/packages/SettingsLib/res/values-es/strings.xml @@ -40,8 +40,7 @@ <string name="connected_via_passpoint" msgid="2826205693803088747">"Conectado a través de %1$s"</string> <string name="available_via_passpoint" msgid="1617440946846329613">"Disponible a través de %1$s"</string> <string name="wifi_connected_no_internet" msgid="3149853966840874992">"Conexión sin Internet"</string> - <!-- no translation found for wifi_ap_unable_to_handle_new_sta (5348824313514404541) --> - <skip /> + <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Punto de acceso temporalmente lleno"</string> <string name="speed_label_very_slow" msgid="1867055264243608530">"Muy lenta"</string> <string name="speed_label_slow" msgid="813109590815810235">"Lenta"</string> <string name="speed_label_okay" msgid="2331665440671174858">"Aceptar"</string> @@ -104,10 +103,8 @@ <string name="accessibility_wifi_two_bars" msgid="3569851234710034416">"Dos barras de Wi-Fi."</string> <string name="accessibility_wifi_three_bars" msgid="8134185644861380311">"Tres barras de Wi-Fi."</string> <string name="accessibility_wifi_signal_full" msgid="7061045677694702">"Señal de Wi-Fi al máximo."</string> - <!-- no translation found for accessibility_wifi_security_type_none (1223747559986205423) --> - <skip /> - <!-- no translation found for accessibility_wifi_security_type_secured (862921720418885331) --> - <skip /> + <string name="accessibility_wifi_security_type_none" msgid="1223747559986205423">"Red abierta"</string> + <string name="accessibility_wifi_security_type_secured" msgid="862921720418885331">"Red segura"</string> <string name="process_kernel_label" msgid="3916858646836739323">"SO Android"</string> <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"Aplicaciones eliminadas"</string> <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"Usuarios y aplicaciones eliminados"</string> diff --git a/packages/SettingsLib/res/values-et/strings.xml b/packages/SettingsLib/res/values-et/strings.xml index 4c889f4e4f40..cee443bff8a5 100644 --- a/packages/SettingsLib/res/values-et/strings.xml +++ b/packages/SettingsLib/res/values-et/strings.xml @@ -40,8 +40,7 @@ <string name="connected_via_passpoint" msgid="2826205693803088747">"Ühendatud üksuse %1$s kaudu"</string> <string name="available_via_passpoint" msgid="1617440946846329613">"Saadaval üksuse %1$s kaudu"</string> <string name="wifi_connected_no_internet" msgid="3149853966840874992">"Ühendatud, Interneti-ühendus puudub"</string> - <!-- no translation found for wifi_ap_unable_to_handle_new_sta (5348824313514404541) --> - <skip /> + <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Pääsupunkt on ajutiselt täis"</string> <string name="speed_label_very_slow" msgid="1867055264243608530">"Väga aeglane"</string> <string name="speed_label_slow" msgid="813109590815810235">"Aeglane"</string> <string name="speed_label_okay" msgid="2331665440671174858">"Hea"</string> @@ -104,10 +103,8 @@ <string name="accessibility_wifi_two_bars" msgid="3569851234710034416">"WiFi: kaks pulka."</string> <string name="accessibility_wifi_three_bars" msgid="8134185644861380311">"WiFi: kolm pulka."</string> <string name="accessibility_wifi_signal_full" msgid="7061045677694702">"WiFi-signaal on tugev."</string> - <!-- no translation found for accessibility_wifi_security_type_none (1223747559986205423) --> - <skip /> - <!-- no translation found for accessibility_wifi_security_type_secured (862921720418885331) --> - <skip /> + <string name="accessibility_wifi_security_type_none" msgid="1223747559986205423">"Avatud võrk"</string> + <string name="accessibility_wifi_security_type_secured" msgid="862921720418885331">"Turvaline võrk"</string> <string name="process_kernel_label" msgid="3916858646836739323">"Android OS"</string> <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"Eemaldatud rakendused"</string> <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"Eemaldatud rakendused ja kasutajad"</string> diff --git a/packages/SettingsLib/res/values-eu/strings.xml b/packages/SettingsLib/res/values-eu/strings.xml index e81acf876ba2..d0aa89f08b5b 100644 --- a/packages/SettingsLib/res/values-eu/strings.xml +++ b/packages/SettingsLib/res/values-eu/strings.xml @@ -40,8 +40,7 @@ <string name="connected_via_passpoint" msgid="2826205693803088747">"%1$s bidez konektatuta"</string> <string name="available_via_passpoint" msgid="1617440946846329613">"%1$s bidez erabilgarri"</string> <string name="wifi_connected_no_internet" msgid="3149853966840874992">"Konektatuta, ez dago Interneteko konexiorik"</string> - <!-- no translation found for wifi_ap_unable_to_handle_new_sta (5348824313514404541) --> - <skip /> + <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Sarbide-puntua beteta dago aldi baterako"</string> <string name="speed_label_very_slow" msgid="1867055264243608530">"Oso motela"</string> <string name="speed_label_slow" msgid="813109590815810235">"Motela"</string> <string name="speed_label_okay" msgid="2331665440671174858">"Ados"</string> @@ -104,10 +103,8 @@ <string name="accessibility_wifi_two_bars" msgid="3569851234710034416">"Wi-Fi sarearen bi barra."</string> <string name="accessibility_wifi_three_bars" msgid="8134185644861380311">"Wi-Fi sarearen hiru barra."</string> <string name="accessibility_wifi_signal_full" msgid="7061045677694702">"Wi-Fi sarearen seinalea osoa."</string> - <!-- no translation found for accessibility_wifi_security_type_none (1223747559986205423) --> - <skip /> - <!-- no translation found for accessibility_wifi_security_type_secured (862921720418885331) --> - <skip /> + <string name="accessibility_wifi_security_type_none" msgid="1223747559986205423">"Sare irekia"</string> + <string name="accessibility_wifi_security_type_secured" msgid="862921720418885331">"Sare segurua"</string> <string name="process_kernel_label" msgid="3916858646836739323">"Android sistema eragilea"</string> <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"Kendutako aplikazioak"</string> <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"Kendutako aplikazioak eta erabiltzaileak"</string> diff --git a/packages/SettingsLib/res/values-fa/strings.xml b/packages/SettingsLib/res/values-fa/strings.xml index 9d790b8cf0c6..266b8ce56113 100644 --- a/packages/SettingsLib/res/values-fa/strings.xml +++ b/packages/SettingsLib/res/values-fa/strings.xml @@ -40,8 +40,7 @@ <string name="connected_via_passpoint" msgid="2826205693803088747">"متصل از طریق %1$s"</string> <string name="available_via_passpoint" msgid="1617440946846329613">"در دسترس از طریق %1$s"</string> <string name="wifi_connected_no_internet" msgid="3149853966840874992">"متصل، بدون اینترنت"</string> - <!-- no translation found for wifi_ap_unable_to_handle_new_sta (5348824313514404541) --> - <skip /> + <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"ظرفیت نقطه دسترسی موقتاً تکمیل شده است"</string> <string name="speed_label_very_slow" msgid="1867055264243608530">"بسیار آهسته"</string> <string name="speed_label_slow" msgid="813109590815810235">"آهسته"</string> <string name="speed_label_okay" msgid="2331665440671174858">"تأیید"</string> @@ -104,10 +103,8 @@ <string name="accessibility_wifi_two_bars" msgid="3569851234710034416">"دو نوار برای Wi‑Fi."</string> <string name="accessibility_wifi_three_bars" msgid="8134185644861380311">"سه نوار برای Wi‑Fi."</string> <string name="accessibility_wifi_signal_full" msgid="7061045677694702">"قدرت سیگنال Wi‑Fi کامل است."</string> - <!-- no translation found for accessibility_wifi_security_type_none (1223747559986205423) --> - <skip /> - <!-- no translation found for accessibility_wifi_security_type_secured (862921720418885331) --> - <skip /> + <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"</string> <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"برنامههای حذف شده"</string> <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"برنامهها و کاربران حذف شده"</string> diff --git a/packages/SettingsLib/res/values-fi/strings.xml b/packages/SettingsLib/res/values-fi/strings.xml index 2d0ecc69484b..185f56ada1fa 100644 --- a/packages/SettingsLib/res/values-fi/strings.xml +++ b/packages/SettingsLib/res/values-fi/strings.xml @@ -40,8 +40,7 @@ <string name="connected_via_passpoint" msgid="2826205693803088747">"Yhdistetty seuraavan kautta: %1$s"</string> <string name="available_via_passpoint" msgid="1617440946846329613">"Käytettävissä seuraavan kautta: %1$s"</string> <string name="wifi_connected_no_internet" msgid="3149853966840874992">"Yhdistetty, ei internetyhteyttä."</string> - <!-- no translation found for wifi_ap_unable_to_handle_new_sta (5348824313514404541) --> - <skip /> + <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Yhteyspiste tilapäisesti täynnä"</string> <string name="speed_label_very_slow" msgid="1867055264243608530">"Hyvin hidas"</string> <string name="speed_label_slow" msgid="813109590815810235">"Hidas"</string> <string name="speed_label_okay" msgid="2331665440671174858">"OK"</string> @@ -104,10 +103,8 @@ <string name="accessibility_wifi_two_bars" msgid="3569851234710034416">"Wi-Fi-signaali – kaksi palkkia"</string> <string name="accessibility_wifi_three_bars" msgid="8134185644861380311">"Wi-Fi-signaali – kolme palkkia"</string> <string name="accessibility_wifi_signal_full" msgid="7061045677694702">"Vahva Wi-Fi-signaali"</string> - <!-- no translation found for accessibility_wifi_security_type_none (1223747559986205423) --> - <skip /> - <!-- no translation found for accessibility_wifi_security_type_secured (862921720418885331) --> - <skip /> + <string name="accessibility_wifi_security_type_none" msgid="1223747559986205423">"Avoin verkko"</string> + <string name="accessibility_wifi_security_type_secured" msgid="862921720418885331">"Suojattu verkko"</string> <string name="process_kernel_label" msgid="3916858646836739323">"Android-käyttöjärjestelmä"</string> <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"Poistetut sovellukset"</string> <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"Poistetut sovellukset ja käyttäjät"</string> diff --git a/packages/SettingsLib/res/values-fr-rCA/strings.xml b/packages/SettingsLib/res/values-fr-rCA/strings.xml index 431426e3853b..8dc8ead6ba36 100644 --- a/packages/SettingsLib/res/values-fr-rCA/strings.xml +++ b/packages/SettingsLib/res/values-fr-rCA/strings.xml @@ -40,8 +40,7 @@ <string name="connected_via_passpoint" msgid="2826205693803088747">"Connecté par %1$s"</string> <string name="available_via_passpoint" msgid="1617440946846329613">"Accessible par %1$s"</string> <string name="wifi_connected_no_internet" msgid="3149853966840874992">"Connecté, aucun accès à Internet"</string> - <!-- no translation found for wifi_ap_unable_to_handle_new_sta (5348824313514404541) --> - <skip /> + <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Le point d\'accès est temporairement plein"</string> <string name="speed_label_very_slow" msgid="1867055264243608530">"Très lente"</string> <string name="speed_label_slow" msgid="813109590815810235">"Lente"</string> <string name="speed_label_okay" msgid="2331665440671174858">"OK"</string> @@ -104,10 +103,8 @@ <string name="accessibility_wifi_two_bars" msgid="3569851234710034416">"Wi-Fi : deux barres."</string> <string name="accessibility_wifi_three_bars" msgid="8134185644861380311">"Wi-Fi : trois barres."</string> <string name="accessibility_wifi_signal_full" msgid="7061045677694702">"Wi-Fi : signal complet."</string> - <!-- no translation found for accessibility_wifi_security_type_none (1223747559986205423) --> - <skip /> - <!-- no translation found for accessibility_wifi_security_type_secured (862921720418885331) --> - <skip /> + <string name="accessibility_wifi_security_type_none" msgid="1223747559986205423">"Réseau ouvert"</string> + <string name="accessibility_wifi_security_type_secured" msgid="862921720418885331">"Réseau sécurisé"</string> <string name="process_kernel_label" msgid="3916858646836739323">"Système d\'exploitation Android"</string> <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"Applications supprimées"</string> <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"Applications et utilisateurs supprimés"</string> diff --git a/packages/SettingsLib/res/values-fr/strings.xml b/packages/SettingsLib/res/values-fr/strings.xml index caa143f8aef0..7fdc7165f9f3 100644 --- a/packages/SettingsLib/res/values-fr/strings.xml +++ b/packages/SettingsLib/res/values-fr/strings.xml @@ -40,8 +40,7 @@ <string name="connected_via_passpoint" msgid="2826205693803088747">"Connecté via %1$s"</string> <string name="available_via_passpoint" msgid="1617440946846329613">"Disponible via %1$s"</string> <string name="wifi_connected_no_internet" msgid="3149853966840874992">"Connecté, aucun accès à Internet"</string> - <!-- no translation found for wifi_ap_unable_to_handle_new_sta (5348824313514404541) --> - <skip /> + <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Point d\'accès temporairement plein"</string> <string name="speed_label_very_slow" msgid="1867055264243608530">"Très lente"</string> <string name="speed_label_slow" msgid="813109590815810235">"Lente"</string> <string name="speed_label_okay" msgid="2331665440671174858">"Correct"</string> @@ -104,10 +103,8 @@ <string name="accessibility_wifi_two_bars" msgid="3569851234710034416">"Signal Wi-Fi moyen"</string> <string name="accessibility_wifi_three_bars" msgid="8134185644861380311">"Signal Wi-Fi bon"</string> <string name="accessibility_wifi_signal_full" msgid="7061045677694702">"Signal Wi-Fi excellent"</string> - <!-- no translation found for accessibility_wifi_security_type_none (1223747559986205423) --> - <skip /> - <!-- no translation found for accessibility_wifi_security_type_secured (862921720418885331) --> - <skip /> + <string name="accessibility_wifi_security_type_none" msgid="1223747559986205423">"Réseau ouvert"</string> + <string name="accessibility_wifi_security_type_secured" msgid="862921720418885331">"Réseau sécurisé"</string> <string name="process_kernel_label" msgid="3916858646836739323">"Plate-forme Android"</string> <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"Applications supprimées"</string> <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"Applications et utilisateurs supprimés"</string> diff --git a/packages/SettingsLib/res/values-gl/strings.xml b/packages/SettingsLib/res/values-gl/strings.xml index 994a327dcc92..3ae0d6f8c0ac 100644 --- a/packages/SettingsLib/res/values-gl/strings.xml +++ b/packages/SettingsLib/res/values-gl/strings.xml @@ -40,8 +40,7 @@ <string name="connected_via_passpoint" msgid="2826205693803088747">"Conectado a través de %1$s"</string> <string name="available_via_passpoint" msgid="1617440946846329613">"Dispoñible a través de %1$s"</string> <string name="wifi_connected_no_internet" msgid="3149853966840874992">"Conectado, pero sen Internet"</string> - <!-- no translation found for wifi_ap_unable_to_handle_new_sta (5348824313514404541) --> - <skip /> + <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"O punto de acceso está temporalmente cheo"</string> <string name="speed_label_very_slow" msgid="1867055264243608530">"Moi lenta"</string> <string name="speed_label_slow" msgid="813109590815810235">"Lenta"</string> <string name="speed_label_okay" msgid="2331665440671174858">"Aceptar"</string> @@ -104,10 +103,8 @@ <string name="accessibility_wifi_two_bars" msgid="3569851234710034416">"Dúas barras de wifi."</string> <string name="accessibility_wifi_three_bars" msgid="8134185644861380311">"Tres barras de wifi."</string> <string name="accessibility_wifi_signal_full" msgid="7061045677694702">"Sinal completo de wifi."</string> - <!-- no translation found for accessibility_wifi_security_type_none (1223747559986205423) --> - <skip /> - <!-- no translation found for accessibility_wifi_security_type_secured (862921720418885331) --> - <skip /> + <string name="accessibility_wifi_security_type_none" msgid="1223747559986205423">"Rede aberta"</string> + <string name="accessibility_wifi_security_type_secured" msgid="862921720418885331">"Rede segura"</string> <string name="process_kernel_label" msgid="3916858646836739323">"SO Android"</string> <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"Aplicacións eliminadas"</string> <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"Aplicacións e usuarios eliminados"</string> diff --git a/packages/SettingsLib/res/values-gu/strings.xml b/packages/SettingsLib/res/values-gu/strings.xml index c11f98c041f5..9d6c1e827ad9 100644 --- a/packages/SettingsLib/res/values-gu/strings.xml +++ b/packages/SettingsLib/res/values-gu/strings.xml @@ -40,8 +40,7 @@ <string name="connected_via_passpoint" msgid="2826205693803088747">"%1$s દ્વારા કનેક્ટ થયેલ"</string> <string name="available_via_passpoint" msgid="1617440946846329613">"%1$s દ્વારા ઉપલબ્ધ"</string> <string name="wifi_connected_no_internet" msgid="3149853966840874992">"કનેક્ટ કર્યું, કોઈ ઇન્ટરનેટ નથી"</string> - <!-- no translation found for wifi_ap_unable_to_handle_new_sta (5348824313514404541) --> - <skip /> + <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"ઍક્સેસ પૉઇન્ટ અસ્થાયીરૂપે ભરાયેલ છે"</string> <string name="speed_label_very_slow" msgid="1867055264243608530">"ખૂબ જ ધીમી"</string> <string name="speed_label_slow" msgid="813109590815810235">"ધીમી"</string> <string name="speed_label_okay" msgid="2331665440671174858">"ઓકે"</string> @@ -104,10 +103,8 @@ <string name="accessibility_wifi_two_bars" msgid="3569851234710034416">"Wifi બે બાર."</string> <string name="accessibility_wifi_three_bars" msgid="8134185644861380311">"Wifi ત્રણ બાર."</string> <string name="accessibility_wifi_signal_full" msgid="7061045677694702">"પૂર્ણ Wifi સિગ્નલ."</string> - <!-- no translation found for accessibility_wifi_security_type_none (1223747559986205423) --> - <skip /> - <!-- no translation found for accessibility_wifi_security_type_secured (862921720418885331) --> - <skip /> + <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> diff --git a/packages/SettingsLib/res/values-hi/strings.xml b/packages/SettingsLib/res/values-hi/strings.xml index 465482b9e077..704a312c1714 100644 --- a/packages/SettingsLib/res/values-hi/strings.xml +++ b/packages/SettingsLib/res/values-hi/strings.xml @@ -40,8 +40,7 @@ <string name="connected_via_passpoint" msgid="2826205693803088747">"%1$s के द्वारा उपलब्ध"</string> <string name="available_via_passpoint" msgid="1617440946846329613">"%1$s के द्वारा उपलब्ध"</string> <string name="wifi_connected_no_internet" msgid="3149853966840874992">"कनेक्ट किया गया, इंटरनेट नहीं"</string> - <!-- no translation found for wifi_ap_unable_to_handle_new_sta (5348824313514404541) --> - <skip /> + <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"एक्सेस पॉइंट फ़िलहाल भरा हुआ है"</string> <string name="speed_label_very_slow" msgid="1867055264243608530">"अत्यधिक धीमी"</string> <string name="speed_label_slow" msgid="813109590815810235">"धीमी"</string> <string name="speed_label_okay" msgid="2331665440671174858">"ठीक"</string> @@ -104,10 +103,8 @@ <string name="accessibility_wifi_two_bars" msgid="3569851234710034416">"वाई-फ़ाई की दो पट्टी मिल रही हैं."</string> <string name="accessibility_wifi_three_bars" msgid="8134185644861380311">"वाई-फ़ाई की एक पट्टी मिल रही है."</string> <string name="accessibility_wifi_signal_full" msgid="7061045677694702">"पूरे वाई-फ़ाई सिग्नल मिल रहे हैं."</string> - <!-- no translation found for accessibility_wifi_security_type_none (1223747559986205423) --> - <skip /> - <!-- no translation found for accessibility_wifi_security_type_secured (862921720418885331) --> - <skip /> + <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> diff --git a/packages/SettingsLib/res/values-hr/strings.xml b/packages/SettingsLib/res/values-hr/strings.xml index 1ff5b410a957..123d9969e1f3 100644 --- a/packages/SettingsLib/res/values-hr/strings.xml +++ b/packages/SettingsLib/res/values-hr/strings.xml @@ -40,8 +40,7 @@ <string name="connected_via_passpoint" msgid="2826205693803088747">"Povezano putem %1$s"</string> <string name="available_via_passpoint" msgid="1617440946846329613">"Dostupno putem %1$s"</string> <string name="wifi_connected_no_internet" msgid="3149853966840874992">"Povezano, bez interneta"</string> - <!-- no translation found for wifi_ap_unable_to_handle_new_sta (5348824313514404541) --> - <skip /> + <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Pristupna je točka privremeno puna"</string> <string name="speed_label_very_slow" msgid="1867055264243608530">"Vrlo sporo"</string> <string name="speed_label_slow" msgid="813109590815810235">"Sporo"</string> <string name="speed_label_okay" msgid="2331665440671174858">"U redu"</string> @@ -104,10 +103,8 @@ <string name="accessibility_wifi_two_bars" msgid="3569851234710034416">"Wi-Fi signal ima dva stupca."</string> <string name="accessibility_wifi_three_bars" msgid="8134185644861380311">"Wi-Fi signal ima tri stupca."</string> <string name="accessibility_wifi_signal_full" msgid="7061045677694702">"Wi-Fi signal je pun."</string> - <!-- no translation found for accessibility_wifi_security_type_none (1223747559986205423) --> - <skip /> - <!-- no translation found for accessibility_wifi_security_type_secured (862921720418885331) --> - <skip /> + <string name="accessibility_wifi_security_type_none" msgid="1223747559986205423">"Otvorena mreža"</string> + <string name="accessibility_wifi_security_type_secured" msgid="862921720418885331">"Sigurna mreža"</string> <string name="process_kernel_label" msgid="3916858646836739323">"Android OS"</string> <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"Uklonjene aplikacije"</string> <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"Uklonjene aplikacije i korisnici"</string> diff --git a/packages/SettingsLib/res/values-hu/strings.xml b/packages/SettingsLib/res/values-hu/strings.xml index 8434090f61fa..ff700d9bf737 100644 --- a/packages/SettingsLib/res/values-hu/strings.xml +++ b/packages/SettingsLib/res/values-hu/strings.xml @@ -40,8 +40,7 @@ <string name="connected_via_passpoint" msgid="2826205693803088747">"Csatlakozva a következőn keresztül: %1$s"</string> <string name="available_via_passpoint" msgid="1617440946846329613">"Elérhető a következőn keresztül: %1$s"</string> <string name="wifi_connected_no_internet" msgid="3149853966840874992">"Csatlakozva, nincs internetelérés"</string> - <!-- no translation found for wifi_ap_unable_to_handle_new_sta (5348824313514404541) --> - <skip /> + <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"A hozzáférési pont átmenetileg megtelt"</string> <string name="speed_label_very_slow" msgid="1867055264243608530">"Nagyon lassú"</string> <string name="speed_label_slow" msgid="813109590815810235">"Lassú"</string> <string name="speed_label_okay" msgid="2331665440671174858">"Rendben"</string> @@ -104,10 +103,8 @@ <string name="accessibility_wifi_two_bars" msgid="3569851234710034416">"Wi-Fi-jel: két sáv."</string> <string name="accessibility_wifi_three_bars" msgid="8134185644861380311">"Wi-Fi-jel: három sáv."</string> <string name="accessibility_wifi_signal_full" msgid="7061045677694702">"Wi-Fi-jel: teljes."</string> - <!-- no translation found for accessibility_wifi_security_type_none (1223747559986205423) --> - <skip /> - <!-- no translation found for accessibility_wifi_security_type_secured (862921720418885331) --> - <skip /> + <string name="accessibility_wifi_security_type_none" msgid="1223747559986205423">"Nyílt hálózat"</string> + <string name="accessibility_wifi_security_type_secured" msgid="862921720418885331">"Biztonságos hálózat"</string> <string name="process_kernel_label" msgid="3916858646836739323">"Android OS"</string> <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"Eltávolított alkalmazások"</string> <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"Eltávolított alkalmazások és felhasználók"</string> diff --git a/packages/SettingsLib/res/values-hy/strings.xml b/packages/SettingsLib/res/values-hy/strings.xml index 1d124050601c..63fe5abebaa7 100644 --- a/packages/SettingsLib/res/values-hy/strings.xml +++ b/packages/SettingsLib/res/values-hy/strings.xml @@ -40,8 +40,7 @@ <string name="connected_via_passpoint" msgid="2826205693803088747">"Կապակցված է %1$s-ի միջոցով"</string> <string name="available_via_passpoint" msgid="1617440946846329613">"Հասանելի է %1$s-ի միջոցով"</string> <string name="wifi_connected_no_internet" msgid="3149853966840874992">"Կապակցված է առանց համացանցի"</string> - <!-- no translation found for wifi_ap_unable_to_handle_new_sta (5348824313514404541) --> - <skip /> + <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Հասանելիության կետը ժամանակավորապես լիքն է"</string> <string name="speed_label_very_slow" msgid="1867055264243608530">"Շատ դանդաղ"</string> <string name="speed_label_slow" msgid="813109590815810235">"Դանդաղ"</string> <string name="speed_label_okay" msgid="2331665440671174858">"Հաստատել"</string> @@ -104,10 +103,8 @@ <string name="accessibility_wifi_two_bars" msgid="3569851234710034416">"Wi-Fi-ի ուժգնությունը՝ երկու գիծ:"</string> <string name="accessibility_wifi_three_bars" msgid="8134185644861380311">"Wi-Fi-ի ուժգնությունը՝ երեք գիծ:"</string> <string name="accessibility_wifi_signal_full" msgid="7061045677694702">"Wi-Fi-ի ազդանշանը ուժեղ է:"</string> - <!-- no translation found for accessibility_wifi_security_type_none (1223747559986205423) --> - <skip /> - <!-- no translation found for accessibility_wifi_security_type_secured (862921720418885331) --> - <skip /> + <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> diff --git a/packages/SettingsLib/res/values-in/strings.xml b/packages/SettingsLib/res/values-in/strings.xml index 6fbc0a061366..267bbf9ba046 100644 --- a/packages/SettingsLib/res/values-in/strings.xml +++ b/packages/SettingsLib/res/values-in/strings.xml @@ -40,8 +40,7 @@ <string name="connected_via_passpoint" msgid="2826205693803088747">"Terhubung melalui %1$s"</string> <string name="available_via_passpoint" msgid="1617440946846329613">"Tersedia melalui %1$s"</string> <string name="wifi_connected_no_internet" msgid="3149853966840874992">"Tersambung, tidak ada internet"</string> - <!-- no translation found for wifi_ap_unable_to_handle_new_sta (5348824313514404541) --> - <skip /> + <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Titik akses penuh untuk sementara"</string> <string name="speed_label_very_slow" msgid="1867055264243608530">"Sangat Lambat"</string> <string name="speed_label_slow" msgid="813109590815810235">"Lambat"</string> <string name="speed_label_okay" msgid="2331665440671174858">"Oke"</string> @@ -104,10 +103,8 @@ <string name="accessibility_wifi_two_bars" msgid="3569851234710034416">"Wi-Fi dua baris"</string> <string name="accessibility_wifi_three_bars" msgid="8134185644861380311">"Wi-Fi tiga baris."</string> <string name="accessibility_wifi_signal_full" msgid="7061045677694702">"Sinyal Wi-Fi penuh."</string> - <!-- no translation found for accessibility_wifi_security_type_none (1223747559986205423) --> - <skip /> - <!-- no translation found for accessibility_wifi_security_type_secured (862921720418885331) --> - <skip /> + <string name="accessibility_wifi_security_type_none" msgid="1223747559986205423">"Jaringan terbuka"</string> + <string name="accessibility_wifi_security_type_secured" msgid="862921720418885331">"Jaringan aman"</string> <string name="process_kernel_label" msgid="3916858646836739323">"OS Android"</string> <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"Aplikasi dihapus"</string> <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"Aplikasi dan pengguna yang dihapus"</string> diff --git a/packages/SettingsLib/res/values-is/strings.xml b/packages/SettingsLib/res/values-is/strings.xml index 72f71f574152..ae5f72718b29 100644 --- a/packages/SettingsLib/res/values-is/strings.xml +++ b/packages/SettingsLib/res/values-is/strings.xml @@ -40,8 +40,7 @@ <string name="connected_via_passpoint" msgid="2826205693803088747">"Tengt í gegnum %1$s"</string> <string name="available_via_passpoint" msgid="1617440946846329613">"Í boði í gegnum %1$s"</string> <string name="wifi_connected_no_internet" msgid="3149853966840874992">"Tengt, enginn internetaðgangur"</string> - <!-- no translation found for wifi_ap_unable_to_handle_new_sta (5348824313514404541) --> - <skip /> + <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Aðgangsstaður tímabundið fullur"</string> <string name="speed_label_very_slow" msgid="1867055264243608530">"Mjög hægt"</string> <string name="speed_label_slow" msgid="813109590815810235">"Hægt"</string> <string name="speed_label_okay" msgid="2331665440671174858">"Í lagi"</string> @@ -104,10 +103,8 @@ <string name="accessibility_wifi_two_bars" msgid="3569851234710034416">"Wi-Fi: Tvö strik."</string> <string name="accessibility_wifi_three_bars" msgid="8134185644861380311">"Wi-Fi: Þrjú strik."</string> <string name="accessibility_wifi_signal_full" msgid="7061045677694702">"Fullur Wi-Fi sendistyrkur."</string> - <!-- no translation found for accessibility_wifi_security_type_none (1223747559986205423) --> - <skip /> - <!-- no translation found for accessibility_wifi_security_type_secured (862921720418885331) --> - <skip /> + <string name="accessibility_wifi_security_type_none" msgid="1223747559986205423">"Opið net"</string> + <string name="accessibility_wifi_security_type_secured" msgid="862921720418885331">"Öruggt net"</string> <string name="process_kernel_label" msgid="3916858646836739323">"Android stýrikerfið"</string> <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"Fjarlægð forrit"</string> <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"Fjarlægð forrit og notendur"</string> diff --git a/packages/SettingsLib/res/values-it/strings.xml b/packages/SettingsLib/res/values-it/strings.xml index 3003597bac72..4a2d3cb69e2a 100644 --- a/packages/SettingsLib/res/values-it/strings.xml +++ b/packages/SettingsLib/res/values-it/strings.xml @@ -40,8 +40,7 @@ <string name="connected_via_passpoint" msgid="2826205693803088747">"Collegato tramite %1$s"</string> <string name="available_via_passpoint" msgid="1617440946846329613">"Disponibile tramite %1$s"</string> <string name="wifi_connected_no_internet" msgid="3149853966840874992">"Connesso senza Internet"</string> - <!-- no translation found for wifi_ap_unable_to_handle_new_sta (5348824313514404541) --> - <skip /> + <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Punto di accesso momentaneamente al completo"</string> <string name="speed_label_very_slow" msgid="1867055264243608530">"Molto lenta"</string> <string name="speed_label_slow" msgid="813109590815810235">"Lenta"</string> <string name="speed_label_okay" msgid="2331665440671174858">"OK"</string> @@ -104,10 +103,8 @@ <string name="accessibility_wifi_two_bars" msgid="3569851234710034416">"Wi-Fi: due barre."</string> <string name="accessibility_wifi_three_bars" msgid="8134185644861380311">"Wi-Fi: tre barre."</string> <string name="accessibility_wifi_signal_full" msgid="7061045677694702">"Segnale Wi-Fi completo."</string> - <!-- no translation found for accessibility_wifi_security_type_none (1223747559986205423) --> - <skip /> - <!-- no translation found for accessibility_wifi_security_type_secured (862921720418885331) --> - <skip /> + <string name="accessibility_wifi_security_type_none" msgid="1223747559986205423">"Rete aperta"</string> + <string name="accessibility_wifi_security_type_secured" msgid="862921720418885331">"Rete protetta"</string> <string name="process_kernel_label" msgid="3916858646836739323">"Sistema operativo Android"</string> <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"Applicazioni rimosse"</string> <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"App e utenti rimossi"</string> diff --git a/packages/SettingsLib/res/values-iw/strings.xml b/packages/SettingsLib/res/values-iw/strings.xml index 0368a048af53..7f6f8f50c5a3 100644 --- a/packages/SettingsLib/res/values-iw/strings.xml +++ b/packages/SettingsLib/res/values-iw/strings.xml @@ -40,8 +40,7 @@ <string name="connected_via_passpoint" msgid="2826205693803088747">"מחובר דרך %1$s"</string> <string name="available_via_passpoint" msgid="1617440946846329613">"זמינה דרך %1$s"</string> <string name="wifi_connected_no_internet" msgid="3149853966840874992">"מחובר. אין אינטרנט"</string> - <!-- no translation found for wifi_ap_unable_to_handle_new_sta (5348824313514404541) --> - <skip /> + <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"נקודת הגישה מלאה באופן זמני"</string> <string name="speed_label_very_slow" msgid="1867055264243608530">"איטית מאוד"</string> <string name="speed_label_slow" msgid="813109590815810235">"איטית"</string> <string name="speed_label_okay" msgid="2331665440671174858">"אישור"</string> @@ -104,10 +103,8 @@ <string name="accessibility_wifi_two_bars" msgid="3569851234710034416">"שני פסים של Wi-Fi."</string> <string name="accessibility_wifi_three_bars" msgid="8134185644861380311">"שלושה פסים של Wi-Fi."</string> <string name="accessibility_wifi_signal_full" msgid="7061045677694702">"אות Wi-Fi מלא."</string> - <!-- no translation found for accessibility_wifi_security_type_none (1223747559986205423) --> - <skip /> - <!-- no translation found for accessibility_wifi_security_type_secured (862921720418885331) --> - <skip /> + <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> diff --git a/packages/SettingsLib/res/values-ja/strings.xml b/packages/SettingsLib/res/values-ja/strings.xml index 952c4fb77fd6..feb80e9595a6 100644 --- a/packages/SettingsLib/res/values-ja/strings.xml +++ b/packages/SettingsLib/res/values-ja/strings.xml @@ -40,8 +40,7 @@ <string name="connected_via_passpoint" msgid="2826205693803088747">"%1$s経由で接続"</string> <string name="available_via_passpoint" msgid="1617440946846329613">"%1$s経由で使用可能"</string> <string name="wifi_connected_no_internet" msgid="3149853966840874992">"接続済み、インターネットは利用できません"</string> - <!-- no translation found for wifi_ap_unable_to_handle_new_sta (5348824313514404541) --> - <skip /> + <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"アクセス ポイントが一時的にいっぱいです"</string> <string name="speed_label_very_slow" msgid="1867055264243608530">"とても遅い"</string> <string name="speed_label_slow" msgid="813109590815810235">"遅い"</string> <string name="speed_label_okay" msgid="2331665440671174858">"OK"</string> @@ -104,10 +103,8 @@ <string name="accessibility_wifi_two_bars" msgid="3569851234710034416">"Wi-Fiはレベル2です。"</string> <string name="accessibility_wifi_three_bars" msgid="8134185644861380311">"Wi-Fiはレベル3です。"</string> <string name="accessibility_wifi_signal_full" msgid="7061045677694702">"Wi-Fiの電波はフルです。"</string> - <!-- no translation found for accessibility_wifi_security_type_none (1223747559986205423) --> - <skip /> - <!-- no translation found for accessibility_wifi_security_type_secured (862921720418885331) --> - <skip /> + <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> diff --git a/packages/SettingsLib/res/values-ka/strings.xml b/packages/SettingsLib/res/values-ka/strings.xml index fbdd1b6709a5..4d12fa7989a9 100644 --- a/packages/SettingsLib/res/values-ka/strings.xml +++ b/packages/SettingsLib/res/values-ka/strings.xml @@ -40,8 +40,7 @@ <string name="connected_via_passpoint" msgid="2826205693803088747">"%1$s-ით დაკავშირებული"</string> <string name="available_via_passpoint" msgid="1617440946846329613">"ხელმისაწვდომია %1$s-ით"</string> <string name="wifi_connected_no_internet" msgid="3149853966840874992">"დაკავშირებულია, ინტერნეტის გარეშე"</string> - <!-- no translation found for wifi_ap_unable_to_handle_new_sta (5348824313514404541) --> - <skip /> + <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"წვდომის წერტილი დროებით გადატვირთულია"</string> <string name="speed_label_very_slow" msgid="1867055264243608530">"ძალიან ნელი"</string> <string name="speed_label_slow" msgid="813109590815810235">"ნელი"</string> <string name="speed_label_okay" msgid="2331665440671174858">"კარგი"</string> @@ -104,10 +103,8 @@ <string name="accessibility_wifi_two_bars" msgid="3569851234710034416">"WiFi სიგნალი ორ ზოლზეა."</string> <string name="accessibility_wifi_three_bars" msgid="8134185644861380311">"WiFi სიგნალი სამ ზოლზეა."</string> <string name="accessibility_wifi_signal_full" msgid="7061045677694702">"WiFi სიგნალი სრულია."</string> - <!-- no translation found for accessibility_wifi_security_type_none (1223747559986205423) --> - <skip /> - <!-- no translation found for accessibility_wifi_security_type_secured (862921720418885331) --> - <skip /> + <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> diff --git a/packages/SettingsLib/res/values-kk/strings.xml b/packages/SettingsLib/res/values-kk/strings.xml index a071c232dcf8..0c7b4ac1fad5 100644 --- a/packages/SettingsLib/res/values-kk/strings.xml +++ b/packages/SettingsLib/res/values-kk/strings.xml @@ -40,8 +40,7 @@ <string name="connected_via_passpoint" msgid="2826205693803088747">"%1$s арқылы қосылған"</string> <string name="available_via_passpoint" msgid="1617440946846329613">"%1$s арқылы қолжетімді"</string> <string name="wifi_connected_no_internet" msgid="3149853966840874992">"Қосылған, интернет жоқ"</string> - <!-- no translation found for wifi_ap_unable_to_handle_new_sta (5348824313514404541) --> - <skip /> + <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Кіру нүктесі уақытша бос емес"</string> <string name="speed_label_very_slow" msgid="1867055264243608530">"Өте баяу"</string> <string name="speed_label_slow" msgid="813109590815810235">"Баяу"</string> <string name="speed_label_okay" msgid="2331665440671174858">"Жарайды"</string> @@ -104,10 +103,8 @@ <string name="accessibility_wifi_two_bars" msgid="3569851234710034416">"Wi-Fi сигналы — екі жолақ."</string> <string name="accessibility_wifi_three_bars" msgid="8134185644861380311">"Wi-Fi сигналы — үш жолақ."</string> <string name="accessibility_wifi_signal_full" msgid="7061045677694702">"Wi-Fi сигналы толық."</string> - <!-- no translation found for accessibility_wifi_security_type_none (1223747559986205423) --> - <skip /> - <!-- no translation found for accessibility_wifi_security_type_secured (862921720418885331) --> - <skip /> + <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 операциялық жүйесі"</string> <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"Алынған қолданбалар"</string> <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"Алынған қолданбалар және пайдаланушылар"</string> diff --git a/packages/SettingsLib/res/values-km/strings.xml b/packages/SettingsLib/res/values-km/strings.xml index e3b84821baa6..755859cfafec 100644 --- a/packages/SettingsLib/res/values-km/strings.xml +++ b/packages/SettingsLib/res/values-km/strings.xml @@ -40,8 +40,7 @@ <string name="connected_via_passpoint" msgid="2826205693803088747">"បានភ្ជាប់តាមរយៈ %1$s"</string> <string name="available_via_passpoint" msgid="1617440946846329613">"មានតាមរយៈ %1$s"</string> <string name="wifi_connected_no_internet" msgid="3149853966840874992">"បានភ្ជាប់ ប៉ុន្តែគ្មានអ៊ីនធឺណិតទេ"</string> - <!-- no translation found for wifi_ap_unable_to_handle_new_sta (5348824313514404541) --> - <skip /> + <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"ចំណុចចូលប្រើពេញជាបណ្តោះអាសន្ន"</string> <string name="speed_label_very_slow" msgid="1867055264243608530">"យឺតណាស់"</string> <string name="speed_label_slow" msgid="813109590815810235">"យឺត"</string> <string name="speed_label_okay" msgid="2331665440671174858">"យល់ព្រម"</string> @@ -104,10 +103,8 @@ <string name="accessibility_wifi_two_bars" msgid="3569851234710034416">"Wifi ពីរកាំ"</string> <string name="accessibility_wifi_three_bars" msgid="8134185644861380311">"Wifi បីកាំ"</string> <string name="accessibility_wifi_signal_full" msgid="7061045677694702">"សេវា Wifi ពេញ"</string> - <!-- no translation found for accessibility_wifi_security_type_none (1223747559986205423) --> - <skip /> - <!-- no translation found for accessibility_wifi_security_type_secured (862921720418885331) --> - <skip /> + <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"</string> <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"កម្មវិធីដែលបានលុប"</string> <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"បានលុបកម្មវិធី និងអ្នកប្រើ"</string> diff --git a/packages/SettingsLib/res/values-kn/strings.xml b/packages/SettingsLib/res/values-kn/strings.xml index 6442140a4c7d..939e2a98761a 100644 --- a/packages/SettingsLib/res/values-kn/strings.xml +++ b/packages/SettingsLib/res/values-kn/strings.xml @@ -40,8 +40,7 @@ <string name="connected_via_passpoint" msgid="2826205693803088747">"%1$s ಮೂಲಕ ಸಂಪರ್ಕಗೊಂಡಿದೆ"</string> <string name="available_via_passpoint" msgid="1617440946846329613">"%1$s ಮೂಲಕ ಲಭ್ಯವಿದೆ"</string> <string name="wifi_connected_no_internet" msgid="3149853966840874992">"ಸಂಪರ್ಕಪಡಿಸಲಾಗಿದೆ, ಇಂಟರ್ನೆಟ್ ಇಲ್ಲ"</string> - <!-- no translation found for wifi_ap_unable_to_handle_new_sta (5348824313514404541) --> - <skip /> + <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"ಪ್ರವೇಶ ಕೇಂದ್ರ ತಾತ್ಕಾಲಿಕವಾಗಿ ಭರ್ತಿಯಾಗಿದೆ"</string> <string name="speed_label_very_slow" msgid="1867055264243608530">"ತುಂಬಾ ನಿಧಾನವಾಗಿದೆ"</string> <string name="speed_label_slow" msgid="813109590815810235">"ನಿಧಾನ"</string> <string name="speed_label_okay" msgid="2331665440671174858">"ಸರಿ"</string> @@ -104,10 +103,8 @@ <string name="accessibility_wifi_two_bars" msgid="3569851234710034416">"ವೈಫೈ ಎರಡು ಪಟ್ಟಿಗಳು."</string> <string name="accessibility_wifi_three_bars" msgid="8134185644861380311">"ವೈಫೈ ಮೂರು ಪಟ್ಟಿಗಳು."</string> <string name="accessibility_wifi_signal_full" msgid="7061045677694702">"ವೈಫೈ ಸಿಗ್ನಲ್ ಪೂರ್ತಿ ಇದೆ."</string> - <!-- no translation found for accessibility_wifi_security_type_none (1223747559986205423) --> - <skip /> - <!-- no translation found for accessibility_wifi_security_type_secured (862921720418885331) --> - <skip /> + <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> diff --git a/packages/SettingsLib/res/values-ko/strings.xml b/packages/SettingsLib/res/values-ko/strings.xml index 42fbdcc94ce8..972fef191a3b 100644 --- a/packages/SettingsLib/res/values-ko/strings.xml +++ b/packages/SettingsLib/res/values-ko/strings.xml @@ -40,8 +40,7 @@ <string name="connected_via_passpoint" msgid="2826205693803088747">"%1$s을(를) 통해 연결됨"</string> <string name="available_via_passpoint" msgid="1617440946846329613">"%1$s을(를) 통해 사용 가능"</string> <string name="wifi_connected_no_internet" msgid="3149853966840874992">"인터넷을 사용하지 않고 연결됨"</string> - <!-- no translation found for wifi_ap_unable_to_handle_new_sta (5348824313514404541) --> - <skip /> + <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"액세스 포인트가 일시적으로 가득 참"</string> <string name="speed_label_very_slow" msgid="1867055264243608530">"매우 느림"</string> <string name="speed_label_slow" msgid="813109590815810235">"느림"</string> <string name="speed_label_okay" msgid="2331665440671174858">"확인"</string> @@ -104,10 +103,8 @@ <string name="accessibility_wifi_two_bars" msgid="3569851234710034416">"Wi-Fi 신호 막대가 두 개입니다."</string> <string name="accessibility_wifi_three_bars" msgid="8134185644861380311">"Wi-Fi 신호 막대가 세 개입니다."</string> <string name="accessibility_wifi_signal_full" msgid="7061045677694702">"Wi-Fi 신호가 강합니다."</string> - <!-- no translation found for accessibility_wifi_security_type_none (1223747559986205423) --> - <skip /> - <!-- no translation found for accessibility_wifi_security_type_secured (862921720418885331) --> - <skip /> + <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> diff --git a/packages/SettingsLib/res/values-ky/strings.xml b/packages/SettingsLib/res/values-ky/strings.xml index cce8ad4ed304..cff25ddd1952 100644 --- a/packages/SettingsLib/res/values-ky/strings.xml +++ b/packages/SettingsLib/res/values-ky/strings.xml @@ -40,8 +40,7 @@ <string name="connected_via_passpoint" msgid="2826205693803088747">"%1$s аркылуу жеткиликтүү"</string> <string name="available_via_passpoint" msgid="1617440946846329613">"%1$s аркылуу жеткиликтүү"</string> <string name="wifi_connected_no_internet" msgid="3149853966840874992">"Туташып турат, Интернет жок"</string> - <!-- no translation found for wifi_ap_unable_to_handle_new_sta (5348824313514404541) --> - <skip /> + <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Туташуу түйүнү убактылуу толуп калды"</string> <string name="speed_label_very_slow" msgid="1867055264243608530">"Өтө жай"</string> <string name="speed_label_slow" msgid="813109590815810235">"Жай"</string> <string name="speed_label_okay" msgid="2331665440671174858">"Жарайт"</string> @@ -104,10 +103,8 @@ <string name="accessibility_wifi_two_bars" msgid="3569851234710034416">"Wifi: эки таякча."</string> <string name="accessibility_wifi_three_bars" msgid="8134185644861380311">"Wifi: үч таякча."</string> <string name="accessibility_wifi_signal_full" msgid="7061045677694702">"Wifi: күчтүү сигнал."</string> - <!-- no translation found for accessibility_wifi_security_type_none (1223747559986205423) --> - <skip /> - <!-- no translation found for accessibility_wifi_security_type_secured (862921720418885331) --> - <skip /> + <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> diff --git a/packages/SettingsLib/res/values-lo/strings.xml b/packages/SettingsLib/res/values-lo/strings.xml index 6c4598035905..2460154b5b62 100644 --- a/packages/SettingsLib/res/values-lo/strings.xml +++ b/packages/SettingsLib/res/values-lo/strings.xml @@ -40,8 +40,7 @@ <string name="connected_via_passpoint" msgid="2826205693803088747">"ເຊື່ອມຕໍ່ຜ່ານ %1$s ແລ້ວ"</string> <string name="available_via_passpoint" msgid="1617440946846329613">"ມີໃຫ້ຜ່ານ %1$s"</string> <string name="wifi_connected_no_internet" msgid="3149853966840874992">"ເຊື່ອມຕໍ່ແລ້ວ, ບໍ່ມີອິນເຕີເນັດ"</string> - <!-- no translation found for wifi_ap_unable_to_handle_new_sta (5348824313514404541) --> - <skip /> + <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"ຈຸດການເຂົ້າເຖິງເຕັມຊົ່ວຄາວ"</string> <string name="speed_label_very_slow" msgid="1867055264243608530">"ຊ້າຫຼາຍ"</string> <string name="speed_label_slow" msgid="813109590815810235">"ຊ້າ"</string> <string name="speed_label_okay" msgid="2331665440671174858">"ຕົກລົງ"</string> @@ -104,10 +103,8 @@ <string name="accessibility_wifi_two_bars" msgid="3569851234710034416">"ສັນຍານ Wi-Fi ສອງຂີດ."</string> <string name="accessibility_wifi_three_bars" msgid="8134185644861380311">"Wifi ສາມຂີດ."</string> <string name="accessibility_wifi_signal_full" msgid="7061045677694702">"ສັນຍານ Wi-Fi ເຕັມ"</string> - <!-- no translation found for accessibility_wifi_security_type_none (1223747559986205423) --> - <skip /> - <!-- no translation found for accessibility_wifi_security_type_secured (862921720418885331) --> - <skip /> + <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> diff --git a/packages/SettingsLib/res/values-lt/strings.xml b/packages/SettingsLib/res/values-lt/strings.xml index 3c16a5953a83..c5a035f60653 100644 --- a/packages/SettingsLib/res/values-lt/strings.xml +++ b/packages/SettingsLib/res/values-lt/strings.xml @@ -40,8 +40,7 @@ <string name="connected_via_passpoint" msgid="2826205693803088747">"Prisijungta naudojant „%1$s“"</string> <string name="available_via_passpoint" msgid="1617440946846329613">"Pasiekiama naudojant „%1$s“"</string> <string name="wifi_connected_no_internet" msgid="3149853966840874992">"Prisijungta, nėra interneto"</string> - <!-- no translation found for wifi_ap_unable_to_handle_new_sta (5348824313514404541) --> - <skip /> + <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Prieigos taškas laikinai visiškai užimtas"</string> <string name="speed_label_very_slow" msgid="1867055264243608530">"Labai lėtas"</string> <string name="speed_label_slow" msgid="813109590815810235">"Lėtas"</string> <string name="speed_label_okay" msgid="2331665440671174858">"Gerai"</string> @@ -104,10 +103,8 @@ <string name="accessibility_wifi_two_bars" msgid="3569851234710034416">"Dvi „Wi-Fi“ signalo juostos."</string> <string name="accessibility_wifi_three_bars" msgid="8134185644861380311">"Trys „Wi-Fi“ signalo juostos."</string> <string name="accessibility_wifi_signal_full" msgid="7061045677694702">"Stiprus „Wi-Fi“ signalas."</string> - <!-- no translation found for accessibility_wifi_security_type_none (1223747559986205423) --> - <skip /> - <!-- no translation found for accessibility_wifi_security_type_secured (862921720418885331) --> - <skip /> + <string name="accessibility_wifi_security_type_none" msgid="1223747559986205423">"Atviras tinklas"</string> + <string name="accessibility_wifi_security_type_secured" msgid="862921720418885331">"Saugus tinklas"</string> <string name="process_kernel_label" msgid="3916858646836739323">"„Android“ OS"</string> <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"Pašalintos programos"</string> <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"Pašalintos programos ir naudotojai"</string> diff --git a/packages/SettingsLib/res/values-lv/strings.xml b/packages/SettingsLib/res/values-lv/strings.xml index e02b1b460675..89cc9580ceed 100644 --- a/packages/SettingsLib/res/values-lv/strings.xml +++ b/packages/SettingsLib/res/values-lv/strings.xml @@ -40,8 +40,7 @@ <string name="connected_via_passpoint" msgid="2826205693803088747">"Savienots, izmantojot %1$s"</string> <string name="available_via_passpoint" msgid="1617440946846329613">"Pieejams, izmantojot %1$s"</string> <string name="wifi_connected_no_internet" msgid="3149853966840874992">"Savienots, nav piekļuves internetam"</string> - <!-- no translation found for wifi_ap_unable_to_handle_new_sta (5348824313514404541) --> - <skip /> + <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Piekļuves punkts īslaicīgi ir pilns"</string> <string name="speed_label_very_slow" msgid="1867055264243608530">"Ļoti lēns"</string> <string name="speed_label_slow" msgid="813109590815810235">"Lēns"</string> <string name="speed_label_okay" msgid="2331665440671174858">"Labi"</string> @@ -104,10 +103,8 @@ <string name="accessibility_wifi_two_bars" msgid="3569851234710034416">"Wi-Fi: divas joslas"</string> <string name="accessibility_wifi_three_bars" msgid="8134185644861380311">"Wi-Fi: trīs joslas"</string> <string name="accessibility_wifi_signal_full" msgid="7061045677694702">"Pilna piekļuve Wi-Fi signālam"</string> - <!-- no translation found for accessibility_wifi_security_type_none (1223747559986205423) --> - <skip /> - <!-- no translation found for accessibility_wifi_security_type_secured (862921720418885331) --> - <skip /> + <string name="accessibility_wifi_security_type_none" msgid="1223747559986205423">"Atvērts tīkls"</string> + <string name="accessibility_wifi_security_type_secured" msgid="862921720418885331">"Drošs tīkls"</string> <string name="process_kernel_label" msgid="3916858646836739323">"Android OS"</string> <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"Noņemtās lietotnes"</string> <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"Noņemtās lietotnes un lietotāji"</string> diff --git a/packages/SettingsLib/res/values-mk/strings.xml b/packages/SettingsLib/res/values-mk/strings.xml index 920c38f2ccc2..6bd9c5f9fc25 100644 --- a/packages/SettingsLib/res/values-mk/strings.xml +++ b/packages/SettingsLib/res/values-mk/strings.xml @@ -40,8 +40,7 @@ <string name="connected_via_passpoint" msgid="2826205693803088747">"Поврзано преку %1$s"</string> <string name="available_via_passpoint" msgid="1617440946846329613">"Достапно преку %1$s"</string> <string name="wifi_connected_no_internet" msgid="3149853966840874992">"Поврзана, нема интернет"</string> - <!-- no translation found for wifi_ap_unable_to_handle_new_sta (5348824313514404541) --> - <skip /> + <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Пристапната точка привремено е преоптоварена"</string> <string name="speed_label_very_slow" msgid="1867055264243608530">"Многу бавна"</string> <string name="speed_label_slow" msgid="813109590815810235">"Бавна"</string> <string name="speed_label_okay" msgid="2331665440671174858">"Во ред"</string> @@ -104,10 +103,8 @@ <string name="accessibility_wifi_two_bars" msgid="3569851234710034416">"Две црти на Wi-Fi."</string> <string name="accessibility_wifi_three_bars" msgid="8134185644861380311">"Три црти на Wi-Fi."</string> <string name="accessibility_wifi_signal_full" msgid="7061045677694702">"Полн сигнал на Wi-Fi."</string> - <!-- no translation found for accessibility_wifi_security_type_none (1223747559986205423) --> - <skip /> - <!-- no translation found for accessibility_wifi_security_type_secured (862921720418885331) --> - <skip /> + <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"</string> <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"Отстранети апликации"</string> <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"Отстранети апликации и корисници"</string> diff --git a/packages/SettingsLib/res/values-ml/strings.xml b/packages/SettingsLib/res/values-ml/strings.xml index b2f7fc0da8f7..5e0c25c221c8 100644 --- a/packages/SettingsLib/res/values-ml/strings.xml +++ b/packages/SettingsLib/res/values-ml/strings.xml @@ -40,8 +40,7 @@ <string name="connected_via_passpoint" msgid="2826205693803088747">"%1$s വഴി ബന്ധിപ്പിച്ചു"</string> <string name="available_via_passpoint" msgid="1617440946846329613">"%1$s വഴി ലഭ്യം"</string> <string name="wifi_connected_no_internet" msgid="3149853966840874992">"കണക്റ്റുചെയ്തിരിക്കുന്നു, ഇന്റർനെറ്റില്ല"</string> - <!-- no translation found for wifi_ap_unable_to_handle_new_sta (5348824313514404541) --> - <skip /> + <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"ആക്സസ് പോയിന്റ് താൽക്കാലികമായി നിറഞ്ഞിരിക്കുന്നു"</string> <string name="speed_label_very_slow" msgid="1867055264243608530">"വളരെ കുറഞ്ഞ വേഗത്തിൽ"</string> <string name="speed_label_slow" msgid="813109590815810235">"കുറഞ്ഞ വേഗത്തിൽ"</string> <string name="speed_label_okay" msgid="2331665440671174858">"ശരി"</string> @@ -104,10 +103,8 @@ <string name="accessibility_wifi_two_bars" msgid="3569851234710034416">"വൈഫൈ സിഗ്നൽ രണ്ട് ബാറുകൾ."</string> <string name="accessibility_wifi_three_bars" msgid="8134185644861380311">"വൈഫൈ സിഗ്നൽ മൂന്ന് ബാറുകൾ."</string> <string name="accessibility_wifi_signal_full" msgid="7061045677694702">"വൈഫൈ മികച്ച സിഗ്നൽ."</string> - <!-- no translation found for accessibility_wifi_security_type_none (1223747559986205423) --> - <skip /> - <!-- no translation found for accessibility_wifi_security_type_secured (862921720418885331) --> - <skip /> + <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> diff --git a/packages/SettingsLib/res/values-mn/strings.xml b/packages/SettingsLib/res/values-mn/strings.xml index cd4d44ff95a7..f0020fe8cbae 100644 --- a/packages/SettingsLib/res/values-mn/strings.xml +++ b/packages/SettingsLib/res/values-mn/strings.xml @@ -40,8 +40,7 @@ <string name="connected_via_passpoint" msgid="2826205693803088747">"%1$s-р холбогдсон"</string> <string name="available_via_passpoint" msgid="1617440946846329613">"%1$s-р боломжтой"</string> <string name="wifi_connected_no_internet" msgid="3149853966840874992">"Холбогдсон, интернэт байхгүй байна"</string> - <!-- no translation found for wifi_ap_unable_to_handle_new_sta (5348824313514404541) --> - <skip /> + <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Хандах цэг түр хугацаанд дүүрсэн байна"</string> <string name="speed_label_very_slow" msgid="1867055264243608530">"Маш удаан"</string> <string name="speed_label_slow" msgid="813109590815810235">"Удаан"</string> <string name="speed_label_okay" msgid="2331665440671174858">"ЗА"</string> @@ -104,10 +103,8 @@ <string name="accessibility_wifi_two_bars" msgid="3569851234710034416">"Wifi сүлжээний дохио хоёр баганатай байна."</string> <string name="accessibility_wifi_three_bars" msgid="8134185644861380311">"Wifi сүлжээний дохио гурван баганатай байна."</string> <string name="accessibility_wifi_signal_full" msgid="7061045677694702">"Wifi-н дохио дүүрэн байна."</string> - <!-- no translation found for accessibility_wifi_security_type_none (1223747559986205423) --> - <skip /> - <!-- no translation found for accessibility_wifi_security_type_secured (862921720418885331) --> - <skip /> + <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">"Андройд OS"</string> <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"Арилгасан апп-ууд"</string> <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"Арилгасан апп-ууд болон хэрэглэгчид"</string> diff --git a/packages/SettingsLib/res/values-mr/strings.xml b/packages/SettingsLib/res/values-mr/strings.xml index 16dd560f9f45..c056d8ea324f 100644 --- a/packages/SettingsLib/res/values-mr/strings.xml +++ b/packages/SettingsLib/res/values-mr/strings.xml @@ -40,8 +40,7 @@ <string name="connected_via_passpoint" msgid="2826205693803088747">"%1$s द्वारे कनेक्ट केले"</string> <string name="available_via_passpoint" msgid="1617440946846329613">"%1$s द्वारे उपलब्ध"</string> <string name="wifi_connected_no_internet" msgid="3149853966840874992">"कनेक्ट केले, इंटरनेट नाही"</string> - <!-- no translation found for wifi_ap_unable_to_handle_new_sta (5348824313514404541) --> - <skip /> + <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"अॅक्सेस पॉइंट तात्पुरते भरलेले"</string> <string name="speed_label_very_slow" msgid="1867055264243608530">"खूप हळू"</string> <string name="speed_label_slow" msgid="813109590815810235">"हळू"</string> <string name="speed_label_okay" msgid="2331665440671174858">"ठीक आहे"</string> @@ -104,10 +103,8 @@ <string name="accessibility_wifi_two_bars" msgid="3569851234710034416">"वाय फाय दोन बार."</string> <string name="accessibility_wifi_three_bars" msgid="8134185644861380311">"वाय फाय तीन बार."</string> <string name="accessibility_wifi_signal_full" msgid="7061045677694702">"वाय फाय सिग्नल संपूर्ण आहे."</string> - <!-- no translation found for accessibility_wifi_security_type_none (1223747559986205423) --> - <skip /> - <!-- no translation found for accessibility_wifi_security_type_secured (862921720418885331) --> - <skip /> + <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> diff --git a/packages/SettingsLib/res/values-ms/strings.xml b/packages/SettingsLib/res/values-ms/strings.xml index 840ca8e99be7..a8424ff0e04d 100644 --- a/packages/SettingsLib/res/values-ms/strings.xml +++ b/packages/SettingsLib/res/values-ms/strings.xml @@ -40,8 +40,7 @@ <string name="connected_via_passpoint" msgid="2826205693803088747">"Disambungkan melalui %1$s"</string> <string name="available_via_passpoint" msgid="1617440946846329613">"Tersedia melalui %1$s"</string> <string name="wifi_connected_no_internet" msgid="3149853966840874992">"Disambungkan, tiada Internet"</string> - <!-- no translation found for wifi_ap_unable_to_handle_new_sta (5348824313514404541) --> - <skip /> + <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Titik akses penuh buat sementara waktu"</string> <string name="speed_label_very_slow" msgid="1867055264243608530">"Sangat Perlahan"</string> <string name="speed_label_slow" msgid="813109590815810235">"Perlahan"</string> <string name="speed_label_okay" msgid="2331665440671174858">"OK"</string> @@ -104,10 +103,8 @@ <string name="accessibility_wifi_two_bars" msgid="3569851234710034416">"Wi-Fi dua bar."</string> <string name="accessibility_wifi_three_bars" msgid="8134185644861380311">"Wi-Fi tiga bar."</string> <string name="accessibility_wifi_signal_full" msgid="7061045677694702">"Isyarat Wi-Fi penuh."</string> - <!-- no translation found for accessibility_wifi_security_type_none (1223747559986205423) --> - <skip /> - <!-- no translation found for accessibility_wifi_security_type_secured (862921720418885331) --> - <skip /> + <string name="accessibility_wifi_security_type_none" msgid="1223747559986205423">"Rangkaian terbuka"</string> + <string name="accessibility_wifi_security_type_secured" msgid="862921720418885331">"Rangkaian selamat"</string> <string name="process_kernel_label" msgid="3916858646836739323">"OS Android"</string> <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"Apl dialih keluar"</string> <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"Apl dan pengguna yang dialih keluar"</string> diff --git a/packages/SettingsLib/res/values-my/strings.xml b/packages/SettingsLib/res/values-my/strings.xml index a32797eb798e..40cd3e921eb2 100644 --- a/packages/SettingsLib/res/values-my/strings.xml +++ b/packages/SettingsLib/res/values-my/strings.xml @@ -40,8 +40,7 @@ <string name="connected_via_passpoint" msgid="2826205693803088747">"%1$s မှတစ်ဆင့် ချိတ်ဆက်ထားသည်"</string> <string name="available_via_passpoint" msgid="1617440946846329613">"%1$s မှတစ်ဆင့်ရနိုင်သည်"</string> <string name="wifi_connected_no_internet" msgid="3149853966840874992">"ချိတ်ဆက်ထားသည်၊ အင်တာနက်မရှိ"</string> - <!-- no translation found for wifi_ap_unable_to_handle_new_sta (5348824313514404541) --> - <skip /> + <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"ကွန်ရက်ချိတ်ဆက်မှု ယာယီပြည့်နေသည်"</string> <string name="speed_label_very_slow" msgid="1867055264243608530">"အလွန်နှေး"</string> <string name="speed_label_slow" msgid="813109590815810235">"နှေး"</string> <string name="speed_label_okay" msgid="2331665440671174858">"OK"</string> @@ -104,10 +103,8 @@ <string name="accessibility_wifi_two_bars" msgid="3569851234710034416">"Wi-Fi ၂ ဘား"</string> <string name="accessibility_wifi_three_bars" msgid="8134185644861380311">"Wi-Fi ၃ ဘား"</string> <string name="accessibility_wifi_signal_full" msgid="7061045677694702">"Wi-Fi အပြည့်ရှိ"</string> - <!-- no translation found for accessibility_wifi_security_type_none (1223747559986205423) --> - <skip /> - <!-- no translation found for accessibility_wifi_security_type_secured (862921720418885331) --> - <skip /> + <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 စနစ်"</string> <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"ဖယ်ရှားထားသော အက်ပ်များ"</string> <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"ဖယ်ရှားထားသော အပလီကေးရှင်းနှင့် သုံးစွဲသူများ"</string> diff --git a/packages/SettingsLib/res/values-nb/strings.xml b/packages/SettingsLib/res/values-nb/strings.xml index 7995259966eb..b125a9ca658c 100644 --- a/packages/SettingsLib/res/values-nb/strings.xml +++ b/packages/SettingsLib/res/values-nb/strings.xml @@ -40,8 +40,7 @@ <string name="connected_via_passpoint" msgid="2826205693803088747">"Tilkoblet via %1$s"</string> <string name="available_via_passpoint" msgid="1617440946846329613">"Tilgjengelig via %1$s"</string> <string name="wifi_connected_no_internet" msgid="3149853966840874992">"Tilkoblet – ingen Internett-forbindelse"</string> - <!-- no translation found for wifi_ap_unable_to_handle_new_sta (5348824313514404541) --> - <skip /> + <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Tilgangspunktet er midlertidig fullt"</string> <string name="speed_label_very_slow" msgid="1867055264243608530">"Veldig treg"</string> <string name="speed_label_slow" msgid="813109590815810235">"Treg"</string> <string name="speed_label_okay" msgid="2331665440671174858">"Ok"</string> @@ -104,10 +103,8 @@ <string name="accessibility_wifi_two_bars" msgid="3569851234710034416">"Wi-Fi-signal med to stolper."</string> <string name="accessibility_wifi_three_bars" msgid="8134185644861380311">"Wi-Fi-signal med tre stolper."</string> <string name="accessibility_wifi_signal_full" msgid="7061045677694702">"Wi-Fi-signalet er ved full styrke."</string> - <!-- no translation found for accessibility_wifi_security_type_none (1223747559986205423) --> - <skip /> - <!-- no translation found for accessibility_wifi_security_type_secured (862921720418885331) --> - <skip /> + <string name="accessibility_wifi_security_type_none" msgid="1223747559986205423">"Åpent nettverk"</string> + <string name="accessibility_wifi_security_type_secured" msgid="862921720418885331">"Sikkert nettverk"</string> <string name="process_kernel_label" msgid="3916858646836739323">"Android-operativsystem"</string> <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"Fjernede apper"</string> <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"Fjernede apper og brukere"</string> diff --git a/packages/SettingsLib/res/values-ne/strings.xml b/packages/SettingsLib/res/values-ne/strings.xml index 6ea0e5076eec..2870d2e4c306 100644 --- a/packages/SettingsLib/res/values-ne/strings.xml +++ b/packages/SettingsLib/res/values-ne/strings.xml @@ -40,8 +40,7 @@ <string name="connected_via_passpoint" msgid="2826205693803088747">"%1$s मार्फत जडित"</string> <string name="available_via_passpoint" msgid="1617440946846329613">"%1$s मार्फत उपलब्ध"</string> <string name="wifi_connected_no_internet" msgid="3149853966840874992">"जडित, इन्टरनेट चलेको छैन"</string> - <!-- no translation found for wifi_ap_unable_to_handle_new_sta (5348824313514404541) --> - <skip /> + <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"पहुँचसम्बन्धी स्थान अस्थायी रूपमा भरिएको छ"</string> <string name="speed_label_very_slow" msgid="1867055264243608530">"धेरै ढिलो"</string> <string name="speed_label_slow" msgid="813109590815810235">"बिस्तारै"</string> <string name="speed_label_okay" msgid="2331665440671174858">"ठीक छ"</string> @@ -104,10 +103,8 @@ <string name="accessibility_wifi_two_bars" msgid="3569851234710034416">"Wi-Fi दुई पट्टि।"</string> <string name="accessibility_wifi_three_bars" msgid="8134185644861380311">"Wi-Fi तीन बारहरू।"</string> <string name="accessibility_wifi_signal_full" msgid="7061045677694702">"पूर्ण Wi-Fi सिंग्नल।"</string> - <!-- no translation found for accessibility_wifi_security_type_none (1223747559986205423) --> - <skip /> - <!-- no translation found for accessibility_wifi_security_type_secured (862921720418885331) --> - <skip /> + <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">"एन्ड्रोइड OS"</string> <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"हटाइएका अनुप्रयोगहरू"</string> <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"अनुप्रयोगहरू र प्रयोगकर्ताहरू हटाइयो।"</string> diff --git a/packages/SettingsLib/res/values-nl/strings.xml b/packages/SettingsLib/res/values-nl/strings.xml index f1a76483d7bd..b021680d15e8 100644 --- a/packages/SettingsLib/res/values-nl/strings.xml +++ b/packages/SettingsLib/res/values-nl/strings.xml @@ -40,8 +40,7 @@ <string name="connected_via_passpoint" msgid="2826205693803088747">"Verbonden via %1$s"</string> <string name="available_via_passpoint" msgid="1617440946846329613">"Beschikbaar via %1$s"</string> <string name="wifi_connected_no_internet" msgid="3149853966840874992">"Verbonden, geen internet"</string> - <!-- no translation found for wifi_ap_unable_to_handle_new_sta (5348824313514404541) --> - <skip /> + <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Toegangspunt tijdelijk vol"</string> <string name="speed_label_very_slow" msgid="1867055264243608530">"Zeer langzaam"</string> <string name="speed_label_slow" msgid="813109590815810235">"Langzaam"</string> <string name="speed_label_okay" msgid="2331665440671174858">"Redelijk"</string> @@ -104,10 +103,8 @@ <string name="accessibility_wifi_two_bars" msgid="3569851234710034416">"Wifi: twee streepjes."</string> <string name="accessibility_wifi_three_bars" msgid="8134185644861380311">"Wifi: drie streepjes."</string> <string name="accessibility_wifi_signal_full" msgid="7061045677694702">"Wifii-signaal is op volledige sterkte."</string> - <!-- no translation found for accessibility_wifi_security_type_none (1223747559986205423) --> - <skip /> - <!-- no translation found for accessibility_wifi_security_type_secured (862921720418885331) --> - <skip /> + <string name="accessibility_wifi_security_type_none" msgid="1223747559986205423">"Open netwerk"</string> + <string name="accessibility_wifi_security_type_secured" msgid="862921720418885331">"Beveiligd netwerk"</string> <string name="process_kernel_label" msgid="3916858646836739323">"Android-besturingssysteem"</string> <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"Verwijderde apps"</string> <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"Verwijderde apps en gebruikers"</string> diff --git a/packages/SettingsLib/res/values-pa/strings.xml b/packages/SettingsLib/res/values-pa/strings.xml index 8efe422482c3..e1c1a4a45e8c 100644 --- a/packages/SettingsLib/res/values-pa/strings.xml +++ b/packages/SettingsLib/res/values-pa/strings.xml @@ -40,8 +40,7 @@ <string name="connected_via_passpoint" msgid="2826205693803088747">"%1$s ਰਾਹੀਂ ਕਨੈਕਟ ਕੀਤਾ"</string> <string name="available_via_passpoint" msgid="1617440946846329613">"%1$s ਰਾਹੀਂ ਉਪਲਬਧ"</string> <string name="wifi_connected_no_internet" msgid="3149853966840874992">"ਕਨੈਕਟ ਕੀਤਾ, ਕੋਈ ਇੰਟਰਨੈਟ ਨਹੀਂ"</string> - <!-- no translation found for wifi_ap_unable_to_handle_new_sta (5348824313514404541) --> - <skip /> + <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"ਪਹੁੰਚ ਪੁਆਇੰਟ ਅਸਥਾਈ ਤੌਰ \'ਤੇ ਸੰਪੂਰਨ ਰੁਝੇਂਵੇਂ ਵਿੱਚ ਹੈ"</string> <string name="speed_label_very_slow" msgid="1867055264243608530">"ਬਹੁਤ ਹੌਲੀ"</string> <string name="speed_label_slow" msgid="813109590815810235">"ਹੌਲੀ"</string> <string name="speed_label_okay" msgid="2331665440671174858">"ਠੀਕ ਹੈ"</string> @@ -104,10 +103,8 @@ <string name="accessibility_wifi_two_bars" msgid="3569851234710034416">"Wifi ਦੋ ਬਾਰ।"</string> <string name="accessibility_wifi_three_bars" msgid="8134185644861380311">"Wifi ਤਿੰਨ ਬਾਰ।"</string> <string name="accessibility_wifi_signal_full" msgid="7061045677694702">"Wifi ਸਿਗਨਲ ਪੂਰਾ।"</string> - <!-- no translation found for accessibility_wifi_security_type_none (1223747559986205423) --> - <skip /> - <!-- no translation found for accessibility_wifi_security_type_secured (862921720418885331) --> - <skip /> + <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> diff --git a/packages/SettingsLib/res/values-pl/strings.xml b/packages/SettingsLib/res/values-pl/strings.xml index 9b05d6b41932..e4c74503ecea 100644 --- a/packages/SettingsLib/res/values-pl/strings.xml +++ b/packages/SettingsLib/res/values-pl/strings.xml @@ -40,8 +40,7 @@ <string name="connected_via_passpoint" msgid="2826205693803088747">"Połączono przez %1$s"</string> <string name="available_via_passpoint" msgid="1617440946846329613">"Dostępne przez %1$s"</string> <string name="wifi_connected_no_internet" msgid="3149853966840874992">"Połączono, brak internetu"</string> - <!-- no translation found for wifi_ap_unable_to_handle_new_sta (5348824313514404541) --> - <skip /> + <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Punkt dostępu jest tymczasowo zajęty"</string> <string name="speed_label_very_slow" msgid="1867055264243608530">"Bardzo wolna"</string> <string name="speed_label_slow" msgid="813109590815810235">"Wolna"</string> <string name="speed_label_okay" msgid="2331665440671174858">"OK"</string> @@ -104,10 +103,8 @@ <string name="accessibility_wifi_two_bars" msgid="3569851234710034416">"Wi-Fi: dwa paski."</string> <string name="accessibility_wifi_three_bars" msgid="8134185644861380311">"Wi-Fi: trzy paski."</string> <string name="accessibility_wifi_signal_full" msgid="7061045677694702">"Wi-Fi: pełna moc sygnału."</string> - <!-- no translation found for accessibility_wifi_security_type_none (1223747559986205423) --> - <skip /> - <!-- no translation found for accessibility_wifi_security_type_secured (862921720418885331) --> - <skip /> + <string name="accessibility_wifi_security_type_none" msgid="1223747559986205423">"Sieć otwarta"</string> + <string name="accessibility_wifi_security_type_secured" msgid="862921720418885331">"Sieć zabezpieczona"</string> <string name="process_kernel_label" msgid="3916858646836739323">"System operacyjny Android"</string> <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"Usunięte aplikacje"</string> <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"Usunięte aplikacje i użytkownicy"</string> diff --git a/packages/SettingsLib/res/values-pt/strings.xml b/packages/SettingsLib/res/values-pt/strings.xml index 0d06ef6f9084..7e6e2dc48990 100644 --- a/packages/SettingsLib/res/values-pt/strings.xml +++ b/packages/SettingsLib/res/values-pt/strings.xml @@ -40,8 +40,7 @@ <string name="connected_via_passpoint" msgid="2826205693803088747">"Conectado via %1$s"</string> <string name="available_via_passpoint" msgid="1617440946846329613">"Disponível via %1$s"</string> <string name="wifi_connected_no_internet" msgid="3149853966840874992">"Conectada, sem Internet"</string> - <!-- no translation found for wifi_ap_unable_to_handle_new_sta (5348824313514404541) --> - <skip /> + <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Ponto de acesso temporariamente cheio"</string> <string name="speed_label_very_slow" msgid="1867055264243608530">"Muito lenta"</string> <string name="speed_label_slow" msgid="813109590815810235">"Lenta"</string> <string name="speed_label_okay" msgid="2331665440671174858">"Ok"</string> @@ -104,10 +103,8 @@ <string name="accessibility_wifi_two_bars" msgid="3569851234710034416">"Duas barras de Wi-Fi."</string> <string name="accessibility_wifi_three_bars" msgid="8134185644861380311">"Três barras de Wi-Fi."</string> <string name="accessibility_wifi_signal_full" msgid="7061045677694702">"Sinal Wi-Fi cheio."</string> - <!-- no translation found for accessibility_wifi_security_type_none (1223747559986205423) --> - <skip /> - <!-- no translation found for accessibility_wifi_security_type_secured (862921720418885331) --> - <skip /> + <string name="accessibility_wifi_security_type_none" msgid="1223747559986205423">"Rede aberta"</string> + <string name="accessibility_wifi_security_type_secured" msgid="862921720418885331">"Rede segura"</string> <string name="process_kernel_label" msgid="3916858646836739323">"Sistema operacional Android"</string> <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"Apps removidos"</string> <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"Apps e usuários removidos"</string> diff --git a/packages/SettingsLib/res/values-ro/strings.xml b/packages/SettingsLib/res/values-ro/strings.xml index f72280638742..c81673dbd964 100644 --- a/packages/SettingsLib/res/values-ro/strings.xml +++ b/packages/SettingsLib/res/values-ro/strings.xml @@ -40,8 +40,7 @@ <string name="connected_via_passpoint" msgid="2826205693803088747">"Conectată prin %1$s"</string> <string name="available_via_passpoint" msgid="1617440946846329613">"Disponibilă prin %1$s"</string> <string name="wifi_connected_no_internet" msgid="3149853966840874992">"Conectată, fără internet"</string> - <!-- no translation found for wifi_ap_unable_to_handle_new_sta (5348824313514404541) --> - <skip /> + <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Punctul de acces este temporar plin"</string> <string name="speed_label_very_slow" msgid="1867055264243608530">"Foarte lentă"</string> <string name="speed_label_slow" msgid="813109590815810235">"Lentă"</string> <string name="speed_label_okay" msgid="2331665440671174858">"Bine"</string> @@ -104,10 +103,8 @@ <string name="accessibility_wifi_two_bars" msgid="3569851234710034416">"Semnal Wi-Fi: două bare."</string> <string name="accessibility_wifi_three_bars" msgid="8134185644861380311">"Semnal Wi-Fi: trei bare."</string> <string name="accessibility_wifi_signal_full" msgid="7061045677694702">"Semnal Wi-Fi: complet."</string> - <!-- no translation found for accessibility_wifi_security_type_none (1223747559986205423) --> - <skip /> - <!-- no translation found for accessibility_wifi_security_type_secured (862921720418885331) --> - <skip /> + <string name="accessibility_wifi_security_type_none" msgid="1223747559986205423">"Rețea nesecurizată"</string> + <string name="accessibility_wifi_security_type_secured" msgid="862921720418885331">"Securizați rețeaua"</string> <string name="process_kernel_label" msgid="3916858646836739323">"Sistem de operare Android"</string> <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"Aplicații eliminate"</string> <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"Aplicații și utilizatori eliminați"</string> diff --git a/packages/SettingsLib/res/values-ru/strings.xml b/packages/SettingsLib/res/values-ru/strings.xml index a1ad9c33db89..9a28e7980a8d 100644 --- a/packages/SettingsLib/res/values-ru/strings.xml +++ b/packages/SettingsLib/res/values-ru/strings.xml @@ -40,8 +40,7 @@ <string name="connected_via_passpoint" msgid="2826205693803088747">"Подключено к %1$s"</string> <string name="available_via_passpoint" msgid="1617440946846329613">"Доступно через %1$s"</string> <string name="wifi_connected_no_internet" msgid="3149853966840874992">"Подключено, без Интернета"</string> - <!-- no translation found for wifi_ap_unable_to_handle_new_sta (5348824313514404541) --> - <skip /> + <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"К точке доступа подключено слишком много устройств"</string> <string name="speed_label_very_slow" msgid="1867055264243608530">"Очень медленная"</string> <string name="speed_label_slow" msgid="813109590815810235">"Медленная"</string> <string name="speed_label_okay" msgid="2331665440671174858">"ОК"</string> @@ -104,10 +103,8 @@ <string name="accessibility_wifi_two_bars" msgid="3569851234710034416">"Wi-Fi: два деления"</string> <string name="accessibility_wifi_three_bars" msgid="8134185644861380311">"Wi-Fi: три деления"</string> <string name="accessibility_wifi_signal_full" msgid="7061045677694702">"Wi-Fi: надежный сигнал"</string> - <!-- no translation found for accessibility_wifi_security_type_none (1223747559986205423) --> - <skip /> - <!-- no translation found for accessibility_wifi_security_type_secured (862921720418885331) --> - <skip /> + <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"</string> <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"Удаленные приложения"</string> <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"Удаленные приложения и пользователи"</string> diff --git a/packages/SettingsLib/res/values-si/strings.xml b/packages/SettingsLib/res/values-si/strings.xml index 257e27e579e6..afe84f6ae482 100644 --- a/packages/SettingsLib/res/values-si/strings.xml +++ b/packages/SettingsLib/res/values-si/strings.xml @@ -40,8 +40,7 @@ <string name="connected_via_passpoint" msgid="2826205693803088747">"%1$s හරහා සම්බන්ධ විය"</string> <string name="available_via_passpoint" msgid="1617440946846329613">"%1$s හරහා ලබා ගැනීමට හැකිය"</string> <string name="wifi_connected_no_internet" msgid="3149853966840874992">"සම්බන්ධයි, අන්තර්ජාලය නැත"</string> - <!-- no translation found for wifi_ap_unable_to_handle_new_sta (5348824313514404541) --> - <skip /> + <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"ප්රවේශ ලක්ෂ්ය තාවකාලිකව පිරී ඇත"</string> <string name="speed_label_very_slow" msgid="1867055264243608530">"ඉතා මන්දගාමී"</string> <string name="speed_label_slow" msgid="813109590815810235">"මන්දගාමී"</string> <string name="speed_label_okay" msgid="2331665440671174858">"හරි"</string> @@ -104,10 +103,8 @@ <string name="accessibility_wifi_two_bars" msgid="3569851234710034416">"Wifi තීරු දෙකයි."</string> <string name="accessibility_wifi_three_bars" msgid="8134185644861380311">"WiFi තීරු තුනයි."</string> <string name="accessibility_wifi_signal_full" msgid="7061045677694702">"Wifi සංඥාව පිරී ඇත."</string> - <!-- no translation found for accessibility_wifi_security_type_none (1223747559986205423) --> - <skip /> - <!-- no translation found for accessibility_wifi_security_type_secured (862921720418885331) --> - <skip /> + <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> diff --git a/packages/SettingsLib/res/values-sk/strings.xml b/packages/SettingsLib/res/values-sk/strings.xml index dd2b79367dc7..1599d80f32f8 100644 --- a/packages/SettingsLib/res/values-sk/strings.xml +++ b/packages/SettingsLib/res/values-sk/strings.xml @@ -40,8 +40,7 @@ <string name="connected_via_passpoint" msgid="2826205693803088747">"Pripojené prostredníctvom %1$s"</string> <string name="available_via_passpoint" msgid="1617440946846329613">"K dispozícii prostredníctvom %1$s"</string> <string name="wifi_connected_no_internet" msgid="3149853966840874992">"Pripojené, žiadny internet"</string> - <!-- no translation found for wifi_ap_unable_to_handle_new_sta (5348824313514404541) --> - <skip /> + <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Prístupový bod je dočasne plný"</string> <string name="speed_label_very_slow" msgid="1867055264243608530">"Veľmi nízka"</string> <string name="speed_label_slow" msgid="813109590815810235">"Nízka"</string> <string name="speed_label_okay" msgid="2331665440671174858">"OK"</string> @@ -104,10 +103,8 @@ <string name="accessibility_wifi_two_bars" msgid="3569851234710034416">"Dve čiarky signálu Wi-Fi."</string> <string name="accessibility_wifi_three_bars" msgid="8134185644861380311">"Tri čiarky signálu Wi-Fi."</string> <string name="accessibility_wifi_signal_full" msgid="7061045677694702">"Plný signál Wi-Fi."</string> - <!-- no translation found for accessibility_wifi_security_type_none (1223747559986205423) --> - <skip /> - <!-- no translation found for accessibility_wifi_security_type_secured (862921720418885331) --> - <skip /> + <string name="accessibility_wifi_security_type_none" msgid="1223747559986205423">"Otvorená sieť"</string> + <string name="accessibility_wifi_security_type_secured" msgid="862921720418885331">"Zabezpečená sieť"</string> <string name="process_kernel_label" msgid="3916858646836739323">"OS Android"</string> <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"Odstránené aplikácie"</string> <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"Odstránené aplikácie a používatelia"</string> diff --git a/packages/SettingsLib/res/values-sl/strings.xml b/packages/SettingsLib/res/values-sl/strings.xml index 70b84e32e248..dbeec8a0e4fb 100644 --- a/packages/SettingsLib/res/values-sl/strings.xml +++ b/packages/SettingsLib/res/values-sl/strings.xml @@ -40,8 +40,7 @@ <string name="connected_via_passpoint" msgid="2826205693803088747">"Vzpostavljena povezava prek: %1$s"</string> <string name="available_via_passpoint" msgid="1617440946846329613">"Na voljo prek: %1$s"</string> <string name="wifi_connected_no_internet" msgid="3149853966840874992">"Vzpostavljena povezava, brez interneta"</string> - <!-- no translation found for wifi_ap_unable_to_handle_new_sta (5348824313514404541) --> - <skip /> + <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Dostopna točka je trenutno zasedena"</string> <string name="speed_label_very_slow" msgid="1867055264243608530">"Zelo počasna"</string> <string name="speed_label_slow" msgid="813109590815810235">"Počasna"</string> <string name="speed_label_okay" msgid="2331665440671174858">"V redu"</string> @@ -104,10 +103,8 @@ <string name="accessibility_wifi_two_bars" msgid="3569851234710034416">"Dve črtici signala Wi-Fi."</string> <string name="accessibility_wifi_three_bars" msgid="8134185644861380311">"Tri črtice signala Wi-Fi."</string> <string name="accessibility_wifi_signal_full" msgid="7061045677694702">"Poln signal Wi-Fi."</string> - <!-- no translation found for accessibility_wifi_security_type_none (1223747559986205423) --> - <skip /> - <!-- no translation found for accessibility_wifi_security_type_secured (862921720418885331) --> - <skip /> + <string name="accessibility_wifi_security_type_none" msgid="1223747559986205423">"Odprto omrežje"</string> + <string name="accessibility_wifi_security_type_secured" msgid="862921720418885331">"Varno omrežje"</string> <string name="process_kernel_label" msgid="3916858646836739323">"OS Android"</string> <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"Odstranjene aplikacije"</string> <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"Odstranjene aplikacije in uporabniki"</string> diff --git a/packages/SettingsLib/res/values-sq/strings.xml b/packages/SettingsLib/res/values-sq/strings.xml index e1c36ed94999..85393d736ba5 100644 --- a/packages/SettingsLib/res/values-sq/strings.xml +++ b/packages/SettingsLib/res/values-sq/strings.xml @@ -40,8 +40,7 @@ <string name="connected_via_passpoint" msgid="2826205693803088747">"E lidhur përmes %1$s"</string> <string name="available_via_passpoint" msgid="1617440946846329613">"E mundshme përmes %1$s"</string> <string name="wifi_connected_no_internet" msgid="3149853966840874992">"U lidh, nuk ka internet"</string> - <!-- no translation found for wifi_ap_unable_to_handle_new_sta (5348824313514404541) --> - <skip /> + <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Pika e qasjes është përkohësisht plot"</string> <string name="speed_label_very_slow" msgid="1867055264243608530">"Shumë e ulët"</string> <string name="speed_label_slow" msgid="813109590815810235">"E ngadaltë"</string> <string name="speed_label_okay" msgid="2331665440671174858">"Në rregull"</string> @@ -104,10 +103,8 @@ <string name="accessibility_wifi_two_bars" msgid="3569851234710034416">"Wi-Fi ka dy vija."</string> <string name="accessibility_wifi_three_bars" msgid="8134185644861380311">"Wi-Fi: tre vija."</string> <string name="accessibility_wifi_signal_full" msgid="7061045677694702">"Wi-Fi ka sinjal të plotë."</string> - <!-- no translation found for accessibility_wifi_security_type_none (1223747559986205423) --> - <skip /> - <!-- no translation found for accessibility_wifi_security_type_secured (862921720418885331) --> - <skip /> + <string name="accessibility_wifi_security_type_none" msgid="1223747559986205423">"Rrjet i hapur"</string> + <string name="accessibility_wifi_security_type_secured" msgid="862921720418885331">"Rrjet i sigurt"</string> <string name="process_kernel_label" msgid="3916858646836739323">"Sistemi operativ Android"</string> <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"Aplikacionet e hequra"</string> <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"Aplikacionet dhe përdoruesit e hequr"</string> diff --git a/packages/SettingsLib/res/values-sr/strings.xml b/packages/SettingsLib/res/values-sr/strings.xml index 6a6a9b9d3c0a..9cbb997c9c87 100644 --- a/packages/SettingsLib/res/values-sr/strings.xml +++ b/packages/SettingsLib/res/values-sr/strings.xml @@ -40,8 +40,7 @@ <string name="connected_via_passpoint" msgid="2826205693803088747">"Веза је успостављена преко приступне тачке %1$s"</string> <string name="available_via_passpoint" msgid="1617440946846329613">"Доступна је преко приступне тачке %1$s"</string> <string name="wifi_connected_no_internet" msgid="3149853966840874992">"Веза је успостављена, нема интернета"</string> - <!-- no translation found for wifi_ap_unable_to_handle_new_sta (5348824313514404541) --> - <skip /> + <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Приступна тачка је привремено заузета"</string> <string name="speed_label_very_slow" msgid="1867055264243608530">"Веома спора"</string> <string name="speed_label_slow" msgid="813109590815810235">"Спора"</string> <string name="speed_label_okay" msgid="2331665440671174858">"Потврди"</string> @@ -104,10 +103,8 @@ <string name="accessibility_wifi_two_bars" msgid="3569851234710034416">"Wi-Fi сигнал има две црте."</string> <string name="accessibility_wifi_three_bars" msgid="8134185644861380311">"Wi-Fi сигнал има три црте."</string> <string name="accessibility_wifi_signal_full" msgid="7061045677694702">"Wi-Fi сигнал је најјачи."</string> - <!-- no translation found for accessibility_wifi_security_type_none (1223747559986205423) --> - <skip /> - <!-- no translation found for accessibility_wifi_security_type_secured (862921720418885331) --> - <skip /> + <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 ОС"</string> <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"Уклоњене апликације"</string> <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"Уклоњене апликације и корисници"</string> diff --git a/packages/SettingsLib/res/values-sv/strings.xml b/packages/SettingsLib/res/values-sv/strings.xml index 29c87ccdabdb..157e5819e9e9 100644 --- a/packages/SettingsLib/res/values-sv/strings.xml +++ b/packages/SettingsLib/res/values-sv/strings.xml @@ -40,8 +40,7 @@ <string name="connected_via_passpoint" msgid="2826205693803088747">"Anslutet via %1$s"</string> <string name="available_via_passpoint" msgid="1617440946846329613">"Tillgängligt via %1$s"</string> <string name="wifi_connected_no_internet" msgid="3149853966840874992">"Ansluten, inget internet"</string> - <!-- no translation found for wifi_ap_unable_to_handle_new_sta (5348824313514404541) --> - <skip /> + <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Åtkomstpunkten har inga platser över för tillfället"</string> <string name="speed_label_very_slow" msgid="1867055264243608530">"Mycket långsam"</string> <string name="speed_label_slow" msgid="813109590815810235">"Långsam"</string> <string name="speed_label_okay" msgid="2331665440671174858">"Okej"</string> @@ -104,10 +103,8 @@ <string name="accessibility_wifi_two_bars" msgid="3569851234710034416">"Wi-Fi: två staplar."</string> <string name="accessibility_wifi_three_bars" msgid="8134185644861380311">"Wi-Fi: tre staplar."</string> <string name="accessibility_wifi_signal_full" msgid="7061045677694702">"Full signalstyrka för Wi-Fi."</string> - <!-- no translation found for accessibility_wifi_security_type_none (1223747559986205423) --> - <skip /> - <!-- no translation found for accessibility_wifi_security_type_secured (862921720418885331) --> - <skip /> + <string name="accessibility_wifi_security_type_none" msgid="1223747559986205423">"Öppet nätverk"</string> + <string name="accessibility_wifi_security_type_secured" msgid="862921720418885331">"Säkert nätverk"</string> <string name="process_kernel_label" msgid="3916858646836739323">"Operativsystemet Android"</string> <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"Borttagna appar"</string> <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"Borttagna appar och användare"</string> diff --git a/packages/SettingsLib/res/values-sw/strings.xml b/packages/SettingsLib/res/values-sw/strings.xml index 05dfd1793174..cd6a3329df43 100644 --- a/packages/SettingsLib/res/values-sw/strings.xml +++ b/packages/SettingsLib/res/values-sw/strings.xml @@ -40,8 +40,7 @@ <string name="connected_via_passpoint" msgid="2826205693803088747">"Imeunganishwa kupitia %1$s"</string> <string name="available_via_passpoint" msgid="1617440946846329613">"Inapatikana kupitia %1$s"</string> <string name="wifi_connected_no_internet" msgid="3149853966840874992">"Imeunganishwa, hakuna Intaneti"</string> - <!-- no translation found for wifi_ap_unable_to_handle_new_sta (5348824313514404541) --> - <skip /> + <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Lango la mtandao lina shughuli nyingi kwa sasa"</string> <string name="speed_label_very_slow" msgid="1867055264243608530">"Polepole Sana"</string> <string name="speed_label_slow" msgid="813109590815810235">"Polepole"</string> <string name="speed_label_okay" msgid="2331665440671174858">"Sawa"</string> @@ -104,10 +103,8 @@ <string name="accessibility_wifi_two_bars" msgid="3569851234710034416">"Vipima mtandao viwili vya Wifi."</string> <string name="accessibility_wifi_three_bars" msgid="8134185644861380311">"Vipima mtandao vitatu vya Wifi."</string> <string name="accessibility_wifi_signal_full" msgid="7061045677694702">"Nguvu kamili ya mtandao wa Wifi."</string> - <!-- no translation found for accessibility_wifi_security_type_none (1223747559986205423) --> - <skip /> - <!-- no translation found for accessibility_wifi_security_type_secured (862921720418885331) --> - <skip /> + <string name="accessibility_wifi_security_type_none" msgid="1223747559986205423">"Mtandao unaotumiwa na mtu yeyote"</string> + <string name="accessibility_wifi_security_type_secured" msgid="862921720418885331">"Mtandao salama"</string> <string name="process_kernel_label" msgid="3916858646836739323">"OS ya Android"</string> <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"Programu zilizoondolewa"</string> <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"Watumiaji na programu ziilizoondolewa"</string> diff --git a/packages/SettingsLib/res/values-ta/strings.xml b/packages/SettingsLib/res/values-ta/strings.xml index f85cca396ad3..50146000950a 100644 --- a/packages/SettingsLib/res/values-ta/strings.xml +++ b/packages/SettingsLib/res/values-ta/strings.xml @@ -40,8 +40,7 @@ <string name="connected_via_passpoint" msgid="2826205693803088747">"%1$s வழியாக இணைக்கப்பட்டது"</string> <string name="available_via_passpoint" msgid="1617440946846329613">"%1$s வழியாகக் கிடைக்கிறது"</string> <string name="wifi_connected_no_internet" msgid="3149853966840874992">"இணைக்கப்பட்டது, இணையம் இல்லை"</string> - <!-- no translation found for wifi_ap_unable_to_handle_new_sta (5348824313514404541) --> - <skip /> + <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"தற்காலிகமாக அணுகல் புள்ளி நிரம்பியுள்ளது"</string> <string name="speed_label_very_slow" msgid="1867055264243608530">"மிகவும் வேகம் குறைவானது"</string> <string name="speed_label_slow" msgid="813109590815810235">"வேகம் குறைவு"</string> <string name="speed_label_okay" msgid="2331665440671174858">"சரி"</string> @@ -104,10 +103,8 @@ <string name="accessibility_wifi_two_bars" msgid="3569851234710034416">"வைஃபை சிக்னல்: இரண்டு கோடுகள்."</string> <string name="accessibility_wifi_three_bars" msgid="8134185644861380311">"வைஃபை சிக்னல்: மூன்று கோடுகள்."</string> <string name="accessibility_wifi_signal_full" msgid="7061045677694702">"வைஃபை சிக்னல் முழுமையாக உள்ளது."</string> - <!-- no translation found for accessibility_wifi_security_type_none (1223747559986205423) --> - <skip /> - <!-- no translation found for accessibility_wifi_security_type_secured (862921720418885331) --> - <skip /> + <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> diff --git a/packages/SettingsLib/res/values-te/strings.xml b/packages/SettingsLib/res/values-te/strings.xml index aa331a56539b..f678a896941c 100644 --- a/packages/SettingsLib/res/values-te/strings.xml +++ b/packages/SettingsLib/res/values-te/strings.xml @@ -40,8 +40,7 @@ <string name="connected_via_passpoint" msgid="2826205693803088747">"%1$s ద్వారా కనెక్ట్ చేయబడింది"</string> <string name="available_via_passpoint" msgid="1617440946846329613">"%1$s ద్వారా అందుబాటులో ఉంది"</string> <string name="wifi_connected_no_internet" msgid="3149853966840874992">"కనెక్ట్ చేయబడింది, ఇంటర్నెట్ లేదు"</string> - <!-- no translation found for wifi_ap_unable_to_handle_new_sta (5348824313514404541) --> - <skip /> + <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"ప్రాప్యత పాయింట్ తాత్కాలికంగా పూర్తయింది"</string> <string name="speed_label_very_slow" msgid="1867055264243608530">"చాలా నెమ్మది"</string> <string name="speed_label_slow" msgid="813109590815810235">"నెమ్మది"</string> <string name="speed_label_okay" msgid="2331665440671174858">"సరే"</string> @@ -104,10 +103,8 @@ <string name="accessibility_wifi_two_bars" msgid="3569851234710034416">"Wifi సిగ్నల్ రెండు బార్లు ఉంది."</string> <string name="accessibility_wifi_three_bars" msgid="8134185644861380311">"Wifi సిగ్నల్ మూడు బార్లు ఉంది."</string> <string name="accessibility_wifi_signal_full" msgid="7061045677694702">"Wifi సిగ్నల్ పూర్తిగా ఉంది."</string> - <!-- no translation found for accessibility_wifi_security_type_none (1223747559986205423) --> - <skip /> - <!-- no translation found for accessibility_wifi_security_type_secured (862921720418885331) --> - <skip /> + <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> diff --git a/packages/SettingsLib/res/values-th/strings.xml b/packages/SettingsLib/res/values-th/strings.xml index 1582da5f73eb..fa5bdfe15bd5 100644 --- a/packages/SettingsLib/res/values-th/strings.xml +++ b/packages/SettingsLib/res/values-th/strings.xml @@ -40,8 +40,7 @@ <string name="connected_via_passpoint" msgid="2826205693803088747">"เชื่อมต่อผ่าน %1$s แล้ว"</string> <string name="available_via_passpoint" msgid="1617440946846329613">"พร้อมใช้งานผ่านทาง %1$s"</string> <string name="wifi_connected_no_internet" msgid="3149853966840874992">"เชื่อมต่อแล้ว ไม่พบอินเทอร์เน็ต"</string> - <!-- no translation found for wifi_ap_unable_to_handle_new_sta (5348824313514404541) --> - <skip /> + <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"จุดเข้าใช้งานเต็มชั่วคราว"</string> <string name="speed_label_very_slow" msgid="1867055264243608530">"ช้ามาก"</string> <string name="speed_label_slow" msgid="813109590815810235">"ช้า"</string> <string name="speed_label_okay" msgid="2331665440671174858">"ตกลง"</string> @@ -104,10 +103,8 @@ <string name="accessibility_wifi_two_bars" msgid="3569851234710034416">"สัญญาณ Wi-Fi 2 ขีด"</string> <string name="accessibility_wifi_three_bars" msgid="8134185644861380311">"สัญญาณ Wi-Fi 3 ขีด"</string> <string name="accessibility_wifi_signal_full" msgid="7061045677694702">"สัญญาณ Wi-Fi เต็ม"</string> - <!-- no translation found for accessibility_wifi_security_type_none (1223747559986205423) --> - <skip /> - <!-- no translation found for accessibility_wifi_security_type_secured (862921720418885331) --> - <skip /> + <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"</string> <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"แอปพลิเคชันที่นำออก"</string> <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"แอปพลิเคชันและผู้ใช้ที่นำออก"</string> diff --git a/packages/SettingsLib/res/values-tl/strings.xml b/packages/SettingsLib/res/values-tl/strings.xml index 6b0fad9baa89..c0acdc05e102 100644 --- a/packages/SettingsLib/res/values-tl/strings.xml +++ b/packages/SettingsLib/res/values-tl/strings.xml @@ -40,8 +40,7 @@ <string name="connected_via_passpoint" msgid="2826205693803088747">"Nakakonekta sa pamamagitan ng %1$s"</string> <string name="available_via_passpoint" msgid="1617440946846329613">"Available sa pamamagitan ng %1$s"</string> <string name="wifi_connected_no_internet" msgid="3149853966840874992">"Nakakonekta, walang Internet"</string> - <!-- no translation found for wifi_ap_unable_to_handle_new_sta (5348824313514404541) --> - <skip /> + <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Pansamantalang puno ang access point"</string> <string name="speed_label_very_slow" msgid="1867055264243608530">"Napakabagal"</string> <string name="speed_label_slow" msgid="813109590815810235">"Mabagal"</string> <string name="speed_label_okay" msgid="2331665440671174858">"OK"</string> @@ -104,10 +103,8 @@ <string name="accessibility_wifi_two_bars" msgid="3569851234710034416">"May dalawang bar ang Wifi."</string> <string name="accessibility_wifi_three_bars" msgid="8134185644861380311">"May tatlong bar ang Wifi."</string> <string name="accessibility_wifi_signal_full" msgid="7061045677694702">"Puno ang signal ng Wifi."</string> - <!-- no translation found for accessibility_wifi_security_type_none (1223747559986205423) --> - <skip /> - <!-- no translation found for accessibility_wifi_security_type_secured (862921720418885331) --> - <skip /> + <string name="accessibility_wifi_security_type_none" msgid="1223747559986205423">"Bukas na network"</string> + <string name="accessibility_wifi_security_type_secured" msgid="862921720418885331">"Ligtas na network"</string> <string name="process_kernel_label" msgid="3916858646836739323">"Android OS"</string> <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"Mga inalis na app"</string> <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"Mga inalis na apps at user"</string> diff --git a/packages/SettingsLib/res/values-tr/strings.xml b/packages/SettingsLib/res/values-tr/strings.xml index b883c5fcd701..d288712dacd6 100644 --- a/packages/SettingsLib/res/values-tr/strings.xml +++ b/packages/SettingsLib/res/values-tr/strings.xml @@ -40,8 +40,7 @@ <string name="connected_via_passpoint" msgid="2826205693803088747">"%1$s üzerinden bağlı"</string> <string name="available_via_passpoint" msgid="1617440946846329613">"%1$s üzerinden kullanılabilir"</string> <string name="wifi_connected_no_internet" msgid="3149853966840874992">"Bağlı, İnternet yok"</string> - <!-- no translation found for wifi_ap_unable_to_handle_new_sta (5348824313514404541) --> - <skip /> + <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Erişim noktası geçici olarak dolu"</string> <string name="speed_label_very_slow" msgid="1867055264243608530">"Çok Yavaş"</string> <string name="speed_label_slow" msgid="813109590815810235">"Yavaş"</string> <string name="speed_label_okay" msgid="2331665440671174858">"Tamam"</string> @@ -104,10 +103,8 @@ <string name="accessibility_wifi_two_bars" msgid="3569851234710034416">"Kablosuz sinyal gücü iki çubuk."</string> <string name="accessibility_wifi_three_bars" msgid="8134185644861380311">"Kablosuz sinyal gücü üç çubuk."</string> <string name="accessibility_wifi_signal_full" msgid="7061045677694702">"Kablosuz sinyal gücü tam."</string> - <!-- no translation found for accessibility_wifi_security_type_none (1223747559986205423) --> - <skip /> - <!-- no translation found for accessibility_wifi_security_type_secured (862921720418885331) --> - <skip /> + <string name="accessibility_wifi_security_type_none" msgid="1223747559986205423">"Açık ağ"</string> + <string name="accessibility_wifi_security_type_secured" msgid="862921720418885331">"Güvenli ağ"</string> <string name="process_kernel_label" msgid="3916858646836739323">"Android OS"</string> <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"Kaldırılan uygulamalar"</string> <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"Kaldırılmış kullanıcılar ve uygulamalar"</string> diff --git a/packages/SettingsLib/res/values-uk/strings.xml b/packages/SettingsLib/res/values-uk/strings.xml index de35869878a6..3be34342be63 100644 --- a/packages/SettingsLib/res/values-uk/strings.xml +++ b/packages/SettingsLib/res/values-uk/strings.xml @@ -40,8 +40,7 @@ <string name="connected_via_passpoint" msgid="2826205693803088747">"Під’єднано через %1$s"</string> <string name="available_via_passpoint" msgid="1617440946846329613">"Доступ через %1$s"</string> <string name="wifi_connected_no_internet" msgid="3149853966840874992">"Під’єднано, але немає доступу до Інтернету"</string> - <!-- no translation found for wifi_ap_unable_to_handle_new_sta (5348824313514404541) --> - <skip /> + <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Точка доступу тимчасово переповнена"</string> <string name="speed_label_very_slow" msgid="1867055264243608530">"Дуже повільна"</string> <string name="speed_label_slow" msgid="813109590815810235">"Повільна"</string> <string name="speed_label_okay" msgid="2331665440671174858">"ОК"</string> @@ -104,18 +103,16 @@ <string name="accessibility_wifi_two_bars" msgid="3569851234710034416">"Дві смужки сигналу Wi-Fi."</string> <string name="accessibility_wifi_three_bars" msgid="8134185644861380311">"Три смужки сигналу Wi-Fi."</string> <string name="accessibility_wifi_signal_full" msgid="7061045677694702">"Максимальний сигнал Wi-Fi."</string> - <!-- no translation found for accessibility_wifi_security_type_none (1223747559986205423) --> - <skip /> - <!-- no translation found for accessibility_wifi_security_type_secured (862921720418885331) --> - <skip /> + <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"</string> <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"Видалені програми"</string> <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"Видалені програми та користувачі"</string> - <string name="tether_settings_title_usb" msgid="6688416425801386511">"Прив\'язка USB"</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">"Прив\'язка Bluetooth"</string> + <string name="tether_settings_title_bluetooth" msgid="355855408317564420">"Bluetooth-модем"</string> <string name="tether_settings_title_usb_bluetooth" msgid="5355828977109785001">"Прив\'язка"</string> - <string name="tether_settings_title_all" msgid="8356136101061143841">"Режим модема"</string> + <string name="tether_settings_title_all" msgid="8356136101061143841">"Точка доступу й модем"</string> <string name="managed_user_title" msgid="8109605045406748842">"Усі робочі додатки"</string> <string name="user_guest" msgid="8475274842845401871">"Гість"</string> <string name="unknown" msgid="1592123443519355854">"Невідомо"</string> diff --git a/packages/SettingsLib/res/values-ur/strings.xml b/packages/SettingsLib/res/values-ur/strings.xml index 186ae026cdce..0282d09228c9 100644 --- a/packages/SettingsLib/res/values-ur/strings.xml +++ b/packages/SettingsLib/res/values-ur/strings.xml @@ -40,8 +40,7 @@ <string name="connected_via_passpoint" msgid="2826205693803088747">"منسلک بذریعہ %1$s"</string> <string name="available_via_passpoint" msgid="1617440946846329613">"دستیاب بذریعہ %1$s"</string> <string name="wifi_connected_no_internet" msgid="3149853966840874992">"منسلک، انٹرنیٹ نہیں ہے"</string> - <!-- no translation found for wifi_ap_unable_to_handle_new_sta (5348824313514404541) --> - <skip /> + <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"رسائی پوائنٹ عارضی طور پر فُل ہے"</string> <string name="speed_label_very_slow" msgid="1867055264243608530">"بہت سست"</string> <string name="speed_label_slow" msgid="813109590815810235">"سست"</string> <string name="speed_label_okay" msgid="2331665440671174858">"ٹھیک ہے"</string> @@ -104,10 +103,8 @@ <string name="accessibility_wifi_two_bars" msgid="3569851234710034416">"Wifi دو بارز۔"</string> <string name="accessibility_wifi_three_bars" msgid="8134185644861380311">"Wifi تین بارز۔"</string> <string name="accessibility_wifi_signal_full" msgid="7061045677694702">"Wifi سگنل پورا ہے۔"</string> - <!-- no translation found for accessibility_wifi_security_type_none (1223747559986205423) --> - <skip /> - <!-- no translation found for accessibility_wifi_security_type_secured (862921720418885331) --> - <skip /> + <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> diff --git a/packages/SettingsLib/res/values-uz/strings.xml b/packages/SettingsLib/res/values-uz/strings.xml index 3bcda0c640b3..8684b49459af 100644 --- a/packages/SettingsLib/res/values-uz/strings.xml +++ b/packages/SettingsLib/res/values-uz/strings.xml @@ -40,8 +40,7 @@ <string name="connected_via_passpoint" msgid="2826205693803088747">"%1$s orqali ulangan"</string> <string name="available_via_passpoint" msgid="1617440946846329613">"%1$s orqali ishlaydi"</string> <string name="wifi_connected_no_internet" msgid="3149853966840874992">"Ulangan, lekin internet aloqasi yo‘q"</string> - <!-- no translation found for wifi_ap_unable_to_handle_new_sta (5348824313514404541) --> - <skip /> + <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Internet kirish nuqtasi vaqtinchalik to‘lgan"</string> <string name="speed_label_very_slow" msgid="1867055264243608530">"Juda sekin"</string> <string name="speed_label_slow" msgid="813109590815810235">"Sekin"</string> <string name="speed_label_okay" msgid="2331665440671174858">"OK"</string> @@ -104,10 +103,8 @@ <string name="accessibility_wifi_two_bars" msgid="3569851234710034416">"Wi-Fi: ikkita ustun"</string> <string name="accessibility_wifi_three_bars" msgid="8134185644861380311">"Wi-Fi: uchta ustun"</string> <string name="accessibility_wifi_signal_full" msgid="7061045677694702">"Wi-Fi: signal to‘liq"</string> - <!-- no translation found for accessibility_wifi_security_type_none (1223747559986205423) --> - <skip /> - <!-- no translation found for accessibility_wifi_security_type_secured (862921720418885331) --> - <skip /> + <string name="accessibility_wifi_security_type_none" msgid="1223747559986205423">"Ochiq tarmoq"</string> + <string name="accessibility_wifi_security_type_secured" msgid="862921720418885331">"Xavfsiz tarmoq"</string> <string name="process_kernel_label" msgid="3916858646836739323">"Android OS"</string> <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"O‘chirilgan ilovalar"</string> <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"O‘chirib tashlangan ilova va foydalanuvchilar"</string> diff --git a/packages/SettingsLib/res/values-vi/strings.xml b/packages/SettingsLib/res/values-vi/strings.xml index b22f7febab95..836dd3dd76e9 100644 --- a/packages/SettingsLib/res/values-vi/strings.xml +++ b/packages/SettingsLib/res/values-vi/strings.xml @@ -40,8 +40,7 @@ <string name="connected_via_passpoint" msgid="2826205693803088747">"Được kết nối qua %1$s"</string> <string name="available_via_passpoint" msgid="1617440946846329613">"Có sẵn qua %1$s"</string> <string name="wifi_connected_no_internet" msgid="3149853966840874992">"Đã kết nối, không có Internet"</string> - <!-- no translation found for wifi_ap_unable_to_handle_new_sta (5348824313514404541) --> - <skip /> + <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Điểm truy cập tạm thời đã đạt đến giới hạn số lượng thiết bị truy cập."</string> <string name="speed_label_very_slow" msgid="1867055264243608530">"Rất chậm"</string> <string name="speed_label_slow" msgid="813109590815810235">"Chậm"</string> <string name="speed_label_okay" msgid="2331665440671174858">"Khá tốt"</string> @@ -104,10 +103,8 @@ <string name="accessibility_wifi_two_bars" msgid="3569851234710034416">"Tín hiệu Wi-Fi hai vạch."</string> <string name="accessibility_wifi_three_bars" msgid="8134185644861380311">"Tín hiệu Wi-Fi ba vạch."</string> <string name="accessibility_wifi_signal_full" msgid="7061045677694702">"Tín hiệu Wi-Fi đủ."</string> - <!-- no translation found for accessibility_wifi_security_type_none (1223747559986205423) --> - <skip /> - <!-- no translation found for accessibility_wifi_security_type_secured (862921720418885331) --> - <skip /> + <string name="accessibility_wifi_security_type_none" msgid="1223747559986205423">"Mạng mở"</string> + <string name="accessibility_wifi_security_type_secured" msgid="862921720418885331">"Mạng bảo mật"</string> <string name="process_kernel_label" msgid="3916858646836739323">"Hệ điều hành Android"</string> <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"Ứng dụng đã xóa"</string> <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"Ứng dụng và người dùng bị xóa"</string> diff --git a/packages/SettingsLib/res/values-zh-rCN/strings.xml b/packages/SettingsLib/res/values-zh-rCN/strings.xml index 21c4a9472c29..c7a3d7797420 100644 --- a/packages/SettingsLib/res/values-zh-rCN/strings.xml +++ b/packages/SettingsLib/res/values-zh-rCN/strings.xml @@ -40,8 +40,7 @@ <string name="connected_via_passpoint" msgid="2826205693803088747">"已通过%1$s连接"</string> <string name="available_via_passpoint" msgid="1617440946846329613">"可通过%1$s连接"</string> <string name="wifi_connected_no_internet" msgid="3149853966840874992">"已连接,但无法访问互联网"</string> - <!-- no translation found for wifi_ap_unable_to_handle_new_sta (5348824313514404541) --> - <skip /> + <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"接入点暂时满载"</string> <string name="speed_label_very_slow" msgid="1867055264243608530">"很慢"</string> <string name="speed_label_slow" msgid="813109590815810235">"慢"</string> <string name="speed_label_okay" msgid="2331665440671174858">"良好"</string> @@ -104,10 +103,8 @@ <string name="accessibility_wifi_two_bars" msgid="3569851234710034416">"WLAN 信号强度为两格。"</string> <string name="accessibility_wifi_three_bars" msgid="8134185644861380311">"WLAN 信号强度为三格。"</string> <string name="accessibility_wifi_signal_full" msgid="7061045677694702">"WLAN 信号满格。"</string> - <!-- no translation found for accessibility_wifi_security_type_none (1223747559986205423) --> - <skip /> - <!-- no translation found for accessibility_wifi_security_type_secured (862921720418885331) --> - <skip /> + <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 操作系统"</string> <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"已删除的应用"</string> <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"已删除的应用和用户"</string> diff --git a/packages/SettingsLib/res/values-zh-rHK/strings.xml b/packages/SettingsLib/res/values-zh-rHK/strings.xml index 21d41703e324..bc3348c30913 100644 --- a/packages/SettingsLib/res/values-zh-rHK/strings.xml +++ b/packages/SettingsLib/res/values-zh-rHK/strings.xml @@ -40,8 +40,7 @@ <string name="connected_via_passpoint" msgid="2826205693803088747">"已透過 %1$s 連線"</string> <string name="available_via_passpoint" msgid="1617440946846329613">"可透過 %1$s 連線"</string> <string name="wifi_connected_no_internet" msgid="3149853966840874992">"已連線,沒有互聯網"</string> - <!-- no translation found for wifi_ap_unable_to_handle_new_sta (5348824313514404541) --> - <skip /> + <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"存取點暫時已滿"</string> <string name="speed_label_very_slow" msgid="1867055264243608530">"非常慢"</string> <string name="speed_label_slow" msgid="813109590815810235">"慢"</string> <string name="speed_label_okay" msgid="2331665440671174858">"良好"</string> @@ -104,10 +103,8 @@ <string name="accessibility_wifi_two_bars" msgid="3569851234710034416">"Wi-Fi 訊號兩格。"</string> <string name="accessibility_wifi_three_bars" msgid="8134185644861380311">"Wi-Fi 訊號三格。"</string> <string name="accessibility_wifi_signal_full" msgid="7061045677694702">"Wi-Fi 訊號滿格。"</string> - <!-- no translation found for accessibility_wifi_security_type_none (1223747559986205423) --> - <skip /> - <!-- no translation found for accessibility_wifi_security_type_secured (862921720418885331) --> - <skip /> + <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 作業系統"</string> <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"已移除的應用程式"</string> <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"已移除的應用程式和使用者"</string> diff --git a/packages/SettingsLib/res/values-zh-rTW/strings.xml b/packages/SettingsLib/res/values-zh-rTW/strings.xml index 746efd182762..10f2e76f6182 100644 --- a/packages/SettingsLib/res/values-zh-rTW/strings.xml +++ b/packages/SettingsLib/res/values-zh-rTW/strings.xml @@ -40,8 +40,7 @@ <string name="connected_via_passpoint" msgid="2826205693803088747">"已透過 %1$s 連線"</string> <string name="available_via_passpoint" msgid="1617440946846329613">"可透過 %1$s 使用"</string> <string name="wifi_connected_no_internet" msgid="3149853966840874992">"已連線,沒有網際網路"</string> - <!-- no translation found for wifi_ap_unable_to_handle_new_sta (5348824313514404541) --> - <skip /> + <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"存取點暫時滿載"</string> <string name="speed_label_very_slow" msgid="1867055264243608530">"非常慢"</string> <string name="speed_label_slow" msgid="813109590815810235">"慢"</string> <string name="speed_label_okay" msgid="2331665440671174858">"確定"</string> @@ -104,10 +103,8 @@ <string name="accessibility_wifi_two_bars" msgid="3569851234710034416">"Wi-Fi 訊號強度兩格。"</string> <string name="accessibility_wifi_three_bars" msgid="8134185644861380311">"Wi-Fi 訊號強度三格。"</string> <string name="accessibility_wifi_signal_full" msgid="7061045677694702">"Wi-Fi 訊號強度滿格。"</string> - <!-- no translation found for accessibility_wifi_security_type_none (1223747559986205423) --> - <skip /> - <!-- no translation found for accessibility_wifi_security_type_secured (862921720418885331) --> - <skip /> + <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 作業系統"</string> <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"移除的應用程式"</string> <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"已移除的應用程式和使用者"</string> diff --git a/packages/SettingsLib/res/values-zu/strings.xml b/packages/SettingsLib/res/values-zu/strings.xml index 9dcd1e390f0c..65b3478df29a 100644 --- a/packages/SettingsLib/res/values-zu/strings.xml +++ b/packages/SettingsLib/res/values-zu/strings.xml @@ -40,8 +40,7 @@ <string name="connected_via_passpoint" msgid="2826205693803088747">"Kuxhumeke nge-%1$s"</string> <string name="available_via_passpoint" msgid="1617440946846329613">"Iyatholakala nge-%1$s"</string> <string name="wifi_connected_no_internet" msgid="3149853966840874992">"Kuxhumekile, ayikho i-inthanethi"</string> - <!-- no translation found for wifi_ap_unable_to_handle_new_sta (5348824313514404541) --> - <skip /> + <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Iphoyinti lokufinyelela ligcwele okwesikhashana"</string> <string name="speed_label_very_slow" msgid="1867055264243608530">"Phansi kakhulu"</string> <string name="speed_label_slow" msgid="813109590815810235">"Phansi"</string> <string name="speed_label_okay" msgid="2331665440671174858">"KULUNGILE"</string> @@ -104,10 +103,8 @@ <string name="accessibility_wifi_two_bars" msgid="3569851234710034416">"Amabha amabili we-Wifi."</string> <string name="accessibility_wifi_three_bars" msgid="8134185644861380311">"Amabha amathathu we-Wifi."</string> <string name="accessibility_wifi_signal_full" msgid="7061045677694702">"Isiginali ye-Wifi igcwele."</string> - <!-- no translation found for accessibility_wifi_security_type_none (1223747559986205423) --> - <skip /> - <!-- no translation found for accessibility_wifi_security_type_secured (862921720418885331) --> - <skip /> + <string name="accessibility_wifi_security_type_none" msgid="1223747559986205423">"Vula inethiwekhi"</string> + <string name="accessibility_wifi_security_type_secured" msgid="862921720418885331">"Inethiwekhi evikelekile"</string> <string name="process_kernel_label" msgid="3916858646836739323">"I-Android OS"</string> <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"Izinhlelo zokusebenza zisusiwe"</string> <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"Izinhelo zokusebenza nabasebenzisi abasusiwe"</string> diff --git a/packages/SettingsLib/src/com/android/settingslib/wifi/TestAccessPointBuilder.java b/packages/SettingsLib/src/com/android/settingslib/wifi/TestAccessPointBuilder.java index bb51330fdbcc..731a6072218b 100644 --- a/packages/SettingsLib/src/com/android/settingslib/wifi/TestAccessPointBuilder.java +++ b/packages/SettingsLib/src/com/android/settingslib/wifi/TestAccessPointBuilder.java @@ -23,6 +23,7 @@ import android.net.wifi.ScanResult; import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiInfo; import android.os.Bundle; +import android.support.annotation.Keep; import com.android.settingslib.wifi.AccessPoint.Speed; import java.util.ArrayList; @@ -34,6 +35,7 @@ import java.util.ArrayList; * applications. AccessPoints were designed to only be populated by the mechanisms of scan results * and wifi configurations. */ +@Keep public class TestAccessPointBuilder { // match the private values in WifiManager private static final int MIN_RSSI = -100; @@ -55,10 +57,12 @@ public class TestAccessPointBuilder { Context mContext; private ArrayList<ScanResult> mScanResultCache; + @Keep public TestAccessPointBuilder(Context context) { mContext = context; } + @Keep public AccessPoint build() { Bundle bundle = new Bundle(); @@ -87,6 +91,7 @@ public class TestAccessPointBuilder { return ap; } + @Keep public TestAccessPointBuilder setActive(boolean active) { if (active) { mNetworkInfo = new NetworkInfo( @@ -106,6 +111,7 @@ public class TestAccessPointBuilder { * <p>Side effect: if this AccessPoint was previously unreachable, * setting the level will also make it reachable. */ + @Keep public TestAccessPointBuilder setLevel(int level) { // Reversal of WifiManager.calculateSignalLevels if (level == 0) { @@ -120,11 +126,13 @@ public class TestAccessPointBuilder { return this; } + @Keep public TestAccessPointBuilder setNetworkInfo(NetworkInfo info) { mNetworkInfo = info; return this; } + @Keep public TestAccessPointBuilder setRssi(int rssi) { mRssi = rssi; return this; @@ -140,6 +148,7 @@ public class TestAccessPointBuilder { * Side effect: if the signal level was not previously set, * making an AccessPoint reachable will set the signal to the minimum level. */ + @Keep public TestAccessPointBuilder setReachable(boolean reachable) { if (reachable) { // only override the mRssi if it hasn't been set yet @@ -152,6 +161,7 @@ public class TestAccessPointBuilder { return this; } + @Keep public TestAccessPointBuilder setSaved(boolean saved){ if (saved) { mNetworkId = 1; @@ -161,26 +171,31 @@ public class TestAccessPointBuilder { return this; } + @Keep public TestAccessPointBuilder setSecurity(int security) { mSecurity = security; return this; } + @Keep public TestAccessPointBuilder setSsid(String newSsid) { ssid = newSsid; return this; } + @Keep public TestAccessPointBuilder setFqdn(String fqdn) { mFqdn = fqdn; return this; } + @Keep public TestAccessPointBuilder setProviderFriendlyName(String friendlyName) { mProviderFriendlyName = friendlyName; return this; } + @Keep public TestAccessPointBuilder setWifiInfo(WifiInfo info) { mWifiInfo = info; return this; @@ -192,6 +207,7 @@ public class TestAccessPointBuilder { * <p>Setting this to a value other than {@link WifiConfiguration#INVALID_NETWORK_ID} makes this * AccessPoint a saved network. */ + @Keep public TestAccessPointBuilder setNetworkId(int networkId) { mNetworkId = networkId; return this; diff --git a/packages/SystemUI/res/layout/zen_mode_condition.xml b/packages/SystemUI/res/layout/zen_mode_condition.xml index 2b4a0f59195e..ab52465be63c 100644 --- a/packages/SystemUI/res/layout/zen_mode_condition.xml +++ b/packages/SystemUI/res/layout/zen_mode_condition.xml @@ -27,6 +27,8 @@ android:id="@android:id/content" android:layout_width="match_parent" android:layout_height="wrap_content" + android:minHeight="48dp" + android:gravity="center_vertical" android:layout_centerVertical="true" android:orientation="vertical" android:layout_toEndOf="@android:id/checkbox" @@ -79,4 +81,4 @@ android:tint="?android:attr/textColorPrimary" android:src="@drawable/ic_qs_plus" /> -</RelativeLayout>
\ No newline at end of file +</RelativeLayout> diff --git a/packages/SystemUI/res/layout/zen_mode_panel.xml b/packages/SystemUI/res/layout/zen_mode_panel.xml index 426164186aba..55169837ec55 100644 --- a/packages/SystemUI/res/layout/zen_mode_panel.xml +++ b/packages/SystemUI/res/layout/zen_mode_panel.xml @@ -93,7 +93,7 @@ </RelativeLayout> - <LinearLayout + <com.android.systemui.volume.ZenRadioLayout android:id="@+id/zen_conditions" android:layout_width="match_parent" android:layout_height="wrap_content" @@ -111,7 +111,7 @@ android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"/> - </LinearLayout> + </com.android.systemui.volume.ZenRadioLayout> <TextView android:id="@+id/zen_alarm_warning" diff --git a/packages/SystemUI/res/values/config.xml b/packages/SystemUI/res/values/config.xml index b0ee03989298..5917dc56124b 100644 --- a/packages/SystemUI/res/values/config.xml +++ b/packages/SystemUI/res/values/config.xml @@ -267,14 +267,15 @@ <!-- Doze: alpha to apply to small icons when dozing --> <integer name="doze_small_icon_alpha">222</integer><!-- 87% of 0xff --> - <!-- Doze: the brightness value to use for the lower brightness AOD mode --> - <integer name="config_doze_aod_brightness_low">5</integer> - - <!-- Doze: the brightness value to use for the higher brightness AOD mode --> - <integer name="config_doze_aod_brightness_high">27</integer> - - <!-- Doze: the brightness value to use for the sunlight AOD mode --> - <integer name="config_doze_aod_brightness_sunlight">28</integer> + <!-- Doze: Table that translates sensor values from the doze_brightness_sensor_type sensor + to brightness values; -1 means keeping the current brightness. --> + <integer-array name="config_doze_brightness_sensor_to_brightness"> + <item>-1</item> <!-- 0: OFF --> + <item>2</item> <!-- 1: NIGHT --> + <item>5</item> <!-- 2: LOW --> + <item>27</item> <!-- 3: HIGH --> + <item>28</item> <!-- 4: SUN --> + </integer-array> <!-- Doze: whether the double tap sensor reports 2D touch coordinates --> <bool name="doze_double_tap_reports_touch_coordinates">false</bool> @@ -396,4 +397,8 @@ one bar higher than they actually are --> <bool name="config_inflateSignalStrength">false</bool> + <!-- Should we vibrate on an icon animation of the shelf. This should only be active if the + vibrator is capable of subtle vibrations --> + <bool name="config_vibrateOnIconAnimation">false</bool> + </resources> diff --git a/packages/SystemUI/src/com/android/systemui/colorextraction/SysuiColorExtractor.java b/packages/SystemUI/src/com/android/systemui/colorextraction/SysuiColorExtractor.java index fe8373ffa127..9ba7be86aa0a 100644 --- a/packages/SystemUI/src/com/android/systemui/colorextraction/SysuiColorExtractor.java +++ b/packages/SystemUI/src/com/android/systemui/colorextraction/SysuiColorExtractor.java @@ -31,11 +31,16 @@ import com.android.internal.annotations.VisibleForTesting; import com.android.internal.colorextraction.ColorExtractor; import com.android.internal.colorextraction.types.ExtractionType; import com.android.internal.colorextraction.types.Tonal; +import com.android.systemui.Dumpable; + +import java.io.FileDescriptor; +import java.io.PrintWriter; +import java.util.Arrays; /** * ColorExtractor aware of wallpaper visibility */ -public class SysuiColorExtractor extends ColorExtractor { +public class SysuiColorExtractor extends ColorExtractor implements Dumpable { private static final String TAG = "SysuiColorExtractor"; private boolean mWallpaperVisible; // Colors to return when the wallpaper isn't visible @@ -134,6 +139,11 @@ public class SysuiColorExtractor extends ColorExtractor { * @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_LOCK) { + ignoreWallpaperVisibility = true; + } if (mWallpaperVisible || ignoreWallpaperVisibility) { return super.getColors(which, type); } else { @@ -149,4 +159,20 @@ public class SysuiColorExtractor extends ColorExtractor { } } + @Override + public void dump(FileDescriptor fd, PrintWriter pw, String[] args) { + pw.println("SysuiColorExtractor:"); + + pw.println(" Current wallpaper colors:"); + pw.println(" system: " + mSystemColors); + pw.println(" lock: " + mLockColors); + + GradientColors[] system = mGradientColors.get(WallpaperManager.FLAG_SYSTEM); + GradientColors[] lock = mGradientColors.get(WallpaperManager.FLAG_LOCK); + pw.println(" Gradients:"); + pw.println(" system: " + Arrays.toString(system)); + pw.println(" lock: " + Arrays.toString(lock)); + pw.println(" Default scrim: " + mWpHiddenColors); + + } } diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeScreenBrightness.java b/packages/SystemUI/src/com/android/systemui/doze/DozeScreenBrightness.java index ed4b131cd83f..32baf9413314 100644 --- a/packages/SystemUI/src/com/android/systemui/doze/DozeScreenBrightness.java +++ b/packages/SystemUI/src/com/android/systemui/doze/DozeScreenBrightness.java @@ -35,12 +35,9 @@ public class DozeScreenBrightness implements DozeMachine.Part, SensorEventListen private final Handler mHandler; private final SensorManager mSensorManager; private final Sensor mLightSensor; + private final int[] mSensorToBrightness; private boolean mRegistered; - private final int mHighBrightness; - private final int mLowBrightness; - private final int mSunlightBrightness; - public DozeScreenBrightness(Context context, DozeMachine.Service service, SensorManager sensorManager, Sensor lightSensor, Handler handler) { mContext = context; @@ -49,12 +46,8 @@ public class DozeScreenBrightness implements DozeMachine.Part, SensorEventListen mLightSensor = lightSensor; mHandler = handler; - mLowBrightness = context.getResources().getInteger( - R.integer.config_doze_aod_brightness_low); - mHighBrightness = context.getResources().getInteger( - R.integer.config_doze_aod_brightness_high); - mSunlightBrightness = context.getResources().getInteger( - R.integer.config_doze_aod_brightness_sunlight); + mSensorToBrightness = context.getResources().getIntArray( + R.array.config_doze_brightness_sensor_to_brightness); } @Override @@ -81,21 +74,18 @@ public class DozeScreenBrightness implements DozeMachine.Part, SensorEventListen @Override public void onSensorChanged(SensorEvent event) { if (mRegistered) { - mDozeService.setDozeScreenBrightness(computeBrightness((int) event.values[0])); + int brightness = computeBrightness((int) event.values[0]); + if (brightness > 0) { + mDozeService.setDozeScreenBrightness(brightness); + } } } private int computeBrightness(int sensorValue) { - // The sensor reports 0 for off, 1 for low brightness, 2 for high brightness, and 3 for - // sunlight. We currently use DozeScreenState for screen off, so we treat off as low - // brightness. - if (sensorValue >= 3) { - return mSunlightBrightness; - } else if (sensorValue == 2) { - return mHighBrightness; - } else { - return mLowBrightness; + if (sensorValue < 0 || sensorValue >= mSensorToBrightness.length) { + return -1; } + return mSensorToBrightness[sensorValue]; } @Override diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeUi.java b/packages/SystemUI/src/com/android/systemui/doze/DozeUi.java index 1dc37cdbca7a..884745213350 100644 --- a/packages/SystemUI/src/com/android/systemui/doze/DozeUi.java +++ b/packages/SystemUI/src/com/android/systemui/doze/DozeUi.java @@ -100,7 +100,6 @@ public class DozeUi implements DozeMachine.Part { private boolean shouldAnimateWakeup(DozeMachine.State state) { switch (state) { - case DOZE_AOD: case DOZE_REQUEST_PULSE: case DOZE_PULSING: case DOZE_PULSE_DONE: diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ScreenLifecycle.java b/packages/SystemUI/src/com/android/systemui/keyguard/ScreenLifecycle.java index 3f39dfe5d936..b6fce4408bcf 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/ScreenLifecycle.java +++ b/packages/SystemUI/src/com/android/systemui/keyguard/ScreenLifecycle.java @@ -16,6 +16,8 @@ package com.android.systemui.keyguard; +import android.os.Trace; + import com.android.systemui.Dumpable; import java.io.FileDescriptor; @@ -38,22 +40,22 @@ public class ScreenLifecycle extends Lifecycle<ScreenLifecycle.Observer> impleme } public void dispatchScreenTurningOn() { - mScreenState = SCREEN_TURNING_ON; + setScreenState(SCREEN_TURNING_ON); dispatch(Observer::onScreenTurningOn); } public void dispatchScreenTurnedOn() { - mScreenState = SCREEN_ON; + setScreenState(SCREEN_ON); dispatch(Observer::onScreenTurnedOn); } public void dispatchScreenTurningOff() { - mScreenState = SCREEN_TURNING_OFF; + setScreenState(SCREEN_TURNING_OFF); dispatch(Observer::onScreenTurningOff); } public void dispatchScreenTurnedOff() { - mScreenState = SCREEN_OFF; + setScreenState(SCREEN_OFF); dispatch(Observer::onScreenTurnedOff); } @@ -63,6 +65,11 @@ public class ScreenLifecycle extends Lifecycle<ScreenLifecycle.Observer> impleme pw.println(" mScreenState=" + mScreenState); } + private void setScreenState(int screenState) { + mScreenState = screenState; + Trace.traceCounter(Trace.TRACE_TAG_APP, "screenState", screenState); + } + public interface Observer { default void onScreenTurningOn() {} default void onScreenTurnedOn() {} diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/WakefulnessLifecycle.java b/packages/SystemUI/src/com/android/systemui/keyguard/WakefulnessLifecycle.java index 578e6fb1ab01..951c0ea6a26b 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/WakefulnessLifecycle.java +++ b/packages/SystemUI/src/com/android/systemui/keyguard/WakefulnessLifecycle.java @@ -16,6 +16,8 @@ package com.android.systemui.keyguard; +import android.os.Trace; + import com.android.systemui.Dumpable; import java.io.FileDescriptor; @@ -39,22 +41,22 @@ public class WakefulnessLifecycle extends Lifecycle<WakefulnessLifecycle.Observe } public void dispatchStartedWakingUp() { - mWakefulness = WAKEFULNESS_WAKING; + setWakefulness(WAKEFULNESS_WAKING); dispatch(Observer::onStartedWakingUp); } public void dispatchFinishedWakingUp() { - mWakefulness = WAKEFULNESS_AWAKE; + setWakefulness(WAKEFULNESS_AWAKE); dispatch(Observer::onFinishedWakingUp); } public void dispatchStartedGoingToSleep() { - mWakefulness = WAKEFULNESS_GOING_TO_SLEEP; + setWakefulness(WAKEFULNESS_GOING_TO_SLEEP); dispatch(Observer::onStartedGoingToSleep); } public void dispatchFinishedGoingToSleep() { - mWakefulness = WAKEFULNESS_ASLEEP; + setWakefulness(WAKEFULNESS_ASLEEP); dispatch(Observer::onFinishedGoingToSleep); } @@ -64,6 +66,11 @@ public class WakefulnessLifecycle extends Lifecycle<WakefulnessLifecycle.Observe pw.println(" mWakefulness=" + mWakefulness); } + private void setWakefulness(int wakefulness) { + mWakefulness = wakefulness; + Trace.traceCounter(Trace.TRACE_TAG_APP, "wakefulness", wakefulness); + } + public interface Observer { default void onStartedWakingUp() {} default void onFinishedWakingUp() {} diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java index 14afbfae29f1..c6914981be45 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java @@ -269,7 +269,7 @@ public class BluetoothTile extends QSTileImpl<BooleanState> { item.icon = R.drawable.ic_qs_bluetooth_on; item.line1 = device.getName(); item.tag = device; - int state = mController.getMaxConnectionState(device); + int state = device.getMaxConnectionState(); if (state == BluetoothProfile.STATE_CONNECTED) { item.icon = R.drawable.ic_qs_bluetooth_connected; int batteryLevel = device.getBatteryLevel(); diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/WifiTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/WifiTile.java index 73915092e8b4..d9984f768751 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/WifiTile.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/WifiTile.java @@ -324,12 +324,30 @@ public class WifiTile extends QSTileImpl<SignalState> { @Override public void onAccessPointsChanged(final List<AccessPoint> accessPoints) { mAccessPoints = accessPoints.toArray(new AccessPoint[accessPoints.size()]); + filterUnreachableAPs(); + updateItems(); if (accessPoints != null && accessPoints.size() > 0) { fireScanStateChanged(false); } } + /** Filter unreachable APs from mAccessPoints */ + private void filterUnreachableAPs() { + int numReachable = 0; + for (AccessPoint ap : mAccessPoints) { + if (ap.isReachable()) numReachable++; + } + if (numReachable != mAccessPoints.length) { + AccessPoint[] unfiltered = mAccessPoints; + mAccessPoints = new AccessPoint[numReachable]; + int i = 0; + for (AccessPoint ap : unfiltered) { + if (ap.isReachable()) mAccessPoints[i++] = ap; + } + } + } + @Override public void onSettingsActivityTriggered(Intent settingsIntent) { mActivityStarter.postStartActivityDismissingKeyguard(settingsIntent, 0); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationData.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationData.java index e5b1afe31370..68802b9432f4 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationData.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationData.java @@ -107,7 +107,6 @@ public class NotificationData { * Resets the notification entry to be re-used. */ public void reset() { - lastFullScreenIntentLaunchTime = NOT_LAUNCHED_YET; if (row != null) { row.reset(); } @@ -122,6 +121,7 @@ public class NotificationData { } public void notifyFullScreenIntentLaunched() { + setInterruption(); lastFullScreenIntentLaunchTime = SystemClock.elapsedRealtime(); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShelf.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShelf.java index 1889806bf985..41db927a67bd 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShelf.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShelf.java @@ -78,6 +78,9 @@ public class NotificationShelf extends ActivatableNotificationView implements private boolean mNoAnimationsInThisFrame; private boolean mAnimationsEnabled = true; private boolean mShowNotificationShelf; + private boolean mVibrationOnAnimation; + private boolean mUserTouchingScreen; + private boolean mTouchActive; public NotificationShelf(Context context, AttributeSet attrs) { super(context, attrs); @@ -94,12 +97,24 @@ public class NotificationShelf extends ActivatableNotificationView implements setClipChildren(false); setClipToPadding(false); mShelfIcons.setShowAllIcons(false); + mVibrationOnAnimation = mContext.getResources().getBoolean( + R.bool.config_vibrateOnIconAnimation); + updateVibrationOnAnimation(); mViewInvertHelper = new ViewInvertHelper(mShelfIcons, NotificationPanelView.DOZE_ANIMATION_DURATION); mShelfState = new ShelfState(); initDimens(); } + private void updateVibrationOnAnimation() { + mShelfIcons.setVibrateOnAnimation(mVibrationOnAnimation && mTouchActive); + } + + public void setTouchActive(boolean touchActive) { + mTouchActive = touchActive; + updateVibrationOnAnimation(); + } + public void bind(AmbientState ambientState, NotificationStackScrollLayout hostLayout) { mAmbientState = ambientState; mHostLayout = hostLayout; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java b/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java index 05d47ec9af63..e729f605e948 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java @@ -131,6 +131,7 @@ public class StatusBarIconView extends AnimatedImageView { private final NotificationIconDozeHelper mDozer; private int mContrastedDrawableColor; private int mCachedContrastBackgroundColor = NO_COLOR; + private boolean mIsInShelf; public StatusBarIconView(Context context, String slot, StatusBarNotification sbn) { this(context, slot, sbn, false); @@ -766,6 +767,14 @@ public class StatusBarIconView extends AnimatedImageView { } } + public void setIsInShelf(boolean isInShelf) { + mIsInShelf = isInShelf; + } + + public boolean isInShelf() { + return mIsInShelf; + } + public interface OnVisibilityChangedListener { void onVisibilityChanged(int newVisibility); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/car/FullscreenUserSwitcher.java b/packages/SystemUI/src/com/android/systemui/statusbar/car/FullscreenUserSwitcher.java index 9338887098eb..6060134de6da 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/car/FullscreenUserSwitcher.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/car/FullscreenUserSwitcher.java @@ -74,6 +74,15 @@ public class FullscreenUserSwitcher { automaticallySelectUser(); }); + // Any interaction with the screen should cancel the timer. + mContainer.setOnClickListener(v -> { + cancelTimer(); + }); + mUserGridView.setOnTouchListener((v, e) -> { + cancelTimer(); + return false; + }); + mSwitchingUsers = mParent.findViewById(R.id.switching_users); } @@ -152,6 +161,7 @@ public class FullscreenUserSwitcher { if (mTimer != null) { mTimer.cancel(); mTimer = null; + mProgressBar.setProgress(0, true /* animate */); } } 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 2dc467f2add1..2283c130190c 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeScrimController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeScrimController.java @@ -322,7 +322,7 @@ public class DozeScrimController { mHandler.removeCallbacks(mPulseOutExtended); if (DEBUG) Log.d(TAG, "Pulse out, mDozing=" + mDozing); if (!mDozing) return; - startScrimAnimation(true /* inFront */, mDozeParameters.getAlwaysOn() ? 0 : 1, + startScrimAnimation(true /* inFront */, 1, mDozeParameters.getPulseOutDuration(), Interpolators.ALPHA_IN, mPulseOutFinished); } @@ -336,6 +336,9 @@ public class DozeScrimController { // Signal that the pulse is all finished so we can turn the screen off now. pulseFinished(); + if (mDozeParameters.getAlwaysOn()) { + mScrimController.setDozeInFrontAlpha(0); + } } }; } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBouncer.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBouncer.java index 95f32bb1d07b..49bac99e9f92 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBouncer.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBouncer.java @@ -249,6 +249,7 @@ public class KeyguardBouncer { mKeyguardView.setViewMediatorCallback(mCallback); mContainer.addView(mRoot, mContainer.getChildCount()); mRoot.setVisibility(View.INVISIBLE); + mRoot.dispatchApplyWindowInsets(mRoot.getRootWindowInsets()); } protected void removeView() { 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 38c8d31e0970..e0d9748c48bf 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationIconContainer.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationIconContainer.java @@ -22,6 +22,8 @@ import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.drawable.Icon; +import android.os.VibrationEffect; +import android.os.Vibrator; import android.support.v4.util.ArrayMap; import android.support.v4.util.ArraySet; import android.util.AttributeSet; @@ -122,6 +124,8 @@ public class NotificationIconContainer extends AlphaOptimizedFrameLayout { private float mVisualOverflowAdaption; private boolean mDisallowNextAnimation; private boolean mAnimationsEnabled = true; + private boolean mVibrateOnAnimation; + private Vibrator mVibrator; private ArrayMap<String, ArrayList<StatusBarIcon>> mReplacingIcons; private int mDarkOffsetX; @@ -129,6 +133,7 @@ public class NotificationIconContainer extends AlphaOptimizedFrameLayout { super(context, attrs); initDimens(); setWillNotDraw(!DEBUG); + mVibrator = mContext.getSystemService(Vibrator.class); } private void initDimens() { @@ -499,6 +504,10 @@ public class NotificationIconContainer extends AlphaOptimizedFrameLayout { return width - (getWidth() - getActualPaddingStart() - getActualPaddingEnd()) > 0; } + public void setVibrateOnAnimation(boolean vibrateOnAnimation) { + mVibrateOnAnimation = vibrateOnAnimation; + } + public int getIconSize() { return mIconSize; } @@ -611,6 +620,13 @@ public class NotificationIconContainer extends AlphaOptimizedFrameLayout { } else { super.applyToView(view); } + boolean wasInShelf = icon.isInShelf(); + boolean inShelf = iconAppearAmount == 1.0f; + icon.setIsInShelf(inShelf); + if (mVibrateOnAnimation && !justAdded && mAnimationsEnabled + && wasInShelf != inShelf) { + mVibrator.vibrate(VibrationEffect.get(VibrationEffect.EFFECT_TICK)); + } } justAdded = false; justReplaced = false; 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 4ffc15fb3d4a..04be35789807 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java @@ -231,6 +231,7 @@ public class NotificationPanelView extends PanelView implements private int mAmbientIndicationBottomPadding; private boolean mIsFullWidth; private float mDarkAmount; + private float mDarkAmountTarget; private LockscreenGestureLogger mLockscreenGestureLogger = new LockscreenGestureLogger(); private boolean mNoVisibleNotifications = true; private ValueAnimator mDarkAnimator; @@ -2578,8 +2579,13 @@ public class NotificationPanelView extends PanelView implements return; } if (mDarkAnimator != null && mDarkAnimator.isRunning()) { - mDarkAnimator.cancel(); + if (animate && mDarkAmountTarget == darkAmount) { + return; + } else { + mDarkAnimator.cancel(); + } } + mDarkAmountTarget = darkAmount; if (animate) { mDarkAnimator = ObjectAnimator.ofFloat(this, SET_DARK_AMOUNT_PROPERTY, darkAmount); mDarkAnimator.setInterpolator(Interpolators.LINEAR_OUT_SLOW_IN); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java index 16d85bec4829..d3ee55098474 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java @@ -24,6 +24,8 @@ import android.content.Context; import android.content.res.Configuration; import android.content.res.Resources; import android.os.SystemClock; +import android.os.VibrationEffect; +import android.os.Vibrator; import android.util.AttributeSet; import android.util.Log; import android.view.InputDevice; @@ -98,6 +100,7 @@ public abstract class PanelView extends FrameLayout { private FlingAnimationUtils mFlingAnimationUtilsClosing; private FlingAnimationUtils mFlingAnimationUtilsDismissing; private FalsingManager mFalsingManager; + private final Vibrator mVibrator; /** * Whether an instant expand request is currently pending and we are just waiting for layout. @@ -199,6 +202,7 @@ public abstract class PanelView extends FrameLayout { mFalsingManager = FalsingManager.getInstance(context); mNotificationsDragEnabled = getResources().getBoolean(R.bool.config_enableNotificationShadeDrag); + mVibrator = mContext.getSystemService(Vibrator.class); } protected void loadDimens() { @@ -390,6 +394,7 @@ public abstract class PanelView extends FrameLayout { runPeekAnimation(INITIAL_OPENING_PEEK_DURATION, getOpeningHeight(), false /* collapseWhenFinished */); notifyBarPanelExpansionChanged(); + mVibrator.vibrate(VibrationEffect.get(VibrationEffect.EFFECT_CLICK)); } protected abstract float getOpeningHeight(); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java index 6cdb75706003..4ae13936d1eb 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java @@ -196,8 +196,7 @@ public class PhoneStatusBarPolicy implements Callback, Callbacks, } // TTY status - mIconController.setIcon(mSlotTty, R.drawable.stat_sys_tty_mode, null); - mIconController.setIconVisibility(mSlotTty, false); + updateTTY(); // bluetooth status updateBluetooth(); @@ -419,9 +418,17 @@ public class PhoneStatusBarPolicy implements Callback, Callbacks, mIconController.setIconVisibility(mSlotBluetooth, bluetoothEnabled); } - private final void updateTTY(Intent intent) { - int currentTtyMode = intent.getIntExtra(TelecomManager.EXTRA_CURRENT_TTY_MODE, - TelecomManager.TTY_MODE_OFF); + private final void updateTTY() { + TelecomManager telecomManager = + (TelecomManager) mContext.getSystemService(Context.TELECOM_SERVICE); + if (telecomManager == null) { + updateTTY(TelecomManager.TTY_MODE_OFF); + } else { + updateTTY(telecomManager.getCurrentTtyMode()); + } + } + + private final void updateTTY(int currentTtyMode) { boolean enabled = currentTtyMode != TelecomManager.TTY_MODE_OFF; if (DEBUG) Log.v(TAG, "updateTTY: enabled: " + enabled); @@ -755,7 +762,8 @@ public class PhoneStatusBarPolicy implements Callback, Callbacks, } else if (action.equals(TelephonyIntents.ACTION_SIM_STATE_CHANGED)) { updateSimState(intent); } else if (action.equals(TelecomManager.ACTION_CURRENT_TTY_MODE_CHANGED)) { - updateTTY(intent); + updateTTY(intent.getIntExtra(TelecomManager.EXTRA_CURRENT_TTY_MODE, + TelecomManager.TTY_MODE_OFF)); } else if (action.equals(Intent.ACTION_MANAGED_PROFILE_AVAILABLE) || action.equals(Intent.ACTION_MANAGED_PROFILE_UNAVAILABLE) || action.equals(Intent.ACTION_MANAGED_PROFILE_REMOVED)) { 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 8fc21534b45f..0d981039aac0 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java @@ -119,6 +119,7 @@ import android.util.Slog; import android.util.SparseArray; import android.util.SparseBooleanArray; import android.view.Display; +import android.view.HapticFeedbackConstants; import android.view.IWindowManager; import android.view.KeyEvent; import android.view.LayoutInflater; @@ -3519,6 +3520,14 @@ public class StatusBar extends SystemUI implements DemoMode, pw.print (" "); mStackScroller.dump(fd, pw, args); } + pw.println(" Theme:"); + if (mOverlayManager == null) { + pw.println(" overlay manager not initialized!"); + } else { + pw.println(" dark overlay on: " + isUsingDarkTheme()); + } + final boolean lightWpTheme = mContext.getThemeResId() == R.style.Theme_SystemUI_Light; + pw.println(" light wallpaper theme: " + lightWpTheme); DozeLog.dump(pw); @@ -3722,7 +3731,6 @@ public class StatusBar extends SystemUI implements DemoMode, } } else if (Intent.ACTION_SCREEN_OFF.equals(action)) { - notifyHeadsUpScreenOff(); finishBarAnimations(); resetUserExpandedStates(); } @@ -4622,6 +4630,7 @@ public class StatusBar extends SystemUI implements DemoMode, } private void updateDozingState() { + Trace.traceCounter(Trace.TRACE_TAG_APP, "dozing", mDozing ? 1 : 0); Trace.beginSection("StatusBar#updateDozingState"); boolean animate = !mDozing && mDozeServiceHost.shouldAnimateWakeup(); mNotificationPanel.setDozing(mDozing, animate); @@ -4725,6 +4734,7 @@ public class StatusBar extends SystemUI implements DemoMode, // Make our window larger and the panel expanded. makeExpandedVisible(true); mNotificationPanel.expand(false /* animate */); + recomputeDisableFlags(false /* animate */); } private void instantCollapseNotificationPanel() { @@ -5162,6 +5172,7 @@ public class StatusBar extends SystemUI implements DemoMode, @Override public void onStartedGoingToSleep() { + notifyHeadsUpGoingToSleep(); dismissVolumeDialog(); } @@ -5503,6 +5514,11 @@ public class StatusBar extends SystemUI implements DemoMode, @Override public void setAnimateWakeup(boolean animateWakeup) { + if (mWakefulnessLifecycle.getWakefulness() == WAKEFULNESS_AWAKE + || mWakefulnessLifecycle.getWakefulness() == WAKEFULNESS_WAKING) { + // Too late to change the wakeup animation. + return; + } mAnimateWakeup = animateWakeup; } @@ -6358,6 +6374,7 @@ public class StatusBar extends SystemUI implements DemoMode, if (row.isDark()) { return false; } + v.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS); if (row.areGutsExposed()) { closeAndSaveGuts(false /* removeLeavebehind */, false /* force */, true /* removeControls */, -1 /* x */, -1 /* y */, @@ -7249,7 +7266,7 @@ public class StatusBar extends SystemUI implements DemoMode, setAreThereNotifications(); } - protected void notifyHeadsUpScreenOff() { + protected void notifyHeadsUpGoingToSleep() { maybeEscalateHeadsUp(); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java index adc33a144689..0dcf6d277145 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java @@ -246,6 +246,11 @@ public class StatusBarWindowView extends FrameLayout { return false; } + public void setTouchActive(boolean touchActive) { + mTouchActive = touchActive; + mStackScrollLayout.setTouchActive(touchActive); + } + @Override public boolean dispatchTouchEvent(MotionEvent ev) { boolean isDown = ev.getActionMasked() == MotionEvent.ACTION_DOWN; @@ -253,11 +258,11 @@ public class StatusBarWindowView extends FrameLayout { mNotificationPanel.startExpandLatencyTracking(); } if (isDown) { - mTouchActive = true; + setTouchActive(true); mTouchCancelled = false; } else if (ev.getActionMasked() == MotionEvent.ACTION_UP || ev.getActionMasked() == MotionEvent.ACTION_CANCEL) { - mTouchActive = false; + setTouchActive(false); } if (mTouchCancelled) { return false; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java b/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java index 4bbe895da7ca..472e30c7f6da 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java @@ -4311,6 +4311,10 @@ public class NotificationStackScrollLayout extends ViewGroup mAmbientState.getScrollY())); } + public void setTouchActive(boolean touchActive) { + mShelf.setTouchActive(touchActive); + } + /** * A listener that is notified when some child locations might have changed. */ diff --git a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogControllerImpl.java b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogControllerImpl.java index 73ec0a47cde5..ad47411554f7 100644 --- a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogControllerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogControllerImpl.java @@ -913,11 +913,7 @@ public class VolumeDialogControllerImpl implements VolumeDialogController, Dumpa @Override public void onRemoteUpdate(Token token, String name, PlaybackInfo pi) { - if (!mRemoteStreams.containsKey(token)) { - mRemoteStreams.put(token, mNextStream); - if (D.BUG) Log.d(TAG, "onRemoteUpdate: " + name + " is stream " + mNextStream); - mNextStream++; - } + addStream(token, "onRemoteUpdate"); final int stream = mRemoteStreams.get(token); boolean changed = mState.states.indexOfKey(stream) < 0; final StreamState ss = streamStateW(stream); @@ -942,6 +938,7 @@ public class VolumeDialogControllerImpl implements VolumeDialogController, Dumpa @Override public void onRemoteVolumeChanged(Token token, int flags) { + addStream(token, "onRemoteVolumeChanged"); final int stream = mRemoteStreams.get(token); final boolean showUI = shouldShowUI(flags); boolean changed = updateActiveStreamW(stream); @@ -958,6 +955,11 @@ public class VolumeDialogControllerImpl implements VolumeDialogController, Dumpa @Override public void onRemoteRemoved(Token token) { + if (!mRemoteStreams.containsKey(token)) { + if (D.BUG) Log.d(TAG, "onRemoteRemoved: stream doesn't exist, " + + "aborting remote removed for token:" + token.toString()); + return; + } final int stream = mRemoteStreams.get(token); mState.states.remove(stream); if (mState.activeStream == stream) { @@ -983,6 +985,15 @@ public class VolumeDialogControllerImpl implements VolumeDialogController, Dumpa } return null; } + + private void addStream(Token token, String triggeringMethod) { + if (!mRemoteStreams.containsKey(token)) { + mRemoteStreams.put(token, mNextStream); + if (D.BUG) Log.d(TAG, triggeringMethod + ": added stream " + mNextStream + + " from token + "+ token.toString()); + mNextStream++; + } + } } public interface UserActivityListener { diff --git a/packages/SystemUI/src/com/android/systemui/volume/ZenModePanel.java b/packages/SystemUI/src/com/android/systemui/volume/ZenModePanel.java index 4716552e94a1..a3aca6e1b649 100644 --- a/packages/SystemUI/src/com/android/systemui/volume/ZenModePanel.java +++ b/packages/SystemUI/src/com/android/systemui/volume/ZenModePanel.java @@ -41,6 +41,7 @@ import android.util.ArraySet; import android.util.AttributeSet; import android.util.Log; import android.util.MathUtils; +import android.util.Slog; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -53,6 +54,7 @@ import android.widget.RadioButton; import android.widget.RadioGroup; import android.widget.TextView; +import com.android.internal.annotations.VisibleForTesting; import com.android.internal.logging.MetricsLogger; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.systemui.Prefs; @@ -116,8 +118,6 @@ public class ZenModePanel extends FrameLayout { private Callback mCallback; private ZenModeController mController; - private boolean mCountdownConditionSupported; - private boolean mRequestingConditions; private Condition mExitCondition; private int mBucketIndex = -1; private boolean mExpanded; @@ -126,8 +126,6 @@ public class ZenModePanel extends FrameLayout { private int mAttachedZen; private boolean mAttached; private Condition mSessionExitCondition; - private Condition[] mConditions; - private Condition mTimeCondition; private boolean mVoiceCapable; protected int mZenModeConditionLayoutId; @@ -155,8 +153,6 @@ public class ZenModePanel extends FrameLayout { public void dump(FileDescriptor fd, PrintWriter pw, String[] args) { pw.println("ZenModePanel state:"); - pw.print(" mCountdownConditionSupported="); pw.println(mCountdownConditionSupported); - pw.print(" mRequestingConditions="); pw.println(mRequestingConditions); pw.print(" mAttached="); pw.println(mAttached); pw.print(" mHidden="); pw.println(mHidden); pw.print(" mExpanded="); pw.println(mExpanded); @@ -292,7 +288,6 @@ public class ZenModePanel extends FrameLayout { private void onAttach() { setExpanded(true); - mAttached = true; mAttachedZen = mController.getZen(); ZenRule manualRule = mController.getManualRule(); mExitCondition = manualRule != null ? manualRule.condition : null; @@ -304,23 +299,26 @@ public class ZenModePanel extends FrameLayout { mController.addCallback(mZenCallback); setSessionExitCondition(copy(mExitCondition)); updateWidgets(); - setRequestingConditions(!mHidden); - ensureSelection(); + setAttached(true); } private void onDetach() { if (DEBUG) Log.d(mTag, "onDetach"); setExpanded(false); checkForAttachedZenChange(); - mAttached = false; + setAttached(false); mAttachedZen = -1; mSessionZen = -1; mController.removeCallback(mZenCallback); setSessionExitCondition(null); - setRequestingConditions(false); mTransitionHelper.clear(); } + @VisibleForTesting + void setAttached(boolean attached) { + mAttached = attached; + } + @Override public void onVisibilityAggregated(boolean isVisible) { super.onVisibilityAggregated(isVisible); @@ -342,7 +340,6 @@ public class ZenModePanel extends FrameLayout { if (mHidden == hidden) return; if (DEBUG) Log.d(mTag, "hidden=" + hidden); mHidden = hidden; - setRequestingConditions(mAttached && !mHidden); updateWidgets(); } @@ -365,29 +362,6 @@ public class ZenModePanel extends FrameLayout { fireExpanded(); } - /** Start or stop requesting relevant zen mode exit conditions */ - private void setRequestingConditions(final boolean requesting) { - if (mRequestingConditions == requesting) return; - if (DEBUG) Log.d(mTag, "setRequestingConditions " + requesting); - mRequestingConditions = requesting; - if (mRequestingConditions) { - mTimeCondition = parseExistingTimeCondition(mContext, mExitCondition); - if (mTimeCondition != null) { - mBucketIndex = -1; - } else { - mBucketIndex = DEFAULT_BUCKET_INDEX; - mTimeCondition = ZenModeConfig.toTimeCondition(mContext, - MINUTE_BUCKETS[mBucketIndex], ActivityManager.getCurrentUser()); - } - if (DEBUG) Log.d(mTag, "Initial bucket index: " + mBucketIndex); - - mConditions = null; // reset conditions - handleUpdateConditions(); - } else { - hideAllConditions(); - } - } - protected void addZenConditions(int count) { for (int i = 0; i < count; i++) { final View rb = mInflater.inflate(mZenModeButtonLayoutId, mEdit, false); @@ -401,9 +375,7 @@ public class ZenModePanel extends FrameLayout { public void init(ZenModeController controller) { mController = controller; - mCountdownConditionSupported = mController.isCountdownConditionSupported(); - final int countdownDelta = mCountdownConditionSupported ? COUNTDOWN_CONDITION_COUNT : 0; - final int minConditions = 1 /*forever*/ + countdownDelta; + final int minConditions = 1 /*forever*/ + COUNTDOWN_CONDITION_COUNT; addZenConditions(minConditions); mSessionZen = getSelectedZen(-1); handleUpdateManualRule(mController.getManualRule()); @@ -426,10 +398,6 @@ public class ZenModePanel extends FrameLayout { return isForever(condition) ? null : getConditionId(condition); } - private static boolean sameConditionId(Condition lhs, Condition rhs) { - return lhs == null ? rhs == null : rhs != null && lhs.id.equals(rhs.id); - } - private static Condition copy(Condition condition) { return condition == null ? null : condition.copy(); } @@ -438,17 +406,24 @@ public class ZenModePanel extends FrameLayout { mCallback = callback; } - private void handleUpdateManualRule(ZenRule rule) { + @VisibleForTesting + void handleUpdateManualRule(ZenRule rule) { final int zen = rule != null ? rule.zenMode : Global.ZEN_MODE_OFF; handleUpdateZen(zen); final Condition c = rule == null ? null : rule.condition != null ? rule.condition : createCondition(rule.conditionId); - handleExitConditionChanged(c); + handleUpdateConditions(c); + setExitCondition(c); } private Condition createCondition(Uri conditionId) { - if (ZenModeConfig.isValidCountdownConditionId(conditionId)) { + if (ZenModeConfig.isValidCountdownToAlarmConditionId(conditionId)) { + long time = ZenModeConfig.tryParseCountdownConditionId(conditionId); + Condition c = ZenModeConfig.toNextAlarmCondition( + mContext, time, ActivityManager.getCurrentUser()); + return c; + } else if (ZenModeConfig.isValidCountdownConditionId(conditionId)) { long time = ZenModeConfig.tryParseCountdownConditionId(conditionId); int mins = (int) ((time - System.currentTimeMillis() + DateUtils.MINUTE_IN_MILLIS / 2) / DateUtils.MINUTE_IN_MILLIS); @@ -466,48 +441,10 @@ public class ZenModePanel extends FrameLayout { } mZenButtons.setSelectedValue(zen, false /* fromClick */); updateWidgets(); - handleUpdateConditions(); - if (mExpanded) { - final Condition selected = getSelectedCondition(); - if (!Objects.equals(mExitCondition, selected)) { - select(selected); - } - } - } - - private void handleExitConditionChanged(Condition exitCondition) { - setExitCondition(exitCondition); - if (DEBUG) Log.d(mTag, "handleExitConditionChanged " + mExitCondition); - if (exitCondition == null) return; - final int N = getVisibleConditions(); - for (int i = 0; i < N; i++) { - final ConditionTag tag = getConditionTagAt(i); - if (tag != null && sameConditionId(tag.condition, mExitCondition)) { - bind(exitCondition, mZenRadioGroupContent.getChildAt(i), i); - tag.rb.setChecked(true); - return; - } - } - if (mCountdownConditionSupported && ZenModeConfig.isValidCountdownConditionId( - exitCondition.id)) { - bind(exitCondition, mZenRadioGroupContent.getChildAt(COUNTDOWN_CONDITION_INDEX), - COUNTDOWN_CONDITION_INDEX); - getConditionTagAt(COUNTDOWN_CONDITION_INDEX).rb.setChecked(true); - } } - private Condition getSelectedCondition() { - final int N = getVisibleConditions(); - for (int i = 0; i < N; i++) { - final ConditionTag tag = getConditionTagAt(i); - if (tag != null && tag.rb.isChecked()) { - return tag.condition; - } - } - return null; - } - - private int getSelectedZen(int defValue) { + @VisibleForTesting + int getSelectedZen(int defValue) { final Object zen = mZenButtons.getSelectedValue(); return zen != null ? (Integer) zen : defValue; } @@ -575,56 +512,66 @@ public class ZenModePanel extends FrameLayout { return getResources().getString(warningRes, template); } - private static Condition parseExistingTimeCondition(Context context, Condition condition) { - if (condition == null) return null; - final long time = ZenModeConfig.tryParseCountdownConditionId(condition.id); - if (time == 0) return null; - final long now = System.currentTimeMillis(); - final long span = time - now; - if (span <= 0 || span > MAX_BUCKET_MINUTES * MINUTES_MS) return null; - return ZenModeConfig.toTimeCondition(context, - time, Math.round(span / (float) MINUTES_MS), ActivityManager.getCurrentUser(), - false /*shortVersion*/); - } - - private void handleUpdateConditions() { + @VisibleForTesting + void handleUpdateConditions(Condition c) { if (mTransitionHelper.isTransitioning()) { return; } - final int conditionCount = mConditions == null ? 0 : mConditions.length; - if (DEBUG) Log.d(mTag, "handleUpdateConditions conditionCount=" + conditionCount); // forever bind(forever(), mZenRadioGroupContent.getChildAt(FOREVER_CONDITION_INDEX), FOREVER_CONDITION_INDEX); - // countdown - if (mCountdownConditionSupported && mTimeCondition != null) { - bind(mTimeCondition, mZenRadioGroupContent.getChildAt(COUNTDOWN_CONDITION_INDEX), - COUNTDOWN_CONDITION_INDEX); - } - // countdown until alarm - if (mCountdownConditionSupported) { - Condition nextAlarmCondition = getTimeUntilNextAlarmCondition(); - if (nextAlarmCondition != null) { - mZenRadioGroup.getChildAt( - COUNTDOWN_ALARM_CONDITION_INDEX).setVisibility(View.VISIBLE); - mZenRadioGroupContent.getChildAt( - COUNTDOWN_ALARM_CONDITION_INDEX).setVisibility(View.VISIBLE); - bind(nextAlarmCondition, - mZenRadioGroupContent.getChildAt(COUNTDOWN_ALARM_CONDITION_INDEX), - COUNTDOWN_ALARM_CONDITION_INDEX); + if (c == null) { + bindGenericCountdown(); + bindNextAlarm(getTimeUntilNextAlarmCondition()); + } else if (isForever(c)) { + getConditionTagAt(FOREVER_CONDITION_INDEX).rb.setChecked(true); + bindGenericCountdown(); + bindNextAlarm(getTimeUntilNextAlarmCondition()); + } else { + if (isAlarm(c)) { + bindGenericCountdown(); + + bindNextAlarm(c); + getConditionTagAt(COUNTDOWN_ALARM_CONDITION_INDEX).rb.setChecked(true); + } else if (isCountdown(c)) { + bindNextAlarm(getTimeUntilNextAlarmCondition()); + + bind(c, mZenRadioGroupContent.getChildAt(COUNTDOWN_CONDITION_INDEX), + COUNTDOWN_CONDITION_INDEX); + getConditionTagAt(COUNTDOWN_CONDITION_INDEX).rb.setChecked(true); } else { - mZenRadioGroup.getChildAt(COUNTDOWN_ALARM_CONDITION_INDEX).setVisibility(View.GONE); - mZenRadioGroupContent.getChildAt( - COUNTDOWN_ALARM_CONDITION_INDEX).setVisibility(View.GONE); + Slog.wtf(TAG, "Invalid manual condition: " + c); } } - // ensure something is selected - if (mExpanded) { - ensureSelection(); - } mZenConditions.setVisibility(mSessionZen != Global.ZEN_MODE_OFF ? View.VISIBLE : View.GONE); } + private void bindGenericCountdown() { + mBucketIndex = DEFAULT_BUCKET_INDEX; + Condition countdown = ZenModeConfig.toTimeCondition(mContext, + MINUTE_BUCKETS[mBucketIndex], ActivityManager.getCurrentUser()); + // don't change the hour condition while the user is viewing the panel + if (!mAttached || getConditionTagAt(COUNTDOWN_CONDITION_INDEX).condition == null) { + bind(countdown, mZenRadioGroupContent.getChildAt(COUNTDOWN_CONDITION_INDEX), + COUNTDOWN_CONDITION_INDEX); + } + } + + private void bindNextAlarm(Condition c) { + View alarmContent = mZenRadioGroupContent.getChildAt(COUNTDOWN_ALARM_CONDITION_INDEX); + ConditionTag tag = (ConditionTag) alarmContent.getTag(); + // Don't change the alarm condition while the user is viewing the panel + if (c != null && (!mAttached || tag == null || tag.condition == null)) { + bind(c, alarmContent, COUNTDOWN_ALARM_CONDITION_INDEX); + } + + tag = (ConditionTag) alarmContent.getTag(); + boolean showAlarm = tag != null && tag.condition != null; + mZenRadioGroup.getChildAt(COUNTDOWN_ALARM_CONDITION_INDEX).setVisibility( + showAlarm ? View.VISIBLE : View.GONE); + alarmContent.setVisibility(showAlarm ? View.VISIBLE : View.GONE); + } + private Condition forever() { return new Condition(mForeverId, foreverSummary(mContext), "", "", 0 /*icon*/, Condition.STATE_TRUE, 0 /*flags*/); @@ -637,7 +584,6 @@ public class ZenModePanel extends FrameLayout { // Returns a time condition if the next alarm is within the next week. private Condition getTimeUntilNextAlarmCondition() { GregorianCalendar weekRange = new GregorianCalendar(); - final long now = weekRange.getTimeInMillis(); setToMidnight(weekRange); weekRange.add(Calendar.DATE, 6); final long nextAlarmMs = mController.getNextAlarm(); @@ -647,9 +593,8 @@ public class ZenModePanel extends FrameLayout { setToMidnight(nextAlarm); if (weekRange.compareTo(nextAlarm) >= 0) { - return ZenModeConfig.toTimeCondition(mContext, nextAlarmMs, - Math.round((nextAlarmMs - now) / (float) MINUTES_MS), - ActivityManager.getCurrentUser(), true); + return ZenModeConfig.toNextAlarmCondition(mContext, nextAlarmMs, + ActivityManager.getCurrentUser()); } } return null; @@ -662,11 +607,13 @@ public class ZenModePanel extends FrameLayout { calendar.set(Calendar.MILLISECOND, 0); } - private ConditionTag getConditionTagAt(int index) { + @VisibleForTesting + ConditionTag getConditionTagAt(int index) { return (ConditionTag) mZenRadioGroupContent.getChildAt(index).getTag(); } - private int getVisibleConditions() { + @VisibleForTesting + int getVisibleConditions() { int rt = 0; final int N = mZenRadioGroupContent.getChildCount(); for (int i = 0; i < N; i++) { @@ -682,34 +629,8 @@ public class ZenModePanel extends FrameLayout { } } - private void ensureSelection() { - // are we left without anything selected? if so, set a default - final int visibleConditions = getVisibleConditions(); - if (visibleConditions == 0) return; - for (int i = 0; i < visibleConditions; i++) { - final ConditionTag tag = getConditionTagAt(i); - if (tag != null && tag.rb.isChecked()) { - if (DEBUG) Log.d(mTag, "Not selecting a default, checked=" + tag.condition); - return; - } - } - final ConditionTag foreverTag = getConditionTagAt(FOREVER_CONDITION_INDEX); - if (foreverTag == null) return; - if (DEBUG) Log.d(mTag, "Selecting a default"); - final int favoriteIndex = mPrefs.getMinuteIndex(); - if (mExitCondition != null && mExitCondition.equals(mTimeCondition)) { - getConditionTagAt(COUNTDOWN_CONDITION_INDEX).rb.setChecked(true); - } else if (favoriteIndex == -1 || !mCountdownConditionSupported || - mAttachedZen != Global.ZEN_MODE_OFF) { - foreverTag.rb.setChecked(true); - } else { - mTimeCondition = ZenModeConfig.toTimeCondition(mContext, - MINUTE_BUCKETS[favoriteIndex], ActivityManager.getCurrentUser()); - mBucketIndex = favoriteIndex; - bind(mTimeCondition, mZenRadioGroupContent.getChildAt(COUNTDOWN_CONDITION_INDEX), - COUNTDOWN_CONDITION_INDEX); - getConditionTagAt(COUNTDOWN_CONDITION_INDEX).rb.setChecked(true); - } + private static boolean isAlarm(Condition c) { + return c != null && ZenModeConfig.isValidCountdownToAlarmConditionId(c.id); } private static boolean isCountdown(Condition c) { @@ -877,10 +798,9 @@ public class ZenModePanel extends FrameLayout { newCondition = ZenModeConfig.toTimeCondition(mContext, MINUTE_BUCKETS[mBucketIndex], ActivityManager.getCurrentUser()); } - mTimeCondition = newCondition; - bind(mTimeCondition, row, rowId); + bind(newCondition, row, rowId); tag.rb.setChecked(true); - select(mTimeCondition); + select(newCondition); announceConditionSelection(tag); } @@ -902,7 +822,7 @@ public class ZenModePanel extends FrameLayout { setExitCondition(condition); if (realConditionId == null) { mPrefs.setMinuteIndex(-1); - } else if (isCountdown(condition) && mBucketIndex != -1) { + } else if ((isAlarm(condition) || isCountdown(condition)) && mBucketIndex != -1) { mPrefs.setMinuteIndex(mBucketIndex); } setSessionExitCondition(copy(condition)); @@ -951,7 +871,8 @@ public class ZenModePanel extends FrameLayout { } // used as the view tag on condition rows - private static class ConditionTag { + @VisibleForTesting + static class ConditionTag { RadioButton rb; View lines; TextView line1; diff --git a/packages/SystemUI/src/com/android/systemui/volume/ZenRadioLayout.java b/packages/SystemUI/src/com/android/systemui/volume/ZenRadioLayout.java new file mode 100644 index 000000000000..5dbcd8a73aac --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/volume/ZenRadioLayout.java @@ -0,0 +1,62 @@ +/* + * Copyright (C) 2017 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the specific language governing + * permissions and limitations under the License. + */ + +package com.android.systemui.volume; + +import android.content.Context; +import android.util.AttributeSet; +import android.view.View; +import android.view.ViewGroup; +import android.widget.LinearLayout; + +/** + * Specialized layout for zen mode that allows the radio buttons to reside within + * a RadioGroup, but also makes sure that all the heights off the radio buttons align + * with the corresponding content in the second child of this view. + */ +public class ZenRadioLayout extends LinearLayout { + + public ZenRadioLayout(Context context, AttributeSet attrs) { + super(context, attrs); + } + + /** + * Run 2 measurement passes, 1 that figures out the size of the content, and another + * that sets the size of the radio buttons to the heights of the corresponding content. + */ + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + + ViewGroup radioGroup = (ViewGroup) getChildAt(0); + ViewGroup radioContent = (ViewGroup) getChildAt(1); + int size = radioGroup.getChildCount(); + if (size != radioContent.getChildCount()) { + throw new IllegalStateException("Expected matching children"); + } + boolean hasChanges = false; + for (int i = 0; i < size; i++) { + View radio = radioGroup.getChildAt(i); + View content = radioContent.getChildAt(i); + if (radio.getLayoutParams().height != content.getMeasuredHeight()) { + hasChanges = true; + radio.getLayoutParams().height = content.getMeasuredHeight(); + } + } + // Measure again if any heights changed. + if (hasChanges) { + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + } + } +} diff --git a/packages/SystemUI/tests/src/com/android/systemui/volume/ZenModePanelTest.java b/packages/SystemUI/tests/src/com/android/systemui/volume/ZenModePanelTest.java new file mode 100644 index 000000000000..0fdbfd1944fe --- /dev/null +++ b/packages/SystemUI/tests/src/com/android/systemui/volume/ZenModePanelTest.java @@ -0,0 +1,217 @@ +/** + * Copyright (C) 2017 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.volume; + +import static junit.framework.Assert.assertEquals; +import static junit.framework.Assert.assertFalse; +import static junit.framework.Assert.assertTrue; + +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +import android.net.Uri; +import android.provider.Settings; +import android.service.notification.Condition; +import android.service.notification.ZenModeConfig; +import android.support.test.annotation.UiThreadTest; +import android.support.test.filters.SmallTest; +import android.support.test.runner.AndroidJUnit4; +import android.view.LayoutInflater; + +import com.android.systemui.SysuiTestCase; +import com.android.systemui.statusbar.policy.ZenModeController; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; + +@SmallTest +@RunWith(AndroidJUnit4.class) +public class ZenModePanelTest extends SysuiTestCase { + + ZenModePanel mPanel; + ZenModeController mController; + Uri mForeverId; + + @Before + public void setup() throws Exception { + final LayoutInflater layoutInflater = LayoutInflater.from(mContext); + mPanel = (ZenModePanel) layoutInflater.inflate(com.android.systemui.R.layout.zen_mode_panel, + null); + mController = mock(ZenModeController.class); + mForeverId = Condition.newId(mContext).appendPath("forever").build(); + + mPanel.init(mController); + } + + private void assertProperConditionTagTypes(boolean hasAlarm) { + final int N = mPanel.getVisibleConditions(); + assertEquals(hasAlarm ? 3 : 2, N); + + assertEquals(mForeverId, mPanel.getConditionTagAt(0).condition.id); + assertTrue(ZenModeConfig.isValidCountdownConditionId( + mPanel.getConditionTagAt(1).condition.id)); + assertFalse(ZenModeConfig.isValidCountdownToAlarmConditionId( + mPanel.getConditionTagAt(1).condition.id)); + if (hasAlarm) { + assertTrue(ZenModeConfig.isValidCountdownToAlarmConditionId( + mPanel.getConditionTagAt(2).condition.id)); + } + } + + @Test + public void testHandleUpdateConditions_foreverSelected_alarmExists() { + Condition forever = new Condition(mForeverId, "", Condition.STATE_TRUE); + + when(mController.getNextAlarm()).thenReturn(System.currentTimeMillis() + 1000); + + mPanel.handleUpdateConditions(forever); + assertProperConditionTagTypes(true); + assertTrue(mPanel.getConditionTagAt(0).rb.isChecked()); + } + + @Test + public void testHandleUpdateConditions_foreverSelected_noAlarm() { + Uri foreverId = Condition.newId(mContext).appendPath("forever").build(); + Condition forever = new Condition(foreverId, "", Condition.STATE_TRUE); + + when(mController.getNextAlarm()).thenReturn((long) 0); + + mPanel.handleUpdateConditions(forever); + assertProperConditionTagTypes(false); + assertEquals(foreverId, mPanel.getConditionTagAt(0).condition.id); + } + + @Test + public void testHandleUpdateConditions_countdownSelected_alarmExists() { + Uri foreverId = Condition.newId(mContext).appendPath("forever").build(); + + Condition countdown = new Condition(ZenModeConfig.toCountdownConditionId( + System.currentTimeMillis() + (3 * 60 * 60 * 1000) + 4000, false), + "", Condition.STATE_TRUE); + + when(mController.getNextAlarm()).thenReturn(System.currentTimeMillis() + 1000); + + mPanel.handleUpdateConditions(countdown); + assertProperConditionTagTypes(true); + assertTrue(mPanel.getConditionTagAt(1).rb.isChecked()); + } + + @Test + public void testHandleUpdateConditions_countdownSelected_noAlarm() { + Uri foreverId = Condition.newId(mContext).appendPath("forever").build(); + + Condition countdown = new Condition(ZenModeConfig.toCountdownConditionId( + System.currentTimeMillis() + (3 * 60 * 60 * 1000) + 4000, false), + "", Condition.STATE_TRUE); + + when(mController.getNextAlarm()).thenReturn((long) 0); + + mPanel.handleUpdateConditions(countdown); + assertProperConditionTagTypes(false); + assertTrue(mPanel.getConditionTagAt(1).rb.isChecked()); + } + + @Test + public void testHandleUpdateConditions_nextAlarmSelected() { + Uri foreverId = Condition.newId(mContext).appendPath("forever").build(); + + Condition alarm = new Condition(ZenModeConfig.toCountdownConditionId( + System.currentTimeMillis() + 1000, true), + "", Condition.STATE_TRUE); + when(mController.getNextAlarm()).thenReturn(System.currentTimeMillis() + 9000); + + mPanel.handleUpdateConditions(alarm); + + assertProperConditionTagTypes(true); + assertEquals(alarm, mPanel.getConditionTagAt(2).condition); + assertTrue(mPanel.getConditionTagAt(2).rb.isChecked()); + } + + @Test + public void testHandleUpdateConditions_foreverSelected_alarmConditionDoesNotChangeIfAttached() { + Uri foreverId = Condition.newId(mContext).appendPath("forever").build(); + Condition forever = new Condition(foreverId, "", Condition.STATE_TRUE); + + Condition alarm = new Condition(ZenModeConfig.toCountdownConditionId( + System.currentTimeMillis() + 9000, true), + "", Condition.STATE_TRUE); + when(mController.getNextAlarm()).thenReturn(System.currentTimeMillis() + 1000); + + mPanel.handleUpdateConditions(alarm); + mPanel.setAttached(true); + mPanel.handleUpdateConditions(forever); + + assertProperConditionTagTypes(true); + assertEquals(alarm, mPanel.getConditionTagAt(2).condition); + assertTrue(mPanel.getConditionTagAt(0).rb.isChecked()); + } + + @Test + public void testHandleUpdateConditions_foreverSelected_timeConditionDoesNotChangeIfAttached() { + Uri foreverId = Condition.newId(mContext).appendPath("forever").build(); + Condition forever = new Condition(foreverId, "", Condition.STATE_TRUE); + + Condition countdown = new Condition(ZenModeConfig.toCountdownConditionId( + System.currentTimeMillis() + (3 * 60 * 60 * 1000) + 4000, false), + "", Condition.STATE_TRUE); + when(mController.getNextAlarm()).thenReturn((long) 0); + + mPanel.handleUpdateConditions(countdown); + mPanel.setAttached(true); + mPanel.handleUpdateConditions(forever); + + assertProperConditionTagTypes(false); + assertEquals(countdown, mPanel.getConditionTagAt(1).condition); + assertTrue(mPanel.getConditionTagAt(0).rb.isChecked()); + } + + @Test + @UiThreadTest + public void testHandleUpdateManualRule_stillSelectedAfterModeChange() { + ZenModeConfig.ZenRule rule = new ZenModeConfig.ZenRule(); + + Condition alarm = new Condition(ZenModeConfig.toCountdownConditionId( + System.currentTimeMillis() + 1000, true), + "", Condition.STATE_TRUE); + + rule.condition = alarm; + rule.conditionId = alarm.id; + rule.enabled = true; + rule.zenMode = Settings.Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS; + + mPanel.handleUpdateManualRule(rule); + + assertProperConditionTagTypes(true); + assertEquals(alarm, mPanel.getConditionTagAt(2).condition); + assertTrue(mPanel.getConditionTagAt(2).rb.isChecked()); + + assertEquals(Settings.Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS, + mPanel.getSelectedZen(Settings.Global.ZEN_MODE_OFF)); + + rule.zenMode = Settings.Global.ZEN_MODE_NO_INTERRUPTIONS; + + mPanel.handleUpdateManualRule(rule); + + assertProperConditionTagTypes(true); + assertEquals(alarm, mPanel.getConditionTagAt(2).condition); + assertTrue(mPanel.getConditionTagAt(2).rb.isChecked()); + + assertEquals(Settings.Global.ZEN_MODE_NO_INTERRUPTIONS, + mPanel.getSelectedZen(Settings.Global.ZEN_MODE_OFF)); + } +} diff --git a/services/autofill/java/com/android/server/autofill/Helper.java b/services/autofill/java/com/android/server/autofill/Helper.java index 86e32e041a96..086dd29f0c97 100644 --- a/services/autofill/java/com/android/server/autofill/Helper.java +++ b/services/autofill/java/com/android/server/autofill/Helper.java @@ -16,11 +16,16 @@ package com.android.server.autofill; +import android.annotation.NonNull; import android.annotation.Nullable; import android.os.Bundle; +import android.service.autofill.Dataset; +import android.util.ArrayMap; import android.util.ArraySet; import android.view.autofill.AutofillId; +import android.view.autofill.AutofillValue; +import java.util.ArrayList; import java.util.Arrays; import java.util.Objects; import java.util.Set; @@ -82,4 +87,16 @@ public final class Helper { } return array; } + + @NonNull + static ArrayMap<AutofillId, AutofillValue> getFields(@NonNull Dataset dataset) { + final ArrayList<AutofillId> ids = dataset.getFieldIds(); + final ArrayList<AutofillValue> values = dataset.getFieldValues(); + final int size = ids == null ? 0 : ids.size(); + final ArrayMap<AutofillId, AutofillValue> fields = new ArrayMap<>(size); + for (int i = 0; i < size; i++) { + fields.put(ids.get(i), values.get(i)); + } + return fields; + } } diff --git a/services/autofill/java/com/android/server/autofill/Session.java b/services/autofill/java/com/android/server/autofill/Session.java index a38b9d3f4b66..f8fb13a54115 100644 --- a/services/autofill/java/com/android/server/autofill/Session.java +++ b/services/autofill/java/com/android/server/autofill/Session.java @@ -715,7 +715,13 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState + id + " destroyed"); return; } - + if (mResponses == null) { + // Typically happens when app explicitly called cancel() while the service was showing + // the auth UI. + Slog.w(TAG, "setAuthenticationResultLocked(" + authenticationId + "): no responses"); + removeSelf(); + return; + } final int requestId = AutofillManager.getRequestIdFromAuthenticationId(authenticationId); final FillResponse authenticatedResponse = mResponses.get(requestId); if (authenticatedResponse == null || data == null) { @@ -781,7 +787,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState return true; } - final int lastResponseIdx = getLastResponseIndex(); + final int lastResponseIdx = getLastResponseIndexLocked(); if (lastResponseIdx < 0) { Slog.w(TAG, "showSaveLocked(): did not get last response. mResponses=" + mResponses + ", mViewStates=" + mViewStates); @@ -798,15 +804,20 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState /* * The Save dialog is only shown if all conditions below are met: * - * - saveInfo is not null - * - autofillValue of all required ids is not null + * - saveInfo is not null. + * - autofillValue of all required ids is not null. * - autofillValue of at least one id (required or optional) has changed. + * - there is no Dataset in the last FillResponse whose values of all dataset fields matches + * the current values of all fields in the screen. */ - if (saveInfo == null) { return true; } + // Cache used to make sure changed fields do not belong to a dataset. + final ArrayMap<AutofillId, AutofillValue> currentValues = new ArrayMap<>(); + final ArraySet<AutofillId> allIds = new ArraySet<>(); + final AutofillId[] requiredIds = saveInfo.getRequiredIds(); boolean allRequiredAreNotEmpty = true; boolean atLeastOneChanged = false; @@ -817,6 +828,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState Slog.w(TAG, "null autofill id on " + Arrays.toString(requiredIds)); continue; } + allIds.add(id); final ViewState viewState = mViewStates.get(id); if (viewState == null) { Slog.w(TAG, "showSaveLocked(): no ViewState for required " + id); @@ -835,18 +847,19 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState value = initialValue; } else { if (sDebug) { - Slog.d(TAG, "showSaveLocked(): empty value for required " + id ); + Slog.d(TAG, "empty value for required " + id ); } allRequiredAreNotEmpty = false; break; } } + currentValues.put(id, value); final AutofillValue filledValue = viewState.getAutofilledValue(); if (!value.equals(filledValue)) { if (sDebug) { - Slog.d(TAG, "showSaveLocked(): found a change on required " + id + ": " - + filledValue + " => " + value); + Slog.d(TAG, "found a change on required " + id + ": " + filledValue + + " => " + value); } atLeastOneChanged = true; } @@ -859,22 +872,34 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState // No change on required ids yet, look for changes on optional ids. for (int i = 0; i < optionalIds.length; i++) { final AutofillId id = optionalIds[i]; + allIds.add(id); final ViewState viewState = mViewStates.get(id); if (viewState == null) { - Slog.w(TAG, "showSaveLocked(): no ViewState for optional " + id); + Slog.w(TAG, "no ViewState for optional " + id); continue; } if ((viewState.getState() & ViewState.STATE_CHANGED) != 0) { final AutofillValue currentValue = viewState.getCurrentValue(); + currentValues.put(id, currentValue); final AutofillValue filledValue = viewState.getAutofilledValue(); if (currentValue != null && !currentValue.equals(filledValue)) { if (sDebug) { - Slog.d(TAG, "finishSessionLocked(): found a change on optional " - + id + ": " + filledValue + " => " + currentValue); + Slog.d(TAG, "found a change on optional " + id + ": " + filledValue + + " => " + currentValue); } atLeastOneChanged = true; break; } + } else { + // Update current values cache based on initial value + final AutofillValue initialValue = getValueFromContexts(id); + if (sDebug) { + Slog.d(TAG, "no current value for " + id + "; initial value is " + + initialValue); + } + if (initialValue != null) { + currentValues.put(id, initialValue); + } } } } @@ -901,6 +926,42 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState } } + // Make sure the service doesn't have the fields already by checking the datasets + // content. + final List<Dataset> datasets = response.getDatasets(); + if (datasets != null) { + datasets_loop: for (int i = 0; i < datasets.size(); i++) { + final Dataset dataset = datasets.get(i); + final ArrayMap<AutofillId, AutofillValue> datasetValues = + Helper.getFields(dataset); + if (sVerbose) { + Slog.v(TAG, "Checking if saved fields match contents of dataset #" + i + + ": " + dataset + "; allIds=" + allIds); + } + for (int j = 0; j < allIds.size(); j++) { + final AutofillId id = allIds.valueAt(j); + final AutofillValue currentValue = currentValues.get(id); + if (currentValue == null) { + if (sDebug) { + Slog.d(TAG, "dataset has value for field that is null: " + id); + } + continue datasets_loop; + } + final AutofillValue datasetValue = datasetValues.get(id); + if (!currentValue.equals(datasetValue)) { + if (sDebug) Slog.d(TAG, "found a change on id " + id); + continue datasets_loop; + } + if (sVerbose) Slog.v(TAG, "no changes for id " + id); + } + if (sDebug) { + Slog.d(TAG, "ignoring Save UI because all fields match contents of " + + "dataset #" + i + ": " + dataset); + } + return true; + } + } + if (sDebug) Slog.d(TAG, "Good news, everyone! All checks passed, show save UI!"); mService.setSaveShown(id); getUiForShowing().showSaveUi(mService.getServiceLabel(), saveInfo, @@ -1096,7 +1157,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState } } - final ArrayList<Dataset> datasets = response.getDatasets(); + final List<Dataset> datasets = response.getDatasets(); if (datasets != null) { final int numDatasets = datasets.size(); @@ -1265,7 +1326,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState // Only track the views of the last response as only those are reported back to the // service, see #showSaveLocked - final FillResponse response = mResponses.valueAt(getLastResponseIndex()); + final FillResponse response = mResponses.valueAt(getLastResponseIndexLocked()); ArraySet<AutofillId> trackedViews = null; boolean saveOnAllViewsInvisible = false; @@ -1292,7 +1353,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState // Must also track that are part of datasets, otherwise the FillUI won't be hidden when // they go away (if they're not savable). - final ArrayList<Dataset> datasets = response.getDatasets(); + final List<Dataset> datasets = response.getDatasets(); ArraySet<AutofillId> fillableIds = null; if (datasets != null) { for (int i = 0; i < datasets.size(); i++) { @@ -1365,7 +1426,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState * Sets the state of all views in the given response. */ private void setViewStatesLocked(FillResponse response, int state, boolean clearResponse) { - final ArrayList<Dataset> datasets = response.getDatasets(); + final List<Dataset> datasets = response.getDatasets(); if (datasets != null) { for (int i = 0; i < datasets.size(); i++) { final Dataset dataset = datasets.get(i); @@ -1642,17 +1703,19 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState } } - private int getLastResponseIndex() { + private int getLastResponseIndexLocked() { // The response ids are monotonically increasing so // we just find the largest id which is the last. We // do not rely on the internal ordering in sparse // array to avoid - wow this stopped working!? int lastResponseIdx = -1; int lastResponseId = -1; - final int responseCount = mResponses.size(); - for (int i = 0; i < responseCount; i++) { - if (mResponses.keyAt(i) > lastResponseId) { - lastResponseIdx = i; + if (mResponses != null) { + final int responseCount = mResponses.size(); + for (int i = 0; i < responseCount; i++) { + if (mResponses.keyAt(i) > lastResponseId) { + lastResponseIdx = i; + } } } return lastResponseIdx; diff --git a/services/autofill/java/com/android/server/autofill/ui/SaveUi.java b/services/autofill/java/com/android/server/autofill/ui/SaveUi.java index ddb621d916b9..035186525ae0 100644 --- a/services/autofill/java/com/android/server/autofill/ui/SaveUi.java +++ b/services/autofill/java/com/android/server/autofill/ui/SaveUi.java @@ -228,6 +228,7 @@ final class SaveUi { final WindowManager.LayoutParams params = window.getAttributes(); params.width = WindowManager.LayoutParams.MATCH_PARENT; params.accessibilityTitle = context.getString(R.string.autofill_save_accessibility_title); + params.windowAnimations = R.style.AutofillSaveAnimation; Slog.i(TAG, "Showing save dialog: " + mTitle); mDialog.show(); diff --git a/services/core/java/com/android/server/InputMethodManagerService.java b/services/core/java/com/android/server/InputMethodManagerService.java index a8e2f3227240..ce062aaa7d92 100644 --- a/services/core/java/com/android/server/InputMethodManagerService.java +++ b/services/core/java/com/android/server/InputMethodManagerService.java @@ -50,6 +50,7 @@ import org.xmlpull.v1.XmlPullParserException; import org.xmlpull.v1.XmlSerializer; import android.annotation.BinderThread; +import android.annotation.ColorInt; import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.Nullable; @@ -231,6 +232,13 @@ public class InputMethodManagerService extends IInputMethodManager.Stub int WIRED_AFFORDANCE = 1; } + /** + * A protected broadcast intent action for internal use for {@link PendingIntent} in + * the notification. + */ + private static final String ACTION_SHOW_INPUT_METHOD_PICKER = + "com.android.server.InputMethodManagerService.SHOW_INPUT_METHOD_PICKER"; + final Context mContext; final Resources mRes; final Handler mHandler; @@ -836,6 +844,16 @@ public class InputMethodManagerService extends IInputMethodManager.Stub } } else if (Intent.ACTION_LOCALE_CHANGED.equals(action)) { onActionLocaleChanged(); + } else if (ACTION_SHOW_INPUT_METHOD_PICKER.equals(action)) { + // ACTION_SHOW_INPUT_METHOD_PICKER action is a protected-broadcast and it is + // guaranteed to be send only from the system, so that there is no need for extra + // security check such as + // {@link #canShowInputMethodPickerLocked(IInputMethodClient)}. + mHandler.obtainMessage( + MSG_SHOW_IM_SUBTYPE_PICKER, + InputMethodManager.SHOW_IM_PICKER_MODE_INCLUDE_AUXILIARY_SUBTYPES, + 0 /* arg2 */) + .sendToTarget(); } else { Slog.w(TAG, "Unexpected intent " + intent); } @@ -1285,6 +1303,8 @@ public class InputMethodManagerService extends IInputMethodManager.Stub Bundle extras = new Bundle(); extras.putBoolean(Notification.EXTRA_ALLOW_DURING_SETUP, true); + @ColorInt final int accentColor = mContext.getColor( + com.android.internal.R.color.system_notification_accent_color); mImeSwitcherNotification = new Notification.Builder(mContext, SystemNotificationChannels.VIRTUAL_KEYBOARD) .setSmallIcon(com.android.internal.R.drawable.ic_notification_ime_default) @@ -1292,9 +1312,10 @@ public class InputMethodManagerService extends IInputMethodManager.Stub .setOngoing(true) .addExtras(extras) .setCategory(Notification.CATEGORY_SYSTEM) - .setColor(com.android.internal.R.color.system_notification_accent_color); + .setColor(accentColor); - Intent intent = new Intent(Settings.ACTION_SHOW_INPUT_METHOD_PICKER); + Intent intent = new Intent(ACTION_SHOW_INPUT_METHOD_PICKER) + .setPackage(mContext.getPackageName()); mImeSwitchPendingIntent = PendingIntent.getBroadcast(mContext, 0, intent, 0); mShowOngoingImeSwitcherForPhones = false; @@ -1445,6 +1466,7 @@ public class InputMethodManagerService extends IInputMethodManager.Stub broadcastFilter.addAction(Intent.ACTION_USER_REMOVED); broadcastFilter.addAction(Intent.ACTION_SETTING_RESTORED); broadcastFilter.addAction(Intent.ACTION_LOCALE_CHANGED); + broadcastFilter.addAction(ACTION_SHOW_INPUT_METHOD_PICKER); mContext.registerReceiver(new ImmsBroadcastReceiver(), broadcastFilter); buildInputMethodListLocked(true /* resetDefaultEnabledIme */); diff --git a/services/core/java/com/android/server/StorageManagerService.java b/services/core/java/com/android/server/StorageManagerService.java index aa2ce1ce3857..1ca0112cb4f3 100644 --- a/services/core/java/com/android/server/StorageManagerService.java +++ b/services/core/java/com/android/server/StorageManagerService.java @@ -2969,6 +2969,11 @@ class StorageManagerService extends IStorageManager.Stub synchronized (mLock) { mLocalUnlockedUsers = ArrayUtils.appendInt(mLocalUnlockedUsers, userId); } + if (userId == UserHandle.USER_SYSTEM) { + String propertyName = "sys.user." + userId + ".ce_available"; + Slog.d(TAG, "Setting property: " + propertyName + "=true"); + SystemProperties.set(propertyName, "true"); + } } @Override diff --git a/services/core/java/com/android/server/connectivity/NetworkNotificationManager.java b/services/core/java/com/android/server/connectivity/NetworkNotificationManager.java index 703e50a08855..0d935dba22c6 100644 --- a/services/core/java/com/android/server/connectivity/NetworkNotificationManager.java +++ b/services/core/java/com/android/server/connectivity/NetworkNotificationManager.java @@ -142,6 +142,18 @@ public class NetworkNotificationManager { extraInfo = null; } + // Clear any previous notification with lower priority, otherwise return. http://b/63676954. + // A new SIGN_IN notification with a new intent should override any existing one. + final int previousEventId = mNotificationTypeMap.get(id); + final NotificationType previousNotifyType = NotificationType.getFromId(previousEventId); + if (priority(previousNotifyType) > priority(notifyType)) { + Slog.d(TAG, String.format( + "ignoring notification %s for network %s with existing notification %s", + notifyType, id, previousNotifyType)); + return; + } + clearNotification(id); + if (DBG) { Slog.d(TAG, String.format( "showNotification tag=%s event=%s transport=%s extraInfo=%s highPrioriy=%s", @@ -274,4 +286,22 @@ public class NetworkNotificationManager { NotificationType t = NotificationType.getFromId(eventId); return (t != null) ? t.name() : "UNKNOWN"; } + + private static int priority(NotificationType t) { + if (t == null) { + return 0; + } + switch (t) { + case SIGN_IN: + return 4; + case NO_INTERNET: + return 3; + case NETWORK_SWITCH: + return 2; + case LOST_INTERNET: + return 1; + default: + return 0; + } + } } diff --git a/services/core/java/com/android/server/display/DisplayPowerController.java b/services/core/java/com/android/server/display/DisplayPowerController.java index fb911ce05254..fb8ae1247796 100644 --- a/services/core/java/com/android/server/display/DisplayPowerController.java +++ b/services/core/java/com/android/server/display/DisplayPowerController.java @@ -169,11 +169,17 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call // a stylish color fade animation instead. private boolean mColorFadeFadesConfig; - // True if we need to transition to the off state when coming out of a doze state. - // Some display hardware will show artifacts (flickers, etc) when transitioning from a doze - // to a fully on state. In order to hide these, we first transition to off to let the system - // animate the screen on as it normally would, which is a much smoother experience. - private boolean mTransitionOffAfterDozeConfig; + // True if we need to fake a transition to off when coming out of a doze state. + // Some display hardware will blank itself when coming out of doze in order to hide + // artifacts. For these displays we fake a transition into OFF so that policy can appropriately + // blank itself and begin an appropriate power on animation. + private boolean mDisplayBlanksAfterDozeConfig; + + // True if there are only buckets of brightness values when the display is in the doze state, + // rather than a full range of values. If this is true, then we'll avoid animating the screen + // brightness since it'd likely be multiple jarring brightness transitions instead of just one + // to reach the final state. + private boolean mBrightnessBucketsInDozeConfig; // The pending power request. // Initially null until the first call to requestPowerState. @@ -422,8 +428,11 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call mColorFadeFadesConfig = resources.getBoolean( com.android.internal.R.bool.config_animateScreenLights); - mTransitionOffAfterDozeConfig = resources.getBoolean( - com.android.internal.R.bool.config_displayTransitionOffAfterDoze); + mDisplayBlanksAfterDozeConfig = resources.getBoolean( + com.android.internal.R.bool.config_displayBlanksAfterDoze); + + mBrightnessBucketsInDozeConfig = resources.getBoolean( + com.android.internal.R.bool.config_displayBrightnessBucketsInDoze); if (!DEBUG_PRETEND_PROXIMITY_SENSOR_ABSENT) { mProximitySensor = mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY); @@ -788,7 +797,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call boolean wasOrWillBeInVr = (state == Display.STATE_VR || oldState == Display.STATE_VR); if ((state == Display.STATE_ON && mSkipRampState == RAMP_STATE_SKIP_NONE - || state == Display.STATE_DOZE) + || state == Display.STATE_DOZE && !mBrightnessBucketsInDozeConfig) && !wasOrWillBeInVr) { animateScreenBrightness(brightness, slowChange ? mBrightnessRampRateSlow : mBrightnessRampRateFast); @@ -811,7 +820,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call // Notify policy about screen turned on. if (ready && state != Display.STATE_OFF && mReportedScreenStateToPolicy == REPORTED_TO_POLICY_SCREEN_TURNING_ON) { - mReportedScreenStateToPolicy = REPORTED_TO_POLICY_SCREEN_ON; + setReportedScreenState(REPORTED_TO_POLICY_SCREEN_ON); mWindowManagerPolicy.screenTurnedOn(); } @@ -894,10 +903,10 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call } private boolean setScreenState(int state) { - return setScreenState(state, false /*force*/); + return setScreenState(state, false /*reportOnly*/); } - private boolean setScreenState(int state, boolean force) { + private boolean setScreenState(int state, boolean reportOnly) { final boolean isOff = (state == Display.STATE_OFF); if (mPowerState.getScreenState() != state) { @@ -905,32 +914,24 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call // actually turn the screen off. if (isOff && !mScreenOffBecauseOfProximity) { if (mReportedScreenStateToPolicy == REPORTED_TO_POLICY_SCREEN_ON) { - mReportedScreenStateToPolicy = REPORTED_TO_POLICY_SCREEN_TURNING_OFF; + setReportedScreenState(REPORTED_TO_POLICY_SCREEN_TURNING_OFF); blockScreenOff(); mWindowManagerPolicy.screenTurningOff(mPendingScreenOffUnblocker); - if (force) { - // If we're forcing the power state transition then immediately - // unblock the screen off event. This keeps the lifecycle consistent, - // so WindowManagerPolicy will always see screenTurningOff before - // screenTurnedOff, but we don't actually block on them for the state - // change. - unblockScreenOff(); - } else { - return false; - } + unblockScreenOff(); } else if (mPendingScreenOffUnblocker != null) { // Abort doing the state change until screen off is unblocked. return false; } } - mPowerState.setScreenState(state); - - // Tell battery stats about the transition. - try { - mBatteryStats.noteScreenState(state); - } catch (RemoteException ex) { - // same process + if (!reportOnly) { + mPowerState.setScreenState(state); + // Tell battery stats about the transition. + try { + mBatteryStats.noteScreenState(state); + } catch (RemoteException ex) { + // same process + } } } @@ -942,7 +943,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call // finished drawing underneath. if (isOff && mReportedScreenStateToPolicy != REPORTED_TO_POLICY_SCREEN_OFF && !mScreenOffBecauseOfProximity) { - mReportedScreenStateToPolicy = REPORTED_TO_POLICY_SCREEN_OFF; + setReportedScreenState(REPORTED_TO_POLICY_SCREEN_OFF); unblockScreenOn(); mWindowManagerPolicy.screenTurnedOff(); } else if (!isOff @@ -952,10 +953,10 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call // Complete the full state transition on -> turningOff -> off. unblockScreenOff(); mWindowManagerPolicy.screenTurnedOff(); - mReportedScreenStateToPolicy = REPORTED_TO_POLICY_SCREEN_OFF; + setReportedScreenState(REPORTED_TO_POLICY_SCREEN_OFF); } if (!isOff && mReportedScreenStateToPolicy == REPORTED_TO_POLICY_SCREEN_OFF) { - mReportedScreenStateToPolicy = REPORTED_TO_POLICY_SCREEN_TURNING_ON; + setReportedScreenState(REPORTED_TO_POLICY_SCREEN_TURNING_ON); if (mPowerState.getColorFadeLevel() == 0.0f) { blockScreenOn(); } else { @@ -968,6 +969,11 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call return mPendingScreenOnUnblocker == null; } + private void setReportedScreenState(int state) { + Trace.traceCounter(Trace.TRACE_TAG_POWER, "ReportedScreenStateToPolicy", state); + mReportedScreenStateToPolicy = state; + } + private int clampScreenBrightness(int value) { return MathUtils.constrain( value, mScreenBrightnessRangeMinimum, mScreenBrightnessRangeMaximum); @@ -997,15 +1003,20 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call mPendingScreenOff = false; } - if (mTransitionOffAfterDozeConfig && - Display.isDozeState(mPowerState.getScreenState()) + if (mDisplayBlanksAfterDozeConfig + && Display.isDozeState(mPowerState.getScreenState()) && !Display.isDozeState(target)) { - setScreenState(Display.STATE_OFF, true /*force*/); // Skip the screen off animation and add a black surface to hide the - // contents of the screen. This will also trigger another power state update so that we - // end up converging on the target state. + // contents of the screen. + mPowerState.prepareColorFade(mContext, + mColorFadeFadesConfig ? ColorFade.MODE_FADE : ColorFade.MODE_WARM_UP); mColorFadeOffAnimator.end(); - return; + // Some display hardware will blank itself on the transition between doze and non-doze + // but still on display states. In this case we want to report to policy that the + // display has turned off so it can prepare the appropriate power on animation, but we + // don't want to actually transition to the fully off state since that takes + // significantly longer to transition from. + setScreenState(Display.STATE_OFF, target != Display.STATE_OFF /*reportOnly*/); } // If we were in the process of turning off the screen but didn't quite @@ -1307,7 +1318,8 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call pw.println(" mAppliedLowPower=" + mAppliedLowPower); pw.println(" mPendingScreenOnUnblocker=" + mPendingScreenOnUnblocker); pw.println(" mPendingScreenOff=" + mPendingScreenOff); - pw.println(" mReportedToPolicy=" + reportedToPolicyToString(mReportedScreenStateToPolicy)); + pw.println(" mReportedToPolicy=" + + reportedToPolicyToString(mReportedScreenStateToPolicy)); pw.println(" mScreenBrightnessRampAnimator.isAnimating()=" + mScreenBrightnessRampAnimator.isAnimating()); diff --git a/services/core/java/com/android/server/display/DisplayPowerState.java b/services/core/java/com/android/server/display/DisplayPowerState.java index d0c15801a232..763f56ff918f 100644 --- a/services/core/java/com/android/server/display/DisplayPowerState.java +++ b/services/core/java/com/android/server/display/DisplayPowerState.java @@ -20,6 +20,7 @@ import android.content.Context; import android.os.Handler; import android.os.Looper; import android.os.PowerManager; +import android.os.Trace; import android.util.FloatProperty; import android.util.IntProperty; import android.util.Slog; @@ -49,6 +50,7 @@ final class DisplayPowerState { private static final String TAG = "DisplayPowerState"; private static boolean DEBUG = false; + private static String COUNTER_COLOR_FADE = "ColorFadeLevel"; private final Handler mHandler; private final Choreographer mChoreographer; @@ -190,6 +192,7 @@ final class DisplayPowerState { * Dismisses the color fade surface. */ public void dismissColorFade() { + Trace.traceCounter(Trace.TRACE_TAG_POWER, COUNTER_COLOR_FADE, 100); if (mColorFade != null) mColorFade.dismiss(); mColorFadePrepared = false; mColorFadeReady = true; @@ -328,6 +331,8 @@ final class DisplayPowerState { if (mColorFadePrepared) { mColorFade.draw(mColorFadeLevel); + Trace.traceCounter(Trace.TRACE_TAG_POWER, + COUNTER_COLOR_FADE, Math.round(mColorFadeLevel * 100)); } mColorFadeReady = true; diff --git a/services/core/java/com/android/server/display/LocalDisplayAdapter.java b/services/core/java/com/android/server/display/LocalDisplayAdapter.java index cdc973b079ea..ce5f430c148f 100644 --- a/services/core/java/com/android/server/display/LocalDisplayAdapter.java +++ b/services/core/java/com/android/server/display/LocalDisplayAdapter.java @@ -515,6 +515,7 @@ final class LocalDisplayAdapter extends DisplayAdapter { try { final int mode = getPowerModeForState(state); SurfaceControl.setDisplayPowerMode(token, mode); + Trace.traceCounter(Trace.TRACE_TAG_POWER, "DisplayPowerMode", mode); } finally { Trace.traceEnd(Trace.TRACE_TAG_POWER); } @@ -530,6 +531,8 @@ final class LocalDisplayAdapter extends DisplayAdapter { + "id=" + displayId + ", brightness=" + brightness + ")"); try { mBacklight.setBrightness(brightness); + Trace.traceCounter(Trace.TRACE_TAG_POWER, + "DisplayBrightness", brightness); } finally { Trace.traceEnd(Trace.TRACE_TAG_POWER); } diff --git a/services/core/java/com/android/server/display/NightDisplayService.java b/services/core/java/com/android/server/display/NightDisplayService.java index b124a392f21c..026921deea55 100644 --- a/services/core/java/com/android/server/display/NightDisplayService.java +++ b/services/core/java/com/android/server/display/NightDisplayService.java @@ -119,9 +119,9 @@ public final class NightDisplayService extends SystemService * </table> */ private static final float[] mColorTempCoefficients = new float[] { - 0.0f, -0.0000000871377221f, -0.0000000753960646f, - 0.0f, 0.000750142586f, .000725567598f, - 1.0f, -.830130222f, -1.15546312f + 0.0f, -0.000000014365268757f, -0.000000000910931179f, + 0.0f, 0.000255092801250106f, 0.000207598323269139f, + 1.0f, -0.064156942434907716f, -0.349361641294833436f }; private int mCurrentUser = UserHandle.USER_NULL; diff --git a/services/core/java/com/android/server/locksettings/LockSettingsShellCommand.java b/services/core/java/com/android/server/locksettings/LockSettingsShellCommand.java index 3c236b401481..d39679dcfad0 100644 --- a/services/core/java/com/android/server/locksettings/LockSettingsShellCommand.java +++ b/services/core/java/com/android/server/locksettings/LockSettingsShellCommand.java @@ -160,6 +160,11 @@ class LockSettingsShellCommand extends ShellCommand { final boolean havePassword = mLockPatternUtils.isLockPasswordEnabled(mCurrentUserId); final boolean havePattern = mLockPatternUtils.isLockPatternEnabled(mCurrentUserId); if (havePassword || havePattern) { + if (mLockPatternUtils.isManagedProfileWithUnifiedChallenge(mCurrentUserId)) { + getOutPrintWriter().println("Profile uses unified challenge"); + return false; + } + try { final boolean result; if (havePassword) { diff --git a/services/core/java/com/android/server/notification/CountdownConditionProvider.java b/services/core/java/com/android/server/notification/CountdownConditionProvider.java index c1a7ac63aa46..c165fc13cc52 100644 --- a/services/core/java/com/android/server/notification/CountdownConditionProvider.java +++ b/services/core/java/com/android/server/notification/CountdownConditionProvider.java @@ -52,6 +52,7 @@ public class CountdownConditionProvider extends SystemConditionProviderService { private boolean mConnected; private long mTime; + private boolean mIsAlarm; public CountdownConditionProvider() { if (DEBUG) Slog.d(TAG, "new CountdownConditionProvider()"); @@ -110,9 +111,11 @@ public class CountdownConditionProvider extends SystemConditionProviderService { public void onSubscribe(Uri conditionId) { if (DEBUG) Slog.d(TAG, "onSubscribe " + conditionId); mTime = ZenModeConfig.tryParseCountdownConditionId(conditionId); + mIsAlarm = ZenModeConfig.isValidCountdownToAlarmConditionId(conditionId); final AlarmManager alarms = (AlarmManager) mContext.getSystemService(Context.ALARM_SERVICE); - final Intent intent = new Intent(ACTION).putExtra(EXTRA_CONDITION_ID, conditionId) + final Intent intent = new Intent(ACTION) + .putExtra(EXTRA_CONDITION_ID, conditionId) .setFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY); final PendingIntent pendingIntent = PendingIntent.getBroadcast(mContext, REQUEST_CODE, intent, PendingIntent.FLAG_UPDATE_CURRENT); @@ -123,7 +126,7 @@ public class CountdownConditionProvider extends SystemConditionProviderService { DateUtils.getRelativeTimeSpanString(mTime, now, DateUtils.MINUTE_IN_MILLIS); if (mTime <= now) { // in the past, already false - notifyCondition(newCondition(mTime, Condition.STATE_FALSE)); + notifyCondition(newCondition(mTime, mIsAlarm, Condition.STATE_FALSE)); } else { // in the future, set an alarm alarms.setExact(AlarmManager.RTC_WAKEUP, mTime, pendingIntent); @@ -145,17 +148,18 @@ public class CountdownConditionProvider extends SystemConditionProviderService { public void onReceive(Context context, Intent intent) { if (ACTION.equals(intent.getAction())) { final Uri conditionId = intent.getParcelableExtra(EXTRA_CONDITION_ID); + final boolean alarm = ZenModeConfig.isValidCountdownToAlarmConditionId(conditionId); final long time = ZenModeConfig.tryParseCountdownConditionId(conditionId); if (DEBUG) Slog.d(TAG, "Countdown condition fired: " + conditionId); if (time > 0) { - notifyCondition(newCondition(time, Condition.STATE_FALSE)); + notifyCondition(newCondition(time, alarm, Condition.STATE_FALSE)); } } } } - private static final Condition newCondition(long time, int state) { - return new Condition(ZenModeConfig.toCountdownConditionId(time), + private static final Condition newCondition(long time, boolean alarm, int state) { + return new Condition(ZenModeConfig.toCountdownConditionId(time, alarm), "", "", "", 0, state,Condition.FLAG_RELEVANT_NOW); } diff --git a/services/core/java/com/android/server/notification/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java index fb391f885874..75b24a9461bc 100644 --- a/services/core/java/com/android/server/notification/NotificationManagerService.java +++ b/services/core/java/com/android/server/notification/NotificationManagerService.java @@ -21,6 +21,7 @@ import static android.app.NotificationManager.IMPORTANCE_NONE; import static android.content.pm.PackageManager.FEATURE_LEANBACK; import static android.content.pm.PackageManager.FEATURE_TELEVISION; import static android.content.pm.PackageManager.PERMISSION_GRANTED; +import static android.os.UserHandle.USER_NULL; import static android.service.notification.NotificationListenerService .NOTIFICATION_CHANNEL_OR_GROUP_ADDED; import static android.service.notification.NotificationListenerService @@ -405,8 +406,7 @@ public class NotificationManagerService extends SystemService { } - protected void readDefaultApprovedServices() { - final int userId = UserHandle.USER_SYSTEM; + protected void readDefaultApprovedServices(int userId) { String defaultListenerAccess = getContext().getResources().getString( com.android.internal.R.string.config_defaultListenerAccessPackages); if (defaultListenerAccess != null) { @@ -488,7 +488,7 @@ public class NotificationManagerService extends SystemService { } catch (FileNotFoundException e) { // No data yet // Load default managed services approvals - readDefaultApprovedServices(); + readDefaultApprovedServices(UserHandle.USER_SYSTEM); } catch (IOException e) { Log.wtf(TAG, "Unable to read notification policy", e); } catch (NumberFormatException e) { @@ -977,7 +977,7 @@ public class NotificationManagerService extends SystemService { // turn off LED when user passes through lock screen mNotificationLight.turnOff(); } else if (action.equals(Intent.ACTION_USER_SWITCHED)) { - final int user = intent.getIntExtra(Intent.EXTRA_USER_HANDLE, UserHandle.USER_NULL); + final int user = intent.getIntExtra(Intent.EXTRA_USER_HANDLE, USER_NULL); // reload per-user settings mSettingsObserver.update(null); mUserProfiles.updateCache(context); @@ -987,14 +987,18 @@ public class NotificationManagerService extends SystemService { mAssistants.onUserSwitched(user); mZenModeHelper.onUserSwitched(user); } else if (action.equals(Intent.ACTION_USER_ADDED)) { - mUserProfiles.updateCache(context); + final int userId = intent.getIntExtra(Intent.EXTRA_USER_HANDLE, USER_NULL); + if (userId != USER_NULL) { + mUserProfiles.updateCache(context); + readDefaultApprovedServices(userId); + } } else if (action.equals(Intent.ACTION_USER_REMOVED)) { - final int user = intent.getIntExtra(Intent.EXTRA_USER_HANDLE, UserHandle.USER_NULL); + final int user = intent.getIntExtra(Intent.EXTRA_USER_HANDLE, USER_NULL); mZenModeHelper.onUserRemoved(user); mRankingHelper.onUserRemoved(user); savePolicyFile(); } else if (action.equals(Intent.ACTION_USER_UNLOCKED)) { - final int user = intent.getIntExtra(Intent.EXTRA_USER_HANDLE, UserHandle.USER_NULL); + final int user = intent.getIntExtra(Intent.EXTRA_USER_HANDLE, USER_NULL); mConditionProviders.onUserUnlocked(user); mListeners.onUserUnlocked(user); mAssistants.onUserUnlocked(user); diff --git a/services/core/java/com/android/server/notification/RankingHelper.java b/services/core/java/com/android/server/notification/RankingHelper.java index 7667ff4b2b9c..9622a24a2d4d 100644 --- a/services/core/java/com/android/server/notification/RankingHelper.java +++ b/services/core/java/com/android/server/notification/RankingHelper.java @@ -553,6 +553,13 @@ public class RankingHelper implements RankingConfig { existing.setDescription(channel.getDescription()); existing.setBlockableSystem(channel.isBlockableSystem()); + // Apps are allowed to downgrade channel importance if the user has not changed any + // fields on this channel yet. + if (existing.getUserLockedFields() == 0 && + channel.getImportance() < existing.getImportance()) { + existing.setImportance(channel.getImportance()); + } + updateConfig(); return; } diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index baa285661b24..b74f1832b8fa 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -7943,6 +7943,9 @@ public class PackageManagerService extends IPackageManager.Stub String resolvedType, int flags, int userId) { if (!sUserManager.exists(userId)) return Collections.emptyList(); final int callingUid = Binder.getCallingUid(); + enforceCrossUserPermission(callingUid, userId, + false /*requireFullPermission*/, false /*checkShell*/, + "query intent receivers"); final String instantAppPkgName = getInstantAppPackageName(callingUid); flags = updateFlagsForResolve(flags, userId, intent, callingUid, false /*includeInstantApps*/); @@ -8049,6 +8052,9 @@ public class PackageManagerService extends IPackageManager.Stub String resolvedType, int flags, int userId, int callingUid, boolean includeInstantApps) { if (!sUserManager.exists(userId)) return Collections.emptyList(); + enforceCrossUserPermission(callingUid, userId, + false /*requireFullPermission*/, false /*checkShell*/, + "query intent receivers"); final String instantAppPkgName = getInstantAppPackageName(callingUid); flags = updateFlagsForResolve(flags, userId, intent, callingUid, includeInstantApps); ComponentName comp = intent.getComponent(); @@ -15273,6 +15279,11 @@ public class PackageManagerService extends IPackageManager.Stub @Override public int getIntentVerificationStatus(String packageName, int userId) { final int callingUid = Binder.getCallingUid(); + if (UserHandle.getUserId(callingUid) != userId) { + mContext.enforceCallingOrSelfPermission( + android.Manifest.permission.INTERACT_ACROSS_USERS_FULL, + "getIntentVerificationStatus" + userId); + } if (getInstantAppPackageName(callingUid) != null) { return INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_UNDEFINED; } @@ -15356,6 +15367,10 @@ public class PackageManagerService extends IPackageManager.Stub public boolean setDefaultBrowserPackageName(String packageName, int userId) { mContext.enforceCallingOrSelfPermission( android.Manifest.permission.SET_PREFERRED_APPLICATIONS, null); + if (UserHandle.getCallingUserId() != userId) { + mContext.enforceCallingOrSelfPermission( + android.Manifest.permission.INTERACT_ACROSS_USERS_FULL, null); + } synchronized (mPackages) { boolean result = mSettings.setDefaultBrowserPackageNameLPw(packageName, userId); @@ -15369,6 +15384,10 @@ public class PackageManagerService extends IPackageManager.Stub @Override public String getDefaultBrowserPackageName(int userId) { + if (UserHandle.getCallingUserId() != userId) { + mContext.enforceCallingOrSelfPermission( + android.Manifest.permission.INTERACT_ACROSS_USERS_FULL, null); + } if (getInstantAppPackageName(Binder.getCallingUid()) != null) { return null; } diff --git a/services/core/java/com/android/server/power/ShutdownThread.java b/services/core/java/com/android/server/power/ShutdownThread.java index 56612ad21398..e894275fe2b6 100644 --- a/services/core/java/com/android/server/power/ShutdownThread.java +++ b/services/core/java/com/android/server/power/ShutdownThread.java @@ -20,7 +20,10 @@ package com.android.server.power; import android.app.AlertDialog; import android.app.Dialog; import android.app.IActivityManager; +import android.app.KeyguardManager; import android.app.ProgressDialog; +import android.app.WallpaperColors; +import android.app.WallpaperManager; import android.bluetooth.BluetoothAdapter; import android.bluetooth.IBluetoothManager; import android.content.BroadcastReceiver; @@ -28,7 +31,6 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.IntentFilter; -import android.content.om.IOverlayManager; import android.graphics.Color; import android.graphics.drawable.ColorDrawable; import android.media.AudioAttributes; @@ -53,6 +55,7 @@ import android.view.ViewGroup; import android.view.WindowManager; import android.widget.ProgressBar; import android.widget.TextView; + import com.android.internal.telephony.ITelephony; import com.android.server.pm.PackageManagerService; @@ -300,17 +303,21 @@ public final class ShutdownThread extends Thread { d.setContentView(com.android.internal.R.layout.shutdown_dialog); d.setCancelable(false); - int color = Color.WHITE; + int color; try { - IOverlayManager service = IOverlayManager.Stub.asInterface( - ServiceManager.getService(Context.OVERLAY_SERVICE)); - if (service.getOverlayInfo("com.android.systemui.theme.lightwallpaper", 0).isEnabled()) { - color = Color.BLACK; - } + boolean onKeyguard = context.getSystemService( + KeyguardManager.class).isKeyguardLocked(); + WallpaperColors currentColors = context.getSystemService(WallpaperManager.class) + .getWallpaperColors(onKeyguard ? + WallpaperManager.FLAG_LOCK : WallpaperManager.FLAG_SYSTEM); + color = currentColors != null && + (currentColors.getColorHints() & WallpaperColors.HINT_SUPPORTS_DARK_TEXT) + != 0 ? + Color.BLACK : Color.WHITE; } catch (Exception e) { - // Shutdown UI really shouldn't crash or have strict dependencies on other services. - Log.w(TAG, "Problem getting overlay state", e); + color = Color.WHITE; } + ProgressBar bar = d.findViewById(com.android.internal.R.id.progress); bar.getIndeterminateDrawable().setTint(color); ((TextView) d.findViewById(com.android.internal.R.id.text1)).setTextColor(color); diff --git a/services/core/jni/BroadcastRadio/BroadcastRadioService.cpp b/services/core/jni/BroadcastRadio/BroadcastRadioService.cpp index 492be17ba352..b3817db1d203 100644 --- a/services/core/jni/BroadcastRadio/BroadcastRadioService.cpp +++ b/services/core/jni/BroadcastRadio/BroadcastRadioService.cpp @@ -27,14 +27,17 @@ #include <android/hidl/manager/1.0/IServiceManager.h> #include <core_jni_helpers.h> #include <hidl/ServiceManagement.h> +#include <nativehelper/JNIHelp.h> #include <utils/Log.h> -#include <JNIHelp.h> namespace android { namespace server { namespace BroadcastRadio { namespace BroadcastRadioService { +using std::lock_guard; +using std::mutex; + using hardware::Return; using hardware::hidl_string; using hardware::hidl_vec; @@ -50,7 +53,7 @@ using V1_0::ProgramInfo; using V1_0::MetaData; using V1_0::ITuner; -static Mutex gContextMutex; +static mutex gContextMutex; static struct { struct { @@ -90,8 +93,8 @@ static ServiceContext& getNativeContext(jlong nativeContextHandle) { } static jlong nativeInit(JNIEnv *env, jobject obj) { - ALOGV("nativeInit()"); - AutoMutex _l(gContextMutex); + ALOGV("%s", __func__); + lock_guard<mutex> lk(gContextMutex); auto nativeContext = new ServiceContext(); static_assert(sizeof(jlong) >= sizeof(nativeContext), "jlong is smaller than a pointer"); @@ -99,16 +102,16 @@ static jlong nativeInit(JNIEnv *env, jobject obj) { } static void nativeFinalize(JNIEnv *env, jobject obj, jlong nativeContext) { - ALOGV("nativeFinalize()"); - AutoMutex _l(gContextMutex); + ALOGV("%s", __func__); + lock_guard<mutex> lk(gContextMutex); auto ctx = reinterpret_cast<ServiceContext*>(nativeContext); delete ctx; } static jobject nativeLoadModules(JNIEnv *env, jobject obj, jlong nativeContext) { - ALOGV("nativeLoadModules()"); - AutoMutex _l(gContextMutex); + ALOGV("%s", __func__); + lock_guard<mutex> lk(gContextMutex); auto& ctx = getNativeContext(nativeContext); // Get list of registered HIDL HAL implementations. @@ -182,8 +185,8 @@ static jobject nativeLoadModules(JNIEnv *env, jobject obj, jlong nativeContext) static jobject nativeOpenTuner(JNIEnv *env, jobject obj, long nativeContext, jint moduleId, jobject bandConfig, bool withAudio, jobject callback) { - ALOGV("nativeOpenTuner()"); - AutoMutex _l(gContextMutex); + ALOGV("%s", __func__); + lock_guard<mutex> lk(gContextMutex); auto& ctx = getNativeContext(nativeContext); if (callback == nullptr) { diff --git a/services/core/jni/BroadcastRadio/NativeCallbackThread.cpp b/services/core/jni/BroadcastRadio/NativeCallbackThread.cpp index 0c84e6dbf03b..85ec9e07e39e 100644 --- a/services/core/jni/BroadcastRadio/NativeCallbackThread.cpp +++ b/services/core/jni/BroadcastRadio/NativeCallbackThread.cpp @@ -23,45 +23,38 @@ namespace android { -NativeCallbackThread::NativeCallbackThread(JavaVM *vm) : mExitting(false), mvm(vm) { - auto res = pthread_create(&mThread, nullptr, main, this); - if (res != 0) { - ALOGE("Couldn't start NativeCallbackThread"); - mThread = 0; - return; - } +using std::lock_guard; +using std::mutex; +using std::unique_lock; + +NativeCallbackThread::NativeCallbackThread(JavaVM *vm) : mvm(vm), mExiting(false), + mThread(&NativeCallbackThread::threadLoop, this) { ALOGD("Started native callback thread %p", this); } NativeCallbackThread::~NativeCallbackThread() { - ALOGV("~NativeCallbackThread %p", this); + ALOGV("%s %p", __func__, this); stop(); } -void* NativeCallbackThread::main(void *args) { - auto self = reinterpret_cast<NativeCallbackThread*>(args); - self->main(); - return nullptr; -} - -void NativeCallbackThread::main() { - ALOGV("NativeCallbackThread::main()"); +void NativeCallbackThread::threadLoop() { + ALOGV("%s", __func__); JNIEnv *env = nullptr; JavaVMAttachArgs aargs = {JNI_VERSION_1_4, "NativeCallbackThread", nullptr}; if (mvm->AttachCurrentThread(&env, &aargs) != JNI_OK || env == nullptr) { ALOGE("Couldn't attach thread"); + mExiting = true; return; } - while (!mExitting) { + while (!mExiting) { ALOGV("Waiting for task..."); Task task; { - AutoMutex _l(mQueueMutex); - auto res = mQueueCond.wait(mQueueMutex); - ALOGE_IF(res != 0, "Wait failed: %d", res); - if (mExitting || res != 0) break; + unique_lock<mutex> lk(mQueueMutex); + mQueueCond.wait(lk); + if (mExiting) break; if (mQueue.empty()) continue; task = mQueue.front(); @@ -84,36 +77,35 @@ void NativeCallbackThread::main() { } void NativeCallbackThread::enqueue(const Task &task) { - AutoMutex _l(mQueueMutex); + lock_guard<mutex> lk(mQueueMutex); - if (mThread == 0 || mExitting) { + if (mExiting) { ALOGW("Callback thread %p is not serving calls", this); return; } mQueue.push(task); - mQueueCond.signal(); + mQueueCond.notify_one(); } void NativeCallbackThread::stop() { - ALOGV("stop() %p", this); + ALOGV("%s %p", __func__, this); { - AutoMutex _l(mQueueMutex); + lock_guard<mutex> lk(mQueueMutex); - if (mThread == 0 || mExitting) return; + if (mExiting) return; - mExitting = true; - mQueueCond.signal(); + mExiting = true; + mQueueCond.notify_one(); } - if (pthread_self() == mThread) { + if (mThread.get_id() == std::thread::id()) { // you can't self-join a thread, but it's ok when calling from our sub-task ALOGD("About to stop native callback thread %p", this); + mThread.detach(); } else { - auto ret = pthread_join(mThread, nullptr); - ALOGE_IF(ret != 0, "Couldn't join thread: %d", ret); - + mThread.join(); ALOGD("Stopped native callback thread %p", this); } } diff --git a/services/core/jni/BroadcastRadio/NativeCallbackThread.h b/services/core/jni/BroadcastRadio/NativeCallbackThread.h index 4e03b119e834..53990be06535 100644 --- a/services/core/jni/BroadcastRadio/NativeCallbackThread.h +++ b/services/core/jni/BroadcastRadio/NativeCallbackThread.h @@ -20,26 +20,23 @@ #include <android-base/macros.h> #include <functional> #include <jni.h> -#include <pthread.h> #include <queue> -#include <utils/Condition.h> -#include <utils/Mutex.h> +#include <thread> namespace android { class NativeCallbackThread { typedef std::function<void(JNIEnv*)> Task; - pthread_t mThread; - Mutex mQueueMutex; - Condition mQueueCond; - std::atomic<bool> mExitting; - JavaVM *mvm; std::queue<Task> mQueue; - static void* main(void *args); - void main(); + std::mutex mQueueMutex; + std::condition_variable mQueueCond; + std::atomic<bool> mExiting; + std::thread mThread; + + void threadLoop(); DISALLOW_COPY_AND_ASSIGN(NativeCallbackThread); diff --git a/services/core/jni/BroadcastRadio/Tuner.cpp b/services/core/jni/BroadcastRadio/Tuner.cpp index 2e8798bd7955..f5a85c1bbd83 100644 --- a/services/core/jni/BroadcastRadio/Tuner.cpp +++ b/services/core/jni/BroadcastRadio/Tuner.cpp @@ -22,12 +22,12 @@ #include "convert.h" #include "TunerCallback.h" -#include <JNIHelp.h> -#include <Utils.h> #include <android/hardware/broadcastradio/1.1/IBroadcastRadioFactory.h> #include <binder/IPCThreadState.h> +#include <broadcastradio-utils/Utils.h> #include <core_jni_helpers.h> #include <media/AudioSystem.h> +#include <nativehelper/JNIHelp.h> #include <utils/Log.h> namespace android { @@ -35,6 +35,9 @@ namespace server { namespace BroadcastRadio { namespace Tuner { +using std::lock_guard; +using std::mutex; + using hardware::Return; using hardware::hidl_death_recipient; using hardware::hidl_vec; @@ -49,7 +52,7 @@ using V1_0::Result; using V1_1::ITunerCallback; using V1_1::ProgramListResult; -static Mutex gContextMutex; +static mutex gContextMutex; static struct { struct { @@ -106,8 +109,8 @@ static TunerContext& getNativeContext(JNIEnv *env, JavaRef<jobject> const &jTune } static jlong nativeInit(JNIEnv *env, jobject obj, jint halRev, bool withAudio, jint band) { - ALOGV("nativeInit()"); - AutoMutex _l(gContextMutex); + ALOGV("%s", __func__); + lock_guard<mutex> lk(gContextMutex); auto ctx = new TunerContext(); ctx->mHalRev = static_cast<HalRevision>(halRev); @@ -119,8 +122,8 @@ static jlong nativeInit(JNIEnv *env, jobject obj, jint halRev, bool withAudio, j } static void nativeFinalize(JNIEnv *env, jobject obj, jlong nativeContext) { - ALOGV("nativeFinalize()"); - AutoMutex _l(gContextMutex); + ALOGV("%s", __func__); + lock_guard<mutex> lk(gContextMutex); auto ctx = reinterpret_cast<TunerContext*>(nativeContext); delete ctx; @@ -150,10 +153,9 @@ static void notifyAudioService(TunerContext& ctx, bool connected) { void assignHalInterfaces(JNIEnv *env, JavaRef<jobject> const &jTuner, sp<V1_0::IBroadcastRadio> halModule, sp<V1_0::ITuner> halTuner) { - ALOGV("setHalTuner(%p)", halTuner.get()); + ALOGV("%s(%p)", __func__, halTuner.get()); ALOGE_IF(halTuner == nullptr, "HAL tuner is a nullptr"); - - AutoMutex _l(gContextMutex); + lock_guard<mutex> lk(gContextMutex); auto& ctx = getNativeContext(env, jTuner); if (ctx.mIsClosed) { @@ -187,12 +189,12 @@ static sp<V1_0::ITuner> getHalTuner(const TunerContext& ctx) { } sp<V1_0::ITuner> getHalTuner(jlong nativeContext) { - AutoMutex _l(gContextMutex); + lock_guard<mutex> lk(gContextMutex); return getHalTuner(getNativeContext(nativeContext)); } sp<V1_1::ITuner> getHalTuner11(jlong nativeContext) { - AutoMutex _l(gContextMutex); + lock_guard<mutex> lk(gContextMutex); return getNativeContext(nativeContext).mHalTuner11; } @@ -206,8 +208,9 @@ Region getRegion(JNIEnv *env, jobject obj) { } static void nativeClose(JNIEnv *env, jobject obj, jlong nativeContext) { - AutoMutex _l(gContextMutex); + lock_guard<mutex> lk(gContextMutex); auto& ctx = getNativeContext(nativeContext); + if (ctx.mIsClosed) return; ctx.mIsClosed = true; @@ -228,9 +231,10 @@ static void nativeClose(JNIEnv *env, jobject obj, jlong nativeContext) { } static void nativeSetConfiguration(JNIEnv *env, jobject obj, jlong nativeContext, jobject config) { - ALOGV("nativeSetConfiguration()"); - AutoMutex _l(gContextMutex); + ALOGV("%s", __func__); + lock_guard<mutex> lk(gContextMutex); auto& ctx = getNativeContext(nativeContext); + auto halTuner = getHalTuner(ctx); if (halTuner == nullptr) return; @@ -244,7 +248,7 @@ static void nativeSetConfiguration(JNIEnv *env, jobject obj, jlong nativeContext static jobject nativeGetConfiguration(JNIEnv *env, jobject obj, jlong nativeContext, Region region) { - ALOGV("nativeSetConfiguration()"); + ALOGV("%s", __func__); auto halTuner = getHalTuner(nativeContext); if (halTuner == nullptr) return nullptr; @@ -263,7 +267,7 @@ static jobject nativeGetConfiguration(JNIEnv *env, jobject obj, jlong nativeCont static void nativeStep(JNIEnv *env, jobject obj, jlong nativeContext, bool directionDown, bool skipSubChannel) { - ALOGV("nativeStep()"); + ALOGV("%s", __func__); auto halTuner = getHalTuner(nativeContext); if (halTuner == nullptr) return; @@ -273,7 +277,7 @@ static void nativeStep(JNIEnv *env, jobject obj, jlong nativeContext, static void nativeScan(JNIEnv *env, jobject obj, jlong nativeContext, bool directionDown, bool skipSubChannel) { - ALOGV("nativeScan()"); + ALOGV("%s", __func__); auto halTuner = getHalTuner(nativeContext); if (halTuner == nullptr) return; @@ -282,9 +286,10 @@ static void nativeScan(JNIEnv *env, jobject obj, jlong nativeContext, } static void nativeTune(JNIEnv *env, jobject obj, jlong nativeContext, jobject jSelector) { - ALOGV("nativeTune()"); - AutoMutex _l(gContextMutex); + ALOGV("%s", __func__); + lock_guard<mutex> lk(gContextMutex); auto& ctx = getNativeContext(nativeContext); + auto halTuner10 = getHalTuner(ctx); auto halTuner11 = ctx.mHalTuner11; if (halTuner10 == nullptr) return; @@ -304,7 +309,7 @@ static void nativeTune(JNIEnv *env, jobject obj, jlong nativeContext, jobject jS } static void nativeCancel(JNIEnv *env, jobject obj, jlong nativeContext) { - ALOGV("nativeCancel()"); + ALOGV("%s", __func__); auto halTuner = getHalTuner(nativeContext); if (halTuner == nullptr) return; @@ -323,9 +328,10 @@ static void nativeCancelAnnouncement(JNIEnv *env, jobject obj, jlong nativeConte } static jobject nativeGetProgramInformation(JNIEnv *env, jobject obj, jlong nativeContext) { - ALOGV("nativeGetProgramInformation()"); - AutoMutex _l(gContextMutex); + ALOGV("%s", __func__); + lock_guard<mutex> lk(gContextMutex); auto& ctx = getNativeContext(nativeContext); + auto halTuner10 = getHalTuner(ctx); auto halTuner11 = ctx.mHalTuner11; if (halTuner10 == nullptr) return nullptr; @@ -355,7 +361,7 @@ static jobject nativeGetProgramInformation(JNIEnv *env, jobject obj, jlong nativ } static bool nativeStartBackgroundScan(JNIEnv *env, jobject obj, jlong nativeContext) { - ALOGV("nativeStartBackgroundScan()"); + ALOGV("%s", __func__); auto halTuner = getHalTuner11(nativeContext); if (halTuner == nullptr) { ALOGI("Background scan is not supported with HAL < 1.1"); @@ -369,7 +375,7 @@ static bool nativeStartBackgroundScan(JNIEnv *env, jobject obj, jlong nativeCont } static jobject nativeGetProgramList(JNIEnv *env, jobject obj, jlong nativeContext, jstring jFilter) { - ALOGV("nativeGetProgramList()"); + ALOGV("%s", __func__); auto halTuner = getHalTuner11(nativeContext); if (halTuner == nullptr) { ALOGI("Program list is not supported with HAL < 1.1"); @@ -398,7 +404,7 @@ static jobject nativeGetProgramList(JNIEnv *env, jobject obj, jlong nativeContex static jbyteArray nativeGetImage(JNIEnv *env, jobject obj, jlong nativeContext, jint id) { ALOGV("%s(%x)", __func__, id); - AutoMutex _l(gContextMutex); + lock_guard<mutex> lk(gContextMutex); auto& ctx = getNativeContext(nativeContext); if (ctx.mHalModule11 == nullptr) { @@ -435,7 +441,7 @@ static jbyteArray nativeGetImage(JNIEnv *env, jobject obj, jlong nativeContext, } static bool nativeIsAnalogForced(JNIEnv *env, jobject obj, jlong nativeContext) { - ALOGV("nativeIsAnalogForced()"); + ALOGV("%s", __func__); auto halTuner = getHalTuner11(nativeContext); if (halTuner == nullptr) { jniThrowException(env, "java/lang/IllegalStateException", @@ -456,7 +462,7 @@ static bool nativeIsAnalogForced(JNIEnv *env, jobject obj, jlong nativeContext) } static void nativeSetAnalogForced(JNIEnv *env, jobject obj, jlong nativeContext, bool isForced) { - ALOGV("nativeSetAnalogForced()"); + ALOGV("%s(%d)", __func__, isForced); auto halTuner = getHalTuner11(nativeContext); if (halTuner == nullptr) { jniThrowException(env, "java/lang/IllegalStateException", @@ -469,7 +475,7 @@ static void nativeSetAnalogForced(JNIEnv *env, jobject obj, jlong nativeContext, } static bool nativeIsAntennaConnected(JNIEnv *env, jobject obj, jlong nativeContext) { - ALOGV("nativeIsAntennaConnected()"); + ALOGV("%s", __func__); auto halTuner = getHalTuner(nativeContext); if (halTuner == nullptr) return false; diff --git a/services/core/jni/BroadcastRadio/TunerCallback.cpp b/services/core/jni/BroadcastRadio/TunerCallback.cpp index d22ee827453f..04bdddf61aa0 100644 --- a/services/core/jni/BroadcastRadio/TunerCallback.cpp +++ b/services/core/jni/BroadcastRadio/TunerCallback.cpp @@ -22,9 +22,9 @@ #include "Tuner.h" #include "convert.h" -#include <JNIHelp.h> -#include <Utils.h> +#include <broadcastradio-utils/Utils.h> #include <core_jni_helpers.h> +#include <nativehelper/JNIHelp.h> #include <utils/Log.h> namespace android { @@ -32,6 +32,9 @@ namespace server { namespace BroadcastRadio { namespace TunerCallback { +using std::lock_guard; +using std::mutex; + using hardware::Return; using hardware::hidl_vec; @@ -76,7 +79,7 @@ enum class TunerError : jint { BACKGROUND_SCAN_FAILED = 6, }; -static Mutex gContextMutex; +static mutex gContextMutex; class NativeCallback : public ITunerCallback { jobject mJTuner; @@ -122,13 +125,13 @@ private: NativeCallback::NativeCallback(JNIEnv *env, jobject jTuner, jobject jCallback, HalRevision halRev) : mCallbackThread(gvm), mHalRev(halRev) { - ALOGV("NativeCallback()"); + ALOGV("%s", __func__); mJTuner = env->NewGlobalRef(jTuner); mJCallback = env->NewGlobalRef(jCallback); } NativeCallback::~NativeCallback() { - ALOGV("~NativeCallback()"); + ALOGV("%s", __func__); // stop callback thread before dereferencing client callback mCallbackThread.stop(); @@ -155,7 +158,7 @@ Return<void> NativeCallback::hardwareFailure() { } Return<void> NativeCallback::configChange(Result result, const BandConfig& config) { - ALOGV("configChange(%d)", result); + ALOGV("%s(%d)", __func__, result); mCallbackThread.enqueue([result, config, this](JNIEnv *env) { if (result == Result::OK) { @@ -173,7 +176,7 @@ Return<void> NativeCallback::configChange(Result result, const BandConfig& confi } Return<void> NativeCallback::tuneComplete(Result result, const V1_0::ProgramInfo& info) { - ALOGV("tuneComplete(%d)", result); + ALOGV("%s(%d)", __func__, result); if (mHalRev > HalRevision::V1_0) { ALOGW("1.0 callback was ignored"); @@ -185,7 +188,7 @@ Return<void> NativeCallback::tuneComplete(Result result, const V1_0::ProgramInfo } Return<void> NativeCallback::tuneComplete_1_1(Result result, const ProgramSelector& selector) { - ALOGV("tuneComplete_1_1(%d)", result); + ALOGV("%s(%d)", __func__, result); mCallbackThread.enqueue([result, this](JNIEnv *env) { if (result == Result::OK) { @@ -201,17 +204,17 @@ Return<void> NativeCallback::tuneComplete_1_1(Result result, const ProgramSelect } Return<void> NativeCallback::afSwitch(const V1_0::ProgramInfo& info) { - ALOGV("afSwitch()"); + ALOGV("%s", __func__); return tuneComplete(Result::OK, info); } Return<void> NativeCallback::afSwitch_1_1(const ProgramSelector& selector) { - ALOGV("afSwitch_1_1()"); + ALOGV("%s", __func__); return tuneComplete_1_1(Result::OK, selector); } Return<void> NativeCallback::antennaStateChange(bool connected) { - ALOGV("antennaStateChange(%d)", connected); + ALOGV("%s(%d)", __func__, connected); mCallbackThread.enqueue([this, connected](JNIEnv *env) { env->CallVoidMethod(mJCallback, gjni.TunerCallback.onAntennaState, connected); @@ -221,7 +224,7 @@ Return<void> NativeCallback::antennaStateChange(bool connected) { } Return<void> NativeCallback::trafficAnnouncement(bool active) { - ALOGV("trafficAnnouncement(%d)", active); + ALOGV("%s(%d)", __func__, active); mCallbackThread.enqueue([this, active](JNIEnv *env) { env->CallVoidMethod(mJCallback, gjni.TunerCallback.onTrafficAnnouncement, active); @@ -231,7 +234,7 @@ Return<void> NativeCallback::trafficAnnouncement(bool active) { } Return<void> NativeCallback::emergencyAnnouncement(bool active) { - ALOGV("emergencyAnnouncement(%d)", active); + ALOGV("%s(%d)", __func__, active); mCallbackThread.enqueue([this, active](JNIEnv *env) { env->CallVoidMethod(mJCallback, gjni.TunerCallback.onEmergencyAnnouncement, active); @@ -243,7 +246,7 @@ Return<void> NativeCallback::emergencyAnnouncement(bool active) { Return<void> NativeCallback::newMetadata(uint32_t channel, uint32_t subChannel, const hidl_vec<MetaData>& metadata) { // channel and subChannel are not used - ALOGV("newMetadata(%d, %d)", channel, subChannel); + ALOGV("%s(%d, %d)", __func__, channel, subChannel); if (mHalRev > HalRevision::V1_0) { ALOGW("1.0 callback was ignored"); @@ -258,7 +261,7 @@ Return<void> NativeCallback::newMetadata(uint32_t channel, uint32_t subChannel, } Return<void> NativeCallback::backgroundScanAvailable(bool isAvailable) { - ALOGV("backgroundScanAvailable(%d)", isAvailable); + ALOGV("%s(%d)", __func__, isAvailable); mCallbackThread.enqueue([this, isAvailable](JNIEnv *env) { env->CallVoidMethod(mJCallback, @@ -269,7 +272,7 @@ Return<void> NativeCallback::backgroundScanAvailable(bool isAvailable) { } Return<void> NativeCallback::backgroundScanComplete(ProgramListResult result) { - ALOGV("backgroundScanComplete(%d)", result); + ALOGV("%s(%d)", __func__, result); mCallbackThread.enqueue([this, result](JNIEnv *env) { if (result == ProgramListResult::OK) { @@ -285,7 +288,7 @@ Return<void> NativeCallback::backgroundScanComplete(ProgramListResult result) { } Return<void> NativeCallback::programListChanged() { - ALOGV("programListChanged()"); + ALOGV("%s", __func__); mCallbackThread.enqueue([this](JNIEnv *env) { env->CallVoidMethod(mJCallback, gjni.TunerCallback.onProgramListChanged); @@ -295,7 +298,7 @@ Return<void> NativeCallback::programListChanged() { } Return<void> NativeCallback::programInfoChanged() { - ALOGV("programInfoChanged()"); + ALOGV("%s", __func__); mCallbackThread.enqueue([this](JNIEnv *env) { env->CallVoidMethod(mJCallback, gjni.TunerCallback.onProgramInfoChanged); @@ -318,8 +321,8 @@ static TunerCallbackContext& getNativeContext(JNIEnv *env, jobject jTunerCb) { } static jlong nativeInit(JNIEnv *env, jobject obj, jobject jTuner, jint jHalRev) { - ALOGV("nativeInit()"); - AutoMutex _l(gContextMutex); + ALOGV("%s", __func__); + lock_guard<mutex> lk(gContextMutex); auto halRev = static_cast<HalRevision>(jHalRev); @@ -331,16 +334,16 @@ static jlong nativeInit(JNIEnv *env, jobject obj, jobject jTuner, jint jHalRev) } static void nativeFinalize(JNIEnv *env, jobject obj, jlong nativeContext) { - ALOGV("nativeFinalize()"); - AutoMutex _l(gContextMutex); + ALOGV("%s", __func__); + lock_guard<mutex> lk(gContextMutex); auto ctx = reinterpret_cast<TunerCallbackContext*>(nativeContext); delete ctx; } static void nativeDetach(JNIEnv *env, jobject obj, jlong nativeContext) { - ALOGV("nativeDetach()"); - AutoMutex _l(gContextMutex); + ALOGV("%s", __func__); + lock_guard<mutex> lk(gContextMutex); auto& ctx = getNativeContext(nativeContext); if (ctx.mNativeCallback == nullptr) return; @@ -349,7 +352,7 @@ static void nativeDetach(JNIEnv *env, jobject obj, jlong nativeContext) { } sp<ITunerCallback> getNativeCallback(JNIEnv *env, jobject jTunerCallback) { - AutoMutex _l(gContextMutex); + lock_guard<mutex> lk(gContextMutex); auto& ctx = getNativeContext(env, jTunerCallback); return ctx.mNativeCallback; } diff --git a/services/core/jni/BroadcastRadio/convert.cpp b/services/core/jni/BroadcastRadio/convert.cpp index a2e5643323f9..ba1395f73045 100644 --- a/services/core/jni/BroadcastRadio/convert.cpp +++ b/services/core/jni/BroadcastRadio/convert.cpp @@ -19,9 +19,9 @@ #include "convert.h" -#include <JNIHelp.h> -#include <Utils.h> +#include <broadcastradio-utils/Utils.h> #include <core_jni_helpers.h> +#include <nativehelper/JNIHelp.h> #include <utils/Log.h> namespace android { @@ -262,7 +262,7 @@ static Deemphasis DeemphasisForRegion(Region region) { static JavaRef<jobject> ModulePropertiesFromHal(JNIEnv *env, const V1_0::Properties &prop10, const V1_1::Properties *prop11, jint moduleId, const std::string& serviceName) { - ALOGV("ModulePropertiesFromHal()"); + ALOGV("%s", __func__); using namespace std::placeholders; auto jServiceName = make_javastr(env, serviceName); @@ -298,7 +298,7 @@ JavaRef<jobject> ModulePropertiesFromHal(JNIEnv *env, const V1_1::Properties &pr } static JavaRef<jobject> BandDescriptorFromHal(JNIEnv *env, const V1_0::BandConfig &config, Region region) { - ALOGV("BandDescriptorFromHal()"); + ALOGV("%s", __func__); jint spacing = config.spacings.size() > 0 ? config.spacings[0] : 0; ALOGW_IF(config.spacings.size() == 0, "No channel spacing specified"); @@ -327,7 +327,7 @@ static JavaRef<jobject> BandDescriptorFromHal(JNIEnv *env, const V1_0::BandConfi } JavaRef<jobject> BandConfigFromHal(JNIEnv *env, const V1_0::BandConfig &config, Region region) { - ALOGV("BandConfigFromHal()"); + ALOGV("%s", __func__); auto descriptor = BandDescriptorFromHal(env, config, region); if (descriptor == nullptr) return nullptr; @@ -350,7 +350,7 @@ JavaRef<jobject> BandConfigFromHal(JNIEnv *env, const V1_0::BandConfig &config, } V1_0::BandConfig BandConfigToHal(JNIEnv *env, jobject jConfig, Region ®ion) { - ALOGV("BandConfigToHal()"); + ALOGV("%s", __func__); auto jDescriptor = env->GetObjectField(jConfig, gjni.BandConfig.descriptor); if (jDescriptor == nullptr) { ALOGE("Descriptor is missing"); @@ -392,7 +392,7 @@ Direction DirectionToHal(bool directionDown) { } JavaRef<jobject> MetadataFromHal(JNIEnv *env, const hidl_vec<V1_0::MetaData> &metadata) { - ALOGV("MetadataFromHal()"); + ALOGV("%s", __func__); if (metadata.size() == 0) return nullptr; auto jMetadata = make_javaref(env, env->NewObject( @@ -445,13 +445,13 @@ JavaRef<jobject> MetadataFromHal(JNIEnv *env, const hidl_vec<V1_0::MetaData> &me } static JavaRef<jobject> ProgramIdentifierFromHal(JNIEnv *env, const ProgramIdentifier &id) { - ALOGV("ProgramIdentifierFromHal()"); + ALOGV("%s", __func__); return make_javaref(env, env->NewObject(gjni.ProgramSelector.Identifier.clazz, gjni.ProgramSelector.Identifier.cstor, id.type, id.value)); } static JavaRef<jobject> ProgramSelectorFromHal(JNIEnv *env, const ProgramSelector &selector) { - ALOGV("ProgramSelectorFromHal()"); + ALOGV("%s", __func__); auto jPrimary = ProgramIdentifierFromHal(env, selector.primaryId); auto jSecondary = ArrayFromHal(env, selector.secondaryIds, gjni.ProgramSelector.Identifier.clazz, ProgramIdentifierFromHal); @@ -462,7 +462,7 @@ static JavaRef<jobject> ProgramSelectorFromHal(JNIEnv *env, const ProgramSelecto } static ProgramIdentifier ProgramIdentifierToHal(JNIEnv *env, jobject jId) { - ALOGV("ProgramIdentifierToHal()"); + ALOGV("%s", __func__); ProgramIdentifier id = {}; id.type = env->GetIntField(jId, gjni.ProgramSelector.Identifier.type); @@ -471,7 +471,7 @@ static ProgramIdentifier ProgramIdentifierToHal(JNIEnv *env, jobject jId) { } ProgramSelector ProgramSelectorToHal(JNIEnv *env, jobject jSelector) { - ALOGV("ProgramSelectorToHal()"); + ALOGV("%s", __func__); ProgramSelector selector = {}; @@ -509,7 +509,7 @@ ProgramSelector ProgramSelectorToHal(JNIEnv *env, jobject jSelector) { static JavaRef<jobject> ProgramInfoFromHal(JNIEnv *env, const V1_0::ProgramInfo &info10, const V1_1::ProgramInfo *info11, const ProgramSelector &selector) { - ALOGV("ProgramInfoFromHal()"); + ALOGV("%s", __func__); auto jMetadata = MetadataFromHal(env, info10.metadata); auto jVendorInfo = info11 ? make_javastr(env, info11->vendorInfo) : nullptr; diff --git a/services/java/com/android/server/SystemServer.java b/services/java/com/android/server/SystemServer.java index 3757b7d0c53d..61267ef5047a 100644 --- a/services/java/com/android/server/SystemServer.java +++ b/services/java/com/android/server/SystemServer.java @@ -1194,8 +1194,13 @@ public final class SystemServer { traceEnd(); } - if (!disableNonCoreServices && context.getResources().getBoolean( - R.bool.config_enableUpdateableTimeZoneRules)) { + // timezone.RulesManagerService will prevent a device starting up if the chain of trust + // required for safe time zone updates might be broken. RuleManagerService cannot do + // this check when mOnlyCore == true, so we don't enable the service in this case. + final boolean startRulesManagerService = + !mOnlyCore && context.getResources().getBoolean( + R.bool.config_enableUpdateableTimeZoneRules); + if (startRulesManagerService) { traceBeginAndSlog("StartTimeZoneRulesManagerService"); mSystemServiceManager.startService(TIME_ZONE_RULES_MANAGER_SERVICE_CLASS); Trace.traceEnd(Trace.TRACE_TAG_SYSTEM_SERVER); diff --git a/services/tests/notification/src/com/android/server/notification/NotificationManagerServiceTest.java b/services/tests/notification/src/com/android/server/notification/NotificationManagerServiceTest.java index 5e71a455c826..09af1e2fd7d4 100644 --- a/services/tests/notification/src/com/android/server/notification/NotificationManagerServiceTest.java +++ b/services/tests/notification/src/com/android/server/notification/NotificationManagerServiceTest.java @@ -333,6 +333,42 @@ public class NotificationManagerServiceTest extends NotificationTestCase { } @Test + public void testCreateNotificationChannels_SecondCreateDoesNotChangeImportance() + throws Exception { + final NotificationChannel channel = + new NotificationChannel("id", "name", NotificationManager.IMPORTANCE_DEFAULT); + mBinderService.createNotificationChannels(PKG, + new ParceledListSlice(Arrays.asList(channel))); + + // Recreating the channel doesn't throw, but ignores importance. + final NotificationChannel dupeChannel = + new NotificationChannel("id", "name", NotificationManager.IMPORTANCE_HIGH); + mBinderService.createNotificationChannels(PKG, + new ParceledListSlice(Arrays.asList(dupeChannel))); + final NotificationChannel createdChannel = + mBinderService.getNotificationChannel(PKG, "id"); + assertEquals(NotificationManager.IMPORTANCE_DEFAULT, createdChannel.getImportance()); + } + + @Test + public void testCreateNotificationChannels_SecondCreateAllowedToDowngradeImportance() + throws Exception { + final NotificationChannel channel = + new NotificationChannel("id", "name", NotificationManager.IMPORTANCE_DEFAULT); + mBinderService.createNotificationChannels(PKG, + new ParceledListSlice(Arrays.asList(channel))); + + // Recreating with a lower importance is allowed to modify the channel. + final NotificationChannel dupeChannel = + new NotificationChannel("id", "name", NotificationManager.IMPORTANCE_LOW); + mBinderService.createNotificationChannels(PKG, + new ParceledListSlice(Arrays.asList(dupeChannel))); + final NotificationChannel createdChannel = + mBinderService.getNotificationChannel(PKG, "id"); + assertEquals(NotificationManager.IMPORTANCE_LOW, createdChannel.getImportance()); + } + + @Test public void testCreateNotificationChannels_CannotDowngradeImportanceIfAlreadyUpdated() throws Exception { final NotificationChannel channel = diff --git a/telephony/java/com/android/ims/internal/IImsCallSessionListener.aidl b/telephony/java/com/android/ims/internal/IImsCallSessionListener.aidl index 831ab12fc3ea..748092d2a3bd 100644 --- a/telephony/java/com/android/ims/internal/IImsCallSessionListener.aidl +++ b/telephony/java/com/android/ims/internal/IImsCallSessionListener.aidl @@ -29,7 +29,7 @@ import com.android.ims.ImsSuppServiceNotification; * by having one of the methods called on the {@link IImsCallSessionListener}. * {@hide} */ -interface IImsCallSessionListener { +oneway interface IImsCallSessionListener { /** * Notifies the result of the basic session operation (setup / terminate). */ diff --git a/telephony/java/com/android/ims/internal/IImsEcbmListener.aidl b/telephony/java/com/android/ims/internal/IImsEcbmListener.aidl index d866ecbdd317..6066f4915375 100644 --- a/telephony/java/com/android/ims/internal/IImsEcbmListener.aidl +++ b/telephony/java/com/android/ims/internal/IImsEcbmListener.aidl @@ -35,7 +35,7 @@ package com.android.ims.internal; * * {@hide} */ -interface IImsEcbmListener { +oneway interface IImsEcbmListener { /** * Notifies the application when the device enters Emergency Callback Mode. */ diff --git a/telephony/java/com/android/ims/internal/IImsExternalCallStateListener.aidl b/telephony/java/com/android/ims/internal/IImsExternalCallStateListener.aidl index 27b8fa174171..16219671cea5 100644 --- a/telephony/java/com/android/ims/internal/IImsExternalCallStateListener.aidl +++ b/telephony/java/com/android/ims/internal/IImsExternalCallStateListener.aidl @@ -23,7 +23,7 @@ import com.android.ims.ImsExternalCallState; * * {@hide} */ -interface IImsExternalCallStateListener { +oneway interface IImsExternalCallStateListener { /** * Notifies client when Dialog Event Package update is received diff --git a/telephony/java/com/android/ims/internal/IImsRegistrationListener.aidl b/telephony/java/com/android/ims/internal/IImsRegistrationListener.aidl index 98f8e0a207c2..15f872603bfb 100644 --- a/telephony/java/com/android/ims/internal/IImsRegistrationListener.aidl +++ b/telephony/java/com/android/ims/internal/IImsRegistrationListener.aidl @@ -26,7 +26,7 @@ import android.net.Uri; * * {@hide} */ -interface IImsRegistrationListener { +oneway interface IImsRegistrationListener { /** * Notifies the application when the device is connected to the IMS network. * diff --git a/telephony/java/com/android/ims/internal/IImsUtListener.aidl b/telephony/java/com/android/ims/internal/IImsUtListener.aidl index 641663109fad..300273a7bd38 100644 --- a/telephony/java/com/android/ims/internal/IImsUtListener.aidl +++ b/telephony/java/com/android/ims/internal/IImsUtListener.aidl @@ -26,7 +26,7 @@ import com.android.ims.ImsReasonInfo; /** * {@hide} */ -interface IImsUtListener { +oneway interface IImsUtListener { /** * Notifies the result of the supplementary service configuration udpate. */ diff --git a/tests/net/java/com/android/server/connectivity/NetworkNotificationManagerTest.java b/tests/net/java/com/android/server/connectivity/NetworkNotificationManagerTest.java index f201bc7a7d3c..911347c13478 100644 --- a/tests/net/java/com/android/server/connectivity/NetworkNotificationManagerTest.java +++ b/tests/net/java/com/android/server/connectivity/NetworkNotificationManagerTest.java @@ -16,6 +16,16 @@ package com.android.server.connectivity; +import static com.android.server.connectivity.NetworkNotificationManager.NotificationType.*; +import static org.mockito.Mockito.any; +import static org.mockito.Mockito.anyInt; +import static org.mockito.Mockito.eq; +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.Notification; import android.app.NotificationManager; import android.content.Context; @@ -37,15 +47,6 @@ import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.MockitoAnnotations; -import static com.android.server.connectivity.NetworkNotificationManager.NotificationType.*; -import static org.mockito.Mockito.any; -import static org.mockito.Mockito.anyInt; -import static org.mockito.Mockito.eq; -import static org.mockito.Mockito.never; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - public class NetworkNotificationManagerTest extends TestCase { static final NetworkCapabilities CELL_CAPABILITIES = new NetworkCapabilities(); @@ -140,4 +141,47 @@ public class NetworkNotificationManagerTest extends TestCase { verify(mNotificationManager, never()).notifyAsUser(any(), anyInt(), any(), any()); } + + @SmallTest + public void testDuplicatedNotificationsNoInternetThenSignIn() { + final int id = 101; + final String tag = NetworkNotificationManager.tagFor(id); + + // Show first NO_INTERNET + mManager.showNotification(id, NO_INTERNET, mWifiNai, mCellNai, null, false); + verify(mNotificationManager, times(1)) + .notifyAsUser(eq(tag), eq(NO_INTERNET.eventId), any(), any()); + + // Captive portal detection triggers SIGN_IN a bit later, clearing the previous NO_INTERNET + mManager.showNotification(id, SIGN_IN, mWifiNai, mCellNai, null, false); + verify(mNotificationManager, times(1)) + .cancelAsUser(eq(tag), eq(NO_INTERNET.eventId), any()); + verify(mNotificationManager, times(1)) + .notifyAsUser(eq(tag), eq(SIGN_IN.eventId), any(), any()); + + // Network disconnects + mManager.clearNotification(id); + verify(mNotificationManager, times(1)).cancelAsUser(eq(tag), eq(SIGN_IN.eventId), any()); + } + + @SmallTest + public void testDuplicatedNotificationsSignInThenNoInternet() { + final int id = 101; + final String tag = NetworkNotificationManager.tagFor(id); + + // Show first SIGN_IN + mManager.showNotification(id, SIGN_IN, mWifiNai, mCellNai, null, false); + verify(mNotificationManager, times(1)) + .notifyAsUser(eq(tag), eq(SIGN_IN.eventId), any(), any()); + reset(mNotificationManager); + + // NO_INTERNET arrives after, but is ignored. + mManager.showNotification(id, NO_INTERNET, mWifiNai, mCellNai, null, false); + verify(mNotificationManager, never()).cancelAsUser(any(), anyInt(), any()); + verify(mNotificationManager, never()).notifyAsUser(any(), anyInt(), any(), any()); + + // Network disconnects + mManager.clearNotification(id); + verify(mNotificationManager, times(1)).cancelAsUser(eq(tag), eq(SIGN_IN.eventId), any()); + } } diff --git a/wifi/java/android/net/wifi/IRttManager.aidl b/wifi/java/android/net/wifi/IRttManager.aidl index 90f66c4adc1a..383180995b21 100644 --- a/wifi/java/android/net/wifi/IRttManager.aidl +++ b/wifi/java/android/net/wifi/IRttManager.aidl @@ -23,6 +23,6 @@ import android.net.wifi.RttManager; */ interface IRttManager { - Messenger getMessenger(); + Messenger getMessenger(in IBinder binder, out int[] key); RttManager.RttCapabilities getRttCapabilities(); } diff --git a/wifi/java/android/net/wifi/RttManager.java b/wifi/java/android/net/wifi/RttManager.java index a4b3bf2a3019..ac5df05373c1 100644 --- a/wifi/java/android/net/wifi/RttManager.java +++ b/wifi/java/android/net/wifi/RttManager.java @@ -6,6 +6,7 @@ import android.annotation.SuppressLint; import android.annotation.SystemApi; import android.annotation.SystemService; import android.content.Context; +import android.os.Binder; import android.os.Bundle; import android.os.Handler; import android.os.Looper; @@ -1187,6 +1188,8 @@ public class RttManager { CMD_OP_ENALBE_RESPONDER_SUCCEEDED = BASE + 7; public static final int CMD_OP_ENALBE_RESPONDER_FAILED = BASE + 8; + /** @hide */ + public static final int CMD_OP_REG_BINDER = BASE + 9; private static final int INVALID_KEY = 0; @@ -1215,9 +1218,10 @@ public class RttManager { mContext = context; mService = service; Messenger messenger = null; + int[] key = new int[1]; try { Log.d(TAG, "Get the messenger from " + mService); - messenger = mService.getMessenger(); + messenger = mService.getMessenger(new Binder(), key); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } @@ -1233,6 +1237,7 @@ public class RttManager { // We cannot use fullyConnectSync because it sends the FULL_CONNECTION message // synchronously, which causes RttService to receive the wrong replyTo value. mAsyncChannel.sendMessage(AsyncChannel.CMD_CHANNEL_FULL_CONNECTION); + mAsyncChannel.sendMessage(CMD_OP_REG_BINDER, key[0]); } private void validateChannel() { |