Merge "Fix adb am display-size." into jb-mr1-dev
diff --git a/api/current.txt b/api/current.txt
index 9d7bb14..1e3e2bb 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -3353,6 +3353,7 @@
method public final android.app.FragmentManager getFragmentManager();
method public final int getId();
method public android.app.LoaderManager getLoaderManager();
+ method public final android.app.Fragment getParentFragment();
method public final android.content.res.Resources getResources();
method public final boolean getRetainInstance();
method public final java.lang.String getString(int);
@@ -10216,6 +10217,7 @@
method public final android.os.IBinder onBind(android.content.Intent);
method public abstract android.inputmethodservice.AbstractInputMethodService.AbstractInputMethodImpl onCreateInputMethodInterface();
method public abstract android.inputmethodservice.AbstractInputMethodService.AbstractInputMethodSessionImpl onCreateInputMethodSessionInterface();
+ method public boolean onGenericMotionEvent(android.view.MotionEvent);
method public boolean onTrackballEvent(android.view.MotionEvent);
}
@@ -10228,6 +10230,7 @@
public abstract class AbstractInputMethodService.AbstractInputMethodSessionImpl implements android.view.inputmethod.InputMethodSession {
ctor public AbstractInputMethodService.AbstractInputMethodSessionImpl();
+ method public void dispatchGenericMotionEvent(int, android.view.MotionEvent, android.view.inputmethod.InputMethodSession.EventCallback);
method public void dispatchKeyEvent(int, android.view.KeyEvent, android.view.inputmethod.InputMethodSession.EventCallback);
method public void dispatchTrackballEvent(int, android.view.MotionEvent, android.view.inputmethod.InputMethodSession.EventCallback);
method public boolean isEnabled();
@@ -18383,6 +18386,7 @@
field public static final java.lang.String INTENT_ACTION_MEDIA_SEARCH = "android.intent.action.MEDIA_SEARCH";
field public static final deprecated java.lang.String INTENT_ACTION_MUSIC_PLAYER = "android.intent.action.MUSIC_PLAYER";
field public static final java.lang.String INTENT_ACTION_STILL_IMAGE_CAMERA = "android.media.action.STILL_IMAGE_CAMERA";
+ field public static final java.lang.String INTENT_ACTION_STILL_IMAGE_CAMERA_SECURE = "android.media.action.STILL_IMAGE_CAMERA_SECURE";
field public static final java.lang.String INTENT_ACTION_VIDEO_CAMERA = "android.media.action.VIDEO_CAMERA";
field public static final java.lang.String MEDIA_IGNORE_FILENAME = ".nomedia";
field public static final java.lang.String MEDIA_SCANNER_VOLUME = "volume";
@@ -26695,6 +26699,7 @@
public abstract interface InputMethodSession {
method public abstract void appPrivateCommand(java.lang.String, android.os.Bundle);
+ method public abstract void dispatchGenericMotionEvent(int, android.view.MotionEvent, android.view.inputmethod.InputMethodSession.EventCallback);
method public abstract void dispatchKeyEvent(int, android.view.KeyEvent, android.view.inputmethod.InputMethodSession.EventCallback);
method public abstract void dispatchTrackballEvent(int, android.view.MotionEvent, android.view.inputmethod.InputMethodSession.EventCallback);
method public abstract void displayCompletions(android.view.inputmethod.CompletionInfo[]);
diff --git a/cmds/am/src/com/android/commands/am/Am.java b/cmds/am/src/com/android/commands/am/Am.java
index bb108c8..89287ad 100644
--- a/cmds/am/src/com/android/commands/am/Am.java
+++ b/cmds/am/src/com/android/commands/am/Am.java
@@ -63,7 +63,7 @@
private boolean mStopOption = false;
private int mRepeat = 0;
- private int mUserId = 0;
+ private int mUserId;
private String mProfileFile;
@@ -160,7 +160,7 @@
return userId;
}
- private Intent makeIntent() throws URISyntaxException {
+ private Intent makeIntent(int defUser) throws URISyntaxException {
Intent intent = new Intent();
Intent baseIntent = intent;
boolean hasIntentInfo = false;
@@ -170,7 +170,7 @@
mStopOption = false;
mRepeat = 0;
mProfileFile = null;
- mUserId = 0;
+ mUserId = defUser;
Uri data = null;
String type = null;
@@ -404,7 +404,7 @@
}
private void runStartService() throws Exception {
- Intent intent = makeIntent();
+ Intent intent = makeIntent(UserHandle.USER_CURRENT);
if (mUserId == UserHandle.USER_ALL) {
System.err.println("Error: Can't start activity with user 'all'");
return;
@@ -417,7 +417,7 @@
}
private void runStart() throws Exception {
- Intent intent = makeIntent();
+ Intent intent = makeIntent(UserHandle.USER_CURRENT);
if (mUserId == UserHandle.USER_ALL) {
System.err.println("Error: Can't start service with user 'all'");
@@ -456,7 +456,7 @@
packageName = activities.get(0).activityInfo.packageName;
}
System.out.println("Stopping: " + packageName);
- mAm.forceStopPackage(packageName);
+ mAm.forceStopPackage(packageName, mUserId);
Thread.sleep(250);
}
@@ -570,11 +570,33 @@
}
private void runForceStop() throws Exception {
- mAm.forceStopPackage(nextArgRequired());
+ int userId = UserHandle.USER_ALL;
+
+ String opt;
+ while ((opt=nextOption()) != null) {
+ if (opt.equals("--user")) {
+ userId = parseUserArg(nextArgRequired());
+ } else {
+ System.err.println("Error: Unknown option: " + opt);
+ return;
+ }
+ }
+ mAm.forceStopPackage(nextArgRequired(), userId);
}
private void runKill() throws Exception {
- mAm.killBackgroundProcesses(nextArgRequired());
+ int userId = UserHandle.USER_ALL;
+
+ String opt;
+ while ((opt=nextOption()) != null) {
+ if (opt.equals("--user")) {
+ userId = parseUserArg(nextArgRequired());
+ } else {
+ System.err.println("Error: Unknown option: " + opt);
+ return;
+ }
+ }
+ mAm.killBackgroundProcesses(nextArgRequired(), userId);
}
private void runKillAll() throws Exception {
@@ -582,7 +604,7 @@
}
private void sendBroadcast() throws Exception {
- Intent intent = makeIntent();
+ Intent intent = makeIntent(UserHandle.USER_ALL);
IntentReceiver receiver = new IntentReceiver();
System.out.println("Broadcasting: " + intent);
mAm.broadcastIntent(null, intent, null, receiver, 0, null, null, null, true, false,
@@ -595,7 +617,7 @@
boolean wait = false;
boolean rawMode = false;
boolean no_window_animation = false;
- int userId = 0;
+ int userId = UserHandle.USER_CURRENT;
Bundle args = new Bundle();
String argKey = null, argValue = null;
IWindowManager wm = IWindowManager.Stub.asInterface(ServiceManager.getService("window"));
@@ -672,17 +694,37 @@
String profileFile = null;
boolean start = false;
boolean wall = false;
+ int userId = UserHandle.USER_CURRENT;
int profileType = 0;
-
+
String process = null;
-
+
String cmd = nextArgRequired();
if ("start".equals(cmd)) {
start = true;
- wall = "--wall".equals(nextOption());
+ String opt;
+ while ((opt=nextOption()) != null) {
+ if (opt.equals("--user")) {
+ userId = parseUserArg(nextArgRequired());
+ } else if (opt.equals("--wall")) {
+ wall = true;
+ } else {
+ System.err.println("Error: Unknown option: " + opt);
+ return;
+ }
+ }
process = nextArgRequired();
} else if ("stop".equals(cmd)) {
+ String opt;
+ while ((opt=nextOption()) != null) {
+ if (opt.equals("--user")) {
+ userId = parseUserArg(nextArgRequired());
+ } else {
+ System.err.println("Error: Unknown option: " + opt);
+ return;
+ }
+ }
process = nextArg();
} else {
// Compatibility with old syntax: process is specified first.
@@ -694,7 +736,12 @@
throw new IllegalArgumentException("Profile command " + process + " not valid");
}
}
-
+
+ if (userId == UserHandle.USER_ALL) {
+ System.err.println("Error: Can't profile with user 'all'");
+ return;
+ }
+
ParcelFileDescriptor fd = null;
if (start) {
@@ -722,7 +769,7 @@
} else if (start) {
//removeWallOption();
}
- if (!mAm.profileControl(process, start, profileFile, fd, profileType)) {
+ if (!mAm.profileControl(process, userId, start, profileFile, fd, profileType)) {
wall = false;
throw new AndroidException("PROFILE FAILED on process " + process);
}
@@ -734,7 +781,24 @@
}
private void runDumpHeap() throws Exception {
- boolean managed = !"-n".equals(nextOption());
+ boolean managed = true;
+ int userId = UserHandle.USER_CURRENT;
+
+ String opt;
+ while ((opt=nextOption()) != null) {
+ if (opt.equals("--user")) {
+ userId = parseUserArg(nextArgRequired());
+ if (userId == UserHandle.USER_ALL) {
+ System.err.println("Error: Can't dump heap with user 'all'");
+ return;
+ }
+ } else if (opt.equals("-n")) {
+ managed = false;
+ } else {
+ System.err.println("Error: Unknown option: " + opt);
+ return;
+ }
+ }
String process = nextArgRequired();
String heapFile = nextArgRequired();
ParcelFileDescriptor fd = null;
@@ -750,7 +814,7 @@
return;
}
- if (!mAm.dumpHeap(process, managed, heapFile, fd)) {
+ if (!mAm.dumpHeap(process, userId, managed, heapFile, fd)) {
throw new AndroidException("HEAP DUMP FAILED on process " + process);
}
}
@@ -1204,7 +1268,7 @@
}
private void runToUri(boolean intentScheme) throws Exception {
- Intent intent = makeIntent();
+ Intent intent = makeIntent(UserHandle.USER_CURRENT);
System.out.println(intent.toUri(intentScheme ? Intent.URI_INTENT_SCHEME : 0));
}
@@ -1363,18 +1427,19 @@
System.err.println(
"usage: am [subcommand] [options]\n" +
"usage: am start [-D] [-W] [-P <FILE>] [--start-profiler <FILE>]\n" +
- " [--R COUNT] [-S] [--opengl-trace] <INTENT>\n" +
- " am startservice <INTENT>\n" +
- " am force-stop <PACKAGE>\n" +
- " am kill <PACKAGE>\n" +
+ " [--R COUNT] [-S] [--opengl-trace]\n" +
+ " [--user <USER_ID> | current] <INTENT>\n" +
+ " am startservice [--user <USER_ID> | current] <INTENT>\n" +
+ " am force-stop [--user <USER_ID> | all | current] <PACKAGE>\n" +
+ " am kill [--user <USER_ID> | all | current] <PACKAGE>\n" +
" am kill-all\n" +
- " am broadcast <INTENT>\n" +
+ " am broadcast [--user <USER_ID> | all | current] <INTENT>\n" +
" am instrument [-r] [-e <NAME> <VALUE>] [-p <FILE>] [-w]\n" +
- " [--user <USER_ID> | all | current]\n" +
+ " [--user <USER_ID> | current]\n" +
" [--no-window-animation] <COMPONENT>\n" +
- " am profile start <PROCESS> <FILE>\n" +
- " am profile stop [<PROCESS>]\n" +
- " am dumpheap [flags] <PROCESS> <FILE>\n" +
+ " am profile start [--user <USER_ID> current] <PROCESS> <FILE>\n" +
+ " am profile stop [--user <USER_ID> current] [<PROCESS>]\n" +
+ " am dumpheap [--user <USER_ID> current] [-n] <PROCESS> <FILE>\n" +
" am set-debug-app [-w] [--persistent] <PACKAGE>\n" +
" am clear-debug-app\n" +
" am monitor [--gdb <port>]\n" +
@@ -1395,18 +1460,28 @@
" the top activity will be finished.\n" +
" -S: force stop the target app before starting the activity\n" +
" --opengl-trace: enable tracing of OpenGL functions\n" +
+ " --user <USER_ID> | current: Specify which user to run as; if not\n" +
+ " specified then run as the current user.\n" +
"\n" +
- "am startservice: start a Service.\n" +
+ "am startservice: start a Service. Options are:\n" +
+ " --user <USER_ID> | current: Specify which user to run as; if not\n" +
+ " specified then run as the current user.\n" +
"\n" +
"am force-stop: force stop everything associated with <PACKAGE>.\n" +
+ " --user <USER_ID> | all | current: Specify user to force stop;\n" +
+ " all users if not specified.\n" +
"\n" +
"am kill: Kill all processes associated with <PACKAGE>. Only kills.\n" +
" processes that are safe to kill -- that is, will not impact the user\n" +
" experience.\n" +
+ " --user <USER_ID> | all | current: Specify user whose processes to kill;\n" +
+ " all users if not specified.\n" +
"\n" +
"am kill-all: Kill all background processes.\n" +
"\n" +
- "am broadcast: send a broadcast Intent.\n" +
+ "am broadcast: send a broadcast Intent. Options are:\n" +
+ " --user <USER_ID> | all | current: Specify which user to send to; if not\n" +
+ " specified then send to all users.\n" +
"\n" +
"am instrument: start an Instrumentation. Typically this target <COMPONENT>\n" +
" is the form <TEST_PACKAGE>/<RUNNER_CLASS>. Options are:\n" +
@@ -1417,13 +1492,20 @@
" -p <FILE>: write profiling data to <FILE>\n" +
" -w: wait for instrumentation to finish before returning. Required for\n" +
" test runners.\n" +
- " --user [<USER_ID> | all | current]: Specify user instrumentation runs in.\n" +
+ " --user <USER_ID> | current: Specify user instrumentation runs in;\n" +
+ " current user if not specified.\n" +
" --no-window-animation: turn off window animations will running.\n" +
"\n" +
- "am profile: start and stop profiler on a process.\n" +
+ "am profile: start and stop profiler on a process. The given <PROCESS> argument\n" +
+ " may be either a process name or pid. Options are:\n" +
+ " --user <USER_ID> | current: When supplying a process name,\n" +
+ " specify user of process to profile; uses current user if not specified.\n" +
"\n" +
- "am dumpheap: dump the heap of a process. Options are:\n" +
+ "am dumpheap: dump the heap of a process. The given <PROCESS> argument may\n" +
+ " be either a process name or pid. Options are:\n" +
" -n: dump native heap instead of managed heap\n" +
+ " --user <USER_ID> | current: When supplying a process name,\n" +
+ " specify user of process to dump; uses current user if not specified.\n" +
"\n" +
"am set-debug-app: set application <PACKAGE> to debug. Options are:\n" +
" -w: wait for debugger when application starts\n" +
@@ -1444,10 +1526,10 @@
"\n" +
"am to-intent-uri: print the given Intent specification as an intent: URI.\n" +
"\n" +
- "am switch-user: switch to put USER_ID in the foreground, starting" +
+ "am switch-user: switch to put USER_ID in the foreground, starting\n" +
" execution of that user if it is currently stopped.\n" +
"\n" +
- "am stop-user: stop execution of USER_ID, not allowing it to run any" +
+ "am stop-user: stop execution of USER_ID, not allowing it to run any\n" +
" code until a later explicit switch to it.\n" +
"\n" +
"<INTENT> specifications include these flags and arguments:\n" +
@@ -1465,7 +1547,6 @@
" [--ela <EXTRA_KEY> <EXTRA_LONG_VALUE>[,<EXTRA_LONG_VALUE...]]\n" +
" [--efa <EXTRA_KEY> <EXTRA_FLOAT_VALUE>[,<EXTRA_FLOAT_VALUE...]]\n" +
" [-n <COMPONENT>] [-f <FLAGS>]\n" +
- " [--user [<USER_ID> | all | current]\n" +
" [--grant-read-uri-permission] [--grant-write-uri-permission]\n" +
" [--debug-log-resolution] [--exclude-stopped-packages]\n" +
" [--include-stopped-packages]\n" +
diff --git a/cmds/input/src/com/android/commands/input/Input.java b/cmds/input/src/com/android/commands/input/Input.java
index 341f30f..a21df0d 100755
--- a/cmds/input/src/com/android/commands/input/Input.java
+++ b/cmds/input/src/com/android/commands/input/Input.java
@@ -66,15 +66,54 @@
}
} else if (command.equals("tap")) {
if (args.length == 3) {
- sendTap(Float.parseFloat(args[1]), Float.parseFloat(args[2]));
+ sendTap(InputDevice.SOURCE_TOUCHSCREEN, Float.parseFloat(args[1]), Float.parseFloat(args[2]));
return;
}
} else if (command.equals("swipe")) {
if (args.length == 5) {
- sendSwipe(Float.parseFloat(args[1]), Float.parseFloat(args[2]),
+ sendSwipe(InputDevice.SOURCE_TOUCHSCREEN, Float.parseFloat(args[1]), Float.parseFloat(args[2]),
Float.parseFloat(args[3]), Float.parseFloat(args[4]));
return;
}
+ } else if (command.equals("touchscreen") || command.equals("touchpad")) {
+ // determine input source
+ int inputSource = InputDevice.SOURCE_TOUCHSCREEN;
+ if (command.equals("touchpad")) {
+ inputSource = InputDevice.SOURCE_TOUCHPAD;
+ }
+ // determine subcommand
+ if (args.length > 1) {
+ String subcommand = args[1];
+ if (subcommand.equals("tap")) {
+ if (args.length == 4) {
+ sendTap(inputSource, Float.parseFloat(args[2]),
+ Float.parseFloat(args[3]));
+ return;
+ }
+ } else if (subcommand.equals("swipe")) {
+ if (args.length == 6) {
+ sendSwipe(inputSource, Float.parseFloat(args[2]),
+ Float.parseFloat(args[3]), Float.parseFloat(args[4]),
+ Float.parseFloat(args[5]));
+ return;
+ }
+ }
+ }
+ } else if (command.equals("trackball")) {
+ // determine subcommand
+ if (args.length > 1) {
+ String subcommand = args[1];
+ if (subcommand.equals("press")) {
+ sendTap(InputDevice.SOURCE_TRACKBALL, 0.0f, 0.0f);
+ return;
+ } else if (subcommand.equals("roll")) {
+ if (args.length == 4) {
+ sendMove(InputDevice.SOURCE_TRACKBALL, Float.parseFloat(args[2]),
+ Float.parseFloat(args[3]));
+ return;
+ }
+ }
+ }
} else {
System.err.println("Error: Unknown command: " + command);
showUsage();
@@ -127,33 +166,64 @@
KeyCharacterMap.VIRTUAL_KEYBOARD, 0, 0, InputDevice.SOURCE_KEYBOARD));
}
- private void sendTap(float x, float y) {
+ private void sendTap(int inputSource, float x, float y) {
long now = SystemClock.uptimeMillis();
- injectPointerEvent(MotionEvent.obtain(now, now, MotionEvent.ACTION_DOWN, x, y, 0));
- injectPointerEvent(MotionEvent.obtain(now, now, MotionEvent.ACTION_UP, x, y, 0));
+ injectMotionEvent(inputSource, MotionEvent.ACTION_DOWN, now, x, y, 1.0f);
+ injectMotionEvent(inputSource, MotionEvent.ACTION_UP, now, x, y, 0.0f);
}
- private void sendSwipe(float x1, float y1, float x2, float y2) {
+ private void sendSwipe(int inputSource, float x1, float y1, float x2, float y2) {
final int NUM_STEPS = 11;
long now = SystemClock.uptimeMillis();
- injectPointerEvent(MotionEvent.obtain(now, now, MotionEvent.ACTION_DOWN, x1, y1, 0));
+ injectMotionEvent(inputSource, MotionEvent.ACTION_DOWN, now, x1, y1, 1.0f);
for (int i = 1; i < NUM_STEPS; i++) {
- float alpha = (float)i / NUM_STEPS;
- injectPointerEvent(MotionEvent.obtain(now, now, MotionEvent.ACTION_MOVE,
- lerp(x1, x2, alpha), lerp(y1, y2, alpha), 0));
+ float alpha = (float) i / NUM_STEPS;
+ injectMotionEvent(inputSource, MotionEvent.ACTION_MOVE, now, lerp(x1, x2, alpha),
+ lerp(y1, y2, alpha), 1.0f);
}
- injectPointerEvent(MotionEvent.obtain(now, now, MotionEvent.ACTION_UP, x2, y2, 0));
+ injectMotionEvent(inputSource, MotionEvent.ACTION_UP, now, x1, y1, 0.0f);
+ }
+
+ /**
+ * Sends a simple zero-pressure move event.
+ *
+ * @param inputSource the InputDevice.SOURCE_* sending the input event
+ * @param dx change in x coordinate due to move
+ * @param dy change in y coordinate due to move
+ */
+ private void sendMove(int inputSource, float dx, float dy) {
+ long now = SystemClock.uptimeMillis();
+ injectMotionEvent(inputSource, MotionEvent.ACTION_MOVE, now, dx, dy, 0.0f);
}
private void injectKeyEvent(KeyEvent event) {
- Log.i(TAG, "InjectKeyEvent: " + event);
+ Log.i(TAG, "injectKeyEvent: " + event);
InputManager.getInstance().injectInputEvent(event,
InputManager.INJECT_INPUT_EVENT_MODE_WAIT_FOR_FINISH);
}
- private void injectPointerEvent(MotionEvent event) {
- event.setSource(InputDevice.SOURCE_TOUCHSCREEN);
- Log.i("Input", "InjectPointerEvent: " + event);
+ /**
+ * Builds a MotionEvent and injects it into the event stream.
+ *
+ * @param inputSource the InputDevice.SOURCE_* sending the input event
+ * @param action the MotionEvent.ACTION_* for the event
+ * @param when the value of SystemClock.uptimeMillis() at which the event happened
+ * @param x x coordinate of event
+ * @param y y coordinate of event
+ * @param pressure pressure of event
+ */
+ private void injectMotionEvent(int inputSource, int action, long when, float x, float y, float pressure) {
+ final float DEFAULT_SIZE = 1.0f;
+ final int DEFAULT_META_STATE = 0;
+ final float DEFAULT_PRECISION_X = 1.0f;
+ final float DEFAULT_PRECISION_Y = 1.0f;
+ final int DEFAULT_DEVICE_ID = 0;
+ final int DEFAULT_EDGE_FLAGS = 0;
+ MotionEvent event = MotionEvent.obtain(when, when, action, x, y, pressure, DEFAULT_SIZE,
+ DEFAULT_META_STATE, DEFAULT_PRECISION_X, DEFAULT_PRECISION_Y, DEFAULT_DEVICE_ID,
+ DEFAULT_EDGE_FLAGS);
+ event.setSource(inputSource);
+ Log.i("Input", "injectMotionEvent: " + event);
InputManager.getInstance().injectInputEvent(event,
InputManager.INJECT_INPUT_EVENT_MODE_WAIT_FOR_FINISH);
}
@@ -166,7 +236,9 @@
System.err.println("usage: input ...");
System.err.println(" input text <string>");
System.err.println(" input keyevent <key code number or name>");
- System.err.println(" input tap <x> <y>");
- System.err.println(" input swipe <x1> <y1> <x2> <y2>");
+ System.err.println(" input [touchscreen|touchpad] tap <x> <y>");
+ System.err.println(" input [touchscreen|touchpad] swipe <x1> <y1> <x2> <y2>");
+ System.err.println(" input trackball press");
+ System.err.println(" input trackball roll <dx> <dy>");
}
}
diff --git a/cmds/svc/src/com/android/commands/svc/PowerCommand.java b/cmds/svc/src/com/android/commands/svc/PowerCommand.java
index ec3ec3e..58105fa 100644
--- a/cmds/svc/src/com/android/commands/svc/PowerCommand.java
+++ b/cmds/svc/src/com/android/commands/svc/PowerCommand.java
@@ -16,14 +16,12 @@
package com.android.commands.svc;
-import android.os.Binder;
-import android.os.IBinder;
-import android.os.IPowerManager;
-import android.os.PowerManager;
-import android.os.ServiceManager;
-import android.os.RemoteException;
-import android.os.BatteryManager;
import android.content.Context;
+import android.os.BatteryManager;
+import android.os.IPowerManager;
+import android.os.RemoteException;
+import android.os.ServiceManager;
+import android.os.SystemClock;
public class PowerCommand extends Svc.Command {
public PowerCommand() {
@@ -65,10 +63,12 @@
IPowerManager pm
= IPowerManager.Stub.asInterface(ServiceManager.getService(Context.POWER_SERVICE));
try {
- IBinder lock = new Binder();
- pm.acquireWakeLock(lock, PowerManager.FULL_WAKE_LOCK, "svc power", null);
+ if (val != 0) {
+ // if the request is not to set it to false, wake up the screen so that
+ // it can stay on as requested
+ pm.wakeUp(SystemClock.uptimeMillis());
+ }
pm.setStayOnSetting(val);
- pm.releaseWakeLock(lock, 0);
}
catch (RemoteException e) {
System.err.println("Faild to set setting: " + e);
diff --git a/core/java/android/animation/Keyframe.java b/core/java/android/animation/Keyframe.java
index e98719a..dc8538f 100644
--- a/core/java/android/animation/Keyframe.java
+++ b/core/java/android/animation/Keyframe.java
@@ -261,7 +261,7 @@
@Override
public ObjectKeyframe clone() {
- ObjectKeyframe kfClone = new ObjectKeyframe(getFraction(), mValue);
+ ObjectKeyframe kfClone = new ObjectKeyframe(getFraction(), mHasValue ? mValue : null);
kfClone.setInterpolator(getInterpolator());
return kfClone;
}
@@ -306,7 +306,9 @@
@Override
public IntKeyframe clone() {
- IntKeyframe kfClone = new IntKeyframe(getFraction(), mValue);
+ IntKeyframe kfClone = mHasValue ?
+ new IntKeyframe(getFraction(), mValue) :
+ new IntKeyframe(getFraction());
kfClone.setInterpolator(getInterpolator());
return kfClone;
}
@@ -350,7 +352,9 @@
@Override
public FloatKeyframe clone() {
- FloatKeyframe kfClone = new FloatKeyframe(getFraction(), mValue);
+ FloatKeyframe kfClone = mHasValue ?
+ new FloatKeyframe(getFraction(), mValue) :
+ new FloatKeyframe(getFraction());
kfClone.setInterpolator(getInterpolator());
return kfClone;
}
diff --git a/core/java/android/app/ActivityManager.java b/core/java/android/app/ActivityManager.java
index bb3c56a..06f79e7 100644
--- a/core/java/android/app/ActivityManager.java
+++ b/core/java/android/app/ActivityManager.java
@@ -1693,7 +1693,8 @@
*/
public void killBackgroundProcesses(String packageName) {
try {
- ActivityManagerNative.getDefault().killBackgroundProcesses(packageName);
+ ActivityManagerNative.getDefault().killBackgroundProcesses(packageName,
+ UserHandle.myUserId());
} catch (RemoteException e) {
}
}
@@ -1718,7 +1719,8 @@
*/
public void forceStopPackage(String packageName) {
try {
- ActivityManagerNative.getDefault().forceStopPackage(packageName);
+ ActivityManagerNative.getDefault().forceStopPackage(packageName,
+ UserHandle.myUserId());
} catch (RemoteException e) {
}
}
diff --git a/core/java/android/app/ActivityManagerNative.java b/core/java/android/app/ActivityManagerNative.java
index e5dd7b1..bf77f6e 100644
--- a/core/java/android/app/ActivityManagerNative.java
+++ b/core/java/android/app/ActivityManagerNative.java
@@ -1214,7 +1214,8 @@
case KILL_BACKGROUND_PROCESSES_TRANSACTION: {
data.enforceInterface(IActivityManager.descriptor);
String packageName = data.readString();
- killBackgroundProcesses(packageName);
+ int userId = data.readInt();
+ killBackgroundProcesses(packageName, userId);
reply.writeNoException();
return true;
}
@@ -1229,7 +1230,8 @@
case FORCE_STOP_PACKAGE_TRANSACTION: {
data.enforceInterface(IActivityManager.descriptor);
String packageName = data.readString();
- forceStopPackage(packageName);
+ int userId = data.readInt();
+ forceStopPackage(packageName, userId);
reply.writeNoException();
return true;
}
@@ -1255,12 +1257,13 @@
case PROFILE_CONTROL_TRANSACTION: {
data.enforceInterface(IActivityManager.descriptor);
String process = data.readString();
+ int userId = data.readInt();
boolean start = data.readInt() != 0;
int profileType = data.readInt();
String path = data.readString();
ParcelFileDescriptor fd = data.readInt() != 0
? data.readFileDescriptor() : null;
- boolean res = profileControl(process, start, path, fd, profileType);
+ boolean res = profileControl(process, userId, start, path, fd, profileType);
reply.writeNoException();
reply.writeInt(res ? 1 : 0);
return true;
@@ -1484,9 +1487,10 @@
String process = data.readString();
boolean managed = data.readInt() != 0;
String path = data.readString();
+ int userId = data.readInt();
ParcelFileDescriptor fd = data.readInt() != 0
? data.readFileDescriptor() : null;
- boolean res = dumpHeap(process, managed, path, fd);
+ boolean res = dumpHeap(process, userId, managed, path, fd);
reply.writeNoException();
reply.writeInt(res ? 1 : 0);
return true;
@@ -3264,11 +3268,12 @@
reply.recycle();
}
- public void killBackgroundProcesses(String packageName) throws RemoteException {
+ public void killBackgroundProcesses(String packageName, int userId) throws RemoteException {
Parcel data = Parcel.obtain();
Parcel reply = Parcel.obtain();
data.writeInterfaceToken(IActivityManager.descriptor);
data.writeString(packageName);
+ data.writeInt(userId);
mRemote.transact(KILL_BACKGROUND_PROCESSES_TRANSACTION, data, reply, 0);
reply.readException();
data.recycle();
@@ -3285,11 +3290,12 @@
reply.recycle();
}
- public void forceStopPackage(String packageName) throws RemoteException {
+ public void forceStopPackage(String packageName, int userId) throws RemoteException {
Parcel data = Parcel.obtain();
Parcel reply = Parcel.obtain();
data.writeInterfaceToken(IActivityManager.descriptor);
data.writeString(packageName);
+ data.writeInt(userId);
mRemote.transact(FORCE_STOP_PACKAGE_TRANSACTION, data, reply, 0);
reply.readException();
data.recycle();
@@ -3322,13 +3328,14 @@
return res;
}
- public boolean profileControl(String process, boolean start,
+ public boolean profileControl(String process, int userId, boolean start,
String path, ParcelFileDescriptor fd, int profileType) throws RemoteException
{
Parcel data = Parcel.obtain();
Parcel reply = Parcel.obtain();
data.writeInterfaceToken(IActivityManager.descriptor);
data.writeString(process);
+ data.writeInt(userId);
data.writeInt(start ? 1 : 0);
data.writeInt(profileType);
data.writeString(path);
@@ -3601,12 +3608,13 @@
return res;
}
- public boolean dumpHeap(String process, boolean managed,
+ public boolean dumpHeap(String process, int userId, boolean managed,
String path, ParcelFileDescriptor fd) throws RemoteException {
Parcel data = Parcel.obtain();
Parcel reply = Parcel.obtain();
data.writeInterfaceToken(IActivityManager.descriptor);
data.writeString(process);
+ data.writeInt(userId);
data.writeInt(managed ? 1 : 0);
data.writeString(path);
if (fd != null) {
diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java
index 38e6970..09fa99c 100644
--- a/core/java/android/app/ActivityThread.java
+++ b/core/java/android/app/ActivityThread.java
@@ -4066,7 +4066,8 @@
// send up app name; do this *before* waiting for debugger
Process.setArgV0(data.processName);
- android.ddm.DdmHandleAppName.setAppName(data.processName);
+ android.ddm.DdmHandleAppName.setAppName(data.processName,
+ UserHandle.myUserId());
if (data.persistent) {
// Persistent processes on low-memory devices do not get to
@@ -4792,7 +4793,8 @@
ensureJitEnabled();
}
});
- android.ddm.DdmHandleAppName.setAppName("<pre-initialized>");
+ android.ddm.DdmHandleAppName.setAppName("<pre-initialized>",
+ UserHandle.myUserId());
RuntimeInit.setApplicationObject(mAppThread.asBinder());
IActivityManager mgr = ActivityManagerNative.getDefault();
try {
@@ -4803,7 +4805,8 @@
} else {
// Don't set application object here -- if the system crashes,
// we can't display an alert, we just want to die die die.
- android.ddm.DdmHandleAppName.setAppName("system_process");
+ android.ddm.DdmHandleAppName.setAppName("system_process",
+ UserHandle.myUserId());
try {
mInstrumentation = new Instrumentation();
ContextImpl context = new ContextImpl();
diff --git a/core/java/android/app/Fragment.java b/core/java/android/app/Fragment.java
index 3ff9df5..c5a382d 100644
--- a/core/java/android/app/Fragment.java
+++ b/core/java/android/app/Fragment.java
@@ -615,7 +615,7 @@
+ " did not call through to super.onViewStateRestored()");
}
}
-
+
final void setIndex(int index, Fragment parent) {
mIndex = index;
if (parent != null) {
@@ -623,8 +623,8 @@
} else {
mWho = "android:fragment:" + mIndex;
}
- }
-
+ }
+
final boolean isInBackStack() {
return mBackStackNesting > 0;
}
@@ -832,6 +832,14 @@
}
/**
+ * Returns the parent Fragment containing this Fragment. If this Fragment
+ * is attached directly to an Activity, returns null.
+ */
+ final public Fragment getParentFragment() {
+ return mParentFragment;
+ }
+
+ /**
* Return true if the fragment is currently added to its activity.
*/
final public boolean isAdded() {
@@ -1180,20 +1188,7 @@
public void onCreate(Bundle savedInstanceState) {
mCalled = true;
}
-
- /**
- * Called immediately after {@link #onCreateView(LayoutInflater, ViewGroup, Bundle)}
- * has returned, but before any saved state has been restored in to the view.
- * This gives subclasses a chance to initialize themselves once
- * they know their view hierarchy has been completely created. The fragment's
- * view hierarchy is not however attached to its parent at this point.
- * @param view The View returned by {@link #onCreateView(LayoutInflater, ViewGroup, Bundle)}.
- * @param savedInstanceState If non-null, this fragment is being re-constructed
- * from a previous saved state as given here.
- */
- public void onViewCreated(View view, Bundle savedInstanceState) {
- }
-
+
/**
* Called to have the fragment instantiate its user interface view.
* This is optional, and non-graphical fragments can return null (which
@@ -1217,6 +1212,19 @@
Bundle savedInstanceState) {
return null;
}
+
+ /**
+ * Called immediately after {@link #onCreateView(LayoutInflater, ViewGroup, Bundle)}
+ * has returned, but before any saved state has been restored in to the view.
+ * This gives subclasses a chance to initialize themselves once
+ * they know their view hierarchy has been completely created. The fragment's
+ * view hierarchy is not however attached to its parent at this point.
+ * @param view The View returned by {@link #onCreateView(LayoutInflater, ViewGroup, Bundle)}.
+ * @param savedInstanceState If non-null, this fragment is being re-constructed
+ * from a previous saved state as given here.
+ */
+ public void onViewCreated(View view, Bundle savedInstanceState) {
+ }
/**
* Get the root view for the fragment's layout (the one returned by {@link #onCreateView}),
@@ -1237,7 +1245,7 @@
* as this callback tells the fragment when it is fully associated with
* the new activity instance. This is called after {@link #onCreateView}
* and before {@link #onViewStateRestored(Bundle)}.
- *
+ *
* @param savedInstanceState If the fragment is being re-created from
* a previous saved state, this is the state.
*/
@@ -1252,7 +1260,7 @@
* whether check box widgets are currently checked. This is called
* after {@link #onActivityCreated(Bundle)} and before
* {@link #onStart()}.
- *
+ *
* @param savedInstanceState If the fragment is being re-created from
* a previous saved state, this is the state.
*/
@@ -1590,10 +1598,6 @@
writer.print(prefix); writer.print("mActivity=");
writer.println(mActivity);
}
- if (mChildFragmentManager != null) {
- writer.print(prefix); writer.print("mChildFragmentManager=");
- writer.println(mChildFragmentManager);
- }
if (mParentFragment != null) {
writer.print(prefix); writer.print("mParentFragment=");
writer.println(mParentFragment);
@@ -1633,7 +1637,7 @@
mLoaderManager.dump(prefix + " ", fd, writer, args);
}
if (mChildFragmentManager != null) {
- writer.print(prefix); writer.println("Child Fragment Manager:");
+ writer.print(prefix); writer.println("Child " + mChildFragmentManager + ":");
mChildFragmentManager.dump(prefix + " ", fd, writer, args);
}
}
@@ -1662,6 +1666,9 @@
}
void performCreate(Bundle savedInstanceState) {
+ if (mChildFragmentManager != null) {
+ mChildFragmentManager.noteStateNotSaved();
+ }
mCalled = false;
onCreate(savedInstanceState);
if (!mCalled) {
@@ -1680,7 +1687,18 @@
}
}
+ View performCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ if (mChildFragmentManager != null) {
+ mChildFragmentManager.noteStateNotSaved();
+ }
+ return onCreateView(inflater, container, savedInstanceState);
+ }
+
void performActivityCreated(Bundle savedInstanceState) {
+ if (mChildFragmentManager != null) {
+ mChildFragmentManager.noteStateNotSaved();
+ }
mCalled = false;
onActivityCreated(savedInstanceState);
if (!mCalled) {
@@ -1713,6 +1731,7 @@
void performResume() {
if (mChildFragmentManager != null) {
+ mChildFragmentManager.noteStateNotSaved();
mChildFragmentManager.execPendingActions();
}
mCalled = false;
diff --git a/core/java/android/app/FragmentManager.java b/core/java/android/app/FragmentManager.java
index eaaf0d7..7f11437 100644
--- a/core/java/android/app/FragmentManager.java
+++ b/core/java/android/app/FragmentManager.java
@@ -834,7 +834,9 @@
throw new SuperNotCalledException("Fragment " + f
+ " did not call through to super.onAttach()");
}
- mActivity.onAttachFragment(f);
+ if (f.mParentFragment == null) {
+ mActivity.onAttachFragment(f);
+ }
if (!f.mRetaining) {
f.performCreate(f.mSavedFragmentState);
@@ -844,8 +846,8 @@
// For fragments that are part of the content view
// layout, we need to instantiate the view immediately
// and the inflater will take care of adding it.
- f.mView = f.onCreateView(f.getLayoutInflater(f.mSavedFragmentState),
- null, f.mSavedFragmentState);
+ f.mView = f.performCreateView(f.getLayoutInflater(
+ f.mSavedFragmentState), null, f.mSavedFragmentState);
if (f.mView != null) {
f.mView.setSaveFromParentEnabled(false);
if (f.mHidden) f.mView.setVisibility(View.GONE);
@@ -868,8 +870,8 @@
}
}
f.mContainer = container;
- f.mView = f.onCreateView(f.getLayoutInflater(f.mSavedFragmentState),
- container, f.mSavedFragmentState);
+ f.mView = f.performCreateView(f.getLayoutInflater(
+ f.mSavedFragmentState), container, f.mSavedFragmentState);
if (f.mView != null) {
f.mView.setSaveFromParentEnabled(false);
if (container != null) {
@@ -885,7 +887,7 @@
f.onViewCreated(f.mView, f.mSavedFragmentState);
}
}
-
+
f.performActivityCreated(f.mSavedFragmentState);
if (f.mView != null) {
f.restoreViewState(f.mSavedFragmentState);
@@ -1824,7 +1826,7 @@
public void dispatchDestroyView() {
moveToState(Fragment.CREATED, false);
}
-
+
public void dispatchDestroy() {
mDestroyed = true;
execPendingActions();
diff --git a/core/java/android/app/IActivityManager.java b/core/java/android/app/IActivityManager.java
index 9cb3621..4c0e2a7 100644
--- a/core/java/android/app/IActivityManager.java
+++ b/core/java/android/app/IActivityManager.java
@@ -208,9 +208,10 @@
public void getMemoryInfo(ActivityManager.MemoryInfo outInfo) throws RemoteException;
- public void killBackgroundProcesses(final String packageName) throws RemoteException;
+ public void killBackgroundProcesses(final String packageName, int userId)
+ throws RemoteException;
public void killAllBackgroundProcesses() throws RemoteException;
- public void forceStopPackage(final String packageName) throws RemoteException;
+ public void forceStopPackage(final String packageName, int userId) throws RemoteException;
// Note: probably don't want to allow applications access to these.
public void goingToSleep() throws RemoteException;
@@ -267,7 +268,7 @@
public ConfigurationInfo getDeviceConfigurationInfo() throws RemoteException;
// Turn on/off profiling in a particular process.
- public boolean profileControl(String process, boolean start,
+ public boolean profileControl(String process, int userId, boolean start,
String path, ParcelFileDescriptor fd, int profileType) throws RemoteException;
public boolean shutdown(int timeout) throws RemoteException;
@@ -308,7 +309,7 @@
Uri uri, int modeFlags) throws RemoteException;
// Cause the specified process to dump the specified heap.
- public boolean dumpHeap(String process, boolean managed, String path,
+ public boolean dumpHeap(String process, int userId, boolean managed, String path,
ParcelFileDescriptor fd) throws RemoteException;
public int startActivities(IApplicationThread caller,
diff --git a/core/java/android/appwidget/AppWidgetManager.java b/core/java/android/appwidget/AppWidgetManager.java
index 810e790..2df675e 100644
--- a/core/java/android/appwidget/AppWidgetManager.java
+++ b/core/java/android/appwidget/AppWidgetManager.java
@@ -237,8 +237,9 @@
/**
* Sent when the custom extras for an AppWidget change.
*
- * @see AppWidgetProvider#onAppWidgetExtrasChanged AppWidgetProvider#onAppWidgetExtrasChanged(
- * Context context, AppWidgetManager appWidgetManager, int appWidgetId, Bundle newExtras)
+ * @see AppWidgetProvider#onAppWidgetOptionsChanged
+ * AppWidgetProvider.onAppWidgetOptionsChanged(Context context,
+ * AppWidgetManager appWidgetManager, int appWidgetId, Bundle newExtras)
*/
public static final String ACTION_APPWIDGET_OPTIONS_CHANGED = "android.appwidget.action.APPWIDGET_UPDATE_OPTIONS";
diff --git a/core/java/android/ddm/DdmHandleAppName.java b/core/java/android/ddm/DdmHandleAppName.java
index 78dd23e..7e39e47 100644
--- a/core/java/android/ddm/DdmHandleAppName.java
+++ b/core/java/android/ddm/DdmHandleAppName.java
@@ -69,14 +69,14 @@
* before or after DDMS connects. For the latter we need to send up
* an APNM message.
*/
- public static void setAppName(String name) {
+ public static void setAppName(String name, int userId) {
if (name == null || name.length() == 0)
return;
mAppName = name;
// if DDMS is already connected, send the app name up
- sendAPNM(name);
+ sendAPNM(name, userId);
}
public static String getAppName() {
@@ -86,14 +86,18 @@
/*
* Send an APNM (APplication NaMe) chunk.
*/
- private static void sendAPNM(String appName) {
+ private static void sendAPNM(String appName, int userId) {
if (false)
Log.v("ddm", "Sending app name");
- ByteBuffer out = ByteBuffer.allocate(4 + appName.length()*2);
+ ByteBuffer out = ByteBuffer.allocate(
+ 4 /* appName's length */
+ + appName.length()*2 /* appName */
+ + 4 /* userId */);
out.order(ChunkHandler.CHUNK_ORDER);
out.putInt(appName.length());
putString(out, appName);
+ out.putInt(userId);
Chunk chunk = new Chunk(CHUNK_APNM, out);
DdmServer.sendChunk(chunk);
diff --git a/core/java/android/ddm/DdmHandleHello.java b/core/java/android/ddm/DdmHandleHello.java
index 5088d22..e99fa92 100644
--- a/core/java/android/ddm/DdmHandleHello.java
+++ b/core/java/android/ddm/DdmHandleHello.java
@@ -21,6 +21,7 @@
import org.apache.harmony.dalvik.ddmc.DdmServer;
import android.util.Log;
import android.os.Debug;
+import android.os.UserHandle;
import java.nio.ByteBuffer;
@@ -119,7 +120,7 @@
// appName = "unknown";
String appName = DdmHandleAppName.getAppName();
- ByteBuffer out = ByteBuffer.allocate(16
+ ByteBuffer out = ByteBuffer.allocate(20
+ vmIdent.length()*2 + appName.length()*2);
out.order(ChunkHandler.CHUNK_ORDER);
out.putInt(DdmServer.CLIENT_PROTOCOL_VERSION);
@@ -128,6 +129,7 @@
out.putInt(appName.length());
putString(out, vmIdent);
putString(out, appName);
+ out.putInt(UserHandle.myUserId());
Chunk reply = new Chunk(CHUNK_HELO, out);
diff --git a/core/java/android/inputmethodservice/AbstractInputMethodService.java b/core/java/android/inputmethodservice/AbstractInputMethodService.java
index 27af013..3c3182a 100644
--- a/core/java/android/inputmethodservice/AbstractInputMethodService.java
+++ b/core/java/android/inputmethodservice/AbstractInputMethodService.java
@@ -149,6 +149,17 @@
callback.finishedEvent(seq, handled);
}
}
+
+ /**
+ * Take care of dispatching incoming generic motion events to the appropriate
+ * callbacks on the service, and tell the client when this is done.
+ */
+ public void dispatchGenericMotionEvent(int seq, MotionEvent event, EventCallback callback) {
+ boolean handled = onGenericMotionEvent(event);
+ if (callback != null) {
+ callback.finishedEvent(seq, handled);
+ }
+ }
}
/**
@@ -189,7 +200,25 @@
return new IInputMethodWrapper(this, mInputMethod);
}
+ /**
+ * Implement this to handle trackball events on your input method.
+ *
+ * @param event The motion event being received.
+ * @return True if the event was handled in this function, false otherwise.
+ * @see View#onTrackballEvent
+ */
public boolean onTrackballEvent(MotionEvent event) {
return false;
}
+
+ /**
+ * Implement this to handle generic motion events on your input method.
+ *
+ * @param event The motion event being received.
+ * @return True if the event was handled in this function, false otherwise.
+ * @see View#onGenericMotionEvent
+ */
+ public boolean onGenericMotionEvent(MotionEvent event) {
+ return false;
+ }
}
diff --git a/core/java/android/inputmethodservice/IInputMethodSessionWrapper.java b/core/java/android/inputmethodservice/IInputMethodSessionWrapper.java
index ce797d1..5324f81 100644
--- a/core/java/android/inputmethodservice/IInputMethodSessionWrapper.java
+++ b/core/java/android/inputmethodservice/IInputMethodSessionWrapper.java
@@ -43,6 +43,7 @@
private static final int DO_UPDATE_EXTRACTED_TEXT = 67;
private static final int DO_DISPATCH_KEY_EVENT = 70;
private static final int DO_DISPATCH_TRACKBALL_EVENT = 80;
+ private static final int DO_DISPATCH_GENERIC_MOTION_EVENT = 85;
private static final int DO_UPDATE_SELECTION = 90;
private static final int DO_UPDATE_CURSOR = 95;
private static final int DO_APP_PRIVATE_COMMAND = 100;
@@ -109,6 +110,15 @@
args.recycle();
return;
}
+ case DO_DISPATCH_GENERIC_MOTION_EVENT: {
+ SomeArgs args = (SomeArgs)msg.obj;
+ mInputMethodSession.dispatchGenericMotionEvent(msg.arg1,
+ (MotionEvent)args.arg1,
+ new InputMethodEventCallbackWrapper(
+ (IInputMethodCallback)args.arg2));
+ args.recycle();
+ return;
+ }
case DO_UPDATE_SELECTION: {
SomeArgs args = (SomeArgs)msg.obj;
mInputMethodSession.updateSelection(args.argi1, args.argi2,
@@ -167,6 +177,12 @@
event, callback));
}
+ public void dispatchGenericMotionEvent(int seq, MotionEvent event,
+ IInputMethodCallback callback) {
+ mCaller.executeOrSendMessage(mCaller.obtainMessageIOO(DO_DISPATCH_GENERIC_MOTION_EVENT, seq,
+ event, callback));
+ }
+
public void updateSelection(int oldSelStart, int oldSelEnd,
int newSelStart, int newSelEnd, int candidatesStart, int candidatesEnd) {
mCaller.executeOrSendMessage(mCaller.obtainMessageIIIIII(DO_UPDATE_SELECTION,
diff --git a/core/java/android/inputmethodservice/InputMethodService.java b/core/java/android/inputmethodservice/InputMethodService.java
index d5b9edc..cf3b802 100644
--- a/core/java/android/inputmethodservice/InputMethodService.java
+++ b/core/java/android/inputmethodservice/InputMethodService.java
@@ -1773,7 +1773,7 @@
* Override this to intercept special key multiple events before they are
* processed by the
* application. If you return true, the application will not itself
- * process the event. If you return true, the normal application processing
+ * process the event. If you return false, the normal application processing
* will occur as if the IME had not seen the event at all.
*
* <p>The default implementation always returns false, except when
@@ -1788,7 +1788,7 @@
/**
* Override this to intercept key up events before they are processed by the
* application. If you return true, the application will not itself
- * process the event. If you return true, the normal application processing
+ * process the event. If you return false, the normal application processing
* will occur as if the IME had not seen the event at all.
*
* <p>The default implementation intercepts {@link KeyEvent#KEYCODE_BACK
@@ -1806,8 +1806,29 @@
return doMovementKey(keyCode, event, MOVEMENT_UP);
}
+ /**
+ * Override this to intercept trackball motion events before they are
+ * processed by the application.
+ * If you return true, the application will not itself process the event.
+ * If you return false, the normal application processing will occur as if
+ * the IME had not seen the event at all.
+ */
@Override
public boolean onTrackballEvent(MotionEvent event) {
+ if (DEBUG) Log.v(TAG, "onTrackballEvent: " + event);
+ return false;
+ }
+
+ /**
+ * Override this to intercept generic motion events before they are
+ * processed by the application.
+ * If you return true, the application will not itself process the event.
+ * If you return false, the normal application processing will occur as if
+ * the IME had not seen the event at all.
+ */
+ @Override
+ public boolean onGenericMotionEvent(MotionEvent event) {
+ if (DEBUG) Log.v(TAG, "onGenericMotionEvent(): event " + event);
return false;
}
diff --git a/core/java/android/os/UserHandle.java b/core/java/android/os/UserHandle.java
index fff7d5f..7e4666c 100644
--- a/core/java/android/os/UserHandle.java
+++ b/core/java/android/os/UserHandle.java
@@ -40,7 +40,7 @@
/** @hide A user id to indicate that we would like to send to the current
* user, but if this is calling from a user process then we will send it
* to the caller's user instead of failing wiht a security exception */
- public static final int USER_CURRENT_OR_SELF = -2;
+ public static final int USER_CURRENT_OR_SELF = -3;
/** @hide A user handle to indicate that we would like to send to the current
* user, but if this is calling from a user process then we will send it
diff --git a/core/java/android/provider/MediaStore.java b/core/java/android/provider/MediaStore.java
index 48d84c1..3c2d164 100644
--- a/core/java/android/provider/MediaStore.java
+++ b/core/java/android/provider/MediaStore.java
@@ -183,8 +183,6 @@
* on top of the lock screen while secured. There is no activity stack when
* this flag is used, so launching more than one activity is strongly
* discouraged.
- *
- * @hide
*/
public static final String INTENT_ACTION_STILL_IMAGE_CAMERA_SECURE =
"android.media.action.STILL_IMAGE_CAMERA_SECURE";
diff --git a/core/java/android/view/InputEventConsistencyVerifier.java b/core/java/android/view/InputEventConsistencyVerifier.java
index fafe416..5dda934 100644
--- a/core/java/android/view/InputEventConsistencyVerifier.java
+++ b/core/java/android/view/InputEventConsistencyVerifier.java
@@ -322,7 +322,7 @@
final int action = event.getAction();
final boolean newStream = action == MotionEvent.ACTION_DOWN
- || action == MotionEvent.ACTION_CANCEL;
+ || action == MotionEvent.ACTION_CANCEL || action == MotionEvent.ACTION_OUTSIDE;
if (newStream && (mTouchEventStreamIsTainted || mTouchEventStreamUnhandled)) {
mTouchEventStreamIsTainted = false;
mTouchEventStreamUnhandled = false;
diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java
index a4c0235..3006b5d 100644
--- a/core/java/android/view/ViewRootImpl.java
+++ b/core/java/android/view/ViewRootImpl.java
@@ -3211,6 +3211,33 @@
mInputEventConsistencyVerifier.onTrackballEvent(event, 0);
}
+ if (mView != null && mAdded && (q.mFlags & QueuedInputEvent.FLAG_DELIVER_POST_IME) == 0) {
+ if (LOCAL_LOGV)
+ Log.v(TAG, "Dispatching trackball " + event + " to " + mView);
+
+ // Dispatch to the IME before propagating down the view hierarchy.
+ // The IME will eventually call back into handleImeFinishedEvent.
+ if (mLastWasImTarget) {
+ InputMethodManager imm = InputMethodManager.peekInstance();
+ if (imm != null) {
+ final int seq = event.getSequenceNumber();
+ if (DEBUG_IMF)
+ Log.v(TAG, "Sending trackball event to IME: seq="
+ + seq + " event=" + event);
+ imm.dispatchTrackballEvent(mView.getContext(), seq, event,
+ mInputMethodCallback);
+ return;
+ }
+ }
+ }
+
+ // Not dispatching to IME, continue with post IME actions.
+ deliverTrackballEventPostIme(q);
+ }
+
+ private void deliverTrackballEventPostIme(QueuedInputEvent q) {
+ final MotionEvent event = (MotionEvent) q.mEvent;
+
// If there is no view, then the event will not be handled.
if (mView == null || !mAdded) {
finishInputEvent(q, false);
@@ -3344,8 +3371,33 @@
mInputEventConsistencyVerifier.onGenericMotionEvent(event, 0);
}
- final int source = event.getSource();
- final boolean isJoystick = (source & InputDevice.SOURCE_CLASS_JOYSTICK) != 0;
+ if (mView != null && mAdded && (q.mFlags & QueuedInputEvent.FLAG_DELIVER_POST_IME) == 0) {
+ if (LOCAL_LOGV)
+ Log.v(TAG, "Dispatching generic motion " + event + " to " + mView);
+
+ // Dispatch to the IME before propagating down the view hierarchy.
+ // The IME will eventually call back into handleImeFinishedEvent.
+ if (mLastWasImTarget) {
+ InputMethodManager imm = InputMethodManager.peekInstance();
+ if (imm != null) {
+ final int seq = event.getSequenceNumber();
+ if (DEBUG_IMF)
+ Log.v(TAG, "Sending generic motion event to IME: seq="
+ + seq + " event=" + event);
+ imm.dispatchGenericMotionEvent(mView.getContext(), seq, event,
+ mInputMethodCallback);
+ return;
+ }
+ }
+ }
+
+ // Not dispatching to IME, continue with post IME actions.
+ deliverGenericMotionEventPostIme(q);
+ }
+
+ private void deliverGenericMotionEventPostIme(QueuedInputEvent q) {
+ final MotionEvent event = (MotionEvent) q.mEvent;
+ final boolean isJoystick = (event.getSource() & InputDevice.SOURCE_CLASS_JOYSTICK) != 0;
// If there is no view, then the event will not be handled.
if (mView == null || !mAdded) {
@@ -3366,7 +3418,8 @@
}
if (isJoystick) {
- // Translate the joystick event into DPAD keys and try to deliver those.
+ // Translate the joystick event into DPAD keys and try to deliver
+ // those.
updateJoystickDirection(event, true);
finishInputEvent(q, true);
} else {
@@ -3521,13 +3574,7 @@
mInputEventConsistencyVerifier.onKeyEvent(event, 0);
}
- if ((q.mFlags & QueuedInputEvent.FLAG_DELIVER_POST_IME) == 0) {
- // If there is no view, then the event will not be handled.
- if (mView == null || !mAdded) {
- finishInputEvent(q, false);
- return;
- }
-
+ if (mView != null && mAdded && (q.mFlags & QueuedInputEvent.FLAG_DELIVER_POST_IME) == 0) {
if (LOCAL_LOGV) Log.v(TAG, "Dispatching key " + event + " to " + mView);
// Perform predispatching before the IME.
@@ -3557,15 +3604,23 @@
void handleImeFinishedEvent(int seq, boolean handled) {
final QueuedInputEvent q = mCurrentInputEvent;
if (q != null && q.mEvent.getSequenceNumber() == seq) {
- final KeyEvent event = (KeyEvent)q.mEvent;
if (DEBUG_IMF) {
Log.v(TAG, "IME finished event: seq=" + seq
- + " handled=" + handled + " event=" + event);
+ + " handled=" + handled + " event=" + q);
}
if (handled) {
finishInputEvent(q, true);
} else {
- deliverKeyEventPostIme(q);
+ if (q.mEvent instanceof KeyEvent) {
+ deliverKeyEventPostIme(q);
+ } else {
+ final int source = q.mEvent.getSource();
+ if ((source & InputDevice.SOURCE_CLASS_TRACKBALL) != 0) {
+ deliverTrackballEventPostIme(q);
+ } else {
+ deliverGenericMotionEventPostIme(q);
+ }
+ }
}
} else {
if (DEBUG_IMF) {
diff --git a/core/java/android/view/inputmethod/InputMethodManager.java b/core/java/android/view/inputmethod/InputMethodManager.java
index e754adc..3ea6df3 100644
--- a/core/java/android/view/inputmethod/InputMethodManager.java
+++ b/core/java/android/view/inputmethod/InputMethodManager.java
@@ -1593,7 +1593,7 @@
/**
* @hide
*/
- void dispatchTrackballEvent(Context context, int seq, MotionEvent motion,
+ public void dispatchTrackballEvent(Context context, int seq, MotionEvent motion,
FinishedEventCallback callback) {
synchronized (mH) {
if (DEBUG) Log.d(TAG, "dispatchTrackballEvent");
@@ -1614,6 +1614,30 @@
callback.finishedEvent(seq, false);
}
+ /**
+ * @hide
+ */
+ public void dispatchGenericMotionEvent(Context context, int seq, MotionEvent motion,
+ FinishedEventCallback callback) {
+ synchronized (mH) {
+ if (DEBUG) Log.d(TAG, "dispatchGenericMotionEvent");
+
+ if (mCurMethod != null && mCurrentTextBoxAttribute != null) {
+ try {
+ if (DEBUG) Log.v(TAG, "DISPATCH GENERIC MOTION: " + mCurMethod);
+ final long startTime = SystemClock.uptimeMillis();
+ enqueuePendingEventLocked(startTime, seq, mCurId, callback);
+ mCurMethod.dispatchGenericMotionEvent(seq, motion, mInputMethodCallback);
+ return;
+ } catch (RemoteException e) {
+ Log.w(TAG, "IME died: " + mCurId + " dropping generic motion: " + motion, e);
+ }
+ }
+ }
+
+ callback.finishedEvent(seq, false);
+ }
+
void finishedEvent(int seq, boolean handled) {
final FinishedEventCallback callback;
synchronized (mH) {
diff --git a/core/java/android/view/inputmethod/InputMethodSession.java b/core/java/android/view/inputmethod/InputMethodSession.java
index ea6f5ee..6386299 100644
--- a/core/java/android/view/inputmethod/InputMethodSession.java
+++ b/core/java/android/view/inputmethod/InputMethodSession.java
@@ -138,6 +138,21 @@
public void dispatchTrackballEvent(int seq, MotionEvent event, EventCallback callback);
/**
+ * This method is called when there is a generic motion event.
+ *
+ * <p>
+ * If the input method wants to handle this event, return true, otherwise
+ * return false and the caller (i.e. the application) will handle the event.
+ *
+ * @param event The motion event.
+ *
+ * @return Whether the input method wants to handle this event.
+ *
+ * @see android.view.MotionEvent
+ */
+ public void dispatchGenericMotionEvent(int seq, MotionEvent event, EventCallback callback);
+
+ /**
* Process a private command sent from the application to the input method.
* This can be used to provide domain-specific features that are
* only known between certain input methods and their clients.
diff --git a/core/java/android/webkit/WebViewClassic.java b/core/java/android/webkit/WebViewClassic.java
index 9334036..494a28c 100644
--- a/core/java/android/webkit/WebViewClassic.java
+++ b/core/java/android/webkit/WebViewClassic.java
@@ -27,7 +27,6 @@
import android.content.ComponentCallbacks2;
import android.content.Context;
import android.content.DialogInterface;
-import android.content.DialogInterface.OnCancelListener;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.PackageManager;
@@ -69,7 +68,6 @@
import android.util.DisplayMetrics;
import android.util.EventLog;
import android.util.Log;
-import android.view.Display;
import android.view.Gravity;
import android.view.HapticFeedbackConstants;
import android.view.HardwareCanvas;
@@ -87,7 +85,6 @@
import android.view.ViewGroup;
import android.view.ViewParent;
import android.view.ViewRootImpl;
-import android.view.WindowManager;
import android.view.accessibility.AccessibilityEvent;
import android.view.accessibility.AccessibilityManager;
import android.view.accessibility.AccessibilityNodeInfo;
@@ -136,9 +133,6 @@
import java.util.Map;
import java.util.Set;
import java.util.Vector;
-import java.util.concurrent.CountDownLatch;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
/**
* Implements a backend provider for the {@link WebView} public API.
@@ -1891,9 +1885,9 @@
mSavePasswordDialog = null;
}
})
- .setOnCancelListener(new OnCancelListener() {
+ .setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
- public void onCancel(DialogInterface dialog) {
+ public void onDismiss(DialogInterface dialog) {
if (mResumeMsg != null) {
resumeMsg.sendToTarget();
mResumeMsg = null;
@@ -2098,14 +2092,18 @@
hideSoftKeyboard();
clearActionModes();
dismissFullScreenMode();
- cancelSelectDialog();
+ cancelDialogs();
}
- private void cancelSelectDialog() {
+ private void cancelDialogs() {
if (mListBoxDialog != null) {
mListBoxDialog.cancel();
mListBoxDialog = null;
}
+ if (mSavePasswordDialog != null) {
+ mSavePasswordDialog.dismiss();
+ mSavePasswordDialog = null;
+ }
}
/**
@@ -2133,15 +2131,6 @@
private void destroyJava() {
mCallbackProxy.blockMessages();
- clearHelpers();
- if (mListBoxDialog != null) {
- mListBoxDialog.dismiss();
- mListBoxDialog = null;
- }
- if (mSavePasswordDialog != null) {
- mSavePasswordDialog.dismiss();
- mSavePasswordDialog = null;
- }
if (mWebViewCore != null) {
// Tell WebViewCore to destroy itself
synchronized (this) {
@@ -3492,7 +3481,7 @@
nativeSetPauseDrawing(mNativeClass, true);
}
- cancelSelectDialog();
+ cancelDialogs();
WebCoreThreadWatchdog.pause();
}
}
diff --git a/core/java/android/widget/ListView.java b/core/java/android/widget/ListView.java
index 938979a..03507b5 100644
--- a/core/java/android/widget/ListView.java
+++ b/core/java/android/widget/ListView.java
@@ -38,6 +38,7 @@
import android.view.ViewDebug;
import android.view.ViewGroup;
import android.view.ViewParent;
+import android.view.ViewRootImpl;
import android.view.accessibility.AccessibilityEvent;
import android.view.accessibility.AccessibilityNodeInfo;
import android.widget.RemoteViews.RemoteView;
@@ -1590,20 +1591,25 @@
}
// Remember which child, if any, had accessibility focus.
- final View accessFocusedView = getViewRootImpl().getAccessibilityFocusedHost();
- if (accessFocusedView != null) {
- final View accessFocusedChild = findAccessibilityFocusedChild(accessFocusedView);
- if (accessFocusedChild != null) {
- if (!dataChanged || isDirectChildHeaderOrFooter(accessFocusedChild)) {
- // If the views won't be changing, try to maintain focus
- // on the current view host and (if applicable) its
- // virtual view.
- accessibilityFocusLayoutRestoreView = accessFocusedView;
- accessibilityFocusLayoutRestoreNode = getViewRootImpl()
- .getAccessibilityFocusedVirtualView();
- } else {
- // Otherwise, try to maintain focus at the same position.
- accessibilityFocusPosition = getPositionForView(accessFocusedChild);
+ final ViewRootImpl viewRootImpl = getViewRootImpl();
+ if (viewRootImpl != null) {
+ final View accessFocusedView = viewRootImpl.getAccessibilityFocusedHost();
+ if (accessFocusedView != null) {
+ final View accessFocusedChild = findAccessibilityFocusedChild(
+ accessFocusedView);
+ if (accessFocusedChild != null) {
+ if (!dataChanged || isDirectChildHeaderOrFooter(accessFocusedChild)) {
+ // If the views won't be changing, try to maintain
+ // focus on the current view host and (if
+ // applicable) its virtual view.
+ accessibilityFocusLayoutRestoreView = accessFocusedView;
+ accessibilityFocusLayoutRestoreNode = viewRootImpl
+ .getAccessibilityFocusedVirtualView();
+ } else {
+ // Otherwise, try to maintain focus at the same
+ // position.
+ accessibilityFocusPosition = getPositionForView(accessFocusedChild);
+ }
}
}
}
diff --git a/core/java/com/android/internal/view/IInputMethodSession.aidl b/core/java/com/android/internal/view/IInputMethodSession.aidl
index f875cbd..cdec254 100644
--- a/core/java/com/android/internal/view/IInputMethodSession.aidl
+++ b/core/java/com/android/internal/view/IInputMethodSession.aidl
@@ -47,6 +47,8 @@
void dispatchTrackballEvent(int seq, in MotionEvent event, IInputMethodCallback callback);
+ void dispatchGenericMotionEvent(int seq, in MotionEvent event, IInputMethodCallback callback);
+
void appPrivateCommand(String action, in Bundle data);
void toggleSoftInput(int showFlags, int hideFlags);
diff --git a/core/jni/android/graphics/SurfaceTexture.cpp b/core/jni/android/graphics/SurfaceTexture.cpp
index c48b974..bc58813 100644
--- a/core/jni/android/graphics/SurfaceTexture.cpp
+++ b/core/jni/android/graphics/SurfaceTexture.cpp
@@ -223,6 +223,10 @@
} else if (err < 0) {
jniThrowRuntimeException(env, "Error during updateTexImage (see logcat for details)");
}
+ err = surfaceTexture->doGLFenceWait();
+ if (err != NO_ERROR) {
+ jniThrowRuntimeException(env, "Error waiting for fence (see logcat for details)");
+ }
}
static jint SurfaceTexture_detachFromGLContext(JNIEnv* env, jobject thiz)
diff --git a/core/tests/coretests/apks/FrameworkCoreTests_apk.mk b/core/tests/coretests/apks/FrameworkCoreTests_apk.mk
index ac545ca..1e03270 100644
--- a/core/tests/coretests/apks/FrameworkCoreTests_apk.mk
+++ b/core/tests/coretests/apks/FrameworkCoreTests_apk.mk
@@ -7,6 +7,9 @@
# Make sure every package name gets the FrameworkCoreTests_ prefix.
LOCAL_PACKAGE_NAME := FrameworkCoreTests_$(LOCAL_PACKAGE_NAME)
+# Every package should have a native library
+LOCAL_JNI_SHARED_LIBRARIES := libframeworks_coretests_jni
+
FrameworkCoreTests_all_apks += $(LOCAL_PACKAGE_NAME)
include $(BUILD_PACKAGE)
diff --git a/core/tests/coretests/apks/install_jni_lib/Android.mk b/core/tests/coretests/apks/install_jni_lib/Android.mk
new file mode 100644
index 0000000..de2993a
--- /dev/null
+++ b/core/tests/coretests/apks/install_jni_lib/Android.mk
@@ -0,0 +1,28 @@
+# Copyright (C) 2012 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := \
+ com_android_frameworks_coretests_JNITest.cpp
+
+LOCAL_SHARED_LIBRARIES := \
+ libnativehelper
+
+LOCAL_MODULE := libframeworks_coretests_jni
+LOCAL_MODULE_TAGS := optional
+
+include $(BUILD_SHARED_LIBRARY)
diff --git a/core/tests/coretests/apks/install_jni_lib/com_android_frameworks_coretests_JNITest.cpp b/core/tests/coretests/apks/install_jni_lib/com_android_frameworks_coretests_JNITest.cpp
new file mode 100644
index 0000000..957fc4a
--- /dev/null
+++ b/core/tests/coretests/apks/install_jni_lib/com_android_frameworks_coretests_JNITest.cpp
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "nativehelper/JNIHelp.h"
+
+namespace android {
+
+static jint checkFunction(JNIEnv*, jclass) {
+ return 1;
+}
+
+static JNINativeMethod sMethods[] = {
+ /* name, signature, funcPtr */
+ { "checkFunction", "()I", (void*) checkFunction },
+};
+
+int register_com_android_framework_coretests_JNITests(JNIEnv* env) {
+ return jniRegisterNativeMethods(env, "com/android/framework/coretests/JNITests", sMethods,
+ NELEM(sMethods));
+}
+
+}
+
+/*
+ * JNI Initialization
+ */
+jint JNI_OnLoad(JavaVM *jvm, void *reserved) {
+ JNIEnv *e;
+ int status;
+
+ // Check JNI version
+ if (jvm->GetEnv((void **) &e, JNI_VERSION_1_6)) {
+ return JNI_ERR;
+ }
+
+ if ((status = android::register_com_android_framework_coretests_JNITests(e)) < 0) {
+ return JNI_ERR;
+ }
+
+ return JNI_VERSION_1_6;
+}
diff --git a/core/tests/coretests/src/android/content/pm/PackageManagerTests.java b/core/tests/coretests/src/android/content/pm/PackageManagerTests.java
index f46478c..785842f 100755
--- a/core/tests/coretests/src/android/content/pm/PackageManagerTests.java
+++ b/core/tests/coretests/src/android/content/pm/PackageManagerTests.java
@@ -16,6 +16,8 @@
package android.content.pm;
+import static libcore.io.OsConstants.*;
+
import com.android.frameworks.coretests.R;
import com.android.internal.content.PackageHelper;
@@ -32,9 +34,11 @@
import android.os.Environment;
import android.os.FileUtils;
import android.os.IBinder;
+import android.os.Process;
import android.os.RemoteException;
import android.os.ServiceManager;
import android.os.StatFs;
+import android.os.SystemClock;
import android.os.storage.IMountService;
import android.os.storage.StorageListener;
import android.os.storage.StorageManager;
@@ -52,6 +56,12 @@
import java.io.InputStream;
import java.util.List;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
+import libcore.io.ErrnoException;
+import libcore.io.Libcore;
+import libcore.io.StructStat;
public class PackageManagerTests extends AndroidTestCase {
private static final boolean localLOGV = true;
@@ -62,6 +72,8 @@
public final long WAIT_TIME_INCR = 5 * 1000;
+ private static final String APP_LIB_DIR_PREFIX = "/data/app-lib/";
+
private static final String SECURE_CONTAINERS_PREFIX = "/mnt/asec/";
private static final int APP_INSTALL_AUTO = PackageHelper.APP_INSTALL_AUTO;
@@ -404,15 +416,12 @@
if ((flags & PackageManager.INSTALL_FORWARD_LOCK) != 0) {
assertTrue("The application should be installed forward locked",
(info.flags & ApplicationInfo.FLAG_FORWARD_LOCK) != 0);
- assertTrue("The APK path (" + srcPath + ") should start with "
- + SECURE_CONTAINERS_PREFIX,
- srcPath.startsWith(SECURE_CONTAINERS_PREFIX));
- assertTrue("The public APK path (" + publicSrcPath + ") should start with "
- + SECURE_CONTAINERS_PREFIX,
- publicSrcPath.startsWith(SECURE_CONTAINERS_PREFIX));
- assertTrue("The native library path (" + info.nativeLibraryDir
- + ") should start with " + SECURE_CONTAINERS_PREFIX,
- info.nativeLibraryDir.startsWith(SECURE_CONTAINERS_PREFIX));
+ assertStartsWith("The APK path should point to the ASEC",
+ SECURE_CONTAINERS_PREFIX, srcPath);
+ assertStartsWith("The public APK path should point to the ASEC",
+ SECURE_CONTAINERS_PREFIX, publicSrcPath);
+ assertStartsWith("The native library path should point to the ASEC",
+ SECURE_CONTAINERS_PREFIX, info.nativeLibraryDir);
try {
String compatLib = new File(info.dataDir + "/lib").getCanonicalPath();
assertEquals("The compatibility lib directory should be a symbolic link to "
@@ -425,7 +434,14 @@
assertFalse((info.flags & ApplicationInfo.FLAG_FORWARD_LOCK) != 0);
assertEquals(srcPath, appInstallPath);
assertEquals(publicSrcPath, appInstallPath);
- assertTrue(info.nativeLibraryDir.startsWith(dataDir.getPath()));
+ assertStartsWith("Native library should point to shared lib directory",
+ new File(APP_LIB_DIR_PREFIX, info.packageName).getPath(),
+ info.nativeLibraryDir);
+ assertDirOwnerGroupPerms(
+ "Native library directory should be owned by system:system and 0755",
+ Process.SYSTEM_UID, Process.SYSTEM_UID,
+ S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH,
+ info.nativeLibraryDir);
}
assertFalse((info.flags & ApplicationInfo.FLAG_EXTERNAL_STORAGE) != 0);
@@ -435,8 +451,7 @@
nativeLibDir.exists());
try {
assertEquals("Native library dir should not be a symlink",
- info.nativeLibraryDir,
- nativeLibDir.getCanonicalPath());
+ info.nativeLibraryDir, nativeLibDir.getCanonicalPath());
} catch (IOException e) {
fail("Can't read " + nativeLibDir.getPath());
}
@@ -453,14 +468,12 @@
(info.flags & ApplicationInfo.FLAG_EXTERNAL_STORAGE) != 0);
// Might need to check:
// ((info.flags & ApplicationInfo.FLAG_FORWARD_LOCK) != 0)
- assertTrue("The APK path (" + srcPath + ") should start with "
- + SECURE_CONTAINERS_PREFIX, srcPath.startsWith(SECURE_CONTAINERS_PREFIX));
- assertTrue("The public APK path (" + publicSrcPath + ") should start with "
- + SECURE_CONTAINERS_PREFIX,
- publicSrcPath.startsWith(SECURE_CONTAINERS_PREFIX));
- assertTrue("The native library path (" + info.nativeLibraryDir
- + ") should start with " + SECURE_CONTAINERS_PREFIX,
- info.nativeLibraryDir.startsWith(SECURE_CONTAINERS_PREFIX));
+ assertStartsWith("The APK path should point to the ASEC",
+ SECURE_CONTAINERS_PREFIX, srcPath);
+ assertStartsWith("The public APK path should point to the ASEC",
+ SECURE_CONTAINERS_PREFIX, publicSrcPath);
+ assertStartsWith("The native library path should point to the ASEC",
+ SECURE_CONTAINERS_PREFIX, info.nativeLibraryDir);
// Make sure the native library in /data/data/<app>/lib is a
// symlink to the ASEC
@@ -483,6 +496,66 @@
}
}
+ private void assertDirOwnerGroupPerms(String reason, int uid, int gid, int perms, String path) {
+ final StructStat stat;
+
+ try {
+ stat = Libcore.os.lstat(path);
+ } catch (ErrnoException e) {
+ throw new AssertionError(reason + "\n" + "Got: " + path + " does not exist");
+ }
+
+ StringBuilder sb = new StringBuilder();
+
+ if (!S_ISDIR(stat.st_mode)) {
+ sb.append("\nExpected type: ");
+ sb.append(S_IFDIR);
+ sb.append("\ngot type: ");
+ sb.append((stat.st_mode & S_IFMT));
+ }
+
+ if (stat.st_uid != uid) {
+ sb.append("\nExpected owner: ");
+ sb.append(uid);
+ sb.append("\nGot owner: ");
+ sb.append(stat.st_uid);
+ }
+
+ if (stat.st_gid != gid) {
+ sb.append("\nExpected group: ");
+ sb.append(gid);
+ sb.append("\nGot group: ");
+ sb.append(stat.st_gid);
+ }
+
+ if ((stat.st_mode & ~S_IFMT) != perms) {
+ sb.append("\nExpected permissions: ");
+ sb.append(Integer.toOctalString(perms));
+ sb.append("\nGot permissions: ");
+ sb.append(Integer.toOctalString(stat.st_mode & ~S_IFMT));
+ }
+
+ if (sb.length() > 0) {
+ throw new AssertionError(reason + sb.toString());
+ }
+ }
+
+ private static void assertStartsWith(String prefix, String actual) {
+ assertStartsWith("", prefix, actual);
+ }
+
+ private static void assertStartsWith(String description, String prefix, String actual) {
+ if (!actual.startsWith(prefix)) {
+ StringBuilder sb = new StringBuilder(description);
+ sb.append("\nExpected prefix: ");
+ sb.append(prefix);
+ sb.append("\n got: ");
+ sb.append(actual);
+ sb.append('\n');
+ throw new AssertionError(sb.toString());
+ }
+ }
+
private void assertNotInstalled(String pkgName) {
try {
ApplicationInfo info = getPm().getApplicationInfo(pkgName, 0);
@@ -820,22 +893,51 @@
| PackageManager.INSTALL_EXTERNAL);
}
- /* -------------- Delete tests ---*/
+ /* -------------- Delete tests --- */
private static class DeleteObserver extends IPackageDeleteObserver.Stub {
+ private CountDownLatch mLatch = new CountDownLatch(1);
- public boolean succeeded;
- private boolean doneFlag = false;
+ private int mReturnCode;
- public boolean isDone() {
- return doneFlag;
+ private final String mPackageName;
+
+ private String mObservedPackage;
+
+ public DeleteObserver(String packageName) {
+ mPackageName = packageName;
+ }
+
+ public boolean isSuccessful() {
+ return mReturnCode == PackageManager.DELETE_SUCCEEDED;
}
public void packageDeleted(String packageName, int returnCode) throws RemoteException {
- synchronized(this) {
- this.succeeded = returnCode == PackageManager.DELETE_SUCCEEDED;
- doneFlag = true;
- notifyAll();
+ mObservedPackage = packageName;
+
+ mReturnCode = returnCode;
+
+ mLatch.countDown();
+ }
+
+ public void waitForCompletion(long timeoutMillis) {
+ final long deadline = SystemClock.uptimeMillis() + timeoutMillis;
+
+ long waitTime = timeoutMillis;
+ while (waitTime > 0) {
+ try {
+ boolean done = mLatch.await(waitTime, TimeUnit.MILLISECONDS);
+ if (done) {
+ assertEquals(mPackageName, mObservedPackage);
+ return;
+ }
+ } catch (InterruptedException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ waitTime = deadline - SystemClock.uptimeMillis();
}
+
+ throw new AssertionError("Timeout waiting for package deletion");
}
}
@@ -863,41 +965,40 @@
}
}
- public boolean invokeDeletePackage(final String pkgName, int flags,
- GenericReceiver receiver) throws Exception {
- DeleteObserver observer = new DeleteObserver();
- final boolean received = false;
+ public boolean invokeDeletePackage(final String pkgName, int flags, GenericReceiver receiver)
+ throws Exception {
+ ApplicationInfo info = getPm().getApplicationInfo(pkgName,
+ PackageManager.GET_UNINSTALLED_PACKAGES);
+
mContext.registerReceiver(receiver, receiver.filter);
try {
- // Wait on observer
- synchronized(observer) {
- synchronized (receiver) {
- getPm().deletePackage(pkgName, observer, flags);
- long waitTime = 0;
- while((!observer.isDone()) && (waitTime < MAX_WAIT_TIME) ) {
- observer.wait(WAIT_TIME_INCR);
- waitTime += WAIT_TIME_INCR;
- }
- if(!observer.isDone()) {
- throw new Exception("Timed out waiting for packageInstalled callback");
- }
- // Verify we received the broadcast
- waitTime = 0;
- while((!receiver.isDone()) && (waitTime < MAX_WAIT_TIME) ) {
- receiver.wait(WAIT_TIME_INCR);
- waitTime += WAIT_TIME_INCR;
- }
- if(!receiver.isDone()) {
- throw new Exception("Timed out waiting for PACKAGE_REMOVED notification");
- }
- return receiver.received;
- }
+ DeleteObserver observer = new DeleteObserver(pkgName);
+
+ getPm().deletePackage(pkgName, observer, flags);
+ observer.waitForCompletion(MAX_WAIT_TIME);
+
+ assertUninstalled(info);
+
+ // Verify we received the broadcast
+ long waitTime = 0;
+ while ((!receiver.isDone()) && (waitTime < MAX_WAIT_TIME)) {
+ receiver.wait(WAIT_TIME_INCR);
+ waitTime += WAIT_TIME_INCR;
}
+ if (!receiver.isDone()) {
+ throw new Exception("Timed out waiting for PACKAGE_REMOVED notification");
+ }
+ return receiver.received;
} finally {
mContext.unregisterReceiver(receiver);
}
}
+ private static void assertUninstalled(ApplicationInfo info) throws Exception {
+ File nativeLibraryFile = new File(info.nativeLibraryDir);
+ assertFalse("Native library directory should be erased", nativeLibraryFile.exists());
+ }
+
public void deleteFromRawResource(int iFlags, int dFlags) throws Exception {
InstallParams ip = sampleInstallFromRawResource(iFlags, false);
boolean retainData = ((dFlags & PackageManager.DELETE_KEEP_DATA) != 0);
@@ -1212,11 +1313,29 @@
return;
}
Runtime.getRuntime().gc();
- Log.i(TAG, "Deleting package : " + ip.pkg.packageName);
- getPm().deletePackage(ip.pkg.packageName, null, 0);
- File outFile = new File(ip.pkg.mScanPath);
- if (outFile != null && outFile.exists()) {
- outFile.delete();
+
+ final String packageName = ip.pkg.packageName;
+ Log.i(TAG, "Deleting package : " + packageName);
+
+ ApplicationInfo info = null;
+ try {
+ info = getPm().getApplicationInfo(packageName, PackageManager.GET_UNINSTALLED_PACKAGES);
+ } catch (NameNotFoundException ignored) {
+ }
+
+ DeleteObserver observer = new DeleteObserver(packageName);
+ getPm().deletePackage(packageName, observer, 0);
+ observer.waitForCompletion(MAX_WAIT_TIME);
+
+ try {
+ if (info != null) {
+ assertUninstalled(info);
+ }
+ } finally {
+ File outFile = new File(ip.pkg.mScanPath);
+ if (outFile != null && outFile.exists()) {
+ outFile.delete();
+ }
}
}
@@ -1230,7 +1349,10 @@
PackageManager.GET_UNINSTALLED_PACKAGES);
if (info != null) {
- getPm().deletePackage(pkgName, null, 0);
+ DeleteObserver observer = new DeleteObserver(pkgName);
+ getPm().deletePackage(pkgName, observer, 0);
+ observer.waitForCompletion(MAX_WAIT_TIME);
+ assertUninstalled(info);
}
} catch (NameNotFoundException e) {
}
@@ -1587,16 +1709,16 @@
if ((moveFlags & PackageManager.MOVE_INTERNAL) != 0) {
assertTrue("ApplicationInfo.FLAG_EXTERNAL_STORAGE flag should NOT be set",
(info.flags & ApplicationInfo.FLAG_EXTERNAL_STORAGE) == 0);
- assertTrue("ApplicationInfo.nativeLibraryDir should start with " + info.dataDir,
- info.nativeLibraryDir.startsWith(info.dataDir));
- } else if ((moveFlags & PackageManager.MOVE_EXTERNAL_MEDIA) != 0){
+ assertStartsWith("Native library dir should be in dataDir",
+ info.dataDir, info.nativeLibraryDir);
+ } else if ((moveFlags & PackageManager.MOVE_EXTERNAL_MEDIA) != 0) {
assertTrue("ApplicationInfo.FLAG_EXTERNAL_STORAGE flag should be set",
(info.flags & ApplicationInfo.FLAG_EXTERNAL_STORAGE) != 0);
- assertTrue("ApplicationInfo.nativeLibraryDir should start with " + SECURE_CONTAINERS_PREFIX,
- info.nativeLibraryDir.startsWith(SECURE_CONTAINERS_PREFIX));
+ assertStartsWith("Native library dir should point to ASEC",
+ SECURE_CONTAINERS_PREFIX, info.nativeLibraryDir);
final File nativeLibSymLink = new File(info.dataDir, "lib");
- assertTrue("The data directory should have a 'lib' symlink that points to the ASEC container",
- nativeLibSymLink.getCanonicalPath().startsWith(SECURE_CONTAINERS_PREFIX));
+ assertStartsWith("The data directory should have a 'lib' symlink that points to the ASEC container",
+ SECURE_CONTAINERS_PREFIX, nativeLibSymLink.getCanonicalPath());
}
}
} catch (NameNotFoundException e) {
diff --git a/docs/html/guide/topics/resources/providing-resources.jd b/docs/html/guide/topics/resources/providing-resources.jd
index b2c95b9..749e458 100644
--- a/docs/html/guide/topics/resources/providing-resources.jd
+++ b/docs/html/guide/topics/resources/providing-resources.jd
@@ -573,6 +573,10 @@
no display</li>
</ul>
<p><em>Added in API level 8, television added in API 13.</em></p>
+ <p>For information about how your app can respond when the device is inserted into or
+ removed from a dock, read <a
+ href="{@docRoot}training/monitoring-device-state/docking-monitoring.html">Determining
+and Monitoring the Docking State and Type</a>.</p>
<p>This can change during the life of your application if the user places the device in a
dock. You can enable or disable some of these modes using {@link
android.app.UiModeManager}. See <a href="runtime-changes.html">Handling Runtime Changes</a> for
diff --git a/libs/hwui/OpenGLRenderer.cpp b/libs/hwui/OpenGLRenderer.cpp
index 9f8b87c..f4c2675 100644
--- a/libs/hwui/OpenGLRenderer.cpp
+++ b/libs/hwui/OpenGLRenderer.cpp
@@ -299,10 +299,12 @@
mFunctors.add(f);
}
}
+ // protect against functors binding to other buffers
+ mCaches.unbindMeshBuffer();
+ mCaches.unbindIndicesBuffer();
+ mCaches.activeTexture(0);
}
- mCaches.activeTexture(0);
-
return result;
}
diff --git a/packages/SystemUI/res/values-af/strings.xml b/packages/SystemUI/res/values-af/strings.xml
index 38ea24d..2bd0960 100644
--- a/packages/SystemUI/res/values-af/strings.xml
+++ b/packages/SystemUI/res/values-af/strings.xml
@@ -141,7 +141,6 @@
<string name="gps_notification_searching_text" msgid="8574247005642736060">"Soek vir GPS"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"Ligging deur GPS gestel"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Verwyder alle kennisgewings."</string>
- <string name="dreams_dock_launcher" msgid="3541196417659166245">"Aktiveer sluimerskerm"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Programinligting"</string>
<string name="close_universe" msgid="3736513750241754348">"Maak toe"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"Kennisgewings af"</string>
@@ -151,4 +150,50 @@
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Skerm is in portretoriëntasie gesluit."</string>
<!-- no translation found for jelly_bean_dream_name (5992026543636816792) -->
<skip />
+ <!-- no translation found for start_dreams (870400522982252717) -->
+ <skip />
+ <!-- no translation found for quick_settings_airplane_mode_label (5510520633448831350) -->
+ <skip />
+ <!-- no translation found for quick_settings_battery_label (2764511189368020794) -->
+ <skip />
+ <!-- no translation found for quick_settings_bluetooth_label (6304190285170721401) -->
+ <skip />
+ <!-- no translation found for quick_settings_brightness_label (6968372297018755815) -->
+ <skip />
+ <!-- no translation found for quick_settings_ime_label (6877325300716130498) -->
+ <skip />
+ <!-- no translation found for quick_settings_location_label (3292451598267467545) -->
+ <skip />
+ <!-- no translation found for quick_settings_media_device_label (1302906836372603762) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_label (7725671335550695589) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_emergency_only (2713774041672886750) -->
+ <skip />
+ <!-- no translation found for quick_settings_settings_label (5326556592578065401) -->
+ <skip />
+ <!-- no translation found for quick_settings_time_label (4635969182239736408) -->
+ <skip />
+ <!-- no translation found for quick_settings_user_label (5238995632130897840) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_label (4393429107095001520) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_no_network (2221993077220856376) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_label (6653501376641018614) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_no_connection_label (6255615315258869136) -->
+ <skip />
+ <!-- no translation found for wifi_display_scan (8453135922233546097) -->
+ <skip />
+ <!-- no translation found for wifi_display_disconnect (5450214362789378584) -->
+ <skip />
+ <!-- no translation found for wifi_display_dialog_title (2817993038700218900) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_available (980373281442607096) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connecting (1677010908036241940) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connected (9154375061719151149) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-am/strings.xml b/packages/SystemUI/res/values-am/strings.xml
index 9c0b934..6b980ef 100644
--- a/packages/SystemUI/res/values-am/strings.xml
+++ b/packages/SystemUI/res/values-am/strings.xml
@@ -141,7 +141,6 @@
<string name="gps_notification_searching_text" msgid="8574247005642736060">"ለGPS በመፈለግ ላይ"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"በ GPS የተዘጋጀ ሥፍራ"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"ሁሉንም ማሳወቂያዎች አጽዳ"</string>
- <string name="dreams_dock_launcher" msgid="3541196417659166245">" ገፁማያ ማቆያ አንቃ"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"የመተግበሪያ መረጃ"</string>
<string name="close_universe" msgid="3736513750241754348">"ዝጋ"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"ማሳወቂያዎች ጠፍተዋል"</string>
@@ -151,4 +150,50 @@
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"ማያ ገጽ በቁም ገፅ አቀማመጥ ተቆልፏል።"</string>
<!-- no translation found for jelly_bean_dream_name (5992026543636816792) -->
<skip />
+ <!-- no translation found for start_dreams (870400522982252717) -->
+ <skip />
+ <!-- no translation found for quick_settings_airplane_mode_label (5510520633448831350) -->
+ <skip />
+ <!-- no translation found for quick_settings_battery_label (2764511189368020794) -->
+ <skip />
+ <!-- no translation found for quick_settings_bluetooth_label (6304190285170721401) -->
+ <skip />
+ <!-- no translation found for quick_settings_brightness_label (6968372297018755815) -->
+ <skip />
+ <!-- no translation found for quick_settings_ime_label (6877325300716130498) -->
+ <skip />
+ <!-- no translation found for quick_settings_location_label (3292451598267467545) -->
+ <skip />
+ <!-- no translation found for quick_settings_media_device_label (1302906836372603762) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_label (7725671335550695589) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_emergency_only (2713774041672886750) -->
+ <skip />
+ <!-- no translation found for quick_settings_settings_label (5326556592578065401) -->
+ <skip />
+ <!-- no translation found for quick_settings_time_label (4635969182239736408) -->
+ <skip />
+ <!-- no translation found for quick_settings_user_label (5238995632130897840) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_label (4393429107095001520) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_no_network (2221993077220856376) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_label (6653501376641018614) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_no_connection_label (6255615315258869136) -->
+ <skip />
+ <!-- no translation found for wifi_display_scan (8453135922233546097) -->
+ <skip />
+ <!-- no translation found for wifi_display_disconnect (5450214362789378584) -->
+ <skip />
+ <!-- no translation found for wifi_display_dialog_title (2817993038700218900) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_available (980373281442607096) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connecting (1677010908036241940) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connected (9154375061719151149) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-ar/strings.xml b/packages/SystemUI/res/values-ar/strings.xml
index 59a1083..1d88360 100644
--- a/packages/SystemUI/res/values-ar/strings.xml
+++ b/packages/SystemUI/res/values-ar/strings.xml
@@ -141,7 +141,6 @@
<string name="gps_notification_searching_text" msgid="8574247005642736060">"جارٍ البحث عن GPS"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"تم تعيين الموقع بواسطة GPS"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"محو جميع الإشعارات."</string>
- <string name="dreams_dock_launcher" msgid="3541196417659166245">"تنشيط شاشة التوقف"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"معلومات التطبيق"</string>
<string name="close_universe" msgid="3736513750241754348">"إغلاق"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"التنبيهات معطّلة"</string>
@@ -151,4 +150,50 @@
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"تم تأمين الشاشة في الاتجاه العمودي."</string>
<!-- no translation found for jelly_bean_dream_name (5992026543636816792) -->
<skip />
+ <!-- no translation found for start_dreams (870400522982252717) -->
+ <skip />
+ <!-- no translation found for quick_settings_airplane_mode_label (5510520633448831350) -->
+ <skip />
+ <!-- no translation found for quick_settings_battery_label (2764511189368020794) -->
+ <skip />
+ <!-- no translation found for quick_settings_bluetooth_label (6304190285170721401) -->
+ <skip />
+ <!-- no translation found for quick_settings_brightness_label (6968372297018755815) -->
+ <skip />
+ <!-- no translation found for quick_settings_ime_label (6877325300716130498) -->
+ <skip />
+ <!-- no translation found for quick_settings_location_label (3292451598267467545) -->
+ <skip />
+ <!-- no translation found for quick_settings_media_device_label (1302906836372603762) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_label (7725671335550695589) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_emergency_only (2713774041672886750) -->
+ <skip />
+ <!-- no translation found for quick_settings_settings_label (5326556592578065401) -->
+ <skip />
+ <!-- no translation found for quick_settings_time_label (4635969182239736408) -->
+ <skip />
+ <!-- no translation found for quick_settings_user_label (5238995632130897840) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_label (4393429107095001520) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_no_network (2221993077220856376) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_label (6653501376641018614) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_no_connection_label (6255615315258869136) -->
+ <skip />
+ <!-- no translation found for wifi_display_scan (8453135922233546097) -->
+ <skip />
+ <!-- no translation found for wifi_display_disconnect (5450214362789378584) -->
+ <skip />
+ <!-- no translation found for wifi_display_dialog_title (2817993038700218900) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_available (980373281442607096) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connecting (1677010908036241940) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connected (9154375061719151149) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-be/strings.xml b/packages/SystemUI/res/values-be/strings.xml
index 394d237..1d1a161 100644
--- a/packages/SystemUI/res/values-be/strings.xml
+++ b/packages/SystemUI/res/values-be/strings.xml
@@ -143,7 +143,6 @@
<string name="gps_notification_searching_text" msgid="8574247005642736060">"Пошук GPS"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"Месца задана праз GPS"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Выдалiць усе апавяшчэннi."</string>
- <string name="dreams_dock_launcher" msgid="3541196417659166245">"Актывацыя экраннай застаўкі"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Інфармацыя пра прыкладанне"</string>
<string name="close_universe" msgid="3736513750241754348">"Закрыць"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"Паведамленні адключаны"</string>
@@ -153,4 +152,50 @@
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Экран заблакiраваны ў партрэтнай арыентацыі."</string>
<!-- no translation found for jelly_bean_dream_name (5992026543636816792) -->
<skip />
+ <!-- no translation found for start_dreams (870400522982252717) -->
+ <skip />
+ <!-- no translation found for quick_settings_airplane_mode_label (5510520633448831350) -->
+ <skip />
+ <!-- no translation found for quick_settings_battery_label (2764511189368020794) -->
+ <skip />
+ <!-- no translation found for quick_settings_bluetooth_label (6304190285170721401) -->
+ <skip />
+ <!-- no translation found for quick_settings_brightness_label (6968372297018755815) -->
+ <skip />
+ <!-- no translation found for quick_settings_ime_label (6877325300716130498) -->
+ <skip />
+ <!-- no translation found for quick_settings_location_label (3292451598267467545) -->
+ <skip />
+ <!-- no translation found for quick_settings_media_device_label (1302906836372603762) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_label (7725671335550695589) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_emergency_only (2713774041672886750) -->
+ <skip />
+ <!-- no translation found for quick_settings_settings_label (5326556592578065401) -->
+ <skip />
+ <!-- no translation found for quick_settings_time_label (4635969182239736408) -->
+ <skip />
+ <!-- no translation found for quick_settings_user_label (5238995632130897840) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_label (4393429107095001520) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_no_network (2221993077220856376) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_label (6653501376641018614) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_no_connection_label (6255615315258869136) -->
+ <skip />
+ <!-- no translation found for wifi_display_scan (8453135922233546097) -->
+ <skip />
+ <!-- no translation found for wifi_display_disconnect (5450214362789378584) -->
+ <skip />
+ <!-- no translation found for wifi_display_dialog_title (2817993038700218900) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_available (980373281442607096) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connecting (1677010908036241940) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connected (9154375061719151149) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-bg/strings.xml b/packages/SystemUI/res/values-bg/strings.xml
index c24ac7f..2e62a84 100644
--- a/packages/SystemUI/res/values-bg/strings.xml
+++ b/packages/SystemUI/res/values-bg/strings.xml
@@ -141,7 +141,6 @@
<string name="gps_notification_searching_text" msgid="8574247005642736060">"Търси се GPS"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"Местоположението е зададено от GPS"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Изчистване на всички известия."</string>
- <string name="dreams_dock_launcher" msgid="3541196417659166245">"Активиране на скрийнсейвъра"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Информация за приложението"</string>
<string name="close_universe" msgid="3736513750241754348">"Затваряне"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"Известията са изключени"</string>
@@ -151,4 +150,50 @@
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Екранът е заключен във вертикална ориентация."</string>
<!-- no translation found for jelly_bean_dream_name (5992026543636816792) -->
<skip />
+ <!-- no translation found for start_dreams (870400522982252717) -->
+ <skip />
+ <!-- no translation found for quick_settings_airplane_mode_label (5510520633448831350) -->
+ <skip />
+ <!-- no translation found for quick_settings_battery_label (2764511189368020794) -->
+ <skip />
+ <!-- no translation found for quick_settings_bluetooth_label (6304190285170721401) -->
+ <skip />
+ <!-- no translation found for quick_settings_brightness_label (6968372297018755815) -->
+ <skip />
+ <!-- no translation found for quick_settings_ime_label (6877325300716130498) -->
+ <skip />
+ <!-- no translation found for quick_settings_location_label (3292451598267467545) -->
+ <skip />
+ <!-- no translation found for quick_settings_media_device_label (1302906836372603762) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_label (7725671335550695589) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_emergency_only (2713774041672886750) -->
+ <skip />
+ <!-- no translation found for quick_settings_settings_label (5326556592578065401) -->
+ <skip />
+ <!-- no translation found for quick_settings_time_label (4635969182239736408) -->
+ <skip />
+ <!-- no translation found for quick_settings_user_label (5238995632130897840) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_label (4393429107095001520) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_no_network (2221993077220856376) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_label (6653501376641018614) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_no_connection_label (6255615315258869136) -->
+ <skip />
+ <!-- no translation found for wifi_display_scan (8453135922233546097) -->
+ <skip />
+ <!-- no translation found for wifi_display_disconnect (5450214362789378584) -->
+ <skip />
+ <!-- no translation found for wifi_display_dialog_title (2817993038700218900) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_available (980373281442607096) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connecting (1677010908036241940) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connected (9154375061719151149) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-ca/strings.xml b/packages/SystemUI/res/values-ca/strings.xml
index 3b3c0bc..a3e7117 100644
--- a/packages/SystemUI/res/values-ca/strings.xml
+++ b/packages/SystemUI/res/values-ca/strings.xml
@@ -143,7 +143,6 @@
<string name="gps_notification_searching_text" msgid="8574247005642736060">"S\'està cercant un GPS"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"S\'ha establert la ubicació per GPS"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Esborra totes les notificacions."</string>
- <string name="dreams_dock_launcher" msgid="3541196417659166245">"Activa el protector de pantalla"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Informació de l\'aplicació"</string>
<string name="close_universe" msgid="3736513750241754348">"Tanca"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"Notificacions desactivades"</string>
@@ -153,4 +152,50 @@
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"La pantalla està bloquejada en orientació vertical."</string>
<!-- no translation found for jelly_bean_dream_name (5992026543636816792) -->
<skip />
+ <!-- no translation found for start_dreams (870400522982252717) -->
+ <skip />
+ <!-- no translation found for quick_settings_airplane_mode_label (5510520633448831350) -->
+ <skip />
+ <!-- no translation found for quick_settings_battery_label (2764511189368020794) -->
+ <skip />
+ <!-- no translation found for quick_settings_bluetooth_label (6304190285170721401) -->
+ <skip />
+ <!-- no translation found for quick_settings_brightness_label (6968372297018755815) -->
+ <skip />
+ <!-- no translation found for quick_settings_ime_label (6877325300716130498) -->
+ <skip />
+ <!-- no translation found for quick_settings_location_label (3292451598267467545) -->
+ <skip />
+ <!-- no translation found for quick_settings_media_device_label (1302906836372603762) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_label (7725671335550695589) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_emergency_only (2713774041672886750) -->
+ <skip />
+ <!-- no translation found for quick_settings_settings_label (5326556592578065401) -->
+ <skip />
+ <!-- no translation found for quick_settings_time_label (4635969182239736408) -->
+ <skip />
+ <!-- no translation found for quick_settings_user_label (5238995632130897840) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_label (4393429107095001520) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_no_network (2221993077220856376) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_label (6653501376641018614) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_no_connection_label (6255615315258869136) -->
+ <skip />
+ <!-- no translation found for wifi_display_scan (8453135922233546097) -->
+ <skip />
+ <!-- no translation found for wifi_display_disconnect (5450214362789378584) -->
+ <skip />
+ <!-- no translation found for wifi_display_dialog_title (2817993038700218900) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_available (980373281442607096) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connecting (1677010908036241940) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connected (9154375061719151149) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-cs/strings.xml b/packages/SystemUI/res/values-cs/strings.xml
index a471e98..d6fdc9d 100644
--- a/packages/SystemUI/res/values-cs/strings.xml
+++ b/packages/SystemUI/res/values-cs/strings.xml
@@ -143,7 +143,6 @@
<string name="gps_notification_searching_text" msgid="8574247005642736060">"Vyhledávání satelitů GPS"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"Poloha nastavena pomocí systému GPS"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Vymazat všechna oznámení."</string>
- <string name="dreams_dock_launcher" msgid="3541196417659166245">"Aktivovat spořič obrazovky"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Informace o aplikaci"</string>
<string name="close_universe" msgid="3736513750241754348">"Zavřít"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"Oznámení jsou vypnuta"</string>
@@ -153,4 +152,50 @@
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Obrazovka je uzamčena v orientaci na výšku."</string>
<!-- no translation found for jelly_bean_dream_name (5992026543636816792) -->
<skip />
+ <!-- no translation found for start_dreams (870400522982252717) -->
+ <skip />
+ <!-- no translation found for quick_settings_airplane_mode_label (5510520633448831350) -->
+ <skip />
+ <!-- no translation found for quick_settings_battery_label (2764511189368020794) -->
+ <skip />
+ <!-- no translation found for quick_settings_bluetooth_label (6304190285170721401) -->
+ <skip />
+ <!-- no translation found for quick_settings_brightness_label (6968372297018755815) -->
+ <skip />
+ <!-- no translation found for quick_settings_ime_label (6877325300716130498) -->
+ <skip />
+ <!-- no translation found for quick_settings_location_label (3292451598267467545) -->
+ <skip />
+ <!-- no translation found for quick_settings_media_device_label (1302906836372603762) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_label (7725671335550695589) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_emergency_only (2713774041672886750) -->
+ <skip />
+ <!-- no translation found for quick_settings_settings_label (5326556592578065401) -->
+ <skip />
+ <!-- no translation found for quick_settings_time_label (4635969182239736408) -->
+ <skip />
+ <!-- no translation found for quick_settings_user_label (5238995632130897840) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_label (4393429107095001520) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_no_network (2221993077220856376) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_label (6653501376641018614) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_no_connection_label (6255615315258869136) -->
+ <skip />
+ <!-- no translation found for wifi_display_scan (8453135922233546097) -->
+ <skip />
+ <!-- no translation found for wifi_display_disconnect (5450214362789378584) -->
+ <skip />
+ <!-- no translation found for wifi_display_dialog_title (2817993038700218900) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_available (980373281442607096) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connecting (1677010908036241940) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connected (9154375061719151149) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-da/strings.xml b/packages/SystemUI/res/values-da/strings.xml
index 6da3992..d102f67 100644
--- a/packages/SystemUI/res/values-da/strings.xml
+++ b/packages/SystemUI/res/values-da/strings.xml
@@ -141,7 +141,6 @@
<string name="gps_notification_searching_text" msgid="8574247005642736060">"Søger efter GPS"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"Placeringen er angivet ved hjælp af GPS"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Ryd alle meddelelser."</string>
- <string name="dreams_dock_launcher" msgid="3541196417659166245">"Aktivér pauseskærm"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Oplysninger om appen"</string>
<string name="close_universe" msgid="3736513750241754348">"Luk"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"Underretninger slået fra"</string>
@@ -151,4 +150,50 @@
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Skærmen er nu låst i stående retning."</string>
<!-- no translation found for jelly_bean_dream_name (5992026543636816792) -->
<skip />
+ <!-- no translation found for start_dreams (870400522982252717) -->
+ <skip />
+ <!-- no translation found for quick_settings_airplane_mode_label (5510520633448831350) -->
+ <skip />
+ <!-- no translation found for quick_settings_battery_label (2764511189368020794) -->
+ <skip />
+ <!-- no translation found for quick_settings_bluetooth_label (6304190285170721401) -->
+ <skip />
+ <!-- no translation found for quick_settings_brightness_label (6968372297018755815) -->
+ <skip />
+ <!-- no translation found for quick_settings_ime_label (6877325300716130498) -->
+ <skip />
+ <!-- no translation found for quick_settings_location_label (3292451598267467545) -->
+ <skip />
+ <!-- no translation found for quick_settings_media_device_label (1302906836372603762) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_label (7725671335550695589) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_emergency_only (2713774041672886750) -->
+ <skip />
+ <!-- no translation found for quick_settings_settings_label (5326556592578065401) -->
+ <skip />
+ <!-- no translation found for quick_settings_time_label (4635969182239736408) -->
+ <skip />
+ <!-- no translation found for quick_settings_user_label (5238995632130897840) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_label (4393429107095001520) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_no_network (2221993077220856376) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_label (6653501376641018614) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_no_connection_label (6255615315258869136) -->
+ <skip />
+ <!-- no translation found for wifi_display_scan (8453135922233546097) -->
+ <skip />
+ <!-- no translation found for wifi_display_disconnect (5450214362789378584) -->
+ <skip />
+ <!-- no translation found for wifi_display_dialog_title (2817993038700218900) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_available (980373281442607096) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connecting (1677010908036241940) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connected (9154375061719151149) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-de/strings.xml b/packages/SystemUI/res/values-de/strings.xml
index 7ae9ca6..2b4815d 100644
--- a/packages/SystemUI/res/values-de/strings.xml
+++ b/packages/SystemUI/res/values-de/strings.xml
@@ -143,7 +143,6 @@
<string name="gps_notification_searching_text" msgid="8574247005642736060">"GPS wird gesucht"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"Standort durch GPS festgelegt"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Alle Benachrichtigungen löschen"</string>
- <string name="dreams_dock_launcher" msgid="3541196417659166245">"Bildschirmschoner aktivieren"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"App-Details"</string>
<string name="close_universe" msgid="3736513750241754348">"Schließen"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"Benachrichtigungen aus"</string>
@@ -153,4 +152,50 @@
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Bildschirm bleibt im Hochformat."</string>
<!-- no translation found for jelly_bean_dream_name (5992026543636816792) -->
<skip />
+ <!-- no translation found for start_dreams (870400522982252717) -->
+ <skip />
+ <!-- no translation found for quick_settings_airplane_mode_label (5510520633448831350) -->
+ <skip />
+ <!-- no translation found for quick_settings_battery_label (2764511189368020794) -->
+ <skip />
+ <!-- no translation found for quick_settings_bluetooth_label (6304190285170721401) -->
+ <skip />
+ <!-- no translation found for quick_settings_brightness_label (6968372297018755815) -->
+ <skip />
+ <!-- no translation found for quick_settings_ime_label (6877325300716130498) -->
+ <skip />
+ <!-- no translation found for quick_settings_location_label (3292451598267467545) -->
+ <skip />
+ <!-- no translation found for quick_settings_media_device_label (1302906836372603762) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_label (7725671335550695589) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_emergency_only (2713774041672886750) -->
+ <skip />
+ <!-- no translation found for quick_settings_settings_label (5326556592578065401) -->
+ <skip />
+ <!-- no translation found for quick_settings_time_label (4635969182239736408) -->
+ <skip />
+ <!-- no translation found for quick_settings_user_label (5238995632130897840) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_label (4393429107095001520) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_no_network (2221993077220856376) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_label (6653501376641018614) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_no_connection_label (6255615315258869136) -->
+ <skip />
+ <!-- no translation found for wifi_display_scan (8453135922233546097) -->
+ <skip />
+ <!-- no translation found for wifi_display_disconnect (5450214362789378584) -->
+ <skip />
+ <!-- no translation found for wifi_display_dialog_title (2817993038700218900) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_available (980373281442607096) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connecting (1677010908036241940) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connected (9154375061719151149) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-el/strings.xml b/packages/SystemUI/res/values-el/strings.xml
index 7cd4fc2..9958cd9 100644
--- a/packages/SystemUI/res/values-el/strings.xml
+++ b/packages/SystemUI/res/values-el/strings.xml
@@ -143,7 +143,6 @@
<string name="gps_notification_searching_text" msgid="8574247005642736060">"Αναζήτηση για GPS"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"Ρύθμιση τοποθεσίας με GPS"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Εκκαθάριση όλων των ειδοποιήσεων."</string>
- <string name="dreams_dock_launcher" msgid="3541196417659166245">"Ενεργοποίηση προφύλαξης οθόνης"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Πληροφορίες εφαρμογής"</string>
<string name="close_universe" msgid="3736513750241754348">"Κλείσιμο"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"Ειδοποιήσεις ανενεργές"</string>
@@ -153,4 +152,50 @@
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Η οθόνη έχει κλειδωθεί σε κατακόρυφο προσανατολισμό."</string>
<!-- no translation found for jelly_bean_dream_name (5992026543636816792) -->
<skip />
+ <!-- no translation found for start_dreams (870400522982252717) -->
+ <skip />
+ <!-- no translation found for quick_settings_airplane_mode_label (5510520633448831350) -->
+ <skip />
+ <!-- no translation found for quick_settings_battery_label (2764511189368020794) -->
+ <skip />
+ <!-- no translation found for quick_settings_bluetooth_label (6304190285170721401) -->
+ <skip />
+ <!-- no translation found for quick_settings_brightness_label (6968372297018755815) -->
+ <skip />
+ <!-- no translation found for quick_settings_ime_label (6877325300716130498) -->
+ <skip />
+ <!-- no translation found for quick_settings_location_label (3292451598267467545) -->
+ <skip />
+ <!-- no translation found for quick_settings_media_device_label (1302906836372603762) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_label (7725671335550695589) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_emergency_only (2713774041672886750) -->
+ <skip />
+ <!-- no translation found for quick_settings_settings_label (5326556592578065401) -->
+ <skip />
+ <!-- no translation found for quick_settings_time_label (4635969182239736408) -->
+ <skip />
+ <!-- no translation found for quick_settings_user_label (5238995632130897840) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_label (4393429107095001520) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_no_network (2221993077220856376) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_label (6653501376641018614) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_no_connection_label (6255615315258869136) -->
+ <skip />
+ <!-- no translation found for wifi_display_scan (8453135922233546097) -->
+ <skip />
+ <!-- no translation found for wifi_display_disconnect (5450214362789378584) -->
+ <skip />
+ <!-- no translation found for wifi_display_dialog_title (2817993038700218900) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_available (980373281442607096) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connecting (1677010908036241940) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connected (9154375061719151149) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-en-rGB/strings.xml b/packages/SystemUI/res/values-en-rGB/strings.xml
index 1fb98f0..9d46c94 100644
--- a/packages/SystemUI/res/values-en-rGB/strings.xml
+++ b/packages/SystemUI/res/values-en-rGB/strings.xml
@@ -141,7 +141,6 @@
<string name="gps_notification_searching_text" msgid="8574247005642736060">"Searching for GPS"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"Location set by GPS"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Clear all notifications."</string>
- <string name="dreams_dock_launcher" msgid="3541196417659166245">"Activate screen saver"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"App info"</string>
<string name="close_universe" msgid="3736513750241754348">"Close"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"Notifications off"</string>
@@ -151,4 +150,50 @@
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Screen is locked in portrait orientation."</string>
<!-- no translation found for jelly_bean_dream_name (5992026543636816792) -->
<skip />
+ <!-- no translation found for start_dreams (870400522982252717) -->
+ <skip />
+ <!-- no translation found for quick_settings_airplane_mode_label (5510520633448831350) -->
+ <skip />
+ <!-- no translation found for quick_settings_battery_label (2764511189368020794) -->
+ <skip />
+ <!-- no translation found for quick_settings_bluetooth_label (6304190285170721401) -->
+ <skip />
+ <!-- no translation found for quick_settings_brightness_label (6968372297018755815) -->
+ <skip />
+ <!-- no translation found for quick_settings_ime_label (6877325300716130498) -->
+ <skip />
+ <!-- no translation found for quick_settings_location_label (3292451598267467545) -->
+ <skip />
+ <!-- no translation found for quick_settings_media_device_label (1302906836372603762) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_label (7725671335550695589) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_emergency_only (2713774041672886750) -->
+ <skip />
+ <!-- no translation found for quick_settings_settings_label (5326556592578065401) -->
+ <skip />
+ <!-- no translation found for quick_settings_time_label (4635969182239736408) -->
+ <skip />
+ <!-- no translation found for quick_settings_user_label (5238995632130897840) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_label (4393429107095001520) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_no_network (2221993077220856376) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_label (6653501376641018614) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_no_connection_label (6255615315258869136) -->
+ <skip />
+ <!-- no translation found for wifi_display_scan (8453135922233546097) -->
+ <skip />
+ <!-- no translation found for wifi_display_disconnect (5450214362789378584) -->
+ <skip />
+ <!-- no translation found for wifi_display_dialog_title (2817993038700218900) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_available (980373281442607096) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connecting (1677010908036241940) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connected (9154375061719151149) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-es-rUS/strings.xml b/packages/SystemUI/res/values-es-rUS/strings.xml
index 89c6a9c..ac3542f 100644
--- a/packages/SystemUI/res/values-es-rUS/strings.xml
+++ b/packages/SystemUI/res/values-es-rUS/strings.xml
@@ -143,7 +143,6 @@
<string name="gps_notification_searching_text" msgid="8574247005642736060">"Buscando GPS"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"La ubicación se estableció por GPS"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Eliminar todas las notificaciones"</string>
- <string name="dreams_dock_launcher" msgid="3541196417659166245">"Activar el protector de pantalla"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Información de la aplicación"</string>
<string name="close_universe" msgid="3736513750241754348">"Cerrar"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"Notificaciones desactivadas"</string>
@@ -153,4 +152,50 @@
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"La pantalla está bloqueada en modo vertical."</string>
<!-- no translation found for jelly_bean_dream_name (5992026543636816792) -->
<skip />
+ <!-- no translation found for start_dreams (870400522982252717) -->
+ <skip />
+ <!-- no translation found for quick_settings_airplane_mode_label (5510520633448831350) -->
+ <skip />
+ <!-- no translation found for quick_settings_battery_label (2764511189368020794) -->
+ <skip />
+ <!-- no translation found for quick_settings_bluetooth_label (6304190285170721401) -->
+ <skip />
+ <!-- no translation found for quick_settings_brightness_label (6968372297018755815) -->
+ <skip />
+ <!-- no translation found for quick_settings_ime_label (6877325300716130498) -->
+ <skip />
+ <!-- no translation found for quick_settings_location_label (3292451598267467545) -->
+ <skip />
+ <!-- no translation found for quick_settings_media_device_label (1302906836372603762) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_label (7725671335550695589) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_emergency_only (2713774041672886750) -->
+ <skip />
+ <!-- no translation found for quick_settings_settings_label (5326556592578065401) -->
+ <skip />
+ <!-- no translation found for quick_settings_time_label (4635969182239736408) -->
+ <skip />
+ <!-- no translation found for quick_settings_user_label (5238995632130897840) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_label (4393429107095001520) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_no_network (2221993077220856376) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_label (6653501376641018614) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_no_connection_label (6255615315258869136) -->
+ <skip />
+ <!-- no translation found for wifi_display_scan (8453135922233546097) -->
+ <skip />
+ <!-- no translation found for wifi_display_disconnect (5450214362789378584) -->
+ <skip />
+ <!-- no translation found for wifi_display_dialog_title (2817993038700218900) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_available (980373281442607096) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connecting (1677010908036241940) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connected (9154375061719151149) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-es/strings.xml b/packages/SystemUI/res/values-es/strings.xml
index 42441d5..4fa2328 100644
--- a/packages/SystemUI/res/values-es/strings.xml
+++ b/packages/SystemUI/res/values-es/strings.xml
@@ -141,7 +141,6 @@
<string name="gps_notification_searching_text" msgid="8574247005642736060">"Buscando GPS"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"Ubicación definida por GPS"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Borrar todas las notificaciones"</string>
- <string name="dreams_dock_launcher" msgid="3541196417659166245">"Activar salvapantallas"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Información de la aplicación"</string>
<string name="close_universe" msgid="3736513750241754348">"Cerrar"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"Notificaciones desactivadas"</string>
@@ -151,4 +150,50 @@
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"La pantalla está bloqueada en modo vertical."</string>
<!-- no translation found for jelly_bean_dream_name (5992026543636816792) -->
<skip />
+ <!-- no translation found for start_dreams (870400522982252717) -->
+ <skip />
+ <!-- no translation found for quick_settings_airplane_mode_label (5510520633448831350) -->
+ <skip />
+ <!-- no translation found for quick_settings_battery_label (2764511189368020794) -->
+ <skip />
+ <!-- no translation found for quick_settings_bluetooth_label (6304190285170721401) -->
+ <skip />
+ <!-- no translation found for quick_settings_brightness_label (6968372297018755815) -->
+ <skip />
+ <!-- no translation found for quick_settings_ime_label (6877325300716130498) -->
+ <skip />
+ <!-- no translation found for quick_settings_location_label (3292451598267467545) -->
+ <skip />
+ <!-- no translation found for quick_settings_media_device_label (1302906836372603762) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_label (7725671335550695589) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_emergency_only (2713774041672886750) -->
+ <skip />
+ <!-- no translation found for quick_settings_settings_label (5326556592578065401) -->
+ <skip />
+ <!-- no translation found for quick_settings_time_label (4635969182239736408) -->
+ <skip />
+ <!-- no translation found for quick_settings_user_label (5238995632130897840) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_label (4393429107095001520) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_no_network (2221993077220856376) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_label (6653501376641018614) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_no_connection_label (6255615315258869136) -->
+ <skip />
+ <!-- no translation found for wifi_display_scan (8453135922233546097) -->
+ <skip />
+ <!-- no translation found for wifi_display_disconnect (5450214362789378584) -->
+ <skip />
+ <!-- no translation found for wifi_display_dialog_title (2817993038700218900) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_available (980373281442607096) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connecting (1677010908036241940) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connected (9154375061719151149) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-et/strings.xml b/packages/SystemUI/res/values-et/strings.xml
index 9df87db..39f50f6 100644
--- a/packages/SystemUI/res/values-et/strings.xml
+++ b/packages/SystemUI/res/values-et/strings.xml
@@ -141,7 +141,6 @@
<string name="gps_notification_searching_text" msgid="8574247005642736060">"GPS-i otsimine"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"GPS-i määratud asukoht"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Kustuta kõik teatised."</string>
- <string name="dreams_dock_launcher" msgid="3541196417659166245">"Aktiveeri ekraanisäästja"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Rakenduse teave"</string>
<string name="close_universe" msgid="3736513750241754348">"Sule"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"Teatised väljas"</string>
@@ -151,4 +150,50 @@
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Ekraan on lukustatud vertikaalsuunas."</string>
<!-- no translation found for jelly_bean_dream_name (5992026543636816792) -->
<skip />
+ <!-- no translation found for start_dreams (870400522982252717) -->
+ <skip />
+ <!-- no translation found for quick_settings_airplane_mode_label (5510520633448831350) -->
+ <skip />
+ <!-- no translation found for quick_settings_battery_label (2764511189368020794) -->
+ <skip />
+ <!-- no translation found for quick_settings_bluetooth_label (6304190285170721401) -->
+ <skip />
+ <!-- no translation found for quick_settings_brightness_label (6968372297018755815) -->
+ <skip />
+ <!-- no translation found for quick_settings_ime_label (6877325300716130498) -->
+ <skip />
+ <!-- no translation found for quick_settings_location_label (3292451598267467545) -->
+ <skip />
+ <!-- no translation found for quick_settings_media_device_label (1302906836372603762) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_label (7725671335550695589) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_emergency_only (2713774041672886750) -->
+ <skip />
+ <!-- no translation found for quick_settings_settings_label (5326556592578065401) -->
+ <skip />
+ <!-- no translation found for quick_settings_time_label (4635969182239736408) -->
+ <skip />
+ <!-- no translation found for quick_settings_user_label (5238995632130897840) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_label (4393429107095001520) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_no_network (2221993077220856376) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_label (6653501376641018614) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_no_connection_label (6255615315258869136) -->
+ <skip />
+ <!-- no translation found for wifi_display_scan (8453135922233546097) -->
+ <skip />
+ <!-- no translation found for wifi_display_disconnect (5450214362789378584) -->
+ <skip />
+ <!-- no translation found for wifi_display_dialog_title (2817993038700218900) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_available (980373281442607096) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connecting (1677010908036241940) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connected (9154375061719151149) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-fa/strings.xml b/packages/SystemUI/res/values-fa/strings.xml
index bf9ac48..a1707e2 100644
--- a/packages/SystemUI/res/values-fa/strings.xml
+++ b/packages/SystemUI/res/values-fa/strings.xml
@@ -141,7 +141,6 @@
<string name="gps_notification_searching_text" msgid="8574247005642736060">"جستجو برای GPS"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"مکان تنظیم شده توسط GPS"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"پاک کردن تمام اعلانها"</string>
- <string name="dreams_dock_launcher" msgid="3541196417659166245">"فعال کردن محافظ صفحهٔ نمایش"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"اطلاعات برنامه"</string>
<string name="close_universe" msgid="3736513750241754348">"بستن"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"اعلانها خاموش"</string>
@@ -151,4 +150,50 @@
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"صفحه اکنون در جهت عمودی قفل است."</string>
<!-- no translation found for jelly_bean_dream_name (5992026543636816792) -->
<skip />
+ <!-- no translation found for start_dreams (870400522982252717) -->
+ <skip />
+ <!-- no translation found for quick_settings_airplane_mode_label (5510520633448831350) -->
+ <skip />
+ <!-- no translation found for quick_settings_battery_label (2764511189368020794) -->
+ <skip />
+ <!-- no translation found for quick_settings_bluetooth_label (6304190285170721401) -->
+ <skip />
+ <!-- no translation found for quick_settings_brightness_label (6968372297018755815) -->
+ <skip />
+ <!-- no translation found for quick_settings_ime_label (6877325300716130498) -->
+ <skip />
+ <!-- no translation found for quick_settings_location_label (3292451598267467545) -->
+ <skip />
+ <!-- no translation found for quick_settings_media_device_label (1302906836372603762) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_label (7725671335550695589) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_emergency_only (2713774041672886750) -->
+ <skip />
+ <!-- no translation found for quick_settings_settings_label (5326556592578065401) -->
+ <skip />
+ <!-- no translation found for quick_settings_time_label (4635969182239736408) -->
+ <skip />
+ <!-- no translation found for quick_settings_user_label (5238995632130897840) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_label (4393429107095001520) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_no_network (2221993077220856376) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_label (6653501376641018614) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_no_connection_label (6255615315258869136) -->
+ <skip />
+ <!-- no translation found for wifi_display_scan (8453135922233546097) -->
+ <skip />
+ <!-- no translation found for wifi_display_disconnect (5450214362789378584) -->
+ <skip />
+ <!-- no translation found for wifi_display_dialog_title (2817993038700218900) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_available (980373281442607096) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connecting (1677010908036241940) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connected (9154375061719151149) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-fi/strings.xml b/packages/SystemUI/res/values-fi/strings.xml
index ba23073..3db8381 100644
--- a/packages/SystemUI/res/values-fi/strings.xml
+++ b/packages/SystemUI/res/values-fi/strings.xml
@@ -141,7 +141,6 @@
<string name="gps_notification_searching_text" msgid="8574247005642736060">"Haetaan GPS-yhteyttä"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"Sijainti määritetty GPS:n avulla"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Tyhjennä kaikki ilmoitukset."</string>
- <string name="dreams_dock_launcher" msgid="3541196417659166245">"Ota näytönsäästäjä käyttöön"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Sovelluksen tiedot"</string>
<string name="close_universe" msgid="3736513750241754348">"Sulje"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"Ilmoitukset pois käytöstä"</string>
@@ -151,4 +150,50 @@
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Ruutu on lukittu pystysuuntaan."</string>
<!-- no translation found for jelly_bean_dream_name (5992026543636816792) -->
<skip />
+ <!-- no translation found for start_dreams (870400522982252717) -->
+ <skip />
+ <!-- no translation found for quick_settings_airplane_mode_label (5510520633448831350) -->
+ <skip />
+ <!-- no translation found for quick_settings_battery_label (2764511189368020794) -->
+ <skip />
+ <!-- no translation found for quick_settings_bluetooth_label (6304190285170721401) -->
+ <skip />
+ <!-- no translation found for quick_settings_brightness_label (6968372297018755815) -->
+ <skip />
+ <!-- no translation found for quick_settings_ime_label (6877325300716130498) -->
+ <skip />
+ <!-- no translation found for quick_settings_location_label (3292451598267467545) -->
+ <skip />
+ <!-- no translation found for quick_settings_media_device_label (1302906836372603762) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_label (7725671335550695589) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_emergency_only (2713774041672886750) -->
+ <skip />
+ <!-- no translation found for quick_settings_settings_label (5326556592578065401) -->
+ <skip />
+ <!-- no translation found for quick_settings_time_label (4635969182239736408) -->
+ <skip />
+ <!-- no translation found for quick_settings_user_label (5238995632130897840) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_label (4393429107095001520) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_no_network (2221993077220856376) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_label (6653501376641018614) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_no_connection_label (6255615315258869136) -->
+ <skip />
+ <!-- no translation found for wifi_display_scan (8453135922233546097) -->
+ <skip />
+ <!-- no translation found for wifi_display_disconnect (5450214362789378584) -->
+ <skip />
+ <!-- no translation found for wifi_display_dialog_title (2817993038700218900) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_available (980373281442607096) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connecting (1677010908036241940) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connected (9154375061719151149) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-fr/strings.xml b/packages/SystemUI/res/values-fr/strings.xml
index b08b36a..f80027f 100644
--- a/packages/SystemUI/res/values-fr/strings.xml
+++ b/packages/SystemUI/res/values-fr/strings.xml
@@ -143,7 +143,6 @@
<string name="gps_notification_searching_text" msgid="8574247005642736060">"Recherche de GPS..."</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"Position définie par GPS"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Supprimer toutes les notifications"</string>
- <string name="dreams_dock_launcher" msgid="3541196417659166245">"Activer l\'économiseur d\'écran"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Informations sur l\'application"</string>
<string name="close_universe" msgid="3736513750241754348">"Fermer"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"Notifications désactivées"</string>
@@ -153,4 +152,50 @@
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"L\'écran est verrouillé en mode portrait."</string>
<!-- no translation found for jelly_bean_dream_name (5992026543636816792) -->
<skip />
+ <!-- no translation found for start_dreams (870400522982252717) -->
+ <skip />
+ <!-- no translation found for quick_settings_airplane_mode_label (5510520633448831350) -->
+ <skip />
+ <!-- no translation found for quick_settings_battery_label (2764511189368020794) -->
+ <skip />
+ <!-- no translation found for quick_settings_bluetooth_label (6304190285170721401) -->
+ <skip />
+ <!-- no translation found for quick_settings_brightness_label (6968372297018755815) -->
+ <skip />
+ <!-- no translation found for quick_settings_ime_label (6877325300716130498) -->
+ <skip />
+ <!-- no translation found for quick_settings_location_label (3292451598267467545) -->
+ <skip />
+ <!-- no translation found for quick_settings_media_device_label (1302906836372603762) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_label (7725671335550695589) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_emergency_only (2713774041672886750) -->
+ <skip />
+ <!-- no translation found for quick_settings_settings_label (5326556592578065401) -->
+ <skip />
+ <!-- no translation found for quick_settings_time_label (4635969182239736408) -->
+ <skip />
+ <!-- no translation found for quick_settings_user_label (5238995632130897840) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_label (4393429107095001520) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_no_network (2221993077220856376) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_label (6653501376641018614) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_no_connection_label (6255615315258869136) -->
+ <skip />
+ <!-- no translation found for wifi_display_scan (8453135922233546097) -->
+ <skip />
+ <!-- no translation found for wifi_display_disconnect (5450214362789378584) -->
+ <skip />
+ <!-- no translation found for wifi_display_dialog_title (2817993038700218900) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_available (980373281442607096) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connecting (1677010908036241940) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connected (9154375061719151149) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-hi/strings.xml b/packages/SystemUI/res/values-hi/strings.xml
index d87bc05..d9c1d77 100644
--- a/packages/SystemUI/res/values-hi/strings.xml
+++ b/packages/SystemUI/res/values-hi/strings.xml
@@ -141,7 +141,6 @@
<string name="gps_notification_searching_text" msgid="8574247005642736060">"GPS को खोजा जा रहा है"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"GPS द्वारा सेट किया गया स्थान"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"सभी सूचनाएं साफ़ करें."</string>
- <string name="dreams_dock_launcher" msgid="3541196417659166245">"स्क्रीन सेवर सक्रिय करें"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"एप्लिकेशन जानकारी"</string>
<string name="close_universe" msgid="3736513750241754348">"बंद करें"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"सूचनाएं बंद"</string>
@@ -151,4 +150,50 @@
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"स्क्रीन पोर्ट्रेट अभिविन्यास में लॉक है."</string>
<!-- no translation found for jelly_bean_dream_name (5992026543636816792) -->
<skip />
+ <!-- no translation found for start_dreams (870400522982252717) -->
+ <skip />
+ <!-- no translation found for quick_settings_airplane_mode_label (5510520633448831350) -->
+ <skip />
+ <!-- no translation found for quick_settings_battery_label (2764511189368020794) -->
+ <skip />
+ <!-- no translation found for quick_settings_bluetooth_label (6304190285170721401) -->
+ <skip />
+ <!-- no translation found for quick_settings_brightness_label (6968372297018755815) -->
+ <skip />
+ <!-- no translation found for quick_settings_ime_label (6877325300716130498) -->
+ <skip />
+ <!-- no translation found for quick_settings_location_label (3292451598267467545) -->
+ <skip />
+ <!-- no translation found for quick_settings_media_device_label (1302906836372603762) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_label (7725671335550695589) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_emergency_only (2713774041672886750) -->
+ <skip />
+ <!-- no translation found for quick_settings_settings_label (5326556592578065401) -->
+ <skip />
+ <!-- no translation found for quick_settings_time_label (4635969182239736408) -->
+ <skip />
+ <!-- no translation found for quick_settings_user_label (5238995632130897840) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_label (4393429107095001520) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_no_network (2221993077220856376) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_label (6653501376641018614) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_no_connection_label (6255615315258869136) -->
+ <skip />
+ <!-- no translation found for wifi_display_scan (8453135922233546097) -->
+ <skip />
+ <!-- no translation found for wifi_display_disconnect (5450214362789378584) -->
+ <skip />
+ <!-- no translation found for wifi_display_dialog_title (2817993038700218900) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_available (980373281442607096) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connecting (1677010908036241940) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connected (9154375061719151149) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-hr/strings.xml b/packages/SystemUI/res/values-hr/strings.xml
index 7b37372..bc21fdc 100644
--- a/packages/SystemUI/res/values-hr/strings.xml
+++ b/packages/SystemUI/res/values-hr/strings.xml
@@ -141,7 +141,6 @@
<string name="gps_notification_searching_text" msgid="8574247005642736060">"Traženje GPS-a"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"Lokaciju utvrdio GPS"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Brisanje svih obavijesti."</string>
- <string name="dreams_dock_launcher" msgid="3541196417659166245">"Aktivirajte čuvar zaslona"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Informacije o aplikaciji"</string>
<string name="close_universe" msgid="3736513750241754348">"Zatvori"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"Obavijesti isključene"</string>
@@ -151,4 +150,50 @@
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Zaslon je zaključan u portretnoj orijentaciji."</string>
<!-- no translation found for jelly_bean_dream_name (5992026543636816792) -->
<skip />
+ <!-- no translation found for start_dreams (870400522982252717) -->
+ <skip />
+ <!-- no translation found for quick_settings_airplane_mode_label (5510520633448831350) -->
+ <skip />
+ <!-- no translation found for quick_settings_battery_label (2764511189368020794) -->
+ <skip />
+ <!-- no translation found for quick_settings_bluetooth_label (6304190285170721401) -->
+ <skip />
+ <!-- no translation found for quick_settings_brightness_label (6968372297018755815) -->
+ <skip />
+ <!-- no translation found for quick_settings_ime_label (6877325300716130498) -->
+ <skip />
+ <!-- no translation found for quick_settings_location_label (3292451598267467545) -->
+ <skip />
+ <!-- no translation found for quick_settings_media_device_label (1302906836372603762) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_label (7725671335550695589) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_emergency_only (2713774041672886750) -->
+ <skip />
+ <!-- no translation found for quick_settings_settings_label (5326556592578065401) -->
+ <skip />
+ <!-- no translation found for quick_settings_time_label (4635969182239736408) -->
+ <skip />
+ <!-- no translation found for quick_settings_user_label (5238995632130897840) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_label (4393429107095001520) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_no_network (2221993077220856376) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_label (6653501376641018614) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_no_connection_label (6255615315258869136) -->
+ <skip />
+ <!-- no translation found for wifi_display_scan (8453135922233546097) -->
+ <skip />
+ <!-- no translation found for wifi_display_disconnect (5450214362789378584) -->
+ <skip />
+ <!-- no translation found for wifi_display_dialog_title (2817993038700218900) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_available (980373281442607096) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connecting (1677010908036241940) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connected (9154375061719151149) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-hu/strings.xml b/packages/SystemUI/res/values-hu/strings.xml
index 9d9c73a..e87950d 100644
--- a/packages/SystemUI/res/values-hu/strings.xml
+++ b/packages/SystemUI/res/values-hu/strings.xml
@@ -141,7 +141,6 @@
<string name="gps_notification_searching_text" msgid="8574247005642736060">"GPS keresése"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"A GPS beállította a helyet"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Minden értesítés törlése"</string>
- <string name="dreams_dock_launcher" msgid="3541196417659166245">"Képernyővédő aktiválása"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Alkalmazásinformáció"</string>
<string name="close_universe" msgid="3736513750241754348">"Bezárás"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"Értesítések kikapcsolva"</string>
@@ -151,4 +150,50 @@
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"A képernyő zárolva van álló tájolásban."</string>
<!-- no translation found for jelly_bean_dream_name (5992026543636816792) -->
<skip />
+ <!-- no translation found for start_dreams (870400522982252717) -->
+ <skip />
+ <!-- no translation found for quick_settings_airplane_mode_label (5510520633448831350) -->
+ <skip />
+ <!-- no translation found for quick_settings_battery_label (2764511189368020794) -->
+ <skip />
+ <!-- no translation found for quick_settings_bluetooth_label (6304190285170721401) -->
+ <skip />
+ <!-- no translation found for quick_settings_brightness_label (6968372297018755815) -->
+ <skip />
+ <!-- no translation found for quick_settings_ime_label (6877325300716130498) -->
+ <skip />
+ <!-- no translation found for quick_settings_location_label (3292451598267467545) -->
+ <skip />
+ <!-- no translation found for quick_settings_media_device_label (1302906836372603762) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_label (7725671335550695589) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_emergency_only (2713774041672886750) -->
+ <skip />
+ <!-- no translation found for quick_settings_settings_label (5326556592578065401) -->
+ <skip />
+ <!-- no translation found for quick_settings_time_label (4635969182239736408) -->
+ <skip />
+ <!-- no translation found for quick_settings_user_label (5238995632130897840) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_label (4393429107095001520) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_no_network (2221993077220856376) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_label (6653501376641018614) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_no_connection_label (6255615315258869136) -->
+ <skip />
+ <!-- no translation found for wifi_display_scan (8453135922233546097) -->
+ <skip />
+ <!-- no translation found for wifi_display_disconnect (5450214362789378584) -->
+ <skip />
+ <!-- no translation found for wifi_display_dialog_title (2817993038700218900) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_available (980373281442607096) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connecting (1677010908036241940) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connected (9154375061719151149) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-in/strings.xml b/packages/SystemUI/res/values-in/strings.xml
index 0f3e1b7..8468492 100644
--- a/packages/SystemUI/res/values-in/strings.xml
+++ b/packages/SystemUI/res/values-in/strings.xml
@@ -141,7 +141,6 @@
<string name="gps_notification_searching_text" msgid="8574247005642736060">"Menelusuri GPS"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"Lokasi yang disetel oleh GPS"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Menghapus semua pemberitahuan."</string>
- <string name="dreams_dock_launcher" msgid="3541196417659166245">"Aktifkan tirai layar"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Info aplikasi"</string>
<string name="close_universe" msgid="3736513750241754348">"Tutup"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"Pemberitahuan mati"</string>
@@ -151,4 +150,50 @@
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Layar dikunci dalam orientasi potret."</string>
<!-- no translation found for jelly_bean_dream_name (5992026543636816792) -->
<skip />
+ <!-- no translation found for start_dreams (870400522982252717) -->
+ <skip />
+ <!-- no translation found for quick_settings_airplane_mode_label (5510520633448831350) -->
+ <skip />
+ <!-- no translation found for quick_settings_battery_label (2764511189368020794) -->
+ <skip />
+ <!-- no translation found for quick_settings_bluetooth_label (6304190285170721401) -->
+ <skip />
+ <!-- no translation found for quick_settings_brightness_label (6968372297018755815) -->
+ <skip />
+ <!-- no translation found for quick_settings_ime_label (6877325300716130498) -->
+ <skip />
+ <!-- no translation found for quick_settings_location_label (3292451598267467545) -->
+ <skip />
+ <!-- no translation found for quick_settings_media_device_label (1302906836372603762) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_label (7725671335550695589) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_emergency_only (2713774041672886750) -->
+ <skip />
+ <!-- no translation found for quick_settings_settings_label (5326556592578065401) -->
+ <skip />
+ <!-- no translation found for quick_settings_time_label (4635969182239736408) -->
+ <skip />
+ <!-- no translation found for quick_settings_user_label (5238995632130897840) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_label (4393429107095001520) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_no_network (2221993077220856376) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_label (6653501376641018614) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_no_connection_label (6255615315258869136) -->
+ <skip />
+ <!-- no translation found for wifi_display_scan (8453135922233546097) -->
+ <skip />
+ <!-- no translation found for wifi_display_disconnect (5450214362789378584) -->
+ <skip />
+ <!-- no translation found for wifi_display_dialog_title (2817993038700218900) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_available (980373281442607096) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connecting (1677010908036241940) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connected (9154375061719151149) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-it/strings.xml b/packages/SystemUI/res/values-it/strings.xml
index 93429ed..90948db7 100644
--- a/packages/SystemUI/res/values-it/strings.xml
+++ b/packages/SystemUI/res/values-it/strings.xml
@@ -143,7 +143,6 @@
<string name="gps_notification_searching_text" msgid="8574247005642736060">"Ricerca del GPS"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"Posizione stabilita dal GPS"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Cancella tutte le notifiche."</string>
- <string name="dreams_dock_launcher" msgid="3541196417659166245">"Attiva screensaver"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Informazioni applicazione"</string>
<string name="close_universe" msgid="3736513750241754348">"Chiudi"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"Notifiche disattivate"</string>
@@ -153,4 +152,50 @@
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Lo schermo è bloccato in orientamento verticale."</string>
<!-- no translation found for jelly_bean_dream_name (5992026543636816792) -->
<skip />
+ <!-- no translation found for start_dreams (870400522982252717) -->
+ <skip />
+ <!-- no translation found for quick_settings_airplane_mode_label (5510520633448831350) -->
+ <skip />
+ <!-- no translation found for quick_settings_battery_label (2764511189368020794) -->
+ <skip />
+ <!-- no translation found for quick_settings_bluetooth_label (6304190285170721401) -->
+ <skip />
+ <!-- no translation found for quick_settings_brightness_label (6968372297018755815) -->
+ <skip />
+ <!-- no translation found for quick_settings_ime_label (6877325300716130498) -->
+ <skip />
+ <!-- no translation found for quick_settings_location_label (3292451598267467545) -->
+ <skip />
+ <!-- no translation found for quick_settings_media_device_label (1302906836372603762) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_label (7725671335550695589) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_emergency_only (2713774041672886750) -->
+ <skip />
+ <!-- no translation found for quick_settings_settings_label (5326556592578065401) -->
+ <skip />
+ <!-- no translation found for quick_settings_time_label (4635969182239736408) -->
+ <skip />
+ <!-- no translation found for quick_settings_user_label (5238995632130897840) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_label (4393429107095001520) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_no_network (2221993077220856376) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_label (6653501376641018614) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_no_connection_label (6255615315258869136) -->
+ <skip />
+ <!-- no translation found for wifi_display_scan (8453135922233546097) -->
+ <skip />
+ <!-- no translation found for wifi_display_disconnect (5450214362789378584) -->
+ <skip />
+ <!-- no translation found for wifi_display_dialog_title (2817993038700218900) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_available (980373281442607096) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connecting (1677010908036241940) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connected (9154375061719151149) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-iw/strings.xml b/packages/SystemUI/res/values-iw/strings.xml
index 4495c2d..b4b4b27 100644
--- a/packages/SystemUI/res/values-iw/strings.xml
+++ b/packages/SystemUI/res/values-iw/strings.xml
@@ -141,7 +141,6 @@
<string name="gps_notification_searching_text" msgid="8574247005642736060">"מחפש GPS"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"מיקום מוגדר על ידי GPS"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"נקה את כל ההתראות."</string>
- <string name="dreams_dock_launcher" msgid="3541196417659166245">"הפעלת שומר מסך"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"פרטי יישום"</string>
<string name="close_universe" msgid="3736513750241754348">"סגור"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"מצב התראות כבוי"</string>
@@ -151,4 +150,50 @@
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"המסך נעול כעת לאורך."</string>
<!-- no translation found for jelly_bean_dream_name (5992026543636816792) -->
<skip />
+ <!-- no translation found for start_dreams (870400522982252717) -->
+ <skip />
+ <!-- no translation found for quick_settings_airplane_mode_label (5510520633448831350) -->
+ <skip />
+ <!-- no translation found for quick_settings_battery_label (2764511189368020794) -->
+ <skip />
+ <!-- no translation found for quick_settings_bluetooth_label (6304190285170721401) -->
+ <skip />
+ <!-- no translation found for quick_settings_brightness_label (6968372297018755815) -->
+ <skip />
+ <!-- no translation found for quick_settings_ime_label (6877325300716130498) -->
+ <skip />
+ <!-- no translation found for quick_settings_location_label (3292451598267467545) -->
+ <skip />
+ <!-- no translation found for quick_settings_media_device_label (1302906836372603762) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_label (7725671335550695589) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_emergency_only (2713774041672886750) -->
+ <skip />
+ <!-- no translation found for quick_settings_settings_label (5326556592578065401) -->
+ <skip />
+ <!-- no translation found for quick_settings_time_label (4635969182239736408) -->
+ <skip />
+ <!-- no translation found for quick_settings_user_label (5238995632130897840) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_label (4393429107095001520) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_no_network (2221993077220856376) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_label (6653501376641018614) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_no_connection_label (6255615315258869136) -->
+ <skip />
+ <!-- no translation found for wifi_display_scan (8453135922233546097) -->
+ <skip />
+ <!-- no translation found for wifi_display_disconnect (5450214362789378584) -->
+ <skip />
+ <!-- no translation found for wifi_display_dialog_title (2817993038700218900) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_available (980373281442607096) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connecting (1677010908036241940) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connected (9154375061719151149) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-ja/strings.xml b/packages/SystemUI/res/values-ja/strings.xml
index 2f0d6da..83128c2 100644
--- a/packages/SystemUI/res/values-ja/strings.xml
+++ b/packages/SystemUI/res/values-ja/strings.xml
@@ -143,7 +143,6 @@
<string name="gps_notification_searching_text" msgid="8574247005642736060">"GPSで検索中"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"GPSにより現在地が設定されました"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"通知をすべて消去。"</string>
- <string name="dreams_dock_launcher" msgid="3541196417659166245">"スクリーンセーバーを有効にする"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"アプリ情報"</string>
<string name="close_universe" msgid="3736513750241754348">"閉じる"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"通知OFF"</string>
@@ -153,4 +152,50 @@
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"画面は縦向きにロックされています。"</string>
<!-- no translation found for jelly_bean_dream_name (5992026543636816792) -->
<skip />
+ <!-- no translation found for start_dreams (870400522982252717) -->
+ <skip />
+ <!-- no translation found for quick_settings_airplane_mode_label (5510520633448831350) -->
+ <skip />
+ <!-- no translation found for quick_settings_battery_label (2764511189368020794) -->
+ <skip />
+ <!-- no translation found for quick_settings_bluetooth_label (6304190285170721401) -->
+ <skip />
+ <!-- no translation found for quick_settings_brightness_label (6968372297018755815) -->
+ <skip />
+ <!-- no translation found for quick_settings_ime_label (6877325300716130498) -->
+ <skip />
+ <!-- no translation found for quick_settings_location_label (3292451598267467545) -->
+ <skip />
+ <!-- no translation found for quick_settings_media_device_label (1302906836372603762) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_label (7725671335550695589) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_emergency_only (2713774041672886750) -->
+ <skip />
+ <!-- no translation found for quick_settings_settings_label (5326556592578065401) -->
+ <skip />
+ <!-- no translation found for quick_settings_time_label (4635969182239736408) -->
+ <skip />
+ <!-- no translation found for quick_settings_user_label (5238995632130897840) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_label (4393429107095001520) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_no_network (2221993077220856376) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_label (6653501376641018614) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_no_connection_label (6255615315258869136) -->
+ <skip />
+ <!-- no translation found for wifi_display_scan (8453135922233546097) -->
+ <skip />
+ <!-- no translation found for wifi_display_disconnect (5450214362789378584) -->
+ <skip />
+ <!-- no translation found for wifi_display_dialog_title (2817993038700218900) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_available (980373281442607096) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connecting (1677010908036241940) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connected (9154375061719151149) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-ko/strings.xml b/packages/SystemUI/res/values-ko/strings.xml
index 709e14d..4f52b84 100644
--- a/packages/SystemUI/res/values-ko/strings.xml
+++ b/packages/SystemUI/res/values-ko/strings.xml
@@ -141,7 +141,6 @@
<string name="gps_notification_searching_text" msgid="8574247005642736060">"GPS 검색 중"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"GPS에서 위치 설정"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"모든 알림 지우기"</string>
- <string name="dreams_dock_launcher" msgid="3541196417659166245">"스크린 세이버 활성화"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"앱 정보"</string>
<string name="close_universe" msgid="3736513750241754348">"닫기"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"알림 사용 안함"</string>
@@ -151,4 +150,50 @@
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"화면이 세로 방향으로 잠겨 있습니다."</string>
<!-- no translation found for jelly_bean_dream_name (5992026543636816792) -->
<skip />
+ <!-- no translation found for start_dreams (870400522982252717) -->
+ <skip />
+ <!-- no translation found for quick_settings_airplane_mode_label (5510520633448831350) -->
+ <skip />
+ <!-- no translation found for quick_settings_battery_label (2764511189368020794) -->
+ <skip />
+ <!-- no translation found for quick_settings_bluetooth_label (6304190285170721401) -->
+ <skip />
+ <!-- no translation found for quick_settings_brightness_label (6968372297018755815) -->
+ <skip />
+ <!-- no translation found for quick_settings_ime_label (6877325300716130498) -->
+ <skip />
+ <!-- no translation found for quick_settings_location_label (3292451598267467545) -->
+ <skip />
+ <!-- no translation found for quick_settings_media_device_label (1302906836372603762) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_label (7725671335550695589) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_emergency_only (2713774041672886750) -->
+ <skip />
+ <!-- no translation found for quick_settings_settings_label (5326556592578065401) -->
+ <skip />
+ <!-- no translation found for quick_settings_time_label (4635969182239736408) -->
+ <skip />
+ <!-- no translation found for quick_settings_user_label (5238995632130897840) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_label (4393429107095001520) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_no_network (2221993077220856376) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_label (6653501376641018614) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_no_connection_label (6255615315258869136) -->
+ <skip />
+ <!-- no translation found for wifi_display_scan (8453135922233546097) -->
+ <skip />
+ <!-- no translation found for wifi_display_disconnect (5450214362789378584) -->
+ <skip />
+ <!-- no translation found for wifi_display_dialog_title (2817993038700218900) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_available (980373281442607096) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connecting (1677010908036241940) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connected (9154375061719151149) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-lt/strings.xml b/packages/SystemUI/res/values-lt/strings.xml
index 73de676..26ba75d 100644
--- a/packages/SystemUI/res/values-lt/strings.xml
+++ b/packages/SystemUI/res/values-lt/strings.xml
@@ -141,7 +141,6 @@
<string name="gps_notification_searching_text" msgid="8574247005642736060">"Ieškoma GPS"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"GPS nustatyta vieta"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Išvalyti visus pranešimus."</string>
- <string name="dreams_dock_launcher" msgid="3541196417659166245">"Aktyvinti ekrano užsklandą"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Programos informacija"</string>
<string name="close_universe" msgid="3736513750241754348">"Uždaryti"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"Pranešimai išjungti"</string>
@@ -151,4 +150,50 @@
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Užrakintas ekranas yra vertikalios orientacijos."</string>
<!-- no translation found for jelly_bean_dream_name (5992026543636816792) -->
<skip />
+ <!-- no translation found for start_dreams (870400522982252717) -->
+ <skip />
+ <!-- no translation found for quick_settings_airplane_mode_label (5510520633448831350) -->
+ <skip />
+ <!-- no translation found for quick_settings_battery_label (2764511189368020794) -->
+ <skip />
+ <!-- no translation found for quick_settings_bluetooth_label (6304190285170721401) -->
+ <skip />
+ <!-- no translation found for quick_settings_brightness_label (6968372297018755815) -->
+ <skip />
+ <!-- no translation found for quick_settings_ime_label (6877325300716130498) -->
+ <skip />
+ <!-- no translation found for quick_settings_location_label (3292451598267467545) -->
+ <skip />
+ <!-- no translation found for quick_settings_media_device_label (1302906836372603762) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_label (7725671335550695589) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_emergency_only (2713774041672886750) -->
+ <skip />
+ <!-- no translation found for quick_settings_settings_label (5326556592578065401) -->
+ <skip />
+ <!-- no translation found for quick_settings_time_label (4635969182239736408) -->
+ <skip />
+ <!-- no translation found for quick_settings_user_label (5238995632130897840) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_label (4393429107095001520) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_no_network (2221993077220856376) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_label (6653501376641018614) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_no_connection_label (6255615315258869136) -->
+ <skip />
+ <!-- no translation found for wifi_display_scan (8453135922233546097) -->
+ <skip />
+ <!-- no translation found for wifi_display_disconnect (5450214362789378584) -->
+ <skip />
+ <!-- no translation found for wifi_display_dialog_title (2817993038700218900) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_available (980373281442607096) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connecting (1677010908036241940) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connected (9154375061719151149) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-lv/strings.xml b/packages/SystemUI/res/values-lv/strings.xml
index ddc2dbb..7255011 100644
--- a/packages/SystemUI/res/values-lv/strings.xml
+++ b/packages/SystemUI/res/values-lv/strings.xml
@@ -141,7 +141,6 @@
<string name="gps_notification_searching_text" msgid="8574247005642736060">"Notiek GPS meklēšana..."</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"GPS iestatītā atrašanās vieta"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Notīrīt visus paziņojumus"</string>
- <string name="dreams_dock_launcher" msgid="3541196417659166245">"Aktivizēt ekrānsaudzētāju"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Informācija par lietotni"</string>
<string name="close_universe" msgid="3736513750241754348">"Aizvērt"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"Paziņojumi ir izslēgti"</string>
@@ -151,4 +150,50 @@
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Ekrāns tagad ir bloķēts portreta orientācijā."</string>
<!-- no translation found for jelly_bean_dream_name (5992026543636816792) -->
<skip />
+ <!-- no translation found for start_dreams (870400522982252717) -->
+ <skip />
+ <!-- no translation found for quick_settings_airplane_mode_label (5510520633448831350) -->
+ <skip />
+ <!-- no translation found for quick_settings_battery_label (2764511189368020794) -->
+ <skip />
+ <!-- no translation found for quick_settings_bluetooth_label (6304190285170721401) -->
+ <skip />
+ <!-- no translation found for quick_settings_brightness_label (6968372297018755815) -->
+ <skip />
+ <!-- no translation found for quick_settings_ime_label (6877325300716130498) -->
+ <skip />
+ <!-- no translation found for quick_settings_location_label (3292451598267467545) -->
+ <skip />
+ <!-- no translation found for quick_settings_media_device_label (1302906836372603762) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_label (7725671335550695589) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_emergency_only (2713774041672886750) -->
+ <skip />
+ <!-- no translation found for quick_settings_settings_label (5326556592578065401) -->
+ <skip />
+ <!-- no translation found for quick_settings_time_label (4635969182239736408) -->
+ <skip />
+ <!-- no translation found for quick_settings_user_label (5238995632130897840) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_label (4393429107095001520) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_no_network (2221993077220856376) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_label (6653501376641018614) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_no_connection_label (6255615315258869136) -->
+ <skip />
+ <!-- no translation found for wifi_display_scan (8453135922233546097) -->
+ <skip />
+ <!-- no translation found for wifi_display_disconnect (5450214362789378584) -->
+ <skip />
+ <!-- no translation found for wifi_display_dialog_title (2817993038700218900) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_available (980373281442607096) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connecting (1677010908036241940) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connected (9154375061719151149) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-ms/strings.xml b/packages/SystemUI/res/values-ms/strings.xml
index 191ee63..d9e36c7 100644
--- a/packages/SystemUI/res/values-ms/strings.xml
+++ b/packages/SystemUI/res/values-ms/strings.xml
@@ -141,7 +141,6 @@
<string name="gps_notification_searching_text" msgid="8574247005642736060">"Mencari GPS"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"Lokasi ditetapkan oleh GPS"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Padamkan semua pemberitahuan."</string>
- <string name="dreams_dock_launcher" msgid="3541196417659166245">"Aktifkan gambar skrin"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Maklumat apl"</string>
<string name="close_universe" msgid="3736513750241754348">"Tutup"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"Pemberitahuan dimatikan"</string>
@@ -151,4 +150,50 @@
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Skrin dikunci dalam orientasi potret."</string>
<!-- no translation found for jelly_bean_dream_name (5992026543636816792) -->
<skip />
+ <!-- no translation found for start_dreams (870400522982252717) -->
+ <skip />
+ <!-- no translation found for quick_settings_airplane_mode_label (5510520633448831350) -->
+ <skip />
+ <!-- no translation found for quick_settings_battery_label (2764511189368020794) -->
+ <skip />
+ <!-- no translation found for quick_settings_bluetooth_label (6304190285170721401) -->
+ <skip />
+ <!-- no translation found for quick_settings_brightness_label (6968372297018755815) -->
+ <skip />
+ <!-- no translation found for quick_settings_ime_label (6877325300716130498) -->
+ <skip />
+ <!-- no translation found for quick_settings_location_label (3292451598267467545) -->
+ <skip />
+ <!-- no translation found for quick_settings_media_device_label (1302906836372603762) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_label (7725671335550695589) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_emergency_only (2713774041672886750) -->
+ <skip />
+ <!-- no translation found for quick_settings_settings_label (5326556592578065401) -->
+ <skip />
+ <!-- no translation found for quick_settings_time_label (4635969182239736408) -->
+ <skip />
+ <!-- no translation found for quick_settings_user_label (5238995632130897840) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_label (4393429107095001520) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_no_network (2221993077220856376) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_label (6653501376641018614) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_no_connection_label (6255615315258869136) -->
+ <skip />
+ <!-- no translation found for wifi_display_scan (8453135922233546097) -->
+ <skip />
+ <!-- no translation found for wifi_display_disconnect (5450214362789378584) -->
+ <skip />
+ <!-- no translation found for wifi_display_dialog_title (2817993038700218900) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_available (980373281442607096) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connecting (1677010908036241940) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connected (9154375061719151149) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-nb/strings.xml b/packages/SystemUI/res/values-nb/strings.xml
index 8aa5f26..4f44fc11 100644
--- a/packages/SystemUI/res/values-nb/strings.xml
+++ b/packages/SystemUI/res/values-nb/strings.xml
@@ -141,7 +141,6 @@
<string name="gps_notification_searching_text" msgid="8574247005642736060">"Søker etter GPS"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"Posisjon angitt av GPS"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Fjern alle varslinger."</string>
- <string name="dreams_dock_launcher" msgid="3541196417659166245">"Aktiver skjermbeskytter"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Info om app"</string>
<string name="close_universe" msgid="3736513750241754348">"Lukk"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"Varsler er deaktivert"</string>
@@ -151,4 +150,50 @@
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Skjermen er låst i stående retning."</string>
<!-- no translation found for jelly_bean_dream_name (5992026543636816792) -->
<skip />
+ <!-- no translation found for start_dreams (870400522982252717) -->
+ <skip />
+ <!-- no translation found for quick_settings_airplane_mode_label (5510520633448831350) -->
+ <skip />
+ <!-- no translation found for quick_settings_battery_label (2764511189368020794) -->
+ <skip />
+ <!-- no translation found for quick_settings_bluetooth_label (6304190285170721401) -->
+ <skip />
+ <!-- no translation found for quick_settings_brightness_label (6968372297018755815) -->
+ <skip />
+ <!-- no translation found for quick_settings_ime_label (6877325300716130498) -->
+ <skip />
+ <!-- no translation found for quick_settings_location_label (3292451598267467545) -->
+ <skip />
+ <!-- no translation found for quick_settings_media_device_label (1302906836372603762) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_label (7725671335550695589) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_emergency_only (2713774041672886750) -->
+ <skip />
+ <!-- no translation found for quick_settings_settings_label (5326556592578065401) -->
+ <skip />
+ <!-- no translation found for quick_settings_time_label (4635969182239736408) -->
+ <skip />
+ <!-- no translation found for quick_settings_user_label (5238995632130897840) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_label (4393429107095001520) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_no_network (2221993077220856376) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_label (6653501376641018614) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_no_connection_label (6255615315258869136) -->
+ <skip />
+ <!-- no translation found for wifi_display_scan (8453135922233546097) -->
+ <skip />
+ <!-- no translation found for wifi_display_disconnect (5450214362789378584) -->
+ <skip />
+ <!-- no translation found for wifi_display_dialog_title (2817993038700218900) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_available (980373281442607096) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connecting (1677010908036241940) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connected (9154375061719151149) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-nl/strings.xml b/packages/SystemUI/res/values-nl/strings.xml
index b740dd4..97ad7cf 100644
--- a/packages/SystemUI/res/values-nl/strings.xml
+++ b/packages/SystemUI/res/values-nl/strings.xml
@@ -141,7 +141,6 @@
<string name="gps_notification_searching_text" msgid="8574247005642736060">"Zoeken naar GPS"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"Locatie bepaald met GPS"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Alle meldingen wissen."</string>
- <string name="dreams_dock_launcher" msgid="3541196417659166245">"Schermbeveiliging inschakelen"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"App-info"</string>
<string name="close_universe" msgid="3736513750241754348">"Sluiten"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"Meldingen uit"</string>
@@ -151,4 +150,50 @@
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Het scherm is nu vergrendeld in staande stand."</string>
<!-- no translation found for jelly_bean_dream_name (5992026543636816792) -->
<skip />
+ <!-- no translation found for start_dreams (870400522982252717) -->
+ <skip />
+ <!-- no translation found for quick_settings_airplane_mode_label (5510520633448831350) -->
+ <skip />
+ <!-- no translation found for quick_settings_battery_label (2764511189368020794) -->
+ <skip />
+ <!-- no translation found for quick_settings_bluetooth_label (6304190285170721401) -->
+ <skip />
+ <!-- no translation found for quick_settings_brightness_label (6968372297018755815) -->
+ <skip />
+ <!-- no translation found for quick_settings_ime_label (6877325300716130498) -->
+ <skip />
+ <!-- no translation found for quick_settings_location_label (3292451598267467545) -->
+ <skip />
+ <!-- no translation found for quick_settings_media_device_label (1302906836372603762) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_label (7725671335550695589) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_emergency_only (2713774041672886750) -->
+ <skip />
+ <!-- no translation found for quick_settings_settings_label (5326556592578065401) -->
+ <skip />
+ <!-- no translation found for quick_settings_time_label (4635969182239736408) -->
+ <skip />
+ <!-- no translation found for quick_settings_user_label (5238995632130897840) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_label (4393429107095001520) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_no_network (2221993077220856376) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_label (6653501376641018614) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_no_connection_label (6255615315258869136) -->
+ <skip />
+ <!-- no translation found for wifi_display_scan (8453135922233546097) -->
+ <skip />
+ <!-- no translation found for wifi_display_disconnect (5450214362789378584) -->
+ <skip />
+ <!-- no translation found for wifi_display_dialog_title (2817993038700218900) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_available (980373281442607096) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connecting (1677010908036241940) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connected (9154375061719151149) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-pl/strings.xml b/packages/SystemUI/res/values-pl/strings.xml
index e60c3b9..a82a5d7 100644
--- a/packages/SystemUI/res/values-pl/strings.xml
+++ b/packages/SystemUI/res/values-pl/strings.xml
@@ -141,7 +141,6 @@
<string name="gps_notification_searching_text" msgid="8574247005642736060">"Wyszukiwanie sygnału GPS"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"Lokalizacja ustawiona według GPS"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Usuń wszystkie powiadomienia."</string>
- <string name="dreams_dock_launcher" msgid="3541196417659166245">"Włącz wygaszacz ekranu."</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"O aplikacji"</string>
<string name="close_universe" msgid="3736513750241754348">"Zamknij"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"Powiadomienia wyłączone"</string>
@@ -151,4 +150,50 @@
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Ekran jest zablokowany w orientacji pionowej."</string>
<!-- no translation found for jelly_bean_dream_name (5992026543636816792) -->
<skip />
+ <!-- no translation found for start_dreams (870400522982252717) -->
+ <skip />
+ <!-- no translation found for quick_settings_airplane_mode_label (5510520633448831350) -->
+ <skip />
+ <!-- no translation found for quick_settings_battery_label (2764511189368020794) -->
+ <skip />
+ <!-- no translation found for quick_settings_bluetooth_label (6304190285170721401) -->
+ <skip />
+ <!-- no translation found for quick_settings_brightness_label (6968372297018755815) -->
+ <skip />
+ <!-- no translation found for quick_settings_ime_label (6877325300716130498) -->
+ <skip />
+ <!-- no translation found for quick_settings_location_label (3292451598267467545) -->
+ <skip />
+ <!-- no translation found for quick_settings_media_device_label (1302906836372603762) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_label (7725671335550695589) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_emergency_only (2713774041672886750) -->
+ <skip />
+ <!-- no translation found for quick_settings_settings_label (5326556592578065401) -->
+ <skip />
+ <!-- no translation found for quick_settings_time_label (4635969182239736408) -->
+ <skip />
+ <!-- no translation found for quick_settings_user_label (5238995632130897840) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_label (4393429107095001520) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_no_network (2221993077220856376) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_label (6653501376641018614) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_no_connection_label (6255615315258869136) -->
+ <skip />
+ <!-- no translation found for wifi_display_scan (8453135922233546097) -->
+ <skip />
+ <!-- no translation found for wifi_display_disconnect (5450214362789378584) -->
+ <skip />
+ <!-- no translation found for wifi_display_dialog_title (2817993038700218900) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_available (980373281442607096) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connecting (1677010908036241940) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connected (9154375061719151149) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-pt-rPT/strings.xml b/packages/SystemUI/res/values-pt-rPT/strings.xml
index b2e008c..4cc3adf 100644
--- a/packages/SystemUI/res/values-pt-rPT/strings.xml
+++ b/packages/SystemUI/res/values-pt-rPT/strings.xml
@@ -141,7 +141,6 @@
<string name="gps_notification_searching_text" msgid="8574247005642736060">"A procurar GPS"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"Localização definida por GPS"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Limpar todas as notificações."</string>
- <string name="dreams_dock_launcher" msgid="3541196417659166245">"Ativar proteção de ecrã"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Informações da aplicação"</string>
<string name="close_universe" msgid="3736513750241754348">"Fechar"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"Notificações desativadas"</string>
@@ -151,4 +150,50 @@
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"O ecrã está bloqueado na orientação vertical."</string>
<!-- no translation found for jelly_bean_dream_name (5992026543636816792) -->
<skip />
+ <!-- no translation found for start_dreams (870400522982252717) -->
+ <skip />
+ <!-- no translation found for quick_settings_airplane_mode_label (5510520633448831350) -->
+ <skip />
+ <!-- no translation found for quick_settings_battery_label (2764511189368020794) -->
+ <skip />
+ <!-- no translation found for quick_settings_bluetooth_label (6304190285170721401) -->
+ <skip />
+ <!-- no translation found for quick_settings_brightness_label (6968372297018755815) -->
+ <skip />
+ <!-- no translation found for quick_settings_ime_label (6877325300716130498) -->
+ <skip />
+ <!-- no translation found for quick_settings_location_label (3292451598267467545) -->
+ <skip />
+ <!-- no translation found for quick_settings_media_device_label (1302906836372603762) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_label (7725671335550695589) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_emergency_only (2713774041672886750) -->
+ <skip />
+ <!-- no translation found for quick_settings_settings_label (5326556592578065401) -->
+ <skip />
+ <!-- no translation found for quick_settings_time_label (4635969182239736408) -->
+ <skip />
+ <!-- no translation found for quick_settings_user_label (5238995632130897840) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_label (4393429107095001520) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_no_network (2221993077220856376) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_label (6653501376641018614) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_no_connection_label (6255615315258869136) -->
+ <skip />
+ <!-- no translation found for wifi_display_scan (8453135922233546097) -->
+ <skip />
+ <!-- no translation found for wifi_display_disconnect (5450214362789378584) -->
+ <skip />
+ <!-- no translation found for wifi_display_dialog_title (2817993038700218900) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_available (980373281442607096) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connecting (1677010908036241940) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connected (9154375061719151149) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-pt/strings.xml b/packages/SystemUI/res/values-pt/strings.xml
index 966495a..c13d707 100644
--- a/packages/SystemUI/res/values-pt/strings.xml
+++ b/packages/SystemUI/res/values-pt/strings.xml
@@ -143,7 +143,6 @@
<string name="gps_notification_searching_text" msgid="8574247005642736060">"Buscando GPS"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"Local definido por GPS"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Limpar todas as notificações."</string>
- <string name="dreams_dock_launcher" msgid="3541196417659166245">"Ativar proteção de tela"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Informações do aplicativo"</string>
<string name="close_universe" msgid="3736513750241754348">"Fechar"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"Notificações desativadas"</string>
@@ -153,4 +152,50 @@
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"A tela está bloqueada na orientação retrato."</string>
<!-- no translation found for jelly_bean_dream_name (5992026543636816792) -->
<skip />
+ <!-- no translation found for start_dreams (870400522982252717) -->
+ <skip />
+ <!-- no translation found for quick_settings_airplane_mode_label (5510520633448831350) -->
+ <skip />
+ <!-- no translation found for quick_settings_battery_label (2764511189368020794) -->
+ <skip />
+ <!-- no translation found for quick_settings_bluetooth_label (6304190285170721401) -->
+ <skip />
+ <!-- no translation found for quick_settings_brightness_label (6968372297018755815) -->
+ <skip />
+ <!-- no translation found for quick_settings_ime_label (6877325300716130498) -->
+ <skip />
+ <!-- no translation found for quick_settings_location_label (3292451598267467545) -->
+ <skip />
+ <!-- no translation found for quick_settings_media_device_label (1302906836372603762) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_label (7725671335550695589) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_emergency_only (2713774041672886750) -->
+ <skip />
+ <!-- no translation found for quick_settings_settings_label (5326556592578065401) -->
+ <skip />
+ <!-- no translation found for quick_settings_time_label (4635969182239736408) -->
+ <skip />
+ <!-- no translation found for quick_settings_user_label (5238995632130897840) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_label (4393429107095001520) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_no_network (2221993077220856376) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_label (6653501376641018614) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_no_connection_label (6255615315258869136) -->
+ <skip />
+ <!-- no translation found for wifi_display_scan (8453135922233546097) -->
+ <skip />
+ <!-- no translation found for wifi_display_disconnect (5450214362789378584) -->
+ <skip />
+ <!-- no translation found for wifi_display_dialog_title (2817993038700218900) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_available (980373281442607096) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connecting (1677010908036241940) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connected (9154375061719151149) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-rm/strings.xml b/packages/SystemUI/res/values-rm/strings.xml
index 141c13e..f7527cc 100644
--- a/packages/SystemUI/res/values-rm/strings.xml
+++ b/packages/SystemUI/res/values-rm/strings.xml
@@ -252,8 +252,6 @@
<skip />
<!-- no translation found for accessibility_clear_all (5235938559247164925) -->
<skip />
- <!-- no translation found for dreams_dock_launcher (3541196417659166245) -->
- <skip />
<!-- no translation found for status_bar_notification_inspect_item_title (1163547729015390250) -->
<skip />
<!-- no translation found for close_universe (3736513750241754348) -->
@@ -270,4 +268,50 @@
<skip />
<!-- no translation found for jelly_bean_dream_name (5992026543636816792) -->
<skip />
+ <!-- no translation found for start_dreams (870400522982252717) -->
+ <skip />
+ <!-- no translation found for quick_settings_airplane_mode_label (5510520633448831350) -->
+ <skip />
+ <!-- no translation found for quick_settings_battery_label (2764511189368020794) -->
+ <skip />
+ <!-- no translation found for quick_settings_bluetooth_label (6304190285170721401) -->
+ <skip />
+ <!-- no translation found for quick_settings_brightness_label (6968372297018755815) -->
+ <skip />
+ <!-- no translation found for quick_settings_ime_label (6877325300716130498) -->
+ <skip />
+ <!-- no translation found for quick_settings_location_label (3292451598267467545) -->
+ <skip />
+ <!-- no translation found for quick_settings_media_device_label (1302906836372603762) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_label (7725671335550695589) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_emergency_only (2713774041672886750) -->
+ <skip />
+ <!-- no translation found for quick_settings_settings_label (5326556592578065401) -->
+ <skip />
+ <!-- no translation found for quick_settings_time_label (4635969182239736408) -->
+ <skip />
+ <!-- no translation found for quick_settings_user_label (5238995632130897840) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_label (4393429107095001520) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_no_network (2221993077220856376) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_label (6653501376641018614) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_no_connection_label (6255615315258869136) -->
+ <skip />
+ <!-- no translation found for wifi_display_scan (8453135922233546097) -->
+ <skip />
+ <!-- no translation found for wifi_display_disconnect (5450214362789378584) -->
+ <skip />
+ <!-- no translation found for wifi_display_dialog_title (2817993038700218900) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_available (980373281442607096) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connecting (1677010908036241940) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connected (9154375061719151149) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-ro/strings.xml b/packages/SystemUI/res/values-ro/strings.xml
index 42991cb..54f9368 100644
--- a/packages/SystemUI/res/values-ro/strings.xml
+++ b/packages/SystemUI/res/values-ro/strings.xml
@@ -141,7 +141,6 @@
<string name="gps_notification_searching_text" msgid="8574247005642736060">"Se caută GPS"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"Locaţie setată prin GPS"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Ştergeţi toate notificările."</string>
- <string name="dreams_dock_launcher" msgid="3541196417659166245">"Activaţi screensaverul"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Informaţii despre aplicaţie"</string>
<string name="close_universe" msgid="3736513750241754348">"Închideţi"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"Notificările sunt dezactivate"</string>
@@ -151,4 +150,50 @@
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Ecranul este blocat în orientarea de tip portret."</string>
<!-- no translation found for jelly_bean_dream_name (5992026543636816792) -->
<skip />
+ <!-- no translation found for start_dreams (870400522982252717) -->
+ <skip />
+ <!-- no translation found for quick_settings_airplane_mode_label (5510520633448831350) -->
+ <skip />
+ <!-- no translation found for quick_settings_battery_label (2764511189368020794) -->
+ <skip />
+ <!-- no translation found for quick_settings_bluetooth_label (6304190285170721401) -->
+ <skip />
+ <!-- no translation found for quick_settings_brightness_label (6968372297018755815) -->
+ <skip />
+ <!-- no translation found for quick_settings_ime_label (6877325300716130498) -->
+ <skip />
+ <!-- no translation found for quick_settings_location_label (3292451598267467545) -->
+ <skip />
+ <!-- no translation found for quick_settings_media_device_label (1302906836372603762) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_label (7725671335550695589) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_emergency_only (2713774041672886750) -->
+ <skip />
+ <!-- no translation found for quick_settings_settings_label (5326556592578065401) -->
+ <skip />
+ <!-- no translation found for quick_settings_time_label (4635969182239736408) -->
+ <skip />
+ <!-- no translation found for quick_settings_user_label (5238995632130897840) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_label (4393429107095001520) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_no_network (2221993077220856376) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_label (6653501376641018614) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_no_connection_label (6255615315258869136) -->
+ <skip />
+ <!-- no translation found for wifi_display_scan (8453135922233546097) -->
+ <skip />
+ <!-- no translation found for wifi_display_disconnect (5450214362789378584) -->
+ <skip />
+ <!-- no translation found for wifi_display_dialog_title (2817993038700218900) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_available (980373281442607096) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connecting (1677010908036241940) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connected (9154375061719151149) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-ru/strings.xml b/packages/SystemUI/res/values-ru/strings.xml
index 78b9297..63b0b14 100644
--- a/packages/SystemUI/res/values-ru/strings.xml
+++ b/packages/SystemUI/res/values-ru/strings.xml
@@ -143,7 +143,6 @@
<string name="gps_notification_searching_text" msgid="8574247005642736060">"Поиск GPS"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"Координаты по GPS"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Удалить все уведомления"</string>
- <string name="dreams_dock_launcher" msgid="3541196417659166245">"Активация заставки экрана"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"О приложении"</string>
<string name="close_universe" msgid="3736513750241754348">"Закрыть"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"Уведомления отключены"</string>
@@ -153,4 +152,50 @@
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Выбрана только книжная ориентация экрана."</string>
<!-- no translation found for jelly_bean_dream_name (5992026543636816792) -->
<skip />
+ <!-- no translation found for start_dreams (870400522982252717) -->
+ <skip />
+ <!-- no translation found for quick_settings_airplane_mode_label (5510520633448831350) -->
+ <skip />
+ <!-- no translation found for quick_settings_battery_label (2764511189368020794) -->
+ <skip />
+ <!-- no translation found for quick_settings_bluetooth_label (6304190285170721401) -->
+ <skip />
+ <!-- no translation found for quick_settings_brightness_label (6968372297018755815) -->
+ <skip />
+ <!-- no translation found for quick_settings_ime_label (6877325300716130498) -->
+ <skip />
+ <!-- no translation found for quick_settings_location_label (3292451598267467545) -->
+ <skip />
+ <!-- no translation found for quick_settings_media_device_label (1302906836372603762) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_label (7725671335550695589) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_emergency_only (2713774041672886750) -->
+ <skip />
+ <!-- no translation found for quick_settings_settings_label (5326556592578065401) -->
+ <skip />
+ <!-- no translation found for quick_settings_time_label (4635969182239736408) -->
+ <skip />
+ <!-- no translation found for quick_settings_user_label (5238995632130897840) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_label (4393429107095001520) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_no_network (2221993077220856376) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_label (6653501376641018614) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_no_connection_label (6255615315258869136) -->
+ <skip />
+ <!-- no translation found for wifi_display_scan (8453135922233546097) -->
+ <skip />
+ <!-- no translation found for wifi_display_disconnect (5450214362789378584) -->
+ <skip />
+ <!-- no translation found for wifi_display_dialog_title (2817993038700218900) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_available (980373281442607096) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connecting (1677010908036241940) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connected (9154375061719151149) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-sk/strings.xml b/packages/SystemUI/res/values-sk/strings.xml
index 5fc943e..2c652dc 100644
--- a/packages/SystemUI/res/values-sk/strings.xml
+++ b/packages/SystemUI/res/values-sk/strings.xml
@@ -143,7 +143,6 @@
<string name="gps_notification_searching_text" msgid="8574247005642736060">"Vyhľadávanie satelitov GPS"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"Poloha nastavená pomocou GPS"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Vymazať všetky upozornenia."</string>
- <string name="dreams_dock_launcher" msgid="3541196417659166245">"Aktivovať šetrič obrazovky"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Informácie o aplikácii"</string>
<string name="close_universe" msgid="3736513750241754348">"Zavrieť"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"Upozornenia sú vypnuté"</string>
@@ -153,4 +152,50 @@
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Obrazovka je uzamknutá v orientácii na výšku."</string>
<!-- no translation found for jelly_bean_dream_name (5992026543636816792) -->
<skip />
+ <!-- no translation found for start_dreams (870400522982252717) -->
+ <skip />
+ <!-- no translation found for quick_settings_airplane_mode_label (5510520633448831350) -->
+ <skip />
+ <!-- no translation found for quick_settings_battery_label (2764511189368020794) -->
+ <skip />
+ <!-- no translation found for quick_settings_bluetooth_label (6304190285170721401) -->
+ <skip />
+ <!-- no translation found for quick_settings_brightness_label (6968372297018755815) -->
+ <skip />
+ <!-- no translation found for quick_settings_ime_label (6877325300716130498) -->
+ <skip />
+ <!-- no translation found for quick_settings_location_label (3292451598267467545) -->
+ <skip />
+ <!-- no translation found for quick_settings_media_device_label (1302906836372603762) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_label (7725671335550695589) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_emergency_only (2713774041672886750) -->
+ <skip />
+ <!-- no translation found for quick_settings_settings_label (5326556592578065401) -->
+ <skip />
+ <!-- no translation found for quick_settings_time_label (4635969182239736408) -->
+ <skip />
+ <!-- no translation found for quick_settings_user_label (5238995632130897840) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_label (4393429107095001520) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_no_network (2221993077220856376) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_label (6653501376641018614) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_no_connection_label (6255615315258869136) -->
+ <skip />
+ <!-- no translation found for wifi_display_scan (8453135922233546097) -->
+ <skip />
+ <!-- no translation found for wifi_display_disconnect (5450214362789378584) -->
+ <skip />
+ <!-- no translation found for wifi_display_dialog_title (2817993038700218900) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_available (980373281442607096) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connecting (1677010908036241940) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connected (9154375061719151149) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-sl/strings.xml b/packages/SystemUI/res/values-sl/strings.xml
index 9953428..018a12e 100644
--- a/packages/SystemUI/res/values-sl/strings.xml
+++ b/packages/SystemUI/res/values-sl/strings.xml
@@ -141,7 +141,6 @@
<string name="gps_notification_searching_text" msgid="8574247005642736060">"Iskanje GPS-a"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"Lokacija nastavljena z GPS-om"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Izbriši vsa obvestila."</string>
- <string name="dreams_dock_launcher" msgid="3541196417659166245">"Vklop ohranjevalnika zaslona"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Podatki o aplikaciji"</string>
<string name="close_universe" msgid="3736513750241754348">"Zapri"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"Obvestila so izklopljena"</string>
@@ -151,4 +150,50 @@
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Zaslon je zaklenjen v pokončni usmerjenosti."</string>
<!-- no translation found for jelly_bean_dream_name (5992026543636816792) -->
<skip />
+ <!-- no translation found for start_dreams (870400522982252717) -->
+ <skip />
+ <!-- no translation found for quick_settings_airplane_mode_label (5510520633448831350) -->
+ <skip />
+ <!-- no translation found for quick_settings_battery_label (2764511189368020794) -->
+ <skip />
+ <!-- no translation found for quick_settings_bluetooth_label (6304190285170721401) -->
+ <skip />
+ <!-- no translation found for quick_settings_brightness_label (6968372297018755815) -->
+ <skip />
+ <!-- no translation found for quick_settings_ime_label (6877325300716130498) -->
+ <skip />
+ <!-- no translation found for quick_settings_location_label (3292451598267467545) -->
+ <skip />
+ <!-- no translation found for quick_settings_media_device_label (1302906836372603762) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_label (7725671335550695589) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_emergency_only (2713774041672886750) -->
+ <skip />
+ <!-- no translation found for quick_settings_settings_label (5326556592578065401) -->
+ <skip />
+ <!-- no translation found for quick_settings_time_label (4635969182239736408) -->
+ <skip />
+ <!-- no translation found for quick_settings_user_label (5238995632130897840) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_label (4393429107095001520) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_no_network (2221993077220856376) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_label (6653501376641018614) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_no_connection_label (6255615315258869136) -->
+ <skip />
+ <!-- no translation found for wifi_display_scan (8453135922233546097) -->
+ <skip />
+ <!-- no translation found for wifi_display_disconnect (5450214362789378584) -->
+ <skip />
+ <!-- no translation found for wifi_display_dialog_title (2817993038700218900) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_available (980373281442607096) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connecting (1677010908036241940) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connected (9154375061719151149) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-sr/strings.xml b/packages/SystemUI/res/values-sr/strings.xml
index 83ada24..4583772 100644
--- a/packages/SystemUI/res/values-sr/strings.xml
+++ b/packages/SystemUI/res/values-sr/strings.xml
@@ -141,7 +141,6 @@
<string name="gps_notification_searching_text" msgid="8574247005642736060">"Тражи се GPS"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"Локацију је подесио GPS"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Обриши сва обавештења."</string>
- <string name="dreams_dock_launcher" msgid="3541196417659166245">"Активирање чувара екрана"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Информације о апликацији"</string>
<string name="close_universe" msgid="3736513750241754348">"Затвори"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"Обавештења су искључена"</string>
@@ -151,4 +150,50 @@
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Екран је закључан у вертикалном положају."</string>
<!-- no translation found for jelly_bean_dream_name (5992026543636816792) -->
<skip />
+ <!-- no translation found for start_dreams (870400522982252717) -->
+ <skip />
+ <!-- no translation found for quick_settings_airplane_mode_label (5510520633448831350) -->
+ <skip />
+ <!-- no translation found for quick_settings_battery_label (2764511189368020794) -->
+ <skip />
+ <!-- no translation found for quick_settings_bluetooth_label (6304190285170721401) -->
+ <skip />
+ <!-- no translation found for quick_settings_brightness_label (6968372297018755815) -->
+ <skip />
+ <!-- no translation found for quick_settings_ime_label (6877325300716130498) -->
+ <skip />
+ <!-- no translation found for quick_settings_location_label (3292451598267467545) -->
+ <skip />
+ <!-- no translation found for quick_settings_media_device_label (1302906836372603762) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_label (7725671335550695589) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_emergency_only (2713774041672886750) -->
+ <skip />
+ <!-- no translation found for quick_settings_settings_label (5326556592578065401) -->
+ <skip />
+ <!-- no translation found for quick_settings_time_label (4635969182239736408) -->
+ <skip />
+ <!-- no translation found for quick_settings_user_label (5238995632130897840) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_label (4393429107095001520) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_no_network (2221993077220856376) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_label (6653501376641018614) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_no_connection_label (6255615315258869136) -->
+ <skip />
+ <!-- no translation found for wifi_display_scan (8453135922233546097) -->
+ <skip />
+ <!-- no translation found for wifi_display_disconnect (5450214362789378584) -->
+ <skip />
+ <!-- no translation found for wifi_display_dialog_title (2817993038700218900) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_available (980373281442607096) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connecting (1677010908036241940) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connected (9154375061719151149) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-sv/strings.xml b/packages/SystemUI/res/values-sv/strings.xml
index e87a2d9..ae7232b 100644
--- a/packages/SystemUI/res/values-sv/strings.xml
+++ b/packages/SystemUI/res/values-sv/strings.xml
@@ -141,7 +141,6 @@
<string name="gps_notification_searching_text" msgid="8574247005642736060">"Sökning efter GPS pågår"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"Platsen har identifierats av GPS"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Ta bort alla meddelanden."</string>
- <string name="dreams_dock_launcher" msgid="3541196417659166245">"Aktivera skärmsläckare"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Info om appen"</string>
<string name="close_universe" msgid="3736513750241754348">"Stäng"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"Meddelanden inaktiverade"</string>
@@ -151,4 +150,50 @@
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Bildskärmens riktning är nu låst i stående format."</string>
<!-- no translation found for jelly_bean_dream_name (5992026543636816792) -->
<skip />
+ <!-- no translation found for start_dreams (870400522982252717) -->
+ <skip />
+ <!-- no translation found for quick_settings_airplane_mode_label (5510520633448831350) -->
+ <skip />
+ <!-- no translation found for quick_settings_battery_label (2764511189368020794) -->
+ <skip />
+ <!-- no translation found for quick_settings_bluetooth_label (6304190285170721401) -->
+ <skip />
+ <!-- no translation found for quick_settings_brightness_label (6968372297018755815) -->
+ <skip />
+ <!-- no translation found for quick_settings_ime_label (6877325300716130498) -->
+ <skip />
+ <!-- no translation found for quick_settings_location_label (3292451598267467545) -->
+ <skip />
+ <!-- no translation found for quick_settings_media_device_label (1302906836372603762) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_label (7725671335550695589) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_emergency_only (2713774041672886750) -->
+ <skip />
+ <!-- no translation found for quick_settings_settings_label (5326556592578065401) -->
+ <skip />
+ <!-- no translation found for quick_settings_time_label (4635969182239736408) -->
+ <skip />
+ <!-- no translation found for quick_settings_user_label (5238995632130897840) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_label (4393429107095001520) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_no_network (2221993077220856376) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_label (6653501376641018614) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_no_connection_label (6255615315258869136) -->
+ <skip />
+ <!-- no translation found for wifi_display_scan (8453135922233546097) -->
+ <skip />
+ <!-- no translation found for wifi_display_disconnect (5450214362789378584) -->
+ <skip />
+ <!-- no translation found for wifi_display_dialog_title (2817993038700218900) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_available (980373281442607096) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connecting (1677010908036241940) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connected (9154375061719151149) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-sw/strings.xml b/packages/SystemUI/res/values-sw/strings.xml
index 30fea17..ccd3bd3 100644
--- a/packages/SystemUI/res/values-sw/strings.xml
+++ b/packages/SystemUI/res/values-sw/strings.xml
@@ -139,7 +139,6 @@
<string name="gps_notification_searching_text" msgid="8574247005642736060">"Inatafuta GPS"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"Mahali pamewekwa na GPS"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Futa arifa zote."</string>
- <string name="dreams_dock_launcher" msgid="3541196417659166245">"Amilisha hifadhi ya skrini"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Taarifa ya programu"</string>
<string name="close_universe" msgid="3736513750241754348">"Funga"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"Arifa zimelemazwa"</string>
@@ -149,4 +148,50 @@
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Skrini imefungwa katika uelekeo wa picha."</string>
<!-- no translation found for jelly_bean_dream_name (5992026543636816792) -->
<skip />
+ <!-- no translation found for start_dreams (870400522982252717) -->
+ <skip />
+ <!-- no translation found for quick_settings_airplane_mode_label (5510520633448831350) -->
+ <skip />
+ <!-- no translation found for quick_settings_battery_label (2764511189368020794) -->
+ <skip />
+ <!-- no translation found for quick_settings_bluetooth_label (6304190285170721401) -->
+ <skip />
+ <!-- no translation found for quick_settings_brightness_label (6968372297018755815) -->
+ <skip />
+ <!-- no translation found for quick_settings_ime_label (6877325300716130498) -->
+ <skip />
+ <!-- no translation found for quick_settings_location_label (3292451598267467545) -->
+ <skip />
+ <!-- no translation found for quick_settings_media_device_label (1302906836372603762) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_label (7725671335550695589) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_emergency_only (2713774041672886750) -->
+ <skip />
+ <!-- no translation found for quick_settings_settings_label (5326556592578065401) -->
+ <skip />
+ <!-- no translation found for quick_settings_time_label (4635969182239736408) -->
+ <skip />
+ <!-- no translation found for quick_settings_user_label (5238995632130897840) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_label (4393429107095001520) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_no_network (2221993077220856376) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_label (6653501376641018614) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_no_connection_label (6255615315258869136) -->
+ <skip />
+ <!-- no translation found for wifi_display_scan (8453135922233546097) -->
+ <skip />
+ <!-- no translation found for wifi_display_disconnect (5450214362789378584) -->
+ <skip />
+ <!-- no translation found for wifi_display_dialog_title (2817993038700218900) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_available (980373281442607096) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connecting (1677010908036241940) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connected (9154375061719151149) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-th/strings.xml b/packages/SystemUI/res/values-th/strings.xml
index 89c640d..df5fb1b 100644
--- a/packages/SystemUI/res/values-th/strings.xml
+++ b/packages/SystemUI/res/values-th/strings.xml
@@ -141,7 +141,6 @@
<string name="gps_notification_searching_text" msgid="8574247005642736060">"กำลังค้นหา GPS"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"ตำแหน่งที่กำหนดโดย GPS"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"ล้างการแจ้งเตือนทั้งหมด"</string>
- <string name="dreams_dock_launcher" msgid="3541196417659166245">"เปิดโปรแกรมรักษาหน้าจอ"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"ข้อมูลแอป"</string>
<string name="close_universe" msgid="3736513750241754348">"ปิด"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"การแจ้งเตือนปิดอยู่"</string>
@@ -151,4 +150,50 @@
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"ขณะนี้หน้าจอถูกล็อกให้วางในแนวตั้ง"</string>
<!-- no translation found for jelly_bean_dream_name (5992026543636816792) -->
<skip />
+ <!-- no translation found for start_dreams (870400522982252717) -->
+ <skip />
+ <!-- no translation found for quick_settings_airplane_mode_label (5510520633448831350) -->
+ <skip />
+ <!-- no translation found for quick_settings_battery_label (2764511189368020794) -->
+ <skip />
+ <!-- no translation found for quick_settings_bluetooth_label (6304190285170721401) -->
+ <skip />
+ <!-- no translation found for quick_settings_brightness_label (6968372297018755815) -->
+ <skip />
+ <!-- no translation found for quick_settings_ime_label (6877325300716130498) -->
+ <skip />
+ <!-- no translation found for quick_settings_location_label (3292451598267467545) -->
+ <skip />
+ <!-- no translation found for quick_settings_media_device_label (1302906836372603762) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_label (7725671335550695589) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_emergency_only (2713774041672886750) -->
+ <skip />
+ <!-- no translation found for quick_settings_settings_label (5326556592578065401) -->
+ <skip />
+ <!-- no translation found for quick_settings_time_label (4635969182239736408) -->
+ <skip />
+ <!-- no translation found for quick_settings_user_label (5238995632130897840) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_label (4393429107095001520) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_no_network (2221993077220856376) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_label (6653501376641018614) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_no_connection_label (6255615315258869136) -->
+ <skip />
+ <!-- no translation found for wifi_display_scan (8453135922233546097) -->
+ <skip />
+ <!-- no translation found for wifi_display_disconnect (5450214362789378584) -->
+ <skip />
+ <!-- no translation found for wifi_display_dialog_title (2817993038700218900) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_available (980373281442607096) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connecting (1677010908036241940) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connected (9154375061719151149) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-tl/strings.xml b/packages/SystemUI/res/values-tl/strings.xml
index 88d3607..620b9a7 100644
--- a/packages/SystemUI/res/values-tl/strings.xml
+++ b/packages/SystemUI/res/values-tl/strings.xml
@@ -141,7 +141,6 @@
<string name="gps_notification_searching_text" msgid="8574247005642736060">"Naghahanap ng GPS"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"Lokasyong itinatakda ng GPS"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"I-clear ang lahat ng notification."</string>
- <string name="dreams_dock_launcher" msgid="3541196417659166245">"I-activate ang screen saver"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Impormasyon ng app"</string>
<string name="close_universe" msgid="3736513750241754348">"Isara"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"Naka-off ang mga notification"</string>
@@ -151,4 +150,50 @@
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Naka-lock ang screen sa patayong oryentasyon."</string>
<!-- no translation found for jelly_bean_dream_name (5992026543636816792) -->
<skip />
+ <!-- no translation found for start_dreams (870400522982252717) -->
+ <skip />
+ <!-- no translation found for quick_settings_airplane_mode_label (5510520633448831350) -->
+ <skip />
+ <!-- no translation found for quick_settings_battery_label (2764511189368020794) -->
+ <skip />
+ <!-- no translation found for quick_settings_bluetooth_label (6304190285170721401) -->
+ <skip />
+ <!-- no translation found for quick_settings_brightness_label (6968372297018755815) -->
+ <skip />
+ <!-- no translation found for quick_settings_ime_label (6877325300716130498) -->
+ <skip />
+ <!-- no translation found for quick_settings_location_label (3292451598267467545) -->
+ <skip />
+ <!-- no translation found for quick_settings_media_device_label (1302906836372603762) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_label (7725671335550695589) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_emergency_only (2713774041672886750) -->
+ <skip />
+ <!-- no translation found for quick_settings_settings_label (5326556592578065401) -->
+ <skip />
+ <!-- no translation found for quick_settings_time_label (4635969182239736408) -->
+ <skip />
+ <!-- no translation found for quick_settings_user_label (5238995632130897840) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_label (4393429107095001520) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_no_network (2221993077220856376) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_label (6653501376641018614) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_no_connection_label (6255615315258869136) -->
+ <skip />
+ <!-- no translation found for wifi_display_scan (8453135922233546097) -->
+ <skip />
+ <!-- no translation found for wifi_display_disconnect (5450214362789378584) -->
+ <skip />
+ <!-- no translation found for wifi_display_dialog_title (2817993038700218900) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_available (980373281442607096) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connecting (1677010908036241940) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connected (9154375061719151149) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-tr/strings.xml b/packages/SystemUI/res/values-tr/strings.xml
index 15bc353..9e75cd5 100644
--- a/packages/SystemUI/res/values-tr/strings.xml
+++ b/packages/SystemUI/res/values-tr/strings.xml
@@ -141,7 +141,6 @@
<string name="gps_notification_searching_text" msgid="8574247005642736060">"GPS aranıyor"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"Konum GPS ile belirlendi"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Tüm bildirimleri temizle"</string>
- <string name="dreams_dock_launcher" msgid="3541196417659166245">"Ekran koruyucuyu etkinleştir"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Uygulama bilgileri"</string>
<string name="close_universe" msgid="3736513750241754348">"Kapat"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"Bildirimler kapalı"</string>
@@ -151,4 +150,50 @@
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Ekran dikey yönde kilitlendi."</string>
<!-- no translation found for jelly_bean_dream_name (5992026543636816792) -->
<skip />
+ <!-- no translation found for start_dreams (870400522982252717) -->
+ <skip />
+ <!-- no translation found for quick_settings_airplane_mode_label (5510520633448831350) -->
+ <skip />
+ <!-- no translation found for quick_settings_battery_label (2764511189368020794) -->
+ <skip />
+ <!-- no translation found for quick_settings_bluetooth_label (6304190285170721401) -->
+ <skip />
+ <!-- no translation found for quick_settings_brightness_label (6968372297018755815) -->
+ <skip />
+ <!-- no translation found for quick_settings_ime_label (6877325300716130498) -->
+ <skip />
+ <!-- no translation found for quick_settings_location_label (3292451598267467545) -->
+ <skip />
+ <!-- no translation found for quick_settings_media_device_label (1302906836372603762) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_label (7725671335550695589) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_emergency_only (2713774041672886750) -->
+ <skip />
+ <!-- no translation found for quick_settings_settings_label (5326556592578065401) -->
+ <skip />
+ <!-- no translation found for quick_settings_time_label (4635969182239736408) -->
+ <skip />
+ <!-- no translation found for quick_settings_user_label (5238995632130897840) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_label (4393429107095001520) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_no_network (2221993077220856376) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_label (6653501376641018614) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_no_connection_label (6255615315258869136) -->
+ <skip />
+ <!-- no translation found for wifi_display_scan (8453135922233546097) -->
+ <skip />
+ <!-- no translation found for wifi_display_disconnect (5450214362789378584) -->
+ <skip />
+ <!-- no translation found for wifi_display_dialog_title (2817993038700218900) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_available (980373281442607096) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connecting (1677010908036241940) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connected (9154375061719151149) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-uk/strings.xml b/packages/SystemUI/res/values-uk/strings.xml
index c731fad..8ddf6e3 100644
--- a/packages/SystemUI/res/values-uk/strings.xml
+++ b/packages/SystemUI/res/values-uk/strings.xml
@@ -141,7 +141,6 @@
<string name="gps_notification_searching_text" msgid="8574247005642736060">"Виконується пошук GPS-сигналу"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"Місцезнаходження встановлено за допомогою GPS"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Очистити всі сповіщення."</string>
- <string name="dreams_dock_launcher" msgid="3541196417659166245">"Активувати заставку"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Інформація про програму"</string>
<string name="close_universe" msgid="3736513750241754348">"Закрити"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"Сповіщення вимкнено"</string>
@@ -151,4 +150,50 @@
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Екран заблоковано в книжковій орієнтації."</string>
<!-- no translation found for jelly_bean_dream_name (5992026543636816792) -->
<skip />
+ <!-- no translation found for start_dreams (870400522982252717) -->
+ <skip />
+ <!-- no translation found for quick_settings_airplane_mode_label (5510520633448831350) -->
+ <skip />
+ <!-- no translation found for quick_settings_battery_label (2764511189368020794) -->
+ <skip />
+ <!-- no translation found for quick_settings_bluetooth_label (6304190285170721401) -->
+ <skip />
+ <!-- no translation found for quick_settings_brightness_label (6968372297018755815) -->
+ <skip />
+ <!-- no translation found for quick_settings_ime_label (6877325300716130498) -->
+ <skip />
+ <!-- no translation found for quick_settings_location_label (3292451598267467545) -->
+ <skip />
+ <!-- no translation found for quick_settings_media_device_label (1302906836372603762) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_label (7725671335550695589) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_emergency_only (2713774041672886750) -->
+ <skip />
+ <!-- no translation found for quick_settings_settings_label (5326556592578065401) -->
+ <skip />
+ <!-- no translation found for quick_settings_time_label (4635969182239736408) -->
+ <skip />
+ <!-- no translation found for quick_settings_user_label (5238995632130897840) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_label (4393429107095001520) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_no_network (2221993077220856376) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_label (6653501376641018614) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_no_connection_label (6255615315258869136) -->
+ <skip />
+ <!-- no translation found for wifi_display_scan (8453135922233546097) -->
+ <skip />
+ <!-- no translation found for wifi_display_disconnect (5450214362789378584) -->
+ <skip />
+ <!-- no translation found for wifi_display_dialog_title (2817993038700218900) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_available (980373281442607096) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connecting (1677010908036241940) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connected (9154375061719151149) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-vi/strings.xml b/packages/SystemUI/res/values-vi/strings.xml
index 6a51cc1..daf0deb 100644
--- a/packages/SystemUI/res/values-vi/strings.xml
+++ b/packages/SystemUI/res/values-vi/strings.xml
@@ -141,7 +141,6 @@
<string name="gps_notification_searching_text" msgid="8574247005642736060">"Đang tìm kiếm GPS"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"Vị trí đặt bởi GPS"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Xóa tất cả thông báo."</string>
- <string name="dreams_dock_launcher" msgid="3541196417659166245">"Kích hoạt trình bảo vệ màn hình"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Thông tin về ứng dụng"</string>
<string name="close_universe" msgid="3736513750241754348">"Đóng"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"Tắt thông báo"</string>
@@ -151,4 +150,50 @@
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Màn hình hiện bị khóa theo hướng dọc."</string>
<!-- no translation found for jelly_bean_dream_name (5992026543636816792) -->
<skip />
+ <!-- no translation found for start_dreams (870400522982252717) -->
+ <skip />
+ <!-- no translation found for quick_settings_airplane_mode_label (5510520633448831350) -->
+ <skip />
+ <!-- no translation found for quick_settings_battery_label (2764511189368020794) -->
+ <skip />
+ <!-- no translation found for quick_settings_bluetooth_label (6304190285170721401) -->
+ <skip />
+ <!-- no translation found for quick_settings_brightness_label (6968372297018755815) -->
+ <skip />
+ <!-- no translation found for quick_settings_ime_label (6877325300716130498) -->
+ <skip />
+ <!-- no translation found for quick_settings_location_label (3292451598267467545) -->
+ <skip />
+ <!-- no translation found for quick_settings_media_device_label (1302906836372603762) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_label (7725671335550695589) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_emergency_only (2713774041672886750) -->
+ <skip />
+ <!-- no translation found for quick_settings_settings_label (5326556592578065401) -->
+ <skip />
+ <!-- no translation found for quick_settings_time_label (4635969182239736408) -->
+ <skip />
+ <!-- no translation found for quick_settings_user_label (5238995632130897840) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_label (4393429107095001520) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_no_network (2221993077220856376) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_label (6653501376641018614) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_no_connection_label (6255615315258869136) -->
+ <skip />
+ <!-- no translation found for wifi_display_scan (8453135922233546097) -->
+ <skip />
+ <!-- no translation found for wifi_display_disconnect (5450214362789378584) -->
+ <skip />
+ <!-- no translation found for wifi_display_dialog_title (2817993038700218900) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_available (980373281442607096) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connecting (1677010908036241940) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connected (9154375061719151149) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-zh-rCN/strings.xml b/packages/SystemUI/res/values-zh-rCN/strings.xml
index 6aa03a0..8c0bc08 100644
--- a/packages/SystemUI/res/values-zh-rCN/strings.xml
+++ b/packages/SystemUI/res/values-zh-rCN/strings.xml
@@ -143,7 +143,6 @@
<string name="gps_notification_searching_text" msgid="8574247005642736060">"正在搜索 GPS"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"已通过 GPS 确定位置"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"清除所有通知。"</string>
- <string name="dreams_dock_launcher" msgid="3541196417659166245">"激活屏幕保护程序"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"应用信息"</string>
<string name="close_universe" msgid="3736513750241754348">"关闭"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"通知功能已停用"</string>
@@ -153,4 +152,50 @@
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"屏幕锁定为纵向模式。"</string>
<!-- no translation found for jelly_bean_dream_name (5992026543636816792) -->
<skip />
+ <!-- no translation found for start_dreams (870400522982252717) -->
+ <skip />
+ <!-- no translation found for quick_settings_airplane_mode_label (5510520633448831350) -->
+ <skip />
+ <!-- no translation found for quick_settings_battery_label (2764511189368020794) -->
+ <skip />
+ <!-- no translation found for quick_settings_bluetooth_label (6304190285170721401) -->
+ <skip />
+ <!-- no translation found for quick_settings_brightness_label (6968372297018755815) -->
+ <skip />
+ <!-- no translation found for quick_settings_ime_label (6877325300716130498) -->
+ <skip />
+ <!-- no translation found for quick_settings_location_label (3292451598267467545) -->
+ <skip />
+ <!-- no translation found for quick_settings_media_device_label (1302906836372603762) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_label (7725671335550695589) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_emergency_only (2713774041672886750) -->
+ <skip />
+ <!-- no translation found for quick_settings_settings_label (5326556592578065401) -->
+ <skip />
+ <!-- no translation found for quick_settings_time_label (4635969182239736408) -->
+ <skip />
+ <!-- no translation found for quick_settings_user_label (5238995632130897840) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_label (4393429107095001520) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_no_network (2221993077220856376) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_label (6653501376641018614) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_no_connection_label (6255615315258869136) -->
+ <skip />
+ <!-- no translation found for wifi_display_scan (8453135922233546097) -->
+ <skip />
+ <!-- no translation found for wifi_display_disconnect (5450214362789378584) -->
+ <skip />
+ <!-- no translation found for wifi_display_dialog_title (2817993038700218900) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_available (980373281442607096) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connecting (1677010908036241940) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connected (9154375061719151149) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-zh-rTW/strings.xml b/packages/SystemUI/res/values-zh-rTW/strings.xml
index 053b538c..94ca19c 100644
--- a/packages/SystemUI/res/values-zh-rTW/strings.xml
+++ b/packages/SystemUI/res/values-zh-rTW/strings.xml
@@ -143,7 +143,6 @@
<string name="gps_notification_searching_text" msgid="8574247005642736060">"正在搜尋 GPS"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"GPS 已定位"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"清除所有通知。"</string>
- <string name="dreams_dock_launcher" msgid="3541196417659166245">"啟用螢幕保護程式"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"應用程式資訊"</string>
<string name="close_universe" msgid="3736513750241754348">"關閉"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"關閉通知"</string>
@@ -153,4 +152,50 @@
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"螢幕已鎖定為垂直模式。"</string>
<!-- no translation found for jelly_bean_dream_name (5992026543636816792) -->
<skip />
+ <!-- no translation found for start_dreams (870400522982252717) -->
+ <skip />
+ <!-- no translation found for quick_settings_airplane_mode_label (5510520633448831350) -->
+ <skip />
+ <!-- no translation found for quick_settings_battery_label (2764511189368020794) -->
+ <skip />
+ <!-- no translation found for quick_settings_bluetooth_label (6304190285170721401) -->
+ <skip />
+ <!-- no translation found for quick_settings_brightness_label (6968372297018755815) -->
+ <skip />
+ <!-- no translation found for quick_settings_ime_label (6877325300716130498) -->
+ <skip />
+ <!-- no translation found for quick_settings_location_label (3292451598267467545) -->
+ <skip />
+ <!-- no translation found for quick_settings_media_device_label (1302906836372603762) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_label (7725671335550695589) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_emergency_only (2713774041672886750) -->
+ <skip />
+ <!-- no translation found for quick_settings_settings_label (5326556592578065401) -->
+ <skip />
+ <!-- no translation found for quick_settings_time_label (4635969182239736408) -->
+ <skip />
+ <!-- no translation found for quick_settings_user_label (5238995632130897840) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_label (4393429107095001520) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_no_network (2221993077220856376) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_label (6653501376641018614) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_no_connection_label (6255615315258869136) -->
+ <skip />
+ <!-- no translation found for wifi_display_scan (8453135922233546097) -->
+ <skip />
+ <!-- no translation found for wifi_display_disconnect (5450214362789378584) -->
+ <skip />
+ <!-- no translation found for wifi_display_dialog_title (2817993038700218900) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_available (980373281442607096) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connecting (1677010908036241940) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connected (9154375061719151149) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-zu/strings.xml b/packages/SystemUI/res/values-zu/strings.xml
index c10e968..94d54a4 100644
--- a/packages/SystemUI/res/values-zu/strings.xml
+++ b/packages/SystemUI/res/values-zu/strings.xml
@@ -141,7 +141,6 @@
<string name="gps_notification_searching_text" msgid="8574247005642736060">"Isesha i-GPS"</string>
<string name="gps_notification_found_text" msgid="4619274244146446464">"Indawo ihlelwe i-GPS"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Susa zonke izaziso."</string>
- <string name="dreams_dock_launcher" msgid="3541196417659166245">"Yenza ukuthi iskrini seyiva sisebenze"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Ulwazi lohlelo lokusebenza"</string>
<string name="close_universe" msgid="3736513750241754348">"Vala"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"Izaziso zivaliwe"</string>
@@ -151,4 +150,50 @@
<string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"Isikrini sikhiyelwe ngomumo we-portrait."</string>
<!-- no translation found for jelly_bean_dream_name (5992026543636816792) -->
<skip />
+ <!-- no translation found for start_dreams (870400522982252717) -->
+ <skip />
+ <!-- no translation found for quick_settings_airplane_mode_label (5510520633448831350) -->
+ <skip />
+ <!-- no translation found for quick_settings_battery_label (2764511189368020794) -->
+ <skip />
+ <!-- no translation found for quick_settings_bluetooth_label (6304190285170721401) -->
+ <skip />
+ <!-- no translation found for quick_settings_brightness_label (6968372297018755815) -->
+ <skip />
+ <!-- no translation found for quick_settings_ime_label (6877325300716130498) -->
+ <skip />
+ <!-- no translation found for quick_settings_location_label (3292451598267467545) -->
+ <skip />
+ <!-- no translation found for quick_settings_media_device_label (1302906836372603762) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_label (7725671335550695589) -->
+ <skip />
+ <!-- no translation found for quick_settings_rssi_emergency_only (2713774041672886750) -->
+ <skip />
+ <!-- no translation found for quick_settings_settings_label (5326556592578065401) -->
+ <skip />
+ <!-- no translation found for quick_settings_time_label (4635969182239736408) -->
+ <skip />
+ <!-- no translation found for quick_settings_user_label (5238995632130897840) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_label (4393429107095001520) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_no_network (2221993077220856376) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_label (6653501376641018614) -->
+ <skip />
+ <!-- no translation found for quick_settings_wifi_display_no_connection_label (6255615315258869136) -->
+ <skip />
+ <!-- no translation found for wifi_display_scan (8453135922233546097) -->
+ <skip />
+ <!-- no translation found for wifi_display_disconnect (5450214362789378584) -->
+ <skip />
+ <!-- no translation found for wifi_display_dialog_title (2817993038700218900) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_available (980373281442607096) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connecting (1677010908036241940) -->
+ <skip />
+ <!-- no translation found for wifi_display_state_connected (9154375061719151149) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
index 97034bb..923cd93 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
@@ -1041,8 +1041,12 @@
// swipe-dismissable)
updateNotificationVetoButton(oldEntry.row, notification);
+ // Is this for you?
+ boolean isForCurrentUser = notificationIsForCurrentUser(notification);
+ if (DEBUG) Slog.d(TAG, "notification is " + (isForCurrentUser ? "" : "not ") + "for you");
+
// Restart the ticker if it's still running
- if (updateTicker) {
+ if (updateTicker && isForCurrentUser) {
haltTicker();
tick(key, notification, false);
}
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 a5d4a8e..6231d0d 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
@@ -1426,6 +1426,9 @@
// no ticking in Setup
if (!isDeviceProvisioned()) return;
+ // not for you
+ if (!notificationIsForCurrentUser(n)) return;
+
// Show the ticker if one is requested. Also don't do this
// until status bar window is attached to the window manager,
// because... well, what's the point otherwise? And trying to
diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardSelectorView.java b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardSelectorView.java
index 95772af..7554236 100644
--- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardSelectorView.java
+++ b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardSelectorView.java
@@ -142,7 +142,9 @@
protected void launchCamera() {
if (mLockPatternUtils.isSecure()) {
// Launch the secure version of the camera
- launchActivity(new Intent(MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA_SECURE), true);
+ Intent intent = new Intent(MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA_SECURE);
+ intent.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
+ launchActivity(intent, true);
} else {
// Launch the normal camera
launchActivity(new Intent(MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA), false);
@@ -262,7 +264,7 @@
* See {@link WindowManager#FLAG_SHOW_WHEN_LOCKED}
*/
private void launchActivity(final Intent intent, boolean showsWhileLocked) {
- intent.setFlags(
+ intent.addFlags(
Intent.FLAG_ACTIVITY_NEW_TASK
| Intent.FLAG_ACTIVITY_SINGLE_TOP
| Intent.FLAG_ACTIVITY_CLEAR_TOP);
diff --git a/services/java/com/android/server/DevicePolicyManagerService.java b/services/java/com/android/server/DevicePolicyManagerService.java
index fd6060a..28a4310 100644
--- a/services/java/com/android/server/DevicePolicyManagerService.java
+++ b/services/java/com/android/server/DevicePolicyManagerService.java
@@ -721,7 +721,13 @@
private void sendChangedNotification() {
Intent intent = new Intent(DevicePolicyManager.ACTION_DEVICE_POLICY_MANAGER_STATE_CHANGED);
intent.setFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY);
- mContext.sendBroadcastAsUser(intent, UserHandle.ALL);
+ long ident = Binder.clearCallingIdentity();
+ try {
+ // TODO: This shouldn't be sent to all users, if DPM is per user.
+ mContext.sendBroadcastAsUser(intent, UserHandle.ALL);
+ } finally {
+ Binder.restoreCallingIdentity(ident);
+ }
}
private void loadSettingsLocked() {
diff --git a/services/java/com/android/server/SystemServer.java b/services/java/com/android/server/SystemServer.java
index c28afb2..73e82ab 100644
--- a/services/java/com/android/server/SystemServer.java
+++ b/services/java/com/android/server/SystemServer.java
@@ -37,14 +37,12 @@
import android.os.StrictMode;
import android.os.SystemClock;
import android.os.SystemProperties;
-import android.provider.Settings;
import android.server.search.SearchManagerService;
import android.service.dreams.DreamManagerService;
import android.util.DisplayMetrics;
import android.util.EventLog;
import android.util.Log;
import android.util.Slog;
-import android.view.Display;
import android.view.WindowManager;
import com.android.internal.os.BinderInternal;
diff --git a/services/java/com/android/server/accessibility/ScreenMagnifier.java b/services/java/com/android/server/accessibility/ScreenMagnifier.java
index f33517b..ca61400 100644
--- a/services/java/com/android/server/accessibility/ScreenMagnifier.java
+++ b/services/java/com/android/server/accessibility/ScreenMagnifier.java
@@ -46,10 +46,9 @@
import android.view.IDisplayContentChangeListener;
import android.view.IWindowManager;
import android.view.MotionEvent;
-import android.view.ScaleGestureDetector;
import android.view.MotionEvent.PointerCoords;
import android.view.MotionEvent.PointerProperties;
-import android.view.ScaleGestureDetector.OnScaleGestureListener;
+import android.view.ScaleGestureDetector.SimpleOnScaleGestureListener;
import android.view.Surface;
import android.view.View;
import android.view.ViewConfiguration;
@@ -122,10 +121,8 @@
private static final int STATE_DELEGATING = 1;
private static final int STATE_DETECTING = 2;
- private static final int STATE_SCALING = 3;
- private static final int STATE_VIEWPORT_DRAGGING = 4;
- private static final int STATE_PANNING = 5;
- private static final int STATE_DECIDE_PAN_OR_SCALE = 6;
+ private static final int STATE_VIEWPORT_DRAGGING = 3;
+ private static final int STATE_MAGNIFIED_INTERACTION = 4;
private static final float DEFAULT_MAGNIFICATION_SCALE = 2.0f;
private static final int DEFAULT_SCREEN_MAGNIFICATION_AUTO_UPDATE = 1;
@@ -161,6 +158,7 @@
private EventStreamTransformation mNext;
private int mCurrentState;
+ private int mPreviousState;
private boolean mTranslationEnabledBeforePan;
private PointerCoords[] mTempPointerCoords;
@@ -194,6 +192,7 @@
@Override
public void onMotionEvent(MotionEvent event, int policyFlags) {
+ mGestureDetector.onMotionEvent(event);
switch (mCurrentState) {
case STATE_DELEGATING: {
handleMotionEventStateDelegating(event, policyFlags);
@@ -204,18 +203,15 @@
case STATE_VIEWPORT_DRAGGING: {
mStateViewportDraggingHandler.onMotionEvent(event, policyFlags);
} break;
- case STATE_SCALING:
- case STATE_PANNING:
- case STATE_DECIDE_PAN_OR_SCALE: {
+ case STATE_MAGNIFIED_INTERACTION: {
// Handled by the gesture detector. Since the detector
// needs all touch events to work properly we cannot
- // call it only for these states.
+ // call it only for this state.
} break;
default: {
throw new IllegalStateException("Unknown state: " + mCurrentState);
}
}
- mGestureDetector.onMotionEvent(event);
}
@Override
@@ -327,20 +323,15 @@
case STATE_VIEWPORT_DRAGGING: {
Slog.i(LOG_TAG, "mCurrentState: STATE_VIEWPORT_DRAGGING");
} break;
- case STATE_SCALING: {
- Slog.i(LOG_TAG, "mCurrentState: STATE_SCALING");
- } break;
- case STATE_PANNING: {
- Slog.i(LOG_TAG, "mCurrentState: STATE_PANNING");
- } break;
- case STATE_DECIDE_PAN_OR_SCALE: {
- Slog.i(LOG_TAG, "mCurrentState: STATE_DECIDE_PAN_OR_SCALE");
+ case STATE_MAGNIFIED_INTERACTION: {
+ Slog.i(LOG_TAG, "mCurrentState: STATE_MAGNIFIED_INTERACTION");
} break;
default: {
throw new IllegalArgumentException("Unknown state: " + state);
}
}
}
+ mPreviousState = mCurrentState;
mCurrentState = state;
}
@@ -348,7 +339,7 @@
private static final float MIN_SCALE = 1.3f;
private static final float MAX_SCALE = 5.0f;
- private static final float DETECT_SCALING_THRESHOLD = 0.25f;
+ private static final float DETECT_SCALING_THRESHOLD = 0.30f;
private static final int DETECT_PANNING_THRESHOLD_DIP = 30;
private final float mScaledDetectPanningThreshold;
@@ -367,10 +358,13 @@
private float mScaleFocusX = Float.NaN;
private float mScaleFocusY = Float.NaN;
+ private boolean mScaling;
+ private boolean mPanning;
+
public GestureDetector(Context context) {
final float density = context.getResources().getDisplayMetrics().density;
mScaledDetectPanningThreshold = DETECT_PANNING_THRESHOLD_DIP * density;
- mScaleGestureDetector = new ScaleGestureDetector(context, this);
+ mScaleGestureDetector = new ScaleGestureDetector(this);
}
public void onMotionEvent(MotionEvent event) {
@@ -384,10 +378,15 @@
}
if (event.getActionMasked() == MotionEvent.ACTION_UP) {
clear();
- if (mCurrentState == STATE_SCALING) {
- persistScale(mMagnificationController.getScale());
+ final float scale = mMagnificationController.getScale();
+ if (scale != getPersistedScale()) {
+ persistScale(scale);
}
- transitionToState(STATE_DETECTING);
+ if (mPreviousState == STATE_VIEWPORT_DRAGGING) {
+ transitionToState(STATE_VIEWPORT_DRAGGING);
+ } else {
+ transitionToState(STATE_DETECTING);
+ }
}
}
@@ -399,17 +398,19 @@
case STATE_VIEWPORT_DRAGGING: {
return true;
}
- case STATE_DECIDE_PAN_OR_SCALE: {
+ case STATE_MAGNIFIED_INTERACTION: {
mCurrScaleFactor = mScaleGestureDetector.getScaleFactor();
final float scaleDelta = Math.abs(1.0f - mCurrScaleFactor * mPrevScaleFactor);
if (DEBUG_GESTURE_DETECTOR) {
Slog.i(LOG_TAG, "scaleDelta: " + scaleDelta);
}
- if (scaleDelta > DETECT_SCALING_THRESHOLD) {
- performScale(detector, true);
- clear();
- transitionToState(STATE_SCALING);
- return false;
+ if (!mScaling && scaleDelta > DETECT_SCALING_THRESHOLD) {
+ mScaling = true;
+ clearContextualState();
+ return true;
+ }
+ if (mScaling) {
+ performScale(detector);
}
mCurrPan = (float) MathUtils.dist(
mScaleGestureDetector.getFocusX(),
@@ -419,18 +420,14 @@
if (DEBUG_GESTURE_DETECTOR) {
Slog.i(LOG_TAG, "panDelta: " + panDelta);
}
- if (panDelta > mScaledDetectPanningThreshold) {
- performPan(detector, true);
- clear();
- transitionToState(STATE_PANNING);
- return false;
+ if (!mPanning && panDelta > mScaledDetectPanningThreshold) {
+ mPanning = true;
+ clearContextualState();
+ return true;
}
- } break;
- case STATE_SCALING: {
- performScale(detector, false);
- } break;
- case STATE_PANNING: {
- performPan(detector, false);
+ if (mPanning) {
+ performPan(detector);
+ }
} break;
}
return false;
@@ -438,32 +435,26 @@
@Override
public boolean onScaleBegin(ScaleGestureDetector detector) {
- switch (mCurrentState) {
- case STATE_DECIDE_PAN_OR_SCALE: {
- mPrevScaleFactor *= mCurrScaleFactor;
- mPrevPan += mCurrPan;
- mPrevFocus.x = mInitialFocus.x = detector.getFocusX();
- mPrevFocus.y = mInitialFocus.y = detector.getFocusY();
- } break;
- case STATE_SCALING: {
- mPrevScaleFactor = 1.0f;
- mCurrScale = Float.NaN;
- } break;
- case STATE_PANNING: {
- mPrevPan += mCurrPan;
- mPrevFocus.x = mInitialFocus.x = detector.getFocusX();
- mPrevFocus.y = mInitialFocus.y = detector.getFocusY();
- } break;
- }
+ mPrevScaleFactor *= mCurrScaleFactor;
+ mCurrScale = Float.NaN;
+ mPrevPan += mCurrPan;
+ mPrevFocus.x = mInitialFocus.x = detector.getFocusX();
+ mPrevFocus.y = mInitialFocus.y = detector.getFocusY();
return true;
}
@Override
public void onScaleEnd(ScaleGestureDetector detector) {
- /* do nothing */
+ clearContextualState();
}
public void clear() {
+ clearContextualState();
+ mScaling = false;
+ mPanning = false;
+ }
+
+ private void clearContextualState() {
mCurrScaleFactor = 1.0f;
mPrevScaleFactor = 1.0f;
mPrevPan = 0;
@@ -475,7 +466,7 @@
mScaleFocusY = Float.NaN;
}
- private void performPan(ScaleGestureDetector detector, boolean animate) {
+ private void performPan(ScaleGestureDetector detector) {
if (Float.compare(mPrevFocus.x, Float.NaN) == 0
&& Float.compare(mPrevFocus.y, Float.NaN) == 0) {
mPrevFocus.set(detector.getFocusX(), detector.getFocusY());
@@ -492,11 +483,11 @@
Slog.i(LOG_TAG, "Panned content by scrollX: " + scrollX
+ " scrollY: " + scrollY);
}
- mMagnificationController.setMagnifiedRegionCenter(centerX, centerY, animate);
+ mMagnificationController.setMagnifiedRegionCenter(centerX, centerY, false);
mPrevFocus.set(detector.getFocusX(), detector.getFocusY());
}
- private void performScale(ScaleGestureDetector detector, boolean animate) {
+ private void performScale(ScaleGestureDetector detector) {
if (Float.compare(mCurrScale, Float.NaN) == 0) {
mCurrScale = mMagnificationController.getScale();
return;
@@ -514,7 +505,7 @@
mScaleFocusY = detector.getFocusY();
}
mMagnificationController.setScale(normalizedNewScale, mScaleFocusX,
- mScaleFocusY, animate);
+ mScaleFocusY, false);
}
}
@@ -529,7 +520,7 @@
}
case MotionEvent.ACTION_POINTER_DOWN: {
clear();
- transitionToState(STATE_SCALING);
+ transitionToState(STATE_MAGNIFIED_INTERACTION);
} break;
case MotionEvent.ACTION_MOVE: {
if (event.getPointerCount() != 1) {
@@ -633,7 +624,7 @@
} break;
case MotionEvent.ACTION_POINTER_DOWN: {
if (mMagnificationController.isMagnifying()) {
- transitionToState(STATE_DECIDE_PAN_OR_SCALE);
+ transitionToState(STATE_MAGNIFIED_INTERACTION);
clear();
} else {
transitionToDelegatingStateAndClear();
@@ -1763,4 +1754,482 @@
updateDisplayInfo();
}
}
+
+ /**
+ * The listener for receiving notifications when gestures occur.
+ * If you want to listen for all the different gestures then implement
+ * this interface. If you only want to listen for a subset it might
+ * be easier to extend {@link SimpleOnScaleGestureListener}.
+ *
+ * An application will receive events in the following order:
+ * <ul>
+ * <li>One {@link OnScaleGestureListener#onScaleBegin(ScaleGestureDetector)}
+ * <li>Zero or more {@link OnScaleGestureListener#onScale(ScaleGestureDetector)}
+ * <li>One {@link OnScaleGestureListener#onScaleEnd(ScaleGestureDetector)}
+ * </ul>
+ */
+ interface OnScaleGestureListener {
+ /**
+ * Responds to scaling events for a gesture in progress.
+ * Reported by pointer motion.
+ *
+ * @param detector The detector reporting the event - use this to
+ * retrieve extended info about event state.
+ * @return Whether or not the detector should consider this event
+ * as handled. If an event was not handled, the detector
+ * will continue to accumulate movement until an event is
+ * handled. This can be useful if an application, for example,
+ * only wants to update scaling factors if the change is
+ * greater than 0.01.
+ */
+ public boolean onScale(ScaleGestureDetector detector);
+
+ /**
+ * Responds to the beginning of a scaling gesture. Reported by
+ * new pointers going down.
+ *
+ * @param detector The detector reporting the event - use this to
+ * retrieve extended info about event state.
+ * @return Whether or not the detector should continue recognizing
+ * this gesture. For example, if a gesture is beginning
+ * with a focal point outside of a region where it makes
+ * sense, onScaleBegin() may return false to ignore the
+ * rest of the gesture.
+ */
+ public boolean onScaleBegin(ScaleGestureDetector detector);
+
+ /**
+ * Responds to the end of a scale gesture. Reported by existing
+ * pointers going up.
+ *
+ * Once a scale has ended, {@link ScaleGestureDetector#getFocusX()}
+ * and {@link ScaleGestureDetector#getFocusY()} will return the location
+ * of the pointer remaining on the screen.
+ *
+ * @param detector The detector reporting the event - use this to
+ * retrieve extended info about event state.
+ */
+ public void onScaleEnd(ScaleGestureDetector detector);
+ }
+
+ class ScaleGestureDetector {
+
+ private final MinCircleFinder mMinCircleFinder = new MinCircleFinder();
+
+ private final OnScaleGestureListener mListener;
+
+ private float mFocusX;
+ private float mFocusY;
+
+ private float mCurrSpan;
+ private float mPrevSpan;
+ private float mCurrSpanX;
+ private float mCurrSpanY;
+ private float mPrevSpanX;
+ private float mPrevSpanY;
+ private long mCurrTime;
+ private long mPrevTime;
+ private boolean mInProgress;
+
+ public ScaleGestureDetector(OnScaleGestureListener listener) {
+ mListener = listener;
+ }
+
+ /**
+ * Accepts MotionEvents and dispatches events to a {@link OnScaleGestureListener}
+ * when appropriate.
+ *
+ * <p>Applications should pass a complete and consistent event stream to this method.
+ * A complete and consistent event stream involves all MotionEvents from the initial
+ * ACTION_DOWN to the final ACTION_UP or ACTION_CANCEL.</p>
+ *
+ * @param event The event to process
+ * @return true if the event was processed and the detector wants to receive the
+ * rest of the MotionEvents in this event stream.
+ */
+ public boolean onTouchEvent(MotionEvent event) {
+ boolean streamEnded = false;
+ boolean contextChanged = false;
+ int excludedPtrIdx = -1;
+ final int action = event.getActionMasked();
+ switch (action) {
+ case MotionEvent.ACTION_DOWN:
+ case MotionEvent.ACTION_POINTER_DOWN: {
+ contextChanged = true;
+ } break;
+ case MotionEvent.ACTION_POINTER_UP: {
+ contextChanged = true;
+ excludedPtrIdx = event.getActionIndex();
+ } break;
+ case MotionEvent.ACTION_UP:
+ case MotionEvent.ACTION_CANCEL: {
+ streamEnded = true;
+ } break;
+ }
+
+ if (mInProgress && (contextChanged || streamEnded)) {
+ mListener.onScaleEnd(this);
+ mInProgress = false;
+ mPrevSpan = 0;
+ mPrevSpanX = 0;
+ mPrevSpanY = 0;
+ return true;
+ }
+
+ final long currTime = mCurrTime;
+
+ mFocusX = 0;
+ mFocusY = 0;
+ mCurrSpan = 0;
+ mCurrSpanX = 0;
+ mCurrSpanY = 0;
+ mCurrTime = 0;
+ mPrevTime = 0;
+
+ if (!streamEnded) {
+ MinCircleFinder.Circle circle =
+ mMinCircleFinder.computeMinCircleAroundPointers(event);
+ mFocusX = circle.centerX;
+ mFocusY = circle.centerY;
+
+ double sumSlope = 0;
+ final int pointerCount = event.getPointerCount();
+ for (int i = 0; i < pointerCount; i++) {
+ if (i == excludedPtrIdx) {
+ continue;
+ }
+ float x = event.getX(i) - mFocusX;
+ float y = event.getY(i) - mFocusY;
+ if (x == 0) {
+ x += 0.1f;
+ }
+ sumSlope += y / x;
+ }
+ final double avgSlope = sumSlope
+ / ((excludedPtrIdx < 0) ? pointerCount : pointerCount - 1);
+
+ double angle = Math.atan(avgSlope);
+ mCurrSpan = 2 * circle.radius;
+ mCurrSpanX = (float) Math.abs((Math.cos(angle) * mCurrSpan));
+ mCurrSpanY = (float) Math.abs((Math.sin(angle) * mCurrSpan));
+ }
+
+ if (contextChanged || mPrevSpan == 0 || mPrevSpanX == 0 || mPrevSpanY == 0) {
+ mPrevSpan = mCurrSpan;
+ mPrevSpanX = mCurrSpanX;
+ mPrevSpanY = mCurrSpanY;
+ }
+
+ if (!mInProgress && mCurrSpan != 0 && !streamEnded) {
+ mInProgress = mListener.onScaleBegin(this);
+ }
+
+ if (mInProgress) {
+ mPrevTime = (currTime != 0) ? currTime : event.getEventTime();
+ mCurrTime = event.getEventTime();
+ if (mCurrSpan == 0) {
+ mListener.onScaleEnd(this);
+ mInProgress = false;
+ } else {
+ if (mListener.onScale(this)) {
+ mPrevSpanX = mCurrSpanX;
+ mPrevSpanY = mCurrSpanY;
+ mPrevSpan = mCurrSpan;
+ }
+ }
+ }
+
+ return true;
+ }
+
+ /**
+ * Returns {@code true} if a scale gesture is in progress.
+ */
+ public boolean isInProgress() {
+ return mInProgress;
+ }
+
+ /**
+ * Get the X coordinate of the current gesture's focal point.
+ * If a gesture is in progress, the focal point is between
+ * each of the pointers forming the gesture.
+ *
+ * If {@link #isInProgress()} would return false, the result of this
+ * function is undefined.
+ *
+ * @return X coordinate of the focal point in pixels.
+ */
+ public float getFocusX() {
+ return mFocusX;
+ }
+
+ /**
+ * Get the Y coordinate of the current gesture's focal point.
+ * If a gesture is in progress, the focal point is between
+ * each of the pointers forming the gesture.
+ *
+ * If {@link #isInProgress()} would return false, the result of this
+ * function is undefined.
+ *
+ * @return Y coordinate of the focal point in pixels.
+ */
+ public float getFocusY() {
+ return mFocusY;
+ }
+
+ /**
+ * Return the average distance between each of the pointers forming the
+ * gesture in progress through the focal point.
+ *
+ * @return Distance between pointers in pixels.
+ */
+ public float getCurrentSpan() {
+ return mCurrSpan;
+ }
+
+ /**
+ * Return the average X distance between each of the pointers forming the
+ * gesture in progress through the focal point.
+ *
+ * @return Distance between pointers in pixels.
+ */
+ public float getCurrentSpanX() {
+ return mCurrSpanX;
+ }
+
+ /**
+ * Return the average Y distance between each of the pointers forming the
+ * gesture in progress through the focal point.
+ *
+ * @return Distance between pointers in pixels.
+ */
+ public float getCurrentSpanY() {
+ return mCurrSpanY;
+ }
+
+ /**
+ * Return the previous average distance between each of the pointers forming the
+ * gesture in progress through the focal point.
+ *
+ * @return Previous distance between pointers in pixels.
+ */
+ public float getPreviousSpan() {
+ return mPrevSpan;
+ }
+
+ /**
+ * Return the previous average X distance between each of the pointers forming the
+ * gesture in progress through the focal point.
+ *
+ * @return Previous distance between pointers in pixels.
+ */
+ public float getPreviousSpanX() {
+ return mPrevSpanX;
+ }
+
+ /**
+ * Return the previous average Y distance between each of the pointers forming the
+ * gesture in progress through the focal point.
+ *
+ * @return Previous distance between pointers in pixels.
+ */
+ public float getPreviousSpanY() {
+ return mPrevSpanY;
+ }
+
+ /**
+ * Return the scaling factor from the previous scale event to the current
+ * event. This value is defined as
+ * ({@link #getCurrentSpan()} / {@link #getPreviousSpan()}).
+ *
+ * @return The current scaling factor.
+ */
+ public float getScaleFactor() {
+ return mPrevSpan > 0 ? mCurrSpan / mPrevSpan : 1;
+ }
+
+ /**
+ * Return the time difference in milliseconds between the previous
+ * accepted scaling event and the current scaling event.
+ *
+ * @return Time difference since the last scaling event in milliseconds.
+ */
+ public long getTimeDelta() {
+ return mCurrTime - mPrevTime;
+ }
+
+ /**
+ * Return the event time of the current event being processed.
+ *
+ * @return Current event time in milliseconds.
+ */
+ public long getEventTime() {
+ return mCurrTime;
+ }
+ }
+
+ private static final class MinCircleFinder {
+ private final ArrayList<PointHolder> mPoints = new ArrayList<PointHolder>();
+ private final ArrayList<PointHolder> sBoundary = new ArrayList<PointHolder>();
+ private final Circle mMinCircle = new Circle();
+
+ /**
+ * Finds the minimal circle that contains all pointers of a motion event.
+ *
+ * @param event A motion event.
+ * @return The minimal circle.
+ */
+ public Circle computeMinCircleAroundPointers(MotionEvent event) {
+ ArrayList<PointHolder> points = mPoints;
+ points.clear();
+ final int pointerCount = event.getPointerCount();
+ for (int i = 0; i < pointerCount; i++) {
+ PointHolder point = PointHolder.obtain(event.getX(i), event.getY(i));
+ points.add(point);
+ }
+ ArrayList<PointHolder> boundary = sBoundary;
+ boundary.clear();
+ computeMinCircleAroundPointsRecursive(points, boundary, mMinCircle);
+ for (int i = points.size() - 1; i >= 0; i--) {
+ points.remove(i).recycle();
+ }
+ boundary.clear();
+ return mMinCircle;
+ }
+
+ private static void computeMinCircleAroundPointsRecursive(ArrayList<PointHolder> points,
+ ArrayList<PointHolder> boundary, Circle outCircle) {
+ if (points.isEmpty()) {
+ if (boundary.size() == 0) {
+ outCircle.initialize();
+ } else if (boundary.size() == 1) {
+ outCircle.initialize(boundary.get(0).mData, boundary.get(0).mData);
+ } else if (boundary.size() == 2) {
+ outCircle.initialize(boundary.get(0).mData, boundary.get(1).mData);
+ } else if (boundary.size() == 3) {
+ outCircle.initialize(boundary.get(0).mData, boundary.get(1).mData,
+ boundary.get(2).mData);
+ }
+ return;
+ }
+ PointHolder point = points.remove(points.size() - 1);
+ computeMinCircleAroundPointsRecursive(points, boundary, outCircle);
+ if (!outCircle.contains(point.mData)) {
+ boundary.add(point);
+ computeMinCircleAroundPointsRecursive(points, boundary, outCircle);
+ boundary.remove(point);
+ }
+ points.add(point);
+ }
+
+ private static final class PointHolder {
+ private static final int MAX_POOL_SIZE = 20;
+ private static PointHolder sPool;
+ private static int sPoolSize;
+
+ private PointHolder mNext;
+ private boolean mIsInPool;
+
+ private final PointF mData = new PointF();
+
+ public static PointHolder obtain(float x, float y) {
+ PointHolder holder;
+ if (sPoolSize > 0) {
+ sPoolSize--;
+ holder = sPool;
+ sPool = sPool.mNext;
+ holder.mNext = null;
+ holder.mIsInPool = false;
+ } else {
+ holder = new PointHolder();
+ }
+ holder.mData.set(x, y);
+ return holder;
+ }
+
+ public void recycle() {
+ if (mIsInPool) {
+ throw new IllegalStateException("Already recycled.");
+ }
+ clear();
+ if (sPoolSize < MAX_POOL_SIZE) {
+ sPoolSize++;
+ mNext = sPool;
+ sPool = this;
+ mIsInPool = true;
+ }
+ }
+
+ private void clear() {
+ mData.set(0, 0);
+ }
+ }
+
+ public static final class Circle {
+ public float centerX;
+ public float centerY;
+ public float radius;
+
+ private void initialize() {
+ centerX = 0;
+ centerY = 0;
+ radius = 0;
+ }
+
+ private void initialize(PointF first, PointF second, PointF third) {
+ if (!hasLineWithInfiniteSlope(first, second, third)) {
+ initializeInternal(first, second, third);
+ } else if (!hasLineWithInfiniteSlope(first, third, second)) {
+ initializeInternal(first, third, second);
+ } else if (!hasLineWithInfiniteSlope(second, first, third)) {
+ initializeInternal(second, first, third);
+ } else if (!hasLineWithInfiniteSlope(second, third, first)) {
+ initializeInternal(second, third, first);
+ } else if (!hasLineWithInfiniteSlope(third, first, second)) {
+ initializeInternal(third, first, second);
+ } else if (!hasLineWithInfiniteSlope(third, second, first)) {
+ initializeInternal(third, second, first);
+ } else {
+ initialize();
+ }
+ }
+
+ private void initialize(PointF first, PointF second) {
+ radius = (float) (Math.hypot(second.x - first.x, second.y - first.y) / 2);
+ centerX = (float) (second.x + first.x) / 2;
+ centerY = (float) (second.y + first.y) / 2;
+ }
+
+ public boolean contains(PointF point) {
+ return (int) (Math.hypot(point.x - centerX, point.y - centerY)) <= radius;
+ }
+
+ private void initializeInternal(PointF first, PointF second, PointF third) {
+ final float x1 = first.x;
+ final float y1 = first.y;
+ final float x2 = second.x;
+ final float y2 = second.y;
+ final float x3 = third.x;
+ final float y3 = third.y;
+
+ final float sl1 = (y2 - y1) / (x2 - x1);
+ final float sl2 = (y3 - y2) / (x3 - x2);
+
+ centerX = (int) ((sl1 * sl2 * (y1 - y3) + sl2 * (x1 + x2) - sl1 * (x2 + x3))
+ / (2 * (sl2 - sl1)));
+ centerY = (int) (-1 / sl1 * (centerX - (x1 + x2) / 2) + (y1 + y2) / 2);
+ radius = (int) Math.hypot(x1 - centerX, y1 - centerY);
+ }
+
+ private boolean hasLineWithInfiniteSlope(PointF first, PointF second, PointF third) {
+ return (second.x - first.x == 0 || third.x - second.x == 0
+ || second.y - first.y == 0 || third.y - second.y == 0);
+ }
+
+ @Override
+ public String toString() {
+ return "cetner: [" + centerX + ", " + centerY + "] radius: " + radius;
+ }
+ }
+ }
}
diff --git a/services/java/com/android/server/am/ActiveServices.java b/services/java/com/android/server/am/ActiveServices.java
index 7144808..3bb95a8 100644
--- a/services/java/com/android/server/am/ActiveServices.java
+++ b/services/java/com/android/server/am/ActiveServices.java
@@ -1551,8 +1551,12 @@
}
}
} else {
- didSomething = collectForceStopServicesLocked(name, userId, evenPersistent,
- doit, mServiceMap.mServicesByNamePerUser.get(userId), services);
+ HashMap<ComponentName, ServiceRecord> items
+ = mServiceMap.mServicesByNamePerUser.get(userId);
+ if (items != null) {
+ didSomething = collectForceStopServicesLocked(name, userId, evenPersistent,
+ doit, items, services);
+ }
}
int N = services.size();
@@ -1759,12 +1763,11 @@
if (ActivityManager.checkUidPermission(
android.Manifest.permission.INTERACT_ACROSS_USERS_FULL,
uid) == PackageManager.PERMISSION_GRANTED) {
- List<UserInfo> users = mAm.getUserManager().getUsers();
- for (int ui=0; ui<users.size() && res.size() < maxNum; ui++) {
- final UserInfo user = users.get(ui);
- if (mServiceMap.getAllServices(user.id).size() > 0) {
+ int[] users = mAm.getUsersLocked();
+ for (int ui=0; ui<users.length && res.size() < maxNum; ui++) {
+ if (mServiceMap.getAllServices(users[ui]).size() > 0) {
Iterator<ServiceRecord> it = mServiceMap.getAllServices(
- user.id).iterator();
+ users[ui]).iterator();
while (it.hasNext() && res.size() < maxNum) {
res.add(makeRunningServiceInfoLocked(it.next()));
}
@@ -1869,14 +1872,13 @@
pw.println("ACTIVITY MANAGER SERVICES (dumpsys activity services)");
try {
- List<UserInfo> users = mAm.getUserManager().getUsers();
- for (int ui=0; ui<users.size(); ui++) {
- final UserInfo user = users.get(ui);
- if (mServiceMap.getAllServices(user.id).size() > 0) {
+ int[] users = mAm.getUsersLocked();
+ for (int user : users) {
+ if (mServiceMap.getAllServices(user).size() > 0) {
boolean printed = false;
long nowReal = SystemClock.elapsedRealtime();
Iterator<ServiceRecord> it = mServiceMap.getAllServices(
- user.id).iterator();
+ user).iterator();
needSep = false;
while (it.hasNext()) {
ServiceRecord r = it.next();
@@ -1887,10 +1889,10 @@
continue;
}
if (!printed) {
- if (ui > 0) {
+ if (user != 0) {
pw.println();
}
- pw.println(" User " + user.id + " active services:");
+ pw.println(" User " + user + " active services:");
printed = true;
}
if (needSep) {
@@ -2066,32 +2068,30 @@
int opti, boolean dumpAll) {
ArrayList<ServiceRecord> services = new ArrayList<ServiceRecord>();
- List<UserInfo> users = mAm.getUserManager().getUsers();
- if ("all".equals(name)) {
- synchronized (this) {
- for (UserInfo user : users) {
- for (ServiceRecord r1 : mServiceMap.getAllServices(user.id)) {
+ synchronized (this) {
+ int[] users = mAm.getUsersLocked();
+ if ("all".equals(name)) {
+ for (int user : users) {
+ for (ServiceRecord r1 : mServiceMap.getAllServices(user)) {
services.add(r1);
}
}
- }
- } else {
- ComponentName componentName = name != null
- ? ComponentName.unflattenFromString(name) : null;
- int objectId = 0;
- if (componentName == null) {
- // Not a '/' separated full component name; maybe an object ID?
- try {
- objectId = Integer.parseInt(name, 16);
- name = null;
- componentName = null;
- } catch (RuntimeException e) {
+ } else {
+ ComponentName componentName = name != null
+ ? ComponentName.unflattenFromString(name) : null;
+ int objectId = 0;
+ if (componentName == null) {
+ // Not a '/' separated full component name; maybe an object ID?
+ try {
+ objectId = Integer.parseInt(name, 16);
+ name = null;
+ componentName = null;
+ } catch (RuntimeException e) {
+ }
}
- }
- synchronized (this) {
- for (UserInfo user : users) {
- for (ServiceRecord r1 : mServiceMap.getAllServices(user.id)) {
+ for (int user : users) {
+ for (ServiceRecord r1 : mServiceMap.getAllServices(user)) {
if (componentName != null) {
if (r1.name.equals(componentName)) {
services.add(r1);
diff --git a/services/java/com/android/server/am/ActivityManagerService.java b/services/java/com/android/server/am/ActivityManagerService.java
index ca45946..ca90368 100644
--- a/services/java/com/android/server/am/ActivityManagerService.java
+++ b/services/java/com/android/server/am/ActivityManagerService.java
@@ -27,6 +27,7 @@
import com.android.server.SystemServer;
import com.android.server.Watchdog;
import com.android.server.am.ActivityStack.ActivityState;
+import com.android.server.pm.UserManagerService;
import com.android.server.wm.WindowManagerService;
import dalvik.system.Zygote;
@@ -99,6 +100,7 @@
import android.os.Handler;
import android.os.IBinder;
import android.os.IPermissionController;
+import android.os.IUserManager;
import android.os.Looper;
import android.os.Message;
import android.os.Parcel;
@@ -112,7 +114,6 @@
import android.os.SystemClock;
import android.os.SystemProperties;
import android.os.UserHandle;
-import android.os.UserManager;
import android.provider.Settings;
import android.text.format.Time;
import android.util.EventLog;
@@ -546,7 +547,7 @@
*/
final ArrayList mCancelledThumbnails = new ArrayList();
- final ProviderMap mProviderMap = new ProviderMap();
+ final ProviderMap mProviderMap;
/**
* List of content providers who have clients waiting for them. The
@@ -811,7 +812,7 @@
static ActivityThread mSystemThread;
private int mCurrentUserId;
- private UserManager mUserManager;
+ private UserManagerService mUserManager;
private final class AppDeathRecipient implements IBinder.DeathRecipient {
final ProcessRecord mApp;
@@ -1511,6 +1512,7 @@
mBroadcastQueues[1] = mBgBroadcastQueue;
mServices = new ActiveServices(this);
+ mProviderMap = new ProviderMap(this);
File dataDir = Environment.getDataDirectory();
File systemDir = new File(dataDir, "system");
@@ -1792,7 +1794,7 @@
// Also don't let it kick out the first few "real" hidden processes.
skipTop = ProcessList.MIN_HIDDEN_APPS;
}
-
+
while (i >= 0) {
ProcessRecord p = mLruProcesses.get(i);
// If this app shouldn't be in front of the first N background
@@ -2680,7 +2682,7 @@
}
final long origId = Binder.clearCallingIdentity();
boolean res = mMainStack.requestFinishActivityLocked(token, resultCode,
- resultData, "app-request");
+ resultData, "app-request", true);
Binder.restoreCallingIdentity(origId);
return res;
}
@@ -2710,7 +2712,7 @@
int index = mMainStack.indexOfTokenLocked(r.appToken);
if (index >= 0) {
mMainStack.finishActivityLocked(r, index, Activity.RESULT_CANCELED,
- null, "finish-heavy");
+ null, "finish-heavy", true);
}
}
}
@@ -3400,10 +3402,12 @@
}
public boolean clearApplicationUserData(final String packageName,
- final IPackageDataObserver observer, final int userId) {
+ final IPackageDataObserver observer, int userId) {
enforceNotIsolatedCaller("clearApplicationUserData");
int uid = Binder.getCallingUid();
int pid = Binder.getCallingPid();
+ userId = handleIncomingUserLocked(pid, uid,
+ userId, false, true, "clearApplicationUserData", null);
long callingId = Binder.clearCallingIdentity();
try {
IPackageManager pm = AppGlobals.getPackageManager();
@@ -3445,7 +3449,7 @@
return true;
}
- public void killBackgroundProcesses(final String packageName) {
+ public void killBackgroundProcesses(final String packageName, int userId) {
if (checkCallingPermission(android.Manifest.permission.KILL_BACKGROUND_PROCESSES)
!= PackageManager.PERMISSION_GRANTED &&
checkCallingPermission(android.Manifest.permission.RESTART_PACKAGES)
@@ -3457,22 +3461,23 @@
Slog.w(TAG, msg);
throw new SecurityException(msg);
}
-
- int userId = UserHandle.getCallingUserId();
+
+ userId = handleIncomingUserLocked(Binder.getCallingPid(), Binder.getCallingUid(),
+ userId, true, true, "killBackgroundProcesses", null);
long callingId = Binder.clearCallingIdentity();
try {
IPackageManager pm = AppGlobals.getPackageManager();
- int pkgUid = -1;
synchronized(this) {
+ int appId = -1;
try {
- pkgUid = pm.getPackageUid(packageName, userId);
+ appId = UserHandle.getAppId(pm.getPackageUid(packageName, 0));
} catch (RemoteException e) {
}
- if (pkgUid == -1) {
+ if (appId == -1) {
Slog.w(TAG, "Invalid packageName: " + packageName);
return;
}
- killPackageProcessesLocked(packageName, pkgUid, -1,
+ killPackageProcessesLocked(packageName, appId, userId,
ProcessList.SERVICE_ADJ, false, true, true, false, "kill background");
}
} finally {
@@ -3522,7 +3527,7 @@
}
}
- public void forceStopPackage(final String packageName) {
+ public void forceStopPackage(final String packageName, int userId) {
if (checkCallingPermission(android.Manifest.permission.FORCE_STOP_PACKAGES)
!= PackageManager.PERMISSION_GRANTED) {
String msg = "Permission Denial: forceStopPackage() from pid="
@@ -3532,27 +3537,34 @@
Slog.w(TAG, msg);
throw new SecurityException(msg);
}
- final int userId = UserHandle.getCallingUserId();
+ userId = handleIncomingUserLocked(Binder.getCallingPid(), Binder.getCallingUid(),
+ userId, true, true, "forceStopPackage", null);
long callingId = Binder.clearCallingIdentity();
try {
IPackageManager pm = AppGlobals.getPackageManager();
- int pkgUid = -1;
synchronized(this) {
- try {
- pkgUid = pm.getPackageUid(packageName, userId);
- } catch (RemoteException e) {
- }
- if (pkgUid == -1) {
- Slog.w(TAG, "Invalid packageName: " + packageName);
- return;
- }
- forceStopPackageLocked(packageName, pkgUid);
- try {
- pm.setPackageStoppedState(packageName, true, userId);
- } catch (RemoteException e) {
- } catch (IllegalArgumentException e) {
- Slog.w(TAG, "Failed trying to unstop package "
- + packageName + ": " + e);
+ int[] users = userId == UserHandle.USER_ALL
+ ? getUsersLocked() : new int[] { userId };
+ for (int user : users) {
+ int pkgUid = -1;
+ try {
+ pkgUid = pm.getPackageUid(packageName, user);
+ } catch (RemoteException e) {
+ }
+ if (pkgUid == -1) {
+ Slog.w(TAG, "Invalid packageName: " + packageName);
+ continue;
+ }
+ try {
+ pm.setPackageStoppedState(packageName, true, user);
+ } catch (RemoteException e) {
+ } catch (IllegalArgumentException e) {
+ Slog.w(TAG, "Failed trying to unstop package "
+ + packageName + ": " + e);
+ }
+ if (isUserRunningLocked(user)) {
+ forceStopPackageLocked(packageName, pkgUid);
+ }
}
}
} finally {
@@ -3627,7 +3639,7 @@
ActivityRecord r = (ActivityRecord)mMainStack.mHistory.get(i);
if ((r.info.flags&ActivityInfo.FLAG_FINISH_ON_CLOSE_SYSTEM_DIALOGS) != 0) {
r.stack.finishActivityLocked(r, i,
- Activity.RESULT_CANCELED, null, "close-sys");
+ Activity.RESULT_CANCELED, null, "close-sys", true);
}
}
@@ -3684,8 +3696,8 @@
}
private void forceStopPackageLocked(final String packageName, int uid) {
- forceStopPackageLocked(packageName, uid, false, false, true, false,
- UserHandle.getUserId(uid));
+ forceStopPackageLocked(packageName, UserHandle.getAppId(uid), false,
+ false, true, false, UserHandle.getUserId(uid));
Intent intent = new Intent(Intent.ACTION_PACKAGE_RESTARTED,
Uri.fromParts("package", packageName, null));
if (!mProcessesReady) {
@@ -6972,7 +6984,7 @@
if (count > 1) {
final long origId = Binder.clearCallingIdentity();
mMainStack.finishActivityLocked((ActivityRecord)mMainStack.mHistory.get(count-1),
- count-1, Activity.RESULT_CANCELED, null, "unhandled-back");
+ count-1, Activity.RESULT_CANCELED, null, "unhandled-back", true);
Binder.restoreCallingIdentity(origId);
}
}
@@ -7891,7 +7903,8 @@
if (r.app == app) {
Slog.w(TAG, " Force finishing activity "
+ r.intent.getComponent().flattenToShortString());
- r.stack.finishActivityLocked(r, i, Activity.RESULT_CANCELED, null, "crashed");
+ r.stack.finishActivityLocked(r, i, Activity.RESULT_CANCELED,
+ null, "crashed", false);
}
}
if (!app.persistent) {
@@ -7926,7 +7939,7 @@
+ r.intent.getComponent().flattenToShortString());
int index = mMainStack.indexOfActivityLocked(r);
r.stack.finishActivityLocked(r, index,
- Activity.RESULT_CANCELED, null, "crashed");
+ Activity.RESULT_CANCELED, null, "crashed", false);
// Also terminate any activities below it that aren't yet
// stopped, to avoid a situation where one will get
// re-start our crashing activity once it gets resumed again.
@@ -7940,7 +7953,7 @@
Slog.w(TAG, " Force finishing activity "
+ r.intent.getComponent().flattenToShortString());
r.stack.finishActivityLocked(r, index,
- Activity.RESULT_CANCELED, null, "crashed");
+ Activity.RESULT_CANCELED, null, "crashed", false);
}
}
}
@@ -12305,7 +12318,7 @@
for (int i = start; i > finishTo; i--) {
ActivityRecord r = history.get(i);
mMainStack.requestFinishActivityLocked(r.appToken, resultCode, resultData,
- "navigate-up");
+ "navigate-up", true);
// Only return the supplied result for the first activity finished
resultCode = Activity.RESULT_CANCELED;
resultData = null;
@@ -12331,7 +12344,7 @@
foundParentInTask = false;
}
mMainStack.requestFinishActivityLocked(parent.appToken, resultCode,
- resultData, "navigate-up");
+ resultData, "navigate-up", true);
}
}
Binder.restoreCallingIdentity(origId);
@@ -13686,7 +13699,7 @@
mAutoStopProfiler = false;
}
- public boolean profileControl(String process, boolean start,
+ public boolean profileControl(String process, int userId, boolean start,
String path, ParcelFileDescriptor fd, int profileType) throws RemoteException {
try {
@@ -13705,22 +13718,7 @@
ProcessRecord proc = null;
if (process != null) {
- try {
- int pid = Integer.parseInt(process);
- synchronized (mPidsSelfLocked) {
- proc = mPidsSelfLocked.get(pid);
- }
- } catch (NumberFormatException e) {
- }
-
- if (proc == null) {
- HashMap<String, SparseArray<ProcessRecord>> all
- = mProcessNames.getMap();
- SparseArray<ProcessRecord> procs = all.get(process);
- if (procs != null && procs.size() > 0) {
- proc = procs.valueAt(0);
- }
- }
+ proc = findProcessLocked(process, userId, "profileControl");
}
if (start && (proc == null || proc.thread == null)) {
@@ -13764,7 +13762,40 @@
}
}
- public boolean dumpHeap(String process, boolean managed,
+ private ProcessRecord findProcessLocked(String process, int userId, String callName) {
+ userId = handleIncomingUserLocked(Binder.getCallingPid(), Binder.getCallingUid(),
+ userId, true, true, callName, null);
+ ProcessRecord proc = null;
+ try {
+ int pid = Integer.parseInt(process);
+ synchronized (mPidsSelfLocked) {
+ proc = mPidsSelfLocked.get(pid);
+ }
+ } catch (NumberFormatException e) {
+ }
+
+ if (proc == null) {
+ HashMap<String, SparseArray<ProcessRecord>> all
+ = mProcessNames.getMap();
+ SparseArray<ProcessRecord> procs = all.get(process);
+ if (procs != null && procs.size() > 0) {
+ proc = procs.valueAt(0);
+ if (userId != UserHandle.USER_ALL && proc.userId != userId) {
+ for (int i=1; i<procs.size(); i++) {
+ ProcessRecord thisProc = procs.valueAt(i);
+ if (thisProc.userId == userId) {
+ proc = thisProc;
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ return proc;
+ }
+
+ public boolean dumpHeap(String process, int userId, boolean managed,
String path, ParcelFileDescriptor fd) throws RemoteException {
try {
@@ -13781,24 +13812,7 @@
throw new IllegalArgumentException("null fd");
}
- ProcessRecord proc = null;
- try {
- int pid = Integer.parseInt(process);
- synchronized (mPidsSelfLocked) {
- proc = mPidsSelfLocked.get(pid);
- }
- } catch (NumberFormatException e) {
- }
-
- if (proc == null) {
- HashMap<String, SparseArray<ProcessRecord>> all
- = mProcessNames.getMap();
- SparseArray<ProcessRecord> procs = all.get(process);
- if (procs != null && procs.size() > 0) {
- proc = procs.valueAt(0);
- }
- }
-
+ ProcessRecord proc = findProcessLocked(process, userId, "dumpHeap");
if (proc == null || proc.thread == null) {
throw new IllegalArgumentException("Unknown process: " + process);
}
@@ -14016,7 +14030,7 @@
throw new SecurityException(msg);
}
synchronized (this) {
- return getUserManager().getUserInfo(mCurrentUserId);
+ return getUserManagerLocked().getUserInfo(mCurrentUserId);
}
}
@@ -14032,19 +14046,32 @@
throw new SecurityException(msg);
}
synchronized (this) {
- UserStartedState state = mStartedUsers.get(userId);
- return state != null && state.mState != UserStartedState.STATE_STOPPING;
+ return isUserRunningLocked(userId);
}
}
- private boolean userExists(int userId) {
- UserInfo user = getUserManager().getUserInfo(userId);
- return user != null;
+ boolean isUserRunningLocked(int userId) {
+ UserStartedState state = mStartedUsers.get(userId);
+ return state != null && state.mState != UserStartedState.STATE_STOPPING;
}
- UserManager getUserManager() {
+ private boolean userExists(int userId) {
+ if (userId == 0) {
+ return true;
+ }
+ UserManagerService ums = getUserManagerLocked();
+ return ums != null ? (ums.getUserInfo(userId) != null) : false;
+ }
+
+ int[] getUsersLocked() {
+ UserManagerService ums = getUserManagerLocked();
+ return ums != null ? ums.getUserIds() : new int[] { 0 };
+ }
+
+ UserManagerService getUserManagerLocked() {
if (mUserManager == null) {
- mUserManager = (UserManager) mContext.getSystemService(Context.USER_SERVICE);
+ IBinder b = ServiceManager.getService(Context.USER_SERVICE);
+ mUserManager = (UserManagerService)IUserManager.Stub.asInterface(b);
}
return mUserManager;
}
diff --git a/services/java/com/android/server/am/ActivityRecord.java b/services/java/com/android/server/am/ActivityRecord.java
index c70650d..009fb5d 100644
--- a/services/java/com/android/server/am/ActivityRecord.java
+++ b/services/java/com/android/server/am/ActivityRecord.java
@@ -333,7 +333,6 @@
state = ActivityState.INITIALIZING;
frontOfTask = false;
launchFailed = false;
- haveState = false;
stopped = false;
delayedResume = false;
finishing = false;
@@ -347,6 +346,11 @@
idle = false;
hasBeenLaunched = false;
+ // This starts out true, since the initial state of an activity
+ // is that we have everything, and we shouldn't never consider it
+ // lacking in state to be removed if it dies.
+ haveState = true;
+
if (aInfo != null) {
if (aInfo.targetActivity == null
|| aInfo.launchMode == ActivityInfo.LAUNCH_MULTIPLE
diff --git a/services/java/com/android/server/am/ActivityStack.java b/services/java/com/android/server/am/ActivityStack.java
index 895b52a..bc835b6 100755
--- a/services/java/com/android/server/am/ActivityStack.java
+++ b/services/java/com/android/server/am/ActivityStack.java
@@ -725,7 +725,7 @@
+ ", giving up", e);
mService.appDiedLocked(app, app.pid, app.thread);
requestFinishActivityLocked(r.appToken, Activity.RESULT_CANCELED, null,
- "2nd-crash");
+ "2nd-crash", false);
return false;
}
@@ -1092,7 +1092,7 @@
if (prev != null) {
if (prev.finishing) {
if (DEBUG_PAUSE) Slog.v(TAG, "Executing finish of activity: " + prev);
- prev = finishCurrentActivityLocked(prev, FINISH_AFTER_VISIBLE);
+ prev = finishCurrentActivityLocked(prev, FINISH_AFTER_VISIBLE, false);
} else if (prev.app != null) {
if (DEBUG_PAUSE) Slog.v(TAG, "Enqueueing pending stop: " + prev);
if (prev.waitingVisible) {
@@ -1504,7 +1504,7 @@
Slog.d(TAG, "no-history finish of " + last + " on new resume");
}
requestFinishActivityLocked(last.appToken, Activity.RESULT_CANCELED, null,
- "no-history");
+ "no-history", false);
}
}
@@ -1726,7 +1726,7 @@
// activity and try the next one.
Slog.w(TAG, "Exception thrown during resume of " + next, e);
requestFinishActivityLocked(next.appToken, Activity.RESULT_CANCELED, null,
- "resume-exception");
+ "resume-exception", true);
return true;
}
@@ -2080,7 +2080,7 @@
continue;
}
if (finishActivityLocked(p, srcPos,
- Activity.RESULT_CANCELED, null, "reset")) {
+ Activity.RESULT_CANCELED, null, "reset", false)) {
replyChainEnd--;
srcPos--;
}
@@ -2143,7 +2143,7 @@
continue;
}
if (finishActivityLocked(p, srcPos,
- Activity.RESULT_CANCELED, null, "reset")) {
+ Activity.RESULT_CANCELED, null, "reset", false)) {
taskTopI--;
lastReparentPos--;
replyChainEnd--;
@@ -2200,7 +2200,7 @@
}
if (p.intent.getComponent().equals(target.intent.getComponent())) {
if (finishActivityLocked(p, j,
- Activity.RESULT_CANCELED, null, "replace")) {
+ Activity.RESULT_CANCELED, null, "replace", false)) {
taskTopI--;
lastReparentPos--;
}
@@ -2270,7 +2270,7 @@
continue;
}
if (finishActivityLocked(r, i, Activity.RESULT_CANCELED,
- null, "clear")) {
+ null, "clear", false)) {
i--;
}
}
@@ -2284,7 +2284,7 @@
int index = indexOfTokenLocked(ret.appToken);
if (index >= 0) {
finishActivityLocked(ret, index, Activity.RESULT_CANCELED,
- null, "clear");
+ null, "clear", false);
}
return null;
}
@@ -2313,7 +2313,7 @@
continue;
}
if (!finishActivityLocked(r, i, Activity.RESULT_CANCELED,
- null, "clear")) {
+ null, "clear", false)) {
i++;
}
}
@@ -2579,6 +2579,7 @@
mDismissKeyguardOnNextActivity = false;
mService.mWindowManager.dismissKeyguard();
}
+ Slog.i(TAG, "DONE STARTING!");
return err;
}
@@ -3319,7 +3320,7 @@
Slog.d(TAG, "no-history finish of " + r);
}
requestFinishActivityLocked(r.appToken, Activity.RESULT_CANCELED, null,
- "no-history");
+ "no-history", false);
} else {
if (DEBUG_STATES) Slog.d(TAG, "Not finishing noHistory " + r
+ " on stop because we're just sleeping");
@@ -3531,7 +3532,7 @@
ActivityRecord r = (ActivityRecord)stops.get(i);
synchronized (mService) {
if (r.finishing) {
- finishCurrentActivityLocked(r, FINISH_IMMEDIATELY);
+ finishCurrentActivityLocked(r, FINISH_IMMEDIATELY, false);
} else {
stopActivityLocked(r);
}
@@ -3585,7 +3586,7 @@
* some reason it is being left as-is.
*/
final boolean requestFinishActivityLocked(IBinder token, int resultCode,
- Intent resultData, String reason) {
+ Intent resultData, String reason, boolean oomAdj) {
int index = indexOfTokenLocked(token);
if (DEBUG_RESULTS || DEBUG_STATES) Slog.v(
TAG, "Finishing activity @" + index + ": token=" + token
@@ -3596,7 +3597,7 @@
}
ActivityRecord r = mHistory.get(index);
- finishActivityLocked(r, index, resultCode, resultData, reason);
+ finishActivityLocked(r, index, resultCode, resultData, reason, oomAdj);
return true;
}
@@ -3613,10 +3614,11 @@
if ((r.resultWho == null && resultWho == null) ||
(r.resultWho != null && r.resultWho.equals(resultWho))) {
finishActivityLocked(r, i,
- Activity.RESULT_CANCELED, null, "request-sub");
+ Activity.RESULT_CANCELED, null, "request-sub", false);
}
}
}
+ mService.updateOomAdjLocked();
}
final boolean finishActivityAffinityLocked(IBinder token) {
@@ -3639,7 +3641,8 @@
if (cur.taskAffinity != null && !cur.taskAffinity.equals(r.taskAffinity)) {
break;
}
- finishActivityLocked(cur, index, Activity.RESULT_CANCELED, null, "request-affinity");
+ finishActivityLocked(cur, index, Activity.RESULT_CANCELED, null,
+ "request-affinity", true);
index--;
}
return true;
@@ -3677,16 +3680,16 @@
* list, or false if it is still in the list and will be removed later.
*/
final boolean finishActivityLocked(ActivityRecord r, int index,
- int resultCode, Intent resultData, String reason) {
- return finishActivityLocked(r, index, resultCode, resultData, reason, false);
+ int resultCode, Intent resultData, String reason, boolean oomAdj) {
+ return finishActivityLocked(r, index, resultCode, resultData, reason, false, oomAdj);
}
/**
* @return Returns true if this activity has been removed from the history
* list, or false if it is still in the list and will be removed later.
*/
- final boolean finishActivityLocked(ActivityRecord r, int index,
- int resultCode, Intent resultData, String reason, boolean immediate) {
+ final boolean finishActivityLocked(ActivityRecord r, int index, int resultCode,
+ Intent resultData, String reason, boolean immediate, boolean oomAdj) {
if (r.finishing) {
Slog.w(TAG, "Duplicate finish request for " + r);
return false;
@@ -3730,7 +3733,7 @@
if (immediate) {
return finishCurrentActivityLocked(r, index,
- FINISH_IMMEDIATELY) == null;
+ FINISH_IMMEDIATELY, oomAdj) == null;
} else if (mResumedActivity == r) {
boolean endTask = index <= 0
|| (mHistory.get(index-1)).task != r.task;
@@ -3754,7 +3757,7 @@
// it is done pausing; else we can just directly finish it here.
if (DEBUG_PAUSE) Slog.v(TAG, "Finish not pausing: " + r);
return finishCurrentActivityLocked(r, index,
- FINISH_AFTER_PAUSE) == null;
+ FINISH_AFTER_PAUSE, oomAdj) == null;
} else {
if (DEBUG_PAUSE) Slog.v(TAG, "Finish waiting for pause of: " + r);
}
@@ -3767,17 +3770,17 @@
private static final int FINISH_AFTER_VISIBLE = 2;
private final ActivityRecord finishCurrentActivityLocked(ActivityRecord r,
- int mode) {
+ int mode, boolean oomAdj) {
final int index = indexOfActivityLocked(r);
if (index < 0) {
return null;
}
- return finishCurrentActivityLocked(r, index, mode);
+ return finishCurrentActivityLocked(r, index, mode, oomAdj);
}
private final ActivityRecord finishCurrentActivityLocked(ActivityRecord r,
- int index, int mode) {
+ int index, int mode, boolean oomAdj) {
// First things first: if this activity is currently visible,
// and the resumed activity is not yet visible, then hold off on
// finishing until the resumed one becomes visible.
@@ -3796,7 +3799,9 @@
if (DEBUG_STATES) Slog.v(TAG, "Moving to STOPPING: " + r
+ " (finish requested)");
r.state = ActivityState.STOPPING;
- mService.updateOomAdjLocked();
+ if (oomAdj) {
+ mService.updateOomAdjLocked();
+ }
return r;
}
@@ -3816,7 +3821,8 @@
|| prevState == ActivityState.INITIALIZING) {
// If this activity is already stopped, we can just finish
// it right now.
- boolean activityRemoved = destroyActivityLocked(r, true, true, "finish-imm");
+ boolean activityRemoved = destroyActivityLocked(r, true,
+ oomAdj, "finish-imm");
if (activityRemoved) {
resumeTopActivityLocked(null);
}
@@ -4008,9 +4014,8 @@
ActivityManagerService.CANCEL_HEAVY_NOTIFICATION_MSG);
}
if (r.app.activities.size() == 0) {
- // No longer have activities, so update location in
- // LRU list.
- mService.updateLruProcessLocked(r.app, oomAdj, false);
+ // No longer have activities, so update oom adj.
+ mService.updateOomAdjLocked();
}
}
diff --git a/services/java/com/android/server/am/ProviderMap.java b/services/java/com/android/server/am/ProviderMap.java
index 2d7167b..9dbf5f5 100644
--- a/services/java/com/android/server/am/ProviderMap.java
+++ b/services/java/com/android/server/am/ProviderMap.java
@@ -18,7 +18,6 @@
import android.content.ComponentName;
import android.os.Binder;
-import android.os.Process;
import android.os.RemoteException;
import android.os.UserHandle;
import android.util.Slog;
@@ -31,8 +30,6 @@
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Set;
/**
* Keeps track of content providers by authority (name) and class. It separates the mapping by
@@ -44,6 +41,8 @@
private static final boolean DBG = false;
+ private final ActivityManagerService mAm;
+
private final HashMap<String, ContentProviderRecord> mSingletonByName
= new HashMap<String, ContentProviderRecord>();
private final HashMap<ComponentName, ContentProviderRecord> mSingletonByClass
@@ -54,6 +53,10 @@
private final SparseArray<HashMap<ComponentName, ContentProviderRecord>> mProvidersByClassPerUser
= new SparseArray<HashMap<ComponentName, ContentProviderRecord>>();
+ ProviderMap(ActivityManagerService am) {
+ mAm = am;
+ }
+
ContentProviderRecord getProviderByName(String name) {
return getProviderByName(name, -1);
}
@@ -217,8 +220,12 @@
}
}
} else {
- didSomething |= collectForceStopProvidersLocked(name, appId, doit, evenPersistent,
- userId, getProvidersByClass(userId), result);
+ HashMap<ComponentName, ContentProviderRecord> items
+ = getProvidersByClass(userId);
+ if (items != null) {
+ didSomething |= collectForceStopProvidersLocked(name, appId, doit,
+ evenPersistent, userId, items, result);
+ }
}
return didSomething;
}
@@ -279,30 +286,33 @@
protected boolean dumpProvider(FileDescriptor fd, PrintWriter pw, String name, String[] args,
int opti, boolean dumpAll) {
+ ArrayList<ContentProviderRecord> allProviders = new ArrayList<ContentProviderRecord>();
ArrayList<ContentProviderRecord> providers = new ArrayList<ContentProviderRecord>();
- if ("all".equals(name)) {
- synchronized (this) {
- for (ContentProviderRecord r1 : getProvidersByClass(-1).values()) {
- providers.add(r1);
- }
- }
- } else {
- ComponentName componentName = name != null
- ? ComponentName.unflattenFromString(name) : null;
- int objectId = 0;
- if (componentName == null) {
- // Not a '/' separated full component name; maybe an object ID?
- try {
- objectId = Integer.parseInt(name, 16);
- name = null;
- componentName = null;
- } catch (RuntimeException e) {
- }
+ synchronized (mAm) {
+ allProviders.addAll(mSingletonByClass.values());
+ for (int i=0; i<mProvidersByClassPerUser.size(); i++) {
+ allProviders.addAll(mProvidersByClassPerUser.valueAt(i).values());
}
- synchronized (this) {
- for (ContentProviderRecord r1 : getProvidersByClass(-1).values()) {
+ if ("all".equals(name)) {
+ providers.addAll(allProviders);
+ } else {
+ ComponentName componentName = name != null
+ ? ComponentName.unflattenFromString(name) : null;
+ int objectId = 0;
+ if (componentName == null) {
+ // Not a '/' separated full component name; maybe an object ID?
+ try {
+ objectId = Integer.parseInt(name, 16);
+ name = null;
+ componentName = null;
+ } catch (RuntimeException e) {
+ }
+ }
+
+ for (int i=0; i<allProviders.size(); i++) {
+ ContentProviderRecord r1 = allProviders.get(i);
if (componentName != null) {
if (r1.name.equals(componentName)) {
providers.add(r1);
@@ -340,7 +350,7 @@
private void dumpProvider(String prefix, FileDescriptor fd, PrintWriter pw,
final ContentProviderRecord r, String[] args, boolean dumpAll) {
String innerPrefix = prefix + " ";
- synchronized (this) {
+ synchronized (mAm) {
pw.print(prefix); pw.print("PROVIDER ");
pw.print(r);
pw.print(" pid=");
diff --git a/services/java/com/android/server/display/WifiDisplayController.java b/services/java/com/android/server/display/WifiDisplayController.java
index b617d00..67691df 100644
--- a/services/java/com/android/server/display/WifiDisplayController.java
+++ b/services/java/com/android/server/display/WifiDisplayController.java
@@ -493,8 +493,13 @@
return; // done
}
- WifiP2pWfdInfo wfdInfo = mConnectedDevice.wfdInfo;
- int port = (wfdInfo != null ? wfdInfo.getControlPort() : DEFAULT_CONTROL_PORT);
+ int port = DEFAULT_CONTROL_PORT;
+ if (mConnectedDevice.deviceName.startsWith("DIRECT-")
+ && mConnectedDevice.deviceName.endsWith("Broadcom")) {
+ // These dongles ignore the port we broadcast in our WFD IE.
+ port = 8554;
+ }
+
final WifiDisplay display = createWifiDisplay(mConnectedDevice);
final String iface = addr.getHostAddress() + ":" + port;
diff --git a/services/java/com/android/server/pm/Installer.java b/services/java/com/android/server/pm/Installer.java
index 3329acb..4268ae0 100644
--- a/services/java/com/android/server/pm/Installer.java
+++ b/services/java/com/android/server/pm/Installer.java
@@ -359,6 +359,14 @@
return execute("movefiles");
}
+ /**
+ * Links the native library directory in an application's directory to its
+ * real location.
+ *
+ * @param dataPath data directory where the application is
+ * @param nativeLibPath target native library path
+ * @return -1 on error
+ */
public int linkNativeLibraryDirectory(String dataPath, String nativeLibPath) {
if (dataPath == null) {
Slog.e(TAG, "unlinkNativeLibraryDirectory dataPath is null");
diff --git a/services/java/com/android/server/pm/PackageManagerService.java b/services/java/com/android/server/pm/PackageManagerService.java
index d0f2ed1..b5ae214 100644
--- a/services/java/com/android/server/pm/PackageManagerService.java
+++ b/services/java/com/android/server/pm/PackageManagerService.java
@@ -25,6 +25,11 @@
import static com.android.internal.util.ArrayUtils.appendInt;
import static com.android.internal.util.ArrayUtils.removeInt;
import static libcore.io.OsConstants.S_ISLNK;
+import static libcore.io.OsConstants.S_IRWXU;
+import static libcore.io.OsConstants.S_IRGRP;
+import static libcore.io.OsConstants.S_IXGRP;
+import static libcore.io.OsConstants.S_IROTH;
+import static libcore.io.OsConstants.S_IXOTH;
import com.android.internal.app.IMediaContainerService;
import com.android.internal.app.ResolverActivity;
@@ -147,6 +152,7 @@
import libcore.io.ErrnoException;
import libcore.io.IoUtils;
import libcore.io.Libcore;
+import libcore.io.OsConstants;
import libcore.io.StructStat;
/**
@@ -276,7 +282,7 @@
// This is the object monitoring mDrmAppPrivateInstallDir.
final FileObserver mDrmAppInstallObserver;
- // Used for priviledge escalation. MUST NOT BE CALLED WITH mPackages
+ // Used for privilege escalation. MUST NOT BE CALLED WITH mPackages
// LOCK HELD. Can be called with mInstallLock held.
final Installer mInstaller;
@@ -286,6 +292,12 @@
final File mAppInstallDir;
final File mDalvikCacheDir;
+ /**
+ * Directory to which applications installed internally have native
+ * libraries copied.
+ */
+ private File mAppLibInstallDir;
+
// Directory containing the private parts (e.g. code and non-resource assets) of forward-locked
// apps.
final File mDrmAppPrivateInstallDir;
@@ -1215,6 +1227,7 @@
}
mAppInstallDir = new File(dataDir, "app");
+ mAppLibInstallDir = new File(dataDir, "app-lib");
//look for any incomplete package installations
ArrayList<PackageSetting> deletePkgsList = mSettings.getListOfIncompleteInstallPackagesLPr();
//clean up list
@@ -3607,6 +3620,13 @@
res = resInner;
}
}
+
+ final File nativeLibraryFile = new File(mAppLibInstallDir, packageName);
+ NativeLibraryHelper.removeNativeBinariesFromDirLI(nativeLibraryFile);
+ if (!nativeLibraryFile.delete()) {
+ Slog.w(TAG, "Couldn't delete native library directory " + nativeLibraryFile.getPath());
+ }
+
return res;
}
@@ -4048,9 +4068,7 @@
*/
if (pkg.applicationInfo.nativeLibraryDir == null && pkg.applicationInfo.dataDir != null) {
if (pkgSetting.nativeLibraryPathString == null) {
- final String nativeLibraryPath = new File(dataPath, LIB_DIR_NAME).getPath();
- pkg.applicationInfo.nativeLibraryDir = nativeLibraryPath;
- pkgSetting.nativeLibraryPathString = nativeLibraryPath;
+ setInternalAppNativeLibraryPath(pkg, pkgSetting);
} else {
pkg.applicationInfo.nativeLibraryDir = pkgSetting.nativeLibraryPathString;
}
@@ -4072,7 +4090,7 @@
*/
if (pkg.applicationInfo.nativeLibraryDir != null) {
try {
- final File nativeLibraryDir = new File(pkg.applicationInfo.nativeLibraryDir);
+ File nativeLibraryDir = new File(pkg.applicationInfo.nativeLibraryDir);
final String dataPathString = dataPath.getCanonicalPath();
if (isSystemApp(pkg) && !isUpdatedSystemApp(pkg)) {
@@ -4087,30 +4105,31 @@
Log.i(TAG, "removed obsolete native libraries for system package "
+ path);
}
- } else if (nativeLibraryDir.getParentFile().getCanonicalPath()
- .equals(dataPathString)) {
- /*
- * Make sure the native library dir isn't a symlink to
- * something. If it is, ask installd to remove it and create
- * a directory so we can copy to it afterwards.
- */
- boolean isSymLink;
- try {
- isSymLink = S_ISLNK(Libcore.os.lstat(nativeLibraryDir.getPath()).st_mode);
- } catch (ErrnoException e) {
- // This shouldn't happen, but we'll fail-safe.
- isSymLink = true;
- }
- if (isSymLink) {
- mInstaller.unlinkNativeLibraryDirectory(dataPathString);
+ } else if (!isForwardLocked(pkg) && !isExternal(pkg)) {
+ // Update native library dir if it starts with /data/data
+ if (nativeLibraryDir.getParent().startsWith(dataPathString)) {
+ setInternalAppNativeLibraryPath(pkg, pkgSetting);
+ nativeLibraryDir = new File(pkg.applicationInfo.nativeLibraryDir);
}
- /*
- * If this is an internal application or our
- * nativeLibraryPath points to our data directory, unpack
- * the libraries if necessary.
- */
- NativeLibraryHelper.copyNativeBinariesIfNeededLI(scanFile, nativeLibraryDir);
+ try {
+ if (copyNativeLibrariesForInternalApp(scanFile, nativeLibraryDir) != PackageManager.INSTALL_SUCCEEDED) {
+ Slog.e(TAG, "Unable to copy native libraries");
+ mLastScanError = PackageManager.INSTALL_FAILED_INTERNAL_ERROR;
+ return null;
+ }
+ } catch (IOException e) {
+ Slog.e(TAG, "Unable to copy native libraries", e);
+ mLastScanError = PackageManager.INSTALL_FAILED_INTERNAL_ERROR;
+ return null;
+ }
+
+ if (mInstaller.linkNativeLibraryDirectory(dataPathString,
+ pkg.applicationInfo.nativeLibraryDir) == -1) {
+ Slog.e(TAG, "Unable to link native library directory");
+ mLastScanError = PackageManager.INSTALL_FAILED_INTERNAL_ERROR;
+ return null;
+ }
} else {
Slog.i(TAG, "Linking native library dir for " + path);
int ret = mInstaller.linkNativeLibraryDirectory(dataPathString,
@@ -4122,7 +4141,7 @@
}
}
} catch (IOException ioe) {
- Log.e(TAG, "Unable to get canonical file " + ioe.toString());
+ Slog.e(TAG, "Unable to get canonical file " + ioe.toString());
}
}
pkg.mScanPath = path;
@@ -4437,6 +4456,37 @@
return pkg;
}
+ private void setInternalAppNativeLibraryPath(PackageParser.Package pkg,
+ PackageSetting pkgSetting) {
+ final String apkLibPath = getApkName(pkgSetting.codePathString);
+ final String nativeLibraryPath = new File(mAppLibInstallDir, apkLibPath).getPath();
+ pkg.applicationInfo.nativeLibraryDir = nativeLibraryPath;
+ pkgSetting.nativeLibraryPathString = nativeLibraryPath;
+ }
+
+ private static int copyNativeLibrariesForInternalApp(File scanFile, final File nativeLibraryDir)
+ throws IOException {
+ if (!nativeLibraryDir.isDirectory()) {
+ nativeLibraryDir.delete();
+ if (!nativeLibraryDir.mkdir()) {
+ throw new IOException("Cannot create " + nativeLibraryDir.getPath());
+ }
+ try {
+ Libcore.os.chmod(nativeLibraryDir.getPath(), S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH
+ | S_IXOTH);
+ } catch (ErrnoException e) {
+ throw new IOException("Cannot chmod native library directory "
+ + nativeLibraryDir.getPath(), e);
+ }
+ }
+
+ /*
+ * If this is an internal application or our nativeLibraryPath points to
+ * the app-lib directory, unpack the libraries if necessary.
+ */
+ return NativeLibraryHelper.copyNativeBinariesIfNeededLI(scanFile, nativeLibraryDir);
+ }
+
private void killApplication(String pkgName, int appId) {
// Request the ActivityManager to kill the process(only for existing packages)
// so that we do not end up in a confused state while the user is still using the older
@@ -6737,7 +6787,7 @@
String apkName = getNextCodePath(null, pkgName, ".apk");
codeFileName = new File(installDir, apkName + ".apk").getPath();
resourceFileName = getResourcePathFromCodePath();
- libraryPath = new File(dataDir, LIB_DIR_NAME).getPath();
+ libraryPath = new File(mAppLibInstallDir, pkgName).getPath();
}
boolean checkFreeStorage(IMediaContainerService imcs) throws RemoteException {
@@ -6774,6 +6824,7 @@
installDir = isFwdLocked() ? mDrmAppPrivateInstallDir : mAppInstallDir;
codeFileName = createTempPackageFile(installDir).getPath();
resourceFileName = getResourcePathFromCodePath();
+ libraryPath = getLibraryPathFromCodePath();
created = true;
}
@@ -6828,6 +6879,23 @@
return PackageManager.INSTALL_FAILED_INSUFFICIENT_STORAGE;
}
}
+
+ final File nativeLibraryFile = new File(getNativeLibraryPath());
+ Slog.i(TAG, "Copying native libraries to " + nativeLibraryFile.getPath());
+ if (nativeLibraryFile.exists()) {
+ NativeLibraryHelper.removeNativeBinariesFromDirLI(nativeLibraryFile);
+ nativeLibraryFile.delete();
+ }
+ try {
+ int copyRet = copyNativeLibrariesForInternalApp(codeFile, nativeLibraryFile);
+ if (copyRet != PackageManager.INSTALL_SUCCEEDED) {
+ return copyRet;
+ }
+ } catch (IOException e) {
+ Slog.e(TAG, "Copying native libraries failed", e);
+ ret = PackageManager.INSTALL_FAILED_INTERNAL_ERROR;
+ }
+
return ret;
}
@@ -6845,6 +6913,7 @@
} else {
final File oldCodeFile = new File(getCodePath());
final File oldResourceFile = new File(getResourcePath());
+ final File oldLibraryFile = new File(getNativeLibraryPath());
// Rename APK file based on packageName
final String apkName = getNextCodePath(oldCodePath, pkgName, ".apk");
@@ -6859,7 +6928,20 @@
if (isFwdLocked() && !oldResourceFile.renameTo(newResFile)) {
return false;
}
- resourceFileName = getResourcePathFromCodePath();
+ resourceFileName = newResFile.getPath();
+
+ // Rename library path
+ final File newLibraryFile = new File(getLibraryPathFromCodePath());
+ if (newLibraryFile.exists()) {
+ NativeLibraryHelper.removeNativeBinariesFromDirLI(newLibraryFile);
+ newLibraryFile.delete();
+ }
+ if (!oldLibraryFile.renameTo(newLibraryFile)) {
+ Slog.e(TAG, "Cannot rename native library directory "
+ + oldLibraryFile.getPath() + " to " + newLibraryFile.getPath());
+ return false;
+ }
+ libraryPath = newLibraryFile.getPath();
// Attempt to set permissions
if (!setPermissions()) {
@@ -6910,8 +6992,15 @@
}
}
+ private String getLibraryPathFromCodePath() {
+ return new File(mAppLibInstallDir, getApkName(getCodePath())).getPath();
+ }
+
@Override
String getNativeLibraryPath() {
+ if (libraryPath == null) {
+ libraryPath = getLibraryPathFromCodePath();
+ }
return libraryPath;
}
@@ -6937,6 +7026,15 @@
publicSourceFile.delete();
}
}
+
+ if (libraryPath != null) {
+ File nativeLibraryFile = new File(libraryPath);
+ NativeLibraryHelper.removeNativeBinariesFromDirLI(nativeLibraryFile);
+ if (!nativeLibraryFile.delete()) {
+ Slog.w(TAG, "Couldn't delete native library directory " + libraryPath);
+ }
+ }
+
return ret;
}
@@ -8118,10 +8216,7 @@
// Delete application code and resources
if (deleteCodeAndResources) {
- // TODO can pick up from PackageSettings as well
- int installFlags = isExternal(ps) ? PackageManager.INSTALL_EXTERNAL : 0;
- installFlags |= isForwardLocked(ps) ? PackageManager.INSTALL_FORWARD_LOCK : 0;
- outInfo.args = createInstallArgs(installFlags, ps.codePathString,
+ outInfo.args = createInstallArgs(packageFlagsToInstallFlags(ps), ps.codePathString,
ps.resourcePathString, ps.nativeLibraryPathString);
}
return true;
@@ -9782,31 +9877,26 @@
final String newNativePath = mp.targetArgs
.getNativeLibraryPath();
- try {
- final File newNativeDir = new File(newNativePath);
+ final File newNativeDir = new File(newNativePath);
- final String libParentDir = newNativeDir.getParentFile()
- .getCanonicalPath();
- if (newNativeDir.getParentFile().getCanonicalPath()
- .equals(pkg.applicationInfo.dataDir)) {
- if (mInstaller
- .unlinkNativeLibraryDirectory(pkg.applicationInfo.dataDir) < 0) {
- returnCode = PackageManager.MOVE_FAILED_INSUFFICIENT_STORAGE;
- } else {
- NativeLibraryHelper.copyNativeBinariesIfNeededLI(
- new File(newCodePath), newNativeDir);
- }
- } else {
+ if (!isForwardLocked(pkg) && !isExternal(pkg)) {
+ synchronized (mInstallLock) {
if (mInstaller.linkNativeLibraryDirectory(
pkg.applicationInfo.dataDir, newNativePath) < 0) {
returnCode = PackageManager.MOVE_FAILED_INSUFFICIENT_STORAGE;
}
}
- } catch (IOException e) {
- returnCode = PackageManager.MOVE_FAILED_INVALID_LOCATION;
+ NativeLibraryHelper.copyNativeBinariesIfNeededLI(new File(
+ newCodePath), newNativeDir);
+ } else {
+ synchronized (mInstallLock) {
+ if (mInstaller.linkNativeLibraryDirectory(
+ pkg.applicationInfo.dataDir, newNativePath) < 0) {
+ returnCode = PackageManager.MOVE_FAILED_INSUFFICIENT_STORAGE;
+ }
+ }
}
-
if (returnCode == PackageManager.MOVE_SUCCEEDED) {
pkg.mPath = newCodePath;
// Move dex files around
diff --git a/services/java/com/android/server/pm/Settings.java b/services/java/com/android/server/pm/Settings.java
index b85353c..b075da3 100644
--- a/services/java/com/android/server/pm/Settings.java
+++ b/services/java/com/android/server/pm/Settings.java
@@ -566,6 +566,10 @@
if (p.signatures.mSignatures == null) {
p.signatures.assignSignatures(pkg.mSignatures);
}
+ // Update flags if needed.
+ if (pkg.applicationInfo.flags != p.pkgFlags) {
+ p.pkgFlags = pkg.applicationInfo.flags;
+ }
// If this app defines a shared user id initialize
// the shared user signatures as well.
if (p.sharedUser != null && p.sharedUser.signatures.mSignatures == null) {
@@ -2616,10 +2620,10 @@
pw.print(" installerPackageName="); pw.println(ps.installerPackageName);
}
pw.print(" signatures="); pw.println(ps.signatures);
- pw.print(" permissionsFixed="); pw.print(ps.permissionsFixed);
- pw.print(" haveGids="); pw.println(ps.haveGids);
- pw.print(" pkgFlags=0x"); pw.print(Integer.toHexString(ps.pkgFlags));
- pw.print(" installStatus="); pw.println(ps.installStatus);
+ pw.print(" permissionsFixed="); pw.println(ps.permissionsFixed);
+ pw.print(" haveGids="); pw.println(ps.haveGids);
+ pw.print(" pkgFlags="); printFlags(pw, ps.pkgFlags, FLAG_DUMP_SPEC);
+ pw.print(" installStatus="); pw.println(ps.installStatus);
for (UserInfo user : users) {
pw.print(" User "); pw.print(user.id); pw.print(": ");
pw.print(" installed=");
diff --git a/services/java/com/android/server/pm/UserManagerService.java b/services/java/com/android/server/pm/UserManagerService.java
index a13c16e..3391668 100644
--- a/services/java/com/android/server/pm/UserManagerService.java
+++ b/services/java/com/android/server/pm/UserManagerService.java
@@ -281,7 +281,7 @@
* cache it elsewhere.
* @return the array of user ids.
*/
- int[] getUserIds() {
+ public int[] getUserIds() {
synchronized (mPackagesLock) {
return mUserIds;
}
diff --git a/tools/aapt/Android.mk b/tools/aapt/Android.mk
index 482f43e..d9b0681 100644
--- a/tools/aapt/Android.mk
+++ b/tools/aapt/Android.mk
@@ -34,7 +34,6 @@
endif
-LOCAL_C_INCLUDES += external/expat/lib
LOCAL_C_INCLUDES += external/libpng
LOCAL_C_INCLUDES += external/zlib
LOCAL_C_INCLUDES += build/libs/host/include
diff --git a/tools/aapt/StringPool.h b/tools/aapt/StringPool.h
index d501008..16050b2 100644
--- a/tools/aapt/StringPool.h
+++ b/tools/aapt/StringPool.h
@@ -21,7 +21,7 @@
#include <ctype.h>
#include <errno.h>
-#include <expat.h>
+#include <libexpat/expat.h>
using namespace android;
diff --git a/wifi/java/android/net/wifi/p2p/WifiP2pDevice.java b/wifi/java/android/net/wifi/p2p/WifiP2pDevice.java
index 117af82..863a055 100644
--- a/wifi/java/android/net/wifi/p2p/WifiP2pDevice.java
+++ b/wifi/java/android/net/wifi/p2p/WifiP2pDevice.java
@@ -124,7 +124,8 @@
"name='(.*)' " +
"config_methods=(0x[0-9a-fA-F]+) " +
"dev_capab=(0x[0-9a-fA-F]+) " +
- "group_capab=(0x[0-9a-fA-F]+)"
+ "group_capab=(0x[0-9a-fA-F]+)" +
+ "( wfd_dev_info=0x000006([0-9a-fA-F]{12}))?"
);
/** 2 token device address pattern
@@ -153,7 +154,7 @@
* @param string formats supported include
* P2P-DEVICE-FOUND fa:7b:7a:42:02:13 p2p_dev_addr=fa:7b:7a:42:02:13
* pri_dev_type=1-0050F204-1 name='p2p-TEST1' config_methods=0x188 dev_capab=0x27
- * group_capab=0x0
+ * group_capab=0x0 wfd_dev_info=000006015d022a0032
*
* P2P-DEVICE-LOST p2p_dev_addr=fa:7b:7a:42:02:13
*
@@ -205,6 +206,12 @@
wpsConfigMethodsSupported = parseHex(match.group(6));
deviceCapability = parseHex(match.group(7));
groupCapability = parseHex(match.group(8));
+ if (match.group(9) != null) {
+ String str = match.group(10);
+ wfdInfo = new WifiP2pWfdInfo(parseHex(str.substring(0,4)),
+ parseHex(str.substring(4,8)),
+ parseHex(str.substring(8,12)));
+ }
break;
}
diff --git a/wifi/java/android/net/wifi/p2p/WifiP2pDeviceList.java b/wifi/java/android/net/wifi/p2p/WifiP2pDeviceList.java
index 157dc50..2093bda 100644
--- a/wifi/java/android/net/wifi/p2p/WifiP2pDeviceList.java
+++ b/wifi/java/android/net/wifi/p2p/WifiP2pDeviceList.java
@@ -76,6 +76,7 @@
d.wpsConfigMethodsSupported = device.wpsConfigMethodsSupported;
d.deviceCapability = device.deviceCapability;
d.groupCapability = device.groupCapability;
+ d.wfdInfo = device.wfdInfo;
return;
}
//Not found, add a new one
diff --git a/wifi/java/android/net/wifi/p2p/WifiP2pWfdInfo.java b/wifi/java/android/net/wifi/p2p/WifiP2pWfdInfo.java
index 9dd3e4a..b6bbfc4 100644
--- a/wifi/java/android/net/wifi/p2p/WifiP2pWfdInfo.java
+++ b/wifi/java/android/net/wifi/p2p/WifiP2pWfdInfo.java
@@ -54,6 +54,13 @@
public WifiP2pWfdInfo() {
}
+ public WifiP2pWfdInfo(int devInfo, int ctrlPort, int maxTput) {
+ mWfdEnabled = true;
+ mDeviceInfo = devInfo;
+ mCtrlPort = ctrlPort;
+ mMaxThroughput = maxTput;
+ }
+
public boolean isWfdEnabled() {
return mWfdEnabled;
}