Merge "Don't set modification times in aapt zip entries"
diff --git a/Android.mk b/Android.mk
index 5713f3e..f0c0117 100644
--- a/Android.mk
+++ b/Android.mk
@@ -68,6 +68,8 @@
core/java/android/app/IActivityContainerCallback.aidl \
core/java/android/app/IActivityController.aidl \
core/java/android/app/IActivityPendingResult.aidl \
+ core/java/android/app/IAlarmCompleteListener.aidl \
+ core/java/android/app/IAlarmListener.aidl \
core/java/android/app/IAlarmManager.aidl \
core/java/android/app/IAppTask.aidl \
core/java/android/app/ITaskStackListener.aidl \
diff --git a/api/current.txt b/api/current.txt
index eb888af..3b4e3a9 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -3764,17 +3764,21 @@
public class AlarmManager {
method public void cancel(android.app.PendingIntent);
+ method public void cancel(android.app.AlarmManager.OnAlarmListener);
method public android.app.AlarmManager.AlarmClockInfo getNextAlarmClock();
method public void set(int, long, android.app.PendingIntent);
+ method public void set(int, long, java.lang.String, android.app.AlarmManager.OnAlarmListener, android.os.Handler);
method public void setAlarmClock(android.app.AlarmManager.AlarmClockInfo, android.app.PendingIntent);
method public void setAndAllowWhileIdle(int, long, android.app.PendingIntent);
method public void setExact(int, long, android.app.PendingIntent);
+ method public void setExact(int, long, java.lang.String, android.app.AlarmManager.OnAlarmListener, android.os.Handler);
method public void setExactAndAllowWhileIdle(int, long, android.app.PendingIntent);
method public void setInexactRepeating(int, long, long, android.app.PendingIntent);
method public void setRepeating(int, long, long, android.app.PendingIntent);
method public void setTime(long);
method public void setTimeZone(java.lang.String);
method public void setWindow(int, long, long, android.app.PendingIntent);
+ method public void setWindow(int, long, long, java.lang.String, android.app.AlarmManager.OnAlarmListener, android.os.Handler);
field public static final java.lang.String ACTION_NEXT_ALARM_CLOCK_CHANGED = "android.app.action.NEXT_ALARM_CLOCK_CHANGED";
field public static final int ELAPSED_REALTIME = 3; // 0x3
field public static final int ELAPSED_REALTIME_WAKEUP = 2; // 0x2
@@ -3796,6 +3800,10 @@
field public static final android.os.Parcelable.Creator<android.app.AlarmManager.AlarmClockInfo> CREATOR;
}
+ public static abstract interface AlarmManager.OnAlarmListener {
+ method public abstract void onAlarm();
+ }
+
public class AlertDialog extends android.app.Dialog implements android.content.DialogInterface {
ctor protected AlertDialog(android.content.Context);
ctor protected AlertDialog(android.content.Context, boolean, android.content.DialogInterface.OnCancelListener);
@@ -5881,6 +5889,7 @@
method public java.lang.String getStructuredData();
method public android.net.Uri getWebUri();
method public boolean isAppProvidedIntent();
+ method public boolean isAppProvidedWebUri();
method public void setClipData(android.content.ClipData);
method public void setIntent(android.content.Intent);
method public void setStructuredData(java.lang.String);
@@ -37455,6 +37464,8 @@
method public abstract void setContentView(int);
method public abstract void setContentView(android.view.View);
method public abstract void setContentView(android.view.View, android.view.ViewGroup.LayoutParams);
+ method public abstract void setDecorView(android.view.View);
+ method public abstract void setDecorView(int);
method protected void setDefaultWindowFormat(int);
method public void setDimAmount(float);
method public void setElevation(float);
diff --git a/api/system-current.txt b/api/system-current.txt
index d288ad1..9db70e3 100644
--- a/api/system-current.txt
+++ b/api/system-current.txt
@@ -3873,18 +3873,22 @@
public class AlarmManager {
method public void cancel(android.app.PendingIntent);
+ method public void cancel(android.app.AlarmManager.OnAlarmListener);
method public android.app.AlarmManager.AlarmClockInfo getNextAlarmClock();
method public void set(int, long, android.app.PendingIntent);
+ method public void set(int, long, java.lang.String, android.app.AlarmManager.OnAlarmListener, android.os.Handler);
method public void set(int, long, long, long, android.app.PendingIntent, android.os.WorkSource);
method public void setAlarmClock(android.app.AlarmManager.AlarmClockInfo, android.app.PendingIntent);
method public void setAndAllowWhileIdle(int, long, android.app.PendingIntent);
method public void setExact(int, long, android.app.PendingIntent);
+ method public void setExact(int, long, java.lang.String, android.app.AlarmManager.OnAlarmListener, android.os.Handler);
method public void setExactAndAllowWhileIdle(int, long, android.app.PendingIntent);
method public void setInexactRepeating(int, long, long, android.app.PendingIntent);
method public void setRepeating(int, long, long, android.app.PendingIntent);
method public void setTime(long);
method public void setTimeZone(java.lang.String);
method public void setWindow(int, long, long, android.app.PendingIntent);
+ method public void setWindow(int, long, long, java.lang.String, android.app.AlarmManager.OnAlarmListener, android.os.Handler);
field public static final java.lang.String ACTION_NEXT_ALARM_CLOCK_CHANGED = "android.app.action.NEXT_ALARM_CLOCK_CHANGED";
field public static final int ELAPSED_REALTIME = 3; // 0x3
field public static final int ELAPSED_REALTIME_WAKEUP = 2; // 0x2
@@ -3906,6 +3910,10 @@
field public static final android.os.Parcelable.Creator<android.app.AlarmManager.AlarmClockInfo> CREATOR;
}
+ public static abstract interface AlarmManager.OnAlarmListener {
+ method public abstract void onAlarm();
+ }
+
public class AlertDialog extends android.app.Dialog implements android.content.DialogInterface {
ctor protected AlertDialog(android.content.Context);
ctor protected AlertDialog(android.content.Context, boolean, android.content.DialogInterface.OnCancelListener);
@@ -6014,6 +6022,7 @@
method public java.lang.String getStructuredData();
method public android.net.Uri getWebUri();
method public boolean isAppProvidedIntent();
+ method public boolean isAppProvidedWebUri();
method public void setClipData(android.content.ClipData);
method public void setIntent(android.content.Intent);
method public void setStructuredData(java.lang.String);
@@ -20814,7 +20823,7 @@
package android.net.wifi {
- public class BatchedScanResult implements android.os.Parcelable {
+ public deprecated class BatchedScanResult implements android.os.Parcelable {
ctor public BatchedScanResult();
ctor public BatchedScanResult(android.net.wifi.BatchedScanResult);
method public int describeContents();
@@ -21225,7 +21234,7 @@
method public boolean disableNetwork(int);
method public boolean disconnect();
method public boolean enableNetwork(int, boolean);
- method public java.util.List<android.net.wifi.BatchedScanResult> getBatchedScanResults();
+ method public deprecated java.util.List<android.net.wifi.BatchedScanResult> getBatchedScanResults();
method public java.util.List<android.net.wifi.WifiConfiguration> getConfiguredNetworks();
method public android.net.wifi.WifiInfo getConnectionInfo();
method public android.net.wifi.WifiConnectionStatistics getConnectionStatistics();
@@ -21235,7 +21244,7 @@
method public java.util.List<android.net.wifi.ScanResult> getScanResults();
method public int getWifiState();
method public boolean is5GHzBandSupported();
- method public boolean isBatchedScanSupported();
+ method public deprecated boolean isBatchedScanSupported();
method public boolean isDeviceToApRttSupported();
method public boolean isDeviceToDeviceRttSupported();
method public boolean isEnhancedPowerReportingSupported();
@@ -21255,7 +21264,7 @@
method public void setTdlsEnabled(java.net.InetAddress, boolean);
method public void setTdlsEnabledWithMacAddress(java.lang.String, boolean);
method public boolean setWifiEnabled(boolean);
- method public boolean startLocationRestrictedScan(android.os.WorkSource);
+ method public deprecated boolean startLocationRestrictedScan(android.os.WorkSource);
method public boolean startScan();
method public boolean startScan(android.os.WorkSource);
method public void startWps(android.net.wifi.WpsInfo, android.net.wifi.WifiManager.WpsCallback);
@@ -39752,6 +39761,8 @@
method public abstract void setContentView(int);
method public abstract void setContentView(android.view.View);
method public abstract void setContentView(android.view.View, android.view.ViewGroup.LayoutParams);
+ method public abstract void setDecorView(android.view.View);
+ method public abstract void setDecorView(int);
method protected void setDefaultWindowFormat(int);
method public void setDimAmount(float);
method public void setDisableWallpaperTouchEvents(boolean);
diff --git a/core/java/android/app/ActivityManagerNative.java b/core/java/android/app/ActivityManagerNative.java
index 70f1bcc..da743f8 100644
--- a/core/java/android/app/ActivityManagerNative.java
+++ b/core/java/android/app/ActivityManagerNative.java
@@ -116,21 +116,22 @@
static public void noteWakeupAlarm(PendingIntent ps, int sourceUid, String sourcePkg,
String tag) {
try {
- getDefault().noteWakeupAlarm(ps.getTarget(), sourceUid, sourcePkg, tag);
+ getDefault().noteWakeupAlarm((ps != null) ? ps.getTarget() : null,
+ sourceUid, sourcePkg, tag);
} catch (RemoteException ex) {
}
}
static public void noteAlarmStart(PendingIntent ps, int sourceUid, String tag) {
try {
- getDefault().noteAlarmStart(ps.getTarget(), sourceUid, tag);
+ getDefault().noteAlarmStart((ps != null) ? ps.getTarget() : null, sourceUid, tag);
} catch (RemoteException ex) {
}
}
static public void noteAlarmFinish(PendingIntent ps, int sourceUid, String tag) {
try {
- getDefault().noteAlarmFinish(ps.getTarget(), sourceUid, tag);
+ getDefault().noteAlarmFinish((ps != null) ? ps.getTarget() : null, sourceUid, tag);
} catch (RemoteException ex) {
}
}
@@ -2680,19 +2681,10 @@
case REPORT_SIZE_CONFIGURATIONS: {
data.enforceInterface(IActivityManager.descriptor);
IBinder token = data.readStrongBinder();
- int horizontalSize = data.readInt();
- int[] horizontal = null;
- if (horizontalSize > 0) {
- horizontal = new int[horizontalSize];
- data.readIntArray(horizontal);
- }
- int[] vertical = null;
- int verticalSize = data.readInt();
- if (verticalSize > 0) {
- vertical = new int[verticalSize];
- data.readIntArray(vertical);
- }
- reportSizeConfigurations(token, horizontal, vertical);
+ int[] horizontal = readIntArray(data);
+ int[] vertical = readIntArray(data);
+ int[] smallest = readIntArray(data);
+ reportSizeConfigurations(token, horizontal, vertical, smallest);
return true;
}
case SUPPRESS_RESIZE_CONFIG_CHANGES_TRANSACTION: {
@@ -2714,6 +2706,16 @@
return super.onTransact(code, data, reply, flags);
}
+ private int[] readIntArray(Parcel data) {
+ int[] smallest = null;
+ int smallestSize = data.readInt();
+ if (smallestSize > 0) {
+ smallest = new int[smallestSize];
+ data.readIntArray(smallest);
+ }
+ return smallest;
+ }
+
public IBinder asBinder() {
return this;
}
@@ -6240,29 +6242,30 @@
@Override
public void reportSizeConfigurations(IBinder token, int[] horizontalSizeConfiguration,
- int[] verticalSizeConfigurations) throws RemoteException {
+ int[] verticalSizeConfigurations, int[] smallestSizeConfigurations)
+ throws RemoteException {
Parcel data = Parcel.obtain();
Parcel reply = Parcel.obtain();
data.writeInterfaceToken(IActivityManager.descriptor);
data.writeStrongBinder(token);
- if (horizontalSizeConfiguration == null) {
- data.writeInt(0);
- } else {
- data.writeInt(horizontalSizeConfiguration.length);
- data.writeIntArray(horizontalSizeConfiguration);
- }
- if (verticalSizeConfigurations == null) {
- data.writeInt(0);
- } else {
- data.writeInt(verticalSizeConfigurations.length);
- data.writeIntArray(verticalSizeConfigurations);
- }
+ writeIntArray(horizontalSizeConfiguration, data);
+ writeIntArray(verticalSizeConfigurations, data);
+ writeIntArray(smallestSizeConfigurations, data);
mRemote.transact(REPORT_SIZE_CONFIGURATIONS, data, reply, 0);
reply.readException();
data.recycle();
reply.recycle();
}
+ private static void writeIntArray(int[] array, Parcel data) {
+ if (array == null) {
+ data.writeInt(0);
+ } else {
+ data.writeInt(array.length);
+ data.writeIntArray(array);
+ }
+ }
+
@Override
public void suppressResizeConfigChanges(boolean suppress) throws RemoteException {
Parcel data = Parcel.obtain();
diff --git a/core/java/android/app/ActivityOptions.java b/core/java/android/app/ActivityOptions.java
index 0266a37..6107dfd 100644
--- a/core/java/android/app/ActivityOptions.java
+++ b/core/java/android/app/ActivityOptions.java
@@ -131,6 +131,13 @@
public static final String KEY_ANIM_START_LISTENER = "android:activity.animStartListener";
/**
+ * Callback for when the last frame of the animation is played.
+ * @hide
+ */
+ private static final String KEY_ANIMATION_FINISHED_LISTENER =
+ "android:activity.animationFinishedListener";
+
+ /**
* Descriptions of app transition animations to be played during the activity launch.
*/
private static final String KEY_ANIM_SPECS = "android:activity.animSpecs";
@@ -198,6 +205,7 @@
private int mWidth;
private int mHeight;
private IRemoteCallback mAnimationStartedListener;
+ private IRemoteCallback mAnimationFinishedListener;
private ResultReceiver mTransitionReceiver;
private boolean mIsReturning;
private ArrayList<String> mSharedElementNames;
@@ -280,16 +288,15 @@
return opts;
}
- private void setOnAnimationStartedListener(Handler handler,
- OnAnimationStartedListener listener) {
+ private void setOnAnimationStartedListener(final Handler handler,
+ final OnAnimationStartedListener listener) {
if (listener != null) {
- final Handler h = handler;
- final OnAnimationStartedListener finalListener = listener;
mAnimationStartedListener = new IRemoteCallback.Stub() {
- @Override public void sendResult(Bundle data) throws RemoteException {
- h.post(new Runnable() {
+ @Override
+ public void sendResult(Bundle data) throws RemoteException {
+ handler.post(new Runnable() {
@Override public void run() {
- finalListener.onAnimationStarted();
+ listener.onAnimationStarted();
}
});
}
@@ -306,6 +313,32 @@
void onAnimationStarted();
}
+ private void setOnAnimationFinishedListener(final Handler handler,
+ final OnAnimationFinishedListener listener) {
+ if (listener != null) {
+ mAnimationFinishedListener = new IRemoteCallback.Stub() {
+ @Override
+ public void sendResult(Bundle data) throws RemoteException {
+ handler.post(new Runnable() {
+ @Override
+ public void run() {
+ listener.onAnimationFinished();
+ }
+ });
+ }
+ };
+ }
+ }
+
+ /**
+ * Callback for use with {@link ActivityOptions#makeThumbnailAspectScaleDownAnimation}
+ * to find out when the given animation has drawn its last frame.
+ * @hide
+ */
+ public interface OnAnimationFinishedListener {
+ void onAnimationFinished();
+ }
+
/**
* Create an ActivityOptions specifying an animation where the new
* activity is scaled from a small originating area of the screen to
@@ -523,12 +556,14 @@
/** @hide */
public static ActivityOptions makeThumbnailAspectScaleDownAnimation(View source,
AppTransitionAnimationSpec[] specs, Handler handler,
- OnAnimationStartedListener listener) {
+ OnAnimationStartedListener onAnimationStartedListener,
+ OnAnimationFinishedListener onAnimationFinishedListener) {
ActivityOptions opts = new ActivityOptions();
opts.mPackageName = source.getContext().getPackageName();
opts.mAnimationType = ANIM_THUMBNAIL_ASPECT_SCALE_DOWN;
opts.mAnimSpecs = specs;
- opts.setOnAnimationStartedListener(handler, listener);
+ opts.setOnAnimationStartedListener(handler, onAnimationStartedListener);
+ opts.setOnAnimationFinishedListener(handler, onAnimationFinishedListener);
return opts;
}
@@ -725,6 +760,10 @@
mAnimSpecs[i] = (AppTransitionAnimationSpec) specs[i];
}
}
+ if (opts.containsKey(KEY_ANIMATION_FINISHED_LISTENER)) {
+ mAnimationFinishedListener = IRemoteCallback.Stub.asInterface(
+ opts.getBinder(KEY_ANIMATION_FINISHED_LISTENER));
+ }
}
/** @hide */
@@ -800,6 +839,11 @@
}
/** @hide */
+ public IRemoteCallback getAnimationFinishedListener() {
+ return mAnimationFinishedListener;
+ }
+
+ /** @hide */
public int getExitCoordinatorKey() { return mExitCoordinatorIndex; }
/** @hide */
@@ -929,6 +973,7 @@
break;
}
mAnimSpecs = otherOptions.mAnimSpecs;
+ mAnimationFinishedListener = otherOptions.mAnimationFinishedListener;
}
/**
@@ -998,6 +1043,9 @@
if (mAnimSpecs != null) {
b.putParcelableArray(KEY_ANIM_SPECS, mAnimSpecs);
}
+ if (mAnimationFinishedListener != null) {
+ b.putBinder(KEY_ANIMATION_FINISHED_LISTENER, mAnimationFinishedListener.asBinder());
+ }
return b;
}
diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java
index b9292de..a74f528 100644
--- a/core/java/android/app/ActivityThread.java
+++ b/core/java/android/app/ActivityThread.java
@@ -88,6 +88,7 @@
import android.util.Pair;
import android.util.PrintWriterPrinter;
import android.util.Slog;
+import android.util.SparseIntArray;
import android.util.SuperNotCalledException;
import android.view.Display;
import android.view.HardwareRenderer;
@@ -2638,32 +2639,24 @@
if (configurations == null) {
return;
}
- IntArray horizontal = new IntArray();
- IntArray vertical = new IntArray();
+ SparseIntArray horizontal = new SparseIntArray();
+ SparseIntArray vertical = new SparseIntArray();
+ SparseIntArray smallest = new SparseIntArray();
for (int i = configurations.length - 1; i >= 0; i--) {
Configuration config = configurations[i];
if (config.screenHeightDp != Configuration.SCREEN_HEIGHT_DP_UNDEFINED) {
- vertical.add(config.screenHeightDp);
+ vertical.put(config.screenHeightDp, 0);
}
if (config.screenWidthDp != Configuration.SCREEN_WIDTH_DP_UNDEFINED) {
- horizontal.add(config.screenWidthDp);
+ horizontal.put(config.screenWidthDp, 0);
}
if (config.smallestScreenWidthDp != Configuration.SMALLEST_SCREEN_WIDTH_DP_UNDEFINED) {
- vertical.add(config.smallestScreenWidthDp);
- horizontal.add(config.smallestScreenWidthDp);
+ smallest.put(config.smallestScreenWidthDp, 0);
}
}
- int[] horizontalArray = null;
- if (horizontal.size() > 0) {
- horizontalArray = horizontal.toArray();
- }
- int[] verticalArray = null;
- if (vertical.size() > 0) {
- verticalArray = vertical.toArray();
- }
try {
- ActivityManagerNative.getDefault().reportSizeConfigurations(r.token, horizontalArray,
- verticalArray);
+ ActivityManagerNative.getDefault().reportSizeConfigurations(r.token,
+ horizontal.copyKeys(), vertical.copyKeys(), smallest.copyKeys());
} catch (RemoteException ex) {
}
diff --git a/core/java/android/app/AlarmManager.java b/core/java/android/app/AlarmManager.java
index fb03b62..3dc9582 100644
--- a/core/java/android/app/AlarmManager.java
+++ b/core/java/android/app/AlarmManager.java
@@ -21,15 +21,21 @@
import android.content.Context;
import android.content.Intent;
import android.os.Build;
+import android.os.Handler;
import android.os.Parcel;
import android.os.Parcelable;
import android.os.RemoteException;
+import android.os.SystemClock;
import android.os.UserHandle;
import android.os.WorkSource;
import android.text.TextUtils;
+import android.util.Log;
+
import libcore.util.ZoneInfoDB;
import java.io.IOException;
+import java.lang.ref.WeakReference;
+import java.util.WeakHashMap;
/**
* This class provides access to the system alarm services. These allow you
@@ -72,6 +78,8 @@
* Context.getSystemService(Context.ALARM_SERVICE)}.
*/
public class AlarmManager {
+ private static final String TAG = "AlarmManager";
+
/**
* Alarm time in {@link System#currentTimeMillis System.currentTimeMillis()}
* (wall clock time in UTC), which will wake up the device when
@@ -160,9 +168,89 @@
public static final int FLAG_IDLE_UNTIL = 1<<4;
private final IAlarmManager mService;
+ private final String mPackageName;
private final boolean mAlwaysExact;
private final int mTargetSdkVersion;
+ private final Handler mMainThreadHandler;
+ /**
+ * Direct-notification alarms: the requester must be running continuously from the
+ * time the alarm is set to the time it is delivered, or delivery will fail. Only
+ * one-shot alarms can be set using this mechanism, not repeating alarms.
+ */
+ public interface OnAlarmListener {
+ /**
+ * Callback method that is invoked by the system when the alarm time is reached.
+ */
+ public void onAlarm();
+ }
+
+ final class ListenerWrapper extends IAlarmListener.Stub implements Runnable {
+ final OnAlarmListener mListener;
+ Handler mHandler;
+ IAlarmCompleteListener mCompletion;
+
+ public ListenerWrapper(OnAlarmListener listener) {
+ mListener = listener;
+ }
+
+ public void setHandler(Handler h) {
+ mHandler = h;
+ }
+
+ public void cancel() {
+ try {
+ mService.remove(null, this);
+ } catch (RemoteException ex) {
+ }
+
+ synchronized (AlarmManager.class) {
+ if (sWrappers != null) {
+ sWrappers.remove(mListener);
+ }
+ }
+ }
+
+ @Override
+ public void doAlarm(IAlarmCompleteListener alarmManager) {
+ mCompletion = alarmManager;
+ mHandler.post(this);
+ }
+
+ @Override
+ public void run() {
+ // Remove this listener from the wrapper cache first; the server side
+ // already considers it gone
+ synchronized (AlarmManager.class) {
+ if (sWrappers != null) {
+ sWrappers.remove(mListener);
+ }
+ }
+
+ // Now deliver it to the app
+ try {
+ mListener.onAlarm();
+ } finally {
+ // No catch -- make sure to report completion to the system process,
+ // but continue to allow the exception to crash the app.
+
+ try {
+ mCompletion.alarmComplete(this);
+ } catch (Exception e) {
+ Log.e(TAG, "Unable to report completion to Alarm Manager!", e);
+ }
+ }
+ }
+ }
+
+ // Tracking of the OnAlarmListener -> wrapper mapping, for cancel() support.
+ // Access is synchronized on the AlarmManager class object.
+ //
+ // These are weak references so that we don't leak listener references if, for
+ // example, the pending-alarm messages are posted to a HandlerThread that is
+ // disposed of prior to alarm delivery. The underlying messages will be GC'd
+ // but this static reference would still persist, orphaned, never deallocated.
+ private static WeakHashMap<OnAlarmListener, WeakReference<ListenerWrapper>> sWrappers;
/**
* package private on purpose
@@ -170,8 +258,10 @@
AlarmManager(IAlarmManager service, Context ctx) {
mService = service;
+ mPackageName = ctx.getPackageName();
mTargetSdkVersion = ctx.getApplicationInfo().targetSdkVersion;
mAlwaysExact = (mTargetSdkVersion < Build.VERSION_CODES.KITKAT);
+ mMainThreadHandler = new Handler(ctx.getMainLooper());
}
private long legacyExactLength() {
@@ -249,7 +339,37 @@
* @see #RTC_WAKEUP
*/
public void set(int type, long triggerAtMillis, PendingIntent operation) {
- setImpl(type, triggerAtMillis, legacyExactLength(), 0, 0, operation, null, null);
+ setImpl(type, triggerAtMillis, legacyExactLength(), 0, 0, operation, null, null,
+ null, null, null);
+ }
+
+ /**
+ * Direct callback version of {@link #set(int, long, PendingIntent)}. Rather than
+ * supplying a PendingIntent to be sent when the alarm time is reached, this variant
+ * supplies an {@link OnAlarmListener} instance that will be invoked at that time.
+ * <p>
+ * The OnAlarmListener's {@link OnAlarmListener#onAlarm() onAlarm()} method will be
+ * invoked via the specified target Handler, or on the application's main looper
+ * if {@code null} is passed as the {@code targetHandler} parameter.
+ *
+ * @param type One of {@link #ELAPSED_REALTIME}, {@link #ELAPSED_REALTIME_WAKEUP},
+ * {@link #RTC}, or {@link #RTC_WAKEUP}.
+ * @param triggerAtMillis time in milliseconds that the alarm should go
+ * off, using the appropriate clock (depending on the alarm type).
+ * @param tag string describing the alarm, used for logging and battery-use
+ * attribution
+ * @param listener {@link OnAlarmListener} instance whose
+ * {@link OnAlarmListener#onAlarm() onAlarm()} method will be
+ * called when the alarm time is reached. A given OnAlarmListener instance can
+ * only be the target of a single pending alarm, just as a given PendingIntent
+ * can only be used with one alarm at a time.
+ * @param targetHandler {@link Handler} on which to execute the listener's onAlarm()
+ * callback, or {@code null} to run that callback on the main looper.
+ */
+ public void set(int type, long triggerAtMillis, String tag, OnAlarmListener listener,
+ Handler targetHandler) {
+ setImpl(type, triggerAtMillis, legacyExactLength(), 0, 0, null, listener, tag,
+ targetHandler, null, null);
}
/**
@@ -310,8 +430,8 @@
*/
public void setRepeating(int type, long triggerAtMillis,
long intervalMillis, PendingIntent operation) {
- setImpl(type, triggerAtMillis, legacyExactLength(), intervalMillis, 0, operation, null,
- null);
+ setImpl(type, triggerAtMillis, legacyExactLength(), intervalMillis, 0, operation,
+ null, null, null, null, null);
}
/**
@@ -361,7 +481,23 @@
*/
public void setWindow(int type, long windowStartMillis, long windowLengthMillis,
PendingIntent operation) {
- setImpl(type, windowStartMillis, windowLengthMillis, 0, 0, operation, null, null);
+ setImpl(type, windowStartMillis, windowLengthMillis, 0, 0, operation,
+ null, null, null, null, null);
+ }
+
+ /**
+ * Direct callback version of {@link #setWindow(int, long, long, PendingIntent)}. Rather
+ * than supplying a PendingIntent to be sent when the alarm time is reached, this variant
+ * supplies an {@link OnAlarmListener} instance that will be invoked at that time.
+ * <p>
+ * The OnAlarmListener {@link OnAlarmListener#onAlarm() onAlarm()} method will be
+ * invoked via the specified target Handler, or on the application's main looper
+ * if {@code null} is passed as the {@code targetHandler} parameter.
+ */
+ public void setWindow(int type, long windowStartMillis, long windowLengthMillis,
+ String tag, OnAlarmListener listener, Handler targetHandler) {
+ setImpl(type, windowStartMillis, windowLengthMillis, 0, 0, null, listener, tag,
+ targetHandler, null, null);
}
/**
@@ -399,7 +535,23 @@
* @see #RTC_WAKEUP
*/
public void setExact(int type, long triggerAtMillis, PendingIntent operation) {
- setImpl(type, triggerAtMillis, WINDOW_EXACT, 0, 0, operation, null, null);
+ setImpl(type, triggerAtMillis, WINDOW_EXACT, 0, 0, operation, null, null, null,
+ null, null);
+ }
+
+ /**
+ * Direct callback version of {@link #setExact(int, long, PendingIntent)}. Rather
+ * than supplying a PendingIntent to be sent when the alarm time is reached, this variant
+ * supplies an {@link OnAlarmListener} instance that will be invoked at that time.
+ * <p>
+ * The OnAlarmListener's {@link OnAlarmListener#onAlarm() onAlarm()} method will be
+ * invoked via the specified target Handler, or on the application's main looper
+ * if {@code null} is passed as the {@code targetHandler} parameter.
+ */
+ public void setExact(int type, long triggerAtMillis, String tag, OnAlarmListener listener,
+ Handler targetHandler) {
+ setImpl(type, triggerAtMillis, WINDOW_EXACT, 0, 0, null, listener, tag,
+ targetHandler, null, null);
}
/**
@@ -408,7 +560,8 @@
* @hide
*/
public void setIdleUntil(int type, long triggerAtMillis, PendingIntent operation) {
- setImpl(type, triggerAtMillis, WINDOW_EXACT, 0, FLAG_IDLE_UNTIL, operation, null, null);
+ setImpl(type, triggerAtMillis, WINDOW_EXACT, 0, FLAG_IDLE_UNTIL, operation,
+ null, null, null, null, null);
}
/**
@@ -436,19 +589,38 @@
* @see android.content.Intent#filterEquals
*/
public void setAlarmClock(AlarmClockInfo info, PendingIntent operation) {
- setImpl(RTC_WAKEUP, info.getTriggerTime(), WINDOW_EXACT, 0, 0, operation, null, info);
+ setImpl(RTC_WAKEUP, info.getTriggerTime(), WINDOW_EXACT, 0, 0, operation,
+ null, null, null, null, info);
}
/** @hide */
@SystemApi
public void set(int type, long triggerAtMillis, long windowMillis, long intervalMillis,
PendingIntent operation, WorkSource workSource) {
- setImpl(type, triggerAtMillis, windowMillis, intervalMillis, 0, operation, workSource,
- null);
+ setImpl(type, triggerAtMillis, windowMillis, intervalMillis, 0, operation, null, null,
+ null, workSource, null);
+ }
+
+ /**
+ * Direct callback version of {@link #set(int, long, long, long, PendingIntent, WorkSource)}.
+ * Note that repeating alarms must use the PendingIntent variant, not an OnAlarmListener.
+ * <p>
+ * The OnAlarmListener's {@link OnAlarmListener#onAlarm() onAlarm()} method will be
+ * invoked via the specified target Handler, or on the application's main looper
+ * if {@code null} is passed as the {@code targetHandler} parameter.
+ *
+ * @hide
+ */
+ //@SystemApi
+ public void set(int type, long triggerAtMillis, long windowMillis, long intervalMillis,
+ OnAlarmListener listener, Handler targetHandler, WorkSource workSource) {
+ setImpl(type, triggerAtMillis, windowMillis, intervalMillis, 0, null, listener, null,
+ targetHandler, workSource, null);
}
private void setImpl(int type, long triggerAtMillis, long windowMillis, long intervalMillis,
- int flags, PendingIntent operation, WorkSource workSource, AlarmClockInfo alarmClock) {
+ int flags, PendingIntent operation, final OnAlarmListener listener, String listenerTag,
+ Handler targetHandler, WorkSource workSource, AlarmClockInfo alarmClock) {
if (triggerAtMillis < 0) {
/* NOTYET
if (mAlwaysExact) {
@@ -460,9 +632,30 @@
triggerAtMillis = 0;
}
+ ListenerWrapper recipientWrapper = null;
+ if (listener != null) {
+ synchronized (AlarmManager.class) {
+ if (sWrappers == null) {
+ sWrappers = new WeakHashMap<OnAlarmListener, WeakReference<ListenerWrapper>>();
+ }
+
+ WeakReference<ListenerWrapper> wrapperRef = sWrappers.get(listener);
+ // no existing wrapper *or* we've lost our weak ref to it => build a new one
+ if (wrapperRef == null ||
+ (recipientWrapper = wrapperRef.get()) == null) {
+ recipientWrapper = new ListenerWrapper(listener);
+ wrapperRef = new WeakReference<ListenerWrapper>(recipientWrapper);
+ sWrappers.put(listener, wrapperRef);
+ }
+ }
+
+ final Handler handler = (targetHandler != null) ? targetHandler : mMainThreadHandler;
+ recipientWrapper.setHandler(handler);
+ }
+
try {
- mService.set(type, triggerAtMillis, windowMillis, intervalMillis, flags, operation,
- workSource, alarmClock);
+ mService.set(mPackageName, type, triggerAtMillis, windowMillis, intervalMillis, flags,
+ operation, recipientWrapper, listenerTag, workSource, alarmClock);
} catch (RemoteException ex) {
}
}
@@ -562,7 +755,8 @@
*/
public void setInexactRepeating(int type, long triggerAtMillis,
long intervalMillis, PendingIntent operation) {
- setImpl(type, triggerAtMillis, WINDOW_HEURISTIC, intervalMillis, 0, operation, null, null);
+ setImpl(type, triggerAtMillis, WINDOW_HEURISTIC, intervalMillis, 0, operation, null,
+ null, null, null, null);
}
/**
@@ -611,8 +805,8 @@
* @see #RTC_WAKEUP
*/
public void setAndAllowWhileIdle(int type, long triggerAtMillis, PendingIntent operation) {
- setImpl(type, triggerAtMillis, WINDOW_HEURISTIC, 0, FLAG_ALLOW_WHILE_IDLE, operation,
- null, null);
+ setImpl(type, triggerAtMillis, WINDOW_HEURISTIC, 0, FLAG_ALLOW_WHILE_IDLE,
+ operation, null, null, null, null, null);
}
/**
@@ -666,7 +860,7 @@
*/
public void setExactAndAllowWhileIdle(int type, long triggerAtMillis, PendingIntent operation) {
setImpl(type, triggerAtMillis, WINDOW_EXACT, 0, FLAG_ALLOW_WHILE_IDLE, operation,
- null, null);
+ null, null, null, null, null);
}
/**
@@ -680,13 +874,44 @@
* @see #set
*/
public void cancel(PendingIntent operation) {
+ if (operation == null) {
+ throw new NullPointerException("operation");
+ }
+
try {
- mService.remove(operation);
+ mService.remove(operation, null);
} catch (RemoteException ex) {
}
}
/**
+ * Remove any alarm scheduled to be delivered to the given {@link OnAlarmListener}.
+ *
+ * @param listener OnAlarmListener instance that is the target of a currently-set alarm.
+ */
+ public void cancel(OnAlarmListener listener) {
+ if (listener == null) {
+ throw new NullPointerException("listener");
+ }
+
+ ListenerWrapper wrapper = null;
+ synchronized (AlarmManager.class) {
+ final WeakReference<ListenerWrapper> wrapperRef;
+ wrapperRef = sWrappers.get(listener);
+ if (wrapperRef != null) {
+ wrapper = wrapperRef.get();
+ }
+ }
+
+ if (wrapper == null) {
+ Log.w(TAG, "Unrecognized alarm listener " + listener);
+ return;
+ }
+
+ wrapper.cancel();
+ }
+
+ /**
* Set the system wall clock time.
* Requires the permission android.permission.SET_TIME.
*
diff --git a/core/java/android/app/IActivityManager.java b/core/java/android/app/IActivityManager.java
index ebdd302..fcc040b3 100644
--- a/core/java/android/app/IActivityManager.java
+++ b/core/java/android/app/IActivityManager.java
@@ -123,7 +123,8 @@
public void activitySlept(IBinder token) throws RemoteException;
public void activityDestroyed(IBinder token) throws RemoteException;
public void reportSizeConfigurations(IBinder token, int[] horizontalSizeConfiguration,
- int[] verticalSizeConfigurations) throws RemoteException;
+ int[] verticalSizeConfigurations, int[] smallestWidthConfigurations)
+ throws RemoteException;
public String getCallingPackage(IBinder token) throws RemoteException;
public ComponentName getCallingActivity(IBinder token) throws RemoteException;
public List<IAppTask> getAppTasks(String callingPackage) throws RemoteException;
diff --git a/core/java/android/app/IAlarmCompleteListener.aidl b/core/java/android/app/IAlarmCompleteListener.aidl
new file mode 100644
index 0000000..9f9ee40
--- /dev/null
+++ b/core/java/android/app/IAlarmCompleteListener.aidl
@@ -0,0 +1,27 @@
+/*
+** Copyright 2015, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+package android.app;
+
+import android.os.IBinder;
+
+/**
+ * Callback from app into system process to indicate that processing of
+ * a direct-call alarm has completed.
+ * {@hide}
+ */
+interface IAlarmCompleteListener {
+ void alarmComplete(in IBinder who);
+}
diff --git a/core/java/android/app/IAlarmListener.aidl b/core/java/android/app/IAlarmListener.aidl
new file mode 100644
index 0000000..a110d4d
--- /dev/null
+++ b/core/java/android/app/IAlarmListener.aidl
@@ -0,0 +1,29 @@
+/*
+** Copyright 2015, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+package android.app;
+
+import android.app.IAlarmCompleteListener;
+
+/**
+ * System private API for direct alarm callbacks (non-broadcast deliver). See the
+ * AlarmManager#set() variants that take an AlarmReceiver callback object
+ * rather than a PendingIntent.
+ *
+ * {@hide}
+ */
+oneway interface IAlarmListener {
+ void doAlarm(in IAlarmCompleteListener callback);
+}
diff --git a/core/java/android/app/IAlarmManager.aidl b/core/java/android/app/IAlarmManager.aidl
index 327c00b..7b05b49 100644
--- a/core/java/android/app/IAlarmManager.aidl
+++ b/core/java/android/app/IAlarmManager.aidl
@@ -17,7 +17,9 @@
package android.app;
import android.app.AlarmManager;
+import android.app.IAlarmListener;
import android.app.PendingIntent;
+import android.content.Intent;
import android.os.WorkSource;
/**
@@ -27,14 +29,12 @@
*/
interface IAlarmManager {
/** windowLength == 0 means exact; windowLength < 0 means the let the OS decide */
- void set(int type, long triggerAtTime, long windowLength,
- long interval, int flags, in PendingIntent operation, in WorkSource workSource,
- in AlarmManager.AlarmClockInfo alarmClock);
+ void set(String callingPackage, int type, long triggerAtTime, long windowLength,
+ long interval, int flags, in PendingIntent operation, in IAlarmListener listener,
+ String listenerTag, in WorkSource workSource, in AlarmManager.AlarmClockInfo alarmClock);
boolean setTime(long millis);
void setTimeZone(String zone);
- void remove(in PendingIntent operation);
+ void remove(in PendingIntent operation, in IAlarmListener listener);
long getNextWakeFromIdleTime();
AlarmManager.AlarmClockInfo getNextAlarmClock(int userId);
}
-
-
diff --git a/core/java/android/app/assist/AssistContent.java b/core/java/android/app/assist/AssistContent.java
index cddf47a..39902d7 100644
--- a/core/java/android/app/assist/AssistContent.java
+++ b/core/java/android/app/assist/AssistContent.java
@@ -14,6 +14,7 @@
*/
public class AssistContent implements Parcelable {
private boolean mIsAppProvidedIntent = false;
+ private boolean mIsAppProvidedWebUri = false;
private Intent mIntent;
private String mStructuredData;
private ClipData mClipData;
@@ -39,7 +40,7 @@
Uri uri = intent.getData();
if (uri != null) {
if ("http".equals(uri.getScheme()) || "https".equals(uri.getScheme())) {
- setWebUri(uri);
+ mUri = uri;
}
}
}
@@ -116,6 +117,7 @@
* leave the null and only report the local intent and clip data.
*/
public void setWebUri(Uri uri) {
+ mIsAppProvidedWebUri = true;
mUri = uri;
}
@@ -128,6 +130,16 @@
}
/**
+ * Returns whether or not the current {@link #getWebUri} was explicitly provided in
+ * {@link android.app.Activity#onProvideAssistContent Activity.onProvideAssistContent}. If not,
+ * the Intent was automatically set based on
+ * {@link android.app.Activity#getIntent Activity.getIntent}.
+ */
+ public boolean isAppProvidedWebUri() {
+ return mIsAppProvidedWebUri;
+ }
+
+ /**
* Return Bundle for extra vendor-specific data that can be modified and examined.
*/
public Bundle getExtras() {
diff --git a/core/java/android/content/Intent.java b/core/java/android/content/Intent.java
index 6740d43..d7e94d0 100644
--- a/core/java/android/content/Intent.java
+++ b/core/java/android/content/Intent.java
@@ -1658,6 +1658,14 @@
= "android.intent.extra.GET_PERMISSIONS_APP_LABEL_LIST_RESULT";
/**
+ * Boolean list describing if the app is a system app for apps that have one or more runtime
+ * permissions.
+ * @hide
+ */
+ public static final String EXTRA_GET_PERMISSIONS_IS_SYSTEM_APP_LIST_RESULT
+ = "android.intent.extra.GET_PERMISSIONS_IS_SYSTEM_APP_LIST_RESULT";
+
+ /**
* Required extra to be sent with {@link #ACTION_GET_PERMISSIONS_COUNT} broadcasts.
* @hide
*/
diff --git a/core/java/android/content/pm/IPackageManager.aidl b/core/java/android/content/pm/IPackageManager.aidl
index a5e9faf..fec2c44 100644
--- a/core/java/android/content/pm/IPackageManager.aidl
+++ b/core/java/android/content/pm/IPackageManager.aidl
@@ -63,7 +63,9 @@
boolean isPackageAvailable(String packageName, int userId);
PackageInfo getPackageInfo(String packageName, int flags, int userId);
int getPackageUid(String packageName, int userId);
+ int getPackageUidEtc(String packageName, int flags, int userId);
int[] getPackageGids(String packageName, int userId);
+ int[] getPackageGidsEtc(String packageName, int flags, int userId);
String[] currentToCanonicalPackageNames(in String[] names);
String[] canonicalToCurrentPackageNames(in String[] names);
diff --git a/core/java/android/os/UserManager.java b/core/java/android/os/UserManager.java
index 17e1a28..2e31ab6 100644
--- a/core/java/android/os/UserManager.java
+++ b/core/java/android/os/UserManager.java
@@ -533,14 +533,9 @@
/** @hide */
public static final int PIN_VERIFICATION_SUCCESS = -1;
- private static UserManager sInstance = null;
-
/** @hide */
- public synchronized static UserManager get(Context context) {
- if (sInstance == null) {
- sInstance = (UserManager) context.getSystemService(Context.USER_SERVICE);
- }
- return sInstance;
+ public static UserManager get(Context context) {
+ return (UserManager) context.getSystemService(Context.USER_SERVICE);
}
/** @hide */
diff --git a/core/java/android/util/SparseIntArray.java b/core/java/android/util/SparseIntArray.java
index e5c729d..3b832dd 100644
--- a/core/java/android/util/SparseIntArray.java
+++ b/core/java/android/util/SparseIntArray.java
@@ -19,6 +19,8 @@
import com.android.internal.util.ArrayUtils;
import com.android.internal.util.GrowingArrayUtils;
+import java.util.Arrays;
+
import libcore.util.EmptyArray;
/**
@@ -239,6 +241,18 @@
}
/**
+ * Provides a copy of keys.
+ *
+ * @hide
+ * */
+ public int[] copyKeys() {
+ if (size() == 0) {
+ return null;
+ }
+ return Arrays.copyOf(mKeys, size());
+ }
+
+ /**
* {@inheritDoc}
*
* <p>This implementation composes a string by iterating over its mappings.
diff --git a/core/java/android/view/IWindowManager.aidl b/core/java/android/view/IWindowManager.aidl
index 7adfa8d..f18b35d 100644
--- a/core/java/android/view/IWindowManager.aidl
+++ b/core/java/android/view/IWindowManager.aidl
@@ -138,7 +138,7 @@
* @hide
*/
void overridePendingAppTransitionMultiThumb(in AppTransitionAnimationSpec[] specs,
- IRemoteCallback startedCallback, boolean scaleUp);
+ IRemoteCallback startedCallback, IRemoteCallback finishedCallback, boolean scaleUp);
void overridePendingAppTransitionInPlace(String packageName, int anim);
void executeAppTransition();
void setAppStartingWindow(IBinder token, String pkg, int theme,
diff --git a/core/java/android/view/Window.java b/core/java/android/view/Window.java
index d9ec866..5d11c8b 100644
--- a/core/java/android/view/Window.java
+++ b/core/java/android/view/Window.java
@@ -1156,6 +1156,27 @@
public abstract void setContentView(View view);
/**
+ * Install a view in the decoration (title) area, to be shown when
+ * the window is in multi-window mode. This view will be placed
+ * next to the window controls.
+ *
+ * The view may be restored to defaults by passing null.
+ *
+ * @param view The desired view to display in window decorations.
+ */
+ public abstract void setDecorView(View view);
+
+ /**
+ * Convenience for
+ * {@link #setDecorView(View)}
+ * to set the custom window decoration from a layout resource. The layout will be inflated
+ * adding all top level views to the decoration
+ *
+ * @param layoutResID Resource ID to be inflated.
+ */
+ public abstract void setDecorView(@LayoutRes int layoutResID);
+
+ /**
* Set the screen content to an explicit view. This view is placed
* directly into the screen's view hierarchy. It can itself be a complex
* view hierarchy.
diff --git a/core/java/com/android/internal/policy/PhoneWindow.java b/core/java/com/android/internal/policy/PhoneWindow.java
index 7fab31f..b3bd46d 100644
--- a/core/java/com/android/internal/policy/PhoneWindow.java
+++ b/core/java/com/android/internal/policy/PhoneWindow.java
@@ -123,6 +123,7 @@
import android.view.animation.AnimationUtils;
import android.view.animation.Interpolator;
import android.widget.FrameLayout;
+import android.widget.LinearLayout;
import android.widget.ImageView;
import android.widget.PopupWindow;
import android.widget.ProgressBar;
@@ -469,6 +470,30 @@
}
@Override
+ public void setDecorView(int layoutResID) {
+ View v = mLayoutInflater.inflate(layoutResID, null);
+ setDecorView(v);
+ }
+
+ @Override
+ public void setDecorView(View view) {
+ if (mContentParent == null) {
+ installDecor();
+ }
+
+ LinearLayout clientDecorPlaceholder =
+ (LinearLayout) findViewById(R.id.client_decor_placeholder);
+
+ if (clientDecorPlaceholder != null) {
+ clientDecorPlaceholder.removeAllViews();
+
+ if (view != null) {
+ clientDecorPlaceholder.addView(view);
+ }
+ }
+ }
+
+ @Override
public void addContentView(View view, ViewGroup.LayoutParams params) {
if (mContentParent == null) {
installDecor();
diff --git a/core/java/com/android/internal/widget/NonClientDecorView.java b/core/java/com/android/internal/widget/NonClientDecorView.java
index 5d502c9..be9be11 100644
--- a/core/java/com/android/internal/widget/NonClientDecorView.java
+++ b/core/java/com/android/internal/widget/NonClientDecorView.java
@@ -428,8 +428,7 @@
// The render nodes for the multi threaded renderer.
private ThreadedRenderer mRenderer;
- private RenderNode mFrameNode;
- private RenderNode mBackdropNode;
+ private RenderNode mFrameAndBackdropNode;
private final Rect mOldTargetRect = new Rect();
private final Rect mNewTargetRect = new Rect();
@@ -450,13 +449,11 @@
setName("ResizeFrame");
mRenderer = renderer;
- // Create the render nodes for our frame and backdrop which can be resized independently
- // from the content.
- mFrameNode = RenderNode.create("FrameNode", null);
- mBackdropNode = RenderNode.create("BackdropNode", null);
+ // Create a render node for the content and frame backdrop
+ // which can be resized independently from the content.
+ mFrameAndBackdropNode = RenderNode.create("FrameAndBackdropNode", null);
- mRenderer.addRenderNode(mFrameNode, false);
- mRenderer.addRenderNode(mBackdropNode, true);
+ mRenderer.addRenderNode(mFrameAndBackdropNode, true);
// Set the initial bounds and draw once so that we do not get a broken frame.
mTargetRect.set(initialBounds);
@@ -504,10 +501,9 @@
// Invalidate the current content bounds.
mRenderer.setContentDrawBounds(0, 0, 0, 0);
- // Remove the render nodes again
+ // Remove the render node again
// (see comment above - better to do that only once).
- mRenderer.removeRenderNode(mFrameNode);
- mRenderer.removeRenderNode(mBackdropNode);
+ mRenderer.removeRenderNode(mFrameAndBackdropNode);
mRenderer = null;
@@ -575,7 +571,7 @@
mRenderer.setContentDrawBounds(
mLastXOffset,
- mLastYOffset + mLastCaptionHeight,
+ mLastYOffset,
mLastXOffset + mLastContentWidth,
mLastYOffset + mLastCaptionHeight + mLastContentHeight);
// If this was the first call and changeWindowSizeLocked got already called prior
@@ -623,30 +619,20 @@
final int width = newBounds.width();
final int height = newBounds.height();
- // Produce the draw calls.
- // TODO(skuhne): Create a separate caption view which draws this. If the shadow should
- // be resized while the window resizes, this hierarchy needs to have the elevation.
- // That said - it is probably no good idea to draw the shadow every time since it costs
- // a considerable time which we should rather spend for resizing the content and it does
- // barely show while the entire screen is moving.
- mFrameNode.setLeftTopRightBottom(left, top, left + width, top + mLastCaptionHeight);
- DisplayListCanvas canvas = mFrameNode.start(width, height);
+ mFrameAndBackdropNode.setLeftTopRightBottom(left, top, left + width, top + height);
+
+ // Draw the caption and content backdrops in to our render node.
+ DisplayListCanvas canvas = mFrameAndBackdropNode.start(width, height);
mCaptionBackgroundDrawable.setBounds(0, 0, left + width, top + mLastCaptionHeight);
mCaptionBackgroundDrawable.draw(canvas);
- mFrameNode.end(canvas);
-
- mBackdropNode.setLeftTopRightBottom(left, top + mLastCaptionHeight, left + width,
- top + height);
// The backdrop: clear everything with the background. Clipping is done elsewhere.
- canvas = mBackdropNode.start(width, height - mLastCaptionHeight);
- mResizingBackgroundDrawable.setBounds(0, 0, left + width, top + height);
+ mResizingBackgroundDrawable.setBounds(0, mLastCaptionHeight, left + width, top + height);
mResizingBackgroundDrawable.draw(canvas);
- mBackdropNode.end(canvas);
+ mFrameAndBackdropNode.end(canvas);
- // We need to render both rendered nodes explicitly.
- mRenderer.drawRenderNode(mFrameNode);
- mRenderer.drawRenderNode(mBackdropNode);
+ // We need to render the node explicitly
+ mRenderer.drawRenderNode(mFrameAndBackdropNode);
reportDrawIfNeeded();
}
diff --git a/core/res/res/layout/non_client_decor_dark.xml b/core/res/res/layout/non_client_decor_dark.xml
index 112f4b7..40b8960 100644
--- a/core/res/res/layout/non_client_decor_dark.xml
+++ b/core/res/res/layout/non_client_decor_dark.xml
@@ -29,10 +29,11 @@
android:background="@drawable/non_client_decor_title"
android:focusable="false"
android:descendantFocusability="blocksDescendants" >
- <TextView
+ <LinearLayout
+ android:id="@+id/client_decor_placeholder"
android:layout_width="0dp"
android:layout_height="match_parent"
- android:layout_weight="1" />
+ android:layout_weight="1"/>
<Button
android:id="@+id/maximize_window"
android:layout_width="32dp"
diff --git a/core/res/res/layout/non_client_decor_light.xml b/core/res/res/layout/non_client_decor_light.xml
index 5dd79c7..c75d526 100644
--- a/core/res/res/layout/non_client_decor_light.xml
+++ b/core/res/res/layout/non_client_decor_light.xml
@@ -29,10 +29,11 @@
android:background="@drawable/non_client_decor_title"
android:focusable="false"
android:descendantFocusability="blocksDescendants" >
- <TextView
+ <LinearLayout
+ android:id="@+id/client_decor_placeholder"
android:layout_width="0dp"
android:layout_height="match_parent"
- android:layout_weight="1" />
+ android:layout_weight="1"/>
<Button
android:id="@+id/maximize_window"
android:layout_width="32dp"
diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml
index 951a825..d1932fc 100644
--- a/core/res/res/values/symbols.xml
+++ b/core/res/res/values/symbols.xml
@@ -1956,6 +1956,7 @@
<java-symbol type="bool" name="config_built_in_sip_phone" />
<java-symbol type="id" name="maximize_window" />
<java-symbol type="id" name="close_window" />
+ <java-symbol type="id" name="client_decor_placeholder" />
<java-symbol type="layout" name="non_client_decor_light" />
<java-symbol type="layout" name="non_client_decor_dark" />
<java-symbol type="drawable" name="non_client_decor_title_focused" />
diff --git a/libs/hwui/renderthread/CanvasContext.cpp b/libs/hwui/renderthread/CanvasContext.cpp
index fac26dc..c1f6670 100644
--- a/libs/hwui/renderthread/CanvasContext.cpp
+++ b/libs/hwui/renderthread/CanvasContext.cpp
@@ -345,22 +345,24 @@
dirty.fLeft, dirty.fTop, dirty.fRight, dirty.fBottom, mOpaque);
Rect outBounds;
- // It there are multiple render nodes, they are as follows:
- // #0 - backdrop
+ // It there are multiple render nodes, they are laid out as follows:
+ // #0 - backdrop (content + caption)
// #1 - content (positioned at (0,0) and clipped to - its bounds mContentDrawBounds)
- // #2 - frame
+ // #2 - additional overlay nodes
// Usually the backdrop cannot be seen since it will be entirely covered by the content. While
// resizing however it might become partially visible. The following render loop will crop the
- // backdrop against the content and draw the remaining part of it. It will then crop the content
- // against the backdrop (since that indicates a shrinking of the window) and then the frame
- // around everything.
+ // backdrop against the content and draw the remaining part of it. It will then draw the content
+ // cropped to the backdrop (since that indicates a shrinking of the window).
+ //
+ // Additional nodes will be drawn on top with no particular clipping semantics.
+
// The bounds of the backdrop against which the content should be clipped.
Rect backdropBounds = mContentDrawBounds;
// Usually the contents bounds should be mContentDrawBounds - however - we will
// move it towards the fixed edge to give it a more stable appearance (for the moment).
Rect contentBounds;
// If there is no content bounds we ignore the layering as stated above and start with 2.
- int layer = (mContentDrawBounds.isEmpty() || mRenderNodes.size() <= 2) ? 2 : 0;
+ int layer = (mContentDrawBounds.isEmpty() || mRenderNodes.size() == 1) ? 2 : 0;
// Draw all render nodes. Note that
for (const sp<RenderNode>& node : mRenderNodes) {
if (layer == 0) { // Backdrop.
@@ -437,6 +439,7 @@
const float dy = backdropBounds.top - top;
const float width = backdropBounds.getWidth();
const float height = backdropBounds.getHeight();
+
mCanvas->translate(dx, dy);
if (mCanvas->clipRect(left, top, left + width, top + height, SkRegion::kIntersect_Op)) {
mCanvas->drawRenderNode(node.get(), outBounds);
diff --git a/libs/input/PointerController.cpp b/libs/input/PointerController.cpp
index 4a1d7e7..c9586e4 100644
--- a/libs/input/PointerController.cpp
+++ b/libs/input/PointerController.cpp
@@ -42,15 +42,14 @@
static const nsecs_t INACTIVITY_TIMEOUT_DELAY_TIME_NORMAL = 15 * 1000 * 1000000LL; // 15 seconds
static const nsecs_t INACTIVITY_TIMEOUT_DELAY_TIME_SHORT = 3 * 1000 * 1000000LL; // 3 seconds
-// Time to wait between animation frames.
-static const nsecs_t ANIMATION_FRAME_INTERVAL = 1000000000LL / 60;
-
// Time to spend fading out the spot completely.
static const nsecs_t SPOT_FADE_DURATION = 200 * 1000000LL; // 200 ms
// Time to spend fading out the pointer completely.
static const nsecs_t POINTER_FADE_DURATION = 500 * 1000000LL; // 500 ms
+// The number of events to be read at once for DisplayEventReceiver.
+static const int EVENT_BUFFER_SIZE = 100;
// --- PointerController ---
@@ -59,6 +58,13 @@
mPolicy(policy), mLooper(looper), mSpriteController(spriteController) {
mHandler = new WeakMessageHandler(this);
+ if (mDisplayEventReceiver.initCheck() == NO_ERROR) {
+ mLooper->addFd(mDisplayEventReceiver.getFd(), Looper::POLL_CALLBACK,
+ Looper::EVENT_INPUT, this, nullptr);
+ } else {
+ ALOGE("Failed to initialize DisplayEventReceiver.");
+ }
+
AutoMutex _l(mLock);
mLocked.animationPending = false;
@@ -416,21 +422,49 @@
void PointerController::handleMessage(const Message& message) {
switch (message.what) {
- case MSG_ANIMATE:
- doAnimate();
- break;
case MSG_INACTIVITY_TIMEOUT:
doInactivityTimeout();
break;
}
}
-void PointerController::doAnimate() {
+int PointerController::handleEvent(int /* fd */, int events, void* /* data */) {
+ if (events & (Looper::EVENT_ERROR | Looper::EVENT_HANGUP)) {
+ ALOGE("Display event receiver pipe was closed or an error occurred. "
+ "events=0x%x", events);
+ return 0; // remove the callback
+ }
+
+ if (!(events & Looper::EVENT_INPUT)) {
+ ALOGW("Received spurious callback for unhandled poll event. "
+ "events=0x%x", events);
+ return 1; // keep the callback
+ }
+
+ bool gotVsync = false;
+ ssize_t n;
+ nsecs_t timestamp;
+ DisplayEventReceiver::Event buf[EVENT_BUFFER_SIZE];
+ while ((n = mDisplayEventReceiver.getEvents(buf, EVENT_BUFFER_SIZE)) > 0) {
+ for (size_t i = 0; i < static_cast<size_t>(n); ++i) {
+ if (buf[i].header.type == DisplayEventReceiver::DISPLAY_EVENT_VSYNC) {
+ timestamp = buf[i].header.timestamp;
+ gotVsync = true;
+ }
+ }
+ }
+ if (gotVsync) {
+ doAnimate(timestamp);
+ }
+ return 1; // keep the callback
+}
+
+void PointerController::doAnimate(nsecs_t timestamp) {
AutoMutex _l(mLock);
bool keepAnimating = false;
mLocked.animationPending = false;
- nsecs_t frameDelay = systemTime(SYSTEM_TIME_MONOTONIC) - mLocked.animationTime;
+ nsecs_t frameDelay = timestamp - mLocked.animationTime;
// Animate pointer fade.
if (mLocked.pointerFadeDirection < 0) {
@@ -481,7 +515,7 @@
if (!mLocked.animationPending) {
mLocked.animationPending = true;
mLocked.animationTime = systemTime(SYSTEM_TIME_MONOTONIC);
- mLooper->sendMessageDelayed(ANIMATION_FRAME_INTERVAL, mHandler, Message(MSG_ANIMATE));
+ mDisplayEventReceiver.requestNextVsync();
}
}
diff --git a/libs/input/PointerController.h b/libs/input/PointerController.h
index 24a1681..6d840db 100644
--- a/libs/input/PointerController.h
+++ b/libs/input/PointerController.h
@@ -28,6 +28,7 @@
#include <utils/RefBase.h>
#include <utils/Looper.h>
#include <utils/String8.h>
+#include <gui/DisplayEventReceiver.h>
#include <SkBitmap.h>
@@ -68,7 +69,8 @@
*
* Handles pointer acceleration and animation.
*/
-class PointerController : public PointerControllerInterface, public MessageHandler {
+class PointerController : public PointerControllerInterface, public MessageHandler,
+ public LooperCallback {
protected:
virtual ~PointerController();
@@ -106,7 +108,6 @@
static const size_t MAX_SPOTS = 12;
enum {
- MSG_ANIMATE,
MSG_INACTIVITY_TIMEOUT,
};
@@ -136,6 +137,8 @@
sp<SpriteController> mSpriteController;
sp<WeakMessageHandler> mHandler;
+ DisplayEventReceiver mDisplayEventReceiver;
+
PointerResources mResources;
struct Locked {
@@ -173,7 +176,8 @@
void setPositionLocked(float x, float y);
void handleMessage(const Message& message);
- void doAnimate();
+ int handleEvent(int fd, int events, void* data);
+ void doAnimate(nsecs_t timestamp);
void doInactivityTimeout();
void startAnimationLocked();
diff --git a/packages/MtpDocumentsProvider/src/com/android/mtp/CursorHelper.java b/packages/MtpDocumentsProvider/src/com/android/mtp/CursorHelper.java
index 9e874bd..844b216 100644
--- a/packages/MtpDocumentsProvider/src/com/android/mtp/CursorHelper.java
+++ b/packages/MtpDocumentsProvider/src/com/android/mtp/CursorHelper.java
@@ -24,6 +24,9 @@
import android.provider.DocumentsContract;
import android.provider.DocumentsContract.Document;
+/**
+ * TODO Remove this class after we switch to use MtpDatabase.
+ */
final class CursorHelper {
static final int DUMMY_HANDLE_FOR_ROOT = 0;
diff --git a/packages/MtpDocumentsProvider/src/com/android/mtp/MtpDatabase.java b/packages/MtpDocumentsProvider/src/com/android/mtp/MtpDatabase.java
index df4a9f0..0534313 100644
--- a/packages/MtpDocumentsProvider/src/com/android/mtp/MtpDatabase.java
+++ b/packages/MtpDocumentsProvider/src/com/android/mtp/MtpDatabase.java
@@ -1,9 +1,26 @@
+/*
+ * Copyright (C) 2015 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.mtp;
import android.content.ContentValues;
import android.content.Context;
import android.content.res.Resources;
import android.database.Cursor;
+import android.database.DatabaseUtils;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.mtp.MtpObjectInfo;
@@ -12,9 +29,7 @@
import com.android.internal.annotations.VisibleForTesting;
-import java.io.UnsupportedEncodingException;
-import java.net.URLEncoder;
-import java.nio.charset.StandardCharsets;
+import java.util.Objects;
/**
* Database for MTP objects.
@@ -30,26 +45,60 @@
* by comparing the directory structure and object name.
*
* TODO: Remove @VisibleForTesting annotation when we start to use this class.
+ * TODO: Improve performance by SQL optimization.
*/
@VisibleForTesting
class MtpDatabase {
private static final int VERSION = 1;
private static final String NAME = "mtp";
- private static final String TABLE_MTP_DOCUMENTS = "MtpDocuments";
+ private static final String TABLE_DOCUMENTS = "Documents";
static final String COLUMN_DEVICE_ID = "device_id";
static final String COLUMN_STORAGE_ID = "storage_id";
static final String COLUMN_OBJECT_HANDLE = "object_handle";
+ static final String COLUMN_PARENT_DOCUMENT_ID = "parent_document_id";
+ static final String COLUMN_ROW_STATE = "row_state";
+
+ /**
+ * The state represents that the row has a valid object handle.
+ */
+ static final int ROW_STATE_MAPPED = 0;
+
+ /**
+ * The state represents that the object handle was cleared because the MTP session closed.
+ * External application can still fetch the unmapped documents. If the external application
+ * tries to open an unmapped document, the provider resolves the document with new object handle
+ * ahead.
+ */
+ static final int ROW_STATE_UNMAPPED = 1;
+
+ /**
+ * The state represents the raw has a valid object handle but it may be going to be merged into
+ * another unmapped row. After fetching all documents under the parent, the database tries to
+ * map the mapping document and the unmapped document in order to keep old document ID alive.
+ */
+ static final int ROW_STATE_MAPPING = 2;
+
+ private static final String SELECTION_DOCUMENT_ID =
+ DocumentsContract.Document.COLUMN_DOCUMENT_ID + " = ?";
+ private static final String SELECTION_ROOT_DOCUMENTS =
+ COLUMN_DEVICE_ID + " = ? AND " + COLUMN_PARENT_DOCUMENT_ID + " IS NULL";
+ private static final String SELECTION_ROOT_DOCUMENTS_WITH_STATE =
+ SELECTION_ROOT_DOCUMENTS + " AND " + COLUMN_ROW_STATE + " = ?";
+
+ static class ParentNotFoundException extends Exception {}
private static class OpenHelper extends SQLiteOpenHelper {
- private static final String CREATE_TABLE_QUERY =
- "CREATE TABLE " + TABLE_MTP_DOCUMENTS + " (" +
+ private static final String QUERY_CREATE_DOCUMENTS =
+ "CREATE TABLE " + TABLE_DOCUMENTS + " (" +
DocumentsContract.Document.COLUMN_DOCUMENT_ID +
" INTEGER PRIMARY KEY AUTOINCREMENT," +
COLUMN_DEVICE_ID + " INTEGER NOT NULL," +
- COLUMN_STORAGE_ID + " INTEGER NOT NULL," +
+ COLUMN_STORAGE_ID + " INTEGER," +
COLUMN_OBJECT_HANDLE + " INTEGER," +
+ COLUMN_PARENT_DOCUMENT_ID + " INTEGER," +
+ COLUMN_ROW_STATE + " INTEGER NOT NULL," +
DocumentsContract.Document.COLUMN_MIME_TYPE + " TEXT," +
DocumentsContract.Document.COLUMN_DISPLAY_NAME + " TEXT NOT NULL," +
DocumentsContract.Document.COLUMN_SUMMARY + " TEXT," +
@@ -64,7 +113,7 @@
@Override
public void onCreate(SQLiteDatabase db) {
- db.execSQL(CREATE_TABLE_QUERY);
+ db.execSQL(QUERY_CREATE_DOCUMENTS);
}
@Override
@@ -88,27 +137,57 @@
@VisibleForTesting
Cursor queryChildDocuments(String[] columnNames) {
- return database.query(TABLE_MTP_DOCUMENTS, columnNames, null, null, null, null, null);
+ return database.query(
+ TABLE_DOCUMENTS,
+ columnNames,
+ COLUMN_ROW_STATE + " IN (?, ?)",
+ strings(ROW_STATE_MAPPED, ROW_STATE_UNMAPPED),
+ null,
+ null,
+ null);
}
@VisibleForTesting
- void putRootDocument(Resources resources, MtpRoot root) throws Exception {
+ Cursor queryChildDocuments(String[] columnNames, String parentDocumentId) {
+ return database.query(
+ TABLE_DOCUMENTS,
+ columnNames,
+ COLUMN_ROW_STATE + " IN (?, ?) AND " + COLUMN_PARENT_DOCUMENT_ID + " = ?",
+ strings(ROW_STATE_MAPPED, ROW_STATE_UNMAPPED, parentDocumentId),
+ null,
+ null,
+ null);
+ }
+
+ /**
+ * Puts the roots into the database.
+ * If the database found another unmapped document that shares the same name with the root,
+ * the document may be merged into the unmapped document. In that case, the database marks the
+ * root as 'mapping' and wait for {@link #resolveRootDocuments(int)} is invoked.
+ * @param deviceId Device ID of roots.
+ * @param resources Resources used to get localized root name.
+ * @param roots Roots added to the database.
+ */
+ @VisibleForTesting
+ void putRootDocuments(int deviceId, Resources resources, MtpRoot[] roots) {
database.beginTransaction();
try {
+ // Add roots to database.
final ContentValues values = new ContentValues();
- values.put(COLUMN_DEVICE_ID, root.mDeviceId);
- values.put(COLUMN_STORAGE_ID, root.mStorageId);
- values.putNull(COLUMN_OBJECT_HANDLE);
- values.put(Document.COLUMN_MIME_TYPE, DocumentsContract.Document.MIME_TYPE_DIR);
- values.put(Document.COLUMN_DISPLAY_NAME, root.getRootName(resources));
- values.putNull(Document.COLUMN_SUMMARY);
- values.putNull(Document.COLUMN_LAST_MODIFIED);
- values.putNull(Document.COLUMN_ICON);
- values.put(Document.COLUMN_FLAGS, 0);
- values.put(Document.COLUMN_SIZE,
- (int) Math.min(root.mMaxCapacity - root.mFreeSpace, Integer.MAX_VALUE));
- if (database.insert(TABLE_MTP_DOCUMENTS, null, values) == -1) {
- throw new Exception("Failed to add root document.");
+ for (int i = 0; i < roots.length; i++) {
+ getRootDocumentValues(values, resources, roots[i]);
+ final String displayName =
+ values.getAsString(DocumentsContract.Document.COLUMN_DISPLAY_NAME);
+ final long numUnmapped = DatabaseUtils.queryNumEntries(
+ database,
+ TABLE_DOCUMENTS,
+ SELECTION_ROOT_DOCUMENTS_WITH_STATE + " AND " +
+ DocumentsContract.Document.COLUMN_DISPLAY_NAME + " = ?",
+ strings(deviceId, ROW_STATE_UNMAPPED, displayName));
+ if (numUnmapped != 0) {
+ values.put(COLUMN_ROW_STATE, ROW_STATE_MAPPING);
+ }
+ database.insert(TABLE_DOCUMENTS, null, values);
}
database.setTransactionSuccessful();
} finally {
@@ -138,6 +217,9 @@
values.put(COLUMN_DEVICE_ID, deviceId);
values.put(COLUMN_STORAGE_ID, info.getStorageId());
values.put(COLUMN_OBJECT_HANDLE, info.getObjectHandle());
+ // TODO: Specify correct document ID.
+ values.putNull(COLUMN_PARENT_DOCUMENT_ID);
+ values.put(COLUMN_ROW_STATE, ROW_STATE_MAPPED);
values.put(Document.COLUMN_MIME_TYPE, mimeType);
values.put(Document.COLUMN_DISPLAY_NAME, info.getName());
values.putNull(Document.COLUMN_SUMMARY);
@@ -147,17 +229,177 @@
values.putNull(Document.COLUMN_ICON);
values.put(Document.COLUMN_FLAGS, flag);
values.put(Document.COLUMN_SIZE, info.getCompressedSize());
- if (database.insert(TABLE_MTP_DOCUMENTS, null, values) == -1) {
+ if (database.insert(TABLE_DOCUMENTS, null, values) == -1) {
throw new Exception("Failed to add document.");
}
+
database.setTransactionSuccessful();
} finally {
database.endTransaction();
}
}
+ /**
+ * Clears MTP related identifier.
+ * It clears MTP's object handle and storage ID that are not stable over MTP sessions and mark
+ * the all documents as 'unmapped'. It also remove 'mapping' rows as mapping is cancelled now.
+ */
@VisibleForTesting
- private String escape(String s) throws UnsupportedEncodingException {
- return URLEncoder.encode(s, StandardCharsets.UTF_8.name());
+ void clearMapping() {
+ database.beginTransaction();
+ try {
+ database.delete(
+ TABLE_DOCUMENTS, COLUMN_ROW_STATE + " = ?", strings(ROW_STATE_MAPPING));
+ final ContentValues values = new ContentValues();
+ values.putNull(COLUMN_OBJECT_HANDLE);
+ values.putNull(COLUMN_STORAGE_ID);
+ values.put(COLUMN_ROW_STATE, ROW_STATE_UNMAPPED);
+ database.update(TABLE_DOCUMENTS, values, null, null);
+ database.setTransactionSuccessful();
+ } finally {
+ database.endTransaction();
+ }
+ }
+
+ /**
+ * Maps 'unmapped' document and 'mapping' document that don't have document but shares the same
+ * name.
+ * If the database does not find corresponding 'mapping' document, it just removes 'unmapped'
+ * document from the database.
+ * @param deviceId Device ID of roots which the method tries to resolve.
+ */
+ @VisibleForTesting
+ void resolveRootDocuments(int deviceId) {
+ database.beginTransaction();
+ try {
+ // Get 1-to-1 mapping of unmapped document and mapping document.
+ final String unmappedIdQuery = createStateFilter(
+ ROW_STATE_UNMAPPED, DocumentsContract.Document.COLUMN_DOCUMENT_ID);
+ final String mappingIdQuery = createStateFilter(
+ ROW_STATE_MAPPING, DocumentsContract.Document.COLUMN_DOCUMENT_ID);
+ // SQL should be like:
+ // SELECT group_concat(CASE WHEN raw_state = 1 THEN document_id ELSE NULL END),
+ // group_concat(CASE WHEN raw_state = 2 THEN document_id ELSE NULL END)
+ // WHERE device_id = ? AND parent_document_id IS NULL
+ // GROUP BY display_name
+ // HAVING count(CASE WHEN raw_state = 1 THEN document_id ELSE NULL END) = 1 AND
+ // count(CASE WHEN raw_state = 2 THEN document_id ELSE NULL END) = 1
+ final Cursor mergingCursor = database.query(
+ TABLE_DOCUMENTS,
+ new String[] {
+ "group_concat(" + unmappedIdQuery + ")",
+ "group_concat(" + mappingIdQuery + ")"
+ },
+ SELECTION_ROOT_DOCUMENTS,
+ strings(deviceId),
+ DocumentsContract.Document.COLUMN_DISPLAY_NAME,
+ "count(" + unmappedIdQuery + ") = 1 AND count(" + mappingIdQuery + ") = 1",
+ null);
+
+ final ContentValues values = new ContentValues();
+ while (mergingCursor.moveToNext()) {
+ final String unmappedId = mergingCursor.getString(0);
+ final String mappingId = mergingCursor.getString(1);
+
+ // Obtain the new values including the latest object handle from mapping row.
+ final Cursor mappingCursor = database.query(
+ TABLE_DOCUMENTS,
+ null,
+ SELECTION_DOCUMENT_ID,
+ new String[] { mappingId },
+ null,
+ null,
+ null);
+ mappingCursor.moveToNext();
+ values.clear();
+ DatabaseUtils.cursorRowToContentValues(mappingCursor, values);
+ mappingCursor.close();
+ values.remove(DocumentsContract.Document.COLUMN_DOCUMENT_ID);
+
+ // Set the new values into unmapped documents and get it back to 'normal' state.
+ values.put(COLUMN_ROW_STATE, ROW_STATE_MAPPED);
+ database.update(
+ TABLE_DOCUMENTS,
+ values,
+ SELECTION_DOCUMENT_ID,
+ new String[] { unmappedId });
+
+ // Delete 'mapping' row.
+ database.delete(
+ TABLE_DOCUMENTS,
+ SELECTION_DOCUMENT_ID,
+ new String[] { mappingId });
+ }
+ mergingCursor.close();
+
+ // Delete all unmapped rows that cannot be mapped.
+ database.delete(
+ TABLE_DOCUMENTS,
+ SELECTION_ROOT_DOCUMENTS_WITH_STATE,
+ strings(deviceId, ROW_STATE_UNMAPPED));
+
+ // The database cannot find old document ID for the mapping rows.
+ // Turn the all mapping rows into mapped state, which means the rows become to be
+ // valid with new document ID.
+ values.clear();
+ values.put(COLUMN_ROW_STATE, ROW_STATE_MAPPED);
+ database.update(
+ TABLE_DOCUMENTS,
+ values,
+ SELECTION_ROOT_DOCUMENTS_WITH_STATE,
+ strings(deviceId, ROW_STATE_MAPPING));
+ database.setTransactionSuccessful();
+ } finally {
+ database.endTransaction();
+ }
+ }
+
+ /**
+ * Gets {@link ContentValues} for the given root.
+ * @param values {@link ContentValues} that receives values.
+ * @param resources Resources used to get localized root name.
+ * @param root Root to be converted {@link ContentValues}.
+ */
+ private static void getRootDocumentValues(
+ ContentValues values, Resources resources, MtpRoot root) {
+ values.clear();
+ values.put(COLUMN_DEVICE_ID, root.mDeviceId);
+ values.put(COLUMN_STORAGE_ID, root.mStorageId);
+ values.putNull(COLUMN_OBJECT_HANDLE);
+ values.putNull(COLUMN_PARENT_DOCUMENT_ID);
+ values.put(COLUMN_ROW_STATE, ROW_STATE_MAPPED);
+ values.put(Document.COLUMN_MIME_TYPE, DocumentsContract.Document.MIME_TYPE_DIR);
+ values.put(Document.COLUMN_DISPLAY_NAME, root.getRootName(resources));
+ values.putNull(Document.COLUMN_SUMMARY);
+ values.putNull(Document.COLUMN_LAST_MODIFIED);
+ values.putNull(Document.COLUMN_ICON);
+ values.put(Document.COLUMN_FLAGS, 0);
+ values.put(Document.COLUMN_SIZE,
+ (int) Math.min(root.mMaxCapacity - root.mFreeSpace, Integer.MAX_VALUE));
+ }
+
+ /**
+ * Converts values into string array.
+ * @param args Values converted into string array.
+ * @return String array.
+ */
+ private static String[] strings(Object... args) {
+ final String[] results = new String[args.length];
+ for (int i = 0; i < args.length; i++) {
+ results[i] = Objects.toString(args[i]);
+ }
+ return results;
+ }
+
+ /**
+ * Gets SQL expression that represents the given value or NULL depends on the row state.
+ * @param state Expected row state.
+ * @param a SQL value.
+ * @return Expression that represents a if the row state is expected one, and represents NULL
+ * otherwise.
+ */
+ private static String createStateFilter(int state, String a) {
+ return "CASE WHEN " + COLUMN_ROW_STATE + " = " + Integer.toString(state) +
+ " THEN " + a + " ELSE NULL END";
}
}
diff --git a/packages/MtpDocumentsProvider/tests/src/com/android/mtp/MtpDatabaseTest.java b/packages/MtpDocumentsProvider/tests/src/com/android/mtp/MtpDatabaseTest.java
index 8e1335f..e7d8481 100644
--- a/packages/MtpDocumentsProvider/tests/src/com/android/mtp/MtpDatabaseTest.java
+++ b/packages/MtpDocumentsProvider/tests/src/com/android/mtp/MtpDatabaseTest.java
@@ -1,3 +1,19 @@
+/*
+ * Copyright (C) 2015 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.mtp;
import android.database.Cursor;
@@ -32,10 +48,11 @@
public void testPutRootDocument() throws Exception {
final MtpDatabase database = new MtpDatabase(getContext());
- database.putRootDocument(resources, new MtpRoot(0, 1, "Device", "Storage", 1000, 2000, ""));
- database.putRootDocument(resources, new MtpRoot(0, 2, "Device", "Storage", 1000, 2000, ""));
- database.putRootDocument(
- resources, new MtpRoot(0, 3, "Device", "/@#%&<>Storage", 1000, 2000, ""));
+ database.putRootDocuments(0, resources, new MtpRoot[] {
+ new MtpRoot(0, 1, "Device", "Storage", 1000, 2000, ""),
+ new MtpRoot(0, 2, "Device", "Storage", 1000, 2000, ""),
+ new MtpRoot(0, 3, "Device", "/@#%&<>Storage", 1000, 2000,"")
+ });
final Cursor cursor = database.queryChildDocuments(COLUMN_NAMES);
assertEquals(3, cursor.getCount());
@@ -93,4 +110,200 @@
cursor.getInt(9));
assertEquals("size", 1000, cursor.getInt(10));
}
+
+ public void testRestoreIdForRootDocuments() throws Exception {
+ final MtpDatabase database = new MtpDatabase(getContext());
+ final String[] columns = new String[] {
+ DocumentsContract.Document.COLUMN_DOCUMENT_ID,
+ MtpDatabase.COLUMN_STORAGE_ID,
+ DocumentsContract.Document.COLUMN_DISPLAY_NAME
+ };
+ database.putRootDocuments(0, resources, new MtpRoot[] {
+ new MtpRoot(0, 100, "Device", "Storage A", 0, 0, ""),
+ new MtpRoot(0, 101, "Device", "Storage B", 0, 0, "")
+ });
+
+ {
+ final Cursor cursor = database.queryChildDocuments(columns);
+ assertEquals(2, cursor.getCount());
+ cursor.moveToNext();
+ assertEquals("documentId", 1, cursor.getInt(0));
+ assertEquals("storageId", 100, cursor.getInt(1));
+ assertEquals("name", "Device Storage A", cursor.getString(2));
+ cursor.moveToNext();
+ assertEquals("documentId", 2, cursor.getInt(0));
+ assertEquals("storageId", 101, cursor.getInt(1));
+ assertEquals("name", "Device Storage B", cursor.getString(2));
+ cursor.close();
+ }
+
+ database.clearMapping();
+
+ {
+ final Cursor cursor = database.queryChildDocuments(columns);
+ assertEquals(2, cursor.getCount());
+ cursor.moveToNext();
+ assertEquals("documentId", 1, cursor.getInt(0));
+ assertTrue("storageId", cursor.isNull(1));
+ assertEquals("name", "Device Storage A", cursor.getString(2));
+ cursor.moveToNext();
+ assertEquals("documentId", 2, cursor.getInt(0));
+ assertTrue("storageId", cursor.isNull(1));
+ assertEquals("name", "Device Storage B", cursor.getString(2));
+ cursor.close();
+ }
+
+ database.putRootDocuments(0, resources, new MtpRoot[] {
+ new MtpRoot(0, 200, "Device", "Storage A", 0, 0, ""),
+ new MtpRoot(0, 202, "Device", "Storage C", 0, 0, "")
+ });
+
+ {
+ final Cursor cursor = database.queryChildDocuments(columns);
+ assertEquals(3, cursor.getCount());
+ cursor.moveToNext();
+ assertEquals("documentId", 1, cursor.getInt(0));
+ assertTrue("storageId", cursor.isNull(1));
+ assertEquals("name", "Device Storage A", cursor.getString(2));
+ cursor.moveToNext();
+ assertEquals("documentId", 2, cursor.getInt(0));
+ assertTrue("storageId", cursor.isNull(1));
+ assertEquals("name", "Device Storage B", cursor.getString(2));
+ cursor.moveToNext();
+ assertEquals("documentId", 4, cursor.getInt(0));
+ assertEquals("storageId", 202, cursor.getInt(1));
+ assertEquals("name", "Device Storage C", cursor.getString(2));
+ cursor.close();
+ }
+
+ database.resolveRootDocuments(0);
+
+ {
+ final Cursor cursor = database.queryChildDocuments(columns);
+ assertEquals(2, cursor.getCount());
+ cursor.moveToNext();
+ assertEquals("documentId", 1, cursor.getInt(0));
+ assertEquals("storageId", 200, cursor.getInt(1));
+ assertEquals("name", "Device Storage A", cursor.getString(2));
+ cursor.moveToNext();
+ assertEquals("documentId", 4, cursor.getInt(0));
+ assertEquals("storageId", 202, cursor.getInt(1));
+ assertEquals("name", "Device Storage C", cursor.getString(2));
+ cursor.close();
+ }
+ }
+
+ public void testRestoreIdForDifferentDevices() throws Exception {
+ final MtpDatabase database = new MtpDatabase(getContext());
+ final String[] columns = new String[] {
+ DocumentsContract.Document.COLUMN_DOCUMENT_ID,
+ MtpDatabase.COLUMN_STORAGE_ID,
+ DocumentsContract.Document.COLUMN_DISPLAY_NAME
+ };
+ database.putRootDocuments(0, resources, new MtpRoot[] {
+ new MtpRoot(0, 100, "Device", "Storage", 0, 0, "")
+ });
+ database.putRootDocuments(1, resources, new MtpRoot[] {
+ new MtpRoot(1, 100, "Device", "Storage", 0, 0, "")
+ });
+
+ {
+ final Cursor cursor = database.queryChildDocuments(columns);
+ assertEquals(2, cursor.getCount());
+ cursor.moveToNext();
+ assertEquals("documentId", 1, cursor.getInt(0));
+ assertEquals("storageId", 100, cursor.getInt(1));
+ assertEquals("name", "Device Storage", cursor.getString(2));
+ cursor.moveToNext();
+ assertEquals("documentId", 2, cursor.getInt(0));
+ assertEquals("storageId", 100, cursor.getInt(1));
+ assertEquals("name", "Device Storage", cursor.getString(2));
+ cursor.close();
+ }
+
+ database.clearMapping();
+
+ database.putRootDocuments(0, resources, new MtpRoot[] {
+ new MtpRoot(0, 200, "Device", "Storage", 0, 0, "")
+ });
+ database.putRootDocuments(1, resources, new MtpRoot[] {
+ new MtpRoot(1, 300, "Device", "Storage", 0, 0, "")
+ });
+ database.resolveRootDocuments(0);
+ database.resolveRootDocuments(1);
+ {
+ final Cursor cursor = database.queryChildDocuments(columns);
+ assertEquals(2, cursor.getCount());
+ cursor.moveToNext();
+ assertEquals("documentId", 1, cursor.getInt(0));
+ assertEquals("storageId", 200, cursor.getInt(1));
+ assertEquals("name", "Device Storage", cursor.getString(2));
+ cursor.moveToNext();
+ assertEquals("documentId", 2, cursor.getInt(0));
+ assertEquals("storageId", 300, cursor.getInt(1));
+ assertEquals("name", "Device Storage", cursor.getString(2));
+ cursor.close();
+ }
+ }
+
+ public void testClearMtpIdentifierBeforeResolveRootDocuments() {
+ final MtpDatabase database = new MtpDatabase(getContext());
+ final String[] columns = new String[] {
+ DocumentsContract.Document.COLUMN_DOCUMENT_ID,
+ MtpDatabase.COLUMN_STORAGE_ID,
+ DocumentsContract.Document.COLUMN_DISPLAY_NAME
+ };
+ database.putRootDocuments(0, resources, new MtpRoot[] {
+ new MtpRoot(0, 100, "Device", "Storage", 0, 0, ""),
+ });
+ database.clearMapping();
+ database.putRootDocuments(0, resources, new MtpRoot[] {
+ new MtpRoot(0, 200, "Device", "Storage", 0, 0, ""),
+ });
+ database.clearMapping();
+ database.putRootDocuments(0, resources, new MtpRoot[] {
+ new MtpRoot(0, 300, "Device", "Storage", 0, 0, ""),
+ });
+ database.resolveRootDocuments(0);
+ {
+ final Cursor cursor = database.queryChildDocuments(columns);
+ assertEquals(1, cursor.getCount());
+ cursor.moveToNext();
+ assertEquals("documentId", 1, cursor.getInt(0));
+ assertEquals("storageId", 300, cursor.getInt(1));
+ assertEquals("name", "Device Storage", cursor.getString(2));
+ cursor.close();
+ }
+ }
+
+ public void testPutSameNameRootsAfterClearing() throws Exception {
+ final MtpDatabase database = new MtpDatabase(getContext());
+ final String[] columns = new String[] {
+ DocumentsContract.Document.COLUMN_DOCUMENT_ID,
+ MtpDatabase.COLUMN_STORAGE_ID,
+ DocumentsContract.Document.COLUMN_DISPLAY_NAME
+ };
+ database.putRootDocuments(0, resources, new MtpRoot[] {
+ new MtpRoot(0, 100, "Device", "Storage", 0, 0, ""),
+ });
+ database.clearMapping();
+ database.putRootDocuments(0, resources, new MtpRoot[] {
+ new MtpRoot(0, 200, "Device", "Storage", 0, 0, ""),
+ new MtpRoot(0, 201, "Device", "Storage", 0, 0, ""),
+ });
+ database.resolveRootDocuments(0);
+ {
+ final Cursor cursor = database.queryChildDocuments(columns);
+ assertEquals(2, cursor.getCount());
+ cursor.moveToNext();
+ assertEquals("documentId", 2, cursor.getInt(0));
+ assertEquals("storageId", 200, cursor.getInt(1));
+ assertEquals("name", "Device Storage", cursor.getString(2));
+ cursor.moveToNext();
+ assertEquals("documentId", 3, cursor.getInt(0));
+ assertEquals("storageId", 201, cursor.getInt(1));
+ assertEquals("name", "Device Storage", cursor.getString(2));
+ cursor.close();
+ }
+ }
}
diff --git a/packages/SettingsLib/res/values-af/arrays.xml b/packages/SettingsLib/res/values-af/arrays.xml
new file mode 100644
index 0000000..6693997
--- /dev/null
+++ b/packages/SettingsLib/res/values-af/arrays.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="wifi_status">
+ <item msgid="1922181315419294640"></item>
+ <item msgid="8934131797783724664">"Skandeer tans…"</item>
+ <item msgid="8513729475867537913">"Koppel tans…"</item>
+ <item msgid="515055375277271756">"Staaf tans…"</item>
+ <item msgid="1943354004029184381">"Bekom tans IP-adres…"</item>
+ <item msgid="4221763391123233270">"Gekoppel"</item>
+ <item msgid="624838831631122137">"Opgeskort"</item>
+ <item msgid="7979680559596111948">"Ontkoppel tans…"</item>
+ <item msgid="1634960474403853625">"Ontkoppel"</item>
+ <item msgid="746097431216080650">"Onsuksesvol"</item>
+ <item msgid="6367044185730295334">"Geblokkeer"</item>
+ <item msgid="503942654197908005">"Vermy tydelik swak verbinding"</item>
+ </string-array>
+ <string-array name="wifi_status_with_ssid">
+ <item msgid="7714855332363650812"></item>
+ <item msgid="8878186979715711006">"Skandeer tans…"</item>
+ <item msgid="355508996603873860">"Koppel tans aan <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="554971459996405634">"Staaf tans met <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="7928343808033020343">"Verkry tans IP-adres van <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="8937994881315223448">"Gekoppel aan <xliff:g id="NETWORK_NAME">%1$s</xliff:g>"</item>
+ <item msgid="1330262655415760617">"Opgeskort"</item>
+ <item msgid="7698638434317271902">"Ontkoppel tans van <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="197508606402264311">"Ontkoppel"</item>
+ <item msgid="8578370891960825148">"Onsuksesvol"</item>
+ <item msgid="5660739516542454527">"Geblokkeer"</item>
+ <item msgid="1805837518286731242">"Vermy tydelik swak verbinding"</item>
+ </string-array>
+</resources>
diff --git a/packages/SettingsLib/res/values-af/strings.xml b/packages/SettingsLib/res/values-af/strings.xml
new file mode 100644
index 0000000..73c82fd
--- /dev/null
+++ b/packages/SettingsLib/res/values-af/strings.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="wifi_fail_to_scan" msgid="1265540342578081461">"Kan nie skandeer vir netwerke nie"</string>
+ <string name="wifi_security_none" msgid="7985461072596594400">"Geen"</string>
+ <string name="wifi_remembered" msgid="4955746899347821096">"Gestoor"</string>
+ <string name="wifi_disabled_generic" msgid="4259794910584943386">"Gedeaktiveer"</string>
+ <string name="wifi_disabled_network_failure" msgid="2364951338436007124">"IP-opstelling het misluk"</string>
+ <string name="wifi_disabled_wifi_failure" msgid="3081668066612876581">"WiFi-verbinding het misluk"</string>
+ <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"Stawingsprobleem"</string>
+ <string name="wifi_not_in_range" msgid="1136191511238508967">"Nie binne ontvangs nie"</string>
+ <string name="wifi_no_internet" msgid="9151470775868728896">"Geen internettoegang bespeur nie, sal nie outomaties herkoppel nie."</string>
+ <string name="saved_network" msgid="4352716707126620811">"Gestoor deur <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="connected_via_wfa" msgid="3805736726317410714">"Gekoppel via Wi-Fi-assistent"</string>
+ <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>
+ <string name="bluetooth_disconnected" msgid="6557104142667339895">"Ontkoppel"</string>
+ <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Ontkoppel tans…"</string>
+ <string name="bluetooth_connecting" msgid="8555009514614320497">"Verbind tans…"</string>
+ <string name="bluetooth_connected" msgid="6038755206916626419">"Gekoppel"</string>
+ <string name="bluetooth_pairing" msgid="1426882272690346242">"Verbind tans…"</string>
+ <string name="bluetooth_connected_no_headset" msgid="2866994875046035609">"Gekoppel (geen foon nie)"</string>
+ <string name="bluetooth_connected_no_a2dp" msgid="4576188601581440337">"Gekoppel (geen media nie)"</string>
+ <string name="bluetooth_connected_no_map" msgid="6504436917057479986">"Gekoppel (geen boodskaptoegang nie)"</string>
+ <string name="bluetooth_connected_no_headset_no_a2dp" msgid="9195757766755553810">"Gekoppel (geen foon of media nie)"</string>
+ <string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Media-oudio"</string>
+ <string name="bluetooth_profile_headset" msgid="8658779596261212609">"Foonoudio"</string>
+ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"Lêeroordrag"</string>
+ <string name="bluetooth_profile_hid" msgid="3680729023366986480">"Invoertoestel"</string>
+ <string name="bluetooth_profile_pan" msgid="3391606497945147673">"Internettoegang"</string>
+ <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"Kontakdeling"</string>
+ <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"Gebruik vir kontakdeling"</string>
+ <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"Deling van internetverbinding"</string>
+ <string name="bluetooth_profile_map" msgid="5465271250454324383">"Boodskaptoegang"</string>
+ <string name="bluetooth_profile_sap" msgid="5764222021851283125">"SIM-toegang"</string>
+ <string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"Gekoppel aan media-oudio"</string>
+ <string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"Gekoppel aan foonoudio"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"Gekoppel aan lêeroordragbediener"</string>
+ <string name="bluetooth_map_profile_summary_connected" msgid="8191407438851351713">"Gekoppel aan kaart"</string>
+ <string name="bluetooth_sap_profile_summary_connected" msgid="8561765057453083838">"Aan SAP gekoppel"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"Nie gekoppel aan lêeroordragbediener nie"</string>
+ <string name="bluetooth_hid_profile_summary_connected" msgid="3381760054215168689">"Gekoppel aan invoertoestel"</string>
+ <string name="bluetooth_pan_user_profile_summary_connected" msgid="4602294638909590612">"Aan toestel gekoppel vir internettoegang"</string>
+ <string name="bluetooth_pan_nap_profile_summary_connected" msgid="1561383706411975199">"Deel plaaslike internetverbinding met toestel"</string>
+ <string name="bluetooth_pan_profile_summary_use_for" msgid="5664884523822068653">"Gebruik vir internettoegang"</string>
+ <string name="bluetooth_map_profile_summary_use_for" msgid="5154200119919927434">"Gebruik vir kaart"</string>
+ <string name="bluetooth_sap_profile_summary_use_for" msgid="7085362712786907993">"Gebruik vir SIM-toegang"</string>
+ <string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"Gebruik vir media-oudio"</string>
+ <string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"Gebruik vir foonoudio"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"Gebruik vir lêeroordrag"</string>
+ <string name="bluetooth_hid_profile_summary_use_for" msgid="232727040453645139">"Gebruik vir invoer"</string>
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"Bind saam"</string>
+ <string name="bluetooth_pairing_accept_all_caps" msgid="6061699265220789149">"BIND SAAM"</string>
+ <string name="bluetooth_pairing_decline" msgid="4185420413578948140">"Kanselleer"</string>
+ <string name="bluetooth_pairing_will_share_phonebook" msgid="4982239145676394429">"Saambinding bied toegang tot jou kontakte en oproepgeskiedenis wanneer dit gekoppel is."</string>
+ <string name="bluetooth_pairing_error_message" msgid="3748157733635947087">"Kon nie saambind met <xliff:g id="DEVICE_NAME">%1$s</xliff:g> nie."</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="8337234855188925274">"Kon nie met <xliff:g id="DEVICE_NAME">%1$s</xliff:g> saambind nie weens \'n verkeerde PIN of wagwoordsleutel."</string>
+ <string name="bluetooth_pairing_device_down_error_message" msgid="7870998403045801381">"Kan nie met <xliff:g id="DEVICE_NAME">%1$s</xliff:g> kommunikeer nie."</string>
+ <string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"Saambinding verwerp deur <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="accessibility_wifi_off" msgid="1166761729660614716">"Wi-Fi af."</string>
+ <string name="accessibility_no_wifi" msgid="8834610636137374508">"Wi-Fi is ontkoppel."</string>
+ <string name="accessibility_wifi_one_bar" msgid="4869376278894301820">"Wi-Fi een staaf."</string>
+ <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>
+ <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>
+ <string name="tether_settings_title_usb" msgid="6688416425801386511">"USB-verbinding"</string>
+ <string name="tether_settings_title_wifi" msgid="3277144155960302049">"Wi-Fi-warmkol"</string>
+ <string name="tether_settings_title_bluetooth" msgid="355855408317564420">"Bluetooth-verbinding"</string>
+ <string name="tether_settings_title_usb_bluetooth" msgid="5355828977109785001">"Verbinding"</string>
+ <string name="tether_settings_title_all" msgid="8356136101061143841">"USB-verbinding en Wi-Fi-warmkol"</string>
+ <string name="managed_user_title" msgid="8101244883654409696">"Werkprofiel"</string>
+ <string name="user_guest" msgid="8475274842845401871">"Gas"</string>
+ <string name="unknown" msgid="1592123443519355854">"Onbekend"</string>
+ <string name="running_process_item_user_label" msgid="3129887865552025943">"Gebruiker: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
+ <string name="launch_defaults_some" msgid="313159469856372621">"Sommige verstekke gestel"</string>
+ <string name="launch_defaults_none" msgid="4241129108140034876">"Geen verstekke gestel nie"</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-am/arrays.xml b/packages/SettingsLib/res/values-am/arrays.xml
new file mode 100644
index 0000000..46790d6
--- /dev/null
+++ b/packages/SettingsLib/res/values-am/arrays.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="wifi_status">
+ <item msgid="1922181315419294640"></item>
+ <item msgid="8934131797783724664">"በመቃኘት ላይ....."</item>
+ <item msgid="8513729475867537913">"በማገናኘት ላይ…"</item>
+ <item msgid="515055375277271756">"በማረጋገጥ ላይ...."</item>
+ <item msgid="1943354004029184381">"የIP አድራሻ በማግኘት ላይ..."</item>
+ <item msgid="4221763391123233270">"ተገናኝቷል"</item>
+ <item msgid="624838831631122137">"ታግዷል"</item>
+ <item msgid="7979680559596111948">"በማለያየት ላይ...."</item>
+ <item msgid="1634960474403853625">"ተለያየ"</item>
+ <item msgid="746097431216080650">"አልተሳካም"</item>
+ <item msgid="6367044185730295334">"ታግዷል"</item>
+ <item msgid="503942654197908005">"ለጊዜያዊነት ከደካማ ግኑኝነት በመታቀብ ላይ"</item>
+ </string-array>
+ <string-array name="wifi_status_with_ssid">
+ <item msgid="7714855332363650812"></item>
+ <item msgid="8878186979715711006">"በመቃኘት ላይ....."</item>
+ <item msgid="355508996603873860">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> በማያያዝ ላይ..."</item>
+ <item msgid="554971459996405634">"በ<xliff:g id="NETWORK_NAME">%1$s</xliff:g> በማረጋገጥ ላይ..."</item>
+ <item msgid="7928343808033020343">" ከ<xliff:g id="NETWORK_NAME">%1$s</xliff:g> የIP አድራሻ በማግኘት ላይ..."</item>
+ <item msgid="8937994881315223448">"ለ<xliff:g id="NETWORK_NAME">%1$s</xliff:g> የተገናኘ"</item>
+ <item msgid="1330262655415760617">"ታግዷል"</item>
+ <item msgid="7698638434317271902">"ከ<xliff:g id="NETWORK_NAME">%1$s</xliff:g> በማለያየት ላይ...."</item>
+ <item msgid="197508606402264311">"ተለያየ"</item>
+ <item msgid="8578370891960825148">"አልተሳካም"</item>
+ <item msgid="5660739516542454527">"ታግዷል"</item>
+ <item msgid="1805837518286731242">"ለጊዜያዊነት ከደካማ ግኑኝነት በመታቀብ ላይ"</item>
+ </string-array>
+</resources>
diff --git a/packages/SettingsLib/res/values-am/strings.xml b/packages/SettingsLib/res/values-am/strings.xml
new file mode 100644
index 0000000..4e94d87
--- /dev/null
+++ b/packages/SettingsLib/res/values-am/strings.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="wifi_fail_to_scan" msgid="1265540342578081461">"ለአውታረመረቦች መቃኘት አይቻልም"</string>
+ <string name="wifi_security_none" msgid="7985461072596594400">"የለም"</string>
+ <string name="wifi_remembered" msgid="4955746899347821096">"ተቀምጧል"</string>
+ <string name="wifi_disabled_generic" msgid="4259794910584943386">"ተሰነክሏል"</string>
+ <string name="wifi_disabled_network_failure" msgid="2364951338436007124">"የአይ.ፒ. ውቅረት መሰናከል"</string>
+ <string name="wifi_disabled_wifi_failure" msgid="3081668066612876581">"የWiFi ግንኙነት መሰናከል"</string>
+ <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"የማረጋገጫ ችግር"</string>
+ <string name="wifi_not_in_range" msgid="1136191511238508967">"በክልል ውስጥ የለም"</string>
+ <string name="wifi_no_internet" msgid="9151470775868728896">"ምንም የበይነ መረብ መዳረሻ ተፈልጎ አልተገኘም፣ በራስ-ሰር እንደገና እንዲገናኝ አይደረግም።"</string>
+ <string name="saved_network" msgid="4352716707126620811">"የተቀመጠው በ<xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="connected_via_wfa" msgid="3805736726317410714">"በWi‑Fi ረዳት አማካኝነት ተገናኝቷል"</string>
+ <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>
+ <string name="bluetooth_disconnected" msgid="6557104142667339895">"ተለያይቷል"</string>
+ <string name="bluetooth_disconnecting" msgid="8913264760027764974">"በመለያየት ላይ..."</string>
+ <string name="bluetooth_connecting" msgid="8555009514614320497">"በማገናኘት ላይ…"</string>
+ <string name="bluetooth_connected" msgid="6038755206916626419">"ተገናኝቷል"</string>
+ <string name="bluetooth_pairing" msgid="1426882272690346242">"በማገናኘት ላይ..."</string>
+ <string name="bluetooth_connected_no_headset" msgid="2866994875046035609">"ተያይዟል (ምንም ስልክ የለም)"</string>
+ <string name="bluetooth_connected_no_a2dp" msgid="4576188601581440337">"ተያይዟል (ምንም ማህደረ መረጃ የለም)"</string>
+ <string name="bluetooth_connected_no_map" msgid="6504436917057479986">"ተገናኝቷል (ምንም የመልዕክት መዳረሻ የለም)"</string>
+ <string name="bluetooth_connected_no_headset_no_a2dp" msgid="9195757766755553810">"ተያይዟል (ምንም ስልክ ወይም ማህደረ መረጃ የለም)"</string>
+ <string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"የማህደረ መረጃ ኦዲዮ"</string>
+ <string name="bluetooth_profile_headset" msgid="8658779596261212609">"የስልክ ኦዲዮ"</string>
+ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"ፋይል ማስተላለፍ"</string>
+ <string name="bluetooth_profile_hid" msgid="3680729023366986480">"ግቤት መሣሪያ"</string>
+ <string name="bluetooth_profile_pan" msgid="3391606497945147673">"የበይነመረብ ድረስ"</string>
+ <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"እውቂያ ማጋራት"</string>
+ <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"እውቂያን ለማጋራት ተጠቀም"</string>
+ <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"የበይነ መረብ ተያያዥ ማጋሪያ"</string>
+ <string name="bluetooth_profile_map" msgid="5465271250454324383">"የመልዕክት መዳረሻ"</string>
+ <string name="bluetooth_profile_sap" msgid="5764222021851283125">"የሲም መዳረሻ"</string>
+ <string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"ወደ ማህደረ መረጃ አውዲዮ ተያይዟል"</string>
+ <string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"ወደ ስልክ አውዲዮ ተያይዟል"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"ወደ ፋይል ዝውውር አገልጋይ ተያይዟል"</string>
+ <string name="bluetooth_map_profile_summary_connected" msgid="8191407438851351713">"ከካርታ ጋር ተገናኝቷል"</string>
+ <string name="bluetooth_sap_profile_summary_connected" msgid="8561765057453083838">"ከSAP ጋር ተገናኝቷል"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"ከፋይል ዝውውር አገልጋይ ጋር አልተያያዘም"</string>
+ <string name="bluetooth_hid_profile_summary_connected" msgid="3381760054215168689">"ወደ ግቤት መሣሪያ ተያይዟል"</string>
+ <string name="bluetooth_pan_user_profile_summary_connected" msgid="4602294638909590612">"ለበይነመረብ ድረስ ወደ መሣሪያ ተያይዟል"</string>
+ <string name="bluetooth_pan_nap_profile_summary_connected" msgid="1561383706411975199">"የአካባቢያዊ በይነመረብ ተያያዥ ከመሣሪያ ጋር በማጋራት ላይ"</string>
+ <string name="bluetooth_pan_profile_summary_use_for" msgid="5664884523822068653">"ለበይነ መረብ ድረስ ተጠቀም"</string>
+ <string name="bluetooth_map_profile_summary_use_for" msgid="5154200119919927434">"ለካርታ ይጠቀሙ"</string>
+ <string name="bluetooth_sap_profile_summary_use_for" msgid="7085362712786907993">"ለሲም መዳረሻ መጠቀም"</string>
+ <string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"ለማህደረመረጃ ድምፅተጠቀም"</string>
+ <string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"ለስልክ ድምፅ ተጠቀም"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"ለፋይል ዝውውር ተጠቀም"</string>
+ <string name="bluetooth_hid_profile_summary_use_for" msgid="232727040453645139">"ለውፅአት ተጠቀም"</string>
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"አጣምር"</string>
+ <string name="bluetooth_pairing_accept_all_caps" msgid="6061699265220789149">"አጣምር"</string>
+ <string name="bluetooth_pairing_decline" msgid="4185420413578948140">"ይቅር"</string>
+ <string name="bluetooth_pairing_will_share_phonebook" msgid="4982239145676394429">"ማጣመር በግንኙነት ጊዜ የእርስዎ የእውቂያዎች እና የጥሪ ታሪክ መዳረሻን ይሰጣል።"</string>
+ <string name="bluetooth_pairing_error_message" msgid="3748157733635947087">"ከ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ማጣመር አልተቻለም::"</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="8337234855188925274">"ከ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ጋር ትክክለኛ ባልሆነ ፒን ወይም የይለፍቁልፍ ምክንያት ማጣመር አልተቻለም::"</string>
+ <string name="bluetooth_pairing_device_down_error_message" msgid="7870998403045801381">"ከ<xliff:g id="DEVICE_NAME">%1$s</xliff:g> ጋር ግንኙነት መመስረት አልተቻለም።"</string>
+ <string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"ማጣመር በ<xliff:g id="DEVICE_NAME">%1$s</xliff:g> ተገፍቷል።"</string>
+ <string name="accessibility_wifi_off" msgid="1166761729660614716">"Wifi ጠፍቷል።"</string>
+ <string name="accessibility_no_wifi" msgid="8834610636137374508">"የWifi ግንኙነት ተቋርጧል።"</string>
+ <string name="accessibility_wifi_one_bar" msgid="4869376278894301820">"አንድ የWiFi አሞሌ።"</string>
+ <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>
+ <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_wifi" msgid="3277144155960302049">"ተጓጓዥ ድረስ ነጥቦች"</string>
+ <string name="tether_settings_title_bluetooth" msgid="355855408317564420">"ብሉቱዝ ማያያዝ"</string>
+ <string name="tether_settings_title_usb_bluetooth" msgid="5355828977109785001">"መሰካት"</string>
+ <string name="tether_settings_title_all" msgid="8356136101061143841">"ተጓጓዥ መዳረሻ ነጥብ እና ማገናኛ"</string>
+ <string name="managed_user_title" msgid="8101244883654409696">"የስራ መገለጫ"</string>
+ <string name="user_guest" msgid="8475274842845401871">"እንግዳ"</string>
+ <string name="unknown" msgid="1592123443519355854">"ያልታወቀ"</string>
+ <string name="running_process_item_user_label" msgid="3129887865552025943">"ተጠቃሚ፦ <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
+ <string name="launch_defaults_some" msgid="313159469856372621">"አንዳንድ ነባሪዎ ተዘጋጅተዋል"</string>
+ <string name="launch_defaults_none" msgid="4241129108140034876">"ምንም ነባሪዎች አልተዘጋጁም"</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-ar/arrays.xml b/packages/SettingsLib/res/values-ar/arrays.xml
new file mode 100644
index 0000000..866959f
--- /dev/null
+++ b/packages/SettingsLib/res/values-ar/arrays.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="wifi_status">
+ <item msgid="1922181315419294640"></item>
+ <item msgid="8934131797783724664">"جارٍ الفحص..."</item>
+ <item msgid="8513729475867537913">"جارٍ الاتصال…"</item>
+ <item msgid="515055375277271756">"جارٍ المصادقة…"</item>
+ <item msgid="1943354004029184381">"جارٍ الحصول على عنوان IP…"</item>
+ <item msgid="4221763391123233270">"متصل"</item>
+ <item msgid="624838831631122137">"معلق"</item>
+ <item msgid="7979680559596111948">"جارٍ فصل الاتصال..."</item>
+ <item msgid="1634960474403853625">"غير متصل"</item>
+ <item msgid="746097431216080650">"غير ناجح"</item>
+ <item msgid="6367044185730295334">"تم حظرها"</item>
+ <item msgid="503942654197908005">"يتم تجنب الاتصال الضعيف مؤقتًا"</item>
+ </string-array>
+ <string-array name="wifi_status_with_ssid">
+ <item msgid="7714855332363650812"></item>
+ <item msgid="8878186979715711006">"جارٍ الفحص..."</item>
+ <item msgid="355508996603873860">"جارٍ الاتصال بجهاز <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="554971459996405634">"جارٍ المصادقة مع <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="7928343808033020343">"جارٍ الحصول على عنوان IP من <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="8937994881315223448">"متصل بـ <xliff:g id="NETWORK_NAME">%1$s</xliff:g>"</item>
+ <item msgid="1330262655415760617">"معلق"</item>
+ <item msgid="7698638434317271902">"جارٍ قطع الاتصال بـ <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="197508606402264311">"غير متصل"</item>
+ <item msgid="8578370891960825148">"غير ناجح"</item>
+ <item msgid="5660739516542454527">"تم حظرها"</item>
+ <item msgid="1805837518286731242">"يتم تجنب الاتصال الضعيف مؤقتًا"</item>
+ </string-array>
+</resources>
diff --git a/packages/SettingsLib/res/values-ar/strings.xml b/packages/SettingsLib/res/values-ar/strings.xml
new file mode 100644
index 0000000..3710f7b
--- /dev/null
+++ b/packages/SettingsLib/res/values-ar/strings.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="wifi_fail_to_scan" msgid="1265540342578081461">"لا يمكن فحص الشبكات"</string>
+ <string name="wifi_security_none" msgid="7985461072596594400">"لا شيء"</string>
+ <string name="wifi_remembered" msgid="4955746899347821096">"تم الحفظ"</string>
+ <string name="wifi_disabled_generic" msgid="4259794910584943386">"معطلة"</string>
+ <string name="wifi_disabled_network_failure" msgid="2364951338436007124">"أخفقت تهيئة عنوان IP"</string>
+ <string name="wifi_disabled_wifi_failure" msgid="3081668066612876581">"أخفق اتصال WiFi"</string>
+ <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"حدثت مشكلة في المصادقة"</string>
+ <string name="wifi_not_in_range" msgid="1136191511238508967">"ليست في النطاق"</string>
+ <string name="wifi_no_internet" msgid="9151470775868728896">"لم يتم اكتشاف اتصال بالإنترنت."</string>
+ <string name="saved_network" msgid="4352716707126620811">"تم الحفظ بواسطة <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="connected_via_wfa" msgid="3805736726317410714">"تم التوصيل عبر مساعد Wi-Fi"</string>
+ <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>
+ <string name="bluetooth_disconnected" msgid="6557104142667339895">"غير متصل"</string>
+ <string name="bluetooth_disconnecting" msgid="8913264760027764974">"جارٍ قطع الاتصال..."</string>
+ <string name="bluetooth_connecting" msgid="8555009514614320497">"جارٍ الاتصال…"</string>
+ <string name="bluetooth_connected" msgid="6038755206916626419">"متصل"</string>
+ <string name="bluetooth_pairing" msgid="1426882272690346242">"جارٍ الاقتران..."</string>
+ <string name="bluetooth_connected_no_headset" msgid="2866994875046035609">"متصل (بجهاز غير الهاتف)"</string>
+ <string name="bluetooth_connected_no_a2dp" msgid="4576188601581440337">"متصل (بجهاز غير الوسائط)"</string>
+ <string name="bluetooth_connected_no_map" msgid="6504436917057479986">"تم الاتصال (يتعذر الدخول إلى الرسائل)"</string>
+ <string name="bluetooth_connected_no_headset_no_a2dp" msgid="9195757766755553810">"متصل (بجهاز غير الهاتف أو الوسائط)"</string>
+ <string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"الإعدادات الصوتية للوسائط"</string>
+ <string name="bluetooth_profile_headset" msgid="8658779596261212609">"الإعدادات الصوتية للهاتف"</string>
+ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"نقل الملف"</string>
+ <string name="bluetooth_profile_hid" msgid="3680729023366986480">"جهاز الإرسال"</string>
+ <string name="bluetooth_profile_pan" msgid="3391606497945147673">"الدخول إلى الإنترنت"</string>
+ <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"مشاركة جهة الاتصال"</string>
+ <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"استخدام مع مشاركة جهة الاتصال"</string>
+ <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"مشاركة اتصال الإنترنت"</string>
+ <string name="bluetooth_profile_map" msgid="5465271250454324383">"الدخول إلى الرسائل"</string>
+ <string name="bluetooth_profile_sap" msgid="5764222021851283125">"الوصول إلى شريحة SIM"</string>
+ <string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"متصل بالإعدادات الصوتية للوسائط"</string>
+ <string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"متصل بالإعدادات الصوتية للهاتف"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"متصل بخادم نقل الملف"</string>
+ <string name="bluetooth_map_profile_summary_connected" msgid="8191407438851351713">"تم الاتصال بملف تعريف الدخول إلى الرسائل"</string>
+ <string name="bluetooth_sap_profile_summary_connected" msgid="8561765057453083838">"تم الاتصال بـ SAP"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"غير متصل بخادم نقل الملفات"</string>
+ <string name="bluetooth_hid_profile_summary_connected" msgid="3381760054215168689">"متصل بجهاز الإدخال"</string>
+ <string name="bluetooth_pan_user_profile_summary_connected" msgid="4602294638909590612">"متصل بالجهاز لدخول الإنترنت"</string>
+ <string name="bluetooth_pan_nap_profile_summary_connected" msgid="1561383706411975199">"مشاركة الاتصال المحلي بالإنترنت مع الجهاز"</string>
+ <string name="bluetooth_pan_profile_summary_use_for" msgid="5664884523822068653">"الاستخدام للدخول على الإنترنت"</string>
+ <string name="bluetooth_map_profile_summary_use_for" msgid="5154200119919927434">"استخدام لملف تعريف الدخول إلى الرسائل"</string>
+ <string name="bluetooth_sap_profile_summary_use_for" msgid="7085362712786907993">"الاستخدام للوصول إلى شريحة SIM"</string>
+ <string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"الاستخدام للإعدادات الصوتية للوسائط"</string>
+ <string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"الاستخدام لإعدادات الهاتف الصوتية"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"استخدامه لنقل الملفات"</string>
+ <string name="bluetooth_hid_profile_summary_use_for" msgid="232727040453645139">"استخدام للإدخال"</string>
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"اقتران"</string>
+ <string name="bluetooth_pairing_accept_all_caps" msgid="6061699265220789149">"إقران"</string>
+ <string name="bluetooth_pairing_decline" msgid="4185420413578948140">"إلغاء"</string>
+ <string name="bluetooth_pairing_will_share_phonebook" msgid="4982239145676394429">"يضمن لك الإقران إمكانية الدخول إلى جهات اتصالك وسجل المكالمات عند الاتصال."</string>
+ <string name="bluetooth_pairing_error_message" msgid="3748157733635947087">"تعذر الإقران مع <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="8337234855188925274">"تعذر الإقران مع <xliff:g id="DEVICE_NAME">%1$s</xliff:g> نظرًا لوجود رقم تعريف شخصي أو مفتاح مرور غير صحيح."</string>
+ <string name="bluetooth_pairing_device_down_error_message" msgid="7870998403045801381">"لا يمكن الاتصال بـ <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"تم رفض الاقتران بواسطة <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+ <string name="accessibility_wifi_off" msgid="1166761729660614716">"تم إيقاف Wi-Fi."</string>
+ <string name="accessibility_no_wifi" msgid="8834610636137374508">"تم قطع اتصال Wi-Fi."</string>
+ <string name="accessibility_wifi_one_bar" msgid="4869376278894301820">"إشارة Wi-Fi تتكون من شريط واحد."</string>
+ <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>
+ <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_wifi" msgid="3277144155960302049">"نقطة اتصال محمولة"</string>
+ <string name="tether_settings_title_bluetooth" msgid="355855408317564420">"ربط البلوتوث"</string>
+ <string name="tether_settings_title_usb_bluetooth" msgid="5355828977109785001">"ربط"</string>
+ <string name="tether_settings_title_all" msgid="8356136101061143841">"الربط ونقطة الاتصال المحمولة"</string>
+ <string name="managed_user_title" msgid="8101244883654409696">"الملف الشخصي للعمل"</string>
+ <string name="user_guest" msgid="8475274842845401871">"مدعو"</string>
+ <string name="unknown" msgid="1592123443519355854">"غير معروف"</string>
+ <string name="running_process_item_user_label" msgid="3129887865552025943">"المستخدم: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
+ <string name="launch_defaults_some" msgid="313159469856372621">"تم تعيين بعض الإعدادات الافتراضية"</string>
+ <string name="launch_defaults_none" msgid="4241129108140034876">"لم يتم تعيين إعدادات افتراضية"</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-az-rAZ/arrays.xml b/packages/SettingsLib/res/values-az-rAZ/arrays.xml
new file mode 100644
index 0000000..442d155
--- /dev/null
+++ b/packages/SettingsLib/res/values-az-rAZ/arrays.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="wifi_status">
+ <item msgid="1922181315419294640"></item>
+ <item msgid="8934131797783724664">"Skan edilir ..."</item>
+ <item msgid="8513729475867537913">"Qoşulur ..."</item>
+ <item msgid="515055375277271756">"Autentifikasiya edilir..."</item>
+ <item msgid="1943354004029184381">"IP ünvanı əldə edilir..."</item>
+ <item msgid="4221763391123233270">"Qoşulu"</item>
+ <item msgid="624838831631122137">"Durdurulmuş"</item>
+ <item msgid="7979680559596111948">"Ayrılır ..."</item>
+ <item msgid="1634960474403853625">"Əlaqə kəsildi"</item>
+ <item msgid="746097431216080650">"Uğursuz"</item>
+ <item msgid="6367044185730295334">"Bloklanıb"</item>
+ <item msgid="503942654197908005">"Keyfiyyətsiz bağlantıdan müvəqqəti qaçış"</item>
+ </string-array>
+ <string-array name="wifi_status_with_ssid">
+ <item msgid="7714855332363650812"></item>
+ <item msgid="8878186979715711006">"Skan edilir..."</item>
+ <item msgid="355508996603873860">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> qoşulur…"</item>
+ <item msgid="554971459996405634">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> ilə autentifikasiya edilir..."</item>
+ <item msgid="7928343808033020343">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> şəbəkəsindən IP ünvan əldə olunur..."</item>
+ <item msgid="8937994881315223448">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> qoşuldu"</item>
+ <item msgid="1330262655415760617">"Dayandırılıb"</item>
+ <item msgid="7698638434317271902">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> şəbəkəsindən ayrılır..."</item>
+ <item msgid="197508606402264311">"Bağlantı kəsildi"</item>
+ <item msgid="8578370891960825148">"Uğursuz"</item>
+ <item msgid="5660739516542454527">"Bloklanıb"</item>
+ <item msgid="1805837518286731242">"Zəif bağlantı müvəqqəti aradan qaldırılır"</item>
+ </string-array>
+</resources>
diff --git a/packages/SettingsLib/res/values-az-rAZ/strings.xml b/packages/SettingsLib/res/values-az-rAZ/strings.xml
new file mode 100644
index 0000000..9f46424
--- /dev/null
+++ b/packages/SettingsLib/res/values-az-rAZ/strings.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="wifi_fail_to_scan" msgid="1265540342578081461">"Şəbəkə axtarmaq olmur"</string>
+ <string name="wifi_security_none" msgid="7985461072596594400">"Heç biri"</string>
+ <string name="wifi_remembered" msgid="4955746899347821096">"Yadda saxlanılan"</string>
+ <string name="wifi_disabled_generic" msgid="4259794910584943386">"Deaktiv"</string>
+ <string name="wifi_disabled_network_failure" msgid="2364951338436007124">"IP Konfiqurasiya Uğursuzluğu"</string>
+ <string name="wifi_disabled_wifi_failure" msgid="3081668066612876581">"WiFi Bağlantı Uğursuzluğu"</string>
+ <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"Autentifikasiya problemi"</string>
+ <string name="wifi_not_in_range" msgid="1136191511238508967">"Diapazonda deyil"</string>
+ <string name="wifi_no_internet" msgid="9151470775868728896">"İnternet bağlantısı tapılmadı, avtomatik olaraq yenidən qoşulmayacaq."</string>
+ <string name="saved_network" msgid="4352716707126620811">"<xliff:g id="NAME">%1$s</xliff:g> tərəfindən saxlandı"</string>
+ <string name="connected_via_wfa" msgid="3805736726317410714">"Wi‑Fi köməkçisi vasitəsilə qoşulub"</string>
+ <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>
+ <string name="bluetooth_disconnected" msgid="6557104142667339895">"Ayrıldı"</string>
+ <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Ayrılır..."</string>
+ <string name="bluetooth_connecting" msgid="8555009514614320497">"Qoşulur..."</string>
+ <string name="bluetooth_connected" msgid="6038755206916626419">"Qoşulu"</string>
+ <string name="bluetooth_pairing" msgid="1426882272690346242">"Cütləşdirmə"</string>
+ <string name="bluetooth_connected_no_headset" msgid="2866994875046035609">"Qoşulub (telefonsuz)"</string>
+ <string name="bluetooth_connected_no_a2dp" msgid="4576188601581440337">"Qoşuludur (media yoxdur)"</string>
+ <string name="bluetooth_connected_no_map" msgid="6504436917057479986">"Qoşulu (mesaj girişi yoxdur)"</string>
+ <string name="bluetooth_connected_no_headset_no_a2dp" msgid="9195757766755553810">"Bağlantı yaradılıb (telefon və ya media deyil)"</string>
+ <string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Media audio"</string>
+ <string name="bluetooth_profile_headset" msgid="8658779596261212609">"Telefon audio"</string>
+ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"Fayl transferi"</string>
+ <string name="bluetooth_profile_hid" msgid="3680729023366986480">"Daxiletmə cihazı"</string>
+ <string name="bluetooth_profile_pan" msgid="3391606497945147673">"İnternet girişi"</string>
+ <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"Kontakt paylaşımı"</string>
+ <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"Kontakt paylaşımı üçün istifadə edin"</string>
+ <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"internet bağlantı paylaşımı"</string>
+ <string name="bluetooth_profile_map" msgid="5465271250454324383">"Mesaj Girişi"</string>
+ <string name="bluetooth_profile_sap" msgid="5764222021851283125">"SIM Girişi"</string>
+ <string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"Media audioya birləşdirilib"</string>
+ <string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"Telefon audiosuna qoşulu"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"Fayl transfer serverinə qoşulu"</string>
+ <string name="bluetooth_map_profile_summary_connected" msgid="8191407438851351713">"Xəritəyə qoşulu"</string>
+ <string name="bluetooth_sap_profile_summary_connected" msgid="8561765057453083838">"SAP(es-ey-pi)\'yə qoşuludur"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"Fayl transfer serverinə qoşulmayıb"</string>
+ <string name="bluetooth_hid_profile_summary_connected" msgid="3381760054215168689">"Daxiletmə cihazına qoşuldu"</string>
+ <string name="bluetooth_pan_user_profile_summary_connected" msgid="4602294638909590612">"İnternet girişi üçün cihaza birləşdi"</string>
+ <string name="bluetooth_pan_nap_profile_summary_connected" msgid="1561383706411975199">"Lokal internet bağlantısı cihazla paylaşılır"</string>
+ <string name="bluetooth_pan_profile_summary_use_for" msgid="5664884523822068653">"İnternet girişi üçün istifadə edin"</string>
+ <string name="bluetooth_map_profile_summary_use_for" msgid="5154200119919927434">"Xəritə üçün istifadə et"</string>
+ <string name="bluetooth_sap_profile_summary_use_for" msgid="7085362712786907993">"SIM girişi üçün istifadə edin"</string>
+ <string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"Media audio istifadə edin"</string>
+ <string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"Telefon audiosu istifadə edin"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"Fayl transferi üçün istifadə edin"</string>
+ <string name="bluetooth_hid_profile_summary_use_for" msgid="232727040453645139">"Daxiletmə üçün istifadə edin"</string>
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"Birləşdir"</string>
+ <string name="bluetooth_pairing_accept_all_caps" msgid="6061699265220789149">"CÜTLƏNDİR"</string>
+ <string name="bluetooth_pairing_decline" msgid="4185420413578948140">"Ləğv et"</string>
+ <string name="bluetooth_pairing_will_share_phonebook" msgid="4982239145676394429">"Qoşulan zaman kontaktlarınıza və çağrı tarixçəsinə giriş cütlənməsi."</string>
+ <string name="bluetooth_pairing_error_message" msgid="3748157733635947087">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> ilə birləşdirmək alınmadı."</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="8337234855188925274">"Yanlış PIN və ya parola görə <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ilə cütləşmək alınmadı."</string>
+ <string name="bluetooth_pairing_device_down_error_message" msgid="7870998403045801381">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> ilə ünsiyyət qurula bilmir."</string>
+ <string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"Cütləşdirmə <xliff:g id="DEVICE_NAME">%1$s</xliff:g> tərəfindən rədd edildi."</string>
+ <string name="accessibility_wifi_off" msgid="1166761729660614716">"Wifi sönülüdür."</string>
+ <string name="accessibility_no_wifi" msgid="8834610636137374508">"Wifi bağlantı kəsildi."</string>
+ <string name="accessibility_wifi_one_bar" msgid="4869376278894301820">"Wifi bir xətdir."</string>
+ <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>
+ <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>
+ <string name="tether_settings_title_usb" msgid="6688416425801386511">"USB Birləşmə"</string>
+ <string name="tether_settings_title_wifi" msgid="3277144155960302049">"Portativ hotspot"</string>
+ <string name="tether_settings_title_bluetooth" msgid="355855408317564420">"Bluetooth birləşmə"</string>
+ <string name="tether_settings_title_usb_bluetooth" msgid="5355828977109785001">"Birləşmə"</string>
+ <string name="tether_settings_title_all" msgid="8356136101061143841">"Birləşmə və daşınan hotspot"</string>
+ <string name="managed_user_title" msgid="8101244883654409696">"İş profili"</string>
+ <string name="user_guest" msgid="8475274842845401871">"Qonaq"</string>
+ <string name="unknown" msgid="1592123443519355854">"Naməlum"</string>
+ <string name="running_process_item_user_label" msgid="3129887865552025943">"İstifadəçi: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
+ <string name="launch_defaults_some" msgid="313159469856372621">"Bəzi susmaya görələr təyin edilib"</string>
+ <string name="launch_defaults_none" msgid="4241129108140034876">"Susmaya görələr təyin edilməyib."</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-bg/arrays.xml b/packages/SettingsLib/res/values-bg/arrays.xml
new file mode 100644
index 0000000..a754787
--- /dev/null
+++ b/packages/SettingsLib/res/values-bg/arrays.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="wifi_status">
+ <item msgid="1922181315419294640"></item>
+ <item msgid="8934131797783724664">"Сканира се..."</item>
+ <item msgid="8513729475867537913">"Установява се връзка…"</item>
+ <item msgid="515055375277271756">"Удостоверява се..."</item>
+ <item msgid="1943354004029184381">"Получава се IP адрес"</item>
+ <item msgid="4221763391123233270">"Установена е връзка"</item>
+ <item msgid="624838831631122137">"Прекъсната"</item>
+ <item msgid="7979680559596111948">"Изключва се..."</item>
+ <item msgid="1634960474403853625">"Изкл."</item>
+ <item msgid="746097431216080650">"Неуспешно"</item>
+ <item msgid="6367044185730295334">"Блокирано"</item>
+ <item msgid="503942654197908005">"Временно се избягва лоша връзка"</item>
+ </string-array>
+ <string-array name="wifi_status_with_ssid">
+ <item msgid="7714855332363650812"></item>
+ <item msgid="8878186979715711006">"Сканира се..."</item>
+ <item msgid="355508996603873860">"Установява се връзка с/ъс <xliff:g id="NETWORK_NAME">%1$s</xliff:g>..."</item>
+ <item msgid="554971459996405634">"Удостоверява се с/ъс <xliff:g id="NETWORK_NAME">%1$s</xliff:g>..."</item>
+ <item msgid="7928343808033020343">"IP адресът от <xliff:g id="NETWORK_NAME">%1$s</xliff:g> се получава..."</item>
+ <item msgid="8937994881315223448">"Установена е връзка с/ъс<xliff:g id="NETWORK_NAME">%1$s</xliff:g>"</item>
+ <item msgid="1330262655415760617">"Прекъсната"</item>
+ <item msgid="7698638434317271902">"Изключва се от <xliff:g id="NETWORK_NAME">%1$s</xliff:g>..."</item>
+ <item msgid="197508606402264311">"Изкл."</item>
+ <item msgid="8578370891960825148">"Неуспешно"</item>
+ <item msgid="5660739516542454527">"Блокирано"</item>
+ <item msgid="1805837518286731242">"Временно се избягва лоша връзка"</item>
+ </string-array>
+</resources>
diff --git a/packages/SettingsLib/res/values-bg/strings.xml b/packages/SettingsLib/res/values-bg/strings.xml
new file mode 100644
index 0000000..5938f14
--- /dev/null
+++ b/packages/SettingsLib/res/values-bg/strings.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="wifi_fail_to_scan" msgid="1265540342578081461">"Не може да се сканира за мрежи"</string>
+ <string name="wifi_security_none" msgid="7985461072596594400">"Няма"</string>
+ <string name="wifi_remembered" msgid="4955746899347821096">"Запазено"</string>
+ <string name="wifi_disabled_generic" msgid="4259794910584943386">"Деактивирани"</string>
+ <string name="wifi_disabled_network_failure" msgid="2364951338436007124">"Неуспешно конфигуриране на IP адреса"</string>
+ <string name="wifi_disabled_wifi_failure" msgid="3081668066612876581">"Неуспешна връзка с Wi-Fi"</string>
+ <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"Проблем при удостоверяването"</string>
+ <string name="wifi_not_in_range" msgid="1136191511238508967">"Извън обхват"</string>
+ <string name="wifi_no_internet" msgid="9151470775868728896">"Не е открит достъп до интернет. Няма да се свърже отново автоматично."</string>
+ <string name="saved_network" msgid="4352716707126620811">"Запазено от <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="connected_via_wfa" msgid="3805736726317410714">"Установена е връзка чрез помощника за Wi-Fi"</string>
+ <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>
+ <string name="bluetooth_disconnected" msgid="6557104142667339895">"Изкл."</string>
+ <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Изключва се..."</string>
+ <string name="bluetooth_connecting" msgid="8555009514614320497">"Установява се връзка…"</string>
+ <string name="bluetooth_connected" msgid="6038755206916626419">"Установена е връзка"</string>
+ <string name="bluetooth_pairing" msgid="1426882272690346242">"Сдвояване..."</string>
+ <string name="bluetooth_connected_no_headset" msgid="2866994875046035609">"Свързано (без телефона)"</string>
+ <string name="bluetooth_connected_no_a2dp" msgid="4576188601581440337">"Свързано (без мултимедията)"</string>
+ <string name="bluetooth_connected_no_map" msgid="6504436917057479986">"Има връзка (няма достъп до съобщенията)"</string>
+ <string name="bluetooth_connected_no_headset_no_a2dp" msgid="9195757766755553810">"Свързано (без телефона или мултимедията)"</string>
+ <string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Мултимедийно аудио"</string>
+ <string name="bluetooth_profile_headset" msgid="8658779596261212609">"Звук на телефона"</string>
+ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"Прехвърляне на файл"</string>
+ <string name="bluetooth_profile_hid" msgid="3680729023366986480">"Входно устройство"</string>
+ <string name="bluetooth_profile_pan" msgid="3391606497945147673">"Достъп до интернет"</string>
+ <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"Споделяне на контакти"</string>
+ <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"Използване за споделяне на контакти"</string>
+ <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"Споделяне на връзката с интернет"</string>
+ <string name="bluetooth_profile_map" msgid="5465271250454324383">"Достъп до съобщенията"</string>
+ <string name="bluetooth_profile_sap" msgid="5764222021851283125">"Достъп до SIM картата"</string>
+ <string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"Установена е връзка с медийно аудио"</string>
+ <string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"Връзка със звука на телефона"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"Установена е връзка със сървър за трансфер на файлове"</string>
+ <string name="bluetooth_map_profile_summary_connected" msgid="8191407438851351713">"Има връзка с MAP"</string>
+ <string name="bluetooth_sap_profile_summary_connected" msgid="8561765057453083838">"Установена е връзка със SAP"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"Няма връзка със сървър за трансфер на файлове"</string>
+ <string name="bluetooth_hid_profile_summary_connected" msgid="3381760054215168689">"Има връзка с устройството за въвеждане"</string>
+ <string name="bluetooth_pan_user_profile_summary_connected" msgid="4602294638909590612">"Има връзка с у-во за достъп до интернет"</string>
+ <string name="bluetooth_pan_nap_profile_summary_connected" msgid="1561383706411975199">"Лок. връзка с интернет се споделя с у-вото"</string>
+ <string name="bluetooth_pan_profile_summary_use_for" msgid="5664884523822068653">"Използване за достъп до интернет"</string>
+ <string name="bluetooth_map_profile_summary_use_for" msgid="5154200119919927434">"Да се използва за MAP"</string>
+ <string name="bluetooth_sap_profile_summary_use_for" msgid="7085362712786907993">"Използване за достъп до SIM картата"</string>
+ <string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"Употреба за медийно аудио"</string>
+ <string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"Използване на телефон за аудио"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"Използване на за пренос на файлове"</string>
+ <string name="bluetooth_hid_profile_summary_use_for" msgid="232727040453645139">"Да се използва за въвеждане"</string>
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"Сдвояване"</string>
+ <string name="bluetooth_pairing_accept_all_caps" msgid="6061699265220789149">"СДВОЯВАНЕ"</string>
+ <string name="bluetooth_pairing_decline" msgid="4185420413578948140">"Отказ"</string>
+ <string name="bluetooth_pairing_will_share_phonebook" msgid="4982239145676394429">"При свързване сдвояването предоставя достъп до вашите контакти и история на обажданията."</string>
+ <string name="bluetooth_pairing_error_message" msgid="3748157733635947087">"Не можа да се сдвои с/ъс <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="8337234855188925274">"Не можа да се сдвои с/ъс <xliff:g id="DEVICE_NAME">%1$s</xliff:g> поради неправилен ПИН или код за достъп."</string>
+ <string name="bluetooth_pairing_device_down_error_message" msgid="7870998403045801381">"Не може да се свърже с/ъс <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"Сдвояването е отхвърлено от <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="accessibility_wifi_off" msgid="1166761729660614716">"Wi-Fi е изключен."</string>
+ <string name="accessibility_no_wifi" msgid="8834610636137374508">"Няма връзка с Wi-Fi."</string>
+ <string name="accessibility_wifi_one_bar" msgid="4869376278894301820">"Wi-Fi е с една чертичка."</string>
+ <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>
+ <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_wifi" msgid="3277144155960302049">"Преносима точка за достъп"</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="managed_user_title" msgid="8101244883654409696">"Служебен потр. профил"</string>
+ <string name="user_guest" msgid="8475274842845401871">"Гост"</string>
+ <string name="unknown" msgid="1592123443519355854">"Неизвестно"</string>
+ <string name="running_process_item_user_label" msgid="3129887865552025943">"Потребител: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
+ <string name="launch_defaults_some" msgid="313159469856372621">"Зададени са някои стандартни настройки"</string>
+ <string name="launch_defaults_none" msgid="4241129108140034876">"Няма зададени стандартни настройки"</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-bn-rBD/arrays.xml b/packages/SettingsLib/res/values-bn-rBD/arrays.xml
new file mode 100644
index 0000000..367e268
--- /dev/null
+++ b/packages/SettingsLib/res/values-bn-rBD/arrays.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="wifi_status">
+ <item msgid="1922181315419294640"></item>
+ <item msgid="8934131797783724664">"স্ক্যান করা হচ্ছে…"</item>
+ <item msgid="8513729475867537913">"সংযুক্ত হচ্ছে..."</item>
+ <item msgid="515055375277271756">"প্রমাণীকরণ হচ্ছে..."</item>
+ <item msgid="1943354004029184381">"IP ঠিকানা প্রাপ্ত করা হচ্ছে..."</item>
+ <item msgid="4221763391123233270">"সংযুক্ত হয়েছে"</item>
+ <item msgid="624838831631122137">"স্থগিত করা হয়েছে"</item>
+ <item msgid="7979680559596111948">"সংযোগ বিচ্ছিন্ন হচ্ছে..."</item>
+ <item msgid="1634960474403853625">"সংযোগ বিচ্ছিন্ন করা হয়েছে"</item>
+ <item msgid="746097431216080650">"অসফল"</item>
+ <item msgid="6367044185730295334">"ব্লক করা"</item>
+ <item msgid="503942654197908005">"সাময়িকরূপে দুর্বল সংযোগ এড়ানো হচ্ছে"</item>
+ </string-array>
+ <string-array name="wifi_status_with_ssid">
+ <item msgid="7714855332363650812"></item>
+ <item msgid="8878186979715711006">"স্ক্যান করা হচ্ছে…"</item>
+ <item msgid="355508996603873860">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> এর সাথে সংযুক্ত হচ্ছে…"</item>
+ <item msgid="554971459996405634">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> দিয়ে প্রমাণীকরণ করা হচ্ছে..."</item>
+ <item msgid="7928343808033020343">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> থেকে IP ঠিকানা জানা হচ্ছে…"</item>
+ <item msgid="8937994881315223448">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> তে সংযুক্ত হয়েছে"</item>
+ <item msgid="1330262655415760617">"স্থগিত করা হয়েছে"</item>
+ <item msgid="7698638434317271902">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> থেকে সংযোগ বিচ্ছিন্ন হচ্ছে…"</item>
+ <item msgid="197508606402264311">"সংযোগ বিচ্ছিন্ন করা হয়েছে"</item>
+ <item msgid="8578370891960825148">"অসফল"</item>
+ <item msgid="5660739516542454527">"অবরুদ্ধ"</item>
+ <item msgid="1805837518286731242">"সাময়িকরূপে দুর্বল সংযোগ এড়ানো হচ্ছে"</item>
+ </string-array>
+</resources>
diff --git a/packages/SettingsLib/res/values-bn-rBD/strings.xml b/packages/SettingsLib/res/values-bn-rBD/strings.xml
new file mode 100644
index 0000000..612f684
--- /dev/null
+++ b/packages/SettingsLib/res/values-bn-rBD/strings.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="wifi_fail_to_scan" msgid="1265540342578081461">"নেটওয়ার্কগুলির জন্য স্ক্যান করা যাবে না"</string>
+ <string name="wifi_security_none" msgid="7985461072596594400">"কোনো কিছুই নয়"</string>
+ <string name="wifi_remembered" msgid="4955746899347821096">"সংরক্ষিত"</string>
+ <string name="wifi_disabled_generic" msgid="4259794910584943386">"অক্ষম হয়েছে"</string>
+ <string name="wifi_disabled_network_failure" msgid="2364951338436007124">"IP কনফিগারেশনের ব্যর্থতা"</string>
+ <string name="wifi_disabled_wifi_failure" msgid="3081668066612876581">"WiFi সংযোগের ব্যর্থতা"</string>
+ <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"প্রমাণীকরণ সমস্যা"</string>
+ <string name="wifi_not_in_range" msgid="1136191511238508967">"পরিসরের মধ্যে নয়"</string>
+ <string name="wifi_no_internet" msgid="9151470775868728896">"কোনো ইন্টারনেট অ্যাক্সেস শনাক্ত হয়নি, স্বয়ংক্রিয়ভাবে পুনরায় সংযোগ স্থাপন করবে না৷"</string>
+ <string name="saved_network" msgid="4352716707126620811">"<xliff:g id="NAME">%1$s</xliff:g> দ্বারা সংরক্ষিত"</string>
+ <string name="connected_via_wfa" msgid="3805736726317410714">"Wi‑Fi সহায়ক-এর মাধ্যমে সংযুক্ত হয়েছে"</string>
+ <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>
+ <string name="bluetooth_disconnected" msgid="6557104142667339895">"সংযোগ বিচ্ছিন্ন করা হয়েছে"</string>
+ <string name="bluetooth_disconnecting" msgid="8913264760027764974">"সংযোগ বিচ্ছিন্ন হচ্ছে..."</string>
+ <string name="bluetooth_connecting" msgid="8555009514614320497">"সংযুক্ত হচ্ছে..."</string>
+ <string name="bluetooth_connected" msgid="6038755206916626419">"সংযুক্ত হয়েছে"</string>
+ <string name="bluetooth_pairing" msgid="1426882272690346242">"যুক্ত করা হচ্ছে..."</string>
+ <string name="bluetooth_connected_no_headset" msgid="2866994875046035609">"সংযুক্ত (কোনো ফোন নেই)"</string>
+ <string name="bluetooth_connected_no_a2dp" msgid="4576188601581440337">"সংযুক্ত (কোনো মিডিয়া নেই)"</string>
+ <string name="bluetooth_connected_no_map" msgid="6504436917057479986">"সংযুক্ত (কোনো বার্তা অ্যাক্সেস নেই)"</string>
+ <string name="bluetooth_connected_no_headset_no_a2dp" msgid="9195757766755553810">"সংযুক্ত (কোনো ফোন বা মিডিয়া নেই)"</string>
+ <string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"মিডিয়া অডিও"</string>
+ <string name="bluetooth_profile_headset" msgid="8658779596261212609">"ফোন অডিও"</string>
+ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"ফাইল স্থানান্তর"</string>
+ <string name="bluetooth_profile_hid" msgid="3680729023366986480">"ইনপুট ডিভাইস"</string>
+ <string name="bluetooth_profile_pan" msgid="3391606497945147673">"ইন্টারনেট অ্যাক্সেস"</string>
+ <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"পরিচিতি ভাগ করা"</string>
+ <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"পরিচিতি ভাগ করার কাজে ব্যবহার করুন"</string>
+ <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"ইন্টারনেট সংযোগ ভাগ করা হচ্ছে"</string>
+ <string name="bluetooth_profile_map" msgid="5465271250454324383">"বার্তা অ্যাক্সেস"</string>
+ <string name="bluetooth_profile_sap" msgid="5764222021851283125">"SIM -এর অ্যাক্সেস"</string>
+ <string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"মিডিয়া অডিওতে সংযুক্ত রয়েছে"</string>
+ <string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"ফোন অডিওতে সংযুক্ত"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"ফাইল স্থানান্তর সার্ভারের সঙ্গে সংযুক্ত"</string>
+ <string name="bluetooth_map_profile_summary_connected" msgid="8191407438851351713">"মানচিত্রে সংযুক্ত"</string>
+ <string name="bluetooth_sap_profile_summary_connected" msgid="8561765057453083838">"SAP -তে সংযুক্ত হয়েছে"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"ফাইল স্থানান্তর সার্ভারের সঙ্গে সংযুক্ত নয়"</string>
+ <string name="bluetooth_hid_profile_summary_connected" msgid="3381760054215168689">"ইনপুট ডিভাইসে সংযুক্ত"</string>
+ <string name="bluetooth_pan_user_profile_summary_connected" msgid="4602294638909590612">"ইন্টারনেট অ্যাক্সেসের জন্য ডিভাইসে সংযুক্ত"</string>
+ <string name="bluetooth_pan_nap_profile_summary_connected" msgid="1561383706411975199">"ডিভাইসের সাথে স্থানীয় ইন্টারনেট সংযোগ ভাগ করছে"</string>
+ <string name="bluetooth_pan_profile_summary_use_for" msgid="5664884523822068653">"ইন্টারনেট অ্যাক্সেসের জন্য ব্যবহার করুন"</string>
+ <string name="bluetooth_map_profile_summary_use_for" msgid="5154200119919927434">"মানচিত্রের জন্য ব্যবহার করুন"</string>
+ <string name="bluetooth_sap_profile_summary_use_for" msgid="7085362712786907993">"SIM -এর অ্যাক্সেসের জন্য ব্যবহার করুন"</string>
+ <string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"মিডিয়া অডিওয়ের জন্য ব্যবহার করুন"</string>
+ <string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"ফোন অডিওয়ের জন্য ব্যবহার করুন"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"ফাইল স্থানান্তরের জন্য ব্যবহার করুন"</string>
+ <string name="bluetooth_hid_profile_summary_use_for" msgid="232727040453645139">"ইনপুটের জন্য ব্যবহার করুন"</string>
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"যুক্ত করুন"</string>
+ <string name="bluetooth_pairing_accept_all_caps" msgid="6061699265220789149">"যুক্ত করুন"</string>
+ <string name="bluetooth_pairing_decline" msgid="4185420413578948140">"বাতিল করুন"</string>
+ <string name="bluetooth_pairing_will_share_phonebook" msgid="4982239145676394429">"যুক্ত করা থাকলে তা সংযুক্ত থাকাকালীন অবস্থায় আপনার পরিচিতিগুলি এবং কলের ইতিহাসকে অ্যাক্সেস করতে অনুমোদিত করে৷"</string>
+ <string name="bluetooth_pairing_error_message" msgid="3748157733635947087">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> এর সাথে যুক্ত করা যায়নি।"</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="8337234855188925274">"ভুল পিন বা পাস কী দেওয়ার কারণে <xliff:g id="DEVICE_NAME">%1$s</xliff:g> এর সঙ্গে যুক্ত করা যায়নি।"</string>
+ <string name="bluetooth_pairing_device_down_error_message" msgid="7870998403045801381">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> এর সঙ্গে যোগাযোগ করতে পারবেন না।"</string>
+ <string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"যুক্ত করা <xliff:g id="DEVICE_NAME">%1$s</xliff:g> প্রত্যাখ্যান করেছে।"</string>
+ <string name="accessibility_wifi_off" msgid="1166761729660614716">"Wifi বন্ধ৷"</string>
+ <string name="accessibility_no_wifi" msgid="8834610636137374508">"Wifi এর সংযোগ বিচ্ছিন্ন হয়েছে৷"</string>
+ <string name="accessibility_wifi_one_bar" msgid="4869376278894301820">"Wifi এ একটি দণ্ড৷"</string>
+ <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>
+ <string name="process_kernel_label" msgid="3916858646836739323">"Android OS"</string>
+ <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"সরানো অ্যাপ্লিকেশানগুলি"</string>
+ <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"সরানো অ্যাপ্লিকেশানগুলি এবং ব্যবহারকারীগণ"</string>
+ <string name="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_usb_bluetooth" msgid="5355828977109785001">"টেদারিং"</string>
+ <string name="tether_settings_title_all" msgid="8356136101061143841">"টেদারিং ও পোর্টেবল হটস্পট"</string>
+ <string name="managed_user_title" msgid="8101244883654409696">"কর্মস্থলের প্রোফাইল"</string>
+ <string name="user_guest" msgid="8475274842845401871">"অতিথি"</string>
+ <string name="unknown" msgid="1592123443519355854">"অজানা"</string>
+ <string name="running_process_item_user_label" msgid="3129887865552025943">"ব্যবহারকারী: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
+ <string name="launch_defaults_some" msgid="313159469856372621">"কিছু ডিফল্ট সেট করা রয়েছে"</string>
+ <string name="launch_defaults_none" msgid="4241129108140034876">"কোনো ডিফল্ট সেট করা নেই"</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-ca/arrays.xml b/packages/SettingsLib/res/values-ca/arrays.xml
new file mode 100644
index 0000000..1bcbe6e
--- /dev/null
+++ b/packages/SettingsLib/res/values-ca/arrays.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="wifi_status">
+ <item msgid="1922181315419294640"></item>
+ <item msgid="8934131797783724664">"S\'està cercant..."</item>
+ <item msgid="8513729475867537913">"S\'està connectant…"</item>
+ <item msgid="515055375277271756">"S\'està autenticant…"</item>
+ <item msgid="1943354004029184381">"S\'està obtenint l\'adreça IP…"</item>
+ <item msgid="4221763391123233270">"Connectat"</item>
+ <item msgid="624838831631122137">"Suspesa"</item>
+ <item msgid="7979680559596111948">"S\'està desconnectant..."</item>
+ <item msgid="1634960474403853625">"Desconnectada"</item>
+ <item msgid="746097431216080650">"Incorrecte"</item>
+ <item msgid="6367044185730295334">"Bloquejada"</item>
+ <item msgid="503942654197908005">"S\'està evitant temporalment una connexió feble"</item>
+ </string-array>
+ <string-array name="wifi_status_with_ssid">
+ <item msgid="7714855332363650812"></item>
+ <item msgid="8878186979715711006">"S\'està cercant..."</item>
+ <item msgid="355508996603873860">"S\'està connectant a <xliff:g id="NETWORK_NAME">%1$s</xliff:g>..."</item>
+ <item msgid="554971459996405634">"S\'està autenticant amb <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="7928343808033020343">"S\'està obtenint l\'adreça IP de <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="8937994881315223448">"Connectat a <xliff:g id="NETWORK_NAME">%1$s</xliff:g>"</item>
+ <item msgid="1330262655415760617">"Suspesa"</item>
+ <item msgid="7698638434317271902">"S\'està desconnectant de <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="197508606402264311">"Desconnectada"</item>
+ <item msgid="8578370891960825148">"Incorrecte"</item>
+ <item msgid="5660739516542454527">"Bloquejada"</item>
+ <item msgid="1805837518286731242">"S\'està evitant temporalment una connexió feble"</item>
+ </string-array>
+</resources>
diff --git a/packages/SettingsLib/res/values-ca/strings.xml b/packages/SettingsLib/res/values-ca/strings.xml
new file mode 100644
index 0000000..81a7cb9
--- /dev/null
+++ b/packages/SettingsLib/res/values-ca/strings.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="wifi_fail_to_scan" msgid="1265540342578081461">"No es poden cercar xarxes"</string>
+ <string name="wifi_security_none" msgid="7985461072596594400">"Cap"</string>
+ <string name="wifi_remembered" msgid="4955746899347821096">"Desat"</string>
+ <string name="wifi_disabled_generic" msgid="4259794910584943386">"Desactivat"</string>
+ <string name="wifi_disabled_network_failure" msgid="2364951338436007124">"Error de configuració d\'IP"</string>
+ <string name="wifi_disabled_wifi_failure" msgid="3081668066612876581">"Error de connexió Wi-Fi"</string>
+ <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"Problema d\'autenticació"</string>
+ <string name="wifi_not_in_range" msgid="1136191511238508967">"Fora de l\'abast"</string>
+ <string name="wifi_no_internet" msgid="9151470775868728896">"No s\'ha detectat accés a Internet, no s\'hi tornarà a connectar automàticament."</string>
+ <string name="saved_network" msgid="4352716707126620811">"Desat per <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="connected_via_wfa" msgid="3805736726317410714">"Connectat mitjançant l\'assistent de Wi‑Fi"</string>
+ <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>
+ <string name="bluetooth_disconnected" msgid="6557104142667339895">"Desconnectat"</string>
+ <string name="bluetooth_disconnecting" msgid="8913264760027764974">"S\'està desconnectant..."</string>
+ <string name="bluetooth_connecting" msgid="8555009514614320497">"S\'està connectant…"</string>
+ <string name="bluetooth_connected" msgid="6038755206916626419">"Connectat"</string>
+ <string name="bluetooth_pairing" msgid="1426882272690346242">"S\'està vinculant..."</string>
+ <string name="bluetooth_connected_no_headset" msgid="2866994875046035609">"Connectats (sense telèfon)"</string>
+ <string name="bluetooth_connected_no_a2dp" msgid="4576188601581440337">"Connectat (sense fitxers multimèdia)"</string>
+ <string name="bluetooth_connected_no_map" msgid="6504436917057479986">"Connectat (no hi ha accés als missatges)"</string>
+ <string name="bluetooth_connected_no_headset_no_a2dp" msgid="9195757766755553810">"Connectat (sense telèfon o disp. mult.)"</string>
+ <string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Àudio multimèdia"</string>
+ <string name="bluetooth_profile_headset" msgid="8658779596261212609">"Àudio del telèfon"</string>
+ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"Transferència del fitxer"</string>
+ <string name="bluetooth_profile_hid" msgid="3680729023366986480">"Dispositiu d\'entrada"</string>
+ <string name="bluetooth_profile_pan" msgid="3391606497945147673">"Accés a Internet"</string>
+ <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"Compartir contactes"</string>
+ <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"S\'utilitza per compartir contactes."</string>
+ <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"Connexió compartida a Internet"</string>
+ <string name="bluetooth_profile_map" msgid="5465271250454324383">"Accés al missatge"</string>
+ <string name="bluetooth_profile_sap" msgid="5764222021851283125">"Accés a la SIM"</string>
+ <string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"Connectat a l\'àudio del mitjà"</string>
+ <string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"Connectat a àudio del telèfon"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"Connectat al servidor de transferència de fitxers"</string>
+ <string name="bluetooth_map_profile_summary_connected" msgid="8191407438851351713">"Connectat a un mapa"</string>
+ <string name="bluetooth_sap_profile_summary_connected" msgid="8561765057453083838">"Connectat a SAP"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"No està connectat al servidor de transferència de fitxers"</string>
+ <string name="bluetooth_hid_profile_summary_connected" msgid="3381760054215168689">"Connectat a dispositiu d\'entrada"</string>
+ <string name="bluetooth_pan_user_profile_summary_connected" msgid="4602294638909590612">"Connectat al dispositiu per a accés a Internet"</string>
+ <string name="bluetooth_pan_nap_profile_summary_connected" msgid="1561383706411975199">"S\'està compartint la connexió a Internet amb el dispositiu"</string>
+ <string name="bluetooth_pan_profile_summary_use_for" msgid="5664884523822068653">"Utilitza\'l per a l\'accés a Internet"</string>
+ <string name="bluetooth_map_profile_summary_use_for" msgid="5154200119919927434">"Utilitza per al mapa"</string>
+ <string name="bluetooth_sap_profile_summary_use_for" msgid="7085362712786907993">"Utilitza per a l\'accés a la SIM"</string>
+ <string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"Utilitza per a l\'àudio del mitjà"</string>
+ <string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"Utilitza-ho per a l\'àudio del telèfon"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"Utilitza per a la transferència de fitxers"</string>
+ <string name="bluetooth_hid_profile_summary_use_for" msgid="232727040453645139">"Utilitza per a entrada"</string>
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"Vincula"</string>
+ <string name="bluetooth_pairing_accept_all_caps" msgid="6061699265220789149">"VINCULA"</string>
+ <string name="bluetooth_pairing_decline" msgid="4185420413578948140">"Cancel·la"</string>
+ <string name="bluetooth_pairing_will_share_phonebook" msgid="4982239145676394429">"La vinculació permet accedir als contactes i a l\'historial de trucades quan el dispositiu està connectat."</string>
+ <string name="bluetooth_pairing_error_message" msgid="3748157733635947087">"No s\'ha pogut vincular amb <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="8337234855188925274">"No s\'ha pogut vincular amb <xliff:g id="DEVICE_NAME">%1$s</xliff:g>, perquè el PIN o la contrasenya són incorrectes."</string>
+ <string name="bluetooth_pairing_device_down_error_message" msgid="7870998403045801381">"No es pot comunicar amb <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"Vinculació rebutjada per <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="accessibility_wifi_off" msgid="1166761729660614716">"Wi-Fi desactivada."</string>
+ <string name="accessibility_no_wifi" msgid="8834610636137374508">"Wi-Fi desconnectada."</string>
+ <string name="accessibility_wifi_one_bar" msgid="4869376278894301820">"Senyal Wi-Fi: una barra."</string>
+ <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>
+ <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>
+ <string name="tether_settings_title_usb" msgid="6688416425801386511">"Ancoratge d\'USB"</string>
+ <string name="tether_settings_title_wifi" msgid="3277144155960302049">"Zona Wi-Fi portàtil"</string>
+ <string name="tether_settings_title_bluetooth" msgid="355855408317564420">"Ancoratge de Bluetooth"</string>
+ <string name="tether_settings_title_usb_bluetooth" msgid="5355828977109785001">"Ancoratge a xarxa"</string>
+ <string name="tether_settings_title_all" msgid="8356136101061143841">"Ancoratge a la xarxa i zona Wi-Fi"</string>
+ <string name="managed_user_title" msgid="8101244883654409696">"Perfil professional"</string>
+ <string name="user_guest" msgid="8475274842845401871">"Convidat"</string>
+ <string name="unknown" msgid="1592123443519355854">"Desconegut"</string>
+ <string name="running_process_item_user_label" msgid="3129887865552025943">"Usuari: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
+ <string name="launch_defaults_some" msgid="313159469856372621">"S\'han definit alguns valors predeterminats"</string>
+ <string name="launch_defaults_none" msgid="4241129108140034876">"No s\'ha definit cap valor predeterminat"</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-cs/arrays.xml b/packages/SettingsLib/res/values-cs/arrays.xml
new file mode 100644
index 0000000..d990f46
--- /dev/null
+++ b/packages/SettingsLib/res/values-cs/arrays.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="wifi_status">
+ <item msgid="1922181315419294640"></item>
+ <item msgid="8934131797783724664">"Vyhledávání..."</item>
+ <item msgid="8513729475867537913">"Připojování..."</item>
+ <item msgid="515055375277271756">"Ověřování..."</item>
+ <item msgid="1943354004029184381">"Načítání IP adresy…"</item>
+ <item msgid="4221763391123233270">"Připojeno"</item>
+ <item msgid="624838831631122137">"Pozastaveno"</item>
+ <item msgid="7979680559596111948">"Odpojování..."</item>
+ <item msgid="1634960474403853625">"Odpojeno"</item>
+ <item msgid="746097431216080650">"Neúspěšné"</item>
+ <item msgid="6367044185730295334">"Blokováno"</item>
+ <item msgid="503942654197908005">"Dočasné předcházení slabému připojení"</item>
+ </string-array>
+ <string-array name="wifi_status_with_ssid">
+ <item msgid="7714855332363650812"></item>
+ <item msgid="8878186979715711006">"Vyhledávání..."</item>
+ <item msgid="355508996603873860">"Připojování k síti <xliff:g id="NETWORK_NAME">%1$s</xliff:g>..."</item>
+ <item msgid="554971459996405634">"Ověřování v síti <xliff:g id="NETWORK_NAME">%1$s</xliff:g>..."</item>
+ <item msgid="7928343808033020343">"Získávání IP adresy ze sítě <xliff:g id="NETWORK_NAME">%1$s</xliff:g>..."</item>
+ <item msgid="8937994881315223448">"Připojeno k síti <xliff:g id="NETWORK_NAME">%1$s</xliff:g>"</item>
+ <item msgid="1330262655415760617">"Pozastaveno"</item>
+ <item msgid="7698638434317271902">"Odpojování od sítě <xliff:g id="NETWORK_NAME">%1$s</xliff:g>..."</item>
+ <item msgid="197508606402264311">"Odpojeno"</item>
+ <item msgid="8578370891960825148">"Neúspěšné"</item>
+ <item msgid="5660739516542454527">"Blokováno"</item>
+ <item msgid="1805837518286731242">"Dočasné předcházení slabému připojení"</item>
+ </string-array>
+</resources>
diff --git a/packages/SettingsLib/res/values-cs/strings.xml b/packages/SettingsLib/res/values-cs/strings.xml
new file mode 100644
index 0000000..663ed08
--- /dev/null
+++ b/packages/SettingsLib/res/values-cs/strings.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="wifi_fail_to_scan" msgid="1265540342578081461">"Nelze hledat sítě"</string>
+ <string name="wifi_security_none" msgid="7985461072596594400">"Žádné"</string>
+ <string name="wifi_remembered" msgid="4955746899347821096">"Uloženo"</string>
+ <string name="wifi_disabled_generic" msgid="4259794910584943386">"Vypnuto"</string>
+ <string name="wifi_disabled_network_failure" msgid="2364951338436007124">"Selhání konfigurace protokolu IP"</string>
+ <string name="wifi_disabled_wifi_failure" msgid="3081668066612876581">"Selhání připojení Wi-Fi"</string>
+ <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"Problém s ověřením"</string>
+ <string name="wifi_not_in_range" msgid="1136191511238508967">"Mimo dosah"</string>
+ <string name="wifi_no_internet" msgid="9151470775868728896">"Nebyl zjištěn žádný přístup k internetu, připojení nebude automaticky obnoveno."</string>
+ <string name="saved_network" msgid="4352716707126620811">"Uloženo uživatelem <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="connected_via_wfa" msgid="3805736726317410714">"Připojeno pomocí asistenta připojení Wi-Fi"</string>
+ <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>
+ <string name="bluetooth_disconnected" msgid="6557104142667339895">"Odpojeno"</string>
+ <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Odpojování..."</string>
+ <string name="bluetooth_connecting" msgid="8555009514614320497">"Připojování..."</string>
+ <string name="bluetooth_connected" msgid="6038755206916626419">"Připojeno"</string>
+ <string name="bluetooth_pairing" msgid="1426882272690346242">"Párování..."</string>
+ <string name="bluetooth_connected_no_headset" msgid="2866994875046035609">"Připojeno (žádný telefon)"</string>
+ <string name="bluetooth_connected_no_a2dp" msgid="4576188601581440337">"Připojeno (žádná média)"</string>
+ <string name="bluetooth_connected_no_map" msgid="6504436917057479986">"Připojeno (bez přístupu ke zprávám)"</string>
+ <string name="bluetooth_connected_no_headset_no_a2dp" msgid="9195757766755553810">"Připojeno (žádný telefon nebo média)"</string>
+ <string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Zvuk médií"</string>
+ <string name="bluetooth_profile_headset" msgid="8658779596261212609">"Zvuk telefonu"</string>
+ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"Přenos souborů"</string>
+ <string name="bluetooth_profile_hid" msgid="3680729023366986480">"Vstupní zařízení"</string>
+ <string name="bluetooth_profile_pan" msgid="3391606497945147673">"Přístup k internetu"</string>
+ <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"Sdílení kontaktů"</string>
+ <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"Použít ke sdílení kontaktů"</string>
+ <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"Sdílení internetového připojení"</string>
+ <string name="bluetooth_profile_map" msgid="5465271250454324383">"Přístup ke zprávám"</string>
+ <string name="bluetooth_profile_sap" msgid="5764222021851283125">"Přístup k SIM kartě"</string>
+ <string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"Připojeno ke zvukovému médiu"</string>
+ <string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"Připojeno k náhlavní soupravě"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"Připojeno k serveru pro přenos dat"</string>
+ <string name="bluetooth_map_profile_summary_connected" msgid="8191407438851351713">"Připojeno k mapě"</string>
+ <string name="bluetooth_sap_profile_summary_connected" msgid="8561765057453083838">"Připojeno k SAP"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"Nepřipojeno k serveru pro přenos souborů"</string>
+ <string name="bluetooth_hid_profile_summary_connected" msgid="3381760054215168689">"Připojeno ke vstupnímu zařízení"</string>
+ <string name="bluetooth_pan_user_profile_summary_connected" msgid="4602294638909590612">"Připojeno k zařízení za účelem přístupu k internetu"</string>
+ <string name="bluetooth_pan_nap_profile_summary_connected" msgid="1561383706411975199">"Místní internetové připojení je sdíleno se zařízením"</string>
+ <string name="bluetooth_pan_profile_summary_use_for" msgid="5664884523822068653">"Použít pro přístup k internetu"</string>
+ <string name="bluetooth_map_profile_summary_use_for" msgid="5154200119919927434">"Použít pro mapu"</string>
+ <string name="bluetooth_sap_profile_summary_use_for" msgid="7085362712786907993">"Používat pro přístup k SIM kartě"</string>
+ <string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"Umožňuje připojení zvukového média"</string>
+ <string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"Umožňuje připojení náhlavní soupravy"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"Použít pro přenos souborů"</string>
+ <string name="bluetooth_hid_profile_summary_use_for" msgid="232727040453645139">"Použít pro vstup"</string>
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"Párovat"</string>
+ <string name="bluetooth_pairing_accept_all_caps" msgid="6061699265220789149">"PÁROVAT"</string>
+ <string name="bluetooth_pairing_decline" msgid="4185420413578948140">"Zrušit"</string>
+ <string name="bluetooth_pairing_will_share_phonebook" msgid="4982239145676394429">"Párováním připojenému zařízení udělíte přístup ke svým kontaktům a historii volání."</string>
+ <string name="bluetooth_pairing_error_message" msgid="3748157733635947087">"Nelze párovat se zařízením <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="8337234855188925274">"Nelze párovat se zařízením <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. Kód PIN nebo přístupový klíč je nesprávný."</string>
+ <string name="bluetooth_pairing_device_down_error_message" msgid="7870998403045801381">"Se zařízením <xliff:g id="DEVICE_NAME">%1$s</xliff:g> nelze navázat komunikaci."</string>
+ <string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"Párování odmítnuto zařízením <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="accessibility_wifi_off" msgid="1166761729660614716">"Síť Wi-Fi je vypnuta."</string>
+ <string name="accessibility_no_wifi" msgid="8834610636137374508">"Síť Wi-Fi je odpojena."</string>
+ <string name="accessibility_wifi_one_bar" msgid="4869376278894301820">"Wi-Fi – jedna čárka."</string>
+ <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>
+ <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>
+ <string name="tether_settings_title_usb" msgid="6688416425801386511">"Připojení přes USB"</string>
+ <string name="tether_settings_title_wifi" msgid="3277144155960302049">"Přenosný hotspot"</string>
+ <string name="tether_settings_title_bluetooth" msgid="355855408317564420">"Připojení přes Bluetooth"</string>
+ <string name="tether_settings_title_usb_bluetooth" msgid="5355828977109785001">"Sdílené připojení"</string>
+ <string name="tether_settings_title_all" msgid="8356136101061143841">"Sdílené připojení a přenosný hotspot"</string>
+ <string name="managed_user_title" msgid="8101244883654409696">"Pracovní profil"</string>
+ <string name="user_guest" msgid="8475274842845401871">"Host"</string>
+ <string name="unknown" msgid="1592123443519355854">"Neznámé"</string>
+ <string name="running_process_item_user_label" msgid="3129887865552025943">"Uživatel: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
+ <string name="launch_defaults_some" msgid="313159469856372621">"Je nastaveno několik výchozích hodnot"</string>
+ <string name="launch_defaults_none" msgid="4241129108140034876">"Nejsou nastaveny žádné výchozí hodnoty"</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-da/arrays.xml b/packages/SettingsLib/res/values-da/arrays.xml
new file mode 100644
index 0000000..a8c2a45
--- /dev/null
+++ b/packages/SettingsLib/res/values-da/arrays.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="wifi_status">
+ <item msgid="1922181315419294640"></item>
+ <item msgid="8934131797783724664">"Scanner ..."</item>
+ <item msgid="8513729475867537913">"Opretter forbindelse..."</item>
+ <item msgid="515055375277271756">"Godkender..."</item>
+ <item msgid="1943354004029184381">"Henter IP-adresse…"</item>
+ <item msgid="4221763391123233270">"Tilsluttet"</item>
+ <item msgid="624838831631122137">"Sat på pause"</item>
+ <item msgid="7979680559596111948">"Afbryder ..."</item>
+ <item msgid="1634960474403853625">"Afbrudt"</item>
+ <item msgid="746097431216080650">"Mislykkedes"</item>
+ <item msgid="6367044185730295334">"Blokeret"</item>
+ <item msgid="503942654197908005">"Undgår midlertidigt dårlig forbindelse"</item>
+ </string-array>
+ <string-array name="wifi_status_with_ssid">
+ <item msgid="7714855332363650812"></item>
+ <item msgid="8878186979715711006">"Scanner ..."</item>
+ <item msgid="355508996603873860">"Opretter forbindelse til <xliff:g id="NETWORK_NAME">%1$s</xliff:g> ..."</item>
+ <item msgid="554971459996405634">"Godkender med <xliff:g id="NETWORK_NAME">%1$s</xliff:g> ..."</item>
+ <item msgid="7928343808033020343">"Henter IP-adresse fra <xliff:g id="NETWORK_NAME">%1$s</xliff:g> ..."</item>
+ <item msgid="8937994881315223448">"Forbundet til <xliff:g id="NETWORK_NAME">%1$s</xliff:g>"</item>
+ <item msgid="1330262655415760617">"Sat på pause"</item>
+ <item msgid="7698638434317271902">"Afbryder fra <xliff:g id="NETWORK_NAME">%1$s</xliff:g> ..."</item>
+ <item msgid="197508606402264311">"Afbrudt"</item>
+ <item msgid="8578370891960825148">"Mislykkedes"</item>
+ <item msgid="5660739516542454527">"Blokeret"</item>
+ <item msgid="1805837518286731242">"Undgår midlertidigt dårlig forbindelse"</item>
+ </string-array>
+</resources>
diff --git a/packages/SettingsLib/res/values-da/strings.xml b/packages/SettingsLib/res/values-da/strings.xml
new file mode 100644
index 0000000..333ed05
--- /dev/null
+++ b/packages/SettingsLib/res/values-da/strings.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="wifi_fail_to_scan" msgid="1265540342578081461">"Der kan ikke søges efter netværk"</string>
+ <string name="wifi_security_none" msgid="7985461072596594400">"Ingen"</string>
+ <string name="wifi_remembered" msgid="4955746899347821096">"Gemt"</string>
+ <string name="wifi_disabled_generic" msgid="4259794910584943386">"Deaktiveret"</string>
+ <string name="wifi_disabled_network_failure" msgid="2364951338436007124">"IP-konfigurationsfejl"</string>
+ <string name="wifi_disabled_wifi_failure" msgid="3081668066612876581">"Wi-Fi-forbindelsesfejl"</string>
+ <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"Problem med godkendelse"</string>
+ <string name="wifi_not_in_range" msgid="1136191511238508967">"Ikke inden for rækkevidde"</string>
+ <string name="wifi_no_internet" msgid="9151470775868728896">"Der blev ikke fundet nogen internetadgang. Forbindelsen bliver ikke automatisk genoprettet."</string>
+ <string name="saved_network" msgid="4352716707126620811">"Gemt af <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="connected_via_wfa" msgid="3805736726317410714">"Forbindelse via Wi-Fi-assistent"</string>
+ <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>
+ <string name="bluetooth_disconnected" msgid="6557104142667339895">"Afbrudt"</string>
+ <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Afbryder ..."</string>
+ <string name="bluetooth_connecting" msgid="8555009514614320497">"Opretter forbindelse..."</string>
+ <string name="bluetooth_connected" msgid="6038755206916626419">"Tilsluttet"</string>
+ <string name="bluetooth_pairing" msgid="1426882272690346242">"Parrer..."</string>
+ <string name="bluetooth_connected_no_headset" msgid="2866994875046035609">"Forbundet (ingen telefon)"</string>
+ <string name="bluetooth_connected_no_a2dp" msgid="4576188601581440337">"Tilsluttet (intet medie)"</string>
+ <string name="bluetooth_connected_no_map" msgid="6504436917057479986">"Forbundet (ingen adgang til meddelelse)"</string>
+ <string name="bluetooth_connected_no_headset_no_a2dp" msgid="9195757766755553810">"Forbundet (ingen telefon eller medier)"</string>
+ <string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Medielyd"</string>
+ <string name="bluetooth_profile_headset" msgid="8658779596261212609">"Telefonlyd"</string>
+ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"Filoverførsel"</string>
+ <string name="bluetooth_profile_hid" msgid="3680729023366986480">"Inputenhed"</string>
+ <string name="bluetooth_profile_pan" msgid="3391606497945147673">"Internetadgang"</string>
+ <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"Deling af kontaktpersoner"</string>
+ <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"Brug til deling af kontaktpersoner"</string>
+ <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"Deling af internetforbindelse"</string>
+ <string name="bluetooth_profile_map" msgid="5465271250454324383">"Adgang til meddelelse"</string>
+ <string name="bluetooth_profile_sap" msgid="5764222021851283125">"SIM-adgang"</string>
+ <string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"Forbundet til medielyd"</string>
+ <string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"Forbundet til telefonlyd"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"Forbundet til filoverførselsserver"</string>
+ <string name="bluetooth_map_profile_summary_connected" msgid="8191407438851351713">"Forbundet til kort"</string>
+ <string name="bluetooth_sap_profile_summary_connected" msgid="8561765057453083838">"Sluttet til SAP"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"Ikke forbundet til filoverførselsserver"</string>
+ <string name="bluetooth_hid_profile_summary_connected" msgid="3381760054215168689">"Forbundet til inputenhed"</string>
+ <string name="bluetooth_pan_user_profile_summary_connected" msgid="4602294638909590612">"Tilsluttet enhed/internet"</string>
+ <string name="bluetooth_pan_nap_profile_summary_connected" msgid="1561383706411975199">"Deler lokal internetforbindelse med enhed"</string>
+ <string name="bluetooth_pan_profile_summary_use_for" msgid="5664884523822068653">"Brug til internetadgang"</string>
+ <string name="bluetooth_map_profile_summary_use_for" msgid="5154200119919927434">"Brug til kort"</string>
+ <string name="bluetooth_sap_profile_summary_use_for" msgid="7085362712786907993">"Brug til SIM-adgang"</string>
+ <string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"Brug til medielyd"</string>
+ <string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"Brug til telefonlyd"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"Brug til filoverførsel"</string>
+ <string name="bluetooth_hid_profile_summary_use_for" msgid="232727040453645139">"Brug til input"</string>
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"Par"</string>
+ <string name="bluetooth_pairing_accept_all_caps" msgid="6061699265220789149">"ACCEPTÉR PARRING"</string>
+ <string name="bluetooth_pairing_decline" msgid="4185420413578948140">"Annuller"</string>
+ <string name="bluetooth_pairing_will_share_phonebook" msgid="4982239145676394429">"Parring giver adgang til dine kontaktpersoner og din opkaldshistorik, når enhederne er forbundet."</string>
+ <string name="bluetooth_pairing_error_message" msgid="3748157733635947087">"Der kunne ikke parres med <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="8337234855188925274">"Der kunne ikke parres med <xliff:g id="DEVICE_NAME">%1$s</xliff:g> på grund af en forkert pinkode eller adgangsnøgle."</string>
+ <string name="bluetooth_pairing_device_down_error_message" msgid="7870998403045801381">"Der kan ikke kommunikeres med <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"Parring afvist af <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="accessibility_wifi_off" msgid="1166761729660614716">"Wi-Fi er slået fra."</string>
+ <string name="accessibility_no_wifi" msgid="8834610636137374508">"Wi-Fi er afbrudt."</string>
+ <string name="accessibility_wifi_one_bar" msgid="4869376278894301820">"Wi-Fi har én bjælke."</string>
+ <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>
+ <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>
+ <string name="tether_settings_title_usb" msgid="6688416425801386511">"Netdeling via USB"</string>
+ <string name="tether_settings_title_wifi" msgid="3277144155960302049">"Hotspot"</string>
+ <string name="tether_settings_title_bluetooth" msgid="355855408317564420">"Netdeling via Bluetooth"</string>
+ <string name="tether_settings_title_usb_bluetooth" msgid="5355828977109785001">"Netdeling"</string>
+ <string name="tether_settings_title_all" msgid="8356136101061143841">"Netdeling og hotspot"</string>
+ <string name="managed_user_title" msgid="8101244883654409696">"Arbejdsprofil"</string>
+ <string name="user_guest" msgid="8475274842845401871">"Gæst"</string>
+ <string name="unknown" msgid="1592123443519355854">"Ukendt"</string>
+ <string name="running_process_item_user_label" msgid="3129887865552025943">"Bruger: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
+ <string name="launch_defaults_some" msgid="313159469856372621">"Der er angivet nogle standarder"</string>
+ <string name="launch_defaults_none" msgid="4241129108140034876">"Der er ikke angivet nogen standarder"</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-de/arrays.xml b/packages/SettingsLib/res/values-de/arrays.xml
new file mode 100644
index 0000000..6772c7d
--- /dev/null
+++ b/packages/SettingsLib/res/values-de/arrays.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="wifi_status">
+ <item msgid="1922181315419294640"></item>
+ <item msgid="8934131797783724664">"Scan läuft…"</item>
+ <item msgid="8513729475867537913">"Verbindung wird hergestellt..."</item>
+ <item msgid="515055375277271756">"Authentifizierung..."</item>
+ <item msgid="1943354004029184381">"IP-Adresse wird abgerufen..."</item>
+ <item msgid="4221763391123233270">"Verbunden"</item>
+ <item msgid="624838831631122137">"Angehalten"</item>
+ <item msgid="7979680559596111948">"Verbindung wird getrennt..."</item>
+ <item msgid="1634960474403853625">"Nicht verbunden"</item>
+ <item msgid="746097431216080650">"Nicht erfolgreich"</item>
+ <item msgid="6367044185730295334">"Blockiert"</item>
+ <item msgid="503942654197908005">"Schlechte Internetverbindung wird vorübergehend vermieden."</item>
+ </string-array>
+ <string-array name="wifi_status_with_ssid">
+ <item msgid="7714855332363650812"></item>
+ <item msgid="8878186979715711006">"Scan läuft…"</item>
+ <item msgid="355508996603873860">"Verbindung mit <xliff:g id="NETWORK_NAME">%1$s</xliff:g> wird hergestellt..."</item>
+ <item msgid="554971459996405634">"Authentifizierung mit <xliff:g id="NETWORK_NAME">%1$s</xliff:g>..."</item>
+ <item msgid="7928343808033020343">"IP-Adresse wird von <xliff:g id="NETWORK_NAME">%1$s</xliff:g> abgerufen..."</item>
+ <item msgid="8937994881315223448">"Verbunden mit <xliff:g id="NETWORK_NAME">%1$s</xliff:g>"</item>
+ <item msgid="1330262655415760617">"Angehalten"</item>
+ <item msgid="7698638434317271902">"Verbindung mit <xliff:g id="NETWORK_NAME">%1$s</xliff:g> wird getrennt..."</item>
+ <item msgid="197508606402264311">"Nicht verbunden"</item>
+ <item msgid="8578370891960825148">"Nicht erfolgreich"</item>
+ <item msgid="5660739516542454527">"Blockiert"</item>
+ <item msgid="1805837518286731242">"Schlechte Internetverbindung wird vorübergehend vermieden."</item>
+ </string-array>
+</resources>
diff --git a/packages/SettingsLib/res/values-de/strings.xml b/packages/SettingsLib/res/values-de/strings.xml
new file mode 100644
index 0000000..cc0990d
--- /dev/null
+++ b/packages/SettingsLib/res/values-de/strings.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="wifi_fail_to_scan" msgid="1265540342578081461">"Netzwerkscan nicht möglich"</string>
+ <string name="wifi_security_none" msgid="7985461072596594400">"Keine"</string>
+ <string name="wifi_remembered" msgid="4955746899347821096">"Gespeichert"</string>
+ <string name="wifi_disabled_generic" msgid="4259794910584943386">"Deaktiviert"</string>
+ <string name="wifi_disabled_network_failure" msgid="2364951338436007124">"IP-Konfigurationsfehler"</string>
+ <string name="wifi_disabled_wifi_failure" msgid="3081668066612876581">"WLAN-Verbindungsfehler"</string>
+ <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"Authentifizierungsproblem"</string>
+ <string name="wifi_not_in_range" msgid="1136191511238508967">"Nicht in Reichweite"</string>
+ <string name="wifi_no_internet" msgid="9151470775868728896">"Keine Internetverbindung erkannt, es kann nicht automatisch eine Verbindung hergestellt werden."</string>
+ <string name="saved_network" msgid="4352716707126620811">"Gespeichert von <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="connected_via_wfa" msgid="3805736726317410714">"Über WLAN-Assistenten verbunden"</string>
+ <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>
+ <string name="bluetooth_disconnected" msgid="6557104142667339895">"Nicht verbunden"</string>
+ <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Verbindung wird getrennt..."</string>
+ <string name="bluetooth_connecting" msgid="8555009514614320497">"Verbindung wird hergestellt..."</string>
+ <string name="bluetooth_connected" msgid="6038755206916626419">"Verbunden"</string>
+ <string name="bluetooth_pairing" msgid="1426882272690346242">"Pairing läuft…"</string>
+ <string name="bluetooth_connected_no_headset" msgid="2866994875046035609">"Verbunden (kein Telefon)"</string>
+ <string name="bluetooth_connected_no_a2dp" msgid="4576188601581440337">"Verbunden (außer Audiomedien)"</string>
+ <string name="bluetooth_connected_no_map" msgid="6504436917057479986">"Verbunden (ohne Nachrichtenzugriff)"</string>
+ <string name="bluetooth_connected_no_headset_no_a2dp" msgid="9195757766755553810">"Verbunden (außer Telefon- und Audiomedien)"</string>
+ <string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Media-Audio"</string>
+ <string name="bluetooth_profile_headset" msgid="8658779596261212609">"Telefon-Audio"</string>
+ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"Dateiübertragung"</string>
+ <string name="bluetooth_profile_hid" msgid="3680729023366986480">"Eingabegerät"</string>
+ <string name="bluetooth_profile_pan" msgid="3391606497945147673">"Internetzugriff"</string>
+ <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"Kontaktfreigabe"</string>
+ <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"Für Kontaktfreigabe nutzen"</string>
+ <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"Freigabe der Internetverbindung"</string>
+ <string name="bluetooth_profile_map" msgid="5465271250454324383">"Nachrichtenzugriff"</string>
+ <string name="bluetooth_profile_sap" msgid="5764222021851283125">"Zugriff auf SIM"</string>
+ <string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"Verbunden mit Audiosystem von Medien"</string>
+ <string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"Verbunden mit Audiosystem des Telefons"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"Mit Dateiübertragungsserver verbunden"</string>
+ <string name="bluetooth_map_profile_summary_connected" msgid="8191407438851351713">"Mit Karte verbunden"</string>
+ <string name="bluetooth_sap_profile_summary_connected" msgid="8561765057453083838">"Mit SAP verbunden"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"Nicht mit Dateiübertragungsserver verbunden"</string>
+ <string name="bluetooth_hid_profile_summary_connected" msgid="3381760054215168689">"Mit einem Eingabegerät verbunden"</string>
+ <string name="bluetooth_pan_user_profile_summary_connected" msgid="4602294638909590612">"Für Internetzugriff an Gerät angeschlossen"</string>
+ <string name="bluetooth_pan_nap_profile_summary_connected" msgid="1561383706411975199">"Lokale Internetverbindung für Gerät freigeben"</string>
+ <string name="bluetooth_pan_profile_summary_use_for" msgid="5664884523822068653">"Für Internetzugriff verwenden"</string>
+ <string name="bluetooth_map_profile_summary_use_for" msgid="5154200119919927434">"Für Karte verwenden"</string>
+ <string name="bluetooth_sap_profile_summary_use_for" msgid="7085362712786907993">"Für SIM-Zugriff verwenden"</string>
+ <string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"Für Audiosystem von Medien verwenden"</string>
+ <string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"Für Audiosystem des Telefons verwenden"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"Für Dateiübertragung verwenden"</string>
+ <string name="bluetooth_hid_profile_summary_use_for" msgid="232727040453645139">"Für Eingabe verwenden"</string>
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"Pairing durchführen"</string>
+ <string name="bluetooth_pairing_accept_all_caps" msgid="6061699265220789149">"Pairing durchführen"</string>
+ <string name="bluetooth_pairing_decline" msgid="4185420413578948140">"Abbrechen"</string>
+ <string name="bluetooth_pairing_will_share_phonebook" msgid="4982239145676394429">"Über das Pairing kann auf Ihre Kontakte und auf Ihren Anrufverlauf zugegriffen werden, wenn eine Verbindung besteht."</string>
+ <string name="bluetooth_pairing_error_message" msgid="3748157733635947087">"Pairing mit <xliff:g id="DEVICE_NAME">%1$s</xliff:g> war nicht möglich."</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="8337234855188925274">"Pairing mit <xliff:g id="DEVICE_NAME">%1$s</xliff:g> war nicht möglich, weil die eingegebene PIN oder der Zugangscode falsch ist."</string>
+ <string name="bluetooth_pairing_device_down_error_message" msgid="7870998403045801381">"Kommunikation mit <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ist nicht möglich."</string>
+ <string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"Verbindung wurde von <xliff:g id="DEVICE_NAME">%1$s</xliff:g> abgelehnt."</string>
+ <string name="accessibility_wifi_off" msgid="1166761729660614716">"WLAN: aus"</string>
+ <string name="accessibility_no_wifi" msgid="8834610636137374508">"WLAN getrennt"</string>
+ <string name="accessibility_wifi_one_bar" msgid="4869376278894301820">"WLAN: ein Balken"</string>
+ <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>
+ <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>
+ <string name="tether_settings_title_usb" msgid="6688416425801386511">"USB-Tethering"</string>
+ <string name="tether_settings_title_wifi" msgid="3277144155960302049">"Mobiler Hotspot"</string>
+ <string name="tether_settings_title_bluetooth" msgid="355855408317564420">"Bluetooth-Tethering"</string>
+ <string name="tether_settings_title_usb_bluetooth" msgid="5355828977109785001">"Tethering"</string>
+ <string name="tether_settings_title_all" msgid="8356136101061143841">"Tethering & mobiler Hotspot"</string>
+ <string name="managed_user_title" msgid="8101244883654409696">"Arbeitsprofil"</string>
+ <string name="user_guest" msgid="8475274842845401871">"Gast"</string>
+ <string name="unknown" msgid="1592123443519355854">"Unbekannt"</string>
+ <string name="running_process_item_user_label" msgid="3129887865552025943">"Nutzer: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
+ <string name="launch_defaults_some" msgid="313159469856372621">"Einige Standardeinstellungen festgelegt"</string>
+ <string name="launch_defaults_none" msgid="4241129108140034876">"Keine Standardeinstellungen festgelegt"</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-el/arrays.xml b/packages/SettingsLib/res/values-el/arrays.xml
new file mode 100644
index 0000000..f616547
--- /dev/null
+++ b/packages/SettingsLib/res/values-el/arrays.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="wifi_status">
+ <item msgid="1922181315419294640"></item>
+ <item msgid="8934131797783724664">"Σάρωση..."</item>
+ <item msgid="8513729475867537913">"Σύνδεση..."</item>
+ <item msgid="515055375277271756">"Έλεγχος ταυτότητας..."</item>
+ <item msgid="1943354004029184381">"Λήψη διεύθυνσης IP…"</item>
+ <item msgid="4221763391123233270">"Συνδεδεμένο"</item>
+ <item msgid="624838831631122137">"Σε αναστολή"</item>
+ <item msgid="7979680559596111948">"Αποσύνδεση..."</item>
+ <item msgid="1634960474403853625">"Αποσυνδέθηκε"</item>
+ <item msgid="746097431216080650">"Ανεπιτυχής"</item>
+ <item msgid="6367044185730295334">"Αποκλεισμένο"</item>
+ <item msgid="503942654197908005">"Προσωρινή αποφυγή αδύναμης σύνδεσης"</item>
+ </string-array>
+ <string-array name="wifi_status_with_ssid">
+ <item msgid="7714855332363650812"></item>
+ <item msgid="8878186979715711006">"Σάρωση..."</item>
+ <item msgid="355508996603873860">"Σύνδεση σε <xliff:g id="NETWORK_NAME">%1$s</xliff:g>..."</item>
+ <item msgid="554971459996405634">"Έλεγχος ταυτότητας με <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="7928343808033020343">"Λήψη διεύθυνσης IP από <xliff:g id="NETWORK_NAME">%1$s</xliff:g>..."</item>
+ <item msgid="8937994881315223448">"Συνδεδεμένο σε <xliff:g id="NETWORK_NAME">%1$s</xliff:g>"</item>
+ <item msgid="1330262655415760617">"Σε αναστολή"</item>
+ <item msgid="7698638434317271902">"Αποσύνδεση από <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="197508606402264311">"Αποσυνδέθηκε"</item>
+ <item msgid="8578370891960825148">"Ανεπιτυχής"</item>
+ <item msgid="5660739516542454527">"Αποκλεισμένο"</item>
+ <item msgid="1805837518286731242">"Προσωρινή αποφυγή αδύναμης σύνδεσης"</item>
+ </string-array>
+</resources>
diff --git a/packages/SettingsLib/res/values-el/strings.xml b/packages/SettingsLib/res/values-el/strings.xml
new file mode 100644
index 0000000..1d1c564
--- /dev/null
+++ b/packages/SettingsLib/res/values-el/strings.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="wifi_fail_to_scan" msgid="1265540342578081461">"Δεν είναι δυνατή η σάρωση για δίκτυα"</string>
+ <string name="wifi_security_none" msgid="7985461072596594400">"Καμία"</string>
+ <string name="wifi_remembered" msgid="4955746899347821096">"Αποθηκευμένο"</string>
+ <string name="wifi_disabled_generic" msgid="4259794910584943386">"Απενεργοποιημένο"</string>
+ <string name="wifi_disabled_network_failure" msgid="2364951338436007124">"Αποτυχία διαμόρφωσης διεύθυνσης IP"</string>
+ <string name="wifi_disabled_wifi_failure" msgid="3081668066612876581">"Αποτυχία σύνδεσης Wi-Fi"</string>
+ <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"Πρόβλημα ελέγχου ταυτότητας"</string>
+ <string name="wifi_not_in_range" msgid="1136191511238508967">"Εκτός εμβέλειας"</string>
+ <string name="wifi_no_internet" msgid="9151470775868728896">"Δεν εντοπίστηκε καμία πρόσβαση στο διαδίκτυο, δεν θα γίνει αυτόματη επανασύνδεση."</string>
+ <string name="saved_network" msgid="4352716707126620811">"Αποθηκεύτηκε από <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="connected_via_wfa" msgid="3805736726317410714">"Σύνδεση μέσω βοηθού Wi‑Fi"</string>
+ <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>
+ <string name="bluetooth_disconnected" msgid="6557104142667339895">"Αποσυνδέθηκε"</string>
+ <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Αποσύνδεση..."</string>
+ <string name="bluetooth_connecting" msgid="8555009514614320497">"Σύνδεση..."</string>
+ <string name="bluetooth_connected" msgid="6038755206916626419">"Συνδεδεμένο"</string>
+ <string name="bluetooth_pairing" msgid="1426882272690346242">"Σύζευξη..."</string>
+ <string name="bluetooth_connected_no_headset" msgid="2866994875046035609">"Συνδεδεμένο (όχι τηλ.)"</string>
+ <string name="bluetooth_connected_no_a2dp" msgid="4576188601581440337">"Συνδεδεμένο (όχι μέσα)"</string>
+ <string name="bluetooth_connected_no_map" msgid="6504436917057479986">"Συνδεδεμένο (χωρίς πρόσβαση μηνύματος)"</string>
+ <string name="bluetooth_connected_no_headset_no_a2dp" msgid="9195757766755553810">"Συνδεδεμένο (χωρίς τηλέφωνο ή πολυμέσα)"</string>
+ <string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Ήχος πολυμέσων"</string>
+ <string name="bluetooth_profile_headset" msgid="8658779596261212609">"Ήχος τηλεφώνου"</string>
+ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"Μεταφορά αρχείου"</string>
+ <string name="bluetooth_profile_hid" msgid="3680729023366986480">"Συσκευή εισόδου"</string>
+ <string name="bluetooth_profile_pan" msgid="3391606497945147673">"Πρόσβαση στο Διαδίκτυο"</string>
+ <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"Κοινή χρήση επαφών"</string>
+ <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"Για κοινή χρήση επαφών"</string>
+ <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"Κοινή χρήση σύνδεσης στο Διαδίκτυο"</string>
+ <string name="bluetooth_profile_map" msgid="5465271250454324383">"Πρόσβαση στο μήνυμα"</string>
+ <string name="bluetooth_profile_sap" msgid="5764222021851283125">"Πρόσβαση SIM"</string>
+ <string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"Συνδέθηκε σε ήχο πολυμέσων"</string>
+ <string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"Συνδεδεμένο στον ήχο τηλεφώνου"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"Συνδεδεμένο σε διακομιστή μεταφοράς αρχείων"</string>
+ <string name="bluetooth_map_profile_summary_connected" msgid="8191407438851351713">"Συνδεδεμένο στο χάρτη"</string>
+ <string name="bluetooth_sap_profile_summary_connected" msgid="8561765057453083838">"Συνδέθηκε σε SAP"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"Δεν έχει συνδεθεί σε διακομιστή μεταφοράς αρχείων"</string>
+ <string name="bluetooth_hid_profile_summary_connected" msgid="3381760054215168689">"Συνδέθηκε σε συσκευή εισόδου"</string>
+ <string name="bluetooth_pan_user_profile_summary_connected" msgid="4602294638909590612">"Συνδέθηκε με συσκευή με πρόσβ. στο Διαδ."</string>
+ <string name="bluetooth_pan_nap_profile_summary_connected" msgid="1561383706411975199">"Κοιν. χρ. σύνδ. στο Διαδ. με συσκευή"</string>
+ <string name="bluetooth_pan_profile_summary_use_for" msgid="5664884523822068653">"Χρήση για την πρόσβαση στο Διαδίκτυο"</string>
+ <string name="bluetooth_map_profile_summary_use_for" msgid="5154200119919927434">"Χρήση για χάρτη"</string>
+ <string name="bluetooth_sap_profile_summary_use_for" msgid="7085362712786907993">"Χρήση για πρόσβαση στη SIM"</string>
+ <string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"Χρήση για ήχο πολυμέσων"</string>
+ <string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"Χρήση για ήχο τηλεφώνου"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"Χρήση για τη μεταφορά αρχείων"</string>
+ <string name="bluetooth_hid_profile_summary_use_for" msgid="232727040453645139">"Χρήση για είσοδο"</string>
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"Σύζευξη"</string>
+ <string name="bluetooth_pairing_accept_all_caps" msgid="6061699265220789149">"ΣΥΖΕΥΞΗ"</string>
+ <string name="bluetooth_pairing_decline" msgid="4185420413578948140">"Ακύρωση"</string>
+ <string name="bluetooth_pairing_will_share_phonebook" msgid="4982239145676394429">"Η σύζευξη παρέχει πρόσβαση στις επαφές σας και το ιστορικό κλήσεων όταν συνδεθείτε."</string>
+ <string name="bluetooth_pairing_error_message" msgid="3748157733635947087">"Δεν ήταν δυνατή η σύζευξη με τη συσκευή <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="8337234855188925274">"Δεν ήταν δυνατή η σύζευξη με τη συσκευή <xliff:g id="DEVICE_NAME">%1$s</xliff:g> λόγω εσφαλμένου αριθμού PIN ή κλειδιού πρόσβασης."</string>
+ <string name="bluetooth_pairing_device_down_error_message" msgid="7870998403045801381">"Δεν είναι δυνατή η σύνδεση με τη συσκευή <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"Η ζεύξη απορρίφθηκε από τη συσκευή <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="accessibility_wifi_off" msgid="1166761729660614716">"Wi-Fi ανενεργό."</string>
+ <string name="accessibility_no_wifi" msgid="8834610636137374508">"Το Wi-Fi έχει αποσυνδεθεί."</string>
+ <string name="accessibility_wifi_one_bar" msgid="4869376278894301820">"Μία γραμμή Wi-Fi."</string>
+ <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>
+ <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_wifi" msgid="3277144155960302049">"Φορητό σημείο πρόσβασης"</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="managed_user_title" msgid="8101244883654409696">"Προφίλ εργασίας"</string>
+ <string name="user_guest" msgid="8475274842845401871">"Επισκέπτης"</string>
+ <string name="unknown" msgid="1592123443519355854">"Άγνωστο"</string>
+ <string name="running_process_item_user_label" msgid="3129887865552025943">"Χρήστης: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
+ <string name="launch_defaults_some" msgid="313159469856372621">"Έχουν οριστεί κάποιες προεπιλογές"</string>
+ <string name="launch_defaults_none" msgid="4241129108140034876">"Δεν έχουν οριστεί προεπιλογές"</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-en-rAU/arrays.xml b/packages/SettingsLib/res/values-en-rAU/arrays.xml
new file mode 100644
index 0000000..8fa3918
--- /dev/null
+++ b/packages/SettingsLib/res/values-en-rAU/arrays.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="wifi_status">
+ <item msgid="1922181315419294640"></item>
+ <item msgid="8934131797783724664">"Scanning…"</item>
+ <item msgid="8513729475867537913">"Connecting…"</item>
+ <item msgid="515055375277271756">"Authenticating…"</item>
+ <item msgid="1943354004029184381">"Obtaining IP address…"</item>
+ <item msgid="4221763391123233270">"Connected"</item>
+ <item msgid="624838831631122137">"Suspended"</item>
+ <item msgid="7979680559596111948">"Disconnecting…"</item>
+ <item msgid="1634960474403853625">"Disconnected"</item>
+ <item msgid="746097431216080650">"Unsuccessful"</item>
+ <item msgid="6367044185730295334">"Blocked"</item>
+ <item msgid="503942654197908005">"Temporarily avoiding poor connection"</item>
+ </string-array>
+ <string-array name="wifi_status_with_ssid">
+ <item msgid="7714855332363650812"></item>
+ <item msgid="8878186979715711006">"Scanning…"</item>
+ <item msgid="355508996603873860">"Connecting to <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="554971459996405634">"Authenticating with <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="7928343808033020343">"Obtaining IP address from <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="8937994881315223448">"Connected to <xliff:g id="NETWORK_NAME">%1$s</xliff:g>"</item>
+ <item msgid="1330262655415760617">"Suspended"</item>
+ <item msgid="7698638434317271902">"Disconnecting from <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="197508606402264311">"Disconnected"</item>
+ <item msgid="8578370891960825148">"Unsuccessful"</item>
+ <item msgid="5660739516542454527">"Blocked"</item>
+ <item msgid="1805837518286731242">"Temporarily avoiding poor connection"</item>
+ </string-array>
+</resources>
diff --git a/packages/SettingsLib/res/values-en-rAU/strings.xml b/packages/SettingsLib/res/values-en-rAU/strings.xml
new file mode 100644
index 0000000..99fd61e
--- /dev/null
+++ b/packages/SettingsLib/res/values-en-rAU/strings.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="wifi_fail_to_scan" msgid="1265540342578081461">"Can\'t scan for networks"</string>
+ <string name="wifi_security_none" msgid="7985461072596594400">"None"</string>
+ <string name="wifi_remembered" msgid="4955746899347821096">"Saved"</string>
+ <string name="wifi_disabled_generic" msgid="4259794910584943386">"Disabled"</string>
+ <string name="wifi_disabled_network_failure" msgid="2364951338436007124">"IP Configuration Failure"</string>
+ <string name="wifi_disabled_wifi_failure" msgid="3081668066612876581">"Wi-Fi Connection Failure"</string>
+ <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"Authentication problem"</string>
+ <string name="wifi_not_in_range" msgid="1136191511238508967">"Not in range"</string>
+ <string name="wifi_no_internet" msgid="9151470775868728896">"No Internet Access Detected, won\'t automatically reconnect."</string>
+ <string name="saved_network" msgid="4352716707126620811">"Saved by <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="connected_via_wfa" msgid="3805736726317410714">"Connected via Wi‑Fi assistant"</string>
+ <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>
+ <string name="bluetooth_disconnected" msgid="6557104142667339895">"Disconnected"</string>
+ <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Disconnecting…"</string>
+ <string name="bluetooth_connecting" msgid="8555009514614320497">"Connecting…"</string>
+ <string name="bluetooth_connected" msgid="6038755206916626419">"Connected"</string>
+ <string name="bluetooth_pairing" msgid="1426882272690346242">"Pairing…"</string>
+ <string name="bluetooth_connected_no_headset" msgid="2866994875046035609">"Connected (no phone)"</string>
+ <string name="bluetooth_connected_no_a2dp" msgid="4576188601581440337">"Connected (no media)"</string>
+ <string name="bluetooth_connected_no_map" msgid="6504436917057479986">"Connected (no message access)"</string>
+ <string name="bluetooth_connected_no_headset_no_a2dp" msgid="9195757766755553810">"Connected (no phone or media)"</string>
+ <string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Media audio"</string>
+ <string name="bluetooth_profile_headset" msgid="8658779596261212609">"Phone audio"</string>
+ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"File transfer"</string>
+ <string name="bluetooth_profile_hid" msgid="3680729023366986480">"Input device"</string>
+ <string name="bluetooth_profile_pan" msgid="3391606497945147673">"Internet access"</string>
+ <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"Contact sharing"</string>
+ <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"Use for contact sharing"</string>
+ <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"Internet connection sharing"</string>
+ <string name="bluetooth_profile_map" msgid="5465271250454324383">"Message Access"</string>
+ <string name="bluetooth_profile_sap" msgid="5764222021851283125">"SIM Access"</string>
+ <string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"Connected to media audio"</string>
+ <string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"Connected to phone audio"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"Connected to file-transfer server"</string>
+ <string name="bluetooth_map_profile_summary_connected" msgid="8191407438851351713">"Connected to map"</string>
+ <string name="bluetooth_sap_profile_summary_connected" msgid="8561765057453083838">"Connected to SAP"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"Not connected to file-transfer server"</string>
+ <string name="bluetooth_hid_profile_summary_connected" msgid="3381760054215168689">"Connected to input device"</string>
+ <string name="bluetooth_pan_user_profile_summary_connected" msgid="4602294638909590612">"Connected to device for Internet access"</string>
+ <string name="bluetooth_pan_nap_profile_summary_connected" msgid="1561383706411975199">"Sharing local Internet connection with device"</string>
+ <string name="bluetooth_pan_profile_summary_use_for" msgid="5664884523822068653">"Use for Internet access"</string>
+ <string name="bluetooth_map_profile_summary_use_for" msgid="5154200119919927434">"Use for map"</string>
+ <string name="bluetooth_sap_profile_summary_use_for" msgid="7085362712786907993">"Use for SIM access"</string>
+ <string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"Use for media audio"</string>
+ <string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"Use for phone audio"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"Use for file transfer"</string>
+ <string name="bluetooth_hid_profile_summary_use_for" msgid="232727040453645139">"Use for input"</string>
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"Pair"</string>
+ <string name="bluetooth_pairing_accept_all_caps" msgid="6061699265220789149">"PAIR"</string>
+ <string name="bluetooth_pairing_decline" msgid="4185420413578948140">"Cancel"</string>
+ <string name="bluetooth_pairing_will_share_phonebook" msgid="4982239145676394429">"Pairing grants access to your contacts and call history when connected."</string>
+ <string name="bluetooth_pairing_error_message" msgid="3748157733635947087">"Couldn\'t pair with <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="8337234855188925274">"Couldn\'t pair with <xliff:g id="DEVICE_NAME">%1$s</xliff:g> because of an incorrect PIN or passkey."</string>
+ <string name="bluetooth_pairing_device_down_error_message" msgid="7870998403045801381">"Can\'t communicate with <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"Pairing rejected by <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="accessibility_wifi_off" msgid="1166761729660614716">"Wi-Fi off."</string>
+ <string name="accessibility_no_wifi" msgid="8834610636137374508">"Wi-Fi disconnected."</string>
+ <string name="accessibility_wifi_one_bar" msgid="4869376278894301820">"Wi-Fi one bar."</string>
+ <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>
+ <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>
+ <string name="tether_settings_title_usb" msgid="6688416425801386511">"USB tethering"</string>
+ <string name="tether_settings_title_wifi" msgid="3277144155960302049">"Portable hotspot"</string>
+ <string name="tether_settings_title_bluetooth" msgid="355855408317564420">"Bluetooth tethering"</string>
+ <string name="tether_settings_title_usb_bluetooth" msgid="5355828977109785001">"Tethering"</string>
+ <string name="tether_settings_title_all" msgid="8356136101061143841">"Tethering & portable hotspot"</string>
+ <string name="managed_user_title" msgid="8101244883654409696">"Work profile"</string>
+ <string name="user_guest" msgid="8475274842845401871">"Guest"</string>
+ <string name="unknown" msgid="1592123443519355854">"Unknown"</string>
+ <string name="running_process_item_user_label" msgid="3129887865552025943">"User: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
+ <string name="launch_defaults_some" msgid="313159469856372621">"Some defaults set"</string>
+ <string name="launch_defaults_none" msgid="4241129108140034876">"No defaults set"</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-en-rGB/arrays.xml b/packages/SettingsLib/res/values-en-rGB/arrays.xml
new file mode 100644
index 0000000..8fa3918
--- /dev/null
+++ b/packages/SettingsLib/res/values-en-rGB/arrays.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="wifi_status">
+ <item msgid="1922181315419294640"></item>
+ <item msgid="8934131797783724664">"Scanning…"</item>
+ <item msgid="8513729475867537913">"Connecting…"</item>
+ <item msgid="515055375277271756">"Authenticating…"</item>
+ <item msgid="1943354004029184381">"Obtaining IP address…"</item>
+ <item msgid="4221763391123233270">"Connected"</item>
+ <item msgid="624838831631122137">"Suspended"</item>
+ <item msgid="7979680559596111948">"Disconnecting…"</item>
+ <item msgid="1634960474403853625">"Disconnected"</item>
+ <item msgid="746097431216080650">"Unsuccessful"</item>
+ <item msgid="6367044185730295334">"Blocked"</item>
+ <item msgid="503942654197908005">"Temporarily avoiding poor connection"</item>
+ </string-array>
+ <string-array name="wifi_status_with_ssid">
+ <item msgid="7714855332363650812"></item>
+ <item msgid="8878186979715711006">"Scanning…"</item>
+ <item msgid="355508996603873860">"Connecting to <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="554971459996405634">"Authenticating with <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="7928343808033020343">"Obtaining IP address from <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="8937994881315223448">"Connected to <xliff:g id="NETWORK_NAME">%1$s</xliff:g>"</item>
+ <item msgid="1330262655415760617">"Suspended"</item>
+ <item msgid="7698638434317271902">"Disconnecting from <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="197508606402264311">"Disconnected"</item>
+ <item msgid="8578370891960825148">"Unsuccessful"</item>
+ <item msgid="5660739516542454527">"Blocked"</item>
+ <item msgid="1805837518286731242">"Temporarily avoiding poor connection"</item>
+ </string-array>
+</resources>
diff --git a/packages/SettingsLib/res/values-en-rGB/strings.xml b/packages/SettingsLib/res/values-en-rGB/strings.xml
new file mode 100644
index 0000000..99fd61e
--- /dev/null
+++ b/packages/SettingsLib/res/values-en-rGB/strings.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="wifi_fail_to_scan" msgid="1265540342578081461">"Can\'t scan for networks"</string>
+ <string name="wifi_security_none" msgid="7985461072596594400">"None"</string>
+ <string name="wifi_remembered" msgid="4955746899347821096">"Saved"</string>
+ <string name="wifi_disabled_generic" msgid="4259794910584943386">"Disabled"</string>
+ <string name="wifi_disabled_network_failure" msgid="2364951338436007124">"IP Configuration Failure"</string>
+ <string name="wifi_disabled_wifi_failure" msgid="3081668066612876581">"Wi-Fi Connection Failure"</string>
+ <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"Authentication problem"</string>
+ <string name="wifi_not_in_range" msgid="1136191511238508967">"Not in range"</string>
+ <string name="wifi_no_internet" msgid="9151470775868728896">"No Internet Access Detected, won\'t automatically reconnect."</string>
+ <string name="saved_network" msgid="4352716707126620811">"Saved by <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="connected_via_wfa" msgid="3805736726317410714">"Connected via Wi‑Fi assistant"</string>
+ <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>
+ <string name="bluetooth_disconnected" msgid="6557104142667339895">"Disconnected"</string>
+ <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Disconnecting…"</string>
+ <string name="bluetooth_connecting" msgid="8555009514614320497">"Connecting…"</string>
+ <string name="bluetooth_connected" msgid="6038755206916626419">"Connected"</string>
+ <string name="bluetooth_pairing" msgid="1426882272690346242">"Pairing…"</string>
+ <string name="bluetooth_connected_no_headset" msgid="2866994875046035609">"Connected (no phone)"</string>
+ <string name="bluetooth_connected_no_a2dp" msgid="4576188601581440337">"Connected (no media)"</string>
+ <string name="bluetooth_connected_no_map" msgid="6504436917057479986">"Connected (no message access)"</string>
+ <string name="bluetooth_connected_no_headset_no_a2dp" msgid="9195757766755553810">"Connected (no phone or media)"</string>
+ <string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Media audio"</string>
+ <string name="bluetooth_profile_headset" msgid="8658779596261212609">"Phone audio"</string>
+ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"File transfer"</string>
+ <string name="bluetooth_profile_hid" msgid="3680729023366986480">"Input device"</string>
+ <string name="bluetooth_profile_pan" msgid="3391606497945147673">"Internet access"</string>
+ <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"Contact sharing"</string>
+ <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"Use for contact sharing"</string>
+ <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"Internet connection sharing"</string>
+ <string name="bluetooth_profile_map" msgid="5465271250454324383">"Message Access"</string>
+ <string name="bluetooth_profile_sap" msgid="5764222021851283125">"SIM Access"</string>
+ <string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"Connected to media audio"</string>
+ <string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"Connected to phone audio"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"Connected to file-transfer server"</string>
+ <string name="bluetooth_map_profile_summary_connected" msgid="8191407438851351713">"Connected to map"</string>
+ <string name="bluetooth_sap_profile_summary_connected" msgid="8561765057453083838">"Connected to SAP"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"Not connected to file-transfer server"</string>
+ <string name="bluetooth_hid_profile_summary_connected" msgid="3381760054215168689">"Connected to input device"</string>
+ <string name="bluetooth_pan_user_profile_summary_connected" msgid="4602294638909590612">"Connected to device for Internet access"</string>
+ <string name="bluetooth_pan_nap_profile_summary_connected" msgid="1561383706411975199">"Sharing local Internet connection with device"</string>
+ <string name="bluetooth_pan_profile_summary_use_for" msgid="5664884523822068653">"Use for Internet access"</string>
+ <string name="bluetooth_map_profile_summary_use_for" msgid="5154200119919927434">"Use for map"</string>
+ <string name="bluetooth_sap_profile_summary_use_for" msgid="7085362712786907993">"Use for SIM access"</string>
+ <string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"Use for media audio"</string>
+ <string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"Use for phone audio"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"Use for file transfer"</string>
+ <string name="bluetooth_hid_profile_summary_use_for" msgid="232727040453645139">"Use for input"</string>
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"Pair"</string>
+ <string name="bluetooth_pairing_accept_all_caps" msgid="6061699265220789149">"PAIR"</string>
+ <string name="bluetooth_pairing_decline" msgid="4185420413578948140">"Cancel"</string>
+ <string name="bluetooth_pairing_will_share_phonebook" msgid="4982239145676394429">"Pairing grants access to your contacts and call history when connected."</string>
+ <string name="bluetooth_pairing_error_message" msgid="3748157733635947087">"Couldn\'t pair with <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="8337234855188925274">"Couldn\'t pair with <xliff:g id="DEVICE_NAME">%1$s</xliff:g> because of an incorrect PIN or passkey."</string>
+ <string name="bluetooth_pairing_device_down_error_message" msgid="7870998403045801381">"Can\'t communicate with <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"Pairing rejected by <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="accessibility_wifi_off" msgid="1166761729660614716">"Wi-Fi off."</string>
+ <string name="accessibility_no_wifi" msgid="8834610636137374508">"Wi-Fi disconnected."</string>
+ <string name="accessibility_wifi_one_bar" msgid="4869376278894301820">"Wi-Fi one bar."</string>
+ <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>
+ <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>
+ <string name="tether_settings_title_usb" msgid="6688416425801386511">"USB tethering"</string>
+ <string name="tether_settings_title_wifi" msgid="3277144155960302049">"Portable hotspot"</string>
+ <string name="tether_settings_title_bluetooth" msgid="355855408317564420">"Bluetooth tethering"</string>
+ <string name="tether_settings_title_usb_bluetooth" msgid="5355828977109785001">"Tethering"</string>
+ <string name="tether_settings_title_all" msgid="8356136101061143841">"Tethering & portable hotspot"</string>
+ <string name="managed_user_title" msgid="8101244883654409696">"Work profile"</string>
+ <string name="user_guest" msgid="8475274842845401871">"Guest"</string>
+ <string name="unknown" msgid="1592123443519355854">"Unknown"</string>
+ <string name="running_process_item_user_label" msgid="3129887865552025943">"User: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
+ <string name="launch_defaults_some" msgid="313159469856372621">"Some defaults set"</string>
+ <string name="launch_defaults_none" msgid="4241129108140034876">"No defaults set"</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-en-rIN/arrays.xml b/packages/SettingsLib/res/values-en-rIN/arrays.xml
new file mode 100644
index 0000000..8fa3918
--- /dev/null
+++ b/packages/SettingsLib/res/values-en-rIN/arrays.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="wifi_status">
+ <item msgid="1922181315419294640"></item>
+ <item msgid="8934131797783724664">"Scanning…"</item>
+ <item msgid="8513729475867537913">"Connecting…"</item>
+ <item msgid="515055375277271756">"Authenticating…"</item>
+ <item msgid="1943354004029184381">"Obtaining IP address…"</item>
+ <item msgid="4221763391123233270">"Connected"</item>
+ <item msgid="624838831631122137">"Suspended"</item>
+ <item msgid="7979680559596111948">"Disconnecting…"</item>
+ <item msgid="1634960474403853625">"Disconnected"</item>
+ <item msgid="746097431216080650">"Unsuccessful"</item>
+ <item msgid="6367044185730295334">"Blocked"</item>
+ <item msgid="503942654197908005">"Temporarily avoiding poor connection"</item>
+ </string-array>
+ <string-array name="wifi_status_with_ssid">
+ <item msgid="7714855332363650812"></item>
+ <item msgid="8878186979715711006">"Scanning…"</item>
+ <item msgid="355508996603873860">"Connecting to <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="554971459996405634">"Authenticating with <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="7928343808033020343">"Obtaining IP address from <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="8937994881315223448">"Connected to <xliff:g id="NETWORK_NAME">%1$s</xliff:g>"</item>
+ <item msgid="1330262655415760617">"Suspended"</item>
+ <item msgid="7698638434317271902">"Disconnecting from <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="197508606402264311">"Disconnected"</item>
+ <item msgid="8578370891960825148">"Unsuccessful"</item>
+ <item msgid="5660739516542454527">"Blocked"</item>
+ <item msgid="1805837518286731242">"Temporarily avoiding poor connection"</item>
+ </string-array>
+</resources>
diff --git a/packages/SettingsLib/res/values-en-rIN/strings.xml b/packages/SettingsLib/res/values-en-rIN/strings.xml
new file mode 100644
index 0000000..99fd61e
--- /dev/null
+++ b/packages/SettingsLib/res/values-en-rIN/strings.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="wifi_fail_to_scan" msgid="1265540342578081461">"Can\'t scan for networks"</string>
+ <string name="wifi_security_none" msgid="7985461072596594400">"None"</string>
+ <string name="wifi_remembered" msgid="4955746899347821096">"Saved"</string>
+ <string name="wifi_disabled_generic" msgid="4259794910584943386">"Disabled"</string>
+ <string name="wifi_disabled_network_failure" msgid="2364951338436007124">"IP Configuration Failure"</string>
+ <string name="wifi_disabled_wifi_failure" msgid="3081668066612876581">"Wi-Fi Connection Failure"</string>
+ <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"Authentication problem"</string>
+ <string name="wifi_not_in_range" msgid="1136191511238508967">"Not in range"</string>
+ <string name="wifi_no_internet" msgid="9151470775868728896">"No Internet Access Detected, won\'t automatically reconnect."</string>
+ <string name="saved_network" msgid="4352716707126620811">"Saved by <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="connected_via_wfa" msgid="3805736726317410714">"Connected via Wi‑Fi assistant"</string>
+ <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>
+ <string name="bluetooth_disconnected" msgid="6557104142667339895">"Disconnected"</string>
+ <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Disconnecting…"</string>
+ <string name="bluetooth_connecting" msgid="8555009514614320497">"Connecting…"</string>
+ <string name="bluetooth_connected" msgid="6038755206916626419">"Connected"</string>
+ <string name="bluetooth_pairing" msgid="1426882272690346242">"Pairing…"</string>
+ <string name="bluetooth_connected_no_headset" msgid="2866994875046035609">"Connected (no phone)"</string>
+ <string name="bluetooth_connected_no_a2dp" msgid="4576188601581440337">"Connected (no media)"</string>
+ <string name="bluetooth_connected_no_map" msgid="6504436917057479986">"Connected (no message access)"</string>
+ <string name="bluetooth_connected_no_headset_no_a2dp" msgid="9195757766755553810">"Connected (no phone or media)"</string>
+ <string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Media audio"</string>
+ <string name="bluetooth_profile_headset" msgid="8658779596261212609">"Phone audio"</string>
+ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"File transfer"</string>
+ <string name="bluetooth_profile_hid" msgid="3680729023366986480">"Input device"</string>
+ <string name="bluetooth_profile_pan" msgid="3391606497945147673">"Internet access"</string>
+ <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"Contact sharing"</string>
+ <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"Use for contact sharing"</string>
+ <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"Internet connection sharing"</string>
+ <string name="bluetooth_profile_map" msgid="5465271250454324383">"Message Access"</string>
+ <string name="bluetooth_profile_sap" msgid="5764222021851283125">"SIM Access"</string>
+ <string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"Connected to media audio"</string>
+ <string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"Connected to phone audio"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"Connected to file-transfer server"</string>
+ <string name="bluetooth_map_profile_summary_connected" msgid="8191407438851351713">"Connected to map"</string>
+ <string name="bluetooth_sap_profile_summary_connected" msgid="8561765057453083838">"Connected to SAP"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"Not connected to file-transfer server"</string>
+ <string name="bluetooth_hid_profile_summary_connected" msgid="3381760054215168689">"Connected to input device"</string>
+ <string name="bluetooth_pan_user_profile_summary_connected" msgid="4602294638909590612">"Connected to device for Internet access"</string>
+ <string name="bluetooth_pan_nap_profile_summary_connected" msgid="1561383706411975199">"Sharing local Internet connection with device"</string>
+ <string name="bluetooth_pan_profile_summary_use_for" msgid="5664884523822068653">"Use for Internet access"</string>
+ <string name="bluetooth_map_profile_summary_use_for" msgid="5154200119919927434">"Use for map"</string>
+ <string name="bluetooth_sap_profile_summary_use_for" msgid="7085362712786907993">"Use for SIM access"</string>
+ <string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"Use for media audio"</string>
+ <string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"Use for phone audio"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"Use for file transfer"</string>
+ <string name="bluetooth_hid_profile_summary_use_for" msgid="232727040453645139">"Use for input"</string>
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"Pair"</string>
+ <string name="bluetooth_pairing_accept_all_caps" msgid="6061699265220789149">"PAIR"</string>
+ <string name="bluetooth_pairing_decline" msgid="4185420413578948140">"Cancel"</string>
+ <string name="bluetooth_pairing_will_share_phonebook" msgid="4982239145676394429">"Pairing grants access to your contacts and call history when connected."</string>
+ <string name="bluetooth_pairing_error_message" msgid="3748157733635947087">"Couldn\'t pair with <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="8337234855188925274">"Couldn\'t pair with <xliff:g id="DEVICE_NAME">%1$s</xliff:g> because of an incorrect PIN or passkey."</string>
+ <string name="bluetooth_pairing_device_down_error_message" msgid="7870998403045801381">"Can\'t communicate with <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"Pairing rejected by <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="accessibility_wifi_off" msgid="1166761729660614716">"Wi-Fi off."</string>
+ <string name="accessibility_no_wifi" msgid="8834610636137374508">"Wi-Fi disconnected."</string>
+ <string name="accessibility_wifi_one_bar" msgid="4869376278894301820">"Wi-Fi one bar."</string>
+ <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>
+ <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>
+ <string name="tether_settings_title_usb" msgid="6688416425801386511">"USB tethering"</string>
+ <string name="tether_settings_title_wifi" msgid="3277144155960302049">"Portable hotspot"</string>
+ <string name="tether_settings_title_bluetooth" msgid="355855408317564420">"Bluetooth tethering"</string>
+ <string name="tether_settings_title_usb_bluetooth" msgid="5355828977109785001">"Tethering"</string>
+ <string name="tether_settings_title_all" msgid="8356136101061143841">"Tethering & portable hotspot"</string>
+ <string name="managed_user_title" msgid="8101244883654409696">"Work profile"</string>
+ <string name="user_guest" msgid="8475274842845401871">"Guest"</string>
+ <string name="unknown" msgid="1592123443519355854">"Unknown"</string>
+ <string name="running_process_item_user_label" msgid="3129887865552025943">"User: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
+ <string name="launch_defaults_some" msgid="313159469856372621">"Some defaults set"</string>
+ <string name="launch_defaults_none" msgid="4241129108140034876">"No defaults set"</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-es-rUS/arrays.xml b/packages/SettingsLib/res/values-es-rUS/arrays.xml
new file mode 100644
index 0000000..5947056
--- /dev/null
+++ b/packages/SettingsLib/res/values-es-rUS/arrays.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="wifi_status">
+ <item msgid="1922181315419294640"></item>
+ <item msgid="8934131797783724664">"Explorando..."</item>
+ <item msgid="8513729475867537913">"Conectando…"</item>
+ <item msgid="515055375277271756">"Autenticando…"</item>
+ <item msgid="1943354004029184381">"Obteniendo la dirección IP…"</item>
+ <item msgid="4221763391123233270">"Conectado"</item>
+ <item msgid="624838831631122137">"Suspendido"</item>
+ <item msgid="7979680559596111948">"Desconectando…"</item>
+ <item msgid="1634960474403853625">"Desconectado"</item>
+ <item msgid="746097431216080650">"Incorrecto"</item>
+ <item msgid="6367044185730295334">"Bloqueada"</item>
+ <item msgid="503942654197908005">"Desactivando mala conexión temporalmente"</item>
+ </string-array>
+ <string-array name="wifi_status_with_ssid">
+ <item msgid="7714855332363650812"></item>
+ <item msgid="8878186979715711006">"Explorando..."</item>
+ <item msgid="355508996603873860">"Conectando a <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="554971459996405634">"Autenticando con <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="7928343808033020343">"Obteniendo dirección IP de <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="8937994881315223448">"Conectado a <xliff:g id="NETWORK_NAME">%1$s</xliff:g>"</item>
+ <item msgid="1330262655415760617">"Suspendido"</item>
+ <item msgid="7698638434317271902">"Desconectando de <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="197508606402264311">"Desconectado"</item>
+ <item msgid="8578370891960825148">"Incorrecto"</item>
+ <item msgid="5660739516542454527">"Bloqueada"</item>
+ <item msgid="1805837518286731242">"Desactivando mala conexión temporalmente"</item>
+ </string-array>
+</resources>
diff --git a/packages/SettingsLib/res/values-es-rUS/strings.xml b/packages/SettingsLib/res/values-es-rUS/strings.xml
new file mode 100644
index 0000000..a912db2
--- /dev/null
+++ b/packages/SettingsLib/res/values-es-rUS/strings.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="wifi_fail_to_scan" msgid="1265540342578081461">"No se pueden buscar las redes."</string>
+ <string name="wifi_security_none" msgid="7985461072596594400">"Ninguna"</string>
+ <string name="wifi_remembered" msgid="4955746899347821096">"Guardada"</string>
+ <string name="wifi_disabled_generic" msgid="4259794910584943386">"Inhabilitada"</string>
+ <string name="wifi_disabled_network_failure" msgid="2364951338436007124">"Error de configuración IP"</string>
+ <string name="wifi_disabled_wifi_failure" msgid="3081668066612876581">"Error de conexión Wi-Fi"</string>
+ <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"Problema de autenticación"</string>
+ <string name="wifi_not_in_range" msgid="1136191511238508967">"Fuera de alcance"</string>
+ <string name="wifi_no_internet" msgid="9151470775868728896">"No se detectó el acceso a Internet. No se volverá a conectar de forma automática."</string>
+ <string name="saved_network" msgid="4352716707126620811">"Guardadas por <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="connected_via_wfa" msgid="3805736726317410714">"Conexión por asistente de Wi-Fi"</string>
+ <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>
+ <string name="bluetooth_disconnected" msgid="6557104142667339895">"Desconectado"</string>
+ <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Desconectando…"</string>
+ <string name="bluetooth_connecting" msgid="8555009514614320497">"Conectando…"</string>
+ <string name="bluetooth_connected" msgid="6038755206916626419">"Conectado"</string>
+ <string name="bluetooth_pairing" msgid="1426882272690346242">"Vinculando..."</string>
+ <string name="bluetooth_connected_no_headset" msgid="2866994875046035609">"Conectado (sin teléfono)"</string>
+ <string name="bluetooth_connected_no_a2dp" msgid="4576188601581440337">"Conectado (sin audio multimedia)"</string>
+ <string name="bluetooth_connected_no_map" msgid="6504436917057479986">"Conectado (sin acceso a mensajes)"</string>
+ <string name="bluetooth_connected_no_headset_no_a2dp" msgid="9195757766755553810">"Conectado (sin tel. ni audio multimedia)"</string>
+ <string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Audio multimedia"</string>
+ <string name="bluetooth_profile_headset" msgid="8658779596261212609">"Audio del dispositivo"</string>
+ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"Transferencia de archivos"</string>
+ <string name="bluetooth_profile_hid" msgid="3680729023366986480">"Dispositivo de entrada"</string>
+ <string name="bluetooth_profile_pan" msgid="3391606497945147673">"Acceso a Internet"</string>
+ <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"Compartir contactos"</string>
+ <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"Utilizar para compartir contactos"</string>
+ <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"Compartir conexión a Internet"</string>
+ <string name="bluetooth_profile_map" msgid="5465271250454324383">"Acceso a mensajes"</string>
+ <string name="bluetooth_profile_sap" msgid="5764222021851283125">"Acceso SIM"</string>
+ <string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"Conectado al audio multimedia"</string>
+ <string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"Conectado al audio del dispositivo"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"Conectado al servidor de transferencia de archivo"</string>
+ <string name="bluetooth_map_profile_summary_connected" msgid="8191407438851351713">"Conectado al mapa"</string>
+ <string name="bluetooth_sap_profile_summary_connected" msgid="8561765057453083838">"Conexión a SAP"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"No conectado al servidor de transferencia de archivo"</string>
+ <string name="bluetooth_hid_profile_summary_connected" msgid="3381760054215168689">"Conectado a dispositivo de entrada"</string>
+ <string name="bluetooth_pan_user_profile_summary_connected" msgid="4602294638909590612">"Conectado a un dispositivo para acceder a Internet"</string>
+ <string name="bluetooth_pan_nap_profile_summary_connected" msgid="1561383706411975199">"Conexión a Internet local compartida con dispositivo"</string>
+ <string name="bluetooth_pan_profile_summary_use_for" msgid="5664884523822068653">"Utilizar para acceso a Internet"</string>
+ <string name="bluetooth_map_profile_summary_use_for" msgid="5154200119919927434">"Usar para mapa"</string>
+ <string name="bluetooth_sap_profile_summary_use_for" msgid="7085362712786907993">"Usar para acceder a la SIM"</string>
+ <string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"Utilizar para el audio multimedia"</string>
+ <string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"Utilizar para el audio del dispositivo"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"Utilizar para la transferencia de archivos"</string>
+ <string name="bluetooth_hid_profile_summary_use_for" msgid="232727040453645139">"Utilizar para entrada"</string>
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"Vincular"</string>
+ <string name="bluetooth_pairing_accept_all_caps" msgid="6061699265220789149">"SINCRONIZAR"</string>
+ <string name="bluetooth_pairing_decline" msgid="4185420413578948140">"Cancelar"</string>
+ <string name="bluetooth_pairing_will_share_phonebook" msgid="4982239145676394429">"La sincronización te permite acceder a los contactos y al historial de llamadas cuando el dispositivo está conectado."</string>
+ <string name="bluetooth_pairing_error_message" msgid="3748157733635947087">"No se pudo sincronizar con <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="8337234855188925274">"No se pudo sincronizar con <xliff:g id="DEVICE_NAME">%1$s</xliff:g> debido a que el PIN o la clave de acceso son incorrectos."</string>
+ <string name="bluetooth_pairing_device_down_error_message" msgid="7870998403045801381">"No se puede establecer la comunicación con <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"Vínculo rechazado por <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+ <string name="accessibility_wifi_off" msgid="1166761729660614716">"Wi-Fi inhabilitado"</string>
+ <string name="accessibility_no_wifi" msgid="8834610636137374508">"Wi-Fi desconectado"</string>
+ <string name="accessibility_wifi_one_bar" msgid="4869376278894301820">"Una barra de Wi-Fi"</string>
+ <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>
+ <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>
+ <string name="tether_settings_title_usb" msgid="6688416425801386511">"Anclaje a red USB"</string>
+ <string name="tether_settings_title_wifi" msgid="3277144155960302049">"Zona Wi-Fi portátil"</string>
+ <string name="tether_settings_title_bluetooth" msgid="355855408317564420">"Anclaje a red Bluetooth"</string>
+ <string name="tether_settings_title_usb_bluetooth" msgid="5355828977109785001">"Anclaje a red"</string>
+ <string name="tether_settings_title_all" msgid="8356136101061143841">"Anclaje a red y zona portátil"</string>
+ <string name="managed_user_title" msgid="8101244883654409696">"Perfil de trabajo"</string>
+ <string name="user_guest" msgid="8475274842845401871">"Invitado"</string>
+ <string name="unknown" msgid="1592123443519355854">"Desconocido"</string>
+ <string name="running_process_item_user_label" msgid="3129887865552025943">"Usuario: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
+ <string name="launch_defaults_some" msgid="313159469856372621">"Hay algunas configuraciones predeterminadas establecidas."</string>
+ <string name="launch_defaults_none" msgid="4241129108140034876">"No hay configuraciones predeterminadas establecidas."</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-es/arrays.xml b/packages/SettingsLib/res/values-es/arrays.xml
new file mode 100644
index 0000000..ba51a81
--- /dev/null
+++ b/packages/SettingsLib/res/values-es/arrays.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="wifi_status">
+ <item msgid="1922181315419294640"></item>
+ <item msgid="8934131797783724664">"Buscando..."</item>
+ <item msgid="8513729475867537913">"Estableciendo conexión..."</item>
+ <item msgid="515055375277271756">"Autenticando..."</item>
+ <item msgid="1943354004029184381">"Obteniendo dirección IP…"</item>
+ <item msgid="4221763391123233270">"Conexión establecida"</item>
+ <item msgid="624838831631122137">"Suspendida"</item>
+ <item msgid="7979680559596111948">"Desconectando..."</item>
+ <item msgid="1634960474403853625">"Desconectada"</item>
+ <item msgid="746097431216080650">"Con error"</item>
+ <item msgid="6367044185730295334">"Bloqueada"</item>
+ <item msgid="503942654197908005">"Inhabilitando conexión inestable temporalmente..."</item>
+ </string-array>
+ <string-array name="wifi_status_with_ssid">
+ <item msgid="7714855332363650812"></item>
+ <item msgid="8878186979715711006">"Buscando..."</item>
+ <item msgid="355508996603873860">"Estableciendo conexión con <xliff:g id="NETWORK_NAME">%1$s</xliff:g>..."</item>
+ <item msgid="554971459996405634">"Autenticando con <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="7928343808033020343">"Obteniendo dirección IP de <xliff:g id="NETWORK_NAME">%1$s</xliff:g>..."</item>
+ <item msgid="8937994881315223448">"Conexión establecida con <xliff:g id="NETWORK_NAME">%1$s</xliff:g>"</item>
+ <item msgid="1330262655415760617">"Suspendida"</item>
+ <item msgid="7698638434317271902">"Desconectando de <xliff:g id="NETWORK_NAME">%1$s</xliff:g>..."</item>
+ <item msgid="197508606402264311">"Desconectada"</item>
+ <item msgid="8578370891960825148">"Con error"</item>
+ <item msgid="5660739516542454527">"Bloqueada"</item>
+ <item msgid="1805837518286731242">"Inhabilitando conexión inestable temporalmente..."</item>
+ </string-array>
+</resources>
diff --git a/packages/SettingsLib/res/values-es/strings.xml b/packages/SettingsLib/res/values-es/strings.xml
new file mode 100644
index 0000000..b6dcb9e
--- /dev/null
+++ b/packages/SettingsLib/res/values-es/strings.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="wifi_fail_to_scan" msgid="1265540342578081461">"No se puede buscar redes."</string>
+ <string name="wifi_security_none" msgid="7985461072596594400">"Ninguna"</string>
+ <string name="wifi_remembered" msgid="4955746899347821096">"Guardado"</string>
+ <string name="wifi_disabled_generic" msgid="4259794910584943386">"Inhabilitado"</string>
+ <string name="wifi_disabled_network_failure" msgid="2364951338436007124">"Error de configuración de IP"</string>
+ <string name="wifi_disabled_wifi_failure" msgid="3081668066612876581">"Error de conexión Wi-Fi"</string>
+ <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"Error de autenticación"</string>
+ <string name="wifi_not_in_range" msgid="1136191511238508967">"Fuera de rango"</string>
+ <string name="wifi_no_internet" msgid="9151470775868728896">"No se ha detectado acceso a Internet, no se volverá a conectar automáticamente."</string>
+ <string name="saved_network" msgid="4352716707126620811">"Guardadas por <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="connected_via_wfa" msgid="3805736726317410714">"Conectado a través de asistente Wi‑Fi"</string>
+ <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>
+ <string name="bluetooth_disconnected" msgid="6557104142667339895">"Desconectada"</string>
+ <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Desconectando…"</string>
+ <string name="bluetooth_connecting" msgid="8555009514614320497">"Estableciendo conexión…"</string>
+ <string name="bluetooth_connected" msgid="6038755206916626419">"Conectado"</string>
+ <string name="bluetooth_pairing" msgid="1426882272690346242">"Vinculando…"</string>
+ <string name="bluetooth_connected_no_headset" msgid="2866994875046035609">"Conectado (sin teléfono)"</string>
+ <string name="bluetooth_connected_no_a2dp" msgid="4576188601581440337">"Conectado (sin audio multimedia)"</string>
+ <string name="bluetooth_connected_no_map" msgid="6504436917057479986">"Conectado (sin acceso a mensajes)"</string>
+ <string name="bluetooth_connected_no_headset_no_a2dp" msgid="9195757766755553810">"Conectado (sin teléfono ni multimedia)"</string>
+ <string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Audio multimedia"</string>
+ <string name="bluetooth_profile_headset" msgid="8658779596261212609">"Audio del teléfono"</string>
+ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"Transferencia de archivos"</string>
+ <string name="bluetooth_profile_hid" msgid="3680729023366986480">"Dispositivo de entrada"</string>
+ <string name="bluetooth_profile_pan" msgid="3391606497945147673">"Acceso a Internet"</string>
+ <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"Compartir contactos"</string>
+ <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"Usar para compartir contactos"</string>
+ <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"Compartir conexión a Internet"</string>
+ <string name="bluetooth_profile_map" msgid="5465271250454324383">"Acceso a mensajes"</string>
+ <string name="bluetooth_profile_sap" msgid="5764222021851283125">"Acceso a tarjeta SIM"</string>
+ <string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"Conectado al audio del medio"</string>
+ <string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"Conectado al audio del teléfono"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"Conectado con el servidor de transferencia de archivos"</string>
+ <string name="bluetooth_map_profile_summary_connected" msgid="8191407438851351713">"Conectado a mapa"</string>
+ <string name="bluetooth_sap_profile_summary_connected" msgid="8561765057453083838">"Conectado a SAP"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"Sin conexión con el servidor de transferencia de archivos"</string>
+ <string name="bluetooth_hid_profile_summary_connected" msgid="3381760054215168689">"Conectado a dispositivo de entrada"</string>
+ <string name="bluetooth_pan_user_profile_summary_connected" msgid="4602294638909590612">"Conectado para acceso a Internet"</string>
+ <string name="bluetooth_pan_nap_profile_summary_connected" msgid="1561383706411975199">"Compartiendo conexión a Internet con el dispositivo"</string>
+ <string name="bluetooth_pan_profile_summary_use_for" msgid="5664884523822068653">"Usar para acceder a Internet"</string>
+ <string name="bluetooth_map_profile_summary_use_for" msgid="5154200119919927434">"Usar para mapa"</string>
+ <string name="bluetooth_sap_profile_summary_use_for" msgid="7085362712786907993">"Utilizar para acceso a tarjeta SIM"</string>
+ <string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"Utilizar para audio de medio"</string>
+ <string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"Utilizar para audio del teléfono"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"Uso de la transferencia de archivos"</string>
+ <string name="bluetooth_hid_profile_summary_use_for" msgid="232727040453645139">"Usar para entrada"</string>
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"Vincular"</string>
+ <string name="bluetooth_pairing_accept_all_caps" msgid="6061699265220789149">"VINCULAR"</string>
+ <string name="bluetooth_pairing_decline" msgid="4185420413578948140">"Cancelar"</string>
+ <string name="bluetooth_pairing_will_share_phonebook" msgid="4982239145676394429">"La vinculación permite acceder a tus contactos y al historial de llamadas cuando el dispositivo está conectado."</string>
+ <string name="bluetooth_pairing_error_message" msgid="3748157733635947087">"No se ha podido vincular con <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="8337234855188925274">"No se ha podido vincular con <xliff:g id="DEVICE_NAME">%1$s</xliff:g> porque la clave de acceso o el PIN son incorrectos."</string>
+ <string name="bluetooth_pairing_device_down_error_message" msgid="7870998403045801381">"No se puede establecer comunicación con <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"Vinculación rechazada por <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+ <string name="accessibility_wifi_off" msgid="1166761729660614716">"Wi-Fi desactivado."</string>
+ <string name="accessibility_no_wifi" msgid="8834610636137374508">"Wi-Fi desconectado."</string>
+ <string name="accessibility_wifi_one_bar" msgid="4869376278894301820">"Una barra de Wi-Fi."</string>
+ <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>
+ <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>
+ <string name="tether_settings_title_usb" msgid="6688416425801386511">"Compartir por USB"</string>
+ <string name="tether_settings_title_wifi" msgid="3277144155960302049">"Zona Wi-Fi portátil"</string>
+ <string name="tether_settings_title_bluetooth" msgid="355855408317564420">"Compartir por Bluetooth"</string>
+ <string name="tether_settings_title_usb_bluetooth" msgid="5355828977109785001">"Compartir Internet"</string>
+ <string name="tether_settings_title_all" msgid="8356136101061143841">"Compartir Internet y zona Wi-Fi"</string>
+ <string name="managed_user_title" msgid="8101244883654409696">"Perfil de trabajo"</string>
+ <string name="user_guest" msgid="8475274842845401871">"Invitado"</string>
+ <string name="unknown" msgid="1592123443519355854">"Desconocido"</string>
+ <string name="running_process_item_user_label" msgid="3129887865552025943">"Usuario: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
+ <string name="launch_defaults_some" msgid="313159469856372621">"Se han establecido algunos valores predeterminados"</string>
+ <string name="launch_defaults_none" msgid="4241129108140034876">"No se han establecido valores predeterminados"</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-et-rEE/arrays.xml b/packages/SettingsLib/res/values-et-rEE/arrays.xml
new file mode 100644
index 0000000..2a8f69b
--- /dev/null
+++ b/packages/SettingsLib/res/values-et-rEE/arrays.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="wifi_status">
+ <item msgid="1922181315419294640"></item>
+ <item msgid="8934131797783724664">"Skannimine…"</item>
+ <item msgid="8513729475867537913">"Ühenduse loomine…"</item>
+ <item msgid="515055375277271756">"Autentimine…"</item>
+ <item msgid="1943354004029184381">"IP-aadressi hankimine…"</item>
+ <item msgid="4221763391123233270">"Ühendatud"</item>
+ <item msgid="624838831631122137">"Peatatud"</item>
+ <item msgid="7979680559596111948">"Ühenduse katkestamine…"</item>
+ <item msgid="1634960474403853625">"Ühendus katkestatud"</item>
+ <item msgid="746097431216080650">"Ebaõnnestus"</item>
+ <item msgid="6367044185730295334">"Blokeeritud"</item>
+ <item msgid="503942654197908005">"Kehva ühenduse ajutine vältimine"</item>
+ </string-array>
+ <string-array name="wifi_status_with_ssid">
+ <item msgid="7714855332363650812"></item>
+ <item msgid="8878186979715711006">"Skannimine…"</item>
+ <item msgid="355508996603873860">"Ühendamine võrguga <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="554971459996405634">"Autentimine võrguga <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="7928343808033020343">"IP-aadressi hankimine võrgust <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="8937994881315223448">"Ühendatud võrguga <xliff:g id="NETWORK_NAME">%1$s</xliff:g>"</item>
+ <item msgid="1330262655415760617">"Peatatud"</item>
+ <item msgid="7698638434317271902">"Ühenduse katkestamine võrguga <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="197508606402264311">"Ühendus katkestatud"</item>
+ <item msgid="8578370891960825148">"Ebaõnnestus"</item>
+ <item msgid="5660739516542454527">"Blokeeritud"</item>
+ <item msgid="1805837518286731242">"Kehva ühenduse ajutine vältimine"</item>
+ </string-array>
+</resources>
diff --git a/packages/SettingsLib/res/values-et-rEE/strings.xml b/packages/SettingsLib/res/values-et-rEE/strings.xml
new file mode 100644
index 0000000..ee92078
--- /dev/null
+++ b/packages/SettingsLib/res/values-et-rEE/strings.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="wifi_fail_to_scan" msgid="1265540342578081461">"Võrke ei saa kontrollida"</string>
+ <string name="wifi_security_none" msgid="7985461072596594400">"Puudub"</string>
+ <string name="wifi_remembered" msgid="4955746899347821096">"Salvestatud"</string>
+ <string name="wifi_disabled_generic" msgid="4259794910584943386">"Keelatud"</string>
+ <string name="wifi_disabled_network_failure" msgid="2364951338436007124">"IP seadistamise ebaõnnestumine"</string>
+ <string name="wifi_disabled_wifi_failure" msgid="3081668066612876581">"WiFi-ühenduse viga"</string>
+ <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"Autentimise probleem"</string>
+ <string name="wifi_not_in_range" msgid="1136191511238508967">"Pole vahemikus"</string>
+ <string name="wifi_no_internet" msgid="9151470775868728896">"Interneti-ühendust ei tuvastatud, seadet ei ühendata automaatselt."</string>
+ <string name="saved_network" msgid="4352716707126620811">"Salvestas: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="connected_via_wfa" msgid="3805736726317410714">"Ühendatud WiFi-abi kaudu"</string>
+ <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>
+ <string name="bluetooth_disconnected" msgid="6557104142667339895">"Ühendus katkestatud"</string>
+ <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Ühenduse katkestamine ..."</string>
+ <string name="bluetooth_connecting" msgid="8555009514614320497">"Ühendamine ..."</string>
+ <string name="bluetooth_connected" msgid="6038755206916626419">"Ühendatud"</string>
+ <string name="bluetooth_pairing" msgid="1426882272690346242">"Sidumine ..."</string>
+ <string name="bluetooth_connected_no_headset" msgid="2866994875046035609">"Ühendatud (telefoni pole)"</string>
+ <string name="bluetooth_connected_no_a2dp" msgid="4576188601581440337">"Ühendatud (meediat pole)"</string>
+ <string name="bluetooth_connected_no_map" msgid="6504436917057479986">"Ühendatud (sõnumita juurdepääs)"</string>
+ <string name="bluetooth_connected_no_headset_no_a2dp" msgid="9195757766755553810">"Ühendatud (pole telefoni ega meediat)"</string>
+ <string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Meedia heli"</string>
+ <string name="bluetooth_profile_headset" msgid="8658779596261212609">"Telefoni heli"</string>
+ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"Failiedastus"</string>
+ <string name="bluetooth_profile_hid" msgid="3680729023366986480">"Sisendseade"</string>
+ <string name="bluetooth_profile_pan" msgid="3391606497945147673">"Internetti juurdepääs"</string>
+ <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"Kontakti jagamine"</string>
+ <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"Kasutamine kontaktide jagamiseks"</string>
+ <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"Interneti-ühenduse jagamine"</string>
+ <string name="bluetooth_profile_map" msgid="5465271250454324383">"Juurdepääs sõnumile"</string>
+ <string name="bluetooth_profile_sap" msgid="5764222021851283125">"SIM-kaardi juurdepääs"</string>
+ <string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"Ühendatud meediumiheliga"</string>
+ <string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"Ühendatud telefoniheliga"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"Ühendatud failiedastuse serveriga"</string>
+ <string name="bluetooth_map_profile_summary_connected" msgid="8191407438851351713">"Ühendatud kaardiga"</string>
+ <string name="bluetooth_sap_profile_summary_connected" msgid="8561765057453083838">"Ühendatud SAP-iga"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"Ei ole failiedastuse serveriga ühendatud"</string>
+ <string name="bluetooth_hid_profile_summary_connected" msgid="3381760054215168689">"Ühendatud sisendseade"</string>
+ <string name="bluetooth_pan_user_profile_summary_connected" msgid="4602294638909590612">"Ühendatud seadmega Internetti juurdepääsuks"</string>
+ <string name="bluetooth_pan_nap_profile_summary_connected" msgid="1561383706411975199">"Kohaliku Interneti-ühenduse jagamine seadmega"</string>
+ <string name="bluetooth_pan_profile_summary_use_for" msgid="5664884523822068653">"Interneti-juurdepääsuks kasutamine"</string>
+ <string name="bluetooth_map_profile_summary_use_for" msgid="5154200119919927434">"Kasuta kaardi jaoks"</string>
+ <string name="bluetooth_sap_profile_summary_use_for" msgid="7085362712786907993">"SIM-kaardi juurdepääsuks kasutamine"</string>
+ <string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"Kasuta meediumiheli jaoks"</string>
+ <string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"Kasuta telefoniheli jaoks"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"Kasutage failide edastamiseks"</string>
+ <string name="bluetooth_hid_profile_summary_use_for" msgid="232727040453645139">"Kasutage sisendi jaoks"</string>
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"Seo"</string>
+ <string name="bluetooth_pairing_accept_all_caps" msgid="6061699265220789149">"SEO"</string>
+ <string name="bluetooth_pairing_decline" msgid="4185420413578948140">"Tühista"</string>
+ <string name="bluetooth_pairing_will_share_phonebook" msgid="4982239145676394429">"Sidumine annab ühenduse ajal juurdepääsu kontaktidele ja kõneajaloole."</string>
+ <string name="bluetooth_pairing_error_message" msgid="3748157733635947087">"Ei saanud seadmega <xliff:g id="DEVICE_NAME">%1$s</xliff:g> siduda."</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="8337234855188925274">"Ei saanud seadmega <xliff:g id="DEVICE_NAME">%1$s</xliff:g> siduda vale PIN-koodi või parooli tõttu."</string>
+ <string name="bluetooth_pairing_device_down_error_message" msgid="7870998403045801381">"Seadmega <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ei saa sidet luua."</string>
+ <string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> hülgas sidumise."</string>
+ <string name="accessibility_wifi_off" msgid="1166761729660614716">"WiFi on välja lülitatud."</string>
+ <string name="accessibility_no_wifi" msgid="8834610636137374508">"WiFi-ühendus on katkestatud."</string>
+ <string name="accessibility_wifi_one_bar" msgid="4869376278894301820">"WiFi: üks pulk."</string>
+ <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>
+ <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>
+ <string name="tether_settings_title_usb" msgid="6688416425801386511">"USB jagamine"</string>
+ <string name="tether_settings_title_wifi" msgid="3277144155960302049">"Kantav tööpunkt"</string>
+ <string name="tether_settings_title_bluetooth" msgid="355855408317564420">"Bluetoothi jagamine"</string>
+ <string name="tether_settings_title_usb_bluetooth" msgid="5355828977109785001">"Jagamine"</string>
+ <string name="tether_settings_title_all" msgid="8356136101061143841">"Jagam. ja kant. kuumkoht"</string>
+ <string name="managed_user_title" msgid="8101244883654409696">"Tööprofiil"</string>
+ <string name="user_guest" msgid="8475274842845401871">"Külaline"</string>
+ <string name="unknown" msgid="1592123443519355854">"Tundmatu"</string>
+ <string name="running_process_item_user_label" msgid="3129887865552025943">"Kasutaja: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
+ <string name="launch_defaults_some" msgid="313159469856372621">"Määratud on mõned vaikevalikud"</string>
+ <string name="launch_defaults_none" msgid="4241129108140034876">"Ühtegi vaikevalikut pole määratud"</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-eu-rES/arrays.xml b/packages/SettingsLib/res/values-eu-rES/arrays.xml
new file mode 100644
index 0000000..7746f01
--- /dev/null
+++ b/packages/SettingsLib/res/values-eu-rES/arrays.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="wifi_status">
+ <item msgid="1922181315419294640"></item>
+ <item msgid="8934131797783724664">"Bilatzen…"</item>
+ <item msgid="8513729475867537913">"Konektatzen…"</item>
+ <item msgid="515055375277271756">"Autentifikatzen…"</item>
+ <item msgid="1943354004029184381">"IP helbidea lortzen…"</item>
+ <item msgid="4221763391123233270">"Konektatuta"</item>
+ <item msgid="624838831631122137">"Etenda"</item>
+ <item msgid="7979680559596111948">"Deskonektatzen…"</item>
+ <item msgid="1634960474403853625">"Deskonektatuta"</item>
+ <item msgid="746097431216080650">"Ezin izan da konektatu"</item>
+ <item msgid="6367044185730295334">"Blokeatuta"</item>
+ <item msgid="503942654197908005">"Konexio ahula aldi baterako saihesten"</item>
+ </string-array>
+ <string-array name="wifi_status_with_ssid">
+ <item msgid="7714855332363650812"></item>
+ <item msgid="8878186979715711006">"Bilatzen…"</item>
+ <item msgid="355508996603873860">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> sarera konektatzen…"</item>
+ <item msgid="554971459996405634">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> sarearekin autentifikatzen…"</item>
+ <item msgid="7928343808033020343">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> sarearen IP helbidea lortzen…"</item>
+ <item msgid="8937994881315223448">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> sarera konektatuta"</item>
+ <item msgid="1330262655415760617">"Etenda"</item>
+ <item msgid="7698638434317271902">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> saretik deskonektatzen…"</item>
+ <item msgid="197508606402264311">"Deskonektatuta"</item>
+ <item msgid="8578370891960825148">"Ezin izan da konektatu"</item>
+ <item msgid="5660739516542454527">"Blokeatuta"</item>
+ <item msgid="1805837518286731242">"Konexio ahula aldi baterako saihesten"</item>
+ </string-array>
+</resources>
diff --git a/packages/SettingsLib/res/values-eu-rES/strings.xml b/packages/SettingsLib/res/values-eu-rES/strings.xml
new file mode 100644
index 0000000..9b93111
--- /dev/null
+++ b/packages/SettingsLib/res/values-eu-rES/strings.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="wifi_fail_to_scan" msgid="1265540342578081461">"Ezin dira sareak bilatu"</string>
+ <string name="wifi_security_none" msgid="7985461072596594400">"Bat ere ez"</string>
+ <string name="wifi_remembered" msgid="4955746899347821096">"Gordeta"</string>
+ <string name="wifi_disabled_generic" msgid="4259794910584943386">"Desgaituta"</string>
+ <string name="wifi_disabled_network_failure" msgid="2364951338436007124">"Ezin izan da konfiguratu IP helbidea"</string>
+ <string name="wifi_disabled_wifi_failure" msgid="3081668066612876581">"Ezin izan da konektatu Wi-Fi sarera"</string>
+ <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"Autentifikazio-arazoa"</string>
+ <string name="wifi_not_in_range" msgid="1136191511238508967">"Urrunegi"</string>
+ <string name="wifi_no_internet" msgid="9151470775868728896">"Ez da hauteman Interneterako sarbiderik. Ez da automatikoki berriro konektatuko."</string>
+ <string name="saved_network" msgid="4352716707126620811">"<xliff:g id="NAME">%1$s</xliff:g> aplikazioak gorde du"</string>
+ <string name="connected_via_wfa" msgid="3805736726317410714">"Wi‑Fi laguntzailearen bidez konektatuta"</string>
+ <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>
+ <string name="bluetooth_disconnected" msgid="6557104142667339895">"Deskonektatuta"</string>
+ <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Deskonektatzen…"</string>
+ <string name="bluetooth_connecting" msgid="8555009514614320497">"Konektatzen…"</string>
+ <string name="bluetooth_connected" msgid="6038755206916626419">"Konektatuta"</string>
+ <string name="bluetooth_pairing" msgid="1426882272690346242">"Parekatzen…"</string>
+ <string name="bluetooth_connected_no_headset" msgid="2866994875046035609">"Konektatuta (ez dago telefonorik)"</string>
+ <string name="bluetooth_connected_no_a2dp" msgid="4576188601581440337">"Konektatuta (ez dago euskarririk)"</string>
+ <string name="bluetooth_connected_no_map" msgid="6504436917057479986">"Konektatuta (mezuetarako sarbiderik ez)"</string>
+ <string name="bluetooth_connected_no_headset_no_a2dp" msgid="9195757766755553810">"Konektatuta (ez dago telef./euskarririk)"</string>
+ <string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Euskarriaren audioa"</string>
+ <string name="bluetooth_profile_headset" msgid="8658779596261212609">"Telefonoaren audioa"</string>
+ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"Fitxategi-transferentzia"</string>
+ <string name="bluetooth_profile_hid" msgid="3680729023366986480">"Sarrerako gailua"</string>
+ <string name="bluetooth_profile_pan" msgid="3391606497945147673">"Interneterako sarbidea"</string>
+ <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"Kontaktuak partekatzea"</string>
+ <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"Erabili kontaktuak partekatzeko"</string>
+ <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"Interneteko konexioa partekatzea"</string>
+ <string name="bluetooth_profile_map" msgid="5465271250454324383">"Mezuetarako sarbidea"</string>
+ <string name="bluetooth_profile_sap" msgid="5764222021851283125">"SIM txartelerako sarbidea"</string>
+ <string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"Euskarriaren audiora konektatuta"</string>
+ <string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"Telefonoaren audiora konektatuta"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"Fitxategi-transferentziako zerbitzarira konektatuta"</string>
+ <string name="bluetooth_map_profile_summary_connected" msgid="8191407438851351713">"Mapara konektatuta"</string>
+ <string name="bluetooth_sap_profile_summary_connected" msgid="8561765057453083838">"SAP sarbide-puntura konektatuta"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"Fitxategi-transferentziako zerbitzarira konektatu gabe"</string>
+ <string name="bluetooth_hid_profile_summary_connected" msgid="3381760054215168689">"Sarrerako gailura konektatuta"</string>
+ <string name="bluetooth_pan_user_profile_summary_connected" msgid="4602294638909590612">"Gailura konektatuta Interneteko sarbiderako"</string>
+ <string name="bluetooth_pan_nap_profile_summary_connected" msgid="1561383706411975199">"Tokiko Interneteko konexioa gailu batekin partekatzea"</string>
+ <string name="bluetooth_pan_profile_summary_use_for" msgid="5664884523822068653">"Erabili Interneteko sarbiderako"</string>
+ <string name="bluetooth_map_profile_summary_use_for" msgid="5154200119919927434">"Erabili maparako"</string>
+ <string name="bluetooth_sap_profile_summary_use_for" msgid="7085362712786907993">"Erabili SIM txartelerako sarbiderako"</string>
+ <string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"Erabili euskarriaren audiorako"</string>
+ <string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"Erabili telefonoaren audiorako"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"Erabili fitxategi-transferentziarako"</string>
+ <string name="bluetooth_hid_profile_summary_use_for" msgid="232727040453645139">"Erabili idazketarako"</string>
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"Parekatu"</string>
+ <string name="bluetooth_pairing_accept_all_caps" msgid="6061699265220789149">"PAREKATU"</string>
+ <string name="bluetooth_pairing_decline" msgid="4185420413578948140">"Utzi"</string>
+ <string name="bluetooth_pairing_will_share_phonebook" msgid="4982239145676394429">"Gailuak parekatzen badituzu, batetik besteko kontaktuak eta deien historia atzitu ahal izango dituzu."</string>
+ <string name="bluetooth_pairing_error_message" msgid="3748157733635947087">"Ezin izan da <xliff:g id="DEVICE_NAME">%1$s</xliff:g> gailuarekin parekatu."</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="8337234855188925274">"Ezin izan da <xliff:g id="DEVICE_NAME">%1$s</xliff:g> gailuarekin parekatu PIN edo pasakode okerra idatzi delako."</string>
+ <string name="bluetooth_pairing_device_down_error_message" msgid="7870998403045801381">"Ezin da <xliff:g id="DEVICE_NAME">%1$s</xliff:g> gailuarekin komunikatu."</string>
+ <string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> gailuak bikotetzea ukatu du."</string>
+ <string name="accessibility_wifi_off" msgid="1166761729660614716">"Desaktibatuta dago Wi-Fi konexioa."</string>
+ <string name="accessibility_no_wifi" msgid="8834610636137374508">"Deskonektatu egin da Wi-Fi konexioa."</string>
+ <string name="accessibility_wifi_one_bar" msgid="4869376278894301820">"Wi-Fi sarearen barra bat."</string>
+ <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>
+ <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>
+ <string name="tether_settings_title_usb" msgid="6688416425801386511">"Konexioa partekatzea (USB)"</string>
+ <string name="tether_settings_title_wifi" msgid="3277144155960302049">"Sare publiko eramangarria"</string>
+ <string name="tether_settings_title_bluetooth" msgid="355855408317564420">"Konexioa partekatzea (Bluetooth)"</string>
+ <string name="tether_settings_title_usb_bluetooth" msgid="5355828977109785001">"Konexioa partekatzea"</string>
+ <string name="tether_settings_title_all" msgid="8356136101061143841">"Konexioa partekatzea eta sare publikoak"</string>
+ <string name="managed_user_title" msgid="8101244883654409696">"Laneko profila"</string>
+ <string name="user_guest" msgid="8475274842845401871">"Gonbidatua"</string>
+ <string name="unknown" msgid="1592123443519355854">"Ezezaguna"</string>
+ <string name="running_process_item_user_label" msgid="3129887865552025943">"Erabiltzailea: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
+ <string name="launch_defaults_some" msgid="313159469856372621">"Hobespen lehenetsi batzuk ezarrita daude"</string>
+ <string name="launch_defaults_none" msgid="4241129108140034876">"Ez dago hobespen lehenetsirik ezarrita"</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-fa/arrays.xml b/packages/SettingsLib/res/values-fa/arrays.xml
new file mode 100644
index 0000000..1781c79
--- /dev/null
+++ b/packages/SettingsLib/res/values-fa/arrays.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="wifi_status">
+ <item msgid="1922181315419294640"></item>
+ <item msgid="8934131797783724664">"اسکن کردن..."</item>
+ <item msgid="8513729475867537913">"در حال اتصال…"</item>
+ <item msgid="515055375277271756">"در حال تأیید اعتبار..."</item>
+ <item msgid="1943354004029184381">"در حال دریافت آدرس IP..."</item>
+ <item msgid="4221763391123233270">"متصل"</item>
+ <item msgid="624838831631122137">"معلق"</item>
+ <item msgid="7979680559596111948">"در حال قطع اتصال..."</item>
+ <item msgid="1634960474403853625">"اتصال قطع شد"</item>
+ <item msgid="746097431216080650">"ناموفق"</item>
+ <item msgid="6367044185730295334">"مسدود شده"</item>
+ <item msgid="503942654197908005">"جلوگیری موقت از اتصال ضعیف"</item>
+ </string-array>
+ <string-array name="wifi_status_with_ssid">
+ <item msgid="7714855332363650812"></item>
+ <item msgid="8878186979715711006">"اسکن کردن..."</item>
+ <item msgid="355508996603873860">"در حال اتصال به <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="554971459996405634">"در حال تأیید اعتبار با <xliff:g id="NETWORK_NAME">%1$s</xliff:g>..."</item>
+ <item msgid="7928343808033020343">"در حال دریافت آدرس IP از <xliff:g id="NETWORK_NAME">%1$s</xliff:g>..."</item>
+ <item msgid="8937994881315223448">"متصل شد به <xliff:g id="NETWORK_NAME">%1$s</xliff:g>"</item>
+ <item msgid="1330262655415760617">"معلق"</item>
+ <item msgid="7698638434317271902">"اتصال قطع شد از <xliff:g id="NETWORK_NAME">%1$s</xliff:g>..."</item>
+ <item msgid="197508606402264311">"اتصال قطع شد"</item>
+ <item msgid="8578370891960825148">"ناموفق"</item>
+ <item msgid="5660739516542454527">"مسدود شده"</item>
+ <item msgid="1805837518286731242">"جلوگیری موقت از اتصال ضعیف"</item>
+ </string-array>
+</resources>
diff --git a/packages/SettingsLib/res/values-fa/strings.xml b/packages/SettingsLib/res/values-fa/strings.xml
new file mode 100644
index 0000000..081c776
--- /dev/null
+++ b/packages/SettingsLib/res/values-fa/strings.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="wifi_fail_to_scan" msgid="1265540342578081461">"اسکن شبکهها امکانپذیر نیست"</string>
+ <string name="wifi_security_none" msgid="7985461072596594400">"هیچکدام"</string>
+ <string name="wifi_remembered" msgid="4955746899347821096">"ذخیرهشده"</string>
+ <string name="wifi_disabled_generic" msgid="4259794910584943386">"غیرفعال شد"</string>
+ <string name="wifi_disabled_network_failure" msgid="2364951338436007124">"پیکربندی IP انجام نشد"</string>
+ <string name="wifi_disabled_wifi_failure" msgid="3081668066612876581">"اتصال Wi-Fi برقرار نشد"</string>
+ <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"مشکل تأیید اعتبار"</string>
+ <string name="wifi_not_in_range" msgid="1136191511238508967">"در محدوده نیست"</string>
+ <string name="wifi_no_internet" msgid="9151470775868728896">"دسترسی به اینترنت شناسایی نشد، به صورت خودکار وصل نمیشود."</string>
+ <string name="saved_network" msgid="4352716707126620811">"ذخیرهشده توسط <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="connected_via_wfa" msgid="3805736726317410714">"متصل شده از طریق دستیار Wi-Fi"</string>
+ <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>
+ <string name="bluetooth_disconnected" msgid="6557104142667339895">"اتصال قطع شد"</string>
+ <string name="bluetooth_disconnecting" msgid="8913264760027764974">"در حال قطع اتصال..."</string>
+ <string name="bluetooth_connecting" msgid="8555009514614320497">"در حال اتصال…"</string>
+ <string name="bluetooth_connected" msgid="6038755206916626419">"متصل"</string>
+ <string name="bluetooth_pairing" msgid="1426882272690346242">"در حال مرتبطسازی..."</string>
+ <string name="bluetooth_connected_no_headset" msgid="2866994875046035609">"متصل شد (بدون تلفن)"</string>
+ <string name="bluetooth_connected_no_a2dp" msgid="4576188601581440337">"متصل شد (بدون رسانه)"</string>
+ <string name="bluetooth_connected_no_map" msgid="6504436917057479986">"متصل (عدم دسترسی به پیام)"</string>
+ <string name="bluetooth_connected_no_headset_no_a2dp" msgid="9195757766755553810">"متصل شد (بدون تلفن یا رسانه)"</string>
+ <string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"رسانه صوتی"</string>
+ <string name="bluetooth_profile_headset" msgid="8658779596261212609">"صدای تلفن"</string>
+ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"انتقال فایل"</string>
+ <string name="bluetooth_profile_hid" msgid="3680729023366986480">"دستگاه ورودی"</string>
+ <string name="bluetooth_profile_pan" msgid="3391606497945147673">"دسترسی به اینترنت"</string>
+ <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"اشتراکگذاری مخاطب"</string>
+ <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"استفاده برای اشتراکگذاری مخاطب"</string>
+ <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"اشتراکگذاری اتصال اینترنت"</string>
+ <string name="bluetooth_profile_map" msgid="5465271250454324383">"دسترسی به پیام"</string>
+ <string name="bluetooth_profile_sap" msgid="5764222021851283125">"دسترسی سیمکارت"</string>
+ <string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"به رسانه صوتی متصل شد"</string>
+ <string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"به تلفن صوتی متصل شد"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"به سرور انتقال فایل متصل شد"</string>
+ <string name="bluetooth_map_profile_summary_connected" msgid="8191407438851351713">"به نقشه متصل شد"</string>
+ <string name="bluetooth_sap_profile_summary_connected" msgid="8561765057453083838">"متصل به SAP"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"به سرور انتقال فایل متصل نیست"</string>
+ <string name="bluetooth_hid_profile_summary_connected" msgid="3381760054215168689">"به دستگاه ورودی متصل شد"</string>
+ <string name="bluetooth_pan_user_profile_summary_connected" msgid="4602294638909590612">"برای دسترسی به اینترنت، به دستگاه متصل شد"</string>
+ <string name="bluetooth_pan_nap_profile_summary_connected" msgid="1561383706411975199">"اشتراکگذاری اتصال اینترنت محلی با دستگاه"</string>
+ <string name="bluetooth_pan_profile_summary_use_for" msgid="5664884523822068653">"استفاده برای دسترسی به اینترنت"</string>
+ <string name="bluetooth_map_profile_summary_use_for" msgid="5154200119919927434">"استفاده برای نقشه"</string>
+ <string name="bluetooth_sap_profile_summary_use_for" msgid="7085362712786907993">"استفاده برای دسترسی سیمکارت"</string>
+ <string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"استفاده برای رسانه صوتی"</string>
+ <string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"استفاده برای تلفن صوتی"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"استفاده برای انتقال فایل"</string>
+ <string name="bluetooth_hid_profile_summary_use_for" msgid="232727040453645139">"استفاده برای چاپ"</string>
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"مرتبطسازی"</string>
+ <string name="bluetooth_pairing_accept_all_caps" msgid="6061699265220789149">"مرتبطسازی"</string>
+ <string name="bluetooth_pairing_decline" msgid="4185420413578948140">"لغو"</string>
+ <string name="bluetooth_pairing_will_share_phonebook" msgid="4982239145676394429">"وقتی وصل باشید، مرتبطسازی اجازه دسترسی به مخاطبین و سابقه تماستان را فراهم میکند."</string>
+ <string name="bluetooth_pairing_error_message" msgid="3748157733635947087">"با <xliff:g id="DEVICE_NAME">%1$s</xliff:g> مرتبطسازی نشد."</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="8337234855188925274">"به خاطر یک پین یا کلیدواژه نادرست، مرتبطسازی با <xliff:g id="DEVICE_NAME">%1$s</xliff:g> انجام نشد."</string>
+ <string name="bluetooth_pairing_device_down_error_message" msgid="7870998403045801381">"ارتباط با <xliff:g id="DEVICE_NAME">%1$s</xliff:g> امکانپذیر نیست."</string>
+ <string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> مرتبطسازی را رد کرد."</string>
+ <string name="accessibility_wifi_off" msgid="1166761729660614716">"Wi‑Fi خاموش است."</string>
+ <string name="accessibility_no_wifi" msgid="8834610636137374508">"Wi-Fi قطع شد."</string>
+ <string name="accessibility_wifi_one_bar" msgid="4869376278894301820">"یک نوار برای Wi‑Fi."</string>
+ <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>
+ <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_wifi" msgid="3277144155960302049">"نقطه اتصال قابل حمل"</string>
+ <string name="tether_settings_title_bluetooth" msgid="355855408317564420">"اتصال اینترنت با تلفن همراه بلوتوث"</string>
+ <string name="tether_settings_title_usb_bluetooth" msgid="5355828977109785001">"اتصال به اینترنت با تلفن همراه"</string>
+ <string name="tether_settings_title_all" msgid="8356136101061143841">"تترینگ و نقطه اتصال قابل حمل"</string>
+ <string name="managed_user_title" msgid="8101244883654409696">"نمایه کاری"</string>
+ <string name="user_guest" msgid="8475274842845401871">"مهمان"</string>
+ <string name="unknown" msgid="1592123443519355854">"ناشناس"</string>
+ <string name="running_process_item_user_label" msgid="3129887865552025943">"کاربر: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
+ <string name="launch_defaults_some" msgid="313159469856372621">"بعضی پیشفرضها تنظیم شدهاند"</string>
+ <string name="launch_defaults_none" msgid="4241129108140034876">"هیچ پیشفرضی تنظیم نشده است"</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-fi/arrays.xml b/packages/SettingsLib/res/values-fi/arrays.xml
new file mode 100644
index 0000000..76cf49b
--- /dev/null
+++ b/packages/SettingsLib/res/values-fi/arrays.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="wifi_status">
+ <item msgid="1922181315419294640"></item>
+ <item msgid="8934131797783724664">"Etsitään..."</item>
+ <item msgid="8513729475867537913">"Yhdistetään…"</item>
+ <item msgid="515055375277271756">"Varmennetaan…"</item>
+ <item msgid="1943354004029184381">"Haetaan IP-osoitetta..."</item>
+ <item msgid="4221763391123233270">"Yhdistetty"</item>
+ <item msgid="624838831631122137">"Pidätetty"</item>
+ <item msgid="7979680559596111948">"Katkaistaan yhteyttä..."</item>
+ <item msgid="1634960474403853625">"Yhteys katkaistu"</item>
+ <item msgid="746097431216080650">"Epäonnistui"</item>
+ <item msgid="6367044185730295334">"Estetty"</item>
+ <item msgid="503942654197908005">"Vältetään huonoa yhteyttä tilapäisesti"</item>
+ </string-array>
+ <string-array name="wifi_status_with_ssid">
+ <item msgid="7714855332363650812"></item>
+ <item msgid="8878186979715711006">"Etsitään..."</item>
+ <item msgid="355508996603873860">"Yhdistetään verkkoon <xliff:g id="NETWORK_NAME">%1$s</xliff:g>..."</item>
+ <item msgid="554971459996405634">"Varmennetaan verkkoon <xliff:g id="NETWORK_NAME">%1$s</xliff:g>..."</item>
+ <item msgid="7928343808033020343">"Haetaan IP-osoitetta verkosta <xliff:g id="NETWORK_NAME">%1$s</xliff:g>..."</item>
+ <item msgid="8937994881315223448">"Yhdistetty verkkoon <xliff:g id="NETWORK_NAME">%1$s</xliff:g>"</item>
+ <item msgid="1330262655415760617">"Pidätetty"</item>
+ <item msgid="7698638434317271902">"Katkaistaan yhteys verkosta <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="197508606402264311">"Yhteys katkaistu"</item>
+ <item msgid="8578370891960825148">"Epäonnistui"</item>
+ <item msgid="5660739516542454527">"Estetty"</item>
+ <item msgid="1805837518286731242">"Vältetään huonoa yhteyttä tilapäisesti"</item>
+ </string-array>
+</resources>
diff --git a/packages/SettingsLib/res/values-fi/strings.xml b/packages/SettingsLib/res/values-fi/strings.xml
new file mode 100644
index 0000000..29bcf11
--- /dev/null
+++ b/packages/SettingsLib/res/values-fi/strings.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="wifi_fail_to_scan" msgid="1265540342578081461">"Verkkoja ei voi etsiä."</string>
+ <string name="wifi_security_none" msgid="7985461072596594400">"Ei mitään"</string>
+ <string name="wifi_remembered" msgid="4955746899347821096">"Tallennettu"</string>
+ <string name="wifi_disabled_generic" msgid="4259794910584943386">"Pois käytöstä"</string>
+ <string name="wifi_disabled_network_failure" msgid="2364951338436007124">"IP-kokoonpanovirhe"</string>
+ <string name="wifi_disabled_wifi_failure" msgid="3081668066612876581">"Wi-Fi-yhteysvirhe"</string>
+ <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"Todennusvirhe"</string>
+ <string name="wifi_not_in_range" msgid="1136191511238508967">"Ei kantoalueella"</string>
+ <string name="wifi_no_internet" msgid="9151470775868728896">"Internetyhteyttä ei havaittu, yhteyttä ei muodosteta automaattisesti uudelleen."</string>
+ <string name="saved_network" msgid="4352716707126620811">"Tallentaja: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="connected_via_wfa" msgid="3805736726317410714">"Yhteys muodostettu Wi‑Fi-apurin kautta"</string>
+ <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>
+ <string name="bluetooth_disconnected" msgid="6557104142667339895">"Yhteys katkaistu"</string>
+ <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Katkaistaan yhteyttä..."</string>
+ <string name="bluetooth_connecting" msgid="8555009514614320497">"Yhdistetään…"</string>
+ <string name="bluetooth_connected" msgid="6038755206916626419">"Yhdistetty"</string>
+ <string name="bluetooth_pairing" msgid="1426882272690346242">"Laiteparia muodostetaan..."</string>
+ <string name="bluetooth_connected_no_headset" msgid="2866994875046035609">"Yhdistetty (ei puhelimen ääntä)"</string>
+ <string name="bluetooth_connected_no_a2dp" msgid="4576188601581440337">"Yhdistetty (ei median ääntä)"</string>
+ <string name="bluetooth_connected_no_map" msgid="6504436917057479986">"Yhdistetty (ei MAP)"</string>
+ <string name="bluetooth_connected_no_headset_no_a2dp" msgid="9195757766755553810">"Yhdistetty (ei puhelimen/median ääntä)"</string>
+ <string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Median ääni"</string>
+ <string name="bluetooth_profile_headset" msgid="8658779596261212609">"Puhelimen ääni"</string>
+ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"Tiedostonsiirto"</string>
+ <string name="bluetooth_profile_hid" msgid="3680729023366986480">"Syöttölaite"</string>
+ <string name="bluetooth_profile_pan" msgid="3391606497945147673">"Internetyhteys"</string>
+ <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"Yhteystietojen jakaminen"</string>
+ <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"Käytä yhteystietojen jakamiseen"</string>
+ <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"Internetyhteyden jakaminen"</string>
+ <string name="bluetooth_profile_map" msgid="5465271250454324383">"MAP"</string>
+ <string name="bluetooth_profile_sap" msgid="5764222021851283125">"SIM-kortin käyttö"</string>
+ <string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"Yhdistetty median ääneen"</string>
+ <string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"Yhdistetty puhelimen ääneen"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"Yhdistetty tiedostonsiirtopalvelimeen"</string>
+ <string name="bluetooth_map_profile_summary_connected" msgid="8191407438851351713">"MAP-yhteys"</string>
+ <string name="bluetooth_sap_profile_summary_connected" msgid="8561765057453083838">"SAP-yhteys on muodostettu."</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"Ei yhdistetty tiedostonsiirtopalvelimeen"</string>
+ <string name="bluetooth_hid_profile_summary_connected" msgid="3381760054215168689">"Yhdistetty syöttölaitteeseen"</string>
+ <string name="bluetooth_pan_user_profile_summary_connected" msgid="4602294638909590612">"Yhdistetty laitteen internetyhteyteen"</string>
+ <string name="bluetooth_pan_nap_profile_summary_connected" msgid="1561383706411975199">"Paikallinen internetyhteys jaetaan laitteen kanssa"</string>
+ <string name="bluetooth_pan_profile_summary_use_for" msgid="5664884523822068653">"Käytä internetyhteyteen"</string>
+ <string name="bluetooth_map_profile_summary_use_for" msgid="5154200119919927434">"Käytä MAP-profiilille"</string>
+ <string name="bluetooth_sap_profile_summary_use_for" msgid="7085362712786907993">"Käytetään SIM-kortin käyttöoikeuden määrittämiseen."</string>
+ <string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"Käytä median äänille"</string>
+ <string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"Käytä puhelimen äänille"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"Käytä tiedostojen siirtoon"</string>
+ <string name="bluetooth_hid_profile_summary_use_for" msgid="232727040453645139">"Käytä syöttöön"</string>
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"Muodosta laitepari"</string>
+ <string name="bluetooth_pairing_accept_all_caps" msgid="6061699265220789149">"MUODOSTA LAITEPARI"</string>
+ <string name="bluetooth_pairing_decline" msgid="4185420413578948140">"Peruuta"</string>
+ <string name="bluetooth_pairing_will_share_phonebook" msgid="4982239145676394429">"Laiteparin muodostaminen mahdollistaa yhteystietojen ja soittohistorian käyttämisen yhteyden aikana."</string>
+ <string name="bluetooth_pairing_error_message" msgid="3748157733635947087">"Laiteparin muodostaminen laitteeseen <xliff:g id="DEVICE_NAME">%1$s</xliff:g> epäonnistui."</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="8337234855188925274">"Laiteparia laitteen <xliff:g id="DEVICE_NAME">%1$s</xliff:g> kanssa ei voitu muodostaa, koska PIN-koodi tai avain oli virheellinen."</string>
+ <string name="bluetooth_pairing_device_down_error_message" msgid="7870998403045801381">"Ei yhteyttä laitteeseen <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"Laite <xliff:g id="DEVICE_NAME">%1$s</xliff:g> torjui laitepariyhteyden."</string>
+ <string name="accessibility_wifi_off" msgid="1166761729660614716">"Wi-Fi pois käytöstä"</string>
+ <string name="accessibility_no_wifi" msgid="8834610636137374508">"Ei Wi-Fi-yhteyttä"</string>
+ <string name="accessibility_wifi_one_bar" msgid="4869376278894301820">"Wi-Fi-signaali – yksi palkki"</string>
+ <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>
+ <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>
+ <string name="tether_settings_title_usb" msgid="6688416425801386511">"Jaettu yhteys USB:n kautta"</string>
+ <string name="tether_settings_title_wifi" msgid="3277144155960302049">"Kannettava yhteyspiste"</string>
+ <string name="tether_settings_title_bluetooth" msgid="355855408317564420">"Jaettu Bluetooth-yhteys"</string>
+ <string name="tether_settings_title_usb_bluetooth" msgid="5355828977109785001">"Jaettu yhteys"</string>
+ <string name="tether_settings_title_all" msgid="8356136101061143841">"Jaettu yhteys ja kannettava yhteyspiste"</string>
+ <string name="managed_user_title" msgid="8101244883654409696">"Työprofiili"</string>
+ <string name="user_guest" msgid="8475274842845401871">"Vieras"</string>
+ <string name="unknown" msgid="1592123443519355854">"Tuntematon"</string>
+ <string name="running_process_item_user_label" msgid="3129887865552025943">"Käyttäjä: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
+ <string name="launch_defaults_some" msgid="313159469856372621">"Joitakin oletuksia on asetettu."</string>
+ <string name="launch_defaults_none" msgid="4241129108140034876">"Oletuksia ei asetettu."</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-fr-rCA/arrays.xml b/packages/SettingsLib/res/values-fr-rCA/arrays.xml
new file mode 100644
index 0000000..991d824
--- /dev/null
+++ b/packages/SettingsLib/res/values-fr-rCA/arrays.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="wifi_status">
+ <item msgid="1922181315419294640"></item>
+ <item msgid="8934131797783724664">"Recherche…"</item>
+ <item msgid="8513729475867537913">"Connexion en cours…"</item>
+ <item msgid="515055375277271756">"Authentification en cours…"</item>
+ <item msgid="1943354004029184381">"Récupération de l\'adresse IP…"</item>
+ <item msgid="4221763391123233270">"Connecté"</item>
+ <item msgid="624838831631122137">"Suspendu"</item>
+ <item msgid="7979680559596111948">"Déconnexion…"</item>
+ <item msgid="1634960474403853625">"Déconnecté"</item>
+ <item msgid="746097431216080650">"Échec"</item>
+ <item msgid="6367044185730295334">"Bloqué"</item>
+ <item msgid="503942654197908005">"Mauvaise connexion évitée momentanément"</item>
+ </string-array>
+ <string-array name="wifi_status_with_ssid">
+ <item msgid="7714855332363650812"></item>
+ <item msgid="8878186979715711006">"Recherche…"</item>
+ <item msgid="355508996603873860">"Connexion à <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="554971459996405634">"Authentification avec <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="7928343808033020343">"Obtention de l\'adresse IP à partir de <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="8937994881315223448">"Connecté à <xliff:g id="NETWORK_NAME">%1$s</xliff:g>"</item>
+ <item msgid="1330262655415760617">"Suspendu"</item>
+ <item msgid="7698638434317271902">"Déconnexion de <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="197508606402264311">"Déconnecté"</item>
+ <item msgid="8578370891960825148">"Échec"</item>
+ <item msgid="5660739516542454527">"Bloqué"</item>
+ <item msgid="1805837518286731242">"Mauvaise connexion évitée momentanément"</item>
+ </string-array>
+</resources>
diff --git a/packages/SettingsLib/res/values-fr-rCA/strings.xml b/packages/SettingsLib/res/values-fr-rCA/strings.xml
new file mode 100644
index 0000000..6760af6
--- /dev/null
+++ b/packages/SettingsLib/res/values-fr-rCA/strings.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="wifi_fail_to_scan" msgid="1265540342578081461">"Impossible de rechercher des réseaux."</string>
+ <string name="wifi_security_none" msgid="7985461072596594400">"Aucun"</string>
+ <string name="wifi_remembered" msgid="4955746899347821096">"Enregistré"</string>
+ <string name="wifi_disabled_generic" msgid="4259794910584943386">"Désactivés"</string>
+ <string name="wifi_disabled_network_failure" msgid="2364951338436007124">"Échec de configuration de l\'adresse IP"</string>
+ <string name="wifi_disabled_wifi_failure" msgid="3081668066612876581">"Échec de connexion Wi-Fi"</string>
+ <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"Problème d\'authentification"</string>
+ <string name="wifi_not_in_range" msgid="1136191511238508967">"Hors de portée"</string>
+ <string name="wifi_no_internet" msgid="9151470775868728896">"Aucun accès à Internet détecté, reconnexion automatique impossible"</string>
+ <string name="saved_network" msgid="4352716707126620811">"Enregistrés par <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="connected_via_wfa" msgid="3805736726317410714">"Connecté à l\'aide de l\'assistant Wi-Fi"</string>
+ <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>
+ <string name="bluetooth_disconnected" msgid="6557104142667339895">"Déconnecté"</string>
+ <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Déconnexion…"</string>
+ <string name="bluetooth_connecting" msgid="8555009514614320497">"Connexion en cours…"</string>
+ <string name="bluetooth_connected" msgid="6038755206916626419">"Connecté"</string>
+ <string name="bluetooth_pairing" msgid="1426882272690346242">"Association…"</string>
+ <string name="bluetooth_connected_no_headset" msgid="2866994875046035609">"Connecté (sans audio pour appels tél.)"</string>
+ <string name="bluetooth_connected_no_a2dp" msgid="4576188601581440337">"Connecté (sans audio contenu mutimédia)"</string>
+ <string name="bluetooth_connected_no_map" msgid="6504436917057479986">"Connecté (sans accès aux messages)"</string>
+ <string name="bluetooth_connected_no_headset_no_a2dp" msgid="9195757766755553810">"Connecté (sans audio tel./multimédia)"</string>
+ <string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Paramètres audio du support"</string>
+ <string name="bluetooth_profile_headset" msgid="8658779596261212609">"Paramètres audio du téléphone"</string>
+ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"Transfert de fichier"</string>
+ <string name="bluetooth_profile_hid" msgid="3680729023366986480">"Périphérique d\'entrée"</string>
+ <string name="bluetooth_profile_pan" msgid="3391606497945147673">"Accès Internet"</string>
+ <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"Partage de contact"</string>
+ <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"Utiliser pour le partage de contacts"</string>
+ <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"Partage de connexion Internet"</string>
+ <string name="bluetooth_profile_map" msgid="5465271250454324383">"Accès aux messages"</string>
+ <string name="bluetooth_profile_sap" msgid="5764222021851283125">"Accès à la carte SIM"</string>
+ <string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"Connecté aux paramètres audio du média"</string>
+ <string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"Connecté à l\'audio du téléphone"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"Connexion au serveur de transfert de fichiers"</string>
+ <string name="bluetooth_map_profile_summary_connected" msgid="8191407438851351713">"Connecté à la carte"</string>
+ <string name="bluetooth_sap_profile_summary_connected" msgid="8561765057453083838">"Connecté au point d\'accès au service"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"Connexion au serveur de transfert de fichiers non établie"</string>
+ <string name="bluetooth_hid_profile_summary_connected" msgid="3381760054215168689">"Connecté au périphérique d\'entrée"</string>
+ <string name="bluetooth_pan_user_profile_summary_connected" msgid="4602294638909590612">"Connecté à l\'appareil pour accès Internet"</string>
+ <string name="bluetooth_pan_nap_profile_summary_connected" msgid="1561383706411975199">"Connexion Internet locale partagée"</string>
+ <string name="bluetooth_pan_profile_summary_use_for" msgid="5664884523822068653">"Utiliser pour l\'accès à Internet"</string>
+ <string name="bluetooth_map_profile_summary_use_for" msgid="5154200119919927434">"Utiliser pour la carte"</string>
+ <string name="bluetooth_sap_profile_summary_use_for" msgid="7085362712786907993">"Utiliser pour l\'accès à la carte SIM"</string>
+ <string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"Utiliser pour les paramètres audio du support"</string>
+ <string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"Utiliser pour les paramètres audio du téléphone"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"Utiliser pour le transfert de fichiers"</string>
+ <string name="bluetooth_hid_profile_summary_use_for" msgid="232727040453645139">"Utiliser comme entrée"</string>
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"Associer"</string>
+ <string name="bluetooth_pairing_accept_all_caps" msgid="6061699265220789149">"ASSOCIER"</string>
+ <string name="bluetooth_pairing_decline" msgid="4185420413578948140">"Annuler"</string>
+ <string name="bluetooth_pairing_will_share_phonebook" msgid="4982239145676394429">"L\'association vous permet d\'accéder à vos contacts et à l\'historique des appels lorsque vous êtes connecté."</string>
+ <string name="bluetooth_pairing_error_message" msgid="3748157733635947087">"Impossible d\'associer à <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="8337234855188925274">"Impossible d\'établir l\'association avec <xliff:g id="DEVICE_NAME">%1$s</xliff:g> en raison d\'un NIP ou d\'une clé d\'accès incorrects."</string>
+ <string name="bluetooth_pairing_device_down_error_message" msgid="7870998403045801381">"Impossible d\'établir la communication avec <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"Association refusée par <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+ <string name="accessibility_wifi_off" msgid="1166761729660614716">"Wi-Fi désactivé."</string>
+ <string name="accessibility_no_wifi" msgid="8834610636137374508">"Wi-Fi déconnecté."</string>
+ <string name="accessibility_wifi_one_bar" msgid="4869376278894301820">"Wi-Fi : une barre."</string>
+ <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>
+ <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>
+ <string name="tether_settings_title_usb" msgid="6688416425801386511">"Partage de connexion par USB"</string>
+ <string name="tether_settings_title_wifi" msgid="3277144155960302049">"Point d\'accès Wi-Fi mobile"</string>
+ <string name="tether_settings_title_bluetooth" msgid="355855408317564420">"Via Bluetooth"</string>
+ <string name="tether_settings_title_usb_bluetooth" msgid="5355828977109785001">"Partage de connexion"</string>
+ <string name="tether_settings_title_all" msgid="8356136101061143841">"Partage de connexion et point d\'accès mobile"</string>
+ <string name="managed_user_title" msgid="8101244883654409696">"Profil professionnel"</string>
+ <string name="user_guest" msgid="8475274842845401871">"Invité"</string>
+ <string name="unknown" msgid="1592123443519355854">"Inconnu"</string>
+ <string name="running_process_item_user_label" msgid="3129887865552025943">"Utilisateur : <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
+ <string name="launch_defaults_some" msgid="313159469856372621">"Certaines préférences par défaut définies"</string>
+ <string name="launch_defaults_none" msgid="4241129108140034876">"Aucune préférence par défaut définie"</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-fr/arrays.xml b/packages/SettingsLib/res/values-fr/arrays.xml
new file mode 100644
index 0000000..050793b
--- /dev/null
+++ b/packages/SettingsLib/res/values-fr/arrays.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="wifi_status">
+ <item msgid="1922181315419294640"></item>
+ <item msgid="8934131797783724664">"Recherche…"</item>
+ <item msgid="8513729475867537913">"Connexion…"</item>
+ <item msgid="515055375277271756">"Authentification..."</item>
+ <item msgid="1943354004029184381">"Récupération de l\'adresse IP…"</item>
+ <item msgid="4221763391123233270">"Connecté"</item>
+ <item msgid="624838831631122137">"Interrompu"</item>
+ <item msgid="7979680559596111948">"Déconnexion…"</item>
+ <item msgid="1634960474403853625">"Déconnecté"</item>
+ <item msgid="746097431216080650">"Échec"</item>
+ <item msgid="6367044185730295334">"Bloqué"</item>
+ <item msgid="503942654197908005">"Mauvaise connexion évitée momentanément"</item>
+ </string-array>
+ <string-array name="wifi_status_with_ssid">
+ <item msgid="7714855332363650812"></item>
+ <item msgid="8878186979715711006">"Recherche…"</item>
+ <item msgid="355508996603873860">"Connexion à <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="554971459996405634">"Authentification avec <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="7928343808033020343">"Récupération de l\'adresse IP à partir de <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="8937994881315223448">"Connecté à <xliff:g id="NETWORK_NAME">%1$s</xliff:g>"</item>
+ <item msgid="1330262655415760617">"Interrompu"</item>
+ <item msgid="7698638434317271902">"Déconnexion de <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="197508606402264311">"Déconnecté"</item>
+ <item msgid="8578370891960825148">"Échec"</item>
+ <item msgid="5660739516542454527">"Bloqué"</item>
+ <item msgid="1805837518286731242">"Mauvaise connexion évitée momentanément"</item>
+ </string-array>
+</resources>
diff --git a/packages/SettingsLib/res/values-fr/strings.xml b/packages/SettingsLib/res/values-fr/strings.xml
new file mode 100644
index 0000000..fff50c9
--- /dev/null
+++ b/packages/SettingsLib/res/values-fr/strings.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="wifi_fail_to_scan" msgid="1265540342578081461">"Impossible de rechercher des réseaux."</string>
+ <string name="wifi_security_none" msgid="7985461072596594400">"Aucune"</string>
+ <string name="wifi_remembered" msgid="4955746899347821096">"Enregistré"</string>
+ <string name="wifi_disabled_generic" msgid="4259794910584943386">"Désactivé"</string>
+ <string name="wifi_disabled_network_failure" msgid="2364951338436007124">"Échec de configuration de l\'adresse IP"</string>
+ <string name="wifi_disabled_wifi_failure" msgid="3081668066612876581">"Échec de la connexion Wi-Fi"</string>
+ <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"Problème d\'authentification."</string>
+ <string name="wifi_not_in_range" msgid="1136191511238508967">"Hors de portée"</string>
+ <string name="wifi_no_internet" msgid="9151470775868728896">"Aucun accès à Internet détecté, reconnexion automatique impossible"</string>
+ <string name="saved_network" msgid="4352716707126620811">"Enregistré par <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="connected_via_wfa" msgid="3805736726317410714">"Connecté via l\'assistant Wi‑Fi"</string>
+ <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>
+ <string name="bluetooth_disconnected" msgid="6557104142667339895">"Déconnecté"</string>
+ <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Déconnexion…"</string>
+ <string name="bluetooth_connecting" msgid="8555009514614320497">"Connexion…"</string>
+ <string name="bluetooth_connected" msgid="6038755206916626419">"Connecté"</string>
+ <string name="bluetooth_pairing" msgid="1426882272690346242">"Association…"</string>
+ <string name="bluetooth_connected_no_headset" msgid="2866994875046035609">"Connecté (sans audio pour appels tél.)"</string>
+ <string name="bluetooth_connected_no_a2dp" msgid="4576188601581440337">"Connecté (sans audio contenu mutimédia)"</string>
+ <string name="bluetooth_connected_no_map" msgid="6504436917057479986">"Connecté (sans accès aux messages)"</string>
+ <string name="bluetooth_connected_no_headset_no_a2dp" msgid="9195757766755553810">"Connecté (sans audio tel./multimédia)"</string>
+ <string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Multimédia"</string>
+ <string name="bluetooth_profile_headset" msgid="8658779596261212609">"Appels et notifications"</string>
+ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"Transfert de fichier"</string>
+ <string name="bluetooth_profile_hid" msgid="3680729023366986480">"Périphérique d\'entrée"</string>
+ <string name="bluetooth_profile_pan" msgid="3391606497945147673">"Accès Internet"</string>
+ <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"Partage de contacts"</string>
+ <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"Utiliser pour le partage de contacts"</string>
+ <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"Partage de connexion Internet"</string>
+ <string name="bluetooth_profile_map" msgid="5465271250454324383">"Accès aux messages"</string>
+ <string name="bluetooth_profile_sap" msgid="5764222021851283125">"Accès à la carte SIM"</string>
+ <string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"Connecté aux paramètres audio du média"</string>
+ <string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"Connecté aux paramètres audio du téléphone"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"Connexion au serveur de transfert de fichiers"</string>
+ <string name="bluetooth_map_profile_summary_connected" msgid="8191407438851351713">"Connecté à la carte"</string>
+ <string name="bluetooth_sap_profile_summary_connected" msgid="8561765057453083838">"Connecté au point d\'accès au service"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"Connexion au serveur de transfert de fichiers non établie"</string>
+ <string name="bluetooth_hid_profile_summary_connected" msgid="3381760054215168689">"Connecté au périphérique d\'entrée"</string>
+ <string name="bluetooth_pan_user_profile_summary_connected" msgid="4602294638909590612">"Connecté à l\'appareil pour accès Internet"</string>
+ <string name="bluetooth_pan_nap_profile_summary_connected" msgid="1561383706411975199">"Connexion Internet locale partagée"</string>
+ <string name="bluetooth_pan_profile_summary_use_for" msgid="5664884523822068653">"Utiliser pour l\'accès à Internet"</string>
+ <string name="bluetooth_map_profile_summary_use_for" msgid="5154200119919927434">"Utiliser pour la carte"</string>
+ <string name="bluetooth_sap_profile_summary_use_for" msgid="7085362712786907993">"Utiliser pour l\'accès à la carte SIM"</string>
+ <string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"Utiliser pour les paramètres audio du média"</string>
+ <string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"Utiliser pour les paramètres audio du téléphone"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"Utiliser pour le transfert de fichiers"</string>
+ <string name="bluetooth_hid_profile_summary_use_for" msgid="232727040453645139">"Utiliser comme entrée"</string>
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"Associer"</string>
+ <string name="bluetooth_pairing_accept_all_caps" msgid="6061699265220789149">"ASSOCIER"</string>
+ <string name="bluetooth_pairing_decline" msgid="4185420413578948140">"Annuler"</string>
+ <string name="bluetooth_pairing_will_share_phonebook" msgid="4982239145676394429">"L\'association vous permet d\'accéder à vos contacts et à l\'historique des appels lorsque vous êtes connecté."</string>
+ <string name="bluetooth_pairing_error_message" msgid="3748157733635947087">"Impossible d\'associer à <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="8337234855188925274">"Impossible d\'établir l\'association avec <xliff:g id="DEVICE_NAME">%1$s</xliff:g> en raison d\'un code ou d\'une clé d\'accès incorrects."</string>
+ <string name="bluetooth_pairing_device_down_error_message" msgid="7870998403045801381">"Impossible d\'établir la communication avec <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"Association refusée par <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+ <string name="accessibility_wifi_off" msgid="1166761729660614716">"Wi-Fi désactivé"</string>
+ <string name="accessibility_no_wifi" msgid="8834610636137374508">"Wi-Fi déconnecté"</string>
+ <string name="accessibility_wifi_one_bar" msgid="4869376278894301820">"Signal Wi-Fi faible"</string>
+ <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>
+ <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>
+ <string name="tether_settings_title_usb" msgid="6688416425801386511">"Partage connexion Bluetooth par USB"</string>
+ <string name="tether_settings_title_wifi" msgid="3277144155960302049">"Point d\'accès Wi-Fi mobile"</string>
+ <string name="tether_settings_title_bluetooth" msgid="355855408317564420">"Partage connexion Bluetooth"</string>
+ <string name="tether_settings_title_usb_bluetooth" msgid="5355828977109785001">"Partage de connexion"</string>
+ <string name="tether_settings_title_all" msgid="8356136101061143841">"Partage de connexion"</string>
+ <string name="managed_user_title" msgid="8101244883654409696">"Profil professionnel"</string>
+ <string name="user_guest" msgid="8475274842845401871">"Invité"</string>
+ <string name="unknown" msgid="1592123443519355854">"Inconnu"</string>
+ <string name="running_process_item_user_label" msgid="3129887865552025943">"Utilisateur : <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
+ <string name="launch_defaults_some" msgid="313159469856372621">"Certains paramètres par défaut définis"</string>
+ <string name="launch_defaults_none" msgid="4241129108140034876">"Aucun paramètre par défaut défini"</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-gl-rES/arrays.xml b/packages/SettingsLib/res/values-gl-rES/arrays.xml
new file mode 100644
index 0000000..8122efb
--- /dev/null
+++ b/packages/SettingsLib/res/values-gl-rES/arrays.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="wifi_status">
+ <item msgid="1922181315419294640"></item>
+ <item msgid="8934131797783724664">"Buscando..."</item>
+ <item msgid="8513729475867537913">"Conectando..."</item>
+ <item msgid="515055375277271756">"Autenticando…"</item>
+ <item msgid="1943354004029184381">"Obtendo enderezo IP..."</item>
+ <item msgid="4221763391123233270">"Conectada"</item>
+ <item msgid="624838831631122137">"Suspendida"</item>
+ <item msgid="7979680559596111948">"Desconectando..."</item>
+ <item msgid="1634960474403853625">"Desconectada"</item>
+ <item msgid="746097431216080650">"Incorrecta"</item>
+ <item msgid="6367044185730295334">"Bloqueada"</item>
+ <item msgid="503942654197908005">"Evitando conexión deficiente temporalmente"</item>
+ </string-array>
+ <string-array name="wifi_status_with_ssid">
+ <item msgid="7714855332363650812"></item>
+ <item msgid="8878186979715711006">"Buscando..."</item>
+ <item msgid="355508996603873860">"Conectando con <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="554971459996405634">"Autenticando con <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="7928343808033020343">"Obtendo enderezo IP de <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="8937994881315223448">"Conectado a <xliff:g id="NETWORK_NAME">%1$s</xliff:g>"</item>
+ <item msgid="1330262655415760617">"Suspendida"</item>
+ <item msgid="7698638434317271902">"Desconectando de <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="197508606402264311">"Desconectada"</item>
+ <item msgid="8578370891960825148">"Incorrecta"</item>
+ <item msgid="5660739516542454527">"Bloqueada"</item>
+ <item msgid="1805837518286731242">"Evitando conexión deficiente temporalmente"</item>
+ </string-array>
+</resources>
diff --git a/packages/SettingsLib/res/values-gl-rES/strings.xml b/packages/SettingsLib/res/values-gl-rES/strings.xml
new file mode 100644
index 0000000..ec0e5cb
--- /dev/null
+++ b/packages/SettingsLib/res/values-gl-rES/strings.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="wifi_fail_to_scan" msgid="1265540342578081461">"Non se poden explorar redes"</string>
+ <string name="wifi_security_none" msgid="7985461072596594400">"Ningunha"</string>
+ <string name="wifi_remembered" msgid="4955746899347821096">"Gardada"</string>
+ <string name="wifi_disabled_generic" msgid="4259794910584943386">"Desactivadas"</string>
+ <string name="wifi_disabled_network_failure" msgid="2364951338436007124">"Erro na configuración de IP"</string>
+ <string name="wifi_disabled_wifi_failure" msgid="3081668066612876581">"Erro na conexión wifi"</string>
+ <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"Problema de autenticación"</string>
+ <string name="wifi_not_in_range" msgid="1136191511238508967">"Non está dentro da zona de cobertura"</string>
+ <string name="wifi_no_internet" msgid="9151470775868728896">"Non se detectou acceso a Internet e non se volverá conectar automaticamente."</string>
+ <string name="saved_network" msgid="4352716707126620811">"Redes gardadas por <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="connected_via_wfa" msgid="3805736726317410714">"Conectado ao asistente de wifi"</string>
+ <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>
+ <string name="bluetooth_disconnected" msgid="6557104142667339895">"Desconectado"</string>
+ <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Desconectando..."</string>
+ <string name="bluetooth_connecting" msgid="8555009514614320497">"Conectando..."</string>
+ <string name="bluetooth_connected" msgid="6038755206916626419">"Conectado"</string>
+ <string name="bluetooth_pairing" msgid="1426882272690346242">"Sincronizando..."</string>
+ <string name="bluetooth_connected_no_headset" msgid="2866994875046035609">"Conectado (ningún teléfono)"</string>
+ <string name="bluetooth_connected_no_a2dp" msgid="4576188601581440337">"Conectado (sen ficheiros multimedia)"</string>
+ <string name="bluetooth_connected_no_map" msgid="6504436917057479986">"Conectado (sen acceso ás mensaxes)"</string>
+ <string name="bluetooth_connected_no_headset_no_a2dp" msgid="9195757766755553810">"Conectado (ningún teléfono nin soporte)"</string>
+ <string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Audio multimedia"</string>
+ <string name="bluetooth_profile_headset" msgid="8658779596261212609">"Audio do teléfono"</string>
+ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"Transferencia de ficheiros"</string>
+ <string name="bluetooth_profile_hid" msgid="3680729023366986480">"Dispositivo de entrada"</string>
+ <string name="bluetooth_profile_pan" msgid="3391606497945147673">"Acceso a Internet"</string>
+ <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"Compartir contactos"</string>
+ <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"Utilizar para compartir contactos"</string>
+ <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"Uso compartido da conexión a Internet"</string>
+ <string name="bluetooth_profile_map" msgid="5465271250454324383">"Acceso ás mensaxes"</string>
+ <string name="bluetooth_profile_sap" msgid="5764222021851283125">"Acceso á SIM"</string>
+ <string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"Conectado ao audio multimedia"</string>
+ <string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"Conectado ao audio do teléfono"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"Conectado ao servidor de transferencia de ficheiros"</string>
+ <string name="bluetooth_map_profile_summary_connected" msgid="8191407438851351713">"Conectado ao mapa"</string>
+ <string name="bluetooth_sap_profile_summary_connected" msgid="8561765057453083838">"Conectado a SAP"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"Non conectado co servidor de transferencia de ficheiros"</string>
+ <string name="bluetooth_hid_profile_summary_connected" msgid="3381760054215168689">"Conectado ao dispositivo de entrada"</string>
+ <string name="bluetooth_pan_user_profile_summary_connected" msgid="4602294638909590612">"Conectado ao dispositivo para acceder a Internet"</string>
+ <string name="bluetooth_pan_nap_profile_summary_connected" msgid="1561383706411975199">"Compartindo conexión a Internet co dispositivo"</string>
+ <string name="bluetooth_pan_profile_summary_use_for" msgid="5664884523822068653">"Utilízase para o acceso a Internet"</string>
+ <string name="bluetooth_map_profile_summary_use_for" msgid="5154200119919927434">"Usar para o mapa"</string>
+ <string name="bluetooth_sap_profile_summary_use_for" msgid="7085362712786907993">"Usar para acceso á SIM"</string>
+ <string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"Utilízase para audio multimedia"</string>
+ <string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"Utilízase para o audio do teléfono"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"Utilízase para a transferencia de ficheiros"</string>
+ <string name="bluetooth_hid_profile_summary_use_for" msgid="232727040453645139">"Utilízase para a entrada"</string>
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"Sincronizar"</string>
+ <string name="bluetooth_pairing_accept_all_caps" msgid="6061699265220789149">"SINCRONIZAR"</string>
+ <string name="bluetooth_pairing_decline" msgid="4185420413578948140">"Cancelar"</string>
+ <string name="bluetooth_pairing_will_share_phonebook" msgid="4982239145676394429">"A sincronización garante acceso aos teus contactos e ao historial de chamadas ao estar conectado"</string>
+ <string name="bluetooth_pairing_error_message" msgid="3748157733635947087">"Non se puido sincronizar con <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="8337234855188925274">"Non se puido sincronizar con <xliff:g id="DEVICE_NAME">%1$s</xliff:g> debido a que se introduciu un contrasinal ou PIN incorrecto."</string>
+ <string name="bluetooth_pairing_device_down_error_message" msgid="7870998403045801381">"Non se pode comunicar con <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"Sincronización rexeitada por <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="accessibility_wifi_off" msgid="1166761729660614716">"Wifi desactivada."</string>
+ <string name="accessibility_no_wifi" msgid="8834610636137374508">"Wifi desconectada."</string>
+ <string name="accessibility_wifi_one_bar" msgid="4869376278894301820">"Unha barra de wifi."</string>
+ <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>
+ <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>
+ <string name="tether_settings_title_usb" msgid="6688416425801386511">"Ancoraxe de USB"</string>
+ <string name="tether_settings_title_wifi" msgid="3277144155960302049">"Zona interactiva portátil"</string>
+ <string name="tether_settings_title_bluetooth" msgid="355855408317564420">"Ancoraxe de Bluetooth"</string>
+ <string name="tether_settings_title_usb_bluetooth" msgid="5355828977109785001">"Ancoraxe á rede"</string>
+ <string name="tether_settings_title_all" msgid="8356136101061143841">"Ancoraxe á rede e zona wifi"</string>
+ <string name="managed_user_title" msgid="8101244883654409696">"Perfil do traballo"</string>
+ <string name="user_guest" msgid="8475274842845401871">"Convidado"</string>
+ <string name="unknown" msgid="1592123443519355854">"Descoñecida"</string>
+ <string name="running_process_item_user_label" msgid="3129887865552025943">"Usuario: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
+ <string name="launch_defaults_some" msgid="313159469856372621">"Definíronse algúns valores predeterminados"</string>
+ <string name="launch_defaults_none" msgid="4241129108140034876">"Non se definiu ningún valor predeterminado"</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-gu-rIN/arrays.xml b/packages/SettingsLib/res/values-gu-rIN/arrays.xml
new file mode 100644
index 0000000..0c9e673
--- /dev/null
+++ b/packages/SettingsLib/res/values-gu-rIN/arrays.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="wifi_status">
+ <item msgid="1922181315419294640"></item>
+ <item msgid="8934131797783724664">"સ્કેન કરી રહ્યું છે..."</item>
+ <item msgid="8513729475867537913">"કનેક્ટ થઈ રહ્યું છે…"</item>
+ <item msgid="515055375277271756">"પ્રમાણિત કરી રહ્યું છે..."</item>
+ <item msgid="1943354004029184381">"IP સરનામું મેળવી રહ્યું છે..."</item>
+ <item msgid="4221763391123233270">"કનેક્ટ કર્યું"</item>
+ <item msgid="624838831631122137">"સસ્પેન્ડ કરેલ"</item>
+ <item msgid="7979680559596111948">"ડિસ્કનેક્ટ થઈ રહ્યું છે..."</item>
+ <item msgid="1634960474403853625">"ડિસ્કનેક્ટ કર્યું"</item>
+ <item msgid="746097431216080650">"અસફળ"</item>
+ <item msgid="6367044185730295334">"અવરોધિત"</item>
+ <item msgid="503942654197908005">"નબળા કનેક્શનને અસ્થાયી રૂપે ટાળી રહ્યું છે"</item>
+ </string-array>
+ <string-array name="wifi_status_with_ssid">
+ <item msgid="7714855332363650812"></item>
+ <item msgid="8878186979715711006">"સ્કેન કરી રહ્યું છે..."</item>
+ <item msgid="355508996603873860">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> પર કનેક્ટ થઈ રહ્યું છે..."</item>
+ <item msgid="554971459996405634">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> સાથે પ્રમાણીકૃત થઈ રહ્યું છે…"</item>
+ <item msgid="7928343808033020343">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> તરફથી IP સરનામું મેળવી રહ્યું છે..."</item>
+ <item msgid="8937994881315223448">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> સાથે કનેક્ટ થયાં"</item>
+ <item msgid="1330262655415760617">"સસ્પેન્ડ કરેલ"</item>
+ <item msgid="7698638434317271902">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> થી ડિસ્કનેક્ટ થઈ રહ્યાં છે…"</item>
+ <item msgid="197508606402264311">"ડિસ્કનેક્ટ કર્યું"</item>
+ <item msgid="8578370891960825148">"અસફળ"</item>
+ <item msgid="5660739516542454527">"અવરોધિત"</item>
+ <item msgid="1805837518286731242">"અસ્થાયી રૂપે નબળા કનેક્શનને ટાળી રહ્યું છે"</item>
+ </string-array>
+</resources>
diff --git a/packages/SettingsLib/res/values-gu-rIN/strings.xml b/packages/SettingsLib/res/values-gu-rIN/strings.xml
new file mode 100644
index 0000000..0fcf219
--- /dev/null
+++ b/packages/SettingsLib/res/values-gu-rIN/strings.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="wifi_fail_to_scan" msgid="1265540342578081461">"નેટવર્ક્સ માટે સ્કૅન કરી શકતા નથી"</string>
+ <string name="wifi_security_none" msgid="7985461072596594400">"કોઈ નહીં"</string>
+ <string name="wifi_remembered" msgid="4955746899347821096">"સાચવેલા"</string>
+ <string name="wifi_disabled_generic" msgid="4259794910584943386">"અક્ષમ કર્યો"</string>
+ <string name="wifi_disabled_network_failure" msgid="2364951338436007124">"IP કન્ફિગરેશન નિષ્ફળ"</string>
+ <string name="wifi_disabled_wifi_failure" msgid="3081668066612876581">"WiFi કનેક્શન નિષ્ફળ"</string>
+ <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"પ્રમાણીકરણ સમસ્યા"</string>
+ <string name="wifi_not_in_range" msgid="1136191511238508967">"રેન્જમાં નથી"</string>
+ <string name="wifi_no_internet" msgid="9151470775868728896">"કોઈ ઇન્ટરનેટ અૅક્સેસ શોધાયું નથી, આપમેળે ફરીથી કનેક્ટ કરશે નહીં."</string>
+ <string name="saved_network" msgid="4352716707126620811">"<xliff:g id="NAME">%1$s</xliff:g> દ્વારા સચવાયું"</string>
+ <string name="connected_via_wfa" msgid="3805736726317410714">"Wi-Fi સહાયક દ્વારા કનેક્ટ થયું"</string>
+ <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>
+ <string name="bluetooth_disconnected" msgid="6557104142667339895">"ડિસ્કનેક્ટ કર્યું"</string>
+ <string name="bluetooth_disconnecting" msgid="8913264760027764974">"ડિસ્કનેક્ટ થઈ રહ્યું છે..."</string>
+ <string name="bluetooth_connecting" msgid="8555009514614320497">"કનેક્ટ થઈ રહ્યું છે…"</string>
+ <string name="bluetooth_connected" msgid="6038755206916626419">"કનેક્ટ કર્યું"</string>
+ <string name="bluetooth_pairing" msgid="1426882272690346242">"જોડી કરી રહ્યું છે…"</string>
+ <string name="bluetooth_connected_no_headset" msgid="2866994875046035609">"કનેક્ટ કર્યું (કોઇ ફોન નથી)"</string>
+ <string name="bluetooth_connected_no_a2dp" msgid="4576188601581440337">"કનેક્ટ કર્યું (મીડિયા નથી)"</string>
+ <string name="bluetooth_connected_no_map" msgid="6504436917057479986">"કનેક્ટ કર્યું (કોઇ સંદેશ ઍક્સેસ નથી)"</string>
+ <string name="bluetooth_connected_no_headset_no_a2dp" msgid="9195757766755553810">"કનેક્ટ કરેલ (કોઈ ફોન અથવા મીડિયા નથી)"</string>
+ <string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"મીડિયા ઑડિઓ"</string>
+ <string name="bluetooth_profile_headset" msgid="8658779596261212609">"ફોન ઑડિઓ"</string>
+ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"ફાઇલ સ્થાનાંતરણ"</string>
+ <string name="bluetooth_profile_hid" msgid="3680729023366986480">"ઇનપુટ ઉપકરણ"</string>
+ <string name="bluetooth_profile_pan" msgid="3391606497945147673">"ઇન્ટરનેટ ઍક્સેસ"</string>
+ <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"સંપર્ક શેરિંગ"</string>
+ <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"સંપર્ક શેરિંગ માટે ઉપયોગ કરો"</string>
+ <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"ઇન્ટરનેટ કનેક્શન શેરિંગ"</string>
+ <string name="bluetooth_profile_map" msgid="5465271250454324383">"સંદેશ ઍક્સેસ"</string>
+ <string name="bluetooth_profile_sap" msgid="5764222021851283125">"SIM ઍક્સેસ"</string>
+ <string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"મીડિયા ઑડિઓ સાથે કનેક્ટ કર્યુ"</string>
+ <string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"ફોન ઑડિઓ સાથે કનેક્ટ થયાં"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"ફાઇલ સ્થાનાંતરણ સેવાથી કનેક્ટ થયાં"</string>
+ <string name="bluetooth_map_profile_summary_connected" msgid="8191407438851351713">"નકશા સાથે કનેક્ટ થયું"</string>
+ <string name="bluetooth_sap_profile_summary_connected" msgid="8561765057453083838">"SAP થી કનેક્ટ કરેલ"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"ફાઇલ સ્થાનાંતરણ સેવાથી કનેક્ટ થયેલ નથી"</string>
+ <string name="bluetooth_hid_profile_summary_connected" msgid="3381760054215168689">"ઇનપુટ ઉપકરણ સાથે કનેક્ટ થયાં"</string>
+ <string name="bluetooth_pan_user_profile_summary_connected" msgid="4602294638909590612">"ઇન્ટરનેટ ઍક્સેસ માટે ઉપકરણથી કનેક્ટેડ છે"</string>
+ <string name="bluetooth_pan_nap_profile_summary_connected" msgid="1561383706411975199">"ઉપકરણ સાથે સ્થાનિક ઇન્ટરનેટ કનેક્શન શેર કરે છે"</string>
+ <string name="bluetooth_pan_profile_summary_use_for" msgid="5664884523822068653">"ઇન્ટરનેટ ઍક્સેસ માટે ઉપયોગ કરો"</string>
+ <string name="bluetooth_map_profile_summary_use_for" msgid="5154200119919927434">"નકશા માટે વાપરો"</string>
+ <string name="bluetooth_sap_profile_summary_use_for" msgid="7085362712786907993">"SIM ઍક્સેસ માટે ઉપયોગ કરો"</string>
+ <string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"મીડિયા ઑડિઓ માટે ઉપયોગ કરો"</string>
+ <string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"ફોન ઑડિઓ માટે ઉપયોગ કરો"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"ફાઇલ સ્થાનાંતર માટે ઉપયોગ કરો"</string>
+ <string name="bluetooth_hid_profile_summary_use_for" msgid="232727040453645139">"ઇનપુટ માટે ઉપયોગ કરો"</string>
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"જોડી"</string>
+ <string name="bluetooth_pairing_accept_all_caps" msgid="6061699265220789149">"જોડી કરો"</string>
+ <string name="bluetooth_pairing_decline" msgid="4185420413578948140">"રદ કરો"</string>
+ <string name="bluetooth_pairing_will_share_phonebook" msgid="4982239145676394429">"જોડી કરવી એ કનેક્ટ કરેલ હોય ત્યારે તમારા સંપર્કો અને કૉલ ઇતિહાસની અૅક્સેસ આપે છે."</string>
+ <string name="bluetooth_pairing_error_message" msgid="3748157733635947087">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> સાથે જોડી કરી શક્યાં નહીં."</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="8337234855188925274">"એક ખોટા PIN અથવા પાસકીને કારણે <xliff:g id="DEVICE_NAME">%1$s</xliff:g> સાથે જોડી બનાવી શકાઈ નથી."</string>
+ <string name="bluetooth_pairing_device_down_error_message" msgid="7870998403045801381">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> સાથે સંચાર કરી શકાતો નથી."</string>
+ <string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> દ્વારા જોડી કરવાનું નકાર્યું."</string>
+ <string name="accessibility_wifi_off" msgid="1166761729660614716">"Wifi બંધ."</string>
+ <string name="accessibility_no_wifi" msgid="8834610636137374508">"Wifi ડિસ્કનેક્ટ થયું."</string>
+ <string name="accessibility_wifi_one_bar" msgid="4869376278894301820">"Wifi એક બાર."</string>
+ <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>
+ <string name="process_kernel_label" msgid="3916858646836739323">"Android OS"</string>
+ <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"દૂર કરેલી એપ્લિકેશનો"</string>
+ <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"દૂર કરેલી એપ્લિકેશનો અને વપરાશકર્તાઓ"</string>
+ <string name="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_usb_bluetooth" msgid="5355828977109785001">"ટિથરિંગ"</string>
+ <string name="tether_settings_title_all" msgid="8356136101061143841">"ટિથરિંગ અને પોર્ટેબલ હોટસ્પોટ"</string>
+ <string name="managed_user_title" msgid="8101244883654409696">"કાર્ય પ્રોફાઇલ"</string>
+ <string name="user_guest" msgid="8475274842845401871">"અતિથિ"</string>
+ <string name="unknown" msgid="1592123443519355854">"અજાણ્યું"</string>
+ <string name="running_process_item_user_label" msgid="3129887865552025943">"વપરાશકર્તા: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
+ <string name="launch_defaults_some" msgid="313159469856372621">"કેટલાંક ડિફોલ્ટ્સ સેટ કરેલ છે"</string>
+ <string name="launch_defaults_none" msgid="4241129108140034876">"કોઇ ડિફોલ્ટ્સ સેટ કરેલ નથી"</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-hi/arrays.xml b/packages/SettingsLib/res/values-hi/arrays.xml
new file mode 100644
index 0000000..ec1c57f
--- /dev/null
+++ b/packages/SettingsLib/res/values-hi/arrays.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="wifi_status">
+ <item msgid="1922181315419294640"></item>
+ <item msgid="8934131797783724664">"स्कैन कर रहा है…"</item>
+ <item msgid="8513729475867537913">"कनेक्ट हो रहा है..."</item>
+ <item msgid="515055375277271756">"प्रमाणीकरण कर रहा है…"</item>
+ <item msgid="1943354004029184381">"IP पता प्राप्त कर रहा है…"</item>
+ <item msgid="4221763391123233270">"कनेक्ट किया गया"</item>
+ <item msgid="624838831631122137">"निलंबित"</item>
+ <item msgid="7979680559596111948">"डिस्कनेक्ट हो रहा है..."</item>
+ <item msgid="1634960474403853625">"डिस्कनेक्ट किया गया"</item>
+ <item msgid="746097431216080650">"असफल"</item>
+ <item msgid="6367044185730295334">"अवरोधित"</item>
+ <item msgid="503942654197908005">"खराब कनेक्शन को अस्थायी रूप से अनदेखा कर रहा है"</item>
+ </string-array>
+ <string-array name="wifi_status_with_ssid">
+ <item msgid="7714855332363650812"></item>
+ <item msgid="8878186979715711006">"स्कैन कर रहा है…"</item>
+ <item msgid="355508996603873860">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> से कनेक्ट कर रहा है…"</item>
+ <item msgid="554971459996405634">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> के साथ प्रमाणीकरण कर रहा है…"</item>
+ <item msgid="7928343808033020343">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> से IP पता प्राप्त कर रहा है…"</item>
+ <item msgid="8937994881315223448">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> से कनेक्ट किया गया"</item>
+ <item msgid="1330262655415760617">"निलंबित"</item>
+ <item msgid="7698638434317271902">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> से डिस्कनेक्ट कर रहा है…"</item>
+ <item msgid="197508606402264311">"डिस्कनेक्ट किया गया"</item>
+ <item msgid="8578370891960825148">"असफल"</item>
+ <item msgid="5660739516542454527">"अवरोधित"</item>
+ <item msgid="1805837518286731242">"खराब कनेक्शन को अस्थायी रूप से अनदेखा कर रहा है"</item>
+ </string-array>
+</resources>
diff --git a/packages/SettingsLib/res/values-hi/strings.xml b/packages/SettingsLib/res/values-hi/strings.xml
new file mode 100644
index 0000000..8d5a16b
--- /dev/null
+++ b/packages/SettingsLib/res/values-hi/strings.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="wifi_fail_to_scan" msgid="1265540342578081461">"नेटवर्क के लिए स्कैन नहीं कर सकता"</string>
+ <string name="wifi_security_none" msgid="7985461072596594400">"कोई नहीं"</string>
+ <string name="wifi_remembered" msgid="4955746899347821096">"सहेजा गया"</string>
+ <string name="wifi_disabled_generic" msgid="4259794910584943386">"अक्षम"</string>
+ <string name="wifi_disabled_network_failure" msgid="2364951338436007124">"IP कॉन्फ़िगरेशन की विफलता"</string>
+ <string name="wifi_disabled_wifi_failure" msgid="3081668066612876581">"वाईफ़ाई कनेक्शन विफलता"</string>
+ <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"प्रमाणीकरण समस्या"</string>
+ <string name="wifi_not_in_range" msgid="1136191511238508967">"रेंज में नहीं"</string>
+ <string name="wifi_no_internet" msgid="9151470775868728896">"किसी इंटरनेट कनेक्शन का पता नहीं चला, अपने आप पुन: कनेक्ट नहीं हो सकता."</string>
+ <string name="saved_network" msgid="4352716707126620811">"<xliff:g id="NAME">%1$s</xliff:g> के द्वारा सहेजा गया"</string>
+ <string name="connected_via_wfa" msgid="3805736726317410714">"वाई-फ़ाई सहायक के द्वारा कनेक्ट है"</string>
+ <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>
+ <string name="bluetooth_disconnected" msgid="6557104142667339895">"डिस्कनेक्ट किया गया"</string>
+ <string name="bluetooth_disconnecting" msgid="8913264760027764974">"डिस्कनेक्ट हो रहा है..."</string>
+ <string name="bluetooth_connecting" msgid="8555009514614320497">"कनेक्ट हो रहा है..."</string>
+ <string name="bluetooth_connected" msgid="6038755206916626419">"कनेक्ट किया गया"</string>
+ <string name="bluetooth_pairing" msgid="1426882272690346242">"युग्मित कर रहा है…"</string>
+ <string name="bluetooth_connected_no_headset" msgid="2866994875046035609">"कनेक्ट है (फ़ोन नहीं)"</string>
+ <string name="bluetooth_connected_no_a2dp" msgid="4576188601581440337">"कनेक्ट है (मीडिया नहीं)"</string>
+ <string name="bluetooth_connected_no_map" msgid="6504436917057479986">"कनेक्ट किया गया (कोई संदेश एक्सेस नहीं)"</string>
+ <string name="bluetooth_connected_no_headset_no_a2dp" msgid="9195757766755553810">"कनेक्ट है (फ़ोन या मीडिया नहीं)"</string>
+ <string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"मीडिया ऑडियो"</string>
+ <string name="bluetooth_profile_headset" msgid="8658779596261212609">"फ़ोन ऑडियो"</string>
+ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"फ़ाइल स्थानांतरण"</string>
+ <string name="bluetooth_profile_hid" msgid="3680729023366986480">"इनपुट डिवाइस"</string>
+ <string name="bluetooth_profile_pan" msgid="3391606497945147673">"इंटरनेट पहुंच"</string>
+ <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"संपर्क साझाकरण"</string>
+ <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"संपर्क साझाकरण के लिए उपयोग करें"</string>
+ <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"इंटरनेट कनेक्शन साझाकरण"</string>
+ <string name="bluetooth_profile_map" msgid="5465271250454324383">"संदेश एक्सेस"</string>
+ <string name="bluetooth_profile_sap" msgid="5764222021851283125">"सिम ऐक्सेस"</string>
+ <string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"मीडिया ऑडियो से कनेक्ट किया गया"</string>
+ <string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"फ़ोन ऑडियो से कनेक्ट किया गया"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"फ़ाइल स्थानांतरण सर्वर से कनेक्ट किया गया"</string>
+ <string name="bluetooth_map_profile_summary_connected" msgid="8191407438851351713">"मानचित्र से कनेक्ट किया गया"</string>
+ <string name="bluetooth_sap_profile_summary_connected" msgid="8561765057453083838">"SAP से कनेक्ट किया गया"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"फ़ाइल स्थानांतरण सर्वर से कनेक्ट नहीं किया गया"</string>
+ <string name="bluetooth_hid_profile_summary_connected" msgid="3381760054215168689">"इनपुट डिवाइस से कनेक्ट किया गया"</string>
+ <string name="bluetooth_pan_user_profile_summary_connected" msgid="4602294638909590612">"इंटरनेट पहुंच के लिए डिवाइस से कनेक्ट"</string>
+ <string name="bluetooth_pan_nap_profile_summary_connected" msgid="1561383706411975199">"डिवाइस से स्थानीय इंटरनेट कनेक्शन शेयर किया जा रहा है"</string>
+ <string name="bluetooth_pan_profile_summary_use_for" msgid="5664884523822068653">"इंटरनेट पहुंच के लिए उपयोग करें"</string>
+ <string name="bluetooth_map_profile_summary_use_for" msgid="5154200119919927434">"मानचित्र के लिए उपयोग करें"</string>
+ <string name="bluetooth_sap_profile_summary_use_for" msgid="7085362712786907993">"सिम ऐक्सेस के लिए उपयोग करें"</string>
+ <string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"मीडिया ऑडियो के लिए उपयोग करें"</string>
+ <string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"फ़ोन ऑडियो के लिए उपयोग करें"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"फ़ाइल स्थानांतरण के लिए उपयोग करें"</string>
+ <string name="bluetooth_hid_profile_summary_use_for" msgid="232727040453645139">"इनपुट के लिए उपयोग करें"</string>
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"युग्म बनाएं"</string>
+ <string name="bluetooth_pairing_accept_all_caps" msgid="6061699265220789149">"युग्मित करें"</string>
+ <string name="bluetooth_pairing_decline" msgid="4185420413578948140">"अभी नहीं"</string>
+ <string name="bluetooth_pairing_will_share_phonebook" msgid="4982239145676394429">"कनेक्ट रहने पर, पेयरिंग आपको अपने संपर्कों और कॉल इतिहास की एक्सेस प्रदान करता है."</string>
+ <string name="bluetooth_pairing_error_message" msgid="3748157733635947087">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> के साथ युग्मित नहीं हो सका."</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="8337234855188925274">"गलत पिन या पासकी के कारण <xliff:g id="DEVICE_NAME">%1$s</xliff:g> के साथ युग्मित नहीं हो सका."</string>
+ <string name="bluetooth_pairing_device_down_error_message" msgid="7870998403045801381">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> से संचार नहीं कर सकता."</string>
+ <string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> द्वारा युग्मन अस्वीकृत किया गया."</string>
+ <string name="accessibility_wifi_off" msgid="1166761729660614716">"वाई-फ़ाई बंद है."</string>
+ <string name="accessibility_no_wifi" msgid="8834610636137374508">"वाई-फ़ाई डिस्कनेक्ट है."</string>
+ <string name="accessibility_wifi_one_bar" msgid="4869376278894301820">"वाई-फ़ाई का एक बार है."</string>
+ <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>
+ <string name="process_kernel_label" msgid="3916858646836739323">"Android OS"</string>
+ <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"निकाले गए ऐप्स"</string>
+ <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"ऐप्स और उपयोगकर्ताओं को निकालें"</string>
+ <string name="tether_settings_title_usb" msgid="6688416425801386511">"USB टेदरिंग"</string>
+ <string name="tether_settings_title_wifi" msgid="3277144155960302049">"पोर्टेबल हॉटस्पॉट"</string>
+ <string name="tether_settings_title_bluetooth" msgid="355855408317564420">"ब्लूटूथ टेदरिंग"</string>
+ <string name="tether_settings_title_usb_bluetooth" msgid="5355828977109785001">"टेदरिंग"</string>
+ <string name="tether_settings_title_all" msgid="8356136101061143841">"टेदरिंग और पोर्टेबल हॉटस्पॉट"</string>
+ <string name="managed_user_title" msgid="8101244883654409696">"कार्य प्रोफ़ाइल"</string>
+ <string name="user_guest" msgid="8475274842845401871">"अतिथि"</string>
+ <string name="unknown" msgid="1592123443519355854">"अज्ञात"</string>
+ <string name="running_process_item_user_label" msgid="3129887865552025943">"उपयोगकर्ता: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
+ <string name="launch_defaults_some" msgid="313159469856372621">"कुछ डिफ़ॉल्ट सेट हैं"</string>
+ <string name="launch_defaults_none" msgid="4241129108140034876">"कोई डिफ़ॉल्ट सेट नहीं है"</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-hr/arrays.xml b/packages/SettingsLib/res/values-hr/arrays.xml
new file mode 100644
index 0000000..b7a0d51
--- /dev/null
+++ b/packages/SettingsLib/res/values-hr/arrays.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="wifi_status">
+ <item msgid="1922181315419294640"></item>
+ <item msgid="8934131797783724664">"Skeniranje..."</item>
+ <item msgid="8513729475867537913">"Povezivanje…"</item>
+ <item msgid="515055375277271756">"Autentikacija…"</item>
+ <item msgid="1943354004029184381">"Dohvaćanje IP adrese…"</item>
+ <item msgid="4221763391123233270">"Povezan"</item>
+ <item msgid="624838831631122137">"Obustavljeno"</item>
+ <item msgid="7979680559596111948">"Isključivanje…"</item>
+ <item msgid="1634960474403853625">"Niste povezani"</item>
+ <item msgid="746097431216080650">"Neuspješno"</item>
+ <item msgid="6367044185730295334">"Blokirano"</item>
+ <item msgid="503942654197908005">"Privremeno izbjegavanje loše veze"</item>
+ </string-array>
+ <string-array name="wifi_status_with_ssid">
+ <item msgid="7714855332363650812"></item>
+ <item msgid="8878186979715711006">"Skeniranje..."</item>
+ <item msgid="355508996603873860">"Povezivanje na mrežu <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="554971459996405634">"Autentikacija s mrežom <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="7928343808033020343">"Dohvaćanje IP adrese s mreže <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="8937994881315223448">"Povezano s mrežom <xliff:g id="NETWORK_NAME">%1$s</xliff:g>"</item>
+ <item msgid="1330262655415760617">"Obustavljeno"</item>
+ <item msgid="7698638434317271902">"Isključivanje iz mreže <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="197508606402264311">"Niste povezani"</item>
+ <item msgid="8578370891960825148">"Neuspješno"</item>
+ <item msgid="5660739516542454527">"Blokirano"</item>
+ <item msgid="1805837518286731242">"Privremeno izbjegavanje loše veze"</item>
+ </string-array>
+</resources>
diff --git a/packages/SettingsLib/res/values-hr/strings.xml b/packages/SettingsLib/res/values-hr/strings.xml
new file mode 100644
index 0000000..e497d3a
--- /dev/null
+++ b/packages/SettingsLib/res/values-hr/strings.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="wifi_fail_to_scan" msgid="1265540342578081461">"Skeniranje mreža nije moguće"</string>
+ <string name="wifi_security_none" msgid="7985461072596594400">"Nema"</string>
+ <string name="wifi_remembered" msgid="4955746899347821096">"Spremljeno"</string>
+ <string name="wifi_disabled_generic" msgid="4259794910584943386">"Onemogućeno"</string>
+ <string name="wifi_disabled_network_failure" msgid="2364951338436007124">"Konfiguracija IP-a nije uspjela"</string>
+ <string name="wifi_disabled_wifi_failure" msgid="3081668066612876581">"Povezivanje s Wi-Fi-jem nije uspjelo"</string>
+ <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"Problem u autentifikaciji"</string>
+ <string name="wifi_not_in_range" msgid="1136191511238508967">"Nije u rasponu"</string>
+ <string name="wifi_no_internet" msgid="9151470775868728896">"Pristup internetu nije otkriven. Nema automatskog ponovnog povezivanja."</string>
+ <string name="saved_network" msgid="4352716707126620811">"Spremljeno: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="connected_via_wfa" msgid="3805736726317410714">"Povezani putem pomoćnika za Wi-Fi"</string>
+ <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>
+ <string name="bluetooth_disconnected" msgid="6557104142667339895">"Niste povezani"</string>
+ <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Isključivanje…"</string>
+ <string name="bluetooth_connecting" msgid="8555009514614320497">"Povezivanje…"</string>
+ <string name="bluetooth_connected" msgid="6038755206916626419">"Povezan"</string>
+ <string name="bluetooth_pairing" msgid="1426882272690346242">"Uparivanje…"</string>
+ <string name="bluetooth_connected_no_headset" msgid="2866994875046035609">"Povezano (bez telefona)"</string>
+ <string name="bluetooth_connected_no_a2dp" msgid="4576188601581440337">"Povezano (bez medija)"</string>
+ <string name="bluetooth_connected_no_map" msgid="6504436917057479986">"Povezano (bez pristupa porukama)"</string>
+ <string name="bluetooth_connected_no_headset_no_a2dp" msgid="9195757766755553810">"Povezano (bez telefona ili medija)"</string>
+ <string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Medijski zvuk"</string>
+ <string name="bluetooth_profile_headset" msgid="8658779596261212609">"Zvuk telefona"</string>
+ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"Prijenos datoteke"</string>
+ <string name="bluetooth_profile_hid" msgid="3680729023366986480">"Ulazni uređaj"</string>
+ <string name="bluetooth_profile_pan" msgid="3391606497945147673">"Pristup internetu"</string>
+ <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"Dijeljenje kontakata"</string>
+ <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"Upotrijebi za dijeljenje kontakata"</string>
+ <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"Dijeljenje internetske veze"</string>
+ <string name="bluetooth_profile_map" msgid="5465271250454324383">"Pristup porukama"</string>
+ <string name="bluetooth_profile_sap" msgid="5764222021851283125">"Pristup SIM-u"</string>
+ <string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"Povezano s medijskim zvukom"</string>
+ <string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"Povezano sa telefonskim zvukom"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"Povezano s poslužiteljem za prijenos datoteka"</string>
+ <string name="bluetooth_map_profile_summary_connected" msgid="8191407438851351713">"Povezano s kartom"</string>
+ <string name="bluetooth_sap_profile_summary_connected" msgid="8561765057453083838">"Povezano sa SAP-om"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"Niste povezani s poslužiteljem za prijenos datoteka"</string>
+ <string name="bluetooth_hid_profile_summary_connected" msgid="3381760054215168689">"Povezano s ulaznim uređajem"</string>
+ <string name="bluetooth_pan_user_profile_summary_connected" msgid="4602294638909590612">"Povezano s uređajem za pristup internetu"</string>
+ <string name="bluetooth_pan_nap_profile_summary_connected" msgid="1561383706411975199">"Dijeljenje lokalne internetske veze s uređajem"</string>
+ <string name="bluetooth_pan_profile_summary_use_for" msgid="5664884523822068653">"Upotrijebi za pristup internetu"</string>
+ <string name="bluetooth_map_profile_summary_use_for" msgid="5154200119919927434">"Upotreba za kartu"</string>
+ <string name="bluetooth_sap_profile_summary_use_for" msgid="7085362712786907993">"Upotrijebi za pristup SIM-u"</string>
+ <string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"Koristi za medijski zvuk"</string>
+ <string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"Koristi za telefonski zvuk"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"Koristi za prijenos datoteke"</string>
+ <string name="bluetooth_hid_profile_summary_use_for" msgid="232727040453645139">"Upotrijebi za ulaz"</string>
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"Upari"</string>
+ <string name="bluetooth_pairing_accept_all_caps" msgid="6061699265220789149">"UPARI"</string>
+ <string name="bluetooth_pairing_decline" msgid="4185420413578948140">"Odustani"</string>
+ <string name="bluetooth_pairing_will_share_phonebook" msgid="4982239145676394429">"Uparivanje omogućuje pristup vašim kontaktima i povijesti poziva dok ste povezani."</string>
+ <string name="bluetooth_pairing_error_message" msgid="3748157733635947087">"Uparivanje s uređajem <xliff:g id="DEVICE_NAME">%1$s</xliff:g> nije bilo moguće."</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="8337234855188925274">"Uparivanje s uređajem <xliff:g id="DEVICE_NAME">%1$s</xliff:g> nije bilo moguće zbog netočnog PIN-a ili zaporke."</string>
+ <string name="bluetooth_pairing_device_down_error_message" msgid="7870998403045801381">"Komunikacija s uređajem <xliff:g id="DEVICE_NAME">%1$s</xliff:g> nije moguća."</string>
+ <string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"Uparivanje odbio uređaj <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="accessibility_wifi_off" msgid="1166761729660614716">"Wi-Fi je isključen."</string>
+ <string name="accessibility_no_wifi" msgid="8834610636137374508">"Wi-Fi je isključen."</string>
+ <string name="accessibility_wifi_one_bar" msgid="4869376278894301820">"Wi-Fi signal ima jedan stupac."</string>
+ <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>
+ <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>
+ <string name="tether_settings_title_usb" msgid="6688416425801386511">"USB dijeljenje veze"</string>
+ <string name="tether_settings_title_wifi" msgid="3277144155960302049">"Prijen. pristupna točka"</string>
+ <string name="tether_settings_title_bluetooth" msgid="355855408317564420">"Dijeljenje Bluetoothom veze"</string>
+ <string name="tether_settings_title_usb_bluetooth" msgid="5355828977109785001">"Dijeljenje veze"</string>
+ <string name="tether_settings_title_all" msgid="8356136101061143841">"Dijeljenje veze i žarišna točka"</string>
+ <string name="managed_user_title" msgid="8101244883654409696">"Radni profil"</string>
+ <string name="user_guest" msgid="8475274842845401871">"Gost"</string>
+ <string name="unknown" msgid="1592123443519355854">"Nepoznato"</string>
+ <string name="running_process_item_user_label" msgid="3129887865552025943">"Korisnik: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
+ <string name="launch_defaults_some" msgid="313159469856372621">"Postavljene su neke zadane postavke"</string>
+ <string name="launch_defaults_none" msgid="4241129108140034876">"Nema zadanih postavki"</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-hu/arrays.xml b/packages/SettingsLib/res/values-hu/arrays.xml
new file mode 100644
index 0000000..681489e
--- /dev/null
+++ b/packages/SettingsLib/res/values-hu/arrays.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="wifi_status">
+ <item msgid="1922181315419294640"></item>
+ <item msgid="8934131797783724664">"Keresés..."</item>
+ <item msgid="8513729475867537913">"Kapcsolódás…"</item>
+ <item msgid="515055375277271756">"Hitelesítés..."</item>
+ <item msgid="1943354004029184381">"IP-cím lekérése..."</item>
+ <item msgid="4221763391123233270">"Csatlakozva"</item>
+ <item msgid="624838831631122137">"Felfüggesztve"</item>
+ <item msgid="7979680559596111948">"Kapcsolat bontása..."</item>
+ <item msgid="1634960474403853625">"Nincs kapcsolat"</item>
+ <item msgid="746097431216080650">"Sikertelen"</item>
+ <item msgid="6367044185730295334">"Letiltva"</item>
+ <item msgid="503942654197908005">"A rossz minőségű kapcsolatok átmeneti elkerülése"</item>
+ </string-array>
+ <string-array name="wifi_status_with_ssid">
+ <item msgid="7714855332363650812"></item>
+ <item msgid="8878186979715711006">"Keresés..."</item>
+ <item msgid="355508996603873860">"Csatlakozás a(z) <xliff:g id="NETWORK_NAME">%1$s</xliff:g> hálózathoz..."</item>
+ <item msgid="554971459996405634">"Hitelesítés a(z) <xliff:g id="NETWORK_NAME">%1$s</xliff:g> hálózaton..."</item>
+ <item msgid="7928343808033020343">"IP-cím lekérése a(z) <xliff:g id="NETWORK_NAME">%1$s</xliff:g> hálózattól..."</item>
+ <item msgid="8937994881315223448">"Kapcsolódva a(z) <xliff:g id="NETWORK_NAME">%1$s</xliff:g> hálózathoz"</item>
+ <item msgid="1330262655415760617">"Felfüggesztve"</item>
+ <item msgid="7698638434317271902">"Kapcsolat bontása <xliff:g id="NETWORK_NAME">%1$s</xliff:g> hálózattal..."</item>
+ <item msgid="197508606402264311">"Nincs kapcsolat"</item>
+ <item msgid="8578370891960825148">"Sikertelen"</item>
+ <item msgid="5660739516542454527">"Letiltva"</item>
+ <item msgid="1805837518286731242">"A rossz minőségű kapcsolatok átmeneti elkerülése"</item>
+ </string-array>
+</resources>
diff --git a/packages/SettingsLib/res/values-hu/strings.xml b/packages/SettingsLib/res/values-hu/strings.xml
new file mode 100644
index 0000000..aefc45f
--- /dev/null
+++ b/packages/SettingsLib/res/values-hu/strings.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="wifi_fail_to_scan" msgid="1265540342578081461">"Nem lehet beolvasni a hálózatokat"</string>
+ <string name="wifi_security_none" msgid="7985461072596594400">"Nincs"</string>
+ <string name="wifi_remembered" msgid="4955746899347821096">"Mentve"</string>
+ <string name="wifi_disabled_generic" msgid="4259794910584943386">"Letiltva"</string>
+ <string name="wifi_disabled_network_failure" msgid="2364951338436007124">"IP-konfigurációs hiba"</string>
+ <string name="wifi_disabled_wifi_failure" msgid="3081668066612876581">"Wi-Fi-kapcsolati hiba"</string>
+ <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"Azonosítási probléma"</string>
+ <string name="wifi_not_in_range" msgid="1136191511238508967">"Hatókörön kívül"</string>
+ <string name="wifi_no_internet" msgid="9151470775868728896">"Nincs érzékelhető internet-hozzáférés, ezért nem kapcsolódik újra automatikusan."</string>
+ <string name="saved_network" msgid="4352716707126620811">"Mentette: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="connected_via_wfa" msgid="3805736726317410714">"Csatlakozva Wi‑Fi-segéddel"</string>
+ <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>
+ <string name="bluetooth_disconnected" msgid="6557104142667339895">"Szétkapcsolva"</string>
+ <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Szétkapcsolás..."</string>
+ <string name="bluetooth_connecting" msgid="8555009514614320497">"Csatlakozás…"</string>
+ <string name="bluetooth_connected" msgid="6038755206916626419">"Csatlakozva"</string>
+ <string name="bluetooth_pairing" msgid="1426882272690346242">"Párosítás..."</string>
+ <string name="bluetooth_connected_no_headset" msgid="2866994875046035609">"Csatlakoztatva (nincs telefon)"</string>
+ <string name="bluetooth_connected_no_a2dp" msgid="4576188601581440337">"Csatlakoztatva (nincs hordozó)"</string>
+ <string name="bluetooth_connected_no_map" msgid="6504436917057479986">"Csatlakoztatva (nincs üzenet-hozzáférés)"</string>
+ <string name="bluetooth_connected_no_headset_no_a2dp" msgid="9195757766755553810">"Csatlakoztatva (nincs telefon vagy hordozó)"</string>
+ <string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Média audió"</string>
+ <string name="bluetooth_profile_headset" msgid="8658779596261212609">"Telefon hangja"</string>
+ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"Fájlátvitel"</string>
+ <string name="bluetooth_profile_hid" msgid="3680729023366986480">"Beviteli eszköz"</string>
+ <string name="bluetooth_profile_pan" msgid="3391606497945147673">"Internetelérés"</string>
+ <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"Névjegyek megosztása"</string>
+ <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"Használja a névjegyek megosztására"</string>
+ <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"Internetkapcsolat megosztása"</string>
+ <string name="bluetooth_profile_map" msgid="5465271250454324383">"Üzenet-hozzáférés"</string>
+ <string name="bluetooth_profile_sap" msgid="5764222021851283125">"SIM-elérés"</string>
+ <string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"Csatlakoztatva az eszköz hangjához"</string>
+ <string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"Csatlakoztatva a telefon hangjához"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"Csatlakozva a fájlküldő szerverhez"</string>
+ <string name="bluetooth_map_profile_summary_connected" msgid="8191407438851351713">"Csatlakoztatva a térképhez"</string>
+ <string name="bluetooth_sap_profile_summary_connected" msgid="8561765057453083838">"Csatlakozva az SAP-hoz"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"Nincs csatlakozva a fájlküldő szerverhez"</string>
+ <string name="bluetooth_hid_profile_summary_connected" msgid="3381760054215168689">"Beviteli eszköz csatlakoztatva"</string>
+ <string name="bluetooth_pan_user_profile_summary_connected" msgid="4602294638909590612">"Eszközhöz csatlakozik az interneteléréshez"</string>
+ <string name="bluetooth_pan_nap_profile_summary_connected" msgid="1561383706411975199">"Helyi internetkapcsolat megosztva az eszközzel"</string>
+ <string name="bluetooth_pan_profile_summary_use_for" msgid="5664884523822068653">"Használat internetelérésre"</string>
+ <string name="bluetooth_map_profile_summary_use_for" msgid="5154200119919927434">"Használat a térképhez"</string>
+ <string name="bluetooth_sap_profile_summary_use_for" msgid="7085362712786907993">"Használat SIM-elérésre"</string>
+ <string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"Felhasználás az eszköz hangjához"</string>
+ <string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"Felhasználás a telefon hangjához"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"Felhasználás fájlátvitelre"</string>
+ <string name="bluetooth_hid_profile_summary_use_for" msgid="232727040453645139">"Használat beviteli eszközként"</string>
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"Párosítás"</string>
+ <string name="bluetooth_pairing_accept_all_caps" msgid="6061699265220789149">"PÁROSÍTÁS"</string>
+ <string name="bluetooth_pairing_decline" msgid="4185420413578948140">"Mégse"</string>
+ <string name="bluetooth_pairing_will_share_phonebook" msgid="4982239145676394429">"A párosítás hozzáférést biztosít a névjegyekhez és híváselőzményekhez összekapcsolt állapotban."</string>
+ <string name="bluetooth_pairing_error_message" msgid="3748157733635947087">"Nem lehet párosítani a(z) <xliff:g id="DEVICE_NAME">%1$s</xliff:g> eszközzel."</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="8337234855188925274">"A párosítás sikertelen volt a(z) <xliff:g id="DEVICE_NAME">%1$s</xliff:g> eszközzel hibás PIN kód vagy jelszó miatt."</string>
+ <string name="bluetooth_pairing_device_down_error_message" msgid="7870998403045801381">"Nem lehet kommunikálni a(z) <xliff:g id="DEVICE_NAME">%1$s</xliff:g> eszközzel."</string>
+ <string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"A(z) <xliff:g id="DEVICE_NAME">%1$s</xliff:g> eszköz elutasította a párosítást."</string>
+ <string name="accessibility_wifi_off" msgid="1166761729660614716">"Wi-Fi kikapcsolva."</string>
+ <string name="accessibility_no_wifi" msgid="8834610636137374508">"Nincs Wi-Fi-kapcsolat."</string>
+ <string name="accessibility_wifi_one_bar" msgid="4869376278894301820">"Wi-Fi-jel: egy sáv."</string>
+ <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>
+ <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>
+ <string name="tether_settings_title_usb" msgid="6688416425801386511">"USB-megosztás"</string>
+ <string name="tether_settings_title_wifi" msgid="3277144155960302049">"Hordozható hotspot"</string>
+ <string name="tether_settings_title_bluetooth" msgid="355855408317564420">"Bluetooth megosztása"</string>
+ <string name="tether_settings_title_usb_bluetooth" msgid="5355828977109785001">"Megosztás"</string>
+ <string name="tether_settings_title_all" msgid="8356136101061143841">"Megosztás és hotspot"</string>
+ <string name="managed_user_title" msgid="8101244883654409696">"Munkaprofil"</string>
+ <string name="user_guest" msgid="8475274842845401871">"Vendég"</string>
+ <string name="unknown" msgid="1592123443519355854">"Ismeretlen"</string>
+ <string name="running_process_item_user_label" msgid="3129887865552025943">"Felhasználó: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
+ <string name="launch_defaults_some" msgid="313159469856372621">"Van néhány alapbeállítás"</string>
+ <string name="launch_defaults_none" msgid="4241129108140034876">"Nincs alapbeállítás"</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-hy-rAM/arrays.xml b/packages/SettingsLib/res/values-hy-rAM/arrays.xml
new file mode 100644
index 0000000..483e9d3
--- /dev/null
+++ b/packages/SettingsLib/res/values-hy-rAM/arrays.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="wifi_status">
+ <item msgid="1922181315419294640"></item>
+ <item msgid="8934131797783724664">"Սկանավորում…"</item>
+ <item msgid="8513729475867537913">"Միանում է..."</item>
+ <item msgid="515055375277271756">"Նույնականացում…"</item>
+ <item msgid="1943354004029184381">"IP հասցեն գտնվում է...."</item>
+ <item msgid="4221763391123233270">"Միացված է"</item>
+ <item msgid="624838831631122137">"Կասեցված է"</item>
+ <item msgid="7979680559596111948">"Անջատվում է…"</item>
+ <item msgid="1634960474403853625">"Անջատված է"</item>
+ <item msgid="746097431216080650">"Անհաջող"</item>
+ <item msgid="6367044185730295334">"Արգելափակված"</item>
+ <item msgid="503942654197908005">"Ժամանակավորապես խուսափելով թույլ կապից"</item>
+ </string-array>
+ <string-array name="wifi_status_with_ssid">
+ <item msgid="7714855332363650812"></item>
+ <item msgid="8878186979715711006">"Սկանավորում...."</item>
+ <item msgid="355508996603873860">"Միանում է <xliff:g id="NETWORK_NAME">%1$s</xliff:g>-ին…"</item>
+ <item msgid="554971459996405634">"Նույնականացում <xliff:g id="NETWORK_NAME">%1$s</xliff:g>-ի հետ…"</item>
+ <item msgid="7928343808033020343">"IP հասցեի ստացում <xliff:g id="NETWORK_NAME">%1$s</xliff:g>-ից…"</item>
+ <item msgid="8937994881315223448">"Միացված է <xliff:g id="NETWORK_NAME">%1$s</xliff:g>-ին"</item>
+ <item msgid="1330262655415760617">"Անջատված"</item>
+ <item msgid="7698638434317271902">"Անջատվում է <xliff:g id="NETWORK_NAME">%1$s</xliff:g>-ից…"</item>
+ <item msgid="197508606402264311">"Անջատված"</item>
+ <item msgid="8578370891960825148">"Անհաջող"</item>
+ <item msgid="5660739516542454527">"Արգելափակված"</item>
+ <item msgid="1805837518286731242">"Վատ ցանցից ժամանակավոր խուսափում"</item>
+ </string-array>
+</resources>
diff --git a/packages/SettingsLib/res/values-hy-rAM/strings.xml b/packages/SettingsLib/res/values-hy-rAM/strings.xml
new file mode 100644
index 0000000..7df405a
--- /dev/null
+++ b/packages/SettingsLib/res/values-hy-rAM/strings.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="wifi_fail_to_scan" msgid="1265540342578081461">"Հնարավոր չէ սկանավորել ցանցերը"</string>
+ <string name="wifi_security_none" msgid="7985461072596594400">"Ոչ մեկը"</string>
+ <string name="wifi_remembered" msgid="4955746899347821096">"Պահված է"</string>
+ <string name="wifi_disabled_generic" msgid="4259794910584943386">"Անջատված"</string>
+ <string name="wifi_disabled_network_failure" msgid="2364951338436007124">"IP կարգավորման ձախողում"</string>
+ <string name="wifi_disabled_wifi_failure" msgid="3081668066612876581">"WiFi կապի ձախողում"</string>
+ <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"Նույնականացման խնդիր"</string>
+ <string name="wifi_not_in_range" msgid="1136191511238508967">"Ընդգրկույթից դուրս է"</string>
+ <string name="wifi_no_internet" msgid="9151470775868728896">"Ինտերնետի հասանելիություն չկա. ավտոմատ կերպով կրկին չի միանա:"</string>
+ <string name="saved_network" msgid="4352716707126620811">"Պահել է հետևյալ օգտվողը՝ <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="connected_via_wfa" msgid="3805736726317410714">"Կապակցված է Wi‑Fi Օգնականի միջոցով"</string>
+ <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>
+ <string name="bluetooth_disconnected" msgid="6557104142667339895">"Անջատված է"</string>
+ <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Անջատվում է..."</string>
+ <string name="bluetooth_connecting" msgid="8555009514614320497">"Միանում է..."</string>
+ <string name="bluetooth_connected" msgid="6038755206916626419">"Միացված է"</string>
+ <string name="bluetooth_pairing" msgid="1426882272690346242">"Զուգավորում..."</string>
+ <string name="bluetooth_connected_no_headset" msgid="2866994875046035609">"Միացված (առանց հեռախոսի)"</string>
+ <string name="bluetooth_connected_no_a2dp" msgid="4576188601581440337">"Միացված է (առանց մեդիա)"</string>
+ <string name="bluetooth_connected_no_map" msgid="6504436917057479986">"Միացված է (հաղորդագրությանը մուտք չկա)"</string>
+ <string name="bluetooth_connected_no_headset_no_a2dp" msgid="9195757766755553810">"Միացված է (առանց հեռախոսի և մեդիայի)"</string>
+ <string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Մեդիա աուդիո"</string>
+ <string name="bluetooth_profile_headset" msgid="8658779596261212609">"Հեռախոսի աուդիո"</string>
+ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"Ֆայլերի փոխանցում"</string>
+ <string name="bluetooth_profile_hid" msgid="3680729023366986480">"Ներմուծման սարք"</string>
+ <string name="bluetooth_profile_pan" msgid="3391606497945147673">"Ինտերնետի մուտք"</string>
+ <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"Կոնտակտի համօգտագործում"</string>
+ <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"Օգտագործել կոնտակտի համօգտագործման համար"</string>
+ <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"Ինտերնետ կապի տարածում"</string>
+ <string name="bluetooth_profile_map" msgid="5465271250454324383">"Մուտք հաղորդագրություն"</string>
+ <string name="bluetooth_profile_sap" msgid="5764222021851283125">"SIM քարտի հասանելիություն"</string>
+ <string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"Միացված է մեդիա աուդիոյին"</string>
+ <string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"Միացված է հեռախոսի ձայնային տվյալներին"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"Միացված է ֆայլերի փոխանցման սերվերին"</string>
+ <string name="bluetooth_map_profile_summary_connected" msgid="8191407438851351713">"Միացված է քարտեզին"</string>
+ <string name="bluetooth_sap_profile_summary_connected" msgid="8561765057453083838">"Կապակցված է SAP-ին"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"Ֆայլերը փոխանցող սերվերի հետ կապ չկա"</string>
+ <string name="bluetooth_hid_profile_summary_connected" msgid="3381760054215168689">"Միացված է մուտքային սարքին"</string>
+ <string name="bluetooth_pan_user_profile_summary_connected" msgid="4602294638909590612">"Կապակցված է սարքին` ինտերնետ մուտք գործելու համար"</string>
+ <string name="bluetooth_pan_nap_profile_summary_connected" msgid="1561383706411975199">"Տեղային ինտերնետ կապի տարածում սարքի հետ"</string>
+ <string name="bluetooth_pan_profile_summary_use_for" msgid="5664884523822068653">"Օգտագործել ինտերնետ մուտք գործելու համար"</string>
+ <string name="bluetooth_map_profile_summary_use_for" msgid="5154200119919927434">"Օգտագործել քարտեզի համար"</string>
+ <string name="bluetooth_sap_profile_summary_use_for" msgid="7085362712786907993">"SIM քարտի օգտագործում"</string>
+ <string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"Օգտագործել մեդիա աուդիոյի համար"</string>
+ <string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"Օգտագործել հեռախոսի աուդիոյի համար"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"Օգտագործել ֆայլի փոխանցման համար"</string>
+ <string name="bluetooth_hid_profile_summary_use_for" msgid="232727040453645139">"Օգտագործել ներմուծման համար"</string>
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"Զուգավորել"</string>
+ <string name="bluetooth_pairing_accept_all_caps" msgid="6061699265220789149">"Զուգավորել"</string>
+ <string name="bluetooth_pairing_decline" msgid="4185420413578948140">"Չեղարկել"</string>
+ <string name="bluetooth_pairing_will_share_phonebook" msgid="4982239145676394429">"Զուգավորում է մուտքի թույլտվությունը դեպի ձեր կոնտակտները և զանգերի պատմությունը, երբ միացված է:"</string>
+ <string name="bluetooth_pairing_error_message" msgid="3748157733635947087">"Չհաջողվեց զուգավորել <xliff:g id="DEVICE_NAME">%1$s</xliff:g>-ի հետ:"</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="8337234855188925274">"Հնարավոր չեղավ զուգավորվել <xliff:g id="DEVICE_NAME">%1$s</xliff:g>-ի հետ սխալ PIN-ի կամ անցաբառի պատճառով:."</string>
+ <string name="bluetooth_pairing_device_down_error_message" msgid="7870998403045801381">"Հնարավոր չէ կապ հաստատել <xliff:g id="DEVICE_NAME">%1$s</xliff:g>-ի հետ:"</string>
+ <string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"Զուգավորումը մերժվեց <xliff:g id="DEVICE_NAME">%1$s</xliff:g>-ի կողմից:"</string>
+ <string name="accessibility_wifi_off" msgid="1166761729660614716">"Wi-Fi-ն անջատված է:"</string>
+ <string name="accessibility_no_wifi" msgid="8834610636137374508">"Wi-Fi-ը կապակցված չէ:"</string>
+ <string name="accessibility_wifi_one_bar" msgid="4869376278894301820">"Wi-Fi-ի ուժգնությունը՝ մեկ գիծ:"</string>
+ <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>
+ <string name="process_kernel_label" msgid="3916858646836739323">"Android OS"</string>
+ <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"Հեռացված ծրագրեր"</string>
+ <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"Հեռացված հավելվածներն ու օգտվողները"</string>
+ <string name="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_usb_bluetooth" msgid="5355828977109785001">"Միացում"</string>
+ <string name="tether_settings_title_all" msgid="8356136101061143841">"Միացում և շարժական թեժ կետ"</string>
+ <string name="managed_user_title" msgid="8101244883654409696">"Աշխատանքային պրոֆիլ"</string>
+ <string name="user_guest" msgid="8475274842845401871">"Հյուր"</string>
+ <string name="unknown" msgid="1592123443519355854">"Անհայտ"</string>
+ <string name="running_process_item_user_label" msgid="3129887865552025943">"Օգտվող՝ <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
+ <string name="launch_defaults_some" msgid="313159469856372621">"Որոշ կանխադրված կարգավորումներ կան"</string>
+ <string name="launch_defaults_none" msgid="4241129108140034876">"Կանխադրված կարգավորումներ չկան"</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-in/arrays.xml b/packages/SettingsLib/res/values-in/arrays.xml
new file mode 100644
index 0000000..c2488df
--- /dev/null
+++ b/packages/SettingsLib/res/values-in/arrays.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="wifi_status">
+ <item msgid="1922181315419294640"></item>
+ <item msgid="8934131797783724664">"Memindai..."</item>
+ <item msgid="8513729475867537913">"Menyambung…"</item>
+ <item msgid="515055375277271756">"Mengautentikasi…"</item>
+ <item msgid="1943354004029184381">"Mendapatkan alamat IP…"</item>
+ <item msgid="4221763391123233270">"Terhubung"</item>
+ <item msgid="624838831631122137">"Ditangguhkan"</item>
+ <item msgid="7979680559596111948">"Memutus sambungan..."</item>
+ <item msgid="1634960474403853625">"Sambungan terputus"</item>
+ <item msgid="746097431216080650">"Gagal"</item>
+ <item msgid="6367044185730295334">"Dicekal"</item>
+ <item msgid="503942654197908005">"Menghindari sambungan buruk untuk sementara"</item>
+ </string-array>
+ <string-array name="wifi_status_with_ssid">
+ <item msgid="7714855332363650812"></item>
+ <item msgid="8878186979715711006">"Memindai..."</item>
+ <item msgid="355508996603873860">"Menyambung ke <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="554971459996405634">"Mengautentikasi dengan <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="7928343808033020343">"Mendapatkan alamat IP dari <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="8937994881315223448">"Tersambung ke <xliff:g id="NETWORK_NAME">%1$s</xliff:g>"</item>
+ <item msgid="1330262655415760617">"Ditangguhkan"</item>
+ <item msgid="7698638434317271902">"Diputus dari <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="197508606402264311">"Sambungan terputus"</item>
+ <item msgid="8578370891960825148">"Gagal"</item>
+ <item msgid="5660739516542454527">"Dicekal"</item>
+ <item msgid="1805837518286731242">"Menghindari sambungan buruk untuk sementara"</item>
+ </string-array>
+</resources>
diff --git a/packages/SettingsLib/res/values-in/strings.xml b/packages/SettingsLib/res/values-in/strings.xml
new file mode 100644
index 0000000..32dfa03
--- /dev/null
+++ b/packages/SettingsLib/res/values-in/strings.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="wifi_fail_to_scan" msgid="1265540342578081461">"Tidak dapat memindai jaringan"</string>
+ <string name="wifi_security_none" msgid="7985461072596594400">"Tidak Ada"</string>
+ <string name="wifi_remembered" msgid="4955746899347821096">"Disimpan"</string>
+ <string name="wifi_disabled_generic" msgid="4259794910584943386">"Nonaktif"</string>
+ <string name="wifi_disabled_network_failure" msgid="2364951338436007124">"Kegagalan Konfigurasi IP"</string>
+ <string name="wifi_disabled_wifi_failure" msgid="3081668066612876581">"Kegagalan Sambungan Wi-Fi"</string>
+ <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"Masalah autentikasi"</string>
+ <string name="wifi_not_in_range" msgid="1136191511238508967">"Tidak dalam jangkauan"</string>
+ <string name="wifi_no_internet" msgid="9151470775868728896">"Akses Internet Tidak Terdeteksi, tidak akan menyambung ulang secara otomatis."</string>
+ <string name="saved_network" msgid="4352716707126620811">"Disimpan oleh <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="connected_via_wfa" msgid="3805736726317410714">"Terhubung melalui Asisten Wi-Fi"</string>
+ <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>
+ <string name="bluetooth_disconnected" msgid="6557104142667339895">"Sambungan terputus"</string>
+ <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Memutus sambungan..."</string>
+ <string name="bluetooth_connecting" msgid="8555009514614320497">"Menyambung…"</string>
+ <string name="bluetooth_connected" msgid="6038755206916626419">"Terhubung"</string>
+ <string name="bluetooth_pairing" msgid="1426882272690346242">"Menyandingkan..."</string>
+ <string name="bluetooth_connected_no_headset" msgid="2866994875046035609">"Terhubung (bukan telepon)"</string>
+ <string name="bluetooth_connected_no_a2dp" msgid="4576188601581440337">"Terhubung (kecuali media)"</string>
+ <string name="bluetooth_connected_no_map" msgid="6504436917057479986">"Tersambung (tidak ada akses pesan)"</string>
+ <string name="bluetooth_connected_no_headset_no_a2dp" msgid="9195757766755553810">"Terhubung (bukan telepon atau media)"</string>
+ <string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Audio media"</string>
+ <string name="bluetooth_profile_headset" msgid="8658779596261212609">"Audio telepon"</string>
+ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"Transfer file"</string>
+ <string name="bluetooth_profile_hid" msgid="3680729023366986480">"Perangkat masukan"</string>
+ <string name="bluetooth_profile_pan" msgid="3391606497945147673">"Akses Internet"</string>
+ <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"Berbagi kontak"</string>
+ <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"Gunakan untuk berbagi kontak"</string>
+ <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"Berbagi sambungan internet"</string>
+ <string name="bluetooth_profile_map" msgid="5465271250454324383">"Akses Pesan"</string>
+ <string name="bluetooth_profile_sap" msgid="5764222021851283125">"Akses SIM"</string>
+ <string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"Tersambung ke media audio"</string>
+ <string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"Tersambung ke audio ponsel"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"Sambungkan ke server transfer file"</string>
+ <string name="bluetooth_map_profile_summary_connected" msgid="8191407438851351713">"Tersambung ke peta"</string>
+ <string name="bluetooth_sap_profile_summary_connected" msgid="8561765057453083838">"Terhubung ke SAP"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"Tidak tersambung kepada server transfer file"</string>
+ <string name="bluetooth_hid_profile_summary_connected" msgid="3381760054215168689">"Terhubung ke perangkat masukan"</string>
+ <string name="bluetooth_pan_user_profile_summary_connected" msgid="4602294638909590612">"Tersambung ke perangkat untuk akses Internet"</string>
+ <string name="bluetooth_pan_nap_profile_summary_connected" msgid="1561383706411975199">"Berbagi sambungan Internet lokal dengan perangkat"</string>
+ <string name="bluetooth_pan_profile_summary_use_for" msgid="5664884523822068653">"Digunakan untuk akses internet"</string>
+ <string name="bluetooth_map_profile_summary_use_for" msgid="5154200119919927434">"Gunakan untuk peta"</string>
+ <string name="bluetooth_sap_profile_summary_use_for" msgid="7085362712786907993">"Gunakan untuk akses SIM"</string>
+ <string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"Gunakan untuk audio media"</string>
+ <string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"Gunakan untuk audio ponsel"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"Gunakan untuk transfer file"</string>
+ <string name="bluetooth_hid_profile_summary_use_for" msgid="232727040453645139">"Gunakan untuk masukan"</string>
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"Sandingkan"</string>
+ <string name="bluetooth_pairing_accept_all_caps" msgid="6061699265220789149">"SANDINGKAN"</string>
+ <string name="bluetooth_pairing_decline" msgid="4185420413578948140">"Batal"</string>
+ <string name="bluetooth_pairing_will_share_phonebook" msgid="4982239145676394429">"Penyandingan memberi akses ke kontak dan riwayat panggilan saat tersambung"</string>
+ <string name="bluetooth_pairing_error_message" msgid="3748157733635947087">"Tidak dapat menyandingkan dengan <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="8337234855188925274">"Tidak dapat menyandingkan dengan <xliff:g id="DEVICE_NAME">%1$s</xliff:g> karena PIN atau kode sandi salah."</string>
+ <string name="bluetooth_pairing_device_down_error_message" msgid="7870998403045801381">"Tidak dapat berkomunikasi dengan <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"Penyandingan ditolak oleh <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="accessibility_wifi_off" msgid="1166761729660614716">"Wi-Fi tidak aktif."</string>
+ <string name="accessibility_no_wifi" msgid="8834610636137374508">"Wi-Fi tidak tersambung."</string>
+ <string name="accessibility_wifi_one_bar" msgid="4869376278894301820">"Wi-Fi satu baris."</string>
+ <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>
+ <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>
+ <string name="tether_settings_title_usb" msgid="6688416425801386511">"Penambatan USB"</string>
+ <string name="tether_settings_title_wifi" msgid="3277144155960302049">"Hotspot portabel"</string>
+ <string name="tether_settings_title_bluetooth" msgid="355855408317564420">"Penambatan bluetooth"</string>
+ <string name="tether_settings_title_usb_bluetooth" msgid="5355828977109785001">"Menambatkan"</string>
+ <string name="tether_settings_title_all" msgid="8356136101061143841">"Menambatkan & hotspot portabel"</string>
+ <string name="managed_user_title" msgid="8101244883654409696">"Profil kerja"</string>
+ <string name="user_guest" msgid="8475274842845401871">"Tamu"</string>
+ <string name="unknown" msgid="1592123443519355854">"Tidak diketahui"</string>
+ <string name="running_process_item_user_label" msgid="3129887865552025943">"Pengguna: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
+ <string name="launch_defaults_some" msgid="313159469856372621">"Beberapa setelan default"</string>
+ <string name="launch_defaults_none" msgid="4241129108140034876">"Tidak ada setelan default"</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-is-rIS/arrays.xml b/packages/SettingsLib/res/values-is-rIS/arrays.xml
new file mode 100644
index 0000000..540956fe
--- /dev/null
+++ b/packages/SettingsLib/res/values-is-rIS/arrays.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="wifi_status">
+ <item msgid="1922181315419294640"></item>
+ <item msgid="8934131797783724664">"Leitar…"</item>
+ <item msgid="8513729475867537913">"Tengist…"</item>
+ <item msgid="515055375277271756">"Auðkennir…"</item>
+ <item msgid="1943354004029184381">"Sækir IP-tölu…"</item>
+ <item msgid="4221763391123233270">"Tengt"</item>
+ <item msgid="624838831631122137">"Lokað"</item>
+ <item msgid="7979680559596111948">"Aftengist…"</item>
+ <item msgid="1634960474403853625">"Aftengt"</item>
+ <item msgid="746097431216080650">"Mistókst"</item>
+ <item msgid="6367044185730295334">"Læst"</item>
+ <item msgid="503942654197908005">"Forðast lélega tengingu tímabundið"</item>
+ </string-array>
+ <string-array name="wifi_status_with_ssid">
+ <item msgid="7714855332363650812"></item>
+ <item msgid="8878186979715711006">"Leitar…"</item>
+ <item msgid="355508996603873860">"Tengist <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="554971459996405634">"Auðkennir á <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="7928343808033020343">"Sækir IP-tölu frá <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="8937994881315223448">"Tengt við <xliff:g id="NETWORK_NAME">%1$s</xliff:g>"</item>
+ <item msgid="1330262655415760617">"Lokað"</item>
+ <item msgid="7698638434317271902">"Aftengist <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="197508606402264311">"Aftengt"</item>
+ <item msgid="8578370891960825148">"Mistókst"</item>
+ <item msgid="5660739516542454527">"Læst"</item>
+ <item msgid="1805837518286731242">"Forðast lélega tengingu tímabundið"</item>
+ </string-array>
+</resources>
diff --git a/packages/SettingsLib/res/values-is-rIS/strings.xml b/packages/SettingsLib/res/values-is-rIS/strings.xml
new file mode 100644
index 0000000..a3dd8c4
--- /dev/null
+++ b/packages/SettingsLib/res/values-is-rIS/strings.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="wifi_fail_to_scan" msgid="1265540342578081461">"Ekki er hægt að leita að netum"</string>
+ <string name="wifi_security_none" msgid="7985461072596594400">"Ekkert"</string>
+ <string name="wifi_remembered" msgid="4955746899347821096">"Vistað"</string>
+ <string name="wifi_disabled_generic" msgid="4259794910584943386">"Óvirkt"</string>
+ <string name="wifi_disabled_network_failure" msgid="2364951338436007124">"IP-stillingarvilla"</string>
+ <string name="wifi_disabled_wifi_failure" msgid="3081668066612876581">"WiFi-tengingarvilla"</string>
+ <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"Vandamál við auðkenningu"</string>
+ <string name="wifi_not_in_range" msgid="1136191511238508967">"Ekkert samband"</string>
+ <string name="wifi_no_internet" msgid="9151470775868728896">"Enginn netaðgangur fannst; endurtengist ekki sjálfkrafa."</string>
+ <string name="saved_network" msgid="4352716707126620811">"<xliff:g id="NAME">%1$s</xliff:g> vistaði"</string>
+ <string name="connected_via_wfa" msgid="3805736726317410714">"Tengt í gegnum Wi-Fi aðstoð"</string>
+ <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>
+ <string name="bluetooth_disconnected" msgid="6557104142667339895">"Aftengt"</string>
+ <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Aftengist…"</string>
+ <string name="bluetooth_connecting" msgid="8555009514614320497">"Tengist…"</string>
+ <string name="bluetooth_connected" msgid="6038755206916626419">"Tengt"</string>
+ <string name="bluetooth_pairing" msgid="1426882272690346242">"Parar…"</string>
+ <string name="bluetooth_connected_no_headset" msgid="2866994875046035609">"Tengt (ekki sími)"</string>
+ <string name="bluetooth_connected_no_a2dp" msgid="4576188601581440337">"Tengt (ekki efnisspilun)"</string>
+ <string name="bluetooth_connected_no_map" msgid="6504436917057479986">"Tengt (enginn skilaboðaaðgangur)"</string>
+ <string name="bluetooth_connected_no_headset_no_a2dp" msgid="9195757766755553810">"Tengt (ekki sími eða efnisspilun)"</string>
+ <string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Hljóð efnis"</string>
+ <string name="bluetooth_profile_headset" msgid="8658779596261212609">"Hljóð síma"</string>
+ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"Skráaflutningur"</string>
+ <string name="bluetooth_profile_hid" msgid="3680729023366986480">"Inntakstæki"</string>
+ <string name="bluetooth_profile_pan" msgid="3391606497945147673">"Internetaðgangur"</string>
+ <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"Deiling tengiliða"</string>
+ <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"Nota til að deila tengiliðum"</string>
+ <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"Deiling nettengingar"</string>
+ <string name="bluetooth_profile_map" msgid="5465271250454324383">"Skilaboðaaðgangur"</string>
+ <string name="bluetooth_profile_sap" msgid="5764222021851283125">"Aðgangur að SIM-korti"</string>
+ <string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"Tengt við hljóðspilun efnis"</string>
+ <string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"Tengt við hljóð símans"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"Tengt við skráaflutningsþjón"</string>
+ <string name="bluetooth_map_profile_summary_connected" msgid="8191407438851351713">"Tengt við kort"</string>
+ <string name="bluetooth_sap_profile_summary_connected" msgid="8561765057453083838">"Tengt við SAP"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"Ekki tengt við skráaflutningsþjón."</string>
+ <string name="bluetooth_hid_profile_summary_connected" msgid="3381760054215168689">"Tengt við inntakstæki"</string>
+ <string name="bluetooth_pan_user_profile_summary_connected" msgid="4602294638909590612">"Tengt við tæki til að fá netaðgang"</string>
+ <string name="bluetooth_pan_nap_profile_summary_connected" msgid="1561383706411975199">"Internettengingu deilt með tæki"</string>
+ <string name="bluetooth_pan_profile_summary_use_for" msgid="5664884523822068653">"Nota fyrir netaðgang"</string>
+ <string name="bluetooth_map_profile_summary_use_for" msgid="5154200119919927434">"Nota fyrir kort"</string>
+ <string name="bluetooth_sap_profile_summary_use_for" msgid="7085362712786907993">"Nota fyrir aðgang að SIM-korti"</string>
+ <string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"Nota fyrir hljóð efnisspilunar"</string>
+ <string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"Nota fyrir hljóð símans"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"Nota við skráaflutning"</string>
+ <string name="bluetooth_hid_profile_summary_use_for" msgid="232727040453645139">"Nota fyrir inntak"</string>
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"Para"</string>
+ <string name="bluetooth_pairing_accept_all_caps" msgid="6061699265220789149">"PARA"</string>
+ <string name="bluetooth_pairing_decline" msgid="4185420413578948140">"Hætta við"</string>
+ <string name="bluetooth_pairing_will_share_phonebook" msgid="4982239145676394429">"Pörun veitir aðgang að tengiliðunum þínum og símtalaferli þegar tengingu hefur verið komið á."</string>
+ <string name="bluetooth_pairing_error_message" msgid="3748157733635947087">"Ekki var hægt að para við <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="8337234855188925274">"Ekki tókst að para við <xliff:g id="DEVICE_NAME">%1$s</xliff:g> þar sem PIN-númer eða aðgangslykill er rangur."</string>
+ <string name="bluetooth_pairing_device_down_error_message" msgid="7870998403045801381">"Ekki er hægt að eiga samskipti við <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> hafnaði pörun."</string>
+ <string name="accessibility_wifi_off" msgid="1166761729660614716">"Slökkt á Wi-Fi."</string>
+ <string name="accessibility_no_wifi" msgid="8834610636137374508">"Wi-Fi ótengt."</string>
+ <string name="accessibility_wifi_one_bar" msgid="4869376278894301820">"Wi-Fi: Eitt strik."</string>
+ <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>
+ <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>
+ <string name="tether_settings_title_usb" msgid="6688416425801386511">"USB-tjóðrun"</string>
+ <string name="tether_settings_title_wifi" msgid="3277144155960302049">"Heitur reitur"</string>
+ <string name="tether_settings_title_bluetooth" msgid="355855408317564420">"Bluetooth-tjóðrun"</string>
+ <string name="tether_settings_title_usb_bluetooth" msgid="5355828977109785001">"Tjóðrun"</string>
+ <string name="tether_settings_title_all" msgid="8356136101061143841">"Tjóðrun og heitur reitur"</string>
+ <string name="managed_user_title" msgid="8101244883654409696">"Vinnusnið"</string>
+ <string name="user_guest" msgid="8475274842845401871">"Gestur"</string>
+ <string name="unknown" msgid="1592123443519355854">"Óþekkt"</string>
+ <string name="running_process_item_user_label" msgid="3129887865552025943">"Notandi: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
+ <string name="launch_defaults_some" msgid="313159469856372621">"Einhver sjálfgildi valin"</string>
+ <string name="launch_defaults_none" msgid="4241129108140034876">"Engin sjálfgildi valin"</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-it/arrays.xml b/packages/SettingsLib/res/values-it/arrays.xml
new file mode 100644
index 0000000..719adbc
--- /dev/null
+++ b/packages/SettingsLib/res/values-it/arrays.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="wifi_status">
+ <item msgid="1922181315419294640"></item>
+ <item msgid="8934131797783724664">"Ricerca..."</item>
+ <item msgid="8513729475867537913">"Connessione..."</item>
+ <item msgid="515055375277271756">"Autenticazione..."</item>
+ <item msgid="1943354004029184381">"Acquisizione indirizzo IP..."</item>
+ <item msgid="4221763391123233270">"Connessa"</item>
+ <item msgid="624838831631122137">"Sospesa"</item>
+ <item msgid="7979680559596111948">"Disconnessione..."</item>
+ <item msgid="1634960474403853625">"Disconnessa"</item>
+ <item msgid="746097431216080650">"Operazione non riuscita"</item>
+ <item msgid="6367044185730295334">"Bloccato"</item>
+ <item msgid="503942654197908005">"Al momento vengono evitate connessioni deboli"</item>
+ </string-array>
+ <string-array name="wifi_status_with_ssid">
+ <item msgid="7714855332363650812"></item>
+ <item msgid="8878186979715711006">"Ricerca..."</item>
+ <item msgid="355508996603873860">"Connessione a <xliff:g id="NETWORK_NAME">%1$s</xliff:g>..."</item>
+ <item msgid="554971459996405634">"Autenticazione con <xliff:g id="NETWORK_NAME">%1$s</xliff:g>..."</item>
+ <item msgid="7928343808033020343">"Acquisizione indirizzo IP da <xliff:g id="NETWORK_NAME">%1$s</xliff:g>..."</item>
+ <item msgid="8937994881315223448">"Connessa a <xliff:g id="NETWORK_NAME">%1$s</xliff:g>"</item>
+ <item msgid="1330262655415760617">"Sospesa"</item>
+ <item msgid="7698638434317271902">"Disconnessione da <xliff:g id="NETWORK_NAME">%1$s</xliff:g>..."</item>
+ <item msgid="197508606402264311">"Disconnessa"</item>
+ <item msgid="8578370891960825148">"Operazione non riuscita"</item>
+ <item msgid="5660739516542454527">"Bloccato"</item>
+ <item msgid="1805837518286731242">"Al momento vengono evitate connessioni deboli"</item>
+ </string-array>
+</resources>
diff --git a/packages/SettingsLib/res/values-it/strings.xml b/packages/SettingsLib/res/values-it/strings.xml
new file mode 100644
index 0000000..d5b4a15
--- /dev/null
+++ b/packages/SettingsLib/res/values-it/strings.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="wifi_fail_to_scan" msgid="1265540342578081461">"Impossibile cercare reti"</string>
+ <string name="wifi_security_none" msgid="7985461072596594400">"Nessuna"</string>
+ <string name="wifi_remembered" msgid="4955746899347821096">"Salvata"</string>
+ <string name="wifi_disabled_generic" msgid="4259794910584943386">"Disattivata"</string>
+ <string name="wifi_disabled_network_failure" msgid="2364951338436007124">"Errore configurazione IP"</string>
+ <string name="wifi_disabled_wifi_failure" msgid="3081668066612876581">"Errore connessione Wi-Fi"</string>
+ <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"Problema di autenticazione"</string>
+ <string name="wifi_not_in_range" msgid="1136191511238508967">"Fuori portata"</string>
+ <string name="wifi_no_internet" msgid="9151470775868728896">"Nessun accesso a Internet rilevato, non verrà eseguita la riconnessione automatica."</string>
+ <string name="saved_network" msgid="4352716707126620811">"Salvata da <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="connected_via_wfa" msgid="3805736726317410714">"Connesso tramite assistente Wi‑Fi"</string>
+ <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>
+ <string name="bluetooth_disconnected" msgid="6557104142667339895">"Disconnesso"</string>
+ <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Disconnessione..."</string>
+ <string name="bluetooth_connecting" msgid="8555009514614320497">"Connessione..."</string>
+ <string name="bluetooth_connected" msgid="6038755206916626419">"Connesso"</string>
+ <string name="bluetooth_pairing" msgid="1426882272690346242">"Accoppiamento..."</string>
+ <string name="bluetooth_connected_no_headset" msgid="2866994875046035609">"Collegato (telefono escluso)"</string>
+ <string name="bluetooth_connected_no_a2dp" msgid="4576188601581440337">"Collegato (contenuti multimed. esclusi)"</string>
+ <string name="bluetooth_connected_no_map" msgid="6504436917057479986">"Connesso (nessun accesso ai messaggi)"</string>
+ <string name="bluetooth_connected_no_headset_no_a2dp" msgid="9195757766755553810">"Collegato (telef. o conten. mult. esclusi)"</string>
+ <string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Audio multimediale"</string>
+ <string name="bluetooth_profile_headset" msgid="8658779596261212609">"Audio telefono"</string>
+ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"Trasferimento file"</string>
+ <string name="bluetooth_profile_hid" msgid="3680729023366986480">"Dispositivo di input"</string>
+ <string name="bluetooth_profile_pan" msgid="3391606497945147673">"Accesso Internet"</string>
+ <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"Condivisione contatti"</string>
+ <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"Usa per condivisione contatti"</string>
+ <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"Condivisione connessione Internet"</string>
+ <string name="bluetooth_profile_map" msgid="5465271250454324383">"Accesso ai messaggi"</string>
+ <string name="bluetooth_profile_sap" msgid="5764222021851283125">"Accesso alla SIM"</string>
+ <string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"Collegato ad audio media"</string>
+ <string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"Collegato ad audio telefono"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"Collegato al server di trasferimento file"</string>
+ <string name="bluetooth_map_profile_summary_connected" msgid="8191407438851351713">"Connesso alla mappa"</string>
+ <string name="bluetooth_sap_profile_summary_connected" msgid="8561765057453083838">"Collegato al SAP"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"Non collegato al server di trasferimento file"</string>
+ <string name="bluetooth_hid_profile_summary_connected" msgid="3381760054215168689">"Connesso a dispositivo di input"</string>
+ <string name="bluetooth_pan_user_profile_summary_connected" msgid="4602294638909590612">"Connesso a dispositivo per accesso Internet"</string>
+ <string name="bluetooth_pan_nap_profile_summary_connected" msgid="1561383706411975199">"Connessione Internet locale condivisa con dispositivo"</string>
+ <string name="bluetooth_pan_profile_summary_use_for" msgid="5664884523822068653">"Usa per accesso Internet"</string>
+ <string name="bluetooth_map_profile_summary_use_for" msgid="5154200119919927434">"Utilizza per la mappa"</string>
+ <string name="bluetooth_sap_profile_summary_use_for" msgid="7085362712786907993">"Utilizza per accesso SIM"</string>
+ <string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"Usa per audio media"</string>
+ <string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"Usa per audio telefono"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"Usa per trasferimento file"</string>
+ <string name="bluetooth_hid_profile_summary_use_for" msgid="232727040453645139">"Utilizza per l\'input"</string>
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"Accoppia"</string>
+ <string name="bluetooth_pairing_accept_all_caps" msgid="6061699265220789149">"ACCOPPIA"</string>
+ <string name="bluetooth_pairing_decline" msgid="4185420413578948140">"Annulla"</string>
+ <string name="bluetooth_pairing_will_share_phonebook" msgid="4982239145676394429">"L\'accoppiamento consente l\'accesso ai tuoi contatti e alla cronologia chiamate quando i dispositivi sono connessi."</string>
+ <string name="bluetooth_pairing_error_message" msgid="3748157733635947087">"Impossibile eseguire l\'accoppiamento con <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="8337234855188925274">"Impossibile eseguire l\'accoppiamento con <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. La passkey o il PIN è errato."</string>
+ <string name="bluetooth_pairing_device_down_error_message" msgid="7870998403045801381">"Impossibile comunicare con <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"Accoppiamento rifiutato da <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="accessibility_wifi_off" msgid="1166761729660614716">"Wi-Fi non attivo."</string>
+ <string name="accessibility_no_wifi" msgid="8834610636137374508">"Rete Wi-Fi scollegata."</string>
+ <string name="accessibility_wifi_one_bar" msgid="4869376278894301820">"Wi-Fi: una barra."</string>
+ <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>
+ <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>
+ <string name="tether_settings_title_usb" msgid="6688416425801386511">"Tethering USB"</string>
+ <string name="tether_settings_title_wifi" msgid="3277144155960302049">"Hotspot portatile"</string>
+ <string name="tether_settings_title_bluetooth" msgid="355855408317564420">"Tethering Bluetooth"</string>
+ <string name="tether_settings_title_usb_bluetooth" msgid="5355828977109785001">"Tethering"</string>
+ <string name="tether_settings_title_all" msgid="8356136101061143841">"Tethering/hotspot portatile"</string>
+ <string name="managed_user_title" msgid="8101244883654409696">"Profilo di lavoro"</string>
+ <string name="user_guest" msgid="8475274842845401871">"Ospite"</string>
+ <string name="unknown" msgid="1592123443519355854">"Sconosciuta"</string>
+ <string name="running_process_item_user_label" msgid="3129887865552025943">"Utente: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
+ <string name="launch_defaults_some" msgid="313159469856372621">"Alcune opzioni predefinite impostate"</string>
+ <string name="launch_defaults_none" msgid="4241129108140034876">"Nessuna applicazione predefinita impostata"</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-iw/arrays.xml b/packages/SettingsLib/res/values-iw/arrays.xml
new file mode 100644
index 0000000..d5f3d9d
--- /dev/null
+++ b/packages/SettingsLib/res/values-iw/arrays.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="wifi_status">
+ <item msgid="1922181315419294640"></item>
+ <item msgid="8934131797783724664">"סורק..."</item>
+ <item msgid="8513729475867537913">"מתחבר ..."</item>
+ <item msgid="515055375277271756">"מאמת…"</item>
+ <item msgid="1943354004029184381">"משיג כתובת IP…"</item>
+ <item msgid="4221763391123233270">"מחובר"</item>
+ <item msgid="624838831631122137">"בהשעיה"</item>
+ <item msgid="7979680559596111948">"מתנתק..."</item>
+ <item msgid="1634960474403853625">"מנותק"</item>
+ <item msgid="746097431216080650">"נכשל"</item>
+ <item msgid="6367044185730295334">"חסומה"</item>
+ <item msgid="503942654197908005">"נמנע זמנית מחיבור חלש"</item>
+ </string-array>
+ <string-array name="wifi_status_with_ssid">
+ <item msgid="7714855332363650812"></item>
+ <item msgid="8878186979715711006">"סורק..."</item>
+ <item msgid="355508996603873860">"מתחבר אל <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="554971459996405634">"מאמת עם <xliff:g id="NETWORK_NAME">%1$s</xliff:g>..."</item>
+ <item msgid="7928343808033020343">"משיג כתובת IP מ-<xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="8937994881315223448">"מחובר אל <xliff:g id="NETWORK_NAME">%1$s</xliff:g>"</item>
+ <item msgid="1330262655415760617">"בהשעיה"</item>
+ <item msgid="7698638434317271902">"מתנתק מרשת <xliff:g id="NETWORK_NAME">%1$s</xliff:g>..."</item>
+ <item msgid="197508606402264311">"מנותק"</item>
+ <item msgid="8578370891960825148">"נכשל"</item>
+ <item msgid="5660739516542454527">"חסומה"</item>
+ <item msgid="1805837518286731242">"נמנע זמנית מחיבור חלש"</item>
+ </string-array>
+</resources>
diff --git a/packages/SettingsLib/res/values-iw/strings.xml b/packages/SettingsLib/res/values-iw/strings.xml
new file mode 100644
index 0000000..6780d1e
--- /dev/null
+++ b/packages/SettingsLib/res/values-iw/strings.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="wifi_fail_to_scan" msgid="1265540342578081461">"לא ניתן לסרוק לאיתור רשתות"</string>
+ <string name="wifi_security_none" msgid="7985461072596594400">"ללא"</string>
+ <string name="wifi_remembered" msgid="4955746899347821096">"נשמר"</string>
+ <string name="wifi_disabled_generic" msgid="4259794910584943386">"מושבת"</string>
+ <string name="wifi_disabled_network_failure" msgid="2364951338436007124">"כשל בתצורת IP"</string>
+ <string name="wifi_disabled_wifi_failure" msgid="3081668066612876581">"כשל בחיבור Wi-Fi"</string>
+ <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"בעיית אימות"</string>
+ <string name="wifi_not_in_range" msgid="1136191511238508967">"מחוץ לטווח"</string>
+ <string name="wifi_no_internet" msgid="9151470775868728896">"אין גישה לאינטרנט. לא יתבצע חיבור מחדש באופן אוטומטי."</string>
+ <string name="saved_network" msgid="4352716707126620811">"נשמר על ידי <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="connected_via_wfa" msgid="3805736726317410714">"מחובר באמצעות אסיסטנט ה-Wi-Fi"</string>
+ <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>
+ <string name="bluetooth_disconnected" msgid="6557104142667339895">"מנותק"</string>
+ <string name="bluetooth_disconnecting" msgid="8913264760027764974">"מתנתק..."</string>
+ <string name="bluetooth_connecting" msgid="8555009514614320497">"מתחבר ..."</string>
+ <string name="bluetooth_connected" msgid="6038755206916626419">"מחובר"</string>
+ <string name="bluetooth_pairing" msgid="1426882272690346242">"מבצע התאמה..."</string>
+ <string name="bluetooth_connected_no_headset" msgid="2866994875046035609">"מחובר (ללא טלפון)"</string>
+ <string name="bluetooth_connected_no_a2dp" msgid="4576188601581440337">"מחובר (ללא מדיה)"</string>
+ <string name="bluetooth_connected_no_map" msgid="6504436917057479986">"מחובר (אין גישה להודעות)"</string>
+ <string name="bluetooth_connected_no_headset_no_a2dp" msgid="9195757766755553810">"מחובר (ללא טלפון או מדיה)"</string>
+ <string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"אודיו של מדיה"</string>
+ <string name="bluetooth_profile_headset" msgid="8658779596261212609">"אודיו של טלפון"</string>
+ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"העברת קבצים"</string>
+ <string name="bluetooth_profile_hid" msgid="3680729023366986480">"מכשיר קלט"</string>
+ <string name="bluetooth_profile_pan" msgid="3391606497945147673">"גישה לאינטרנט"</string>
+ <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"שיתוף אנשי קשר"</string>
+ <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"השתמש עבור שיתוף אנשי קשר"</string>
+ <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"שיתוף חיבור לאינטרנט"</string>
+ <string name="bluetooth_profile_map" msgid="5465271250454324383">"גישה להודעות"</string>
+ <string name="bluetooth_profile_sap" msgid="5764222021851283125">"גישה ל-SIM"</string>
+ <string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"מחובר לאודיו של מדיה"</string>
+ <string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"מחובר לאודיו של הטלפון"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"מחובר לשרת העברת קבצים"</string>
+ <string name="bluetooth_map_profile_summary_connected" msgid="8191407438851351713">"מחובר למפה"</string>
+ <string name="bluetooth_sap_profile_summary_connected" msgid="8561765057453083838">"מחובר ל-SAP"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"לא מחובר לשרת העברת קבצים"</string>
+ <string name="bluetooth_hid_profile_summary_connected" msgid="3381760054215168689">"מחובר למכשיר קלט"</string>
+ <string name="bluetooth_pan_user_profile_summary_connected" msgid="4602294638909590612">"מחובר למכשיר לצורך גישה לאינטרנט"</string>
+ <string name="bluetooth_pan_nap_profile_summary_connected" msgid="1561383706411975199">"משתף חיבור אינטרנט מקומי עם מכשיר"</string>
+ <string name="bluetooth_pan_profile_summary_use_for" msgid="5664884523822068653">"השתמש עבור גישה לאינטרנט"</string>
+ <string name="bluetooth_map_profile_summary_use_for" msgid="5154200119919927434">"שימוש עבור מפה"</string>
+ <string name="bluetooth_sap_profile_summary_use_for" msgid="7085362712786907993">"השתמש לגישה של SIM"</string>
+ <string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"השתמש עבור אודיו של מדיה"</string>
+ <string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"השתמש עבור האודיו של הטלפון"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"השתמש להעברת קבצים"</string>
+ <string name="bluetooth_hid_profile_summary_use_for" msgid="232727040453645139">"השתמש לקלט"</string>
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"התאם"</string>
+ <string name="bluetooth_pairing_accept_all_caps" msgid="6061699265220789149">"התאם"</string>
+ <string name="bluetooth_pairing_decline" msgid="4185420413578948140">"ביטול"</string>
+ <string name="bluetooth_pairing_will_share_phonebook" msgid="4982239145676394429">"לאחר החיבור, התאמה מספקת גישה לאנשי הקשר ולהיסטוריית השיחות שלך."</string>
+ <string name="bluetooth_pairing_error_message" msgid="3748157733635947087">"לא ניתן לבצע התאמה עם <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="8337234855188925274">"לא ניתן להתאים את <xliff:g id="DEVICE_NAME">%1$s</xliff:g> בשל קוד PIN או סיסמה שגויים."</string>
+ <string name="bluetooth_pairing_device_down_error_message" msgid="7870998403045801381">"לא ניתן לתקשר עם <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"ההתאמה נדחתה על ידי <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="accessibility_wifi_off" msgid="1166761729660614716">"Wi-Fi כבוי."</string>
+ <string name="accessibility_no_wifi" msgid="8834610636137374508">"Wi-Fi מנותק."</string>
+ <string name="accessibility_wifi_one_bar" msgid="4869376278894301820">"פס אחד של Wi-Fi."</string>
+ <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>
+ <string name="process_kernel_label" msgid="3916858646836739323">"Android OS"</string>
+ <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"אפליקציות שהוסרו"</string>
+ <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"אפליקציות ומשתמשים שהוסרו"</string>
+ <string name="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_usb_bluetooth" msgid="5355828977109785001">"שיתוף אינטרנט בין ניידים"</string>
+ <string name="tether_settings_title_all" msgid="8356136101061143841">"נקודה לשיתוף אינטרנט"</string>
+ <string name="managed_user_title" msgid="8101244883654409696">"פרופיל עבודה"</string>
+ <string name="user_guest" msgid="8475274842845401871">"אורח"</string>
+ <string name="unknown" msgid="1592123443519355854">"לא ידוע"</string>
+ <string name="running_process_item_user_label" msgid="3129887865552025943">"משתמש: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
+ <string name="launch_defaults_some" msgid="313159469856372621">"הוגדרו כמה ברירת מחדל"</string>
+ <string name="launch_defaults_none" msgid="4241129108140034876">"לא הוגדרו ברירות מחדל"</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-ja/arrays.xml b/packages/SettingsLib/res/values-ja/arrays.xml
new file mode 100644
index 0000000..f9f2ae7
--- /dev/null
+++ b/packages/SettingsLib/res/values-ja/arrays.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="wifi_status">
+ <item msgid="1922181315419294640"></item>
+ <item msgid="8934131797783724664">"スキャン中..."</item>
+ <item msgid="8513729475867537913">"接続中..."</item>
+ <item msgid="515055375277271756">"認証中..."</item>
+ <item msgid="1943354004029184381">"IPアドレスを取得中..."</item>
+ <item msgid="4221763391123233270">"接続済み"</item>
+ <item msgid="624838831631122137">"保留中"</item>
+ <item msgid="7979680559596111948">"切断中..."</item>
+ <item msgid="1634960474403853625">"切断されました"</item>
+ <item msgid="746097431216080650">"失敗しました"</item>
+ <item msgid="6367044185730295334">"ブロック中"</item>
+ <item msgid="503942654197908005">"接続不良により一時的に無効"</item>
+ </string-array>
+ <string-array name="wifi_status_with_ssid">
+ <item msgid="7714855332363650812"></item>
+ <item msgid="8878186979715711006">"スキャン中..."</item>
+ <item msgid="355508996603873860">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g>に接続中..."</item>
+ <item msgid="554971459996405634">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g>による認証中..."</item>
+ <item msgid="7928343808033020343">"IPアドレスを<xliff:g id="NETWORK_NAME">%1$s</xliff:g>から取得中..."</item>
+ <item msgid="8937994881315223448">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g>に接続しました"</item>
+ <item msgid="1330262655415760617">"保留中"</item>
+ <item msgid="7698638434317271902">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g>から切断中..."</item>
+ <item msgid="197508606402264311">"切断されました"</item>
+ <item msgid="8578370891960825148">"失敗しました"</item>
+ <item msgid="5660739516542454527">"ブロック中"</item>
+ <item msgid="1805837518286731242">"接続不良により一時的に無効"</item>
+ </string-array>
+</resources>
diff --git a/packages/SettingsLib/res/values-ja/strings.xml b/packages/SettingsLib/res/values-ja/strings.xml
new file mode 100644
index 0000000..ceaaf13
--- /dev/null
+++ b/packages/SettingsLib/res/values-ja/strings.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="wifi_fail_to_scan" msgid="1265540342578081461">"ネットワークをスキャンできません"</string>
+ <string name="wifi_security_none" msgid="7985461072596594400">"なし"</string>
+ <string name="wifi_remembered" msgid="4955746899347821096">"保存済み"</string>
+ <string name="wifi_disabled_generic" msgid="4259794910584943386">"無効"</string>
+ <string name="wifi_disabled_network_failure" msgid="2364951338436007124">"IP設定エラー"</string>
+ <string name="wifi_disabled_wifi_failure" msgid="3081668066612876581">"WiFi接続エラー"</string>
+ <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"認証に問題"</string>
+ <string name="wifi_not_in_range" msgid="1136191511238508967">"圏外"</string>
+ <string name="wifi_no_internet" msgid="9151470775868728896">"インターネットアクセスを検出できないため、自動的に再接続されません。"</string>
+ <string name="saved_network" msgid="4352716707126620811">"<xliff:g id="NAME">%1$s</xliff:g>で保存"</string>
+ <string name="connected_via_wfa" msgid="3805736726317410714">"Wi‑Fiアシスタント経由で接続"</string>
+ <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>
+ <string name="bluetooth_disconnected" msgid="6557104142667339895">"切断"</string>
+ <string name="bluetooth_disconnecting" msgid="8913264760027764974">"切断中..."</string>
+ <string name="bluetooth_connecting" msgid="8555009514614320497">"接続中..."</string>
+ <string name="bluetooth_connected" msgid="6038755206916626419">"接続"</string>
+ <string name="bluetooth_pairing" msgid="1426882272690346242">"ペアとして設定中..."</string>
+ <string name="bluetooth_connected_no_headset" msgid="2866994875046035609">"接続済み(電話を除く)"</string>
+ <string name="bluetooth_connected_no_a2dp" msgid="4576188601581440337">"接続済み(メディアを除く)"</string>
+ <string name="bluetooth_connected_no_map" msgid="6504436917057479986">"接続済み(メッセージへのアクセスなし)"</string>
+ <string name="bluetooth_connected_no_headset_no_a2dp" msgid="9195757766755553810">"接続済み(電話/メディアを除く)"</string>
+ <string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"メディアの音声"</string>
+ <string name="bluetooth_profile_headset" msgid="8658779596261212609">"電話の音声"</string>
+ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"ファイル転送"</string>
+ <string name="bluetooth_profile_hid" msgid="3680729023366986480">"入力デバイス"</string>
+ <string name="bluetooth_profile_pan" msgid="3391606497945147673">"インターネットアクセス"</string>
+ <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"連絡先の共有"</string>
+ <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"連絡先の共有に使用"</string>
+ <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"インターネット接続の共有"</string>
+ <string name="bluetooth_profile_map" msgid="5465271250454324383">"メッセージへのアクセス"</string>
+ <string name="bluetooth_profile_sap" msgid="5764222021851283125">"SIMアクセス"</string>
+ <string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"メディアの音声に接続"</string>
+ <string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"携帯電話の音声に接続"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"ファイル転送サーバーに接続"</string>
+ <string name="bluetooth_map_profile_summary_connected" msgid="8191407438851351713">"地図に接続済み"</string>
+ <string name="bluetooth_sap_profile_summary_connected" msgid="8561765057453083838">"SAPに接続"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"ファイル転送サーバーに接続しない"</string>
+ <string name="bluetooth_hid_profile_summary_connected" msgid="3381760054215168689">"入力デバイスに接続されています"</string>
+ <string name="bluetooth_pan_user_profile_summary_connected" msgid="4602294638909590612">"インターネットアクセス用に接続"</string>
+ <string name="bluetooth_pan_nap_profile_summary_connected" msgid="1561383706411975199">"ローカルインターネット接続をデバイスと共有"</string>
+ <string name="bluetooth_pan_profile_summary_use_for" msgid="5664884523822068653">"インターネットアクセスに使用する"</string>
+ <string name="bluetooth_map_profile_summary_use_for" msgid="5154200119919927434">"地図に使用"</string>
+ <string name="bluetooth_sap_profile_summary_use_for" msgid="7085362712786907993">"SIMアクセスに使用"</string>
+ <string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"メディアの音声に使用"</string>
+ <string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"携帯電話の音声に使用"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"ファイル転送に使用"</string>
+ <string name="bluetooth_hid_profile_summary_use_for" msgid="232727040453645139">"入力に使用"</string>
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"ペア設定する"</string>
+ <string name="bluetooth_pairing_accept_all_caps" msgid="6061699265220789149">"ペア設定する"</string>
+ <string name="bluetooth_pairing_decline" msgid="4185420413578948140">"キャンセル"</string>
+ <string name="bluetooth_pairing_will_share_phonebook" msgid="4982239145676394429">"ペア設定により、接続時に連絡先や通話履歴へのアクセスが許可されます。"</string>
+ <string name="bluetooth_pairing_error_message" msgid="3748157733635947087">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>をペアに設定できません。"</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="8337234855188925274">"PINまたはパスキーが正しくないため、<xliff:g id="DEVICE_NAME">%1$s</xliff:g>をペアに設定できませんでした。"</string>
+ <string name="bluetooth_pairing_device_down_error_message" msgid="7870998403045801381">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>と通信できません。"</string>
+ <string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"ペア設定が<xliff:g id="DEVICE_NAME">%1$s</xliff:g>に拒否されました。"</string>
+ <string name="accessibility_wifi_off" msgid="1166761729660614716">"Wi-FiはOFFです。"</string>
+ <string name="accessibility_no_wifi" msgid="8834610636137374508">"Wi-Fiが切断されました。"</string>
+ <string name="accessibility_wifi_one_bar" msgid="4869376278894301820">"Wi-Fiはレベル1です。"</string>
+ <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>
+ <string name="process_kernel_label" msgid="3916858646836739323">"Android OS"</string>
+ <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"削除したアプリケーション"</string>
+ <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"削除されたアプリとユーザー"</string>
+ <string name="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_usb_bluetooth" msgid="5355828977109785001">"テザリング"</string>
+ <string name="tether_settings_title_all" msgid="8356136101061143841">"テザリングとポータブルアクセスポイント"</string>
+ <string name="managed_user_title" msgid="8101244883654409696">"仕事用プロファイル"</string>
+ <string name="user_guest" msgid="8475274842845401871">"ゲスト"</string>
+ <string name="unknown" msgid="1592123443519355854">"不明"</string>
+ <string name="running_process_item_user_label" msgid="3129887865552025943">"ユーザー: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
+ <string name="launch_defaults_some" msgid="313159469856372621">"一部デフォルトを設定"</string>
+ <string name="launch_defaults_none" msgid="4241129108140034876">"既定の設定なし"</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-ka-rGE/arrays.xml b/packages/SettingsLib/res/values-ka-rGE/arrays.xml
new file mode 100644
index 0000000..1185d8e
--- /dev/null
+++ b/packages/SettingsLib/res/values-ka-rGE/arrays.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="wifi_status">
+ <item msgid="1922181315419294640"></item>
+ <item msgid="8934131797783724664">"სკანირება…"</item>
+ <item msgid="8513729475867537913">"დაკავშირება…"</item>
+ <item msgid="515055375277271756">"ავტორიზაცია…"</item>
+ <item msgid="1943354004029184381">"IP მისამართის მიღება…"</item>
+ <item msgid="4221763391123233270">"დაკავშირებულია"</item>
+ <item msgid="624838831631122137">"შეწყვეტილია"</item>
+ <item msgid="7979680559596111948">"კავშირის გაწყვეტა…"</item>
+ <item msgid="1634960474403853625">"არ არის ხაზზე"</item>
+ <item msgid="746097431216080650">"ვერ მოხერხდა"</item>
+ <item msgid="6367044185730295334">"დაბლოკილი"</item>
+ <item msgid="503942654197908005">"ცუდი კავშირის დროებით თავიდან აცილება"</item>
+ </string-array>
+ <string-array name="wifi_status_with_ssid">
+ <item msgid="7714855332363650812"></item>
+ <item msgid="8878186979715711006">"სკანირება…"</item>
+ <item msgid="355508996603873860">"მიმდინარეობს დაკავშირება <xliff:g id="NETWORK_NAME">%1$s</xliff:g>-თან…"</item>
+ <item msgid="554971459996405634">"ავთენტიფიკაცია <xliff:g id="NETWORK_NAME">%1$s</xliff:g>-ში…"</item>
+ <item msgid="7928343808033020343">"IP მისამართის მოპოვება <xliff:g id="NETWORK_NAME">%1$s</xliff:g>-დან…"</item>
+ <item msgid="8937994881315223448">"დაკავშირებულია <xliff:g id="NETWORK_NAME">%1$s</xliff:g>-თან"</item>
+ <item msgid="1330262655415760617">"შეჩერებული"</item>
+ <item msgid="7698638434317271902">"კავშირის გაწყვეტა <xliff:g id="NETWORK_NAME">%1$s</xliff:g>-თან…"</item>
+ <item msgid="197508606402264311">"კავშირი გაწყვეტილია"</item>
+ <item msgid="8578370891960825148">"ვერ მოხერხდა"</item>
+ <item msgid="5660739516542454527">"დაბლოკილი"</item>
+ <item msgid="1805837518286731242">"ცუდი კავშირის დროებით თავიდან აცილება"</item>
+ </string-array>
+</resources>
diff --git a/packages/SettingsLib/res/values-ka-rGE/strings.xml b/packages/SettingsLib/res/values-ka-rGE/strings.xml
new file mode 100644
index 0000000..286c709
--- /dev/null
+++ b/packages/SettingsLib/res/values-ka-rGE/strings.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="wifi_fail_to_scan" msgid="1265540342578081461">"ქსელების სკანირება არა არის შესაძლებელი"</string>
+ <string name="wifi_security_none" msgid="7985461072596594400">"არცერთი"</string>
+ <string name="wifi_remembered" msgid="4955746899347821096">"დამახსოვრებულია"</string>
+ <string name="wifi_disabled_generic" msgid="4259794910584943386">"გამორთულია"</string>
+ <string name="wifi_disabled_network_failure" msgid="2364951338436007124">"IP კონფიგურაციის შეფერხება"</string>
+ <string name="wifi_disabled_wifi_failure" msgid="3081668066612876581">"WiFi კავშირის შეფერხება"</string>
+ <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"ავთენტიკაციის პრობლემა"</string>
+ <string name="wifi_not_in_range" msgid="1136191511238508967">"არ არის დიაპაზონში"</string>
+ <string name="wifi_no_internet" msgid="9151470775868728896">"ინტერნეტთან წვდომის ამოცნობა ვერ მოხერხდა. ავტომატურად ხელახლა დაკავშირება არ განხორციელდება."</string>
+ <string name="saved_network" msgid="4352716707126620811">"შენახული <xliff:g id="NAME">%1$s</xliff:g>-ის მიერ"</string>
+ <string name="connected_via_wfa" msgid="3805736726317410714">"დაკავშირებულია Wi-Fi თანაშემწით"</string>
+ <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>
+ <string name="bluetooth_disconnected" msgid="6557104142667339895">"კავშირი გაწყვეტილია"</string>
+ <string name="bluetooth_disconnecting" msgid="8913264760027764974">"მიმდინარეობს გათიშვა…"</string>
+ <string name="bluetooth_connecting" msgid="8555009514614320497">"მიმდინარეობს დაკავშირება…"</string>
+ <string name="bluetooth_connected" msgid="6038755206916626419">"შეერთებულია"</string>
+ <string name="bluetooth_pairing" msgid="1426882272690346242">"დაწყვილება…"</string>
+ <string name="bluetooth_connected_no_headset" msgid="2866994875046035609">"დაკავშირებულია (ტელეფონის გარდა)"</string>
+ <string name="bluetooth_connected_no_a2dp" msgid="4576188601581440337">"მიერთებულია (მედიის გარდა)"</string>
+ <string name="bluetooth_connected_no_map" msgid="6504436917057479986">"დაკავშირებულია (შეტყობინებაზე წვდომა არ არის)"</string>
+ <string name="bluetooth_connected_no_headset_no_a2dp" msgid="9195757766755553810">"დაკავშირება (გარდა ტელეფონისა და მედიისა)"</string>
+ <string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"მედია აუდიო"</string>
+ <string name="bluetooth_profile_headset" msgid="8658779596261212609">"ტელეფონის აუდიო"</string>
+ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"ფაილების გადაცემა"</string>
+ <string name="bluetooth_profile_hid" msgid="3680729023366986480">"შეყვანის მოწყობილობა"</string>
+ <string name="bluetooth_profile_pan" msgid="3391606497945147673">"ინტერნეტზე წვდომა"</string>
+ <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"კონტაქტის გაზიარება"</string>
+ <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"კონტაქტის გაზიარებისთვის გამოყენება"</string>
+ <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"ინტერნეტ კავშირის გაზიარება"</string>
+ <string name="bluetooth_profile_map" msgid="5465271250454324383">"შეტყობინებებზე წვდომა"</string>
+ <string name="bluetooth_profile_sap" msgid="5764222021851283125">"SIM წვდომა"</string>
+ <string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"დაკავშირებულია აუდიო მულტიმედიურ სისტემასთან"</string>
+ <string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"დაკავშირებულია ტელეფონის აუდიო მოწყობილობასთან"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"დაკავშირებულია ფაილების გადაცემის სერვერთან"</string>
+ <string name="bluetooth_map_profile_summary_connected" msgid="8191407438851351713">"რუკასთან დაკავშირებული"</string>
+ <string name="bluetooth_sap_profile_summary_connected" msgid="8561765057453083838">"SAP-თან დაკავშირებული"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"არ არის დაკავშირებული ფაილების ტრანსფერის სერვერთან"</string>
+ <string name="bluetooth_hid_profile_summary_connected" msgid="3381760054215168689">"დაკავშირებულია შეყვანის მოწყობილობასთან"</string>
+ <string name="bluetooth_pan_user_profile_summary_connected" msgid="4602294638909590612">"დაკავშირებულია მოწყობილობასთან ინტერნეტთან წვდომისთვის"</string>
+ <string name="bluetooth_pan_nap_profile_summary_connected" msgid="1561383706411975199">"ლოკალური კავშირის გაზიარება მოწყობილობასთან"</string>
+ <string name="bluetooth_pan_profile_summary_use_for" msgid="5664884523822068653">"გამოიყენე ინტერნეტთან წვდომისთვის"</string>
+ <string name="bluetooth_map_profile_summary_use_for" msgid="5154200119919927434">"რუკაზე გამოყენება"</string>
+ <string name="bluetooth_sap_profile_summary_use_for" msgid="7085362712786907993">"გამოყენება SIM წვდომისთვის"</string>
+ <string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"მედია აუდიოსთვის გამოყენება"</string>
+ <string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"გამოიყენეთ ტელეფონის აუდიომოწყობილობაში"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"ფაილების ტრანსფერისათვის გამოყენება"</string>
+ <string name="bluetooth_hid_profile_summary_use_for" msgid="232727040453645139">"შეტანისთვის გამოყენება"</string>
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"დაწყვილება"</string>
+ <string name="bluetooth_pairing_accept_all_caps" msgid="6061699265220789149">"დაწყვილება"</string>
+ <string name="bluetooth_pairing_decline" msgid="4185420413578948140">"გაუქმება"</string>
+ <string name="bluetooth_pairing_will_share_phonebook" msgid="4982239145676394429">"დაწყვილების შემთხვევაში დაკავშირებულ რეჟიმში ყოფნისას მიენიჭება თქვენს კონტაქტებზე და ზარის ისტორიაზე წვდომის ნებართვა."</string>
+ <string name="bluetooth_pairing_error_message" msgid="3748157733635947087">"ვერ დაწყვილდა <xliff:g id="DEVICE_NAME">%1$s</xliff:g>-თან."</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="8337234855188925274">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>-თან დაწყვილება ვერ მოხერხდა, რადგან PIN ან გასაღები არასწორია."</string>
+ <string name="bluetooth_pairing_device_down_error_message" msgid="7870998403045801381">"შეუძლებელია <xliff:g id="DEVICE_NAME">%1$s</xliff:g>-თან კომუნიკაცია."</string>
+ <string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"დაწყვილება უარყოფილია <xliff:g id="DEVICE_NAME">%1$s</xliff:g>-ის მიერ."</string>
+ <string name="accessibility_wifi_off" msgid="1166761729660614716">"WiFi გამორთულია."</string>
+ <string name="accessibility_no_wifi" msgid="8834610636137374508">"WiFi არ არის დაკავშირებული."</string>
+ <string name="accessibility_wifi_one_bar" msgid="4869376278894301820">"WiFi სიგნალი ერთ ზოლზეა."</string>
+ <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>
+ <string name="process_kernel_label" msgid="3916858646836739323">"Android OS"</string>
+ <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"აპების წაშლა"</string>
+ <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"წაშლილი აპები და მომხმარებლები"</string>
+ <string name="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_usb_bluetooth" msgid="5355828977109785001">"მოდემის რეჟიმი"</string>
+ <string name="tether_settings_title_all" msgid="8356136101061143841">"მოდემი და პორტატული უსადენო ქსელი"</string>
+ <string name="managed_user_title" msgid="8101244883654409696">"სამუშაო პროფილი"</string>
+ <string name="user_guest" msgid="8475274842845401871">"სტუმარი"</string>
+ <string name="unknown" msgid="1592123443519355854">"უცნობი"</string>
+ <string name="running_process_item_user_label" msgid="3129887865552025943">"მომხმარებელი: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
+ <string name="launch_defaults_some" msgid="313159469856372621">"ზოგიერთი ნაგულისხმევი პარამეტრი დაყენებულია"</string>
+ <string name="launch_defaults_none" msgid="4241129108140034876">"ნაგულისხმევი პარამეტრები არ არის დაყენებული."</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-kk-rKZ/arrays.xml b/packages/SettingsLib/res/values-kk-rKZ/arrays.xml
new file mode 100644
index 0000000..6555efe1
--- /dev/null
+++ b/packages/SettingsLib/res/values-kk-rKZ/arrays.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="wifi_status">
+ <item msgid="1922181315419294640"></item>
+ <item msgid="8934131797783724664">"Тексеруде…"</item>
+ <item msgid="8513729475867537913">"Қосылуда..."</item>
+ <item msgid="515055375277271756">"Растауда…"</item>
+ <item msgid="1943354004029184381">"IP мекенжайына қол жеткізуде…"</item>
+ <item msgid="4221763391123233270">"Қосылған"</item>
+ <item msgid="624838831631122137">"Уақытша тоқтатылды"</item>
+ <item msgid="7979680559596111948">"Ажыратуда…"</item>
+ <item msgid="1634960474403853625">"Ажыратылған"</item>
+ <item msgid="746097431216080650">"Сәтсіз"</item>
+ <item msgid="6367044185730295334">"Бөгелген"</item>
+ <item msgid="503942654197908005">"Нашар байланысты уақытша қолданбау"</item>
+ </string-array>
+ <string-array name="wifi_status_with_ssid">
+ <item msgid="7714855332363650812"></item>
+ <item msgid="8878186979715711006">"Тексеруде…"</item>
+ <item msgid="355508996603873860">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> қосылуда…"</item>
+ <item msgid="554971459996405634">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> арқылы расталуда…"</item>
+ <item msgid="7928343808033020343">"IP мекенжайын <xliff:g id="NETWORK_NAME">%1$s</xliff:g> арқылы алуда…"</item>
+ <item msgid="8937994881315223448">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> жалғанған"</item>
+ <item msgid="1330262655415760617">"Уақытша тоқтатылды"</item>
+ <item msgid="7698638434317271902">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> байланысынан ажыратылуда…"</item>
+ <item msgid="197508606402264311">"Ажыратылған"</item>
+ <item msgid="8578370891960825148">"Сәтсіз"</item>
+ <item msgid="5660739516542454527">"Бөгелген"</item>
+ <item msgid="1805837518286731242">"Нашар байланысты уақытша қолданбау"</item>
+ </string-array>
+</resources>
diff --git a/packages/SettingsLib/res/values-kk-rKZ/strings.xml b/packages/SettingsLib/res/values-kk-rKZ/strings.xml
new file mode 100644
index 0000000..7d89c80
--- /dev/null
+++ b/packages/SettingsLib/res/values-kk-rKZ/strings.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="wifi_fail_to_scan" msgid="1265540342578081461">"Желілерді шолу мүмкін емес"</string>
+ <string name="wifi_security_none" msgid="7985461072596594400">"Ешқандай"</string>
+ <string name="wifi_remembered" msgid="4955746899347821096">"Сақталды"</string>
+ <string name="wifi_disabled_generic" msgid="4259794910584943386">"Өшірілген"</string>
+ <string name="wifi_disabled_network_failure" msgid="2364951338436007124">"IP конфигурациясының қатесі"</string>
+ <string name="wifi_disabled_wifi_failure" msgid="3081668066612876581">"Wi-Fi байланысының қатесі"</string>
+ <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"Растау мәселесі"</string>
+ <string name="wifi_not_in_range" msgid="1136191511238508967">"Аумақта жоқ"</string>
+ <string name="wifi_no_internet" msgid="9151470775868728896">"Интернетке қатынас анықталмады, автоматты түрде қайта қосылу орындалмайды."</string>
+ <string name="saved_network" msgid="4352716707126620811">"<xliff:g id="NAME">%1$s</xliff:g> сақтаған"</string>
+ <string name="connected_via_wfa" msgid="3805736726317410714">"Wi‑Fi көмекшісі арқылы қосылу орындалды"</string>
+ <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>
+ <string name="bluetooth_disconnected" msgid="6557104142667339895">"Ажыратылған"</string>
+ <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Ажыратылуда…"</string>
+ <string name="bluetooth_connecting" msgid="8555009514614320497">"Жалғауда..."</string>
+ <string name="bluetooth_connected" msgid="6038755206916626419">"Жалғанған"</string>
+ <string name="bluetooth_pairing" msgid="1426882272690346242">"Жұптауда..."</string>
+ <string name="bluetooth_connected_no_headset" msgid="2866994875046035609">"Жалғанған (телефон жоқ)"</string>
+ <string name="bluetooth_connected_no_a2dp" msgid="4576188601581440337">"Жалғанған (медиа жоқ)"</string>
+ <string name="bluetooth_connected_no_map" msgid="6504436917057479986">"Жалғанған (хабарлар қол жетімсіз)"</string>
+ <string name="bluetooth_connected_no_headset_no_a2dp" msgid="9195757766755553810">"Жалғанған (телефон және медиа жоқ)"</string>
+ <string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Meдиа аудиосы"</string>
+ <string name="bluetooth_profile_headset" msgid="8658779596261212609">"Телефон аудиосы"</string>
+ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"Файл жіберу"</string>
+ <string name="bluetooth_profile_hid" msgid="3680729023366986480">"Кіріс құрылғысы"</string>
+ <string name="bluetooth_profile_pan" msgid="3391606497945147673">"Интернетке қосылу"</string>
+ <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"Контактіні бөлісу"</string>
+ <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"Контактіні бөлісу үшін пайдалану"</string>
+ <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"Интернет байланысын ортақ қолдану"</string>
+ <string name="bluetooth_profile_map" msgid="5465271250454324383">"Хабарға кіру"</string>
+ <string name="bluetooth_profile_sap" msgid="5764222021851283125">"SIM картасына кіру"</string>
+ <string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"Медиа аудиосына жалғанған"</string>
+ <string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"Телефон аудиосына қосылған"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"Файл жіберу серверіне жалғанған"</string>
+ <string name="bluetooth_map_profile_summary_connected" msgid="8191407438851351713">"Картаға жалғанған"</string>
+ <string name="bluetooth_sap_profile_summary_connected" msgid="8561765057453083838">"SAP жүйесіне қосылған"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"Файл жіберу серверіне жалғанбаған"</string>
+ <string name="bluetooth_hid_profile_summary_connected" msgid="3381760054215168689">"Кіріс құрылғысына косылған"</string>
+ <string name="bluetooth_pan_user_profile_summary_connected" msgid="4602294638909590612">"Құрылғыға интернетке кіру үшін жалғанған"</string>
+ <string name="bluetooth_pan_nap_profile_summary_connected" msgid="1561383706411975199">"Жергілікті интернет байланысын құрылғымен ортақ пайдалану"</string>
+ <string name="bluetooth_pan_profile_summary_use_for" msgid="5664884523822068653">"Интернетке кіру үшін қолдану"</string>
+ <string name="bluetooth_map_profile_summary_use_for" msgid="5154200119919927434">"Карта үшін қолдану"</string>
+ <string name="bluetooth_sap_profile_summary_use_for" msgid="7085362712786907993">"SIM картасына кіру үшін пайдалану"</string>
+ <string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"Медиа аудиосы үшін қолдану"</string>
+ <string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"Телефон аудиосы үшін қолдану"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"Файлды жіберу үшін қолдану"</string>
+ <string name="bluetooth_hid_profile_summary_use_for" msgid="232727040453645139">"Кіріс үшін қолдану"</string>
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"Жұптау"</string>
+ <string name="bluetooth_pairing_accept_all_caps" msgid="6061699265220789149">"ЖҰПТАУ"</string>
+ <string name="bluetooth_pairing_decline" msgid="4185420413578948140">"Бас тарту"</string>
+ <string name="bluetooth_pairing_will_share_phonebook" msgid="4982239145676394429">"Жұптасқан кезде, контактілеріңіз бен қоңыраулар тарихын көру мүмкіндігі беріледі."</string>
+ <string name="bluetooth_pairing_error_message" msgid="3748157733635947087">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> жұпталу орындалмады."</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="8337234855188925274">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> құрылғысымен жұптала алмады, себебі PIN немесе кілтсөз дұрыс емес."</string>
+ <string name="bluetooth_pairing_device_down_error_message" msgid="7870998403045801381">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> құрылғысымен қатынаса алмайды"</string>
+ <string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> құрылғысы жұпталудан бас тартты."</string>
+ <string name="accessibility_wifi_off" msgid="1166761729660614716">"Wi-Fi өшірулі."</string>
+ <string name="accessibility_no_wifi" msgid="8834610636137374508">"Wi-Fi ажыратылған."</string>
+ <string name="accessibility_wifi_one_bar" msgid="4869376278894301820">"Wi-Fi сигналы — бір жолақ."</string>
+ <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>
+ <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_wifi" msgid="3277144155960302049">"Алынбалы хот-спот"</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="managed_user_title" msgid="8101244883654409696">"Жұмыс профилі"</string>
+ <string name="user_guest" msgid="8475274842845401871">"Қонақ"</string>
+ <string name="unknown" msgid="1592123443519355854">"Белгісіз"</string>
+ <string name="running_process_item_user_label" msgid="3129887865552025943">"Пайдаланушы: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
+ <string name="launch_defaults_some" msgid="313159469856372621">"Кейбір әдепкі параметрлер орнатылған"</string>
+ <string name="launch_defaults_none" msgid="4241129108140034876">"Әдепкі параметрлер орнатылмаған"</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-km-rKH/arrays.xml b/packages/SettingsLib/res/values-km-rKH/arrays.xml
new file mode 100644
index 0000000..3c65bf3
--- /dev/null
+++ b/packages/SettingsLib/res/values-km-rKH/arrays.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="wifi_status">
+ <item msgid="1922181315419294640"></item>
+ <item msgid="8934131797783724664">"កំពុងវិភាគរក…"</item>
+ <item msgid="8513729475867537913">"កំពុងតភ្ជាប់…"</item>
+ <item msgid="515055375277271756">"កំពុងផ្ទៀងផ្ទាត់..."</item>
+ <item msgid="1943354004029184381">"កំពុងទទួលអាសយដ្ឋាន IP…"</item>
+ <item msgid="4221763391123233270">"បានតភ្ជាប់"</item>
+ <item msgid="624838831631122137">"បានពន្យារពេល"</item>
+ <item msgid="7979680559596111948">"កំពុងផ្ដាច់…"</item>
+ <item msgid="1634960474403853625">"បានផ្ដាច់"</item>
+ <item msgid="746097431216080650">"មិនជោគជ័យ"</item>
+ <item msgid="6367044185730295334">"បានទប់ស្កាត់"</item>
+ <item msgid="503942654197908005">"ជៀសវាងការតភ្ជាប់ដែលខ្សោយជាបណ្ដោះអាសន្ន"</item>
+ </string-array>
+ <string-array name="wifi_status_with_ssid">
+ <item msgid="7714855332363650812"></item>
+ <item msgid="8878186979715711006">"កំពុងវិភាគរក…"</item>
+ <item msgid="355508996603873860">"កំពុងតភ្ជាប់ទៅ <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="554971459996405634">"កំពុងផ្ទៀងផ្ទាត់ជាមួយ <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="7928343808033020343">"កំពុងយកអាសយដ្ឋាន IP ពី <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="8937994881315223448">"បានតភ្ជាប់ទៅ <xliff:g id="NETWORK_NAME">%1$s</xliff:g>"</item>
+ <item msgid="1330262655415760617">"បានផ្អាក"</item>
+ <item msgid="7698638434317271902">"កំពុងផ្ដាច់ពីរ <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="197508606402264311">"បានផ្ដាច់"</item>
+ <item msgid="8578370891960825148">"មិនជោគជ័យ"</item>
+ <item msgid="5660739516542454527">"បានទប់ស្កាត់"</item>
+ <item msgid="1805837518286731242">"ជៀសវាងការតភ្ជាប់ខ្សោយជាបណ្ដោះអាសន្ន"</item>
+ </string-array>
+</resources>
diff --git a/packages/SettingsLib/res/values-km-rKH/strings.xml b/packages/SettingsLib/res/values-km-rKH/strings.xml
new file mode 100644
index 0000000..59f18db
--- /dev/null
+++ b/packages/SettingsLib/res/values-km-rKH/strings.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="wifi_fail_to_scan" msgid="1265540342578081461">"មិនអាចវិភាគរកបណ្ដាញ"</string>
+ <string name="wifi_security_none" msgid="7985461072596594400">"គ្មាន"</string>
+ <string name="wifi_remembered" msgid="4955746899347821096">"បានរក្សាទុក"</string>
+ <string name="wifi_disabled_generic" msgid="4259794910584943386">"បានបិទ"</string>
+ <string name="wifi_disabled_network_failure" msgid="2364951338436007124">"ការកំណត់រចនាសម្ព័ន្ធ IP បរាជ័យ"</string>
+ <string name="wifi_disabled_wifi_failure" msgid="3081668066612876581">"ការភ្ជាប់ WiFi បរាជ័យ"</string>
+ <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"បញ្ហាក្នុងការផ្ទៀងផ្ទាត់"</string>
+ <string name="wifi_not_in_range" msgid="1136191511238508967">"នៅក្រៅតំបន់"</string>
+ <string name="wifi_no_internet" msgid="9151470775868728896">"រកមិនឃើញការចូលដំណើរការអ៊ីនធឺណិត, នឹងមិនភ្ជាប់ឡើងវិញដោយស្វ័យប្រវត្តិទេ។"</string>
+ <string name="saved_network" msgid="4352716707126620811">"បានរក្សាទុកដោយ <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="connected_via_wfa" msgid="3805736726317410714">"បានភ្ជាប់តាមរយៈជំនួយការ Wi‑Fi"</string>
+ <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>
+ <string name="bluetooth_disconnected" msgid="6557104142667339895">"បានផ្ដាច់"</string>
+ <string name="bluetooth_disconnecting" msgid="8913264760027764974">"កំពុងផ្ដាច់…"</string>
+ <string name="bluetooth_connecting" msgid="8555009514614320497">"កំពុងតភ្ជាប់…"</string>
+ <string name="bluetooth_connected" msgid="6038755206916626419">"បានតភ្ជាប់"</string>
+ <string name="bluetooth_pairing" msgid="1426882272690346242">"កំពុងផ្គូផ្គង..."</string>
+ <string name="bluetooth_connected_no_headset" msgid="2866994875046035609">"បានតភ្ជាប់ (គ្មានទូរស័ព្ទ)"</string>
+ <string name="bluetooth_connected_no_a2dp" msgid="4576188601581440337">"បានតភ្ជាប់ (គ្មានមេឌៀ)"</string>
+ <string name="bluetooth_connected_no_map" msgid="6504436917057479986">"បានភ្ជាប់ (គ្មានការចូលដំណើរការសារ)"</string>
+ <string name="bluetooth_connected_no_headset_no_a2dp" msgid="9195757766755553810">"បានតភ្ជាប់ (គ្មានទូរស័ព្ទ ឬមេឌៀ)"</string>
+ <string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"សំឡេងមេឌៀ"</string>
+ <string name="bluetooth_profile_headset" msgid="8658779596261212609">"សំឡេងទូរស័ព្ទ"</string>
+ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"ផ្ទេរឯកសារ"</string>
+ <string name="bluetooth_profile_hid" msgid="3680729023366986480">"ឧបករណ៍បញ្ចូល"</string>
+ <string name="bluetooth_profile_pan" msgid="3391606497945147673">"ចូលអ៊ីនធឺណិត"</string>
+ <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"ការចែករំលែកទំនាក់ទំនង"</string>
+ <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"ប្រើសម្រាប់ការចែករំលែកទំនាក់ទំនង"</string>
+ <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"ចែករំលែកការតភ្ជាប់អ៊ីនធឺណិត"</string>
+ <string name="bluetooth_profile_map" msgid="5465271250454324383">"ចូលដំណើរការសារ"</string>
+ <string name="bluetooth_profile_sap" msgid="5764222021851283125">"ការចូលដំណើរការស៊ីម"</string>
+ <string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"បានភ្ជាប់ទៅអូឌីយ៉ូមេឌៀ"</string>
+ <string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"តភ្ជាប់ទៅអូឌីយ៉ូទូរស័ព្ទ"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"បានតភ្ជាប់ទៅម៉ាស៊ីនមេផ្ទេរឯកសារ"</string>
+ <string name="bluetooth_map_profile_summary_connected" msgid="8191407438851351713">"បានភ្ជាប់ទៅផែនទី"</string>
+ <string name="bluetooth_sap_profile_summary_connected" msgid="8561765057453083838">"បានភ្ជាប់ទៅ SAP"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"មិនបានតភ្ជាប់ទៅម៉ាស៊ីនមេផ្ទេរឯកសារ"</string>
+ <string name="bluetooth_hid_profile_summary_connected" msgid="3381760054215168689">"បានតភ្ជាប់ទៅឧបករណ៍បញ្ចូល"</string>
+ <string name="bluetooth_pan_user_profile_summary_connected" msgid="4602294638909590612">"បានតភ្ជាប់ឧបករណ៍សម្រាប់ចូលអ៊ីនធឺណិត"</string>
+ <string name="bluetooth_pan_nap_profile_summary_connected" msgid="1561383706411975199">"ចែករំលែកការតភ្ជាប់អ៊ីនធឺណិតមូលដ្ឋានជាមួយឧបករណ៍"</string>
+ <string name="bluetooth_pan_profile_summary_use_for" msgid="5664884523822068653">"ប្រើសម្រាប់ចូលអ៊ីនធឺណិត"</string>
+ <string name="bluetooth_map_profile_summary_use_for" msgid="5154200119919927434">"ប្រើសម្រាប់ផែនទី"</string>
+ <string name="bluetooth_sap_profile_summary_use_for" msgid="7085362712786907993">"ប្រើសម្រាប់ចូលដំណើរការស៊ីម"</string>
+ <string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"ប្រើសម្រាប់សំឡេងមេឌៀ"</string>
+ <string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"ប្រើសម្រាប់អូឌីយ៉ូទូរស័ព្ទ"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"ប្រើសម្រាប់ផ្ទេរឯកសារ"</string>
+ <string name="bluetooth_hid_profile_summary_use_for" msgid="232727040453645139">"ប្រើសម្រាប់បញ្ចូល"</string>
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"ផ្គូផ្គង"</string>
+ <string name="bluetooth_pairing_accept_all_caps" msgid="6061699265220789149">"ផ្គូផ្គង"</string>
+ <string name="bluetooth_pairing_decline" msgid="4185420413578948140">"បោះបង់"</string>
+ <string name="bluetooth_pairing_will_share_phonebook" msgid="4982239145676394429">"ការផ្គូផ្គងដើម្បីចូលដំណើរការទំនាក់ទំនង និងប្រវត្តិហៅរបស់អ្នក ពេលបានតភ្ជាប់។"</string>
+ <string name="bluetooth_pairing_error_message" msgid="3748157733635947087">"មិនអាចផ្គូផ្គងជាមួយ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ។"</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="8337234855188925274">"មិនអាចផ្គូផ្គងជាមួយ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ព្រោះកូដ PIN ឬលេខកូដមិនត្រឹមត្រូវ។"</string>
+ <string name="bluetooth_pairing_device_down_error_message" msgid="7870998403045801381">"មិនអាចទាក់ទងជាមួយ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ។"</string>
+ <string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"ការផ្គូផ្គងបានបដិសេធដោយ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ។"</string>
+ <string name="accessibility_wifi_off" msgid="1166761729660614716">"បានបិទ Wifi"</string>
+ <string name="accessibility_no_wifi" msgid="8834610636137374508">"បានផ្តាច់ Wifi"</string>
+ <string name="accessibility_wifi_one_bar" msgid="4869376278894301820">"Wifi មួយកាំ"</string>
+ <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>
+ <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">"ការភ្ជាប់យូអេសប៊ី"</string>
+ <string name="tether_settings_title_wifi" msgid="3277144155960302049">"ហតស្ពតចល័ត"</string>
+ <string name="tether_settings_title_bluetooth" msgid="355855408317564420">"ការភ្ជាប់ប៊្លូធូស"</string>
+ <string name="tether_settings_title_usb_bluetooth" msgid="5355828977109785001">"ការភ្ជាប់"</string>
+ <string name="tether_settings_title_all" msgid="8356136101061143841">"ការភ្ជាប់ & ហតស្ពតចល័ត"</string>
+ <string name="managed_user_title" msgid="8101244883654409696">"ប្រវត្តិរូបការងារ"</string>
+ <string name="user_guest" msgid="8475274842845401871">"ភ្ញៀវ"</string>
+ <string name="unknown" msgid="1592123443519355854">"មិនស្គាល់"</string>
+ <string name="running_process_item_user_label" msgid="3129887865552025943">"អ្នកប្រើ៖ <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
+ <string name="launch_defaults_some" msgid="313159469856372621">"លំនាំដើមមួយចំនួនត្រូវបានកំណត់"</string>
+ <string name="launch_defaults_none" msgid="4241129108140034876">"គ្មានការកំណត់លំនាំដើម"</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-kn-rIN/arrays.xml b/packages/SettingsLib/res/values-kn-rIN/arrays.xml
new file mode 100644
index 0000000..7e42fb4
--- /dev/null
+++ b/packages/SettingsLib/res/values-kn-rIN/arrays.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="wifi_status">
+ <item msgid="1922181315419294640"></item>
+ <item msgid="8934131797783724664">"ಸ್ಕ್ಯಾನ್ ಮಾಡಲಾಗುತ್ತಿದೆ…"</item>
+ <item msgid="8513729475867537913">"ಸಂಪರ್ಕಪಡಿಸಲಾಗುತ್ತಿದೆ..."</item>
+ <item msgid="515055375277271756">"ಪ್ರಮಾಣೀಕರಿಸಲಾಗುತ್ತಿದೆ..."</item>
+ <item msgid="1943354004029184381">"IP ವಿಳಾಸವನ್ನು ಪಡೆಯಲಾಗುತ್ತಿದೆ…"</item>
+ <item msgid="4221763391123233270">"ಸಂಪರ್ಕಗೊಂಡಿದೆ"</item>
+ <item msgid="624838831631122137">"ತಡೆಹಿಡಿಯಲಾಗಿದೆ"</item>
+ <item msgid="7979680559596111948">"ಸಂಪರ್ಕ ಕಡಿತಗೊಳಿಸಲಾಗುತ್ತಿದೆ..."</item>
+ <item msgid="1634960474403853625">"ಸಂಪರ್ಕ ಕಡಿತಗೊಳಿಸಲಾಗಿದೆ"</item>
+ <item msgid="746097431216080650">"ಯಶಸ್ವಿಯಾಗಲಿಲ್ಲ"</item>
+ <item msgid="6367044185730295334">"ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ"</item>
+ <item msgid="503942654197908005">"ಕಳಪೆ ಸಂಪರ್ಕವನ್ನು ತಾತ್ಕಾಲಿಕವಾಗಿ ತಡೆಗಟ್ಟಲಾಗುತ್ತಿದೆ"</item>
+ </string-array>
+ <string-array name="wifi_status_with_ssid">
+ <item msgid="7714855332363650812"></item>
+ <item msgid="8878186979715711006">"ಸ್ಕ್ಯಾನ್ ಮಾಡಲಾಗುತ್ತಿದೆ…"</item>
+ <item msgid="355508996603873860">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> ಗೆ ಸಂಪರ್ಕಪಡಿಸಲಾಗುತ್ತಿದೆ…"</item>
+ <item msgid="554971459996405634">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> ಜೊತೆ ಪ್ರಮಾಣೀಕರಿಸಲಾಗುತ್ತಿದೆ…"</item>
+ <item msgid="7928343808033020343">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> ನಿಂದ IP ವಿಳಾಸವನ್ನು ಪಡೆಯಲಾಗುತ್ತಿದೆ…"</item>
+ <item msgid="8937994881315223448">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> ಗೆ ಸಂಪರ್ಕಪಡಿಸಲಾಗಿದೆ"</item>
+ <item msgid="1330262655415760617">"ತಡೆಹಿಡಿಯಲಾಗಿದೆ"</item>
+ <item msgid="7698638434317271902">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> ನಿಂದ ಸಂಪರ್ಕ ಕಡಿತಗೊಳಿಸಲಾಗುತ್ತಿದೆ…"</item>
+ <item msgid="197508606402264311">"ಸಂಪರ್ಕ ಕಡಿತಗೊಳಿಸಲಾಗಿದೆ"</item>
+ <item msgid="8578370891960825148">"ಯಶಸ್ವಿಯಾಗಲಿಲ್ಲ"</item>
+ <item msgid="5660739516542454527">"ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ"</item>
+ <item msgid="1805837518286731242">"ಕಳಪೆ ಸಂಪರ್ಕವನ್ನು ತಾತ್ಕಾಲಿಕವಾಗಿ ತಡೆಗಟ್ಟಲಾಗುತ್ತಿದೆ"</item>
+ </string-array>
+</resources>
diff --git a/packages/SettingsLib/res/values-kn-rIN/strings.xml b/packages/SettingsLib/res/values-kn-rIN/strings.xml
new file mode 100644
index 0000000..ef05366
--- /dev/null
+++ b/packages/SettingsLib/res/values-kn-rIN/strings.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="wifi_fail_to_scan" msgid="1265540342578081461">"ನೆಟ್ವರ್ಕ್ಗಳಿಗಾಗಿ ಸ್ಕ್ಯಾನ್ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ"</string>
+ <string name="wifi_security_none" msgid="7985461072596594400">"ಯಾವುದೂ ಇಲ್ಲ"</string>
+ <string name="wifi_remembered" msgid="4955746899347821096">"ಉಳಿಸಲಾಗಿದೆ"</string>
+ <string name="wifi_disabled_generic" msgid="4259794910584943386">"ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ"</string>
+ <string name="wifi_disabled_network_failure" msgid="2364951338436007124">"IP ಕಾನ್ಫಿಗರೇಶನ್ ವಿಫಲತೆ"</string>
+ <string name="wifi_disabled_wifi_failure" msgid="3081668066612876581">"WiFi ಸಂಪರ್ಕ ವಿಫಲತೆ"</string>
+ <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"ಪ್ರಮಾಣೀಕರಣ ಸಮಸ್ಯೆ"</string>
+ <string name="wifi_not_in_range" msgid="1136191511238508967">"ವ್ಯಾಪ್ತಿಯಲ್ಲಿಲ್ಲ"</string>
+ <string name="wifi_no_internet" msgid="9151470775868728896">"ಯಾವುದೇ ಇಂಟರ್ನೆಟ್ ಪ್ರವೇಶ ಪತ್ತೆಯಾಗಿಲ್ಲ, ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಮರುಸಂಪರ್ಕಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ."</string>
+ <string name="saved_network" msgid="4352716707126620811">"<xliff:g id="NAME">%1$s</xliff:g> ರಿಂದ ಉಳಿಸಲಾಗಿದೆ"</string>
+ <string name="connected_via_wfa" msgid="3805736726317410714">"Wi‑Fi ಸಹಾಯಕದ ಮೂಲಕ ಸಂಪರ್ಕಿತಗೊಳಿಸಲಾಗಿದೆ"</string>
+ <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>
+ <string name="bluetooth_disconnected" msgid="6557104142667339895">"ಸಂಪರ್ಕ ಕಡಿತಗೊಳಿಸಲಾಗಿದೆ"</string>
+ <string name="bluetooth_disconnecting" msgid="8913264760027764974">"ಸಂಪರ್ಕ ಕಡಿತಗೊಳಿಸಲಾಗುತ್ತಿದೆ..."</string>
+ <string name="bluetooth_connecting" msgid="8555009514614320497">"ಸಂಪರ್ಕಗೊಳಿಸಲಾಗುತ್ತಿದೆ..."</string>
+ <string name="bluetooth_connected" msgid="6038755206916626419">"ಸಂಪರ್ಕಗೊಂಡಿದೆ"</string>
+ <string name="bluetooth_pairing" msgid="1426882272690346242">"ಜೋಡಿಸಲಾಗುತ್ತಿದೆ..."</string>
+ <string name="bluetooth_connected_no_headset" msgid="2866994875046035609">"ಸಂಪರ್ಕಗೊಂಡಿದೆ (ಫೋನ್ ಇಲ್ಲ)"</string>
+ <string name="bluetooth_connected_no_a2dp" msgid="4576188601581440337">"ಸಂಪರ್ಕಗೊಂಡಿದೆ (ಮಾಧ್ಯಮವಿಲ್ಲ)"</string>
+ <string name="bluetooth_connected_no_map" msgid="6504436917057479986">"ಸಂಪರ್ಕಪಡಿಸಲಾಗಿದೆ (ಯಾವುದೇ ಸಂದೇಶ ಪ್ರವೇಶವಿಲ್ಲ)"</string>
+ <string name="bluetooth_connected_no_headset_no_a2dp" msgid="9195757766755553810">"ಸಂಪರ್ಕಗೊಂಡಿದೆ (ಫೋನ್ ಅಥವಾ ಮಾಧ್ಯಮವಿಲ್ಲ)"</string>
+ <string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"ಮಾಧ್ಯಮ ಆಡಿಯೋ"</string>
+ <string name="bluetooth_profile_headset" msgid="8658779596261212609">"ಫೋನ್ ಆಡಿಯೋ"</string>
+ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"ಫೈಲ್ ವರ್ಗಾವಣೆ"</string>
+ <string name="bluetooth_profile_hid" msgid="3680729023366986480">"ಇನ್ಪುಟ್ ಸಾಧನ"</string>
+ <string name="bluetooth_profile_pan" msgid="3391606497945147673">"ಇಂಟರ್ನೆಟ್ ಪ್ರವೇಶ"</string>
+ <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"ಸಂಪರ್ಕ ಹಂಚಿಕೆ"</string>
+ <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"ಸಂಪರ್ಕ ಹಂಚಿಕೆಗಾಗಿ ಬಳಸಿ"</string>
+ <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"ಇಂಟರ್ನೆಟ್ ಸಂಪರ್ಕ ಹಂಚಿಕೊಳ್ಳುವಿಕೆ"</string>
+ <string name="bluetooth_profile_map" msgid="5465271250454324383">"ಸಂದೇಶ ಪ್ರವೇಶಿಸುವಿಕೆ"</string>
+ <string name="bluetooth_profile_sap" msgid="5764222021851283125">"ಸಿಮ್ ಪ್ರವೇಶ"</string>
+ <string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"ಮಾಧ್ಯಮ ಆಡಿಯೋಗೆ ಸಂಪರ್ಕಗೊಂಡಿದೆ"</string>
+ <string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"ಫೋನ್ ಆಡಿಯೋಗೆ ಸಂಪರ್ಕಗೊಂಡಿದೆ"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"ಫೈಲ್ ವರ್ಗಾವಣೆ ಸರ್ವರ್ಗೆ ಸಂಪರ್ಕಗೊಂಡಿದೆ"</string>
+ <string name="bluetooth_map_profile_summary_connected" msgid="8191407438851351713">"ನಕ್ಷೆಗೆ ಸಂಪರ್ಕಗೊಂಡಿದೆ"</string>
+ <string name="bluetooth_sap_profile_summary_connected" msgid="8561765057453083838">"SAP ಗೆ ಸಂಪರ್ಕಗೊಂಡಿದೆ"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"ಫೈಲ್ ವರ್ಗಾವಣೆ ಸರ್ವರ್ಗೆ ಸಂಪರ್ಕಗೊಳ್ಳಲಿಲ್ಲ"</string>
+ <string name="bluetooth_hid_profile_summary_connected" msgid="3381760054215168689">"ಇನ್ಪುಟ್ ಸಾಧನಕ್ಕೆ ಸಂಪರ್ಕಗೊಂಡಿದೆ"</string>
+ <string name="bluetooth_pan_user_profile_summary_connected" msgid="4602294638909590612">"ಇಂಟರ್ನೆಟ್ ಪ್ರವೇಶಕ್ಕಾಗಿ ಸಾಧನಕ್ಕೆ ಸಂಪರ್ಕಗೊಂಡಿದೆ"</string>
+ <string name="bluetooth_pan_nap_profile_summary_connected" msgid="1561383706411975199">"ಸಾಧನದ ಜೊತೆಗೆ ಸ್ಥಳೀಯ ಇಂಟರ್ನೆಟ್ ಸಂಪರ್ಕವನ್ನು ಹಂಚಿಕೊಳ್ಳಲಾಗುತ್ತಿದೆ"</string>
+ <string name="bluetooth_pan_profile_summary_use_for" msgid="5664884523822068653">"ಇಂಟರ್ನೆಟ್ ಪ್ರವೇಶಕ್ಕಾಗಿ ಬಳಸಿ"</string>
+ <string name="bluetooth_map_profile_summary_use_for" msgid="5154200119919927434">"ನಕ್ಷೆಗಾಗಿ ಬಳಸಿ"</string>
+ <string name="bluetooth_sap_profile_summary_use_for" msgid="7085362712786907993">"ಸಿಮ್ ಪ್ರವೇಶಕ್ಕೆ ಬಳಸಿ"</string>
+ <string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"ಮಾಧ್ಯಮ ಆಡಿಯೋ ಬಳಸು"</string>
+ <string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"ಫೋನ್ ಆಡಿಯೋಗಾಗಿ ಬಳಕೆ"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"ಫೈಲ್ ವರ್ಗಾವಣೆಗಾಗಿ ಬಳಸು"</string>
+ <string name="bluetooth_hid_profile_summary_use_for" msgid="232727040453645139">"ಇನ್ಪುಟ್ಗಾಗಿ ಬಳಸು"</string>
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"ಜೋಡಿ"</string>
+ <string name="bluetooth_pairing_accept_all_caps" msgid="6061699265220789149">"ಜೋಡಿ ಮಾಡು"</string>
+ <string name="bluetooth_pairing_decline" msgid="4185420413578948140">"ರದ್ದುಮಾಡು"</string>
+ <string name="bluetooth_pairing_will_share_phonebook" msgid="4982239145676394429">"ಸಂಪರ್ಕಪಡಿಸಿದಾಗ, ಜೋಡಿಸುವಿಕೆಯು ನಿಮ್ಮ ಸಂಪರ್ಕಗಳು ಮತ್ತು ಕರೆ ಇತಿಹಾಸಕ್ಕೆ ಪ್ರವೇಶವನ್ನು ಅನುಮತಿಸುತ್ತದೆ."</string>
+ <string name="bluetooth_pairing_error_message" msgid="3748157733635947087">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> ಜೊತೆಗೆ ಜೋಡಣೆ ಮಾಡಲಾಗಲಿಲ್ಲ."</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="8337234855188925274">"ತಪ್ಪಾಗಿರುವ ಪಿನ್ ಅಥವಾ ಪಾಸ್ಕೀ ಕಾರಣದಿಂದಾಗಿ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ಜೊತೆಗೆ ಜೋಡಿಸಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ."</string>
+ <string name="bluetooth_pairing_device_down_error_message" msgid="7870998403045801381">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> ಜೊತೆಗೆ ಸಂವಹನ ನಡೆಸಲು ಸಾಧ್ಯವಿಲ್ಲ"</string>
+ <string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"ಜೋಡಿಸುವಿಕೆಯನ್ನು <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ತಿರಸ್ಕರಿಸಿದೆ"</string>
+ <string name="accessibility_wifi_off" msgid="1166761729660614716">"ವೈಫೈ ಆಫ್."</string>
+ <string name="accessibility_no_wifi" msgid="8834610636137374508">"ವೈಫೈ ಸಂಪರ್ಕ ಕಡಿತಗೊಂಡಿದೆ."</string>
+ <string name="accessibility_wifi_one_bar" msgid="4869376278894301820">"ವೈಫೈ ಒಂದು ಪಟ್ಟಿ."</string>
+ <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>
+ <string name="process_kernel_label" msgid="3916858646836739323">"Android OS"</string>
+ <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"ತೆಗೆದುಹಾಕಲಾದ ಅಪ್ಲಿಕೇಶನ್ಗಳು"</string>
+ <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"ಅಪ್ಲಿಕೇಶನ್ಗಳು ಮತ್ತು ಬಳಕೆದಾರರನ್ನು ತೆಗೆದುಹಾಕಲಾಗಿದೆ"</string>
+ <string name="tether_settings_title_usb" msgid="6688416425801386511">"USB ಟೆಥರಿಂಗ್"</string>
+ <string name="tether_settings_title_wifi" msgid="3277144155960302049">"ಪೋರ್ಟಬಲ್ ಹಾಟ್ಸ್ಪಾಟ್"</string>
+ <string name="tether_settings_title_bluetooth" msgid="355855408317564420">"ಬ್ಲೂಟೂತ್ ಟೆಥರಿಂಗ್"</string>
+ <string name="tether_settings_title_usb_bluetooth" msgid="5355828977109785001">"ಟೆಥರಿಂಗ್"</string>
+ <string name="tether_settings_title_all" msgid="8356136101061143841">"ಟೆಥರಿಂಗ್ & ಪೋರ್ಟಬಲ್ ಹಾಟ್ಸ್ಪಾಟ್"</string>
+ <string name="managed_user_title" msgid="8101244883654409696">"ಕೆಲಸದ ಪ್ರೊಫೈಲ್"</string>
+ <string name="user_guest" msgid="8475274842845401871">"ಅತಿಥಿ"</string>
+ <string name="unknown" msgid="1592123443519355854">"ಅಜ್ಞಾತ"</string>
+ <string name="running_process_item_user_label" msgid="3129887865552025943">"ಬಳಕೆದಾರ: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
+ <string name="launch_defaults_some" msgid="313159469856372621">"ಕೆಲವು ಡೀಫಾಲ್ಟ್ಗಳನ್ನು ಹೊಂದಿಸಲಾಗಿದೆ"</string>
+ <string name="launch_defaults_none" msgid="4241129108140034876">"ಡೀಫಾಲ್ಟ್ಗಳನ್ನು ಹೊಂದಿಸಲಾಗಿಲ್ಲ"</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-ko/arrays.xml b/packages/SettingsLib/res/values-ko/arrays.xml
new file mode 100644
index 0000000..0fcb70d
--- /dev/null
+++ b/packages/SettingsLib/res/values-ko/arrays.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="wifi_status">
+ <item msgid="1922181315419294640"></item>
+ <item msgid="8934131797783724664">"검색 중..."</item>
+ <item msgid="8513729475867537913">"연결 중…"</item>
+ <item msgid="515055375277271756">"인증하는 중..."</item>
+ <item msgid="1943354004029184381">"IP 주소를 가져오는 중..."</item>
+ <item msgid="4221763391123233270">"연결됨"</item>
+ <item msgid="624838831631122137">"일시 정지됨"</item>
+ <item msgid="7979680559596111948">"연결을 끊는 중…"</item>
+ <item msgid="1634960474403853625">"연결 끊김"</item>
+ <item msgid="746097431216080650">"실패"</item>
+ <item msgid="6367044185730295334">"차단됨"</item>
+ <item msgid="503942654197908005">"연결 불량 일시적으로 방지"</item>
+ </string-array>
+ <string-array name="wifi_status_with_ssid">
+ <item msgid="7714855332363650812"></item>
+ <item msgid="8878186979715711006">"검색 중..."</item>
+ <item msgid="355508996603873860">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g>에 연결 중..."</item>
+ <item msgid="554971459996405634">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g>에서 인증하는 중..."</item>
+ <item msgid="7928343808033020343">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g>에서 IP 주소를 가져오는 중..."</item>
+ <item msgid="8937994881315223448">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g>에 연결됨"</item>
+ <item msgid="1330262655415760617">"일시 정지됨"</item>
+ <item msgid="7698638434317271902">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g>에서 연결을 끊는 중..."</item>
+ <item msgid="197508606402264311">"연결 끊김"</item>
+ <item msgid="8578370891960825148">"실패"</item>
+ <item msgid="5660739516542454527">"차단됨"</item>
+ <item msgid="1805837518286731242">"연결 상태 불량 일시적으로 방지"</item>
+ </string-array>
+</resources>
diff --git a/packages/SettingsLib/res/values-ko/strings.xml b/packages/SettingsLib/res/values-ko/strings.xml
new file mode 100644
index 0000000..75396cb
--- /dev/null
+++ b/packages/SettingsLib/res/values-ko/strings.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="wifi_fail_to_scan" msgid="1265540342578081461">"네트워크를 검색할 수 없습니다."</string>
+ <string name="wifi_security_none" msgid="7985461072596594400">"없음"</string>
+ <string name="wifi_remembered" msgid="4955746899347821096">"저장됨"</string>
+ <string name="wifi_disabled_generic" msgid="4259794910584943386">"사용 중지됨"</string>
+ <string name="wifi_disabled_network_failure" msgid="2364951338436007124">"IP 설정 실패"</string>
+ <string name="wifi_disabled_wifi_failure" msgid="3081668066612876581">"Wi-Fi 연결 실패"</string>
+ <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"인증 문제"</string>
+ <string name="wifi_not_in_range" msgid="1136191511238508967">"범위 내에 없음"</string>
+ <string name="wifi_no_internet" msgid="9151470775868728896">"감지된 인터넷 액세스가 없으며 자동으로 다시 연결되지 않습니다."</string>
+ <string name="saved_network" msgid="4352716707126620811">"<xliff:g id="NAME">%1$s</xliff:g>(으)로 저장됨"</string>
+ <string name="connected_via_wfa" msgid="3805736726317410714">"Wi‑Fi 도우미를 통해 연결됨"</string>
+ <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>
+ <string name="bluetooth_disconnected" msgid="6557104142667339895">"연결 끊김"</string>
+ <string name="bluetooth_disconnecting" msgid="8913264760027764974">"연결을 끊는 중…"</string>
+ <string name="bluetooth_connecting" msgid="8555009514614320497">"연결 중…"</string>
+ <string name="bluetooth_connected" msgid="6038755206916626419">"연결됨"</string>
+ <string name="bluetooth_pairing" msgid="1426882272690346242">"페어링 중..."</string>
+ <string name="bluetooth_connected_no_headset" msgid="2866994875046035609">"연결됨(전화 없음)"</string>
+ <string name="bluetooth_connected_no_a2dp" msgid="4576188601581440337">"연결됨(미디어 없음)"</string>
+ <string name="bluetooth_connected_no_map" msgid="6504436917057479986">"연결됨(메시지 액세스 없음)"</string>
+ <string name="bluetooth_connected_no_headset_no_a2dp" msgid="9195757766755553810">"연결됨(전화 또는 미디어 없음)"</string>
+ <string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"미디어 오디오"</string>
+ <string name="bluetooth_profile_headset" msgid="8658779596261212609">"휴대폰 오디오"</string>
+ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"파일 전송"</string>
+ <string name="bluetooth_profile_hid" msgid="3680729023366986480">"입력 장치"</string>
+ <string name="bluetooth_profile_pan" msgid="3391606497945147673">"인터넷 액세스"</string>
+ <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"연락처 공유"</string>
+ <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"연락처 공유용"</string>
+ <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"인터넷 연결 공유"</string>
+ <string name="bluetooth_profile_map" msgid="5465271250454324383">"메시지 액세스"</string>
+ <string name="bluetooth_profile_sap" msgid="5764222021851283125">"SIM 액세스"</string>
+ <string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"미디어 오디오에 연결됨"</string>
+ <string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"휴대전화 오디오에 연결됨"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"파일 전송 서버에 연결됨"</string>
+ <string name="bluetooth_map_profile_summary_connected" msgid="8191407438851351713">"지도에 연결됨"</string>
+ <string name="bluetooth_sap_profile_summary_connected" msgid="8561765057453083838">"SAP에 연결됨"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"파일 전송 서버에 연결되지 않았습니다."</string>
+ <string name="bluetooth_hid_profile_summary_connected" msgid="3381760054215168689">"입력 장치에 연결됨"</string>
+ <string name="bluetooth_pan_user_profile_summary_connected" msgid="4602294638909590612">"인터넷 액세스를 위해 기기에 연결됨"</string>
+ <string name="bluetooth_pan_nap_profile_summary_connected" msgid="1561383706411975199">"로컬 인터넷 연결을 기기와 공유 중"</string>
+ <string name="bluetooth_pan_profile_summary_use_for" msgid="5664884523822068653">"인터넷 액세스에 사용"</string>
+ <string name="bluetooth_map_profile_summary_use_for" msgid="5154200119919927434">"지도에 사용"</string>
+ <string name="bluetooth_sap_profile_summary_use_for" msgid="7085362712786907993">"SIM 액세스에 사용"</string>
+ <string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"미디어 오디오에 사용"</string>
+ <string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"휴대전화 오디오에 사용"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"파일 전송에 사용"</string>
+ <string name="bluetooth_hid_profile_summary_use_for" msgid="232727040453645139">"입력에 사용"</string>
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"페어링"</string>
+ <string name="bluetooth_pairing_accept_all_caps" msgid="6061699265220789149">"페어링"</string>
+ <string name="bluetooth_pairing_decline" msgid="4185420413578948140">"취소"</string>
+ <string name="bluetooth_pairing_will_share_phonebook" msgid="4982239145676394429">"페어링하면 연결 시 주소록 및 통화 기록에 액세스할 수 있습니다."</string>
+ <string name="bluetooth_pairing_error_message" msgid="3748157733635947087">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>와(과) 페어링하지 못했습니다."</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="8337234855188925274">"PIN 또는 패스키가 잘못되어 <xliff:g id="DEVICE_NAME">%1$s</xliff:g>와(과) 페어링하지 못했습니다."</string>
+ <string name="bluetooth_pairing_device_down_error_message" msgid="7870998403045801381">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>와(과) 통신할 수 없습니다."</string>
+ <string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>에서 페어링을 거부했습니다."</string>
+ <string name="accessibility_wifi_off" msgid="1166761729660614716">"Wi-Fi가 꺼져 있습니다."</string>
+ <string name="accessibility_no_wifi" msgid="8834610636137374508">"Wi-Fi 연결이 끊어졌습니다."</string>
+ <string name="accessibility_wifi_one_bar" msgid="4869376278894301820">"Wi-Fi 신호 막대가 한 개입니다."</string>
+ <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>
+ <string name="process_kernel_label" msgid="3916858646836739323">"Android OS"</string>
+ <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"삭제된 앱"</string>
+ <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"삭제된 앱 및 사용자"</string>
+ <string name="tether_settings_title_usb" msgid="6688416425801386511">"USB 테더링"</string>
+ <string name="tether_settings_title_wifi" msgid="3277144155960302049">"휴대용 핫스팟"</string>
+ <string name="tether_settings_title_bluetooth" msgid="355855408317564420">"블루투스 테더링"</string>
+ <string name="tether_settings_title_usb_bluetooth" msgid="5355828977109785001">"테더링"</string>
+ <string name="tether_settings_title_all" msgid="8356136101061143841">"테더링 및 휴대용 핫스팟"</string>
+ <string name="managed_user_title" msgid="8101244883654409696">"직장 프로필"</string>
+ <string name="user_guest" msgid="8475274842845401871">"손님"</string>
+ <string name="unknown" msgid="1592123443519355854">"알 수 없음"</string>
+ <string name="running_process_item_user_label" msgid="3129887865552025943">"사용자: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
+ <string name="launch_defaults_some" msgid="313159469856372621">"일부 기본값이 설정됨"</string>
+ <string name="launch_defaults_none" msgid="4241129108140034876">"기본값이 설정되지 않음"</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-ky-rKG/arrays.xml b/packages/SettingsLib/res/values-ky-rKG/arrays.xml
new file mode 100644
index 0000000..207dea1
--- /dev/null
+++ b/packages/SettingsLib/res/values-ky-rKG/arrays.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="wifi_status">
+ <item msgid="1922181315419294640"></item>
+ <item msgid="8934131797783724664">"Скандалууда…"</item>
+ <item msgid="8513729475867537913">"Туташууда…"</item>
+ <item msgid="515055375277271756">"Аныктыгы текшерилүүдө…"</item>
+ <item msgid="1943354004029184381">"IP дареги алынууда…"</item>
+ <item msgid="4221763391123233270">"Туташып турат"</item>
+ <item msgid="624838831631122137">"Убактылуу токтотулду"</item>
+ <item msgid="7979680559596111948">"Ажыратылууда…"</item>
+ <item msgid="1634960474403853625">"Ажыратылды"</item>
+ <item msgid="746097431216080650">"Ийгиликсиз"</item>
+ <item msgid="6367044185730295334">"Бөгөттөлгөн"</item>
+ <item msgid="503942654197908005">"Начар байланыштан убактылуу баш тартууда"</item>
+ </string-array>
+ <string-array name="wifi_status_with_ssid">
+ <item msgid="7714855332363650812"></item>
+ <item msgid="8878186979715711006">"Скандалууда…"</item>
+ <item msgid="355508996603873860">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> тармагына туташууда…"</item>
+ <item msgid="554971459996405634">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> менен аныктыгы текшерилүүдө…"</item>
+ <item msgid="7928343808033020343">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> тармагынан IP дареги алынууда…"</item>
+ <item msgid="8937994881315223448">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> тармагына туташты"</item>
+ <item msgid="1330262655415760617">"Убактылуу токтотулду"</item>
+ <item msgid="7698638434317271902">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> тармагынан ажыратылууда…"</item>
+ <item msgid="197508606402264311">"Ажыратылды"</item>
+ <item msgid="8578370891960825148">"Ийгиликсиз"</item>
+ <item msgid="5660739516542454527">"Бөгөттөлгөн"</item>
+ <item msgid="1805837518286731242">"Начар байланыштан убактылуу баш тартууда"</item>
+ </string-array>
+</resources>
diff --git a/packages/SettingsLib/res/values-ky-rKG/strings.xml b/packages/SettingsLib/res/values-ky-rKG/strings.xml
new file mode 100644
index 0000000..258b8eb
--- /dev/null
+++ b/packages/SettingsLib/res/values-ky-rKG/strings.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="wifi_fail_to_scan" msgid="1265540342578081461">"Түйүндөрдү издөө мүмкүн эмес"</string>
+ <string name="wifi_security_none" msgid="7985461072596594400">"Жок"</string>
+ <string name="wifi_remembered" msgid="4955746899347821096">"Сакталды"</string>
+ <string name="wifi_disabled_generic" msgid="4259794910584943386">"Өчүрүлгөн"</string>
+ <string name="wifi_disabled_network_failure" msgid="2364951338436007124">"IP конфигурациясы бузулду"</string>
+ <string name="wifi_disabled_wifi_failure" msgid="3081668066612876581">"WiFi туташуусу бузулду"</string>
+ <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"Аутентификация маселеси бар"</string>
+ <string name="wifi_not_in_range" msgid="1136191511238508967">"Тейлөө аймагында эмес"</string>
+ <string name="wifi_no_internet" msgid="9151470775868728896">"Интернетке кирүү мүмкүнчүлүгү табылган жок, андыктан автоматтык түрдө кайра туташпайт."</string>
+ <string name="saved_network" msgid="4352716707126620811">"<xliff:g id="NAME">%1$s</xliff:g> тарабынан сакталды"</string>
+ <string name="connected_via_wfa" msgid="3805736726317410714">"Wi‑Fi жардамчысы аркылуу туташып турат"</string>
+ <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>
+ <string name="bluetooth_disconnected" msgid="6557104142667339895">"Ажыратылды"</string>
+ <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Ажыратылууда…"</string>
+ <string name="bluetooth_connecting" msgid="8555009514614320497">"Туташууда…"</string>
+ <string name="bluetooth_connected" msgid="6038755206916626419">"Туташып турат"</string>
+ <string name="bluetooth_pairing" msgid="1426882272690346242">"Жупташтырылууда…"</string>
+ <string name="bluetooth_connected_no_headset" msgid="2866994875046035609">"Туташып турат (телефониясыз)"</string>
+ <string name="bluetooth_connected_no_a2dp" msgid="4576188601581440337">"Туташып турат (медиасыз)"</string>
+ <string name="bluetooth_connected_no_map" msgid="6504436917057479986">"Байланышта (билдирүү алмашуу жок)"</string>
+ <string name="bluetooth_connected_no_headset_no_a2dp" msgid="9195757766755553810">"Туташып турат (телефониясыз же медиасыз)"</string>
+ <string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Аудио"</string>
+ <string name="bluetooth_profile_headset" msgid="8658779596261212609">"Телефон"</string>
+ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"Файл алмашуу"</string>
+ <string name="bluetooth_profile_hid" msgid="3680729023366986480">"Киргизүү түзмөгү"</string>
+ <string name="bluetooth_profile_pan" msgid="3391606497945147673">"Интернетке мүмкүнчүлүк алуу"</string>
+ <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"Байланышты бөлүшүү"</string>
+ <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"Байланышты бөлүшүү үчүн колдонуу"</string>
+ <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"Интернет байланышын бөлүшүү"</string>
+ <string name="bluetooth_profile_map" msgid="5465271250454324383">"Билдирүү алмашуу"</string>
+ <string name="bluetooth_profile_sap" msgid="5764222021851283125">"SIM картаны пайдалануу мүмкүнчүлүгү"</string>
+ <string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"Медиа аудиого туташты"</string>
+ <string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"Телефон аудиосуна туташты"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"Файл өткөрүү серверине туташты"</string>
+ <string name="bluetooth_map_profile_summary_connected" msgid="8191407438851351713">"MAP\'ка байланышты"</string>
+ <string name="bluetooth_sap_profile_summary_connected" msgid="8561765057453083838">"SAP\'ка туташып турат"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"Файл өткөрүү серверине туташкан жок"</string>
+ <string name="bluetooth_hid_profile_summary_connected" msgid="3381760054215168689">"Киргизүү түзмөгүнө туташты"</string>
+ <string name="bluetooth_pan_user_profile_summary_connected" msgid="4602294638909590612">"Интернетке мүмкүнчүлүк алуу үчүн түзмөккө туташты"</string>
+ <string name="bluetooth_pan_nap_profile_summary_connected" msgid="1561383706411975199">"Жергиликтүү Интернет туташуусу түзмөк менен бөлүшүлүүдө"</string>
+ <string name="bluetooth_pan_profile_summary_use_for" msgid="5664884523822068653">"Интернетке мүмкүнчүлүк алуу үчүн колдонулсун"</string>
+ <string name="bluetooth_map_profile_summary_use_for" msgid="5154200119919927434">"MAP үчүн колдонуу"</string>
+ <string name="bluetooth_sap_profile_summary_use_for" msgid="7085362712786907993">"SIM картаны пайдалануу үчүн колдонуу"</string>
+ <string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"Медиа аудио үчүн колдонуу"</string>
+ <string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"Телефон аудиосу үчүн колдонулсун"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"Файл өткөрүү үчүн колдонулсун"</string>
+ <string name="bluetooth_hid_profile_summary_use_for" msgid="232727040453645139">"Киргизүү үчүн колдонулсун"</string>
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"Жупташтыруу"</string>
+ <string name="bluetooth_pairing_accept_all_caps" msgid="6061699265220789149">"ЖУПТАШТЫРУУ"</string>
+ <string name="bluetooth_pairing_decline" msgid="4185420413578948140">"Баш тартуу"</string>
+ <string name="bluetooth_pairing_will_share_phonebook" msgid="4982239145676394429">"Жупташканда байланыштарыңыз менен чалуу таржымалыңызды пайдалана аласыз."</string>
+ <string name="bluetooth_pairing_error_message" msgid="3748157733635947087">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> менен жупташуу мүмкүн эмес."</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="8337234855188925274">"PIN же код туура эмес болгондуктан <xliff:g id="DEVICE_NAME">%1$s</xliff:g> туташуу мүмкүн эмес."</string>
+ <string name="bluetooth_pairing_device_down_error_message" msgid="7870998403045801381">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> менен байланышуу мүмкүн эмес."</string>
+ <string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"Жупташтырууну <xliff:g id="DEVICE_NAME">%1$s</xliff:g> четке какты."</string>
+ <string name="accessibility_wifi_off" msgid="1166761729660614716">"Wifi өчүк."</string>
+ <string name="accessibility_no_wifi" msgid="8834610636137374508">"Wifi туташуусу жок."</string>
+ <string name="accessibility_wifi_one_bar" msgid="4869376278894301820">"Wifi: бир таякча."</string>
+ <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>
+ <string name="process_kernel_label" msgid="3916858646836739323">"Android OS"</string>
+ <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"Алынып салынган колдонмолор"</string>
+ <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"Өчүрүлгөн колдонмолор жана колдонуучулар"</string>
+ <string name="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_usb_bluetooth" msgid="5355828977109785001">"Жалгаштыруу"</string>
+ <string name="tether_settings_title_all" msgid="8356136101061143841">"Жалгаштыруу жана ташыма чекит"</string>
+ <string name="managed_user_title" msgid="8101244883654409696">"Жумуш профили"</string>
+ <string name="user_guest" msgid="8475274842845401871">"Конок"</string>
+ <string name="unknown" msgid="1592123443519355854">"Белгисиз"</string>
+ <string name="running_process_item_user_label" msgid="3129887865552025943">"Колдонуучу: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
+ <string name="launch_defaults_some" msgid="313159469856372621">"Айрым демейкилер коюлду"</string>
+ <string name="launch_defaults_none" msgid="4241129108140034876">"Демейкилер коюлган жок"</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-lo-rLA/arrays.xml b/packages/SettingsLib/res/values-lo-rLA/arrays.xml
new file mode 100644
index 0000000..799a6ec
--- /dev/null
+++ b/packages/SettingsLib/res/values-lo-rLA/arrays.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="wifi_status">
+ <item msgid="1922181315419294640"></item>
+ <item msgid="8934131797783724664">"ກຳລັງສະແກນ..."</item>
+ <item msgid="8513729475867537913">"ກຳລັງເຊື່ອມຕໍ່..."</item>
+ <item msgid="515055375277271756">"ກຳລັງພິສູດຢືນຢັນ..."</item>
+ <item msgid="1943354004029184381">"ກຳລັງຂໍທີ່ຢູ່ IP..."</item>
+ <item msgid="4221763391123233270">"ເຊື່ອມຕໍ່ແລ້ວ"</item>
+ <item msgid="624838831631122137">"ຖືກລະງັບໄວ້"</item>
+ <item msgid="7979680559596111948">"ກຳລັງຕັດການເຊື່ອມຕໍ່..."</item>
+ <item msgid="1634960474403853625">"ບໍ່ໄດ້ເຊື່ອມຕໍ່"</item>
+ <item msgid="746097431216080650">"ບໍ່ສຳເລັດ"</item>
+ <item msgid="6367044185730295334">"ບລັອກແລ້ວ"</item>
+ <item msgid="503942654197908005">"ຫຼີກເວັ້ນການເຊື່ອມຕໍ່ຊົ່ວຄາວຫາກສັນຍານບໍ່ແຮງພໍ"</item>
+ </string-array>
+ <string-array name="wifi_status_with_ssid">
+ <item msgid="7714855332363650812"></item>
+ <item msgid="8878186979715711006">"ກຳລັງຊອກຫາສັນຍານ..."</item>
+ <item msgid="355508996603873860">"ກຳລັງເຊື່ອມຕໍ່ <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="554971459996405634">"ກຳລັງກວດສອບສິດທິກັບ <xliff:g id="NETWORK_NAME">%1$s</xliff:g>..."</item>
+ <item msgid="7928343808033020343">"ກຳລັງຂໍທີ່ຢູ່ IP ຈາກ <xliff:g id="NETWORK_NAME">%1$s</xliff:g>..."</item>
+ <item msgid="8937994881315223448">"ເຊື່ອມຕໍ່ກັບ <xliff:g id="NETWORK_NAME">%1$s</xliff:g> ແລ້ວ"</item>
+ <item msgid="1330262655415760617">"ຖືກລະງັບແລ້ວ"</item>
+ <item msgid="7698638434317271902">"ກຳລັງຕັດການເຊື່ອມຕໍ່ຈາກ <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="197508606402264311">"ປິດການເຊື່ອມຕໍ່ແລ້ວ"</item>
+ <item msgid="8578370891960825148">"ບໍ່ສຳເລັດ"</item>
+ <item msgid="5660739516542454527">"ປິດກັ້ນແລ້ວ"</item>
+ <item msgid="1805837518286731242">"ຫຼີກເວັ້ນການເຊື່ອມຕໍ່ເຄືອຂ່າຍສັນຍານອ່ອນຊົ່ວຄາວ"</item>
+ </string-array>
+</resources>
diff --git a/packages/SettingsLib/res/values-lo-rLA/strings.xml b/packages/SettingsLib/res/values-lo-rLA/strings.xml
new file mode 100644
index 0000000..ba29eab
--- /dev/null
+++ b/packages/SettingsLib/res/values-lo-rLA/strings.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="wifi_fail_to_scan" msgid="1265540342578081461">"ບໍ່ສາມາດກວດຫາເຄືອຂ່າຍໄດ້"</string>
+ <string name="wifi_security_none" msgid="7985461072596594400">"ບໍ່ໃຊ້"</string>
+ <string name="wifi_remembered" msgid="4955746899347821096">"ບັນທຶກແລ້ວ"</string>
+ <string name="wifi_disabled_generic" msgid="4259794910584943386">"ປິດການນຳໃຊ້"</string>
+ <string name="wifi_disabled_network_failure" msgid="2364951338436007124">"ການຕັ້ງຄ່າ IP ລົ້ມເຫຼວ"</string>
+ <string name="wifi_disabled_wifi_failure" msgid="3081668066612876581">"ການເຊື່ອມຕໍ່ WiFi ລົ້ມເຫຼວ"</string>
+ <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"ບັນຫາການພິສູດຢືນຢັນ"</string>
+ <string name="wifi_not_in_range" msgid="1136191511238508967">"ບໍ່ຢູ່ໃນໄລຍະທີ່ເຊື່ອມຕໍ່ໄດ້"</string>
+ <string name="wifi_no_internet" msgid="9151470775868728896">"ບໍ່ພົບການເຊື່ອມຕໍ່ອິນເຕີເນັດ, ຈະບໍ່ຖືກເຊື່ອມຕໍ່ໃໝ່ໂດຍອັດຕະໂນມັດ."</string>
+ <string name="saved_network" msgid="4352716707126620811">"ບັນທຶກໂດຍ <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="connected_via_wfa" msgid="3805736726317410714">"ເຊື່ອມຕໍ່ຜ່ານ Wi‑Fi ຕົວຊ່ວຍແລ້ວ"</string>
+ <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>
+ <string name="bluetooth_disconnected" msgid="6557104142667339895">"ຕັດການເຊື່ອມຕໍ່ແລ້ວ"</string>
+ <string name="bluetooth_disconnecting" msgid="8913264760027764974">"ກຳລັງຢຸດການເຊື່ອມຕໍ່..."</string>
+ <string name="bluetooth_connecting" msgid="8555009514614320497">"ກຳລັງເຊື່ອມຕໍ່..."</string>
+ <string name="bluetooth_connected" msgid="6038755206916626419">"ເຊື່ອມຕໍ່ແລ້ວ"</string>
+ <string name="bluetooth_pairing" msgid="1426882272690346242">"ກຳລັງຈັບຄູ່..."</string>
+ <string name="bluetooth_connected_no_headset" msgid="2866994875046035609">"ເຊື່ອມຕໍ່ແລ້ວ (ບໍ່ມີໂທລະສັບ)"</string>
+ <string name="bluetooth_connected_no_a2dp" msgid="4576188601581440337">"ເຊື່ອມຕໍ່ແລ້ວ (ບໍ່ມີສື່)"</string>
+ <string name="bluetooth_connected_no_map" msgid="6504436917057479986">"ເຊື່ອມຕໍ່ (ບໍ່ມີການເຂົ້າເຖິງຂໍ້ຄວາມ)"</string>
+ <string name="bluetooth_connected_no_headset_no_a2dp" msgid="9195757766755553810">"ເຊື່ອມຕໍ່ແລ້ວ (ບໍ່ມີໂທລະສັບ ຫຼືສື່)"</string>
+ <string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"ສຽງ"</string>
+ <string name="bluetooth_profile_headset" msgid="8658779596261212609">"ສຽງໂທລະສັບ"</string>
+ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"ການໂອນຍ້າຍໄຟລ໌"</string>
+ <string name="bluetooth_profile_hid" msgid="3680729023366986480">"ອຸປະກອນປ້ອນຂໍ້ມູນ"</string>
+ <string name="bluetooth_profile_pan" msgid="3391606497945147673">"ການເຂົ້າເຖິງອິນເຕີເນັດ"</string>
+ <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"ການແບ່ງປັນລາຍຊື່ຜູ່ຕິດຕໍ່"</string>
+ <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"ໃຊ້ສຳລັບການແບ່ງປັນລາຍຊື່ຜູ່ຕິດຕໍ່"</string>
+ <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"ການແບ່ງປັນການເຊື່ອມຕໍ່ອິນເຕີເນັດ"</string>
+ <string name="bluetooth_profile_map" msgid="5465271250454324383">"ການເຂົ້າເຖິງຂໍ້ຄວາມ"</string>
+ <string name="bluetooth_profile_sap" msgid="5764222021851283125">"ການເຂົ້າເຖິງ SIM"</string>
+ <string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"ເຊື່ອມຕໍ່ກັບສື່ດ້ານສຽງແລ້ວ"</string>
+ <string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"ເຊື່ອມຕໍ່ກັບສຽງໂທລະສັບແລ້ວ"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"ເຊື່ອມຕໍ່ກັບເຊີບເວີໂອນຍ້າຍໄຟລ໌ແລ້ວ"</string>
+ <string name="bluetooth_map_profile_summary_connected" msgid="8191407438851351713">"ເຊື່ອມຕໍ່ກັບແຜນທີ່ແລ້ວ"</string>
+ <string name="bluetooth_sap_profile_summary_connected" msgid="8561765057453083838">"ເຊື່ອມຕໍ່ກັບ SAP ແລ້ວ"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"ບໍ່ໄດ້ເຊື່ອມຕໍ່ຫາເຊີບເວີໂອນຍ້າຍໄຟລ໌"</string>
+ <string name="bluetooth_hid_profile_summary_connected" msgid="3381760054215168689">"ເຊື່ອມຕໍ່ກັບອຸປະກອນປ້ອນຂໍ້ມູນແລ້ວ"</string>
+ <string name="bluetooth_pan_user_profile_summary_connected" msgid="4602294638909590612">"ເຊື່ອມຕໍ່ກັບອຸປະກອນເພື່ອເຂົ້າເຖິງອິນເຕີເນັດແລ້ວ"</string>
+ <string name="bluetooth_pan_nap_profile_summary_connected" msgid="1561383706411975199">"ກຳລັງແບ່ງປັນການເຊື່ອມຕໍ່ອິນເຕີເນັດກັບອຸປະກອນ"</string>
+ <string name="bluetooth_pan_profile_summary_use_for" msgid="5664884523822068653">"ໃຊ້ເພື່ອເຂົ້າອິນເຕີເນັດ"</string>
+ <string name="bluetooth_map_profile_summary_use_for" msgid="5154200119919927434">"ໃຊ້ສຳລັບແຜນທີ່"</string>
+ <string name="bluetooth_sap_profile_summary_use_for" msgid="7085362712786907993">"ການໃຊ້ສໍາລັບການເຂົ້າເຖິງ SIM"</string>
+ <string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"ໃຊ້ສຳລັບສື່ດ້ານສຽງ"</string>
+ <string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"ໃຊ້ສຳລັບລະບົບສຽງຂອງໂທລະສັບ"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"ໃຊ້ເພື່ອໂອນຍ້າຍໄຟລ໌"</string>
+ <string name="bluetooth_hid_profile_summary_use_for" msgid="232727040453645139">"ໃຊ້ສຳລັບການປ້ອນຂໍ້ມູນ"</string>
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"ຈັບຄູ່"</string>
+ <string name="bluetooth_pairing_accept_all_caps" msgid="6061699265220789149">"ຈັບຄູ່"</string>
+ <string name="bluetooth_pairing_decline" msgid="4185420413578948140">"ຍົກເລີກ"</string>
+ <string name="bluetooth_pairing_will_share_phonebook" msgid="4982239145676394429">"ການຈັບຄູ່ຈະອະນຸຍາດໃຫ້ເຂົ້າເຖິງລາຍຊື່ຜູ່ຕິດຕໍ່ ແລະ ປະຫວັດການໂທຂອງທ່ານທຸກໆເທື່ອທີ່ເຊື່ອມຕໍ່ກັນ."</string>
+ <string name="bluetooth_pairing_error_message" msgid="3748157733635947087">"ບໍ່ສາມາດຈັບຄູ່ກັບ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ໄດ້."</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="8337234855188925274">"ບໍ່ສາມາດຈັບຄູ່ກັບ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ໄດ້ ເພາະ PIN ຫຼື passkey ບໍ່ຖືກຕ້ອງ."</string>
+ <string name="bluetooth_pairing_device_down_error_message" msgid="7870998403045801381">"ບໍ່ສາມາດຕິດຕໍ່ສື່ສານກັບ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ໄດ້."</string>
+ <string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"ການຈັບຄູ່ຖືກປະຕິເສດໂດຍ <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="accessibility_wifi_off" msgid="1166761729660614716">"WiFi ປິດຢູ່."</string>
+ <string name="accessibility_no_wifi" msgid="8834610636137374508">"ຕັດການເຊື່ອມຕໍ່ Wi-Fi ແລ້ວ."</string>
+ <string name="accessibility_wifi_one_bar" msgid="4869376278894301820">"ສັນຍານ Wi-Fi ນຶ່ງຂີດ."</string>
+ <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>
+ <string name="process_kernel_label" msgid="3916858646836739323">"Android OS"</string>
+ <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"ແອັບຯທີ່ຖືກລຶບອອກແລ້ວ"</string>
+ <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"ລຶບແອັບຯ ແລະຜູ່ໃຊ້ແລ້ວ"</string>
+ <string name="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_usb_bluetooth" msgid="5355828977109785001">"ການປ່ອຍສັນຍານ"</string>
+ <string name="tether_settings_title_all" msgid="8356136101061143841">"ການປ່ອຍສັນຍານ & ຮັອດສະປອດເຄື່ອນທີ່"</string>
+ <string name="managed_user_title" msgid="8101244883654409696">"ໂປຣໄຟລ໌ບ່ອນເຮັດວຽກ"</string>
+ <string name="user_guest" msgid="8475274842845401871">"ແຂກ"</string>
+ <string name="unknown" msgid="1592123443519355854">"ບໍ່ຮູ້ຈັກ"</string>
+ <string name="running_process_item_user_label" msgid="3129887865552025943">"ຜູ່ໃຊ້: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
+ <string name="launch_defaults_some" msgid="313159469856372621">"ຕັ້ງບາງຄ່າເລີ່ມຕົ້ນແລ້ວ"</string>
+ <string name="launch_defaults_none" msgid="4241129108140034876">"ບໍ່ໄດ້ຕັ້ງຄ່າເລີ່ມຕົ້ນເທື່ອ"</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-lt/arrays.xml b/packages/SettingsLib/res/values-lt/arrays.xml
new file mode 100644
index 0000000..8b16385
--- /dev/null
+++ b/packages/SettingsLib/res/values-lt/arrays.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="wifi_status">
+ <item msgid="1922181315419294640"></item>
+ <item msgid="8934131797783724664">"Nuskaitoma..."</item>
+ <item msgid="8513729475867537913">"Prisijungiama..."</item>
+ <item msgid="515055375277271756">"Nustatoma tapatybė..."</item>
+ <item msgid="1943354004029184381">"Gaunamas IP adresas..."</item>
+ <item msgid="4221763391123233270">"Prisijungta"</item>
+ <item msgid="624838831631122137">"Pristabdyta"</item>
+ <item msgid="7979680559596111948">"Atjungiama..."</item>
+ <item msgid="1634960474403853625">"Atsijungęs (-usi)"</item>
+ <item msgid="746097431216080650">"Nesėkminga"</item>
+ <item msgid="6367044185730295334">"Užblokuota"</item>
+ <item msgid="503942654197908005">"Laikinai vengiama prasto ryšio"</item>
+ </string-array>
+ <string-array name="wifi_status_with_ssid">
+ <item msgid="7714855332363650812"></item>
+ <item msgid="8878186979715711006">"Nuskaitoma..."</item>
+ <item msgid="355508996603873860">"Prijungiama prie <xliff:g id="NETWORK_NAME">%1$s</xliff:g>..."</item>
+ <item msgid="554971459996405634">"Nustatoma tapatybė su <xliff:g id="NETWORK_NAME">%1$s</xliff:g>..."</item>
+ <item msgid="7928343808033020343">"Gaunamas IP adresas iš <xliff:g id="NETWORK_NAME">%1$s</xliff:g>..."</item>
+ <item msgid="8937994881315223448">"Prijungta prie <xliff:g id="NETWORK_NAME">%1$s</xliff:g>"</item>
+ <item msgid="1330262655415760617">"Pristabdyta"</item>
+ <item msgid="7698638434317271902">"Atjungiama nuo <xliff:g id="NETWORK_NAME">%1$s</xliff:g>..."</item>
+ <item msgid="197508606402264311">"Atsijungęs (-usi)"</item>
+ <item msgid="8578370891960825148">"Nesėkminga"</item>
+ <item msgid="5660739516542454527">"Užblokuota"</item>
+ <item msgid="1805837518286731242">"Laikinai vengiama prasto ryšio"</item>
+ </string-array>
+</resources>
diff --git a/packages/SettingsLib/res/values-lt/strings.xml b/packages/SettingsLib/res/values-lt/strings.xml
new file mode 100644
index 0000000..c1758b0
--- /dev/null
+++ b/packages/SettingsLib/res/values-lt/strings.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="wifi_fail_to_scan" msgid="1265540342578081461">"Nepavyksta nuskaityti tinklų"</string>
+ <string name="wifi_security_none" msgid="7985461072596594400">"Nėra"</string>
+ <string name="wifi_remembered" msgid="4955746899347821096">"Išsaugotas"</string>
+ <string name="wifi_disabled_generic" msgid="4259794910584943386">"Neleidžiama"</string>
+ <string name="wifi_disabled_network_failure" msgid="2364951338436007124">"IP konfigūracijos triktis"</string>
+ <string name="wifi_disabled_wifi_failure" msgid="3081668066612876581">"„Wi-Fi“ ryšio triktis"</string>
+ <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"Autentifikavimo problema"</string>
+ <string name="wifi_not_in_range" msgid="1136191511238508967">"Ne diapazone"</string>
+ <string name="wifi_no_internet" msgid="9151470775868728896">"Neaptikta jokia prieiga prie interneto, nebus automatiškai iš naujo prisijungta."</string>
+ <string name="saved_network" msgid="4352716707126620811">"Išsaugojo <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="connected_via_wfa" msgid="3805736726317410714">"Prisijungta naudojant „Wi‑Fi“ pagelbiklį"</string>
+ <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>
+ <string name="bluetooth_disconnected" msgid="6557104142667339895">"Atsijungęs (-usi)"</string>
+ <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Atjungiama..."</string>
+ <string name="bluetooth_connecting" msgid="8555009514614320497">"Prisijungiama..."</string>
+ <string name="bluetooth_connected" msgid="6038755206916626419">"Prisijungta"</string>
+ <string name="bluetooth_pairing" msgid="1426882272690346242">"Susiejama..."</string>
+ <string name="bluetooth_connected_no_headset" msgid="2866994875046035609">"Prijungta (be telefono)"</string>
+ <string name="bluetooth_connected_no_a2dp" msgid="4576188601581440337">"Prijungta (be laikmenos)"</string>
+ <string name="bluetooth_connected_no_map" msgid="6504436917057479986">"Prisijungta (be prieigos prie pranešimų)"</string>
+ <string name="bluetooth_connected_no_headset_no_a2dp" msgid="9195757766755553810">"Prijungta (be telefono ar laikmenos)"</string>
+ <string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Laikmenos garsas"</string>
+ <string name="bluetooth_profile_headset" msgid="8658779596261212609">"Telefono garsas"</string>
+ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"Failo perkėlimas"</string>
+ <string name="bluetooth_profile_hid" msgid="3680729023366986480">"Įvesties įrenginys"</string>
+ <string name="bluetooth_profile_pan" msgid="3391606497945147673">"Prieiga prie interneto"</string>
+ <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"Kontaktų bendrinimas"</string>
+ <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"Naudoti kontaktams bendrinti"</string>
+ <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"Interneto ryšio bendrinimas"</string>
+ <string name="bluetooth_profile_map" msgid="5465271250454324383">"Prieiga prie pranešimų"</string>
+ <string name="bluetooth_profile_sap" msgid="5764222021851283125">"SIM prieiga"</string>
+ <string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"Prijungta prie medijos garso įrašo"</string>
+ <string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"Prijungta prie telefono garso"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"Prijungta prie failų perkėlimo serverio"</string>
+ <string name="bluetooth_map_profile_summary_connected" msgid="8191407438851351713">"Prisijungta prie žemėlapio"</string>
+ <string name="bluetooth_sap_profile_summary_connected" msgid="8561765057453083838">"Prisijungta prie SAP"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"Neprijungta prie failų perkėlimo serverio"</string>
+ <string name="bluetooth_hid_profile_summary_connected" msgid="3381760054215168689">"Prisijungta prie įvesties įrenginio."</string>
+ <string name="bluetooth_pan_user_profile_summary_connected" msgid="4602294638909590612">"Pr. prie įr., kad gaut. pr. prie int."</string>
+ <string name="bluetooth_pan_nap_profile_summary_connected" msgid="1561383706411975199">"Bendr. vt. int. ryš. su įr."</string>
+ <string name="bluetooth_pan_profile_summary_use_for" msgid="5664884523822068653">"Naudoti interneto prieigai"</string>
+ <string name="bluetooth_map_profile_summary_use_for" msgid="5154200119919927434">"Naudoti žemėlapyje"</string>
+ <string name="bluetooth_sap_profile_summary_use_for" msgid="7085362712786907993">"Naudoti SIM prieigai"</string>
+ <string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"Naudoti medijos garsui"</string>
+ <string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"Naudoti telefono garso įrašui"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"Naudoti failų perkėlimui"</string>
+ <string name="bluetooth_hid_profile_summary_use_for" msgid="232727040453645139">"Naudoti įvedant"</string>
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"Susieti"</string>
+ <string name="bluetooth_pairing_accept_all_caps" msgid="6061699265220789149">"SUSIETI"</string>
+ <string name="bluetooth_pairing_decline" msgid="4185420413578948140">"Atšaukti"</string>
+ <string name="bluetooth_pairing_will_share_phonebook" msgid="4982239145676394429">"Susiejus suteikiama prieiga prie kontaktų ir skambučių istorijos, esant prisijungus."</string>
+ <string name="bluetooth_pairing_error_message" msgid="3748157733635947087">"Nepavyko susieti su „<xliff:g id="DEVICE_NAME">%1$s</xliff:g>“."</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="8337234855188925274">"Nepavyko susieti su „<xliff:g id="DEVICE_NAME">%1$s</xliff:g>“ dėl netinkamo PIN kodo ar prieigos rakto."</string>
+ <string name="bluetooth_pairing_device_down_error_message" msgid="7870998403045801381">"Nepavyksta užmegzti ryšio su „<xliff:g id="DEVICE_NAME">%1$s</xliff:g>“."</string>
+ <string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"Susiejimą atmetė <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="accessibility_wifi_off" msgid="1166761729660614716">"„Wi-Fi“ išjungtas."</string>
+ <string name="accessibility_no_wifi" msgid="8834610636137374508">"„Wi-Fi“ atjungtas."</string>
+ <string name="accessibility_wifi_one_bar" msgid="4869376278894301820">"Viena „Wi-Fi“ signalo juosta."</string>
+ <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>
+ <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>
+ <string name="tether_settings_title_usb" msgid="6688416425801386511">"USB susiejimas"</string>
+ <string name="tether_settings_title_wifi" msgid="3277144155960302049">"Perkeliama aktyvioji sritis"</string>
+ <string name="tether_settings_title_bluetooth" msgid="355855408317564420">"„Bluetooth“ susiejimas"</string>
+ <string name="tether_settings_title_usb_bluetooth" msgid="5355828977109785001">"Susiejimas"</string>
+ <string name="tether_settings_title_all" msgid="8356136101061143841">"Susiej. ir perk. vieš. int. pr. tašk."</string>
+ <string name="managed_user_title" msgid="8101244883654409696">"Darbo profilis"</string>
+ <string name="user_guest" msgid="8475274842845401871">"Svečias"</string>
+ <string name="unknown" msgid="1592123443519355854">"Nežinomas"</string>
+ <string name="running_process_item_user_label" msgid="3129887865552025943">"Naudotojas: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
+ <string name="launch_defaults_some" msgid="313159469856372621">"Nustatyti kai kurie numatytieji nustatymai"</string>
+ <string name="launch_defaults_none" msgid="4241129108140034876">"Nenustatyta jokių numatytųjų nustatymų"</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-lv/arrays.xml b/packages/SettingsLib/res/values-lv/arrays.xml
new file mode 100644
index 0000000..40ba222
--- /dev/null
+++ b/packages/SettingsLib/res/values-lv/arrays.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="wifi_status">
+ <item msgid="1922181315419294640"></item>
+ <item msgid="8934131797783724664">"Notiek skenēšana..."</item>
+ <item msgid="8513729475867537913">"Notiek savienojuma izveide…"</item>
+ <item msgid="515055375277271756">"Notiek autentificēšana..."</item>
+ <item msgid="1943354004029184381">"Notiek IP adreses iegūšana…"</item>
+ <item msgid="4221763391123233270">"Izveidots savienojums"</item>
+ <item msgid="624838831631122137">"Atlikts"</item>
+ <item msgid="7979680559596111948">"Notiek atvienošana..."</item>
+ <item msgid="1634960474403853625">"Atvienots"</item>
+ <item msgid="746097431216080650">"Neizdevās"</item>
+ <item msgid="6367044185730295334">"Bloķēts"</item>
+ <item msgid="503942654197908005">"Pagaidām netiek izmantots vājš savienojums."</item>
+ </string-array>
+ <string-array name="wifi_status_with_ssid">
+ <item msgid="7714855332363650812"></item>
+ <item msgid="8878186979715711006">"Notiek skenēšana..."</item>
+ <item msgid="355508996603873860">"Notiek savienojuma izveide ar <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="554971459996405634">"Notiek autentificēšana ar <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="7928343808033020343">"Notiek IP adreses iegūšana no <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="8937994881315223448">"Savienots ar <xliff:g id="NETWORK_NAME">%1$s</xliff:g>"</item>
+ <item msgid="1330262655415760617">"Atlikts"</item>
+ <item msgid="7698638434317271902">"Notiek atvienošana no <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="197508606402264311">"Atvienots"</item>
+ <item msgid="8578370891960825148">"Neizdevās"</item>
+ <item msgid="5660739516542454527">"Bloķēts"</item>
+ <item msgid="1805837518286731242">"Pagaidām netiek izmantots vājš savienojums."</item>
+ </string-array>
+</resources>
diff --git a/packages/SettingsLib/res/values-lv/strings.xml b/packages/SettingsLib/res/values-lv/strings.xml
new file mode 100644
index 0000000..8dc762a
--- /dev/null
+++ b/packages/SettingsLib/res/values-lv/strings.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="wifi_fail_to_scan" msgid="1265540342578081461">"Nevar skenēt tīklus"</string>
+ <string name="wifi_security_none" msgid="7985461072596594400">"Nav"</string>
+ <string name="wifi_remembered" msgid="4955746899347821096">"Saglabāts"</string>
+ <string name="wifi_disabled_generic" msgid="4259794910584943386">"Atspējots"</string>
+ <string name="wifi_disabled_network_failure" msgid="2364951338436007124">"IP konfigurācijas kļūme"</string>
+ <string name="wifi_disabled_wifi_failure" msgid="3081668066612876581">"Wi-Fi savienojuma kļūme"</string>
+ <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"Autentificēšanas problēma"</string>
+ <string name="wifi_not_in_range" msgid="1136191511238508967">"Nav diapazona ietvaros"</string>
+ <string name="wifi_no_internet" msgid="9151470775868728896">"Nevar noteikt interneta savienojumu. Savienojums netiks izveidots vēlreiz automātiski."</string>
+ <string name="saved_network" msgid="4352716707126620811">"Saglabāja: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="connected_via_wfa" msgid="3805736726317410714">"Izveidots savienojums ar Wi‑Fi palīgu"</string>
+ <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>
+ <string name="bluetooth_disconnected" msgid="6557104142667339895">"Atvienots"</string>
+ <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Notiek atvienošana..."</string>
+ <string name="bluetooth_connecting" msgid="8555009514614320497">"Notiek savienojuma izveide…"</string>
+ <string name="bluetooth_connected" msgid="6038755206916626419">"Izveidots savienojums"</string>
+ <string name="bluetooth_pairing" msgid="1426882272690346242">"Notiek pāra izveide..."</string>
+ <string name="bluetooth_connected_no_headset" msgid="2866994875046035609">"Savienojums ir izveidots (nav tālruņa)"</string>
+ <string name="bluetooth_connected_no_a2dp" msgid="4576188601581440337">"Sav. ir izveidots (nav multivides)"</string>
+ <string name="bluetooth_connected_no_map" msgid="6504436917057479986">"Savienots (nav piekļuves ziņojumam)"</string>
+ <string name="bluetooth_connected_no_headset_no_a2dp" msgid="9195757766755553810">"Sav. ir izveidots (nav tel. vai multiv.)"</string>
+ <string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Multivides audio"</string>
+ <string name="bluetooth_profile_headset" msgid="8658779596261212609">"Tālruņa audio"</string>
+ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"Failu pārsūtīšana"</string>
+ <string name="bluetooth_profile_hid" msgid="3680729023366986480">"Ievades ierīce"</string>
+ <string name="bluetooth_profile_pan" msgid="3391606497945147673">"Interneta piekļuve"</string>
+ <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"Kontaktpersonas informācijas kopīgošana"</string>
+ <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"Izmantot kontaktpersonas informācijas kopīgošanai"</string>
+ <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"Interneta savienojuma koplietošana"</string>
+ <string name="bluetooth_profile_map" msgid="5465271250454324383">"Piekļuve ziņojumam"</string>
+ <string name="bluetooth_profile_sap" msgid="5764222021851283125">"Piekļuve SIM kartei"</string>
+ <string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"Savienots ar multivides audio"</string>
+ <string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"Savienots ar tālruņa audio"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"Savienots ar failu pārsūtīšanas serveri"</string>
+ <string name="bluetooth_map_profile_summary_connected" msgid="8191407438851351713">"Izveidots savienojums ar karti"</string>
+ <string name="bluetooth_sap_profile_summary_connected" msgid="8561765057453083838">"Savienots ar SAP"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"Nav savienots ar failu pārsūtīšanas serveri"</string>
+ <string name="bluetooth_hid_profile_summary_connected" msgid="3381760054215168689">"Izveidots savienojums ar ievades ierīci"</string>
+ <string name="bluetooth_pan_user_profile_summary_connected" msgid="4602294638909590612">"Savien. ar ier., lai nodr. int. piekļ."</string>
+ <string name="bluetooth_pan_nap_profile_summary_connected" msgid="1561383706411975199">"Tiek kopliet. lok. intern. savien. ar ierīci"</string>
+ <string name="bluetooth_pan_profile_summary_use_for" msgid="5664884523822068653">"Izmantot, lai piekļūtu internetam"</string>
+ <string name="bluetooth_map_profile_summary_use_for" msgid="5154200119919927434">"Lietot kartei"</string>
+ <string name="bluetooth_sap_profile_summary_use_for" msgid="7085362712786907993">"Izmantot, lai piekļūtu SIM kartei"</string>
+ <string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"Izmantot multivides skaņai"</string>
+ <string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"Izmantot tālruņa skaņai"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"Izmantot faila pārsūtīšanai"</string>
+ <string name="bluetooth_hid_profile_summary_use_for" msgid="232727040453645139">"Izmantot ievadei"</string>
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"Izveidot pāri"</string>
+ <string name="bluetooth_pairing_accept_all_caps" msgid="6061699265220789149">"SAVIENOT PĀRĪ"</string>
+ <string name="bluetooth_pairing_decline" msgid="4185420413578948140">"Atcelt"</string>
+ <string name="bluetooth_pairing_will_share_phonebook" msgid="4982239145676394429">"Veicot savienošanu pārī, šī ierīce savienojuma laikā varēs piekļūt jūsu kontaktpersonām un zvanu vēsturei."</string>
+ <string name="bluetooth_pairing_error_message" msgid="3748157733635947087">"Nevarēja savienot pārī ar ierīci <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="8337234855188925274">"Nevarēja savienot pārī ar ierīci <xliff:g id="DEVICE_NAME">%1$s</xliff:g>, jo tika ievadīts nepareizs PIN kods vai nepareiza ieejas atslēga."</string>
+ <string name="bluetooth_pairing_device_down_error_message" msgid="7870998403045801381">"Nevar sazināties ar ierīci <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> noraidīja pāra izveidi."</string>
+ <string name="accessibility_wifi_off" msgid="1166761729660614716">"Wi-Fi savienojums izslēgts"</string>
+ <string name="accessibility_no_wifi" msgid="8834610636137374508">"Wi-Fi savienojums pārtraukts"</string>
+ <string name="accessibility_wifi_one_bar" msgid="4869376278894301820">"Wi-Fi: viena josla"</string>
+ <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>
+ <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>
+ <string name="tether_settings_title_usb" msgid="6688416425801386511">"USB saistīšana"</string>
+ <string name="tether_settings_title_wifi" msgid="3277144155960302049">"Pārnēsājams tīklājs"</string>
+ <string name="tether_settings_title_bluetooth" msgid="355855408317564420">"Bluetooth saistīšana"</string>
+ <string name="tether_settings_title_usb_bluetooth" msgid="5355828977109785001">"Saistīšana"</string>
+ <string name="tether_settings_title_all" msgid="8356136101061143841">"Piesaiste un pārn. tīklājs"</string>
+ <string name="managed_user_title" msgid="8101244883654409696">"Darba profils"</string>
+ <string name="user_guest" msgid="8475274842845401871">"Viesis"</string>
+ <string name="unknown" msgid="1592123443519355854">"Nezināms"</string>
+ <string name="running_process_item_user_label" msgid="3129887865552025943">"Lietotājs: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
+ <string name="launch_defaults_some" msgid="313159469856372621">"Iestatīti daži noklusējumi"</string>
+ <string name="launch_defaults_none" msgid="4241129108140034876">"Nav iestatīti noklusējumi"</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-mk-rMK/arrays.xml b/packages/SettingsLib/res/values-mk-rMK/arrays.xml
new file mode 100644
index 0000000..5c51a7d
--- /dev/null
+++ b/packages/SettingsLib/res/values-mk-rMK/arrays.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="wifi_status">
+ <item msgid="1922181315419294640"></item>
+ <item msgid="8934131797783724664">"Скенирање..."</item>
+ <item msgid="8513729475867537913">"Се поврзува..."</item>
+ <item msgid="515055375277271756">"Автентицирање..."</item>
+ <item msgid="1943354004029184381">"Добивање ИП адреса..."</item>
+ <item msgid="4221763391123233270">"Поврзана"</item>
+ <item msgid="624838831631122137">"Суспендирана"</item>
+ <item msgid="7979680559596111948">"Се исклучува..."</item>
+ <item msgid="1634960474403853625">"Исклучено"</item>
+ <item msgid="746097431216080650">"Неуспешна"</item>
+ <item msgid="6367044185730295334">"Блокирана"</item>
+ <item msgid="503942654197908005">"Привремено избегнува лоша врска"</item>
+ </string-array>
+ <string-array name="wifi_status_with_ssid">
+ <item msgid="7714855332363650812"></item>
+ <item msgid="8878186979715711006">"Скенирање..."</item>
+ <item msgid="355508996603873860">"Поврзување на <xliff:g id="NETWORK_NAME">%1$s</xliff:g>..."</item>
+ <item msgid="554971459996405634">"Автентикација со <xliff:g id="NETWORK_NAME">%1$s</xliff:g>..."</item>
+ <item msgid="7928343808033020343">"Добивање ИП адреса од <xliff:g id="NETWORK_NAME">%1$s</xliff:g>..."</item>
+ <item msgid="8937994881315223448">"Поврзано на <xliff:g id="NETWORK_NAME">%1$s</xliff:g>"</item>
+ <item msgid="1330262655415760617">"Суспендирана"</item>
+ <item msgid="7698638434317271902">"Исклучување од <xliff:g id="NETWORK_NAME">%1$s</xliff:g>..."</item>
+ <item msgid="197508606402264311">"Исклучено"</item>
+ <item msgid="8578370891960825148">"Неуспешна"</item>
+ <item msgid="5660739516542454527">"Блокирано"</item>
+ <item msgid="1805837518286731242">"Привремено избегнува лоша врска"</item>
+ </string-array>
+</resources>
diff --git a/packages/SettingsLib/res/values-mk-rMK/strings.xml b/packages/SettingsLib/res/values-mk-rMK/strings.xml
new file mode 100644
index 0000000..384c9b7
--- /dev/null
+++ b/packages/SettingsLib/res/values-mk-rMK/strings.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="wifi_fail_to_scan" msgid="1265540342578081461">"Не може да скенира за мрежи"</string>
+ <string name="wifi_security_none" msgid="7985461072596594400">"Ниедна"</string>
+ <string name="wifi_remembered" msgid="4955746899347821096">"Зачувано"</string>
+ <string name="wifi_disabled_generic" msgid="4259794910584943386">"Оневозможено"</string>
+ <string name="wifi_disabled_network_failure" msgid="2364951338436007124">"Конфигурирањето ИП не успеа"</string>
+ <string name="wifi_disabled_wifi_failure" msgid="3081668066612876581">"Поврзувањето преку Wi-Fi не успеа"</string>
+ <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"Проблем со автентикација"</string>
+ <string name="wifi_not_in_range" msgid="1136191511238508967">"Надвор од опсег"</string>
+ <string name="wifi_no_internet" msgid="9151470775868728896">"Не е откриен пристап до интернет, нема автоматски повторно да се поврзете."</string>
+ <string name="saved_network" msgid="4352716707126620811">"Зачувано од <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="connected_via_wfa" msgid="3805736726317410714">"Поврзано преку помошник за Wi-Fismile"</string>
+ <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>
+ <string name="bluetooth_disconnected" msgid="6557104142667339895">"Исклучено"</string>
+ <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Се исклучува..."</string>
+ <string name="bluetooth_connecting" msgid="8555009514614320497">"Се поврзува..."</string>
+ <string name="bluetooth_connected" msgid="6038755206916626419">"Поврзани"</string>
+ <string name="bluetooth_pairing" msgid="1426882272690346242">"Поврзување..."</string>
+ <string name="bluetooth_connected_no_headset" msgid="2866994875046035609">"Поврзани (без телефон)"</string>
+ <string name="bluetooth_connected_no_a2dp" msgid="4576188601581440337">"Поврзани (без медиуми)"</string>
+ <string name="bluetooth_connected_no_map" msgid="6504436917057479986">"Поврзано (без порака за пристап)"</string>
+ <string name="bluetooth_connected_no_headset_no_a2dp" msgid="9195757766755553810">"Поврзан (без телефон или медиуми)"</string>
+ <string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Аудио на медиуми"</string>
+ <string name="bluetooth_profile_headset" msgid="8658779596261212609">"Аудио на телефон"</string>
+ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"Пренос на датотека"</string>
+ <string name="bluetooth_profile_hid" msgid="3680729023366986480">"Влезен уред"</string>
+ <string name="bluetooth_profile_pan" msgid="3391606497945147673">"Пристап на интернет"</string>
+ <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"Споделување контакти"</string>
+ <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"Користи за споделување контакти"</string>
+ <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"Споделување конекција на интернет"</string>
+ <string name="bluetooth_profile_map" msgid="5465271250454324383">"Порака за пристап"</string>
+ <string name="bluetooth_profile_sap" msgid="5764222021851283125">"Пристап до СИМ"</string>
+ <string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"Поврзан со аудио на медиуми"</string>
+ <string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"Поврзан со аудио на телефон"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"Поврзан со сервер за пренос на датотеки"</string>
+ <string name="bluetooth_map_profile_summary_connected" msgid="8191407438851351713">"Поврзано со карта"</string>
+ <string name="bluetooth_sap_profile_summary_connected" msgid="8561765057453083838">"Поврзано со SAP"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"Не е поврзан со сервер за пренос на датотеки"</string>
+ <string name="bluetooth_hid_profile_summary_connected" msgid="3381760054215168689">"Поврзан со влезен уред"</string>
+ <string name="bluetooth_pan_user_profile_summary_connected" msgid="4602294638909590612">"Поврзан со уред за пристап на интернет"</string>
+ <string name="bluetooth_pan_nap_profile_summary_connected" msgid="1561383706411975199">"Споделување локална конекција на интернет со уред"</string>
+ <string name="bluetooth_pan_profile_summary_use_for" msgid="5664884523822068653">"Користи за пристап на интернет"</string>
+ <string name="bluetooth_map_profile_summary_use_for" msgid="5154200119919927434">"Користи за карта"</string>
+ <string name="bluetooth_sap_profile_summary_use_for" msgid="7085362712786907993">"Користете се пристап до СИМ"</string>
+ <string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"Користи за аудио на медиуми"</string>
+ <string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"Користи за аудио на телефон"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"Користи за пренос на датотеки"</string>
+ <string name="bluetooth_hid_profile_summary_use_for" msgid="232727040453645139">"Користи за внес"</string>
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"Спари"</string>
+ <string name="bluetooth_pairing_accept_all_caps" msgid="6061699265220789149">"СПАРИ"</string>
+ <string name="bluetooth_pairing_decline" msgid="4185420413578948140">"Откажи"</string>
+ <string name="bluetooth_pairing_will_share_phonebook" msgid="4982239145676394429">"Кога е поврзано, спарувањето одобрува пристап до контактите и историјата на повиците."</string>
+ <string name="bluetooth_pairing_error_message" msgid="3748157733635947087">"Не можеше да се спари со <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="8337234855188925274">"Не можеше да се спари со <xliff:g id="DEVICE_NAME">%1$s</xliff:g> поради погрешен ПИН или лозинка."</string>
+ <string name="bluetooth_pairing_device_down_error_message" msgid="7870998403045801381">"Не може да комуницира со <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"Спарувањето е одбиено од <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="accessibility_wifi_off" msgid="1166761729660614716">"Wi-Fi е исклучено."</string>
+ <string name="accessibility_no_wifi" msgid="8834610636137374508">"Wi-Fi е исклучено."</string>
+ <string name="accessibility_wifi_one_bar" msgid="4869376278894301820">"Една црта на Wi-Fi."</string>
+ <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>
+ <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">"Поврзување со УСБ"</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_usb_bluetooth" msgid="5355828977109785001">"Поврзување"</string>
+ <string name="tether_settings_title_all" msgid="8356136101061143841">"Поврзување и пренослива точка на пристап"</string>
+ <string name="managed_user_title" msgid="8101244883654409696">"Работен профил"</string>
+ <string name="user_guest" msgid="8475274842845401871">"Гостин"</string>
+ <string name="unknown" msgid="1592123443519355854">"Непознато"</string>
+ <string name="running_process_item_user_label" msgid="3129887865552025943">"Корисник: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
+ <string name="launch_defaults_some" msgid="313159469856372621">"Поставени се некои стандардни вредности"</string>
+ <string name="launch_defaults_none" msgid="4241129108140034876">"Нема поставено стандардни вредности"</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-ml-rIN/arrays.xml b/packages/SettingsLib/res/values-ml-rIN/arrays.xml
new file mode 100644
index 0000000..4d3261a
--- /dev/null
+++ b/packages/SettingsLib/res/values-ml-rIN/arrays.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="wifi_status">
+ <item msgid="1922181315419294640"></item>
+ <item msgid="8934131797783724664">"സ്കാൻചെയ്യുന്നു..."</item>
+ <item msgid="8513729475867537913">"കണക്റ്റുചെയ്യുന്നു..."</item>
+ <item msgid="515055375277271756">"പ്രാമാണീകരിക്കുന്നു..."</item>
+ <item msgid="1943354004029184381">"IP വിലാസം നേടുന്നു..."</item>
+ <item msgid="4221763391123233270">"കണക്റ്റുചെയ്തു"</item>
+ <item msgid="624838831631122137">"താൽക്കാലികമായി നിർത്തി"</item>
+ <item msgid="7979680559596111948">"വിച്ഛേദിക്കുന്നു..."</item>
+ <item msgid="1634960474403853625">"വിച്ഛേദിച്ചു"</item>
+ <item msgid="746097431216080650">"പരാജയപ്പെട്ടു"</item>
+ <item msgid="6367044185730295334">"തടഞ്ഞിരിക്കുന്നു"</item>
+ <item msgid="503942654197908005">"മോശം കണക്ഷൻ താൽക്കാലികമായി ഒഴിവാക്കുന്നു"</item>
+ </string-array>
+ <string-array name="wifi_status_with_ssid">
+ <item msgid="7714855332363650812"></item>
+ <item msgid="8878186979715711006">"സ്കാൻചെയ്യുന്നു..."</item>
+ <item msgid="355508996603873860">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> എന്നതിലേക്ക് കണക്റ്റുചെയ്യുന്നു..."</item>
+ <item msgid="554971459996405634">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> മുഖേന പ്രമാണീകരിക്കുന്നു..."</item>
+ <item msgid="7928343808033020343">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> എന്നതിൽ നിന്ന് IP വിലാസം നേടുന്നു..."</item>
+ <item msgid="8937994881315223448">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> എന്നതിൽ കണക്റ്റുചെയ്തു"</item>
+ <item msgid="1330262655415760617">"താൽക്കാലികമായി നിർത്തി"</item>
+ <item msgid="7698638434317271902">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> എന്നതിൽ നിന്ന് വിച്ഛേദിക്കുന്നു..."</item>
+ <item msgid="197508606402264311">"വിച്ഛേദിച്ചു"</item>
+ <item msgid="8578370891960825148">"പരാജയപ്പെട്ടു"</item>
+ <item msgid="5660739516542454527">"തടഞ്ഞിരിക്കുന്നു"</item>
+ <item msgid="1805837518286731242">"മോശം കണക്ഷൻ താൽക്കാലികമായി ഒഴിവാക്കുന്നു"</item>
+ </string-array>
+</resources>
diff --git a/packages/SettingsLib/res/values-ml-rIN/strings.xml b/packages/SettingsLib/res/values-ml-rIN/strings.xml
new file mode 100644
index 0000000..2977e75
--- /dev/null
+++ b/packages/SettingsLib/res/values-ml-rIN/strings.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="wifi_fail_to_scan" msgid="1265540342578081461">"നെറ്റ്വർക്കുകൾക്കായി സ്കാൻ ചെയ്യാനായില്ല"</string>
+ <string name="wifi_security_none" msgid="7985461072596594400">"ഒന്നുമില്ല"</string>
+ <string name="wifi_remembered" msgid="4955746899347821096">"സംരക്ഷിച്ചു"</string>
+ <string name="wifi_disabled_generic" msgid="4259794910584943386">"പ്രവർത്തനരഹിതമാക്കി"</string>
+ <string name="wifi_disabled_network_failure" msgid="2364951338436007124">"IP കോൺഫിഗറേഷൻ പരാജയം"</string>
+ <string name="wifi_disabled_wifi_failure" msgid="3081668066612876581">"WiFi കണക്ഷൻ പരാജയം"</string>
+ <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"ആധികാരികമാക്കുന്നതിലെ പ്രശ്നം"</string>
+ <string name="wifi_not_in_range" msgid="1136191511238508967">"പരിധിയിലില്ല"</string>
+ <string name="wifi_no_internet" msgid="9151470775868728896">"ഇന്റർനെറ്റ് ആക്സസ്സൊന്നും കണ്ടെത്താത്തതിനാൽ സ്വയം വീണ്ടും കണക്റ്റുചെയ്യില്ല."</string>
+ <string name="saved_network" msgid="4352716707126620811">"<xliff:g id="NAME">%1$s</xliff:g> സംരക്ഷിച്ചത്"</string>
+ <string name="connected_via_wfa" msgid="3805736726317410714">"വൈഫൈ അസിസ്റ്റന്റ് മുഖേന കണക്റ്റുചെയ്തു"</string>
+ <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>
+ <string name="bluetooth_disconnected" msgid="6557104142667339895">"വിച്ഛേദിച്ചു"</string>
+ <string name="bluetooth_disconnecting" msgid="8913264760027764974">"വിച്ഛേദിക്കുന്നു..."</string>
+ <string name="bluetooth_connecting" msgid="8555009514614320497">"കണക്റ്റുചെയ്യുന്നു..."</string>
+ <string name="bluetooth_connected" msgid="6038755206916626419">"കണക്റ്റുചെയ്തു"</string>
+ <string name="bluetooth_pairing" msgid="1426882272690346242">"ജോടിയാക്കുന്നു…"</string>
+ <string name="bluetooth_connected_no_headset" msgid="2866994875046035609">"കണക്റ്റുചെയ്തു (ഫോൺ ഇല്ല)"</string>
+ <string name="bluetooth_connected_no_a2dp" msgid="4576188601581440337">"കണക്റ്റുചെയ്തു (മീഡിയ ഇല്ല)"</string>
+ <string name="bluetooth_connected_no_map" msgid="6504436917057479986">"കണക്റ്റുചെയ്തു (സന്ദേശ ആക്സസ്സില്ല)"</string>
+ <string name="bluetooth_connected_no_headset_no_a2dp" msgid="9195757766755553810">"കണക്റ്റുചെയ്തു (ഫോണോ മീഡിയയോ അല്ല)"</string>
+ <string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"മീഡിയ ഓഡിയോ"</string>
+ <string name="bluetooth_profile_headset" msgid="8658779596261212609">"ഫോൺ ഓഡിയോ"</string>
+ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"ഫയൽ കൈമാറൽ"</string>
+ <string name="bluetooth_profile_hid" msgid="3680729023366986480">"ഇൻപുട്ട് ഉപകരണം"</string>
+ <string name="bluetooth_profile_pan" msgid="3391606497945147673">"ഇന്റർനെറ്റ് ആക്സസ്സ്"</string>
+ <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"കോൺടാക്റ്റ് പങ്കിടൽ"</string>
+ <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"കോൺടാക്റ്റ് പങ്കിടലിനായി ഉപയോഗിക്കുക"</string>
+ <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"ഇന്റർനെറ്റ് കണക്ഷൻ പങ്കിടൽ"</string>
+ <string name="bluetooth_profile_map" msgid="5465271250454324383">"ആക്സസ്സ് നിയന്ത്രിക്കുക"</string>
+ <string name="bluetooth_profile_sap" msgid="5764222021851283125">"SIM ആക്സസ്"</string>
+ <string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"മീഡിയ ഓഡിയോയിലേക്ക് കണക്റ്റുചെയ്തു"</string>
+ <string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"ഫോൺ ഓഡിയോയിൽ കണക്റ്റുചെയ്തു"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"ഫയൽ കൈമാറ്റ സെർവറിലേക്ക് കണക്റ്റുചെയ്തു"</string>
+ <string name="bluetooth_map_profile_summary_connected" msgid="8191407438851351713">"മാപ്പിലേക്ക് കണക്റ്റുചെയ്തു"</string>
+ <string name="bluetooth_sap_profile_summary_connected" msgid="8561765057453083838">"SAP-യിലേക്ക് ബന്ധിപ്പിച്ചു"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"ഫയൽ കൈമാറ്റ സെർവറിൽ കണക്റ്റുചെയ്തിട്ടില്ല"</string>
+ <string name="bluetooth_hid_profile_summary_connected" msgid="3381760054215168689">"ഇൻപുട്ട് ഉപകരണത്തിൽ കണക്റ്റുചെയ്തു"</string>
+ <string name="bluetooth_pan_user_profile_summary_connected" msgid="4602294638909590612">"ഇന്റർനെറ്റ് ആക്സസ്സിനായി ഉപകരണത്തിൽ കണക്റ്റുചെയ്തു"</string>
+ <string name="bluetooth_pan_nap_profile_summary_connected" msgid="1561383706411975199">"ഉപകരണവുമായി പ്രദേശിക ഇന്റർനെറ്റ് കണക്ഷൻ പങ്കിടുന്നു"</string>
+ <string name="bluetooth_pan_profile_summary_use_for" msgid="5664884523822068653">"ഇന്റർനെറ്റ് ആക്സസ്സിനായി ഉപയോഗിക്കുന്നു"</string>
+ <string name="bluetooth_map_profile_summary_use_for" msgid="5154200119919927434">"മാപ്പിനായി ഉപയോഗിക്കുക"</string>
+ <string name="bluetooth_sap_profile_summary_use_for" msgid="7085362712786907993">"SIM ആക്സസിന് ഉപയോഗിക്കുക"</string>
+ <string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"മീഡിയ ഓഡിയോയ്ക്കായി ഉപയോഗിക്കുക"</string>
+ <string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"ഫോൺ ഓഡിയോയ്ക്കായി ഉപയോഗിക്കുക"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"ഫയൽ കൈമാറ്റത്തിനായി ഉപയോഗിക്കുന്നു"</string>
+ <string name="bluetooth_hid_profile_summary_use_for" msgid="232727040453645139">"ഇൻപുട്ടിനായി ഉപയോഗിക്കുക"</string>
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"ജോടിയാക്കുക"</string>
+ <string name="bluetooth_pairing_accept_all_caps" msgid="6061699265220789149">"ജോടിയാക്കുക"</string>
+ <string name="bluetooth_pairing_decline" msgid="4185420413578948140">"റദ്ദാക്കുക"</string>
+ <string name="bluetooth_pairing_will_share_phonebook" msgid="4982239145676394429">"കണക്റ്റുചെയ്തിരിക്കുമ്പോൾ, ജോടിയാക്കുന്നത് നിങ്ങളുടെ കോൺടാക്റ്റുകളിലേക്കും കോൾ ചരിത്രത്തിലേക്കും ആക്സസ്സ് അനുവദിക്കുന്നു."</string>
+ <string name="bluetooth_pairing_error_message" msgid="3748157733635947087">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> എന്നതുമായി ജോടിയാക്കാനായില്ല."</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="8337234855188925274">"ഒരു തെറ്റായ പിൻ അല്ലെങ്കിൽ പാസ്കീ കാരണം <xliff:g id="DEVICE_NAME">%1$s</xliff:g> എന്നതുമായി ജോടിയാക്കാനായില്ല."</string>
+ <string name="bluetooth_pairing_device_down_error_message" msgid="7870998403045801381">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> എന്നതുമായി ആശയവിനിമയം നടത്താനായില്ല."</string>
+ <string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>, ജോടിയാക്കൽ നിരസിച്ചു."</string>
+ <string name="accessibility_wifi_off" msgid="1166761729660614716">"വൈഫൈ ഓഫാണ്."</string>
+ <string name="accessibility_no_wifi" msgid="8834610636137374508">"വൈഫൈ വിച്ഛേദിച്ചു."</string>
+ <string name="accessibility_wifi_one_bar" msgid="4869376278894301820">"വൈഫൈ സിഗ്നൽ ഒരു ബാർ."</string>
+ <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>
+ <string name="process_kernel_label" msgid="3916858646836739323">"Android OS"</string>
+ <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"നീക്കംചെയ്ത അപ്ലിക്കേഷനുകൾ"</string>
+ <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"നീക്കംചെയ്ത അപ്ലിക്കേഷനുകളും ഉപയോക്താക്കളും"</string>
+ <string name="tether_settings_title_usb" msgid="6688416425801386511">"USB ടെതറിംഗ്"</string>
+ <string name="tether_settings_title_wifi" msgid="3277144155960302049">"പോർട്ടബിൾ ഹോട്ട്സ്പോട്ട്"</string>
+ <string name="tether_settings_title_bluetooth" msgid="355855408317564420">"ബ്ലൂടൂത്ത് ടെതറിംഗ്"</string>
+ <string name="tether_settings_title_usb_bluetooth" msgid="5355828977109785001">"ടെതറിംഗ്"</string>
+ <string name="tether_settings_title_all" msgid="8356136101061143841">"ടെതറിംഗും പോർട്ടബിൾ ഹോട്ട്സ്പോട്ടും"</string>
+ <string name="managed_user_title" msgid="8101244883654409696">"ഔദ്യോഗിക പ്രൊഫൈൽ"</string>
+ <string name="user_guest" msgid="8475274842845401871">"അതിഥി"</string>
+ <string name="unknown" msgid="1592123443519355854">"അജ്ഞാതം"</string>
+ <string name="running_process_item_user_label" msgid="3129887865552025943">"ഉപയോക്താവ്: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
+ <string name="launch_defaults_some" msgid="313159469856372621">"സ്ഥിരമായ ചിലവ സജ്ജീകരിച്ചു"</string>
+ <string name="launch_defaults_none" msgid="4241129108140034876">"സ്ഥിരമായൊന്നും സജ്ജീകരിച്ചിട്ടില്ല"</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-mn-rMN/arrays.xml b/packages/SettingsLib/res/values-mn-rMN/arrays.xml
new file mode 100644
index 0000000..2849b51
--- /dev/null
+++ b/packages/SettingsLib/res/values-mn-rMN/arrays.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="wifi_status">
+ <item msgid="1922181315419294640"></item>
+ <item msgid="8934131797783724664">"Скан хийж байна…"</item>
+ <item msgid="8513729475867537913">"Холбогдож байна..."</item>
+ <item msgid="515055375277271756">"Гэрчлэж байна"</item>
+ <item msgid="1943354004029184381">"IP хаягийг авч байна…"</item>
+ <item msgid="4221763391123233270">"Холбогдсон"</item>
+ <item msgid="624838831631122137">"Түр хаасан"</item>
+ <item msgid="7979680559596111948">"Салгаж байна…"</item>
+ <item msgid="1634960474403853625">"Салгагдсан"</item>
+ <item msgid="746097431216080650">"Амжилтгүй"</item>
+ <item msgid="6367044185730295334">"Хориглогдсон"</item>
+ <item msgid="503942654197908005">"Муу холболтоос түр зайлсхийж байна"</item>
+ </string-array>
+ <string-array name="wifi_status_with_ssid">
+ <item msgid="7714855332363650812"></item>
+ <item msgid="8878186979715711006">"Скан хийж байна…"</item>
+ <item msgid="355508996603873860">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> руу холбогдож байна…"</item>
+ <item msgid="554971459996405634">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g>-тай гэрчилж байна…"</item>
+ <item msgid="7928343808033020343">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g>-с IP хаягийг авч байна…"</item>
+ <item msgid="8937994881315223448">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> руу холбогдсон"</item>
+ <item msgid="1330262655415760617">"Түр хаасан"</item>
+ <item msgid="7698638434317271902">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g>-с салгагдаж байна…"</item>
+ <item msgid="197508606402264311">"Салгагдсан"</item>
+ <item msgid="8578370891960825148">"Амжилтгүй"</item>
+ <item msgid="5660739516542454527">"Хориглогдсон"</item>
+ <item msgid="1805837518286731242">"Муу холболтоос түр зайлсхийж байна"</item>
+ </string-array>
+</resources>
diff --git a/packages/SettingsLib/res/values-mn-rMN/strings.xml b/packages/SettingsLib/res/values-mn-rMN/strings.xml
new file mode 100644
index 0000000..ed93627
--- /dev/null
+++ b/packages/SettingsLib/res/values-mn-rMN/strings.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="wifi_fail_to_scan" msgid="1265540342578081461">"Сүлжээнүүдийг скан хийх боломжгүй"</string>
+ <string name="wifi_security_none" msgid="7985461072596594400">"Байхгүй"</string>
+ <string name="wifi_remembered" msgid="4955746899347821096">"Хадгалагдсан"</string>
+ <string name="wifi_disabled_generic" msgid="4259794910584943386">"Идэвхгүйжүүлсэн"</string>
+ <string name="wifi_disabled_network_failure" msgid="2364951338436007124">"IP тохируулга амжилтгүй"</string>
+ <string name="wifi_disabled_wifi_failure" msgid="3081668066612876581">"WiFi холболт амжилтгүй"</string>
+ <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"Гэрчлэлийн асуудал"</string>
+ <string name="wifi_not_in_range" msgid="1136191511238508967">"Хүрээнд байхгүй"</string>
+ <string name="wifi_no_internet" msgid="9151470775868728896">"Интернэт холболт илэрсэнгүй, автоматаар дахин холболт хийгдэхгүй"</string>
+ <string name="saved_network" msgid="4352716707126620811">"<xliff:g id="NAME">%1$s</xliff:g> хадгалсан"</string>
+ <string name="connected_via_wfa" msgid="3805736726317410714">"Wi-Fi туслагчаар дамжуулан холбогдлоо"</string>
+ <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>
+ <string name="bluetooth_disconnected" msgid="6557104142667339895">"Салгагдсан"</string>
+ <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Салгаж байна…"</string>
+ <string name="bluetooth_connecting" msgid="8555009514614320497">"Холбогдож байна..."</string>
+ <string name="bluetooth_connected" msgid="6038755206916626419">"Холбогдсон"</string>
+ <string name="bluetooth_pairing" msgid="1426882272690346242">"Хослуулж байна…"</string>
+ <string name="bluetooth_connected_no_headset" msgid="2866994875046035609">"Холбогдсон (утас байхгүй)"</string>
+ <string name="bluetooth_connected_no_a2dp" msgid="4576188601581440337">"Холбогдсон (медиа байхгүй)"</string>
+ <string name="bluetooth_connected_no_map" msgid="6504436917057479986">"Холбогдсон (зурвас хандалт байхгүй)"</string>
+ <string name="bluetooth_connected_no_headset_no_a2dp" msgid="9195757766755553810">"Холбогдсон (утас буюу медиа байхгүй)"</string>
+ <string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Медиа аудио"</string>
+ <string name="bluetooth_profile_headset" msgid="8658779596261212609">"Утасны аудио"</string>
+ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"Файл дамжуулалт"</string>
+ <string name="bluetooth_profile_hid" msgid="3680729023366986480">"Оруулах төхөөрөмж"</string>
+ <string name="bluetooth_profile_pan" msgid="3391606497945147673">"Интернэт хандалт"</string>
+ <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"Харилцагч хуваалцах"</string>
+ <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"Харилцагч хуваалцахад ашиглах"</string>
+ <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"Интернэт холболтыг хуваалцах"</string>
+ <string name="bluetooth_profile_map" msgid="5465271250454324383">"Зурвас хандалт"</string>
+ <string name="bluetooth_profile_sap" msgid="5764222021851283125">"SIM Хандалт"</string>
+ <string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"Медиа аудиод холбогдсон"</string>
+ <string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"Утасны аудид холбогдсон"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"Файл дамжуулах серверт холбогдсон"</string>
+ <string name="bluetooth_map_profile_summary_connected" msgid="8191407438851351713">"Газрын зурагтай холбогдсон"</string>
+ <string name="bluetooth_sap_profile_summary_connected" msgid="8561765057453083838">"SAP-д холбогдсон"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"Файл дамжуулах серверт холбогдоогүй"</string>
+ <string name="bluetooth_hid_profile_summary_connected" msgid="3381760054215168689">"Оруулах төхөөрөмжтэй холбогдсон"</string>
+ <string name="bluetooth_pan_user_profile_summary_connected" msgid="4602294638909590612">"Интернетэд хандахын тулд төхөөрөмжтэй холбогдсон"</string>
+ <string name="bluetooth_pan_nap_profile_summary_connected" msgid="1561383706411975199">"Төхөөрөмжтэй локал Интернет холболтыг хуваалцаж байна"</string>
+ <string name="bluetooth_pan_profile_summary_use_for" msgid="5664884523822068653">"Интернет хандалтанд ашиглах"</string>
+ <string name="bluetooth_map_profile_summary_use_for" msgid="5154200119919927434">"Газрын зурагт ашиглах"</string>
+ <string name="bluetooth_sap_profile_summary_use_for" msgid="7085362712786907993">"SIM хандалтад ашиглах"</string>
+ <string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"Медиа аудиод ашиглах"</string>
+ <string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"Утасны аудиод ашиглах"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"Файл дамжуулахад ашиглах"</string>
+ <string name="bluetooth_hid_profile_summary_use_for" msgid="232727040453645139">"Оруулахад ашиглах"</string>
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"Хослуулах"</string>
+ <string name="bluetooth_pairing_accept_all_caps" msgid="6061699265220789149">"ХОСЛУУЛАХ"</string>
+ <string name="bluetooth_pairing_decline" msgid="4185420413578948140">"Цуцлах"</string>
+ <string name="bluetooth_pairing_will_share_phonebook" msgid="4982239145676394429">"Хослуулснаар холбогдсон үед таны харилцагчид болон дуудлагын түүхэд хандах боломжтой."</string>
+ <string name="bluetooth_pairing_error_message" msgid="3748157733635947087">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>-тай хослуулж чадсангүй."</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="8337234855188925274">"Буруу PIN эсхүл дамжих түлхүүрээс шалтгаалан <xliff:g id="DEVICE_NAME">%1$s</xliff:g>-тай хослуулж чадсангүй."</string>
+ <string name="bluetooth_pairing_device_down_error_message" msgid="7870998403045801381">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>-тай холбоо барих боломжгүй."</string>
+ <string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"Хослуулахаас <xliff:g id="DEVICE_NAME">%1$s</xliff:g> татгалзсан."</string>
+ <string name="accessibility_wifi_off" msgid="1166761729660614716">"Wifi унтраалттай байна."</string>
+ <string name="accessibility_no_wifi" msgid="8834610636137374508">"Wifi холбогдоогүй байна."</string>
+ <string name="accessibility_wifi_one_bar" msgid="4869376278894301820">"Wifi сүлжээний дохио нэг баганатай байна."</string>
+ <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>
+ <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>
+ <string name="tether_settings_title_usb" msgid="6688416425801386511">"USB модем болгох"</string>
+ <string name="tether_settings_title_wifi" msgid="3277144155960302049">"Зөөврийн сүлжээний цэг"</string>
+ <string name="tether_settings_title_bluetooth" msgid="355855408317564420">"Блютүүт модем болгох"</string>
+ <string name="tether_settings_title_usb_bluetooth" msgid="5355828977109785001">"Модем болгох"</string>
+ <string name="tether_settings_title_all" msgid="8356136101061143841">"Модем болгох & зөөврийн сүлжээний цэг"</string>
+ <string name="managed_user_title" msgid="8101244883654409696">"Ажлын профайл"</string>
+ <string name="user_guest" msgid="8475274842845401871">"Зочин"</string>
+ <string name="unknown" msgid="1592123443519355854">"Тодорхойгүй"</string>
+ <string name="running_process_item_user_label" msgid="3129887865552025943">"Хэрэглэгч: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
+ <string name="launch_defaults_some" msgid="313159469856372621">"Зарим үндсэн тохиргоонуудыг суулгасан"</string>
+ <string name="launch_defaults_none" msgid="4241129108140034876">"Ямар ч үндсэн тохиргоог суулгаагүй байна"</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-mr-rIN/arrays.xml b/packages/SettingsLib/res/values-mr-rIN/arrays.xml
new file mode 100644
index 0000000..db21ccc
--- /dev/null
+++ b/packages/SettingsLib/res/values-mr-rIN/arrays.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="wifi_status">
+ <item msgid="1922181315419294640"></item>
+ <item msgid="8934131797783724664">"स्कॅन करत आहे…"</item>
+ <item msgid="8513729475867537913">"कनेक्ट करत आहे..."</item>
+ <item msgid="515055375277271756">"प्रमाणीकरण करत आहे…"</item>
+ <item msgid="1943354004029184381">"IP पत्ता प्राप्त करत आहे…"</item>
+ <item msgid="4221763391123233270">"कनेक्ट केले"</item>
+ <item msgid="624838831631122137">"निलंबित"</item>
+ <item msgid="7979680559596111948">"डिस्कनेक्ट करत आहे..."</item>
+ <item msgid="1634960474403853625">"डिस्कनेक्ट केले"</item>
+ <item msgid="746097431216080650">"अयशस्वी"</item>
+ <item msgid="6367044185730295334">"अवरोधित"</item>
+ <item msgid="503942654197908005">"तात्पुरते खराब कनेक्शन टाळत आहे"</item>
+ </string-array>
+ <string-array name="wifi_status_with_ssid">
+ <item msgid="7714855332363650812"></item>
+ <item msgid="8878186979715711006">"स्कॅन करत आहे…"</item>
+ <item msgid="355508996603873860">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> वर कनेक्ट करत आहे…"</item>
+ <item msgid="554971459996405634">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> सह प्रमाणीकरण करत आहे…"</item>
+ <item msgid="7928343808033020343">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> वरून IP पत्ता प्राप्त करत आहे…"</item>
+ <item msgid="8937994881315223448">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> वर कनेक्ट केले आहे"</item>
+ <item msgid="1330262655415760617">"निलंबित"</item>
+ <item msgid="7698638434317271902">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> वरून डिस्कनेक्ट करत आहे…"</item>
+ <item msgid="197508606402264311">"डिस्कनेक्ट केले"</item>
+ <item msgid="8578370891960825148">"अयशस्वी"</item>
+ <item msgid="5660739516542454527">"अवरोधित"</item>
+ <item msgid="1805837518286731242">"तात्पुरते खराब कनेक्शन टाळत आहे"</item>
+ </string-array>
+</resources>
diff --git a/packages/SettingsLib/res/values-mr-rIN/strings.xml b/packages/SettingsLib/res/values-mr-rIN/strings.xml
new file mode 100644
index 0000000..3a05cb9
--- /dev/null
+++ b/packages/SettingsLib/res/values-mr-rIN/strings.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="wifi_fail_to_scan" msgid="1265540342578081461">"नेटवर्कसाठी स्कॅन करू शकत नाही"</string>
+ <string name="wifi_security_none" msgid="7985461072596594400">"काहीही नाही"</string>
+ <string name="wifi_remembered" msgid="4955746899347821096">"जतन केले"</string>
+ <string name="wifi_disabled_generic" msgid="4259794910584943386">"अक्षम"</string>
+ <string name="wifi_disabled_network_failure" msgid="2364951338436007124">"IP कॉन्फिगरेशन अयशस्वी"</string>
+ <string name="wifi_disabled_wifi_failure" msgid="3081668066612876581">"WiFi कनेक्शन अयशस्वी"</string>
+ <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"प्रमाणीकरण समस्या"</string>
+ <string name="wifi_not_in_range" msgid="1136191511238508967">"परिक्षेत्रामध्ये नाही"</string>
+ <string name="wifi_no_internet" msgid="9151470775868728896">"कोणताही इंटरनेट प्रवेश आढळला नाही, स्वयंचलितपणे रीकनेक्ट करणार नाही."</string>
+ <string name="saved_network" msgid="4352716707126620811">"<xliff:g id="NAME">%1$s</xliff:g> द्वारे जतन केले"</string>
+ <string name="connected_via_wfa" msgid="3805736726317410714">"Wi‑Fi सहाय्यक द्वारे कनेक्ट केले"</string>
+ <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>
+ <string name="bluetooth_disconnected" msgid="6557104142667339895">"डिस्कनेक्ट केले"</string>
+ <string name="bluetooth_disconnecting" msgid="8913264760027764974">"डिस्कनेक्ट करत आहे..."</string>
+ <string name="bluetooth_connecting" msgid="8555009514614320497">"कनेक्ट करीत आहे..."</string>
+ <string name="bluetooth_connected" msgid="6038755206916626419">"कनेक्ट केले"</string>
+ <string name="bluetooth_pairing" msgid="1426882272690346242">"जोडत आहे…"</string>
+ <string name="bluetooth_connected_no_headset" msgid="2866994875046035609">"कनेक्ट केले (फोन नाही)"</string>
+ <string name="bluetooth_connected_no_a2dp" msgid="4576188601581440337">"कनेक्ट केले (मीडिया नाही)"</string>
+ <string name="bluetooth_connected_no_map" msgid="6504436917057479986">"कनेक्ट केलेले आहे (कोणत्याही संदेशामध्ये प्रवेश नाही)"</string>
+ <string name="bluetooth_connected_no_headset_no_a2dp" msgid="9195757766755553810">"कनेक्ट केले (फोन किंवा मीडिया नाही)"</string>
+ <string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"मीडिया ऑडिओ"</string>
+ <string name="bluetooth_profile_headset" msgid="8658779596261212609">"फोन ऑडिओ"</string>
+ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"फाइल स्थानांतरण"</string>
+ <string name="bluetooth_profile_hid" msgid="3680729023366986480">"इनपुट डिव्हाइस"</string>
+ <string name="bluetooth_profile_pan" msgid="3391606497945147673">"इंटरनेट प्रवेश"</string>
+ <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"संपर्क सामायिकरण"</string>
+ <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"संपर्क सामायिकरणासाठी वापरा"</string>
+ <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"इंटरनेट कनेक्शन सामायिकरण"</string>
+ <string name="bluetooth_profile_map" msgid="5465271250454324383">"संदेशात प्रवेश"</string>
+ <string name="bluetooth_profile_sap" msgid="5764222021851283125">"सिम प्रवेश"</string>
+ <string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"मीडिया ऑडिओवर कनेक्ट केले"</string>
+ <string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"फोन ऑडिओ वर कनेक्ट केले"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"फाईल स्थानांतर सर्व्हरवर कनेक्ट केले"</string>
+ <string name="bluetooth_map_profile_summary_connected" msgid="8191407438851351713">"नकाशाशी कनेक्ट केले"</string>
+ <string name="bluetooth_sap_profile_summary_connected" msgid="8561765057453083838">"SAP शी कनेक्ट केले"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"फाइल स्थानांतर सर्व्हरशी कनेक्ट केले नाही"</string>
+ <string name="bluetooth_hid_profile_summary_connected" msgid="3381760054215168689">"इनपुट डिव्हाइसवर कनेक्ट केले"</string>
+ <string name="bluetooth_pan_user_profile_summary_connected" msgid="4602294638909590612">"इंटरनेट प्रवेशासाठी डिव्हाइसवर कनेक्ट केले"</string>
+ <string name="bluetooth_pan_nap_profile_summary_connected" msgid="1561383706411975199">"डिव्हाइससह स्थानिक इंटरनेट कनेक्शन सामायिक करत आहे"</string>
+ <string name="bluetooth_pan_profile_summary_use_for" msgid="5664884523822068653">"इंटरनेट प्रवेशासाठी वापरा"</string>
+ <string name="bluetooth_map_profile_summary_use_for" msgid="5154200119919927434">"नकाशासाठी वापरा"</string>
+ <string name="bluetooth_sap_profile_summary_use_for" msgid="7085362712786907993">"SIM प्रवेशासाठी वापरा"</string>
+ <string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"मीडिया ऑडिओसाठी वापरा"</string>
+ <string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"फोन ऑडिओसाठी वापरा"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"फाईल स्थानांतरणासाठी वापरा"</string>
+ <string name="bluetooth_hid_profile_summary_use_for" msgid="232727040453645139">"इनपुट साठी वापरा"</string>
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"जोडा"</string>
+ <string name="bluetooth_pairing_accept_all_caps" msgid="6061699265220789149">"जोडा"</string>
+ <string name="bluetooth_pairing_decline" msgid="4185420413578948140">"रद्द करा"</string>
+ <string name="bluetooth_pairing_will_share_phonebook" msgid="4982239145676394429">"कनेक्ट केल्यावर जोडणी आपले संपर्क आणि कॉल इतिहास यावरील प्रवेशास मंजूरी देते."</string>
+ <string name="bluetooth_pairing_error_message" msgid="3748157733635947087">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> शी जोडू शकलो नाही."</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="8337234855188925274">"अयोग्य पिन किंवा पासकीमुळे <xliff:g id="DEVICE_NAME">%1$s</xliff:g> सह जोडू शकलो नाही."</string>
+ <string name="bluetooth_pairing_device_down_error_message" msgid="7870998403045801381">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> शी संप्रेषण करू शकत नाही."</string>
+ <string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> द्वारे जोडणी नाकारली."</string>
+ <string name="accessibility_wifi_off" msgid="1166761729660614716">"वाय फाय बंद."</string>
+ <string name="accessibility_no_wifi" msgid="8834610636137374508">"वाय फाय डिस्कनेक्ट झाले."</string>
+ <string name="accessibility_wifi_one_bar" msgid="4869376278894301820">"वाय फाय एक बार."</string>
+ <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>
+ <string name="process_kernel_label" msgid="3916858646836739323">"Android OS"</string>
+ <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"काढलेले अॅप्स"</string>
+ <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"काढलेले अॅप्स आणि वापरकर्ते"</string>
+ <string name="tether_settings_title_usb" msgid="6688416425801386511">"USB टेदरिंग"</string>
+ <string name="tether_settings_title_wifi" msgid="3277144155960302049">"पोर्टेबल हॉटस्पॉट"</string>
+ <string name="tether_settings_title_bluetooth" msgid="355855408317564420">"ब्लूटुथ टेदरिंग"</string>
+ <string name="tether_settings_title_usb_bluetooth" msgid="5355828977109785001">"टिथरिंग"</string>
+ <string name="tether_settings_title_all" msgid="8356136101061143841">"टेदरिंग आणि पोर्टेबल हॉटस्पॉट"</string>
+ <string name="managed_user_title" msgid="8101244883654409696">"कार्य प्रोफाईल"</string>
+ <string name="user_guest" msgid="8475274842845401871">"अतिथी"</string>
+ <string name="unknown" msgid="1592123443519355854">"अज्ञात"</string>
+ <string name="running_process_item_user_label" msgid="3129887865552025943">"वापरकर्ता: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
+ <string name="launch_defaults_some" msgid="313159469856372621">"काही डीफॉल्ट सेट केले"</string>
+ <string name="launch_defaults_none" msgid="4241129108140034876">"कोणतेही डीफॉल्ट सेट केले नाही"</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-ms-rMY/arrays.xml b/packages/SettingsLib/res/values-ms-rMY/arrays.xml
new file mode 100644
index 0000000..15cd7ba
--- /dev/null
+++ b/packages/SettingsLib/res/values-ms-rMY/arrays.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="wifi_status">
+ <item msgid="1922181315419294640"></item>
+ <item msgid="8934131797783724664">"Mengimbas..."</item>
+ <item msgid="8513729475867537913">"Menyambung..."</item>
+ <item msgid="515055375277271756">"Mengesahkan..."</item>
+ <item msgid="1943354004029184381">"Mendapatkan alamat IP..."</item>
+ <item msgid="4221763391123233270">"Disambungkan"</item>
+ <item msgid="624838831631122137">"Digantung"</item>
+ <item msgid="7979680559596111948">"Memutuskan sambungan..."</item>
+ <item msgid="1634960474403853625">"Diputuskan sambungan"</item>
+ <item msgid="746097431216080650">"Tidak berjaya"</item>
+ <item msgid="6367044185730295334">"Disekat"</item>
+ <item msgid="503942654197908005">"Mengelakkan sambungan lemah buat sementara"</item>
+ </string-array>
+ <string-array name="wifi_status_with_ssid">
+ <item msgid="7714855332363650812"></item>
+ <item msgid="8878186979715711006">"Mengimbas..."</item>
+ <item msgid="355508996603873860">"Menyambung kepada <xliff:g id="NETWORK_NAME">%1$s</xliff:g>..."</item>
+ <item msgid="554971459996405634">"Mengesahkan dengan <xliff:g id="NETWORK_NAME">%1$s</xliff:g>..."</item>
+ <item msgid="7928343808033020343">"Mendapatkan alamat IP dari <xliff:g id="NETWORK_NAME">%1$s</xliff:g>..."</item>
+ <item msgid="8937994881315223448">"Disambungkan kepada <xliff:g id="NETWORK_NAME">%1$s</xliff:g>"</item>
+ <item msgid="1330262655415760617">"Digantung"</item>
+ <item msgid="7698638434317271902">"Memutuskan sambungan dari <xliff:g id="NETWORK_NAME">%1$s</xliff:g>..."</item>
+ <item msgid="197508606402264311">"Diputuskan sambungan"</item>
+ <item msgid="8578370891960825148">"Tidak berjaya"</item>
+ <item msgid="5660739516542454527">"Disekat"</item>
+ <item msgid="1805837518286731242">"Mengelakkan sambungan lemah buat sementara"</item>
+ </string-array>
+</resources>
diff --git a/packages/SettingsLib/res/values-ms-rMY/strings.xml b/packages/SettingsLib/res/values-ms-rMY/strings.xml
new file mode 100644
index 0000000..b917ad0
--- /dev/null
+++ b/packages/SettingsLib/res/values-ms-rMY/strings.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="wifi_fail_to_scan" msgid="1265540342578081461">"Tidak boleh mengimbas untuk rangkaian"</string>
+ <string name="wifi_security_none" msgid="7985461072596594400">"Tiada"</string>
+ <string name="wifi_remembered" msgid="4955746899347821096">"Disimpan"</string>
+ <string name="wifi_disabled_generic" msgid="4259794910584943386">"Dinyahdayakan"</string>
+ <string name="wifi_disabled_network_failure" msgid="2364951338436007124">"Kegagalan Konfigurasi IP"</string>
+ <string name="wifi_disabled_wifi_failure" msgid="3081668066612876581">"Kegagalan Sambungan WiFi"</string>
+ <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"Masalah pengesahan"</string>
+ <string name="wifi_not_in_range" msgid="1136191511238508967">"Tidak dalam liputan"</string>
+ <string name="wifi_no_internet" msgid="9151470775868728896">"Tiada Akses Internet Dikesan, tidak akan menyambung secara automatik."</string>
+ <string name="saved_network" msgid="4352716707126620811">"Diselamatkan oleh <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="connected_via_wfa" msgid="3805736726317410714">"Disambungkan melalui Pembantu Wi-Fi"</string>
+ <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>
+ <string name="bluetooth_disconnected" msgid="6557104142667339895">"Diputuskan sambungan"</string>
+ <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Memutuskan sambungan..."</string>
+ <string name="bluetooth_connecting" msgid="8555009514614320497">"Menyambung..."</string>
+ <string name="bluetooth_connected" msgid="6038755206916626419">"Bersambung"</string>
+ <string name="bluetooth_pairing" msgid="1426882272690346242">"Memasangkan..."</string>
+ <string name="bluetooth_connected_no_headset" msgid="2866994875046035609">"Disambungkan (tiada telefon)"</string>
+ <string name="bluetooth_connected_no_a2dp" msgid="4576188601581440337">"Disambungkan (tiada media)"</string>
+ <string name="bluetooth_connected_no_map" msgid="6504436917057479986">"Disambungkan (tiada akses mesej)"</string>
+ <string name="bluetooth_connected_no_headset_no_a2dp" msgid="9195757766755553810">"Disambungkan (tiada telefon atau media)"</string>
+ <string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Audio media"</string>
+ <string name="bluetooth_profile_headset" msgid="8658779596261212609">"Audio telefon"</string>
+ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"Pemindahan fail"</string>
+ <string name="bluetooth_profile_hid" msgid="3680729023366986480">"Peranti input"</string>
+ <string name="bluetooth_profile_pan" msgid="3391606497945147673">"Akses Internet"</string>
+ <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"Perkongsian kenalan"</string>
+ <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"Gunakan untuk perkongsian kenalan"</string>
+ <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"Perkongsian sambungan Internet"</string>
+ <string name="bluetooth_profile_map" msgid="5465271250454324383">"Akses Mesej"</string>
+ <string name="bluetooth_profile_sap" msgid="5764222021851283125">"Akses SIM"</string>
+ <string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"Disambungkan ke audio media"</string>
+ <string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"Disambungkan ke audio telefon"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"Bersambung ke pelayan pemindahan fail"</string>
+ <string name="bluetooth_map_profile_summary_connected" msgid="8191407438851351713">"Disambungkan ke peta"</string>
+ <string name="bluetooth_sap_profile_summary_connected" msgid="8561765057453083838">"Disambungkan ke SAP"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"Tidak bersambung kepada pelayan pemindahan fail"</string>
+ <string name="bluetooth_hid_profile_summary_connected" msgid="3381760054215168689">"Disambungkan ke peranti input"</string>
+ <string name="bluetooth_pan_user_profile_summary_connected" msgid="4602294638909590612">"Sbg ke pranti utk aks Int"</string>
+ <string name="bluetooth_pan_nap_profile_summary_connected" msgid="1561383706411975199">"Kgsi sbgn Int dgn peranti"</string>
+ <string name="bluetooth_pan_profile_summary_use_for" msgid="5664884523822068653">"Gunakan untuk akses Internet"</string>
+ <string name="bluetooth_map_profile_summary_use_for" msgid="5154200119919927434">"Gunakan untuk peta"</string>
+ <string name="bluetooth_sap_profile_summary_use_for" msgid="7085362712786907993">"Gunakan untuk akses SIM"</string>
+ <string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"Gunakan untuk audio media"</string>
+ <string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"Gunakan untuk audio telefon"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"Gunakan untuk pemindahan fail"</string>
+ <string name="bluetooth_hid_profile_summary_use_for" msgid="232727040453645139">"Gunakan untuk input"</string>
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"Jadikan pasangan"</string>
+ <string name="bluetooth_pairing_accept_all_caps" msgid="6061699265220789149">"JADIKAN PASANGAN"</string>
+ <string name="bluetooth_pairing_decline" msgid="4185420413578948140">"Batal"</string>
+ <string name="bluetooth_pairing_will_share_phonebook" msgid="4982239145676394429">"Berpasangan memberi anda akses kepada kenalan dan sejarah panggilan apabila disambungkan."</string>
+ <string name="bluetooth_pairing_error_message" msgid="3748157733635947087">"Tidak dapat berpasangan dengan <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="8337234855188925274">"Tidak dapat berpasangan dengan <xliff:g id="DEVICE_NAME">%1$s</xliff:g> kerana PIN atau kunci laluan yang salah."</string>
+ <string name="bluetooth_pairing_device_down_error_message" msgid="7870998403045801381">"Tidak boleh berkomunikasi dengan <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"Pasangan ditolak oleh <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="accessibility_wifi_off" msgid="1166761729660614716">"Wi-Fi dimatikan."</string>
+ <string name="accessibility_no_wifi" msgid="8834610636137374508">"Wi-Fi diputuskan sambungannya."</string>
+ <string name="accessibility_wifi_one_bar" msgid="4869376278894301820">"Wi-Fi satu bar."</string>
+ <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>
+ <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>
+ <string name="tether_settings_title_usb" msgid="6688416425801386511">"Penambatan USB"</string>
+ <string name="tether_settings_title_wifi" msgid="3277144155960302049">"Titik panas mudah alih"</string>
+ <string name="tether_settings_title_bluetooth" msgid="355855408317564420">"Penambatan Bluetooth"</string>
+ <string name="tether_settings_title_usb_bluetooth" msgid="5355828977109785001">"Penambatan"</string>
+ <string name="tether_settings_title_all" msgid="8356136101061143841">"Liputan tambatan & mudah alih"</string>
+ <string name="managed_user_title" msgid="8101244883654409696">"Profil kerja"</string>
+ <string name="user_guest" msgid="8475274842845401871">"Tetamu"</string>
+ <string name="unknown" msgid="1592123443519355854">"Tidak diketahui"</string>
+ <string name="running_process_item_user_label" msgid="3129887865552025943">"Pengguna: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
+ <string name="launch_defaults_some" msgid="313159469856372621">"Beberapa lalai ditetapkan"</string>
+ <string name="launch_defaults_none" msgid="4241129108140034876">"Tiada lalai ditetapkan"</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-my-rMM/arrays.xml b/packages/SettingsLib/res/values-my-rMM/arrays.xml
new file mode 100644
index 0000000..82f2ded
--- /dev/null
+++ b/packages/SettingsLib/res/values-my-rMM/arrays.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="wifi_status">
+ <item msgid="1922181315419294640"></item>
+ <item msgid="8934131797783724664">"စကင်ပြုလုပ်နေပြီ"</item>
+ <item msgid="8513729475867537913">"ချိတ်ဆက်နေသည်"</item>
+ <item msgid="515055375277271756">"စစ်မှန်ကြောင်းအတည်ပြုနေသည်"</item>
+ <item msgid="1943354004029184381">"အိုင်ပီလိပ်စာရယူနေသည်"</item>
+ <item msgid="4221763391123233270">"ဆက်သွယ်ထားပြီး"</item>
+ <item msgid="624838831631122137">"ဆိုင်းငံ့ထားသည်"</item>
+ <item msgid="7979680559596111948">"အဆက်အသွယ်ဖြတ်တောက်နေသည်"</item>
+ <item msgid="1634960474403853625">"ချိတ်ဆက်မှုပြတ်တောက်သည်"</item>
+ <item msgid="746097431216080650">"မအောင်မြင်ပါ"</item>
+ <item msgid="6367044185730295334">"ပိတ်ထားသည်"</item>
+ <item msgid="503942654197908005">"နှေးကွေးသောဆက်သွယ်မှုကို ယာယီရှောင်ရှားထားသည်"</item>
+ </string-array>
+ <string-array name="wifi_status_with_ssid">
+ <item msgid="7714855332363650812"></item>
+ <item msgid="8878186979715711006">"စကင်ပြုလုပ်နေပြီ"</item>
+ <item msgid="355508996603873860">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> နှင့် ဆက်သွယ်နေပါသည်"</item>
+ <item msgid="554971459996405634">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g>နှင့်စစ်မှန်ကြောင်းအတည်ပြုနေသည်"</item>
+ <item msgid="7928343808033020343">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> မှ IPလိပ်စာရယူနေသည်"</item>
+ <item msgid="8937994881315223448">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> နှင့် ဆက်သွယ်ထားပြီး"</item>
+ <item msgid="1330262655415760617">"ဆိုင်းငံ့ထားသည်"</item>
+ <item msgid="7698638434317271902">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g>မှ ဆက်သွယ်မှုဖြတ်တောက်သွားသည်"</item>
+ <item msgid="197508606402264311">"ချိတ်ဆက်မှုပြတ်တောက်သည်"</item>
+ <item msgid="8578370891960825148">"မအောင်မြင်ပါ"</item>
+ <item msgid="5660739516542454527">"ပိတ်ထားသည်"</item>
+ <item msgid="1805837518286731242">"နှေးကွေးသောဆက်သွယ်မှုကို ယာယီရှောင်ရှားထားသည်"</item>
+ </string-array>
+</resources>
diff --git a/packages/SettingsLib/res/values-my-rMM/strings.xml b/packages/SettingsLib/res/values-my-rMM/strings.xml
new file mode 100644
index 0000000..56adf2d
--- /dev/null
+++ b/packages/SettingsLib/res/values-my-rMM/strings.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="wifi_fail_to_scan" msgid="1265540342578081461">"ကွန်ယက်များကို စကင်မလုပ်နိုင်ပါ"</string>
+ <string name="wifi_security_none" msgid="7985461072596594400">"တစ်ခုမှမဟုတ်ပါ"</string>
+ <string name="wifi_remembered" msgid="4955746899347821096">"သိမ်းဆည်းပြီး"</string>
+ <string name="wifi_disabled_generic" msgid="4259794910584943386">"သုံးမရအောင် ပိတ်ထားသည်"</string>
+ <string name="wifi_disabled_network_failure" msgid="2364951338436007124">"IP ပြုပြင်ခြင်း မအောင်မြင်ပါ"</string>
+ <string name="wifi_disabled_wifi_failure" msgid="3081668066612876581">"WiFi ချိတ်ဆက်မှု မအောင်မြင်ပါ"</string>
+ <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"စစ်မှန်ကြောင်းအတည်ပြုရန်၌ ပြသနာရှိခြင်း"</string>
+ <string name="wifi_not_in_range" msgid="1136191511238508967">"စက်ကွင်းထဲတွင် မဟုတ်ပါ"</string>
+ <string name="wifi_no_internet" msgid="9151470775868728896">"မည်သည့် အင်တာနက်မျှမရှိပါ၊ အလိုအလျောက် ပြန်လည်မချိတ်ဆက်ပါ။"</string>
+ <string name="saved_network" msgid="4352716707126620811">"<xliff:g id="NAME">%1$s</xliff:g> မှသိမ်းဆည်းခဲ့သည်"</string>
+ <string name="connected_via_wfa" msgid="3805736726317410714">"ကြိုးမဲ့ကူညီသူမှတဆင့် ချိတ်ဆက်၏"</string>
+ <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>
+ <string name="bluetooth_disconnected" msgid="6557104142667339895">"ချိတ်ဆက်မှုပြတ်တောက်သည်"</string>
+ <string name="bluetooth_disconnecting" msgid="8913264760027764974">"အဆက်အသွယ်ဖြတ်တောက်သည်"</string>
+ <string name="bluetooth_connecting" msgid="8555009514614320497">"ချိတ်ဆက်နေသည်"</string>
+ <string name="bluetooth_connected" msgid="6038755206916626419">"ချိတ်ဆက်ထားပြီး"</string>
+ <string name="bluetooth_pairing" msgid="1426882272690346242">"တွဲချိတ်ပါ"</string>
+ <string name="bluetooth_connected_no_headset" msgid="2866994875046035609">"ချိတ်ဆက်ထားပြီး (ဖုန်းမရှိ)"</string>
+ <string name="bluetooth_connected_no_a2dp" msgid="4576188601581440337">"ချိတ်ဆက်ထားပြီး (မီဒီယာမရှိ)"</string>
+ <string name="bluetooth_connected_no_map" msgid="6504436917057479986">"ချိတ်ဆက်မိသည် (သတင်းရယူမှုမရှိ)"</string>
+ <string name="bluetooth_connected_no_headset_no_a2dp" msgid="9195757766755553810">"ချိတ်ဆက်ပြီး (ဖုန်း သို့ မီဒီယာမဟုတ်ပါ)"</string>
+ <string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"မီဒီယာ အသံ"</string>
+ <string name="bluetooth_profile_headset" msgid="8658779596261212609">"ဖုန်းအသံ"</string>
+ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"ဖိုင်လွဲပြောင်းခြင်း"</string>
+ <string name="bluetooth_profile_hid" msgid="3680729023366986480">"ထည့်သွင်းသော စက်"</string>
+ <string name="bluetooth_profile_pan" msgid="3391606497945147673">"အင်တာနက်ချိတ်ဆက်ခြင်း"</string>
+ <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"အဆက်အသွယ်ကို မျှဝေရန်"</string>
+ <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"အဆက်အသွယ်ကို မျှဝေရန် အတွက် သုံးရန်"</string>
+ <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"အင်တာနက်ဆက်သွယ်မှု မျှဝေခြင်း"</string>
+ <string name="bluetooth_profile_map" msgid="5465271250454324383">"သတင်းရယူမှု"</string>
+ <string name="bluetooth_profile_sap" msgid="5764222021851283125">"SIM အသုံးပြုခြင်း"</string>
+ <string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"မီဒီယာအသံအား ချိတ်ဆက်ရန်"</string>
+ <string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"ဖုန်းအသံအား ချိတ်ဆက်ရန်"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"ဖိုင်လွှဲပြောင်းမည့်ဆာဗာနှင့် ချိတ်ဆက်ထားပြီး"</string>
+ <string name="bluetooth_map_profile_summary_connected" msgid="8191407438851351713">"မြေပုံနှင့် ချိတ်ဆက်ရန်"</string>
+ <string name="bluetooth_sap_profile_summary_connected" msgid="8561765057453083838">"SAP သို့ချိတ်ဆက်ထားသည်"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"ဖိုင်လွှဲပြောင်းမည့်ဆာဗာနှင့် ချိတ်ဆက်မထားပါ"</string>
+ <string name="bluetooth_hid_profile_summary_connected" msgid="3381760054215168689">"ထည့်သွင်းထားသောစက်ကို ချိတ်ဆက်မည်"</string>
+ <string name="bluetooth_pan_user_profile_summary_connected" msgid="4602294638909590612">"အင်တာနက်ဆက်သွယ်မှုရရန် စက်နှင်ချိတ်ဆက်မည်"</string>
+ <string name="bluetooth_pan_nap_profile_summary_connected" msgid="1561383706411975199">"စက်နှင့် ပုံမှန်အင်တာနက်ဆက်သွယ်မှုအား မျှဝေစေရန်"</string>
+ <string name="bluetooth_pan_profile_summary_use_for" msgid="5664884523822068653">"အင်တာနက်ချိတ်ဆက်ရန်အသုံးပြုသည်"</string>
+ <string name="bluetooth_map_profile_summary_use_for" msgid="5154200119919927434">"မြေပုံအတွက်သုံးရန်"</string>
+ <string name="bluetooth_sap_profile_summary_use_for" msgid="7085362712786907993">"SIM အသုံးပြုမှုအတွက် အသုံးပြုမည်"</string>
+ <string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"မီဒီယာအသံအတွက်အသုံးပြုရန်"</string>
+ <string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"ဖုန်းအသံအားအသုံးပြုရန်"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"ဖိုင်လွဲပြောင်းရန်အတွက်အသုံးပြုရန်"</string>
+ <string name="bluetooth_hid_profile_summary_use_for" msgid="232727040453645139">"ထည့်သွင်းရန်အသုံးပြုသည်"</string>
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"အတူတွဲပါ"</string>
+ <string name="bluetooth_pairing_accept_all_caps" msgid="6061699265220789149">"ချိတ်တွဲရန်"</string>
+ <string name="bluetooth_pairing_decline" msgid="4185420413578948140">"ထားတော့"</string>
+ <string name="bluetooth_pairing_will_share_phonebook" msgid="4982239145676394429">"ချိတ်တွဲမှုက ချိတ်ဆက်ထားလျှင် သင်၏ အဆက်အသွယ်များ နှင့် ခေါ်ဆိုမှု မှတ်တမ်းကို ရယူခွင့် ပြုသည်။"</string>
+ <string name="bluetooth_pairing_error_message" msgid="3748157733635947087">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>နှင့် တွဲချိတ်မရပါ"</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="8337234855188925274">"ပင်နံပါတ် သို့မဟုတ် ဖြတ်သန်းခွင့်ကီးမမှန်ကန်သောကြောင့်<xliff:g id="DEVICE_NAME">%1$s</xliff:g>နှင့် တွဲချိတ်မရပါ။"</string>
+ <string name="bluetooth_pairing_device_down_error_message" msgid="7870998403045801381">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>နှင့်ဆက်သွယ်မရပါ"</string>
+ <string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>နှင့်တွဲချိတ်ရန် ပယ်ချခံရသည်"</string>
+ <string name="accessibility_wifi_off" msgid="1166761729660614716">"ဝိုင်ဖိုင် မရှိ"</string>
+ <string name="accessibility_no_wifi" msgid="8834610636137374508">"ဝိုင်ဖိုင် ချိတ်ဆက်ထားမှု မရှိပါ"</string>
+ <string name="accessibility_wifi_one_bar" msgid="4869376278894301820">"ဝိုင်ဖိုင် ၁ ဘားရှိ"</string>
+ <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>
+ <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_wifi" msgid="3277144155960302049">"ရွေ့လျားနိုင်သောဟော့စပေါ့"</string>
+ <string name="tether_settings_title_bluetooth" msgid="355855408317564420">"ဘလူးတုသ်တဆင့်ပြန်ချိတ်ဆက်"</string>
+ <string name="tether_settings_title_usb_bluetooth" msgid="5355828977109785001">"တဆင့်ပြန်လည်ချိတ်ဆက်ခြင်း"</string>
+ <string name="tether_settings_title_all" msgid="8356136101061143841">"တဆင့်ချိတ်ဆက်ခြင်း၊ ဟော့စပေါ့"</string>
+ <string name="managed_user_title" msgid="8101244883654409696">"အလုပ် ပရိုဖိုင်"</string>
+ <string name="user_guest" msgid="8475274842845401871">"ဧည့်သည်"</string>
+ <string name="unknown" msgid="1592123443519355854">"အကြောင်းအရာ မသိရှိ"</string>
+ <string name="running_process_item_user_label" msgid="3129887865552025943">"သုံးစွဲသူ၊ <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
+ <string name="launch_defaults_some" msgid="313159469856372621">"တချို့အားပုံမှတ်အဖြစ်သတ်မှတ်"</string>
+ <string name="launch_defaults_none" msgid="4241129108140034876">"ပုံမှန်သတ်မှတ်ထားခြင်းမရှိ"</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-nb/arrays.xml b/packages/SettingsLib/res/values-nb/arrays.xml
new file mode 100644
index 0000000..af7c0b1
--- /dev/null
+++ b/packages/SettingsLib/res/values-nb/arrays.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="wifi_status">
+ <item msgid="1922181315419294640"></item>
+ <item msgid="8934131797783724664">"Skanner ..."</item>
+ <item msgid="8513729475867537913">"Kobler til …"</item>
+ <item msgid="515055375277271756">"Autentiserer ..."</item>
+ <item msgid="1943354004029184381">"Henter IP-adresse …"</item>
+ <item msgid="4221763391123233270">"Tilkoblet"</item>
+ <item msgid="624838831631122137">"Avsluttet"</item>
+ <item msgid="7979680559596111948">"Kobler fra ..."</item>
+ <item msgid="1634960474403853625">"Frakoblet"</item>
+ <item msgid="746097431216080650">"Mislyktes"</item>
+ <item msgid="6367044185730295334">"Blokkert"</item>
+ <item msgid="503942654197908005">"Unngår dårlig tilkobling midlertidig"</item>
+ </string-array>
+ <string-array name="wifi_status_with_ssid">
+ <item msgid="7714855332363650812"></item>
+ <item msgid="8878186979715711006">"Skanner ..."</item>
+ <item msgid="355508996603873860">"Kobler til <xliff:g id="NETWORK_NAME">%1$s</xliff:g> …"</item>
+ <item msgid="554971459996405634">"Autentiserer med <xliff:g id="NETWORK_NAME">%1$s</xliff:g> …"</item>
+ <item msgid="7928343808033020343">"Henter IP-adresse fra <xliff:g id="NETWORK_NAME">%1$s</xliff:g> …"</item>
+ <item msgid="8937994881315223448">"Koblet til <xliff:g id="NETWORK_NAME">%1$s</xliff:g>"</item>
+ <item msgid="1330262655415760617">"Avsluttet"</item>
+ <item msgid="7698638434317271902">"Kobler fra <xliff:g id="NETWORK_NAME">%1$s</xliff:g> …"</item>
+ <item msgid="197508606402264311">"Frakoblet"</item>
+ <item msgid="8578370891960825148">"Mislyktes"</item>
+ <item msgid="5660739516542454527">"Blokkert"</item>
+ <item msgid="1805837518286731242">"Unngår dårlig tilkobling midlertidig"</item>
+ </string-array>
+</resources>
diff --git a/packages/SettingsLib/res/values-nb/strings.xml b/packages/SettingsLib/res/values-nb/strings.xml
new file mode 100644
index 0000000..0c0d66f
--- /dev/null
+++ b/packages/SettingsLib/res/values-nb/strings.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="wifi_fail_to_scan" msgid="1265540342578081461">"Kan ikke søke etter nettverk"</string>
+ <string name="wifi_security_none" msgid="7985461072596594400">"Ingen"</string>
+ <string name="wifi_remembered" msgid="4955746899347821096">"Lagret"</string>
+ <string name="wifi_disabled_generic" msgid="4259794910584943386">"Slått av"</string>
+ <string name="wifi_disabled_network_failure" msgid="2364951338436007124">"IP-konfigurasjonsfeil"</string>
+ <string name="wifi_disabled_wifi_failure" msgid="3081668066612876581">"Wi-Fi-tilkoblingsfeil"</string>
+ <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"Autentiseringsproblem"</string>
+ <string name="wifi_not_in_range" msgid="1136191511238508967">"Utenfor område"</string>
+ <string name="wifi_no_internet" msgid="9151470775868728896">"Ingen Internett-tilgang ble funnet. Kan ikke koble til på nytt automatisk."</string>
+ <string name="saved_network" msgid="4352716707126620811">"Lagret av <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="connected_via_wfa" msgid="3805736726317410714">"Koblet til via en Wi-Fi-assistent"</string>
+ <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>
+ <string name="bluetooth_disconnected" msgid="6557104142667339895">"Frakoblet"</string>
+ <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Kobler fra…"</string>
+ <string name="bluetooth_connecting" msgid="8555009514614320497">"Kobler til…"</string>
+ <string name="bluetooth_connected" msgid="6038755206916626419">"Tilkoblet"</string>
+ <string name="bluetooth_pairing" msgid="1426882272690346242">"Sammenkobles …"</string>
+ <string name="bluetooth_connected_no_headset" msgid="2866994875046035609">"Tilkobling (ingen telefon)"</string>
+ <string name="bluetooth_connected_no_a2dp" msgid="4576188601581440337">"Tilkoblet (ingen medier)"</string>
+ <string name="bluetooth_connected_no_map" msgid="6504436917057479986">"Tilkoblet (ingen meldingstilgang)"</string>
+ <string name="bluetooth_connected_no_headset_no_a2dp" msgid="9195757766755553810">"Tilkoblet (ingen telefon eller media)"</string>
+ <string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Medielyd"</string>
+ <string name="bluetooth_profile_headset" msgid="8658779596261212609">"Telefonlyd"</string>
+ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"Filoverføring"</string>
+ <string name="bluetooth_profile_hid" msgid="3680729023366986480">"Inndataenhet"</string>
+ <string name="bluetooth_profile_pan" msgid="3391606497945147673">"Internett-tilgang"</string>
+ <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"Kontaktdeling"</string>
+ <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"Bruk til kontaktdeling"</string>
+ <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"Deling av Internett-tilkobling"</string>
+ <string name="bluetooth_profile_map" msgid="5465271250454324383">"Meldingstilgang"</string>
+ <string name="bluetooth_profile_sap" msgid="5764222021851283125">"Tilgang til SIM-kortet"</string>
+ <string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"Koblet til medielyd"</string>
+ <string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"Koblet til telefonlyd"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"Koblet til tjener for filoverføring"</string>
+ <string name="bluetooth_map_profile_summary_connected" msgid="8191407438851351713">"Koblet til kart"</string>
+ <string name="bluetooth_sap_profile_summary_connected" msgid="8561765057453083838">"Koblet til SAP"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"Ikke koblet til tjener for filoverføring"</string>
+ <string name="bluetooth_hid_profile_summary_connected" msgid="3381760054215168689">"Koblet til inndataenhet"</string>
+ <string name="bluetooth_pan_user_profile_summary_connected" msgid="4602294638909590612">"Koblet til enhet for Internett-tilgang"</string>
+ <string name="bluetooth_pan_nap_profile_summary_connected" msgid="1561383706411975199">"Deler lokal Internett-tilkobling med enhet"</string>
+ <string name="bluetooth_pan_profile_summary_use_for" msgid="5664884523822068653">"Bruk for Internett-tilgang"</string>
+ <string name="bluetooth_map_profile_summary_use_for" msgid="5154200119919927434">"Bruk for kart"</string>
+ <string name="bluetooth_sap_profile_summary_use_for" msgid="7085362712786907993">"Bruk for tilgang til SIM-kortet"</string>
+ <string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"Bruk for medielyd"</string>
+ <string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"Bruk for telefonlyd"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"Bruk til filoverføring"</string>
+ <string name="bluetooth_hid_profile_summary_use_for" msgid="232727040453645139">"Bruk for inndata"</string>
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"Sammenkoble"</string>
+ <string name="bluetooth_pairing_accept_all_caps" msgid="6061699265220789149">"KOBLE"</string>
+ <string name="bluetooth_pairing_decline" msgid="4185420413578948140">"Avbryt"</string>
+ <string name="bluetooth_pairing_will_share_phonebook" msgid="4982239145676394429">"Med sammenkobling får den andre enheten tilgang til kontaktene og anropsloggen din når den er tilkoblet."</string>
+ <string name="bluetooth_pairing_error_message" msgid="3748157733635947087">"Kan ikke koble til <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="8337234855188925274">"Kan ikke koble til <xliff:g id="DEVICE_NAME">%1$s</xliff:g> på grunn av feil personlig kode eller passord."</string>
+ <string name="bluetooth_pairing_device_down_error_message" msgid="7870998403045801381">"Kan ikke kommunisere med <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> avslo paring."</string>
+ <string name="accessibility_wifi_off" msgid="1166761729660614716">"Wi-Fi er av."</string>
+ <string name="accessibility_no_wifi" msgid="8834610636137374508">"Wi-Fi er frakoblet."</string>
+ <string name="accessibility_wifi_one_bar" msgid="4869376278894301820">"Wi-Fi-signal med én stolpe."</string>
+ <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>
+ <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>
+ <string name="tether_settings_title_usb" msgid="6688416425801386511">"USB-internettdeling"</string>
+ <string name="tether_settings_title_wifi" msgid="3277144155960302049">"Flyttbar trådløs sone"</string>
+ <string name="tether_settings_title_bluetooth" msgid="355855408317564420">"Bluetooth-internettdeling"</string>
+ <string name="tether_settings_title_usb_bluetooth" msgid="5355828977109785001">"Internettdeling"</string>
+ <string name="tether_settings_title_all" msgid="8356136101061143841">"Nettdeling og trådløs sone"</string>
+ <string name="managed_user_title" msgid="8101244883654409696">"Jobbprofil"</string>
+ <string name="user_guest" msgid="8475274842845401871">"Gjest"</string>
+ <string name="unknown" msgid="1592123443519355854">"Ukjent"</string>
+ <string name="running_process_item_user_label" msgid="3129887865552025943">"Bruker:<xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
+ <string name="launch_defaults_some" msgid="313159469856372621">"Noen standardvalg er angitt"</string>
+ <string name="launch_defaults_none" msgid="4241129108140034876">"Ingen standardvalg er angitt"</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-ne-rNP/arrays.xml b/packages/SettingsLib/res/values-ne-rNP/arrays.xml
new file mode 100644
index 0000000..7cb9ceb
--- /dev/null
+++ b/packages/SettingsLib/res/values-ne-rNP/arrays.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="wifi_status">
+ <item msgid="1922181315419294640"></item>
+ <item msgid="8934131797783724664">"स्क्यान गरिँदै..."</item>
+ <item msgid="8513729475867537913">"जडान हुँदै..."</item>
+ <item msgid="515055375277271756">"प्रमाणित गर्दै ..."</item>
+ <item msgid="1943354004029184381">"IP ठेगाना पत्ता लगाउँदै ..."</item>
+ <item msgid="4221763391123233270">"जडान गरिएको"</item>
+ <item msgid="624838831631122137">"निलम्बित"</item>
+ <item msgid="7979680559596111948">"विच्छेदन गर्दै..."</item>
+ <item msgid="1634960474403853625">"विच्छेदन भएको"</item>
+ <item msgid="746097431216080650">"असफल"</item>
+ <item msgid="6367044185730295334">"रोक्का गरियो"</item>
+ <item msgid="503942654197908005">"अस्थायी रूपमा कमजोर जडान बेवास्ता गर्दै"</item>
+ </string-array>
+ <string-array name="wifi_status_with_ssid">
+ <item msgid="7714855332363650812"></item>
+ <item msgid="8878186979715711006">"स्क्यान गर्दै..."</item>
+ <item msgid="355508996603873860">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g>सँग जडान हुँदै..."</item>
+ <item msgid="554971459996405634">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g>को साथ प्रमाणित गर्दै…"</item>
+ <item msgid="7928343808033020343">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g>बाट IP ठेगाना प्राप्त गर्दै…"</item>
+ <item msgid="8937994881315223448">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g>सँग जडित"</item>
+ <item msgid="1330262655415760617">"निलम्बित"</item>
+ <item msgid="7698638434317271902">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g>बाट विच्छेदन गर्दै..."</item>
+ <item msgid="197508606402264311">"विच्छेदन भएको"</item>
+ <item msgid="8578370891960825148">"असफल"</item>
+ <item msgid="5660739516542454527">"रोकियो"</item>
+ <item msgid="1805837518286731242">"अस्थायी रूपमा कमजोर जडान हटाइँदै"</item>
+ </string-array>
+</resources>
diff --git a/packages/SettingsLib/res/values-ne-rNP/strings.xml b/packages/SettingsLib/res/values-ne-rNP/strings.xml
new file mode 100644
index 0000000..4ca6860
--- /dev/null
+++ b/packages/SettingsLib/res/values-ne-rNP/strings.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="wifi_fail_to_scan" msgid="1265540342578081461">"सञ्जालका लागि स्क्यान गर्न सक्दैन"</string>
+ <string name="wifi_security_none" msgid="7985461072596594400">"कुनै पनि होइन"</string>
+ <string name="wifi_remembered" msgid="4955746899347821096">"बचत गरियो"</string>
+ <string name="wifi_disabled_generic" msgid="4259794910584943386">"असक्षम पारियो"</string>
+ <string name="wifi_disabled_network_failure" msgid="2364951338436007124">"IP विन्यास असफल"</string>
+ <string name="wifi_disabled_wifi_failure" msgid="3081668066612876581">"वाईफाई जडान असफल"</string>
+ <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"प्रमाणीकरण समस्या"</string>
+ <string name="wifi_not_in_range" msgid="1136191511238508967">"दायराभित्र छैन"</string>
+ <string name="wifi_no_internet" msgid="9151470775868728896">"कुनै इन्टरनेट पहुँच पाईएन, स्वचालित रूपमा पुन: जडान छैन।"</string>
+ <string name="saved_network" msgid="4352716707126620811">"<xliff:g id="NAME">%1$s</xliff:g> द्वारा सुरक्षित गरियो"</string>
+ <string name="connected_via_wfa" msgid="3805736726317410714">"Wi-Fi सहायक द्वारा जोडिएको"</string>
+ <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>
+ <string name="bluetooth_disconnected" msgid="6557104142667339895">"विच्छेदन गरियो"</string>
+ <string name="bluetooth_disconnecting" msgid="8913264760027764974">"जडान हटाइँदै ..."</string>
+ <string name="bluetooth_connecting" msgid="8555009514614320497">"जडान हुँदै..."</string>
+ <string name="bluetooth_connected" msgid="6038755206916626419">"जडान गरिएको"</string>
+ <string name="bluetooth_pairing" msgid="1426882272690346242">"जोडा बाँध्दै..."</string>
+ <string name="bluetooth_connected_no_headset" msgid="2866994875046035609">"जडान (कुनै फोन छैन)"</string>
+ <string name="bluetooth_connected_no_a2dp" msgid="4576188601581440337">"जडित (कुनै पनि मिडिया छैन)"</string>
+ <string name="bluetooth_connected_no_map" msgid="6504436917057479986">"जडित छ (सन्देशमा पहुँच छैन)"</string>
+ <string name="bluetooth_connected_no_headset_no_a2dp" msgid="9195757766755553810">"जडित (फोन वा मिडिया छैन)"</string>
+ <string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"मिडिया अडियो"</string>
+ <string name="bluetooth_profile_headset" msgid="8658779596261212609">"फोन अडियो"</string>
+ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"फाइल स्थानान्तरण"</string>
+ <string name="bluetooth_profile_hid" msgid="3680729023366986480">"इनपुट उपकरण"</string>
+ <string name="bluetooth_profile_pan" msgid="3391606497945147673">"इन्टरनेट पहुँच"</string>
+ <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"सम्पर्क साझेदारी"</string>
+ <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"सम्पर्क साझेदारीका लागि प्रयोग"</string>
+ <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"इन्टरनेट जडान साझेदारी गर्दै"</string>
+ <string name="bluetooth_profile_map" msgid="5465271250454324383">"सन्देश पहुँच"</string>
+ <string name="bluetooth_profile_sap" msgid="5764222021851283125">"SIM पहुँच"</string>
+ <string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"मिडिया अडियोसँग जडित"</string>
+ <string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"फोन अडियोमा जडान गरियो"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"फाइल ट्रान्सफर सर्भरमा जडान गरियो"</string>
+ <string name="bluetooth_map_profile_summary_connected" msgid="8191407438851351713">"नक्सासँग जडित"</string>
+ <string name="bluetooth_sap_profile_summary_connected" msgid="8561765057453083838">"SAP मा जडित"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"फाइल ट्रान्सफर सर्भरसँग जडान गरिएको छैन"</string>
+ <string name="bluetooth_hid_profile_summary_connected" msgid="3381760054215168689">"इनपुट उपकरणसँग जोडिएको छ"</string>
+ <string name="bluetooth_pan_user_profile_summary_connected" msgid="4602294638909590612">"इन्टरनेट पहुँचका लागि उपकरणसँग जडित"</string>
+ <string name="bluetooth_pan_nap_profile_summary_connected" msgid="1561383706411975199">"उपकरणसँग स्थानीय इन्टरनेट जडान साझेदारी गर्दै"</string>
+ <string name="bluetooth_pan_profile_summary_use_for" msgid="5664884523822068653">"इन्टर्नेट पहुँचका लागि प्रयोग गर्नुहोस्"</string>
+ <string name="bluetooth_map_profile_summary_use_for" msgid="5154200119919927434">"नक्साको लागि प्रयोग गर्नुहोस्"</string>
+ <string name="bluetooth_sap_profile_summary_use_for" msgid="7085362712786907993">"SIM मा पहुँचका लागि प्रयोग गर्नुहोस्"</string>
+ <string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"मिडिया अडियोका लागि प्रयोग गर्नुहोस्"</string>
+ <string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"फोन अडियोको लागि प्रयोग गर्नुहोस्"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"फाइल ट्रान्सफरका लागि प्रयोग गर्नुहोस्"</string>
+ <string name="bluetooth_hid_profile_summary_use_for" msgid="232727040453645139">"इनपुटको लागि प्रयोग गर्नुहोस्"</string>
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"जोडी"</string>
+ <string name="bluetooth_pairing_accept_all_caps" msgid="6061699265220789149">"जोडी"</string>
+ <string name="bluetooth_pairing_decline" msgid="4185420413578948140">"रद्द गर्नुहोस्"</string>
+ <string name="bluetooth_pairing_will_share_phonebook" msgid="4982239145676394429">"जब जडान हुन्छ जोडी अनुदानले तपाईँको सम्पर्कहरू पहुँच गर्छ र इतिहास सम्झाउँछ।"</string>
+ <string name="bluetooth_pairing_error_message" msgid="3748157733635947087">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>सँग जोडा मिलाउन सकेन"</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="8337234855188925274">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>गलत PIN वा पासकिका कारण सँग जोडा बाँध्न सक्दैन।"</string>
+ <string name="bluetooth_pairing_device_down_error_message" msgid="7870998403045801381">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> सँग कुराकानी हुन सक्दैन।"</string>
+ <string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> द्वारा जोडा बाँध्ने कार्य अस्वीकृत"</string>
+ <string name="accessibility_wifi_off" msgid="1166761729660614716">"Wi-Fi बन्द।"</string>
+ <string name="accessibility_no_wifi" msgid="8834610636137374508">"Wi-Fi जडान विच्छेद भयो।"</string>
+ <string name="accessibility_wifi_one_bar" msgid="4869376278894301820">"Wi-Fi एक पट्टि।"</string>
+ <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>
+ <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>
+ <string name="tether_settings_title_usb" msgid="6688416425801386511">"USB टेथर गर्दै"</string>
+ <string name="tether_settings_title_wifi" msgid="3277144155960302049">"पोर्टेबल हटस्पट"</string>
+ <string name="tether_settings_title_bluetooth" msgid="355855408317564420">"ब्लुटुथ टेथर गर्दै"</string>
+ <string name="tether_settings_title_usb_bluetooth" msgid="5355828977109785001">"टेदर गर्दै"</string>
+ <string name="tether_settings_title_all" msgid="8356136101061143841">"टेदर गर्ने र पोर्टेबल हटस्पट"</string>
+ <string name="managed_user_title" msgid="8101244883654409696">"कार्य प्रोफाइल"</string>
+ <string name="user_guest" msgid="8475274842845401871">"अतिथि"</string>
+ <string name="unknown" msgid="1592123443519355854">"अज्ञात"</string>
+ <string name="running_process_item_user_label" msgid="3129887865552025943">"प्रयोगकर्ता: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
+ <string name="launch_defaults_some" msgid="313159469856372621">"केही पूर्वनिर्धारितहरू सेट गरिएका छन्"</string>
+ <string name="launch_defaults_none" msgid="4241129108140034876">"कुनै पूर्वनिर्धारित सेट गरिएको छैन"</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-nl/arrays.xml b/packages/SettingsLib/res/values-nl/arrays.xml
new file mode 100644
index 0000000..ab72b67
--- /dev/null
+++ b/packages/SettingsLib/res/values-nl/arrays.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="wifi_status">
+ <item msgid="1922181315419294640"></item>
+ <item msgid="8934131797783724664">"Scannen..."</item>
+ <item msgid="8513729475867537913">"Verbinding maken..."</item>
+ <item msgid="515055375277271756">"Verifiëren..."</item>
+ <item msgid="1943354004029184381">"IP-adres ophalen…"</item>
+ <item msgid="4221763391123233270">"Verbonden"</item>
+ <item msgid="624838831631122137">"Opgeschort"</item>
+ <item msgid="7979680559596111948">"Verbinding verbreken..."</item>
+ <item msgid="1634960474403853625">"Verbinding verbroken"</item>
+ <item msgid="746097431216080650">"Mislukt"</item>
+ <item msgid="6367044185730295334">"Geblokkeerd"</item>
+ <item msgid="503942654197908005">"Slechte verbinding tijdelijk vermijden"</item>
+ </string-array>
+ <string-array name="wifi_status_with_ssid">
+ <item msgid="7714855332363650812"></item>
+ <item msgid="8878186979715711006">"Scannen..."</item>
+ <item msgid="355508996603873860">"Verbinding maken met <xliff:g id="NETWORK_NAME">%1$s</xliff:g>..."</item>
+ <item msgid="554971459996405634">"Verifiëren met <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="7928343808033020343">"IP-adres ophalen van <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="8937994881315223448">"Verbonden met <xliff:g id="NETWORK_NAME">%1$s</xliff:g>"</item>
+ <item msgid="1330262655415760617">"Opgeschort"</item>
+ <item msgid="7698638434317271902">"Verbinding verbreken met <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="197508606402264311">"Verbinding verbroken"</item>
+ <item msgid="8578370891960825148">"Mislukt"</item>
+ <item msgid="5660739516542454527">"Geblokkeerd"</item>
+ <item msgid="1805837518286731242">"Slechte verbinding tijdelijk vermijden"</item>
+ </string-array>
+</resources>
diff --git a/packages/SettingsLib/res/values-nl/strings.xml b/packages/SettingsLib/res/values-nl/strings.xml
new file mode 100644
index 0000000..cae3e92
--- /dev/null
+++ b/packages/SettingsLib/res/values-nl/strings.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="wifi_fail_to_scan" msgid="1265540342578081461">"Kan niet scannen naar netwerken"</string>
+ <string name="wifi_security_none" msgid="7985461072596594400">"Geen"</string>
+ <string name="wifi_remembered" msgid="4955746899347821096">"Opgeslagen"</string>
+ <string name="wifi_disabled_generic" msgid="4259794910584943386">"Uitgeschakeld"</string>
+ <string name="wifi_disabled_network_failure" msgid="2364951338436007124">"IP-configuratie mislukt"</string>
+ <string name="wifi_disabled_wifi_failure" msgid="3081668066612876581">"Wifi-verbinding mislukt"</string>
+ <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"Authenticatieprobleem"</string>
+ <string name="wifi_not_in_range" msgid="1136191511238508967">"Niet binnen bereik"</string>
+ <string name="wifi_no_internet" msgid="9151470775868728896">"Geen internettoegang gevonden. Er wordt niet automatisch opnieuw verbinding gemaakt."</string>
+ <string name="saved_network" msgid="4352716707126620811">"Opgeslagen door <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="connected_via_wfa" msgid="3805736726317410714">"Verbonden via wifi-assistent"</string>
+ <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>
+ <string name="bluetooth_disconnected" msgid="6557104142667339895">"Verbinding verbroken"</string>
+ <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Verbinding verbreken..."</string>
+ <string name="bluetooth_connecting" msgid="8555009514614320497">"Verbinding maken..."</string>
+ <string name="bluetooth_connected" msgid="6038755206916626419">"Verbonden"</string>
+ <string name="bluetooth_pairing" msgid="1426882272690346242">"Koppelen..."</string>
+ <string name="bluetooth_connected_no_headset" msgid="2866994875046035609">"Gekoppeld (geen telefoon)"</string>
+ <string name="bluetooth_connected_no_a2dp" msgid="4576188601581440337">"Gekoppeld (geen media)"</string>
+ <string name="bluetooth_connected_no_map" msgid="6504436917057479986">"Verbonden (geen toegang tot berichten)"</string>
+ <string name="bluetooth_connected_no_headset_no_a2dp" msgid="9195757766755553810">"Gekoppeld (geen telefoon of media)"</string>
+ <string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Media-audio"</string>
+ <string name="bluetooth_profile_headset" msgid="8658779596261212609">"Telefoonaudio"</string>
+ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"Bestandsoverdracht"</string>
+ <string name="bluetooth_profile_hid" msgid="3680729023366986480">"Invoerapparaat"</string>
+ <string name="bluetooth_profile_pan" msgid="3391606497945147673">"Internettoegang"</string>
+ <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"Contacten delen"</string>
+ <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"Gebruiken voor contacten delen"</string>
+ <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"Internetverbinding delen"</string>
+ <string name="bluetooth_profile_map" msgid="5465271250454324383">"Toegang tot berichten"</string>
+ <string name="bluetooth_profile_sap" msgid="5764222021851283125">"Sim-toegang"</string>
+ <string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"Verbonden met audio van medium"</string>
+ <string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"Verbonden met audio van telefoon"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"Verbonden met server voor bestandsoverdracht"</string>
+ <string name="bluetooth_map_profile_summary_connected" msgid="8191407438851351713">"Verbonden met kaart"</string>
+ <string name="bluetooth_sap_profile_summary_connected" msgid="8561765057453083838">"Verbonden via SAP"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"Niet verbonden met server voor bestandsoverdracht"</string>
+ <string name="bluetooth_hid_profile_summary_connected" msgid="3381760054215168689">"Verbonden met invoerapparaat"</string>
+ <string name="bluetooth_pan_user_profile_summary_connected" msgid="4602294638909590612">"Verbonden met apparaat voor internet"</string>
+ <string name="bluetooth_pan_nap_profile_summary_connected" msgid="1561383706411975199">"Lokale internetverbinding delen met apparaat"</string>
+ <string name="bluetooth_pan_profile_summary_use_for" msgid="5664884523822068653">"Gebruik voor internettoegang"</string>
+ <string name="bluetooth_map_profile_summary_use_for" msgid="5154200119919927434">"Gebruiken voor kaart"</string>
+ <string name="bluetooth_sap_profile_summary_use_for" msgid="7085362712786907993">"Gebruiken voor sim-toegang"</string>
+ <string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"Gebruiken voor audio van medium"</string>
+ <string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"Gebruiken voor audio van telefoon"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"Gebruiken voor bestandsoverdracht"</string>
+ <string name="bluetooth_hid_profile_summary_use_for" msgid="232727040453645139">"Gebruiken voor invoer"</string>
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"Koppelen"</string>
+ <string name="bluetooth_pairing_accept_all_caps" msgid="6061699265220789149">"KOPPELEN"</string>
+ <string name="bluetooth_pairing_decline" msgid="4185420413578948140">"Annuleren"</string>
+ <string name="bluetooth_pairing_will_share_phonebook" msgid="4982239145676394429">"Koppelen verleent toegang tot je contacten en oproepgeschiedenis wanneer de apparaten zijn verbonden."</string>
+ <string name="bluetooth_pairing_error_message" msgid="3748157733635947087">"Kan niet koppelen aan <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="8337234855188925274">"Kan niet koppelen aan <xliff:g id="DEVICE_NAME">%1$s</xliff:g> vanwege een onjuiste pincode of toegangscode."</string>
+ <string name="bluetooth_pairing_device_down_error_message" msgid="7870998403045801381">"Kan niet communiceren met <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"Koppeling geweigerd door <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="accessibility_wifi_off" msgid="1166761729660614716">"Wifi: uitgeschakeld."</string>
+ <string name="accessibility_no_wifi" msgid="8834610636137374508">"Wifi-verbinding verbroken."</string>
+ <string name="accessibility_wifi_one_bar" msgid="4869376278894301820">"Wifi: één streepje."</string>
+ <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>
+ <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>
+ <string name="tether_settings_title_usb" msgid="6688416425801386511">"USB-tethering"</string>
+ <string name="tether_settings_title_wifi" msgid="3277144155960302049">"Draagbare hotspot"</string>
+ <string name="tether_settings_title_bluetooth" msgid="355855408317564420">"Bluetooth-tethering"</string>
+ <string name="tether_settings_title_usb_bluetooth" msgid="5355828977109785001">"Tethering"</string>
+ <string name="tether_settings_title_all" msgid="8356136101061143841">"Tethering en draagbare hotspot"</string>
+ <string name="managed_user_title" msgid="8101244883654409696">"Werkprofiel"</string>
+ <string name="user_guest" msgid="8475274842845401871">"Gast"</string>
+ <string name="unknown" msgid="1592123443519355854">"Onbekend"</string>
+ <string name="running_process_item_user_label" msgid="3129887865552025943">"Gebruiker: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
+ <string name="launch_defaults_some" msgid="313159469856372621">"Enkele standaardwaarden ingesteld"</string>
+ <string name="launch_defaults_none" msgid="4241129108140034876">"Geen standaardwaarden ingesteld"</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-pa-rIN/arrays.xml b/packages/SettingsLib/res/values-pa-rIN/arrays.xml
new file mode 100644
index 0000000..a03f17e
--- /dev/null
+++ b/packages/SettingsLib/res/values-pa-rIN/arrays.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="wifi_status">
+ <item msgid="1922181315419294640"></item>
+ <item msgid="8934131797783724664">"ਸਕੈਨ ਕਰ ਰਿਹਾ ਹੈ..."</item>
+ <item msgid="8513729475867537913">"ਕਨੈਕਟ ਕਰ ਰਿਹਾ ਹੈ…"</item>
+ <item msgid="515055375277271756">"ਪ੍ਰਮਾਣਿਤ ਕਰ ਰਿਹਾ ਹੈ…"</item>
+ <item msgid="1943354004029184381">"IP ਪਤਾ ਪ੍ਰਾਪਤ ਕਰ ਰਿਹਾ ਹੈ..."</item>
+ <item msgid="4221763391123233270">"ਕਨੈਕਟ ਕੀਤਾ"</item>
+ <item msgid="624838831631122137">"ਮੁਅੱਤਲ ਕੀਤਾ"</item>
+ <item msgid="7979680559596111948">"ਡਿਸਕਨੈਕਟ ਕਰ ਰਿਹਾ ਹੈ..."</item>
+ <item msgid="1634960474403853625">"ਡਿਸਕਨੈਕਟ ਕੀਤਾ"</item>
+ <item msgid="746097431216080650">"ਅਸਫਲ"</item>
+ <item msgid="6367044185730295334">"ਬਲੌਕ ਕੀਤਾ"</item>
+ <item msgid="503942654197908005">"ਅਸਥਾਈ ਤੌਰ ਤੇ ਖ਼ਰਾਬ ਕਨੈਕਸ਼ਨ ਤੋਂ ਬਚਣ ਲਈ"</item>
+ </string-array>
+ <string-array name="wifi_status_with_ssid">
+ <item msgid="7714855332363650812"></item>
+ <item msgid="8878186979715711006">"ਸਕੈਨ ਕਰ ਰਿਹਾ ਹੈ..."</item>
+ <item msgid="355508996603873860">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> ਨਾਲ ਕਨੈਕਟ ਕਰ ਰਿਹਾ ਹੈ…"</item>
+ <item msgid="554971459996405634">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> ਨਾਲ ਪ੍ਰਮਾਣਿਤ ਕਰ ਰਿਹਾ ਹੈ…"</item>
+ <item msgid="7928343808033020343">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> ਤੋਂ IP ਪਤਾ ਪ੍ਰਾਪਤ ਕਰ ਰਿਹਾ ਹੈ…"</item>
+ <item msgid="8937994881315223448">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> ਨਾਲ ਕਨੈਕਟ ਕੀਤਾ"</item>
+ <item msgid="1330262655415760617">"ਮੁਅੱਤਲ ਕੀਤਾ"</item>
+ <item msgid="7698638434317271902">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> ਤੋਂ ਡਿਸਕਨੈਕਟ ਕਰ ਰਿਹਾ ਹੈ…"</item>
+ <item msgid="197508606402264311">"ਡਿਸਕਨੈਕਟ ਕੀਤਾ"</item>
+ <item msgid="8578370891960825148">"ਅਸਫਲ"</item>
+ <item msgid="5660739516542454527">"ਬਲੌਕ ਕੀਤਾ"</item>
+ <item msgid="1805837518286731242">"ਅਸਥਾਈ ਤੌਰ ਤੇ ਖ਼ਰਾਬ ਕਨੈਕਸ਼ਨ ਤੋਂ ਬਚਣ ਲਈ"</item>
+ </string-array>
+</resources>
diff --git a/packages/SettingsLib/res/values-pa-rIN/strings.xml b/packages/SettingsLib/res/values-pa-rIN/strings.xml
new file mode 100644
index 0000000..b319663
--- /dev/null
+++ b/packages/SettingsLib/res/values-pa-rIN/strings.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="wifi_fail_to_scan" msgid="1265540342578081461">"ਨੈਟਵਰਕਾਂ ਲਈ ਸਕੈਨ ਨਹੀਂ ਕਰ ਸਕਦਾ"</string>
+ <string name="wifi_security_none" msgid="7985461072596594400">"ਕੋਈ ਨਹੀਂ"</string>
+ <string name="wifi_remembered" msgid="4955746899347821096">"ਸੁਰੱਖਿਅਤ ਕੀਤਾ"</string>
+ <string name="wifi_disabled_generic" msgid="4259794910584943386">"ਅਸਮਰੱਥ ਬਣਾਇਆ"</string>
+ <string name="wifi_disabled_network_failure" msgid="2364951338436007124">"IP ਕੌਂਫਿਗਰੇਸ਼ਨ ਅਸਫਲਤਾ"</string>
+ <string name="wifi_disabled_wifi_failure" msgid="3081668066612876581">"WiFi ਕਨੈਕਸ਼ਨ ਅਸਫਲਤਾ"</string>
+ <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"ਪ੍ਰਮਾਣੀਕਰਨ ਸਮੱਸਿਆ"</string>
+ <string name="wifi_not_in_range" msgid="1136191511238508967">"ਰੇਂਜ ਵਿੱਚ ਨਹੀਂ ਹੈ"</string>
+ <string name="wifi_no_internet" msgid="9151470775868728896">"ਕੋਈ ਇੰਟਰਨੈਟ ਪਹੁੰਚ ਨਹੀਂ ਮਿਲੀ, ਆਟੋਮੈਟਿਕਲੀ ਰੀਕਨੈਕਟ ਨਹੀਂ ਕੀਤਾ ਜਾਏਗਾ।"</string>
+ <string name="saved_network" msgid="4352716707126620811">"<xliff:g id="NAME">%1$s</xliff:g> ਵੱਲੋਂ ਸੁਰੱਖਿਅਤ ਕੀਤਾ"</string>
+ <string name="connected_via_wfa" msgid="3805736726317410714">"Wi‑Fi ਸਹਾਇਕ ਰਾਹੀਂ ਕਨੈਕਟ ਕੀਤਾ"</string>
+ <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>
+ <string name="bluetooth_disconnected" msgid="6557104142667339895">"ਡਿਸਕਨੈਕਟ ਕੀਤਾ"</string>
+ <string name="bluetooth_disconnecting" msgid="8913264760027764974">"ਡਿਸਕਨੈਕਟ ਕਰ ਰਿਹਾ ਹੈ..."</string>
+ <string name="bluetooth_connecting" msgid="8555009514614320497">"ਕਨੈਕਟ ਕਰ ਰਿਹਾ ਹੈ…"</string>
+ <string name="bluetooth_connected" msgid="6038755206916626419">"ਕਨੈਕਟ ਕੀਤਾ"</string>
+ <string name="bluetooth_pairing" msgid="1426882272690346242">"ਪੇਅਰ ਕਰ ਰਿਹਾ ਹੈ…"</string>
+ <string name="bluetooth_connected_no_headset" msgid="2866994875046035609">"ਕਨੈਕਟ ਕੀਤਾ (ਕੋਈ ਫੋਨ ਨਹੀਂ)"</string>
+ <string name="bluetooth_connected_no_a2dp" msgid="4576188601581440337">"ਕਨੈਕਟ ਕੀਤਾ (ਕੋਈ ਮੀਡੀਆ ਨਹੀਂ)"</string>
+ <string name="bluetooth_connected_no_map" msgid="6504436917057479986">"ਕਨੈਕਟ ਕੀਤਾ (ਕੋਈ ਸੁਨੇਹਾ ਪਹੁੰਚ ਨਹੀਂ)"</string>
+ <string name="bluetooth_connected_no_headset_no_a2dp" msgid="9195757766755553810">"ਕਨੈਕਟ ਕੀਤਾ (ਕੋਈ ਫੋਨ ਜਾਂ ਮੀਡੀਆ ਨਹੀਂ)"</string>
+ <string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"ਮੀਡੀਆ ਔਡੀਓ"</string>
+ <string name="bluetooth_profile_headset" msgid="8658779596261212609">"ਫੋਨ ਔਡੀਓ"</string>
+ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"ਫਾਈਲ ਟ੍ਰਾਂਸਫਰ"</string>
+ <string name="bluetooth_profile_hid" msgid="3680729023366986480">"ਇਨਪੁਟ ਡਿਵਾਈਸ"</string>
+ <string name="bluetooth_profile_pan" msgid="3391606497945147673">"ਇੰਟਰਨੈਟ ਪਹੁੰਚ"</string>
+ <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"ਸੰਪਰਕ ਸ਼ੇਅਰਿੰਗ"</string>
+ <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"ਸੰਪਰਕ ਸ਼ੇਅਰਿੰਗ ਲਈ ਵਰਤੋ"</string>
+ <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"ਇੰਟਰਨੈਟ ਕਨੈਕਸ਼ਨ ਸ਼ੇਅਰਿੰਗ"</string>
+ <string name="bluetooth_profile_map" msgid="5465271250454324383">"ਸੁਨੇਹਾ ਪਹੁੰਚ"</string>
+ <string name="bluetooth_profile_sap" msgid="5764222021851283125">"SIM ਪਹੁੰਚ"</string>
+ <string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"ਮੀਡੀਆ ਔਡੀਓ ਨਾਲ ਕਨੈਕਟ ਕੀਤਾ"</string>
+ <string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"ਫੋਨ ਔਡੀਓ ਨਾਲ ਕਨੈਕਟ ਕੀਤਾ"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"ਫਾਈਲ ਟ੍ਰਾਂਸਫਰ ਸਰਵਰ ਨਾਲ ਕਨੈਕਟ ਕੀਤਾ"</string>
+ <string name="bluetooth_map_profile_summary_connected" msgid="8191407438851351713">"ਨਕਸ਼ੇ ਨਾਲ ਕਨੈਕਟ ਕੀਤਾ"</string>
+ <string name="bluetooth_sap_profile_summary_connected" msgid="8561765057453083838">"SAP ਨਾਲ ਕਨੈਕਟ ਕੀਤਾ"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"ਫਾਈਲ ਟ੍ਰਾਂਸਫਰ ਸਰਵਰ ਨਾਲ ਕਨੈਕਟ ਨਹੀਂ ਕੀਤਾ"</string>
+ <string name="bluetooth_hid_profile_summary_connected" msgid="3381760054215168689">"ਇਨਪੁਟ ਡਿਵਾਈਸ ਨਾਲ ਕਨੈਕਟ ਕੀਤਾ"</string>
+ <string name="bluetooth_pan_user_profile_summary_connected" msgid="4602294638909590612">"ਇੰਟਰਨੈਟ ਪਹੁੰਚ ਲਈ ਡਿਵਾਈਸ ਨਾਲ ਕਨੈਕਟ ਕੀਤਾ"</string>
+ <string name="bluetooth_pan_nap_profile_summary_connected" msgid="1561383706411975199">"ਡਿਵਾਈਸ ਨਾਲ ਸਥਾਨਕ ਇੰਟਰਨੈਟ ਕਨੈਕਸ਼ਨ ਸ਼ੇਅਰ ਕਰ ਰਿਹਾ ਹੈ"</string>
+ <string name="bluetooth_pan_profile_summary_use_for" msgid="5664884523822068653">"ਇੰਟਰਨੈਟ ਪਹੁੰਚ ਲਈ ਵਰਤੋ"</string>
+ <string name="bluetooth_map_profile_summary_use_for" msgid="5154200119919927434">"ਨਕਸ਼ੇ ਲਈ ਵਰਤੋ"</string>
+ <string name="bluetooth_sap_profile_summary_use_for" msgid="7085362712786907993">"SIM ਪਹੁੰਚ ਲਈ ਵਰਤੋ"</string>
+ <string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"ਮੀਡੀਆ ਔਡੀਓ ਲਈ ਵਰਤੋ"</string>
+ <string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"ਫੋਨ ਔਡੀਓ ਲਈ ਵਰਤੋ"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"ਫਾਈਲ ਟ੍ਰਾਂਸਫਰ ਲਈ ਵਰਤੋ"</string>
+ <string name="bluetooth_hid_profile_summary_use_for" msgid="232727040453645139">"ਇਨਪੁਟ ਲਈ ਵਰਤੋ"</string>
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"ਪੇਅਰ ਕਰੋ"</string>
+ <string name="bluetooth_pairing_accept_all_caps" msgid="6061699265220789149">"ਪੇਅਰ ਕਰੋ"</string>
+ <string name="bluetooth_pairing_decline" msgid="4185420413578948140">"ਰੱਦ ਕਰੋ"</string>
+ <string name="bluetooth_pairing_will_share_phonebook" msgid="4982239145676394429">"ਪੇਅਰ ਕਰਨਾ ਕਨੈਕਟ ਕੀਤੇ ਜਾਣ ਤੇ ਤੁਹਾਡੇ ਸੰਪਰਕਾਂ ਅਤੇ ਕਾਲ ਇਤਿਹਾਸ ਤੱਕ ਪਹੁੰਚ ਦੀ ਅਨੁਮਤੀ ਦਿੰਦਾ ਹੈ।"</string>
+ <string name="bluetooth_pairing_error_message" msgid="3748157733635947087">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> ਨਾਲ ਪੇਅਰ ਨਹੀਂ ਕਰ ਸਕਿਆ।"</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="8337234855188925274">"ਇੱਕ ਗ਼ਲਤ PIN ਜਾਂ ਪਾਸਕੁੰਜੀ ਦੇ ਕਾਰਨ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ਨਾਲ ਪੇਅਰ ਨਹੀਂ ਕਰ ਸਕਿਆ।"</string>
+ <string name="bluetooth_pairing_device_down_error_message" msgid="7870998403045801381">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> ਨਾਲ ਸੰਚਾਰ ਨਹੀਂ ਕਰ ਸਕਦਾ।"</string>
+ <string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"ਪੇਅਰਿੰਗ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ਵੱਲੋਂ ਰੱਦ ਕੀਤੀ ਗਈ।"</string>
+ <string name="accessibility_wifi_off" msgid="1166761729660614716">"Wifi ਬੰਦ।"</string>
+ <string name="accessibility_no_wifi" msgid="8834610636137374508">"Wifi ਡਿਸਕਨੈਕਟ ਕੀਤਾ।"</string>
+ <string name="accessibility_wifi_one_bar" msgid="4869376278894301820">"Wifi ਇੱਕ ਬਾਰ।"</string>
+ <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>
+ <string name="process_kernel_label" msgid="3916858646836739323">"Android OS"</string>
+ <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"ਹਟਾਏ ਗਏ ਐਪਸ"</string>
+ <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"ਹਟਾਏ ਗਏ ਐਪਸ ਅਤੇ ਉਪਭੋਗਤਾ"</string>
+ <string name="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_usb_bluetooth" msgid="5355828977109785001">"ਟੀਥਰਿੰਗ"</string>
+ <string name="tether_settings_title_all" msgid="8356136101061143841">"ਟੀਥਰਿੰਗ & ਪੋਰਟੇਬਲ ਹੌਟਸਪੌਟ"</string>
+ <string name="managed_user_title" msgid="8101244883654409696">"ਕੰਮ ਪ੍ਰੋਫਾਈਲ"</string>
+ <string name="user_guest" msgid="8475274842845401871">"ਮਹਿਮਾਨ"</string>
+ <string name="unknown" msgid="1592123443519355854">"ਅਗਿਆਤ"</string>
+ <string name="running_process_item_user_label" msgid="3129887865552025943">"ਉਪਭੋਗਤਾ: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
+ <string name="launch_defaults_some" msgid="313159469856372621">"ਕੁਝ ਡਿਫੌਲਟਸ ਸੈਟ ਕੀਤੇ"</string>
+ <string name="launch_defaults_none" msgid="4241129108140034876">"ਕੋਈ ਡਿਫੌਲਟਸ ਸੈਟ ਨਹੀਂ ਕੀਤੇ"</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-pl/arrays.xml b/packages/SettingsLib/res/values-pl/arrays.xml
new file mode 100644
index 0000000..d2cbe24
--- /dev/null
+++ b/packages/SettingsLib/res/values-pl/arrays.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="wifi_status">
+ <item msgid="1922181315419294640"></item>
+ <item msgid="8934131797783724664">"Trwa skanowanie..."</item>
+ <item msgid="8513729475867537913">"Trwa łączenie..."</item>
+ <item msgid="515055375277271756">"Trwa uwierzytelnianie..."</item>
+ <item msgid="1943354004029184381">"Uzyskiwanie adresu IP..."</item>
+ <item msgid="4221763391123233270">"Połączono"</item>
+ <item msgid="624838831631122137">"Zawieszona"</item>
+ <item msgid="7979680559596111948">"Trwa rozłączanie..."</item>
+ <item msgid="1634960474403853625">"Rozłączona"</item>
+ <item msgid="746097431216080650">"Niepowodzenie"</item>
+ <item msgid="6367044185730295334">"Zablokowana"</item>
+ <item msgid="503942654197908005">"Tymczasowo, by uniknąć połączenia o niskiej jakości"</item>
+ </string-array>
+ <string-array name="wifi_status_with_ssid">
+ <item msgid="7714855332363650812"></item>
+ <item msgid="8878186979715711006">"Trwa skanowanie..."</item>
+ <item msgid="355508996603873860">"Trwa łączenie z siecią <xliff:g id="NETWORK_NAME">%1$s</xliff:g>..."</item>
+ <item msgid="554971459996405634">"Trwa uwierzytelnianie w sieci <xliff:g id="NETWORK_NAME">%1$s</xliff:g>..."</item>
+ <item msgid="7928343808033020343">"Uzyskiwanie adresu IP z sieci <xliff:g id="NETWORK_NAME">%1$s</xliff:g>..."</item>
+ <item msgid="8937994881315223448">"Połączono z siecią <xliff:g id="NETWORK_NAME">%1$s</xliff:g>"</item>
+ <item msgid="1330262655415760617">"Zawieszona"</item>
+ <item msgid="7698638434317271902">"Trwa rozłączanie z siecią <xliff:g id="NETWORK_NAME">%1$s</xliff:g>..."</item>
+ <item msgid="197508606402264311">"Rozłączona"</item>
+ <item msgid="8578370891960825148">"Niepowodzenie"</item>
+ <item msgid="5660739516542454527">"Zablokowana"</item>
+ <item msgid="1805837518286731242">"Tymczasowo, by uniknąć połączenia o niskiej jakości"</item>
+ </string-array>
+</resources>
diff --git a/packages/SettingsLib/res/values-pl/strings.xml b/packages/SettingsLib/res/values-pl/strings.xml
new file mode 100644
index 0000000..7858201
--- /dev/null
+++ b/packages/SettingsLib/res/values-pl/strings.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="wifi_fail_to_scan" msgid="1265540342578081461">"Nie można wyszukać sieci."</string>
+ <string name="wifi_security_none" msgid="7985461072596594400">"Brak"</string>
+ <string name="wifi_remembered" msgid="4955746899347821096">"Zapisana"</string>
+ <string name="wifi_disabled_generic" msgid="4259794910584943386">"Wyłączona"</string>
+ <string name="wifi_disabled_network_failure" msgid="2364951338436007124">"Błąd konfiguracji IP"</string>
+ <string name="wifi_disabled_wifi_failure" msgid="3081668066612876581">"Błąd połączenia Wi-Fi"</string>
+ <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"Problem z uwierzytelnianiem"</string>
+ <string name="wifi_not_in_range" msgid="1136191511238508967">"Poza zasięgiem"</string>
+ <string name="wifi_no_internet" msgid="9151470775868728896">"Nie wykryto dostępu do internetu. Nie można automatycznie przywrócić połączenia."</string>
+ <string name="saved_network" msgid="4352716707126620811">"Zapisane przez: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="connected_via_wfa" msgid="3805736726317410714">"Połączono przez Asystenta Wi‑Fi"</string>
+ <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>
+ <string name="bluetooth_disconnected" msgid="6557104142667339895">"Rozłączona"</string>
+ <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Rozłączanie..."</string>
+ <string name="bluetooth_connecting" msgid="8555009514614320497">"Łączenie..."</string>
+ <string name="bluetooth_connected" msgid="6038755206916626419">"Połączony"</string>
+ <string name="bluetooth_pairing" msgid="1426882272690346242">"Parowanie..."</string>
+ <string name="bluetooth_connected_no_headset" msgid="2866994875046035609">"Połączono (bez telefonu)"</string>
+ <string name="bluetooth_connected_no_a2dp" msgid="4576188601581440337">"Połączono (bez multimediów)"</string>
+ <string name="bluetooth_connected_no_map" msgid="6504436917057479986">"Połączono (brak dostępu do wiadomości)"</string>
+ <string name="bluetooth_connected_no_headset_no_a2dp" msgid="9195757766755553810">"Połączono (bez telefonu ani multimediów)"</string>
+ <string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Dźwięk multimediów"</string>
+ <string name="bluetooth_profile_headset" msgid="8658779596261212609">"Dźwięk telefonu"</string>
+ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"Przesyłanie pliku"</string>
+ <string name="bluetooth_profile_hid" msgid="3680729023366986480">"Urządzenie wejściowe"</string>
+ <string name="bluetooth_profile_pan" msgid="3391606497945147673">"Dostęp do internetu"</string>
+ <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"Udostępnianie kontaktów"</string>
+ <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"Używaj do udostępniania kontaktów"</string>
+ <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"Udostępnianie połączenia internetowego"</string>
+ <string name="bluetooth_profile_map" msgid="5465271250454324383">"Dostęp do wiadomości"</string>
+ <string name="bluetooth_profile_sap" msgid="5764222021851283125">"Dostęp do karty SIM"</string>
+ <string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"Połączono z funkcją audio multimediów"</string>
+ <string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"Połączono z funkcją audio telefonu"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"Połączono z serwerem transferu plików"</string>
+ <string name="bluetooth_map_profile_summary_connected" msgid="8191407438851351713">"Połączono z mapą"</string>
+ <string name="bluetooth_sap_profile_summary_connected" msgid="8561765057453083838">"Połączono z PDU"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"Brak połączenia z serwerem transferu plików"</string>
+ <string name="bluetooth_hid_profile_summary_connected" msgid="3381760054215168689">"Podłączono do urządzenia wejściowego"</string>
+ <string name="bluetooth_pan_user_profile_summary_connected" msgid="4602294638909590612">"Połączone w celu dostępu do internetu"</string>
+ <string name="bluetooth_pan_nap_profile_summary_connected" msgid="1561383706411975199">"Udostępnianie połączenia internetowego"</string>
+ <string name="bluetooth_pan_profile_summary_use_for" msgid="5664884523822068653">"Użyj na potrzeby dostępu do internetu"</string>
+ <string name="bluetooth_map_profile_summary_use_for" msgid="5154200119919927434">"Używaj dla mapy"</string>
+ <string name="bluetooth_sap_profile_summary_use_for" msgid="7085362712786907993">"Używaj, by uzyskać dostęp do karty SIM"</string>
+ <string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"Użyj dla funkcji audio multimediów"</string>
+ <string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"Użyj dla funkcji audio telefonu"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"Użyj do transferu plików"</string>
+ <string name="bluetooth_hid_profile_summary_use_for" msgid="232727040453645139">"Użyj do wprowadzania"</string>
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"Sparuj"</string>
+ <string name="bluetooth_pairing_accept_all_caps" msgid="6061699265220789149">"SPARUJ"</string>
+ <string name="bluetooth_pairing_decline" msgid="4185420413578948140">"Anuluj"</string>
+ <string name="bluetooth_pairing_will_share_phonebook" msgid="4982239145676394429">"Parowanie spowoduje przyznanie dostępu do historii połączeń i Twoich kontaktów w trakcie połączenia."</string>
+ <string name="bluetooth_pairing_error_message" msgid="3748157733635947087">"Nie można sparować z urządzeniem <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="8337234855188925274">"Nie można sparować z urządzeniem <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ze względu na błędny kod PIN lub klucz."</string>
+ <string name="bluetooth_pairing_device_down_error_message" msgid="7870998403045801381">"Nie można skomunikować się z urządzeniem <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"Powiązanie odrzucone przez urządzenie <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="accessibility_wifi_off" msgid="1166761729660614716">"Wi-Fi wyłączone."</string>
+ <string name="accessibility_no_wifi" msgid="8834610636137374508">"Wi-Fi odłączone."</string>
+ <string name="accessibility_wifi_one_bar" msgid="4869376278894301820">"Wi-Fi: jeden pasek."</string>
+ <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>
+ <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>
+ <string name="tether_settings_title_usb" msgid="6688416425801386511">"Tethering przez USB"</string>
+ <string name="tether_settings_title_wifi" msgid="3277144155960302049">"Przenośny punkt dostępu"</string>
+ <string name="tether_settings_title_bluetooth" msgid="355855408317564420">"Tethering przez Bluetooth"</string>
+ <string name="tether_settings_title_usb_bluetooth" msgid="5355828977109785001">"Tethering"</string>
+ <string name="tether_settings_title_all" msgid="8356136101061143841">"Tethering i punkt dostępu"</string>
+ <string name="managed_user_title" msgid="8101244883654409696">"Profil do pracy"</string>
+ <string name="user_guest" msgid="8475274842845401871">"Gość"</string>
+ <string name="unknown" msgid="1592123443519355854">"Nieznana"</string>
+ <string name="running_process_item_user_label" msgid="3129887865552025943">"Użytkownik: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
+ <string name="launch_defaults_some" msgid="313159469856372621">"Część ustawień domyślnych"</string>
+ <string name="launch_defaults_none" msgid="4241129108140034876">"Brak ustawień domyślnych"</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-pt-rBR/arrays.xml b/packages/SettingsLib/res/values-pt-rBR/arrays.xml
new file mode 100644
index 0000000..cea70da
--- /dev/null
+++ b/packages/SettingsLib/res/values-pt-rBR/arrays.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="wifi_status">
+ <item msgid="1922181315419294640"></item>
+ <item msgid="8934131797783724664">"Procurando…"</item>
+ <item msgid="8513729475867537913">"Conectando..."</item>
+ <item msgid="515055375277271756">"Autenticando..."</item>
+ <item msgid="1943354004029184381">"Obtendo endereço IP…"</item>
+ <item msgid="4221763391123233270">"Conectado"</item>
+ <item msgid="624838831631122137">"Suspenso"</item>
+ <item msgid="7979680559596111948">"Desconectando…"</item>
+ <item msgid="1634960474403853625">"Desconectado"</item>
+ <item msgid="746097431216080650">"Falha"</item>
+ <item msgid="6367044185730295334">"Bloqueado"</item>
+ <item msgid="503942654197908005">"Temporariamente evitando uma conexão ruim"</item>
+ </string-array>
+ <string-array name="wifi_status_with_ssid">
+ <item msgid="7714855332363650812"></item>
+ <item msgid="8878186979715711006">"Procurando…"</item>
+ <item msgid="355508996603873860">"Conectando-se a <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="554971459996405634">"Autenticando com a <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="7928343808033020343">"Obtendo endereço IP da <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="8937994881315223448">"Conectado a <xliff:g id="NETWORK_NAME">%1$s</xliff:g>"</item>
+ <item msgid="1330262655415760617">"Suspenso"</item>
+ <item msgid="7698638434317271902">"Desconectando da <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="197508606402264311">"Desconectado"</item>
+ <item msgid="8578370891960825148">"Falha"</item>
+ <item msgid="5660739516542454527">"Bloqueado"</item>
+ <item msgid="1805837518286731242">"Temporariamente evitando uma conexão ruim"</item>
+ </string-array>
+</resources>
diff --git a/packages/SettingsLib/res/values-pt-rBR/strings.xml b/packages/SettingsLib/res/values-pt-rBR/strings.xml
new file mode 100644
index 0000000..93c4d10
--- /dev/null
+++ b/packages/SettingsLib/res/values-pt-rBR/strings.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="wifi_fail_to_scan" msgid="1265540342578081461">"Não é possível verificar a existência de redes"</string>
+ <string name="wifi_security_none" msgid="7985461072596594400">"Nenhuma"</string>
+ <string name="wifi_remembered" msgid="4955746899347821096">"Salva"</string>
+ <string name="wifi_disabled_generic" msgid="4259794910584943386">"Desativado"</string>
+ <string name="wifi_disabled_network_failure" msgid="2364951338436007124">"Falha de configuração de IP"</string>
+ <string name="wifi_disabled_wifi_failure" msgid="3081668066612876581">"Falha de conexão Wi-Fi"</string>
+ <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"Problema de autenticação"</string>
+ <string name="wifi_not_in_range" msgid="1136191511238508967">"Fora do alcance"</string>
+ <string name="wifi_no_internet" msgid="9151470775868728896">"Nenhum acesso à Internet detectado. O dispositivo não conectará automaticamente."</string>
+ <string name="saved_network" msgid="4352716707126620811">"Salvas por <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="connected_via_wfa" msgid="3805736726317410714">"Conectado via assistente de Wi‑Fi"</string>
+ <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>
+ <string name="bluetooth_disconnected" msgid="6557104142667339895">"Desconectado"</string>
+ <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Desconectando…"</string>
+ <string name="bluetooth_connecting" msgid="8555009514614320497">"Conectando..."</string>
+ <string name="bluetooth_connected" msgid="6038755206916626419">"Conectado"</string>
+ <string name="bluetooth_pairing" msgid="1426882272690346242">"Pareando…"</string>
+ <string name="bluetooth_connected_no_headset" msgid="2866994875046035609">"Conectado (sem telefone)"</string>
+ <string name="bluetooth_connected_no_a2dp" msgid="4576188601581440337">"Conectado (sem mídia)"</string>
+ <string name="bluetooth_connected_no_map" msgid="6504436917057479986">"Conectado (sem acesso a mensagens)"</string>
+ <string name="bluetooth_connected_no_headset_no_a2dp" msgid="9195757766755553810">"Conectado (sem telefone ou mídia)"</string>
+ <string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Áudio da mídia"</string>
+ <string name="bluetooth_profile_headset" msgid="8658779596261212609">"Áudio do telefone"</string>
+ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"Transferência de arquivo"</string>
+ <string name="bluetooth_profile_hid" msgid="3680729023366986480">"Dispositivo de entrada"</string>
+ <string name="bluetooth_profile_pan" msgid="3391606497945147673">"Acesso à Internet"</string>
+ <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"Compartilhamento de contatos"</string>
+ <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"Usar para compartilhamento de contatos"</string>
+ <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"Compartilhamento de conexão à Internet"</string>
+ <string name="bluetooth_profile_map" msgid="5465271250454324383">"Acesso a mensagens"</string>
+ <string name="bluetooth_profile_sap" msgid="5764222021851283125">"Acesso SIM"</string>
+ <string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"Conectado ao áudio da mídia"</string>
+ <string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"Conectado ao áudio do telefone"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"Conectado ao servidor de transferência de arquivo"</string>
+ <string name="bluetooth_map_profile_summary_connected" msgid="8191407438851351713">"Conectado ao mapa"</string>
+ <string name="bluetooth_sap_profile_summary_connected" msgid="8561765057453083838">"Conectado a SAP"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"Não está conectado ao servidor de transferência de arquivo"</string>
+ <string name="bluetooth_hid_profile_summary_connected" msgid="3381760054215168689">"Conectado ao dispositivo de entrada"</string>
+ <string name="bluetooth_pan_user_profile_summary_connected" msgid="4602294638909590612">"Conectado ao dispositivo para acesso à Internet"</string>
+ <string name="bluetooth_pan_nap_profile_summary_connected" msgid="1561383706411975199">"Compart. conexão local de Intern. com disp."</string>
+ <string name="bluetooth_pan_profile_summary_use_for" msgid="5664884523822068653">"Usar para acesso à Internet"</string>
+ <string name="bluetooth_map_profile_summary_use_for" msgid="5154200119919927434">"Usar para mapa"</string>
+ <string name="bluetooth_sap_profile_summary_use_for" msgid="7085362712786907993">"Use para acesso SIM"</string>
+ <string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"Usar para áudio de mídia"</string>
+ <string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"Usar para áudio do telefone"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"Usado para transferência de arquivo"</string>
+ <string name="bluetooth_hid_profile_summary_use_for" msgid="232727040453645139">"Usar para entrada"</string>
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"Parear"</string>
+ <string name="bluetooth_pairing_accept_all_caps" msgid="6061699265220789149">"PAREAR"</string>
+ <string name="bluetooth_pairing_decline" msgid="4185420413578948140">"Cancelar"</string>
+ <string name="bluetooth_pairing_will_share_phonebook" msgid="4982239145676394429">"O pareamento dá acesso a seus contatos e ao histórico de chamadas quando estiver conectado."</string>
+ <string name="bluetooth_pairing_error_message" msgid="3748157733635947087">"Não foi possível parear com <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="8337234855188925274">"Não foi possível parear com <xliff:g id="DEVICE_NAME">%1$s</xliff:g> por causa de um PIN ou senha incorretos."</string>
+ <string name="bluetooth_pairing_device_down_error_message" msgid="7870998403045801381">"Não é possível se comunicar com <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"Emparelhamento rejeitado por <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="accessibility_wifi_off" msgid="1166761729660614716">"Wi-Fi desligado."</string>
+ <string name="accessibility_no_wifi" msgid="8834610636137374508">"Wi-Fi desconectado"</string>
+ <string name="accessibility_wifi_one_bar" msgid="4869376278894301820">"Uma barra de Wi-Fi."</string>
+ <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>
+ <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>
+ <string name="tether_settings_title_usb" msgid="6688416425801386511">"Tethering USB"</string>
+ <string name="tether_settings_title_wifi" msgid="3277144155960302049">"Ponto de acesso portátil"</string>
+ <string name="tether_settings_title_bluetooth" msgid="355855408317564420">"Tethering Bluetooth"</string>
+ <string name="tether_settings_title_usb_bluetooth" msgid="5355828977109785001">"Tethering"</string>
+ <string name="tether_settings_title_all" msgid="8356136101061143841">"Tethering e acesso portátil"</string>
+ <string name="managed_user_title" msgid="8101244883654409696">"Perfil de trabalho"</string>
+ <string name="user_guest" msgid="8475274842845401871">"Convidado"</string>
+ <string name="unknown" msgid="1592123443519355854">"Desconhecido"</string>
+ <string name="running_process_item_user_label" msgid="3129887865552025943">"Usuário: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
+ <string name="launch_defaults_some" msgid="313159469856372621">"Alguns padrões definidos"</string>
+ <string name="launch_defaults_none" msgid="4241129108140034876">"Nenhum padrão definido"</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-pt-rPT/arrays.xml b/packages/SettingsLib/res/values-pt-rPT/arrays.xml
new file mode 100644
index 0000000..37bd52a
--- /dev/null
+++ b/packages/SettingsLib/res/values-pt-rPT/arrays.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="wifi_status">
+ <item msgid="1922181315419294640"></item>
+ <item msgid="8934131797783724664">"A procurar..."</item>
+ <item msgid="8513729475867537913">"A ligar..."</item>
+ <item msgid="515055375277271756">"A autenticar..."</item>
+ <item msgid="1943354004029184381">"A obter endereço IP..."</item>
+ <item msgid="4221763391123233270">"Ligado"</item>
+ <item msgid="624838831631122137">"Suspenso"</item>
+ <item msgid="7979680559596111948">"A desligar..."</item>
+ <item msgid="1634960474403853625">"Desligado"</item>
+ <item msgid="746097431216080650">"Sem sucesso"</item>
+ <item msgid="6367044185730295334">"Bloqueado"</item>
+ <item msgid="503942654197908005">"A evitar temporariamente uma ligação fraca"</item>
+ </string-array>
+ <string-array name="wifi_status_with_ssid">
+ <item msgid="7714855332363650812"></item>
+ <item msgid="8878186979715711006">"A procurar..."</item>
+ <item msgid="355508996603873860">"A ligar a <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="554971459996405634">"A autenticar com <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="7928343808033020343">"A obter endereço IP de <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="8937994881315223448">"Ligado a <xliff:g id="NETWORK_NAME">%1$s</xliff:g>"</item>
+ <item msgid="1330262655415760617">"Suspenso"</item>
+ <item msgid="7698638434317271902">"A desligar de <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="197508606402264311">"Desligado"</item>
+ <item msgid="8578370891960825148">"Sem sucesso"</item>
+ <item msgid="5660739516542454527">"Bloqueado"</item>
+ <item msgid="1805837518286731242">"A evitar temporariamente uma ligação fraca"</item>
+ </string-array>
+</resources>
diff --git a/packages/SettingsLib/res/values-pt-rPT/strings.xml b/packages/SettingsLib/res/values-pt-rPT/strings.xml
new file mode 100644
index 0000000..e947352
--- /dev/null
+++ b/packages/SettingsLib/res/values-pt-rPT/strings.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="wifi_fail_to_scan" msgid="1265540342578081461">"Não é possível verificar redes"</string>
+ <string name="wifi_security_none" msgid="7985461072596594400">"Nenhuma"</string>
+ <string name="wifi_remembered" msgid="4955746899347821096">"Guardada"</string>
+ <string name="wifi_disabled_generic" msgid="4259794910584943386">"Desativado"</string>
+ <string name="wifi_disabled_network_failure" msgid="2364951338436007124">"Falha de configuração de IP"</string>
+ <string name="wifi_disabled_wifi_failure" msgid="3081668066612876581">"Falha de ligação Wi-Fi"</string>
+ <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"Problema de autenticação"</string>
+ <string name="wifi_not_in_range" msgid="1136191511238508967">"Fora do alcance"</string>
+ <string name="wifi_no_internet" msgid="9151470775868728896">"Nenhum acesso à Internet detetado; não será efetuada uma nova ligação automaticamente."</string>
+ <string name="saved_network" msgid="4352716707126620811">"Guardada por <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="connected_via_wfa" msgid="3805736726317410714">"Ligado através do Assistente de Wi‑Fi"</string>
+ <string name="connected_via_passpoint" msgid="2826205693803088747">"Ligado através de %1$s"</string>
+ <string name="available_via_passpoint" msgid="1617440946846329613">"Disponível através de %1$s"</string>
+ <string name="wifi_connected_no_internet" msgid="3149853966840874992">"Ligado, sem Internet"</string>
+ <string name="bluetooth_disconnected" msgid="6557104142667339895">"Desligado"</string>
+ <string name="bluetooth_disconnecting" msgid="8913264760027764974">"A desligar..."</string>
+ <string name="bluetooth_connecting" msgid="8555009514614320497">"A ligar..."</string>
+ <string name="bluetooth_connected" msgid="6038755206916626419">"Ligado"</string>
+ <string name="bluetooth_pairing" msgid="1426882272690346242">"A emparelhar..."</string>
+ <string name="bluetooth_connected_no_headset" msgid="2866994875046035609">"Ligado (sem telefone)"</string>
+ <string name="bluetooth_connected_no_a2dp" msgid="4576188601581440337">"Ligado (sem multimédia)"</string>
+ <string name="bluetooth_connected_no_map" msgid="6504436917057479986">"Ligado (sem acesso a mensagens)"</string>
+ <string name="bluetooth_connected_no_headset_no_a2dp" msgid="9195757766755553810">"Ligado (sem telefone ou multimédia)"</string>
+ <string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Áudio de multimédia"</string>
+ <string name="bluetooth_profile_headset" msgid="8658779596261212609">"Áudio do telemóvel"</string>
+ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"Transferência do ficheiro"</string>
+ <string name="bluetooth_profile_hid" msgid="3680729023366986480">"Dispositivo de entrada"</string>
+ <string name="bluetooth_profile_pan" msgid="3391606497945147673">"Acesso à internet"</string>
+ <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"Partilha de contactos"</string>
+ <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"Utilizar para a partilha de contactos"</string>
+ <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"Partilha da ligação à internet"</string>
+ <string name="bluetooth_profile_map" msgid="5465271250454324383">"Acesso a mensagens"</string>
+ <string name="bluetooth_profile_sap" msgid="5764222021851283125">"Acesso ao SIM"</string>
+ <string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"Ligado ao áudio de multimédia"</string>
+ <string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"Ligado ao áudio do telefone"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"Ligado ao servidor de transferência de ficheiros"</string>
+ <string name="bluetooth_map_profile_summary_connected" msgid="8191407438851351713">"Ligado ao mapa"</string>
+ <string name="bluetooth_sap_profile_summary_connected" msgid="8561765057453083838">"Ligado ao SAP"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"Não ligado ao servidor de transferência de ficheiros"</string>
+ <string name="bluetooth_hid_profile_summary_connected" msgid="3381760054215168689">"Ligado a um dispositivo de entrada"</string>
+ <string name="bluetooth_pan_user_profile_summary_connected" msgid="4602294638909590612">"Ligado ao aparelho para acesso à internet"</string>
+ <string name="bluetooth_pan_nap_profile_summary_connected" msgid="1561383706411975199">"A partilhar a ligação à internet local com o aparelho"</string>
+ <string name="bluetooth_pan_profile_summary_use_for" msgid="5664884523822068653">"Utilizar para acesso à internet"</string>
+ <string name="bluetooth_map_profile_summary_use_for" msgid="5154200119919927434">"Utilizar para o mapa"</string>
+ <string name="bluetooth_sap_profile_summary_use_for" msgid="7085362712786907993">"Utilizar para acesso ao SIM"</string>
+ <string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"Utilizar para áudio de multimédia"</string>
+ <string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"Utilizar para áudio do telefone"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"Utilizar para transferência de ficheiros"</string>
+ <string name="bluetooth_hid_profile_summary_use_for" msgid="232727040453645139">"Utilizar para entrada"</string>
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"Par"</string>
+ <string name="bluetooth_pairing_accept_all_caps" msgid="6061699265220789149">"SINCRONIZAR"</string>
+ <string name="bluetooth_pairing_decline" msgid="4185420413578948140">"Cancelar"</string>
+ <string name="bluetooth_pairing_will_share_phonebook" msgid="4982239145676394429">"A sincronização concede acesso aos seus contactos e ao histórico de chamadas quando tem uma ligação estabelecida."</string>
+ <string name="bluetooth_pairing_error_message" msgid="3748157733635947087">"Não foi possível sincronizar com <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="8337234855188925274">"Não foi possível sincronizar com <xliff:g id="DEVICE_NAME">%1$s</xliff:g> devido a PIN ou chave de acesso incorreto."</string>
+ <string name="bluetooth_pairing_device_down_error_message" msgid="7870998403045801381">"Não é possível comunicar com <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"Emparelhamento rejeitado por <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="accessibility_wifi_off" msgid="1166761729660614716">"Wi-Fi desativado."</string>
+ <string name="accessibility_no_wifi" msgid="8834610636137374508">"Wi-Fi desligado."</string>
+ <string name="accessibility_wifi_one_bar" msgid="4869376278894301820">"Uma barra de Wi-Fi."</string>
+ <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 de Wi-Fi completo."</string>
+ <string name="process_kernel_label" msgid="3916858646836739323">"SO Android"</string>
+ <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"Aplicações removidas"</string>
+ <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"Aplicações e utilizadores removidos"</string>
+ <string name="tether_settings_title_usb" msgid="6688416425801386511">"Ligação USB"</string>
+ <string name="tether_settings_title_wifi" msgid="3277144155960302049">"Hotspot portátil"</string>
+ <string name="tether_settings_title_bluetooth" msgid="355855408317564420">"Ligação Bluetooth"</string>
+ <string name="tether_settings_title_usb_bluetooth" msgid="5355828977109785001">"Ligação ponto a ponto"</string>
+ <string name="tether_settings_title_all" msgid="8356136101061143841">"Partilha de Internet"</string>
+ <string name="managed_user_title" msgid="8101244883654409696">"Perfil de trabalho"</string>
+ <string name="user_guest" msgid="8475274842845401871">"Convidado"</string>
+ <string name="unknown" msgid="1592123443519355854">"Desconhecido"</string>
+ <string name="running_process_item_user_label" msgid="3129887865552025943">"Utilizador: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
+ <string name="launch_defaults_some" msgid="313159469856372621">"Algumas predefinições definidas"</string>
+ <string name="launch_defaults_none" msgid="4241129108140034876">"Nenhuma predefinição definida"</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-pt/arrays.xml b/packages/SettingsLib/res/values-pt/arrays.xml
new file mode 100644
index 0000000..cea70da
--- /dev/null
+++ b/packages/SettingsLib/res/values-pt/arrays.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="wifi_status">
+ <item msgid="1922181315419294640"></item>
+ <item msgid="8934131797783724664">"Procurando…"</item>
+ <item msgid="8513729475867537913">"Conectando..."</item>
+ <item msgid="515055375277271756">"Autenticando..."</item>
+ <item msgid="1943354004029184381">"Obtendo endereço IP…"</item>
+ <item msgid="4221763391123233270">"Conectado"</item>
+ <item msgid="624838831631122137">"Suspenso"</item>
+ <item msgid="7979680559596111948">"Desconectando…"</item>
+ <item msgid="1634960474403853625">"Desconectado"</item>
+ <item msgid="746097431216080650">"Falha"</item>
+ <item msgid="6367044185730295334">"Bloqueado"</item>
+ <item msgid="503942654197908005">"Temporariamente evitando uma conexão ruim"</item>
+ </string-array>
+ <string-array name="wifi_status_with_ssid">
+ <item msgid="7714855332363650812"></item>
+ <item msgid="8878186979715711006">"Procurando…"</item>
+ <item msgid="355508996603873860">"Conectando-se a <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="554971459996405634">"Autenticando com a <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="7928343808033020343">"Obtendo endereço IP da <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="8937994881315223448">"Conectado a <xliff:g id="NETWORK_NAME">%1$s</xliff:g>"</item>
+ <item msgid="1330262655415760617">"Suspenso"</item>
+ <item msgid="7698638434317271902">"Desconectando da <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="197508606402264311">"Desconectado"</item>
+ <item msgid="8578370891960825148">"Falha"</item>
+ <item msgid="5660739516542454527">"Bloqueado"</item>
+ <item msgid="1805837518286731242">"Temporariamente evitando uma conexão ruim"</item>
+ </string-array>
+</resources>
diff --git a/packages/SettingsLib/res/values-pt/strings.xml b/packages/SettingsLib/res/values-pt/strings.xml
new file mode 100644
index 0000000..93c4d10
--- /dev/null
+++ b/packages/SettingsLib/res/values-pt/strings.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="wifi_fail_to_scan" msgid="1265540342578081461">"Não é possível verificar a existência de redes"</string>
+ <string name="wifi_security_none" msgid="7985461072596594400">"Nenhuma"</string>
+ <string name="wifi_remembered" msgid="4955746899347821096">"Salva"</string>
+ <string name="wifi_disabled_generic" msgid="4259794910584943386">"Desativado"</string>
+ <string name="wifi_disabled_network_failure" msgid="2364951338436007124">"Falha de configuração de IP"</string>
+ <string name="wifi_disabled_wifi_failure" msgid="3081668066612876581">"Falha de conexão Wi-Fi"</string>
+ <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"Problema de autenticação"</string>
+ <string name="wifi_not_in_range" msgid="1136191511238508967">"Fora do alcance"</string>
+ <string name="wifi_no_internet" msgid="9151470775868728896">"Nenhum acesso à Internet detectado. O dispositivo não conectará automaticamente."</string>
+ <string name="saved_network" msgid="4352716707126620811">"Salvas por <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="connected_via_wfa" msgid="3805736726317410714">"Conectado via assistente de Wi‑Fi"</string>
+ <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>
+ <string name="bluetooth_disconnected" msgid="6557104142667339895">"Desconectado"</string>
+ <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Desconectando…"</string>
+ <string name="bluetooth_connecting" msgid="8555009514614320497">"Conectando..."</string>
+ <string name="bluetooth_connected" msgid="6038755206916626419">"Conectado"</string>
+ <string name="bluetooth_pairing" msgid="1426882272690346242">"Pareando…"</string>
+ <string name="bluetooth_connected_no_headset" msgid="2866994875046035609">"Conectado (sem telefone)"</string>
+ <string name="bluetooth_connected_no_a2dp" msgid="4576188601581440337">"Conectado (sem mídia)"</string>
+ <string name="bluetooth_connected_no_map" msgid="6504436917057479986">"Conectado (sem acesso a mensagens)"</string>
+ <string name="bluetooth_connected_no_headset_no_a2dp" msgid="9195757766755553810">"Conectado (sem telefone ou mídia)"</string>
+ <string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Áudio da mídia"</string>
+ <string name="bluetooth_profile_headset" msgid="8658779596261212609">"Áudio do telefone"</string>
+ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"Transferência de arquivo"</string>
+ <string name="bluetooth_profile_hid" msgid="3680729023366986480">"Dispositivo de entrada"</string>
+ <string name="bluetooth_profile_pan" msgid="3391606497945147673">"Acesso à Internet"</string>
+ <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"Compartilhamento de contatos"</string>
+ <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"Usar para compartilhamento de contatos"</string>
+ <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"Compartilhamento de conexão à Internet"</string>
+ <string name="bluetooth_profile_map" msgid="5465271250454324383">"Acesso a mensagens"</string>
+ <string name="bluetooth_profile_sap" msgid="5764222021851283125">"Acesso SIM"</string>
+ <string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"Conectado ao áudio da mídia"</string>
+ <string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"Conectado ao áudio do telefone"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"Conectado ao servidor de transferência de arquivo"</string>
+ <string name="bluetooth_map_profile_summary_connected" msgid="8191407438851351713">"Conectado ao mapa"</string>
+ <string name="bluetooth_sap_profile_summary_connected" msgid="8561765057453083838">"Conectado a SAP"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"Não está conectado ao servidor de transferência de arquivo"</string>
+ <string name="bluetooth_hid_profile_summary_connected" msgid="3381760054215168689">"Conectado ao dispositivo de entrada"</string>
+ <string name="bluetooth_pan_user_profile_summary_connected" msgid="4602294638909590612">"Conectado ao dispositivo para acesso à Internet"</string>
+ <string name="bluetooth_pan_nap_profile_summary_connected" msgid="1561383706411975199">"Compart. conexão local de Intern. com disp."</string>
+ <string name="bluetooth_pan_profile_summary_use_for" msgid="5664884523822068653">"Usar para acesso à Internet"</string>
+ <string name="bluetooth_map_profile_summary_use_for" msgid="5154200119919927434">"Usar para mapa"</string>
+ <string name="bluetooth_sap_profile_summary_use_for" msgid="7085362712786907993">"Use para acesso SIM"</string>
+ <string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"Usar para áudio de mídia"</string>
+ <string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"Usar para áudio do telefone"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"Usado para transferência de arquivo"</string>
+ <string name="bluetooth_hid_profile_summary_use_for" msgid="232727040453645139">"Usar para entrada"</string>
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"Parear"</string>
+ <string name="bluetooth_pairing_accept_all_caps" msgid="6061699265220789149">"PAREAR"</string>
+ <string name="bluetooth_pairing_decline" msgid="4185420413578948140">"Cancelar"</string>
+ <string name="bluetooth_pairing_will_share_phonebook" msgid="4982239145676394429">"O pareamento dá acesso a seus contatos e ao histórico de chamadas quando estiver conectado."</string>
+ <string name="bluetooth_pairing_error_message" msgid="3748157733635947087">"Não foi possível parear com <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="8337234855188925274">"Não foi possível parear com <xliff:g id="DEVICE_NAME">%1$s</xliff:g> por causa de um PIN ou senha incorretos."</string>
+ <string name="bluetooth_pairing_device_down_error_message" msgid="7870998403045801381">"Não é possível se comunicar com <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"Emparelhamento rejeitado por <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="accessibility_wifi_off" msgid="1166761729660614716">"Wi-Fi desligado."</string>
+ <string name="accessibility_no_wifi" msgid="8834610636137374508">"Wi-Fi desconectado"</string>
+ <string name="accessibility_wifi_one_bar" msgid="4869376278894301820">"Uma barra de Wi-Fi."</string>
+ <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>
+ <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>
+ <string name="tether_settings_title_usb" msgid="6688416425801386511">"Tethering USB"</string>
+ <string name="tether_settings_title_wifi" msgid="3277144155960302049">"Ponto de acesso portátil"</string>
+ <string name="tether_settings_title_bluetooth" msgid="355855408317564420">"Tethering Bluetooth"</string>
+ <string name="tether_settings_title_usb_bluetooth" msgid="5355828977109785001">"Tethering"</string>
+ <string name="tether_settings_title_all" msgid="8356136101061143841">"Tethering e acesso portátil"</string>
+ <string name="managed_user_title" msgid="8101244883654409696">"Perfil de trabalho"</string>
+ <string name="user_guest" msgid="8475274842845401871">"Convidado"</string>
+ <string name="unknown" msgid="1592123443519355854">"Desconhecido"</string>
+ <string name="running_process_item_user_label" msgid="3129887865552025943">"Usuário: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
+ <string name="launch_defaults_some" msgid="313159469856372621">"Alguns padrões definidos"</string>
+ <string name="launch_defaults_none" msgid="4241129108140034876">"Nenhum padrão definido"</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-ro/arrays.xml b/packages/SettingsLib/res/values-ro/arrays.xml
new file mode 100644
index 0000000..c4b3b34
--- /dev/null
+++ b/packages/SettingsLib/res/values-ro/arrays.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="wifi_status">
+ <item msgid="1922181315419294640"></item>
+ <item msgid="8934131797783724664">"În curs de scanare..."</item>
+ <item msgid="8513729475867537913">"Se conectează..."</item>
+ <item msgid="515055375277271756">"În curs de autentificare…"</item>
+ <item msgid="1943354004029184381">"Se obține adresa IP..."</item>
+ <item msgid="4221763391123233270">"Conectată"</item>
+ <item msgid="624838831631122137">"Suspendată"</item>
+ <item msgid="7979680559596111948">"În curs de deconectare..."</item>
+ <item msgid="1634960474403853625">"Deconectată"</item>
+ <item msgid="746097431216080650">"Nereușit"</item>
+ <item msgid="6367044185730295334">"Blocat"</item>
+ <item msgid="503942654197908005">"Evitarea temporară a conexiunii slabe"</item>
+ </string-array>
+ <string-array name="wifi_status_with_ssid">
+ <item msgid="7714855332363650812"></item>
+ <item msgid="8878186979715711006">"În curs de scanare..."</item>
+ <item msgid="355508996603873860">"Se conectează la <xliff:g id="NETWORK_NAME">%1$s</xliff:g>..."</item>
+ <item msgid="554971459996405634">"Se autentifică cu <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="7928343808033020343">"Se obține adresa IP de la <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="8937994881315223448">"Conectat la <xliff:g id="NETWORK_NAME">%1$s</xliff:g>"</item>
+ <item msgid="1330262655415760617">"Suspendată"</item>
+ <item msgid="7698638434317271902">"În curs de deconectare de la <xliff:g id="NETWORK_NAME">%1$s</xliff:g>..."</item>
+ <item msgid="197508606402264311">"Deconectată"</item>
+ <item msgid="8578370891960825148">"Nereușit"</item>
+ <item msgid="5660739516542454527">"Blocat"</item>
+ <item msgid="1805837518286731242">"Evitarea temporară a conexiunii slabe"</item>
+ </string-array>
+</resources>
diff --git a/packages/SettingsLib/res/values-ro/strings.xml b/packages/SettingsLib/res/values-ro/strings.xml
new file mode 100644
index 0000000..96df0eb
--- /dev/null
+++ b/packages/SettingsLib/res/values-ro/strings.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="wifi_fail_to_scan" msgid="1265540342578081461">"Nu se poate scana pentru rețele"</string>
+ <string name="wifi_security_none" msgid="7985461072596594400">"Niciuna"</string>
+ <string name="wifi_remembered" msgid="4955746899347821096">"Salvată"</string>
+ <string name="wifi_disabled_generic" msgid="4259794910584943386">"Dezactivată"</string>
+ <string name="wifi_disabled_network_failure" msgid="2364951338436007124">"Eroare de configurație IP"</string>
+ <string name="wifi_disabled_wifi_failure" msgid="3081668066612876581">"Eroare de conexiune Wi-Fi"</string>
+ <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"Problemă la autentificare"</string>
+ <string name="wifi_not_in_range" msgid="1136191511238508967">"În afara ariei de acoperire"</string>
+ <string name="wifi_no_internet" msgid="9151470775868728896">"Nu s-a detectat acces la internet, nu se va efectua reconectarea automată."</string>
+ <string name="saved_network" msgid="4352716707126620811">"Salvată de <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="connected_via_wfa" msgid="3805736726317410714">"Conexiune realizată printr-un asistent Wi-Fi"</string>
+ <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>
+ <string name="bluetooth_disconnected" msgid="6557104142667339895">"Deconectat"</string>
+ <string name="bluetooth_disconnecting" msgid="8913264760027764974">"În curs de deconectare..."</string>
+ <string name="bluetooth_connecting" msgid="8555009514614320497">"Se conectează..."</string>
+ <string name="bluetooth_connected" msgid="6038755206916626419">"Conectat"</string>
+ <string name="bluetooth_pairing" msgid="1426882272690346242">"Se conectează…"</string>
+ <string name="bluetooth_connected_no_headset" msgid="2866994875046035609">"Conectat (fără telefon)"</string>
+ <string name="bluetooth_connected_no_a2dp" msgid="4576188601581440337">"Conectat (fără conținut media)"</string>
+ <string name="bluetooth_connected_no_map" msgid="6504436917057479986">"Conectat (fără acces la mesaje)"</string>
+ <string name="bluetooth_connected_no_headset_no_a2dp" msgid="9195757766755553810">"Conectat (fără telefon sau conț. media)"</string>
+ <string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Conținut media audio"</string>
+ <string name="bluetooth_profile_headset" msgid="8658779596261212609">"Componenta audio a telefonului"</string>
+ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"Transfer de fișiere"</string>
+ <string name="bluetooth_profile_hid" msgid="3680729023366986480">"Dispozitiv de intrare"</string>
+ <string name="bluetooth_profile_pan" msgid="3391606497945147673">"Acces internet"</string>
+ <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"Acces la Agendă"</string>
+ <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"Utilizați pentru a permite accesul la Agendă"</string>
+ <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"Distribuirea conexiunii la internet"</string>
+ <string name="bluetooth_profile_map" msgid="5465271250454324383">"Acces la mesaje"</string>
+ <string name="bluetooth_profile_sap" msgid="5764222021851283125">"Acces la SIM"</string>
+ <string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"Conectat la profilul pentru conținut media audio"</string>
+ <string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"Conectat la componenta audio a telefonului"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"Conectat la serverul de transfer de fișiere"</string>
+ <string name="bluetooth_map_profile_summary_connected" msgid="8191407438851351713">"Conectat la hartă"</string>
+ <string name="bluetooth_sap_profile_summary_connected" msgid="8561765057453083838">"Conectat la SAP"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"Neconectat la serverul de transfer de fișiere"</string>
+ <string name="bluetooth_hid_profile_summary_connected" msgid="3381760054215168689">"Conectat la dispozitivul de intrare"</string>
+ <string name="bluetooth_pan_user_profile_summary_connected" msgid="4602294638909590612">"Conectat la dispoz. pt. acces internet"</string>
+ <string name="bluetooth_pan_nap_profile_summary_connected" msgid="1561383706411975199">"Se permite dispoz. acces la internet local"</string>
+ <string name="bluetooth_pan_profile_summary_use_for" msgid="5664884523822068653">"Utilizați pentru acces internet"</string>
+ <string name="bluetooth_map_profile_summary_use_for" msgid="5154200119919927434">"Utilizați pentru hartă"</string>
+ <string name="bluetooth_sap_profile_summary_use_for" msgid="7085362712786907993">"Folosiți pentru acces la SIM"</string>
+ <string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"Utilizați pentru profilul pentru conținut media audio"</string>
+ <string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"Utilizați pentru componenta audio a telefonului"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"Utilizați pentru transferul de fișiere"</string>
+ <string name="bluetooth_hid_profile_summary_use_for" msgid="232727040453645139">"Utilizați pentru introducere date"</string>
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"Asociați"</string>
+ <string name="bluetooth_pairing_accept_all_caps" msgid="6061699265220789149">"CONECTAȚI"</string>
+ <string name="bluetooth_pairing_decline" msgid="4185420413578948140">"Anulați"</string>
+ <string name="bluetooth_pairing_will_share_phonebook" msgid="4982239145676394429">"Asocierea dispozitivelor vă permite accesul la persoanele de contact și la istoricul apelurilor când dispozitivul este conectat."</string>
+ <string name="bluetooth_pairing_error_message" msgid="3748157733635947087">"Nu s-a putut împerechea cu <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="8337234855188925274">"Nu s-a putut împerechea cu <xliff:g id="DEVICE_NAME">%1$s</xliff:g> din cauza unui cod PIN sau al unei chei de acces incorecte."</string>
+ <string name="bluetooth_pairing_device_down_error_message" msgid="7870998403045801381">"Nu se poate comunica cu <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"Împerechere respinsă de <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="accessibility_wifi_off" msgid="1166761729660614716">"Wi-Fi dezactivat."</string>
+ <string name="accessibility_no_wifi" msgid="8834610636137374508">"Wi-Fi deconectat."</string>
+ <string name="accessibility_wifi_one_bar" msgid="4869376278894301820">"Semnal Wi-Fi: o bară."</string>
+ <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>
+ <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>
+ <string name="tether_settings_title_usb" msgid="6688416425801386511">"Tethering prin USB"</string>
+ <string name="tether_settings_title_wifi" msgid="3277144155960302049">"Hotspot portabil"</string>
+ <string name="tether_settings_title_bluetooth" msgid="355855408317564420">"Tethering prin Bluetooth"</string>
+ <string name="tether_settings_title_usb_bluetooth" msgid="5355828977109785001">"Tethering"</string>
+ <string name="tether_settings_title_all" msgid="8356136101061143841">"Tethering și hotspot portabil"</string>
+ <string name="managed_user_title" msgid="8101244883654409696">"Profil de serviciu"</string>
+ <string name="user_guest" msgid="8475274842845401871">"Invitat"</string>
+ <string name="unknown" msgid="1592123443519355854">"Necunoscut"</string>
+ <string name="running_process_item_user_label" msgid="3129887865552025943">"Utilizator: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
+ <string name="launch_defaults_some" msgid="313159469856372621">"Unele valori prestabilite sunt configurate"</string>
+ <string name="launch_defaults_none" msgid="4241129108140034876">"Nu este configurată nicio valoare prestabilită"</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-ru/arrays.xml b/packages/SettingsLib/res/values-ru/arrays.xml
new file mode 100644
index 0000000..5f50648
--- /dev/null
+++ b/packages/SettingsLib/res/values-ru/arrays.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="wifi_status">
+ <item msgid="1922181315419294640"></item>
+ <item msgid="8934131797783724664">"Поиск..."</item>
+ <item msgid="8513729475867537913">"Подключение..."</item>
+ <item msgid="515055375277271756">"Аутентификация..."</item>
+ <item msgid="1943354004029184381">"Получение IP-адреса..."</item>
+ <item msgid="4221763391123233270">"Подключено"</item>
+ <item msgid="624838831631122137">"Приостановлено"</item>
+ <item msgid="7979680559596111948">"Отключение..."</item>
+ <item msgid="1634960474403853625">"Нет подключения"</item>
+ <item msgid="746097431216080650">"Сбой"</item>
+ <item msgid="6367044185730295334">"Заблокировано"</item>
+ <item msgid="503942654197908005">"Временно избегать плохого соединения"</item>
+ </string-array>
+ <string-array name="wifi_status_with_ssid">
+ <item msgid="7714855332363650812"></item>
+ <item msgid="8878186979715711006">"Поиск..."</item>
+ <item msgid="355508996603873860">"Соединение с сетью <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="554971459996405634">"Аутентификация в сети <xliff:g id="NETWORK_NAME">%1$s</xliff:g>..."</item>
+ <item msgid="7928343808033020343">"Получение IP-адреса от <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="8937994881315223448">"Подключено к <xliff:g id="NETWORK_NAME">%1$s</xliff:g>"</item>
+ <item msgid="1330262655415760617">"Приостановлено"</item>
+ <item msgid="7698638434317271902">"Отключение от <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="197508606402264311">"Нет подключения"</item>
+ <item msgid="8578370891960825148">"Сбой"</item>
+ <item msgid="5660739516542454527">"Заблокировано"</item>
+ <item msgid="1805837518286731242">"Временно избегать плохого соединения"</item>
+ </string-array>
+</resources>
diff --git a/packages/SettingsLib/res/values-ru/strings.xml b/packages/SettingsLib/res/values-ru/strings.xml
new file mode 100644
index 0000000..e2a4fc7
--- /dev/null
+++ b/packages/SettingsLib/res/values-ru/strings.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="wifi_fail_to_scan" msgid="1265540342578081461">"Не удалось начать поиск сетей."</string>
+ <string name="wifi_security_none" msgid="7985461072596594400">"Нет"</string>
+ <string name="wifi_remembered" msgid="4955746899347821096">"Сохранено"</string>
+ <string name="wifi_disabled_generic" msgid="4259794910584943386">"Отключено"</string>
+ <string name="wifi_disabled_network_failure" msgid="2364951338436007124">"Ошибка IP-конфигурации"</string>
+ <string name="wifi_disabled_wifi_failure" msgid="3081668066612876581">"Ошибка подключения Wi-Fi"</string>
+ <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"Ошибка аутентификации"</string>
+ <string name="wifi_not_in_range" msgid="1136191511238508967">"Недоступна"</string>
+ <string name="wifi_no_internet" msgid="9151470775868728896">"Подключение к Интернету отсутствует и не будет восстановлено автоматически."</string>
+ <string name="saved_network" msgid="4352716707126620811">"Кто сохранил: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="connected_via_wfa" msgid="3805736726317410714">"Установлено подключение через Ассистента Wi-Fi"</string>
+ <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>
+ <string name="bluetooth_disconnected" msgid="6557104142667339895">"Отключено"</string>
+ <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Отключение..."</string>
+ <string name="bluetooth_connecting" msgid="8555009514614320497">"Подключение..."</string>
+ <string name="bluetooth_connected" msgid="6038755206916626419">"Подключено"</string>
+ <string name="bluetooth_pairing" msgid="1426882272690346242">"Сопряжение..."</string>
+ <string name="bluetooth_connected_no_headset" msgid="2866994875046035609">"Подключено (кроме HSP/HFP)"</string>
+ <string name="bluetooth_connected_no_a2dp" msgid="4576188601581440337">"Подключено (кроме A2DP)"</string>
+ <string name="bluetooth_connected_no_map" msgid="6504436917057479986">"Подключено (нет доступа к сообщениям)"</string>
+ <string name="bluetooth_connected_no_headset_no_a2dp" msgid="9195757766755553810">"Подключено (кроме HSP/HFP/A2DP)"</string>
+ <string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Профиль A2DP"</string>
+ <string name="bluetooth_profile_headset" msgid="8658779596261212609">"Профиль HSP/HFP"</string>
+ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"Профиль OPP"</string>
+ <string name="bluetooth_profile_hid" msgid="3680729023366986480">"Профиль HID"</string>
+ <string name="bluetooth_profile_pan" msgid="3391606497945147673">"Интернет-доступ"</string>
+ <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"Обмен контактами"</string>
+ <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"Использовать для обмена контактами"</string>
+ <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"Профиль PAN"</string>
+ <string name="bluetooth_profile_map" msgid="5465271250454324383">"Доступ к сообщениям"</string>
+ <string name="bluetooth_profile_sap" msgid="5764222021851283125">"Доступ к SIM-карте"</string>
+ <string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"Подключено к мультимедийному аудиоустройству"</string>
+ <string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"Подключено к аудиоустройству телефона"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"Установлено подключение к серверу передачи файлов"</string>
+ <string name="bluetooth_map_profile_summary_connected" msgid="8191407438851351713">"Доступ к сообщениям"</string>
+ <string name="bluetooth_sap_profile_summary_connected" msgid="8561765057453083838">"Подключено к точке доступа"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"Нет подключения к серверу передачи файлов"</string>
+ <string name="bluetooth_hid_profile_summary_connected" msgid="3381760054215168689">"Подключено к устройству ввода"</string>
+ <string name="bluetooth_pan_user_profile_summary_connected" msgid="4602294638909590612">"Используется интернет-подключение другого устройства"</string>
+ <string name="bluetooth_pan_nap_profile_summary_connected" msgid="1561383706411975199">"Устройство работает в режиме модема"</string>
+ <string name="bluetooth_pan_profile_summary_use_for" msgid="5664884523822068653">"Использовать для доступа к Интернету"</string>
+ <string name="bluetooth_map_profile_summary_use_for" msgid="5154200119919927434">"Использовать для доступа к сообщениям"</string>
+ <string name="bluetooth_sap_profile_summary_use_for" msgid="7085362712786907993">"Использовать для доступа к SIM-карте"</string>
+ <string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"Использовать для мультимедийного аудиоустройства"</string>
+ <string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"Использовать для аудиоустройства телефона"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"Используется для передачи файлов"</string>
+ <string name="bluetooth_hid_profile_summary_use_for" msgid="232727040453645139">"Использовать для ввода"</string>
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"Подключить"</string>
+ <string name="bluetooth_pairing_accept_all_caps" msgid="6061699265220789149">"ПОДКЛЮЧИТЬ"</string>
+ <string name="bluetooth_pairing_decline" msgid="4185420413578948140">"Отмена"</string>
+ <string name="bluetooth_pairing_will_share_phonebook" msgid="4982239145676394429">"Сопряжение обеспечивает доступ к вашим контактам и журналу звонков при подключении."</string>
+ <string name="bluetooth_pairing_error_message" msgid="3748157733635947087">"Не удалось подключиться к устройству \"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\"."</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="8337234855188925274">"Не удалось подключиться к устройству \"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\", так как введен неверный PIN-код или пароль."</string>
+ <string name="bluetooth_pairing_device_down_error_message" msgid="7870998403045801381">"Не удается установить соединение с устройством \"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\"."</string>
+ <string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> не разрешает сопряжение."</string>
+ <string name="accessibility_wifi_off" msgid="1166761729660614716">"Wi-Fi выключен"</string>
+ <string name="accessibility_no_wifi" msgid="8834610636137374508">"Wi-Fi отключен"</string>
+ <string name="accessibility_wifi_one_bar" msgid="4869376278894301820">"Wi-Fi: одно деление"</string>
+ <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>
+ <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_wifi" msgid="3277144155960302049">"Точка доступа Wi-Fi"</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="managed_user_title" msgid="8101244883654409696">"Рабочий профиль"</string>
+ <string name="user_guest" msgid="8475274842845401871">"Гость"</string>
+ <string name="unknown" msgid="1592123443519355854">"Неизвестно"</string>
+ <string name="running_process_item_user_label" msgid="3129887865552025943">"Пользователь: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
+ <string name="launch_defaults_some" msgid="313159469856372621">"Установлены некоторые настройки по умолчанию"</string>
+ <string name="launch_defaults_none" msgid="4241129108140034876">"Настройки по умолчанию не установлены"</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-si-rLK/arrays.xml b/packages/SettingsLib/res/values-si-rLK/arrays.xml
new file mode 100644
index 0000000..225ea36
--- /dev/null
+++ b/packages/SettingsLib/res/values-si-rLK/arrays.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="wifi_status">
+ <item msgid="1922181315419294640"></item>
+ <item msgid="8934131797783724664">"පරිලෝකනය කරමින්…"</item>
+ <item msgid="8513729475867537913">"සම්බන්ධ වෙමින්…"</item>
+ <item msgid="515055375277271756">"සත්යාපනය වෙමින්…"</item>
+ <item msgid="1943354004029184381">"IP ලිපිනය ලබාගනිමින්…"</item>
+ <item msgid="4221763391123233270">"සම්බන්ධිතයි"</item>
+ <item msgid="624838831631122137">"අත්හිටුවන ලදි"</item>
+ <item msgid="7979680559596111948">"විසන්ධි වෙමින්…"</item>
+ <item msgid="1634960474403853625">"විසන්ධි වුණි"</item>
+ <item msgid="746097431216080650">"අසාර්ථකයි"</item>
+ <item msgid="6367044185730295334">"අවහිර කරන ලදි"</item>
+ <item msgid="503942654197908005">"දුර්වල සම්බන්ධතාවය තාවකාලිකව මඟහරිමින්"</item>
+ </string-array>
+ <string-array name="wifi_status_with_ssid">
+ <item msgid="7714855332363650812"></item>
+ <item msgid="8878186979715711006">"පරිලෝකනය කරමින්…"</item>
+ <item msgid="355508996603873860">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> වෙත සම්බන්ධ වෙමින්…"</item>
+ <item msgid="554971459996405634">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> සමග සත්යාපනය කරමින්…"</item>
+ <item msgid="7928343808033020343">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> මගින් IP ලිපිනය ලබා ගනිමින්"</item>
+ <item msgid="8937994881315223448">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> වෙත සම්බන්ධ වුණි"</item>
+ <item msgid="1330262655415760617">"අත්හිටුවන ලදි"</item>
+ <item msgid="7698638434317271902">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> වෙතින් විසන්ධි වෙමින්…"</item>
+ <item msgid="197508606402264311">"විසන්ධි විය"</item>
+ <item msgid="8578370891960825148">"අසාර්ථකයි"</item>
+ <item msgid="5660739516542454527">"අවහිර කරන ලදි"</item>
+ <item msgid="1805837518286731242">"දුර්වල සම්බන්ධතාවය තාවකාලිකව මඟහරිමින්"</item>
+ </string-array>
+</resources>
diff --git a/packages/SettingsLib/res/values-si-rLK/strings.xml b/packages/SettingsLib/res/values-si-rLK/strings.xml
new file mode 100644
index 0000000..75302a0
--- /dev/null
+++ b/packages/SettingsLib/res/values-si-rLK/strings.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="wifi_fail_to_scan" msgid="1265540342578081461">"ජාල සඳහා පරිලෝකනය කළ නොහැක"</string>
+ <string name="wifi_security_none" msgid="7985461072596594400">"කිසිවක් නැත"</string>
+ <string name="wifi_remembered" msgid="4955746899347821096">"සුරකින ලදි"</string>
+ <string name="wifi_disabled_generic" msgid="4259794910584943386">"අබලයි"</string>
+ <string name="wifi_disabled_network_failure" msgid="2364951338436007124">"IP වින්යාස කිරීම අසාර්ථකයි"</string>
+ <string name="wifi_disabled_wifi_failure" msgid="3081668066612876581">"WiFi සම්බන්ධතාව අසාර්ථකයි"</string>
+ <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"සත්යාපනයේ ගැටලුවකි"</string>
+ <string name="wifi_not_in_range" msgid="1136191511238508967">"පරාසයේ නැත"</string>
+ <string name="wifi_no_internet" msgid="9151470775868728896">"අන්තර්ජාල ප්රවේශය අනාවරණය වුයේ නැත, ස්වයංක්රිය නැවත සම්බන්ධ වීම වූ නැත"</string>
+ <string name="saved_network" msgid="4352716707126620811">"<xliff:g id="NAME">%1$s</xliff:g> විසින් සුරකින ලදී"</string>
+ <string name="connected_via_wfa" msgid="3805736726317410714">"Wi‑Fi සහායක හරහා සම්බන්ධ කරන ලදි"</string>
+ <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>
+ <string name="bluetooth_disconnected" msgid="6557104142667339895">"විසන්ධි වුණි"</string>
+ <string name="bluetooth_disconnecting" msgid="8913264760027764974">"විසන්ධි වෙමින්…"</string>
+ <string name="bluetooth_connecting" msgid="8555009514614320497">"සම්බන්ධ වෙමින්…"</string>
+ <string name="bluetooth_connected" msgid="6038755206916626419">"සම්බන්ධිතයි"</string>
+ <string name="bluetooth_pairing" msgid="1426882272690346242">"යුගල කරමින්…"</string>
+ <string name="bluetooth_connected_no_headset" msgid="2866994875046035609">"සම්බන්ධයි (දුරකථන නැත)"</string>
+ <string name="bluetooth_connected_no_a2dp" msgid="4576188601581440337">"සම්බන්ධිතයි (මාධ්යයක් නොමැත)"</string>
+ <string name="bluetooth_connected_no_map" msgid="6504436917057479986">"සම්බන්ධිතයි (පණිවිඩ ප්රවේශ නොමැත)"</string>
+ <string name="bluetooth_connected_no_headset_no_a2dp" msgid="9195757766755553810">"සම්බන්ධිතයි (දුරකතනයක් හෝ මාධ්යයක් නැත)"</string>
+ <string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"මාධ්ය ශ්රව්ය"</string>
+ <string name="bluetooth_profile_headset" msgid="8658779596261212609">"දුරකථන ශ්රව්ය"</string>
+ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"ගොනු හුවමාරුව"</string>
+ <string name="bluetooth_profile_hid" msgid="3680729023366986480">"ආදාන උපාංගය"</string>
+ <string name="bluetooth_profile_pan" msgid="3391606497945147673">"අන්තර්ජාල ප්රවේශය"</string>
+ <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"සම්බන්ධතා බෙදාගැනීම"</string>
+ <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"සම්බන්ධතා බෙදාගැනීම සඳහා භාවිතා කිරීම"</string>
+ <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"අන්තර්ජාල සම්බන්ධතා බෙදාගැනීම"</string>
+ <string name="bluetooth_profile_map" msgid="5465271250454324383">"පණිවිඩ ප්රවේශය"</string>
+ <string name="bluetooth_profile_sap" msgid="5764222021851283125">"SIM ප්රවේශය"</string>
+ <string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"මාධ්ය ශ්රව්යට සම්බන්ධ විය"</string>
+ <string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"දුරකතනයේ ශ්රව්යට සම්බන්ධ විය"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"ගොනු හුවමාරු සේවාදායකය සමග සම්බන්ධ විය"</string>
+ <string name="bluetooth_map_profile_summary_connected" msgid="8191407438851351713">"සිතියම වෙත සම්බන්ධිතයි"</string>
+ <string name="bluetooth_sap_profile_summary_connected" msgid="8561765057453083838">"SAP වෙත සම්බන්ධ විය"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"ගොනු හුවමාරු සේවාදායකය වෙත සම්බන්ධ වී නොමැත"</string>
+ <string name="bluetooth_hid_profile_summary_connected" msgid="3381760054215168689">"ආදාන උපාංග වෙත සම්බන්ධිතයි"</string>
+ <string name="bluetooth_pan_user_profile_summary_connected" msgid="4602294638909590612">"අන්තර්ජාල ප්රවේශය සඳහා උපාංගය වෙත සම්බන්ධ වුණි"</string>
+ <string name="bluetooth_pan_nap_profile_summary_connected" msgid="1561383706411975199">"මෙම උපාංගය සමඟ පෙදෙසි අන්තර්ජාල සම්බන්ධතාවය බෙදාගනිමින්"</string>
+ <string name="bluetooth_pan_profile_summary_use_for" msgid="5664884523822068653">"අන්තර්ජාල ප්රවේශය සඳහා භාවිතා කරන්න"</string>
+ <string name="bluetooth_map_profile_summary_use_for" msgid="5154200119919927434">"සිතියම සඳහා භාවිතා කරන්න"</string>
+ <string name="bluetooth_sap_profile_summary_use_for" msgid="7085362712786907993">"SIM ප්රවේශය සඳහා භාවිත කරන්න"</string>
+ <string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"මාධ්ය ශ්රව්ය සඳහා භාවිතා කරන්න"</string>
+ <string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"දුරකථන ශ්රව්ය සඳහා භාවිතා කෙරේ"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"ගොනු හුවමාරුව සඳහා භාවිතා කරන්න"</string>
+ <string name="bluetooth_hid_profile_summary_use_for" msgid="232727040453645139">"ආදානය සඳහා භාවිතා කරන්න"</string>
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"යුගල කරන්න"</string>
+ <string name="bluetooth_pairing_accept_all_caps" msgid="6061699265220789149">"යුගල කරන්න"</string>
+ <string name="bluetooth_pairing_decline" msgid="4185420413578948140">"අවලංගු කරන්න"</string>
+ <string name="bluetooth_pairing_will_share_phonebook" msgid="4982239145676394429">"සමබන්ධ වන විට ඔබගේ සම්බන්ධතා සහ ඇමතුම් ඉතිහාසයට යුගළ කිරීමට ප්රවේශය දෙන්න."</string>
+ <string name="bluetooth_pairing_error_message" msgid="3748157733635947087">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> සමඟ යුගල කළ නොහැකි විය."</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="8337234855188925274">"වැරදි PIN එකක් හෝ පාස් යතුරක් නිසා <xliff:g id="DEVICE_NAME">%1$s</xliff:g> සමඟ යුගල කිරීමට නොහැකිය."</string>
+ <string name="bluetooth_pairing_device_down_error_message" msgid="7870998403045801381">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> සමඟ සන්නිවේදනය කළ නොහැක."</string>
+ <string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> විසින් යුගල කිරීම ප්රතික්ෂේප කරන ලදි."</string>
+ <string name="accessibility_wifi_off" msgid="1166761729660614716">"Wifi අක්රියයි."</string>
+ <string name="accessibility_no_wifi" msgid="8834610636137374508">"Wifi සම්බන්ධ කර නොමැත."</string>
+ <string name="accessibility_wifi_one_bar" msgid="4869376278894301820">"Wifi තීරු එකයි."</string>
+ <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>
+ <string name="process_kernel_label" msgid="3916858646836739323">"Android OS"</string>
+ <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"ඉවත් කළ යෙදුම්"</string>
+ <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"යෙදුම් සහ පරිශීලකයින් ඉවත් කරන ලදි"</string>
+ <string name="tether_settings_title_usb" msgid="6688416425801386511">"USB ටෙදරින්"</string>
+ <string name="tether_settings_title_wifi" msgid="3277144155960302049">"ජංගම හොට්ස්පොට්"</string>
+ <string name="tether_settings_title_bluetooth" msgid="355855408317564420">"බ්ලූටූත් ටෙදරින්"</string>
+ <string name="tether_settings_title_usb_bluetooth" msgid="5355828977109785001">"ටෙදරින්"</string>
+ <string name="tether_settings_title_all" msgid="8356136101061143841">"ටෙදරින් සහ සුවහනීය හොට්ස්පොට්"</string>
+ <string name="managed_user_title" msgid="8101244883654409696">"කාර්යාල පැතිකඩ"</string>
+ <string name="user_guest" msgid="8475274842845401871">"අමුත්තා"</string>
+ <string name="unknown" msgid="1592123443519355854">"නොදනී"</string>
+ <string name="running_process_item_user_label" msgid="3129887865552025943">"පරිශීලකයා: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
+ <string name="launch_defaults_some" msgid="313159469856372621">"ඇතැම් පෙරනිමියන් සකස් කර ඇත"</string>
+ <string name="launch_defaults_none" msgid="4241129108140034876">"පෙරනිමියන් සකසා නොමැත"</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-sk/arrays.xml b/packages/SettingsLib/res/values-sk/arrays.xml
new file mode 100644
index 0000000..6cab133
--- /dev/null
+++ b/packages/SettingsLib/res/values-sk/arrays.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="wifi_status">
+ <item msgid="1922181315419294640"></item>
+ <item msgid="8934131797783724664">"Prebieha vyhľadávanie..."</item>
+ <item msgid="8513729475867537913">"Prebieha pripájanie…"</item>
+ <item msgid="515055375277271756">"Prebieha overovanie…"</item>
+ <item msgid="1943354004029184381">"Získava sa adresa IP…"</item>
+ <item msgid="4221763391123233270">"Pripojené"</item>
+ <item msgid="624838831631122137">"Pozastavená"</item>
+ <item msgid="7979680559596111948">"Prebieha odpájanie..."</item>
+ <item msgid="1634960474403853625">"Odpojený"</item>
+ <item msgid="746097431216080650">"Neúspešné"</item>
+ <item msgid="6367044185730295334">"Blokované"</item>
+ <item msgid="503942654197908005">"Dočasne bolo zabránené slabému pripojeniu"</item>
+ </string-array>
+ <string-array name="wifi_status_with_ssid">
+ <item msgid="7714855332363650812"></item>
+ <item msgid="8878186979715711006">"Prebieha vyhľadávanie..."</item>
+ <item msgid="355508996603873860">"Prebieha pripájanie k sieti <xliff:g id="NETWORK_NAME">%1$s</xliff:g>..."</item>
+ <item msgid="554971459996405634">"Prebieha overovanie v sieti <xliff:g id="NETWORK_NAME">%1$s</xliff:g>..."</item>
+ <item msgid="7928343808033020343">"Získava sa adresa IP zo siete <xliff:g id="NETWORK_NAME">%1$s</xliff:g>..."</item>
+ <item msgid="8937994881315223448">"Pripojené k sieti <xliff:g id="NETWORK_NAME">%1$s</xliff:g>"</item>
+ <item msgid="1330262655415760617">"Pozastavená"</item>
+ <item msgid="7698638434317271902">"Prebieha odpájanie od siete <xliff:g id="NETWORK_NAME">%1$s</xliff:g>..."</item>
+ <item msgid="197508606402264311">"Odpojený"</item>
+ <item msgid="8578370891960825148">"Neúspešné"</item>
+ <item msgid="5660739516542454527">"Blokované"</item>
+ <item msgid="1805837518286731242">"Dočasne bolo zabránené slabému pripojeniu"</item>
+ </string-array>
+</resources>
diff --git a/packages/SettingsLib/res/values-sk/strings.xml b/packages/SettingsLib/res/values-sk/strings.xml
new file mode 100644
index 0000000..d83c4bd
--- /dev/null
+++ b/packages/SettingsLib/res/values-sk/strings.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="wifi_fail_to_scan" msgid="1265540342578081461">"Siete sa nedajú vyhľadávať"</string>
+ <string name="wifi_security_none" msgid="7985461072596594400">"Žiadne"</string>
+ <string name="wifi_remembered" msgid="4955746899347821096">"Uložené"</string>
+ <string name="wifi_disabled_generic" msgid="4259794910584943386">"Zakázané"</string>
+ <string name="wifi_disabled_network_failure" msgid="2364951338436007124">"Zlyhanie konfigurácie adresy IP"</string>
+ <string name="wifi_disabled_wifi_failure" msgid="3081668066612876581">"Zlyhanie pripojenia Wi-Fi"</string>
+ <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"Problém s overením totožnosti"</string>
+ <string name="wifi_not_in_range" msgid="1136191511238508967">"Mimo dosah"</string>
+ <string name="wifi_no_internet" msgid="9151470775868728896">"Nenašiel sa žiadny prístup k internetu, preto nedôjde k automatickému opätovnému pripojeniu"</string>
+ <string name="saved_network" msgid="4352716707126620811">"Uložil(a) <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="connected_via_wfa" msgid="3805736726317410714">"Pripojené pomocou Asistenta Wi-Fi"</string>
+ <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>
+ <string name="bluetooth_disconnected" msgid="6557104142667339895">"Odpojený"</string>
+ <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Prebieha odpájanie..."</string>
+ <string name="bluetooth_connecting" msgid="8555009514614320497">"Prebieha pripájanie…"</string>
+ <string name="bluetooth_connected" msgid="6038755206916626419">"Pripojené"</string>
+ <string name="bluetooth_pairing" msgid="1426882272690346242">"Párovanie..."</string>
+ <string name="bluetooth_connected_no_headset" msgid="2866994875046035609">"Pripojené (bez telefónu)"</string>
+ <string name="bluetooth_connected_no_a2dp" msgid="4576188601581440337">"Pripojené (bez média)"</string>
+ <string name="bluetooth_connected_no_map" msgid="6504436917057479986">"Pripojené (bez prístupu ku správam)"</string>
+ <string name="bluetooth_connected_no_headset_no_a2dp" msgid="9195757766755553810">"Pripojené (bez telefónu alebo média)"</string>
+ <string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Zvuk medií"</string>
+ <string name="bluetooth_profile_headset" msgid="8658779596261212609">"Zvuk telefónu"</string>
+ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"Prenos súborov"</string>
+ <string name="bluetooth_profile_hid" msgid="3680729023366986480">"Vstupné zariadenie"</string>
+ <string name="bluetooth_profile_pan" msgid="3391606497945147673">"Prístup na Internet"</string>
+ <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"Zdieľanie kontaktov"</string>
+ <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"Použiť na zdieľanie kontaktov"</string>
+ <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"Zdieľanie pripojenia na Internet"</string>
+ <string name="bluetooth_profile_map" msgid="5465271250454324383">"Prístup ku správam"</string>
+ <string name="bluetooth_profile_sap" msgid="5764222021851283125">"Prístup k SIM karte"</string>
+ <string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"Pripojené ku zvukovému médiu"</string>
+ <string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"Pripojené ku zvuku telefónu"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"Pripojené na server pre prenos údajov"</string>
+ <string name="bluetooth_map_profile_summary_connected" msgid="8191407438851351713">"Pripojené k mape"</string>
+ <string name="bluetooth_sap_profile_summary_connected" msgid="8561765057453083838">"Pripojené k systému SAP"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"Nepripojené k serveru pre prenos súborov"</string>
+ <string name="bluetooth_hid_profile_summary_connected" msgid="3381760054215168689">"Pripojené na vstupné zariadenie"</string>
+ <string name="bluetooth_pan_user_profile_summary_connected" msgid="4602294638909590612">"Pripoj. k zariad. s príst. na Internet"</string>
+ <string name="bluetooth_pan_nap_profile_summary_connected" msgid="1561383706411975199">"Zdieľa miestne internet. pripoj. so zariad"</string>
+ <string name="bluetooth_pan_profile_summary_use_for" msgid="5664884523822068653">"Použiť na prístup k Internetu"</string>
+ <string name="bluetooth_map_profile_summary_use_for" msgid="5154200119919927434">"Použiť pre mapu"</string>
+ <string name="bluetooth_sap_profile_summary_use_for" msgid="7085362712786907993">"Použiť na pristupovanie k SIM karte"</string>
+ <string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"Umožňuje pripojenie zvukového média"</string>
+ <string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"Použiť pre zvuk telefónu"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"Použiť na prenos súborov"</string>
+ <string name="bluetooth_hid_profile_summary_use_for" msgid="232727040453645139">"Použiť pre vstup"</string>
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"Párovať"</string>
+ <string name="bluetooth_pairing_accept_all_caps" msgid="6061699265220789149">"PÁROVAŤ"</string>
+ <string name="bluetooth_pairing_decline" msgid="4185420413578948140">"Zrušiť"</string>
+ <string name="bluetooth_pairing_will_share_phonebook" msgid="4982239145676394429">"Párovaním udelíte zariadeniam po pripojení prístup k svojim kontaktom a histórii hovorov."</string>
+ <string name="bluetooth_pairing_error_message" msgid="3748157733635947087">"Nepodarilo sa spárovať so zariadením <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="8337234855188925274">"Nepodarilo sa spárovať so zariadením <xliff:g id="DEVICE_NAME">%1$s</xliff:g>, pretože ste zadali nesprávny kód PIN alebo prístupový kľúč."</string>
+ <string name="bluetooth_pairing_device_down_error_message" msgid="7870998403045801381">"So zariadením <xliff:g id="DEVICE_NAME">%1$s</xliff:g> nie je možné komunikovať."</string>
+ <string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"Párovanie odmietnuté zariadením <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="accessibility_wifi_off" msgid="1166761729660614716">"Sieť Wi-Fi je vypnutá."</string>
+ <string name="accessibility_no_wifi" msgid="8834610636137374508">"Sieť Wi-Fi je odpojená."</string>
+ <string name="accessibility_wifi_one_bar" msgid="4869376278894301820">"Jedna čiarka signálu Wi-Fi."</string>
+ <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>
+ <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>
+ <string name="tether_settings_title_usb" msgid="6688416425801386511">"Zdieľané pripojenie cez USB"</string>
+ <string name="tether_settings_title_wifi" msgid="3277144155960302049">"Prenosný prístupový bod"</string>
+ <string name="tether_settings_title_bluetooth" msgid="355855408317564420">"Pripojenie cez Bluetooth"</string>
+ <string name="tether_settings_title_usb_bluetooth" msgid="5355828977109785001">"Zdieľanie dát. pripojenia"</string>
+ <string name="tether_settings_title_all" msgid="8356136101061143841">"Zdieľané pripojenie a prenosný hotspot"</string>
+ <string name="managed_user_title" msgid="8101244883654409696">"Pracovný profil"</string>
+ <string name="user_guest" msgid="8475274842845401871">"Hosť"</string>
+ <string name="unknown" msgid="1592123443519355854">"Neznáme"</string>
+ <string name="running_process_item_user_label" msgid="3129887865552025943">"Používateľ: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
+ <string name="launch_defaults_some" msgid="313159469856372621">"Predvolená pre niektoré akcie"</string>
+ <string name="launch_defaults_none" msgid="4241129108140034876">"Nie je predvolená pre žiadne akcie"</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-sl/arrays.xml b/packages/SettingsLib/res/values-sl/arrays.xml
new file mode 100644
index 0000000..fef1fdd
--- /dev/null
+++ b/packages/SettingsLib/res/values-sl/arrays.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="wifi_status">
+ <item msgid="1922181315419294640"></item>
+ <item msgid="8934131797783724664">"Iskanje …"</item>
+ <item msgid="8513729475867537913">"Vzpostavljanje povezave ..."</item>
+ <item msgid="515055375277271756">"Preverjanje pristnosti ..."</item>
+ <item msgid="1943354004029184381">"Pridobivanje naslova IP …"</item>
+ <item msgid="4221763391123233270">"Povezava je vzpostavljena"</item>
+ <item msgid="624838831631122137">"Odloženo"</item>
+ <item msgid="7979680559596111948">"Prekinjanje povezave ..."</item>
+ <item msgid="1634960474403853625">"Prekinjena povezava"</item>
+ <item msgid="746097431216080650">"Ni uspelo"</item>
+ <item msgid="6367044185730295334">"Blokirano"</item>
+ <item msgid="503942654197908005">"Začasno izogibanje slabi povezavi"</item>
+ </string-array>
+ <string-array name="wifi_status_with_ssid">
+ <item msgid="7714855332363650812"></item>
+ <item msgid="8878186979715711006">"Iskanje …"</item>
+ <item msgid="355508996603873860">"Vzpostavljanje povezave z omrežjem <xliff:g id="NETWORK_NAME">%1$s</xliff:g> …"</item>
+ <item msgid="554971459996405634">"Preverjanje pristnosti v omrežju <xliff:g id="NETWORK_NAME">%1$s</xliff:g> …"</item>
+ <item msgid="7928343808033020343">"Pridobivanje naslova IP od <xliff:g id="NETWORK_NAME">%1$s</xliff:g> …"</item>
+ <item msgid="8937994881315223448">"Povezava z omrežjem <xliff:g id="NETWORK_NAME">%1$s</xliff:g> je vzpostavljena"</item>
+ <item msgid="1330262655415760617">"Začasno ustavljeno"</item>
+ <item msgid="7698638434317271902">"Prekinjanje povezave z omrežjem <xliff:g id="NETWORK_NAME">%1$s</xliff:g> …"</item>
+ <item msgid="197508606402264311">"Prekinjena povezava"</item>
+ <item msgid="8578370891960825148">"Ni uspelo"</item>
+ <item msgid="5660739516542454527">"Blokirano"</item>
+ <item msgid="1805837518286731242">"Začasno izogibanje slabi povezavi"</item>
+ </string-array>
+</resources>
diff --git a/packages/SettingsLib/res/values-sl/strings.xml b/packages/SettingsLib/res/values-sl/strings.xml
new file mode 100644
index 0000000..5b8b171
--- /dev/null
+++ b/packages/SettingsLib/res/values-sl/strings.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="wifi_fail_to_scan" msgid="1265540342578081461">"Ni mogoče iskati omrežij"</string>
+ <string name="wifi_security_none" msgid="7985461072596594400">"Brez"</string>
+ <string name="wifi_remembered" msgid="4955746899347821096">"Shranjeno"</string>
+ <string name="wifi_disabled_generic" msgid="4259794910584943386">"Onemogočeno"</string>
+ <string name="wifi_disabled_network_failure" msgid="2364951338436007124">"Konfiguracija IP-ja ni uspela"</string>
+ <string name="wifi_disabled_wifi_failure" msgid="3081668066612876581">"Povezava prek Wi-Fi-ja ni uspela"</string>
+ <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"Težava s preverjanjem pristnosti"</string>
+ <string name="wifi_not_in_range" msgid="1136191511238508967">"Ni v obsegu"</string>
+ <string name="wifi_no_internet" msgid="9151470775868728896">"Ni zaznanega dostopa do interneta; samodejna vnovična vzpostavitev povezave se ne bo izvedla."</string>
+ <string name="saved_network" msgid="4352716707126620811">"Shranil(-a): <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="connected_via_wfa" msgid="3805736726317410714">"Povezava vzpostavljena prek pomočnika za Wi-Fi"</string>
+ <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>
+ <string name="bluetooth_disconnected" msgid="6557104142667339895">"Prekinjena povezava"</string>
+ <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Prekinjanje povezave ..."</string>
+ <string name="bluetooth_connecting" msgid="8555009514614320497">"Vzpostavljanje povezave ..."</string>
+ <string name="bluetooth_connected" msgid="6038755206916626419">"Povezava je vzpostavljena"</string>
+ <string name="bluetooth_pairing" msgid="1426882272690346242">"Seznanjanje ..."</string>
+ <string name="bluetooth_connected_no_headset" msgid="2866994875046035609">"Povezava vzpostavljena (brez telefona)"</string>
+ <string name="bluetooth_connected_no_a2dp" msgid="4576188601581440337">"Povezava vzpostavljena (brez predstavnosti)"</string>
+ <string name="bluetooth_connected_no_map" msgid="6504436917057479986">"Povezava vzp. (ni dostopa do sporočil)"</string>
+ <string name="bluetooth_connected_no_headset_no_a2dp" msgid="9195757766755553810">"Povezava vzpostavljena (brez telefona ali predstavnosti)"</string>
+ <string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Zvok predstavnosti"</string>
+ <string name="bluetooth_profile_headset" msgid="8658779596261212609">"Zvok telefona"</string>
+ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"Prenos datoteke"</string>
+ <string name="bluetooth_profile_hid" msgid="3680729023366986480">"Vnosna naprava"</string>
+ <string name="bluetooth_profile_pan" msgid="3391606497945147673">"Internetni dostop"</string>
+ <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"Dajanje stikov v skupno rabo"</string>
+ <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"Uporabi za dajanje stikov v skupno rabo"</string>
+ <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"Skupna raba internetne povezave"</string>
+ <string name="bluetooth_profile_map" msgid="5465271250454324383">"Dostop do sporočil"</string>
+ <string name="bluetooth_profile_sap" msgid="5764222021851283125">"Dostop do kartice SIM"</string>
+ <string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"Povezan s profilom za predstavnostni zvok"</string>
+ <string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"Povezava s profilom za zvok telefona vzpostavljena"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"Povezava s strežnikom za prenos datotek je vzpostavljena"</string>
+ <string name="bluetooth_map_profile_summary_connected" msgid="8191407438851351713">"Povezava je vzpostavljena z zemljevidom"</string>
+ <string name="bluetooth_sap_profile_summary_connected" msgid="8561765057453083838">"Vzpostavljena povezava s profilom SAP"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"Povezava s strežnikom za prenos datotek ni vzpostavljena"</string>
+ <string name="bluetooth_hid_profile_summary_connected" msgid="3381760054215168689">"Povezava z vnosno napravo je vzpostavljena"</string>
+ <string name="bluetooth_pan_user_profile_summary_connected" msgid="4602294638909590612">"Povezava z napravo za internetni dostop"</string>
+ <string name="bluetooth_pan_nap_profile_summary_connected" msgid="1561383706411975199">"Skupna raba lok. internetne povezave z napravo"</string>
+ <string name="bluetooth_pan_profile_summary_use_for" msgid="5664884523822068653">"Uporabi za dostop do interneta"</string>
+ <string name="bluetooth_map_profile_summary_use_for" msgid="5154200119919927434">"Uporabi za zemljevid"</string>
+ <string name="bluetooth_sap_profile_summary_use_for" msgid="7085362712786907993">"Uporablja se za dostop do kartice SIM"</string>
+ <string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"Uporabi za zvok predstavnosti"</string>
+ <string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"Uporabi za zvok telefona"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"Uporabi za prenos datotek"</string>
+ <string name="bluetooth_hid_profile_summary_use_for" msgid="232727040453645139">"Uporabi za vnos"</string>
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"Seznani"</string>
+ <string name="bluetooth_pairing_accept_all_caps" msgid="6061699265220789149">"SEZNANI"</string>
+ <string name="bluetooth_pairing_decline" msgid="4185420413578948140">"Prekliči"</string>
+ <string name="bluetooth_pairing_will_share_phonebook" msgid="4982239145676394429">"Seznanjanje pri vzpostavljeni povezavi omogoči dostop do vaših stikov in zgodovine klicev."</string>
+ <string name="bluetooth_pairing_error_message" msgid="3748157733635947087">"Ni bilo mogoče vzpostaviti povezave z napravo <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="8337234855188925274">"Zaradi nepravilne kode PIN ali gesla ni mogoče vzpostaviti povezave z napravo <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="bluetooth_pairing_device_down_error_message" msgid="7870998403045801381">"Z napravo <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ni mogoče vzpostaviti povezave."</string>
+ <string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"Naprava <xliff:g id="DEVICE_NAME">%1$s</xliff:g> je zavrnila seznanitev."</string>
+ <string name="accessibility_wifi_off" msgid="1166761729660614716">"Wi-Fi je izklopljen."</string>
+ <string name="accessibility_no_wifi" msgid="8834610636137374508">"Povezava Wi-Fi je prekinjena."</string>
+ <string name="accessibility_wifi_one_bar" msgid="4869376278894301820">"Ena črtica signala Wi-Fi."</string>
+ <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>
+ <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>
+ <string name="tether_settings_title_usb" msgid="6688416425801386511">"Internet prek USB-ja"</string>
+ <string name="tether_settings_title_wifi" msgid="3277144155960302049">"Prenosna dostopna točka"</string>
+ <string name="tether_settings_title_bluetooth" msgid="355855408317564420">"Internet prek Bluetootha"</string>
+ <string name="tether_settings_title_usb_bluetooth" msgid="5355828977109785001">"Internet prek mob. napr."</string>
+ <string name="tether_settings_title_all" msgid="8356136101061143841">"Modem/prenosna dost. točka"</string>
+ <string name="managed_user_title" msgid="8101244883654409696">"Delovni profil"</string>
+ <string name="user_guest" msgid="8475274842845401871">"Gost"</string>
+ <string name="unknown" msgid="1592123443519355854">"Neznano"</string>
+ <string name="running_process_item_user_label" msgid="3129887865552025943">"Uporabnik: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
+ <string name="launch_defaults_some" msgid="313159469856372621">"Nastavljene so nekatere privzete nastavitve"</string>
+ <string name="launch_defaults_none" msgid="4241129108140034876">"Ni privzetih nastavitev"</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-sq-rAL/arrays.xml b/packages/SettingsLib/res/values-sq-rAL/arrays.xml
new file mode 100644
index 0000000..5aceb09
--- /dev/null
+++ b/packages/SettingsLib/res/values-sq-rAL/arrays.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="wifi_status">
+ <item msgid="1922181315419294640"></item>
+ <item msgid="8934131797783724664">"Po skanon..."</item>
+ <item msgid="8513729475867537913">"Po lidhet..."</item>
+ <item msgid="515055375277271756">"Po vërteton…"</item>
+ <item msgid="1943354004029184381">"Po merr adresën IP…"</item>
+ <item msgid="4221763391123233270">"I lidhur"</item>
+ <item msgid="624838831631122137">"I pezulluar"</item>
+ <item msgid="7979680559596111948">"Po shkëputet..."</item>
+ <item msgid="1634960474403853625">"I shkëputur"</item>
+ <item msgid="746097431216080650">"I pasuksesshëm"</item>
+ <item msgid="6367044185730295334">"I bllokuar"</item>
+ <item msgid="503942654197908005">"Po shmang përkohësisht lidhje të dobët"</item>
+ </string-array>
+ <string-array name="wifi_status_with_ssid">
+ <item msgid="7714855332363650812"></item>
+ <item msgid="8878186979715711006">"Po skanon..."</item>
+ <item msgid="355508996603873860">"Po lidhet me <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="554971459996405634">"Po kryen vërtetimin me <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="7928343808033020343">"Po merr adresën IP nga <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="8937994881315223448">"I lidhur me <xliff:g id="NETWORK_NAME">%1$s</xliff:g>"</item>
+ <item msgid="1330262655415760617">"I pezulluar"</item>
+ <item msgid="7698638434317271902">"I shkëputur nga <xliff:g id="NETWORK_NAME">%1$s</xliff:g>"</item>
+ <item msgid="197508606402264311">"I shkëputur"</item>
+ <item msgid="8578370891960825148">"I pasuksesshëm"</item>
+ <item msgid="5660739516542454527">"I bllokuar"</item>
+ <item msgid="1805837518286731242">"Përkohësisht duke shmangur një lidhje të dobët"</item>
+ </string-array>
+</resources>
diff --git a/packages/SettingsLib/res/values-sq-rAL/strings.xml b/packages/SettingsLib/res/values-sq-rAL/strings.xml
new file mode 100644
index 0000000..d81d8c7
--- /dev/null
+++ b/packages/SettingsLib/res/values-sq-rAL/strings.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="wifi_fail_to_scan" msgid="1265540342578081461">"Nuk mund të skanojë për rrjete"</string>
+ <string name="wifi_security_none" msgid="7985461072596594400">"Asnjë"</string>
+ <string name="wifi_remembered" msgid="4955746899347821096">"U ruajt"</string>
+ <string name="wifi_disabled_generic" msgid="4259794910584943386">"Të çaktivizuara"</string>
+ <string name="wifi_disabled_network_failure" msgid="2364951338436007124">"Dështim në konfigurimin e IP-së"</string>
+ <string name="wifi_disabled_wifi_failure" msgid="3081668066612876581">"Dështim i lidhjes WiFi"</string>
+ <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"Problem me vërtetimin"</string>
+ <string name="wifi_not_in_range" msgid="1136191511238508967">"Nuk është brenda rrezes"</string>
+ <string name="wifi_no_internet" msgid="9151470775868728896">"Nuk u diktua qasje në internet. Lidhja nuk do të realizohet automatikisht."</string>
+ <string name="saved_network" msgid="4352716707126620811">"E ruajtur nga <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="connected_via_wfa" msgid="3805736726317410714">"I lidhur nëpërmjet ndihmësit të Wi‑Fi"</string>
+ <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>
+ <string name="bluetooth_disconnected" msgid="6557104142667339895">"Shkëputur"</string>
+ <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Po shkëputet..."</string>
+ <string name="bluetooth_connecting" msgid="8555009514614320497">"Po lidhet..."</string>
+ <string name="bluetooth_connected" msgid="6038755206916626419">"U lidh"</string>
+ <string name="bluetooth_pairing" msgid="1426882272690346242">"Po çiftohet..."</string>
+ <string name="bluetooth_connected_no_headset" msgid="2866994875046035609">"U lidh (pa telefon)"</string>
+ <string name="bluetooth_connected_no_a2dp" msgid="4576188601581440337">"U lidh (nuk ka media)"</string>
+ <string name="bluetooth_connected_no_map" msgid="6504436917057479986">"U lidh (pa qasje te mesazhet)"</string>
+ <string name="bluetooth_connected_no_headset_no_a2dp" msgid="9195757766755553810">"I lidhur (pa telefon apo media)"</string>
+ <string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Audioja e klipit \"media\""</string>
+ <string name="bluetooth_profile_headset" msgid="8658779596261212609">"Audioja e telefonit"</string>
+ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"Transferimi i skedarëve"</string>
+ <string name="bluetooth_profile_hid" msgid="3680729023366986480">"Pajisja e hyrjes"</string>
+ <string name="bluetooth_profile_pan" msgid="3391606497945147673">"Qasja në internet"</string>
+ <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"Ndarja e kontakteve"</string>
+ <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"Përdore për ndarjen e kontakteve"</string>
+ <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"Ndarja e lidhjes së internetit"</string>
+ <string name="bluetooth_profile_map" msgid="5465271250454324383">"Qasja në mesazhe"</string>
+ <string name="bluetooth_profile_sap" msgid="5764222021851283125">"Qasje në kartën SIM"</string>
+ <string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"U lidh me audion e medias"</string>
+ <string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"U lidh me audion e telefonit"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"U lidh me serverin e transferimit të skedarëve"</string>
+ <string name="bluetooth_map_profile_summary_connected" msgid="8191407438851351713">"U lidh me hartën"</string>
+ <string name="bluetooth_sap_profile_summary_connected" msgid="8561765057453083838">"Lidhur me SAP"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"Nuk u lidh me serverin e transferimit të skedarëve"</string>
+ <string name="bluetooth_hid_profile_summary_connected" msgid="3381760054215168689">"U lidh me pajisjen e hyrjes"</string>
+ <string name="bluetooth_pan_user_profile_summary_connected" msgid="4602294638909590612">"Lidhur me pajisjen për qasje në internet"</string>
+ <string name="bluetooth_pan_nap_profile_summary_connected" msgid="1561383706411975199">"Po ndan lidhjen lokale të internetit me pajisjen"</string>
+ <string name="bluetooth_pan_profile_summary_use_for" msgid="5664884523822068653">"Përdor për qasje në internet"</string>
+ <string name="bluetooth_map_profile_summary_use_for" msgid="5154200119919927434">"Përdore për hartën"</string>
+ <string name="bluetooth_sap_profile_summary_use_for" msgid="7085362712786907993">"Përdor për qasje në kartën SIM"</string>
+ <string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"Përdor për audion e medias"</string>
+ <string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"Përdor për audion e telefonit"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"Përdor për transferimin e skedarëve"</string>
+ <string name="bluetooth_hid_profile_summary_use_for" msgid="232727040453645139">"Përdore për hyrjen"</string>
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"Çifto"</string>
+ <string name="bluetooth_pairing_accept_all_caps" msgid="6061699265220789149">"ÇIFTO"</string>
+ <string name="bluetooth_pairing_decline" msgid="4185420413578948140">"Anulo"</string>
+ <string name="bluetooth_pairing_will_share_phonebook" msgid="4982239145676394429">"Çiftimi lejon qasjen te kontaktet dhe historiku yt i telefonatave."</string>
+ <string name="bluetooth_pairing_error_message" msgid="3748157733635947087">"Nuk mundi të çiftohej me <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="8337234855188925274">"Nuk mundi të çiftohej me <xliff:g id="DEVICE_NAME">%1$s</xliff:g> për shkak të një kodi PIN ose një kodi të pasaktë."</string>
+ <string name="bluetooth_pairing_device_down_error_message" msgid="7870998403045801381">"Nuk mund të komunikohet me <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"Çiftimi u refuzua nga <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="accessibility_wifi_off" msgid="1166761729660614716">"Wi-Fi është çaktivizuar."</string>
+ <string name="accessibility_no_wifi" msgid="8834610636137374508">"Wi-Fi është i shkëputur."</string>
+ <string name="accessibility_wifi_one_bar" msgid="4869376278894301820">"Wi-Fi ka një vijë."</string>
+ <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>
+ <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>
+ <string name="tether_settings_title_usb" msgid="6688416425801386511">"Ndarje përmes USB-së"</string>
+ <string name="tether_settings_title_wifi" msgid="3277144155960302049">"Zona e qasjes e lëvizshme"</string>
+ <string name="tether_settings_title_bluetooth" msgid="355855408317564420">"Ndarje interneti përmes Bluetooth-it"</string>
+ <string name="tether_settings_title_usb_bluetooth" msgid="5355828977109785001">"Ndarja e internetit"</string>
+ <string name="tether_settings_title_all" msgid="8356136101061143841">"Zonë qasjeje dhe ndarjeje interneti"</string>
+ <string name="managed_user_title" msgid="8101244883654409696">"Profili i punës"</string>
+ <string name="user_guest" msgid="8475274842845401871">"I ftuar"</string>
+ <string name="unknown" msgid="1592123443519355854">"I panjohur"</string>
+ <string name="running_process_item_user_label" msgid="3129887865552025943">"Përdoruesi: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
+ <string name="launch_defaults_some" msgid="313159469856372621">"Disa caktime me parazgjedhje"</string>
+ <string name="launch_defaults_none" msgid="4241129108140034876">"Nuk janë caktuar parazgjedhje"</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-sr/arrays.xml b/packages/SettingsLib/res/values-sr/arrays.xml
new file mode 100644
index 0000000..cc60251
--- /dev/null
+++ b/packages/SettingsLib/res/values-sr/arrays.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="wifi_status">
+ <item msgid="1922181315419294640"></item>
+ <item msgid="8934131797783724664">"Скенирање..."</item>
+ <item msgid="8513729475867537913">"Повезивање…"</item>
+ <item msgid="515055375277271756">"Потврђује се аутентичност..."</item>
+ <item msgid="1943354004029184381">"Преузимање IP адресе..."</item>
+ <item msgid="4221763391123233270">"Повезано"</item>
+ <item msgid="624838831631122137">"Обустављено"</item>
+ <item msgid="7979680559596111948">"Прекидање везе..."</item>
+ <item msgid="1634960474403853625">"Веза је прекинута"</item>
+ <item msgid="746097431216080650">"Неуспешно"</item>
+ <item msgid="6367044185730295334">"Блокирано"</item>
+ <item msgid="503942654197908005">"Привремено избегавање лоше везе"</item>
+ </string-array>
+ <string-array name="wifi_status_with_ssid">
+ <item msgid="7714855332363650812"></item>
+ <item msgid="8878186979715711006">"Скенирање..."</item>
+ <item msgid="355508996603873860">"Повезивање са мрежом <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="554971459996405634">"Проверавање идентитета мреже <xliff:g id="NETWORK_NAME">%1$s</xliff:g>..."</item>
+ <item msgid="7928343808033020343">"Добијање IP адресе од мреже <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="8937994881315223448">"Повезано са мрежом <xliff:g id="NETWORK_NAME">%1$s</xliff:g>"</item>
+ <item msgid="1330262655415760617">"Обустављено"</item>
+ <item msgid="7698638434317271902">"Прекидање везе са мрежом <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="197508606402264311">"Веза је прекинута"</item>
+ <item msgid="8578370891960825148">"Неуспешно"</item>
+ <item msgid="5660739516542454527">"Блокирано"</item>
+ <item msgid="1805837518286731242">"Привремено избегавање лоше везе"</item>
+ </string-array>
+</resources>
diff --git a/packages/SettingsLib/res/values-sr/strings.xml b/packages/SettingsLib/res/values-sr/strings.xml
new file mode 100644
index 0000000..01a1993
--- /dev/null
+++ b/packages/SettingsLib/res/values-sr/strings.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="wifi_fail_to_scan" msgid="1265540342578081461">"Није могуће скенирати мреже"</string>
+ <string name="wifi_security_none" msgid="7985461072596594400">"Нема"</string>
+ <string name="wifi_remembered" msgid="4955746899347821096">"Сачувано"</string>
+ <string name="wifi_disabled_generic" msgid="4259794910584943386">"Онемогућено"</string>
+ <string name="wifi_disabled_network_failure" msgid="2364951338436007124">"IP конфигурација је отказала"</string>
+ <string name="wifi_disabled_wifi_failure" msgid="3081668066612876581">"Wi-Fi веза је отказала"</string>
+ <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"Проблем са потврдом аутентичности"</string>
+ <string name="wifi_not_in_range" msgid="1136191511238508967">"Није у опсегу"</string>
+ <string name="wifi_no_internet" msgid="9151470775868728896">"Приступ интернету није откривен, аутоматско повезивање није могуће."</string>
+ <string name="saved_network" msgid="4352716707126620811">"Сачувао/ла је <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="connected_via_wfa" msgid="3805736726317410714">"Повезано преко Wi‑Fi помоћника"</string>
+ <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>
+ <string name="bluetooth_disconnected" msgid="6557104142667339895">"Веза је прекинута"</string>
+ <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Прекидање везе..."</string>
+ <string name="bluetooth_connecting" msgid="8555009514614320497">"Повезивање…"</string>
+ <string name="bluetooth_connected" msgid="6038755206916626419">"Повезано"</string>
+ <string name="bluetooth_pairing" msgid="1426882272690346242">"Упаривање..."</string>
+ <string name="bluetooth_connected_no_headset" msgid="2866994875046035609">"Повезано (без телефона)"</string>
+ <string name="bluetooth_connected_no_a2dp" msgid="4576188601581440337">"Повезано (без медија)"</string>
+ <string name="bluetooth_connected_no_map" msgid="6504436917057479986">"Повезано је (нема приступа порукама)"</string>
+ <string name="bluetooth_connected_no_headset_no_a2dp" msgid="9195757766755553810">"Повезано (без телефона или медија)"</string>
+ <string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Звук медија"</string>
+ <string name="bluetooth_profile_headset" msgid="8658779596261212609">"Звук телефона"</string>
+ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"Пренос датотеке"</string>
+ <string name="bluetooth_profile_hid" msgid="3680729023366986480">"Улазни уређај"</string>
+ <string name="bluetooth_profile_pan" msgid="3391606497945147673">"Приступ Интернету"</string>
+ <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"Дељење контаката"</string>
+ <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"Користите за дељење контаката"</string>
+ <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"Дељење интернет везе"</string>
+ <string name="bluetooth_profile_map" msgid="5465271250454324383">"Приступ порукама"</string>
+ <string name="bluetooth_profile_sap" msgid="5764222021851283125">"Приступ SIM картици"</string>
+ <string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"Повезано са звуком медија"</string>
+ <string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"Повезано са звуком телефона"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"Повезано са сервером за пренос датотека"</string>
+ <string name="bluetooth_map_profile_summary_connected" msgid="8191407438851351713">"Повезано је са мапом"</string>
+ <string name="bluetooth_sap_profile_summary_connected" msgid="8561765057453083838">"Веза са тачком приступа услугама је успостављена"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"Није повезано са сервером за пренос датотека"</string>
+ <string name="bluetooth_hid_profile_summary_connected" msgid="3381760054215168689">"Повезан са улазним уређајем"</string>
+ <string name="bluetooth_pan_user_profile_summary_connected" msgid="4602294638909590612">"Повез. са уређ. ради приступа Интернету"</string>
+ <string name="bluetooth_pan_nap_profile_summary_connected" msgid="1561383706411975199">"Локална интернет веза се дели са уређајем"</string>
+ <string name="bluetooth_pan_profile_summary_use_for" msgid="5664884523822068653">"Користи за приступ Интернету"</string>
+ <string name="bluetooth_map_profile_summary_use_for" msgid="5154200119919927434">"Користи се за мапу"</string>
+ <string name="bluetooth_sap_profile_summary_use_for" msgid="7085362712786907993">"Користи за приступ SIM картици"</string>
+ <string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"Коришћење за звук медија"</string>
+ <string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"Коришћење за аудио телефона"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"Коришћење за пренос датотека"</string>
+ <string name="bluetooth_hid_profile_summary_use_for" msgid="232727040453645139">"Користи за улаз"</string>
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"Упари"</string>
+ <string name="bluetooth_pairing_accept_all_caps" msgid="6061699265220789149">"УПАРИ"</string>
+ <string name="bluetooth_pairing_decline" msgid="4185420413578948140">"Откажи"</string>
+ <string name="bluetooth_pairing_will_share_phonebook" msgid="4982239145676394429">"Упаривање омогућава приступ контактима и историји позива након повезивања."</string>
+ <string name="bluetooth_pairing_error_message" msgid="3748157733635947087">"Упаривање са уређајем <xliff:g id="DEVICE_NAME">%1$s</xliff:g> није могуће."</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="8337234855188925274">"Упаривање са уређајем <xliff:g id="DEVICE_NAME">%1$s</xliff:g> није могуће због нетачног PIN-а или приступног кода."</string>
+ <string name="bluetooth_pairing_device_down_error_message" msgid="7870998403045801381">"Није могуће комуницирати са уређајем <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> је одбио/ла упаривање"</string>
+ <string name="accessibility_wifi_off" msgid="1166761729660614716">"Wi-Fi је искључен."</string>
+ <string name="accessibility_no_wifi" msgid="8834610636137374508">"Wi-Fi веза је прекинута."</string>
+ <string name="accessibility_wifi_one_bar" msgid="4869376278894301820">"Wi-Fi сигнал има једну црту."</string>
+ <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>
+ <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_wifi" msgid="3277144155960302049">"Преносни хотспот"</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="managed_user_title" msgid="8101244883654409696">"Профил за посао"</string>
+ <string name="user_guest" msgid="8475274842845401871">"Гост"</string>
+ <string name="unknown" msgid="1592123443519355854">"Непознато"</string>
+ <string name="running_process_item_user_label" msgid="3129887865552025943">"Корисник: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
+ <string name="launch_defaults_some" msgid="313159469856372621">"Подешене су неке подразумеване вредности"</string>
+ <string name="launch_defaults_none" msgid="4241129108140034876">"Нису подешене подразумеване вредности"</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-sv/arrays.xml b/packages/SettingsLib/res/values-sv/arrays.xml
new file mode 100644
index 0000000..02b352c
--- /dev/null
+++ b/packages/SettingsLib/res/values-sv/arrays.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="wifi_status">
+ <item msgid="1922181315419294640"></item>
+ <item msgid="8934131797783724664">"Skannar…"</item>
+ <item msgid="8513729475867537913">"Ansluter…"</item>
+ <item msgid="515055375277271756">"Autentiserar…"</item>
+ <item msgid="1943354004029184381">"Erhåller IP-adress…"</item>
+ <item msgid="4221763391123233270">"Ansluten"</item>
+ <item msgid="624838831631122137">"Pausad"</item>
+ <item msgid="7979680559596111948">"Kopplar ifrån…"</item>
+ <item msgid="1634960474403853625">"Frånkopplad"</item>
+ <item msgid="746097431216080650">"Misslyckades"</item>
+ <item msgid="6367044185730295334">"Blockerat"</item>
+ <item msgid="503942654197908005">"Undviker just nu dålig anslutning"</item>
+ </string-array>
+ <string-array name="wifi_status_with_ssid">
+ <item msgid="7714855332363650812"></item>
+ <item msgid="8878186979715711006">"Skannar…"</item>
+ <item msgid="355508996603873860">"Ansluter till <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="554971459996405634">"Autentiserar med <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="7928343808033020343">"Hämtar IP-adress från <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="8937994881315223448">"Ansluten till: <xliff:g id="NETWORK_NAME">%1$s</xliff:g>"</item>
+ <item msgid="1330262655415760617">"Pausad"</item>
+ <item msgid="7698638434317271902">"Kopplar ifrån <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="197508606402264311">"Frånkopplad"</item>
+ <item msgid="8578370891960825148">"Misslyckades"</item>
+ <item msgid="5660739516542454527">"Blockerat"</item>
+ <item msgid="1805837518286731242">"Undviker just nu dålig anslutning"</item>
+ </string-array>
+</resources>
diff --git a/packages/SettingsLib/res/values-sv/strings.xml b/packages/SettingsLib/res/values-sv/strings.xml
new file mode 100644
index 0000000..18b09f4
--- /dev/null
+++ b/packages/SettingsLib/res/values-sv/strings.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="wifi_fail_to_scan" msgid="1265540342578081461">"Det går inte att söka efter nätverk"</string>
+ <string name="wifi_security_none" msgid="7985461072596594400">"Ingen"</string>
+ <string name="wifi_remembered" msgid="4955746899347821096">"Sparat"</string>
+ <string name="wifi_disabled_generic" msgid="4259794910584943386">"Inaktiverad"</string>
+ <string name="wifi_disabled_network_failure" msgid="2364951338436007124">"IP-konfigurationsfel"</string>
+ <string name="wifi_disabled_wifi_failure" msgid="3081668066612876581">"Wi-Fi-anslutningsfel"</string>
+ <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"Autentiseringsproblem"</string>
+ <string name="wifi_not_in_range" msgid="1136191511238508967">"Utom räckhåll"</string>
+ <string name="wifi_no_internet" msgid="9151470775868728896">"Ingen internetåtkomst hittades. Det går inte att återansluta automatiskt."</string>
+ <string name="saved_network" msgid="4352716707126620811">"Sparades av <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="connected_via_wfa" msgid="3805736726317410714">"Ansluten via Wi-Fi-assistent"</string>
+ <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>
+ <string name="bluetooth_disconnected" msgid="6557104142667339895">"Kopplas ifrån"</string>
+ <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Kopplar ifrån…"</string>
+ <string name="bluetooth_connecting" msgid="8555009514614320497">"Ansluter…"</string>
+ <string name="bluetooth_connected" msgid="6038755206916626419">"Ansluten"</string>
+ <string name="bluetooth_pairing" msgid="1426882272690346242">"Parkoppling…"</string>
+ <string name="bluetooth_connected_no_headset" msgid="2866994875046035609">"Ansluten (ingen telefon)"</string>
+ <string name="bluetooth_connected_no_a2dp" msgid="4576188601581440337">"Ansluten (inga media)"</string>
+ <string name="bluetooth_connected_no_map" msgid="6504436917057479986">"Ansluten (ingen meddelandeåtkomst)"</string>
+ <string name="bluetooth_connected_no_headset_no_a2dp" msgid="9195757766755553810">"Ansluten (ingen telefon och inga media)"</string>
+ <string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Medialjud"</string>
+ <string name="bluetooth_profile_headset" msgid="8658779596261212609">"Telefonljud"</string>
+ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"Filöverföring"</string>
+ <string name="bluetooth_profile_hid" msgid="3680729023366986480">"Indataenhet"</string>
+ <string name="bluetooth_profile_pan" msgid="3391606497945147673">"Internetåtkomst"</string>
+ <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"Kontaktdelning"</string>
+ <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"Använd för kontaktdelning"</string>
+ <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"Delning av Internetanslutning"</string>
+ <string name="bluetooth_profile_map" msgid="5465271250454324383">"Meddelandeåtkomst"</string>
+ <string name="bluetooth_profile_sap" msgid="5764222021851283125">"SIM-åtkomst"</string>
+ <string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"Ansluten till medialjud"</string>
+ <string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"Ansluten till telefonens ljud"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"Ansluten till filöverföringsserver"</string>
+ <string name="bluetooth_map_profile_summary_connected" msgid="8191407438851351713">"Ansluten till MAP"</string>
+ <string name="bluetooth_sap_profile_summary_connected" msgid="8561765057453083838">"Ansluten till SAP"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"Inte ansluten till filöverföringsserver"</string>
+ <string name="bluetooth_hid_profile_summary_connected" msgid="3381760054215168689">"Ansluten till indataenhet"</string>
+ <string name="bluetooth_pan_user_profile_summary_connected" msgid="4602294638909590612">"Ansluten för Internetåtkomst"</string>
+ <string name="bluetooth_pan_nap_profile_summary_connected" msgid="1561383706411975199">"Dela lokal Internetanslutning med enhet"</string>
+ <string name="bluetooth_pan_profile_summary_use_for" msgid="5664884523822068653">"Använd för Internetåtkomst"</string>
+ <string name="bluetooth_map_profile_summary_use_for" msgid="5154200119919927434">"Använd för MAP"</string>
+ <string name="bluetooth_sap_profile_summary_use_for" msgid="7085362712786907993">"Använd för SIM-åtkomst"</string>
+ <string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"Använd för medialjud"</string>
+ <string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"Använd för telefonens ljud"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"Använd för filöverföring"</string>
+ <string name="bluetooth_hid_profile_summary_use_for" msgid="232727040453645139">"Använd för inmatning"</string>
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"Parkoppling"</string>
+ <string name="bluetooth_pairing_accept_all_caps" msgid="6061699265220789149">"KOPPLA"</string>
+ <string name="bluetooth_pairing_decline" msgid="4185420413578948140">"Avbryt"</string>
+ <string name="bluetooth_pairing_will_share_phonebook" msgid="4982239145676394429">"Om du kopplar enheten får du tillgång till dina kontakter och din samtalshistorik när du är ansluten."</string>
+ <string name="bluetooth_pairing_error_message" msgid="3748157733635947087">"Det gick inte att koppla till <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="8337234855188925274">"Det gick inte att koppla till <xliff:g id="DEVICE_NAME">%1$s</xliff:g> på grund av en felaktig PIN-kod eller nyckel."</string>
+ <string name="bluetooth_pairing_device_down_error_message" msgid="7870998403045801381">"Det går inte att kommunicera med <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"Parkoppling avvisad av <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="accessibility_wifi_off" msgid="1166761729660614716">"Wi-Fi är inaktiverat."</string>
+ <string name="accessibility_no_wifi" msgid="8834610636137374508">"Ingen Wi-Fi-anslutning."</string>
+ <string name="accessibility_wifi_one_bar" msgid="4869376278894301820">"Wi-Fi: en stapel."</string>
+ <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>
+ <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>
+ <string name="tether_settings_title_usb" msgid="6688416425801386511">"Internetdelning via USB"</string>
+ <string name="tether_settings_title_wifi" msgid="3277144155960302049">"Mobil surfpunkt"</string>
+ <string name="tether_settings_title_bluetooth" msgid="355855408317564420">"Delning via Bluetooth"</string>
+ <string name="tether_settings_title_usb_bluetooth" msgid="5355828977109785001">"Internetdelning"</string>
+ <string name="tether_settings_title_all" msgid="8356136101061143841">"Internetdelning och surfpunkt"</string>
+ <string name="managed_user_title" msgid="8101244883654409696">"Arbetsprofil"</string>
+ <string name="user_guest" msgid="8475274842845401871">"Gäst"</string>
+ <string name="unknown" msgid="1592123443519355854">"Okänd"</string>
+ <string name="running_process_item_user_label" msgid="3129887865552025943">"Användare: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
+ <string name="launch_defaults_some" msgid="313159469856372621">"Några standardinställningar har angetts"</string>
+ <string name="launch_defaults_none" msgid="4241129108140034876">"Inga standardinställningar har angetts"</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-sw/arrays.xml b/packages/SettingsLib/res/values-sw/arrays.xml
new file mode 100644
index 0000000..cbd906d
--- /dev/null
+++ b/packages/SettingsLib/res/values-sw/arrays.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="wifi_status">
+ <item msgid="1922181315419294640"></item>
+ <item msgid="8934131797783724664">"Inasafisha..."</item>
+ <item msgid="8513729475867537913">"Inaunganisha…"</item>
+ <item msgid="515055375277271756">"Inathibitisha..."</item>
+ <item msgid="1943354004029184381">"Inapata anwani ya Ip..."</item>
+ <item msgid="4221763391123233270">"Umeunganishwa"</item>
+ <item msgid="624838831631122137">"Imesimamishwa"</item>
+ <item msgid="7979680559596111948">"Inakatisha muunganisho..."</item>
+ <item msgid="1634960474403853625">"Muunganisho Umekatika"</item>
+ <item msgid="746097431216080650">"Haijafanikiwa"</item>
+ <item msgid="6367044185730295334">"Imezuiwa"</item>
+ <item msgid="503942654197908005">"Inaepuka kwa muda muunganisho mbovu"</item>
+ </string-array>
+ <string-array name="wifi_status_with_ssid">
+ <item msgid="7714855332363650812"></item>
+ <item msgid="8878186979715711006">"Inasafisha..."</item>
+ <item msgid="355508996603873860">"Inaunganisha kwa <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="554971459996405634">"Uhalalishaji kwa <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="7928343808033020343">"Inamiliki anwani ya IP kutoka <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="8937994881315223448">" Umeunganishwa kwa<xliff:g id="NETWORK_NAME">%1$s</xliff:g>"</item>
+ <item msgid="1330262655415760617">"Imesimamishwa"</item>
+ <item msgid="7698638434317271902">"inakatisha muunganisho kutoka <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="197508606402264311">"Muunganisho Umekatika"</item>
+ <item msgid="8578370891960825148">"Haijafanikiwa"</item>
+ <item msgid="5660739516542454527">"Imezuiwa"</item>
+ <item msgid="1805837518286731242">"Inaepuka kwa muda muunganisho mbovu"</item>
+ </string-array>
+</resources>
diff --git a/packages/SettingsLib/res/values-sw/strings.xml b/packages/SettingsLib/res/values-sw/strings.xml
new file mode 100644
index 0000000..8b77301
--- /dev/null
+++ b/packages/SettingsLib/res/values-sw/strings.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="wifi_fail_to_scan" msgid="1265540342578081461">"Haiwezi kutambaza mitandao"</string>
+ <string name="wifi_security_none" msgid="7985461072596594400">"Hamna"</string>
+ <string name="wifi_remembered" msgid="4955746899347821096">"Imehifadhiwa"</string>
+ <string name="wifi_disabled_generic" msgid="4259794910584943386">"Imelemazwa"</string>
+ <string name="wifi_disabled_network_failure" msgid="2364951338436007124">"Haikuweza Kusanidi IP"</string>
+ <string name="wifi_disabled_wifi_failure" msgid="3081668066612876581">"Haikuweza Kuunganisha kwenye WiFi"</string>
+ <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"Tatizo la uthibitishaji"</string>
+ <string name="wifi_not_in_range" msgid="1136191511238508967">"Haiko karibu"</string>
+ <string name="wifi_no_internet" msgid="9151470775868728896">"Hakuna Ufikiaji kwa Intaneti Uliogunduliwa, haitaweza kuunganisha kiotomatiki."</string>
+ <string name="saved_network" msgid="4352716707126620811">"Ilihifadhiwa na <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="connected_via_wfa" msgid="3805736726317410714">"Imeunganishwa kupitia Kisaidizi cha Wi-Fi"</string>
+ <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>
+ <string name="bluetooth_disconnected" msgid="6557104142667339895">"Imetenganishwa"</string>
+ <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Inatenganisha..."</string>
+ <string name="bluetooth_connecting" msgid="8555009514614320497">"Inaunganisha…"</string>
+ <string name="bluetooth_connected" msgid="6038755206916626419">"Umeunganishwa"</string>
+ <string name="bluetooth_pairing" msgid="1426882272690346242">"Inaoanisha..."</string>
+ <string name="bluetooth_connected_no_headset" msgid="2866994875046035609">"Imeunganishwa (hakuna simu)"</string>
+ <string name="bluetooth_connected_no_a2dp" msgid="4576188601581440337">"Imeunganishwa(hakuna vyombo vya habari)"</string>
+ <string name="bluetooth_connected_no_map" msgid="6504436917057479986">"Imeunganishwa (hakuna ufikiaji kwa ujumbe)"</string>
+ <string name="bluetooth_connected_no_headset_no_a2dp" msgid="9195757766755553810">"Imeunganishwa(hakuna simu au vyombo vya habari)"</string>
+ <string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Media ya sauti"</string>
+ <string name="bluetooth_profile_headset" msgid="8658779596261212609">"Sauti ya simu"</string>
+ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"Uhamishaji wa faili"</string>
+ <string name="bluetooth_profile_hid" msgid="3680729023366986480">"Kifaa cha kuingiza"</string>
+ <string name="bluetooth_profile_pan" msgid="3391606497945147673">"Ufikivu wa mtandao"</string>
+ <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"Kushiriki anwani"</string>
+ <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"Tumia kwa kushiriki anwani"</string>
+ <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"Kushiriki muunganisho wa tovuti"</string>
+ <string name="bluetooth_profile_map" msgid="5465271250454324383">"Ufikiaji wa Ujumbe"</string>
+ <string name="bluetooth_profile_sap" msgid="5764222021851283125">"Ufikiaji wa SIM"</string>
+ <string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"Imeunganishwa kwenye sikika ya njia ya mawasiliano"</string>
+ <string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"Imeunganishwa kwenye sauti ya simu"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"Imeunganishwa kwenye seva ya kuhamisha faili"</string>
+ <string name="bluetooth_map_profile_summary_connected" msgid="8191407438851351713">"Imeunganishwa kwenye ramani"</string>
+ <string name="bluetooth_sap_profile_summary_connected" msgid="8561765057453083838">"Imeunganishwa kwenye SAP"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"Haijaunganishwa kwenye seva ya kuhamisha faili"</string>
+ <string name="bluetooth_hid_profile_summary_connected" msgid="3381760054215168689">"Umeunganishwa kwa kifaa cha kuingiza"</string>
+ <string name="bluetooth_pan_user_profile_summary_connected" msgid="4602294638909590612">"Umeunganishwa kwa kifaa cha ufikia Mtandao"</string>
+ <string name="bluetooth_pan_nap_profile_summary_connected" msgid="1561383706411975199">"Kushiriki muunganisho wa mtandao wa nyumbani na kifaa"</string>
+ <string name="bluetooth_pan_profile_summary_use_for" msgid="5664884523822068653">"Tumia kwa ufikiaji mtandao"</string>
+ <string name="bluetooth_map_profile_summary_use_for" msgid="5154200119919927434">"Tumia kwa ramani"</string>
+ <string name="bluetooth_sap_profile_summary_use_for" msgid="7085362712786907993">"Tumia kwa ufikiaji wa SIM"</string>
+ <string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"Tumia kwa sauti ya media"</string>
+ <string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"Tumia kwa sauti ya simu"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"Tumia kwa hali faili"</string>
+ <string name="bluetooth_hid_profile_summary_use_for" msgid="232727040453645139">"Tumia kwa kuingiza"</string>
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"Oanisha"</string>
+ <string name="bluetooth_pairing_accept_all_caps" msgid="6061699265220789149">"OANISHA"</string>
+ <string name="bluetooth_pairing_decline" msgid="4185420413578948140">"Ghairi"</string>
+ <string name="bluetooth_pairing_will_share_phonebook" msgid="4982239145676394429">"Kuoanisha hutoa ruhusa ya kufikiwa kwa unaowasiliana nao na rekodi ya simu zilizopigwa unapounganishwa."</string>
+ <string name="bluetooth_pairing_error_message" msgid="3748157733635947087">"Haikuwezakulinganisha na <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="8337234855188925274">"Haikuweza kulingana na <xliff:g id="DEVICE_NAME">%1$s</xliff:g> kwa sababu ya PIN isiyo sahihi au msimbo ya kuingia."</string>
+ <string name="bluetooth_pairing_device_down_error_message" msgid="7870998403045801381">"Haiwezi kuanzisha mawasiliano na <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"Ulinganishaji umekataliwa na <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="accessibility_wifi_off" msgid="1166761729660614716">"Wifi imezimwa."</string>
+ <string name="accessibility_no_wifi" msgid="8834610636137374508">"Wifi imeondolewa."</string>
+ <string name="accessibility_wifi_one_bar" msgid="4869376278894301820">"Kipima mtandao kimoja cha Wifi."</string>
+ <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>
+ <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>
+ <string name="tether_settings_title_usb" msgid="6688416425801386511">"Shiriki intaneti kwa USB"</string>
+ <string name="tether_settings_title_wifi" msgid="3277144155960302049">"Intaneti ya kusambazwa"</string>
+ <string name="tether_settings_title_bluetooth" msgid="355855408317564420">"Shiriki intaneti kwa Bluetooth"</string>
+ <string name="tether_settings_title_usb_bluetooth" msgid="5355828977109785001">"Inazuia"</string>
+ <string name="tether_settings_title_all" msgid="8356136101061143841">"Kushiriki na kusambaza intaneti"</string>
+ <string name="managed_user_title" msgid="8101244883654409696">"Wasifu wa kazi"</string>
+ <string name="user_guest" msgid="8475274842845401871">"Aliyealikwa"</string>
+ <string name="unknown" msgid="1592123443519355854">"Haijulikani"</string>
+ <string name="running_process_item_user_label" msgid="3129887865552025943">"Mtumiaji: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
+ <string name="launch_defaults_some" msgid="313159469856372621">"Baadhi ya chaguo-msingi zimewekwa"</string>
+ <string name="launch_defaults_none" msgid="4241129108140034876">"Hakuna chaguo-misingi zilizowekwa"</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-ta-rIN/arrays.xml b/packages/SettingsLib/res/values-ta-rIN/arrays.xml
new file mode 100644
index 0000000..c554fea
--- /dev/null
+++ b/packages/SettingsLib/res/values-ta-rIN/arrays.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="wifi_status">
+ <item msgid="1922181315419294640"></item>
+ <item msgid="8934131797783724664">"ஸ்கேன் செய்கிறது…"</item>
+ <item msgid="8513729475867537913">"இணைக்கிறது..."</item>
+ <item msgid="515055375277271756">"அங்கீகரிக்கிறது..."</item>
+ <item msgid="1943354004029184381">"IP முகவரியைப் பெறுகிறது…"</item>
+ <item msgid="4221763391123233270">"இணைக்கப்பட்டது"</item>
+ <item msgid="624838831631122137">"இடைநீக்கப்பட்டது"</item>
+ <item msgid="7979680559596111948">"துண்டிக்கிறது..."</item>
+ <item msgid="1634960474403853625">"தொடர்பு துண்டிக்கப்பட்டது"</item>
+ <item msgid="746097431216080650">"தோல்வி"</item>
+ <item msgid="6367044185730295334">"தடுக்கப்பட்டது"</item>
+ <item msgid="503942654197908005">"வேகம் குறைந்த இணைப்பைத் தற்காலிகமாகத் தவிர்க்கிறது"</item>
+ </string-array>
+ <string-array name="wifi_status_with_ssid">
+ <item msgid="7714855332363650812"></item>
+ <item msgid="8878186979715711006">"ஸ்கேன் செய்கிறது…"</item>
+ <item msgid="355508996603873860">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> இல் இணைக்கிறது…"</item>
+ <item msgid="554971459996405634">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> உடன் அங்கீகரிக்கிறது…"</item>
+ <item msgid="7928343808033020343">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> இலிருந்து IP முகவரியைப் பெறுகிறது…"</item>
+ <item msgid="8937994881315223448">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> உடன் இணைக்கப்பட்டது"</item>
+ <item msgid="1330262655415760617">"இடைநீக்கப்பட்டது"</item>
+ <item msgid="7698638434317271902">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> இலிருந்து தொடர்பு துண்டிக்கப்படுகிறது…"</item>
+ <item msgid="197508606402264311">"தொடர்பு துண்டிக்கப்பட்டது"</item>
+ <item msgid="8578370891960825148">"தோல்வி"</item>
+ <item msgid="5660739516542454527">"தடுக்கப்பட்டது"</item>
+ <item msgid="1805837518286731242">"வேகம் குறைந்த இணைப்பைத் தற்காலிகமாகத் தவிர்க்கிறது"</item>
+ </string-array>
+</resources>
diff --git a/packages/SettingsLib/res/values-ta-rIN/strings.xml b/packages/SettingsLib/res/values-ta-rIN/strings.xml
new file mode 100644
index 0000000..b9bc93c
--- /dev/null
+++ b/packages/SettingsLib/res/values-ta-rIN/strings.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="wifi_fail_to_scan" msgid="1265540342578081461">"நெட்வொர்க்குகளுக்கு ஸ்கேன் செய்யப்படவில்லை"</string>
+ <string name="wifi_security_none" msgid="7985461072596594400">"ஏதுமில்லை"</string>
+ <string name="wifi_remembered" msgid="4955746899347821096">"சேமிக்கப்பட்டது"</string>
+ <string name="wifi_disabled_generic" msgid="4259794910584943386">"முடக்கப்பட்டது"</string>
+ <string name="wifi_disabled_network_failure" msgid="2364951338436007124">"IP உள்ளமைவில் தோல்வி"</string>
+ <string name="wifi_disabled_wifi_failure" msgid="3081668066612876581">"வைஃபை இணைப்பில் தோல்வி"</string>
+ <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"அங்கீகரிப்புச் சிக்கல்"</string>
+ <string name="wifi_not_in_range" msgid="1136191511238508967">"தொடர்பு எல்லையில் இல்லை"</string>
+ <string name="wifi_no_internet" msgid="9151470775868728896">"இணைய அணுகல் இல்லை, மீண்டும் தானாக இணையாது."</string>
+ <string name="saved_network" msgid="4352716707126620811">"<xliff:g id="NAME">%1$s</xliff:g> சேமித்தது"</string>
+ <string name="connected_via_wfa" msgid="3805736726317410714">"வைஃபை அசிஸ்டண்ட் மூலம் இணைக்கப்பட்டது"</string>
+ <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>
+ <string name="bluetooth_disconnected" msgid="6557104142667339895">"தொடர்பு துண்டிக்கப்பட்டது"</string>
+ <string name="bluetooth_disconnecting" msgid="8913264760027764974">"துண்டிக்கிறது..."</string>
+ <string name="bluetooth_connecting" msgid="8555009514614320497">"இணைக்கிறது..."</string>
+ <string name="bluetooth_connected" msgid="6038755206916626419">"இணைக்கப்பட்டது"</string>
+ <string name="bluetooth_pairing" msgid="1426882272690346242">"இணைக்கிறது..."</string>
+ <string name="bluetooth_connected_no_headset" msgid="2866994875046035609">"இணைக்கப்பட்டது (மொபைல் இல்லை)"</string>
+ <string name="bluetooth_connected_no_a2dp" msgid="4576188601581440337">"இணைக்கப்பட்டது (மீடியா இல்லை)"</string>
+ <string name="bluetooth_connected_no_map" msgid="6504436917057479986">"இணைக்கப்பட்டது (செய்திக்கான அணுகல் இல்லை)"</string>
+ <string name="bluetooth_connected_no_headset_no_a2dp" msgid="9195757766755553810">"இணைக்கப்பட்டது (மொபைல் அல்லது மீடியாவுடன் அல்ல)"</string>
+ <string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"மீடியா ஆடியோ"</string>
+ <string name="bluetooth_profile_headset" msgid="8658779596261212609">"மொபைல் ஆடியோ"</string>
+ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"கோப்பு இடமாற்றம்"</string>
+ <string name="bluetooth_profile_hid" msgid="3680729023366986480">"உள்ளீட்டுச் சாதனம்"</string>
+ <string name="bluetooth_profile_pan" msgid="3391606497945147673">"இணைய அணுகல்"</string>
+ <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"தொடர்புப் பகிர்தல்"</string>
+ <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"தொடர்புப் பகிர்தலுக்குப் பயன்படுத்து"</string>
+ <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"இணைய இணைப்பு பகிர்தல்"</string>
+ <string name="bluetooth_profile_map" msgid="5465271250454324383">"செய்திக்கான அணுகல்"</string>
+ <string name="bluetooth_profile_sap" msgid="5764222021851283125">"சிம் அணுகல்"</string>
+ <string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"மீடியா ஆடியோவுடன் இணைக்கப்பட்டது"</string>
+ <string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"மொபைல் ஆடியோவுடன் இணைக்கப்பட்டது"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"கோப்பைப் பரிமாற்றும் சேவையகத்துடன் இணைக்கப்பட்டது"</string>
+ <string name="bluetooth_map_profile_summary_connected" msgid="8191407438851351713">"வரைபடத்துடன் இணைக்கப்பட்டது"</string>
+ <string name="bluetooth_sap_profile_summary_connected" msgid="8561765057453083838">"SAP உடன் இணைக்கப்பட்டது"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"கோப்பு இடமாற்றும் சேவையகத்துடன் இணைக்கப்படவில்லை"</string>
+ <string name="bluetooth_hid_profile_summary_connected" msgid="3381760054215168689">"உள்ளீட்டுச் சாதனத்துடன் இணைக்கப்பட்டது"</string>
+ <string name="bluetooth_pan_user_profile_summary_connected" msgid="4602294638909590612">"இணைய அணுகலுக்காகச் சாதனம் இணைக்கப்பட்டது"</string>
+ <string name="bluetooth_pan_nap_profile_summary_connected" msgid="1561383706411975199">"சாதனத்துடன் அக இணைய இணைப்பைப் பகிர்கிறது"</string>
+ <string name="bluetooth_pan_profile_summary_use_for" msgid="5664884523822068653">"இணைய அணுகலுக்காகப் பயன்படுத்து"</string>
+ <string name="bluetooth_map_profile_summary_use_for" msgid="5154200119919927434">"வரைபடத்திற்குப் பயன்படுத்து"</string>
+ <string name="bluetooth_sap_profile_summary_use_for" msgid="7085362712786907993">"சிம் அணுகலுக்குப் பயன்படுத்தும்"</string>
+ <string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"மீடியாவின் ஆடியோவிற்குப் பயன்படுத்து"</string>
+ <string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"மொபைல் ஆடியோவைப் பயன்படுத்து"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"கோப்பு பரிமாற்றத்திற்காகப் பயன்படுத்து"</string>
+ <string name="bluetooth_hid_profile_summary_use_for" msgid="232727040453645139">"உள்ளீட்டுக்குப் பயன்படுத்து"</string>
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"இணை"</string>
+ <string name="bluetooth_pairing_accept_all_caps" msgid="6061699265220789149">"இணை"</string>
+ <string name="bluetooth_pairing_decline" msgid="4185420413578948140">"ரத்துசெய்"</string>
+ <string name="bluetooth_pairing_will_share_phonebook" msgid="4982239145676394429">"இணைத்தலானது உங்கள் தொடர்புகள், அழைப்பு வரலாறுக்கான அணுகலை வழங்குகிறது."</string>
+ <string name="bluetooth_pairing_error_message" msgid="3748157733635947087">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> உடன் இணைய முடியவில்லை."</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="8337234855188925274">"தவறான பின் அல்லது கடவுச்சொல் காரணமாக <xliff:g id="DEVICE_NAME">%1$s</xliff:g> உடன் இணைக்க முடியவில்லை."</string>
+ <string name="bluetooth_pairing_device_down_error_message" msgid="7870998403045801381">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> உடன் இணைக்க முடியவில்லை."</string>
+ <string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> இணைப்பதை நிராகரித்தது."</string>
+ <string name="accessibility_wifi_off" msgid="1166761729660614716">"வைஃபை முடக்கப்பட்டது."</string>
+ <string name="accessibility_no_wifi" msgid="8834610636137374508">"வைஃபை துண்டிக்கப்பட்டது."</string>
+ <string name="accessibility_wifi_one_bar" msgid="4869376278894301820">"வைஃபை சிக்னல்: ஒரு கோடு."</string>
+ <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>
+ <string name="process_kernel_label" msgid="3916858646836739323">"Android OS"</string>
+ <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"அகற்றப்பட்ட பயன்பாடுகள்"</string>
+ <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"அகற்றப்பட்ட பயன்பாடுகள் மற்றும் பயனர்கள்"</string>
+ <string name="tether_settings_title_usb" msgid="6688416425801386511">"USB டெதெரிங்"</string>
+ <string name="tether_settings_title_wifi" msgid="3277144155960302049">"போர்ட்டபிள் ஹாட்ஸ்பாட்"</string>
+ <string name="tether_settings_title_bluetooth" msgid="355855408317564420">"புளூடூத் டெதெரிங்"</string>
+ <string name="tether_settings_title_usb_bluetooth" msgid="5355828977109785001">"டெதெரிங்"</string>
+ <string name="tether_settings_title_all" msgid="8356136101061143841">"டெதெரிங் & போர்டபிள் ஹாட்ஸ்பாட்"</string>
+ <string name="managed_user_title" msgid="8101244883654409696">"பணி சுயவிவரம்"</string>
+ <string name="user_guest" msgid="8475274842845401871">"அழைக்கப்பட்டவர்"</string>
+ <string name="unknown" msgid="1592123443519355854">"அறியப்படாத"</string>
+ <string name="running_process_item_user_label" msgid="3129887865552025943">"பயனர்: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
+ <string name="launch_defaults_some" msgid="313159469856372621">"சில இயல்புநிலைகள் அமைக்கப்பட்டன"</string>
+ <string name="launch_defaults_none" msgid="4241129108140034876">"இயல்புநிலைகள் எதுவும் அமைக்கப்படவில்லை"</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-te-rIN/arrays.xml b/packages/SettingsLib/res/values-te-rIN/arrays.xml
new file mode 100644
index 0000000..e21a5f4
--- /dev/null
+++ b/packages/SettingsLib/res/values-te-rIN/arrays.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="wifi_status">
+ <item msgid="1922181315419294640"></item>
+ <item msgid="8934131797783724664">"స్కాన్ చేస్తోంది…"</item>
+ <item msgid="8513729475867537913">"కనెక్ట్ చేస్తోంది..."</item>
+ <item msgid="515055375277271756">"ప్రామాణీకరిస్తోంది…"</item>
+ <item msgid="1943354004029184381">"IP చిరునామాను పొందుతోంది…"</item>
+ <item msgid="4221763391123233270">"కనెక్ట్ చేయబడింది"</item>
+ <item msgid="624838831631122137">"తాత్కాలికంగా రద్దు చేయబడింది"</item>
+ <item msgid="7979680559596111948">"డిస్కనెక్ట్ చేస్తోంది..."</item>
+ <item msgid="1634960474403853625">"డిస్కనెక్ట్ చేయబడింది"</item>
+ <item msgid="746097431216080650">"విఫలమైంది"</item>
+ <item msgid="6367044185730295334">"బ్లాక్ చేయబడింది"</item>
+ <item msgid="503942654197908005">"బలహీన కనెక్షన్ను తాత్కాలికంగా నివారిస్తోంది"</item>
+ </string-array>
+ <string-array name="wifi_status_with_ssid">
+ <item msgid="7714855332363650812"></item>
+ <item msgid="8878186979715711006">"స్కాన్ చేస్తోంది…"</item>
+ <item msgid="355508996603873860">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g>కి కనెక్ట్ చేస్తోంది…"</item>
+ <item msgid="554971459996405634">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g>తో ప్రామాణీకరిస్తోంది…"</item>
+ <item msgid="7928343808033020343">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> నుండి IP చిరునామాను పొందుతోంది…"</item>
+ <item msgid="8937994881315223448">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g>కి కనెక్ట్ చేయబడింది"</item>
+ <item msgid="1330262655415760617">"తాత్కాలికంగా రద్దు చేయబడింది"</item>
+ <item msgid="7698638434317271902">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> నుండి డిస్కనెక్ట్ చేస్తోంది…"</item>
+ <item msgid="197508606402264311">"డిస్కనెక్ట్ చేయబడింది"</item>
+ <item msgid="8578370891960825148">"విఫలమైంది"</item>
+ <item msgid="5660739516542454527">"బ్లాక్ చేయబడింది"</item>
+ <item msgid="1805837518286731242">"బలహీన కనెక్షన్ను తాత్కాలికంగా నివారిస్తోంది"</item>
+ </string-array>
+</resources>
diff --git a/packages/SettingsLib/res/values-te-rIN/strings.xml b/packages/SettingsLib/res/values-te-rIN/strings.xml
new file mode 100644
index 0000000..6f66940
--- /dev/null
+++ b/packages/SettingsLib/res/values-te-rIN/strings.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="wifi_fail_to_scan" msgid="1265540342578081461">"నెట్వర్క్ల కోసం స్కాన్ చేయడం సాధ్యపడదు"</string>
+ <string name="wifi_security_none" msgid="7985461072596594400">"ఏదీ లేదు"</string>
+ <string name="wifi_remembered" msgid="4955746899347821096">"సేవ్ చేయబడింది"</string>
+ <string name="wifi_disabled_generic" msgid="4259794910584943386">"నిలిపివేయబడింది"</string>
+ <string name="wifi_disabled_network_failure" msgid="2364951338436007124">"IP కాన్ఫిగరేషన్ వైఫల్యం"</string>
+ <string name="wifi_disabled_wifi_failure" msgid="3081668066612876581">"WiFi కనెక్షన్ వైఫల్యం"</string>
+ <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"ప్రామాణీకరణ సమస్య"</string>
+ <string name="wifi_not_in_range" msgid="1136191511238508967">"పరిధిలో లేదు"</string>
+ <string name="wifi_no_internet" msgid="9151470775868728896">"ఇంటర్నెట్ ప్రాప్యత కనుగొనబడలేదు, స్వయంచాలకంగా మళ్లీ కనెక్ట్ చేయబడదు."</string>
+ <string name="saved_network" msgid="4352716707126620811">"<xliff:g id="NAME">%1$s</xliff:g> ద్వారా సేవ్ చేయబడింది"</string>
+ <string name="connected_via_wfa" msgid="3805736726317410714">"Wi‑Fi సహాయకం ద్వారా కనెక్ట్ చేయబడింది"</string>
+ <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>
+ <string name="bluetooth_disconnected" msgid="6557104142667339895">"డిస్కనెక్ట్ చేయబడింది"</string>
+ <string name="bluetooth_disconnecting" msgid="8913264760027764974">"డిస్కనెక్ట్ చేస్తోంది..."</string>
+ <string name="bluetooth_connecting" msgid="8555009514614320497">"కనెక్ట్ చేస్తోంది..."</string>
+ <string name="bluetooth_connected" msgid="6038755206916626419">"కనెక్ట్ చేయబడింది"</string>
+ <string name="bluetooth_pairing" msgid="1426882272690346242">"జత చేస్తోంది..."</string>
+ <string name="bluetooth_connected_no_headset" msgid="2866994875046035609">"కనెక్ట్ చేయబడింది (ఫోన్ కాదు)"</string>
+ <string name="bluetooth_connected_no_a2dp" msgid="4576188601581440337">"కనెక్ట్ చేయబడింది (మీడియా కాదు)"</string>
+ <string name="bluetooth_connected_no_map" msgid="6504436917057479986">"కనెక్ట్ చేయబడింది (సందేశ ప్రాప్యత లేదు)"</string>
+ <string name="bluetooth_connected_no_headset_no_a2dp" msgid="9195757766755553810">"కనెక్ట్ చేయబడింది (ఫోన్ లేదా మీడియా కాకుండా)"</string>
+ <string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"మీడియా ఆడియో"</string>
+ <string name="bluetooth_profile_headset" msgid="8658779596261212609">"ఫోన్ ఆడియో"</string>
+ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"ఫైల్ బదిలీ"</string>
+ <string name="bluetooth_profile_hid" msgid="3680729023366986480">"ఇన్పుట్ పరికరం"</string>
+ <string name="bluetooth_profile_pan" msgid="3391606497945147673">"ఇంటర్నెట్ ప్రాప్యత"</string>
+ <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"పరిచయ భాగస్వామ్యం"</string>
+ <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"పరిచయ భాగస్వామ్యం కోసం ఉపయోగించు"</string>
+ <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"ఇంటర్నెట్ కనెక్షన్ భాగస్వామ్యం"</string>
+ <string name="bluetooth_profile_map" msgid="5465271250454324383">"సందేశ ప్రాప్యత"</string>
+ <string name="bluetooth_profile_sap" msgid="5764222021851283125">"SIM ప్రాప్యత"</string>
+ <string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"మీడియా ఆడియోకు కనెక్ట్ చేయబడింది"</string>
+ <string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"ఫోన్ ఆడియోకు కనెక్ట్ చేయబడింది"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"ఫైల్ బదిలీ సర్వర్కు కనెక్ట్ చేయబడింది"</string>
+ <string name="bluetooth_map_profile_summary_connected" msgid="8191407438851351713">"మ్యాప్కు కనెక్ట్ చేయబడింది"</string>
+ <string name="bluetooth_sap_profile_summary_connected" msgid="8561765057453083838">"SAPకి కనెక్ట్ చేయబడింది"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"ఫైల్ బదిలీ సర్వర్కు కనెక్ట్ చేయబడలేదు"</string>
+ <string name="bluetooth_hid_profile_summary_connected" msgid="3381760054215168689">"ఇన్పుట్ పరికరానికి కనెక్ట్ చేయబడింది"</string>
+ <string name="bluetooth_pan_user_profile_summary_connected" msgid="4602294638909590612">"ఇంటర్నెట్ ప్రాప్యత కోసం పరికరానికి కనెక్ట్ చేయబడింది"</string>
+ <string name="bluetooth_pan_nap_profile_summary_connected" msgid="1561383706411975199">"స్థానిక ఇంటర్నెట్ కనెక్షన్ను పరికరంతో భాగస్వామ్యం చేయడం"</string>
+ <string name="bluetooth_pan_profile_summary_use_for" msgid="5664884523822068653">"ఇంటర్నెట్ ప్రాప్యత కోసం ఉపయోగించు"</string>
+ <string name="bluetooth_map_profile_summary_use_for" msgid="5154200119919927434">"మ్యాప్ కోసం ఉపయోగించు"</string>
+ <string name="bluetooth_sap_profile_summary_use_for" msgid="7085362712786907993">"SIM ప్రాప్యత కోసం ఉపయోగించబడుతుంది"</string>
+ <string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"మీడియా ఆడియో కోసం ఉపయోగించు"</string>
+ <string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"ఫోన్ ఆడియో కోసం ఉపయోగించు"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"ఫైల్ బదిలీ కోసం ఉపయోగించు"</string>
+ <string name="bluetooth_hid_profile_summary_use_for" msgid="232727040453645139">"ఇన్పుట్ కోసం ఉపయోగించు"</string>
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"జత చేయి"</string>
+ <string name="bluetooth_pairing_accept_all_caps" msgid="6061699265220789149">"జత చేయి"</string>
+ <string name="bluetooth_pairing_decline" msgid="4185420413578948140">"రద్దు చేయి"</string>
+ <string name="bluetooth_pairing_will_share_phonebook" msgid="4982239145676394429">"జత చేయడం వలన కనెక్ట్ చేయబడినప్పుడు మీ పరిచయాలకు మరియు కాల్ చరిత్రకు ప్రాప్యతను మంజూరు చేస్తుంది."</string>
+ <string name="bluetooth_pairing_error_message" msgid="3748157733635947087">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>తో జత చేయడం సాధ్యపడలేదు."</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="8337234855188925274">"పిన్ లేదా పాస్కీ చెల్లని కారణంగా <xliff:g id="DEVICE_NAME">%1$s</xliff:g>తో జత చేయడం సాధ్యపడలేదు."</string>
+ <string name="bluetooth_pairing_device_down_error_message" msgid="7870998403045801381">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>తో కమ్యూనికేట్ చేయడం సాధ్యపడదు."</string>
+ <string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> జత చేయడాన్ని తిరస్కరించింది."</string>
+ <string name="accessibility_wifi_off" msgid="1166761729660614716">"Wifi ఆఫ్లో ఉంది."</string>
+ <string name="accessibility_no_wifi" msgid="8834610636137374508">"Wifi డిస్కనెక్ట్ చేయబడింది."</string>
+ <string name="accessibility_wifi_one_bar" msgid="4869376278894301820">"Wifi సిగ్నల్ ఒక బార్ ఉంది."</string>
+ <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>
+ <string name="process_kernel_label" msgid="3916858646836739323">"Android OS"</string>
+ <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"తీసివేయబడిన అనువర్తనాలు"</string>
+ <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"తీసివేయబడిన అనువర్తనాలు మరియు వినియోగదారులు"</string>
+ <string name="tether_settings_title_usb" msgid="6688416425801386511">"USB టీథరింగ్"</string>
+ <string name="tether_settings_title_wifi" msgid="3277144155960302049">"పోర్టబుల్ హాట్స్పాట్"</string>
+ <string name="tether_settings_title_bluetooth" msgid="355855408317564420">"బ్లూటూత్ టీథరింగ్"</string>
+ <string name="tether_settings_title_usb_bluetooth" msgid="5355828977109785001">"టీథరింగ్"</string>
+ <string name="tether_settings_title_all" msgid="8356136101061143841">"టీథరింగ్ & పోర్టబుల్ హాట్స్పాట్"</string>
+ <string name="managed_user_title" msgid="8101244883654409696">"కార్యాలయ ప్రొఫైల్"</string>
+ <string name="user_guest" msgid="8475274842845401871">"అతిథి"</string>
+ <string name="unknown" msgid="1592123443519355854">"తెలియదు"</string>
+ <string name="running_process_item_user_label" msgid="3129887865552025943">"వినియోగదారు: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
+ <string name="launch_defaults_some" msgid="313159469856372621">"కొన్ని డిఫాల్ట్లు సెట్ చేయబడ్డాయి"</string>
+ <string name="launch_defaults_none" msgid="4241129108140034876">"డిఫాల్ట్లు ఏవీ సెట్ చేయబడలేదు"</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-th/arrays.xml b/packages/SettingsLib/res/values-th/arrays.xml
new file mode 100644
index 0000000..190a37d
--- /dev/null
+++ b/packages/SettingsLib/res/values-th/arrays.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="wifi_status">
+ <item msgid="1922181315419294640"></item>
+ <item msgid="8934131797783724664">"กำลังสแกน..."</item>
+ <item msgid="8513729475867537913">"กำลังเชื่อมต่อ…"</item>
+ <item msgid="515055375277271756">"กำลังตรวจสอบความถูกต้อง…"</item>
+ <item msgid="1943354004029184381">"กำลังรับที่อยู่ IP…"</item>
+ <item msgid="4221763391123233270">"เชื่อมต่อแล้ว"</item>
+ <item msgid="624838831631122137">"ระงับไว้"</item>
+ <item msgid="7979680559596111948">"กำลังตัดการเชื่อมต่อ..."</item>
+ <item msgid="1634960474403853625">"ตัดการเชื่อมต่อ"</item>
+ <item msgid="746097431216080650">"ไม่สำเร็จ"</item>
+ <item msgid="6367044185730295334">"ถูกบล็อก"</item>
+ <item msgid="503942654197908005">"หลีกเลี่ยงการเชื่อมต่อกับสัญญาณที่ไม่แรงพอชั่วคราว"</item>
+ </string-array>
+ <string-array name="wifi_status_with_ssid">
+ <item msgid="7714855332363650812"></item>
+ <item msgid="8878186979715711006">"กำลังสแกน..."</item>
+ <item msgid="355508996603873860">"กำลังเชื่อมต่อไปยัง <xliff:g id="NETWORK_NAME">%1$s</xliff:g>..."</item>
+ <item msgid="554971459996405634">"กำลังตรวจสอบสิทธิ์กับ<xliff:g id="NETWORK_NAME">%1$s</xliff:g>..."</item>
+ <item msgid="7928343808033020343">"กำลังรับที่อยู่ IP จาก <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="8937994881315223448">"เชื่อมต่อกับ <xliff:g id="NETWORK_NAME">%1$s</xliff:g> แล้ว"</item>
+ <item msgid="1330262655415760617">"ระงับไว้"</item>
+ <item msgid="7698638434317271902">"กำลังตัดการเชื่อมต่อจาก <xliff:g id="NETWORK_NAME">%1$s</xliff:g>"</item>
+ <item msgid="197508606402264311">"ตัดการเชื่อมต่อ"</item>
+ <item msgid="8578370891960825148">"ไม่สำเร็จ"</item>
+ <item msgid="5660739516542454527">"ถูกบล็อก"</item>
+ <item msgid="1805837518286731242">"หลีกเลี่ยงการเชื่อมต่อกับสัญญาณที่ไม่แรงพอชั่วคราว"</item>
+ </string-array>
+</resources>
diff --git a/packages/SettingsLib/res/values-th/strings.xml b/packages/SettingsLib/res/values-th/strings.xml
new file mode 100644
index 0000000..c1febf2
--- /dev/null
+++ b/packages/SettingsLib/res/values-th/strings.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="wifi_fail_to_scan" msgid="1265540342578081461">"ไม่สามารถสแกนหาเครือข่าย"</string>
+ <string name="wifi_security_none" msgid="7985461072596594400">"ไม่มี"</string>
+ <string name="wifi_remembered" msgid="4955746899347821096">"บันทึกแล้ว"</string>
+ <string name="wifi_disabled_generic" msgid="4259794910584943386">"ปิดอยู่"</string>
+ <string name="wifi_disabled_network_failure" msgid="2364951338436007124">"การกำหนดค่า IP ล้มเหลว"</string>
+ <string name="wifi_disabled_wifi_failure" msgid="3081668066612876581">"การเชื่อมต่อ Wi-Fi ล้มเหลว"</string>
+ <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"ปัญหาในการตรวจสอบสิทธิ์"</string>
+ <string name="wifi_not_in_range" msgid="1136191511238508967">"ไม่อยู่ในพื้นที่ให้บริการ"</string>
+ <string name="wifi_no_internet" msgid="9151470775868728896">"ไม่พบการเข้าถึงอินเทอร์เน็ต ระบบจะไม่เชื่อมต่อใหม่โดยอัตโนมัติ"</string>
+ <string name="saved_network" msgid="4352716707126620811">"บันทึกโดย <xliff:g id="NAME">%1$s</xliff:g> แล้ว"</string>
+ <string name="connected_via_wfa" msgid="3805736726317410714">"เชื่อมต่อผ่านตัวช่วย Wi-Fi อยู่"</string>
+ <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>
+ <string name="bluetooth_disconnected" msgid="6557104142667339895">"ตัดการเชื่อมต่อ"</string>
+ <string name="bluetooth_disconnecting" msgid="8913264760027764974">"กำลังตัดการเชื่อมต่อ..."</string>
+ <string name="bluetooth_connecting" msgid="8555009514614320497">"กำลังเชื่อมต่อ…"</string>
+ <string name="bluetooth_connected" msgid="6038755206916626419">"เชื่อมต่อแล้ว"</string>
+ <string name="bluetooth_pairing" msgid="1426882272690346242">"กำลังกำหนดค่าอุปกรณ์ให้ตรงกัน..."</string>
+ <string name="bluetooth_connected_no_headset" msgid="2866994875046035609">"เชื่อมต่อแล้ว (ยกเว้นเสียงโทรศัพท์)"</string>
+ <string name="bluetooth_connected_no_a2dp" msgid="4576188601581440337">"เชื่อมต่อแล้ว (ยกเว้นเสียงสื่อ)"</string>
+ <string name="bluetooth_connected_no_map" msgid="6504436917057479986">"เชื่อมต่อแล้ว (ไม่มีการเข้าถึงข้อความ)"</string>
+ <string name="bluetooth_connected_no_headset_no_a2dp" msgid="9195757766755553810">"เชื่อมต่อ (ยกเว้นเสียงโทรศัพท์หรือสื่อ)"</string>
+ <string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"เสียงสื่อ"</string>
+ <string name="bluetooth_profile_headset" msgid="8658779596261212609">"เสียงโทรศัพท์"</string>
+ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"การถ่ายโอนไฟล์"</string>
+ <string name="bluetooth_profile_hid" msgid="3680729023366986480">"อุปกรณ์อินพุต"</string>
+ <string name="bluetooth_profile_pan" msgid="3391606497945147673">"การเข้าถึงอินเทอร์เน็ต"</string>
+ <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"การแชร์รายชื่อผู้ติดต่อ"</string>
+ <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"ใช้สำหรับการแชร์รายชื่อผู้ติดต่อ"</string>
+ <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"การแชร์การเชื่อมต่ออินเทอร์เน็ต"</string>
+ <string name="bluetooth_profile_map" msgid="5465271250454324383">"การเข้าถึงข้อความ"</string>
+ <string name="bluetooth_profile_sap" msgid="5764222021851283125">"การเข้าถึงซิม"</string>
+ <string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"เชื่อมต่อกับระบบเสียงของสื่อแล้ว"</string>
+ <string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"เชื่อมต่อกับระบบเสียงของโทรศัพท์แล้ว"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"เชื่อมต่อกับเซิร์ฟเวอร์สำหรับโอนไฟล์แล้ว"</string>
+ <string name="bluetooth_map_profile_summary_connected" msgid="8191407438851351713">"เชื่อมต่อกับแผนที่แล้ว"</string>
+ <string name="bluetooth_sap_profile_summary_connected" msgid="8561765057453083838">"เชื่อมต่อ SAP แล้ว"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"ไม่ได้เชื่อมต่อกับเซิร์ฟเวอร์สำหรับโอนไฟล์"</string>
+ <string name="bluetooth_hid_profile_summary_connected" msgid="3381760054215168689">"เชื่อมต่อกับอุปกรณ์อินพุตแล้ว"</string>
+ <string name="bluetooth_pan_user_profile_summary_connected" msgid="4602294638909590612">"เชื่อมต่อกับอุปกรณ์สำหรับการเข้าถึงอินเทอร์เน็ต"</string>
+ <string name="bluetooth_pan_nap_profile_summary_connected" msgid="1561383706411975199">"กำลังแชร์อินเทอร์เน็ตกับอุปกรณ์"</string>
+ <string name="bluetooth_pan_profile_summary_use_for" msgid="5664884523822068653">"ใช้การเข้าถึงอินเทอร์เน็ต"</string>
+ <string name="bluetooth_map_profile_summary_use_for" msgid="5154200119919927434">"ใช้สำหรับแผนที่"</string>
+ <string name="bluetooth_sap_profile_summary_use_for" msgid="7085362712786907993">"ใช้สำหรับการเข้าถึงซิม"</string>
+ <string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"ใช้สำหรับระบบเสียงของสื่อ"</string>
+ <string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"ใช้สำหรับระบบเสียงของโทรศัพท์"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"ใช้สำหรับการโอนไฟล์"</string>
+ <string name="bluetooth_hid_profile_summary_use_for" msgid="232727040453645139">"ใช้สำหรับการป้อนข้อมูล"</string>
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"กำหนดค่าอุปกรณ์ให้ตรงกัน"</string>
+ <string name="bluetooth_pairing_accept_all_caps" msgid="6061699265220789149">"จับคู่อุปกรณ์"</string>
+ <string name="bluetooth_pairing_decline" msgid="4185420413578948140">"ยกเลิก"</string>
+ <string name="bluetooth_pairing_will_share_phonebook" msgid="4982239145676394429">"การจับคู่อุปกรณ์จะให้สิทธิ์การเข้าถึงที่อยู่ติดต่อและประวัติการโทรเมื่อเชื่อมต่อแล้ว"</string>
+ <string name="bluetooth_pairing_error_message" msgid="3748157733635947087">"ไม่สามารถจับคู่กับ <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="8337234855188925274">"ไม่สามารถจับคู่กับ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ได้เพราะ PIN หรือรหัสผ่านไม่ถูกต้อง"</string>
+ <string name="bluetooth_pairing_device_down_error_message" msgid="7870998403045801381">"ไม่สามารถเชื่อมต่อกับ <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+ <string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"การกำหนดค่าอุปกรณ์ให้ตรงกันถูกปฏิเสธโดย <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+ <string name="accessibility_wifi_off" msgid="1166761729660614716">"Wi-Fi ปิดอยู่"</string>
+ <string name="accessibility_no_wifi" msgid="8834610636137374508">"ไม่ได้เชื่อมต่อ Wi-Fi"</string>
+ <string name="accessibility_wifi_one_bar" msgid="4869376278894301820">"สัญญาณ Wi-Fi 1 ขีด"</string>
+ <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>
+ <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_wifi" msgid="3277144155960302049">"ฮอตสปอตแบบพกพาได้"</string>
+ <string name="tether_settings_title_bluetooth" msgid="355855408317564420">"ปล่อยสัญญาณบลูทูธ"</string>
+ <string name="tether_settings_title_usb_bluetooth" msgid="5355828977109785001">"การปล่อยสัญญาณ"</string>
+ <string name="tether_settings_title_all" msgid="8356136101061143841">"การปล่อยสัญญาณและฮอตสปอต"</string>
+ <string name="managed_user_title" msgid="8101244883654409696">"โปรไฟล์งาน"</string>
+ <string name="user_guest" msgid="8475274842845401871">"ผู้เข้าร่วม"</string>
+ <string name="unknown" msgid="1592123443519355854">"ไม่ทราบ"</string>
+ <string name="running_process_item_user_label" msgid="3129887865552025943">"ผู้ใช้: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
+ <string name="launch_defaults_some" msgid="313159469856372621">"ตั้งค่าเริ่มต้นไว้บางส่วน"</string>
+ <string name="launch_defaults_none" msgid="4241129108140034876">"ไม่ได้ตั้งค่าเริ่มต้น"</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-tl/arrays.xml b/packages/SettingsLib/res/values-tl/arrays.xml
new file mode 100644
index 0000000..35c9724
--- /dev/null
+++ b/packages/SettingsLib/res/values-tl/arrays.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="wifi_status">
+ <item msgid="1922181315419294640"></item>
+ <item msgid="8934131797783724664">"Nag-i-scan…"</item>
+ <item msgid="8513729475867537913">"Kumukonekta…"</item>
+ <item msgid="515055375277271756">"Pinapatunayan…"</item>
+ <item msgid="1943354004029184381">"Kumukuha ng IP address…"</item>
+ <item msgid="4221763391123233270">"Konektado"</item>
+ <item msgid="624838831631122137">"Suspendido"</item>
+ <item msgid="7979680559596111948">"Nadidiskonekta…"</item>
+ <item msgid="1634960474403853625">"Hindi nakakonekta"</item>
+ <item msgid="746097431216080650">"Hindi tagumpay"</item>
+ <item msgid="6367044185730295334">"Naka-block"</item>
+ <item msgid="503942654197908005">"Pansamantalang iniiwasan ang mabagal na koneksyon"</item>
+ </string-array>
+ <string-array name="wifi_status_with_ssid">
+ <item msgid="7714855332363650812"></item>
+ <item msgid="8878186979715711006">"Nag-ii-scan…"</item>
+ <item msgid="355508996603873860">"Kumukonekta sa <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="554971459996405634">"Nagpapatotoo sa <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="7928343808033020343">"Pagkuha ng IP address mula sa <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="8937994881315223448">"Nakakonekta sa <xliff:g id="NETWORK_NAME">%1$s</xliff:g>"</item>
+ <item msgid="1330262655415760617">"Suspendido"</item>
+ <item msgid="7698638434317271902">"Inaalis sa pagkakakonekta mula sa <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="197508606402264311">"Hindi nakakonekta"</item>
+ <item msgid="8578370891960825148">"Hindi tagumpay"</item>
+ <item msgid="5660739516542454527">"Naka-block"</item>
+ <item msgid="1805837518286731242">"Pansamantalang iniiwasan ang mabagal na koneksyon"</item>
+ </string-array>
+</resources>
diff --git a/packages/SettingsLib/res/values-tl/strings.xml b/packages/SettingsLib/res/values-tl/strings.xml
new file mode 100644
index 0000000..4519773
--- /dev/null
+++ b/packages/SettingsLib/res/values-tl/strings.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="wifi_fail_to_scan" msgid="1265540342578081461">"Hindi makapag-scan ng mga network"</string>
+ <string name="wifi_security_none" msgid="7985461072596594400">"Wala"</string>
+ <string name="wifi_remembered" msgid="4955746899347821096">"Na-save"</string>
+ <string name="wifi_disabled_generic" msgid="4259794910584943386">"Hindi Pinagana"</string>
+ <string name="wifi_disabled_network_failure" msgid="2364951338436007124">"Pagkabigo ng Configuration ng IP"</string>
+ <string name="wifi_disabled_wifi_failure" msgid="3081668066612876581">"Pagkabigo ng Koneksyon sa WiFi"</string>
+ <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"Problema sa pagpapatotoo"</string>
+ <string name="wifi_not_in_range" msgid="1136191511238508967">"Wala sa sakop"</string>
+ <string name="wifi_no_internet" msgid="9151470775868728896">"Walang Natukoy na Access sa Internet, hindi awtomatikong muling kumonekta."</string>
+ <string name="saved_network" msgid="4352716707126620811">"Na-save ni <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="connected_via_wfa" msgid="3805736726317410714">"Nakakonekta sa pamamagitan ng Wi‑Fi assistant"</string>
+ <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>
+ <string name="bluetooth_disconnected" msgid="6557104142667339895">"Hindi nakakonekta"</string>
+ <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Nadidiskonekta..."</string>
+ <string name="bluetooth_connecting" msgid="8555009514614320497">"Kumukonekta…"</string>
+ <string name="bluetooth_connected" msgid="6038755206916626419">"Konektado"</string>
+ <string name="bluetooth_pairing" msgid="1426882272690346242">"Pinapares…"</string>
+ <string name="bluetooth_connected_no_headset" msgid="2866994875046035609">"Nakakonekta (walang telepono)"</string>
+ <string name="bluetooth_connected_no_a2dp" msgid="4576188601581440337">"Nakakonekta (walang media)"</string>
+ <string name="bluetooth_connected_no_map" msgid="6504436917057479986">"Nakakonekta (walang access sa mensahe)"</string>
+ <string name="bluetooth_connected_no_headset_no_a2dp" msgid="9195757766755553810">"Nakakonekta (walang telepono o media)"</string>
+ <string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Audio ng media"</string>
+ <string name="bluetooth_profile_headset" msgid="8658779596261212609">"Audio ng telepono"</string>
+ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"Paglilipat ng file"</string>
+ <string name="bluetooth_profile_hid" msgid="3680729023366986480">"Device sa pag-input"</string>
+ <string name="bluetooth_profile_pan" msgid="3391606497945147673">"Access sa internet"</string>
+ <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"Pagbabahagi ng contact"</string>
+ <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"Gamitin para sa pagbabahagi ng contact"</string>
+ <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"Pagbabahagi ng koneksyon sa internet"</string>
+ <string name="bluetooth_profile_map" msgid="5465271250454324383">"Access sa Mensahe"</string>
+ <string name="bluetooth_profile_sap" msgid="5764222021851283125">"Access sa SIM"</string>
+ <string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"Konektado sa media audio"</string>
+ <string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"Nakakonekta sa audio ng telepono"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"Nakakonekta sa server sa paglilipat ng file"</string>
+ <string name="bluetooth_map_profile_summary_connected" msgid="8191407438851351713">"Nakakonekta sa mapa"</string>
+ <string name="bluetooth_sap_profile_summary_connected" msgid="8561765057453083838">"Nakakonekta sa SAP"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"Hindi konektado sa server ng paglipat ng file"</string>
+ <string name="bluetooth_hid_profile_summary_connected" msgid="3381760054215168689">"Nakakonekta sa device ng input"</string>
+ <string name="bluetooth_pan_user_profile_summary_connected" msgid="4602294638909590612">"Konektado sa device sa Internet access"</string>
+ <string name="bluetooth_pan_nap_profile_summary_connected" msgid="1561383706411975199">"Pagbahagi lokal koneksyon sa Internet sa device"</string>
+ <string name="bluetooth_pan_profile_summary_use_for" msgid="5664884523822068653">"Gamitin para sa pag-access sa Internet"</string>
+ <string name="bluetooth_map_profile_summary_use_for" msgid="5154200119919927434">"Gamitin para sa mapa"</string>
+ <string name="bluetooth_sap_profile_summary_use_for" msgid="7085362712786907993">"Gamitin para sa pag-access sa SIM"</string>
+ <string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"Gamitin para sa media audio"</string>
+ <string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"Ginagamit para sa audio ng telepono"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"Ginagamit para sa paglilipat ng file"</string>
+ <string name="bluetooth_hid_profile_summary_use_for" msgid="232727040453645139">"Gamitin para sa input"</string>
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"Pares"</string>
+ <string name="bluetooth_pairing_accept_all_caps" msgid="6061699265220789149">"IPARES"</string>
+ <string name="bluetooth_pairing_decline" msgid="4185420413578948140">"Kanselahin"</string>
+ <string name="bluetooth_pairing_will_share_phonebook" msgid="4982239145676394429">"Nagbibigay ang pagpapares ng access sa iyong mga contact at history ng tawag kapag nakakonekta."</string>
+ <string name="bluetooth_pairing_error_message" msgid="3748157733635947087">"Hindi maipares sa <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="8337234855188925274">"Hindi maipares sa <xliff:g id="DEVICE_NAME">%1$s</xliff:g> dahil sa maling PIN o passkey."</string>
+ <string name="bluetooth_pairing_device_down_error_message" msgid="7870998403045801381">"Hindi magawang makipag-ugnay sa <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"Tinanggihan ng <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ang pagpapares."</string>
+ <string name="accessibility_wifi_off" msgid="1166761729660614716">"Naka-off ang Wifi."</string>
+ <string name="accessibility_no_wifi" msgid="8834610636137374508">"Nakadiskonekta ang Wifi."</string>
+ <string name="accessibility_wifi_one_bar" msgid="4869376278894301820">"May isang bar ang Wifi."</string>
+ <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>
+ <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>
+ <string name="tether_settings_title_usb" msgid="6688416425801386511">"Pag-tether sa USB"</string>
+ <string name="tether_settings_title_wifi" msgid="3277144155960302049">"Portable na hotspot"</string>
+ <string name="tether_settings_title_bluetooth" msgid="355855408317564420">"Pag-tether ng Bluetooth"</string>
+ <string name="tether_settings_title_usb_bluetooth" msgid="5355828977109785001">"Nagte-tether"</string>
+ <string name="tether_settings_title_all" msgid="8356136101061143841">"Pag-tether at portable hotspot"</string>
+ <string name="managed_user_title" msgid="8101244883654409696">"Profile sa trabaho"</string>
+ <string name="user_guest" msgid="8475274842845401871">"Bisita"</string>
+ <string name="unknown" msgid="1592123443519355854">"Hindi Kilala"</string>
+ <string name="running_process_item_user_label" msgid="3129887865552025943">"User: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
+ <string name="launch_defaults_some" msgid="313159469856372621">"May nakatakdang ilang default"</string>
+ <string name="launch_defaults_none" msgid="4241129108140034876">"Walang nakatakdang mga default"</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-tr/arrays.xml b/packages/SettingsLib/res/values-tr/arrays.xml
new file mode 100644
index 0000000..49d6839
--- /dev/null
+++ b/packages/SettingsLib/res/values-tr/arrays.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="wifi_status">
+ <item msgid="1922181315419294640"></item>
+ <item msgid="8934131797783724664">"Taranıyor…"</item>
+ <item msgid="8513729475867537913">"Bağlanıyor…"</item>
+ <item msgid="515055375277271756">"Kimlik doğrulanıyor…"</item>
+ <item msgid="1943354004029184381">"IP adresi alınıyor..."</item>
+ <item msgid="4221763391123233270">"Bağlandı"</item>
+ <item msgid="624838831631122137">"Askıya alındı"</item>
+ <item msgid="7979680559596111948">"Bağlantı kesiliyor…"</item>
+ <item msgid="1634960474403853625">"Bağlantı kesildi"</item>
+ <item msgid="746097431216080650">"Başarısız"</item>
+ <item msgid="6367044185730295334">"Engellendi"</item>
+ <item msgid="503942654197908005">"Kötü bağlantıdan geçici olarak kaçınılıyor"</item>
+ </string-array>
+ <string-array name="wifi_status_with_ssid">
+ <item msgid="7714855332363650812"></item>
+ <item msgid="8878186979715711006">"Taranıyor…"</item>
+ <item msgid="355508996603873860">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> ağına bağlanılıyor…"</item>
+ <item msgid="554971459996405634">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> üzerinde kimlik doğrulanıyor…"</item>
+ <item msgid="7928343808033020343">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> ağından IP adresi alınıyor…"</item>
+ <item msgid="8937994881315223448">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> ağına bağlandı"</item>
+ <item msgid="1330262655415760617">"Askıya alındı"</item>
+ <item msgid="7698638434317271902">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> bağlantısı kesiliyor…"</item>
+ <item msgid="197508606402264311">"Bağlantı kesildi"</item>
+ <item msgid="8578370891960825148">"Başarısız"</item>
+ <item msgid="5660739516542454527">"Engellendi"</item>
+ <item msgid="1805837518286731242">"Kötü bağlantıdan geçici olarak kaçınılıyor"</item>
+ </string-array>
+</resources>
diff --git a/packages/SettingsLib/res/values-tr/strings.xml b/packages/SettingsLib/res/values-tr/strings.xml
new file mode 100644
index 0000000..1834c64
--- /dev/null
+++ b/packages/SettingsLib/res/values-tr/strings.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="wifi_fail_to_scan" msgid="1265540342578081461">"Ağlar taranamıyor"</string>
+ <string name="wifi_security_none" msgid="7985461072596594400">"Yok"</string>
+ <string name="wifi_remembered" msgid="4955746899347821096">"Kaydedildi"</string>
+ <string name="wifi_disabled_generic" msgid="4259794910584943386">"Devre dışı"</string>
+ <string name="wifi_disabled_network_failure" msgid="2364951338436007124">"IP Yapılandırması Hatası"</string>
+ <string name="wifi_disabled_wifi_failure" msgid="3081668066612876581">"Kablosuz Bağlantı Hatası"</string>
+ <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"Kimlik doğrulama sorunu"</string>
+ <string name="wifi_not_in_range" msgid="1136191511238508967">"Kapsama alanı dışında"</string>
+ <string name="wifi_no_internet" msgid="9151470775868728896">"İnternet Erişimi algılanmadı, otomatik olarak tekrar bağlanmayacak."</string>
+ <string name="saved_network" msgid="4352716707126620811">"<xliff:g id="NAME">%1$s</xliff:g> tarafından kaydedildi"</string>
+ <string name="connected_via_wfa" msgid="3805736726317410714">"Kablosuz bağlantı yardımcısıyla bağlandı"</string>
+ <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>
+ <string name="bluetooth_disconnected" msgid="6557104142667339895">"Bağlantı kesildi"</string>
+ <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Bağlantı kesiliyor…"</string>
+ <string name="bluetooth_connecting" msgid="8555009514614320497">"Bağlanıyor…"</string>
+ <string name="bluetooth_connected" msgid="6038755206916626419">"Bağlandı"</string>
+ <string name="bluetooth_pairing" msgid="1426882272690346242">"Eşleştiriliyor…"</string>
+ <string name="bluetooth_connected_no_headset" msgid="2866994875046035609">"Bağlandı (telefon yok)"</string>
+ <string name="bluetooth_connected_no_a2dp" msgid="4576188601581440337">"Bağlandı (medya yok)"</string>
+ <string name="bluetooth_connected_no_map" msgid="6504436917057479986">"Bağlı (mesaj erişimi yok)"</string>
+ <string name="bluetooth_connected_no_headset_no_a2dp" msgid="9195757766755553810">"Bağlandı (telefon veya medya yok)"</string>
+ <string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Medya sesi"</string>
+ <string name="bluetooth_profile_headset" msgid="8658779596261212609">"Telefon sesi"</string>
+ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"Dosya aktarımı"</string>
+ <string name="bluetooth_profile_hid" msgid="3680729023366986480">"Giriş cihazı"</string>
+ <string name="bluetooth_profile_pan" msgid="3391606497945147673">"İnternet erişimi"</string>
+ <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"Kişi paylaşma"</string>
+ <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"Kişi paylaşmak için kullan"</string>
+ <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"İnternet bağlantısı paylaşımı"</string>
+ <string name="bluetooth_profile_map" msgid="5465271250454324383">"Mesaj Erişimi"</string>
+ <string name="bluetooth_profile_sap" msgid="5764222021851283125">"SIM Erişimi"</string>
+ <string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"Medya sesine bağlanıldı"</string>
+ <string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"Telefon sesine bağlandı"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"Dosya aktarım sunucusuna bağlandı"</string>
+ <string name="bluetooth_map_profile_summary_connected" msgid="8191407438851351713">"MAP\'ye bağlı"</string>
+ <string name="bluetooth_sap_profile_summary_connected" msgid="8561765057453083838">"SAP\'ye bağlı"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"Dosya aktarım sunucusuna bağlanmadı"</string>
+ <string name="bluetooth_hid_profile_summary_connected" msgid="3381760054215168689">"Giriş cihazına bağlı"</string>
+ <string name="bluetooth_pan_user_profile_summary_connected" msgid="4602294638909590612">"İnternet erişimi için cihaza bağlandı"</string>
+ <string name="bluetooth_pan_nap_profile_summary_connected" msgid="1561383706411975199">"Cihazla yerel Intrnt bağlantısını paylaşıyor"</string>
+ <string name="bluetooth_pan_profile_summary_use_for" msgid="5664884523822068653">"İnternet erişimi için kullan"</string>
+ <string name="bluetooth_map_profile_summary_use_for" msgid="5154200119919927434">"MAP için kullan"</string>
+ <string name="bluetooth_sap_profile_summary_use_for" msgid="7085362712786907993">"SIM erişimi için kullan"</string>
+ <string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"Medya sesi için kullan"</string>
+ <string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"Telefon sesi için kullan"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"Dosya aktarımı için kullan"</string>
+ <string name="bluetooth_hid_profile_summary_use_for" msgid="232727040453645139">"Giriş için kullan"</string>
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"Eşleştir"</string>
+ <string name="bluetooth_pairing_accept_all_caps" msgid="6061699265220789149">"EŞLEŞTİR"</string>
+ <string name="bluetooth_pairing_decline" msgid="4185420413578948140">"İptal"</string>
+ <string name="bluetooth_pairing_will_share_phonebook" msgid="4982239145676394429">"Eşleme işlemi, bağlantı kurulduğunda kişilerinize ve çağrı geçmişine erişim izni verir."</string>
+ <string name="bluetooth_pairing_error_message" msgid="3748157733635947087">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> ile eşleştirilemedi."</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="8337234855188925274">"PIN veya parola yanlış olduğundan <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ile eşleştirilemedi"</string>
+ <string name="bluetooth_pairing_device_down_error_message" msgid="7870998403045801381">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> ile iletişim kurulamıyor."</string>
+ <string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"Eşleştirme <xliff:g id="DEVICE_NAME">%1$s</xliff:g> tarafından reddedildi."</string>
+ <string name="accessibility_wifi_off" msgid="1166761729660614716">"Kablosuz kapalı."</string>
+ <string name="accessibility_no_wifi" msgid="8834610636137374508">"Kablosuz bağlantı kesildi."</string>
+ <string name="accessibility_wifi_one_bar" msgid="4869376278894301820">"Kablosuz sinyal gücü tek çubuk."</string>
+ <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>
+ <string name="process_kernel_label" msgid="3916858646836739323">"Android İS"</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>
+ <string name="tether_settings_title_usb" msgid="6688416425801386511">"USB tethering"</string>
+ <string name="tether_settings_title_wifi" msgid="3277144155960302049">"Taşınabilir hotspot"</string>
+ <string name="tether_settings_title_bluetooth" msgid="355855408317564420">"Bluetooth tethering"</string>
+ <string name="tether_settings_title_usb_bluetooth" msgid="5355828977109785001">"Tethering"</string>
+ <string name="tether_settings_title_all" msgid="8356136101061143841">"Tethering ve taşnblr hotspot"</string>
+ <string name="managed_user_title" msgid="8101244883654409696">"İş profili"</string>
+ <string name="user_guest" msgid="8475274842845401871">"Misafir"</string>
+ <string name="unknown" msgid="1592123443519355854">"Bilinmiyor"</string>
+ <string name="running_process_item_user_label" msgid="3129887865552025943">"Kullanıcı: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
+ <string name="launch_defaults_some" msgid="313159469856372621">"Bazı varsayılan tercihler ayarlandı"</string>
+ <string name="launch_defaults_none" msgid="4241129108140034876">"Hiçbir varsayılan tercih ayarlanmadı"</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-uk/arrays.xml b/packages/SettingsLib/res/values-uk/arrays.xml
new file mode 100644
index 0000000..a5608b4
--- /dev/null
+++ b/packages/SettingsLib/res/values-uk/arrays.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="wifi_status">
+ <item msgid="1922181315419294640"></item>
+ <item msgid="8934131797783724664">"Сканув-ня..."</item>
+ <item msgid="8513729475867537913">"Підключення…"</item>
+ <item msgid="515055375277271756">"Автентифікація…"</item>
+ <item msgid="1943354004029184381">"Отримання ІР-адреси…"</item>
+ <item msgid="4221763391123233270">"Підключено"</item>
+ <item msgid="624838831631122137">"Припинено"</item>
+ <item msgid="7979680559596111948">"Відключення..."</item>
+ <item msgid="1634960474403853625">"Роз’єднано"</item>
+ <item msgid="746097431216080650">"Помилка"</item>
+ <item msgid="6367044185730295334">"Заблоковано"</item>
+ <item msgid="503942654197908005">"Тимчасове уникнення слабкого з’єднання"</item>
+ </string-array>
+ <string-array name="wifi_status_with_ssid">
+ <item msgid="7714855332363650812"></item>
+ <item msgid="8878186979715711006">"Сканув-ня..."</item>
+ <item msgid="355508996603873860">"Підключення до <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="554971459996405634">"Автентифікація з <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="7928343808033020343">"Отримання ІР-адреси від <xliff:g id="NETWORK_NAME">%1$s</xliff:g>..."</item>
+ <item msgid="8937994881315223448">"Підключено до <xliff:g id="NETWORK_NAME">%1$s</xliff:g>"</item>
+ <item msgid="1330262655415760617">"Призупинено"</item>
+ <item msgid="7698638434317271902">"Відключення від <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="197508606402264311">"Роз’єднано"</item>
+ <item msgid="8578370891960825148">"Помилка"</item>
+ <item msgid="5660739516542454527">"Заблоковано"</item>
+ <item msgid="1805837518286731242">"Тимчасове уникнення слабкого з’єднання"</item>
+ </string-array>
+</resources>
diff --git a/packages/SettingsLib/res/values-uk/strings.xml b/packages/SettingsLib/res/values-uk/strings.xml
new file mode 100644
index 0000000..ca273ae
--- /dev/null
+++ b/packages/SettingsLib/res/values-uk/strings.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="wifi_fail_to_scan" msgid="1265540342578081461">"Неможливо здійснити сканування мереж"</string>
+ <string name="wifi_security_none" msgid="7985461072596594400">"Немає"</string>
+ <string name="wifi_remembered" msgid="4955746899347821096">"Збережено"</string>
+ <string name="wifi_disabled_generic" msgid="4259794910584943386">"Вимкнено"</string>
+ <string name="wifi_disabled_network_failure" msgid="2364951338436007124">"Помилка конфігурації IP-адреси"</string>
+ <string name="wifi_disabled_wifi_failure" msgid="3081668066612876581">"Помилка з’єднання Wi-Fi"</string>
+ <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"Проблема з автентифікацією"</string>
+ <string name="wifi_not_in_range" msgid="1136191511238508967">"Не в діапазоні"</string>
+ <string name="wifi_no_internet" msgid="9151470775868728896">"Немає доступу до Інтернету. Спроба під’єднання не здійснюватиметься автоматично."</string>
+ <string name="saved_network" msgid="4352716707126620811">"Збережено додатком <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="connected_via_wfa" msgid="3805736726317410714">"Під’єднано через Диспетчер Wi-Fi-з’єднання"</string>
+ <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>
+ <string name="bluetooth_disconnected" msgid="6557104142667339895">"Роз’єднано"</string>
+ <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Відключення..."</string>
+ <string name="bluetooth_connecting" msgid="8555009514614320497">"Підключення…"</string>
+ <string name="bluetooth_connected" msgid="6038755206916626419">"Підключено"</string>
+ <string name="bluetooth_pairing" msgid="1426882272690346242">"Підключення…"</string>
+ <string name="bluetooth_connected_no_headset" msgid="2866994875046035609">"Під’єднано (без телефону)"</string>
+ <string name="bluetooth_connected_no_a2dp" msgid="4576188601581440337">"Під’єднано (без медіа-файлів)"</string>
+ <string name="bluetooth_connected_no_map" msgid="6504436917057479986">"Під’єднано (без доступу до повідомлень)"</string>
+ <string name="bluetooth_connected_no_headset_no_a2dp" msgid="9195757766755553810">"Під’єднано (без телефону чи медіа)"</string>
+ <string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Звук медіа-файлів"</string>
+ <string name="bluetooth_profile_headset" msgid="8658779596261212609">"Звук телефону"</string>
+ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"Передавання файлів"</string>
+ <string name="bluetooth_profile_hid" msgid="3680729023366986480">"Пристрій введення"</string>
+ <string name="bluetooth_profile_pan" msgid="3391606497945147673">"Доступ до Інтернету"</string>
+ <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"Надсилання контактів"</string>
+ <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"Використовувати для надсилання контактів"</string>
+ <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"Надання доступу до Інтернету"</string>
+ <string name="bluetooth_profile_map" msgid="5465271250454324383">"Доступ до повідомлень"</string>
+ <string name="bluetooth_profile_sap" msgid="5764222021851283125">"Доступ до SIM-карти"</string>
+ <string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"Підключено до аудіоджерела"</string>
+ <string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"Підключено до звуку телеф."</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"Підключ. до сервера передачі файлів"</string>
+ <string name="bluetooth_map_profile_summary_connected" msgid="8191407438851351713">"Під’єднано до карти"</string>
+ <string name="bluetooth_sap_profile_summary_connected" msgid="8561765057453083838">"Під’єднано до точки доступу"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"Не підключ. до сервера передачі файлів"</string>
+ <string name="bluetooth_hid_profile_summary_connected" msgid="3381760054215168689">"Підключено до пристрою введ."</string>
+ <string name="bluetooth_pan_user_profile_summary_connected" msgid="4602294638909590612">"Під’єдн. до пристр. для дост.до Інтерн."</string>
+ <string name="bluetooth_pan_nap_profile_summary_connected" msgid="1561383706411975199">"Доступ до локал.з’єдн. з Інтерн. ч-з пристрій"</string>
+ <string name="bluetooth_pan_profile_summary_use_for" msgid="5664884523822068653">"Використовувати для доступу до Інтернету"</string>
+ <string name="bluetooth_map_profile_summary_use_for" msgid="5154200119919927434">"Використовувати для карти"</string>
+ <string name="bluetooth_sap_profile_summary_use_for" msgid="7085362712786907993">"Використовувати для доступу до SIM-карти"</string>
+ <string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"Викор. для аудіоджер."</string>
+ <string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"Викор. для звуку тел."</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"Викор. для перед. файлів"</string>
+ <string name="bluetooth_hid_profile_summary_use_for" msgid="232727040453645139">"Викор. для введ."</string>
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"Підключити"</string>
+ <string name="bluetooth_pairing_accept_all_caps" msgid="6061699265220789149">"ПІДКЛЮЧИТИСЯ"</string>
+ <string name="bluetooth_pairing_decline" msgid="4185420413578948140">"Скасувати"</string>
+ <string name="bluetooth_pairing_will_share_phonebook" msgid="4982239145676394429">"Якщо ви під’єднаєте інший пристрій, він матиме доступ до ваших контактів та історії дзвінків."</string>
+ <string name="bluetooth_pairing_error_message" msgid="3748157733635947087">"Не вдалося створити пару з пристроєм <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="8337234855188925274">"Не вдалося створити пару з пристроєм <xliff:g id="DEVICE_NAME">%1$s</xliff:g> через неправильний PIN-код чи ключ доступу."</string>
+ <string name="bluetooth_pairing_device_down_error_message" msgid="7870998403045801381">"Неможливо зв’язатися з пристроєм <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"Створ. пари відхилено <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="accessibility_wifi_off" msgid="1166761729660614716">"Wi-Fi вимкнено."</string>
+ <string name="accessibility_no_wifi" msgid="8834610636137374508">"Wi-Fi від’єднано."</string>
+ <string name="accessibility_wifi_one_bar" msgid="4869376278894301820">"Одна смужка сигналу Wi-Fi."</string>
+ <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>
+ <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_wifi" msgid="3277144155960302049">"Порт. точка дост."</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="managed_user_title" msgid="8101244883654409696">"Робочий профіль"</string>
+ <string name="user_guest" msgid="8475274842845401871">"Гість"</string>
+ <string name="unknown" msgid="1592123443519355854">"Невідомо"</string>
+ <string name="running_process_item_user_label" msgid="3129887865552025943">"Користувач: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
+ <string name="launch_defaults_some" msgid="313159469856372621">"Налаштовано деякі значення за умовчанням"</string>
+ <string name="launch_defaults_none" msgid="4241129108140034876">"Немає значень за умовчанням"</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-ur-rPK/arrays.xml b/packages/SettingsLib/res/values-ur-rPK/arrays.xml
new file mode 100644
index 0000000..c58a4a7
--- /dev/null
+++ b/packages/SettingsLib/res/values-ur-rPK/arrays.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="wifi_status">
+ <item msgid="1922181315419294640"></item>
+ <item msgid="8934131797783724664">"اسکین کر رہا ہے…"</item>
+ <item msgid="8513729475867537913">"مربوط ہو رہا ہے…"</item>
+ <item msgid="515055375277271756">"توثیق ہو رہی ہے…"</item>
+ <item msgid="1943354004029184381">"IP پتہ حاصل کر رہا ہے…"</item>
+ <item msgid="4221763391123233270">"مربوط ہو گیا"</item>
+ <item msgid="624838831631122137">"معطل شدہ"</item>
+ <item msgid="7979680559596111948">"منقطع کیا جارہا ہے…"</item>
+ <item msgid="1634960474403853625">"منقطع ہو گیا"</item>
+ <item msgid="746097431216080650">"ناکام"</item>
+ <item msgid="6367044185730295334">"مسدود"</item>
+ <item msgid="503942654197908005">"عارضی طور پر خراب کنکشن سے اجتناب کر رہا ہے"</item>
+ </string-array>
+ <string-array name="wifi_status_with_ssid">
+ <item msgid="7714855332363650812"></item>
+ <item msgid="8878186979715711006">"اسکین کر رہا ہے…"</item>
+ <item msgid="355508996603873860">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> سے مربوط ہو رہا ہے…"</item>
+ <item msgid="554971459996405634">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> کے ساتھ توثیق ہو رہی ہے…"</item>
+ <item msgid="7928343808033020343">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> سے IP پتہ حاصل کر رہا ہے…"</item>
+ <item msgid="8937994881315223448">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> سے مربوط ہو گیا"</item>
+ <item msgid="1330262655415760617">"معطل شدہ"</item>
+ <item msgid="7698638434317271902">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> سے منقطع ہو رہا ہے…"</item>
+ <item msgid="197508606402264311">"منقطع ہو گیا"</item>
+ <item msgid="8578370891960825148">"ناکام"</item>
+ <item msgid="5660739516542454527">"مسدود ہے"</item>
+ <item msgid="1805837518286731242">"عارضی طور پر خراب کنکشن سے اجتناب کر رہا ہے"</item>
+ </string-array>
+</resources>
diff --git a/packages/SettingsLib/res/values-ur-rPK/strings.xml b/packages/SettingsLib/res/values-ur-rPK/strings.xml
new file mode 100644
index 0000000..bdf50e0
--- /dev/null
+++ b/packages/SettingsLib/res/values-ur-rPK/strings.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="wifi_fail_to_scan" msgid="1265540342578081461">"نیٹ ورکس کیلئے اسکین نہيں کر سکتے ہیں"</string>
+ <string name="wifi_security_none" msgid="7985461072596594400">"کوئی نہیں"</string>
+ <string name="wifi_remembered" msgid="4955746899347821096">"محفوظ کردیا گیا"</string>
+ <string name="wifi_disabled_generic" msgid="4259794910584943386">"غیر فعال"</string>
+ <string name="wifi_disabled_network_failure" msgid="2364951338436007124">"IP کنفیگریشن کی ناکامی"</string>
+ <string name="wifi_disabled_wifi_failure" msgid="3081668066612876581">"WiFi کنکشن کی ناکامی"</string>
+ <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"توثیق کا مسئلہ"</string>
+ <string name="wifi_not_in_range" msgid="1136191511238508967">"رینج میں نہیں ہے"</string>
+ <string name="wifi_no_internet" msgid="9151470775868728896">"انٹرنیٹ تک کسی رسائی کا پتہ نہیں چلا، خود بخود دوبارہ منسلک نہیں ہوگا۔"</string>
+ <string name="saved_network" msgid="4352716707126620811">"<xliff:g id="NAME">%1$s</xliff:g> کی جانب سے محفوظ کردہ"</string>
+ <string name="connected_via_wfa" msgid="3805736726317410714">"Wi‑Fi اسسٹنٹ کے ذریعے منسلک ہے"</string>
+ <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>
+ <string name="bluetooth_disconnected" msgid="6557104142667339895">"منقطع"</string>
+ <string name="bluetooth_disconnecting" msgid="8913264760027764974">"منقطع کیا جارہا ہے…"</string>
+ <string name="bluetooth_connecting" msgid="8555009514614320497">"مربوط ہو رہا ہے…"</string>
+ <string name="bluetooth_connected" msgid="6038755206916626419">"مربوط"</string>
+ <string name="bluetooth_pairing" msgid="1426882272690346242">"جوڑا بنایا جا رہا ہے…"</string>
+ <string name="bluetooth_connected_no_headset" msgid="2866994875046035609">"مربوط (کوئی فون نہیں ہے)"</string>
+ <string name="bluetooth_connected_no_a2dp" msgid="4576188601581440337">"مربوط (کوئی میڈیا نہیں ہے)"</string>
+ <string name="bluetooth_connected_no_map" msgid="6504436917057479986">"مربوط (کسی پیغام تک رسائی نہیں ہے)"</string>
+ <string name="bluetooth_connected_no_headset_no_a2dp" msgid="9195757766755553810">"مربوط (کوئی فون یا میڈیا نہیں ہے)"</string>
+ <string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"میڈيا آڈیو"</string>
+ <string name="bluetooth_profile_headset" msgid="8658779596261212609">"فون آڈیو"</string>
+ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"فائل کی منتقلی"</string>
+ <string name="bluetooth_profile_hid" msgid="3680729023366986480">"ان پٹ آلہ"</string>
+ <string name="bluetooth_profile_pan" msgid="3391606497945147673">"انٹرنیٹ تک رسائی"</string>
+ <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"رابطہ کا اشتراک"</string>
+ <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"رابطہ کے اشتراک کیلئے استعمال کریں"</string>
+ <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"انٹرنیٹ کنکشن کا اشتراک کرنا"</string>
+ <string name="bluetooth_profile_map" msgid="5465271250454324383">"پیغام تک رسائی"</string>
+ <string name="bluetooth_profile_sap" msgid="5764222021851283125">"SIM رسائی"</string>
+ <string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"میڈیا آڈیو سے مربوط"</string>
+ <string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"فون آڈیو سے مربوط"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"فائل منتقلی سرور سے مربوط ہو گیا ہے"</string>
+ <string name="bluetooth_map_profile_summary_connected" msgid="8191407438851351713">"نقشہ سے مربوط ہوگیا"</string>
+ <string name="bluetooth_sap_profile_summary_connected" msgid="8561765057453083838">"SAP سے منسلک"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"فائل منتقلی سرور سے مربوط نہیں ہے"</string>
+ <string name="bluetooth_hid_profile_summary_connected" msgid="3381760054215168689">"ان پٹ آلہ سے مربوط"</string>
+ <string name="bluetooth_pan_user_profile_summary_connected" msgid="4602294638909590612">"انٹرنیٹ رسائی کیلئے آلہ سے مربوط ہو گیا"</string>
+ <string name="bluetooth_pan_nap_profile_summary_connected" msgid="1561383706411975199">"آلہ کے ساتھ مقامی انٹرنیٹ کنکشن کا اشتراک کر رہا ہے"</string>
+ <string name="bluetooth_pan_profile_summary_use_for" msgid="5664884523822068653">"انٹرنیٹ رسائی کیلئے استعمال"</string>
+ <string name="bluetooth_map_profile_summary_use_for" msgid="5154200119919927434">"نقشہ کیلئے استعمال کریں"</string>
+ <string name="bluetooth_sap_profile_summary_use_for" msgid="7085362712786907993">"SIM رسائی کے لئے استعمال کریں"</string>
+ <string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"میڈیا آڈیو کیلئے استعمال کریں"</string>
+ <string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"فون آڈیو کیلئے استعمال کریں"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"فائل منتقل کرنے کیلئے استعمال کریں"</string>
+ <string name="bluetooth_hid_profile_summary_use_for" msgid="232727040453645139">"ان پٹ کیلئے استعمال"</string>
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"جوڑا بنائیں"</string>
+ <string name="bluetooth_pairing_accept_all_caps" msgid="6061699265220789149">"جوڑا بنائیں"</string>
+ <string name="bluetooth_pairing_decline" msgid="4185420413578948140">"منسوخ کریں"</string>
+ <string name="bluetooth_pairing_will_share_phonebook" msgid="4982239145676394429">"منسلک ہونے پر جوڑا بنانے سے آپ کے رابطوں اور کال کی سرگزشت تک رسائی حاصل ہو جاتی ہے۔"</string>
+ <string name="bluetooth_pairing_error_message" msgid="3748157733635947087">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> کے ساتھ جوڑا نہیں بنا سکا۔"</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="8337234855188925274">"غلط PIN یا پاس کلید کی وجہ سے <xliff:g id="DEVICE_NAME">%1$s</xliff:g> کے ساتھ جوڑا نہیں بنا سکا۔"</string>
+ <string name="bluetooth_pairing_device_down_error_message" msgid="7870998403045801381">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> کے ساتھ مواصلت نہیں ہو سکتی۔"</string>
+ <string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> نے جوڑا بنانے کو مسترد کر دیا۔"</string>
+ <string name="accessibility_wifi_off" msgid="1166761729660614716">"Wifi آف ہے۔"</string>
+ <string name="accessibility_no_wifi" msgid="8834610636137374508">"Wifi غیر منسلک ہو گیا۔"</string>
+ <string name="accessibility_wifi_one_bar" msgid="4869376278894301820">"Wifi ایک بار۔"</string>
+ <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>
+ <string name="process_kernel_label" msgid="3916858646836739323">"Android OS"</string>
+ <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"ہٹائی گئی ایپس"</string>
+ <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"ہٹائی گئی ایپس اور صارفین"</string>
+ <string name="tether_settings_title_usb" msgid="6688416425801386511">"USB مربوط کرنا"</string>
+ <string name="tether_settings_title_wifi" msgid="3277144155960302049">"پورٹیبل ہاٹ اسپاٹ"</string>
+ <string name="tether_settings_title_bluetooth" msgid="355855408317564420">"بلوٹوتھ مربوط کرنا"</string>
+ <string name="tether_settings_title_usb_bluetooth" msgid="5355828977109785001">"مربوط کرنا"</string>
+ <string name="tether_settings_title_all" msgid="8356136101061143841">"مربوط کرنا اور پورٹیبل ہاٹ اسپاٹ"</string>
+ <string name="managed_user_title" msgid="8101244883654409696">"دفتر کا پروفائل"</string>
+ <string name="user_guest" msgid="8475274842845401871">"مہمان"</string>
+ <string name="unknown" msgid="1592123443519355854">"نامعلوم"</string>
+ <string name="running_process_item_user_label" msgid="3129887865552025943">"صارف: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
+ <string name="launch_defaults_some" msgid="313159469856372621">"کچھ ڈیفالٹس سیٹ ہیں"</string>
+ <string name="launch_defaults_none" msgid="4241129108140034876">"کوئی ڈیفالٹس سیٹ نہیں ہیں"</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-uz-rUZ/arrays.xml b/packages/SettingsLib/res/values-uz-rUZ/arrays.xml
new file mode 100644
index 0000000..f2cae2c
--- /dev/null
+++ b/packages/SettingsLib/res/values-uz-rUZ/arrays.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="wifi_status">
+ <item msgid="1922181315419294640"></item>
+ <item msgid="8934131797783724664">"Tekshirib chiqilmoqda…"</item>
+ <item msgid="8513729475867537913">"Ulanmoqda…"</item>
+ <item msgid="515055375277271756">"Tasdiqdan o‘tilmoqda…"</item>
+ <item msgid="1943354004029184381">"IP manzil o‘zlashtirilmoqda…"</item>
+ <item msgid="4221763391123233270">"Ulangan"</item>
+ <item msgid="624838831631122137">"Muzlatildi"</item>
+ <item msgid="7979680559596111948">"Uzilmoqda…"</item>
+ <item msgid="1634960474403853625">"Uzilgan"</item>
+ <item msgid="746097431216080650">"Muvaffaqiyatsiz"</item>
+ <item msgid="6367044185730295334">"To‘sib qo‘yilgan"</item>
+ <item msgid="503942654197908005">"Sifatsiz ulanishdan vaqtinchalik chetlashish"</item>
+ </string-array>
+ <string-array name="wifi_status_with_ssid">
+ <item msgid="7714855332363650812"></item>
+ <item msgid="8878186979715711006">"Tekshirilmoqda…"</item>
+ <item msgid="355508996603873860">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> tarmog‘iga ulanilmoqda…"</item>
+ <item msgid="554971459996405634">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> bilan aloqa o‘rnatilyapti…"</item>
+ <item msgid="7928343808033020343">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> IP manzil beryapti…"</item>
+ <item msgid="8937994881315223448">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> tarmog‘iga ulanildi"</item>
+ <item msgid="1330262655415760617">"Muzlatildi"</item>
+ <item msgid="7698638434317271902">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> tarmog‘idan uzilmoqda…"</item>
+ <item msgid="197508606402264311">"Uzildi"</item>
+ <item msgid="8578370891960825148">"Muvaffaqiyatsiz"</item>
+ <item msgid="5660739516542454527">"To‘sib qo‘yilgan"</item>
+ <item msgid="1805837518286731242">"Sifatsiz ulanishdan vaqtinchalik chetlashish"</item>
+ </string-array>
+</resources>
diff --git a/packages/SettingsLib/res/values-uz-rUZ/strings.xml b/packages/SettingsLib/res/values-uz-rUZ/strings.xml
new file mode 100644
index 0000000..7761b657
--- /dev/null
+++ b/packages/SettingsLib/res/values-uz-rUZ/strings.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="wifi_fail_to_scan" msgid="1265540342578081461">"Tarmoqlarni tekshirib chiqishni iloji bo‘lmadi"</string>
+ <string name="wifi_security_none" msgid="7985461072596594400">"Yo‘q"</string>
+ <string name="wifi_remembered" msgid="4955746899347821096">"Saqlandi"</string>
+ <string name="wifi_disabled_generic" msgid="4259794910584943386">"O‘chiq"</string>
+ <string name="wifi_disabled_network_failure" msgid="2364951338436007124">"IP manzilini sozlab bo‘lmadi"</string>
+ <string name="wifi_disabled_wifi_failure" msgid="3081668066612876581">"Wi-Fi ulanishini o‘rnatib bo‘lmadi"</string>
+ <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"Tasdiqdan o‘tishda muammo"</string>
+ <string name="wifi_not_in_range" msgid="1136191511238508967">"Aloqada emas"</string>
+ <string name="wifi_no_internet" msgid="9151470775868728896">"Internetga ulanish aniqlanmadi, avtomatik ravishda qayta ulana olmaydi."</string>
+ <string name="saved_network" msgid="4352716707126620811">"<xliff:g id="NAME">%1$s</xliff:g> tomonidan saqlangan"</string>
+ <string name="connected_via_wfa" msgid="3805736726317410714">"Wi‑Fi yordamchisi orqali ulangan"</string>
+ <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>
+ <string name="bluetooth_disconnected" msgid="6557104142667339895">"Uzildi"</string>
+ <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Uzilyapti…"</string>
+ <string name="bluetooth_connecting" msgid="8555009514614320497">"Ulanmoqda…"</string>
+ <string name="bluetooth_connected" msgid="6038755206916626419">"Ulandi"</string>
+ <string name="bluetooth_pairing" msgid="1426882272690346242">"Biriktirilmoqda"</string>
+ <string name="bluetooth_connected_no_headset" msgid="2866994875046035609">"Ulandi (telefondan tashqari)"</string>
+ <string name="bluetooth_connected_no_a2dp" msgid="4576188601581440337">"Ulanildi (mediadan tashqari)"</string>
+ <string name="bluetooth_connected_no_map" msgid="6504436917057479986">"Ulangan (xabarlarga kirib bo‘lmaydi)"</string>
+ <string name="bluetooth_connected_no_headset_no_a2dp" msgid="9195757766755553810">"Ulangan (telefon yoki media qurilma emas)"</string>
+ <string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Media audio"</string>
+ <string name="bluetooth_profile_headset" msgid="8658779596261212609">"Telefon audiosi"</string>
+ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"Fayl o‘tkazish"</string>
+ <string name="bluetooth_profile_hid" msgid="3680729023366986480">"Kiritish qurilmasi"</string>
+ <string name="bluetooth_profile_pan" msgid="3391606497945147673">"Internetga kirish"</string>
+ <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"Kontaktlarni ulashish"</string>
+ <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"Kontaktlarni ulashish uchun ishlatilsin"</string>
+ <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"Internet aloqasi ulashmasi"</string>
+ <string name="bluetooth_profile_map" msgid="5465271250454324383">"Xabarga kirish"</string>
+ <string name="bluetooth_profile_sap" msgid="5764222021851283125">"SIM-kartaga kirish"</string>
+ <string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"Audio qurilmasiga ulangan"</string>
+ <string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"Telefon karnayiga ulanildi"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"Fayl almashinish serveriga ulanildi"</string>
+ <string name="bluetooth_map_profile_summary_connected" msgid="8191407438851351713">"Xaritaga ulangan"</string>
+ <string name="bluetooth_sap_profile_summary_connected" msgid="8561765057453083838">"Ulanish nuqtasiga ulandi"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"Fayl uzatish serveriga ulanmagan"</string>
+ <string name="bluetooth_hid_profile_summary_connected" msgid="3381760054215168689">"Kiritish qurilmasiga ulanildi"</string>
+ <string name="bluetooth_pan_user_profile_summary_connected" msgid="4602294638909590612">"Internet manbai qurilmasiga ulanildi"</string>
+ <string name="bluetooth_pan_nap_profile_summary_connected" msgid="1561383706411975199">"Qurilmaga mahaliy internet aloqani tarqatish"</string>
+ <string name="bluetooth_pan_profile_summary_use_for" msgid="5664884523822068653">"Internet manbai sifatida foydalanish"</string>
+ <string name="bluetooth_map_profile_summary_use_for" msgid="5154200119919927434">"Xaritada foydalanish"</string>
+ <string name="bluetooth_sap_profile_summary_use_for" msgid="7085362712786907993">"SIM-kartaga kirish uchun foydalanish"</string>
+ <string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"Audio qurilma uchun foydalanish"</string>
+ <string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"Dok’dan karnay sifatida foydalanish"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"Fayl almashinish uchun foydalanish"</string>
+ <string name="bluetooth_hid_profile_summary_use_for" msgid="232727040453645139">"Kiritish qurilmasi sifatida foydalanish"</string>
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"Biriktirish"</string>
+ <string name="bluetooth_pairing_accept_all_caps" msgid="6061699265220789149">"ULANISH"</string>
+ <string name="bluetooth_pairing_decline" msgid="4185420413578948140">"Bekor qilish"</string>
+ <string name="bluetooth_pairing_will_share_phonebook" msgid="4982239145676394429">"Agar ulanishga ruxsat bersangiz, ulangan vaqtda kontakt va qo‘ng‘iroqlaringiz tarixiga kirishi mumkin."</string>
+ <string name="bluetooth_pairing_error_message" msgid="3748157733635947087">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> bilan biriktirib bo‘lmadi."</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="8337234855188925274">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> qurilmasiga ulanib bo‘lmadi, chunki PIN-kod yoki parol noto‘g‘ri kiritildi."</string>
+ <string name="bluetooth_pairing_device_down_error_message" msgid="7870998403045801381">"Quyidagi qurilma javob bermayapti: <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> biriktirish so‘rovini rad qildi."</string>
+ <string name="accessibility_wifi_off" msgid="1166761729660614716">"Wi-Fi o‘chiq."</string>
+ <string name="accessibility_no_wifi" msgid="8834610636137374508">"Wi-Fi o‘chirilgan."</string>
+ <string name="accessibility_wifi_one_bar" msgid="4869376278894301820">"Wi-Fi: bitta ustun"</string>
+ <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>
+ <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 yuborilgan ilovalar va foydalanuvchilar"</string>
+ <string name="tether_settings_title_usb" msgid="6688416425801386511">"USB modem"</string>
+ <string name="tether_settings_title_wifi" msgid="3277144155960302049">"Ixcham hotspot"</string>
+ <string name="tether_settings_title_bluetooth" msgid="355855408317564420">"Bluetooth modem"</string>
+ <string name="tether_settings_title_usb_bluetooth" msgid="5355828977109785001">"Modem"</string>
+ <string name="tether_settings_title_all" msgid="8356136101061143841">"Modem rejimi"</string>
+ <string name="managed_user_title" msgid="8101244883654409696">"Ishchi profil"</string>
+ <string name="user_guest" msgid="8475274842845401871">"Mehmon"</string>
+ <string name="unknown" msgid="1592123443519355854">"Noma‘lum"</string>
+ <string name="running_process_item_user_label" msgid="3129887865552025943">"Foydalanuvchi: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
+ <string name="launch_defaults_some" msgid="313159469856372621">"Ba’zi birlamchi sozlamalar o‘rnatilgan"</string>
+ <string name="launch_defaults_none" msgid="4241129108140034876">"Birlamchi sozlamalar o‘rnatilmagan"</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-vi/arrays.xml b/packages/SettingsLib/res/values-vi/arrays.xml
new file mode 100644
index 0000000..26d32a9
--- /dev/null
+++ b/packages/SettingsLib/res/values-vi/arrays.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="wifi_status">
+ <item msgid="1922181315419294640"></item>
+ <item msgid="8934131797783724664">"Đang quét…"</item>
+ <item msgid="8513729475867537913">"Đang kết nối…"</item>
+ <item msgid="515055375277271756">"Đang xác thực…"</item>
+ <item msgid="1943354004029184381">"Đang lấy địa chỉ IP…"</item>
+ <item msgid="4221763391123233270">"Đã kết nối"</item>
+ <item msgid="624838831631122137">"Bị tạm ngưng"</item>
+ <item msgid="7979680559596111948">"Đang ngắt kết nối…"</item>
+ <item msgid="1634960474403853625">"Đã ngắt kết nối"</item>
+ <item msgid="746097431216080650">"Không thành công"</item>
+ <item msgid="6367044185730295334">"Bị chặn"</item>
+ <item msgid="503942654197908005">"Tạm thời tránh kết nối kém"</item>
+ </string-array>
+ <string-array name="wifi_status_with_ssid">
+ <item msgid="7714855332363650812"></item>
+ <item msgid="8878186979715711006">"Đang quét…"</item>
+ <item msgid="355508996603873860">"Đang kết nối tới <xliff:g id="NETWORK_NAME">%1$s</xliff:g>"</item>
+ <item msgid="554971459996405634">"Đang xác thực với <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="7928343808033020343">"Đang lấy địa chỉ IP từ <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="8937994881315223448">"Đã kết nối tới <xliff:g id="NETWORK_NAME">%1$s</xliff:g>"</item>
+ <item msgid="1330262655415760617">"Bị tạm ngưng"</item>
+ <item msgid="7698638434317271902">"Đăng ngắt kết nối khỏi <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="197508606402264311">"Đã ngắt kết nối"</item>
+ <item msgid="8578370891960825148">"Không thành công"</item>
+ <item msgid="5660739516542454527">"Bị chặn"</item>
+ <item msgid="1805837518286731242">"Tạm thời tránh kết nối kém"</item>
+ </string-array>
+</resources>
diff --git a/packages/SettingsLib/res/values-vi/strings.xml b/packages/SettingsLib/res/values-vi/strings.xml
new file mode 100644
index 0000000..3be2042
--- /dev/null
+++ b/packages/SettingsLib/res/values-vi/strings.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="wifi_fail_to_scan" msgid="1265540342578081461">"Không thể dò tìm mạng"</string>
+ <string name="wifi_security_none" msgid="7985461072596594400">"Không"</string>
+ <string name="wifi_remembered" msgid="4955746899347821096">"Đã lưu"</string>
+ <string name="wifi_disabled_generic" msgid="4259794910584943386">"Đã tắt"</string>
+ <string name="wifi_disabled_network_failure" msgid="2364951338436007124">"Lỗi cấu hình IP"</string>
+ <string name="wifi_disabled_wifi_failure" msgid="3081668066612876581">"Lỗi kết nối WiFi"</string>
+ <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"Sự cố xác thực"</string>
+ <string name="wifi_not_in_range" msgid="1136191511238508967">"Ngoài vùng phủ sóng"</string>
+ <string name="wifi_no_internet" msgid="9151470775868728896">"Không phát hiện thấy truy cập Internet nào, mạng sẽ không được tự động kết nối lại."</string>
+ <string name="saved_network" msgid="4352716707126620811">"Được lưu bởi <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="connected_via_wfa" msgid="3805736726317410714">"Được kết nối qua trình hỗ trợ Wi‑Fi"</string>
+ <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>
+ <string name="bluetooth_disconnected" msgid="6557104142667339895">"Đã ngắt kết nối"</string>
+ <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Đang ngắt kết nối…"</string>
+ <string name="bluetooth_connecting" msgid="8555009514614320497">"Đang kết nối…"</string>
+ <string name="bluetooth_connected" msgid="6038755206916626419">"Đã kết nối"</string>
+ <string name="bluetooth_pairing" msgid="1426882272690346242">"Đang ghép nối…"</string>
+ <string name="bluetooth_connected_no_headset" msgid="2866994875046035609">"Đã kết nối (không có điện thoại)"</string>
+ <string name="bluetooth_connected_no_a2dp" msgid="4576188601581440337">"Đã kết nối (không có phương tiện)"</string>
+ <string name="bluetooth_connected_no_map" msgid="6504436917057479986">"Đã kết nối (không truy cập tin nhắn)"</string>
+ <string name="bluetooth_connected_no_headset_no_a2dp" msgid="9195757766755553810">"Đã k.nối (kg có ĐT hoặc p.tiện nào)"</string>
+ <string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Âm thanh của phương tiện"</string>
+ <string name="bluetooth_profile_headset" msgid="8658779596261212609">"Âm thanh điện thoại"</string>
+ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"Chuyển tệp"</string>
+ <string name="bluetooth_profile_hid" msgid="3680729023366986480">"Thiết bị đầu vào"</string>
+ <string name="bluetooth_profile_pan" msgid="3391606497945147673">"Truy cập Internet"</string>
+ <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"Chia sẻ liên hệ"</string>
+ <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"Sử dụng để chia sẻ liên hệ"</string>
+ <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"Chia sẻ kết nối internet"</string>
+ <string name="bluetooth_profile_map" msgid="5465271250454324383">"Truy cập tin nhắn"</string>
+ <string name="bluetooth_profile_sap" msgid="5764222021851283125">"Quyền truy cập SIM"</string>
+ <string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"Đã kết nối với âm thanh phương tiện"</string>
+ <string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"Đã kết nối với âm thanh điện thoại"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"Đã kết nối với máy chủ chuyển tệp"</string>
+ <string name="bluetooth_map_profile_summary_connected" msgid="8191407438851351713">"Đã kết nối với bản đồ"</string>
+ <string name="bluetooth_sap_profile_summary_connected" msgid="8561765057453083838">"Được kết nối với SAP"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"Chưa kết nối với máy chủ chuyển tệp"</string>
+ <string name="bluetooth_hid_profile_summary_connected" msgid="3381760054215168689">"Đã kết nối với thiết bị nhập"</string>
+ <string name="bluetooth_pan_user_profile_summary_connected" msgid="4602294638909590612">"Đã kết nối với thiết bị"</string>
+ <string name="bluetooth_pan_nap_profile_summary_connected" msgid="1561383706411975199">"Chia sẻ kết nối Internet"</string>
+ <string name="bluetooth_pan_profile_summary_use_for" msgid="5664884523822068653">"Sử dụng để truy cập Internet"</string>
+ <string name="bluetooth_map_profile_summary_use_for" msgid="5154200119919927434">"Sử dụng cho bản đồ"</string>
+ <string name="bluetooth_sap_profile_summary_use_for" msgid="7085362712786907993">"Sử dụng để truy cập SIM"</string>
+ <string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"Sử dụng cho âm thanh phương tiện"</string>
+ <string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"Sử dụng cho âm thanh điện thoại"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"Sử dụng để chuyển tệp"</string>
+ <string name="bluetooth_hid_profile_summary_use_for" msgid="232727040453645139">"Sử dụng để nhập"</string>
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"Ghép nối"</string>
+ <string name="bluetooth_pairing_accept_all_caps" msgid="6061699265220789149">"GHÉP NỐI"</string>
+ <string name="bluetooth_pairing_decline" msgid="4185420413578948140">"Hủy"</string>
+ <string name="bluetooth_pairing_will_share_phonebook" msgid="4982239145676394429">"Ghép nối giúp bạn có thể truy cập danh bạ và nhật ký cuộc gọi của mình khi được kết nối."</string>
+ <string name="bluetooth_pairing_error_message" msgid="3748157733635947087">"Không thể ghép nối với <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="8337234855188925274">"Không thể ghép nối với <xliff:g id="DEVICE_NAME">%1$s</xliff:g> do mã PIN hoặc mã xác nhận không đúng."</string>
+ <string name="bluetooth_pairing_device_down_error_message" msgid="7870998403045801381">"Không thể kết nối với <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"Ghép nối bị <xliff:g id="DEVICE_NAME">%1$s</xliff:g> từ chối."</string>
+ <string name="accessibility_wifi_off" msgid="1166761729660614716">"Đã tắt Wi-Fi."</string>
+ <string name="accessibility_no_wifi" msgid="8834610636137374508">"Đã ngắt kết nối Wi-Fi."</string>
+ <string name="accessibility_wifi_one_bar" msgid="4869376278894301820">"Tín hiệu Wi-Fi một vạch."</string>
+ <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>
+ <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>
+ <string name="tether_settings_title_usb" msgid="6688416425801386511">"Truy cập Internet qua USB"</string>
+ <string name="tether_settings_title_wifi" msgid="3277144155960302049">"Điểm phát sóng di động"</string>
+ <string name="tether_settings_title_bluetooth" msgid="355855408317564420">"Truy cập Internet qua Bluetooth"</string>
+ <string name="tether_settings_title_usb_bluetooth" msgid="5355828977109785001">"Đang dùng làm điểm truy cập Internet"</string>
+ <string name="tether_settings_title_all" msgid="8356136101061143841">"USB Internet & điểm truy cập di động"</string>
+ <string name="managed_user_title" msgid="8101244883654409696">"Hồ sơ công việc"</string>
+ <string name="user_guest" msgid="8475274842845401871">"Khách"</string>
+ <string name="unknown" msgid="1592123443519355854">"Không xác định"</string>
+ <string name="running_process_item_user_label" msgid="3129887865552025943">"Người dùng: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
+ <string name="launch_defaults_some" msgid="313159469856372621">"Đã đặt một số ứng dụng chạy mặc định"</string>
+ <string name="launch_defaults_none" msgid="4241129108140034876">"Chưa đặt mặc định"</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-zh-rCN/arrays.xml b/packages/SettingsLib/res/values-zh-rCN/arrays.xml
new file mode 100644
index 0000000..b7d99a1
--- /dev/null
+++ b/packages/SettingsLib/res/values-zh-rCN/arrays.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="wifi_status">
+ <item msgid="1922181315419294640"></item>
+ <item msgid="8934131797783724664">"正在扫描..."</item>
+ <item msgid="8513729475867537913">"正在连接..."</item>
+ <item msgid="515055375277271756">"正在进行身份验证..."</item>
+ <item msgid="1943354004029184381">"正在获取IP地址..."</item>
+ <item msgid="4221763391123233270">"已连接"</item>
+ <item msgid="624838831631122137">"已暂停"</item>
+ <item msgid="7979680559596111948">"正在断开连接..."</item>
+ <item msgid="1634960474403853625">"已断开连接"</item>
+ <item msgid="746097431216080650">"失败"</item>
+ <item msgid="6367044185730295334">"已停用"</item>
+ <item msgid="503942654197908005">"暂时关闭(网络状况不佳)"</item>
+ </string-array>
+ <string-array name="wifi_status_with_ssid">
+ <item msgid="7714855332363650812"></item>
+ <item msgid="8878186979715711006">"正在扫描..."</item>
+ <item msgid="355508996603873860">"正在连接到 <xliff:g id="NETWORK_NAME">%1$s</xliff:g>..."</item>
+ <item msgid="554971459996405634">"正在通过 <xliff:g id="NETWORK_NAME">%1$s</xliff:g> 进行身份验证..."</item>
+ <item msgid="7928343808033020343">"正在从<xliff:g id="NETWORK_NAME">%1$s</xliff:g>获取IP地址..."</item>
+ <item msgid="8937994881315223448">"已连接到 <xliff:g id="NETWORK_NAME">%1$s</xliff:g>"</item>
+ <item msgid="1330262655415760617">"已暂停"</item>
+ <item msgid="7698638434317271902">"正在断开与 <xliff:g id="NETWORK_NAME">%1$s</xliff:g> 的连接..."</item>
+ <item msgid="197508606402264311">"已断开连接"</item>
+ <item msgid="8578370891960825148">"失败"</item>
+ <item msgid="5660739516542454527">"已停用"</item>
+ <item msgid="1805837518286731242">"暂时关闭(网络状况不佳)"</item>
+ </string-array>
+</resources>
diff --git a/packages/SettingsLib/res/values-zh-rCN/strings.xml b/packages/SettingsLib/res/values-zh-rCN/strings.xml
new file mode 100644
index 0000000..0031d39
--- /dev/null
+++ b/packages/SettingsLib/res/values-zh-rCN/strings.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="wifi_fail_to_scan" msgid="1265540342578081461">"无法扫描网络"</string>
+ <string name="wifi_security_none" msgid="7985461072596594400">"无"</string>
+ <string name="wifi_remembered" msgid="4955746899347821096">"已保存"</string>
+ <string name="wifi_disabled_generic" msgid="4259794910584943386">"已停用"</string>
+ <string name="wifi_disabled_network_failure" msgid="2364951338436007124">"IP 配置失败"</string>
+ <string name="wifi_disabled_wifi_failure" msgid="3081668066612876581">"WLAN 连接失败"</string>
+ <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"身份验证出现问题"</string>
+ <string name="wifi_not_in_range" msgid="1136191511238508967">"不在范围内"</string>
+ <string name="wifi_no_internet" msgid="9151470775868728896">"未检测到任何互联网连接,因此不会自动重新连接。"</string>
+ <string name="saved_network" msgid="4352716707126620811">"已通过<xliff:g id="NAME">%1$s</xliff:g>保存"</string>
+ <string name="connected_via_wfa" msgid="3805736726317410714">"已连接(通过 WLAN 助手)"</string>
+ <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>
+ <string name="bluetooth_disconnected" msgid="6557104142667339895">"已断开连接"</string>
+ <string name="bluetooth_disconnecting" msgid="8913264760027764974">"正在断开连接..."</string>
+ <string name="bluetooth_connecting" msgid="8555009514614320497">"正在连接..."</string>
+ <string name="bluetooth_connected" msgid="6038755206916626419">"已连接"</string>
+ <string name="bluetooth_pairing" msgid="1426882272690346242">"正在配对..."</string>
+ <string name="bluetooth_connected_no_headset" msgid="2866994875046035609">"已连接(无手机)"</string>
+ <string name="bluetooth_connected_no_a2dp" msgid="4576188601581440337">"已连接(无媒体)"</string>
+ <string name="bluetooth_connected_no_map" msgid="6504436917057479986">"已连接(无消息权限)"</string>
+ <string name="bluetooth_connected_no_headset_no_a2dp" msgid="9195757766755553810">"已连接(没有手机或媒体信号)"</string>
+ <string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"媒体音频"</string>
+ <string name="bluetooth_profile_headset" msgid="8658779596261212609">"手机音频"</string>
+ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"文件传输"</string>
+ <string name="bluetooth_profile_hid" msgid="3680729023366986480">"输入设备"</string>
+ <string name="bluetooth_profile_pan" msgid="3391606497945147673">"互联网连接"</string>
+ <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"共享联系人"</string>
+ <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"用于共享联系人"</string>
+ <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"共享互联网连接"</string>
+ <string name="bluetooth_profile_map" msgid="5465271250454324383">"消息权限"</string>
+ <string name="bluetooth_profile_sap" msgid="5764222021851283125">"SIM 卡存取权限"</string>
+ <string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"已连接到媒体音频"</string>
+ <string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"已连接到手机音频"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"已连接到文件传输服务器"</string>
+ <string name="bluetooth_map_profile_summary_connected" msgid="8191407438851351713">"已连接到地图"</string>
+ <string name="bluetooth_sap_profile_summary_connected" msgid="8561765057453083838">"已连接到 SAP"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"未连接到文件传输服务器"</string>
+ <string name="bluetooth_hid_profile_summary_connected" msgid="3381760054215168689">"已连接到输入设备"</string>
+ <string name="bluetooth_pan_user_profile_summary_connected" msgid="4602294638909590612">"经由其他设备连接到互联网"</string>
+ <string name="bluetooth_pan_nap_profile_summary_connected" msgid="1561383706411975199">"与其他设备共享该设备的互联网连接"</string>
+ <string name="bluetooth_pan_profile_summary_use_for" msgid="5664884523822068653">"用于连接互联网"</string>
+ <string name="bluetooth_map_profile_summary_use_for" msgid="5154200119919927434">"用于地图"</string>
+ <string name="bluetooth_sap_profile_summary_use_for" msgid="7085362712786907993">"用于存取 SIM 卡"</string>
+ <string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"用于媒体音频"</string>
+ <string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"用于手机音频"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"用于文件传输"</string>
+ <string name="bluetooth_hid_profile_summary_use_for" msgid="232727040453645139">"用于输入"</string>
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"配对"</string>
+ <string name="bluetooth_pairing_accept_all_caps" msgid="6061699265220789149">"配对"</string>
+ <string name="bluetooth_pairing_decline" msgid="4185420413578948140">"取消"</string>
+ <string name="bluetooth_pairing_will_share_phonebook" msgid="4982239145676394429">"配对之后,所配对的设备将可以在建立连接后访问您的通讯录和通话记录。"</string>
+ <string name="bluetooth_pairing_error_message" msgid="3748157733635947087">"无法与“<xliff:g id="DEVICE_NAME">%1$s</xliff:g>”进行配对。"</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="8337234855188925274">"PIN码或配对密钥不正确,无法与<xliff:g id="DEVICE_NAME">%1$s</xliff:g>配对。"</string>
+ <string name="bluetooth_pairing_device_down_error_message" msgid="7870998403045801381">"无法与“<xliff:g id="DEVICE_NAME">%1$s</xliff:g>”进行通信。"</string>
+ <string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> 已拒绝配对。"</string>
+ <string name="accessibility_wifi_off" msgid="1166761729660614716">"WLAN 已关闭。"</string>
+ <string name="accessibility_no_wifi" msgid="8834610636137374508">"WLAN 连接已断开。"</string>
+ <string name="accessibility_wifi_one_bar" msgid="4869376278894301820">"WLAN 信号强度为一格。"</string>
+ <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>
+ <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_wifi" msgid="3277144155960302049">"便携式热点"</string>
+ <string name="tether_settings_title_bluetooth" msgid="355855408317564420">"蓝牙网络共享"</string>
+ <string name="tether_settings_title_usb_bluetooth" msgid="5355828977109785001">"网络共享"</string>
+ <string name="tether_settings_title_all" msgid="8356136101061143841">"网络共享与便携式热点"</string>
+ <string name="managed_user_title" msgid="8101244883654409696">"工作资料"</string>
+ <string name="user_guest" msgid="8475274842845401871">"访客"</string>
+ <string name="unknown" msgid="1592123443519355854">"未知"</string>
+ <string name="running_process_item_user_label" msgid="3129887865552025943">"用户:<xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
+ <string name="launch_defaults_some" msgid="313159469856372621">"已设置部分默认选项"</string>
+ <string name="launch_defaults_none" msgid="4241129108140034876">"未设置任何默认选项"</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-zh-rHK/arrays.xml b/packages/SettingsLib/res/values-zh-rHK/arrays.xml
new file mode 100644
index 0000000..b8a1ebb
--- /dev/null
+++ b/packages/SettingsLib/res/values-zh-rHK/arrays.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="wifi_status">
+ <item msgid="1922181315419294640"></item>
+ <item msgid="8934131797783724664">"掃瞄中…"</item>
+ <item msgid="8513729475867537913">"正在連線..."</item>
+ <item msgid="515055375277271756">"正在驗證…"</item>
+ <item msgid="1943354004029184381">"正在取得 IP 位址…"</item>
+ <item msgid="4221763391123233270">"已連線"</item>
+ <item msgid="624838831631122137">"已暫停"</item>
+ <item msgid="7979680559596111948">"正在中斷連線…"</item>
+ <item msgid="1634960474403853625">"已中斷連線"</item>
+ <item msgid="746097431216080650">"失敗"</item>
+ <item msgid="6367044185730295334">"已封鎖"</item>
+ <item msgid="503942654197908005">"目前正暫時避開欠佳的連線"</item>
+ </string-array>
+ <string-array name="wifi_status_with_ssid">
+ <item msgid="7714855332363650812"></item>
+ <item msgid="8878186979715711006">"掃瞄中…"</item>
+ <item msgid="355508996603873860">"正在連線到 <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="554971459996405634">"正在取得 <xliff:g id="NETWORK_NAME">%1$s</xliff:g> 的授權…"</item>
+ <item msgid="7928343808033020343">"正在從 <xliff:g id="NETWORK_NAME">%1$s</xliff:g> 取得 IP 位址…"</item>
+ <item msgid="8937994881315223448">"已連線到 <xliff:g id="NETWORK_NAME">%1$s</xliff:g>"</item>
+ <item msgid="1330262655415760617">"已暫停"</item>
+ <item msgid="7698638434317271902">"正在中斷 <xliff:g id="NETWORK_NAME">%1$s</xliff:g> 連線…"</item>
+ <item msgid="197508606402264311">"已中斷連線"</item>
+ <item msgid="8578370891960825148">"失敗"</item>
+ <item msgid="5660739516542454527">"已封鎖"</item>
+ <item msgid="1805837518286731242">"目前正暫時避開欠佳的連線"</item>
+ </string-array>
+</resources>
diff --git a/packages/SettingsLib/res/values-zh-rHK/strings.xml b/packages/SettingsLib/res/values-zh-rHK/strings.xml
new file mode 100644
index 0000000..2b41be3
--- /dev/null
+++ b/packages/SettingsLib/res/values-zh-rHK/strings.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="wifi_fail_to_scan" msgid="1265540342578081461">"無法掃瞄網絡"</string>
+ <string name="wifi_security_none" msgid="7985461072596594400">"無"</string>
+ <string name="wifi_remembered" msgid="4955746899347821096">"已儲存"</string>
+ <string name="wifi_disabled_generic" msgid="4259794910584943386">"已停用"</string>
+ <string name="wifi_disabled_network_failure" msgid="2364951338436007124">"IP 設定失敗"</string>
+ <string name="wifi_disabled_wifi_failure" msgid="3081668066612876581">"WiFi 連線失敗"</string>
+ <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"驗證問題"</string>
+ <string name="wifi_not_in_range" msgid="1136191511238508967">"超出可用範圍"</string>
+ <string name="wifi_no_internet" msgid="9151470775868728896">"未能偵測到互聯網連線,因此不會自動重新連線。"</string>
+ <string name="saved_network" msgid="4352716707126620811">"<xliff:g id="NAME">%1$s</xliff:g> 的儲存"</string>
+ <string name="connected_via_wfa" msgid="3805736726317410714">"已透過 Wi-Fi 小幫手連線"</string>
+ <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>
+ <string name="bluetooth_disconnected" msgid="6557104142667339895">"已中斷連線"</string>
+ <string name="bluetooth_disconnecting" msgid="8913264760027764974">"正在中斷連線..."</string>
+ <string name="bluetooth_connecting" msgid="8555009514614320497">"正在連線..."</string>
+ <string name="bluetooth_connected" msgid="6038755206916626419">"已連結"</string>
+ <string name="bluetooth_pairing" msgid="1426882272690346242">"正在配對..."</string>
+ <string name="bluetooth_connected_no_headset" msgid="2866994875046035609">"已連線(無手機)"</string>
+ <string name="bluetooth_connected_no_a2dp" msgid="4576188601581440337">"已連線 (無媒體)"</string>
+ <string name="bluetooth_connected_no_map" msgid="6504436917057479986">"已連結 (無訊息存取權)"</string>
+ <string name="bluetooth_connected_no_headset_no_a2dp" msgid="9195757766755553810">"已連線 (無手機或媒體)"</string>
+ <string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"媒體音效"</string>
+ <string name="bluetooth_profile_headset" msgid="8658779596261212609">"手機音效"</string>
+ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"檔案傳輸"</string>
+ <string name="bluetooth_profile_hid" msgid="3680729023366986480">"輸入裝置"</string>
+ <string name="bluetooth_profile_pan" msgid="3391606497945147673">"互聯網連線"</string>
+ <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"聯絡人共用"</string>
+ <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"用於聯絡人共用"</string>
+ <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"互聯網連線分享"</string>
+ <string name="bluetooth_profile_map" msgid="5465271250454324383">"訊息存取權"</string>
+ <string name="bluetooth_profile_sap" msgid="5764222021851283125">"SIM 卡存取"</string>
+ <string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"已連接媒體音頻裝置"</string>
+ <string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"已連接手機耳機"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"已連線至檔案傳輸伺服器"</string>
+ <string name="bluetooth_map_profile_summary_connected" msgid="8191407438851351713">"已連結地圖"</string>
+ <string name="bluetooth_sap_profile_summary_connected" msgid="8561765057453083838">"已連接 SAP"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"未連線至檔案傳輸伺服器"</string>
+ <string name="bluetooth_hid_profile_summary_connected" msgid="3381760054215168689">"已連線至輸入裝置"</string>
+ <string name="bluetooth_pan_user_profile_summary_connected" msgid="4602294638909590612">"已連線至裝置並取得互聯網連線"</string>
+ <string name="bluetooth_pan_nap_profile_summary_connected" msgid="1561383706411975199">"與裝置分享本地互聯網連線"</string>
+ <string name="bluetooth_pan_profile_summary_use_for" msgid="5664884523822068653">"用於上網"</string>
+ <string name="bluetooth_map_profile_summary_use_for" msgid="5154200119919927434">"用於地圖"</string>
+ <string name="bluetooth_sap_profile_summary_use_for" msgid="7085362712786907993">"用來存取 SIM 卡"</string>
+ <string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"用於媒體音效"</string>
+ <string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"用於手機音效"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"用於傳輸檔案"</string>
+ <string name="bluetooth_hid_profile_summary_use_for" msgid="232727040453645139">"用於輸入"</string>
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"配對"</string>
+ <string name="bluetooth_pairing_accept_all_caps" msgid="6061699265220789149">"配對"</string>
+ <string name="bluetooth_pairing_decline" msgid="4185420413578948140">"取消"</string>
+ <string name="bluetooth_pairing_will_share_phonebook" msgid="4982239145676394429">"一旦配對成功,即可存取您的通訊錄和通話記錄。"</string>
+ <string name="bluetooth_pairing_error_message" msgid="3748157733635947087">"無法與 <xliff:g id="DEVICE_NAME">%1$s</xliff:g> 配對。"</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="8337234855188925274">"無法與 <xliff:g id="DEVICE_NAME">%1$s</xliff:g> 配對,因為 PIN 碼或密鑰不正確。"</string>
+ <string name="bluetooth_pairing_device_down_error_message" msgid="7870998403045801381">"無法與 <xliff:g id="DEVICE_NAME">%1$s</xliff:g> 通訊。"</string>
+ <string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"「<xliff:g id="DEVICE_NAME">%1$s</xliff:g>」拒絕配對要求。"</string>
+ <string name="accessibility_wifi_off" msgid="1166761729660614716">"Wi-Fi 已關閉。"</string>
+ <string name="accessibility_no_wifi" msgid="8834610636137374508">"Wi-Fi 連線已中斷。"</string>
+ <string name="accessibility_wifi_one_bar" msgid="4869376278894301820">"Wi-Fi 訊號一格。"</string>
+ <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>
+ <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_wifi" msgid="3277144155960302049">"可攜式熱點"</string>
+ <string name="tether_settings_title_bluetooth" msgid="355855408317564420">"藍牙網絡共享"</string>
+ <string name="tether_settings_title_usb_bluetooth" msgid="5355828977109785001">"網絡共享"</string>
+ <string name="tether_settings_title_all" msgid="8356136101061143841">"網絡共享和可攜式熱點"</string>
+ <string name="managed_user_title" msgid="8101244883654409696">"公司檔案"</string>
+ <string name="user_guest" msgid="8475274842845401871">"訪客"</string>
+ <string name="unknown" msgid="1592123443519355854">"未知"</string>
+ <string name="running_process_item_user_label" msgid="3129887865552025943">"使用者:<xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
+ <string name="launch_defaults_some" msgid="313159469856372621">"已設定部分預設值"</string>
+ <string name="launch_defaults_none" msgid="4241129108140034876">"未設定預設值"</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-zh-rTW/arrays.xml b/packages/SettingsLib/res/values-zh-rTW/arrays.xml
new file mode 100644
index 0000000..ac1a5ad
--- /dev/null
+++ b/packages/SettingsLib/res/values-zh-rTW/arrays.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="wifi_status">
+ <item msgid="1922181315419294640"></item>
+ <item msgid="8934131797783724664">"掃描中…"</item>
+ <item msgid="8513729475867537913">"連線中…"</item>
+ <item msgid="515055375277271756">"驗證中…"</item>
+ <item msgid="1943354004029184381">"正在取得 IP 位址…"</item>
+ <item msgid="4221763391123233270">"已連線"</item>
+ <item msgid="624838831631122137">"已暫停"</item>
+ <item msgid="7979680559596111948">"中斷連線中…"</item>
+ <item msgid="1634960474403853625">"已中斷連線"</item>
+ <item msgid="746097431216080650">"失敗"</item>
+ <item msgid="6367044185730295334">"已封鎖"</item>
+ <item msgid="503942654197908005">"目前正暫時避開品質不佳的連線"</item>
+ </string-array>
+ <string-array name="wifi_status_with_ssid">
+ <item msgid="7714855332363650812"></item>
+ <item msgid="8878186979715711006">"掃描中…"</item>
+ <item msgid="355508996603873860">"正在連線到 <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="554971459996405634">"正在取得 <xliff:g id="NETWORK_NAME">%1$s</xliff:g> 的授權…"</item>
+ <item msgid="7928343808033020343">"正在由 <xliff:g id="NETWORK_NAME">%1$s</xliff:g> 取得 IP 位址…"</item>
+ <item msgid="8937994881315223448">"已連線到 <xliff:g id="NETWORK_NAME">%1$s</xliff:g>"</item>
+ <item msgid="1330262655415760617">"已暫停"</item>
+ <item msgid="7698638434317271902">"正在中斷 <xliff:g id="NETWORK_NAME">%1$s</xliff:g> 連線…"</item>
+ <item msgid="197508606402264311">"已中斷連線"</item>
+ <item msgid="8578370891960825148">"失敗"</item>
+ <item msgid="5660739516542454527">"已封鎖"</item>
+ <item msgid="1805837518286731242">"目前正暫時避開品質不佳的連線"</item>
+ </string-array>
+</resources>
diff --git a/packages/SettingsLib/res/values-zh-rTW/strings.xml b/packages/SettingsLib/res/values-zh-rTW/strings.xml
new file mode 100644
index 0000000..6a1edf7
--- /dev/null
+++ b/packages/SettingsLib/res/values-zh-rTW/strings.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="wifi_fail_to_scan" msgid="1265540342578081461">"無法掃描網路"</string>
+ <string name="wifi_security_none" msgid="7985461072596594400">"無"</string>
+ <string name="wifi_remembered" msgid="4955746899347821096">"已儲存"</string>
+ <string name="wifi_disabled_generic" msgid="4259794910584943386">"已停用"</string>
+ <string name="wifi_disabled_network_failure" msgid="2364951338436007124">"IP 設定失敗"</string>
+ <string name="wifi_disabled_wifi_failure" msgid="3081668066612876581">"WiFi 連線失敗"</string>
+ <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"驗證問題"</string>
+ <string name="wifi_not_in_range" msgid="1136191511238508967">"不在有效範圍內"</string>
+ <string name="wifi_no_internet" msgid="9151470775868728896">"未偵測到可用的網際網路連線,系統無法為您自動重新連線。"</string>
+ <string name="saved_network" msgid="4352716707126620811">"由<xliff:g id="NAME">%1$s</xliff:g>儲存"</string>
+ <string name="connected_via_wfa" msgid="3805736726317410714">"已透過 Wi‑Fi 小幫手連線"</string>
+ <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>
+ <string name="bluetooth_disconnected" msgid="6557104142667339895">"已中斷連線"</string>
+ <string name="bluetooth_disconnecting" msgid="8913264760027764974">"正在中斷連線…"</string>
+ <string name="bluetooth_connecting" msgid="8555009514614320497">"連線中…"</string>
+ <string name="bluetooth_connected" msgid="6038755206916626419">"已連線"</string>
+ <string name="bluetooth_pairing" msgid="1426882272690346242">"配對中…"</string>
+ <string name="bluetooth_connected_no_headset" msgid="2866994875046035609">"已連線 (無手機音訊)"</string>
+ <string name="bluetooth_connected_no_a2dp" msgid="4576188601581440337">"已連線 (無媒體音訊)"</string>
+ <string name="bluetooth_connected_no_map" msgid="6504436917057479986">"已連線 (無訊息存取權)"</string>
+ <string name="bluetooth_connected_no_headset_no_a2dp" msgid="9195757766755553810">"已連線 (無手機或媒體音訊)"</string>
+ <string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"媒體音訊"</string>
+ <string name="bluetooth_profile_headset" msgid="8658779596261212609">"手機音訊"</string>
+ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"檔案傳輸"</string>
+ <string name="bluetooth_profile_hid" msgid="3680729023366986480">"輸入裝置"</string>
+ <string name="bluetooth_profile_pan" msgid="3391606497945147673">"網際網路連線"</string>
+ <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"聯絡人共用"</string>
+ <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"用於聯絡人共用"</string>
+ <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"網際網路連線分享"</string>
+ <string name="bluetooth_profile_map" msgid="5465271250454324383">"訊息存取權"</string>
+ <string name="bluetooth_profile_sap" msgid="5764222021851283125">"SIM 卡存取權"</string>
+ <string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"連接至媒體音訊"</string>
+ <string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"連接至電話音訊"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"已連線到檔案傳輸伺服器"</string>
+ <string name="bluetooth_map_profile_summary_connected" msgid="8191407438851351713">"已連線至地圖"</string>
+ <string name="bluetooth_sap_profile_summary_connected" msgid="8561765057453083838">"已連線到 SAP"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"不要連線到檔案傳輸伺服器"</string>
+ <string name="bluetooth_hid_profile_summary_connected" msgid="3381760054215168689">"已連線到輸入裝置"</string>
+ <string name="bluetooth_pan_user_profile_summary_connected" msgid="4602294638909590612">"已連線至裝置並取得網際網路存取權"</string>
+ <string name="bluetooth_pan_nap_profile_summary_connected" msgid="1561383706411975199">"與裝置分享本地網際網路連線"</string>
+ <string name="bluetooth_pan_profile_summary_use_for" msgid="5664884523822068653">"用於網際網路連線"</string>
+ <string name="bluetooth_map_profile_summary_use_for" msgid="5154200119919927434">"地圖使用偏好"</string>
+ <string name="bluetooth_sap_profile_summary_use_for" msgid="7085362712786907993">"用於 SIM 卡存取權"</string>
+ <string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"用於媒體音訊"</string>
+ <string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"用於電話音訊"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"用於傳輸檔案"</string>
+ <string name="bluetooth_hid_profile_summary_use_for" msgid="232727040453645139">"用於輸入"</string>
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"配對"</string>
+ <string name="bluetooth_pairing_accept_all_caps" msgid="6061699265220789149">"配對"</string>
+ <string name="bluetooth_pairing_decline" msgid="4185420413578948140">"取消"</string>
+ <string name="bluetooth_pairing_will_share_phonebook" msgid="4982239145676394429">"配對完成後,所配對的裝置即可在連線後存取您的聯絡人和通話紀錄。"</string>
+ <string name="bluetooth_pairing_error_message" msgid="3748157733635947087">"無法與 <xliff:g id="DEVICE_NAME">%1$s</xliff:g> 配對。"</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="8337234855188925274">"無法與 <xliff:g id="DEVICE_NAME">%1$s</xliff:g> 配對,因為 PIN 或密碼金鑰不正確。"</string>
+ <string name="bluetooth_pairing_device_down_error_message" msgid="7870998403045801381">"無法與 <xliff:g id="DEVICE_NAME">%1$s</xliff:g> 通訊。"</string>
+ <string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"「<xliff:g id="DEVICE_NAME">%1$s</xliff:g>」拒絕配對要求。"</string>
+ <string name="accessibility_wifi_off" msgid="1166761729660614716">"已關閉 Wi-Fi。"</string>
+ <string name="accessibility_no_wifi" msgid="8834610636137374508">"Wi-Fi 連線已中斷。"</string>
+ <string name="accessibility_wifi_one_bar" msgid="4869376278894301820">"Wi-Fi 訊號強度一格。"</string>
+ <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>
+ <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_wifi" msgid="3277144155960302049">"可攜式無線基地台"</string>
+ <string name="tether_settings_title_bluetooth" msgid="355855408317564420">"藍牙網路共用"</string>
+ <string name="tether_settings_title_usb_bluetooth" msgid="5355828977109785001">"網路共用"</string>
+ <string name="tether_settings_title_all" msgid="8356136101061143841">"網路共用與可攜式無線基地台"</string>
+ <string name="managed_user_title" msgid="8101244883654409696">"工作設定檔"</string>
+ <string name="user_guest" msgid="8475274842845401871">"訪客"</string>
+ <string name="unknown" msgid="1592123443519355854">"不明"</string>
+ <string name="running_process_item_user_label" msgid="3129887865552025943">"使用者:<xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
+ <string name="launch_defaults_some" msgid="313159469856372621">"已設定部分預設值"</string>
+ <string name="launch_defaults_none" msgid="4241129108140034876">"未設定預設值"</string>
+</resources>
diff --git a/packages/SettingsLib/res/values-zu/arrays.xml b/packages/SettingsLib/res/values-zu/arrays.xml
new file mode 100644
index 0000000..3404563
--- /dev/null
+++ b/packages/SettingsLib/res/values-zu/arrays.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="wifi_status">
+ <item msgid="1922181315419294640"></item>
+ <item msgid="8934131797783724664">"Iyathwebula..."</item>
+ <item msgid="8513729475867537913">"Iyaxhuma kwi-inthanethi..."</item>
+ <item msgid="515055375277271756">"Iyaqinisekisa..."</item>
+ <item msgid="1943354004029184381">"Ithola ikheli le-IP..."</item>
+ <item msgid="4221763391123233270">"Ixhunyiwe kwi-inthanethi"</item>
+ <item msgid="624838831631122137">"Kumiswe okwesikhashana"</item>
+ <item msgid="7979680559596111948">"Inqamula uxhumano kwi-inthanethi..."</item>
+ <item msgid="1634960474403853625">"Ayixhunyiwe"</item>
+ <item msgid="746097431216080650">"Akuphumelelanga"</item>
+ <item msgid="6367044185730295334">"Uvinjelwe"</item>
+ <item msgid="503942654197908005">"Okwesikhashana ivikela ukuxhumana okungaqinile"</item>
+ </string-array>
+ <string-array name="wifi_status_with_ssid">
+ <item msgid="7714855332363650812"></item>
+ <item msgid="8878186979715711006">"Iyathwebula..."</item>
+ <item msgid="355508996603873860">"Ixhuma ku-<xliff:g id="NETWORK_NAME">%1$s</xliff:g>..."</item>
+ <item msgid="554971459996405634">"Iqinisekisa nge <xliff:g id="NETWORK_NAME">%1$s</xliff:g>..."</item>
+ <item msgid="7928343808033020343">"Ithola ikheli le-IP kusuka <xliff:g id="NETWORK_NAME">%1$s</xliff:g>..."</item>
+ <item msgid="8937994881315223448">"Ixhumeke ku-<xliff:g id="NETWORK_NAME">%1$s</xliff:g>"</item>
+ <item msgid="1330262655415760617">"Kumiswe okwesikhashana"</item>
+ <item msgid="7698638434317271902">"Inqamula kusuka <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="197508606402264311">"Ayixhunyiwe kwi-inthanethi"</item>
+ <item msgid="8578370891960825148">"Akuphumelelanga"</item>
+ <item msgid="5660739516542454527">"Uvinjelwe"</item>
+ <item msgid="1805837518286731242">"Okwesikhashana ivikela ukuxhumana okungaqinile"</item>
+ </string-array>
+</resources>
diff --git a/packages/SettingsLib/res/values-zu/strings.xml b/packages/SettingsLib/res/values-zu/strings.xml
new file mode 100644
index 0000000..83e3dc9
--- /dev/null
+++ b/packages/SettingsLib/res/values-zu/strings.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015 The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="wifi_fail_to_scan" msgid="1265540342578081461">"Ayikwazi ukuhlola amanethiwekhi"</string>
+ <string name="wifi_security_none" msgid="7985461072596594400">"Lutho"</string>
+ <string name="wifi_remembered" msgid="4955746899347821096">"Kulondoloziwe"</string>
+ <string name="wifi_disabled_generic" msgid="4259794910584943386">"Akusebenzi"</string>
+ <string name="wifi_disabled_network_failure" msgid="2364951338436007124">"Ukwehluleka kokulungiswa kwe-IP"</string>
+ <string name="wifi_disabled_wifi_failure" msgid="3081668066612876581">"Ukwehlulekla koxhumo le-WiFi"</string>
+ <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"Inkinga yokufakazela ubuqiniso"</string>
+ <string name="wifi_not_in_range" msgid="1136191511238508967">"Ayikho ebubanzini"</string>
+ <string name="wifi_no_internet" msgid="9151470775868728896">"Ukufinyeela okungekhona kwe-inthanethi kutholakele, ngeke kuxhumeke ngokuzenzakalelayo."</string>
+ <string name="saved_network" msgid="4352716707126620811">"Kulondolozwe ngu-<xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="connected_via_wfa" msgid="3805736726317410714">"Ixhunywe ngomsizi we-Wi-FI"</string>
+ <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>
+ <string name="bluetooth_disconnected" msgid="6557104142667339895">"Ayixhunyiwe"</string>
+ <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Inqamula uxhumano kwi-inthanethi..."</string>
+ <string name="bluetooth_connecting" msgid="8555009514614320497">"Iyaxhuma..."</string>
+ <string name="bluetooth_connected" msgid="6038755206916626419">"Ixhunyiwe"</string>
+ <string name="bluetooth_pairing" msgid="1426882272690346242">"Iyabhangqa..."</string>
+ <string name="bluetooth_connected_no_headset" msgid="2866994875046035609">"Ixhunyiwe (ayikho ifoni)"</string>
+ <string name="bluetooth_connected_no_a2dp" msgid="4576188601581440337">"Ixhunyiwe (ayikho imidiya)"</string>
+ <string name="bluetooth_connected_no_map" msgid="6504436917057479986">"Kuxhunyiwe (akukho ukufinyelela umlayezo)"</string>
+ <string name="bluetooth_connected_no_headset_no_a2dp" msgid="9195757766755553810">"Ixhunyiwe (ayikho ifoni noma imidiya)"</string>
+ <string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Umsindo wemidiya"</string>
+ <string name="bluetooth_profile_headset" msgid="8658779596261212609">"Umsindo wefoni"</string>
+ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"Dlulisa ifayela"</string>
+ <string name="bluetooth_profile_hid" msgid="3680729023366986480">"Idivaysi yokufakwayo"</string>
+ <string name="bluetooth_profile_pan" msgid="3391606497945147673">"Ukufinyelela i-Inthanethi"</string>
+ <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"Ukwabelana kokuxhumana"</string>
+ <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"Sebenzisela ukwabelana kokuxhumana"</string>
+ <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"Ukwabelana ngoxhumano lwe-Inthanethi"</string>
+ <string name="bluetooth_profile_map" msgid="5465271250454324383">"Ukufinyelela umlayezo"</string>
+ <string name="bluetooth_profile_sap" msgid="5764222021851283125">"Ukufinyelela kwe-SIM"</string>
+ <string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"Ixhume emsindweni wemidiya"</string>
+ <string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"Ixhunywe kumsindo wefoni"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"Ixhunywe kwiseva yokudlulisa ifayela"</string>
+ <string name="bluetooth_map_profile_summary_connected" msgid="8191407438851351713">"Ixhumeke kumephu"</string>
+ <string name="bluetooth_sap_profile_summary_connected" msgid="8561765057453083838">"Kuxhumeke ku-SAP"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"Ayixhunyiwe kwiseva sokudlulisa ifayela"</string>
+ <string name="bluetooth_hid_profile_summary_connected" msgid="3381760054215168689">"Ixhunywe kwidivaysi yokufakwayo"</string>
+ <string name="bluetooth_pan_user_profile_summary_connected" msgid="4602294638909590612">"Ixhunyiwe kwidivaysi yokufinyelela kwi-Inthanethi"</string>
+ <string name="bluetooth_pan_nap_profile_summary_connected" msgid="1561383706411975199">"Yabelana noxhumano lwe-Inthanethi kanye nedivaysi"</string>
+ <string name="bluetooth_pan_profile_summary_use_for" msgid="5664884523822068653">"Sebenzisa ukufinyelela i-Inthanethi"</string>
+ <string name="bluetooth_map_profile_summary_use_for" msgid="5154200119919927434">"Sebenzisela imephu"</string>
+ <string name="bluetooth_sap_profile_summary_use_for" msgid="7085362712786907993">"Ukusebenzisa kokufinyelela kwe-SIM"</string>
+ <string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"Sebenzisela umsindo wemidiya"</string>
+ <string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"Sebenziselwa umsindo wefoni"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"Sebenziselwa ukudlulisa ifayela"</string>
+ <string name="bluetooth_hid_profile_summary_use_for" msgid="232727040453645139">"Isetshenziselwa okufakwayo"</string>
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"Bhangqa"</string>
+ <string name="bluetooth_pairing_accept_all_caps" msgid="6061699265220789149">"BHANQA"</string>
+ <string name="bluetooth_pairing_decline" msgid="4185420413578948140">"Khansela"</string>
+ <string name="bluetooth_pairing_will_share_phonebook" msgid="4982239145676394429">"Ukubhanqa kunika ukufinyelela koxhumana nabo nomlando wekholi uma uxhumekile."</string>
+ <string name="bluetooth_pairing_error_message" msgid="3748157733635947087">"Ayikwazanga ukuhlangana ne <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="8337234855188925274">"Ayikwazanga ukumataniswa ne <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ngenxa ye-PIN noma isihluthulelo sokungena okungafanele."</string>
+ <string name="bluetooth_pairing_device_down_error_message" msgid="7870998403045801381">"Ayaikwazi ukuxhumana ne- <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"Ukubhangqa kunqatshelwe i-<xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="accessibility_wifi_off" msgid="1166761729660614716">"I-Wifi ivaliwe."</string>
+ <string name="accessibility_no_wifi" msgid="8834610636137374508">"I-Wifi inqanyuliwe."</string>
+ <string name="accessibility_wifi_one_bar" msgid="4869376278894301820">"Ibha elilodwa le-Wifi."</string>
+ <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>
+ <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>
+ <string name="tether_settings_title_usb" msgid="6688416425801386511">"Imodemu nge-USB"</string>
+ <string name="tether_settings_title_wifi" msgid="3277144155960302049">"I-hotspot ephathekayo"</string>
+ <string name="tether_settings_title_bluetooth" msgid="355855408317564420">"Imodemu nge-Bluetooth"</string>
+ <string name="tether_settings_title_usb_bluetooth" msgid="5355828977109785001">"Ukusebenzisa njengemodemu"</string>
+ <string name="tether_settings_title_all" msgid="8356136101061143841">"Ukusebenzisa njengemodemu & i-hotspot ephathekayo"</string>
+ <string name="managed_user_title" msgid="8101244883654409696">"Iphrofayela yomsebenzi"</string>
+ <string name="user_guest" msgid="8475274842845401871">"Isivakashi"</string>
+ <string name="unknown" msgid="1592123443519355854">"Akwaziwa"</string>
+ <string name="running_process_item_user_label" msgid="3129887865552025943">"Umsebenzisi: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
+ <string name="launch_defaults_some" msgid="313159469856372621">"Okunye okuzenzakalelayo okusethiwe"</string>
+ <string name="launch_defaults_none" msgid="4241129108140034876">"Akukho okuzenzakalelayo okusethiwe"</string>
+</resources>
diff --git a/packages/Shell/src/com/android/shell/BugreportReceiver.java b/packages/Shell/src/com/android/shell/BugreportReceiver.java
index d83b516..0d1ad19 100644
--- a/packages/Shell/src/com/android/shell/BugreportReceiver.java
+++ b/packages/Shell/src/com/android/shell/BugreportReceiver.java
@@ -25,6 +25,7 @@
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
+import android.content.ClipData;
import android.content.Context;
import android.content.Intent;
import android.content.res.Configuration;
@@ -41,14 +42,11 @@
import libcore.io.Streams;
import java.io.BufferedOutputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.Closeable;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
-import java.io.OutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
import java.util.ArrayList;
@@ -107,11 +105,6 @@
*/
private void triggerLocalNotification(final Context context, final File bugreportFile,
final File screenshotFile) {
- // Files are kept on private storage, so turn into Uris that we can
- // grant temporary permissions for.
- final Uri bugreportUri = FileProvider.getUriForFile(context, AUTHORITY, bugreportFile);
- final Uri screenshotUri = FileProvider.getUriForFile(context, AUTHORITY, screenshotFile);
-
boolean isPlainText = bugreportFile.getName().toLowerCase().endsWith(".txt");
if (!isPlainText) {
// Already zipped, send it right away.
@@ -133,12 +126,22 @@
*/
private static Intent buildSendIntent(Context context, Uri bugreportUri, Uri screenshotUri) {
final Intent intent = new Intent(Intent.ACTION_SEND_MULTIPLE);
+ final String mimeType = "application/vnd.android.bugreport";
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.addCategory(Intent.CATEGORY_DEFAULT);
- intent.setType("application/vnd.android.bugreport");
+ intent.setType(mimeType);
intent.putExtra(Intent.EXTRA_SUBJECT, bugreportUri.getLastPathSegment());
+
+ // EXTRA_TEXT should be an ArrayList, but some clients are expecting a single String.
+ // So, to avoid an exception on Intent.migrateExtraStreamToClipData(), we need to manually
+ // create the ClipData object with the attachments URIs.
intent.putExtra(Intent.EXTRA_TEXT, SystemProperties.get("ro.build.description"));
+ final ClipData clipData = new ClipData(
+ null, new String[] { mimeType },
+ new ClipData.Item(null, null, null, bugreportUri));
+ clipData.addItem(new ClipData.Item(null, null, null, screenshotUri));
+ intent.setClipData(clipData);
final ArrayList<Uri> attachments = Lists.newArrayList(bugreportUri, screenshotUri);
intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, attachments);
diff --git a/packages/SystemUI/res/drawable/ic_collapse_children.xml b/packages/SystemUI/res/drawable/ic_collapse_children.xml
deleted file mode 100644
index b0ce1e6..0000000
--- a/packages/SystemUI/res/drawable/ic_collapse_children.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<!--
- ~ Copyright (C) 2015 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
- -->
-
-<inset xmlns:android="http://schemas.android.com/apk/res/android"
- android:insetTop="2dp"
- android:drawable="@drawable/ic_expand_less"/>
diff --git a/packages/SystemUI/res/drawable/ic_expand_children.xml b/packages/SystemUI/res/drawable/ic_expand_children.xml
deleted file mode 100644
index 1762be4..0000000
--- a/packages/SystemUI/res/drawable/ic_expand_children.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<!--
- ~ Copyright (C) 2015 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
- -->
-<inset xmlns:android="http://schemas.android.com/apk/res/android"
- android:insetTop="2dp"
- android:drawable="@drawable/ic_expand_more"/>
diff --git a/packages/SystemUI/res/drawable/notification_expand_more.xml b/packages/SystemUI/res/drawable/notification_expand_more.xml
new file mode 100644
index 0000000..5aa7937
--- /dev/null
+++ b/packages/SystemUI/res/drawable/notification_expand_more.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Copyright (C) 2015 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.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="22.0dp"
+ android:height="22.0dp"
+ android:viewportWidth="24.0"
+ android:viewportHeight="24.0">
+ <path
+ android:pathData="M16.600000,8.600000l-4.600000,4.599999 -4.600000,-4.599999 -1.400000,1.400000 6.000000,6.000000 6.000000,-6.000000z"
+ android:fillColor="#FF000000"/>
+</vector>
diff --git a/packages/SystemUI/res/layout/hybrid_notification.xml b/packages/SystemUI/res/layout/hybrid_notification.xml
new file mode 100644
index 0000000..9e64d2c
--- /dev/null
+++ b/packages/SystemUI/res/layout/hybrid_notification.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2015 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
+ -->
+
+<com.android.systemui.statusbar.notification.HybridNotificationView
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="@dimen/notification_max_height">
+ <TextView
+ android:id="@+id/notification_title"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center_vertical"
+ android:singleLine="true"
+ android:textAppearance="@*android:style/TextAppearance.Material.Notification.Title"
+ android:paddingEnd="4dp"
+ />
+ <TextView
+ android:id="@+id/notification_text"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center_vertical"
+ android:textAppearance="@*android:style/TextAppearance.Material.Notification"
+ android:singleLine="true"
+ />
+</com.android.systemui.statusbar.notification.HybridNotificationView>
diff --git a/packages/SystemUI/res/layout/notification_collapse_button.xml b/packages/SystemUI/res/layout/notification_collapse_button.xml
deleted file mode 100644
index 3ec5f63..0000000
--- a/packages/SystemUI/res/layout/notification_collapse_button.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- ~ Copyright (C) 2015 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
- -->
-<FrameLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="@dimen/notification_bottom_decor_height">
- <TextView
- android:id="@+id/notification_expand_button"
- android:layout_width="wrap_content"
- android:layout_height="@dimen/notification_bottom_decor_height"
- android:background="@null"
- android:layout_gravity="top|center_horizontal"
- android:gravity="center_vertical|center_horizontal"
- android:textAppearance="@*android:style/TextAppearance.Material.Notification.Title"
- android:text="@string/notification_collapse_button_text"
- android:drawableEnd="@drawable/ic_collapse_children"
- android:drawablePadding="1dp"
- />
-</FrameLayout>
diff --git a/packages/SystemUI/res/layout/notification_expand_button.xml b/packages/SystemUI/res/layout/notification_expand_button.xml
deleted file mode 100644
index 3c478f7..0000000
--- a/packages/SystemUI/res/layout/notification_expand_button.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- ~ Copyright (C) 2015 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
- -->
-
-<FrameLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="@dimen/notification_bottom_decor_height">
- <TextView
- android:id="@+id/notification_expand_button"
- android:layout_width="wrap_content"
- android:layout_height="@dimen/notification_bottom_decor_height"
- android:background="@null"
- android:layout_gravity="top|center_horizontal"
- android:gravity="center_vertical|center_horizontal"
- android:textAppearance="@*android:style/TextAppearance.Material.Notification.Title"
- android:text="@string/notification_expand_button_text"
- android:drawableEnd="@drawable/ic_expand_children"
- android:drawablePadding="1dp"
- />
- <com.android.systemui.statusbar.AlphaOptimizedView
- android:id="@+id/notification_expand_divider"
- android:layout_width="match_parent"
- android:layout_height="1dp"
- android:layout_gravity="top|center"
- android:background="@*android:drawable/notification_template_divider" />
-</FrameLayout>
diff --git a/packages/SystemUI/res/layout/notification_header.xml b/packages/SystemUI/res/layout/notification_header.xml
new file mode 100644
index 0000000..3475d00
--- /dev/null
+++ b/packages/SystemUI/res/layout/notification_header.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2015 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
+ -->
+
+<com.android.systemui.statusbar.notification.NotificationHeaderView
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="@dimen/notification_header_height"
+ android:clipChildren="false">
+ <LinearLayout
+ android:orientation="horizontal"
+ android:layout_width="wrap_content"
+ android:layout_height="@dimen/notification_header_height"
+ android:layout_gravity="start"
+ android:gravity="center_vertical"
+ android:paddingStart="@dimen/notification_content_margin_start">
+ <ImageView
+ android:id="@+id/header_notification_icon"
+ android:layout_width="24dp"
+ android:layout_height="24dp"
+ android:layout_marginEnd="4dp"
+ />
+ <TextView
+ android:id="@+id/number_of_children"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:textAppearance="@*android:style/TextAppearance.Material.Notification"
+ android:layout_marginEnd="2dp"
+ android:layout_marginStart="1dp"
+ />
+ <TextView
+ android:id="@+id/app_name_text"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:textAppearance="@style/TextAppearance.Material.Notification.HeaderTitle"
+ android:layout_marginStart="4dp"
+ android:layout_marginEnd="8dp"
+ />
+ <TextView
+ android:id="@+id/app_title_sub_text_divider"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:textAppearance="@style/TextAppearance.Material.Notification.HeaderTitle"
+ android:layout_marginEnd="8dp"
+ android:text="@string/notification_header_divider_symbol"/>
+ <TextView
+ android:id="@+id/title_sub_text"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:textAppearance="@style/TextAppearance.Material.Notification.HeaderTitle"
+ android:layout_marginEnd="8dp" />
+ <TextView
+ android:id="@+id/post_time"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="end|center_vertical"
+ android:textAppearance="@*android:style/TextAppearance.Material.Notification.Time"
+ android:paddingEnd="8dp"
+ />
+ </LinearLayout>
+ <ImageButton
+ android:id="@+id/notification_expand_button"
+ android:background="@null"
+ android:layout_width="48dp"
+ android:layout_height="48dp"
+ android:layout_gravity="end|center_vertical"
+ android:src="@drawable/notification_expand_more"
+ android:layout_marginEnd="8dp"
+ />
+</com.android.systemui.statusbar.notification.NotificationHeaderView>
diff --git a/packages/SystemUI/res/layout/status_bar_notification_row.xml b/packages/SystemUI/res/layout/status_bar_notification_row.xml
index ea7ce96..b9088ec 100644
--- a/packages/SystemUI/res/layout/status_bar_notification_row.xml
+++ b/packages/SystemUI/res/layout/status_bar_notification_row.xml
@@ -61,11 +61,11 @@
/>
<ViewStub
- android:layout="@layout/notification_expand_button"
- android:id="@+id/more_button_stub"
- android:inflatedId="@+id/notification_more_button_container"
+ android:layout="@layout/notification_header"
+ android:id="@+id/notification_header_stub"
+ android:inflatedId="@+id/notification_header"
android:layout_width="match_parent"
- android:layout_height="@dimen/notification_bottom_decor_height"
+ android:layout_height="@dimen/notification_header_height"
/>
<ViewStub
diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml
index a4137b9..c413524 100644
--- a/packages/SystemUI/res/values/dimens.xml
+++ b/packages/SystemUI/res/values/dimens.xml
@@ -36,6 +36,18 @@
<!-- The font size for the clock -->
<dimen name="status_bar_clock_size">14sp</dimen>
+ <!-- The margin on the start of the content view -->
+ <dimen name="notification_content_margin_start">16dp</dimen>
+
+ <!-- The maximum size of the title when in single line mode -->
+ <dimen name="notification_maximum_title_length">150sp</dimen>
+
+ <!-- The margin on the end of the content view -->
+ <dimen name="notification_content_margin_end">8dp</dimen>
+
+ <!-- Height of a single line notification in the status bar -->
+ <dimen name="notification_single_line_height">32sp</dimen>
+
<!-- Height of a small notification in the status bar -->
<dimen name="notification_min_height">64dp</dimen>
@@ -333,8 +345,8 @@
<!-- radius of the corners of the material rounded rect background but negative-->
<dimen name="notification_material_rounded_rect_radius_negative">-2dp</dimen>
- <!-- height of the bottom decor below the notification if present (eg. an expand action) -->
- <dimen name="notification_bottom_decor_height">48dp</dimen>
+ <!-- height of notification header view if present -->
+ <dimen name="notification_header_height">32dp</dimen>
<!-- The padding between notification children -->
<dimen name="notification_children_padding">2dp</dimen>
diff --git a/packages/SystemUI/res/values/strings.xml b/packages/SystemUI/res/values/strings.xml
index 7c86f96..d5f9557e 100644
--- a/packages/SystemUI/res/values/strings.xml
+++ b/packages/SystemUI/res/values/strings.xml
@@ -751,6 +751,9 @@
<!-- Text for overflow card on Keyguard when there is not enough space for all notifications on Keyguard. [CHAR LIMIT=1] -->
<string name="keyguard_more_overflow_text">+<xliff:g id="number_of_notifications" example="5">%d</xliff:g></string>
+ <!-- The divider symbol between different parts of the notification header. not translatable [CHAR LIMIT=1] -->
+ <string name="notification_header_divider_symbol" translatable="false">•</string>
+
<!-- An explanation for the visual speed bump in the notifications, which will appear when you click on it. [CHAR LIMIT=50] -->
<string name="speed_bump_explanation">Less urgent notifications below</string>
@@ -978,12 +981,6 @@
<!-- continue action for notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=20] -->
<string name="hidden_notifications_setup">Set up</string>
- <!-- Text for the button to expand the notifications to show notification children [CHAR LIMIT=20] -->
- <string name="notification_expand_button_text">See all</string>
-
- <!-- Text for the button to expand the notifications to hide notification children [CHAR LIMIT=20] -->
- <string name="notification_collapse_button_text">Hide all</string>
-
<!-- Accessibility string for current zen mode and selected exit condition. A template that simply concatenates existing mode string and the current condition description. [CHAR LIMIT=20] -->
<string name="zen_mode_and_condition"><xliff:g id="zen_mode" example="Priority interruptions only">%1$s</xliff:g>. <xliff:g id="exit_condition" example="For one hour">%2$s</xliff:g></string>
@@ -1029,6 +1026,9 @@
<!-- VolumeUI restoration notification: text -->
<string name="volumeui_notification_text">Touch to restore the original.</string>
+ <!-- Describes the way 2 names are concatenated. An example would be ", " to produce "Peter Muller, Paul Curry". Please also include a space here if it's appropriate in the language and if it's a RTL language include it on the left. [CHAR LIMIT=3] -->
+ <string name="group_summary_concadenation">, </string>
+
<!-- Toast shown when user unlocks screen and managed profile activity is in the foreground -->
<string name="managed_profile_foreground_toast">You\'re using your work profile</string>
diff --git a/packages/SystemUI/res/values/styles.xml b/packages/SystemUI/res/values/styles.xml
index 8241ddf..9e942f0 100644
--- a/packages/SystemUI/res/values/styles.xml
+++ b/packages/SystemUI/res/values/styles.xml
@@ -244,6 +244,10 @@
<item name="android:textColor">#60000000</item>
</style>
+ <style name="TextAppearance.Material.Notification.HeaderTitle"
+ parent="@*android:style/TextAppearance.Material.Notification.Info">
+ </style>
+
<style name="SearchPanelCircle">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">match_parent</item>
diff --git a/packages/SystemUI/src/com/android/systemui/ExpandHelper.java b/packages/SystemUI/src/com/android/systemui/ExpandHelper.java
index 1dca149..d9f7a46 100644
--- a/packages/SystemUI/src/com/android/systemui/ExpandHelper.java
+++ b/packages/SystemUI/src/com/android/systemui/ExpandHelper.java
@@ -21,8 +21,6 @@
import android.animation.AnimatorListenerAdapter;
import android.animation.ObjectAnimator;
import android.content.Context;
-import android.media.AudioAttributes;
-import android.os.Vibrator;
import android.util.Log;
import android.view.Gravity;
import android.view.HapticFeedbackConstants;
@@ -138,14 +136,14 @@
}
public void setHeight(float h) {
if (DEBUG_SCALE) Log.v(TAG, "SetHeight: setting to " + h);
- mView.setContentHeight((int) h);
+ mView.setActualHeight((int) h);
mCurrentHeight = h;
}
public float getHeight() {
- return mView.getContentHeight();
+ return mView.getActualHeight();
}
- public int getNaturalHeight(int maximum) {
- return Math.min(maximum, mView.getMaxContentHeight());
+ public int getNaturalHeight() {
+ return mView.getMaxContentHeight();
}
}
@@ -194,7 +192,7 @@
private float clamp(float target) {
float out = target;
- out = out < mSmallSize ? mSmallSize : (out > mLargeSize ? mLargeSize : out);
+ out = out < mSmallSize ? mSmallSize : out;
out = out > mNaturalHeight ? mNaturalHeight : out;
return out;
}
@@ -381,8 +379,8 @@
}
private boolean isFullyExpanded(ExpandableView underFocus) {
- return underFocus.areChildrenExpanded() || underFocus.getIntrinsicHeight()
- - underFocus.getBottomDecorHeight() == underFocus.getMaxContentHeight();
+ return underFocus.getIntrinsicHeight() == underFocus.getMaxContentHeight()
+ && (!underFocus.isSummaryWithChildren() || underFocus.areChildrenExpanded());
}
@Override
@@ -452,9 +450,7 @@
mScaler.setHeight(newHeight);
mLastMotionY = ev.getRawY();
if (isFinished) {
- mCallback.setUserExpandedChild(mResizedView, expanded);
mCallback.expansionStateChanged(false);
- return false;
} else {
mCallback.expansionStateChanged(true);
}
@@ -509,9 +505,11 @@
mScaler.setView(v);
mOldHeight = mScaler.getHeight();
mCurrentHeight = mOldHeight;
- if (mCallback.canChildBeExpanded(v)) {
+ boolean canBeExpanded = mCallback.canChildBeExpanded(v);
+ if (canBeExpanded) {
if (DEBUG) Log.d(TAG, "working on an expandable child");
- mNaturalHeight = mScaler.getNaturalHeight(mLargeSize);
+ mNaturalHeight = mScaler.getNaturalHeight();
+ mSmallSize = v.getMinHeight();
} else {
if (DEBUG) Log.d(TAG, "working on a non-expandable child");
mNaturalHeight = mOldHeight;
@@ -527,19 +525,22 @@
if (DEBUG) Log.d(TAG, "scale in finishing on view: " + mResizedView);
float currentHeight = mScaler.getHeight();
- float targetHeight = mSmallSize;
float h = mScaler.getHeight();
final boolean wasClosed = (mOldHeight == mSmallSize);
+ boolean nowExpanded;
+ int naturalHeight = mScaler.getNaturalHeight();
if (wasClosed) {
- targetHeight = (force || currentHeight > mSmallSize) ? mNaturalHeight : mSmallSize;
+ nowExpanded = (force || currentHeight > mOldHeight);
} else {
- targetHeight = (force || currentHeight < mNaturalHeight) ? mSmallSize : mNaturalHeight;
+ nowExpanded = !force && currentHeight >= mOldHeight;
}
+ nowExpanded |= mNaturalHeight == mSmallSize;
if (mScaleAnimation.isRunning()) {
mScaleAnimation.cancel();
}
- mCallback.setUserExpandedChild(mResizedView, targetHeight == mNaturalHeight);
+ mCallback.setUserExpandedChild(mResizedView, nowExpanded);
mCallback.expansionStateChanged(false);
+ float targetHeight = nowExpanded ? naturalHeight : mSmallSize;
if (targetHeight != currentHeight) {
mScaleAnimation.setFloatValues(targetHeight);
mScaleAnimation.setupStartValues();
diff --git a/packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java b/packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java
index 6c8bf0f..4d575bc 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java
@@ -32,7 +32,6 @@
import android.os.SystemClock;
import android.os.UserHandle;
import android.provider.Settings;
-import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.view.ViewStub;
@@ -43,6 +42,7 @@
import com.android.systemui.recents.events.activity.EnterRecentsWindowAnimationStartedEvent;
import com.android.systemui.recents.events.activity.HideRecentsEvent;
import com.android.systemui.recents.events.activity.IterateRecentsEvent;
+import com.android.systemui.recents.events.activity.EnterRecentsWindowLastAnimationFrameEvent;
import com.android.systemui.recents.events.activity.ToggleRecentsEvent;
import com.android.systemui.recents.events.component.RecentsVisibilityChangedEvent;
import com.android.systemui.recents.events.component.ScreenPinningRequestEvent;
@@ -419,6 +419,17 @@
}
@Override
+ protected void onResume() {
+ super.onResume();
+
+ final RecentsActivityLaunchState state = Recents.getConfiguration().getLaunchState();
+ if (state.startHidden) {
+ state.startHidden = false;
+ mRecentsView.setVisibility(View.INVISIBLE);
+ }
+ }
+
+ @Override
protected void onPause() {
super.onPause();
if (mAfterPauseRunnable != null) {
@@ -616,15 +627,17 @@
ViewAnimation.TaskViewEnterContext ctx = new ViewAnimation.TaskViewEnterContext(t);
ctx.postAnimationTrigger.increment();
if (mSearchWidgetInfo != null) {
- ctx.postAnimationTrigger.addLastDecrementRunnable(new Runnable() {
- @Override
- public void run() {
- // Start listening for widget package changes if there is one bound
- if (!Constants.DebugFlags.App.DisableSearchBar && mAppWidgetHost != null) {
- mAppWidgetHost.startListening();
+ if (!Constants.DebugFlags.App.DisableSearchBar) {
+ ctx.postAnimationTrigger.addLastDecrementRunnable(new Runnable() {
+ @Override
+ public void run() {
+ // Start listening for widget package changes if there is one bound
+ if (mAppWidgetHost != null) {
+ mAppWidgetHost.startListening();
+ }
}
- }
- });
+ });
+ }
}
ctx.postAnimationTrigger.addLastDecrementRunnable(new Runnable() {
@Override
@@ -643,6 +656,10 @@
ctx.postAnimationTrigger.decrement();
}
+ public final void onBusEvent(EnterRecentsWindowLastAnimationFrameEvent event) {
+ mRecentsView.setVisibility(View.VISIBLE);
+ }
+
public final void onBusEvent(AppWidgetProviderChangedEvent event) {
refreshSearchWidgetView();
}
diff --git a/packages/SystemUI/src/com/android/systemui/recents/RecentsActivityLaunchState.java b/packages/SystemUI/src/com/android/systemui/recents/RecentsActivityLaunchState.java
index aca816e..31ce569 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/RecentsActivityLaunchState.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/RecentsActivityLaunchState.java
@@ -35,6 +35,7 @@
public boolean launchedFromSearchHome;
public boolean launchedReuseTaskStackViews;
public boolean launchedHasConfigurationChanged;
+ public boolean startHidden;
public int launchedToTaskId;
public int launchedNumVisibleTasks;
public int launchedNumVisibleThumbnails;
diff --git a/packages/SystemUI/src/com/android/systemui/recents/RecentsImpl.java b/packages/SystemUI/src/com/android/systemui/recents/RecentsImpl.java
index d02e2af..243c0e1 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/RecentsImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/RecentsImpl.java
@@ -45,6 +45,7 @@
import com.android.systemui.recents.events.activity.EnterRecentsWindowAnimationStartedEvent;
import com.android.systemui.recents.events.activity.HideRecentsEvent;
import com.android.systemui.recents.events.activity.IterateRecentsEvent;
+import com.android.systemui.recents.events.activity.EnterRecentsWindowLastAnimationFrameEvent;
import com.android.systemui.recents.events.activity.ToggleRecentsEvent;
import com.android.systemui.recents.events.component.RecentsVisibilityChangedEvent;
import com.android.systemui.recents.events.component.ScreenPinningRequestEvent;
@@ -57,7 +58,7 @@
import com.android.systemui.recents.model.TaskGrouping;
import com.android.systemui.recents.model.TaskStack;
import com.android.systemui.recents.views.TaskStackView;
-import com.android.systemui.recents.views.TaskStackViewLayoutAlgorithm;
+import com.android.systemui.recents.views.TaskStackLayoutAlgorithm;
import com.android.systemui.recents.views.TaskViewHeader;
import com.android.systemui.recents.views.TaskViewTransform;
import com.android.systemui.statusbar.phone.PhoneStatusBar;
@@ -69,7 +70,7 @@
* be called remotely from the system user.
*/
public class RecentsImpl extends IRecentsNonSystemUserCallbacks.Stub
- implements ActivityOptions.OnAnimationStartedListener {
+ implements ActivityOptions.OnAnimationStartedListener, ActivityOptions.OnAnimationFinishedListener {
private final static String TAG = "RecentsImpl";
private final static boolean DEBUG = false;
@@ -79,7 +80,6 @@
public final static String RECENTS_PACKAGE = "com.android.systemui";
public final static String RECENTS_ACTIVITY = "com.android.systemui.recents.RecentsActivity";
-
/**
* An implementation of ITaskStackListener, that allows us to listen for changes to the system
* task stacks and update recents accordingly.
@@ -469,10 +469,10 @@
mSearchBarBounds, mTaskStackBounds);
// Rebind the header bar and draw it for the transition
- TaskStackViewLayoutAlgorithm algo = mDummyStackView.getStackAlgorithm();
+ TaskStackLayoutAlgorithm algo = mDummyStackView.getStackAlgorithm();
Rect taskStackBounds = new Rect(mTaskStackBounds);
algo.setSystemInsets(systemInsets);
- algo.computeRects(taskStackBounds);
+ algo.initialize(taskStackBounds);
Rect taskViewBounds = algo.getUntransformedTaskViewBounds();
if (!taskViewBounds.equals(mLastTaskViewBounds)) {
mLastTaskViewBounds.set(taskViewBounds);
@@ -579,7 +579,7 @@
AppTransitionAnimationSpec[] specsArray = new AppTransitionAnimationSpec[specs.size()];
specs.toArray(specsArray);
return ActivityOptions.makeThumbnailAspectScaleDownAnimation(mDummyStackView,
- specsArray, mHandler, this);
+ specsArray, mHandler, this, this);
} else {
// Update the destination rect
Task toTask = new Task();
@@ -695,7 +695,7 @@
// Prepare the dummy stack for the transition
mDummyStackView.updateMinMaxScrollForStack(stack);
- TaskStackViewLayoutAlgorithm.VisibilityReport stackVr =
+ TaskStackLayoutAlgorithm.VisibilityReport stackVr =
mDummyStackView.computeStackVisibilityReport();
boolean hasRecentTasks = stack.getTaskCount() > 0;
boolean useThumbnailTransition = (topTask != null) && !isTopTaskHome && hasRecentTasks;
@@ -742,7 +742,7 @@
*/
private void startRecentsActivity(ActivityManager.RunningTaskInfo topTask,
ActivityOptions opts, boolean fromHome, boolean fromSearchHome, boolean fromThumbnail,
- TaskStackViewLayoutAlgorithm.VisibilityReport vr) {
+ TaskStackLayoutAlgorithm.VisibilityReport vr) {
mStartAnimationTriggered = false;
// Update the configuration based on the launch options
@@ -757,6 +757,7 @@
launchState.launchedNumVisibleTasks = vr.numVisibleTasks;
launchState.launchedNumVisibleThumbnails = vr.numVisibleThumbnails;
launchState.launchedHasConfigurationChanged = false;
+ launchState.startHidden = topTask != null && topTask.stackId == FREEFORM_WORKSPACE_STACK_ID;
Intent intent = new Intent();
intent.setClassName(RECENTS_PACKAGE, RECENTS_ACTIVITY);
@@ -781,4 +782,9 @@
EventBus.getDefault().post(new EnterRecentsWindowAnimationStartedEvent());
}
}
+
+ @Override
+ public void onAnimationFinished() {
+ EventBus.getDefault().post(new EnterRecentsWindowLastAnimationFrameEvent());
+ }
}
diff --git a/wifi/java/android/net/wifi/WifiChannel.aidl b/packages/SystemUI/src/com/android/systemui/recents/events/activity/EnterRecentsWindowLastAnimationFrameEvent.java
similarity index 62%
rename from wifi/java/android/net/wifi/WifiChannel.aidl
rename to packages/SystemUI/src/com/android/systemui/recents/events/activity/EnterRecentsWindowLastAnimationFrameEvent.java
index c3d06bd..fd023d8 100644
--- a/wifi/java/android/net/wifi/WifiChannel.aidl
+++ b/packages/SystemUI/src/com/android/systemui/recents/events/activity/EnterRecentsWindowLastAnimationFrameEvent.java
@@ -1,11 +1,11 @@
-/**
- * Copyright (c) 2014, The Android Open Source Project
+/*
+ * Copyright (C) 2015 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
+ * 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,
@@ -14,6 +14,9 @@
* limitations under the License.
*/
-package android.net.wifi;
+package com.android.systemui.recents.events.activity;
-parcelable WifiChannel;
+import com.android.systemui.recents.events.EventBus;
+
+public class EnterRecentsWindowLastAnimationFrameEvent extends EventBus.Event {
+}
diff --git a/packages/SystemUI/src/com/android/systemui/recents/model/RecentsTaskLoadPlan.java b/packages/SystemUI/src/com/android/systemui/recents/model/RecentsTaskLoadPlan.java
index 6fc4e20..6c83b87 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/model/RecentsTaskLoadPlan.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/model/RecentsTaskLoadPlan.java
@@ -137,12 +137,19 @@
task.thumbnail = loader.getAndUpdateThumbnail(taskKey, ssp, false);
if (DEBUG) Log.d(TAG, "\tthumbnail: " + taskKey + ", " + task.thumbnail);
- stackTasks.add(task);
+ if (task.isFreeformTask()) {
+ freeformTasks.add(task);
+ } else {
+ stackTasks.add(task);
+ }
}
// Initialize the stacks
+ ArrayList<Task> allTasks = new ArrayList<>();
+ allTasks.addAll(stackTasks);
+ allTasks.addAll(freeformTasks);
mStack = new TaskStack();
- mStack.setTasks(stackTasks);
+ mStack.setTasks(allTasks);
mStack.createAffiliatedGroupings(mContext);
}
diff --git a/packages/SystemUI/src/com/android/systemui/recents/model/TaskStack.java b/packages/SystemUI/src/com/android/systemui/recents/model/TaskStack.java
index b3937c3..a96fe98 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/model/TaskStack.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/model/TaskStack.java
@@ -399,6 +399,21 @@
return mTaskList.size();
}
+ /**
+ * Returns the task in this stack which is the launch target.
+ */
+ public Task getLaunchTarget() {
+ ArrayList<Task> tasks = mTaskList.getTasks();
+ int taskCount = tasks.size();
+ for (int i = 0; i < taskCount; i++) {
+ Task task = tasks.get(i);
+ if (task.isLaunchTarget) {
+ return task;
+ }
+ }
+ return null;
+ }
+
/** Returns the index of this task in this current task stack */
public int indexOfTask(Task t) {
return mTaskList.indexOf(t);
@@ -417,6 +432,21 @@
return null;
}
+ /**
+ * Returns whether this stack has freeform tasks.
+ */
+ public boolean hasFreeformTasks() {
+ ArrayList<Task> tasks = mTaskList.getTasks();
+ int taskCount = tasks.size();
+ for (int i = 0; i < taskCount; i++) {
+ Task task = tasks.get(i);
+ if (task.isFreeformTask()) {
+ return true;
+ }
+ }
+ return false;
+ }
+
/******** Filtering ********/
/** Filters the stack into tasks similar to the one specified */
diff --git a/packages/SystemUI/src/com/android/systemui/recents/views/FreeformWorkspaceLayoutAlgorithm.java b/packages/SystemUI/src/com/android/systemui/recents/views/FreeformWorkspaceLayoutAlgorithm.java
new file mode 100644
index 0000000..ce993c5
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/recents/views/FreeformWorkspaceLayoutAlgorithm.java
@@ -0,0 +1,108 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.recents.views;
+
+import android.util.Log;
+import com.android.systemui.recents.model.Task;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+
+/**
+ * The layout logic for the contents of the freeform workspace.
+ */
+public class FreeformWorkspaceLayoutAlgorithm {
+
+ private static final String TAG = "FreeformWorkspaceLayoutAlgorithm";
+ private static final boolean DEBUG = false;
+
+ // The number of cells in the freeform workspace
+ private int mFreeformCellXCount;
+ private int mFreeformCellYCount;
+ // The width and height of the cells in the freeform workspace
+ private int mFreeformCellWidth;
+ private int mFreeformCellHeight;
+
+ // Optimization, allows for quick lookup of task -> index
+ private HashMap<Task.TaskKey, Integer> mTaskIndexMap = new HashMap<>();
+
+ /**
+ * Updates the layout for each of the freeform workspace tasks. This is called after the stack
+ * layout is updated.
+ */
+ public void update(ArrayList<Task> freeformTasks, TaskStackLayoutAlgorithm stackLayout) {
+ int numFreeformTasks = stackLayout.mNumFreeformTasks;
+ if (!freeformTasks.isEmpty()) {
+ // Calculate the cell width/height depending on the number of freeform tasks
+ mFreeformCellXCount = Math.max(2, (int) Math.ceil(Math.sqrt(numFreeformTasks)));
+ mFreeformCellYCount = Math.max(2, (int) Math.ceil((float) numFreeformTasks / mFreeformCellXCount));
+ mFreeformCellWidth = stackLayout.mFreeformRect.width() / mFreeformCellXCount;
+ // For now, make the cells square
+ mFreeformCellHeight = mFreeformCellWidth;
+
+ // Put each of the tasks in the progress map at a fixed index (does not need to actually
+ // map to a scroll position, just by index)
+ int taskCount = freeformTasks.size();
+ for (int i = 0; i < taskCount; i++) {
+ Task task = freeformTasks.get(i);
+ mTaskIndexMap.put(task.key, i);
+ }
+
+ if (DEBUG) {
+ Log.d(TAG, "mFreeformCellXCount: " + mFreeformCellXCount);
+ Log.d(TAG, "mFreeformCellYCount: " + mFreeformCellYCount);
+ Log.d(TAG, "mFreeformCellWidth: " + mFreeformCellWidth);
+ Log.d(TAG, "mFreeformCellHeight: " + mFreeformCellHeight);
+ }
+ }
+ }
+
+ /**
+ * Returns whether the transform is available for the given task.
+ */
+ public boolean isTransformAvailable(Task task, float stackScroll,
+ TaskStackLayoutAlgorithm stackLayout) {
+ if (stackLayout.mNumFreeformTasks == 0 || task == null ||
+ !mTaskIndexMap.containsKey(task.key)) {
+ return false;
+ }
+ return stackScroll > stackLayout.mStackEndScrollP;
+ }
+
+ /**
+ * Returns the transform for the given task. Any rect returned will be offset by the actual
+ * transform for the freeform workspace.
+ */
+ public TaskViewTransform getTransform(Task task, float stackScroll,
+ TaskViewTransform transformOut, TaskStackLayoutAlgorithm stackLayout) {
+ if (Float.compare(stackScroll, stackLayout.mStackEndScrollP) > 0) {
+ // This is a freeform task, so lay it out in the freeform workspace
+ int taskIndex = mTaskIndexMap.get(task.key);
+ int x = taskIndex % mFreeformCellXCount;
+ int y = taskIndex / mFreeformCellXCount;
+ float scale = (float) mFreeformCellWidth / stackLayout.mTaskRect.width();
+ int scaleXOffset = (int) (((1f - scale) * stackLayout.mTaskRect.width()) / 2);
+ int scaleYOffset = (int) (((1f - scale) * stackLayout.mTaskRect.height()) / 2);
+ transformOut.scale = scale * 0.9f;
+ transformOut.translationX = x * mFreeformCellWidth - scaleXOffset;
+ transformOut.translationY = y * mFreeformCellHeight - scaleYOffset;
+ transformOut.visible = true;
+ return transformOut;
+ }
+ return null;
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/recents/views/RecentsView.java b/packages/SystemUI/src/com/android/systemui/recents/views/RecentsView.java
index a8a8259..422e917 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/views/RecentsView.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/views/RecentsView.java
@@ -476,7 +476,7 @@
new AppTransitionAnimationSpec[specs.size()];
try {
WindowManagerGlobal.getWindowManagerService().overridePendingAppTransitionMultiThumb(
- specs.toArray(specsArray), callback, true /* scaleUp */);
+ specs.toArray(specsArray), callback, null, true /* scaleUp */);
} catch (RemoteException e) {
Log.w(TAG, "Error overriding app transition", e);
diff --git a/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackViewLayoutAlgorithm.java b/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackLayoutAlgorithm.java
similarity index 67%
rename from packages/SystemUI/src/com/android/systemui/recents/views/TaskStackViewLayoutAlgorithm.java
rename to packages/SystemUI/src/com/android/systemui/recents/views/TaskStackLayoutAlgorithm.java
index c74c654..45d626e 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackViewLayoutAlgorithm.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackLayoutAlgorithm.java
@@ -26,6 +26,7 @@
import com.android.systemui.recents.misc.ParametricCurve;
import com.android.systemui.recents.misc.Utilities;
import com.android.systemui.recents.model.Task;
+import com.android.systemui.recents.model.TaskStack;
import java.util.ArrayList;
import java.util.HashMap;
@@ -33,9 +34,8 @@
/**
* The layout logic for a TaskStackView.
- *
*/
-public class TaskStackViewLayoutAlgorithm {
+public class TaskStackLayoutAlgorithm {
private static final String TAG = "TaskStackViewLayoutAlgorithm";
private static final boolean DEBUG = false;
@@ -44,8 +44,14 @@
private static final float STACK_PEEK_MIN_SCALE = 0.85f;
// The scale of the last task
private static final float SINGLE_TASK_SCALE = 0.95f;
+ // The percentage of the height of the stack that we want to show the last task at
+ private static final float VISIBLE_LAST_TASK_HEIGHT_PCT = 0.45f;
// The percentage of height of task to show between tasks
private static final float VISIBLE_TASK_HEIGHT_BETWEEN_TASKS = 0.5f;
+ // The percentage between the maxStackScroll and the maxScroll where a given scroll will still
+ // snap back to the maxStackScroll instead of to the maxScroll (which shows the freeform
+ // workspace)
+ private static final float SNAP_TO_MAX_STACK_SCROLL_FACTOR = 0.3f;
// A report of the visibility state of the stack
public class VisibilityReport {
@@ -64,11 +70,9 @@
// This is the view bounds inset exactly by the search bar, but without the bottom inset
// see RecentsConfiguration.getTaskStackBounds()
public Rect mStackRect = new Rect();
-
// This is the task view bounds for layout (untransformed), the rect is top-aligned to the top
// of the stack rect
public Rect mTaskRect = new Rect();
-
// The bounds of the freeform workspace, the rect is top-aligned to the top of the stack rect
public Rect mFreeformRect = new Rect();
// This is the current system insets
@@ -79,10 +83,14 @@
// The largest scroll progress, at this value, the front most task will be visible above the
// navigation bar
float mMaxScrollP;
- // The scroll progress at which the stack scroll ends and the overscroll begins. This serves
- // as the point at which we can show the freeform space.
- float mMaxStackScrollP;
- // The initial progress that the scroller is set
+ // The scroll progress at which bottom of the first task of the stack is aligned with the bottom
+ // of the stack
+ float mStackEndScrollP;
+ // The scroll progress that we actually want to scroll the user to when they want to go to the
+ // end of the stack (it accounts for the nav bar, so that the bottom of the task is offset from
+ // the bottom of the stack)
+ float mPreferredStackEndScrollP;
+ // The initial progress that the scroller is set when you first enter recents
float mInitialScrollP;
// The task progress for the front-most task in the stack
float mFrontMostTaskP;
@@ -96,20 +104,18 @@
float mTaskHeightPOffset;
// The relative progress to ensure that the half task height is respected
float mTaskHalfHeightPOffset;
+ // The front-most task bottom offset
+ int mStackBottomOffset;
// The relative progress to ensure that the offset from the bottom of the stack to the bottom
// of the task is respected
- float mTaskBottomPOffset;
- // The relative progress to ensure that the freeform workspace height is respected
+ float mStackBottomPOffset;
+ // The freeform workspace gap
+ int mFreeformWorkspaceGapOffset;
+ float mFreeformWorkspaceGapPOffset;
+ // The relative progress to ensure that the freeform workspace height + gap + stack bottom
+ // padding is respected
+ int mFreeformWorkspaceOffset;
float mFreeformWorkspacePOffset;
- // The front-most task bottom offset
- int mTaskBottomOffset;
-
- // The number of cells in the freeform workspace
- int mFreeformCellXCount;
- int mFreeformCellYCount;
- // The width and height of the cells in the freeform workspace
- int mFreeformCellWidth;
- int mFreeformCellHeight;
// The last computed task counts
int mNumStackTasks;
@@ -121,14 +127,21 @@
// Optimization, allows for quick lookup of task -> progress
HashMap<Task.TaskKey, Float> mTaskProgressMap = new HashMap<>();
+ // The freeform workspace layout
+ FreeformWorkspaceLayoutAlgorithm mFreeformLayoutAlgorithm;
+
+ // Temporary task view transform
+ TaskViewTransform mTmpTransform = new TaskViewTransform();
+
// Log function
static ParametricCurve sCurve;
- public TaskStackViewLayoutAlgorithm(Context context) {
+ public TaskStackLayoutAlgorithm(Context context) {
Resources res = context.getResources();
mMinTranslationZ = res.getDimensionPixelSize(R.dimen.recents_task_view_z_min);
mMaxTranslationZ = res.getDimensionPixelSize(R.dimen.recents_task_view_z_max);
mContext = context;
+ mFreeformLayoutAlgorithm = new FreeformWorkspaceLayoutAlgorithm();
if (sCurve == null) {
sCurve = new ParametricCurve(new ParametricCurve.CurveFunction() {
// The large the XScale, the longer the flat area of the curve
@@ -151,6 +164,11 @@
}, new ParametricCurve.ParametricCurveFunction() {
@Override
public float f(float p) {
+ // Don't scale when there are freeform tasks
+ if (mNumFreeformTasks > 0) {
+ return 1f;
+ }
+
if (p < 0) return STACK_PEEK_MIN_SCALE;
if (p > 1) return 1f;
float scaleRange = (1f - STACK_PEEK_MIN_SCALE);
@@ -174,7 +192,7 @@
/**
* Computes the stack and task rects.
*/
- public void computeRects(Rect taskStackBounds) {
+ public void initialize(Rect taskStackBounds) {
RecentsConfiguration config = Recents.getConfiguration();
int widthPadding = (int) (config.taskStackWidthPaddingPct * taskStackBounds.width());
int heightPadding = mContext.getResources().getDimensionPixelSize(
@@ -183,14 +201,17 @@
// Compute the stack rect, inset from the given task stack bounds
mStackRect.set(taskStackBounds.left + widthPadding, taskStackBounds.top + heightPadding,
taskStackBounds.right - widthPadding, taskStackBounds.bottom);
- mTaskBottomOffset = mSystemInsets.bottom + heightPadding;
+ mStackBottomOffset = mSystemInsets.bottom + heightPadding;
// Compute the task rect, align it to the top-center square in the stack rect
- int size = Math.min(mStackRect.width(), mStackRect.height() - mTaskBottomOffset);
+ int size = Math.min(mStackRect.width(), mStackRect.height() - mStackBottomOffset);
int xOffset = (mStackRect.width() - size) / 2;
mTaskRect.set(mStackRect.left + xOffset, mStackRect.top,
mStackRect.right - xOffset, mStackRect.top + size);
- mFreeformRect.set(mTaskRect);
+
+ // Compute the freeform rect, align it to the top-left of the stack rect
+ mFreeformRect.set(mStackRect);
+ mFreeformRect.bottom = taskStackBounds.bottom - mStackBottomOffset;
// Compute the progress offsets
int withinAffiliationOffset = mContext.getResources().getDimensionPixelSize(
@@ -204,12 +225,17 @@
mStackRect);
mTaskHalfHeightPOffset = sCurve.computePOffsetForScaledHeight(mTaskRect.height() / 2,
mStackRect);
- mTaskBottomPOffset = sCurve.computePOffsetForHeight(mTaskBottomOffset, mStackRect);
- mFreeformWorkspacePOffset = sCurve.computePOffsetForHeight(mFreeformRect.height(),
+ mStackBottomPOffset = sCurve.computePOffsetForHeight(mStackBottomOffset, mStackRect);
+ mFreeformWorkspaceGapOffset = mStackBottomOffset;
+ mFreeformWorkspaceGapPOffset = sCurve.computePOffsetForHeight(mFreeformWorkspaceGapOffset,
+ mStackRect);
+ mFreeformWorkspaceOffset = mFreeformWorkspaceGapOffset + mFreeformRect.height() +
+ mStackBottomOffset;
+ mFreeformWorkspacePOffset = sCurve.computePOffsetForHeight(mFreeformWorkspaceOffset,
mStackRect);
if (DEBUG) {
- Log.d(TAG, "computeRects");
+ Log.d(TAG, "initialize");
Log.d(TAG, "\tarclength: " + sCurve.getArcLength());
Log.d(TAG, "\tmStackRect: " + mStackRect);
Log.d(TAG, "\tmTaskRect: " + mTaskRect);
@@ -219,12 +245,14 @@
Log.d(TAG, "\tpBetweenAffiliateOffset: " + mBetweenAffiliationPOffset);
Log.d(TAG, "\tmTaskHeightPOffset: " + mTaskHeightPOffset);
Log.d(TAG, "\tmTaskHalfHeightPOffset: " + mTaskHalfHeightPOffset);
- Log.d(TAG, "\tmTaskBottomPOffset: " + mTaskBottomPOffset);
+ Log.d(TAG, "\tmStackBottomPOffset: " + mStackBottomPOffset);
+ Log.d(TAG, "\tmFreeformWorkspacePOffset: " + mFreeformWorkspacePOffset);
+ Log.d(TAG, "\tmFreeformWorkspaceGapPOffset: " + mFreeformWorkspaceGapPOffset);
Log.d(TAG, "\ty at p=0: " + sCurve.pToX(0f, mStackRect));
Log.d(TAG, "\ty at p=1: " + sCurve.pToX(1f, mStackRect));
- for (int height = 0; height <= 1000; height += 50) {
+ for (int height = 0; height <= 2000; height += 50) {
float p = sCurve.computePOffsetForScaledHeight(height, mStackRect);
float p2 = sCurve.computePOffsetForHeight(height, mStackRect);
Log.d(TAG, "offset: " + height + ", " +
@@ -236,20 +264,22 @@
}
/**
- * Computes the minimum and maximum scroll progress values. This method may be called before
- * the RecentsConfiguration is set, so we need to pass in the alt-tab state.
+ * Computes the minimum and maximum scroll progress values and the progress values for each task
+ * in the stack.
*/
- void computeMinMaxScroll(ArrayList<Task> tasks) {
+ void update(TaskStack stack) {
if (DEBUG) {
- Log.d(TAG, "computeMinMaxScroll");
+ Log.d(TAG, "update");
}
// Clear the progress map
mTaskProgressMap.clear();
// Return early if we have no tasks
+ ArrayList<Task> tasks = stack.getTasks();
if (tasks.isEmpty()) {
- mMinScrollP = mMaxScrollP = mMaxStackScrollP = 0;
+ mFrontMostTaskP = 0;
+ mMinScrollP = mMaxScrollP = mStackEndScrollP = mPreferredStackEndScrollP = 0;
mNumStackTasks = mNumFreeformTasks = 0;
return;
}
@@ -268,9 +298,6 @@
mNumStackTasks = stackTasks.size();
mNumFreeformTasks = freeformTasks.size();
- // TODO: In the case where there is only freeform tasks, then the scrolls should be set to
- // zero
-
if (!stackTasks.isEmpty()) {
// Update the for each task from back to front.
float pAtBackMostTaskTop = 0;
@@ -289,52 +316,52 @@
}
mFrontMostTaskP = pAtFrontMostTaskTop;
- // Set the max scroll progress to the point at which the top of the front-most task
- // is aligned to the bottom of the stack (offset by nav bar, padding, and task height)
- mMaxStackScrollP = getBottomAlignedScrollProgress(pAtFrontMostTaskTop,
- mTaskBottomPOffset + mTaskHeightPOffset);
- // Basically align the back-most task such that its progress is the same as the top of
- // the front most task at the max stack scroll
- mMinScrollP = getBottomAlignedScrollProgress(pAtBackMostTaskTop,
- mTaskBottomPOffset + mTaskHeightPOffset);
+ // Set the stack end scroll progress to the point at which the bottom of the front-most
+ // task is aligned to the bottom of the stack
+ mStackEndScrollP = alignToStackBottom(pAtFrontMostTaskTop, mTaskHeightPOffset);
+ if (mNumStackTasks > 1) {
+ // Set the preferred stack end scroll progress to the point where the bottom of the
+ // front-most task is offset by the navbar and padding from the bottom of the stack
+ mPreferredStackEndScrollP = mStackEndScrollP + mStackBottomPOffset;
+
+ // Basically align the back-most task such that the last two tasks would be visible
+ mMinScrollP = alignToStackBottom(pAtBackMostTaskTop, 2 *
+ mBetweenAffiliationPOffset);
+ } else {
+ // When there is a single item, then just make all the stack progresses the same
+ mPreferredStackEndScrollP = mStackEndScrollP;
+ mMinScrollP = mStackEndScrollP;
+ }
+ } else {
+ // TODO: In the case where there is only freeform tasks, then the scrolls should be
+ // set to zero
}
if (!freeformTasks.isEmpty()) {
- // Calculate the cell width/height depending on the number of freeform tasks
- mFreeformCellXCount = Math.max(2, (int) Math.ceil(Math.sqrt(mNumFreeformTasks)));
- mFreeformCellYCount = Math.max(2, (int) Math.ceil((float) mNumFreeformTasks / mFreeformCellXCount));
- mFreeformCellWidth = mFreeformRect.width() / mFreeformCellXCount;
- mFreeformCellHeight = mFreeformRect.height() / mFreeformCellYCount;
-
- // Put each of the tasks in the progress map at a fixed index (does not need to actually
- // map to a scroll position, just by index)
- int taskCount = freeformTasks.size();
- for (int i = 0; i < taskCount; i++) {
- Task task = freeformTasks.get(i);
- mTaskProgressMap.put(task.key, (mFrontMostTaskP + 1) + i);
- }
-
// The max scroll includes the freeform workspace offset. As the scroll progress exceeds
- // mMaxStackScrollP up to mMaxScrollP, the stack will translate upwards and the freeform
+ // mStackEndScrollP up to mMaxScrollP, the stack will translate upwards and the freeform
// workspace will be visible
- mMaxScrollP = mMaxStackScrollP + mFreeformWorkspacePOffset;
- mInitialScrollP = mMaxScrollP;
+ mFreeformLayoutAlgorithm.update(freeformTasks, this);
+ mMaxScrollP = mStackEndScrollP + mFreeformWorkspacePOffset;
+ mInitialScrollP = isInitialStateFreeform(stack) ?
+ mMaxScrollP : mPreferredStackEndScrollP;
} else {
- mMaxScrollP = mMaxStackScrollP;
- mInitialScrollP = Math.max(mMinScrollP, mMaxStackScrollP - mTaskHalfHeightPOffset);
+ mMaxScrollP = mPreferredStackEndScrollP;
+ mInitialScrollP = Math.max(mMinScrollP, mMaxScrollP - mTaskHalfHeightPOffset);
}
+
if (DEBUG) {
Log.d(TAG, "mNumStackTasks: " + mNumStackTasks);
Log.d(TAG, "mNumFreeformTasks: " + mNumFreeformTasks);
Log.d(TAG, "mMinScrollP: " + mMinScrollP);
- Log.d(TAG, "mMaxStackScrollP: " + mMaxStackScrollP);
+ Log.d(TAG, "mStackEndScrollP: " + mStackEndScrollP);
Log.d(TAG, "mMaxScrollP: " + mMaxScrollP);
}
}
/**
* Computes the maximum number of visible tasks and thumbnails. Requires that
- * computeMinMaxScroll() is called first.
+ * update() is called first.
*/
public VisibilityReport computeStackVisibilityReport(ArrayList<Task> tasks) {
// Ensure minimum visibility count
@@ -380,7 +407,7 @@
prevScreenY = screenY;
} else {
// Once we hit the next front most task that does not have a visible thumbnail,
- // walk through remaining visible set
+ // w alk through remaining visible set
for (int j = i; j >= 0; j--) {
numVisibleTasks++;
progress = mTaskProgressMap.get(tasks.get(j).key) - mInitialScrollP;
@@ -404,50 +431,42 @@
*/
public TaskViewTransform getStackTransform(Task task, float stackScroll,
TaskViewTransform transformOut, TaskViewTransform prevTransform) {
- // Return early if we have an invalid index
- if (task == null || !mTaskProgressMap.containsKey(task.key)) {
- transformOut.reset();
+ if (mFreeformLayoutAlgorithm.isTransformAvailable(task, stackScroll, this)) {
+ mFreeformLayoutAlgorithm.getTransform(task, stackScroll, transformOut, this);
+ if (transformOut.visible) {
+ getFreeformWorkspaceBounds(stackScroll, mTmpTransform);
+ transformOut.translationY += mTmpTransform.translationY;
+ transformOut.translationZ = mMaxTranslationZ;
+ transformOut.rect.set(mTaskRect);
+ transformOut.rect.offset(0, transformOut.translationY);
+ Utilities.scaleRectAboutCenter(transformOut.rect, transformOut.scale);
+ transformOut.p = 0;
+ }
return transformOut;
+ } else {
+ // Return early if we have an invalid index
+ if (task == null || !mTaskProgressMap.containsKey(task.key)) {
+ transformOut.reset();
+ return transformOut;
+ }
+ return getStackTransform(mTaskProgressMap.get(task.key), stackScroll, transformOut,
+ prevTransform);
}
- return getStackTransform(mTaskProgressMap.get(task.key), stackScroll, transformOut,
- prevTransform);
}
/** Update/get the transform */
public TaskViewTransform getStackTransform(float taskProgress, float stackScroll,
TaskViewTransform transformOut, TaskViewTransform prevTransform) {
- float stackOverscroll = (stackScroll - mMaxStackScrollP) / mFreeformWorkspacePOffset;
- int overscrollYOffset = 0;
- if (mNumFreeformTasks > 0) {
- overscrollYOffset = (int) (Math.max(0, stackOverscroll) * mFreeformRect.height());
- }
- if ((mNumFreeformTasks > 0) && (stackScroll > mMaxStackScrollP) &&
- (taskProgress > mFrontMostTaskP)) {
- // This is a freeform task, so lay it out in the freeform workspace
- int taskIndex = Math.round(taskProgress - (mFrontMostTaskP + 1));
- int x = taskIndex % mFreeformCellXCount;
- int y = taskIndex / mFreeformCellXCount;
- int frontTaskBottom = mStackRect.height() - mTaskBottomOffset;
- float scale = (float) mFreeformCellWidth / mTaskRect.width();
- int scaleXOffset = (int) (((1f - scale) * mTaskRect.width()) / 2);
- int scaleYOffset = (int) (((1f - scale) * mTaskRect.height()) / 2);
- transformOut.scale = scale;
- transformOut.translationX = x * mFreeformCellWidth - scaleXOffset;
- transformOut.translationY = frontTaskBottom - overscrollYOffset +
- (y * mFreeformCellHeight) - scaleYOffset;
- transformOut.visible = true;
- return transformOut;
-
- } else if (mNumStackTasks == 1) {
+ if (mNumStackTasks == 1) {
// Center the task in the stack, changing the scale will not follow the curve, but just
// modulate some values directly
float pTaskRelative = mMinScrollP - stackScroll;
- float scale = SINGLE_TASK_SCALE;
- int topOffset = (mStackRect.height() - mTaskBottomOffset - mTaskRect.height()) / 2;
+ float scale = (mNumFreeformTasks > 0) ? 1f : SINGLE_TASK_SCALE;
+ int topOffset = (mStackRect.height() - mTaskRect.height()) / 2;
transformOut.scale = scale;
- transformOut.translationY = (int) (topOffset + (pTaskRelative * mStackRect.height())) -
- overscrollYOffset;
+ transformOut.translationX = 0;
+ transformOut.translationY = (int) (topOffset + (pTaskRelative * mStackRect.height()));
transformOut.translationZ = mMaxTranslationZ;
transformOut.rect.set(mTaskRect);
transformOut.rect.offset(0, transformOut.translationY);
@@ -457,11 +476,20 @@
return transformOut;
} else {
- float pTaskRelative = taskProgress - stackScroll;
- if (mNumFreeformTasks > 0) {
- pTaskRelative = Math.min(mMaxStackScrollP, pTaskRelative);
+ // Once we scroll past the preferred stack end scroll, then we should start translating
+ // the cards in screen space and lock their final state at the end stack progress
+ int overscrollYOffset = 0;
+ if (mNumFreeformTasks > 0 && stackScroll > mStackEndScrollP) {
+ float stackOverscroll = (stackScroll - mPreferredStackEndScrollP) /
+ (mFreeformWorkspacePOffset - mFreeformWorkspaceGapPOffset);
+ overscrollYOffset = (int) (Math.max(0, stackOverscroll) *
+ (mFreeformWorkspaceOffset - mFreeformWorkspaceGapPOffset));
+ stackScroll = Math.min(mPreferredStackEndScrollP, stackScroll);
}
+
+ float pTaskRelative = taskProgress - stackScroll;
float pBounded = Math.max(0, Math.min(pTaskRelative, 1f));
+
// If the task top is outside of the bounds below the screen, then immediately reset it
if (pTaskRelative > 1f) {
transformOut.reset();
@@ -480,6 +508,7 @@
float scale = sCurve.pToScale(pBounded);
int scaleYOffset = (int) (((1f - scale) * mTaskRect.height()) / 2);
transformOut.scale = scale;
+ transformOut.translationX = 0;
transformOut.translationY = sCurve.pToX(pBounded, mStackRect) - mStackRect.top -
scaleYOffset - overscrollYOffset;
transformOut.translationZ = Math.max(mMinTranslationZ,
@@ -489,11 +518,31 @@
Utilities.scaleRectAboutCenter(transformOut.rect, transformOut.scale);
transformOut.visible = true;
transformOut.p = pTaskRelative;
+ if (DEBUG) {
+ Log.d(TAG, "getStackTransform (normal): " + taskProgress + ", " + stackScroll);
+ Log.d(TAG, "\t" + transformOut);
+ }
+
return transformOut;
}
}
/**
+ * Returns whether this stack should be initialized to show the freeform workspace or not.
+ */
+ public boolean isInitialStateFreeform(TaskStack stack) {
+ Task launchTarget = stack.getLaunchTarget();
+ if (launchTarget != null) {
+ return launchTarget.isFreeformTask();
+ }
+ Task frontTask = stack.getFrontMostTask();
+ if (frontTask != null) {
+ return frontTask.isFreeformTask();
+ }
+ return false;
+ }
+
+ /**
* Update/get the transform
*/
public TaskViewTransform getFreeformWorkspaceBounds(float stackScroll,
@@ -503,18 +552,37 @@
return transformOut;
}
- if (stackScroll > mMaxStackScrollP) {
- float stackOverscroll = (stackScroll - mMaxStackScrollP) / mFreeformWorkspacePOffset;
- int overscrollYOffset = (int) (stackOverscroll * mFreeformRect.height());
- int frontTaskBottom = mStackRect.height() - mTaskBottomOffset;
+ if (stackScroll > mStackEndScrollP) {
+ // mStackEndScroll is the point at which the first stack task is bottom aligned with the
+ // stack, so we offset from on the stack rect height.
+ float stackOverscroll = (Math.max(0, stackScroll - mStackEndScrollP)) /
+ mFreeformWorkspacePOffset;
+ int overscrollYOffset = (int) (stackOverscroll * mFreeformWorkspaceOffset);
+ transformOut.scale = 1f;
+ transformOut.alpha = 1f;
+ transformOut.translationY = mStackRect.height() + mFreeformWorkspaceGapOffset -
+ overscrollYOffset;
+ transformOut.rect.set(mFreeformRect);
+ transformOut.rect.offset(0, transformOut.translationY);
+ Utilities.scaleRectAboutCenter(transformOut.rect, transformOut.scale);
transformOut.visible = true;
- transformOut.alpha =
- transformOut.translationY = frontTaskBottom - overscrollYOffset;
}
return transformOut;
}
/**
+ * Returns the preferred maximum scroll position for a stack at the given {@param scroll}.
+ */
+ public float getPreferredMaxScrollPosition(float scroll) {
+ float maxStackScrollBounds = mStackEndScrollP + SNAP_TO_MAX_STACK_SCROLL_FACTOR *
+ (mMaxScrollP - mStackEndScrollP);
+ if (scroll < maxStackScrollBounds) {
+ return mPreferredStackEndScrollP;
+ }
+ return mMaxScrollP;
+ }
+
+ /**
* Returns the untransformed task view bounds.
*/
public Rect getUntransformedTaskViewBounds() {
@@ -549,7 +617,12 @@
return -y;
}
- private float getBottomAlignedScrollProgress(float p, float pOffsetFromBottom) {
+ private float alignToStackTop(float p) {
+ // At scroll progress == p, then p is at the top of the stack
+ return p;
+ }
+
+ private float alignToStackBottom(float p, float pOffsetFromBottom) {
// At scroll progress == p, then p is at the top of the stack
// At scroll progress == p + 1, then p is at the bottom of the stack
return p - (1 - pOffsetFromBottom);
diff --git a/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackView.java b/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackView.java
index dfa36d8..b266eaa 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackView.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackView.java
@@ -22,12 +22,12 @@
import android.graphics.Canvas;
import android.graphics.Rect;
import android.graphics.RectF;
+import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
-import android.view.ViewGroup;
import android.view.accessibility.AccessibilityEvent;
import android.view.accessibility.AccessibilityNodeInfo;
import android.widget.FrameLayout;
@@ -79,11 +79,12 @@
}
TaskStack mStack;
- TaskStackViewLayoutAlgorithm mLayoutAlgorithm;
+ TaskStackLayoutAlgorithm mLayoutAlgorithm;
TaskStackViewFilterAlgorithm mFilterAlgorithm;
TaskStackViewScroller mStackScroller;
TaskStackViewTouchHandler mTouchHandler;
TaskStackViewCallbacks mCb;
+ ColorDrawable mFreeformWorkspaceBackground;
ViewPool<TaskView, Task> mViewPool;
ArrayList<TaskViewTransform> mCurrentTaskTransforms = new ArrayList<>();
DozeTrigger mUIDozeTrigger;
@@ -101,6 +102,8 @@
Rect mTmpRect = new Rect();
RectF mTmpTaskRect = new RectF();
TaskViewTransform mTmpTransform = new TaskViewTransform();
+ TaskViewTransform mTmpStackBackTransform = new TaskViewTransform();
+ TaskViewTransform mTmpStackFrontTransform = new TaskViewTransform();
HashMap<Task, TaskView> mTmpTaskViewMap = new HashMap<>();
ArrayList<TaskView> mTaskViews = new ArrayList<>();
List<TaskView> mImmutableTaskViews = new ArrayList<>();
@@ -122,7 +125,7 @@
setStack(stack);
mViewPool = new ViewPool<>(context, this);
mInflater = LayoutInflater.from(context);
- mLayoutAlgorithm = new TaskStackViewLayoutAlgorithm(context);
+ mLayoutAlgorithm = new TaskStackLayoutAlgorithm(context);
mFilterAlgorithm = new TaskStackViewFilterAlgorithm(this, mViewPool);
mStackScroller = new TaskStackViewScroller(context, mLayoutAlgorithm);
mStackScroller.setCallbacks(this);
@@ -143,6 +146,8 @@
}
});
setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES);
+
+ mFreeformWorkspaceBackground = new ColorDrawable(0x33000000);
}
/** Sets the callbacks */
@@ -270,7 +275,7 @@
}
/** Returns the stack algorithm for this task stack. */
- public TaskStackViewLayoutAlgorithm getStackAlgorithm() {
+ public TaskStackLayoutAlgorithm getStackAlgorithm() {
return mLayoutAlgorithm;
}
@@ -342,6 +347,11 @@
int[] visibleRange = mTmpVisibleRange;
boolean isValidVisibleRange = updateStackTransforms(mCurrentTaskTransforms, tasks,
stackScroll, visibleRange, false);
+ boolean hasStackBackTransform = false;
+ boolean hasStackFrontTransform = false;
+ if (DEBUG) {
+ Log.d(TAG, "visibleRange: " + visibleRange[0] + " to " + visibleRange[1]);
+ }
// Return all the invisible children to the pool
mTmpTaskViewMap.clear();
@@ -381,11 +391,20 @@
// For items in the list, put them in start animating them from the
// approriate ends of the list where they are expected to appear
if (Float.compare(transform.p, 0f) <= 0) {
- mLayoutAlgorithm.getStackTransform(0f, 0f, mTmpTransform, null);
+ if (!hasStackBackTransform) {
+ hasStackBackTransform = true;
+ mLayoutAlgorithm.getStackTransform(0f, 0f, mTmpStackBackTransform,
+ null);
+ }
+ tv.updateViewPropertiesToTaskTransform(mTmpStackBackTransform, 0);
} else {
- mLayoutAlgorithm.getStackTransform(1f, 0f, mTmpTransform, null);
+ if (!hasStackFrontTransform) {
+ hasStackFrontTransform = true;
+ mLayoutAlgorithm.getStackTransform(1f, 0f, mTmpStackFrontTransform,
+ null);
+ }
+ tv.updateViewPropertiesToTaskTransform(mTmpStackFrontTransform, 0);
}
- tv.updateViewPropertiesToTaskTransform(mTmpTransform, 0);
}
}
@@ -403,6 +422,16 @@
}
}
+ // Update the freeform workspace
+ mLayoutAlgorithm.getFreeformWorkspaceBounds(stackScroll, mTmpTransform);
+ if (mTmpTransform.visible) {
+ mTmpTransform.rect.roundOut(mTmpRect);
+ mFreeformWorkspaceBackground.setAlpha(255);
+ mFreeformWorkspaceBackground.setBounds(mTmpRect);
+ } else {
+ mFreeformWorkspaceBackground.setAlpha(0);
+ }
+
// Reset the request-synchronize params
mStackViewsAnimationDuration = 0;
mStackViewsDirty = false;
@@ -460,7 +489,7 @@
/** Updates the min and max virtual scroll bounds */
void updateMinMaxScroll(boolean boundScrollToNewMinMax) {
// Compute the min and max scroll values
- mLayoutAlgorithm.computeMinMaxScroll(mStack.getTasks());
+ mLayoutAlgorithm.update(mStack);
// Debug logging
if (boundScrollToNewMinMax) {
@@ -512,7 +541,7 @@
};
if (scrollToTask) {
- // TODO: Center the newly focused task view
+ // TODO: Center the newly focused task view, only if not freeform
float newScroll = mLayoutAlgorithm.getStackScrollForTask(newFocusedTask) - 0.5f;
newScroll = mStackScroller.getBoundedStackScroll(newScroll);
mStackScroller.animateScroll(mStackScroller.getStackScroll(), newScroll,
@@ -633,7 +662,7 @@
/** Computes the stack and task rects */
public void computeRects(Rect taskStackBounds) {
// Compute the rects in the stack algorithm
- mLayoutAlgorithm.computeRects(taskStackBounds);
+ mLayoutAlgorithm.initialize(taskStackBounds);
// Update the scroll bounds
updateMinMaxScroll(false);
@@ -652,7 +681,7 @@
* Computes the maximum number of visible tasks and thumbnails. Requires that
* updateMinMaxScrollForStack() is called first.
*/
- public TaskStackViewLayoutAlgorithm.VisibilityReport computeStackVisibilityReport() {
+ public TaskStackLayoutAlgorithm.VisibilityReport computeStackVisibilityReport() {
return mLayoutAlgorithm.computeStackVisibilityReport(mStack.getTasks());
}
@@ -710,7 +739,7 @@
*/
@Override
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
- // Layout each of the children
+ // Layout each of the TaskViews
List<TaskView> taskViews = getTaskViews();
int taskViewCount = taskViews.size();
for (int i = 0; i < taskViewCount; i++) {
@@ -720,10 +749,9 @@
} else {
mTmpRect.setEmpty();
}
- tv.layout(mLayoutAlgorithm.mTaskRect.left - mTmpRect.left,
- mLayoutAlgorithm.mTaskRect.top - mTmpRect.top,
- mLayoutAlgorithm.mTaskRect.right + mTmpRect.right,
- mLayoutAlgorithm.mTaskRect.bottom + mTmpRect.bottom);
+ Rect taskRect = mLayoutAlgorithm.mTaskRect;
+ tv.layout(taskRect.left - mTmpRect.left, taskRect.top - mTmpRect.top,
+ taskRect.right + mTmpRect.right, taskRect.bottom + mTmpRect.bottom);
}
if (mAwaitingFirstLayout) {
@@ -737,17 +765,9 @@
int offscreenY = mLayoutAlgorithm.mStackRect.bottom;
// Find the launch target task
- Task launchTargetTask = null;
+ Task launchTargetTask = mStack.getLaunchTarget();
List<TaskView> taskViews = getTaskViews();
int taskViewCount = taskViews.size();
- for (int i = taskViewCount - 1; i >= 0; i--) {
- TaskView tv = taskViews.get(i);
- Task task = tv.getTask();
- if (task.isLaunchTarget) {
- launchTargetTask = task;
- break;
- }
- }
// Prepare the first view for its enter animation
for (int i = taskViewCount - 1; i >= 0; i--) {
@@ -755,7 +775,8 @@
Task task = tv.getTask();
boolean occludesLaunchTarget = (launchTargetTask != null) &&
launchTargetTask.group.isTaskAboveTask(task, launchTargetTask);
- tv.prepareEnterRecentsAnimation(task.isLaunchTarget, occludesLaunchTarget, offscreenY);
+ tv.prepareEnterRecentsAnimation(task.isLaunchTarget, occludesLaunchTarget,
+ offscreenY);
}
// If the enter animation started already and we haven't completed a layout yet, do the
@@ -794,17 +815,9 @@
if (mStack.getTaskCount() > 0) {
// Find the launch target task
- Task launchTargetTask = null;
+ Task launchTargetTask = mStack.getLaunchTarget();
List<TaskView> taskViews = getTaskViews();
int taskViewCount = taskViews.size();
- for (int i = taskViewCount - 1; i >= 0; i--) {
- TaskView tv = taskViews.get(i);
- Task task = tv.getTask();
- if (task.isLaunchTarget) {
- launchTargetTask = task;
- break;
- }
- }
// Animate all the task views into view
for (int i = taskViewCount - 1; i >= 0; i--) {
@@ -817,7 +830,8 @@
ctx.currentTaskOccludesLaunchTarget = (launchTargetTask != null) &&
launchTargetTask.group.isTaskAboveTask(task, launchTargetTask);
ctx.updateListener = mRequestUpdateClippingListener;
- mLayoutAlgorithm.getStackTransform(task, mStackScroller.getStackScroll(), ctx.currentTaskTransform, null);
+ mLayoutAlgorithm.getStackTransform(task, mStackScroller.getStackScroll(),
+ ctx.currentTaskTransform, null);
tv.startEnterRecentsAnimation(ctx);
}
@@ -898,6 +912,12 @@
@Override
protected void dispatchDraw(Canvas canvas) {
mLayersDisabled = false;
+
+ // Draw the freeform workspace background
+ if (mFreeformWorkspaceBackground.getAlpha() > 0) {
+ mFreeformWorkspaceBackground.draw(canvas);
+ }
+
super.dispatchDraw(canvas);
}
@@ -919,42 +939,44 @@
@Override
public void onStackTaskRemoved(TaskStack stack, Task removedTask, boolean wasFrontMostTask,
Task newFrontMostTask) {
- // Remove the view associated with this task, we can't rely on updateTransforms
- // to work here because the task is no longer in the list
- TaskView tv = getChildViewForTask(removedTask);
- if (tv != null) {
- mViewPool.returnViewToPool(tv);
+ if (!removedTask.isFreeformTask()) {
+ // Remove the view associated with this task, we can't rely on updateTransforms
+ // to work here because the task is no longer in the list
+ TaskView tv = getChildViewForTask(removedTask);
+ if (tv != null) {
+ mViewPool.returnViewToPool(tv);
+ }
+
+ // Get the stack scroll of the task to anchor to (since we are removing something, the front
+ // most task will be our anchor task)
+ Task anchorTask = null;
+ float prevAnchorTaskScroll = 0;
+ boolean pullStackForward = stack.getTaskCount() > 0;
+ if (pullStackForward) {
+ anchorTask = mStack.getFrontMostTask();
+ prevAnchorTaskScroll = mLayoutAlgorithm.getStackScrollForTask(anchorTask);
+ }
+
+ // Update the min/max scroll and animate other task views into their new positions
+ updateMinMaxScroll(true);
+
+ if (wasFrontMostTask) {
+ // Since the max scroll progress is offset from the bottom of the stack, just scroll
+ // to ensure that the new front most task is now fully visible
+ mStackScroller.setStackScroll(mLayoutAlgorithm.mMaxScrollP);
+ } else if (pullStackForward) {
+ // Otherwise, offset the scroll by half the movement of the anchor task to allow the
+ // tasks behind the removed task to move forward, and the tasks in front to move back
+ float anchorTaskScroll = mLayoutAlgorithm.getStackScrollForTask(anchorTask);
+ mStackScroller.setStackScroll(mStackScroller.getStackScroll() + (anchorTaskScroll
+ - prevAnchorTaskScroll) / 2);
+ mStackScroller.boundScroll();
+ }
+
+ // Animate all the tasks into place
+ requestSynchronizeStackViewsWithModel(200);
}
- // Get the stack scroll of the task to anchor to (since we are removing something, the front
- // most task will be our anchor task)
- Task anchorTask = null;
- float prevAnchorTaskScroll = 0;
- boolean pullStackForward = stack.getTaskCount() > 0;
- if (pullStackForward) {
- anchorTask = mStack.getFrontMostTask();
- prevAnchorTaskScroll = mLayoutAlgorithm.getStackScrollForTask(anchorTask);
- }
-
- // Update the min/max scroll and animate other task views into their new positions
- updateMinMaxScroll(true);
-
- if (wasFrontMostTask) {
- // Since the max scroll progress is offset from the bottom of the stack, just scroll
- // to ensure that the new front most task is now fully visible
- mStackScroller.setStackScroll(mLayoutAlgorithm.mMaxScrollP);
- } else if (pullStackForward) {
- // Otherwise, offset the scroll by half the movement of the anchor task to allow the
- // tasks behind the removed task to move forward, and the tasks in front to move back
- float anchorTaskScroll = mLayoutAlgorithm.getStackScrollForTask(anchorTask);
- mStackScroller.setStackScroll(mStackScroller.getStackScroll() + (anchorTaskScroll
- - prevAnchorTaskScroll) / 2);
- mStackScroller.boundScroll();
- }
-
- // Animate all the tasks into place
- requestSynchronizeStackViewsWithModel(200);
-
// Update the new front most task
if (newFrontMostTask != null) {
TaskView frontTv = getChildViewForTask(newFrontMostTask);
@@ -1103,7 +1125,6 @@
int insertIndex = -1;
int taskIndex = mStack.indexOfTask(task);
if (taskIndex != -1) {
-
List<TaskView> taskViews = getTaskViews();
int taskViewCount = taskViews.size();
for (int i = 0; i < taskViewCount; i++) {
@@ -1252,7 +1273,10 @@
// the next task
RecentsConfiguration config = Recents.getConfiguration();
RecentsActivityLaunchState launchState = config.getLaunchState();
- setFocusedTask(taskIndex - 1, true /* scrollToTask */, launchState.launchedWithAltTab);
+ boolean isFreeformTask = taskIndex > 0 ?
+ mStack.getTasks().get(taskIndex - 1).isFreeformTask() : false;
+ setFocusedTask(taskIndex - 1, !isFreeformTask /* scrollToTask */,
+ launchState.launchedWithAltTab);
}
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackViewScroller.java b/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackViewScroller.java
index 15fcab4..6b92aed 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackViewScroller.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackViewScroller.java
@@ -39,7 +39,7 @@
}
Context mContext;
- TaskStackViewLayoutAlgorithm mLayoutAlgorithm;
+ TaskStackLayoutAlgorithm mLayoutAlgorithm;
TaskStackViewScrollerCallbacks mCb;
float mStackScrollP;
@@ -52,7 +52,7 @@
Interpolator mLinearOutSlowInInterpolator;
- public TaskStackViewScroller(Context context, TaskStackViewLayoutAlgorithm layoutAlgorithm) {
+ public TaskStackViewScroller(Context context, TaskStackLayoutAlgorithm layoutAlgorithm) {
mContext = context;
mScroller = new OverScroller(context);
mLayoutAlgorithm = layoutAlgorithm;
@@ -121,7 +121,8 @@
/** Returns the bounded stack scroll */
float getBoundedStackScroll(float scroll) {
- return Math.max(mLayoutAlgorithm.mMinScrollP, Math.min(mLayoutAlgorithm.mMaxScrollP, scroll));
+ return Math.max(mLayoutAlgorithm.mMinScrollP,
+ Math.min(mLayoutAlgorithm.getPreferredMaxScrollPosition(scroll), scroll));
}
/** Returns the amount that the absolute value of how much the scroll is out of bounds. */
diff --git a/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackViewTouchHandler.java b/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackViewTouchHandler.java
index 08889c5..9e6fb7b 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackViewTouchHandler.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackViewTouchHandler.java
@@ -16,8 +16,10 @@
package com.android.systemui.recents.views;
+import android.animation.ValueAnimator;
import android.content.Context;
import android.content.res.Resources;
+import android.util.Log;
import android.view.InputDevice;
import android.view.MotionEvent;
import android.view.VelocityTracker;
@@ -30,6 +32,8 @@
import com.android.systemui.recents.events.EventBus;
import com.android.systemui.recents.events.activity.HideRecentsEvent;
import com.android.systemui.recents.events.ui.DismissTaskViewEvent;
+import com.android.systemui.recents.misc.Utilities;
+import com.android.systemui.statusbar.FlingAnimationUtils;
import java.util.List;
@@ -37,7 +41,7 @@
class TaskStackViewTouchHandler implements SwipeHelper.Callback {
private static final String TAG = "TaskStackViewTouchHandler";
- private static final boolean DEBUG = true;
+ private static final boolean DEBUG = false;
private static int INACTIVE_POINTER_ID = -1;
@@ -45,6 +49,8 @@
TaskStackView mSv;
TaskStackViewScroller mScroller;
VelocityTracker mVelocityTracker;
+ FlingAnimationUtils mFlingAnimUtils;
+ ValueAnimator mScrollFlingAnimator;
boolean mIsScrolling;
float mDownScrollP;
@@ -74,6 +80,7 @@
mWindowTouchSlop = configuration.getScaledWindowTouchSlop();
mSv = sv;
mScroller = scroller;
+ mFlingAnimUtils = new FlingAnimationUtils(context, 0.2f);
float densityScale = res.getDisplayMetrics().density;
mOverscrollSize = res.getDimensionPixelSize(R.dimen.recents_stack_overscroll);
@@ -140,7 +147,7 @@
return false;
}
- TaskStackViewLayoutAlgorithm layoutAlgorithm = mSv.mLayoutAlgorithm;
+ final TaskStackLayoutAlgorithm layoutAlgorithm = mSv.mLayoutAlgorithm;
int action = ev.getAction();
switch (action & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN: {
@@ -154,6 +161,7 @@
// Stop the current scroll if it is still flinging
mScroller.stopScroller();
mScroller.stopBoundScrollAnimation();
+ Utilities.cancelAnimationWithoutCallbacks(mScrollFlingAnimator);
// Initialize the velocity tracker
initOrResetVelocityTracker();
@@ -189,6 +197,9 @@
float deltaP = layoutAlgorithm.getDeltaPForY(mDownY, y);
float curScrollP = mDownScrollP + deltaP;
mScroller.setStackScroll(curScrollP);
+ if (DEBUG) {
+ Log.d(TAG, "scroll: " + curScrollP);
+ }
}
mVelocityTracker.addMovement(ev);
@@ -211,21 +222,53 @@
int activePointerIndex = ev.findPointerIndex(mActivePointerId);
int y = (int) ev.getY(activePointerIndex);
int velocity = (int) mVelocityTracker.getYVelocity(mActivePointerId);
+ float curScrollP = mScroller.getStackScroll();
if (mIsScrolling) {
- if (mScroller.isScrollOutOfBounds()) {
- // Animate the scroll back into bounds
+ boolean hasFreeformTasks = mSv.mStack.hasFreeformTasks();
+ if (hasFreeformTasks && velocity > 0 &&
+ curScrollP > layoutAlgorithm.mStackEndScrollP) {
+ // Snap to workspace
+ float finalY = mDownY + layoutAlgorithm.getYForDeltaP(mDownScrollP,
+ layoutAlgorithm.mPreferredStackEndScrollP);
+ mScrollFlingAnimator = ValueAnimator.ofInt(y, (int) finalY);
+ mScrollFlingAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
+ @Override
+ public void onAnimationUpdate(ValueAnimator animation) {
+ float deltaP = layoutAlgorithm.getDeltaPForY(mDownY,
+ (Integer) animation.getAnimatedValue());
+ float scroll = mDownScrollP + deltaP;
+ mScroller.setStackScroll(scroll);
+ }
+ });
+ mFlingAnimUtils.apply(mScrollFlingAnimator, y, finalY, velocity);
+ mScrollFlingAnimator.start();
+ } else if (hasFreeformTasks && velocity < 0 &&
+ curScrollP > (layoutAlgorithm.mStackEndScrollP -
+ layoutAlgorithm.mTaskHalfHeightPOffset)) {
+ // Snap to stack
+ float finalY = mDownY + layoutAlgorithm.getYForDeltaP(mDownScrollP,
+ layoutAlgorithm.mMaxScrollP);
+ mScrollFlingAnimator = ValueAnimator.ofInt(y, (int) finalY);
+ mScrollFlingAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
+ @Override
+ public void onAnimationUpdate(ValueAnimator animation) {
+ float deltaP = layoutAlgorithm.getDeltaPForY(mDownY,
+ (Integer) animation.getAnimatedValue());
+ float scroll = mDownScrollP + deltaP;
+ mScroller.setStackScroll(scroll);
+ }
+ });
+ mFlingAnimUtils.apply(mScrollFlingAnimator, y, finalY, velocity);
+ mScrollFlingAnimator.start();
+ } else if (mScroller.isScrollOutOfBounds()) {
mScroller.animateBoundScroll();
} else if (Math.abs(velocity) > mMinimumVelocity) {
- float deltaP = layoutAlgorithm.getDeltaPForY(mDownY, y);
- float curScrollP = mDownScrollP + deltaP;
- float downToCurY = mDownY + layoutAlgorithm.getYForDeltaP(mDownScrollP,
- curScrollP);
- float downToMinY = mDownY + layoutAlgorithm.getYForDeltaP(mDownScrollP,
- layoutAlgorithm.mMaxScrollP);
- float downToMaxY = mDownY + layoutAlgorithm.getYForDeltaP(mDownScrollP,
+ float minY = mDownY + layoutAlgorithm.getYForDeltaP(mDownScrollP,
+ layoutAlgorithm.mPreferredStackEndScrollP);
+ float maxY = mDownY + layoutAlgorithm.getYForDeltaP(mDownScrollP,
layoutAlgorithm.mMinScrollP);
- mScroller.fling(mDownScrollP, mDownY, (int) downToCurY, velocity,
- (int) downToMinY, (int) downToMaxY, mOverscrollSize);
+ mScroller.fling(mDownScrollP, mDownY, y, velocity, (int) minY, (int) maxY,
+ mOverscrollSize);
mSv.invalidate();
}
} else if (mActiveTaskView == null) {
@@ -239,10 +282,6 @@
break;
}
case MotionEvent.ACTION_CANCEL: {
- if (mScroller.isScrollOutOfBounds()) {
- // Animate the scroll back into bounds
- mScroller.animateBoundScroll();
- }
mActivePointerId = INACTIVE_POINTER_ID;
mIsScrolling = false;
recycleVelocityTracker();
@@ -308,9 +347,6 @@
@Override
public boolean canChildBeDismissed(View v) {
- if (v instanceof TaskView) {
- return !((TaskView) v).getTask().isFreeformTask();
- }
return true;
}
diff --git a/packages/SystemUI/src/com/android/systemui/recents/views/TaskView.java b/packages/SystemUI/src/com/android/systemui/recents/views/TaskView.java
index aaacc6c..57cb599 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/views/TaskView.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/views/TaskView.java
@@ -552,7 +552,11 @@
* view.
*/
boolean shouldClipViewInStack() {
- return mClipViewInStack && (getVisibility() == View.VISIBLE);
+ // Never clip for freeform tasks or if invisible
+ if (mTask.isFreeformTask() || getVisibility() != View.VISIBLE) {
+ return false;
+ }
+ return mClipViewInStack;
}
/** Sets whether this view should be clipped, or clipped against. */
diff --git a/packages/SystemUI/src/com/android/systemui/recents/views/TaskViewHeader.java b/packages/SystemUI/src/com/android/systemui/recents/views/TaskViewHeader.java
index f6353f8..649199e 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/views/TaskViewHeader.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/views/TaskViewHeader.java
@@ -255,6 +255,10 @@
mApplicationIcon.setImageDrawable(null);
mApplicationIcon.setOnClickListener(null);
mMoveTaskButton.setOnClickListener(null);
+
+ // Stop any focus animations
+ Utilities.cancelAnimationWithoutCallbacks(mFocusAnimator);
+ mBackground.jumpToCurrentState();
}
/** Updates the resize task bar button. */
@@ -370,8 +374,9 @@
boolean isRunning = false;
if (mFocusAnimator != null) {
isRunning = mFocusAnimator.isRunning();
- Utilities.cancelAnimationWithoutCallbacks(mFocusAnimator);
}
+ Utilities.cancelAnimationWithoutCallbacks(mFocusAnimator);
+ mBackground.jumpToCurrentState();
if (focused) {
// If we are not animating the visible state, just return
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/ActivatableNotificationView.java b/packages/SystemUI/src/com/android/systemui/statusbar/ActivatableNotificationView.java
index 2e3e00c..6f8cd8c 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/ActivatableNotificationView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/ActivatableNotificationView.java
@@ -340,7 +340,7 @@
return;
}
mDark = dark;
- if (!dark && fade) {
+ if (!dark && fade && !shouldHideBackground()) {
if (mActivated) {
mBackgroundDimmed.setVisibility(View.VISIBLE);
mBackgroundNormal.setVisibility(View.VISIBLE);
@@ -380,7 +380,7 @@
updateBackgroundTint();
}
- private void updateBackgroundTint() {
+ protected void updateBackgroundTint() {
int color = getBgColor();
int rippleColor = getRippleColor();
if (color == mNormalColor) {
@@ -428,10 +428,12 @@
private void fadeDimmedBackground() {
mBackgroundDimmed.animate().cancel();
mBackgroundNormal.animate().cancel();
- if (mDimmed) {
- mBackgroundDimmed.setVisibility(View.VISIBLE);
- } else {
- mBackgroundNormal.setVisibility(View.VISIBLE);
+ if (!shouldHideBackground()) {
+ if (mDimmed) {
+ mBackgroundDimmed.setVisibility(View.VISIBLE);
+ } else {
+ mBackgroundNormal.setVisibility(View.VISIBLE);
+ }
}
float startAlpha = mDimmed ? 1f : 0;
float endAlpha = mDimmed ? 0 : 1f;
@@ -466,9 +468,9 @@
mBackgroundAnimator.start();
}
- private void updateBackground() {
+ protected void updateBackground() {
cancelFadeAnimations();
- if (mDark) {
+ if (shouldHideBackground()) {
mBackgroundDimmed.setVisibility(View.INVISIBLE);
mBackgroundNormal.setVisibility(View.INVISIBLE);
} else if (mDimmed) {
@@ -482,6 +484,10 @@
}
}
+ protected boolean shouldHideBackground() {
+ return mDark;
+ }
+
private void cancelFadeAnimations() {
if (mBackgroundAnimator != null) {
mBackgroundAnimator.cancel();
@@ -676,7 +682,7 @@
protected abstract View getContentView();
- private int getBgColor() {
+ public int getBgColor() {
if (mBgTint != 0) {
return mBgTint;
} else if (mShowingLegacyBackground) {
@@ -739,6 +745,10 @@
setBelowSpeedBump(false);
}
+ public boolean hasSameBgColor(ActivatableNotificationView otherView) {
+ return getBgColor() == otherView.getBgColor();
+ }
+
public interface OnActivatedListener {
void onActivated(ActivatableNotificationView view);
void onActivationReset(ActivatableNotificationView view);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
index 2c16f81..1e038c8 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
@@ -891,8 +891,7 @@
private void bindGuts(ExpandableNotificationRow row) {
row.inflateGuts();
final StatusBarNotification sbn = row.getStatusBarNotification();
- PackageManager pmUser = getPackageManagerForUser(
- sbn.getUser().getIdentifier());
+ PackageManager pmUser = getPackageManagerForUser(mContext, sbn.getUser().getIdentifier());
row.setTag(sbn.getPackageName());
final View guts = row.getGuts();
final String pkg = sbn.getPackageName();
@@ -1270,7 +1269,7 @@
}
protected boolean inflateViews(Entry entry, ViewGroup parent) {
- PackageManager pmUser = getPackageManagerForUser(
+ PackageManager pmUser = getPackageManagerForUser(mContext,
entry.notification.getUser().getIdentifier());
int maxHeight = mRowMaxHeight;
@@ -1502,7 +1501,7 @@
row.setUserExpanded(userExpanded);
}
row.setUserLocked(userLocked);
- row.setStatusBarNotification(entry.notification);
+ row.setEntry(entry);
applyRemoteInput(entry);
return true;
}
@@ -1930,27 +1929,29 @@
for (int i = 0; i < N; i++) {
NotificationData.Entry entry = activeNotifications.get(i);
if (onKeyguard) {
- entry.row.setExpansionDisabled(true);
+ entry.row.setOnKeyguard(true);
} else {
- entry.row.setExpansionDisabled(false);
- if (!entry.row.isUserLocked()) {
- boolean top = (i == 0);
- entry.row.setSystemExpanded(top);
- }
+ entry.row.setOnKeyguard(false);
+ boolean top = (i == 0);
+ entry.row.setSystemExpanded(top);
}
- boolean isInvisibleChild = !mGroupManager.isVisible(entry.notification);
+ boolean childNotification = mGroupManager.isChildInGroupWithSummary(entry.notification);
+ boolean childWithVisibleSummary = childNotification
+ && mGroupManager.getGroupSummary(entry.notification).getVisibility()
+ == View.VISIBLE;
boolean showOnKeyguard = shouldShowOnKeyguard(entry.notification);
if ((isLockscreenPublicMode() && !mShowLockscreenNotifications) ||
(onKeyguard && (visibleNotifications >= maxKeyguardNotifications
- || !showOnKeyguard || isInvisibleChild))) {
+ && !childWithVisibleSummary
+ || !showOnKeyguard))) {
entry.row.setVisibility(View.GONE);
- if (onKeyguard && showOnKeyguard && !isInvisibleChild) {
+ if (onKeyguard && showOnKeyguard && !childNotification) {
mKeyguardIconOverflowContainer.getIconsView().addNotification(entry);
}
} else {
boolean wasGone = entry.row.getVisibility() == View.GONE;
entry.row.setVisibility(View.VISIBLE);
- if (!isInvisibleChild) {
+ if (!childNotification) {
if (wasGone) {
// notify the scroller of a child addition
mStackScroller.generateAddAnimation(entry.row, true /* fromMoreCard */);
@@ -2113,7 +2114,7 @@
// update the contentIntent
mNotificationClicker.register(entry.row, sbn);
- entry.row.setStatusBarNotification(sbn);
+ entry.row.setEntry(entry);
entry.row.notifyContentUpdated();
entry.row.resetHeight();
@@ -2207,15 +2208,15 @@
* @return a PackageManger for userId or if userId is < 0 (USER_ALL etc) then
* return PackageManager for mContext
*/
- protected PackageManager getPackageManagerForUser(int userId) {
- Context contextForUser = mContext;
+ public static PackageManager getPackageManagerForUser(Context context, int userId) {
+ Context contextForUser = context;
// UserHandle defines special userId as negative values, e.g. USER_ALL
if (userId >= 0) {
try {
// Create a context for the correct user so if a package isn't installed
// for user 0 we can still load information about the package.
contextForUser =
- mContext.createPackageContextAsUser(mContext.getPackageName(),
+ context.createPackageContextAsUser(context.getPackageName(),
Context.CONTEXT_RESTRICTED,
new UserHandle(userId));
} catch (NameNotFoundException e) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/DragDownHelper.java b/packages/SystemUI/src/com/android/systemui/statusbar/DragDownHelper.java
index 7b0a44f..14051916 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/DragDownHelper.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/DragDownHelper.java
@@ -134,6 +134,8 @@
(int) (y - mInitialTouchY))) {
if (mStartingChild == null) {
mDragDownCallback.setEmptyDragAmount(0f);
+ } else {
+ mCallback.setUserLockedChild(mStartingChild, false);
}
mDraggingDown = false;
} else {
@@ -175,15 +177,16 @@
overshoot *= (1 - RUBBERBAND_FACTOR_STATIC);
rubberband -= overshoot;
}
- child.setContentHeight((int) (child.getMinHeight() + rubberband));
+ child.setActualHeight((int) (child.getMinHeight() + rubberband));
}
private void cancelExpansion(final ExpandableView child) {
- if (child.getContentHeight() == child.getMinHeight()) {
+ if (child.getActualHeight() == child.getMinHeight()) {
+ mCallback.setUserLockedChild(child, false);
return;
}
- ObjectAnimator anim = ObjectAnimator.ofInt(child, "contentHeight",
- child.getContentHeight(), child.getMinHeight());
+ ObjectAnimator anim = ObjectAnimator.ofInt(child, "actualHeight",
+ child.getActualHeight(), child.getMinHeight());
anim.setInterpolator(mInterpolator);
anim.setDuration(SPRING_BACK_ANIMATION_LENGTH_MS);
anim.addListener(new AnimatorListenerAdapter() {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java b/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java
index 33f21ff..3603900 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java
@@ -16,9 +16,7 @@
package com.android.systemui.statusbar;
-import android.animation.Animator;
-import android.animation.AnimatorListenerAdapter;
-import android.animation.ValueAnimator;
+import android.app.Notification;
import android.content.Context;
import android.graphics.drawable.AnimatedVectorDrawable;
import android.graphics.drawable.AnimationDrawable;
@@ -36,8 +34,8 @@
import com.android.systemui.R;
import com.android.systemui.classifier.FalsingManager;
+import com.android.systemui.statusbar.notification.NotificationHeaderView;
import com.android.systemui.statusbar.phone.NotificationGroupManager;
-import com.android.systemui.statusbar.phone.PhoneStatusBar;
import com.android.systemui.statusbar.stack.NotificationChildrenContainer;
import com.android.systemui.statusbar.stack.StackScrollState;
import com.android.systemui.statusbar.stack.StackStateAnimator;
@@ -73,9 +71,9 @@
private boolean mIsSystemExpanded;
/**
- * Whether the notification expansion is disabled. This is the case on Keyguard.
+ * Whether the notification is on the keyguard and the expansion is disabled.
*/
- private boolean mExpansionDisabled;
+ private boolean mOnKeyguard;
private NotificationContentView mPublicLayout;
private NotificationContentView mPrivateLayout;
@@ -90,31 +88,23 @@
private StatusBarNotification mStatusBarNotification;
private boolean mIsHeadsUp;
private boolean mLastChronometerRunning = true;
- private View mExpandButton;
- private View mExpandButtonDivider;
- private ViewStub mExpandButtonStub;
+ private NotificationHeaderView mNotificationHeader;
+ private ViewStub mNotificationHeaderStub;
private ViewStub mChildrenContainerStub;
private NotificationGroupManager mGroupManager;
- private View mExpandButtonContainer;
private boolean mChildrenExpanded;
+ private boolean mIsSummaryWithChildren;
private NotificationChildrenContainer mChildrenContainer;
- private ValueAnimator mChildExpandAnimator;
- private float mChildrenExpandProgress;
- private float mExpandButtonStart;
private ViewStub mGutsStub;
- private boolean mHasExpandAction;
+ private boolean mHasNotificationHeader;
private boolean mIsSystemChildExpanded;
private boolean mIsPinned;
- private OnClickListener mExpandClickListener = new OnClickListener() {
- @Override
- public void onClick(View v) {
- mGroupManager.setGroupExpanded(mStatusBarNotification,
- !mChildrenExpanded);
- }
- };
private FalsingManager mFalsingManager;
private boolean mJustClicked;
+ private NotificationData.Entry mEntry;
+ private boolean mShowNoBackground;
+ private ExpandableNotificationRow mNotificationParent;
public NotificationContentView getPrivateLayout() {
return mPrivateLayout;
@@ -171,10 +161,11 @@
}
}
- public void setStatusBarNotification(StatusBarNotification statusBarNotification) {
+ private void setStatusBarNotification(StatusBarNotification statusBarNotification) {
mStatusBarNotification = statusBarNotification;
+ mPrivateLayout.setStatusBarNotification(statusBarNotification);
updateVetoButton();
- updateExpandButton();
+ onChildrenCountChanged();
}
public StatusBarNotification getStatusBarNotification() {
@@ -196,6 +187,7 @@
public void setGroupManager(NotificationGroupManager groupManager) {
mGroupManager = groupManager;
+ mPrivateLayout.setGroupManager(groupManager);
}
public void addChildNotification(ExpandableNotificationRow row) {
@@ -213,12 +205,45 @@
mChildrenContainerStub.inflate();
}
mChildrenContainer.addNotification(row, childIndex);
+ onChildrenCountChanged();
+ row.setIsChildInGroup(true, this);
}
public void removeChildNotification(ExpandableNotificationRow row) {
if (mChildrenContainer != null) {
mChildrenContainer.removeNotification(row);
}
+ onChildrenCountChanged();
+ row.setIsChildInGroup(false, null);
+ }
+
+ public boolean isChildInGroup() {
+ return mNotificationParent != null;
+ }
+
+ public ExpandableNotificationRow getNotificationParent() {
+ return mNotificationParent;
+ }
+
+ /**
+ * @param isChildInGroup Is this notification now in a group
+ * @param parent the new parent notification
+ */
+ public void setIsChildInGroup(boolean isChildInGroup, ExpandableNotificationRow parent) {;
+ boolean childInGroup = BaseStatusBar.ENABLE_CHILD_NOTIFICATIONS && isChildInGroup;
+ mNotificationParent = childInGroup ? parent : null;
+ mPrivateLayout.setIsChildInGroup(childInGroup);
+ updateNoBackgroundState();
+ }
+
+ @Override
+ protected boolean shouldHideBackground() {
+ return super.shouldHideBackground() || mShowNoBackground;
+ }
+
+ @Override
+ public boolean isSummaryWithChildren() {
+ return mIsSummaryWithChildren;
}
@Override
@@ -230,6 +255,13 @@
return mChildrenContainer == null ? null : mChildrenContainer.getNotificationChildren();
}
+ public int getNumberOfNotificationChildren() {
+ if (mChildrenContainer == null) {
+ return 0;
+ }
+ return mChildrenContainer.getNotificationChildren().size();
+ }
+
/**
* Apply the order given in the list to the children.
*
@@ -241,34 +273,34 @@
}
public void getChildrenStates(StackScrollState resultState) {
- if (mChildrenExpanded) {
+ if (mIsSummaryWithChildren) {
StackViewState parentState = resultState.getViewStateForView(this);
mChildrenContainer.getState(resultState, parentState);
}
}
public void applyChildrenState(StackScrollState state) {
- if (mChildrenExpanded) {
+ if (mIsSummaryWithChildren) {
mChildrenContainer.applyState(state);
}
}
public void prepareExpansionChanged(StackScrollState state) {
- if (mChildrenExpanded) {
+ if (mIsSummaryWithChildren) {
mChildrenContainer.prepareExpansionChanged(state);
}
}
public void startChildAnimation(StackScrollState finalState,
StackStateAnimator stateAnimator, boolean withDelays, long delay, long duration) {
- if (mChildrenExpanded) {
+ if (mIsSummaryWithChildren) {
mChildrenContainer.startAnimationToState(finalState, stateAnimator, withDelays, delay,
duration);
}
}
public ExpandableNotificationRow getViewAtPosition(float y) {
- if (!mChildrenExpanded) {
+ if (!mIsSummaryWithChildren || !mChildrenExpanded) {
return this;
} else {
ExpandableNotificationRow view = mChildrenContainer.getViewAtPosition(y);
@@ -280,15 +312,6 @@
return mGuts;
}
- protected int calculateContentHeightFromActualHeight(int actualHeight) {
- int realActualHeight = actualHeight;
- if (hasBottomDecor()) {
- realActualHeight -= getBottomDecorHeight();
- }
- realActualHeight = Math.max(getMinHeight(), realActualHeight);
- return realActualHeight;
- }
-
/**
* Set this notification to be pinned to the top if {@link #isHeadsUp()} is true. By doing this
* the notification will be rendered on top of the screen.
@@ -358,6 +381,24 @@
}
}
+ public void setEntry(NotificationData.Entry entry) {
+ mEntry = entry;
+ setStatusBarNotification(entry.notification);
+ }
+
+ public CharSequence getSubText() {
+ Notification notification = mStatusBarNotification.getNotification();
+ CharSequence subText = notification.extras.getCharSequence(Notification.EXTRA_SUMMARY_TEXT);
+ if (subText == null) {
+ subText = notification.extras.getCharSequence(Notification.EXTRA_SUB_TEXT);
+ }
+ return subText;
+ }
+
+ public void setContentSubTextVisible(boolean visible) {
+ mPrivateLayout.setSubTextVisible(visible);
+ }
+
public interface ExpansionLogger {
public void logNotificationExpansion(String key, boolean userAction, boolean expanded);
}
@@ -383,7 +424,7 @@
mSensitive = false;
mShowingPublicInitialized = false;
mIsSystemExpanded = false;
- mExpansionDisabled = false;
+ mOnKeyguard = false;
mPublicLayout.reset(mIsHeadsUp);
mPrivateLayout.reset(mIsHeadsUp);
resetHeight();
@@ -421,15 +462,13 @@
mGutsStub = null;
}
});
- mExpandButtonStub = (ViewStub) findViewById(R.id.more_button_stub);
- mExpandButtonStub.setOnInflateListener(new ViewStub.OnInflateListener() {
-
+ mNotificationHeaderStub = (ViewStub) findViewById(R.id.notification_header_stub);
+ mNotificationHeaderStub.setOnInflateListener(new ViewStub.OnInflateListener() {
@Override
public void onInflate(ViewStub stub, View inflated) {
- mExpandButtonContainer = inflated;
- mExpandButton = inflated.findViewById(R.id.notification_expand_button);
- mExpandButtonDivider = inflated.findViewById(R.id.notification_expand_divider);
- mExpandButtonContainer.setOnClickListener(mExpandClickListener);
+ mNotificationHeader = (NotificationHeaderView) inflated;
+ mNotificationHeader.setGroupManager(mGroupManager);
+ mNotificationHeader.bind(mEntry);
}
});
mChildrenContainerStub = (ViewStub) findViewById(R.id.child_container_stub);
@@ -438,8 +477,7 @@
@Override
public void onInflate(ViewStub stub, View inflated) {
mChildrenContainer = (NotificationChildrenContainer) inflated;
- mChildrenContainer.setCollapseClickListener(mExpandClickListener);
- updateChildrenVisibility(false);
+ mChildrenContainer.setNotificationParent(ExpandableNotificationRow.this);
}
});
mVetoButton = findViewById(R.id.veto);
@@ -455,48 +493,8 @@
if (mChildrenContainer == null) {
return;
}
- if (mChildExpandAnimator != null) {
- mChildExpandAnimator.cancel();
- }
- float targetProgress = mChildrenExpanded ? 1.0f : 0.0f;
- if (animated) {
- if (mChildrenExpanded) {
- mChildrenContainer.setVisibility(VISIBLE);
- }
- mExpandButtonStart = mExpandButtonContainer.getTranslationY();
- mChildExpandAnimator = ValueAnimator.ofFloat(mChildrenExpandProgress, targetProgress);
- mChildExpandAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
- @Override
- public void onAnimationUpdate(ValueAnimator animation) {
- setChildrenExpandProgress((float) animation.getAnimatedValue());
- }
- });
- mChildExpandAnimator.addListener(new AnimatorListenerAdapter() {
- @Override
- public void onAnimationEnd(Animator animation) {
- mChildExpandAnimator = null;
- if (!mChildrenExpanded) {
- mChildrenContainer.setVisibility(INVISIBLE);
- }
- }
- });
- mChildExpandAnimator.setInterpolator(mLinearInterpolator);
- mChildExpandAnimator.setDuration(
- StackStateAnimator.ANIMATION_DURATION_EXPAND_CLICKED);
- mChildExpandAnimator.start();
- } else {
- setChildrenExpandProgress(targetProgress);
- mChildrenContainer.setVisibility(mChildrenExpanded ? VISIBLE : INVISIBLE);
- }
- }
-
- private void setChildrenExpandProgress(float progress) {
- mChildrenExpandProgress = progress;
- updateExpandButtonAppearance();
- NotificationContentView showingLayout = getShowingLayout();
- float alpha = 1.0f - mChildrenExpandProgress;
- alpha = PhoneStatusBar.ALPHA_OUT.getInterpolation(alpha);
- showingLayout.setAlpha(alpha);
+ mChildrenContainer.setVisibility(mIsSummaryWithChildren ? VISIBLE : INVISIBLE);
+ mPrivateLayout.setVisibility(!mIsSummaryWithChildren ? VISIBLE : INVISIBLE);
}
@Override
@@ -528,6 +526,9 @@
}
public boolean isExpandable() {
+ if (mIsSummaryWithChildren && !mShowingPublic) {
+ return !mChildrenExpanded;
+ }
return mExpandable;
}
@@ -552,7 +553,21 @@
* @param userExpanded whether the user wants this notification to be expanded
*/
public void setUserExpanded(boolean userExpanded) {
+ setUserExpanded(userExpanded, false /* allowChildExpansion */);
+ }
+
+ /**
+ * Set this notification to be expanded by the user
+ *
+ * @param userExpanded whether the user wants this notification to be expanded
+ * @param allowChildExpansion whether a call to this method allows expanding children
+ */
+ public void setUserExpanded(boolean userExpanded, boolean allowChildExpansion) {
mFalsingManager.setNotificationExpanded();
+ if (mIsSummaryWithChildren && !mShowingPublic && allowChildExpansion) {
+ mGroupManager.setGroupExpanded(mStatusBarNotification, userExpanded);
+ return;
+ }
if (userExpanded && !mExpandable) return;
final boolean wasExpanded = isExpanded();
mHasUserChangedExpansion = true;
@@ -591,16 +606,19 @@
mIsSystemExpanded = expand;
notifyHeightChanged(false /* needsAnimation */);
logExpansionEvent(false, wasExpanded);
+ if (mChildrenContainer != null) {
+ mChildrenContainer.updateGroupOverflow();
+ }
}
}
/**
- * @param expansionDisabled whether to prevent notification expansion
+ * @param onKeyguard whether to prevent notification expansion
*/
- public void setExpansionDisabled(boolean expansionDisabled) {
- if (expansionDisabled != mExpansionDisabled) {
+ public void setOnKeyguard(boolean onKeyguard) {
+ if (onKeyguard != mOnKeyguard) {
final boolean wasExpanded = isExpanded();
- mExpansionDisabled = expansionDisabled;
+ mOnKeyguard = onKeyguard;
logExpansionEvent(false, wasExpanded);
if (wasExpanded != isExpanded()) {
notifyHeightChanged(false /* needsAnimation */);
@@ -621,9 +639,9 @@
public void applyExpansionToLayout() {
boolean expand = isExpanded();
if (expand && mExpandable) {
- setContentHeight(mMaxExpandHeight);
+ setActualHeight(mMaxExpandHeight);
} else {
- setContentHeight(mRowMinHeight);
+ setActualHeight(mRowMinHeight);
}
}
@@ -633,34 +651,43 @@
return getActualHeight();
}
boolean inExpansionState = isExpanded();
- int maxContentHeight;
if (mSensitive && mHideSensitiveForIntrinsicHeight) {
return mRowMinHeight;
+ } else if (mIsSummaryWithChildren && !mOnKeyguard) {
+ return mChildrenContainer.getIntrinsicHeight()
+ + mNotificationHeader.getHeight();
} else if (mIsHeadsUp) {
if (inExpansionState) {
- maxContentHeight = Math.max(mMaxExpandHeight, mHeadsUpHeight);
+ return Math.max(mMaxExpandHeight, mHeadsUpHeight);
} else {
- maxContentHeight = Math.max(mRowMinHeight, mHeadsUpHeight);
+ return Math.max(mRowMinHeight, mHeadsUpHeight);
}
- } else if ((!inExpansionState && !mChildrenExpanded)) {
- maxContentHeight = mRowMinHeight;
- } else if (mChildrenExpanded) {
- maxContentHeight = mChildrenContainer.getIntrinsicHeight();
+ } else if (!inExpansionState || (isChildInGroup() && !isGroupExpanded())) {
+ return getMinHeight();
} else {
- maxContentHeight = getMaxExpandHeight();
+ return getMaxExpandHeight();
}
- return maxContentHeight + getBottomDecorHeight();
}
- @Override
- protected boolean hasBottomDecor() {
- return BaseStatusBar.ENABLE_CHILD_NOTIFICATIONS
- && !mIsHeadsUp && mGroupManager.hasGroupChildren(mStatusBarNotification);
+ private boolean isGroupExpanded() {
+ return mGroupManager.isGroupExpanded(mStatusBarNotification);
}
- @Override
- protected boolean canHaveBottomDecor() {
- return BaseStatusBar.ENABLE_CHILD_NOTIFICATIONS && !mIsHeadsUp;
+ /**
+ * @return whether this view has a header on the top of the content
+ */
+ private boolean hasNotificationHeader() {
+ return mIsSummaryWithChildren;
+ }
+
+ private void onChildrenCountChanged() {
+ mIsSummaryWithChildren = BaseStatusBar.ENABLE_CHILD_NOTIFICATIONS
+ && mGroupManager.hasGroupChildren(mStatusBarNotification);
+ if (mIsSummaryWithChildren && mChildrenContainer == null) {
+ mChildrenContainerStub.inflate();
+ }
+ updateNotificationHeader();
+ updateChildrenVisibility(true);
}
/**
@@ -671,8 +698,8 @@
*
* @return whether the view state is currently expanded.
*/
- private boolean isExpanded() {
- return !mExpansionDisabled
+ public boolean isExpanded() {
+ return !mOnKeyguard
&& (!hasUserChangedExpansion() && (isSystemExpanded() || isSystemChildExpanded())
|| isUserExpanded());
}
@@ -696,15 +723,6 @@
mWasReset = false;
}
- @Override
- protected boolean isChildInvisible(View child) {
-
- // We don't want to layout the ChildrenContainer if this is a heads-up view, otherwise the
- // view will get too high and the shadows will be off.
- boolean isInvisibleChildContainer = child == mChildrenContainer && mIsHeadsUp;
- return super.isChildInvisible(child) || isInvisibleChildContainer;
- }
-
private void updateMaxHeights() {
int intrinsicBefore = getIntrinsicHeight();
View expandedChild = mPrivateLayout.getExpandedChild();
@@ -747,7 +765,8 @@
mPublicLayout.setAlpha(1f);
mPrivateLayout.setAlpha(1f);
mPublicLayout.setVisibility(mShowingPublic ? View.VISIBLE : View.INVISIBLE);
- mPrivateLayout.setVisibility(mShowingPublic ? View.INVISIBLE : View.VISIBLE);
+ mPrivateLayout.setVisibility(!mShowingPublic && !mIsSummaryWithChildren ? View.VISIBLE
+ : View.INVISIBLE);
} else {
animateShowingPublic(delay, duration);
}
@@ -787,105 +806,28 @@
public void setChildrenExpanded(boolean expanded, boolean animate) {
mChildrenExpanded = expanded;
- updateChildrenVisibility(animate);
+ if (mChildrenContainer != null) {
+ mChildrenContainer.setChildrenExpanded(expanded);
+ }
}
- public void updateExpandButton() {
- boolean hasExpand = hasBottomDecor();
- if (hasExpand != mHasExpandAction) {
- if (hasExpand) {
- if (mExpandButtonContainer == null) {
- mExpandButtonStub.inflate();
+ public void updateNotificationHeader() {
+ boolean hasHeader = hasNotificationHeader();
+ if (hasHeader != mHasNotificationHeader) {
+ if (hasHeader) {
+ if (mNotificationHeader == null) {
+ mNotificationHeaderStub.inflate();
}
- mExpandButtonContainer.setVisibility(View.VISIBLE);
- updateExpandButtonAppearance();
- updateExpandButtonColor();
- } else if (mExpandButtonContainer != null) {
- mExpandButtonContainer.setVisibility(View.GONE);
+ mNotificationHeader.setVisibility(View.VISIBLE);
+ } else if (mNotificationHeader != null) {
+ mNotificationHeader.setVisibility(View.GONE);
}
notifyHeightChanged(true /* needsAnimation */);
}
- mHasExpandAction = hasExpand;
- }
-
- private void updateExpandButtonAppearance() {
- if (mExpandButtonContainer == null) {
- return;
+ if (hasHeader) {
+ mNotificationHeader.bind(mEntry);
}
- float expandButtonAlpha = 0.0f;
- float expandButtonTranslation = 0.0f;
- float containerTranslation = 0.0f;
- int minHeight = getMinHeight();
- if (!mChildrenExpanded || mChildExpandAnimator != null) {
- int expandActionHeight = getBottomDecorHeight();
- int translationY = getActualHeight() - expandActionHeight;
- if (translationY > minHeight) {
- containerTranslation = translationY;
- expandButtonAlpha = 1.0f;
- expandButtonTranslation = 0.0f;
- } else {
- containerTranslation = minHeight;
- float progress = expandActionHeight != 0
- ? (minHeight - translationY) / (float) expandActionHeight
- : 1.0f;
- expandButtonTranslation = -progress * expandActionHeight * 0.7f;
- float alphaProgress = Math.min(progress / 0.7f, 1.0f);
- alphaProgress = PhoneStatusBar.ALPHA_OUT.getInterpolation(alphaProgress);
- expandButtonAlpha = 1.0f - alphaProgress;
- }
- }
- if (mChildExpandAnimator != null || mChildrenExpanded) {
- expandButtonAlpha = (1.0f - mChildrenExpandProgress)
- * expandButtonAlpha;
- expandButtonTranslation = (1.0f - mChildrenExpandProgress)
- * expandButtonTranslation;
- float newTranslation = -getBottomDecorHeight();
-
- // We don't want to take the actual height of the view as this is already
- // interpolated by a custom interpolator leading to a confusing animation. We want
- // to have a stable end value to interpolate in between
- float collapsedHeight = !mChildrenExpanded
- ? Math.max(StackStateAnimator.getFinalActualHeight(this)
- - getBottomDecorHeight(), minHeight)
- : mExpandButtonStart;
- float translationProgress = mFastOutSlowInInterpolator.getInterpolation(
- mChildrenExpandProgress);
- containerTranslation = (1.0f - translationProgress) * collapsedHeight
- + translationProgress * newTranslation;
- }
- mExpandButton.setAlpha(expandButtonAlpha);
- mExpandButtonDivider.setAlpha(expandButtonAlpha);
- mExpandButton.setTranslationY(expandButtonTranslation);
- mExpandButtonContainer.setTranslationY(containerTranslation);
- NotificationContentView showingLayout = getShowingLayout();
- float layoutTranslation =
- mExpandButtonContainer.getTranslationY() - showingLayout.getContentHeight();
- layoutTranslation = Math.min(layoutTranslation, 0);
- if (!mChildrenExpanded && mChildExpandAnimator == null) {
- // Needed for the DragDownHelper in order not to jump there, as the position
- // can be negative for a short time.
- layoutTranslation = 0;
- }
- showingLayout.setTranslationY(layoutTranslation);
- if (mChildrenContainer != null) {
- mChildrenContainer.setTranslationY(
- mExpandButtonContainer.getTranslationY() + getBottomDecorHeight());
- }
- }
-
- private void updateExpandButtonColor() {
- // TODO: This needs some more baking, currently only the divider is colored according to
- // the tint, but legacy black doesn't work yet perfectly for the button etc.
- int color = getRippleColor();
- if (color == mNormalRippleColor) {
- color = 0;
- }
- if (mExpandButtonDivider != null) {
- applyTint(mExpandButtonDivider, color);
- }
- if (mChildrenContainer != null) {
- mChildrenContainer.setTintColor(color);
- }
+ mHasNotificationHeader = hasHeader;
}
public static void applyTint(View v, int color) {
@@ -922,29 +864,41 @@
@Override
public void setActualHeight(int height, boolean notifyListeners) {
super.setActualHeight(height, notifyListeners);
- int contentHeight = calculateContentHeightFromActualHeight(height);
+ int contentHeight = Math.max(getMinHeight(), height);
mPrivateLayout.setContentHeight(contentHeight);
mPublicLayout.setContentHeight(contentHeight);
if (mGuts != null) {
mGuts.setActualHeight(height);
}
invalidate();
- updateExpandButtonAppearance();
}
@Override
public int getMaxContentHeight() {
+ if (mIsSummaryWithChildren && !mShowingPublic) {
+ return mChildrenContainer.getMaxContentHeight()
+ + mNotificationHeader.getHeight();
+ }
NotificationContentView showingLayout = getShowingLayout();
return showingLayout.getMaxHeight();
}
@Override
public int getMinHeight() {
+ if (mIsSummaryWithChildren && !mOnKeyguard) {
+ return mChildrenContainer.getMinHeight()
+ + mNotificationHeader.getHeight();
+ }
NotificationContentView showingLayout = getShowingLayout();
return showingLayout.getMinHeight();
}
@Override
+ protected boolean shouldLimitViewHeight() {
+ return !mIsSummaryWithChildren;
+ }
+
+ @Override
public void setClipTopAmount(int clipTopAmount) {
super.setClipTopAmount(clipTopAmount);
mPrivateLayout.setClipTopAmount(clipTopAmount);
@@ -974,6 +928,25 @@
mPublicLayout.setShowingLegacyBackground(showing);
}
+ @Override
+ protected void updateBackgroundTint() {
+ super.updateBackgroundTint();
+ updateNoBackgroundState();
+ if (mIsSummaryWithChildren) {
+ List<ExpandableNotificationRow> notificationChildren =
+ mChildrenContainer.getNotificationChildren();
+ for (int i = 0; i < notificationChildren.size(); i++) {
+ ExpandableNotificationRow child = notificationChildren.get(i);
+ child.updateNoBackgroundState();
+ }
+ }
+ }
+
+ private void updateNoBackgroundState() {
+ mShowNoBackground = isChildInGroup() && hasSameBgColor(mNotificationParent);
+ updateBackground();
+ }
+
public void setExpansionLogger(ExpansionLogger logger, String key) {
mLogger = logger;
mLoggingKey = key;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableView.java b/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableView.java
index 71baf57..af59ac7 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableView.java
@@ -33,7 +33,6 @@
*/
public abstract class ExpandableView extends FrameLayout {
- private final int mBottomDecorHeight;
protected OnHeightChangedListener mOnHeightChangedListener;
protected int mMaxViewHeight;
private int mActualHeight;
@@ -50,17 +49,12 @@
super(context, attrs);
mMaxViewHeight = getResources().getDimensionPixelSize(
R.dimen.notification_max_height);
- mBottomDecorHeight = resolveBottomDecorHeight();
- }
-
- protected int resolveBottomDecorHeight() {
- return getResources().getDimensionPixelSize(
- R.dimen.notification_bottom_decor_height);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
- int ownMaxHeight = mMaxViewHeight;
+ boolean limitViewHeight = shouldLimitViewHeight();
+ int ownMaxHeight = limitViewHeight ? mMaxViewHeight : Integer.MAX_VALUE;
int heightMode = MeasureSpec.getMode(heightMeasureSpec);
boolean hasFixedHeight = heightMode == MeasureSpec.EXACTLY;
if (hasFixedHeight) {
@@ -72,7 +66,7 @@
int childCount = getChildCount();
for (int i = 0; i < childCount; i++) {
View child = getChildAt(i);
- if (child.getVisibility() == GONE || isChildInvisible(child)) {
+ if (child.getVisibility() == GONE) {
continue;
}
int childHeightSpec = newHeightSpec;
@@ -80,7 +74,7 @@
if (layoutParams.height != ViewGroup.LayoutParams.MATCH_PARENT) {
if (layoutParams.height >= 0) {
// An actual height is set
- childHeightSpec = layoutParams.height > ownMaxHeight
+ childHeightSpec = layoutParams.height > ownMaxHeight && limitViewHeight
? MeasureSpec.makeMeasureSpec(ownMaxHeight, MeasureSpec.EXACTLY)
: MeasureSpec.makeMeasureSpec(layoutParams.height, MeasureSpec.EXACTLY);
}
@@ -102,20 +96,20 @@
}
mMatchParentViews.clear();
int width = MeasureSpec.getSize(widthMeasureSpec);
- if (canHaveBottomDecor()) {
- // We always account for the expandAction as well.
- ownHeight += mBottomDecorHeight;
- }
setMeasuredDimension(width, ownHeight);
}
+ protected boolean shouldLimitViewHeight() {
+ return true;
+ }
+
@Override
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
super.onLayout(changed, left, top, right, bottom);
if (!mActualHeightInitialized && mActualHeight == 0) {
int initialHeight = getInitialHeight();
if (initialHeight != 0) {
- setContentHeight(initialHeight);
+ setActualHeight(initialHeight);
}
}
updateClipping();
@@ -173,8 +167,8 @@
}
}
- public void setContentHeight(int contentHeight) {
- setActualHeight(contentHeight + getBottomDecorHeight(), true);
+ public void setActualHeight(int actualHeight) {
+ setActualHeight(actualHeight, true /* notifyListeners */);
}
/**
@@ -187,31 +181,6 @@
}
/**
- * This view may have a bottom decor which will be placed below the content. If it has one, this
- * view will be layouted higher than just the content by {@link #mBottomDecorHeight}.
- * @return the height of the decor if it currently has one
- */
- public int getBottomDecorHeight() {
- return hasBottomDecor() ? mBottomDecorHeight : 0;
- }
-
- /**
- * @return whether this view may have a bottom decor at all. This will force the view to layout
- * itself higher than just it's content
- */
- protected boolean canHaveBottomDecor() {
- return false;
- }
-
- /**
- * @return whether this view has a decor view below it's content. This will make the intrinsic
- * height from {@link #getIntrinsicHeight()} higher as well
- */
- protected boolean hasBottomDecor() {
- return false;
- }
-
- /**
* @return The maximum height of this notification.
*/
public int getMaxContentHeight() {
@@ -358,14 +327,7 @@
outRect.top += getClipTopOptimization();
}
- public int getContentHeight() {
- return mActualHeight - getBottomDecorHeight();
- }
-
- /**
- * @return whether the given child can be ignored for layouting and measuring purposes
- */
- protected boolean isChildInvisible(View child) {
+ public boolean isSummaryWithChildren() {
return false;
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationContentView.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationContentView.java
index 86d7f4f..5aedaf1 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationContentView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationContentView.java
@@ -22,6 +22,7 @@
import android.graphics.PorterDuff;
import android.graphics.PorterDuffXfermode;
import android.graphics.Rect;
+import android.service.notification.StatusBarNotification;
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewGroup;
@@ -32,6 +33,9 @@
import android.widget.FrameLayout;
import com.android.systemui.R;
+import com.android.systemui.statusbar.notification.HybridNotificationView;
+import com.android.systemui.statusbar.notification.HybridNotificationViewManager;
+import com.android.systemui.statusbar.phone.NotificationGroupManager;
/**
* A frame layout containing the actual payload of the notification, including the contracted,
@@ -44,8 +48,10 @@
private static final int VISIBLE_TYPE_CONTRACTED = 0;
private static final int VISIBLE_TYPE_EXPANDED = 1;
private static final int VISIBLE_TYPE_HEADSUP = 2;
+ private static final int VISIBLE_TYPE_SINGLELINE = 3;
private final Rect mClipBounds = new Rect();
+ private final int mSingleLineHeight;
private final int mSmallHeight;
private final int mHeadsUpHeight;
private final int mRoundRectRadius;
@@ -55,10 +61,12 @@
private View mContractedChild;
private View mExpandedChild;
private View mHeadsUpChild;
+ private HybridNotificationView mSingleLineView;
private NotificationViewWrapper mContractedWrapper;
private NotificationViewWrapper mExpandedWrapper;
private NotificationViewWrapper mHeadsUpWrapper;
+ private HybridNotificationViewManager mHybridViewManager;
private int mClipTopAmount;
private int mContentHeight;
private int mUnrestrictedContentHeight;
@@ -68,6 +76,8 @@
private boolean mAnimate;
private boolean mIsHeadsUp;
private boolean mShowingLegacyBackground;
+ private boolean mIsChildInGroup;
+ private StatusBarNotification mStatusBarNotification;
private final ViewTreeObserver.OnPreDrawListener mEnableAnimationPredrawListener
= new ViewTreeObserver.OnPreDrawListener() {
@@ -86,10 +96,14 @@
mRoundRectRadius);
}
};
+ private NotificationGroupManager mGroupManager;
public NotificationContentView(Context context, AttributeSet attrs) {
super(context, attrs);
+ mHybridViewManager = new HybridNotificationViewManager(getContext(), this);
mFadePaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.ADD));
+ mSingleLineHeight = getResources().getDimensionPixelSize(
+ R.dimen.notification_single_line_height);
mSmallHeight = getResources().getDimensionPixelSize(R.dimen.notification_min_height);
mHeadsUpHeight = getResources().getDimensionPixelSize(R.dimen.notification_mid_height);
mRoundRectRadius = getResources().getDimensionPixelSize(
@@ -140,6 +154,12 @@
MeasureSpec.makeMeasureSpec(size, MeasureSpec.AT_MOST));
maxChildHeight = Math.max(maxChildHeight, mHeadsUpChild.getMeasuredHeight());
}
+ if (mSingleLineView != null) {
+ int size = Math.min(maxSize, mSingleLineHeight);
+ mSingleLineView.measure(widthMeasureSpec,
+ MeasureSpec.makeMeasureSpec(size, MeasureSpec.EXACTLY));
+ maxChildHeight = Math.max(maxChildHeight, mSingleLineView.getMeasuredHeight());
+ }
int ownHeight = Math.min(maxChildHeight, maxSize);
int width = MeasureSpec.getSize(widthMeasureSpec);
setMeasuredDimension(width, ownHeight);
@@ -271,7 +291,15 @@
}
public int getMinHeight() {
- return mSmallHeight;
+ if (mIsChildInGroup && !isGroupExpanded()) {
+ return mSingleLineHeight;
+ } else {
+ return mSmallHeight;
+ }
+ }
+
+ private boolean isGroupExpanded() {
+ return mGroupManager.isGroupExpanded(mStatusBarNotification);
}
public void setClipTopAmount(int clipTopAmount) {
@@ -313,6 +341,7 @@
if (visibleType != mVisibleType || force) {
if (animate && ((visibleType == VISIBLE_TYPE_EXPANDED && mExpandedChild != null)
|| (visibleType == VISIBLE_TYPE_HEADSUP && mHeadsUpChild != null)
+ || (visibleType == VISIBLE_TYPE_SINGLELINE && mSingleLineView != null)
|| visibleType == VISIBLE_TYPE_CONTRACTED)) {
runSwitchAnimation(visibleType);
} else {
@@ -339,6 +368,12 @@
mHeadsUpChild.setAlpha(headsUpVisible ? 1f : 0f);
mHeadsUpChild.setLayerType(LAYER_TYPE_NONE, null);
}
+ if (mSingleLineView != null) {
+ boolean singleLineVisible = visibleType == VISIBLE_TYPE_SINGLELINE;
+ mSingleLineView.setVisibility(singleLineVisible ? View.VISIBLE : View.INVISIBLE);
+ mSingleLineView.setAlpha(singleLineVisible ? 1f : 0f);
+ mSingleLineView.setLayerType(LAYER_TYPE_NONE, null);
+ }
setLayerType(LAYER_TYPE_NONE, null);
updateRoundRectClipping();
}
@@ -379,6 +414,8 @@
return mExpandedChild;
case VISIBLE_TYPE_HEADSUP:
return mHeadsUpChild;
+ case VISIBLE_TYPE_SINGLELINE:
+ return mSingleLineView;
default:
return mContractedChild;
}
@@ -396,7 +433,9 @@
return VISIBLE_TYPE_EXPANDED;
}
} else {
- if (mContentHeight <= mSmallHeight || noExpandedChild) {
+ if (mIsChildInGroup && !isGroupExpanded()) {
+ return VISIBLE_TYPE_SINGLELINE;
+ } else if (mContentHeight <= mSmallHeight || noExpandedChild) {
return VISIBLE_TYPE_CONTRACTED;
} else {
return VISIBLE_TYPE_EXPANDED;
@@ -405,6 +444,7 @@
}
public void notifyContentUpdated() {
+ updateSingleLineView();
selectLayout(false /* animate */, true /* force */);
if (mContractedChild != null) {
mContractedWrapper.notifyContentUpdated();
@@ -442,4 +482,37 @@
public void setShowingLegacyBackground(boolean showing) {
mShowingLegacyBackground = showing;
}
+
+ public void setIsChildInGroup(boolean isChildInGroup) {
+ mIsChildInGroup = isChildInGroup;
+ updateSingleLineView();
+ }
+
+ public void setStatusBarNotification(StatusBarNotification statusBarNotification) {
+ mStatusBarNotification = statusBarNotification;
+ updateSingleLineView();
+ }
+
+ private void updateSingleLineView() {
+ if (mIsChildInGroup) {
+ mSingleLineView = mHybridViewManager.bindFromNotification(
+ mSingleLineView, mStatusBarNotification.getNotification());
+ }
+ }
+
+ public void setSubTextVisible(boolean visible) {
+ if (mExpandedChild != null) {
+ mExpandedWrapper.setSubTextVisible(visible);
+ }
+ if (mContractedChild != null) {
+ mContractedWrapper.setSubTextVisible(visible);
+ }
+ if (mHeadsUpChild != null) {
+ mHeadsUpWrapper.setSubTextVisible(visible);
+ }
+ }
+
+ public void setGroupManager(NotificationGroupManager groupManager) {
+ mGroupManager = groupManager;
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationOverflowContainer.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationOverflowContainer.java
index 9653b67..8e8ce1a 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationOverflowContainer.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationOverflowContainer.java
@@ -70,13 +70,4 @@
public NotificationOverflowIconsView getIconsView() {
return mIconsView;
}
-
- protected int getContentHeightFromActualHeight(int actualHeight) {
- int realActualHeight = actualHeight;
- if (hasBottomDecor()) {
- realActualHeight -= getBottomDecorHeight();
- }
- realActualHeight = Math.max(getMinHeight(), realActualHeight);
- return realActualHeight;
- }
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationTemplateViewWrapper.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationTemplateViewWrapper.java
index 958b8b5..af6ccd8 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationTemplateViewWrapper.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationTemplateViewWrapper.java
@@ -27,10 +27,12 @@
import android.graphics.PorterDuff;
import android.graphics.PorterDuffColorFilter;
import android.graphics.drawable.Drawable;
+import android.text.TextUtils;
import android.view.View;
import android.view.animation.AnimationUtils;
import android.view.animation.Interpolator;
import android.widget.ImageView;
+import android.widget.TextView;
import com.android.systemui.R;
import com.android.systemui.ViewInvertHelper;
@@ -55,6 +57,11 @@
/** Whether the icon needs to be forced grayscale when in dark mode. */
private boolean mIconForceGraysaleWhenDark;
+ private TextView mSubText;
+ private TextView mInfoText;
+ private View mProfileBadge;
+ private View mThirdLineDivider;
+ private View mThirdLine;
protected NotificationTemplateViewWrapper(Context ctx, View view) {
super(view);
@@ -76,6 +83,11 @@
mIcon = resolveIcon(largeIcon, rightIcon);
mPicture = resolvePicture(largeIcon);
mIconBackgroundColor = resolveBackgroundColor(mIcon);
+ mSubText = (TextView) mView.findViewById(com.android.internal.R.id.text);
+ mInfoText = (TextView) mView.findViewById(com.android.internal.R.id.info);
+ mProfileBadge = mView.findViewById(com.android.internal.R.id.profile_badge_line3);
+ mThirdLineDivider = mView.findViewById(com.android.internal.R.id.overflow_divider);
+ mThirdLine = mView.findViewById(com.android.internal.R.id.line3);
// If the icon already has a color filter, we assume that we already forced the icon to be
// white when we created the notification.
@@ -230,6 +242,43 @@
}
}
+ @Override
+ public void setSubTextVisible(boolean visible) {
+ if (mSubText == null) {
+ return;
+ }
+ boolean subTextAvailable = !TextUtils.isEmpty(mSubText.getText());
+ if (visible && subTextAvailable) {
+ mSubText.setVisibility(View.VISIBLE);
+ } else {
+ mSubText.setVisibility(View.GONE);
+ }
+ // TODO: figure out what to do with the number (same place as contentInfo)
+ // work profile badge. For now we hide it since it looks nicer.
+ boolean infoAvailable = !TextUtils.isEmpty(mInfoText.getText());
+ if (visible && infoAvailable) {
+ mInfoText.setVisibility(View.VISIBLE);
+ } else {
+ mInfoText.setVisibility(View.GONE);
+ }
+ boolean showThirdLine = (visible && (infoAvailable || subTextAvailable))
+ || mProfileBadge.getVisibility() == View.VISIBLE;
+ if (mThirdLineDivider != null) {
+ if (showThirdLine) {
+ mThirdLineDivider.setVisibility(View.VISIBLE);
+ } else {
+ mThirdLineDivider.setVisibility(View.GONE);
+ }
+ }
+ if (mThirdLine != null) {
+ if (showThirdLine) {
+ mThirdLine.setVisibility(View.VISIBLE);
+ } else {
+ mThirdLine.setVisibility(View.GONE);
+ }
+ }
+ }
+
private void updateGrayscaleMatrix(float intensity) {
mGrayscaleColorMatrix.setSaturation(1 - intensity);
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationViewWrapper.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationViewWrapper.java
index b362a29..9bce548 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationViewWrapper.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationViewWrapper.java
@@ -30,6 +30,7 @@
private static final String TAG_BIG_PICTURE = "bigPicture";
protected final View mView;
+ private boolean mSubTextVisible = true;
public static NotificationViewWrapper wrap(Context ctx, View v) {
if (v.getId() == com.android.internal.R.id.status_bar_latest_event_content) {
@@ -63,7 +64,9 @@
/**
* Notifies this wrapper that the content of the view might have changed.
*/
- public void notifyContentUpdated() {}
+ public void notifyContentUpdated() {
+ setSubTextVisible(mSubTextVisible);
+ }
/**
* @return true if this template might need to be clipped with a round rect to make it look
@@ -72,4 +75,12 @@
public boolean needsRoundRectClipping() {
return false;
}
+
+ /**
+ * Change the subTextVisibility
+ * @param visible Should the subtext be visible
+ */
+ public void setSubTextVisible(boolean visible) {
+ mSubTextVisible = visible;
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/HybridNotificationView.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/HybridNotificationView.java
new file mode 100644
index 0000000..8f46e89
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/HybridNotificationView.java
@@ -0,0 +1,128 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.systemui.statusbar.notification;
+
+import android.annotation.Nullable;
+import android.content.Context;
+import android.text.TextUtils;
+import android.util.AttributeSet;
+import android.widget.TextView;
+
+import com.android.systemui.R;
+import com.android.systemui.statusbar.AlphaOptimizedFrameLayout;
+
+/**
+ * A hybrid view which may contain information about one ore more notifications.
+ */
+public class HybridNotificationView extends AlphaOptimizedFrameLayout {
+
+ protected final int mSingleLineHeight;
+ protected final int mStartMargin;
+ protected final int mEndMargin;
+ protected TextView mTitleView;
+ protected TextView mTextView;
+
+ public HybridNotificationView(Context context) {
+ this(context, null);
+ }
+
+ public HybridNotificationView(Context context, @Nullable AttributeSet attrs) {
+ this(context, attrs, 0);
+ }
+
+ public HybridNotificationView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
+ this(context, attrs, defStyleAttr, 0);
+ }
+
+ public HybridNotificationView(Context context, @Nullable AttributeSet attrs, int defStyleAttr,
+ int defStyleRes) {
+ super(context, attrs, defStyleAttr, defStyleRes);
+ mSingleLineHeight = context.getResources().getDimensionPixelSize(
+ R.dimen.notification_single_line_height);
+ mStartMargin = context.getResources().getDimensionPixelSize(
+ R.dimen.notification_content_margin_start);
+ mEndMargin = context.getResources().getDimensionPixelSize(
+ R.dimen.notification_content_margin_end);
+ }
+
+ @Override
+ protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+ int totalWidth = MeasureSpec.getSize(widthMeasureSpec);
+ int remainingWidth = totalWidth - mStartMargin - mEndMargin;
+ int newHeightSpec = MeasureSpec.makeMeasureSpec(
+ MeasureSpec.getSize(heightMeasureSpec), MeasureSpec.AT_MOST);
+ int newWidthSpec = MeasureSpec.makeMeasureSpec(remainingWidth, MeasureSpec.AT_MOST);
+ mTitleView.measure(newWidthSpec, newHeightSpec);
+ int maxTitleLength = getResources().getDimensionPixelSize(
+ R.dimen.notification_maximum_title_length);
+ int titleWidth = mTitleView.getMeasuredWidth();
+ int heightSpec = MeasureSpec.makeMeasureSpec(mSingleLineHeight, MeasureSpec.AT_MOST);
+ boolean hasText = !TextUtils.isEmpty(mTextView.getText());
+ if (titleWidth > maxTitleLength && hasText) {
+ titleWidth = maxTitleLength;
+ int widthSpec = MeasureSpec.makeMeasureSpec(titleWidth, MeasureSpec.EXACTLY);
+ mTitleView.measure(widthSpec, heightSpec);
+ }
+ if (hasText) {
+ remainingWidth -= titleWidth;
+ int widthSpec = MeasureSpec.makeMeasureSpec(remainingWidth, MeasureSpec.AT_MOST);
+ mTextView.measure(widthSpec, newHeightSpec);
+ }
+ setMeasuredDimension(totalWidth, mSingleLineHeight);
+ }
+
+ @Override
+ protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
+ int childLeft = mStartMargin;
+ int childRight = childLeft + mTitleView.getMeasuredWidth();
+ int childBottom = (mSingleLineHeight + mTitleView.getMeasuredHeight()) / 2;
+ int childTop = childBottom - mTitleView.getMeasuredHeight();
+ int rtlLeft = transformForRtl(childLeft);
+ int rtlRight = transformForRtl(childRight);
+ mTitleView.layout(Math.min(rtlLeft, rtlRight), childTop, Math.max(rtlLeft, rtlRight),
+ childBottom);
+ childLeft = childRight;
+ childRight = childLeft + mTextView.getMeasuredWidth();
+ childTop = mTitleView.getTop() + mTitleView.getBaseline() - mTextView.getBaseline();
+ childBottom = childTop + mTextView.getMeasuredHeight();
+ rtlLeft = transformForRtl(childLeft);
+ rtlRight = transformForRtl(childRight);
+ mTextView.layout(Math.min(rtlLeft, rtlRight), childTop, Math.max(rtlLeft, rtlRight),
+ childBottom);
+ }
+
+ private int transformForRtl(int left) {
+ return isLayoutRtl() ? getWidth() - left : left;
+ }
+
+ @Override
+ protected void onFinishInflate() {
+ super.onFinishInflate();
+ mTitleView = (TextView) findViewById(R.id.notification_title);
+ mTextView = (TextView) findViewById(R.id.notification_text);
+ }
+
+ public void bind(CharSequence title) {
+ bind(title, null);
+ }
+
+ public void bind(CharSequence title, CharSequence text) {
+ mTitleView.setText(title);
+ mTextView.setText(text);
+ requestLayout();
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/HybridNotificationViewManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/HybridNotificationViewManager.java
new file mode 100644
index 0000000..987f7b8
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/HybridNotificationViewManager.java
@@ -0,0 +1,112 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.systemui.statusbar.notification;
+
+import android.app.Notification;
+import android.content.Context;
+import android.text.TextUtils;
+import android.view.LayoutInflater;
+import android.view.ViewGroup;
+
+import com.android.systemui.R;
+import com.android.systemui.statusbar.ExpandableNotificationRow;
+
+import java.util.List;
+
+/**
+ * A class managing {@link HybridNotificationView} views
+ */
+public class HybridNotificationViewManager {
+
+ private final Context mContext;
+ private ViewGroup mParent;
+ private String mConcadenationString;
+
+ public HybridNotificationViewManager(Context ctx, ViewGroup parent) {
+ mContext = ctx;
+ mParent = parent;
+ mConcadenationString = mContext.getString(R.string.group_summary_concadenation);
+ }
+
+ private HybridNotificationView inflateHybridView() {
+ LayoutInflater inflater = mContext.getSystemService(LayoutInflater.class);
+ HybridNotificationView hybrid = (HybridNotificationView) inflater.inflate(
+ R.layout.hybrid_notification, mParent, false);
+ mParent.addView(hybrid);
+ return hybrid;
+ }
+
+ public HybridNotificationView bindFromNotification(HybridNotificationView reusableView,
+ Notification notification) {
+ CharSequence titleText = resolveTitle(notification);
+ if (titleText == null) {
+ if (reusableView != null) {
+ mParent.removeView(reusableView);
+ }
+ return null;
+ }
+ if (reusableView == null) {
+ reusableView = inflateHybridView();
+ }
+ CharSequence contentText = resolveText(notification);
+ reusableView.bind(titleText, contentText);
+ return reusableView;
+ }
+
+ private CharSequence resolveText(Notification notification) {
+ CharSequence contentText = notification.extras.getCharSequence(Notification.EXTRA_BIG_TEXT);
+ if (contentText == null) {
+ contentText = notification.extras.getCharSequence(Notification.EXTRA_TEXT);
+ }
+ return contentText;
+ }
+
+ private CharSequence resolveTitle(Notification notification) {
+ CharSequence titleText = notification.extras.getCharSequence(Notification.EXTRA_TITLE);
+ if (titleText == null) {
+ titleText = notification.extras.getCharSequence(Notification.EXTRA_TITLE_BIG);
+ }
+ return titleText;
+ }
+
+ public HybridNotificationView bindFromNotificationGroup(
+ HybridNotificationView reusableView,
+ List<ExpandableNotificationRow> group, int startIndex) {
+ if (reusableView == null) {
+ reusableView = inflateHybridView();
+ }
+ CharSequence summary = null;
+ int childCount = group.size();
+ for (int i = startIndex; i < childCount; i++) {
+ ExpandableNotificationRow child = group.get(i);
+ CharSequence titleText = resolveTitle(
+ child.getStatusBarNotification().getNotification());
+ if (titleText == null) {
+ continue;
+ }
+ if (TextUtils.isEmpty(summary)) {
+ summary = titleText;
+ } else if (reusableView.isLayoutRtl()) {
+ summary = titleText + mConcadenationString + summary;
+ } else {
+ summary = summary + mConcadenationString + titleText;
+ }
+ }
+ reusableView.bind(summary);
+ return reusableView;
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationHeaderView.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationHeaderView.java
new file mode 100644
index 0000000..ec26cc4
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationHeaderView.java
@@ -0,0 +1,209 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.systemui.statusbar.notification;
+
+import android.annotation.Nullable;
+import android.app.Notification;
+import android.content.Context;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageManager;
+import android.graphics.drawable.Drawable;
+import android.service.notification.StatusBarNotification;
+import android.text.TextUtils;
+import android.util.AttributeSet;
+import android.view.View;
+import android.widget.FrameLayout;
+import android.widget.ImageButton;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.android.internal.util.NotificationColorUtil;
+import com.android.systemui.R;
+import com.android.systemui.statusbar.BaseStatusBar;
+import com.android.systemui.statusbar.ExpandableNotificationRow;
+import com.android.systemui.statusbar.NotificationData;
+import com.android.systemui.statusbar.phone.NotificationGroupManager;
+
+import java.util.List;
+
+/**
+ * A header for a notification view
+ */
+public class NotificationHeaderView extends FrameLayout {
+
+ private static final int DEFAULT_ICON_TINT_COLOR = 0xff616161;
+ private final NotificationColorUtil mNotificationColorUtil;
+ private NotificationData.Entry mNotificationEntry;
+ private ImageView mIconView;
+ private TextView mAppName;
+ private TextView mPostTime;
+ private TextView mChildCount;
+ private TextView mSubTextDivider;
+ private TextView mSubText;
+ private NotificationGroupManager mGroupManager;
+ private ImageButton mExpandButton;
+
+ public NotificationHeaderView(Context context) {
+ this(context, null);
+ }
+
+ public NotificationHeaderView(Context context, @Nullable AttributeSet attrs) {
+ this(context, attrs, 0);
+ }
+
+ public NotificationHeaderView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
+ this(context, attrs, defStyleAttr, 0);
+ }
+
+ public NotificationHeaderView(Context context, @Nullable AttributeSet attrs, int defStyleAttr,
+ int defStyleRes) {
+ super(context, attrs, defStyleAttr, defStyleRes);
+ mNotificationColorUtil = NotificationColorUtil.getInstance(context);
+ }
+
+ @Override
+ protected void onFinishInflate() {
+ super.onFinishInflate();
+ mIconView = (ImageView) findViewById(R.id.header_notification_icon);
+ mAppName = (TextView) findViewById(R.id.app_name_text);
+ mSubTextDivider = (TextView) findViewById(R.id.app_title_sub_text_divider);
+ mSubText = (TextView) findViewById(R.id.title_sub_text);
+ mPostTime = (TextView) findViewById(R.id.post_time);
+ mChildCount = (TextView) findViewById(R.id.number_of_children);
+ mExpandButton = (ImageButton) findViewById(R.id.notification_expand_button);
+ mExpandButton.setOnClickListener(new OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ mGroupManager.toggleGroupExpansion(mNotificationEntry.notification);
+ }
+ });
+ }
+
+ public void bind(NotificationData.Entry notificationEntry) {
+ mNotificationEntry = notificationEntry;
+ StatusBarNotification sbn = notificationEntry.notification;
+ int notificationColor = getNotificationColor(sbn);
+ bindIcon(notificationColor);
+ bindNumber(notificationColor);
+ bindAppName(sbn);
+ bindSubText();
+ bindTime(sbn);
+ bindExpandButton(sbn);
+ }
+
+ private void bindExpandButton(StatusBarNotification sbn) {
+ boolean summaryOfGroup = mGroupManager.isSummaryOfGroup(sbn);
+ mExpandButton.setVisibility(summaryOfGroup ? VISIBLE : GONE);
+ }
+
+ private void bindSubText() {
+ List<ExpandableNotificationRow> notificationChildren =
+ mNotificationEntry.row.getNotificationChildren();
+ CharSequence subText = null;
+ if (notificationChildren != null) {
+ for (int i = 0; i < notificationChildren.size(); i++) {
+ ExpandableNotificationRow row = notificationChildren.get(i);
+ CharSequence rowSubText = row.getSubText();
+ if (TextUtils.isEmpty(rowSubText)
+ || (subText != null && !subText.equals(rowSubText))) {
+ // The children don't have a common subText
+ subText = null;
+ break;
+ } else if (subText == null) {
+ subText = rowSubText;
+ }
+ }
+ };
+ setSubText(subText);
+ }
+
+ private void setSubText(CharSequence subText) {
+ boolean goneInHeader = TextUtils.isEmpty(subText);
+ if (goneInHeader) {
+ mSubText.setVisibility(GONE);
+ mSubTextDivider.setVisibility(GONE);
+ } else {
+ mSubText.setVisibility(VISIBLE);
+ mSubText.setText(subText);
+ mSubTextDivider.setVisibility(VISIBLE);
+ }
+ List<ExpandableNotificationRow> notificationChildren =
+ mNotificationEntry.row.getNotificationChildren();
+ if (notificationChildren != null) {
+ for (int i = 0; i < notificationChildren.size(); i++) {
+ ExpandableNotificationRow row = notificationChildren.get(i);
+ row.setContentSubTextVisible(goneInHeader);
+ }
+ }
+ }
+
+ private int getNotificationColor(StatusBarNotification sbn) {
+ int color = sbn.getNotification().color;
+ if (color == Notification.COLOR_DEFAULT) {
+ return DEFAULT_ICON_TINT_COLOR;
+ }
+ return color;
+ }
+
+ private void bindNumber(int notificationColor) {
+ int numberOfNotificationChildren = mNotificationEntry.row.getNumberOfNotificationChildren();
+ boolean visible = numberOfNotificationChildren > 0;
+ if (visible) {
+ mChildCount.setText("(" + numberOfNotificationChildren + ")");
+ mChildCount.setTextColor(notificationColor);
+ mChildCount.setVisibility(VISIBLE);
+ } else {
+ mChildCount.setVisibility(GONE);
+ }
+ }
+
+ private void bindTime(StatusBarNotification sbn) {
+
+ }
+
+ private void bindIcon(int notificationColor) {
+ Drawable icon = mNotificationEntry.icon.getDrawable().getConstantState()
+ .newDrawable(getResources()).mutate();
+ mIconView.setImageDrawable(icon);
+ if (NotificationUtils.isGrayscale(mIconView, mNotificationColorUtil)) {
+ icon.setTint(notificationColor);
+ }
+ }
+
+ private void bindAppName(StatusBarNotification sbn) {
+ PackageManager pmUser = BaseStatusBar.getPackageManagerForUser(getContext(),
+ sbn.getUser().getIdentifier());
+ final String pkg = sbn.getPackageName();
+ String appname = pkg;
+ try {
+ final ApplicationInfo info = pmUser.getApplicationInfo(pkg,
+ PackageManager.GET_UNINSTALLED_PACKAGES
+ | PackageManager.GET_DISABLED_COMPONENTS);
+ if (info != null) {
+ appname = String.valueOf(pmUser.getApplicationLabel(info));
+
+ }
+ } catch (PackageManager.NameNotFoundException e) {
+ // app is gone, just show package name
+ }
+ mAppName.setText(appname);
+ }
+
+ public void setGroupManager(NotificationGroupManager groupManager) {
+ mGroupManager = groupManager;
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationUtils.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationUtils.java
new file mode 100644
index 0000000..c931800
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationUtils.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.systemui.statusbar.notification;
+
+import android.view.View;
+import android.widget.ImageView;
+
+import com.android.internal.util.NotificationColorUtil;
+import com.android.systemui.R;
+import com.android.systemui.statusbar.StatusBarIconView;
+
+/**
+ * A util class for various reusable functions
+ */
+public class NotificationUtils {
+ public static boolean isGrayscale(ImageView v, NotificationColorUtil colorUtil) {
+ Object isGrayscale = v.getTag(R.id.icon_is_grayscale);
+ if (isGrayscale != null) {
+ return Boolean.TRUE.equals(isGrayscale);
+ }
+ boolean grayscale = colorUtil.isGrayscaleIcon(v.getDrawable());
+ v.setTag(R.id.icon_is_grayscale, grayscale);
+ return grayscale;
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationGroupManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationGroupManager.java
index 310625e..bbef1c0 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationGroupManager.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationGroupManager.java
@@ -21,7 +21,6 @@
import com.android.systemui.statusbar.ExpandableNotificationRow;
import com.android.systemui.statusbar.NotificationData;
-import com.android.systemui.statusbar.StatusBarState;
import java.util.HashMap;
import java.util.HashSet;
@@ -93,21 +92,8 @@
if (group.children.isEmpty()) {
if (group.summary == null) {
mGroupMap.remove(groupKey);
- } else {
- if (group.expanded) {
- // only the summary is left. Change it to unexpanded in a few ms. We do this to
- // avoid raceconditions
- removed.row.post(new Runnable() {
- @Override
- public void run() {
- if (group.children.isEmpty()) {
- setGroupExpanded(sbn, false);
- }
- }
- });
- } else {
- group.summary.row.updateExpandButton();
- }
+ } else if (!group.expanded) {
+ group.summary.row.updateNotificationHeader();
}
}
}
@@ -130,7 +116,7 @@
} else {
group.children.add(added);
if (group.summary != null && group.children.size() == 1 && !group.expanded) {
- group.summary.row.updateExpandButton();
+ group.summary.row.updateNotificationHeader();
}
}
}
@@ -155,9 +141,6 @@
}
public boolean hasGroupChildren(StatusBarNotification sbn) {
- if (areGroupsProhibited()) {
- return false;
- }
if (!sbn.getNotification().isGroupSummary()) {
return false;
}
@@ -168,29 +151,6 @@
return !group.children.isEmpty();
}
- public void setStatusBarState(int newState) {
- if (mBarState == newState) {
- return;
- }
- boolean prohibitedBefore = areGroupsProhibited();
- mBarState = newState;
- boolean nowProhibited = areGroupsProhibited();
- if (nowProhibited != prohibitedBefore) {
- if (nowProhibited) {
- for (NotificationGroup group : mGroupMap.values()) {
- if (group.expanded) {
- setGroupExpanded(group, false);
- }
- }
- }
- mListener.onGroupsProhibitedChanged();
- }
- }
-
- private boolean areGroupsProhibited() {
- return mBarState == StatusBarState.KEYGUARD;
- }
-
/**
* @return whether a given notification is a child in a group which has a summary
*/
@@ -205,6 +165,20 @@
return true;
}
+ /**
+ * @return whether a given notification is a summary in a group which has children
+ */
+ public boolean isSummaryOfGroup(StatusBarNotification sbn) {
+ if (sbn.getNotification().isGroupChild()) {
+ return false;
+ }
+ NotificationGroup group = mGroupMap.get(sbn.getGroupKey());
+ if (group == null) {
+ return false;
+ }
+ return !group.children.isEmpty();
+ }
+
public ExpandableNotificationRow getGroupSummary(StatusBarNotification sbn) {
NotificationGroup group = mGroupMap.get(sbn.getGroupKey());
return group == null ? null
@@ -212,6 +186,18 @@
: group.summary.row;
}
+ public void onEntryHeadsUped(NotificationData.Entry headsUp) {
+ // TODO: handle this nicely
+ }
+
+ public void toggleGroupExpansion(StatusBarNotification sbn) {
+ NotificationGroup group = mGroupMap.get(sbn.getGroupKey());
+ if (group == null) {
+ return;
+ }
+ setGroupExpanded(group, !group.expanded);
+ }
+
public static class NotificationGroup {
public final HashSet<NotificationData.Entry> children = new HashSet<>();
public NotificationData.Entry summary;
@@ -228,11 +214,6 @@
void onGroupExpansionChanged(ExpandableNotificationRow changedRow, boolean expanded);
/**
- * Children group policy has changed and children may no be prohibited or allowed.
- */
- void onGroupsProhibitedChanged();
-
- /**
* A group of children just received a summary notification and should therefore become
* children of it.
*
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
index f3658eb..3e52515 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
@@ -714,7 +714,7 @@
R.color.notification_panel_solid_background)));
}
- mHeadsUpManager = new HeadsUpManager(context, mStatusBarWindow);
+ mHeadsUpManager = new HeadsUpManager(context, mStatusBarWindow, mGroupManager);
mHeadsUpManager.setBar(this);
mHeadsUpManager.addListener(this);
mHeadsUpManager.addListener(mNotificationPanel);
@@ -3859,7 +3859,6 @@
clearNotificationEffects();
}
mState = state;
- mGroupManager.setStatusBarState(state);
mFalsingManager.setStatusBarState(state);
mStatusBarWindowManager.setStatusBarState(state);
updateDozing();
@@ -3986,9 +3985,6 @@
mNotificationPanel.animateToFullShade(0 /* delay */);
setBarState(StatusBarState.SHADE_LOCKED);
updateKeyguardState(false /* goingToFullShade */, false /* fromShadeLocked */);
- if (row != null) {
- row.setUserLocked(false);
- }
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconController.java
index 5de1c13..d5b980e 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconController.java
@@ -42,6 +42,7 @@
import com.android.systemui.statusbar.NotificationData;
import com.android.systemui.statusbar.SignalClusterView;
import com.android.systemui.statusbar.StatusBarIconView;
+import com.android.systemui.statusbar.notification.NotificationUtils;
import com.android.systemui.tuner.TunerService;
import com.android.systemui.tuner.TunerService.Tunable;
@@ -401,23 +402,13 @@
for (int i = 0; i < mNotificationIcons.getChildCount(); i++) {
StatusBarIconView v = (StatusBarIconView) mNotificationIcons.getChildAt(i);
boolean isPreL = Boolean.TRUE.equals(v.getTag(R.id.icon_is_pre_L));
- boolean colorize = !isPreL || isGrayscale(v);
+ boolean colorize = !isPreL || NotificationUtils.isGrayscale(v, mNotificationColorUtil);
if (colorize) {
v.setImageTintList(ColorStateList.valueOf(mIconTint));
}
}
}
- private boolean isGrayscale(StatusBarIconView v) {
- Object isGrayscale = v.getTag(R.id.icon_is_grayscale);
- if (isGrayscale != null) {
- return Boolean.TRUE.equals(isGrayscale);
- }
- boolean grayscale = mNotificationColorUtil.isGrayscaleIcon(v.getDrawable());
- v.setTag(R.id.icon_is_grayscale, grayscale);
- return grayscale;
- }
-
public void appTransitionPending() {
mTransitionPending = true;
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/HeadsUpManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/HeadsUpManager.java
index a515f23..dc9f5e8 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/HeadsUpManager.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/HeadsUpManager.java
@@ -33,6 +33,7 @@
import com.android.systemui.R;
import com.android.systemui.statusbar.ExpandableNotificationRow;
import com.android.systemui.statusbar.NotificationData;
+import com.android.systemui.statusbar.phone.NotificationGroupManager;
import com.android.systemui.statusbar.phone.PhoneStatusBar;
import java.io.FileDescriptor;
@@ -85,6 +86,7 @@
private final int mStatusBarHeight;
private final int mNotificationsTopPadding;
private final Context mContext;
+ private final NotificationGroupManager mGroupManager;
private PhoneStatusBar mBar;
private int mSnoozeLengthMs;
private ContentObserver mSettingsObserver;
@@ -104,7 +106,8 @@
private boolean mIsObserving;
private boolean mRemoteInputActive;
- public HeadsUpManager(final Context context, View statusBarWindowView) {
+ public HeadsUpManager(final Context context, View statusBarWindowView,
+ NotificationGroupManager groupManager) {
mContext = context;
Resources resources = mContext.getResources();
mTouchAcceptanceDelay = resources.getInteger(R.integer.touch_acceptance_delay);
@@ -132,6 +135,7 @@
Settings.Global.getUriFor(SETTING_HEADS_UP_SNOOZE_LENGTH_MS), false,
mSettingsObserver);
mStatusBarWindowView = statusBarWindowView;
+ mGroupManager = groupManager;
mStatusBarHeight = resources.getDimensionPixelSize(
com.android.internal.R.dimen.status_bar_height);
mNotificationsTopPadding = context.getResources()
@@ -181,12 +185,12 @@
public void updateNotification(NotificationData.Entry headsUp, boolean alert) {
if (DEBUG) Log.v(TAG, "updateNotification");
- headsUp.row.setChildrenExpanded(false /* expanded */, false /* animated */);
headsUp.row.sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED);
if (alert) {
HeadsUpEntry headsUpEntry = mHeadsUpEntries.get(headsUp.key);
headsUpEntry.updateEntry();
+ mGroupManager.onEntryHeadsUped(headsUp);
setEntryPinned(headsUpEntry, shouldHeadsUpBecomePinned(headsUp));
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationChildrenContainer.java b/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationChildrenContainer.java
index 3c9e8cf..c9ebc84 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationChildrenContainer.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationChildrenContainer.java
@@ -21,11 +21,11 @@
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
-import android.widget.Button;
import com.android.systemui.R;
import com.android.systemui.statusbar.ExpandableNotificationRow;
-import com.android.systemui.statusbar.ExpandableView;
+import com.android.systemui.statusbar.notification.HybridNotificationView;
+import com.android.systemui.statusbar.notification.HybridNotificationViewManager;
import java.util.ArrayList;
import java.util.List;
@@ -35,15 +35,24 @@
*/
public class NotificationChildrenContainer extends ViewGroup {
+ private static final int NUMBER_OF_CHILDREN_WHEN_COLLAPSED = 2;
+ private static final int NUMBER_OF_CHILDREN_WHEN_SYSTEM_EXPANDED = 5;
+ private static final int NUMBER_OF_CHILDREN_WHEN_CHILDREN_EXPANDED = 8;
+
private final int mChildPadding;
private final int mDividerHeight;
private final int mMaxNotificationHeight;
private final List<View> mDividers = new ArrayList<>();
private final List<ExpandableNotificationRow> mChildren = new ArrayList<>();
- private final View mCollapseButton;
- private final View mCollapseDivider;
- private final int mCollapseButtonHeight;
+ private final int mNotificationHeaderHeight;
private final int mNotificationAppearDistance;
+ private final float mHeaderTopPaddingSubstraction;
+ private final HybridNotificationViewManager mHybridViewManager;
+ private final float mCollapsedBottompadding;
+ private boolean mChildrenExpanded;
+ private ExpandableNotificationRow mNotificationParent;
+ private HybridNotificationView mGroupOverflowContainer;
+ private ViewState mGroupOverFlowState;
public NotificationChildrenContainer(Context context) {
this(context, null);
@@ -68,14 +77,11 @@
R.dimen.notification_max_height);
mNotificationAppearDistance = getResources().getDimensionPixelSize(
R.dimen.notification_appear_distance);
- LayoutInflater inflater = mContext.getSystemService(LayoutInflater.class);
- mCollapseButton = inflater.inflate(R.layout.notification_collapse_button, this,
- false);
- mCollapseButtonHeight = getResources().getDimensionPixelSize(
- R.dimen.notification_bottom_decor_height);
- addView(mCollapseButton);
- mCollapseDivider = inflateDivider();
- addView(mCollapseDivider);
+ mNotificationHeaderHeight = getResources().getDimensionPixelSize(
+ R.dimen.notification_header_height);
+ mHeaderTopPaddingSubstraction = 2 * getResources().getDisplayMetrics().density;
+ mCollapsedBottompadding = 10 * getResources().getDisplayMetrics().density;
+ mHybridViewManager = new HybridNotificationViewManager(getContext(), this);
}
@Override
@@ -85,14 +91,6 @@
for (int i = 0; i < childCount; i++) {
View child = mChildren.get(i);
boolean viewGone = child.getVisibility() == View.GONE;
- if (i != 0) {
- View divider = mDividers.get(i - 1);
- int dividerVisibility = divider.getVisibility();
- int newVisibility = viewGone ? INVISIBLE : VISIBLE;
- if (dividerVisibility != newVisibility) {
- divider.setVisibility(newVisibility);
- }
- }
if (viewGone) {
continue;
}
@@ -103,9 +101,10 @@
firstChild = false;
}
}
- mCollapseButton.layout(0, 0, getWidth(), mCollapseButtonHeight);
- mCollapseDivider.layout(0, mCollapseButtonHeight - mDividerHeight, getWidth(),
- mCollapseButtonHeight);
+ if (mGroupOverflowContainer != null) {
+ mGroupOverflowContainer.layout(0, 0, getWidth(),
+ mGroupOverflowContainer.getMeasuredHeight());
+ }
}
@Override
@@ -120,18 +119,11 @@
}
int newHeightSpec = MeasureSpec.makeMeasureSpec(ownMaxHeight, MeasureSpec.AT_MOST);
int dividerHeightSpec = MeasureSpec.makeMeasureSpec(mDividerHeight, MeasureSpec.EXACTLY);
- int collapseButtonHeightSpec = MeasureSpec.makeMeasureSpec(mCollapseButtonHeight,
- MeasureSpec.EXACTLY);
- mCollapseButton.measure(widthMeasureSpec, collapseButtonHeightSpec);
- mCollapseDivider.measure(widthMeasureSpec, dividerHeightSpec);
- int height = mCollapseButtonHeight;
+ int height = mNotificationHeaderHeight;
int childCount = mChildren.size();
boolean firstChild = true;
for (int i = 0; i < childCount; i++) {
View child = mChildren.get(i);
- if (child.getVisibility() == View.GONE) {
- continue;
- }
child.measure(widthMeasureSpec, newHeightSpec);
height += child.getMeasuredHeight();
if (!firstChild) {
@@ -144,9 +136,9 @@
}
}
int width = MeasureSpec.getSize(widthMeasureSpec);
- height = hasFixedHeight ? ownMaxHeight
- : isHeightLimited ? Math.min(ownMaxHeight, height)
- : height;
+ if (mGroupOverflowContainer != null) {
+ mGroupOverflowContainer.measure(widthMeasureSpec, newHeightSpec);
+ }
setMeasuredDimension(width, height);
}
@@ -165,8 +157,7 @@
addView(divider);
mDividers.add(Math.max(newIndex - 1, 0), divider);
}
- // TODO: adapt background corners
- // TODO: fix overdraw
+ updateGroupOverflow();
}
public void removeNotification(ExpandableNotificationRow row) {
@@ -178,7 +169,26 @@
removeView(divider);
}
row.setSystemChildExpanded(false);
- // TODO: adapt background corners
+ updateGroupOverflow();
+ }
+
+ public void updateGroupOverflow() {
+ int childCount = mChildren.size();
+ int maxAllowedVisibleChildren = getMaxAllowedVisibleChildren(true /* likeCollapsed */);
+ boolean hasOverflow = childCount > maxAllowedVisibleChildren;
+ int lastVisibleIndex = hasOverflow ? maxAllowedVisibleChildren - 2
+ : maxAllowedVisibleChildren - 1;
+ if (hasOverflow) {
+ mGroupOverflowContainer = mHybridViewManager.bindFromNotificationGroup(
+ mGroupOverflowContainer, mChildren, lastVisibleIndex + 1);
+ if (mGroupOverFlowState == null) {
+ mGroupOverFlowState = new ViewState();
+ }
+ } else if (mGroupOverflowContainer != null) {
+ removeView(mGroupOverflowContainer);
+ mGroupOverflowContainer = null;
+ mGroupOverFlowState = null;
+ }
}
private View inflateDivider() {
@@ -210,25 +220,42 @@
result = true;
}
}
-
- // Let's make the first child expanded!
- boolean first = true;
- for (int i = 0; i < childOrder.size(); i++) {
- ExpandableNotificationRow child = childOrder.get(i);
- child.setSystemChildExpanded(first);
- first = false;
- }
+ updateExpansionStates();
return result;
}
+ private void updateExpansionStates() {
+ // Let's make the first child expanded if the parent is
+ for (int i = 0; i < mChildren.size(); i++) {
+ ExpandableNotificationRow child = mChildren.get(i);
+ child.setSystemChildExpanded(false);
+ }
+ }
+
+ /**
+ *
+ * @return the intrinsic size of this children container, i.e the natural fully expanded state
+ */
public int getIntrinsicHeight() {
- int childCount = mChildren.size();
+ int maxAllowedVisibleChildren = getMaxAllowedVisibleChildren();
+ return getIntrinsicHeight(maxAllowedVisibleChildren);
+ }
+
+ /**
+ * @return the intrinsic height with a number of children given
+ * in @param maxAllowedVisibleChildren
+ */
+ private int getIntrinsicHeight(float maxAllowedVisibleChildren) {
int intrinsicHeight = 0;
int visibleChildren = 0;
+ int childCount = mChildren.size();
for (int i = 0; i < childCount; i++) {
+ if (visibleChildren >= maxAllowedVisibleChildren) {
+ break;
+ }
ExpandableNotificationRow child = mChildren.get(i);
- if (child.getVisibility() == View.GONE) {
- continue;
+ if (i == 0 && child.hasSameBgColor(mNotificationParent)) {
+ intrinsicHeight -= mHeaderTopPaddingSubstraction;
}
intrinsicHeight += child.getIntrinsicHeight();
visibleChildren++;
@@ -236,6 +263,9 @@
if (visibleChildren > 0) {
intrinsicHeight += (visibleChildren - 1) * mDividerHeight;
}
+ if (!mChildrenExpanded) {
+ intrinsicHeight += mCollapsedBottompadding;
+ }
return intrinsicHeight;
}
@@ -247,17 +277,23 @@
*/
public void getState(StackScrollState resultState, StackViewState parentState) {
int childCount = mChildren.size();
- int yPosition = mCollapseButtonHeight;
+ int yPosition = mNotificationHeaderHeight;
boolean firstChild = true;
+ int maxAllowedVisibleChildren = getMaxAllowedVisibleChildren();
+ boolean hasOverflow = !mChildrenExpanded && childCount > maxAllowedVisibleChildren
+ && maxAllowedVisibleChildren != NUMBER_OF_CHILDREN_WHEN_CHILDREN_EXPANDED;
+ int lastVisibleIndex = hasOverflow
+ ? maxAllowedVisibleChildren - 2
+ : maxAllowedVisibleChildren - 1;
for (int i = 0; i < childCount; i++) {
ExpandableNotificationRow child = mChildren.get(i);
- if (child.getVisibility() == View.GONE) {
- continue;
- }
if (!firstChild) {
// There's a divider
yPosition += mChildPadding;
} else {
+ if (child.hasSameBgColor(mNotificationParent)) {
+ yPosition -= mHeaderTopPaddingSubstraction;
+ }
firstChild = false;
}
StackViewState childState = resultState.getViewStateForView(child);
@@ -269,41 +305,62 @@
childState.dark = parentState.dark;
childState.hideSensitive = parentState.hideSensitive;
childState.belowSpeedBump = parentState.belowSpeedBump;
- childState.scale = parentState.scale;
+ childState.scale = 1.0f;
childState.clipTopAmount = 0;
childState.topOverLap = 0;
+ boolean visible = i <= lastVisibleIndex;
+ childState.alpha = visible ? 1 : 0;
childState.location = parentState.location;
yPosition += intrinsicHeight;
}
+ if (mGroupOverflowContainer != null) {
+ mGroupOverFlowState.initFrom(mGroupOverflowContainer);
+ if (hasOverflow) {
+ StackViewState firstOverflowState =
+ resultState.getViewStateForView(mChildren.get(lastVisibleIndex + 1));
+ mGroupOverFlowState.yTranslation = firstOverflowState.yTranslation;
+ }
+ mGroupOverFlowState.alpha = mChildrenExpanded || !hasOverflow ? 0.0f : 1.0f;
+ }
+ }
+
+ private int getMaxAllowedVisibleChildren() {
+ return getMaxAllowedVisibleChildren(false /* likeCollapsed */);
+ }
+
+ private int getMaxAllowedVisibleChildren(boolean likeCollapsed) {
+ if (!likeCollapsed && (mChildrenExpanded || mNotificationParent.isUserLocked())) {
+ return NUMBER_OF_CHILDREN_WHEN_CHILDREN_EXPANDED;
+ }
+ if (mNotificationParent.isExpanded()) {
+ return NUMBER_OF_CHILDREN_WHEN_SYSTEM_EXPANDED;
+ }
+ return NUMBER_OF_CHILDREN_WHEN_COLLAPSED;
}
public void applyState(StackScrollState state) {
int childCount = mChildren.size();
boolean firstChild = true;
- ViewState dividerState = new ViewState();
+ ViewState tmpState = new ViewState();
for (int i = 0; i < childCount; i++) {
ExpandableNotificationRow child = mChildren.get(i);
StackViewState viewState = state.getViewStateForView(child);
- if (child.getVisibility() == View.GONE) {
- continue;
- }
if (!firstChild) {
// layout the divider
View divider = mDividers.get(i - 1);
- dividerState.initFrom(divider);
- dividerState.yTranslation = (int) (viewState.yTranslation
+ tmpState.initFrom(divider);
+ tmpState.yTranslation = (int) (viewState.yTranslation
- (mChildPadding + mDividerHeight) / 2.0f);
- dividerState.alpha = 1;
- state.applyViewState(divider, dividerState);
+ tmpState.alpha = mChildrenExpanded && viewState.alpha != 0 ? 0.5f : 0;
+ state.applyViewState(divider, tmpState);
} else {
firstChild = false;
}
state.applyState(child, viewState);
}
- }
-
- public void setCollapseClickListener(OnClickListener collapseClickListener) {
- mCollapseButton.setOnClickListener(collapseClickListener);
+ if (mGroupOverflowContainer != null) {
+ state.applyViewState(mGroupOverflowContainer, mGroupOverFlowState);
+ }
}
/**
@@ -313,6 +370,10 @@
* @param state the new state we animate to
*/
public void prepareExpansionChanged(StackScrollState state) {
+ if (true) {
+ // TODO: do something that makes sense
+ return;
+ }
int childCount = mChildren.size();
boolean firstChild = true;
StackViewState sourceState = new StackViewState();
@@ -320,9 +381,6 @@
for (int i = 0; i < childCount; i++) {
ExpandableNotificationRow child = mChildren.get(i);
StackViewState viewState = state.getViewStateForView(child);
- if (child.getVisibility() == View.GONE) {
- continue;
- }
if (!firstChild) {
// layout the divider
View divider = mDividers.get(i - 1);
@@ -339,23 +397,17 @@
sourceState.yTranslation += mNotificationAppearDistance;
state.applyState(child, sourceState);
}
- mCollapseButton.setAlpha(0);
- mCollapseDivider.setAlpha(0);
- mCollapseDivider.setTranslationY(mNotificationAppearDistance / 4);
}
public void startAnimationToState(StackScrollState state, StackStateAnimator stateAnimator,
boolean withDelays, long baseDelay, long duration) {
int childCount = mChildren.size();
boolean firstChild = true;
- ViewState dividerState = new ViewState();
+ ViewState tmpState = new ViewState();
int notGoneIndex = 0;
for (int i = 0; i < childCount; i++) {
ExpandableNotificationRow child = mChildren.get(i);
StackViewState viewState = state.getViewStateForView(child);
- if (child.getVisibility() == View.GONE) {
- continue;
- }
int difference = Math.min(StackStateAnimator.DELAY_EFFECT_MAX_INDEX_DIFFERENCE_CHILDREN,
notGoneIndex + 1);
long delay = withDelays
@@ -365,24 +417,20 @@
if (!firstChild) {
// layout the divider
View divider = mDividers.get(i - 1);
- dividerState.initFrom(divider);
- dividerState.yTranslation = viewState.yTranslation
+ tmpState.initFrom(divider);
+ tmpState.yTranslation = viewState.yTranslation
- (mChildPadding + mDividerHeight) / 2.0f;
- dividerState.alpha = 1;
- stateAnimator.startViewAnimations(divider, dividerState, delay, duration);
+ tmpState.alpha = mChildrenExpanded && viewState.alpha != 0 ? 0.5f : 0;;
+ stateAnimator.startViewAnimations(divider, tmpState, delay, duration);
} else {
firstChild = false;
}
stateAnimator.startStackAnimations(child, viewState, state, -1, delay);
notGoneIndex++;
}
- dividerState.initFrom(mCollapseButton);
- dividerState.alpha = 1.0f;
- stateAnimator.startViewAnimations(mCollapseButton, dividerState, baseDelay, duration);
- dividerState.initFrom(mCollapseDivider);
- dividerState.alpha = 1.0f;
- dividerState.yTranslation = 0.0f;
- stateAnimator.startViewAnimations(mCollapseDivider, dividerState, baseDelay, duration);
+ if (mGroupOverflowContainer != null) {
+ stateAnimator.startViewAnimations(mGroupOverflowContainer, mGroupOverFlowState, -1, 0);
+ }
}
public ExpandableNotificationRow getViewAtPosition(float y) {
@@ -400,7 +448,19 @@
return null;
}
- public void setTintColor(int color) {
- ExpandableNotificationRow.applyTint(mCollapseDivider, color);
+ public void setChildrenExpanded(boolean childrenExpanded) {
+ mChildrenExpanded = childrenExpanded;
+ }
+
+ public void setNotificationParent(ExpandableNotificationRow parent) {
+ mNotificationParent = parent;
+ }
+
+ public int getMaxContentHeight() {
+ return getIntrinsicHeight(NUMBER_OF_CHILDREN_WHEN_CHILDREN_EXPANDED);
+ }
+
+ public int getMinHeight() {
+ return getIntrinsicHeight(getMaxAllowedVisibleChildren(true /* forceCollapsed */));
}
}
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 d50f8ac5..aeca97c 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java
@@ -747,7 +747,8 @@
public void setUserExpandedChild(View v, boolean userExpanded) {
if (v instanceof ExpandableNotificationRow) {
- ((ExpandableNotificationRow) v).setUserExpanded(userExpanded);
+ ((ExpandableNotificationRow) v).setUserExpanded(userExpanded,
+ true /* allowChildrenExpansion */);
}
}
@@ -1726,7 +1727,7 @@
ExpandableNotificationRow groupSummary =
mGroupManager.getGroupSummary(row.getStatusBarNotification());
if (groupSummary != null && groupSummary != row) {
- return !groupSummary.areChildrenExpanded();
+ return row.getVisibility() == View.INVISIBLE;
}
}
return false;
@@ -2344,7 +2345,13 @@
ExpandableNotificationRow row = (ExpandableNotificationRow) view;
if (row.isUserLocked() && row != getFirstChildNotGone()) {
// We are actually expanding this view
- float endPosition = row.getTranslationY() + row.getActualHeight();
+ float endPosition;
+ if (row.isChildInGroup()) {
+ ExpandableNotificationRow parent = row.getNotificationParent();
+ endPosition = parent.getTranslationY() + parent.getActualHeight();
+ } else {
+ endPosition = row.getTranslationY() + row.getActualHeight();
+ }
int stackEnd = mMaxLayoutHeight - mBottomStackPeekSize -
mBottomStackSlowDownHeight + (int) mStackTranslation;
if (endPosition > stackEnd) {
@@ -2788,16 +2795,6 @@
return touchY > mTopPadding + mStackTranslation;
}
- private void updateExpandButtons() {
- for (int i = 0; i < getChildCount(); i++) {
- View child = getChildAt(i);
- if (child instanceof ExpandableNotificationRow) {
- ExpandableNotificationRow row = (ExpandableNotificationRow) child;
- row.updateExpandButton();
- }
- }
- }
-
@Override
public void onGroupExpansionChanged(ExpandableNotificationRow changedRow, boolean expanded) {
boolean animated = mAnimationsEnabled && mIsExpanded;
@@ -2810,11 +2807,6 @@
}
@Override
- public void onGroupsProhibitedChanged() {
- updateExpandButtons();
- }
-
- @Override
public void onGroupCreatedFromChildren(NotificationGroupManager.NotificationGroup group) {
for (NotificationData.Entry entry : group.children) {
ExpandableNotificationRow row = entry.row;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/stack/StackScrollAlgorithm.java b/packages/SystemUI/src/com/android/systemui/statusbar/stack/StackScrollAlgorithm.java
index cf696a1..65ca95b 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/stack/StackScrollAlgorithm.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/stack/StackScrollAlgorithm.java
@@ -361,7 +361,7 @@
// handle the notgoneIndex for the children as well
List<ExpandableNotificationRow> children =
row.getNotificationChildren();
- if (row.areChildrenExpanded() && children != null) {
+ if (row.isSummaryWithChildren() && children != null) {
for (ExpandableNotificationRow childRow : children) {
if (childRow.getVisibility() != View.GONE) {
StackViewState childState
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/stack/StackScrollState.java b/packages/SystemUI/src/com/android/systemui/statusbar/stack/StackScrollState.java
index 3768ca4..e155d70 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/stack/StackScrollState.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/stack/StackScrollState.java
@@ -65,7 +65,7 @@
ExpandableNotificationRow row = (ExpandableNotificationRow) child;
List<ExpandableNotificationRow> children =
row.getNotificationChildren();
- if (row.areChildrenExpanded() && children != null) {
+ if (row.isSummaryWithChildren() && children != null) {
for (ExpandableNotificationRow childRow : children) {
resetViewState(childRow);
}
diff --git a/services/core/java/com/android/server/AlarmManagerService.java b/services/core/java/com/android/server/AlarmManagerService.java
index ed6fc00..a5ddc12 100644
--- a/services/core/java/com/android/server/AlarmManagerService.java
+++ b/services/core/java/com/android/server/AlarmManagerService.java
@@ -20,7 +20,10 @@
import android.app.ActivityManager;
import android.app.ActivityManagerNative;
import android.app.AlarmManager;
+import android.app.AppOpsManager;
import android.app.BroadcastOptions;
+import android.app.IAlarmCompleteListener;
+import android.app.IAlarmListener;
import android.app.IAlarmManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
@@ -94,12 +97,13 @@
static final boolean DEBUG_BATCH = localLOGV || false;
static final boolean DEBUG_VALIDATE = localLOGV || false;
static final boolean DEBUG_ALARM_CLOCK = localLOGV || false;
+ static final boolean DEBUG_LISTENER_CALLBACK = localLOGV || false;
static final boolean RECORD_ALARMS_IN_HISTORY = true;
static final boolean RECORD_DEVICE_IDLE_ALARMS = false;
static final int ALARM_EVENT = 1;
static final String TIMEZONE_PROPERTY = "persist.sys.timezone";
- static final Intent mBackgroundIntent
+ private final Intent mBackgroundIntent
= new Intent().addFlags(Intent.FLAG_FROM_BACKGROUND);
static final IncreasingTimeOrder sIncreasingTimeOrder = new IncreasingTimeOrder();
@@ -110,6 +114,8 @@
final LocalLog mLog = new LocalLog(TAG);
+ AppOpsManager mAppOps;
+
final Object mLock = new Object();
long mNativeData;
@@ -124,7 +130,7 @@
ClockReceiver mClockReceiver;
InteractiveStateReceiver mInteractiveStateReceiver;
private UninstallReceiver mUninstallReceiver;
- final ResultReceiver mResultReceiver = new ResultReceiver();
+ final DeliveryTracker mDeliveryTracker = new DeliveryTracker();
PendingIntent mTimeTickSender;
PendingIntent mDateChangeSender;
Random mRandom;
@@ -185,6 +191,7 @@
private static final String KEY_ALLOW_WHILE_IDLE_LONG_TIME = "allow_while_idle_long_time";
private static final String KEY_ALLOW_WHILE_IDLE_WHITELIST_DURATION
= "allow_while_idle_whitelist_duration";
+ private static final String KEY_LISTENER_TIMEOUT = "listener_timeout";
private static final long DEFAULT_MIN_FUTURITY = 5 * 1000;
private static final long DEFAULT_MIN_INTERVAL = 60 * 1000;
@@ -192,6 +199,8 @@
private static final long DEFAULT_ALLOW_WHILE_IDLE_LONG_TIME = 9*60*1000;
private static final long DEFAULT_ALLOW_WHILE_IDLE_WHITELIST_DURATION = 10*1000;
+ private static final long DEFAULT_LISTENER_TIMEOUT = 5 * 1000;
+
// Minimum futurity of a new alarm
public long MIN_FUTURITY = DEFAULT_MIN_FUTURITY;
@@ -208,6 +217,9 @@
public long ALLOW_WHILE_IDLE_WHITELIST_DURATION
= DEFAULT_ALLOW_WHILE_IDLE_WHITELIST_DURATION;
+ // Direct alarm listener callback timeout
+ public long LISTENER_TIMEOUT = DEFAULT_LISTENER_TIMEOUT;
+
private ContentResolver mResolver;
private final KeyValueListParser mParser = new KeyValueListParser(',');
private long mLastAllowWhileIdleWhitelistDuration = -1;
@@ -264,6 +276,8 @@
ALLOW_WHILE_IDLE_WHITELIST_DURATION = mParser.getLong(
KEY_ALLOW_WHILE_IDLE_WHITELIST_DURATION,
DEFAULT_ALLOW_WHILE_IDLE_WHITELIST_DURATION);
+ LISTENER_TIMEOUT = mParser.getLong(KEY_LISTENER_TIMEOUT,
+ DEFAULT_LISTENER_TIMEOUT);
updateAllowWhileIdleMinTimeLocked();
updateAllowWhileIdleWhitelistDurationLocked();
@@ -281,6 +295,10 @@
TimeUtils.formatDuration(MIN_INTERVAL, pw);
pw.println();
+ pw.print(" "); pw.print(KEY_LISTENER_TIMEOUT); pw.print("=");
+ TimeUtils.formatDuration(LISTENER_TIMEOUT, pw);
+ pw.println();
+
pw.print(" "); pw.print(KEY_ALLOW_WHILE_IDLE_SHORT_TIME); pw.print("=");
TimeUtils.formatDuration(ALLOW_WHILE_IDLE_SHORT_TIME, pw);
pw.println();
@@ -388,14 +406,21 @@
return newStart;
}
- boolean remove(final PendingIntent operation) {
+ boolean remove(final PendingIntent operation, final IAlarmListener listener) {
+ if (operation == null && listener == null) {
+ if (localLOGV) {
+ Slog.w(TAG, "requested remove() of null operation",
+ new RuntimeException("here"));
+ }
+ return false;
+ }
boolean didRemove = false;
long newStart = 0; // recalculate endpoints as we go
long newEnd = Long.MAX_VALUE;
int newFlags = 0;
for (int i = 0; i < alarms.size(); ) {
Alarm alarm = alarms.get(i);
- if (alarm.operation.equals(operation)) {
+ if (alarm.matches(operation, listener)) {
alarms.remove(i);
didRemove = true;
if (alarm.alarmClock != null) {
@@ -422,13 +447,20 @@
}
boolean remove(final String packageName) {
+ if (packageName == null) {
+ if (localLOGV) {
+ Slog.w(TAG, "requested remove() of null packageName",
+ new RuntimeException("here"));
+ }
+ return false;
+ }
boolean didRemove = false;
long newStart = 0; // recalculate endpoints as we go
long newEnd = Long.MAX_VALUE;
int newFlags = 0;
for (int i = 0; i < alarms.size(); ) {
Alarm alarm = alarms.get(i);
- if (alarm.operation.getTargetPackage().equals(packageName)) {
+ if (alarm.matches(packageName)) {
alarms.remove(i);
didRemove = true;
if (alarm.alarmClock != null) {
@@ -460,7 +492,7 @@
long newEnd = Long.MAX_VALUE;
for (int i = 0; i < alarms.size(); ) {
Alarm alarm = alarms.get(i);
- if (UserHandle.getUserId(alarm.operation.getCreatorUid()) == userHandle) {
+ if (UserHandle.getUserId(alarm.creatorUid) == userHandle) {
alarms.remove(i);
didRemove = true;
if (alarm.alarmClock != null) {
@@ -488,7 +520,7 @@
final int N = alarms.size();
for (int i = 0; i < N; i++) {
Alarm a = alarms.get(i);
- if (a.operation.getTargetPackage().equals(packageName)) {
+ if (a.matches(packageName)) {
return true;
}
}
@@ -565,7 +597,8 @@
Alarm a = alarms.get(i);
final int alarmPrio;
- if (Intent.ACTION_TIME_TICK.equals(a.operation.getIntent().getAction())) {
+ if (a.operation != null
+ && Intent.ACTION_TIME_TICK.equals(a.operation.getIntent().getAction())) {
alarmPrio = PRIO_TICK;
} else if (a.wakeup) {
alarmPrio = PRIO_WAKEUP;
@@ -574,10 +607,13 @@
}
PriorityClass packagePrio = a.priorityClass;
- if (packagePrio == null) packagePrio = mPriorities.get(a.operation.getCreatorPackage());
+ String alarmPackage = (a.operation != null)
+ ? a.operation.getCreatorPackage()
+ : a.packageName;
+ if (packagePrio == null) packagePrio = mPriorities.get(alarmPackage);
if (packagePrio == null) {
packagePrio = a.priorityClass = new PriorityClass(); // lowest prio & stale sequence
- mPriorities.put(a.operation.getCreatorPackage(), packagePrio);
+ mPriorities.put(alarmPackage, packagePrio);
}
a.priorityClass = packagePrio;
@@ -744,20 +780,27 @@
}
}
- static final class InFlight extends Intent {
+ static final class InFlight {
final PendingIntent mPendingIntent;
+ final IBinder mListener;
final WorkSource mWorkSource;
+ final int mUid;
final String mTag;
final BroadcastStats mBroadcastStats;
final FilterStats mFilterStats;
final int mAlarmType;
- InFlight(AlarmManagerService service, PendingIntent pendingIntent, WorkSource workSource,
- int alarmType, String tag, long nowELAPSED) {
+ InFlight(AlarmManagerService service, PendingIntent pendingIntent, IAlarmListener listener,
+ WorkSource workSource, int uid, String alarmPkg, int alarmType, String tag,
+ long nowELAPSED) {
mPendingIntent = pendingIntent;
+ mListener = listener != null ? listener.asBinder() : null;
mWorkSource = workSource;
+ mUid = uid;
mTag = tag;
- mBroadcastStats = service.getStatsLocked(pendingIntent);
+ mBroadcastStats = (pendingIntent != null)
+ ? service.getStatsLocked(pendingIntent)
+ : service.getStatsLocked(uid, alarmPkg);
FilterStats fs = mBroadcastStats.filterStats.get(mTag);
if (fs == null) {
fs = new FilterStats(mBroadcastStats, mTag);
@@ -853,6 +896,7 @@
public void onBootPhase(int phase) {
if (phase == PHASE_SYSTEM_SERVICES_READY) {
mConstants.start(getContext().getContentResolver());
+ mAppOps = (AppOpsManager) getContext().getSystemService(Context.APP_OPS_SERVICE);
}
}
@@ -905,15 +949,20 @@
return;
}
synchronized (mLock) {
- removeLocked(operation);
+ removeLocked(operation, null);
}
}
void setImpl(int type, long triggerAtTime, long windowLength, long interval,
- PendingIntent operation, int flags, WorkSource workSource,
- AlarmManager.AlarmClockInfo alarmClock, int callingUid) {
- if (operation == null) {
- Slog.w(TAG, "set/setRepeating ignored because there is no intent");
+ PendingIntent operation, IAlarmListener directReceiver, String listenerTag,
+ int flags, WorkSource workSource, AlarmManager.AlarmClockInfo alarmClock,
+ int callingUid, String callingPackage) {
+ // must be *either* PendingIntent or AlarmReceiver, but not both
+ if ((operation == null && directReceiver == null)
+ || (operation != null && directReceiver != null)) {
+ Slog.w(TAG, "Alarms must either supply a PendingIntent or an AlarmReceiver");
+ // NB: previous releases failed silently here, so we are continuing to do the same
+ // rather than throw an IllegalArgumentException.
return;
}
@@ -971,17 +1020,19 @@
+ " interval=" + interval + " flags=0x" + Integer.toHexString(flags));
}
setImplLocked(type, triggerAtTime, triggerElapsed, windowLength, maxElapsed,
- interval, operation, flags, true, workSource, alarmClock, callingUid);
+ interval, operation, directReceiver, listenerTag, flags, true, workSource,
+ alarmClock, callingUid, callingPackage);
}
}
private void setImplLocked(int type, long when, long whenElapsed, long windowLength,
- long maxWhen, long interval, PendingIntent operation, int flags,
- boolean doValidate, WorkSource workSource, AlarmManager.AlarmClockInfo alarmClock,
- int uid) {
+ long maxWhen, long interval, PendingIntent operation, IAlarmListener directReceiver,
+ String listenerTag, int flags, boolean doValidate, WorkSource workSource,
+ AlarmManager.AlarmClockInfo alarmClock, int callingUid, String callingPackage) {
Alarm a = new Alarm(type, when, whenElapsed, windowLength, maxWhen, interval,
- operation, workSource, flags, alarmClock, uid);
- removeLocked(operation);
+ operation, directReceiver, listenerTag, workSource, flags, alarmClock,
+ callingUid, callingPackage);
+ removeLocked(operation, directReceiver);
setImplLocked(a, false, doValidate);
}
@@ -1109,10 +1160,31 @@
private final IBinder mService = new IAlarmManager.Stub() {
@Override
- public void set(int type, long triggerAtTime, long windowLength, long interval, int flags,
- PendingIntent operation, WorkSource workSource,
- AlarmManager.AlarmClockInfo alarmClock) {
+ public void set(String callingPackage,
+ int type, long triggerAtTime, long windowLength, long interval, int flags,
+ PendingIntent operation, IAlarmListener directReceiver, String listenerTag,
+ WorkSource workSource, AlarmManager.AlarmClockInfo alarmClock) {
final int callingUid = Binder.getCallingUid();
+
+ // make sure the caller is not lying about which package should be blamed for
+ // wakelock time spent in alarm delivery
+ mAppOps.checkPackage(callingUid, callingPackage);
+
+ // Repeating alarms must use PendingIntent, not direct listener
+ if (interval != 0) {
+ if (directReceiver != null) {
+ throw new IllegalArgumentException("Repeating alarms cannot use AlarmReceivers");
+ }
+ }
+
+ // direct-callback alarms must be wakeup alarms (otherwise they should just be
+ // posting work to a Handler)
+ if (directReceiver != null) {
+ if (type != RTC_WAKEUP && type != ELAPSED_REALTIME_WAKEUP) {
+ throw new IllegalArgumentException("Only wakeup alarms can use AlarmReceivers");
+ }
+ }
+
if (workSource != null) {
getContext().enforcePermission(
android.Manifest.permission.UPDATE_DEVICE_STATS,
@@ -1149,8 +1221,8 @@
flags |= AlarmManager.FLAG_WAKE_FROM_IDLE | AlarmManager.FLAG_STANDALONE;
}
- setImpl(type, triggerAtTime, windowLength, interval, operation,
- flags, workSource, alarmClock, callingUid);
+ setImpl(type, triggerAtTime, windowLength, interval, operation, directReceiver,
+ listenerTag, flags, workSource, alarmClock, callingUid, callingPackage);
}
@Override
@@ -1184,9 +1256,15 @@
}
@Override
- public void remove(PendingIntent operation) {
- removeImpl(operation);
+ public void remove(PendingIntent operation, IAlarmListener listener) {
+ if (operation == null && listener == null) {
+ Slog.w(TAG, "remove() with no intent or listener");
+ return;
+ }
+ synchronized (mLock) {
+ removeLocked(operation, listener);
+ }
}
@Override
@@ -1697,17 +1775,17 @@
}
}
- private void removeLocked(PendingIntent operation) {
+ private void removeLocked(PendingIntent operation, IAlarmListener directReceiver) {
boolean didRemove = false;
for (int i = mAlarmBatches.size() - 1; i >= 0; i--) {
Batch b = mAlarmBatches.get(i);
- didRemove |= b.remove(operation);
+ didRemove |= b.remove(operation, directReceiver);
if (b.size() == 0) {
mAlarmBatches.remove(i);
}
}
for (int i = mPendingWhileIdleAlarms.size() - 1; i >= 0; i--) {
- if (mPendingWhileIdleAlarms.get(i).operation.equals(operation)) {
+ if (mPendingWhileIdleAlarms.get(i).matches(operation, directReceiver)) {
// Don't set didRemove, since this doesn't impact the scheduled alarms.
mPendingWhileIdleAlarms.remove(i);
}
@@ -1718,11 +1796,11 @@
Slog.v(TAG, "remove(operation) changed bounds; rebatching");
}
boolean restorePending = false;
- if (mPendingIdleUntil != null && mPendingIdleUntil.operation.equals(operation)) {
+ if (mPendingIdleUntil != null && mPendingIdleUntil.matches(operation, directReceiver)) {
mPendingIdleUntil = null;
restorePending = true;
}
- if (mNextWakeFromIdle != null && mNextWakeFromIdle.operation.equals(operation)) {
+ if (mNextWakeFromIdle != null && mNextWakeFromIdle.matches(operation, directReceiver)) {
mNextWakeFromIdle = null;
}
rebatchAllAlarmsLocked(true);
@@ -1743,7 +1821,8 @@
}
}
for (int i = mPendingWhileIdleAlarms.size() - 1; i >= 0; i--) {
- if (mPendingWhileIdleAlarms.get(i).operation.getTargetPackage().equals(packageName)) {
+ final Alarm a = mPendingWhileIdleAlarms.get(i);
+ if (a.matches(packageName)) {
// Don't set didRemove, since this doesn't impact the scheduled alarms.
mPendingWhileIdleAlarms.remove(i);
}
@@ -1769,7 +1848,7 @@
}
}
for (int i = mPendingWhileIdleAlarms.size() - 1; i >= 0; i--) {
- if (UserHandle.getUserId(mPendingWhileIdleAlarms.get(i).operation.getCreatorUid())
+ if (UserHandle.getUserId(mPendingWhileIdleAlarms.get(i).creatorUid)
== userHandle) {
// Don't set didRemove, since this doesn't impact the scheduled alarms.
mPendingWhileIdleAlarms.remove(i);
@@ -1825,7 +1904,8 @@
}
}
for (int i = 0; i < mPendingWhileIdleAlarms.size(); i++) {
- if (mPendingWhileIdleAlarms.get(i).operation.getTargetPackage().equals(packageName)) {
+ final Alarm a = mPendingWhileIdleAlarms.get(i);
+ if (a.matches(packageName)) {
return true;
}
}
@@ -1948,7 +2028,7 @@
triggerList.add(alarm);
if ((alarm.flags&AlarmManager.FLAG_WAKE_FROM_IDLE) != 0) {
EventLogTags.writeDeviceIdleWakeFromIdle(mPendingIdleUntil != null ? 1 : 0,
- alarm.tag);
+ alarm.statsTag);
}
if (mPendingIdleUntil == alarm) {
mPendingIdleUntil = null;
@@ -1972,8 +2052,8 @@
final long nextElapsed = alarm.whenElapsed + delta;
setImplLocked(alarm.type, alarm.when + delta, nextElapsed, alarm.windowLength,
maxTriggerTime(nowELAPSED, nextElapsed, alarm.repeatInterval),
- alarm.repeatInterval, alarm.operation, alarm.flags, true,
- alarm.workSource, alarm.alarmClock, alarm.uid);
+ alarm.repeatInterval, alarm.operation, null, null, alarm.flags, true,
+ alarm.workSource, alarm.alarmClock, alarm.uid, alarm.packageName);
}
if (alarm.wakeup) {
@@ -2024,11 +2104,15 @@
public final long origWhen;
public final boolean wakeup;
public final PendingIntent operation;
- public final String tag;
+ public final IAlarmListener listener;
+ public final String listenerTag;
+ public final String statsTag;
public final WorkSource workSource;
public final int flags;
public final AlarmManager.AlarmClockInfo alarmClock;
public final int uid;
+ public final int creatorUid;
+ public final String packageName;
public int count;
public long when;
public long windowLength;
@@ -2038,8 +2122,9 @@
public PriorityClass priorityClass;
public Alarm(int _type, long _when, long _whenElapsed, long _windowLength, long _maxWhen,
- long _interval, PendingIntent _op, WorkSource _ws, int _flags,
- AlarmManager.AlarmClockInfo _info, int _uid) {
+ long _interval, PendingIntent _op, IAlarmListener _rec, String _listenerTag,
+ WorkSource _ws, int _flags, AlarmManager.AlarmClockInfo _info,
+ int _uid, String _pkgName) {
type = _type;
origWhen = _when;
wakeup = _type == AlarmManager.ELAPSED_REALTIME_WAKEUP
@@ -2050,16 +2135,42 @@
maxWhenElapsed = _maxWhen;
repeatInterval = _interval;
operation = _op;
- tag = makeTag(_op, _type);
+ listener = _rec;
+ listenerTag = _listenerTag;
+ statsTag = makeTag(_op, _listenerTag, _type);
workSource = _ws;
flags = _flags;
alarmClock = _info;
uid = _uid;
+ packageName = _pkgName;
+
+ creatorUid = (operation != null) ? operation.getCreatorUid() : uid;
}
- public static String makeTag(PendingIntent pi, int type) {
- return pi.getTag(type == ELAPSED_REALTIME_WAKEUP || type == RTC_WAKEUP
- ? "*walarm*:" : "*alarm*:");
+ public static String makeTag(PendingIntent pi, String tag, int type) {
+ final String alarmString = type == ELAPSED_REALTIME_WAKEUP || type == RTC_WAKEUP
+ ? "*walarm*:" : "*alarm*:";
+ return (pi != null) ? pi.getTag(alarmString) : (alarmString + tag);
+ }
+
+ public WakeupEvent makeWakeupEvent(long nowRTC) {
+ return new WakeupEvent(nowRTC, creatorUid,
+ (operation != null)
+ ? operation.getIntent().getAction()
+ : ("<listener>:" + listenerTag));
+ }
+
+ // Returns true if either matches
+ public boolean matches(PendingIntent pi, IAlarmListener rec) {
+ return (operation != null)
+ ? operation.equals(pi)
+ : listener.asBinder().equals(rec.asBinder());
+ }
+
+ public boolean matches(String packageName) {
+ return (operation != null)
+ ? packageName.equals(operation.getTargetPackage())
+ : packageName.equals(this.packageName);
}
@Override
@@ -2072,7 +2183,11 @@
sb.append(" when ");
sb.append(when);
sb.append(" ");
- sb.append(operation.getTargetPackage());
+ if (operation != null) {
+ sb.append(operation.getTargetPackage());
+ } else {
+ sb.append(listener.asBinder().toString());
+ }
sb.append('}');
return sb.toString();
}
@@ -2080,14 +2195,15 @@
public void dump(PrintWriter pw, String prefix, long nowRTC, long nowELAPSED,
SimpleDateFormat sdf) {
final boolean isRtc = (type == RTC || type == RTC_WAKEUP);
- pw.print(prefix); pw.print("tag="); pw.println(tag);
+ pw.print(prefix); pw.print("tag="); pw.println(statsTag);
pw.print(prefix); pw.print("type="); pw.print(type);
pw.print(" whenElapsed="); TimeUtils.formatDuration(whenElapsed,
nowELAPSED, pw);
+ pw.print(" when=");
if (isRtc) {
- pw.print(" when="); pw.print(sdf.format(new Date(when)));
+ pw.print(sdf.format(new Date(when)));
} else {
- pw.print(" when="); TimeUtils.formatDuration(when, nowELAPSED, pw);
+ TimeUtils.formatDuration(when, nowELAPSED, pw);
}
pw.println();
pw.print(prefix); pw.print("window="); TimeUtils.formatDuration(windowLength, pw);
@@ -2101,6 +2217,9 @@
pw.print(prefix); pw.print(" showIntent="); pw.println(alarmClock.getShowIntent());
}
pw.print(prefix); pw.print("operation="); pw.println(operation);
+ if (listener != null) {
+ pw.print(prefix); pw.print("listener="); pw.println(listener.asBinder());
+ }
}
}
@@ -2115,10 +2234,7 @@
final int numAlarms = b.alarms.size();
for (int nextAlarm = 0; nextAlarm < numAlarms; nextAlarm++) {
Alarm a = b.alarms.get(nextAlarm);
- WakeupEvent e = new WakeupEvent(nowRTC,
- a.operation.getCreatorUid(),
- a.operation.getIntent().getAction());
- mRecentWakeups.add(e);
+ mRecentWakeups.add(a.makeWakeupEvent(nowRTC));
}
}
}
@@ -2181,80 +2297,14 @@
if (alarm.workSource != null && alarm.workSource.size() > 0) {
for (int wi=0; wi<alarm.workSource.size(); wi++) {
ActivityManagerNative.noteAlarmStart(
- alarm.operation, alarm.workSource.get(wi), alarm.tag);
+ alarm.operation, alarm.workSource.get(wi), alarm.statsTag);
}
} else {
ActivityManagerNative.noteAlarmStart(
- alarm.operation, -1, alarm.tag);
+ alarm.operation, alarm.uid, alarm.statsTag);
}
}
- alarm.operation.send(getContext(), 0,
- mBackgroundIntent.putExtra(
- Intent.EXTRA_ALARM_COUNT, alarm.count),
- mResultReceiver, mHandler, null, allowWhileIdle ? mIdleOptions : null);
-
- // we have an active broadcast so stay awake.
- if (mBroadcastRefCount == 0) {
- setWakelockWorkSource(alarm.operation, alarm.workSource,
- alarm.type, alarm.tag, true);
- mWakeLock.acquire();
- }
- final InFlight inflight = new InFlight(AlarmManagerService.this,
- alarm.operation, alarm.workSource, alarm.type, alarm.tag, nowELAPSED);
- mInFlight.add(inflight);
- mBroadcastRefCount++;
-
- if (allowWhileIdle) {
- // Record the last time this uid handled an ALLOW_WHILE_IDLE alarm.
- mLastAllowWhileIdleDispatch.put(alarm.uid, nowELAPSED);
- if (RECORD_DEVICE_IDLE_ALARMS) {
- IdleDispatchEntry ent = new IdleDispatchEntry();
- ent.uid = alarm.uid;
- ent.pkg = alarm.operation.getCreatorPackage();
- ent.tag = alarm.operation.getTag("");
- ent.op = "DELIVER";
- ent.elapsedRealtime = nowELAPSED;
- mAllowWhileIdleDispatches.add(ent);
- }
- }
-
- final BroadcastStats bs = inflight.mBroadcastStats;
- bs.count++;
- if (bs.nesting == 0) {
- bs.nesting = 1;
- bs.startTime = nowELAPSED;
- } else {
- bs.nesting++;
- }
- final FilterStats fs = inflight.mFilterStats;
- fs.count++;
- if (fs.nesting == 0) {
- fs.nesting = 1;
- fs.startTime = nowELAPSED;
- } else {
- fs.nesting++;
- }
- if (alarm.type == ELAPSED_REALTIME_WAKEUP
- || alarm.type == RTC_WAKEUP) {
- bs.numWakeup++;
- fs.numWakeup++;
- if (alarm.workSource != null && alarm.workSource.size() > 0) {
- for (int wi=0; wi<alarm.workSource.size(); wi++) {
- ActivityManagerNative.noteWakeupAlarm(
- alarm.operation, alarm.workSource.get(wi),
- alarm.workSource.getName(wi), alarm.tag);
- }
- } else {
- ActivityManagerNative.noteWakeupAlarm(
- alarm.operation, -1, null, alarm.tag);
- }
- }
- } catch (PendingIntent.CanceledException e) {
- if (alarm.repeatInterval > 0) {
- // This IntentSender is no longer valid, but this
- // is a repeating alarm, so toss the hoser.
- removeImpl(alarm.operation);
- }
+ mDeliveryTracker.deliverLocked(alarm, nowELAPSED, allowWhileIdle);
} catch (RuntimeException e) {
Slog.w(TAG, "Failure sending alarm.", e);
}
@@ -2384,9 +2434,10 @@
* Attribute blame for a WakeLock.
* @param pi PendingIntent to attribute blame to if ws is null.
* @param ws WorkSource to attribute blame.
+ * @param knownUid attribution uid; < 0 if we need to derive it from the PendingIntent sender
*/
void setWakelockWorkSource(PendingIntent pi, WorkSource ws, int type, String tag,
- boolean first) {
+ int knownUid, boolean first) {
try {
final boolean unimportant = pi == mTimeTickSender;
mWakeLock.setUnimportantForLogging(unimportant);
@@ -2401,8 +2452,9 @@
return;
}
- final int uid = ActivityManagerNative.getDefault()
- .getUidForIntentSender(pi.getTarget());
+ final int uid = (knownUid >= 0)
+ ? knownUid
+ : ActivityManagerNative.getDefault().getUidForIntentSender(pi.getTarget());
if (uid >= 0) {
mWakeLock.setWorkSource(new WorkSource(uid));
return;
@@ -2419,35 +2471,49 @@
public static final int MINUTE_CHANGE_EVENT = 2;
public static final int DATE_CHANGE_EVENT = 3;
public static final int SEND_NEXT_ALARM_CLOCK_CHANGED = 4;
+ public static final int LISTENER_TIMEOUT = 5;
public AlarmHandler() {
}
public void handleMessage(Message msg) {
- if (msg.what == ALARM_EVENT) {
- ArrayList<Alarm> triggerList = new ArrayList<Alarm>();
- synchronized (mLock) {
- final long nowRTC = System.currentTimeMillis();
- final long nowELAPSED = SystemClock.elapsedRealtime();
- triggerAlarmsLocked(triggerList, nowELAPSED, nowRTC);
- updateNextAlarmClockLocked();
- }
+ switch (msg.what) {
+ case ALARM_EVENT: {
+ ArrayList<Alarm> triggerList = new ArrayList<Alarm>();
+ synchronized (mLock) {
+ final long nowRTC = System.currentTimeMillis();
+ final long nowELAPSED = SystemClock.elapsedRealtime();
+ triggerAlarmsLocked(triggerList, nowELAPSED, nowRTC);
+ updateNextAlarmClockLocked();
+ }
- // now trigger the alarms without the lock held
- for (int i=0; i<triggerList.size(); i++) {
- Alarm alarm = triggerList.get(i);
- try {
- alarm.operation.send();
- } catch (PendingIntent.CanceledException e) {
- if (alarm.repeatInterval > 0) {
- // This IntentSender is no longer valid, but this
- // is a repeating alarm, so toss the hoser.
- removeImpl(alarm.operation);
+ // now trigger the alarms without the lock held
+ for (int i=0; i<triggerList.size(); i++) {
+ Alarm alarm = triggerList.get(i);
+ try {
+ alarm.operation.send();
+ } catch (PendingIntent.CanceledException e) {
+ if (alarm.repeatInterval > 0) {
+ // This IntentSender is no longer valid, but this
+ // is a repeating alarm, so toss the hoser.
+ removeImpl(alarm.operation);
+ }
}
}
+ break;
}
- } else if (msg.what == SEND_NEXT_ALARM_CLOCK_CHANGED) {
- sendNextAlarmClockChanged();
+
+ case SEND_NEXT_ALARM_CLOCK_CHANGED:
+ sendNextAlarmClockChanged();
+ break;
+
+ case LISTENER_TIMEOUT:
+ mDeliveryTracker.alarmTimedOut((IBinder) msg.obj);
+ break;
+
+ default:
+ // nope, just ignore it
+ break;
}
}
}
@@ -2489,8 +2555,8 @@
final WorkSource workSource = null; // Let system take blame for time tick events.
setImpl(ELAPSED_REALTIME, SystemClock.elapsedRealtime() + tickEventDelay, 0,
- 0, mTimeTickSender, AlarmManager.FLAG_STANDALONE, workSource, null,
- Process.myUid());
+ 0, mTimeTickSender, null, null, AlarmManager.FLAG_STANDALONE, workSource,
+ null, Process.myUid(), "android");
}
public void scheduleDateChangedEvent() {
@@ -2503,8 +2569,9 @@
calendar.add(Calendar.DAY_OF_MONTH, 1);
final WorkSource workSource = null; // Let system take blame for date change events.
- setImpl(RTC, calendar.getTimeInMillis(), 0, 0, mDateChangeSender,
- AlarmManager.FLAG_STANDALONE, workSource, null, Process.myUid());
+ setImpl(RTC, calendar.getTimeInMillis(), 0, 0, mDateChangeSender, null, null,
+ AlarmManager.FLAG_STANDALONE, workSource, null,
+ Process.myUid(), "android");
}
}
@@ -2602,80 +2669,260 @@
private final BroadcastStats getStatsLocked(PendingIntent pi) {
String pkg = pi.getCreatorPackage();
int uid = pi.getCreatorUid();
+ return getStatsLocked(uid, pkg);
+ }
+
+ private final BroadcastStats getStatsLocked(int uid, String pkgName) {
ArrayMap<String, BroadcastStats> uidStats = mBroadcastStats.get(uid);
if (uidStats == null) {
uidStats = new ArrayMap<String, BroadcastStats>();
mBroadcastStats.put(uid, uidStats);
}
- BroadcastStats bs = uidStats.get(pkg);
+ BroadcastStats bs = uidStats.get(pkgName);
if (bs == null) {
- bs = new BroadcastStats(uid, pkg);
- uidStats.put(pkg, bs);
+ bs = new BroadcastStats(uid, pkgName);
+ uidStats.put(pkgName, bs);
}
return bs;
}
- class ResultReceiver implements PendingIntent.OnFinished {
+ class DeliveryTracker extends IAlarmCompleteListener.Stub implements PendingIntent.OnFinished {
+ private InFlight removeLocked(PendingIntent pi, Intent intent) {
+ for (int i = 0; i < mInFlight.size(); i++) {
+ if (mInFlight.get(i).mPendingIntent == pi) {
+ return mInFlight.remove(i);
+ }
+ }
+ mLog.w("No in-flight alarm for " + pi + " " + intent);
+ return null;
+ }
+
+ private InFlight removeLocked(IBinder listener) {
+ for (int i = 0; i < mInFlight.size(); i++) {
+ if (mInFlight.get(i).mListener == listener) {
+ return mInFlight.remove(i);
+ }
+ }
+ mLog.w("No in-flight alarm for listener " + listener);
+ return null;
+ }
+
+ private void updateStatsLocked(InFlight inflight) {
+ final long nowELAPSED = SystemClock.elapsedRealtime();
+ BroadcastStats bs = inflight.mBroadcastStats;
+ bs.nesting--;
+ if (bs.nesting <= 0) {
+ bs.nesting = 0;
+ bs.aggregateTime += nowELAPSED - bs.startTime;
+ }
+ FilterStats fs = inflight.mFilterStats;
+ fs.nesting--;
+ if (fs.nesting <= 0) {
+ fs.nesting = 0;
+ fs.aggregateTime += nowELAPSED - fs.startTime;
+ }
+ if (RECORD_ALARMS_IN_HISTORY) {
+ if (inflight.mWorkSource != null && inflight.mWorkSource.size() > 0) {
+ for (int wi=0; wi<inflight.mWorkSource.size(); wi++) {
+ ActivityManagerNative.noteAlarmFinish(
+ inflight.mPendingIntent, inflight.mWorkSource.get(wi), inflight.mTag);
+ }
+ } else {
+ ActivityManagerNative.noteAlarmFinish(
+ inflight.mPendingIntent, inflight.mUid, inflight.mTag);
+ }
+ }
+ }
+
+ private void updateTrackingLocked(InFlight inflight) {
+ if (inflight != null) {
+ updateStatsLocked(inflight);
+ }
+ mBroadcastRefCount--;
+ if (mBroadcastRefCount == 0) {
+ mWakeLock.release();
+ if (mInFlight.size() > 0) {
+ mLog.w("Finished all dispatches with " + mInFlight.size()
+ + " remaining inflights");
+ for (int i=0; i<mInFlight.size(); i++) {
+ mLog.w(" Remaining #" + i + ": " + mInFlight.get(i));
+ }
+ mInFlight.clear();
+ }
+ } else {
+ // the next of our alarms is now in flight. reattribute the wakelock.
+ if (mInFlight.size() > 0) {
+ InFlight inFlight = mInFlight.get(0);
+ setWakelockWorkSource(inFlight.mPendingIntent, inFlight.mWorkSource,
+ inFlight.mAlarmType, inFlight.mTag, -1, false);
+ } else {
+ // should never happen
+ mLog.w("Alarm wakelock still held but sent queue empty");
+ mWakeLock.setWorkSource(null);
+ }
+ }
+ }
+
+ /**
+ * Callback that arrives when a direct-call alarm reports that delivery has finished
+ */
+ @Override
+ public void alarmComplete(IBinder who) {
+ if (who == null) {
+ Slog.w(TAG, "Invalid alarmComplete: uid=" + Binder.getCallingUid()
+ + " pid=" + Binder.getCallingPid());
+ return;
+ }
+
+ final long ident = Binder.clearCallingIdentity();
+ try {
+ synchronized (mLock) {
+ mHandler.removeMessages(AlarmHandler.LISTENER_TIMEOUT, who);
+ InFlight inflight = removeLocked(who);
+ if (inflight != null) {
+ if (DEBUG_LISTENER_CALLBACK) {
+ Slog.i(TAG, "alarmComplete() from " + who);
+ }
+ updateTrackingLocked(inflight);
+ } else {
+ // Delivery timed out, and the timeout handling already took care of
+ // updating our tracking here, so we needn't do anything further.
+ if (DEBUG_LISTENER_CALLBACK) {
+ Slog.i(TAG, "Late alarmComplete() from " + who);
+ }
+ }
+ }
+ } finally {
+ Binder.restoreCallingIdentity(ident);
+ }
+ }
+
+ /**
+ * Callback that arrives when a PendingIntent alarm has finished delivery
+ */
+ @Override
public void onSendFinished(PendingIntent pi, Intent intent, int resultCode,
String resultData, Bundle resultExtras) {
synchronized (mLock) {
- InFlight inflight = null;
- for (int i=0; i<mInFlight.size(); i++) {
- if (mInFlight.get(i).mPendingIntent == pi) {
- inflight = mInFlight.remove(i);
- break;
- }
- }
+ updateTrackingLocked(removeLocked(pi, intent));
+ }
+ }
+
+ /**
+ * Timeout of a direct-call alarm delivery
+ */
+ public void alarmTimedOut(IBinder who) {
+ synchronized (mLock) {
+ InFlight inflight = removeLocked(who);
if (inflight != null) {
- final long nowELAPSED = SystemClock.elapsedRealtime();
- BroadcastStats bs = inflight.mBroadcastStats;
- bs.nesting--;
- if (bs.nesting <= 0) {
- bs.nesting = 0;
- bs.aggregateTime += nowELAPSED - bs.startTime;
+ // TODO: implement ANR policy for the target
+ if (DEBUG_LISTENER_CALLBACK) {
+ Slog.i(TAG, "Alarm listener " + who + " timed out in delivery");
}
- FilterStats fs = inflight.mFilterStats;
- fs.nesting--;
- if (fs.nesting <= 0) {
- fs.nesting = 0;
- fs.aggregateTime += nowELAPSED - fs.startTime;
- }
- if (RECORD_ALARMS_IN_HISTORY) {
- if (inflight.mWorkSource != null && inflight.mWorkSource.size() > 0) {
- for (int wi=0; wi<inflight.mWorkSource.size(); wi++) {
- ActivityManagerNative.noteAlarmFinish(
- pi, inflight.mWorkSource.get(wi), inflight.mTag);
- }
- } else {
- ActivityManagerNative.noteAlarmFinish(
- pi, -1, inflight.mTag);
- }
- }
+ updateTrackingLocked(inflight);
} else {
- mLog.w("No in-flight alarm for " + pi + " " + intent);
+ if (DEBUG_LISTENER_CALLBACK) {
+ Slog.i(TAG, "Spurious timeout of listener " + who);
+ }
}
- mBroadcastRefCount--;
- if (mBroadcastRefCount == 0) {
- mWakeLock.release();
- if (mInFlight.size() > 0) {
- mLog.w("Finished all broadcasts with " + mInFlight.size()
- + " remaining inflights");
- for (int i=0; i<mInFlight.size(); i++) {
- mLog.w(" Remaining #" + i + ": " + mInFlight.get(i));
- }
- mInFlight.clear();
+ }
+ }
+
+ /**
+ * Deliver an alarm and set up the post-delivery handling appropriately
+ */
+ public void deliverLocked(Alarm alarm, long nowELAPSED, boolean allowWhileIdle) {
+ if (alarm.operation != null) {
+ // PendingIntent alarm
+ try {
+ alarm.operation.send(getContext(), 0,
+ mBackgroundIntent.putExtra(
+ Intent.EXTRA_ALARM_COUNT, alarm.count),
+ mDeliveryTracker, mHandler, null,
+ allowWhileIdle ? mIdleOptions : null);
+ } catch (PendingIntent.CanceledException e) {
+ if (alarm.repeatInterval > 0) {
+ // This IntentSender is no longer valid, but this
+ // is a repeating alarm, so toss it
+ removeImpl(alarm.operation);
+ }
+ }
+ } else {
+ // Direct listener callback alarm
+ try {
+ if (DEBUG_LISTENER_CALLBACK) {
+ Slog.v(TAG, "Alarm to uid=" + alarm.uid
+ + " listener=" + alarm.listener.asBinder());
+ }
+ alarm.listener.doAlarm(this);
+ mHandler.sendMessageDelayed(
+ mHandler.obtainMessage(AlarmHandler.LISTENER_TIMEOUT,
+ alarm.listener.asBinder()),
+ mConstants.LISTENER_TIMEOUT);
+ } catch (Exception e) {
+ if (DEBUG_LISTENER_CALLBACK) {
+ Slog.i(TAG, "Alarm undeliverable to listener "
+ + alarm.listener.asBinder(), e);
+ }
+ }
+ }
+
+ // The alarm is now in flight; now arrange wakelock and stats tracking
+ if (mBroadcastRefCount == 0) {
+ setWakelockWorkSource(alarm.operation, alarm.workSource,
+ alarm.type, alarm.statsTag, (alarm.operation == null) ? alarm.uid : -1,
+ true);
+ mWakeLock.acquire();
+ }
+ final InFlight inflight = new InFlight(AlarmManagerService.this,
+ alarm.operation, alarm.listener, alarm.workSource, alarm.uid,
+ alarm.packageName, alarm.type, alarm.statsTag, nowELAPSED);
+ mInFlight.add(inflight);
+ mBroadcastRefCount++;
+
+ if (allowWhileIdle) {
+ // Record the last time this uid handled an ALLOW_WHILE_IDLE alarm.
+ mLastAllowWhileIdleDispatch.put(alarm.uid, nowELAPSED);
+ if (RECORD_DEVICE_IDLE_ALARMS) {
+ IdleDispatchEntry ent = new IdleDispatchEntry();
+ ent.uid = alarm.uid;
+ ent.pkg = alarm.packageName;
+ ent.tag = alarm.statsTag;
+ ent.op = "DELIVER";
+ ent.elapsedRealtime = nowELAPSED;
+ mAllowWhileIdleDispatches.add(ent);
+ }
+ }
+
+ final BroadcastStats bs = inflight.mBroadcastStats;
+ bs.count++;
+ if (bs.nesting == 0) {
+ bs.nesting = 1;
+ bs.startTime = nowELAPSED;
+ } else {
+ bs.nesting++;
+ }
+ final FilterStats fs = inflight.mFilterStats;
+ fs.count++;
+ if (fs.nesting == 0) {
+ fs.nesting = 1;
+ fs.startTime = nowELAPSED;
+ } else {
+ fs.nesting++;
+ }
+ if (alarm.type == ELAPSED_REALTIME_WAKEUP
+ || alarm.type == RTC_WAKEUP) {
+ bs.numWakeup++;
+ fs.numWakeup++;
+ if (alarm.workSource != null && alarm.workSource.size() > 0) {
+ for (int wi=0; wi<alarm.workSource.size(); wi++) {
+ ActivityManagerNative.noteWakeupAlarm(
+ alarm.operation, alarm.workSource.get(wi),
+ alarm.workSource.getName(wi), alarm.statsTag);
}
} else {
- // the next of our alarms is now in flight. reattribute the wakelock.
- if (mInFlight.size() > 0) {
- InFlight inFlight = mInFlight.get(0);
- setWakelockWorkSource(inFlight.mPendingIntent, inFlight.mWorkSource,
- inFlight.mAlarmType, inFlight.mTag, false);
- } else {
- // should never happen
- mLog.w("Alarm wakelock still held but sent queue empty");
- mWakeLock.setWorkSource(null);
- }
+ ActivityManagerNative.noteWakeupAlarm(
+ alarm.operation, -1, alarm.packageName, alarm.statsTag);
}
}
}
diff --git a/services/core/java/com/android/server/AppOpsService.java b/services/core/java/com/android/server/AppOpsService.java
index c373fb8..96c1e2a 100644
--- a/services/core/java/com/android/server/AppOpsService.java
+++ b/services/core/java/com/android/server/AppOpsService.java
@@ -39,7 +39,6 @@
import android.content.pm.ApplicationInfo;
import android.content.pm.IPackageManager;
import android.content.pm.PackageManager;
-import android.content.pm.PackageManager.NameNotFoundException;
import android.media.AudioAttributes;
import android.os.AsyncTask;
import android.os.Binder;
@@ -263,12 +262,12 @@
Iterator<Ops> it = pkgs.values().iterator();
while (it.hasNext()) {
Ops ops = it.next();
- int curUid;
+ int curUid = -1;
try {
- curUid = mContext.getPackageManager().getPackageUid(ops.packageName,
+ curUid = AppGlobals.getPackageManager().getPackageUidEtc(ops.packageName,
+ PackageManager.GET_UNINSTALLED_PACKAGES,
UserHandle.getUserId(ops.uidState.uid));
- } catch (NameNotFoundException e) {
- curUid = -1;
+ } catch (RemoteException ignored) {
}
if (curUid != ops.uidState.uid) {
Slog.i(TAG, "Pruning old package " + ops.packageName
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index d5ee5e8..5aab804 100644
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -6527,7 +6527,7 @@
@Override
public void reportSizeConfigurations(IBinder token, int[] horizontalSizeConfiguration,
- int[] verticalSizeConfigurations) {
+ int[] verticalSizeConfigurations, int[] smallestSizeConfigurations) {
if (DEBUG_CONFIGURATION) Slog.v(TAG, "Report configuration: " + token + " "
+ horizontalSizeConfiguration + " " + verticalSizeConfigurations);
synchronized (this) {
@@ -6537,7 +6537,7 @@
+ "found for: " + token);
}
record.setSizeConfigurations(horizontalSizeConfiguration,
- verticalSizeConfigurations);
+ verticalSizeConfigurations, smallestSizeConfigurations);
}
}
@@ -11364,7 +11364,7 @@
}
public void noteWakeupAlarm(IIntentSender sender, int sourceUid, String sourcePkg, String tag) {
- if (!(sender instanceof PendingIntentRecord)) {
+ if (sender != null && !(sender instanceof PendingIntentRecord)) {
return;
}
final PendingIntentRecord rec = (PendingIntentRecord)sender;
@@ -11373,7 +11373,12 @@
if (mBatteryStatsService.isOnBattery()) {
mBatteryStatsService.enforceCallingPermission();
int MY_UID = Binder.getCallingUid();
- int uid = rec.uid == MY_UID ? Process.SYSTEM_UID : rec.uid;
+ final int uid;
+ if (sender == null) {
+ uid = sourceUid;
+ } else {
+ uid = rec.uid == MY_UID ? Process.SYSTEM_UID : rec.uid;
+ }
BatteryStatsImpl.Uid.Pkg pkg =
stats.getPackageStatsLocked(sourceUid >= 0 ? sourceUid : uid,
sourcePkg != null ? sourcePkg : rec.key.packageName);
@@ -11383,7 +11388,7 @@
}
public void noteAlarmStart(IIntentSender sender, int sourceUid, String tag) {
- if (!(sender instanceof PendingIntentRecord)) {
+ if (sender != null && !(sender instanceof PendingIntentRecord)) {
return;
}
final PendingIntentRecord rec = (PendingIntentRecord)sender;
@@ -11391,13 +11396,18 @@
synchronized (stats) {
mBatteryStatsService.enforceCallingPermission();
int MY_UID = Binder.getCallingUid();
- int uid = rec.uid == MY_UID ? Process.SYSTEM_UID : rec.uid;
+ final int uid;
+ if (sender == null) {
+ uid = sourceUid;
+ } else {
+ uid = rec.uid == MY_UID ? Process.SYSTEM_UID : rec.uid;
+ }
mBatteryStatsService.noteAlarmStart(tag, sourceUid >= 0 ? sourceUid : uid);
}
}
public void noteAlarmFinish(IIntentSender sender, int sourceUid, String tag) {
- if (!(sender instanceof PendingIntentRecord)) {
+ if (sender != null && !(sender instanceof PendingIntentRecord)) {
return;
}
final PendingIntentRecord rec = (PendingIntentRecord)sender;
@@ -11405,7 +11415,12 @@
synchronized (stats) {
mBatteryStatsService.enforceCallingPermission();
int MY_UID = Binder.getCallingUid();
- int uid = rec.uid == MY_UID ? Process.SYSTEM_UID : rec.uid;
+ final int uid;
+ if (sender == null) {
+ uid = sourceUid;
+ } else {
+ uid = rec.uid == MY_UID ? Process.SYSTEM_UID : rec.uid;
+ }
mBatteryStatsService.noteAlarmFinish(tag, sourceUid >= 0 ? sourceUid : uid);
}
}
diff --git a/services/core/java/com/android/server/am/ActivityRecord.java b/services/core/java/com/android/server/am/ActivityRecord.java
index 8061a92..76c4f1e 100755
--- a/services/core/java/com/android/server/am/ActivityRecord.java
+++ b/services/core/java/com/android/server/am/ActivityRecord.java
@@ -190,6 +190,7 @@
// and drawable-sw400dp will be added to both as 400.
private int[] mVerticalSizeConfigurations;
private int[] mHorizontalSizeConfigurations;
+ private int[] mSmallestSizeConfigurations;
void dump(PrintWriter pw, String prefix) {
final long now = SystemClock.uptimeMillis();
@@ -342,6 +343,10 @@
return crossesSizeThreshold(mVerticalSizeConfigurations, firstDp, secondDp);
}
+ public boolean crossesSmallestSizeThreshold(int firstDp, int secondDp) {
+ return crossesSizeThreshold(mSmallestSizeConfigurations, firstDp, secondDp);
+ }
+
/**
* The purpose of this method is to decide whether the activity needs to be relaunched upon
* changing its size. In most cases the activities don't need to be relaunched, if the resize
@@ -372,9 +377,10 @@
}
public void setSizeConfigurations(int[] horizontalSizeConfiguration,
- int[] verticalSizeConfigurations) {
+ int[] verticalSizeConfigurations, int[] smallestSizeConfigurations) {
mHorizontalSizeConfigurations = horizontalSizeConfiguration;
mVerticalSizeConfigurations = verticalSizeConfigurations;
+ mSmallestSizeConfigurations = smallestSizeConfigurations;
}
static class Token extends IApplicationToken.Stub {
@@ -868,7 +874,8 @@
if (animationType == ActivityOptions.ANIM_THUMBNAIL_ASPECT_SCALE_DOWN
&& specs != null) {
service.mWindowManager.overridePendingAppTransitionMultiThumb(
- specs, pendingOptions.getOnAnimationStartListener(), false);
+ specs, pendingOptions.getOnAnimationStartListener(),
+ pendingOptions.getAnimationFinishedListener(), false);
} else {
service.mWindowManager.overridePendingAppTransitionAspectScaledThumb(
pendingOptions.getThumbnail(),
diff --git a/services/core/java/com/android/server/am/ActivityStack.java b/services/core/java/com/android/server/am/ActivityStack.java
index 2104830..b5f424d 100644
--- a/services/core/java/com/android/server/am/ActivityStack.java
+++ b/services/core/java/com/android/server/am/ActivityStack.java
@@ -4153,9 +4153,7 @@
if ((taskChanges & ActivityInfo.CONFIG_SMALLEST_SCREEN_SIZE) != 0) {
final int oldSmallest = oldTaskOverride.smallestScreenWidthDp;
final int newSmallest = taskConfig.smallestScreenWidthDp;
- final boolean crosses = record.crossesHorizontalSizeThreshold(oldSmallest, newSmallest)
- || record.crossesVerticalSizeThreshold(oldSmallest, newSmallest);
- if (!crosses) {
+ if (!record.crossesSmallestSizeThreshold(oldSmallest, newSmallest)) {
taskChanges &= ~ActivityInfo.CONFIG_SMALLEST_SCREEN_SIZE;
}
}
diff --git a/services/core/java/com/android/server/audio/AudioService.java b/services/core/java/com/android/server/audio/AudioService.java
index 246ff08..66e731a 100644
--- a/services/core/java/com/android/server/audio/AudioService.java
+++ b/services/core/java/com/android/server/audio/AudioService.java
@@ -280,7 +280,7 @@
0, // STREAM_MUSIC
0, // STREAM_ALARM
0, // STREAM_NOTIFICATION
- 1, // STREAM_BLUETOOTH_SCO
+ 0, // STREAM_BLUETOOTH_SCO
0, // STREAM_SYSTEM_ENFORCED
0, // STREAM_DTMF
0 // STREAM_TTS
@@ -803,7 +803,8 @@
int numStreamTypes = AudioSystem.getNumStreamTypes();
for (int streamType = numStreamTypes - 1; streamType >= 0; streamType--) {
VolumeStreamState streamState = mStreamStates[streamType];
- AudioSystem.initStreamVolume(streamType, 0, (streamState.mIndexMax + 5) / 10);
+ AudioSystem.initStreamVolume(
+ streamType, streamState.mIndexMin / 10, streamState.mIndexMax / 10);
streamState.applyAllVolumes();
}
diff --git a/services/core/java/com/android/server/notification/ManagedServices.java b/services/core/java/com/android/server/notification/ManagedServices.java
index d2a264d..c7551c50 100644
--- a/services/core/java/com/android/server/notification/ManagedServices.java
+++ b/services/core/java/com/android/server/notification/ManagedServices.java
@@ -345,20 +345,21 @@
userId);
if (DEBUG)
Slog.v(TAG, mConfig.serviceInterface + " services: " + installedServices);
+ if (installedServices != null) {
+ for (int i = 0, count = installedServices.size(); i < count; i++) {
+ ResolveInfo resolveInfo = installedServices.get(i);
+ ServiceInfo info = resolveInfo.serviceInfo;
- for (int i = 0, count = installedServices.size(); i < count; i++) {
- ResolveInfo resolveInfo = installedServices.get(i);
- ServiceInfo info = resolveInfo.serviceInfo;
-
- ComponentName component = new ComponentName(info.packageName, info.name);
- if (!mConfig.bindPermission.equals(info.permission)) {
- Slog.w(TAG, "Skipping " + getCaption() + " service "
- + info.packageName + "/" + info.name
- + ": it does not require the permission "
- + mConfig.bindPermission);
- continue;
+ ComponentName component = new ComponentName(info.packageName, info.name);
+ if (!mConfig.bindPermission.equals(info.permission)) {
+ Slog.w(TAG, "Skipping " + getCaption() + " service "
+ + info.packageName + "/" + info.name
+ + ": it does not require the permission "
+ + mConfig.bindPermission);
+ continue;
+ }
+ installed.add(component);
}
- installed.add(component);
}
return installed;
}
diff --git a/services/core/java/com/android/server/notification/NotificationUsageStats.java b/services/core/java/com/android/server/notification/NotificationUsageStats.java
index 0d6e8d6..1cdc6db 100644
--- a/services/core/java/com/android/server/notification/NotificationUsageStats.java
+++ b/services/core/java/com/android/server/notification/NotificationUsageStats.java
@@ -26,6 +26,7 @@
import android.os.HandlerThread;
import android.os.Message;
import android.os.SystemClock;
+import android.text.TextUtils;
import android.util.Log;
import com.android.internal.logging.MetricsLogger;
@@ -41,6 +42,7 @@
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.Map;
+import java.util.Set;
/**
* Keeps track of notification activity, display, and user interaction.
@@ -367,26 +369,37 @@
break;
}
- for (String Key : n.extras.keySet()) {
- if (Notification.EXTRA_BIG_TEXT.equals(key)) {
- numWithBigText++;
- } else if (Notification.EXTRA_PICTURE.equals(key)) {
- numWithBigPicture++;
- } else if (Notification.EXTRA_LARGE_ICON.equals(key)) {
- numWithLargeIcon++;
- } else if (Notification.EXTRA_TEXT_LINES.equals(key)) {
- numWithInbox++;
- } else if (Notification.EXTRA_MEDIA_SESSION.equals(key)) {
- numWithMediaSession++;
- } else if (Notification.EXTRA_TITLE.equals(key)) {
- numWithTitle++;
- } else if (Notification.EXTRA_TEXT.equals(key)) {
- numWithText++;
- } else if (Notification.EXTRA_SUB_TEXT.equals(key)) {
- numWithSubText++;
- } else if (Notification.EXTRA_INFO_TEXT.equals(key)) {
- numWithInfoText++;
- }
+ final Set<String> names = n.extras.keySet();
+ if (names.contains(Notification.EXTRA_BIG_TEXT)) {
+ numWithBigText++;
+ }
+ if (names.contains(Notification.EXTRA_PICTURE)) {
+ numWithBigPicture++;
+ }
+ if (names.contains(Notification.EXTRA_LARGE_ICON)) {
+ numWithLargeIcon++;
+ }
+ if (names.contains(Notification.EXTRA_TEXT_LINES)) {
+ numWithInbox++;
+ }
+ if (names.contains(Notification.EXTRA_MEDIA_SESSION)) {
+ numWithMediaSession++;
+ }
+ if (names.contains(Notification.EXTRA_TITLE) &&
+ !TextUtils.isEmpty(n.extras.getCharSequence(Notification.EXTRA_TITLE))) {
+ numWithTitle++;
+ }
+ if (names.contains(Notification.EXTRA_TEXT) &&
+ !TextUtils.isEmpty(n.extras.getCharSequence(Notification.EXTRA_TEXT))) {
+ numWithText++;
+ }
+ if (names.contains(Notification.EXTRA_SUB_TEXT) &&
+ !TextUtils.isEmpty(n.extras.getCharSequence(Notification.EXTRA_SUB_TEXT))) {
+ numWithSubText++;
+ }
+ if (names.contains(Notification.EXTRA_INFO_TEXT) &&
+ !TextUtils.isEmpty(n.extras.getCharSequence(Notification.EXTRA_INFO_TEXT))) {
+ numWithInfoText++;
}
}
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
index be9f44d..22bedc3 100644
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
@@ -2782,25 +2782,38 @@
@Override
public int getPackageUid(String packageName, int userId) {
+ return getPackageUidEtc(packageName, 0, userId);
+ }
+
+ @Override
+ public int getPackageUidEtc(String packageName, int flags, int userId) {
if (!sUserManager.exists(userId)) return -1;
enforceCrossUserPermission(Binder.getCallingUid(), userId, false, false, "get package uid");
// reader
synchronized (mPackages) {
- PackageParser.Package p = mPackages.get(packageName);
- if(p != null) {
+ final PackageParser.Package p = mPackages.get(packageName);
+ if (p != null) {
return UserHandle.getUid(userId, p.applicationInfo.uid);
}
- PackageSetting ps = mSettings.mPackages.get(packageName);
- if((ps == null) || (ps.pkg == null) || (ps.pkg.applicationInfo == null)) {
- return -1;
+ if ((flags & PackageManager.GET_UNINSTALLED_PACKAGES) != 0) {
+ final PackageSetting ps = mSettings.mPackages.get(packageName);
+ if (ps != null) {
+ return UserHandle.getUid(userId, ps.appId);
+ }
}
- return UserHandle.getUid(userId, ps.pkg.applicationInfo.uid);
}
+
+ return -1;
}
@Override
- public int[] getPackageGids(String packageName, int userId) throws RemoteException {
+ public int[] getPackageGids(String packageName, int userId) {
+ return getPackageGidsEtc(packageName, 0, userId);
+ }
+
+ @Override
+ public int[] getPackageGidsEtc(String packageName, int flags, int userId) {
if (!sUserManager.exists(userId)) {
return null;
}
@@ -2810,14 +2823,17 @@
// reader
synchronized (mPackages) {
- PackageParser.Package p = mPackages.get(packageName);
- if (DEBUG_PACKAGE_INFO) {
- Log.v(TAG, "getPackageGids" + packageName + ": " + p);
- }
+ final PackageParser.Package p = mPackages.get(packageName);
if (p != null) {
PackageSetting ps = (PackageSetting) p.mExtras;
return ps.getPermissionsState().computeGids(userId);
}
+ if ((flags & PackageManager.GET_UNINSTALLED_PACKAGES) != 0) {
+ final PackageSetting ps = mSettings.mPackages.get(packageName);
+ if (ps != null) {
+ return ps.getPermissionsState().computeGids(userId);
+ }
+ }
}
return null;
diff --git a/services/core/java/com/android/server/pm/UserManagerService.java b/services/core/java/com/android/server/pm/UserManagerService.java
index 4dd7388..5d0e83d 100644
--- a/services/core/java/com/android/server/pm/UserManagerService.java
+++ b/services/core/java/com/android/server/pm/UserManagerService.java
@@ -45,6 +45,7 @@
import android.os.Process;
import android.os.RemoteException;
import android.os.ServiceManager;
+import android.os.SystemProperties;
import android.os.UserHandle;
import android.os.UserManager;
import android.os.UserManagerInternal;
@@ -150,11 +151,6 @@
// without first making sure that the rest of the framework is prepared for it.
private static final int MAX_MANAGED_PROFILES = 1;
- /**
- * Flag indicating whether device credentials are shared among same-user profiles.
- */
- private static final boolean CONFIG_PROFILES_SHARE_CREDENTIAL = true;
-
static final int WRITE_USER_MSG = 1;
static final int WRITE_USER_DELAY = 2*1000; // 2 seconds
@@ -390,7 +386,7 @@
@Override
public int getCredentialOwnerProfile(int userHandle) {
checkManageUsersPermission("get the credential owner");
- if (CONFIG_PROFILES_SHARE_CREDENTIAL) {
+ if (!"file".equals(SystemProperties.get("ro.crypto.type", "none"))) {
synchronized (mPackagesLock) {
UserInfo profileParent = getProfileParentLocked(userHandle);
if (profileParent != null) {
diff --git a/services/core/java/com/android/server/wm/AppTransition.java b/services/core/java/com/android/server/wm/AppTransition.java
index eb0ca23..468cf6d 100644
--- a/services/core/java/com/android/server/wm/AppTransition.java
+++ b/services/core/java/com/android/server/wm/AppTransition.java
@@ -160,6 +160,7 @@
// Used for thumbnail transitions. True if we're scaling up, false if scaling down
private boolean mNextAppTransitionScaleUp;
private IRemoteCallback mNextAppTransitionCallback;
+ private IRemoteCallback mAnimationFinishedCallback;
private int mNextAppTransitionEnter;
private int mNextAppTransitionExit;
private int mNextAppTransitionInPlace;
@@ -932,6 +933,22 @@
: new TranslateAnimation(0, fromX, 0, fromY);
set.addAnimation(scale);
set.addAnimation(translation);
+
+ final IRemoteCallback callback = mAnimationFinishedCallback;
+ if (callback != null) {
+ set.setAnimationListener(new Animation.AnimationListener() {
+ @Override
+ public void onAnimationStart(Animation animation) { }
+
+ @Override
+ public void onAnimationEnd(Animation animation) {
+ mH.obtainMessage(H.DO_ANIMATION_CALLBACK, callback).sendToTarget();
+ }
+
+ @Override
+ public void onAnimationRepeat(Animation animation) { }
+ });
+ }
return set;
}
@@ -1356,7 +1373,8 @@
}
public void overridePendingAppTransitionMultiThumb(AppTransitionAnimationSpec[] specs,
- IRemoteCallback callback, boolean scaleUp) {
+ IRemoteCallback onAnimationStartedCallback, IRemoteCallback onAnimationFinishedCallback,
+ boolean scaleUp) {
if (isTransitionSet()) {
mNextAppTransitionType = scaleUp ? NEXT_TRANSIT_TYPE_THUMBNAIL_ASPECT_SCALE_UP
: NEXT_TRANSIT_TYPE_THUMBNAIL_ASPECT_SCALE_DOWN;
@@ -1378,7 +1396,8 @@
}
}
postAnimationCallback();
- mNextAppTransitionCallback = callback;
+ mNextAppTransitionCallback = onAnimationStartedCallback;
+ mAnimationFinishedCallback = onAnimationFinishedCallback;
} else {
postAnimationCallback();
}
diff --git a/services/core/java/com/android/server/wm/InputMonitor.java b/services/core/java/com/android/server/wm/InputMonitor.java
index 5f911c3..f999402 100644
--- a/services/core/java/com/android/server/wm/InputMonitor.java
+++ b/services/core/java/com/android/server/wm/InputMonitor.java
@@ -19,7 +19,7 @@
import static android.view.WindowManager.LayoutParams.TYPE_DOCK_DIVIDER;
import static com.android.server.wm.WindowManagerService.DEBUG_FOCUS_LIGHT;
import static com.android.server.wm.WindowManagerService.DEBUG_INPUT;
-import static com.android.server.wm.WindowState.BOUNDS_FOR_TOUCH;
+
import android.app.ActivityManagerNative;
import android.graphics.Rect;
import android.os.RemoteException;
@@ -62,8 +62,6 @@
private final Object mInputDevicesReadyMonitor = new Object();
private boolean mInputDevicesReady;
- Rect mTmpRect = new Rect();
-
public InputMonitor(WindowManagerService service) {
mService = service;
}
@@ -176,27 +174,7 @@
final boolean hasFocus, final boolean hasWallpaper, DisplayContent displayContent) {
// Add a window to our list of input windows.
inputWindowHandle.name = child.toString();
- final boolean modal = (flags & (WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
- | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE)) == 0;
- if (modal && child.mAppToken != null) {
- // Limit the outer touch to the activity stack region.
- flags |= WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL;
- // If this is a modal window we need to dismiss it if it's not full screen and the touch
- // happens outside of the frame that displays the content. This means we need to
- // intercept touches outside of that window. The dim layer user associated with the
- // window (task or stack) will give us the good bounds, as they would be used to display
- // the dim layer.
- final DimLayer.DimLayerUser dimLayerUser = child.getDimLayerUser();
- if (dimLayerUser != null) {
- dimLayerUser.getBounds(mTmpRect);
- } else {
- child.getVisibleBounds(mTmpRect, BOUNDS_FOR_TOUCH);
- }
- inputWindowHandle.touchableRegion.set(mTmpRect);
- } else {
- // Not modal or full screen modal
- child.getTouchableRegion(inputWindowHandle.touchableRegion);
- }
+ flags = child.getTouchableRegion(inputWindowHandle.touchableRegion, flags, this);
inputWindowHandle.layoutParamsFlags = flags;
inputWindowHandle.layoutParamsType = type;
inputWindowHandle.dispatchingTimeoutNanos = child.getInputDispatchingTimeoutNanos();
diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java
index 140fbaf..75680a0 100644
--- a/services/core/java/com/android/server/wm/WindowManagerService.java
+++ b/services/core/java/com/android/server/wm/WindowManagerService.java
@@ -3637,9 +3637,11 @@
@Override
public void overridePendingAppTransitionMultiThumb(AppTransitionAnimationSpec[] specs,
- IRemoteCallback callback, boolean scaleUp) {
+ IRemoteCallback onAnimationStartedCallback, IRemoteCallback onAnimationFinishedCallback,
+ boolean scaleUp) {
synchronized (mWindowMap) {
- mAppTransition.overridePendingAppTransitionMultiThumb(specs, callback, scaleUp);
+ mAppTransition.overridePendingAppTransitionMultiThumb(specs, onAnimationStartedCallback,
+ onAnimationFinishedCallback, scaleUp);
}
}
diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java
index 1d2cb75..5bc329e 100644
--- a/services/core/java/com/android/server/wm/WindowState.java
+++ b/services/core/java/com/android/server/wm/WindowState.java
@@ -1336,6 +1336,37 @@
return mAppToken != null && mAppToken.mTask != null && mAppToken.mTask.inDockedWorkspace();
}
+ int getTouchableRegion(Region region, int flags, InputMonitor inputMonitor) {
+ final boolean modal = (flags & (WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
+ | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE)) == 0;
+ if (modal && mAppToken != null) {
+ // Limit the outer touch to the activity stack region.
+ flags |= WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL;
+ if (!inFreeformWorkspace()) {
+ // If this is a modal window we need to dismiss it if it's not full screen and the
+ // touch happens outside of the frame that displays the content. This means we
+ // need to intercept touches outside of that window. The dim layer user
+ // associated with the window (task or stack) will give us the good bounds, as
+ // they would be used to display the dim layer.
+ final DimLayer.DimLayerUser dimLayerUser = getDimLayerUser();
+ if (dimLayerUser != null) {
+ dimLayerUser.getBounds(mTmpRect);
+ } else {
+ getVisibleBounds(mTmpRect, BOUNDS_FOR_TOUCH);
+ }
+ } else {
+ // For freeform windows we the touch region to include the whole surface for the
+ // shadows.
+ getVisibleBounds(mTmpRect, BOUNDS_FOR_TOUCH);
+ }
+ region.set(mTmpRect);
+ } else {
+ // Not modal or full screen modal
+ getTouchableRegion(region);
+ }
+ return flags;
+ }
+
private class DeathRecipient implements IBinder.DeathRecipient {
@Override
public void binderDied() {
diff --git a/services/core/java/com/android/server/wm/WindowStateAnimator.java b/services/core/java/com/android/server/wm/WindowStateAnimator.java
index 80f1094..aa242f1 100644
--- a/services/core/java/com/android/server/wm/WindowStateAnimator.java
+++ b/services/core/java/com/android/server/wm/WindowStateAnimator.java
@@ -282,9 +282,8 @@
}
mTransformation.clear();
final boolean more = mAnimation.getTransformation(currentTime, mTransformation);
- if (false && DEBUG_ANIM) Slog.v(
- TAG, "Stepped animation in " + this +
- ": more=" + more + ", xform=" + mTransformation);
+ if (false && DEBUG_ANIM) Slog.v(TAG, "Stepped animation in " + this + ": more=" + more
+ + ", xform=" + mTransformation);
return more;
}
diff --git a/services/tests/servicestests/src/com/android/server/NetworkStatsServiceTest.java b/services/tests/servicestests/src/com/android/server/NetworkStatsServiceTest.java
index 90b4f43..c12f978 100644
--- a/services/tests/servicestests/src/com/android/server/NetworkStatsServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/NetworkStatsServiceTest.java
@@ -876,11 +876,12 @@
}
private void expectSystemReady() throws Exception {
- mAlarmManager.remove(isA(PendingIntent.class));
+ mAlarmManager.remove(isA(PendingIntent.class), null);
expectLastCall().anyTimes();
- mAlarmManager.set(eq(AlarmManager.ELAPSED_REALTIME), anyLong(), anyLong(), anyLong(),
- anyInt(), isA(PendingIntent.class), isA(WorkSource.class),
+ mAlarmManager.set(getContext().getPackageName(),
+ eq(AlarmManager.ELAPSED_REALTIME), anyLong(), anyLong(), anyLong(),
+ anyInt(), isA(PendingIntent.class), null, null, isA(WorkSource.class),
isA(AlarmManager.AlarmClockInfo.class));
expectLastCall().atLeastOnce();
diff --git a/tools/aapt2/JavaClassGenerator_test.cpp b/tools/aapt2/JavaClassGenerator_test.cpp
index becf99b..cc5e981 100644
--- a/tools/aapt2/JavaClassGenerator_test.cpp
+++ b/tools/aapt2/JavaClassGenerator_test.cpp
@@ -105,11 +105,9 @@
.addSimple(u"@android:id/one", ResourceId(0x01020000))
.addSimple(u"@android:id/two", ResourceId(0x01020001))
.addSimple(u"@android:id/three", ResourceId(0x01020002))
+ .setSymbolState(u"@android:id/one", ResourceId(0x01020000), SymbolState::kPublic)
+ .setSymbolState(u"@android:id/two", ResourceId(0x01020001), SymbolState::kPrivate)
.build();
- ASSERT_TRUE(table->setSymbolState(test::parseNameOrDie(u"@android:id/one"), {}, {},
- SymbolState::kPublic, &diag));
- ASSERT_TRUE(table->setSymbolState(test::parseNameOrDie(u"@android:id/two"), {}, {},
- SymbolState::kPrivate, &diag));
JavaClassGeneratorOptions options;
options.types = JavaClassGeneratorOptions::SymbolTypes::kPublic;
diff --git a/tools/aapt2/ResourceParser.cpp b/tools/aapt2/ResourceParser.cpp
index bfef9d0..44710eb 100644
--- a/tools/aapt2/ResourceParser.cpp
+++ b/tools/aapt2/ResourceParser.cpp
@@ -186,6 +186,7 @@
Source source;
ResourceId id;
SymbolState symbolState = SymbolState::kUndefined;
+ std::u16string comment;
std::unique_ptr<Value> value;
std::list<ParsedResource> childResources;
};
@@ -194,7 +195,11 @@
static bool addResourcesToTable(ResourceTable* table, const ConfigDescription& config,
IDiagnostics* diag, ParsedResource* res) {
if (res->symbolState != SymbolState::kUndefined) {
- if (!table->setSymbolState(res->name, res->id, res->source, res->symbolState, diag)) {
+ Symbol symbol;
+ symbol.state = res->symbolState;
+ symbol.source = res->source;
+ symbol.comment = res->comment;
+ if (!table->setSymbolState(res->name, res->id, symbol, diag)) {
return false;
}
}
@@ -203,7 +208,11 @@
return true;
}
- if (!table->addResource(res->name, res->id, config, res->source, std::move(res->value), diag)) {
+ // Attach the comment, source and config to the value.
+ res->value->setComment(std::move(res->comment));
+ res->value->setSource(std::move(res->source));
+
+ if (!table->addResource(res->name, res->id, config, std::move(res->value), diag)) {
return false;
}
@@ -275,6 +284,7 @@
ParsedResource parsedResource;
parsedResource.name.entry = maybeName.value().toString();
parsedResource.source = mSource.withLine(parser->getLineNumber());
+ parsedResource.comment = std::move(comment);
bool result = true;
if (elementName == u"id") {
@@ -368,8 +378,8 @@
* an Item. If allowRawValue is false, nullptr is returned in this
* case.
*/
-std::unique_ptr<Item> ResourceParser::parseXml(XmlPullParser* parser, uint32_t typeMask,
- bool allowRawValue) {
+std::unique_ptr<Item> ResourceParser::parseXml(XmlPullParser* parser, const uint32_t typeMask,
+ const bool allowRawValue) {
const size_t beginXmlLine = parser->getLineNumber();
std::u16string rawValue;
@@ -386,8 +396,9 @@
auto onCreateReference = [&](const ResourceName& name) {
// name.package can be empty here, as it will assume the package name of the table.
- mTable->addResource(name, {}, mSource.withLine(beginXmlLine), util::make_unique<Id>(),
- mDiag);
+ std::unique_ptr<Id> id = util::make_unique<Id>();
+ id->setSource(mSource.withLine(beginXmlLine));
+ mTable->addResource(name, {}, std::move(id), mDiag);
};
// Process the raw value.
@@ -411,11 +422,12 @@
mTable->stringPool.makeRef(styleString.str, StringPool::Context{ 1, mConfig }));
}
- // We can't parse this so return a RawString if we are allowed.
if (allowRawValue) {
+ // We can't parse this so return a RawString if we are allowed.
return util::make_unique<RawString>(
mTable->stringPool.makeRef(rawValue, StringPool::Context{ 1, mConfig }));
}
+
return {};
}
@@ -683,8 +695,8 @@
}
return Attribute::Symbol{
- Reference(ResourceName{ {}, ResourceType::kId, maybeName.value().toString() }),
- val.data };
+ Reference(ResourceName({}, ResourceType::kId, maybeName.value().toString())),
+ val.data };
}
static Maybe<ResourceName> parseXmlAttributeName(StringPiece16 str) {
diff --git a/tools/aapt2/ResourceParser.h b/tools/aapt2/ResourceParser.h
index 34c68d7..2d5a29d 100644
--- a/tools/aapt2/ResourceParser.h
+++ b/tools/aapt2/ResourceParser.h
@@ -65,12 +65,13 @@
StyleString* outStyleString);
/*
- * Parses the XML subtree and converts it to an Item. The type of Item that can be
- * parsed is denoted by the `typeMask`. If `allowRawValue` is true and the subtree
- * can not be parsed as a regular Item, then a RawString is returned. Otherwise
- * this returns nullptr.
+ * Parses the XML subtree and returns an Item.
+ * The type of Item that can be parsed is denoted by the `typeMask`.
+ * If `allowRawValue` is true and the subtree can not be parsed as a regular Item, then a
+ * RawString is returned. Otherwise this returns false;
*/
- std::unique_ptr<Item> parseXml(XmlPullParser* parser, uint32_t typeMask, bool allowRawValue);
+ std::unique_ptr<Item> parseXml(XmlPullParser* parser, const uint32_t typeMask,
+ const bool allowRawValue);
bool parseResources(XmlPullParser* parser);
bool parseString(XmlPullParser* parser, ParsedResource* outResource);
diff --git a/tools/aapt2/ResourceParser_test.cpp b/tools/aapt2/ResourceParser_test.cpp
index a7e9d39..af6bf67 100644
--- a/tools/aapt2/ResourceParser_test.cpp
+++ b/tools/aapt2/ResourceParser_test.cpp
@@ -379,18 +379,39 @@
}
TEST_F(ResourceParserTest, ParseCommentsWithResource) {
- std::string input = "<!-- This is a comment -->\n"
+ std::string input = "<!--This is a comment-->\n"
"<string name=\"foo\">Hi</string>";
ASSERT_TRUE(testParse(input));
- Maybe<ResourceTable::SearchResult> result = mTable.findResource(
- test::parseNameOrDie(u"@string/foo"));
- AAPT_ASSERT_TRUE(result);
+ String* value = test::getValue<String>(&mTable, u"@string/foo");
+ ASSERT_NE(nullptr, value);
+ EXPECT_EQ(value->getComment(), u"This is a comment");
+}
- ResourceEntry* entry = result.value().entry;
- ASSERT_NE(entry, nullptr);
- ASSERT_FALSE(entry->values.empty());
- EXPECT_EQ(entry->values.front().comment, u"This is a comment");
+TEST_F(ResourceParserTest, DoNotCombineMultipleComments) {
+ std::string input = "<!--One-->\n"
+ "<!--Two-->\n"
+ "<string name=\"foo\">Hi</string>";
+
+ ASSERT_TRUE(testParse(input));
+
+ String* value = test::getValue<String>(&mTable, u"@string/foo");
+ ASSERT_NE(nullptr, value);
+ EXPECT_EQ(value->getComment(), u"Two");
+}
+
+TEST_F(ResourceParserTest, IgnoreCommentBeforeEndTag) {
+ std::string input = "<!--One-->\n"
+ "<string name=\"foo\">\n"
+ " Hi\n"
+ "<!--Two-->\n"
+ "</string>";
+
+ ASSERT_TRUE(testParse(input));
+
+ String* value = test::getValue<String>(&mTable, u"@string/foo");
+ ASSERT_NE(nullptr, value);
+ EXPECT_EQ(value->getComment(), u"One");
}
/*
diff --git a/tools/aapt2/ResourceTable.cpp b/tools/aapt2/ResourceTable.cpp
index 84674e8..fa4b109 100644
--- a/tools/aapt2/ResourceTable.cpp
+++ b/tools/aapt2/ResourceTable.cpp
@@ -19,6 +19,8 @@
#include "ResourceTable.h"
#include "ResourceValues.h"
#include "ValueVisitor.h"
+
+#include "util/Comparators.h"
#include "util/Util.h"
#include <algorithm>
@@ -29,10 +31,6 @@
namespace aapt {
-static bool compareConfigs(const ResourceConfigValue& lhs, const ConfigDescription& rhs) {
- return lhs.config < rhs;
-}
-
static bool lessThanType(const std::unique_ptr<ResourceTableType>& lhs, ResourceType rhs) {
return lhs->type < rhs;
}
@@ -191,52 +189,50 @@
static constexpr const char16_t* kValidNameMangledChars = u"._-$";
bool ResourceTable::addResource(const ResourceNameRef& name, const ConfigDescription& config,
- const Source& source, std::unique_ptr<Value> value,
- IDiagnostics* diag) {
- return addResourceImpl(name, ResourceId{}, config, source, std::move(value), kValidNameChars,
- diag);
+ std::unique_ptr<Value> value, IDiagnostics* diag) {
+ return addResourceImpl(name, {}, config, std::move(value), kValidNameChars, diag);
}
bool ResourceTable::addResource(const ResourceNameRef& name, const ResourceId resId,
- const ConfigDescription& config, const Source& source,
- std::unique_ptr<Value> value, IDiagnostics* diag) {
- return addResourceImpl(name, resId, config, source, std::move(value), kValidNameChars, diag);
+ const ConfigDescription& config, std::unique_ptr<Value> value,
+ IDiagnostics* diag) {
+ return addResourceImpl(name, resId, config, std::move(value), kValidNameChars, diag);
}
bool ResourceTable::addFileReference(const ResourceNameRef& name, const ConfigDescription& config,
const Source& source, const StringPiece16& path,
IDiagnostics* diag) {
- return addResourceImpl(name, ResourceId{}, config, source,
- util::make_unique<FileReference>(stringPool.makeRef(path)),
- kValidNameChars, diag);
+ std::unique_ptr<FileReference> fileRef = util::make_unique<FileReference>(
+ stringPool.makeRef(path));
+ fileRef->setSource(source);
+ return addResourceImpl(name, ResourceId{}, config, std::move(fileRef), kValidNameChars, diag);
}
bool ResourceTable::addResourceAllowMangled(const ResourceNameRef& name,
const ConfigDescription& config,
- const Source& source,
std::unique_ptr<Value> value,
IDiagnostics* diag) {
- return addResourceImpl(name, ResourceId{}, config, source, std::move(value),
- kValidNameMangledChars, diag);
+ return addResourceImpl(name, ResourceId{}, config, std::move(value), kValidNameMangledChars,
+ diag);
}
bool ResourceTable::addResourceAllowMangled(const ResourceNameRef& name,
const ResourceId id,
const ConfigDescription& config,
- const Source& source,
std::unique_ptr<Value> value,
IDiagnostics* diag) {
- return addResourceImpl(name, id, config, source, std::move(value),
- kValidNameMangledChars, diag);
+ return addResourceImpl(name, id, config, std::move(value), kValidNameMangledChars, diag);
}
bool ResourceTable::addResourceImpl(const ResourceNameRef& name, const ResourceId resId,
- const ConfigDescription& config, const Source& source,
- std::unique_ptr<Value> value, const char16_t* validChars,
- IDiagnostics* diag) {
+ const ConfigDescription& config, std::unique_ptr<Value> value,
+ const char16_t* validChars, IDiagnostics* diag) {
+ assert(value && "value can't be nullptr");
+ assert(diag && "diagnostics can't be nullptr");
+
auto badCharIter = util::findNonAlphaNumericAndNotInSet(name.entry, validChars);
if (badCharIter != name.entry.end()) {
- diag->error(DiagMessage(source)
+ diag->error(DiagMessage(value->getSource())
<< "resource '"
<< name
<< "' has invalid entry name '"
@@ -249,7 +245,7 @@
ResourceTablePackage* package = findOrCreatePackage(name.package);
if (resId.isValid() && package->id && package->id.value() != resId.packageId()) {
- diag->error(DiagMessage(source)
+ diag->error(DiagMessage(value->getSource())
<< "trying to add resource '"
<< name
<< "' with ID "
@@ -263,7 +259,7 @@
ResourceTableType* type = package->findOrCreateType(name.type);
if (resId.isValid() && type->id && type->id.value() != resId.typeId()) {
- diag->error(DiagMessage(source)
+ diag->error(DiagMessage(value->getSource())
<< "trying to add resource '"
<< name
<< "' with ID "
@@ -277,7 +273,7 @@
ResourceEntry* entry = type->findOrCreateEntry(name.entry);
if (resId.isValid() && entry->id && entry->id.value() != resId.entryId()) {
- diag->error(DiagMessage(source)
+ diag->error(DiagMessage(value->getSource())
<< "trying to add resource '"
<< name
<< "' with ID "
@@ -288,20 +284,20 @@
}
const auto endIter = entry->values.end();
- auto iter = std::lower_bound(entry->values.begin(), endIter, config, compareConfigs);
+ auto iter = std::lower_bound(entry->values.begin(), endIter, config, cmp::lessThan);
if (iter == endIter || iter->config != config) {
// This resource did not exist before, add it.
- entry->values.insert(iter, ResourceConfigValue{ config, source, {}, std::move(value) });
+ entry->values.insert(iter, ResourceConfigValue{ config, std::move(value) });
} else {
int collisionResult = resolveValueCollision(iter->value.get(), value.get());
if (collisionResult > 0) {
// Take the incoming value.
- *iter = ResourceConfigValue{ config, source, {}, std::move(value) };
+ iter->value = std::move(value);
} else if (collisionResult == 0) {
- diag->error(DiagMessage(source)
+ diag->error(DiagMessage(value->getSource())
<< "duplicate value for resource '" << name << "' "
- << "with config '" << iter->config << "'");
- diag->error(DiagMessage(iter->source)
+ << "with config '" << config << "'");
+ diag->error(DiagMessage(iter->value->getSource())
<< "resource previously defined here");
return false;
}
@@ -316,27 +312,29 @@
}
bool ResourceTable::setSymbolState(const ResourceNameRef& name, const ResourceId resId,
- const Source& source, SymbolState state, IDiagnostics* diag) {
- return setSymbolStateImpl(name, resId, source, state, kValidNameChars, diag);
+ const Symbol& symbol, IDiagnostics* diag) {
+ return setSymbolStateImpl(name, resId, symbol, kValidNameChars, diag);
}
-bool ResourceTable::setSymbolStateAllowMangled(const ResourceNameRef& name, const ResourceId resId,
- const Source& source, SymbolState state,
- IDiagnostics* diag) {
- return setSymbolStateImpl(name, resId, source, state, kValidNameMangledChars, diag);
+bool ResourceTable::setSymbolStateAllowMangled(const ResourceNameRef& name,
+ const ResourceId resId,
+ const Symbol& symbol, IDiagnostics* diag) {
+ return setSymbolStateImpl(name, resId, symbol, kValidNameMangledChars, diag);
}
bool ResourceTable::setSymbolStateImpl(const ResourceNameRef& name, const ResourceId resId,
- const Source& source, SymbolState state,
- const char16_t* validChars, IDiagnostics* diag) {
- if (state == SymbolState::kUndefined) {
+ const Symbol& symbol, const char16_t* validChars,
+ IDiagnostics* diag) {
+ assert(diag && "diagnostics can't be nullptr");
+
+ if (symbol.state == SymbolState::kUndefined) {
// Nothing to do.
return true;
}
auto badCharIter = util::findNonAlphaNumericAndNotInSet(name.entry, validChars);
if (badCharIter != name.entry.end()) {
- diag->error(DiagMessage(source)
+ diag->error(DiagMessage(symbol.source)
<< "resource '"
<< name
<< "' has invalid entry name '"
@@ -349,7 +347,7 @@
ResourceTablePackage* package = findOrCreatePackage(name.package);
if (resId.isValid() && package->id && package->id.value() != resId.packageId()) {
- diag->error(DiagMessage(source)
+ diag->error(DiagMessage(symbol.source)
<< "trying to add resource '"
<< name
<< "' with ID "
@@ -363,7 +361,7 @@
ResourceTableType* type = package->findOrCreateType(name.type);
if (resId.isValid() && type->id && type->id.value() != resId.typeId()) {
- diag->error(DiagMessage(source)
+ diag->error(DiagMessage(symbol.source)
<< "trying to add resource '"
<< name
<< "' with ID "
@@ -377,7 +375,7 @@
ResourceEntry* entry = type->findOrCreateEntry(name.entry);
if (resId.isValid() && entry->id && entry->id.value() != resId.entryId()) {
- diag->error(DiagMessage(source)
+ diag->error(DiagMessage(symbol.source)
<< "trying to add resource '"
<< name
<< "' with ID "
@@ -388,15 +386,14 @@
}
// Only mark the type state as public, it doesn't care about being private.
- if (state == SymbolState::kPublic) {
+ if (symbol.state == SymbolState::kPublic) {
type->symbolStatus.state = SymbolState::kPublic;
}
// Downgrading to a private symbol from a public one is not allowed.
if (entry->symbolStatus.state != SymbolState::kPublic) {
- if (entry->symbolStatus.state != state) {
- entry->symbolStatus.state = state;
- entry->symbolStatus.source = source;
+ if (entry->symbolStatus.state != symbol.state) {
+ entry->symbolStatus = std::move(symbol);
}
}
diff --git a/tools/aapt2/ResourceTable.h b/tools/aapt2/ResourceTable.h
index be90936..980504b 100644
--- a/tools/aapt2/ResourceTable.h
+++ b/tools/aapt2/ResourceTable.h
@@ -47,12 +47,10 @@
};
/**
- * The resource value for a specific configuration.
+ * Represents a value defined for a given configuration.
*/
struct ResourceConfigValue {
ConfigDescription config;
- Source source;
- std::u16string comment;
std::unique_ptr<Value> value;
};
@@ -158,12 +156,11 @@
static int resolveValueCollision(Value* existing, Value* incoming);
bool addResource(const ResourceNameRef& name, const ConfigDescription& config,
- const Source& source, std::unique_ptr<Value> value,
- IDiagnostics* diag);
+ std::unique_ptr<Value> value, IDiagnostics* diag);
bool addResource(const ResourceNameRef& name, const ResourceId resId,
- const ConfigDescription& config, const Source& source,
- std::unique_ptr<Value> value, IDiagnostics* diag);
+ const ConfigDescription& config, std::unique_ptr<Value> value,
+ IDiagnostics* diag);
bool addFileReference(const ResourceNameRef& name, const ConfigDescription& config,
const Source& source, const StringPiece16& path, IDiagnostics* diag);
@@ -174,18 +171,18 @@
* names.
*/
bool addResourceAllowMangled(const ResourceNameRef& name, const ConfigDescription& config,
- const Source& source, std::unique_ptr<Value> value,
- IDiagnostics* diag);
+ std::unique_ptr<Value> value, IDiagnostics* diag);
bool addResourceAllowMangled(const ResourceNameRef& name, const ResourceId id,
- const ConfigDescription& config,
- const Source& source, std::unique_ptr<Value> value,
+ const ConfigDescription& config, std::unique_ptr<Value> value,
IDiagnostics* diag);
- bool setSymbolState(const ResourceNameRef& name, const ResourceId resId, const Source& source,
- SymbolState state, IDiagnostics* diag);
+ bool setSymbolState(const ResourceNameRef& name, const ResourceId resId,
+ const Symbol& symbol, IDiagnostics* diag);
+
bool setSymbolStateAllowMangled(const ResourceNameRef& name, const ResourceId resId,
- const Source& source, SymbolState state, IDiagnostics* diag);
+ const Symbol& symbol, IDiagnostics* diag);
+
struct SearchResult {
ResourceTablePackage* package;
ResourceTableType* type;
@@ -224,13 +221,11 @@
private:
ResourceTablePackage* findOrCreatePackage(const StringPiece16& name);
- bool addResourceImpl(const ResourceNameRef& name, const ResourceId resId,
- const ConfigDescription& config, const Source& source,
- std::unique_ptr<Value> value, const char16_t* validChars,
- IDiagnostics* diag);
- bool setSymbolStateImpl(const ResourceNameRef& name, const ResourceId resId,
- const Source& source, SymbolState state, const char16_t* validChars,
- IDiagnostics* diag);
+ bool addResourceImpl(const ResourceNameRef& name, ResourceId resId,
+ const ConfigDescription& config, std::unique_ptr<Value> value,
+ const char16_t* validChars, IDiagnostics* diag);
+ bool setSymbolStateImpl(const ResourceNameRef& name, ResourceId resId,
+ const Symbol& symbol, const char16_t* validChars, IDiagnostics* diag);
};
} // namespace aapt
diff --git a/tools/aapt2/ResourceTable_test.cpp b/tools/aapt2/ResourceTable_test.cpp
index 2055a80..42508fe 100644
--- a/tools/aapt2/ResourceTable_test.cpp
+++ b/tools/aapt2/ResourceTable_test.cpp
@@ -19,7 +19,7 @@
#include "ResourceValues.h"
#include "util/Util.h"
-#include "test/Common.h"
+#include "test/Builders.h"
#include <algorithm>
#include <gtest/gtest.h>
@@ -42,22 +42,26 @@
ResourceTable table;
EXPECT_FALSE(table.addResource(
- ResourceNameRef{ u"android", ResourceType::kId, u"hey,there" },
- {}, Source{ "test.xml", 21 },
- util::make_unique<Id>(), &mDiagnostics));
+ ResourceNameRef(u"android", ResourceType::kId, u"hey,there"),
+ ConfigDescription{},
+ test::ValueBuilder<Id>().setSource("test.xml", 21u).build(),
+ &mDiagnostics));
EXPECT_FALSE(table.addResource(
- ResourceNameRef{ u"android", ResourceType::kId, u"hey:there" },
- {}, Source{ "test.xml", 21 },
- util::make_unique<Id>(), &mDiagnostics));
+ ResourceNameRef(u"android", ResourceType::kId, u"hey:there"),
+ ConfigDescription{},
+ test::ValueBuilder<Id>().setSource("test.xml", 21u).build(),
+ &mDiagnostics));
}
TEST_F(ResourceTableTest, AddOneResource) {
ResourceTable table;
- EXPECT_TRUE(table.addResource(test::parseNameOrDie(u"@android:attr/id"), {},
- Source{ "test/path/file.xml", 23 },
- util::make_unique<Id>(), &mDiagnostics));
+ EXPECT_TRUE(table.addResource(test::parseNameOrDie(u"@android:attr/id"),
+ ConfigDescription{},
+ test::ValueBuilder<Id>()
+ .setSource("test/path/file.xml", 23u).build(),
+ &mDiagnostics));
ASSERT_NE(nullptr, test::getValue<Id>(&table, u"@android:attr/id"));
}
@@ -71,23 +75,29 @@
EXPECT_TRUE(table.addResource(
test::parseNameOrDie(u"@android:attr/layout_width"),
- config, Source{ "test/path/file.xml", 10 },
- util::make_unique<Id>(), &mDiagnostics));
+ config,
+ test::ValueBuilder<Id>().setSource("test/path/file.xml", 10u).build(),
+ &mDiagnostics));
EXPECT_TRUE(table.addResource(
test::parseNameOrDie(u"@android:attr/id"),
- config, Source{ "test/path/file.xml", 12 },
- util::make_unique<Id>(), &mDiagnostics));
+ config,
+ test::ValueBuilder<Id>().setSource("test/path/file.xml", 12u).build(),
+ &mDiagnostics));
EXPECT_TRUE(table.addResource(
test::parseNameOrDie(u"@android:string/ok"),
- config, Source{ "test/path/file.xml", 14 },
- util::make_unique<Id>(), &mDiagnostics));
+ config,
+ test::ValueBuilder<Id>().setSource("test/path/file.xml", 14u).build(),
+ &mDiagnostics));
EXPECT_TRUE(table.addResource(
test::parseNameOrDie(u"@android:string/ok"),
- languageConfig, Source{ "test/path/file.xml", 20 },
- util::make_unique<BinaryPrimitive>(android::Res_value{}), &mDiagnostics));
+ languageConfig,
+ test::ValueBuilder<BinaryPrimitive>(android::Res_value{})
+ .setSource("test/path/file.xml", 20u)
+ .build(),
+ &mDiagnostics));
ASSERT_NE(nullptr, test::getValue<Id>(&table, u"@android:attr/layout_width"));
ASSERT_NE(nullptr, test::getValue<Id>(&table, u"@android:attr/id"));
@@ -99,14 +109,14 @@
TEST_F(ResourceTableTest, OverrideWeakResourceValue) {
ResourceTable table;
- ASSERT_TRUE(table.addResource(test::parseNameOrDie(u"@android:attr/foo"), {}, {},
+ ASSERT_TRUE(table.addResource(test::parseNameOrDie(u"@android:attr/foo"), ConfigDescription{},
util::make_unique<Attribute>(true), &mDiagnostics));
Attribute* attr = test::getValue<Attribute>(&table, u"@android:attr/foo");
ASSERT_NE(nullptr, attr);
EXPECT_TRUE(attr->isWeak());
- ASSERT_TRUE(table.addResource(test::parseNameOrDie(u"@android:attr/foo"), {}, {},
+ ASSERT_TRUE(table.addResource(test::parseNameOrDie(u"@android:attr/foo"), ConfigDescription{},
util::make_unique<Attribute>(false), &mDiagnostics));
attr = test::getValue<Attribute>(&table, u"@android:attr/foo");
diff --git a/tools/aapt2/ResourceValues.cpp b/tools/aapt2/ResourceValues.cpp
index ecc5cd2..f312d75 100644
--- a/tools/aapt2/ResourceValues.cpp
+++ b/tools/aapt2/ResourceValues.cpp
@@ -15,11 +15,12 @@
*/
#include "Resource.h"
-#include "flatten/ResourceTypeExtensions.h"
#include "ResourceValues.h"
-#include "util/Util.h"
#include "ValueVisitor.h"
+#include "util/Util.h"
+#include "flatten/ResourceTypeExtensions.h"
+
#include <androidfw/ResourceTypes.h>
#include <limits>
@@ -35,18 +36,10 @@
visitor->visit(static_cast<Derived*>(this));
}
-bool Value::isItem() const {
- return false;
-}
-
bool Value::isWeak() const {
return false;
}
-bool Item::isItem() const {
- return true;
-}
-
RawString::RawString(const StringPool::Ref& ref) : value(ref) {
}
diff --git a/tools/aapt2/ResourceValues.h b/tools/aapt2/ResourceValues.h
index 0dae091..2629153 100644
--- a/tools/aapt2/ResourceValues.h
+++ b/tools/aapt2/ResourceValues.h
@@ -41,17 +41,42 @@
virtual ~Value() = default;
/**
- * Whether or not this is an Item.
- */
- virtual bool isItem() const;
-
- /**
* Whether this value is weak and can be overridden without
* warning or error. Default for base class is false.
*/
virtual bool isWeak() const;
/**
+ * Returns the source where this value was defined.
+ */
+ const Source& getSource() const {
+ return mSource;
+ }
+
+ void setSource(const Source& source) {
+ mSource = source;
+ }
+
+ void setSource(Source&& source) {
+ mSource = std::move(source);
+ }
+
+ /**
+ * Returns the comment that was associated with this resource.
+ */
+ StringPiece16 getComment() const {
+ return mComment;
+ }
+
+ void setComment(const StringPiece16& str) {
+ mComment = str.toString();
+ }
+
+ void setComment(std::u16string&& str) {
+ mComment = std::move(str);
+ }
+
+ /**
* Calls the appropriate overload of ValueVisitor.
*/
virtual void accept(RawValueVisitor* visitor) = 0;
@@ -65,6 +90,10 @@
* Human readable printout of this value.
*/
virtual void print(std::ostream* out) const = 0;
+
+private:
+ Source mSource;
+ std::u16string mComment;
};
/**
@@ -80,11 +109,6 @@
*/
struct Item : public Value {
/**
- * An Item is, of course, an Item.
- */
- virtual bool isItem() const override;
-
- /**
* Clone the Item.
*/
virtual Item* clone(StringPool* newPool) const override = 0;
diff --git a/tools/aapt2/ValueVisitor.h b/tools/aapt2/ValueVisitor.h
index ee058aa..94042e3 100644
--- a/tools/aapt2/ValueVisitor.h
+++ b/tools/aapt2/ValueVisitor.h
@@ -115,6 +115,18 @@
};
/**
+ * Specialization that checks if the value is an Item.
+ */
+template <>
+struct DynCastVisitor<Item> : public RawValueVisitor {
+ Item* value = nullptr;
+
+ void visitItem(Item* item) override {
+ value = item;
+ }
+};
+
+/**
* Returns a valid pointer to T if the Value is of subtype T.
* Otherwise, returns nullptr.
*/
diff --git a/tools/aapt2/XmlPullParser.cpp b/tools/aapt2/XmlPullParser.cpp
index 1b9499d..cff935c 100644
--- a/tools/aapt2/XmlPullParser.cpp
+++ b/tools/aapt2/XmlPullParser.cpp
@@ -97,7 +97,7 @@
}
const std::u16string& XmlPullParser::getComment() const {
- return mEventQueue.front().comment;
+ return mEventQueue.front().data1;
}
size_t XmlPullParser::getLineNumber() const {
diff --git a/tools/aapt2/XmlPullParser.h b/tools/aapt2/XmlPullParser.h
index f7d7a03..a0ce21d 100644
--- a/tools/aapt2/XmlPullParser.h
+++ b/tools/aapt2/XmlPullParser.h
@@ -158,7 +158,6 @@
size_t depth;
std::u16string data1;
std::u16string data2;
- std::u16string comment;
std::vector<Attribute> attributes;
};
diff --git a/tools/aapt2/flatten/TableFlattener.cpp b/tools/aapt2/flatten/TableFlattener.cpp
index 095552a..47fa2a6 100644
--- a/tools/aapt2/flatten/TableFlattener.cpp
+++ b/tools/aapt2/flatten/TableFlattener.cpp
@@ -292,7 +292,7 @@
SymbolWriter* mSymbols;
StringPool* mSourcePool;
- template <typename T>
+ template <typename T, bool IsItem>
T* writeEntry(FlatEntry* entry, BigBuffer* buffer) {
static_assert(std::is_same<ResTable_entry, T>::value ||
std::is_same<ResTable_entry_ext, T>::value,
@@ -308,7 +308,7 @@
outEntry->flags |= ResTable_entry::FLAG_WEAK;
}
- if (!entry->value->isItem()) {
+ if (!IsItem) {
outEntry->flags |= ResTable_entry::FLAG_COMPLEX;
}
@@ -329,8 +329,8 @@
}
bool flattenValue(FlatEntry* entry, BigBuffer* buffer) {
- if (entry->value->isItem()) {
- writeEntry<ResTable_entry>(entry, buffer);
+ if (Item* item = valueCast<Item>(entry->value)) {
+ writeEntry<ResTable_entry, true>(entry, buffer);
if (Reference* ref = valueCast<Reference>(entry->value)) {
if (!ref->id) {
assert(ref->name && "reference must have at least a name");
@@ -339,12 +339,12 @@
}
}
Res_value* outValue = buffer->nextBlock<Res_value>();
- bool result = static_cast<Item*>(entry->value)->flatten(outValue);
+ bool result = item->flatten(outValue);
assert(result && "flatten failed");
outValue->size = util::hostToDevice16(sizeof(*outValue));
} else {
const size_t beforeEntry = buffer->size();
- ResTable_entry_ext* outEntry = writeEntry<ResTable_entry_ext>(entry, buffer);
+ ResTable_entry_ext* outEntry = writeEntry<ResTable_entry_ext, false>(entry, buffer);
MapFlattenVisitor visitor(mSymbols, entry, buffer);
entry->value->accept(&visitor);
outEntry->count = util::hostToDevice32(visitor.mEntryCount);
@@ -551,17 +551,27 @@
// configuration available. Here we reverse this to match the binary table.
std::map<ConfigDescription, std::vector<FlatEntry>> configToEntryListMap;
for (ResourceEntry* entry : sortedEntries) {
- const size_t keyIndex = mKeyPool.makeRef(entry->name).getIndex();
+ const uint32_t keyIndex = (uint32_t) mKeyPool.makeRef(entry->name).getIndex();
// Group values by configuration.
for (auto& configValue : entry->values) {
- configToEntryListMap[configValue.config].push_back(FlatEntry{
- entry, configValue.value.get(), (uint32_t) keyIndex,
- (uint32_t)(mSourcePool->makeRef(util::utf8ToUtf16(
- configValue.source.path)).getIndex()),
- (uint32_t)(configValue.source.line
- ? configValue.source.line.value() : 0)
- });
+ Value* value = configValue.value.get();
+
+ const StringPool::Ref sourceRef = mSourcePool->makeRef(
+ util::utf8ToUtf16(value->getSource().path));
+
+ uint32_t lineNumber = 0;
+ if (value->getSource().line) {
+ lineNumber = value->getSource().line.value();
+ }
+
+ configToEntryListMap[configValue.config]
+ .push_back(FlatEntry{
+ entry,
+ value,
+ keyIndex,
+ (uint32_t) sourceRef.getIndex(),
+ lineNumber });
}
}
diff --git a/tools/aapt2/link/AutoVersioner.cpp b/tools/aapt2/link/AutoVersioner.cpp
index 0ccafc2..11fcc5d 100644
--- a/tools/aapt2/link/AutoVersioner.cpp
+++ b/tools/aapt2/link/AutoVersioner.cpp
@@ -20,21 +20,18 @@
#include "ValueVisitor.h"
#include "link/Linkers.h"
+#include "util/Comparators.h"
#include <algorithm>
#include <cassert>
namespace aapt {
-static bool cmpConfigValue(const ResourceConfigValue& lhs, const ConfigDescription& config) {
- return lhs.config < config;
-}
-
bool shouldGenerateVersionedResource(const ResourceEntry* entry, const ConfigDescription& config,
const int sdkVersionToGenerate) {
assert(sdkVersionToGenerate > config.sdkVersion);
const auto endIter = entry->values.end();
- auto iter = std::lower_bound(entry->values.begin(), endIter, config, cmpConfigValue);
+ auto iter = std::lower_bound(entry->values.begin(), endIter, config, cmp::lessThan);
// The source config came from this list, so it should be here.
assert(iter != entry->values.end());
@@ -107,21 +104,16 @@
// We found attributes from a higher SDK level. Check that
// there is no other defined resource for the version we want to
// generate.
- if (shouldGenerateVersionedResource(entry.get(), configValue.config,
+ if (shouldGenerateVersionedResource(entry.get(),
+ configValue.config,
minSdkStripped.value())) {
// Let's create a new Style for this versioned resource.
ConfigDescription newConfig(configValue.config);
newConfig.sdkVersion = minSdkStripped.value();
- ResourceConfigValue newValue = {
- newConfig,
- configValue.source,
- configValue.comment,
- std::unique_ptr<Value>(configValue.value->clone(
- &table->stringPool))
- };
-
- Style* newStyle = static_cast<Style*>(newValue.value.get());
+ std::unique_ptr<Style> newStyle(style->clone(&table->stringPool));
+ newStyle->setComment(style->getComment());
+ newStyle->setSource(style->getSource());
// Move the previously stripped attributes into this style.
newStyle->entries.insert(newStyle->entries.end(),
@@ -130,9 +122,13 @@
// Insert the new Resource into the correct place.
auto iter = std::lower_bound(entry->values.begin(),
- entry->values.end(), newConfig,
- cmpConfigValue);
- entry->values.insert(iter, std::move(newValue));
+ entry->values.end(),
+ newConfig,
+ cmp::lessThan);
+
+ entry->values.insert(
+ iter,
+ ResourceConfigValue{ newConfig, std::move(newStyle) });
}
}
}
diff --git a/tools/aapt2/link/Link.cpp b/tools/aapt2/link/Link.cpp
index b84f2e0..ad701de 100644
--- a/tools/aapt2/link/Link.cpp
+++ b/tools/aapt2/link/Link.cpp
@@ -266,13 +266,14 @@
for (const auto& type : package->types) {
for (const auto& entry : type->entries) {
for (const auto& configValue : entry->values) {
- mContext.getDiagnostics()->error(DiagMessage(configValue.source)
- << "defined resource '"
- << ResourceNameRef(package->name,
- type->type,
- entry->name)
- << "' for external package '"
- << package->name << "'");
+ mContext.getDiagnostics()->error(
+ DiagMessage(configValue.value->getSource())
+ << "defined resource '"
+ << ResourceNameRef(package->name,
+ type->type,
+ entry->name)
+ << "' for external package '"
+ << package->name << "'");
error = true;
}
}
@@ -472,10 +473,11 @@
Maybe<ResourceName> mangledName = mContext.getNameMangler()->mangleName(
exportedSymbol.name);
- if (!mergedTable.addResource(
+ std::unique_ptr<Id> id = util::make_unique<Id>();
+ id->setSource(f.source.withLine(exportedSymbol.line));
+ if (!mergedTable.addResourceAllowMangled(
mangledName ? mangledName.value() : exportedSymbol.name,
- {}, {}, f.source.withLine(exportedSymbol.line),
- util::make_unique<Id>(), mContext.getDiagnostics())) {
+ {}, std::move(id), mContext.getDiagnostics())) {
error = true;
}
}
diff --git a/tools/aapt2/link/PrivateAttributeMover_test.cpp b/tools/aapt2/link/PrivateAttributeMover_test.cpp
index a2f8d19..dbe0c92 100644
--- a/tools/aapt2/link/PrivateAttributeMover_test.cpp
+++ b/tools/aapt2/link/PrivateAttributeMover_test.cpp
@@ -30,13 +30,9 @@
.addSimple(u"@android:attr/privateA")
.addSimple(u"@android:attr/publicB")
.addSimple(u"@android:attr/privateB")
+ .setSymbolState(u"@android:attr/publicA", ResourceId(0x01010000), SymbolState::kPublic)
+ .setSymbolState(u"@android:attr/publicB", ResourceId(0x01010000), SymbolState::kPublic)
.build();
- ASSERT_TRUE(table->setSymbolState(test::parseNameOrDie(u"@android:attr/publicA"),
- ResourceId(0x01010000), {}, SymbolState::kPublic,
- context->getDiagnostics()));
- ASSERT_TRUE(table->setSymbolState(test::parseNameOrDie(u"@android:attr/publicB"),
- ResourceId(0x01010002), {}, SymbolState::kPublic,
- context->getDiagnostics()));
PrivateAttributeMover mover;
ASSERT_TRUE(mover.consume(context.get(), table.get()));
diff --git a/tools/aapt2/link/ReferenceLinker.cpp b/tools/aapt2/link/ReferenceLinker.cpp
index b4fb996..8c924b5 100644
--- a/tools/aapt2/link/ReferenceLinker.cpp
+++ b/tools/aapt2/link/ReferenceLinker.cpp
@@ -206,13 +206,13 @@
if (!(typeMask & ResourceUtils::androidTypeToAttributeTypeMask(val.dataType))) {
// The actual type of this item is incompatible with the attribute.
- DiagMessage msg;
+ DiagMessage msg(style->getSource());
buildAttributeMismatchMessage(&msg, s->attribute.get(), entry.value.get());
mContext->getDiagnostics()->error(msg);
mError = true;
}
} else {
- DiagMessage msg;
+ DiagMessage msg(style->getSource());
msg << "style attribute '";
if (entry.key.name) {
msg << entry.key.name.value().package << ":" << entry.key.name.value().entry;
diff --git a/tools/aapt2/link/TableMerger.cpp b/tools/aapt2/link/TableMerger.cpp
index db52546..636c2ba 100644
--- a/tools/aapt2/link/TableMerger.cpp
+++ b/tools/aapt2/link/TableMerger.cpp
@@ -19,6 +19,7 @@
#include "ValueVisitor.h"
#include "link/TableMerger.h"
+#include "util/Comparators.h"
#include "util/Util.h"
#include <cassert>
@@ -120,27 +121,24 @@
}
for (ResourceConfigValue& srcValue : srcEntry->values) {
- auto cmp = [](const ResourceConfigValue& a,
- const ConfigDescription& b) -> bool {
- return a.config < b;
- };
-
auto iter = std::lower_bound(dstEntry->values.begin(), dstEntry->values.end(),
- srcValue.config, cmp);
+ srcValue.config, cmp::lessThan);
if (iter != dstEntry->values.end() && iter->config == srcValue.config) {
const int collisionResult = ResourceTable::resolveValueCollision(
iter->value.get(), srcValue.value.get());
if (collisionResult == 0) {
// Error!
- ResourceNameRef resourceName =
- { srcPackage->name, srcType->type, srcEntry->name };
- mContext->getDiagnostics()->error(DiagMessage(srcValue.source)
+ ResourceNameRef resourceName(srcPackage->name,
+ srcType->type,
+ srcEntry->name);
+
+ mContext->getDiagnostics()->error(DiagMessage(srcValue.value->getSource())
<< "resource '" << resourceName
<< "' has a conflicting value for "
<< "configuration ("
<< srcValue.config << ")");
- mContext->getDiagnostics()->note(DiagMessage(iter->source)
+ mContext->getDiagnostics()->note(DiagMessage(iter->value->getSource())
<< "originally defined here");
error = true;
continue;
@@ -150,16 +148,12 @@
}
} else {
- // Insert a new value.
- iter = dstEntry->values.insert(iter,
- ResourceConfigValue{ srcValue.config });
+ // Insert a place holder value. We will fill it in below.
+ iter = dstEntry->values.insert(iter, ResourceConfigValue{ srcValue.config });
}
- iter->source = std::move(srcValue.source);
- iter->comment = std::move(srcValue.comment);
if (manglePackage) {
- iter->value = cloneAndMangle(srcTable, srcPackage->name,
- srcValue.value.get());
+ iter->value = cloneAndMangle(srcTable, srcPackage->name, srcValue.value.get());
} else {
iter->value = clone(srcValue.value.get());
}
@@ -179,7 +173,11 @@
std::u16string mangledEntry = NameMangler::mangleEntry(package, entry.toString());
std::u16string newPath = prefix.toString() + mangledEntry + suffix.toString();
mFilesToMerge.push(FileToMerge{ table, *f->path, newPath });
- return util::make_unique<FileReference>(mMasterTable->stringPool.makeRef(newPath));
+ std::unique_ptr<FileReference> fileRef = util::make_unique<FileReference>(
+ mMasterTable->stringPool.makeRef(newPath));
+ fileRef->setComment(f->getComment());
+ fileRef->setSource(f->getSource());
+ return std::move(fileRef);
}
}
return clone(value);
diff --git a/tools/aapt2/process/SymbolTable.cpp b/tools/aapt2/process/SymbolTable.cpp
index c96b080..7309396 100644
--- a/tools/aapt2/process/SymbolTable.cpp
+++ b/tools/aapt2/process/SymbolTable.cpp
@@ -16,9 +16,11 @@
#include "ConfigDescription.h"
#include "Resource.h"
-#include "util/Util.h"
+#include "ValueVisitor.h"
#include "process/SymbolTable.h"
+#include "util/Comparators.h"
+#include "util/Util.h"
#include <androidfw/AssetManager.h>
#include <androidfw/ResourceTypes.h>
@@ -34,7 +36,7 @@
if (!result) {
if (name.type == ResourceType::kAttr) {
// Recurse and try looking up a private attribute.
- return findByName(ResourceName{ name.package, ResourceType::kAttrPrivate, name.entry });
+ return findByName(ResourceName(name.package, ResourceType::kAttrPrivate, name.entry));
}
return {};
}
@@ -48,28 +50,26 @@
}
std::shared_ptr<Symbol> symbol = std::make_shared<Symbol>();
- symbol->id = ResourceId{
- sr.package->id.value(), sr.type->id.value(), sr.entry->id.value() };
+ symbol->id = ResourceId(sr.package->id.value(), sr.type->id.value(), sr.entry->id.value());
if (name.type == ResourceType::kAttr || name.type == ResourceType::kAttrPrivate) {
- auto lt = [](ResourceConfigValue& lhs, const ConfigDescription& rhs) -> bool {
- return lhs.config < rhs;
- };
-
const ConfigDescription kDefaultConfig;
auto iter = std::lower_bound(sr.entry->values.begin(), sr.entry->values.end(),
- kDefaultConfig, lt);
+ kDefaultConfig, cmp::lessThan);
if (iter != sr.entry->values.end() && iter->config == kDefaultConfig) {
// This resource has an Attribute.
- symbol->attribute = util::make_unique<Attribute>(
- *static_cast<Attribute*>(iter->value.get()));
+ if (Attribute* attr = valueCast<Attribute>(iter->value.get())) {
+ symbol->attribute = std::unique_ptr<Attribute>(attr->clone(nullptr));
+ } else {
+ return {};
+ }
}
}
if (name.type == ResourceType::kAttrPrivate) {
// Masquerade this entry as kAttr.
- mCache.put(ResourceName{ name.package, ResourceType::kAttr, name.entry }, symbol);
+ mCache.put(ResourceName(name.package, ResourceType::kAttr, name.entry), symbol);
} else {
mCache.put(name, symbol);
}
diff --git a/tools/aapt2/test/Builders.h b/tools/aapt2/test/Builders.h
index 0383c44..1b510e7 100644
--- a/tools/aapt2/test/Builders.h
+++ b/tools/aapt2/test/Builders.h
@@ -43,7 +43,7 @@
return *this;
}
- ResourceTableBuilder& addSimple(const StringPiece16& name, ResourceId id = {}) {
+ ResourceTableBuilder& addSimple(const StringPiece16& name, const ResourceId id = {}) {
return addValue(name, id, util::make_unique<Id>());
}
@@ -51,7 +51,7 @@
return addReference(name, {}, ref);
}
- ResourceTableBuilder& addReference(const StringPiece16& name, ResourceId id,
+ ResourceTableBuilder& addReference(const StringPiece16& name, const ResourceId id,
const StringPiece16& ref) {
return addValue(name, id, util::make_unique<Reference>(parseNameOrDie(ref)));
}
@@ -60,7 +60,7 @@
return addString(name, {}, str);
}
- ResourceTableBuilder& addString(const StringPiece16& name, ResourceId id,
+ ResourceTableBuilder& addString(const StringPiece16& name, const ResourceId id,
const StringPiece16& str) {
return addValue(name, id, util::make_unique<String>(mTable->stringPool.makeRef(str)));
}
@@ -69,31 +69,43 @@
return addFileReference(name, {}, path);
}
- ResourceTableBuilder& addFileReference(const StringPiece16& name, ResourceId id,
+ ResourceTableBuilder& addFileReference(const StringPiece16& name, const ResourceId id,
const StringPiece16& path) {
return addValue(name, id,
util::make_unique<FileReference>(mTable->stringPool.makeRef(path)));
}
- ResourceTableBuilder& addValue(const StringPiece16& name, std::unique_ptr<Value> value) {
+ ResourceTableBuilder& addValue(const StringPiece16& name,
+ std::unique_ptr<Value> value) {
return addValue(name, {}, std::move(value));
}
- ResourceTableBuilder& addValue(const StringPiece16& name, ResourceId id,
+ ResourceTableBuilder& addValue(const StringPiece16& name, const ResourceId id,
std::unique_ptr<Value> value) {
return addValue(name, id, {}, std::move(value));
}
- ResourceTableBuilder& addValue(const StringPiece16& name, ResourceId id,
- const ConfigDescription& config, std::unique_ptr<Value> value) {
+ ResourceTableBuilder& addValue(const StringPiece16& name, const ResourceId id,
+ const ConfigDescription& config,
+ std::unique_ptr<Value> value) {
ResourceName resName = parseNameOrDie(name);
- bool result = mTable->addResourceAllowMangled(resName, id, config, {}, std::move(value),
+ bool result = mTable->addResourceAllowMangled(resName, id, config, std::move(value),
&mDiagnostics);
assert(result);
return *this;
}
+ ResourceTableBuilder& setSymbolState(const StringPiece16& name, ResourceId id,
+ SymbolState state) {
+ ResourceName resName = parseNameOrDie(name);
+ Symbol symbol;
+ symbol.state = state;
+ bool result = mTable->setSymbolStateAllowMangled(resName, id, symbol, &mDiagnostics);
+ assert(result);
+ return *this;
+ }
+
std::unique_ptr<ResourceTable> build() {
return std::move(mTable);
}
@@ -106,6 +118,32 @@
return reference;
}
+template <typename T>
+class ValueBuilder {
+private:
+ std::unique_ptr<Value> mValue;
+
+public:
+ template <typename... Args>
+ ValueBuilder(Args&&... args) : mValue(new T{ std::forward<Args>(args)... }) {
+ }
+
+ template <typename... Args>
+ ValueBuilder& setSource(Args&&... args) {
+ mValue->setSource(Source{ std::forward<Args>(args)... });
+ return *this;
+ }
+
+ ValueBuilder& setComment(const StringPiece16& str) {
+ mValue->setComment(str);
+ return *this;
+ }
+
+ std::unique_ptr<Value> build() {
+ return std::move(mValue);
+ }
+};
+
class AttributeBuilder {
private:
std::unique_ptr<Attribute> mAttr;
diff --git a/tools/aapt2/unflatten/BinaryResourceParser.cpp b/tools/aapt2/unflatten/BinaryResourceParser.cpp
index c7a715e..314c1e8 100644
--- a/tools/aapt2/unflatten/BinaryResourceParser.cpp
+++ b/tools/aapt2/unflatten/BinaryResourceParser.cpp
@@ -422,26 +422,24 @@
const ResourceName name(package->name, *parsedType,
util::getString(mKeyPool, entry->key.index).toString());
- Source source;
+ Symbol symbol;
if (mSourcePool.getError() == NO_ERROR) {
- source.path = util::utf16ToUtf8(util::getString(
+ symbol.source.path = util::utf16ToUtf8(util::getString(
mSourcePool, util::deviceToHost32(entry->source.index)));
- source.line = util::deviceToHost32(entry->sourceLine);
+ symbol.source.line = util::deviceToHost32(entry->sourceLine);
}
- SymbolState state = SymbolState::kUndefined;
switch (util::deviceToHost16(entry->state)) {
case Public_entry::kPrivate:
- state = SymbolState::kPrivate;
+ symbol.state = SymbolState::kPrivate;
break;
case Public_entry::kPublic:
- state = SymbolState::kPublic;
+ symbol.state = SymbolState::kPublic;
break;
}
- if (!mTable->setSymbolStateAllowMangled(name, resId, source, state,
- mContext->getDiagnostics())) {
+ if (!mTable->setSymbolStateAllowMangled(name, resId, symbol, mContext->getDiagnostics())) {
return false;
}
@@ -570,14 +568,17 @@
source.line = util::deviceToHost32(sourceBlock->line);
}
- if (!mTable->addResourceAllowMangled(name, config, source, std::move(resourceValue),
+ resourceValue->setSource(source);
+ if (!mTable->addResourceAllowMangled(name, config, std::move(resourceValue),
mContext->getDiagnostics())) {
return false;
}
if ((entry->flags & ResTable_entry::FLAG_PUBLIC) != 0) {
- if (!mTable->setSymbolStateAllowMangled(name, resId, mSource.withLine(0),
- SymbolState::kPublic,
+ Symbol symbol;
+ symbol.state = SymbolState::kPublic;
+ symbol.source = mSource.withLine(0);
+ if (!mTable->setSymbolStateAllowMangled(name, resId, symbol,
mContext->getDiagnostics())) {
return false;
}
diff --git a/tools/aapt2/unflatten/BinaryResourceParser.h b/tools/aapt2/unflatten/BinaryResourceParser.h
index 4dbef5d..02c4081 100644
--- a/tools/aapt2/unflatten/BinaryResourceParser.h
+++ b/tools/aapt2/unflatten/BinaryResourceParser.h
@@ -66,26 +66,30 @@
bool parseTypeSpec(const android::ResChunk_header* chunk);
bool parseType(const ResourceTablePackage* package, const android::ResChunk_header* chunk);
- std::unique_ptr<Item> parseValue(const ResourceNameRef& name,
- const ConfigDescription& config, const android::Res_value* value, uint16_t flags);
+ std::unique_ptr<Item> parseValue(const ResourceNameRef& name, const ConfigDescription& config,
+ const android::Res_value* value, uint16_t flags);
std::unique_ptr<Value> parseMapEntry(const ResourceNameRef& name,
- const ConfigDescription& config, const android::ResTable_map_entry* map);
+ const ConfigDescription& config,
+ const android::ResTable_map_entry* map);
- std::unique_ptr<Style> parseStyle(const ResourceNameRef& name,
- const ConfigDescription& config, const android::ResTable_map_entry* map);
+ std::unique_ptr<Style> parseStyle(const ResourceNameRef& name, const ConfigDescription& config,
+ const android::ResTable_map_entry* map);
std::unique_ptr<Attribute> parseAttr(const ResourceNameRef& name,
- const ConfigDescription& config, const android::ResTable_map_entry* map);
+ const ConfigDescription& config,
+ const android::ResTable_map_entry* map);
- std::unique_ptr<Array> parseArray(const ResourceNameRef& name,
- const ConfigDescription& config, const android::ResTable_map_entry* map);
+ std::unique_ptr<Array> parseArray(const ResourceNameRef& name, const ConfigDescription& config,
+ const android::ResTable_map_entry* map);
std::unique_ptr<Plural> parsePlural(const ResourceNameRef& name,
- const ConfigDescription& config, const android::ResTable_map_entry* map);
+ const ConfigDescription& config,
+ const android::ResTable_map_entry* map);
std::unique_ptr<Styleable> parseStyleable(const ResourceNameRef& name,
- const ConfigDescription& config, const android::ResTable_map_entry* map);
+ const ConfigDescription& config,
+ const android::ResTable_map_entry* map);
IAaptContext* mContext;
ResourceTable* mTable;
diff --git a/tools/aapt2/util/Comparators.h b/tools/aapt2/util/Comparators.h
new file mode 100644
index 0000000..652018e
--- /dev/null
+++ b/tools/aapt2/util/Comparators.h
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2015 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.
+ */
+
+#ifndef AAPT_UTIL_COMPARATORS_H
+#define AAPT_UTIL_COMPARATORS_H
+
+namespace aapt {
+namespace cmp {
+
+inline bool lessThan(const ResourceConfigValue& a, const ConfigDescription& b) {
+ return a.config < b;
+}
+
+} // namespace cmp
+} // namespace aapt
+
+#endif /* AAPT_UTIL_COMPARATORS_H */
diff --git a/tools/layoutlib/bridge/src/android/view/IWindowManagerImpl.java b/tools/layoutlib/bridge/src/android/view/IWindowManagerImpl.java
index 0da6bb6..007d075 100644
--- a/tools/layoutlib/bridge/src/android/view/IWindowManagerImpl.java
+++ b/tools/layoutlib/bridge/src/android/view/IWindowManagerImpl.java
@@ -242,7 +242,7 @@
@Override
public void overridePendingAppTransitionMultiThumb(AppTransitionAnimationSpec[] specs,
- IRemoteCallback callback, boolean scaleUp) {
+ IRemoteCallback callback0, IRemoteCallback callback1, boolean scaleUp) {
// TODO Auto-generated method stub
}
diff --git a/wifi/java/android/net/wifi/BatchedScanResult.aidl b/wifi/java/android/net/wifi/BatchedScanResult.aidl
deleted file mode 100644
index a70bc0a..0000000
--- a/wifi/java/android/net/wifi/BatchedScanResult.aidl
+++ /dev/null
@@ -1,19 +0,0 @@
-/**
- * Copyright (c) 2013, The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.net.wifi;
-
-parcelable BatchedScanResult;
diff --git a/wifi/java/android/net/wifi/BatchedScanResult.java b/wifi/java/android/net/wifi/BatchedScanResult.java
index 7598b92..5bafdd8 100644
--- a/wifi/java/android/net/wifi/BatchedScanResult.java
+++ b/wifi/java/android/net/wifi/BatchedScanResult.java
@@ -25,8 +25,9 @@
/**
* Describes the Results of a batched set of wifi scans where the firmware performs many
* scans and stores the timestamped results without waking the main processor each time.
- * @hide pending review
+ * @hide
*/
+@Deprecated
public class BatchedScanResult implements Parcelable {
private static final String TAG = "BatchedScanResult";
diff --git a/wifi/java/android/net/wifi/BatchedScanSettings.aidl b/wifi/java/android/net/wifi/BatchedScanSettings.aidl
deleted file mode 100644
index 8cfc508..0000000
--- a/wifi/java/android/net/wifi/BatchedScanSettings.aidl
+++ /dev/null
@@ -1,19 +0,0 @@
-/**
- * Copyright (c) 2013, The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.net.wifi;
-
-parcelable BatchedScanSettings;
diff --git a/wifi/java/android/net/wifi/BatchedScanSettings.java b/wifi/java/android/net/wifi/BatchedScanSettings.java
deleted file mode 100644
index 54801ad..0000000
--- a/wifi/java/android/net/wifi/BatchedScanSettings.java
+++ /dev/null
@@ -1,263 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.net.wifi;
-
-import android.os.Parcelable;
-import android.os.Parcel;
-
-import java.util.ArrayList;
-import java.util.Collection;
-
-/**
- * Describes the settings for batched wifi scans where the firmware performs many
- * scans and stores the timestamped results without waking the main processor each time.
- * This can give information over time with minimal battery impact.
- * @hide pending review
- */
-public class BatchedScanSettings implements Parcelable {
- private static final String TAG = "BatchedScanSettings";
-
- /** Used to indicate no preference for an int value */
- public final static int UNSPECIFIED = Integer.MAX_VALUE;
-
- // TODO - make MIN/mAX as standard for wifi batch capability requirement.
- public final static int MIN_SCANS_PER_BATCH = 2;
- public final static int MAX_SCANS_PER_BATCH = 20;
- public final static int DEFAULT_SCANS_PER_BATCH = MAX_SCANS_PER_BATCH;
-
- public final static int MIN_AP_PER_SCAN = 2;
- public final static int MAX_AP_PER_SCAN = 16;
- public final static int DEFAULT_AP_PER_SCAN = 16;
-
- public final static int MIN_INTERVAL_SEC = 10;
- public final static int MAX_INTERVAL_SEC = 500;
- public final static int DEFAULT_INTERVAL_SEC = 30;
-
- public final static int MIN_AP_FOR_DISTANCE = 0;
- public final static int MAX_AP_FOR_DISTANCE = MAX_AP_PER_SCAN;
- public final static int DEFAULT_AP_FOR_DISTANCE = 0;
-
- public final static int MAX_WIFI_CHANNEL = 196;
-
- /** The expected number of scans per batch. Note that the firmware may drop scans
- * leading to fewer scans during the normal batch scan duration. This value need not
- * be specified (may be set to {@link UNSPECIFIED}) by the application and we will try
- * to scan as many times as the firmware can support. If another app requests fewer
- * scans per batch we will attempt to honor that.
- */
- public int maxScansPerBatch;
-
- /** The maximum desired AP listed per scan. Fewer AP may be returned if that's all
- * that the driver detected. If another application requests more AP per scan that
- * will take precedence. The if more channels are detected than we request, the APs
- * with the lowest signal strength will be dropped.
- */
- public int maxApPerScan;
-
- /** The channels used in the scan. If all channels should be used, {@code null} may be
- * specified. If another application requests more channels or all channels, that
- * will take precedence.
- */
- public Collection<String> channelSet;
-
- /** The time between the start of two sequential scans, in seconds. If another
- * application requests more frequent scans, that will take precedence. If this
- * value is less than the duration of a scan, the next scan should start immediately.
- */
- public int scanIntervalSec;
-
- /** The number of the best (strongest signal) APs for which the firmware will
- * attempt to get distance information (RTT). Not all firmware supports this
- * feature, so it may be ignored. If another application requests a greater
- * number, that will take precedence.
- */
- public int maxApForDistance;
-
- public BatchedScanSettings() {
- clear();
- }
-
- public void clear() {
- maxScansPerBatch = UNSPECIFIED;
- maxApPerScan = UNSPECIFIED;
- channelSet = null;
- scanIntervalSec = UNSPECIFIED;
- maxApForDistance = UNSPECIFIED;
- }
-
- public BatchedScanSettings(BatchedScanSettings source) {
- maxScansPerBatch = source.maxScansPerBatch;
- maxApPerScan = source.maxApPerScan;
- if (source.channelSet != null) {
- channelSet = new ArrayList(source.channelSet);
- }
- scanIntervalSec = source.scanIntervalSec;
- maxApForDistance = source.maxApForDistance;
- }
-
- private boolean channelSetIsValid() {
- if (channelSet == null || channelSet.isEmpty()) return true;
- for (String channel : channelSet) {
- try {
- int i = Integer.parseInt(channel);
- if (i > 0 && i <= MAX_WIFI_CHANNEL) continue;
- } catch (NumberFormatException e) {}
- if (channel.equals("A") || channel.equals("B")) continue;
- return false;
- }
- return true;
- }
- /** @hide */
- public boolean isInvalid() {
- if (maxScansPerBatch != UNSPECIFIED && (maxScansPerBatch < MIN_SCANS_PER_BATCH ||
- maxScansPerBatch > MAX_SCANS_PER_BATCH)) return true;
- if (maxApPerScan != UNSPECIFIED && (maxApPerScan < MIN_AP_PER_SCAN ||
- maxApPerScan > MAX_AP_PER_SCAN)) return true;
- if (channelSetIsValid() == false) return true;
- if (scanIntervalSec != UNSPECIFIED && (scanIntervalSec < MIN_INTERVAL_SEC ||
- scanIntervalSec > MAX_INTERVAL_SEC)) return true;
- if (maxApForDistance != UNSPECIFIED && (maxApForDistance < MIN_AP_FOR_DISTANCE ||
- maxApForDistance > MAX_AP_FOR_DISTANCE)) return true;
- return false;
- }
-
- /** @hide */
- public void constrain() {
- if (scanIntervalSec == UNSPECIFIED) {
- scanIntervalSec = DEFAULT_INTERVAL_SEC;
- } else if (scanIntervalSec < MIN_INTERVAL_SEC) {
- scanIntervalSec = MIN_INTERVAL_SEC;
- } else if (scanIntervalSec > MAX_INTERVAL_SEC) {
- scanIntervalSec = MAX_INTERVAL_SEC;
- }
-
- if (maxScansPerBatch == UNSPECIFIED) {
- maxScansPerBatch = DEFAULT_SCANS_PER_BATCH;
- } else if (maxScansPerBatch < MIN_SCANS_PER_BATCH) {
- maxScansPerBatch = MIN_SCANS_PER_BATCH;
- } else if (maxScansPerBatch > MAX_SCANS_PER_BATCH) {
- maxScansPerBatch = MAX_SCANS_PER_BATCH;
- }
-
- if (maxApPerScan == UNSPECIFIED) {
- maxApPerScan = DEFAULT_AP_PER_SCAN;
- } else if (maxApPerScan < MIN_AP_PER_SCAN) {
- maxApPerScan = MIN_AP_PER_SCAN;
- } else if (maxApPerScan > MAX_AP_PER_SCAN) {
- maxApPerScan = MAX_AP_PER_SCAN;
- }
-
- if (maxApForDistance == UNSPECIFIED) {
- maxApForDistance = DEFAULT_AP_FOR_DISTANCE;
- } else if (maxApForDistance < MIN_AP_FOR_DISTANCE) {
- maxApForDistance = MIN_AP_FOR_DISTANCE;
- } else if (maxApForDistance > MAX_AP_FOR_DISTANCE) {
- maxApForDistance = MAX_AP_FOR_DISTANCE;
- }
- }
-
-
- @Override
- public boolean equals(Object obj) {
- if (obj instanceof BatchedScanSettings == false) return false;
- BatchedScanSettings o = (BatchedScanSettings)obj;
- if (maxScansPerBatch != o.maxScansPerBatch ||
- maxApPerScan != o.maxApPerScan ||
- scanIntervalSec != o.scanIntervalSec ||
- maxApForDistance != o.maxApForDistance) return false;
- if (channelSet == null) {
- return (o.channelSet == null);
- }
- return channelSet.equals(o.channelSet);
- }
-
- @Override
- public int hashCode() {
- return maxScansPerBatch +
- (maxApPerScan * 3) +
- (scanIntervalSec * 5) +
- (maxApForDistance * 7) +
- (channelSet.hashCode() * 11);
- }
-
- @Override
- public String toString() {
- StringBuffer sb = new StringBuffer();
- String none = "<none>";
-
- sb.append("BatchScanSettings [maxScansPerBatch: ").
- append(maxScansPerBatch == UNSPECIFIED ? none : maxScansPerBatch).
- append(", maxApPerScan: ").append(maxApPerScan == UNSPECIFIED? none : maxApPerScan).
- append(", scanIntervalSec: ").
- append(scanIntervalSec == UNSPECIFIED ? none : scanIntervalSec).
- append(", maxApForDistance: ").
- append(maxApForDistance == UNSPECIFIED ? none : maxApForDistance).
- append(", channelSet: ");
- if (channelSet == null) {
- sb.append("ALL");
- } else {
- sb.append("<");
- for (String channel : channelSet) {
- sb.append(" " + channel);
- }
- sb.append(">");
- }
- sb.append("]");
- return sb.toString();
- }
-
- /** Implement the Parcelable interface {@hide} */
- public int describeContents() {
- return 0;
- }
-
- /** Implement the Parcelable interface {@hide} */
- public void writeToParcel(Parcel dest, int flags) {
- dest.writeInt(maxScansPerBatch);
- dest.writeInt(maxApPerScan);
- dest.writeInt(scanIntervalSec);
- dest.writeInt(maxApForDistance);
- dest.writeInt(channelSet == null ? 0 : channelSet.size());
- if (channelSet != null) {
- for (String channel : channelSet) dest.writeString(channel);
- }
- }
-
- /** Implement the Parcelable interface {@hide} */
- public static final Creator<BatchedScanSettings> CREATOR =
- new Creator<BatchedScanSettings>() {
- public BatchedScanSettings createFromParcel(Parcel in) {
- BatchedScanSettings settings = new BatchedScanSettings();
- settings.maxScansPerBatch = in.readInt();
- settings.maxApPerScan = in.readInt();
- settings.scanIntervalSec = in.readInt();
- settings.maxApForDistance = in.readInt();
- int channelCount = in.readInt();
- if (channelCount > 0) {
- settings.channelSet = new ArrayList(channelCount);
- while (channelCount-- > 0) {
- settings.channelSet.add(in.readString());
- }
- }
- return settings;
- }
-
- public BatchedScanSettings[] newArray(int size) {
- return new BatchedScanSettings[size];
- }
- };
-}
diff --git a/wifi/java/android/net/wifi/IWifiManager.aidl b/wifi/java/android/net/wifi/IWifiManager.aidl
index 23be8e0..bad4e9c 100644
--- a/wifi/java/android/net/wifi/IWifiManager.aidl
+++ b/wifi/java/android/net/wifi/IWifiManager.aidl
@@ -16,12 +16,9 @@
package android.net.wifi;
-import android.net.wifi.BatchedScanResult;
-import android.net.wifi.BatchedScanSettings;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiInfo;
import android.net.wifi.ScanSettings;
-import android.net.wifi.WifiChannel;
import android.net.wifi.ScanResult;
import android.net.wifi.ScanInfo;
import android.net.wifi.WifiConnectionStatistics;
@@ -61,12 +58,8 @@
boolean pingSupplicant();
- List<WifiChannel> getChannelList();
-
void startScan(in ScanSettings requested, in WorkSource ws);
- void startLocationRestrictedScan(in WorkSource ws);
-
List<ScanResult> getScanResults(String callingPackage);
void disconnect();
@@ -125,10 +118,6 @@
void setWifiApConfiguration(in WifiConfiguration wifiConfig);
- void startWifi();
-
- void stopWifi();
-
void addToBlacklist(String bssid);
void clearBlacklist();
@@ -141,16 +130,6 @@
void enableTdlsWithMacAddress(String remoteMacAddress, boolean enable);
- boolean requestBatchedScan(in BatchedScanSettings requested, IBinder binder, in WorkSource ws);
-
- void stopBatchedScan(in BatchedScanSettings requested);
-
- List<BatchedScanResult> getBatchedScanResults(String callingPackage);
-
- boolean isBatchedScanSupported();
-
- void pollBatchedScan();
-
String getWpsNfcConfigurationToken(int netId);
void enableVerboseLogging(int verbose);
diff --git a/wifi/java/android/net/wifi/ScanResult.java b/wifi/java/android/net/wifi/ScanResult.java
index 8a20012..dc06789 100644
--- a/wifi/java/android/net/wifi/ScanResult.java
+++ b/wifi/java/android/net/wifi/ScanResult.java
@@ -309,6 +309,15 @@
* @hide
*/
public static class InformationElement {
+ public static final int EID_SSID = 0;
+ public static final int EID_BSS_LOAD = 11;
+ public static final int EID_HT_OPERATION = 61;
+ public static final int EID_INTERWORKING = 107;
+ public static final int EID_ROAMING_CONSORTIUM = 111;
+ public static final int EID_EXTENDED_CAPS = 127;
+ public static final int EID_VHT_OPERATION = 192;
+ public static final int EID_VSA = 221;
+
public int id;
public byte[] bytes;
diff --git a/wifi/java/android/net/wifi/WifiManager.java b/wifi/java/android/net/wifi/WifiManager.java
index 1970542..bd030e8 100644
--- a/wifi/java/android/net/wifi/WifiManager.java
+++ b/wifi/java/android/net/wifi/WifiManager.java
@@ -27,7 +27,6 @@
import android.net.NetworkCapabilities;
import android.net.NetworkRequest;
import android.net.wifi.ScanSettings;
-import android.net.wifi.WifiChannel;
import android.os.Binder;
import android.os.Build;
import android.os.IBinder;
@@ -440,8 +439,11 @@
/**
* A batch of access point scans has been completed and the results areavailable.
* Call {@link #getBatchedScanResults()} to obtain the results.
- * @hide pending review
+ * @deprecated This API is nolonger supported.
+ * Use {@link android.net.wifi.WifiScanner} API
+ * @hide
*/
+ @Deprecated
@SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)
public static final String BATCHED_SCAN_RESULTS_AVAILABLE_ACTION =
"android.net.wifi.BATCHED_RESULTS";
@@ -904,22 +906,6 @@
}
}
- /**
- * Get a list of available channels for customized scan.
- *
- * @see {@link WifiChannel}
- *
- * @return the channel list, or null if not available
- * @hide
- */
- public List<WifiChannel> getChannelList() {
- try {
- return mService.getChannelList();
- } catch (RemoteException e) {
- return null;
- }
- }
-
/* Keep this list in sync with wifi_hal.h */
/** @hide */
public static final int WIFI_FEATURE_INFRA = 0x0001; // Basic infrastructure mode
@@ -1125,142 +1111,41 @@
* startLocationRestrictedScan()
* Trigger a scan which will not make use of DFS channels and is thus not suitable for
* establishing wifi connection.
+ * @deprecated This API is nolonger supported.
+ * Use {@link android.net.wifi.WifiScanner} API
* @hide
*/
+ @Deprecated
@SystemApi
public boolean startLocationRestrictedScan(WorkSource workSource) {
- try {
- mService.startLocationRestrictedScan(workSource);
- return true;
- } catch (RemoteException e) {
- return false;
- }
- }
-
- /**
- * Request a scan for access points in specified channel list. Each channel is specified by its
- * frequency in MHz, e.g. "5500" (do NOT include "DFS" even though it is). The availability of
- * the results is made known later in the same way as {@link #startScan}.
- *
- * Note:
- *
- * 1. Customized scan is for non-connection purposes, i.e. it won't trigger a wifi connection
- * even though it finds some known networks.
- *
- * 2. Customized scan result may include access points that is not specified in the channel
- * list. An app will need to do frequency filtering if it wants to get pure results for the
- * channel list it specified.
- *
- * @hide
- */
- public boolean startCustomizedScan(ScanSettings requested) {
- try {
- mService.startScan(requested, null);
- return true;
- } catch (RemoteException e) {
- return false;
- }
- }
-
- /** @hide */
- public boolean startCustomizedScan(ScanSettings requested, WorkSource workSource) {
- try {
- mService.startScan(requested, workSource);
- return true;
- } catch (RemoteException e) {
- return false;
- }
- }
-
- /**
- * Request a batched scan for access points. To end your requested batched scan,
- * call stopBatchedScan with the same Settings.
- *
- * If there are mulitple requests for batched scans, the more demanding settings will
- * take precidence.
- *
- * @param requested {@link BatchedScanSettings} the scan settings requested.
- * @return false on known error
- * @hide
- */
- public boolean requestBatchedScan(BatchedScanSettings requested) {
- try {
- return mService.requestBatchedScan(requested, new Binder(), null);
- } catch (RemoteException e) { return false; }
- }
- /** @hide */
- public boolean requestBatchedScan(BatchedScanSettings requested, WorkSource workSource) {
- try {
- return mService.requestBatchedScan(requested, new Binder(), workSource);
- } catch (RemoteException e) { return false; }
+ return false;
}
/**
* Check if the Batched Scan feature is supported.
*
* @return false if not supported.
+ * @deprecated This API is nolonger supported.
+ * Use {@link android.net.wifi.WifiScanner} API
* @hide
*/
+ @Deprecated
@SystemApi
public boolean isBatchedScanSupported() {
- try {
- return mService.isBatchedScanSupported();
- } catch (RemoteException e) { return false; }
- }
-
- /**
- * End a requested batch scan for this applicaiton. Note that batched scan may
- * still occur if other apps are using them.
- *
- * @param requested {@link BatchedScanSettings} the scan settings you previously requested
- * and now wish to stop. A value of null here will stop all scans requested by the
- * calling App.
- * @hide
- */
- public void stopBatchedScan(BatchedScanSettings requested) {
- try {
- mService.stopBatchedScan(requested);
- } catch (RemoteException e) {}
+ return false;
}
/**
* Retrieve the latest batched scan result. This should be called immediately after
* {@link BATCHED_SCAN_RESULTS_AVAILABLE_ACTION} is received.
+ * @deprecated This API is nolonger supported.
+ * Use {@link android.net.wifi.WifiScanner} API
* @hide
*/
+ @Deprecated
@SystemApi
public List<BatchedScanResult> getBatchedScanResults() {
- try {
- return mService.getBatchedScanResults(mContext.getOpPackageName());
- } catch (RemoteException e) {
- return null;
- }
- }
-
- /**
- * Force a re-reading of batched scan results. This will attempt
- * to read more information from the chip, but will do so at the expense
- * of previous data. Rate limited to the current scan frequency.
- *
- * pollBatchedScan will always wait 1 period from the start of the batch
- * before trying to read from the chip, so if your #scans/batch == 1 this will
- * have no effect.
- *
- * If you had already waited 1 period before calling, this should have
- * immediate (though async) effect.
- *
- * If you call before that 1 period is up this will set up a timer and fetch
- * results when the 1 period is up.
- *
- * Servicing a pollBatchedScan request (immediate or after timed delay) starts a
- * new batch, so if you were doing 10 scans/batch and called in the 4th scan, you
- * would get data in the 4th and then again 10 scans later.
- * @hide
- */
- public void pollBatchedScan() {
- try {
- mService.pollBatchedScan();
- } catch (RemoteException e) { }
+ return null;
}
/**
@@ -1625,48 +1510,6 @@
}
}
- /**
- * Start the driver and connect to network.
- *
- * This function will over-ride WifiLock and device idle status. For example,
- * even if the device is idle or there is only a scan-only lock held,
- * a start wifi would mean that wifi connection is kept active until
- * a stopWifi() is sent.
- *
- * This API is used by WifiStateTracker
- *
- * @return {@code true} if the operation succeeds else {@code false}
- * @hide
- */
- public boolean startWifi() {
- try {
- mService.startWifi();
- return true;
- } catch (RemoteException e) {
- return false;
- }
- }
-
- /**
- * Disconnect from a network (if any) and stop the driver.
- *
- * This function will over-ride WifiLock and device idle status. Wi-Fi
- * stays inactive until a startWifi() is issued.
- *
- * This API is used by WifiStateTracker
- *
- * @return {@code true} if the operation succeeds else {@code false}
- * @hide
- */
- public boolean stopWifi() {
- try {
- mService.stopWifi();
- return true;
- } catch (RemoteException e) {
- return false;
- }
- }
-
/**
* Add a bssid to the supplicant blacklist
*