Merge "Ensure Dequeue/Queue duration is always set" into nyc-mr1-dev
diff --git a/Android.mk b/Android.mk
index fb08395..61df64e 100644
--- a/Android.mk
+++ b/Android.mk
@@ -75,6 +75,7 @@
core/java/android/app/IAppTask.aidl \
core/java/android/app/ITaskStackListener.aidl \
core/java/android/app/IBackupAgent.aidl \
+ core/java/android/app/IEphemeralResolver.aidl \
core/java/android/app/IInstrumentationWatcher.aidl \
core/java/android/app/INotificationManager.aidl \
core/java/android/app/IProcessObserver.aidl \
@@ -305,7 +306,6 @@
core/java/com/android/internal/app/IAppOpsService.aidl \
core/java/com/android/internal/app/IAssistScreenshotReceiver.aidl \
core/java/com/android/internal/app/IBatteryStats.aidl \
- core/java/com/android/internal/app/IEphemeralResolver.aidl \
core/java/com/android/internal/app/ISoundTriggerService.aidl \
core/java/com/android/internal/app/IVoiceInteractionManagerService.aidl \
core/java/com/android/internal/app/IVoiceInteractionSessionListener.aidl \
diff --git a/api/system-current.txt b/api/system-current.txt
index 6cd6020..4f512a0 100644
--- a/api/system-current.txt
+++ b/api/system-current.txt
@@ -4525,6 +4525,15 @@
field public static final int VISIBILITY_VISIBLE_NOTIFY_ONLY_COMPLETION = 3; // 0x3
}
+ public abstract class EphemeralResolverService extends android.app.Service {
+ ctor public EphemeralResolverService();
+ method public final void attachBaseContext(android.content.Context);
+ method public final android.os.IBinder onBind(android.content.Intent);
+ method public abstract java.util.List<android.content.pm.EphemeralResolveInfo> onEphemeralResolveInfoList(int[], int);
+ field public static final java.lang.String EXTRA_RESOLVE_INFO = "android.app.extra.RESOLVE_INFO";
+ field public static final java.lang.String EXTRA_SEQUENCE = "android.app.extra.SEQUENCE";
+ }
+
public class ExpandableListActivity extends android.app.Activity implements android.widget.ExpandableListView.OnChildClickListener android.widget.ExpandableListView.OnGroupCollapseListener android.widget.ExpandableListView.OnGroupExpandListener android.view.View.OnCreateContextMenuListener {
ctor public ExpandableListActivity();
method public android.widget.ExpandableListAdapter getExpandableListAdapter();
diff --git a/core/java/com/android/internal/app/EphemeralResolveInfo.aidl b/core/java/android/app/EphemeralResolveInfo.aidl
similarity index 94%
rename from core/java/com/android/internal/app/EphemeralResolveInfo.aidl
rename to core/java/android/app/EphemeralResolveInfo.aidl
index 529527b..db71d25 100644
--- a/core/java/com/android/internal/app/EphemeralResolveInfo.aidl
+++ b/core/java/android/app/EphemeralResolveInfo.aidl
@@ -14,6 +14,6 @@
** limitations under the License.
*/
-package com.android.internal.app;
+package android.app;
parcelable EphemeralResolveInfo;
diff --git a/core/java/com/android/internal/app/EphemeralResolverService.java b/core/java/android/app/EphemeralResolverService.java
similarity index 87%
rename from core/java/com/android/internal/app/EphemeralResolverService.java
rename to core/java/android/app/EphemeralResolverService.java
index 68724a7..ba79108 100644
--- a/core/java/com/android/internal/app/EphemeralResolverService.java
+++ b/core/java/android/app/EphemeralResolverService.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.internal.app;
+package android.app;
import android.annotation.SystemApi;
import android.app.Service;
@@ -37,9 +37,9 @@
*/
@SystemApi
public abstract class EphemeralResolverService extends Service {
- public static final String EXTRA_RESOLVE_INFO = "com.android.internal.app.RESOLVE_INFO";
- public static final String EXTRA_SEQUENCE = "com.android.internal.app.SEQUENCE";
- private static final String EXTRA_PREFIX = "com.android.internal.app.PREFIX";
+ public static final String EXTRA_RESOLVE_INFO = "android.app.extra.RESOLVE_INFO";
+ public static final String EXTRA_SEQUENCE = "android.app.extra.SEQUENCE";
+ private static final String EXTRA_PREFIX = "android.app.PREFIX";
private Handler mHandler;
/**
@@ -50,11 +50,11 @@
* be used when comparing against the digest prefixes as all bits might
* not be set.
*/
- protected abstract List<EphemeralResolveInfo> getEphemeralResolveInfoList(
+ public abstract List<EphemeralResolveInfo> onEphemeralResolveInfoList(
int digestPrefix[], int prefixMask);
@Override
- protected final void attachBaseContext(Context base) {
+ public final void attachBaseContext(Context base) {
super.attachBaseContext(base);
mHandler = new ServiceHandler(base.getMainLooper());
}
@@ -91,7 +91,7 @@
final IRemoteCallback callback = (IRemoteCallback) message.obj;
final int[] digestPrefix = message.getData().getIntArray(EXTRA_PREFIX);
final List<EphemeralResolveInfo> resolveInfo =
- getEphemeralResolveInfoList(digestPrefix, message.arg1);
+ onEphemeralResolveInfoList(digestPrefix, message.arg1);
final Bundle data = new Bundle();
data.putInt(EXTRA_SEQUENCE, message.arg2);
data.putParcelableList(EXTRA_RESOLVE_INFO, resolveInfo);
diff --git a/core/java/com/android/internal/app/IEphemeralResolver.aidl b/core/java/android/app/IEphemeralResolver.aidl
similarity index 92%
rename from core/java/com/android/internal/app/IEphemeralResolver.aidl
rename to core/java/android/app/IEphemeralResolver.aidl
index 9ff1322..ee869ea 100644
--- a/core/java/com/android/internal/app/IEphemeralResolver.aidl
+++ b/core/java/android/app/IEphemeralResolver.aidl
@@ -14,11 +14,11 @@
* limitations under the License.
*/
-package com.android.internal.app;
+package android.app;
-import android.content.Intent;
import android.os.IRemoteCallback;
+/** @hide */
oneway interface IEphemeralResolver {
void getEphemeralResolveInfoList(IRemoteCallback callback, in int[] digestPrefix,
int prefixMask, int sequence);
diff --git a/core/java/android/app/backup/FullBackup.java b/core/java/android/app/backup/FullBackup.java
index 478024d..76828ee 100644
--- a/core/java/android/app/backup/FullBackup.java
+++ b/core/java/android/app/backup/FullBackup.java
@@ -21,6 +21,8 @@
import android.content.res.XmlResourceParser;
import android.os.ParcelFileDescriptor;
import android.os.Process;
+import android.os.storage.StorageManager;
+import android.os.storage.StorageVolume;
import android.system.ErrnoException;
import android.system.Os;
import android.text.TextUtils;
@@ -223,8 +225,12 @@
final int mFullBackupContent;
final PackageManager mPackageManager;
+ final StorageManager mStorageManager;
final String mPackageName;
+ // lazy initialized, only when needed
+ private StorageVolume[] mVolumes = null;
+
/**
* Parse out the semantic domains into the correct physical location.
*/
@@ -260,16 +266,41 @@
} else {
return null;
}
+ } else if (domainToken.startsWith(FullBackup.SHARED_PREFIX)) {
+ return sharedDomainToPath(domainToken);
}
// Not a supported location
Log.i(TAG, "Unrecognized domain " + domainToken);
return null;
- } catch (IOException e) {
+ } catch (Exception e) {
Log.i(TAG, "Error reading directory for domain: " + domainToken);
return null;
}
}
+
+ private String sharedDomainToPath(String domain) throws IOException {
+ // already known to start with SHARED_PREFIX, so we just look after that
+ final String volume = domain.substring(FullBackup.SHARED_PREFIX.length());
+ final StorageVolume[] volumes = getVolumeList();
+ final int volNum = Integer.parseInt(volume);
+ if (volNum < mVolumes.length) {
+ return volumes[volNum].getPathFile().getCanonicalPath();
+ }
+ return null;
+ }
+
+ private StorageVolume[] getVolumeList() {
+ if (mStorageManager != null) {
+ if (mVolumes == null) {
+ mVolumes = mStorageManager.getVolumeList();
+ }
+ } else {
+ Log.e(TAG, "Unable to access Storage Manager");
+ }
+ return mVolumes;
+ }
+
/**
* A map of domain -> list of canonical file names in that domain that are to be included.
* We keep track of the domain so that we can go through the file system in order later on.
@@ -283,6 +314,7 @@
BackupScheme(Context context) {
mFullBackupContent = context.getApplicationInfo().fullBackupContent;
+ mStorageManager = (StorageManager) context.getSystemService(Context.STORAGE_SERVICE);
mPackageManager = context.getPackageManager();
mPackageName = context.getPackageName();
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java
index 0cdf5e1..e7553ec 100644
--- a/core/java/android/view/View.java
+++ b/core/java/android/view/View.java
@@ -9888,6 +9888,9 @@
public void dispatchFinishTemporaryDetach() {
onFinishTemporaryDetach();
mPrivateFlags3 &= ~PFLAG3_TEMPORARY_DETACH;
+ if (hasWindowFocus() && hasFocus()) {
+ InputMethodManager.getInstance().focusIn(this);
+ }
}
/**
diff --git a/core/java/android/view/WindowManagerPolicy.java b/core/java/android/view/WindowManagerPolicy.java
index 9a8c8a8..17d306e 100644
--- a/core/java/android/view/WindowManagerPolicy.java
+++ b/core/java/android/view/WindowManagerPolicy.java
@@ -136,6 +136,12 @@
throws RemoteException;
/**
+ * @return true if windows with FLAG_DISMISS_KEYGUARD should be allowed to show even if
+ * the keyguard is locked.
+ */
+ boolean canShowDismissingWindowWhileLockedLw();
+
+ /**
* Interface to the Window Manager state associated with a particular
* window. You can hold on to an instance of this interface from the call
* to prepareAddWindow() until removeWindow().
diff --git a/core/java/com/android/internal/policy/IKeyguardService.aidl b/core/java/com/android/internal/policy/IKeyguardService.aidl
index 171a264..83d75fb 100644
--- a/core/java/com/android/internal/policy/IKeyguardService.aidl
+++ b/core/java/com/android/internal/policy/IKeyguardService.aidl
@@ -34,7 +34,7 @@
void addStateMonitorCallback(IKeyguardStateCallback callback);
void verifyUnlock(IKeyguardExitCallback callback);
void keyguardDone(boolean authenticated, boolean wakeup);
- void dismiss();
+ void dismiss(boolean allowWhileOccluded);
void onDreamingStarted();
void onDreamingStopped();
diff --git a/core/java/com/android/internal/policy/IKeyguardStateCallback.aidl b/core/java/com/android/internal/policy/IKeyguardStateCallback.aidl
index db3b40b..419b1f8 100644
--- a/core/java/com/android/internal/policy/IKeyguardStateCallback.aidl
+++ b/core/java/com/android/internal/policy/IKeyguardStateCallback.aidl
@@ -19,4 +19,5 @@
void onShowingStateChanged(boolean showing);
void onSimSecureStateChanged(boolean simSecure);
void onInputRestrictedStateChanged(boolean inputRestricted);
+ void onTrustedChanged(boolean trusted);
}
\ No newline at end of file
diff --git a/core/jni/android_graphics_drawable_AnimatedVectorDrawable.cpp b/core/jni/android_graphics_drawable_AnimatedVectorDrawable.cpp
index 47252ad..ade718b 100644
--- a/core/jni/android_graphics_drawable_AnimatedVectorDrawable.cpp
+++ b/core/jni/android_graphics_drawable_AnimatedVectorDrawable.cpp
@@ -83,11 +83,13 @@
}
static void addAnimator(JNIEnv*, jobject, jlong animatorSetPtr, jlong propertyHolderPtr,
- jlong interpolatorPtr, jlong startDelay, jlong duration, jint repeatCount) {
+ jlong interpolatorPtr, jlong startDelay, jlong duration, jint repeatCount,
+ jint repeatMode) {
PropertyValuesAnimatorSet* set = reinterpret_cast<PropertyValuesAnimatorSet*>(animatorSetPtr);
PropertyValuesHolder* holder = reinterpret_cast<PropertyValuesHolder*>(propertyHolderPtr);
Interpolator* interpolator = reinterpret_cast<Interpolator*>(interpolatorPtr);
- set->addPropertyAnimator(holder, interpolator, startDelay, duration, repeatCount);
+ RepeatMode mode = static_cast<RepeatMode>(repeatMode);
+ set->addPropertyAnimator(holder, interpolator, startDelay, duration, repeatCount, mode);
}
static jlong createAnimatorSet(JNIEnv*, jobject) {
@@ -185,7 +187,7 @@
static const JNINativeMethod gMethods[] = {
{"nCreateAnimatorSet", "()J", (void*)createAnimatorSet},
{"nSetVectorDrawableTarget", "(JJ)V", (void*)setVectorDrawableTarget},
- {"nAddAnimator", "(JJJJJI)V", (void*)addAnimator},
+ {"nAddAnimator", "(JJJJJII)V", (void*)addAnimator},
{"nCreateGroupPropertyHolder", "!(JIFF)J", (void*)createGroupPropertyHolder},
{"nCreatePathDataPropertyHolder", "!(JJJ)J", (void*)createPathDataPropertyHolder},
{"nCreatePathColorPropertyHolder", "!(JIII)J", (void*)createPathColorPropertyHolder},
diff --git a/core/res/res/values-af/strings.xml b/core/res/res/values-af/strings.xml
index ac59838a..bd92ab6 100644
--- a/core/res/res/values-af/strings.xml
+++ b/core/res/res/values-af/strings.xml
@@ -1023,8 +1023,7 @@
<string name="android_upgrading_title" msgid="1584192285441405746">"Android gradeer tans op..."</string>
<string name="android_start_title" msgid="8418054686415318207">"Android begin tans …"</string>
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Optimeer tans berging."</string>
- <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
- <skip />
+ <string name="android_upgrading_notification_title" msgid="8428357096969413169">"Voltooi tans Android-opdatering …"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Sommige programme sal dalk nie behoorlik werk voordat die opgradering voltooi is nie"</string>
<string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> gradeer tans op …"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"Optimeer program <xliff:g id="NUMBER_0">%1$d</xliff:g> van <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
diff --git a/core/res/res/values-am/strings.xml b/core/res/res/values-am/strings.xml
index 264c4ad..98fcebb 100644
--- a/core/res/res/values-am/strings.xml
+++ b/core/res/res/values-am/strings.xml
@@ -1023,8 +1023,7 @@
<string name="android_upgrading_title" msgid="1584192285441405746">"Android እያሻሻለ ነው..."</string>
<string name="android_start_title" msgid="8418054686415318207">"Android በመጀመር ላይ ነው…"</string>
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"ማከማቻን በማመቻቸት ላይ።"</string>
- <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
- <skip />
+ <string name="android_upgrading_notification_title" msgid="8428357096969413169">"የAndroid ዝማኔን በመጨረስ ላይ…"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"አንዳንድ መተግበሪያዎች ማላቁ እስኪጠናቀቅ ድረስ በአግባቡ ላይሰሩ ይችላሉ"</string>
<string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> በማላቅ ላይ…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"መተግበሪያዎች በአግባቡ በመጠቀም ላይ <xliff:g id="NUMBER_0">%1$d</xliff:g> ከ <xliff:g id="NUMBER_1">%2$d</xliff:g> ፡፡"</string>
diff --git a/core/res/res/values-ar/strings.xml b/core/res/res/values-ar/strings.xml
index 28a3d1b..32df247 100644
--- a/core/res/res/values-ar/strings.xml
+++ b/core/res/res/values-ar/strings.xml
@@ -1115,8 +1115,7 @@
<string name="android_upgrading_title" msgid="1584192285441405746">"جارٍ ترقية Android..."</string>
<string name="android_start_title" msgid="8418054686415318207">"جارٍ تشغيل Android…"</string>
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"جارٍ تحسين السعة التخزينية."</string>
- <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
- <skip />
+ <string name="android_upgrading_notification_title" msgid="8428357096969413169">"جارٍ إتمام تحديث Android…"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"قد لا تعمل بعض التطبيقات بشكل مناسب إلا بعد انتهاء الترقية"</string>
<string name="app_upgrading_toast" msgid="3008139776215597053">"جارٍ ترقية <xliff:g id="APPLICATION">%1$s</xliff:g>…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"جارٍ تحسين التطبيق <xliff:g id="NUMBER_0">%1$d</xliff:g> من <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
diff --git a/core/res/res/values-b+sr+Latn/strings.xml b/core/res/res/values-b+sr+Latn/strings.xml
index 84f1fa6..ad74e2e 100644
--- a/core/res/res/values-b+sr+Latn/strings.xml
+++ b/core/res/res/values-b+sr+Latn/strings.xml
@@ -1046,8 +1046,7 @@
<string name="android_upgrading_title" msgid="1584192285441405746">"Android se nadograđuje…"</string>
<string name="android_start_title" msgid="8418054686415318207">"Android se pokreće…"</string>
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Memorija se optimizuje."</string>
- <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
- <skip />
+ <string name="android_upgrading_notification_title" msgid="8428357096969413169">"Dovršavamo ažuriranje Android-a…"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Neke aplikacije možda neće ispravno funkcionisati dok se nadogradnja ne dovrši"</string>
<string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> se nadograđuje…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"Optimizovanje aplikacije <xliff:g id="NUMBER_0">%1$d</xliff:g> od <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
diff --git a/core/res/res/values-be-rBY/strings.xml b/core/res/res/values-be-rBY/strings.xml
index 79b6a1d..237820c 100644
--- a/core/res/res/values-be-rBY/strings.xml
+++ b/core/res/res/values-be-rBY/strings.xml
@@ -1069,8 +1069,7 @@
<string name="android_upgrading_title" msgid="1584192285441405746">"Абнаўленне Android..."</string>
<string name="android_start_title" msgid="8418054686415318207">"Android запускаецца..."</string>
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Аптымізацыя сховішча."</string>
- <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
- <skip />
+ <string name="android_upgrading_notification_title" msgid="8428357096969413169">"Абнаўленне Android завяршаецца…"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Пэўныя праграмы могуць не працаваць належным чынам, пакуль не скончыцца абнаўленне"</string>
<string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> абнаўляецца…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"Аптымізацыя прыкладання <xliff:g id="NUMBER_0">%1$d</xliff:g> з <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
diff --git a/core/res/res/values-bg/strings.xml b/core/res/res/values-bg/strings.xml
index 2f262de..098a1a56 100644
--- a/core/res/res/values-bg/strings.xml
+++ b/core/res/res/values-bg/strings.xml
@@ -1023,8 +1023,7 @@
<string name="android_upgrading_title" msgid="1584192285441405746">"Android се надстройва..."</string>
<string name="android_start_title" msgid="8418054686415318207">"Android се стартира…"</string>
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Хранилището се оптимизира."</string>
- <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
- <skip />
+ <string name="android_upgrading_notification_title" msgid="8428357096969413169">"Актуализацията на Android приключва…"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Някои приложения може да не работят правилно, докато надстройването не завърши"</string>
<string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> се надстройва…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"Оптимизира се приложение <xliff:g id="NUMBER_0">%1$d</xliff:g> от <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
diff --git a/core/res/res/values-bn-rBD/strings.xml b/core/res/res/values-bn-rBD/strings.xml
index c41f4a7..c9e921a 100644
--- a/core/res/res/values-bn-rBD/strings.xml
+++ b/core/res/res/values-bn-rBD/strings.xml
@@ -1023,8 +1023,7 @@
<string name="android_upgrading_title" msgid="1584192285441405746">"Android আপগ্রেড করা হচ্ছে..."</string>
<string name="android_start_title" msgid="8418054686415318207">"Android চালু হচ্ছে…"</string>
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"সঞ্চয়স্থান অপ্টিমাইজ করা হচ্ছে৷"</string>
- <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
- <skip />
+ <string name="android_upgrading_notification_title" msgid="8428357096969413169">"Android আপডেট সম্পন্ন করা হচ্ছে…"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"আপগ্রেড সম্পন্ন না হওয়া পর্যন্ত কিছু অ্যাপ্লিকেশান সঠিকভাবে কাজ নাও করতে পারে"</string>
<string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> আপগ্রেড করা হচ্ছে…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_1">%2$d</xliff:g>টির মধ্যে <xliff:g id="NUMBER_0">%1$d</xliff:g>টি অ্যাপ্লিকেশান অপ্টিমাইজ করা হচ্ছে৷"</string>
diff --git a/core/res/res/values-bs-rBA/strings.xml b/core/res/res/values-bs-rBA/strings.xml
index b1cf0a5..20104a6 100644
--- a/core/res/res/values-bs-rBA/strings.xml
+++ b/core/res/res/values-bs-rBA/strings.xml
@@ -1048,8 +1048,7 @@
<string name="android_upgrading_title" msgid="1584192285441405746">"Nadogradnja sistema Android u toku..."</string>
<string name="android_start_title" msgid="8418054686415318207">"Android se pokreće..."</string>
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Optimiziranje pohrane."</string>
- <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
- <skip />
+ <string name="android_upgrading_notification_title" msgid="8428357096969413169">"Dovršava se ažuriranje Androida…"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Neke aplikacije možda neće raditi ispravno dok traje nadogradnja"</string>
<string name="app_upgrading_toast" msgid="3008139776215597053">"Aplikacija <xliff:g id="APPLICATION">%1$s</xliff:g> se nadograđuje…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"Optimiziranje aplikacije <xliff:g id="NUMBER_0">%1$d</xliff:g> od <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
@@ -1166,8 +1165,8 @@
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB za MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Uspostavljena veza sa USB pohranom"</string>
<string name="usb_notification_message" msgid="3370903770828407960">"Dodirnite za više opcija."</string>
- <string name="adb_active_notification_title" msgid="6729044778949189918">"Uređaj za USB otklanjanje grešaka povezan"</string>
- <string name="adb_active_notification_message" msgid="4948470599328424059">"Dodirnite da onemogućite otklanjanje grešaka preko USB veze."</string>
+ <string name="adb_active_notification_title" msgid="6729044778949189918">"Otklanjanje grešaka putem uređaja spojenog na USB je uspostavljeno"</string>
+ <string name="adb_active_notification_message" msgid="4948470599328424059">"Dodirnite da onemogućite otklanjanje grešaka putem uređaja spojenog na USB."</string>
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Prijem izvještaja o grešci..."</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Podijeliti izvještaj o grešci?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Dijeljenje izvještaja o grešci..."</string>
diff --git a/core/res/res/values-ca/strings.xml b/core/res/res/values-ca/strings.xml
index bc55580..eeed892 100644
--- a/core/res/res/values-ca/strings.xml
+++ b/core/res/res/values-ca/strings.xml
@@ -1023,8 +1023,7 @@
<string name="android_upgrading_title" msgid="1584192285441405746">"Android s\'està actualitzant..."</string>
<string name="android_start_title" msgid="8418054686415318207">"S\'està iniciant Android…"</string>
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"S\'està optimitzant l\'emmagatzematge."</string>
- <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
- <skip />
+ <string name="android_upgrading_notification_title" msgid="8428357096969413169">"S\'està acabant d\'actualitzar Android…"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Pot ser que algunes aplicacions no funcionin correctament fins que no es completi l\'actualització"</string>
<string name="app_upgrading_toast" msgid="3008139776215597053">"S\'està actualitzant <xliff:g id="APPLICATION">%1$s</xliff:g>…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"S\'està optimitzant l\'aplicació <xliff:g id="NUMBER_0">%1$d</xliff:g> de <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
diff --git a/core/res/res/values-cs/strings.xml b/core/res/res/values-cs/strings.xml
index 857d33d..df8bffd 100644
--- a/core/res/res/values-cs/strings.xml
+++ b/core/res/res/values-cs/strings.xml
@@ -1069,8 +1069,7 @@
<string name="android_upgrading_title" msgid="1584192285441405746">"Android se upgraduje..."</string>
<string name="android_start_title" msgid="8418054686415318207">"Spouštění systému Android…"</string>
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Probíhá optimalizace úložiště."</string>
- <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
- <skip />
+ <string name="android_upgrading_notification_title" msgid="8428357096969413169">"Dokončování aktualizace Androidu…"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Před dokončením upgradu nemusí některé aplikace fungovat správně"</string>
<string name="app_upgrading_toast" msgid="3008139776215597053">"Aplikace <xliff:g id="APPLICATION">%1$s</xliff:g> se upgraduje…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"Optimalizování aplikace <xliff:g id="NUMBER_0">%1$d</xliff:g> z <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
diff --git a/core/res/res/values-da/strings.xml b/core/res/res/values-da/strings.xml
index 49d5ac6..731c847 100644
--- a/core/res/res/values-da/strings.xml
+++ b/core/res/res/values-da/strings.xml
@@ -1023,8 +1023,7 @@
<string name="android_upgrading_title" msgid="1584192285441405746">"Android opgraderes..."</string>
<string name="android_start_title" msgid="8418054686415318207">"Android starter..."</string>
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Lageret optimeres."</string>
- <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
- <skip />
+ <string name="android_upgrading_notification_title" msgid="8428357096969413169">"Afslutter Android-opdateringen…"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Nogle apps fungerer muligvis ikke korrekt, før opgraderingen er gennemført"</string>
<string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> opgraderer…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"Optimerer app <xliff:g id="NUMBER_0">%1$d</xliff:g> ud af <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
diff --git a/core/res/res/values-de/strings.xml b/core/res/res/values-de/strings.xml
index 4d3830b..c478607 100644
--- a/core/res/res/values-de/strings.xml
+++ b/core/res/res/values-de/strings.xml
@@ -1023,8 +1023,7 @@
<string name="android_upgrading_title" msgid="1584192285441405746">"Android wird aktualisiert..."</string>
<string name="android_start_title" msgid="8418054686415318207">"Android wird gestartet…"</string>
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Speicher wird optimiert"</string>
- <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
- <skip />
+ <string name="android_upgrading_notification_title" msgid="8428357096969413169">"Android-Update wird beendet…"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Einige Apps funktionieren unter Umständen nicht richtig, bis das Upgrade abgeschlossen ist"</string>
<string name="app_upgrading_toast" msgid="3008139776215597053">"Für <xliff:g id="APPLICATION">%1$s</xliff:g> wird gerade ein Upgrade ausgeführt…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"App <xliff:g id="NUMBER_0">%1$d</xliff:g> von <xliff:g id="NUMBER_1">%2$d</xliff:g> wird optimiert..."</string>
diff --git a/core/res/res/values-el/strings.xml b/core/res/res/values-el/strings.xml
index 062fcbf..3c6e832 100644
--- a/core/res/res/values-el/strings.xml
+++ b/core/res/res/values-el/strings.xml
@@ -1023,8 +1023,7 @@
<string name="android_upgrading_title" msgid="1584192285441405746">"Το Android αναβαθμίζεται..."</string>
<string name="android_start_title" msgid="8418054686415318207">"Εκκίνηση Android…"</string>
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Βελτιστοποίηση αποθηκευτικού χώρου."</string>
- <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
- <skip />
+ <string name="android_upgrading_notification_title" msgid="8428357096969413169">"Ολοκλήρωση ενημέρωσης Android…"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Ορισμένες εφαρμογές ενδέχεται να μην λειτουργούν σωστά μέχρι την ολοκλήρωση της αναβάθμισης"</string>
<string name="app_upgrading_toast" msgid="3008139776215597053">"Η εφαρμογή <xliff:g id="APPLICATION">%1$s</xliff:g> αναβαθμίζεται…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"Βελτιστοποίηση της εφαρμογής <xliff:g id="NUMBER_0">%1$d</xliff:g> από <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
diff --git a/core/res/res/values-es-rUS/strings.xml b/core/res/res/values-es-rUS/strings.xml
index 425ce35..136902b 100644
--- a/core/res/res/values-es-rUS/strings.xml
+++ b/core/res/res/values-es-rUS/strings.xml
@@ -1023,8 +1023,7 @@
<string name="android_upgrading_title" msgid="1584192285441405746">"Android se está actualizando..."</string>
<string name="android_start_title" msgid="8418054686415318207">"Iniciando Android…"</string>
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Optimizando almacenamiento"</string>
- <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
- <skip />
+ <string name="android_upgrading_notification_title" msgid="8428357096969413169">"Finalizando actualización de Android…"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Es posible que algunas apps no funcionen correctamente hasta que termine la actualización"</string>
<string name="app_upgrading_toast" msgid="3008139776215597053">"Se está actualizando <xliff:g id="APPLICATION">%1$s</xliff:g>…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"Optimizando la aplicación <xliff:g id="NUMBER_0">%1$d</xliff:g> de <xliff:g id="NUMBER_1">%2$d</xliff:g>"</string>
diff --git a/core/res/res/values-es/strings.xml b/core/res/res/values-es/strings.xml
index 3956842..c4ebb02 100644
--- a/core/res/res/values-es/strings.xml
+++ b/core/res/res/values-es/strings.xml
@@ -1023,8 +1023,7 @@
<string name="android_upgrading_title" msgid="1584192285441405746">"Actualizando Android"</string>
<string name="android_start_title" msgid="8418054686415318207">"Android se está iniciando…"</string>
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Optimizando almacenamiento."</string>
- <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
- <skip />
+ <string name="android_upgrading_notification_title" msgid="8428357096969413169">"Terminando de actualizar Android…"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Es posible que algunas aplicaciones no funcionen correctamente hasta que finalice la actualización"</string>
<string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> se está actualizando…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"Optimizando aplicación <xliff:g id="NUMBER_0">%1$d</xliff:g> de <xliff:g id="NUMBER_1">%2$d</xliff:g>..."</string>
diff --git a/core/res/res/values-et-rEE/strings.xml b/core/res/res/values-et-rEE/strings.xml
index 388edd8..8922379 100644
--- a/core/res/res/values-et-rEE/strings.xml
+++ b/core/res/res/values-et-rEE/strings.xml
@@ -1023,8 +1023,7 @@
<string name="android_upgrading_title" msgid="1584192285441405746">"Android viiakse üle uuemale versioonile ..."</string>
<string name="android_start_title" msgid="8418054686415318207">"Android käivitub ..."</string>
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Salvestusruumi optimeerimine."</string>
- <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
- <skip />
+ <string name="android_upgrading_notification_title" msgid="8428357096969413169">"Androidi värskenduse lõpetamine …"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Mõned rakendused ei pruugi enne uuemale versioonile ülemineku lõpetamist korralikult töötada"</string>
<string name="app_upgrading_toast" msgid="3008139776215597053">"Rakenduse <xliff:g id="APPLICATION">%1$s</xliff:g> versiooni uuendatakse …"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_0">%1$d</xliff:g>. rakenduse <xliff:g id="NUMBER_1">%2$d</xliff:g>-st optimeerimine."</string>
diff --git a/core/res/res/values-fa/strings.xml b/core/res/res/values-fa/strings.xml
index edabde3..5976ad1 100644
--- a/core/res/res/values-fa/strings.xml
+++ b/core/res/res/values-fa/strings.xml
@@ -1023,8 +1023,7 @@
<string name="android_upgrading_title" msgid="1584192285441405746">"Android در حال ارتقا است..."</string>
<string name="android_start_title" msgid="8418054686415318207">"Android در حال راهاندازی است..."</string>
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"بهینهسازی فضای ذخیرهسازی."</string>
- <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
- <skip />
+ <string name="android_upgrading_notification_title" msgid="8428357096969413169">"درحال پایان بهروزرسانی Android…"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"تا پایان ارتقا، ممکن است برخی از برنامهها بهدرستی کار نکنند."</string>
<string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> درحال ارتقا است...."</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"در حال بهینهسازی برنامهٔ <xliff:g id="NUMBER_0">%1$d</xliff:g> از <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
diff --git a/core/res/res/values-fi/strings.xml b/core/res/res/values-fi/strings.xml
index 054f5c4..b221750 100644
--- a/core/res/res/values-fi/strings.xml
+++ b/core/res/res/values-fi/strings.xml
@@ -1023,8 +1023,7 @@
<string name="android_upgrading_title" msgid="1584192285441405746">"Androidia päivitetään…"</string>
<string name="android_start_title" msgid="8418054686415318207">"Android käynnistyy…"</string>
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Optimoidaan tallennustilaa."</string>
- <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
- <skip />
+ <string name="android_upgrading_notification_title" msgid="8428357096969413169">"Viimeistellään Android-päivitystä…"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Kaikki sovellukset eivät ehkä toimi oikein, ennen kuin päivitys on valmis."</string>
<string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> päivittyy…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"Optimoidaan sovellusta <xliff:g id="NUMBER_0">%1$d</xliff:g>/<xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
diff --git a/core/res/res/values-fr-rCA/strings.xml b/core/res/res/values-fr-rCA/strings.xml
index 3d2ea6a..f0d9888 100644
--- a/core/res/res/values-fr-rCA/strings.xml
+++ b/core/res/res/values-fr-rCA/strings.xml
@@ -1023,8 +1023,7 @@
<string name="android_upgrading_title" msgid="1584192285441405746">"Mise à jour d\'Android…"</string>
<string name="android_start_title" msgid="8418054686415318207">"Android en cours de démarrage..."</string>
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Optimisation du stockage."</string>
- <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
- <skip />
+ <string name="android_upgrading_notification_title" msgid="8428357096969413169">"Finalisation de la mise à jour d\'Android…"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Il se peut que certaines applications ne fonctionnent pas correctement jusqu\'à ce que la mise à niveau soit terminée"</string>
<string name="app_upgrading_toast" msgid="3008139776215597053">"Mise à niveau de <xliff:g id="APPLICATION">%1$s</xliff:g> en cours…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"Optimisation de l\'application <xliff:g id="NUMBER_0">%1$d</xliff:g> sur <xliff:g id="NUMBER_1">%2$d</xliff:g>…"</string>
diff --git a/core/res/res/values-fr/strings.xml b/core/res/res/values-fr/strings.xml
index 29dcc57..6600f09 100644
--- a/core/res/res/values-fr/strings.xml
+++ b/core/res/res/values-fr/strings.xml
@@ -1023,8 +1023,7 @@
<string name="android_upgrading_title" msgid="1584192285441405746">"Mise à jour d\'Android…"</string>
<string name="android_start_title" msgid="8418054686415318207">"Démarrage d\'Android en cours"</string>
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Optimisation du stockage en cours…"</string>
- <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
- <skip />
+ <string name="android_upgrading_notification_title" msgid="8428357096969413169">"Finalisation de la mise à jour Android…"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Certaines applications peuvent ne pas fonctionner correctement jusqu\'à ce que la mise à jour soit terminée."</string>
<string name="app_upgrading_toast" msgid="3008139776215597053">"Mise à jour de l\'application <xliff:g id="APPLICATION">%1$s</xliff:g>…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"Optimisation de l\'application <xliff:g id="NUMBER_0">%1$d</xliff:g> sur <xliff:g id="NUMBER_1">%2$d</xliff:g>…"</string>
diff --git a/core/res/res/values-gl-rES/strings.xml b/core/res/res/values-gl-rES/strings.xml
index 6a28f59..8023edf 100644
--- a/core/res/res/values-gl-rES/strings.xml
+++ b/core/res/res/values-gl-rES/strings.xml
@@ -1023,8 +1023,7 @@
<string name="android_upgrading_title" msgid="1584192285441405746">"Estase actualizando Android…"</string>
<string name="android_start_title" msgid="8418054686415318207">"Estase iniciando Android…"</string>
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Optimizando almacenamento."</string>
- <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
- <skip />
+ <string name="android_upgrading_notification_title" msgid="8428357096969413169">"Finalizando a actualización de Android…"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"É posible que algunhas aplicacións non funcionen correctamente ata que finalice o proceso de actualización"</string>
<string name="app_upgrading_toast" msgid="3008139776215597053">"Actualizando <xliff:g id="APPLICATION">%1$s</xliff:g>…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"Optimizando aplicación <xliff:g id="NUMBER_0">%1$d</xliff:g> de <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
diff --git a/core/res/res/values-gu-rIN/strings.xml b/core/res/res/values-gu-rIN/strings.xml
index 31bbe45..5c3bf93 100644
--- a/core/res/res/values-gu-rIN/strings.xml
+++ b/core/res/res/values-gu-rIN/strings.xml
@@ -1023,8 +1023,7 @@
<string name="android_upgrading_title" msgid="1584192285441405746">"Android અપગ્રેડ થઈ રહ્યું છે..."</string>
<string name="android_start_title" msgid="8418054686415318207">"Android પ્રારંભ થઈ રહ્યું છે…"</string>
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"સંગ્રહ ઓપ્ટિમાઇઝ કરી રહ્યું છે."</string>
- <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
- <skip />
+ <string name="android_upgrading_notification_title" msgid="8428357096969413169">"Android અપડેટ સમાપ્ત કરી રહ્યાં છે…"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"અપગ્રેડ સમાપ્ત ન થાય ત્યાં સુધી કેટલીક ઍપ્લિકેશનો કદાચ યોગ્ય રીતે કામ ન કરે"</string>
<string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> અપગ્રેડ થઈ રહી છે…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_1">%2$d</xliff:g> માંથી <xliff:g id="NUMBER_0">%1$d</xliff:g> ઍપ્લિકેશન ઓપ્ટિમાઇઝ કરી રહ્યું છે."</string>
diff --git a/core/res/res/values-hi/strings.xml b/core/res/res/values-hi/strings.xml
index ab0a42f..bea243b 100644
--- a/core/res/res/values-hi/strings.xml
+++ b/core/res/res/values-hi/strings.xml
@@ -1023,8 +1023,7 @@
<string name="android_upgrading_title" msgid="1584192285441405746">"Android अपग्रेड हो रहा है..."</string>
<string name="android_start_title" msgid="8418054686415318207">"Android प्रारंभ हो रहा है…"</string>
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"मेमोरी ऑप्टिमाइज़ हो रही है."</string>
- <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
- <skip />
+ <string name="android_upgrading_notification_title" msgid="8428357096969413169">"Android अपडेट समाप्त हो रहा है…"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"जब तक अपग्रेड पूरा नहीं हो जाता, तब तक संभव है कि कुछ ऐप्लिकेशन ठीक से कार्य ना करें"</string>
<string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> अपग्रेड हो रहा है…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_1">%2$d</xliff:g> में से <xliff:g id="NUMBER_0">%1$d</xliff:g> ऐप्स अनुकूलित हो रहा है."</string>
diff --git a/core/res/res/values-hr/strings.xml b/core/res/res/values-hr/strings.xml
index 0beaaea..b181f6d 100644
--- a/core/res/res/values-hr/strings.xml
+++ b/core/res/res/values-hr/strings.xml
@@ -1046,8 +1046,7 @@
<string name="android_upgrading_title" msgid="1584192285441405746">"Android se nadograđuje…"</string>
<string name="android_start_title" msgid="8418054686415318207">"Pokretanje Androida..."</string>
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Optimiziranje pohrane."</string>
- <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
- <skip />
+ <string name="android_upgrading_notification_title" msgid="8428357096969413169">"Dovršavanje ažuriranja Androida…"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Neke aplikacije možda neće funkcionirati pravilno dok nadogradnja ne završi"</string>
<string name="app_upgrading_toast" msgid="3008139776215597053">"Nadogradnja aplikacije <xliff:g id="APPLICATION">%1$s</xliff:g>…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"Optimiziranje aplikacije <xliff:g id="NUMBER_0">%1$d</xliff:g> od <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
diff --git a/core/res/res/values-hu/strings.xml b/core/res/res/values-hu/strings.xml
index c1c04ad1..aea12a6 100644
--- a/core/res/res/values-hu/strings.xml
+++ b/core/res/res/values-hu/strings.xml
@@ -1023,8 +1023,7 @@
<string name="android_upgrading_title" msgid="1584192285441405746">"Android frissítése folyamatban..."</string>
<string name="android_start_title" msgid="8418054686415318207">"Az Android indítása…"</string>
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Tárhely-optimalizálás."</string>
- <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
- <skip />
+ <string name="android_upgrading_notification_title" msgid="8428357096969413169">"Az Android frissítésének befejezése…"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"A frissítés befejezéséig előfordulhat, hogy egyes alkalmazások nem megfelelően működnek."</string>
<string name="app_upgrading_toast" msgid="3008139776215597053">"A(z) <xliff:g id="APPLICATION">%1$s</xliff:g> frissítése folyamatban van"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"Alkalmazás optimalizálása: <xliff:g id="NUMBER_0">%1$d</xliff:g>/<xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
diff --git a/core/res/res/values-hy-rAM/strings.xml b/core/res/res/values-hy-rAM/strings.xml
index 4f03608..ba97468 100644
--- a/core/res/res/values-hy-rAM/strings.xml
+++ b/core/res/res/values-hy-rAM/strings.xml
@@ -1023,8 +1023,7 @@
<string name="android_upgrading_title" msgid="1584192285441405746">"Android-ը նորացվում է..."</string>
<string name="android_start_title" msgid="8418054686415318207">"Android-ը մեկնարկում է…"</string>
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Պահեստի օպտիմալացում:"</string>
- <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
- <skip />
+ <string name="android_upgrading_notification_title" msgid="8428357096969413169">"Android-ի թարմացումն ավարտվում է…"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Հնարավոր է՝ որոշ հավելվածներ մինչև նորացման ավարտը ճիշտ չաշխատեն"</string>
<string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> հավելվածը նորացվում է…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"Օպտիմալացվում է հավելված <xliff:g id="NUMBER_0">%1$d</xliff:g>-ը <xliff:g id="NUMBER_1">%2$d</xliff:g>-ից:"</string>
diff --git a/core/res/res/values-is-rIS/strings.xml b/core/res/res/values-is-rIS/strings.xml
index 55e14c4..a897ba8 100644
--- a/core/res/res/values-is-rIS/strings.xml
+++ b/core/res/res/values-is-rIS/strings.xml
@@ -1023,8 +1023,7 @@
<string name="android_upgrading_title" msgid="1584192285441405746">"Android er að uppfæra…"</string>
<string name="android_start_title" msgid="8418054686415318207">"Android er að ræsast…"</string>
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Fínstillir geymslu."</string>
- <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
- <skip />
+ <string name="android_upgrading_notification_title" msgid="8428357096969413169">"Lýkur við Android uppfærslu…"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Hugsanlega virka sum forrit ekki fyrr en uppfærslunni lýkur"</string>
<string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> uppfærir…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"Fínstillir forrit <xliff:g id="NUMBER_0">%1$d</xliff:g> af <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
diff --git a/core/res/res/values-it/strings.xml b/core/res/res/values-it/strings.xml
index 0fb42a8..9cd74dc 100644
--- a/core/res/res/values-it/strings.xml
+++ b/core/res/res/values-it/strings.xml
@@ -1023,8 +1023,7 @@
<string name="android_upgrading_title" msgid="1584192285441405746">"Aggiornamento di Android..."</string>
<string name="android_start_title" msgid="8418054686415318207">"Avvio di Android…"</string>
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Ottimizzazione archiviazione."</string>
- <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
- <skip />
+ <string name="android_upgrading_notification_title" msgid="8428357096969413169">"Completamento aggiornamento Android…"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Alcune app potrebbero non funzionare correttamente fino al completamento dell\'upgrade"</string>
<string name="app_upgrading_toast" msgid="3008139776215597053">"Upgrade dell\'app <xliff:g id="APPLICATION">%1$s</xliff:g>…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"Ottimizzazione applicazione <xliff:g id="NUMBER_0">%1$d</xliff:g> di <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
diff --git a/core/res/res/values-iw/strings.xml b/core/res/res/values-iw/strings.xml
index 68a6f2b..bebe027 100644
--- a/core/res/res/values-iw/strings.xml
+++ b/core/res/res/values-iw/strings.xml
@@ -1069,8 +1069,7 @@
<string name="android_upgrading_title" msgid="1584192285441405746">"Android מבצע שדרוג…"</string>
<string name="android_start_title" msgid="8418054686415318207">"הפעלת Android מתחילה…"</string>
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"מתבצעת אופטימיזציה של האחסון."</string>
- <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
- <skip />
+ <string name="android_upgrading_notification_title" msgid="8428357096969413169">"מסיים עדכון Android…"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"ייתכן שאפליקציות מסוימות לא יפעלו כראוי עד סיום השדרוג"</string>
<string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> מבצעת שדרוג…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"מבצע אופטימיזציה של אפליקציה <xliff:g id="NUMBER_0">%1$d</xliff:g> מתוך <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
diff --git a/core/res/res/values-ka-rGE/strings.xml b/core/res/res/values-ka-rGE/strings.xml
index 213b856c..0295ea5 100644
--- a/core/res/res/values-ka-rGE/strings.xml
+++ b/core/res/res/values-ka-rGE/strings.xml
@@ -1023,8 +1023,7 @@
<string name="android_upgrading_title" msgid="1584192285441405746">"Android ახალ ვერსიაზე გადადის…"</string>
<string name="android_start_title" msgid="8418054686415318207">"Android იწყება…"</string>
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"მეხსიერების ოპტიმიზირება."</string>
- <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
- <skip />
+ <string name="android_upgrading_notification_title" msgid="8428357096969413169">"Android-ის განახლება სრულდება…"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"ახალ ვერსიაზე გადასვლის დასრულებამდე, ზოგიერთმა აპმა შეიძლება არასწორად იმუშაოს"</string>
<string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> ახალ ვერსიაზე გადადის…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"მიმდინარეობს აპლიკაციების ოპტიმიზაცია. დასრულებულია <xliff:g id="NUMBER_0">%1$d</xliff:g>, სულ <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
diff --git a/core/res/res/values-kk-rKZ/strings.xml b/core/res/res/values-kk-rKZ/strings.xml
index 142bf05..b5931c1 100644
--- a/core/res/res/values-kk-rKZ/strings.xml
+++ b/core/res/res/values-kk-rKZ/strings.xml
@@ -1023,8 +1023,7 @@
<string name="android_upgrading_title" msgid="1584192285441405746">"Android жаңартылуда…"</string>
<string name="android_start_title" msgid="8418054686415318207">"Android іске қосылуда…"</string>
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Қойманы оңтайландыру."</string>
- <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
- <skip />
+ <string name="android_upgrading_notification_title" msgid="8428357096969413169">"Android жүйесін жаңарту аяқталуда…"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Жаңарту аяқталғанға дейін кейбір қолданбалар дұрыс жұмыс істемеуі мүмкін"</string>
<string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> жаңартылуда…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_1">%2$d</xliff:g> ішінен <xliff:g id="NUMBER_0">%1$d</xliff:g> қолданба оңтайландырылуда."</string>
diff --git a/core/res/res/values-km-rKH/strings.xml b/core/res/res/values-km-rKH/strings.xml
index 177b4bb..71f8cba 100644
--- a/core/res/res/values-km-rKH/strings.xml
+++ b/core/res/res/values-km-rKH/strings.xml
@@ -1025,8 +1025,7 @@
<string name="android_upgrading_title" msgid="1584192285441405746">"Android កំពុងធ្វើបច្ចុប្បន្នភាព..."</string>
<string name="android_start_title" msgid="8418054686415318207">"Android កំពុងចាប់ផ្ដើម…"</string>
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"កំពុងធ្វើឲ្យឧបករណ៍ផ្ទុកមានប្រសិទ្ធភាព។"</string>
- <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
- <skip />
+ <string name="android_upgrading_notification_title" msgid="8428357096969413169">"កំពុងបញ្ចប់ការអាប់ដេត Android…"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"កម្មវិធីមួយចំនួនអាចនឹងមិនដំណើរការប្រក្រតីនោះទេ រហូតដល់ការអាប់គ្រេតបញ្ចប់"</string>
<string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> អាប់គ្រេត…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"ធ្វើឲ្យកម្មវិធីប្រសើរឡើង <xliff:g id="NUMBER_0">%1$d</xliff:g> នៃ <xliff:g id="NUMBER_1">%2$d</xliff:g> ។"</string>
diff --git a/core/res/res/values-kn-rIN/strings.xml b/core/res/res/values-kn-rIN/strings.xml
index c338c923..770af19 100644
--- a/core/res/res/values-kn-rIN/strings.xml
+++ b/core/res/res/values-kn-rIN/strings.xml
@@ -1023,8 +1023,7 @@
<string name="android_upgrading_title" msgid="1584192285441405746">"Android ಅಪ್ಗ್ರೇಡ್ ಮಾಡಲಾಗುತ್ತಿದೆ…"</string>
<string name="android_start_title" msgid="8418054686415318207">"Android ಪ್ರಾರಂಭಿಸಲಾಗುತ್ತಿದೆ…"</string>
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"ಸಂಗ್ರಹಣೆಯನ್ನು ಆಪ್ಟಿಮೈಸ್ ಮಾಡಲಾಗುತ್ತಿದೆ."</string>
- <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
- <skip />
+ <string name="android_upgrading_notification_title" msgid="8428357096969413169">"Android ಅಪ್ಡೇಟ್ ಮುಗಿಸಲಾಗುತ್ತಿದೆ…"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"ಅಪ್ಗ್ರೇಡ್ ಮುಗಿಯುವ ತನಕ ಕೆಲವು ಅಪ್ಲಿಕೇಶನ್ಗಳು ಸರಿಯಾಗಿ ಕೆಲಸ ಮಾಡದಿರಬಹುದು"</string>
<string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> ಅಪ್ಗ್ರೇಡ್ ಆಗುತ್ತಿದೆ..."</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_1">%2$d</xliff:g> ರಲ್ಲಿ <xliff:g id="NUMBER_0">%1$d</xliff:g> ಅಪ್ಲಿಕೇಶನ್ ಆಪ್ಟಿಮೈಸ್ ಮಾಡಲಾಗುತ್ತಿದೆ."</string>
diff --git a/core/res/res/values-ko/strings.xml b/core/res/res/values-ko/strings.xml
index 728f036..5b446b4 100644
--- a/core/res/res/values-ko/strings.xml
+++ b/core/res/res/values-ko/strings.xml
@@ -1023,8 +1023,7 @@
<string name="android_upgrading_title" msgid="1584192285441405746">"Android 업그레이드 중.."</string>
<string name="android_start_title" msgid="8418054686415318207">"Android가 시작되는 중…"</string>
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"저장소 최적화 중"</string>
- <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
- <skip />
+ <string name="android_upgrading_notification_title" msgid="8428357096969413169">"Android 업데이트 완료 중…"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"특정 앱은 업그레이드가 완료될 때까지 제대로 작동하지 않을 수 있습니다."</string>
<string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> 업그레이드 중…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"앱 <xliff:g id="NUMBER_1">%2$d</xliff:g>개 중 <xliff:g id="NUMBER_0">%1$d</xliff:g>개 최적화 중"</string>
diff --git a/core/res/res/values-ky-rKG/strings.xml b/core/res/res/values-ky-rKG/strings.xml
index f7bb450..0f82dcb 100644
--- a/core/res/res/values-ky-rKG/strings.xml
+++ b/core/res/res/values-ky-rKG/strings.xml
@@ -1023,8 +1023,7 @@
<string name="android_upgrading_title" msgid="1584192285441405746">"Android жаңыртылууда…"</string>
<string name="android_start_title" msgid="8418054686415318207">"Android жүргүзүлүүдө…"</string>
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Сактагыч ыңгайлаштырылууда."</string>
- <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
- <skip />
+ <string name="android_upgrading_notification_title" msgid="8428357096969413169">"Android\'ди жаңыртуу аякталууда..."</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Жаңыртуу аягына чыкмайынча айрым колдонмолор талаптагыдай иштебей калышы мүмкүн"</string>
<string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> жаңыртылууда..."</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_1">%2$d</xliff:g> ичинен <xliff:g id="NUMBER_0">%1$d</xliff:g> колдонмо ыңгайлаштырылууда."</string>
diff --git a/core/res/res/values-lt/strings.xml b/core/res/res/values-lt/strings.xml
index 9e9b25f..ab38c0c 100644
--- a/core/res/res/values-lt/strings.xml
+++ b/core/res/res/values-lt/strings.xml
@@ -1069,8 +1069,7 @@
<string name="android_upgrading_title" msgid="1584192285441405746">"„Android“ naujovinama..."</string>
<string name="android_start_title" msgid="8418054686415318207">"Paleidžiama „Android“…"</string>
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Optimizuojama saugykla."</string>
- <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
- <skip />
+ <string name="android_upgrading_notification_title" msgid="8428357096969413169">"Baigiamas „Android“ atnauj. procesas…"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Kai kurios programos gali tinkamai neveikti, kol naujovinimo procesas nebus baigtas"</string>
<string name="app_upgrading_toast" msgid="3008139776215597053">"„<xliff:g id="APPLICATION">%1$s</xliff:g>“ naujovinama..."</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"Optimizuojama <xliff:g id="NUMBER_0">%1$d</xliff:g> progr. iš <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
diff --git a/core/res/res/values-lv/strings.xml b/core/res/res/values-lv/strings.xml
index 1f82ad2..35b699f 100644
--- a/core/res/res/values-lv/strings.xml
+++ b/core/res/res/values-lv/strings.xml
@@ -1046,8 +1046,7 @@
<string name="android_upgrading_title" msgid="1584192285441405746">"Notiek Android jaunināšana..."</string>
<string name="android_start_title" msgid="8418054686415318207">"Notiek Android palaišana…"</string>
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Notiek krātuves optimizēšana."</string>
- <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
- <skip />
+ <string name="android_upgrading_notification_title" msgid="8428357096969413169">"Tiek pabeigta Android atjaunināšana…"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Kamēr jaunināšana nebūs pabeigta, dažas lietotnes, iespējams, nedarbosies pareizi."</string>
<string name="app_upgrading_toast" msgid="3008139776215597053">"Notiek lietotnes <xliff:g id="APPLICATION">%1$s</xliff:g> jaunināšana…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"Tiek optimizēta <xliff:g id="NUMBER_0">%1$d</xliff:g>. lietotne no <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
diff --git a/core/res/res/values-mk-rMK/strings.xml b/core/res/res/values-mk-rMK/strings.xml
index 87a5eb0..e0ec16a 100644
--- a/core/res/res/values-mk-rMK/strings.xml
+++ b/core/res/res/values-mk-rMK/strings.xml
@@ -1023,8 +1023,7 @@
<string name="android_upgrading_title" msgid="1584192285441405746">"Android се ажурира…"</string>
<string name="android_start_title" msgid="8418054686415318207">"Android стартува…"</string>
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Оптимизирање на складирањето."</string>
- <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
- <skip />
+ <string name="android_upgrading_notification_title" msgid="8428357096969413169">"Се завршува ажурирањето на Android…"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Некои апликации може да не работат правилно додека не се заврши надградбата"</string>
<string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> се надградува…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"Се оптимизира апликација <xliff:g id="NUMBER_0">%1$d</xliff:g> од <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
diff --git a/core/res/res/values-ml-rIN/strings.xml b/core/res/res/values-ml-rIN/strings.xml
index 02668a0..39d493a 100644
--- a/core/res/res/values-ml-rIN/strings.xml
+++ b/core/res/res/values-ml-rIN/strings.xml
@@ -1023,8 +1023,7 @@
<string name="android_upgrading_title" msgid="1584192285441405746">"Android അപ്ഗ്രേഡുചെയ്യുന്നു…"</string>
<string name="android_start_title" msgid="8418054686415318207">"Android ആരംഭിക്കുന്നു…"</string>
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"സ്റ്റോറേജ് ഒപ്റ്റിമൈസ് ചെയ്യുന്നു."</string>
- <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
- <skip />
+ <string name="android_upgrading_notification_title" msgid="8428357096969413169">"Android അപ്ഡേറ്റ് പൂർത്തിയാക്കുന്നു…"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"അപ്ഗ്രേഡ് പൂർത്തിയാകുന്നത് വരെ ചില ആപ്സ് ശരിയായി പ്രവർത്തിച്ചേക്കില്ല"</string>
<string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> അപ്ഗ്രേഡ് ചെയ്യുന്നു…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_0">%1$d</xliff:g> / <xliff:g id="NUMBER_1">%2$d</xliff:g> അപ്ലിക്കേഷൻ ഓപ്റ്റിമൈസ് ചെയ്യുന്നു."</string>
diff --git a/core/res/res/values-mn-rMN/strings.xml b/core/res/res/values-mn-rMN/strings.xml
index 8f70a2551..5f384a1 100644
--- a/core/res/res/values-mn-rMN/strings.xml
+++ b/core/res/res/values-mn-rMN/strings.xml
@@ -1023,8 +1023,7 @@
<string name="android_upgrading_title" msgid="1584192285441405746">"Андройдыг дэвшүүлж байна…"</string>
<string name="android_start_title" msgid="8418054686415318207">"Андройд эхэлж байна..."</string>
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Хадгалалтыг сайжруулж байна."</string>
- <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
- <skip />
+ <string name="android_upgrading_notification_title" msgid="8428357096969413169">"Андройдын шинэчлэлтийг дуусгаж байна…"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Шинэчилж дуустал зарим апп хэвийн бус ажиллаж болзошгүй"</string>
<string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g>-г сайжруулж байна…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_1">%2$d</xliff:g>-н <xliff:g id="NUMBER_0">%1$d</xliff:g> апп-г тохируулж байна."</string>
diff --git a/core/res/res/values-mr-rIN/strings.xml b/core/res/res/values-mr-rIN/strings.xml
index 95407f9..36d6f6a 100644
--- a/core/res/res/values-mr-rIN/strings.xml
+++ b/core/res/res/values-mr-rIN/strings.xml
@@ -1023,8 +1023,7 @@
<string name="android_upgrading_title" msgid="1584192285441405746">"Android श्रेणीसुधारित होत आहे..."</string>
<string name="android_start_title" msgid="8418054686415318207">"Android प्रारंभ करत आहे…"</string>
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"संचयन ऑप्टिमाइझ करत आहे."</string>
- <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
- <skip />
+ <string name="android_upgrading_notification_title" msgid="8428357096969413169">"Android अद्यतन समाप्त करीत आहे..."</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"श्रेणीसुधारणा पूर्ण होईपर्यंत काही अॅप्स योग्यरित्या कार्य करणार नाहीत"</string>
<string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> श्रेणीसुधारित करीत आहे…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_1">%2$d</xliff:g> पैकी <xliff:g id="NUMBER_0">%1$d</xliff:g> अॅप ऑप्टिमाइझ करत आहे."</string>
diff --git a/core/res/res/values-ms-rMY/strings.xml b/core/res/res/values-ms-rMY/strings.xml
index dee4268..7db5c74 100644
--- a/core/res/res/values-ms-rMY/strings.xml
+++ b/core/res/res/values-ms-rMY/strings.xml
@@ -1023,8 +1023,7 @@
<string name="android_upgrading_title" msgid="1584192285441405746">"Android sedang menaik taraf..."</string>
<string name="android_start_title" msgid="8418054686415318207">"Android sedang dimulakan…"</string>
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Mengoptimumkan storan."</string>
- <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
- <skip />
+ <string name="android_upgrading_notification_title" msgid="8428357096969413169">"Menyelesaikan kemas kini Android…"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Sesetengah apl mungkin tidak berfungsi dengan betul sehingga peningkatan selesai"</string>
<string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> sedang ditingkatkan…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"Mengoptimumkan apl <xliff:g id="NUMBER_0">%1$d</xliff:g> daripada <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
diff --git a/core/res/res/values-my-rMM/strings.xml b/core/res/res/values-my-rMM/strings.xml
index 1d9941e..077b889 100644
--- a/core/res/res/values-my-rMM/strings.xml
+++ b/core/res/res/values-my-rMM/strings.xml
@@ -1023,7 +1023,7 @@
<string name="android_upgrading_title" msgid="1584192285441405746">"အန်ဒရွိုက်ကို မွမ်းမံနေ…"</string>
<string name="android_start_title" msgid="8418054686415318207">"Android စတင်နေ…"</string>
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"သိုလှောင်မှုအား ပြုပြင်ခြင်း။"</string>
- <string name="android_upgrading_notification_title" msgid="8428357096969413169">"Android မွမ်းမံခြင်းကို အပြီးသတ်နေသည်…"</string>
+ <string name="android_upgrading_notification_title" msgid="8428357096969413169">"Android အပ်ဒိတ်ကို အပြီးသတ်နေသည်…"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"အဆင့်မြှင့်တင်ခြင်း မပြီးဆုံးသေးသ၍ အချို့အက်ပ်များကို ကောင်းမွန်စွာအသုံးပြုနိုင်ဦးမည် မဟုတ်ပါ"</string>
<string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> ကို အဆင့်မြှင့်တင်နေပါသည်…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_0">%1$d</xliff:g> ထဲက အက်ပ်<xliff:g id="NUMBER_1">%2$d</xliff:g>ကို ဆီလျော်အောင် လုပ်နေ"</string>
diff --git a/core/res/res/values-nb/strings.xml b/core/res/res/values-nb/strings.xml
index 82584d7..c9b275c 100644
--- a/core/res/res/values-nb/strings.xml
+++ b/core/res/res/values-nb/strings.xml
@@ -1023,8 +1023,7 @@
<string name="android_upgrading_title" msgid="1584192285441405746">"Android oppgraderes …"</string>
<string name="android_start_title" msgid="8418054686415318207">"Android starter …"</string>
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Optimaliser lagring."</string>
- <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
- <skip />
+ <string name="android_upgrading_notification_title" msgid="8428357096969413169">"Fullfører Android-oppdatering …"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Noen apper fungerer kanskje ikke skikkelig før oppgraderingen er fullført"</string>
<string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> oppgraderes …"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"Optimaliserer app <xliff:g id="NUMBER_0">%1$d</xliff:g> av <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
diff --git a/core/res/res/values-ne-rNP/strings.xml b/core/res/res/values-ne-rNP/strings.xml
index c130c50..a0dcfeb 100644
--- a/core/res/res/values-ne-rNP/strings.xml
+++ b/core/res/res/values-ne-rNP/strings.xml
@@ -1029,8 +1029,7 @@
<string name="android_upgrading_title" msgid="1584192285441405746">"एन्ड्रोइड अपग्रेड हुँदैछ…"</string>
<string name="android_start_title" msgid="8418054686415318207">"Android शुरू हुँदैछ..."</string>
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"भण्डारण अनुकूलन गर्दै।"</string>
- <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
- <skip />
+ <string name="android_upgrading_notification_title" msgid="8428357096969413169">"Android को अद्यावधिकलाई सम्पन्न गर्दै…"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"स्तरवृद्धि सम्पन्न नभएसम्म केही अनुप्रयोगहरू राम्ररी काम नगर्न सक्छन्"</string>
<string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> को स्तरवृद्धि हुँदैछ…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"अनुप्रयोग अनुकुल हुँदै <xliff:g id="NUMBER_0">%1$d</xliff:g> को <xliff:g id="NUMBER_1">%2$d</xliff:g>।"</string>
diff --git a/core/res/res/values-nl/strings.xml b/core/res/res/values-nl/strings.xml
index 35c58fe..d7f10d3 100644
--- a/core/res/res/values-nl/strings.xml
+++ b/core/res/res/values-nl/strings.xml
@@ -1023,8 +1023,7 @@
<string name="android_upgrading_title" msgid="1584192285441405746">"Android wordt bijgewerkt..."</string>
<string name="android_start_title" msgid="8418054686415318207">"Android wordt gestart…"</string>
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Opslagruimte wordt geoptimaliseerd."</string>
- <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
- <skip />
+ <string name="android_upgrading_notification_title" msgid="8428357096969413169">"Android-update voltooien…"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Sommige apps werken mogelijk pas correct nadat de upgrade is voltooid"</string>
<string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> upgraden…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"App <xliff:g id="NUMBER_0">%1$d</xliff:g> van <xliff:g id="NUMBER_1">%2$d</xliff:g> optimaliseren."</string>
diff --git a/core/res/res/values-pa-rIN/strings.xml b/core/res/res/values-pa-rIN/strings.xml
index 0a05af3..e717e69 100644
--- a/core/res/res/values-pa-rIN/strings.xml
+++ b/core/res/res/values-pa-rIN/strings.xml
@@ -1023,8 +1023,7 @@
<string name="android_upgrading_title" msgid="1584192285441405746">"Android ਅਪਗ੍ਰੇਡ ਕਰ ਰਿਹਾ ਹੈ…"</string>
<string name="android_start_title" msgid="8418054686415318207">"Android ਚਾਲੂ ਕਰ ਰਿਹਾ ਹੈ…"</string>
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"ਸਟੋਰੇਜ ਅਨੁਕੂਲ ਕਰ ਰਿਹਾ ਹੈ।"</string>
- <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
- <skip />
+ <string name="android_upgrading_notification_title" msgid="8428357096969413169">"Android ਅੱਪਡੇਟ ਮੁਕੰਮਲ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ…"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"ਹੋ ਸਕਦਾ ਹੈ ਕਿ ਕੁਝ ਐਪਾਂ ਅੱਪਗ੍ਰੇਡ ਦੇ ਪੂਰੀ ਹੋਣ ਤੱਕ ਸਹੀ ਢੰਗ ਨਾਲ ਕੰਮ ਨਾ ਕਰਨ"</string>
<string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> ਅੱਪਗ੍ਰੇਡ ਹੋ ਰਹੀ ਹੈ…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_0">%1$d</xliff:g> <xliff:g id="NUMBER_1">%2$d</xliff:g> ਦਾ ਐਪ ਅਨੁਕੂਲ ਕਰ ਰਿਹਾ ਹੈ।"</string>
diff --git a/core/res/res/values-pl/strings.xml b/core/res/res/values-pl/strings.xml
index cb968e6..d9e63a6 100644
--- a/core/res/res/values-pl/strings.xml
+++ b/core/res/res/values-pl/strings.xml
@@ -1069,8 +1069,7 @@
<string name="android_upgrading_title" msgid="1584192285441405746">"Android jest uaktualniany..."</string>
<string name="android_start_title" msgid="8418054686415318207">"Android się uruchamia…"</string>
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Optymalizacja pamięci."</string>
- <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
- <skip />
+ <string name="android_upgrading_notification_title" msgid="8428357096969413169">"Kończę aktualizowanie Androida…"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Niektóre aplikacje mogą nie działać prawidłowo, dopóki nie zakończy się aktualizacja."</string>
<string name="app_upgrading_toast" msgid="3008139776215597053">"Uaktualniam aplikację <xliff:g id="APPLICATION">%1$s</xliff:g>…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"Optymalizowanie aplikacji <xliff:g id="NUMBER_0">%1$d</xliff:g> z <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
diff --git a/core/res/res/values-pt-rBR/strings.xml b/core/res/res/values-pt-rBR/strings.xml
index 9feac65..eaaad25c 100644
--- a/core/res/res/values-pt-rBR/strings.xml
+++ b/core/res/res/values-pt-rBR/strings.xml
@@ -1023,8 +1023,7 @@
<string name="android_upgrading_title" msgid="1584192285441405746">"O Android está sendo atualizado..."</string>
<string name="android_start_title" msgid="8418054686415318207">"O Android está iniciando..."</string>
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Otimizando o armazenamento."</string>
- <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
- <skip />
+ <string name="android_upgrading_notification_title" msgid="8428357096969413169">"Concluindo atualização do Android…"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Alguns apps podem não funcionar corretamente até que a atualização seja concluída"</string>
<string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> está fazendo upgrade…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"Otimizando app <xliff:g id="NUMBER_0">%1$d</xliff:g> de <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
diff --git a/core/res/res/values-pt-rPT/strings.xml b/core/res/res/values-pt-rPT/strings.xml
index 5435a57..ae115d8 100644
--- a/core/res/res/values-pt-rPT/strings.xml
+++ b/core/res/res/values-pt-rPT/strings.xml
@@ -1023,8 +1023,7 @@
<string name="android_upgrading_title" msgid="1584192285441405746">"O Android está a ser atualizado..."</string>
<string name="android_start_title" msgid="8418054686415318207">"O Android está a iniciar…"</string>
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"A otimizar o armazenamento."</string>
- <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
- <skip />
+ <string name="android_upgrading_notification_title" msgid="8428357096969413169">"A terminar a atualização do Android…"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Algumas aplicações podem não funcionar corretamente enquanto a atualização não for concluída"</string>
<string name="app_upgrading_toast" msgid="3008139776215597053">"O <xliff:g id="APPLICATION">%1$s</xliff:g> está a ser atualizado…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"A otimizar a aplicação <xliff:g id="NUMBER_0">%1$d</xliff:g> de <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
diff --git a/core/res/res/values-pt/strings.xml b/core/res/res/values-pt/strings.xml
index 9feac65..eaaad25c 100644
--- a/core/res/res/values-pt/strings.xml
+++ b/core/res/res/values-pt/strings.xml
@@ -1023,8 +1023,7 @@
<string name="android_upgrading_title" msgid="1584192285441405746">"O Android está sendo atualizado..."</string>
<string name="android_start_title" msgid="8418054686415318207">"O Android está iniciando..."</string>
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Otimizando o armazenamento."</string>
- <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
- <skip />
+ <string name="android_upgrading_notification_title" msgid="8428357096969413169">"Concluindo atualização do Android…"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Alguns apps podem não funcionar corretamente até que a atualização seja concluída"</string>
<string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> está fazendo upgrade…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"Otimizando app <xliff:g id="NUMBER_0">%1$d</xliff:g> de <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
diff --git a/core/res/res/values-ro/strings.xml b/core/res/res/values-ro/strings.xml
index 4743ac1..6198f12 100644
--- a/core/res/res/values-ro/strings.xml
+++ b/core/res/res/values-ro/strings.xml
@@ -1046,8 +1046,7 @@
<string name="android_upgrading_title" msgid="1584192285441405746">"Android trece la o versiune superioară..."</string>
<string name="android_start_title" msgid="8418054686415318207">"Android pornește..."</string>
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Se optimizează stocarea."</string>
- <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
- <skip />
+ <string name="android_upgrading_notification_title" msgid="8428357096969413169">"Se finalizează actualizarea Android…"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Este posibil ca unele aplicații să nu funcționeze corespunzător până când nu se finalizează upgrade-ul"</string>
<string name="app_upgrading_toast" msgid="3008139776215597053">"Se face upgrade pentru <xliff:g id="APPLICATION">%1$s</xliff:g>…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"Se optimizează aplicația <xliff:g id="NUMBER_0">%1$d</xliff:g> din <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
diff --git a/core/res/res/values-ru/strings.xml b/core/res/res/values-ru/strings.xml
index d5bd7bf..0ef96af 100644
--- a/core/res/res/values-ru/strings.xml
+++ b/core/res/res/values-ru/strings.xml
@@ -1069,8 +1069,7 @@
<string name="android_upgrading_title" msgid="1584192285441405746">"Обновление Android..."</string>
<string name="android_start_title" msgid="8418054686415318207">"Запуск Android…"</string>
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Оптимизация хранилища…"</string>
- <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
- <skip />
+ <string name="android_upgrading_notification_title" msgid="8428357096969413169">"Завершается обновление Android"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Во время обновления возможны неполадки в работе приложений."</string>
<string name="app_upgrading_toast" msgid="3008139776215597053">"Обновление приложения \"<xliff:g id="APPLICATION">%1$s</xliff:g>\"…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"Оптимизация приложения <xliff:g id="NUMBER_0">%1$d</xliff:g> из <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
diff --git a/core/res/res/values-si-rLK/strings.xml b/core/res/res/values-si-rLK/strings.xml
index bfce9ee..4f90b57 100644
--- a/core/res/res/values-si-rLK/strings.xml
+++ b/core/res/res/values-si-rLK/strings.xml
@@ -1025,8 +1025,7 @@
<string name="android_upgrading_title" msgid="1584192285441405746">"Android උත්ශ්රේණි වෙමින් පවතී..."</string>
<string name="android_start_title" msgid="8418054686415318207">"Android ආරම්භ කරමින්…"</string>
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"ආචයනය ප්රශස්තිකරණය කිරීම."</string>
- <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
- <skip />
+ <string name="android_upgrading_notification_title" msgid="8428357096969413169">"Android යාවත්කාලීනය අවසන් කරමින්…"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"උත්ශ්රේණි කිරීම අවසන් වන තෙක් සමහර යෙදුම් නිසි ලෙස ක්රියා නොකළ හැකිය"</string>
<string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> උත්ශ්රේණි කරමින්…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_1">%2$d</xliff:g> කින් <xliff:g id="NUMBER_0">%1$d</xliff:g> වැනි යෙදුම ප්රශස්ත කරමින්."</string>
diff --git a/core/res/res/values-sk/strings.xml b/core/res/res/values-sk/strings.xml
index 9065aea..0a48693 100644
--- a/core/res/res/values-sk/strings.xml
+++ b/core/res/res/values-sk/strings.xml
@@ -1069,8 +1069,7 @@
<string name="android_upgrading_title" msgid="1584192285441405746">"Prebieha inovácia systému Android..."</string>
<string name="android_start_title" msgid="8418054686415318207">"Systém Android sa spúšťa…"</string>
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Optimalizuje sa úložisko"</string>
- <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
- <skip />
+ <string name="android_upgrading_notification_title" msgid="8428357096969413169">"Dokončuje sa aktualizácia Androidu…"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Niektoré aplikácie môžu správne fungovať až po dokončení inovácie"</string>
<string name="app_upgrading_toast" msgid="3008139776215597053">"Aplikácia <xliff:g id="APPLICATION">%1$s</xliff:g> sa inovuje…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"Prebieha optimalizácia aplikácie <xliff:g id="NUMBER_0">%1$d</xliff:g> z <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
diff --git a/core/res/res/values-sl/strings.xml b/core/res/res/values-sl/strings.xml
index a5a2c8b..7b8a03a 100644
--- a/core/res/res/values-sl/strings.xml
+++ b/core/res/res/values-sl/strings.xml
@@ -1069,8 +1069,7 @@
<string name="android_upgrading_title" msgid="1584192285441405746">"Poteka nadgradnja Androida ..."</string>
<string name="android_start_title" msgid="8418054686415318207">"Android se zaganja …"</string>
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Optimiziranje shrambe."</string>
- <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
- <skip />
+ <string name="android_upgrading_notification_title" msgid="8428357096969413169">"Dokončanje posodobitve Androida …"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Nekatere aplikacije morda ne bodo delovale pravilno, dokler ne bo dokončana nadgradnja."</string>
<string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> se nadgrajuje …"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"Optimiranje aplikacije <xliff:g id="NUMBER_0">%1$d</xliff:g> od <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
diff --git a/core/res/res/values-sq-rAL/strings.xml b/core/res/res/values-sq-rAL/strings.xml
index 61c38ff..05f0e59 100644
--- a/core/res/res/values-sq-rAL/strings.xml
+++ b/core/res/res/values-sq-rAL/strings.xml
@@ -1023,8 +1023,7 @@
<string name="android_upgrading_title" msgid="1584192285441405746">"\"Androidi\" po përditësohet…"</string>
<string name="android_start_title" msgid="8418054686415318207">"\"Androidi\" po fillon…"</string>
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Po përshtat ruajtjen."</string>
- <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
- <skip />
+ <string name="android_upgrading_notification_title" msgid="8428357096969413169">"Përditësimi i Android po përfundon…"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Disa aplikacione mund të mos funksionojnë si duhet deri sa të përfundojë përmirësimi"</string>
<string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> po përmirësohet…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"Po përshtat aplikacionin <xliff:g id="NUMBER_0">%1$d</xliff:g> nga gjithsej <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
diff --git a/core/res/res/values-sr/strings.xml b/core/res/res/values-sr/strings.xml
index 881b1c7..517d777 100644
--- a/core/res/res/values-sr/strings.xml
+++ b/core/res/res/values-sr/strings.xml
@@ -1046,8 +1046,7 @@
<string name="android_upgrading_title" msgid="1584192285441405746">"Android се надограђује…"</string>
<string name="android_start_title" msgid="8418054686415318207">"Android се покреће…"</string>
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Меморија се оптимизује."</string>
- <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
- <skip />
+ <string name="android_upgrading_notification_title" msgid="8428357096969413169">"Довршавамо ажурирање Android-а…"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Неке апликације можда неће исправно функционисати док се надоградња не доврши"</string>
<string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> се надограђује…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"Оптимизовање апликације <xliff:g id="NUMBER_0">%1$d</xliff:g> од <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
diff --git a/core/res/res/values-sv/strings.xml b/core/res/res/values-sv/strings.xml
index 228e0b9..cf1b19c 100644
--- a/core/res/res/values-sv/strings.xml
+++ b/core/res/res/values-sv/strings.xml
@@ -1023,8 +1023,7 @@
<string name="android_upgrading_title" msgid="1584192285441405746">"Android uppgraderas ..."</string>
<string name="android_start_title" msgid="8418054686415318207">"Android startar …"</string>
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Lagringsutrymmet optimeras."</string>
- <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
- <skip />
+ <string name="android_upgrading_notification_title" msgid="8428357096969413169">"Android-uppdateringen slutförs …"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"En del appar kanske inte fungerar som de ska innan uppgraderingen har slutförts"</string>
<string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> uppgraderas …"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"Optimerar app <xliff:g id="NUMBER_0">%1$d</xliff:g> av <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
diff --git a/core/res/res/values-sw/strings.xml b/core/res/res/values-sw/strings.xml
index b9c995f..3daaf93 100644
--- a/core/res/res/values-sw/strings.xml
+++ b/core/res/res/values-sw/strings.xml
@@ -1021,8 +1021,7 @@
<string name="android_upgrading_title" msgid="1584192285441405746">"Toleo jipya la Android linawekwa..."</string>
<string name="android_start_title" msgid="8418054686415318207">"Inaanzisha Android..."</string>
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Inaboresha hifadhi."</string>
- <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
- <skip />
+ <string name="android_upgrading_notification_title" msgid="8428357096969413169">"Inakamilisha kusasisha Android..."</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Huenda baadhi ya programu zisifanye kazi vizuri hadi itakapomaliza kusasisha"</string>
<string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> inapata toleo jipya…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"Inaboresha programu <xliff:g id="NUMBER_0">%1$d</xliff:g> kutoka <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
diff --git a/core/res/res/values-ta-rIN/strings.xml b/core/res/res/values-ta-rIN/strings.xml
index 99488ee..e851399 100644
--- a/core/res/res/values-ta-rIN/strings.xml
+++ b/core/res/res/values-ta-rIN/strings.xml
@@ -1023,8 +1023,7 @@
<string name="android_upgrading_title" msgid="1584192285441405746">"Android மேம்படுத்தப்படுகிறது…"</string>
<string name="android_start_title" msgid="8418054686415318207">"Android துவங்குகிறது..."</string>
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"சேமிப்பகத்தை உகந்ததாக்குகிறது."</string>
- <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
- <skip />
+ <string name="android_upgrading_notification_title" msgid="8428357096969413169">"Android புதுப்பிப்பை நிறைவுசெய்கிறது…"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"மேம்படுத்துவது முடியும் வரை, சில பயன்பாடுகள் சரியாக வேலைசெய்யாமல் போகக்கூடும்"</string>
<string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g>ஐ மேம்படுத்துகிறது…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_0">%1$d</xliff:g> / <xliff:g id="NUMBER_1">%2$d</xliff:g> பயன்பாட்டை ஒருங்கிணைக்கிறது."</string>
diff --git a/core/res/res/values-te-rIN/strings.xml b/core/res/res/values-te-rIN/strings.xml
index 51f9175..7c48c8c 100644
--- a/core/res/res/values-te-rIN/strings.xml
+++ b/core/res/res/values-te-rIN/strings.xml
@@ -1023,8 +1023,7 @@
<string name="android_upgrading_title" msgid="1584192285441405746">"Android అప్గ్రేడ్ అవుతోంది…"</string>
<string name="android_start_title" msgid="8418054686415318207">"Android ప్రారంభమవుతోంది…"</string>
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"నిల్వను అనుకూలపరుస్తోంది."</string>
- <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
- <skip />
+ <string name="android_upgrading_notification_title" msgid="8428357096969413169">"Android నవీకరణను ముగిస్తోంది…"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"అప్గ్రేడ్ పూర్తయ్యే వరకు కొన్ని అనువర్తనాలు సరిగ్గా పని చేయకపోవచ్చు"</string>
<string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g>ని అప్గ్రేడ్ చేస్తోంది…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_1">%2$d</xliff:g>లో <xliff:g id="NUMBER_0">%1$d</xliff:g> అనువర్తనాన్ని అనుకూలీకరిస్తోంది."</string>
diff --git a/core/res/res/values-th/strings.xml b/core/res/res/values-th/strings.xml
index d2b7a1b..90d9f9b 100644
--- a/core/res/res/values-th/strings.xml
+++ b/core/res/res/values-th/strings.xml
@@ -1023,8 +1023,7 @@
<string name="android_upgrading_title" msgid="1584192285441405746">"กำลังอัปเกรด Android ..."</string>
<string name="android_start_title" msgid="8418054686415318207">"Android กำลังเริ่มต้น…"</string>
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"กำลังเพิ่มประสิทธิภาพพื้นที่จัดเก็บข้อมูล"</string>
- <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
- <skip />
+ <string name="android_upgrading_notification_title" msgid="8428357096969413169">"กำลังทำการอัปเดต Android ให้เสร็จสิ้น…"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"แอปบางแอปอาจทำงานไม่ถูกต้องจนกว่าจะอัปเกรดเสร็จ"</string>
<string name="app_upgrading_toast" msgid="3008139776215597053">"กำลังอัปเกรด <xliff:g id="APPLICATION">%1$s</xliff:g>…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"กำลังเพิ่มประสิทธิภาพแอปพลิเคชัน <xliff:g id="NUMBER_0">%1$d</xliff:g> จาก <xliff:g id="NUMBER_1">%2$d</xliff:g> รายการ"</string>
diff --git a/core/res/res/values-tl/strings.xml b/core/res/res/values-tl/strings.xml
index 7dedd2a..efb319f 100644
--- a/core/res/res/values-tl/strings.xml
+++ b/core/res/res/values-tl/strings.xml
@@ -1023,8 +1023,7 @@
<string name="android_upgrading_title" msgid="1584192285441405746">"Nag-a-upgrade ang Android…"</string>
<string name="android_start_title" msgid="8418054686415318207">"Nagsisimula ang Android…"</string>
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Ino-optimize ang storage."</string>
- <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
- <skip />
+ <string name="android_upgrading_notification_title" msgid="8428357096969413169">"Tinatapos ang pag-update sa Android…"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Maaaring hindi gumana nang maayos ang ilang app hangga\'t hindi pa natatapos ang pag-upgrade"</string>
<string name="app_upgrading_toast" msgid="3008139776215597053">"Nag-a-upgrade ang <xliff:g id="APPLICATION">%1$s</xliff:g>…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"Ino-optimize ang app <xliff:g id="NUMBER_0">%1$d</xliff:g> ng <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
diff --git a/core/res/res/values-tr/strings.xml b/core/res/res/values-tr/strings.xml
index 7ae29cd..5a0776a 100644
--- a/core/res/res/values-tr/strings.xml
+++ b/core/res/res/values-tr/strings.xml
@@ -1023,8 +1023,7 @@
<string name="android_upgrading_title" msgid="1584192285441405746">"Android yeni sürüme geçiriliyor..."</string>
<string name="android_start_title" msgid="8418054686415318207">"Android başlatılıyor…"</string>
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Depolama optimize ediliyor."</string>
- <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
- <skip />
+ <string name="android_upgrading_notification_title" msgid="8428357096969413169">"Android güncellemesi tamamlanıyor…"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Yeni sürüme geçiş işlemi tamamlanana kadar bazı uygulamalar düzgün çalışmayabilir"</string>
<string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> yeni sürüme geçiriliyor…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_0">%1$d</xliff:g>/<xliff:g id="NUMBER_1">%2$d</xliff:g> uygulama optimize ediliyor."</string>
diff --git a/core/res/res/values-uk/strings.xml b/core/res/res/values-uk/strings.xml
index fdf337e..4810e37 100644
--- a/core/res/res/values-uk/strings.xml
+++ b/core/res/res/values-uk/strings.xml
@@ -1069,8 +1069,7 @@
<string name="android_upgrading_title" msgid="1584192285441405746">"Android оновлюється..."</string>
<string name="android_start_title" msgid="8418054686415318207">"Запуск ОС Android…"</string>
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Оптимізація пам’яті."</string>
- <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
- <skip />
+ <string name="android_upgrading_notification_title" msgid="8428357096969413169">"Завершується оновлення Android…"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Деякі додатки можуть не працювати належним чином, доки не завершиться оновлення"</string>
<string name="app_upgrading_toast" msgid="3008139776215597053">"Додаток <xliff:g id="APPLICATION">%1$s</xliff:g> оновлюється…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"Оптимізація програми <xliff:g id="NUMBER_0">%1$d</xliff:g> з <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
diff --git a/core/res/res/values-ur-rPK/strings.xml b/core/res/res/values-ur-rPK/strings.xml
index 3b3fc35..f677132 100644
--- a/core/res/res/values-ur-rPK/strings.xml
+++ b/core/res/res/values-ur-rPK/strings.xml
@@ -1023,8 +1023,7 @@
<string name="android_upgrading_title" msgid="1584192285441405746">"Android اپ گریڈ ہو رہا ہے…"</string>
<string name="android_start_title" msgid="8418054686415318207">"Android شروع ہو رہا ہے…"</string>
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"اسٹوریج کو بہترین بنایا جا رہا ہے۔"</string>
- <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
- <skip />
+ <string name="android_upgrading_notification_title" msgid="8428357096969413169">"Android اپ ڈیٹ ختم ہو رہی ہے…"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"اپ گریڈ ختم ہونے تک شاید کچھ ایپس ٹھیک طرح سے کام نہ کریں"</string>
<string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> اپ گریڈ ہو رہی ہے…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"ایپ <xliff:g id="NUMBER_0">%1$d</xliff:g> از <xliff:g id="NUMBER_1">%2$d</xliff:g> کو بہتر بنایا جا رہا ہے۔"</string>
diff --git a/core/res/res/values-uz-rUZ/strings.xml b/core/res/res/values-uz-rUZ/strings.xml
index 0225d15..8fc6428 100644
--- a/core/res/res/values-uz-rUZ/strings.xml
+++ b/core/res/res/values-uz-rUZ/strings.xml
@@ -1023,8 +1023,7 @@
<string name="android_upgrading_title" msgid="1584192285441405746">"Android yangilanmoqda…"</string>
<string name="android_start_title" msgid="8418054686415318207">"Android ishga tushmoqda…"</string>
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Xotira optimallashtirilmoqda."</string>
- <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
- <skip />
+ <string name="android_upgrading_notification_title" msgid="8428357096969413169">"Android yangilanishi tugay deb qoldi…"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Yangilanish vaqtida ba’zi ilovalar to‘g‘ri ishlamasligi mumkin"</string>
<string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> ilovasi yangilanmoqda…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"Ilovalar optimallashtirilmoqda (<xliff:g id="NUMBER_0">%1$d</xliff:g> / <xliff:g id="NUMBER_1">%2$d</xliff:g>)."</string>
diff --git a/core/res/res/values-vi/strings.xml b/core/res/res/values-vi/strings.xml
index 9dcf6bf..a537b8f 100644
--- a/core/res/res/values-vi/strings.xml
+++ b/core/res/res/values-vi/strings.xml
@@ -1023,8 +1023,7 @@
<string name="android_upgrading_title" msgid="1584192285441405746">"Android đang nâng cấp..."</string>
<string name="android_start_title" msgid="8418054686415318207">"Android đang khởi động..."</string>
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Tối ưu hóa lưu trữ."</string>
- <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
- <skip />
+ <string name="android_upgrading_notification_title" msgid="8428357096969413169">"Hoàn tất cập nhật Android…"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Một số ứng dụng có thể không hoạt động bình thường cho đến khi nâng cấp xong"</string>
<string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> đang nâng cấp…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"Đang tối ưu hóa ứng dụng <xliff:g id="NUMBER_0">%1$d</xliff:g> trong tổng số <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
diff --git a/core/res/res/values-zh-rCN/strings.xml b/core/res/res/values-zh-rCN/strings.xml
index 0ffc381..8116ec0 100644
--- a/core/res/res/values-zh-rCN/strings.xml
+++ b/core/res/res/values-zh-rCN/strings.xml
@@ -1023,8 +1023,7 @@
<string name="android_upgrading_title" msgid="1584192285441405746">"Android正在升级..."</string>
<string name="android_start_title" msgid="8418054686415318207">"Android 正在启动…"</string>
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"正在优化存储空间。"</string>
- <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
- <skip />
+ <string name="android_upgrading_notification_title" msgid="8428357096969413169">"即将完成 Android 更新…"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"在升级完成之前,部分应用可能无法正常运行"</string>
<string name="app_upgrading_toast" msgid="3008139776215597053">"正在升级<xliff:g id="APPLICATION">%1$s</xliff:g>…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"正在优化第<xliff:g id="NUMBER_0">%1$d</xliff:g>个应用(共<xliff:g id="NUMBER_1">%2$d</xliff:g>个)。"</string>
diff --git a/core/res/res/values-zh-rHK/strings.xml b/core/res/res/values-zh-rHK/strings.xml
index a453eba..ef12eea 100644
--- a/core/res/res/values-zh-rHK/strings.xml
+++ b/core/res/res/values-zh-rHK/strings.xml
@@ -1023,8 +1023,7 @@
<string name="android_upgrading_title" msgid="1584192285441405746">"正在升級 Android..."</string>
<string name="android_start_title" msgid="8418054686415318207">"Android 正在啟動…"</string>
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"正在優化儲存空間。"</string>
- <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
- <skip />
+ <string name="android_upgrading_notification_title" msgid="8428357096969413169">"正在完成 Android 更新…"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"部分應用程式需要完成升級方可正常運作"</string>
<string name="app_upgrading_toast" msgid="3008139776215597053">"「<xliff:g id="APPLICATION">%1$s</xliff:g>」正在升級…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"正在優化第 <xliff:g id="NUMBER_0">%1$d</xliff:g> 個應用程式 (共 <xliff:g id="NUMBER_1">%2$d</xliff:g> 個)。"</string>
diff --git a/core/res/res/values-zh-rTW/strings.xml b/core/res/res/values-zh-rTW/strings.xml
index 4dd8d8f..84e2c2c 100644
--- a/core/res/res/values-zh-rTW/strings.xml
+++ b/core/res/res/values-zh-rTW/strings.xml
@@ -1023,8 +1023,7 @@
<string name="android_upgrading_title" msgid="1584192285441405746">"正在升級 Android…"</string>
<string name="android_start_title" msgid="8418054686415318207">"Android 正在啟動…"</string>
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"正在對儲存空間進行最佳化處理。"</string>
- <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
- <skip />
+ <string name="android_upgrading_notification_title" msgid="8428357096969413169">"即將完成 Android 更新…"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"升級完成前,部分應用程式可能無法正常運作"</string>
<string name="app_upgrading_toast" msgid="3008139776215597053">"正在升級「<xliff:g id="APPLICATION">%1$s</xliff:g>」…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"正在最佳化第 <xliff:g id="NUMBER_0">%1$d</xliff:g> 個應用程式 (共 <xliff:g id="NUMBER_1">%2$d</xliff:g> 個)。"</string>
diff --git a/core/res/res/values-zu/strings.xml b/core/res/res/values-zu/strings.xml
index c6e8988..0c7af8d 100644
--- a/core/res/res/values-zu/strings.xml
+++ b/core/res/res/values-zu/strings.xml
@@ -1023,8 +1023,7 @@
<string name="android_upgrading_title" msgid="1584192285441405746">"I-Android ifaka ezakamuva..."</string>
<string name="android_start_title" msgid="8418054686415318207">"I-Android iyaqala…"</string>
<string name="android_upgrading_fstrim" msgid="8036718871534640010">"Ikhulisa isitoreji."</string>
- <!-- no translation found for android_upgrading_notification_title (8428357096969413169) -->
- <skip />
+ <string name="android_upgrading_notification_title" msgid="8428357096969413169">"Iqedela isibuyekezo se-Android…"</string>
<string name="android_upgrading_notification_body" msgid="5761201379457064286">"Ezinye izinhlelo zokusebenza kungenzeka zingasebenzi kahle kuze kuqedwe ukuthuthukiswa"</string>
<string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> iyathuthukisa…"</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"Ukubeka ezingeni eliphezulu <xliff:g id="NUMBER_0">%1$d</xliff:g> uhlelo lokusebenza <xliff:g id="NUMBER_1">%2$d</xliff:g>"</string>
diff --git a/graphics/java/android/graphics/drawable/AnimatedVectorDrawable.java b/graphics/java/android/graphics/drawable/AnimatedVectorDrawable.java
index 0bdc76f..87c472e 100644
--- a/graphics/java/android/graphics/drawable/AnimatedVectorDrawable.java
+++ b/graphics/java/android/graphics/drawable/AnimatedVectorDrawable.java
@@ -1358,7 +1358,7 @@
mStartDelays.add(startDelay);
nAddAnimator(mSetPtr, propertyPtr, nativeInterpolator, startDelay, duration,
- repeatCount);
+ repeatCount, animator.getRepeatMode());
}
/**
@@ -1625,7 +1625,8 @@
private static native long nCreateAnimatorSet();
private static native void nSetVectorDrawableTarget(long animatorPtr, long vectorDrawablePtr);
private static native void nAddAnimator(long setPtr, long propertyValuesHolder,
- long nativeInterpolator, long startDelay, long duration, int repeatCount);
+ long nativeInterpolator, long startDelay, long duration, int repeatCount,
+ int repeatMode);
private static native long nCreateGroupPropertyHolder(long nativePtr, int propertyId,
float startValue, float endValue);
diff --git a/libs/hwui/Animator.cpp b/libs/hwui/Animator.cpp
index dc18018..74aa303 100644
--- a/libs/hwui/Animator.cpp
+++ b/libs/hwui/Animator.cpp
@@ -123,22 +123,27 @@
mPlayTime = (mPlayState == PlayState::Running || mPlayState == PlayState::Reversing) ?
mPlayTime : 0;
mPlayState = PlayState::Running;
+ mPendingActionUponFinish = Action::None;
break;
case Request::Reverse:
mPlayTime = (mPlayState == PlayState::Running || mPlayState == PlayState::Reversing) ?
mPlayTime : mDuration;
mPlayState = PlayState::Reversing;
+ mPendingActionUponFinish = Action::None;
break;
case Request::Reset:
mPlayTime = 0;
mPlayState = PlayState::Finished;
+ mPendingActionUponFinish = Action::Reset;
break;
case Request::Cancel:
mPlayState = PlayState::Finished;
+ mPendingActionUponFinish = Action::None;
break;
case Request::End:
mPlayTime = mPlayState == PlayState::Reversing ? 0 : mDuration;
mPlayState = PlayState::Finished;
+ mPendingActionUponFinish = Action::End;
break;
default:
LOG_ALWAYS_FATAL("Invalid staging request: %d", static_cast<int>(request));
@@ -176,8 +181,6 @@
mStagingRequests.clear();
if (mStagingPlayState == PlayState::Finished) {
- // Set the staging play time and end the animation
- updatePlayTime(mPlayTime);
callOnFinishedListener(context);
} else if (mStagingPlayState == PlayState::Running
|| mStagingPlayState == PlayState::Reversing) {
@@ -236,6 +239,15 @@
return false;
}
if (mPlayState == PlayState::Finished) {
+ if (mPendingActionUponFinish == Action::Reset) {
+ // Skip to start.
+ updatePlayTime(0);
+ } else if (mPendingActionUponFinish == Action::End) {
+ // Skip to end.
+ updatePlayTime(mDuration);
+ }
+ // Reset pending action.
+ mPendingActionUponFinish = Action ::None;
return true;
}
diff --git a/libs/hwui/Animator.h b/libs/hwui/Animator.h
index 9476750..72bac6c 100644
--- a/libs/hwui/Animator.h
+++ b/libs/hwui/Animator.h
@@ -44,6 +44,12 @@
ANDROID_API virtual ~AnimationListener() {}
};
+enum class RepeatMode {
+ // These are the same values as the RESTART and REVERSE in ValueAnimator.java.
+ Restart = 1,
+ Reverse = 2
+};
+
class BaseRenderNodeAnimator : public VirtualLightRefBase {
PREVENT_COPY_AND_ASSIGN(BaseRenderNodeAnimator);
public:
@@ -159,6 +165,17 @@
Cancel,
End
};
+
+ // Defines different actions upon finish.
+ enum class Action {
+ // For animations that got canceled or finished normally. no more action needs to be done.
+ None,
+ // For animations that get reset, the reset will happen in the next animation pulse.
+ Reset,
+ // For animations being ended, in the next animation pulse the animation will skip to end.
+ End
+ };
+
inline void checkMutable();
virtual void transitionToRunning(AnimationContext& context);
void doSetStartValue(float value);
@@ -166,7 +183,7 @@
void resolveStagingRequest(Request request);
std::vector<Request> mStagingRequests;
-
+ Action mPendingActionUponFinish = Action::None;
};
class RenderPropertyAnimator : public BaseRenderNodeAnimator {
diff --git a/libs/hwui/AnimatorManager.cpp b/libs/hwui/AnimatorManager.cpp
index 8d5f1a8..f170e9c 100644
--- a/libs/hwui/AnimatorManager.cpp
+++ b/libs/hwui/AnimatorManager.cpp
@@ -83,11 +83,8 @@
}
mNewAnimators.clear();
}
- if (mAnimators.size()) {
- for (auto& animator : mAnimators) {
- animator->pushStaging(mAnimationHandle->context());
- }
- mParent.mProperties.updateMatrix();
+ for (auto& animator : mAnimators) {
+ animator->pushStaging(mAnimationHandle->context());
}
}
diff --git a/libs/hwui/PropertyValuesAnimatorSet.cpp b/libs/hwui/PropertyValuesAnimatorSet.cpp
index 796c73b..961132e 100644
--- a/libs/hwui/PropertyValuesAnimatorSet.cpp
+++ b/libs/hwui/PropertyValuesAnimatorSet.cpp
@@ -23,11 +23,11 @@
namespace uirenderer {
void PropertyValuesAnimatorSet::addPropertyAnimator(PropertyValuesHolder* propertyValuesHolder,
- Interpolator* interpolator, nsecs_t startDelay,
- nsecs_t duration, int repeatCount) {
+ Interpolator* interpolator, nsecs_t startDelay, nsecs_t duration, int repeatCount,
+ RepeatMode repeatMode) {
PropertyAnimator* animator = new PropertyAnimator(propertyValuesHolder,
- interpolator, startDelay, duration, repeatCount);
+ interpolator, startDelay, duration, repeatCount, repeatMode);
mAnimators.emplace_back(animator);
// Check whether any child animator is infinite after adding it them to the set.
@@ -66,14 +66,9 @@
// Note that this set may containing animators modifying the same property, so when we
// reset the animators, we need to make sure the animators that end the first will
// have the final say on what the property value should be.
- (*it)->setFraction(0);
+ (*it)->setFraction(0, 0);
}
- } else if (playTime >= mDuration) {
- // Skip all the animators to end
- for (auto& anim : mAnimators) {
- anim->setFraction(1);
- }
- } else {
+ } else {
for (auto& anim : mAnimators) {
anim->setCurrentPlayTime(playTime);
}
@@ -124,7 +119,8 @@
}
PropertyAnimator::PropertyAnimator(PropertyValuesHolder* holder, Interpolator* interpolator,
- nsecs_t startDelay, nsecs_t duration, int repeatCount)
+ nsecs_t startDelay, nsecs_t duration, int repeatCount,
+ RepeatMode repeatMode)
: mPropertyValuesHolder(holder), mInterpolator(interpolator), mStartDelay(startDelay),
mDuration(duration) {
if (repeatCount < 0) {
@@ -132,24 +128,44 @@
} else {
mRepeatCount = repeatCount;
}
+ mRepeatMode = repeatMode;
mTotalDuration = ((nsecs_t) mRepeatCount + 1) * mDuration + mStartDelay;
}
void PropertyAnimator::setCurrentPlayTime(nsecs_t playTime) {
- if (playTime >= mStartDelay && playTime < mTotalDuration) {
- nsecs_t currentIterationPlayTime = (playTime - mStartDelay) % mDuration;
- float fraction = currentIterationPlayTime / (float) mDuration;
- setFraction(fraction);
- } else if (mLatestFraction < 1.0f && playTime >= mTotalDuration) {
- // This makes sure we only set the fraction = 1 once. It is needed because there might
- // be another animator modifying the same property after this animator finishes, we need
- // to make sure we don't set conflicting values on the same property within one frame.
- setFraction(1.0f);
+ if (playTime < mStartDelay) {
+ return;
}
+
+ float currentIterationFraction;
+ long iteration;
+ if (playTime >= mTotalDuration) {
+ // Reached the end of the animation.
+ iteration = mRepeatCount;
+ currentIterationFraction = 1.0f;
+ } else {
+ // play time here is in range [mStartDelay, mTotalDuration)
+ iteration = (playTime - mStartDelay) / mDuration;
+ currentIterationFraction = ((playTime - mStartDelay) % mDuration) / (float) mDuration;
+ }
+ setFraction(currentIterationFraction, iteration);
}
-void PropertyAnimator::setFraction(float fraction) {
- mLatestFraction = fraction;
+void PropertyAnimator::setFraction(float fraction, long iteration) {
+ double totalFraction = fraction + iteration;
+ // This makes sure we only set the fraction = repeatCount + 1 once. It is needed because there
+ // might be another animator modifying the same property after this animator finishes, we need
+ // to make sure we don't set conflicting values on the same property within one frame.
+ if ((mLatestFraction == mRepeatCount + 1) && (totalFraction >= mRepeatCount + 1)) {
+ return;
+ }
+
+ mLatestFraction = totalFraction;
+ // Check the play direction (i.e. reverse or restart) every other iteration, and calculate the
+ // fraction based on the play direction.
+ if (iteration % 2 && mRepeatMode == RepeatMode::Reverse) {
+ fraction = 1.0f - fraction;
+ }
float interpolatedFraction = mInterpolator->interpolate(fraction);
mPropertyValuesHolder->setFraction(interpolatedFraction);
}
diff --git a/libs/hwui/PropertyValuesAnimatorSet.h b/libs/hwui/PropertyValuesAnimatorSet.h
index f9274e1..e208b08 100644
--- a/libs/hwui/PropertyValuesAnimatorSet.h
+++ b/libs/hwui/PropertyValuesAnimatorSet.h
@@ -26,12 +26,13 @@
class PropertyAnimator {
public:
PropertyAnimator(PropertyValuesHolder* holder, Interpolator* interpolator, nsecs_t startDelay,
- nsecs_t duration, int repeatCount);
+ nsecs_t duration, int repeatCount, RepeatMode repeatMode);
void setCurrentPlayTime(nsecs_t playTime);
nsecs_t getTotalDuration() {
return mTotalDuration;
}
- void setFraction(float fraction);
+ // fraction range: [0, 1], iteration range [0, repeatCount]
+ void setFraction(float fraction, long iteration);
private:
std::unique_ptr<PropertyValuesHolder> mPropertyValuesHolder;
@@ -40,7 +41,8 @@
nsecs_t mDuration;
uint32_t mRepeatCount;
nsecs_t mTotalDuration;
- float mLatestFraction = 0.0f;
+ RepeatMode mRepeatMode;
+ double mLatestFraction = 0;
};
// TODO: This class should really be named VectorDrawableAnimator
@@ -56,7 +58,7 @@
void addPropertyAnimator(PropertyValuesHolder* propertyValuesHolder,
Interpolator* interpolators, int64_t startDelays,
- nsecs_t durations, int repeatCount);
+ nsecs_t durations, int repeatCount, RepeatMode repeatMode);
virtual uint32_t dirtyMask();
bool isInfinite() { return mIsInfinite; }
void setVectorDrawable(VectorDrawableRoot* vd) { mVectorDrawable = vd; }
diff --git a/packages/SettingsLib/res/values-bs-rBA/strings.xml b/packages/SettingsLib/res/values-bs-rBA/strings.xml
index a11bf32..40a3630 100644
--- a/packages/SettingsLib/res/values-bs-rBA/strings.xml
+++ b/packages/SettingsLib/res/values-bs-rBA/strings.xml
@@ -146,9 +146,9 @@
<string name="vpn_settings_not_available" msgid="956841430176985598">"VPN postavke nisu dostupne za ovog korisnika"</string>
<string name="tethering_settings_not_available" msgid="6765770438438291012">"Postavke za privezivanje nisu dostupne za ovog korisnika"</string>
<string name="apn_settings_not_available" msgid="7873729032165324000">"Postavke za naziv pristupne tačke nisu dostupne za ovog korisnika"</string>
- <string name="enable_adb" msgid="7982306934419797485">"USB otklanjanje grešaka"</string>
+ <string name="enable_adb" msgid="7982306934419797485">"Otklanjanje grešaka putem uređaja spojenog na USB"</string>
<string name="enable_adb_summary" msgid="4881186971746056635">"Način rada za uklanjanje grešaka kada je povezan USB"</string>
- <string name="clear_adb_keys" msgid="4038889221503122743">"Ukini odobrenja otklanjanja grešaka USB-om"</string>
+ <string name="clear_adb_keys" msgid="4038889221503122743">"Ukini odobrenja otklanjanja grešaka putem uređaja spojenog na USB"</string>
<string name="bugreport_in_power" msgid="7923901846375587241">"Prečica za izvještaj o greškama"</string>
<string name="bugreport_in_power_summary" msgid="1778455732762984579">"Prikaži tipku za prijavu grešaka u izborniku za potrošnju energije"</string>
<string name="keep_screen_on" msgid="1146389631208760344">"Ostani aktivan"</string>
@@ -185,9 +185,9 @@
<string name="allow_mock_location_summary" msgid="317615105156345626">"Dozvoli lažne lokacije"</string>
<string name="debug_view_attributes" msgid="6485448367803310384">"Omogući pregled atributa prikaza"</string>
<string name="mobile_data_always_on_summary" msgid="8149773901431697910">"Uvijek drži mobilne podatke aktivnim, čak i kada je Wi-Fi je aktivan (za brzo prebacivanje između mreža)."</string>
- <string name="adb_warning_title" msgid="6234463310896563253">"Omogućiti USB otklanjanje grešaka?"</string>
- <string name="adb_warning_message" msgid="7316799925425402244">"USB otklanjanje grešaka je namijenjeno samo u svrhe razvoja aplikacija. Koristite ga za kopiranje podataka između računara i uređaja, instaliranje aplikacija na uređaj bez obavještenja te čitanje podataka iz zapisnika."</string>
- <string name="adb_keys_warning_message" msgid="5659849457135841625">"Opozvati pristup otklanjanju grešaka USB-om za sve računare koje ste prethodno ovlastili?"</string>
+ <string name="adb_warning_title" msgid="6234463310896563253">"Omogućiti otklanjanje grešaka putem uređaja spojenog na USB?"</string>
+ <string name="adb_warning_message" msgid="7316799925425402244">"Otklanjanje grešaka putem uređaja spojenog na USB je namijenjeno samo u svrhe razvoja aplikacija. Koristite ga za kopiranje podataka između računara i uređaja, instaliranje aplikacija na uređaj bez obavještenja te čitanje podataka iz zapisnika."</string>
+ <string name="adb_keys_warning_message" msgid="5659849457135841625">"Opozvati pristup otklanjanju grešaka putem uređaja spojenog na USB za sve računare koje ste prethodno ovlastili?"</string>
<string name="dev_settings_warning_title" msgid="7244607768088540165">"Dopustiti postavke za razvoj?"</string>
<string name="dev_settings_warning_message" msgid="2298337781139097964">"Ove postavke su namijenjene samo za svrhe razvoja. Mogu izazvati pogrešno ponašanje uređaja i aplikacija na njemu."</string>
<string name="verify_apps_over_usb_title" msgid="4177086489869041953">"Verifikuj aplikacije putem USB-a"</string>
diff --git a/packages/SystemUI/res/layout/volume_dialog.xml b/packages/SystemUI/res/layout/volume_dialog.xml
index 4cd635e..f3a7acc 100644
--- a/packages/SystemUI/res/layout/volume_dialog.xml
+++ b/packages/SystemUI/res/layout/volume_dialog.xml
@@ -26,11 +26,20 @@
android:id="@+id/volume_dialog_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:orientation="vertical"
- android:paddingTop="@dimen/volume_dialog_collapsed_padding_top"
- android:animateLayoutChanges="true" >
+ android:orientation="vertical" >
- <!-- volume rows added and removed here! :-) -->
+ <LinearLayout
+ android:id="@+id/volume_dialog_rows"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:paddingEnd="@dimen/volume_button_size"
+ android:orientation="vertical" >
+ <View android:id="@+id/spacer"
+ android:layout_width="match_parent"
+ android:layout_height="@dimen/volume_dialog_expanded_spacer"
+ android:visibility="gone"/>
+ <!-- volume rows added and removed here! :-) -->
+ </LinearLayout>
<include layout="@layout/volume_zen_footer" />
diff --git a/packages/SystemUI/res/layout/volume_dialog_row.xml b/packages/SystemUI/res/layout/volume_dialog_row.xml
index 95019b8..7328d05 100644
--- a/packages/SystemUI/res/layout/volume_dialog_row.xml
+++ b/packages/SystemUI/res/layout/volume_dialog_row.xml
@@ -19,11 +19,8 @@
android:layout_height="@dimen/volume_row_height"
android:clipChildren="false"
android:clipToPadding="false"
- android:id="@+id/volume_dialog_row"
- android:paddingEnd="@dimen/volume_dialog_padding_end"
android:orientation="vertical"
- android:paddingBottom="@dimen/volume_row_padding_bottom"
- android:animateLayoutChanges="true">
+ android:paddingBottom="@dimen/volume_row_padding_bottom" >
<TextView
android:id="@+id/volume_row_header"
diff --git a/packages/SystemUI/res/values-bs-rBA/strings.xml b/packages/SystemUI/res/values-bs-rBA/strings.xml
index 30ba654..dcba67b 100644
--- a/packages/SystemUI/res/values-bs-rBA/strings.xml
+++ b/packages/SystemUI/res/values-bs-rBA/strings.xml
@@ -61,11 +61,11 @@
<string name="label_view" msgid="6304565553218192990">"Prikaži"</string>
<string name="always_use_device" msgid="1450287437017315906">"Koristiti kao zadanu opciju za ovaj USB uređaj"</string>
<string name="always_use_accessory" msgid="1210954576979621596">"Koristiti kao zadanu opciju za ovaj USB uređaj"</string>
- <string name="usb_debugging_title" msgid="4513918393387141949">"Omogućiti otklanjanje grešaka preko USB-a?"</string>
+ <string name="usb_debugging_title" msgid="4513918393387141949">"Omogućiti otklanjanje grešaka putem uređaja spojenog na USB?"</string>
<string name="usb_debugging_message" msgid="2220143855912376496">"RSA otisak prsta za otključavanje računara je: \n<xliff:g id="FINGERPRINT">%1$s</xliff:g>"</string>
<string name="usb_debugging_always" msgid="303335496705863070">"Uvijek dozvoli sa ovog računara"</string>
- <string name="usb_debugging_secondary_user_title" msgid="6353808721761220421">"Uklanjanje pogreški putem USB-a nije dozvoljeno"</string>
- <string name="usb_debugging_secondary_user_message" msgid="8572228137833020196">"Korisnik koji je trenutno prijavljen na uređaju ne može uključiti opciju za otklanjanje grešaka koristeći USB. Da biste koristili ovu funkciju prebacite se na korisnika administratora."</string>
+ <string name="usb_debugging_secondary_user_title" msgid="6353808721761220421">"Otklanjanje grešaka putem uređaja spojenog na USB nije dozvoljeno"</string>
+ <string name="usb_debugging_secondary_user_message" msgid="8572228137833020196">"Korisnik koji je trenutno prijavljen na uređaju ne može uključiti opciju za otklanjanje grešaka putem uređaja spojenog na USB. Da biste koristili ovu funkciju prebacite se na korisnika administratora."</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Uvećaj prikaz na ekran"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Razvuci prikaz na ekran"</string>
<string name="screenshot_saving_ticker" msgid="7403652894056693515">"Spašavanje snimka ekrana..."</string>
diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml
index ae4f3cf..f60bdd1 100644
--- a/packages/SystemUI/res/values/dimens.xml
+++ b/packages/SystemUI/res/values/dimens.xml
@@ -538,8 +538,7 @@
<!-- Volume dialog root view bottom margin, at rest -->
<dimen name="volume_dialog_margin_bottom">4dp</dimen>
- <dimen name="volume_dialog_collapsed_padding_top">8dp</dimen>
- <dimen name="volume_dialog_expanded_padding_top">22dp</dimen>
+ <dimen name="volume_dialog_expanded_spacer">14dp</dimen>
<dimen name="volume_dialog_padding_end">40dp</dimen>
<dimen name="volume_row_padding_bottom">9.4dp</dimen>
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardService.java b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardService.java
index b354a4c..84901ee 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardService.java
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardService.java
@@ -98,9 +98,9 @@
}
@Override // Binder interface
- public void dismiss() {
+ public void dismiss(boolean allowWhileOccluded) {
checkPermission();
- mKeyguardViewMediator.dismiss();
+ mKeyguardViewMediator.dismiss(allowWhileOccluded);
}
@Override // Binder interface
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java
index 7c88307..a39c194 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java
@@ -363,7 +363,7 @@
UserInfo info = UserManager.get(mContext).getUserInfo(userId);
if (info != null && (info.isGuest() || info.isDemo())) {
// If we just switched to a guest, try to dismiss keyguard.
- dismiss();
+ dismiss(false /* allowWhileOccluded */);
}
}
}
@@ -500,6 +500,17 @@
userId);
}
}
+
+ @Override
+ public void onTrustChanged(int userId) {
+ if (userId == KeyguardUpdateMonitor.getCurrentUser()) {
+ synchronized (KeyguardViewMediator.this) {
+ notifyTrustedChangedLocked(mUpdateMonitor.getUserHasTrust(userId));
+ }
+ }
+ }
+
+
};
ViewMediatorCallback mViewMediatorCallback = new ViewMediatorCallback() {
@@ -1253,15 +1264,16 @@
/**
* Dismiss the keyguard through the security layers.
+ * @param allowWhileOccluded if true, dismiss the keyguard even if it's currently occluded.
*/
- public void handleDismiss() {
- if (mShowing && !mOccluded) {
+ public void handleDismiss(boolean allowWhileOccluded) {
+ if (mShowing && (allowWhileOccluded || !mOccluded)) {
mStatusBarKeyguardViewManager.dismiss();
}
}
- public void dismiss() {
- mHandler.sendEmptyMessage(DISMISS);
+ public void dismiss(boolean allowWhileOccluded) {
+ mHandler.obtainMessage(DISMISS, allowWhileOccluded ? 1 : 0, 0).sendToTarget();
}
/**
@@ -1355,6 +1367,9 @@
*/
public void setCurrentUser(int newUserId) {
KeyguardUpdateMonitor.setCurrentUser(newUserId);
+ synchronized (this) {
+ notifyTrustedChangedLocked(mUpdateMonitor.getUserHasTrust(newUserId));
+ }
}
private final BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
@@ -1463,7 +1478,7 @@
}
break;
case DISMISS:
- handleDismiss();
+ handleDismiss(msg.arg1 == 1 ? true : false /* allowWhileOccluded */);
break;
case START_KEYGUARD_EXIT_ANIM:
Trace.beginSection("KeyguardViewMediator#handleMessage START_KEYGUARD_EXIT_ANIM");
@@ -1989,6 +2004,20 @@
}
}
+ private void notifyTrustedChangedLocked(boolean trusted) {
+ int size = mKeyguardStateCallbacks.size();
+ for (int i = size - 1; i >= 0; i--) {
+ try {
+ mKeyguardStateCallbacks.get(i).onTrustedChanged(trusted);
+ } catch (RemoteException e) {
+ Slog.w(TAG, "Failed to call notifyTrustedChangedLocked", e);
+ if (e instanceof DeadObjectException) {
+ mKeyguardStateCallbacks.remove(i);
+ }
+ }
+ }
+ }
+
public void addStateMonitorCallback(IKeyguardStateCallback callback) {
synchronized (this) {
mKeyguardStateCallbacks.add(callback);
@@ -1996,8 +2025,10 @@
callback.onSimSecureStateChanged(mUpdateMonitor.isSimPinSecure());
callback.onShowingStateChanged(mShowing);
callback.onInputRestrictedStateChanged(mInputRestricted);
+ callback.onTrustedChanged(mUpdateMonitor.getUserHasTrust(
+ KeyguardUpdateMonitor.getCurrentUser()));
} catch (RemoteException e) {
- Slog.w(TAG, "Failed to call onShowingStateChanged or onSimSecureStateChanged or onInputRestrictedStateChanged", e);
+ Slog.w(TAG, "Failed to call to IKeyguardStateCallback", e);
}
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/customize/TileAdapter.java b/packages/SystemUI/src/com/android/systemui/qs/customize/TileAdapter.java
index 3a693cf..8d7f6ee 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/customize/TileAdapter.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/customize/TileAdapter.java
@@ -297,6 +297,9 @@
mAccessibilityMoving = false;
mTiles.remove(mEditIndex--);
notifyItemRemoved(mEditIndex - 1);
+ // Don't remove items when the last position is selected.
+ if (position == mEditIndex) position--;
+
move(mAccessibilityFromIndex, position, v);
notifyDataSetChanged();
}
diff --git a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialog.java b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialog.java
index 2094c08..37ea66a 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialog.java
+++ b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialog.java
@@ -17,9 +17,7 @@
package com.android.systemui.volume;
import android.accessibilityservice.AccessibilityServiceInfo;
-import android.animation.LayoutTransition;
import android.animation.ObjectAnimator;
-import android.animation.ValueAnimator;
import android.annotation.NonNull;
import android.annotation.SuppressLint;
import android.app.Dialog;
@@ -43,9 +41,11 @@
import android.os.Message;
import android.os.SystemClock;
import android.provider.Settings.Global;
+import android.transition.AutoTransition;
+import android.transition.Transition;
+import android.transition.TransitionManager;
import android.util.DisplayMetrics;
import android.util.Log;
-import android.util.Slog;
import android.util.SparseBooleanArray;
import android.view.Gravity;
import android.view.MotionEvent;
@@ -63,12 +63,12 @@
import android.view.accessibility.AccessibilityManager.AccessibilityStateChangeListener;
import android.view.animation.DecelerateInterpolator;
import android.widget.ImageButton;
-import android.widget.LinearLayout;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.TextView;
import com.android.settingslib.Utils;
+import com.android.systemui.Interpolators;
import com.android.systemui.R;
import com.android.systemui.statusbar.policy.ZenModeController;
import com.android.systemui.tuner.TunerService;
@@ -102,8 +102,10 @@
private final H mHandler = new H();
private final VolumeDialogController mController;
+ private Window mWindow;
private CustomDialog mDialog;
private ViewGroup mDialogView;
+ private ViewGroup mDialogRowsView;
private ViewGroup mDialogContentView;
private ImageButton mExpandButton;
private final List<VolumeRow> mRows = new ArrayList<>();
@@ -114,7 +116,6 @@
private final AccessibilityManager mAccessibilityMgr;
private int mExpandButtonAnimationDuration;
private ZenFooter mZenFooter;
- private LayoutTransition mLayoutTransition;
private final Object mSafetyWarningLock = new Object();
private final Accessibility mAccessibility = new Accessibility();
private final ColorStateList mActiveSliderTint;
@@ -152,7 +153,8 @@
mZenModeController = zenModeController;
mKeyguard = (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE);
mAudioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
- mAccessibilityMgr = (AccessibilityManager) mContext.getSystemService(Context.ACCESSIBILITY_SERVICE);
+ mAccessibilityMgr =
+ (AccessibilityManager) mContext.getSystemService(Context.ACCESSIBILITY_SERVICE);
mActiveSliderTint = ColorStateList.valueOf(Utils.getColorAccent(mContext));
mInactiveSliderTint = loadColorStateList(R.color.volume_slider_inactive);
@@ -172,15 +174,13 @@
mDialog = new CustomDialog(mContext);
mSpTexts = new SpTexts(mContext);
- mLayoutTransition = new LayoutTransition();
- mLayoutTransition.setDuration(new ValueAnimator().getDuration() / 2);
mHovering = false;
mShowing = false;
- final Window window = mDialog.getWindow();
- window.requestFeature(Window.FEATURE_NO_TITLE);
- window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
- window.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
- window.addFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
+ mWindow = mDialog.getWindow();
+ mWindow.requestFeature(Window.FEATURE_NO_TITLE);
+ mWindow.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
+ mWindow.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
+ mWindow.addFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
| WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN
| WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
| WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
@@ -188,7 +188,7 @@
| WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);
mDialog.setCanceledOnTouchOutside(true);
final Resources res = mContext.getResources();
- final WindowManager.LayoutParams lp = window.getAttributes();
+ final WindowManager.LayoutParams lp = mWindow.getAttributes();
lp.type = mWindowType;
lp.format = PixelFormat.TRANSLUCENT;
lp.setTitle(VolumeDialog.class.getSimpleName());
@@ -196,9 +196,8 @@
lp.y = res.getDimensionPixelSize(R.dimen.volume_offset_top);
lp.gravity = Gravity.TOP;
lp.windowAnimations = -1;
- window.setAttributes(lp);
- window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING);
-
+ mWindow.setAttributes(lp);
+ mWindow.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING);
mDialog.setContentView(R.layout.volume_dialog);
mDialogView = (ViewGroup) mDialog.findViewById(R.id.volume_dialog);
@@ -213,13 +212,13 @@
}
});
mDialogContentView = (ViewGroup) mDialog.findViewById(R.id.volume_dialog_content);
+ mDialogRowsView = (ViewGroup) mDialogContentView.findViewById(R.id.volume_dialog_rows);
mExpanded = false;
mExpandButton = (ImageButton) mDialogView.findViewById(R.id.volume_expand_button);
mExpandButton.setOnClickListener(mClickExpand);
updateWindowWidthH();
updateExpandButtonH();
- mDialogContentView.setLayoutTransition(mLayoutTransition);
mMotion = new VolumeDialogMotion(mDialog, mDialogView, mDialogContentView, mExpandButton,
new VolumeDialogMotion.Callback() {
@Override
@@ -310,10 +309,7 @@
private void addRow(int stream, int iconRes, int iconMuteRes, boolean important) {
VolumeRow row = new VolumeRow();
initRow(row, stream, iconRes, iconMuteRes, important);
- if (!mRows.isEmpty()) {
- addSpacer(row);
- }
- mDialogContentView.addView(row.view, mDialogContentView.getChildCount() - 2);
+ mDialogRowsView.addView(row.view);
mRows.add(row);
}
@@ -322,23 +318,10 @@
for (int i = 0; i < N; i++) {
final VolumeRow row = mRows.get(i);
initRow(row, row.stream, row.iconRes, row.iconMuteRes, row.important);
- if (i > 0) {
- addSpacer(row);
- }
- mDialogContentView.addView(row.view, mDialogContentView.getChildCount() - 2);
+ mDialogRowsView.addView(row.view);
}
}
- private void addSpacer(VolumeRow row) {
- final View v = new View(mContext);
- v.setId(android.R.id.background);
- final int h = mContext.getResources()
- .getDimensionPixelSize(R.dimen.volume_slider_interspacing);
- final LinearLayout.LayoutParams lp =
- new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, h);
- mDialogContentView.addView(v, mDialogContentView.getChildCount() - 2, lp);
- row.space = v;
- }
private boolean isAttached() {
return mDialogContentView != null && mDialogContentView.isAttachedToWindow();
@@ -392,12 +375,15 @@
row.iconMuteRes = iconMuteRes;
row.important = important;
row.view = mDialog.getLayoutInflater().inflate(R.layout.volume_dialog_row, null);
+ row.view.setId(row.stream);
row.view.setTag(row);
row.header = (TextView) row.view.findViewById(R.id.volume_row_header);
+ row.header.setId(20 * row.stream);
mSpTexts.add(row.header);
row.slider = (SeekBar) row.view.findViewById(R.id.volume_row_slider);
row.slider.setOnSeekBarChangeListener(new VolumeSeekBarChangeListener(row));
row.anim = null;
+ row.cachedShowHeaders = VolumePrefs.DEFAULT_SHOW_HEADERS;
// forward events above the slider into the slider
row.view.setOnTouchListener(new OnTouchListener() {
@@ -509,7 +495,7 @@
mMotion.startDismiss(new Runnable() {
@Override
public void run() {
- setExpandedH(false);
+ updateExpandedH(false);
}
});
if (mAccessibilityMgr.isEnabled()) {
@@ -555,23 +541,65 @@
mHandler.sendEmptyMessageDelayed(H.UPDATE_BOTTOM_MARGIN, getConservativeCollapseDuration());
}
- private void setExpandedH(boolean expanded) {
+ private void updateExpandedH(final boolean expanded) {
if (mExpanded == expanded) return;
mExpanded = expanded;
mExpandButtonAnimationRunning = isAttached();
- if (D.BUG) Log.d(TAG, "setExpandedH " + expanded);
- if (!mExpanded && mExpandButtonAnimationRunning) {
- prepareForCollapse();
+ if (D.BUG) Log.d(TAG, "updateExpandedH " + expanded);
+ updateExpandButtonH();
+ updateFooterH();
+ final VolumeRow activeRow = getActiveRow();
+ mWindow.setLayout(mWindow.getAttributes().width, ViewGroup.LayoutParams.MATCH_PARENT);
+ AutoTransition transition = new AutoTransition();
+ transition.setDuration(mExpandButtonAnimationDuration);
+ transition.setInterpolator(Interpolators.LINEAR_OUT_SLOW_IN);
+ transition.addListener(new Transition.TransitionListener() {
+ @Override
+ public void onTransitionStart(Transition transition) {
+ }
+
+ @Override
+ public void onTransitionEnd(Transition transition) {
+ mWindow.setLayout(
+ mWindow.getAttributes().width, ViewGroup.LayoutParams.WRAP_CONTENT);
+ }
+
+ @Override
+ public void onTransitionCancel(Transition transition) {
+ mWindow.setLayout(
+ mWindow.getAttributes().width, ViewGroup.LayoutParams.WRAP_CONTENT);
+ }
+
+ @Override
+ public void onTransitionPause(Transition transition) {
+ }
+
+ @Override
+ public void onTransitionResume(Transition transition) {
+ }
+ });
+ TransitionManager.endTransitions(mDialogView);
+ TransitionManager.beginDelayedTransition(mDialogView, transition);
+ updateRowsH(activeRow);
+ rescheduleTimeoutH();
+ }
+
+ private void updateExpandButtonH() {
+ if (D.BUG) Log.d(TAG, "updateExpandButtonH");
+ mExpandButton.setClickable(!mExpandButtonAnimationRunning);
+ if (!(mExpandButtonAnimationRunning && isAttached())) {
+ final int res = mExpanded ? R.drawable.ic_volume_collapse_animation
+ : R.drawable.ic_volume_expand_animation;
+ if (hasTouchFeature()) {
+ mExpandButton.setImageResource(res);
+ } else {
+ // if there is no touch feature, show the volume ringer instead
+ mExpandButton.setImageResource(R.drawable.ic_volume_ringer);
+ mExpandButton.setBackgroundResource(0); // remove gray background emphasis
+ }
+ mExpandButton.setContentDescription(mContext.getString(mExpanded ?
+ R.string.accessibility_volume_collapse : R.string.accessibility_volume_expand));
}
- final Resources res = mContext.getResources();
- int paddingTop = mExpanded
- ? res.getDimensionPixelSize(R.dimen.volume_dialog_expanded_padding_top)
- : res.getDimensionPixelSize(R.dimen.volume_dialog_collapsed_padding_top);
- mDialogContentView.setPaddingRelative(mDialogContentView.getPaddingStart(),
- paddingTop,
- mDialogContentView.getPaddingEnd(),
- mDialogContentView.getPaddingBottom());
- updateRowsH();
if (mExpandButtonAnimationRunning) {
final Drawable d = mExpandButton.getDrawable();
if (d instanceof AnimatedVectorDrawable) {
@@ -590,60 +618,41 @@
}, mExpandButtonAnimationDuration);
}
}
- rescheduleTimeoutH();
}
- private void updateExpandButtonH() {
- if (D.BUG) Log.d(TAG, "updateExpandButtonH");
- mExpandButton.setClickable(!mExpandButtonAnimationRunning);
- if (mExpandButtonAnimationRunning && isAttached()) return;
- final int res = mExpanded ? R.drawable.ic_volume_collapse_animation
- : R.drawable.ic_volume_expand_animation;
- if (hasTouchFeature()) {
- mExpandButton.setImageResource(res);
- } else {
- // if there is no touch feature, show the volume ringer instead
- mExpandButton.setImageResource(R.drawable.ic_volume_ringer);
- mExpandButton.setBackgroundResource(0); // remove gray background emphasis
- }
- mExpandButton.setContentDescription(mContext.getString(mExpanded ?
- R.string.accessibility_volume_collapse : R.string.accessibility_volume_expand));
- }
-
- private boolean isVisibleH(VolumeRow row, boolean isActive) {
+ private boolean shouldBeVisibleH(VolumeRow row, boolean isActive) {
return mExpanded && row.view.getVisibility() == View.VISIBLE
|| (mExpanded && (row.important || isActive))
|| !mExpanded && isActive;
}
- private void updateRowsH() {
+ private void updateRowsH(final VolumeRow activeRow) {
if (D.BUG) Log.d(TAG, "updateRowsH");
- final VolumeRow activeRow = getActiveRow();
- updateFooterH();
- updateExpandButtonH();
if (!mShowing) {
trimObsoleteH();
}
+ Util.setVisOrGone(mDialogRowsView.findViewById(R.id.spacer), mExpanded);
// apply changes to all rows
- for (VolumeRow row : mRows) {
+ for (final VolumeRow row : mRows) {
final boolean isActive = row == activeRow;
- final boolean visible = isVisibleH(row, isActive);
- Util.setVisOrGone(row.view, visible);
- Util.setVisOrGone(row.space, visible && mExpanded);
- updateVolumeRowHeaderVisibleH(row);
- updateVolumeRowSliderTintH(row, isActive);
+ final boolean shouldBeVisible = shouldBeVisibleH(row, isActive);
+ Util.setVisOrGone(row.view, shouldBeVisible);
+ if (row.view.isShown()) {
+ updateVolumeRowHeaderVisibleH(row);
+ updateVolumeRowSliderTintH(row, isActive);
+ }
}
+
}
private void trimObsoleteH() {
if (D.BUG) Log.d(TAG, "trimObsoleteH");
- for (int i = mRows.size() -1; i >= 0; i--) {
+ for (int i = mRows.size() - 1; i >= 0; i--) {
final VolumeRow row = mRows.get(i);
if (row.ss == null || !row.ss.dynamic) continue;
if (!mDynamic.get(row.stream)) {
mRows.remove(i);
- mDialogContentView.removeView(row.view);
- mDialogContentView.removeView(row.space);
+ mDialogRowsView.removeView(row.view);
}
}
}
@@ -670,7 +679,7 @@
if (mActiveStream != state.activeStream) {
mActiveStream = state.activeStream;
- updateRowsH();
+ updateRowsH(getActiveRow());
rescheduleTimeoutH();
}
for (VolumeRow row : mRows) {
@@ -731,9 +740,6 @@
&& mState.ringerModeInternal == AudioManager.RINGER_MODE_SILENT;
final boolean isZenAlarms = mState.zenMode == Global.ZEN_MODE_ALARMS;
final boolean isZenNone = mState.zenMode == Global.ZEN_MODE_NO_INTERRUPTIONS;
- final boolean isZenPriority = mState.zenMode == Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS;
- final boolean isRingZenNone = (isRingStream || isSystemStream) && isZenNone;
- final boolean isRingLimited = isRingStream && isZenPriority;
final boolean zenMuted = isZenAlarms ? (isRingStream || isSystemStream)
: isZenNone ? (isRingStream || isSystemStream || isAlarmStream || isMusicStream)
: false;
@@ -1023,7 +1029,7 @@
if (mExpandButtonAnimationRunning) return;
final boolean newExpand = !mExpanded;
Events.writeEvent(mContext, Events.EVENT_EXPAND, newExpand);
- setExpandedH(newExpand);
+ updateExpandedH(newExpand);
}
};
@@ -1220,7 +1226,6 @@
private static class VolumeRow {
private View view;
- private View space;
private TextView header;
private ImageButton icon;
private SeekBar slider;
diff --git a/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java b/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
index 7ebc150..4dab0b1 100644
--- a/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
+++ b/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
@@ -1111,9 +1111,11 @@
private void addServiceLocked(Service service, UserState userState) {
try {
- service.onAdded();
- userState.mBoundServices.add(service);
- userState.mComponentNameToServiceMap.put(service.mComponentName, service);
+ if (!userState.mBoundServices.contains(service)) {
+ service.onAdded();
+ userState.mBoundServices.add(service);
+ userState.mComponentNameToServiceMap.put(service.mComponentName, service);
+ }
} catch (RemoteException re) {
/* do nothing */
}
@@ -1126,8 +1128,14 @@
*/
private void removeServiceLocked(Service service, UserState userState) {
userState.mBoundServices.remove(service);
- userState.mComponentNameToServiceMap.remove(service.mComponentName);
service.onRemoved();
+ // It may be possible to bind a service twice, which confuses the map. Rebuild the map
+ // to make sure we can still reach a service
+ userState.mComponentNameToServiceMap.clear();
+ for (int i = 0; i < userState.mBoundServices.size(); i++) {
+ Service boundService = userState.mBoundServices.get(i);
+ userState.mComponentNameToServiceMap.put(boundService.mComponentName, boundService);
+ }
}
/**
@@ -2324,15 +2332,12 @@
}
/**
- * Unbinds form the accessibility service and removes it from the data
+ * Unbinds from the accessibility service and removes it from the data
* structures for service management.
*
* @return True if unbinding is successful.
*/
public boolean unbindLocked() {
- if (mService == null) {
- return false;
- }
UserState userState = getUserStateLocked(mUserId);
getKeyEventDispatcher().flush(this);
if (!mIsAutomation) {
@@ -3033,7 +3038,7 @@
@Override
public void onServiceDisconnected(ComponentName componentName) {
- /* do nothing - #binderDied takes care */
+ binderDied();
}
public void onAdded() throws RemoteException {
@@ -3062,14 +3067,18 @@
}
public void unlinkToOwnDeathLocked() {
- mService.unlinkToDeath(this, 0);
+ if (mService != null) {
+ mService.unlinkToDeath(this, 0);
+ }
}
public void resetLocked() {
try {
// Clear the proxy in the other process so this
// IAccessibilityServiceConnection can be garbage collected.
- mServiceInterface.init(null, mId, null);
+ if (mServiceInterface != null) {
+ mServiceInterface.init(null, mId, null);
+ }
} catch (RemoteException re) {
/* ignore */
}
@@ -3093,10 +3102,10 @@
mWasConnectedAndDied = true;
getKeyEventDispatcher().flush(this);
UserState userState = getUserStateLocked(mUserId);
- // The death recipient is unregistered in removeServiceLocked
- removeServiceLocked(this, userState);
resetLocked();
if (mIsAutomation) {
+ // This is typically done when unbinding, but UiAutomation isn't bound.
+ removeServiceLocked(this, userState);
// We no longer have an automation service, so restore
// the state based on values in the settings database.
userState.mInstalledServices.remove(mAccessibilityServiceInfo);
diff --git a/services/core/java/com/android/server/AlarmManagerService.java b/services/core/java/com/android/server/AlarmManagerService.java
index 57c25a2..0316093 100644
--- a/services/core/java/com/android/server/AlarmManagerService.java
+++ b/services/core/java/com/android/server/AlarmManagerService.java
@@ -2472,8 +2472,10 @@
Slog.v(TAG, "Time changed notification from kernel; rebatching");
}
removeImpl(mTimeTickSender);
+ removeImpl(mDateChangeSender);
rebatchAllAlarms();
mClockReceiver.scheduleTimeTickEvent();
+ mClockReceiver.scheduleDateChangedEvent();
synchronized (mLock) {
mNumTimeChanged++;
mLastTimeChangeClockTime = nowRTC;
diff --git a/services/core/java/com/android/server/LocationManagerService.java b/services/core/java/com/android/server/LocationManagerService.java
index 36ec2eb..64ca2e3 100644
--- a/services/core/java/com/android/server/LocationManagerService.java
+++ b/services/core/java/com/android/server/LocationManagerService.java
@@ -150,7 +150,7 @@
// used internally for synchronization
private final Object mLock = new Object();
- // --- fields below are final after systemReady() ---
+ // --- fields below are final after systemRunning() ---
private LocationFudger mLocationFudger;
private GeofenceManager mGeofenceManager;
private PackageManager mPackageManager;
@@ -168,6 +168,7 @@
// --- fields below are protected by mLock ---
// Set of providers that are explicitly enabled
+ // Only used by passive, fused & test. Network & GPS are controlled separately, and not listed.
private final Set<String> mEnabledProviders = new HashSet<String>();
// Set of providers that are explicitly disabled
@@ -236,12 +237,12 @@
if (D) Log.d(TAG, "Constructed");
- // most startup is deferred until systemReady()
+ // most startup is deferred until systemRunning()
}
public void systemRunning() {
synchronized (mLock) {
- if (D) Log.d(TAG, "systemReady()");
+ if (D) Log.d(TAG, "systemRunning()");
// fetch package manager
mPackageManager = mContext.getPackageManager();
@@ -321,7 +322,11 @@
|| Intent.ACTION_MANAGED_PROFILE_REMOVED.equals(action)) {
updateUserProfiles(mCurrentUserId);
} else if (Intent.ACTION_SHUTDOWN.equals(action)) {
- shutdownComponents();
+ // shutdown only if UserId indicates whole system, not just one user
+ if(D) Log.d(TAG, "Shutdown received with UserId: " + getSendingUserId());
+ if (getSendingUserId() == UserHandle.USER_ALL) {
+ shutdownComponents();
+ }
}
}
}, UserHandle.ALL, intentFilter, null, mLocationHandler);
diff --git a/services/core/java/com/android/server/am/ActivityRecord.java b/services/core/java/com/android/server/am/ActivityRecord.java
index 6e40cff..00fda43 100755
--- a/services/core/java/com/android/server/am/ActivityRecord.java
+++ b/services/core/java/com/android/server/am/ActivityRecord.java
@@ -221,7 +221,12 @@
boolean pendingVoiceInteractionStart; // Waiting for activity-invoked voice session
IVoiceInteractionSession voiceSession; // Voice interaction session for this activity
- int mRotationAnimationHint;
+ // A hint to override the window specified rotation animation, or -1
+ // to use the window specified value. We use this so that
+ // we can select the right animation in the cases of starting
+ // windows, where the app hasn't had time to set a value
+ // on the window.
+ int mRotationAnimationHint = -1;
private static String startingWindowStateToString(int state) {
switch (state) {
diff --git a/services/core/java/com/android/server/am/ActivityStackSupervisor.java b/services/core/java/com/android/server/am/ActivityStackSupervisor.java
index e31df57..ece1ee9 100644
--- a/services/core/java/com/android/server/am/ActivityStackSupervisor.java
+++ b/services/core/java/com/android/server/am/ActivityStackSupervisor.java
@@ -781,20 +781,25 @@
}
}
+ static int nextTaskIdForUser(int taskId, int userId) {
+ int nextTaskId = taskId + 1;
+ if (nextTaskId == (userId + 1) * MAX_TASK_IDS_PER_USER) {
+ // Wrap around as there will be smaller task ids that are available now.
+ nextTaskId -= MAX_TASK_IDS_PER_USER;
+ }
+ return nextTaskId;
+ }
+
int getNextTaskIdForUserLocked(int userId) {
final int currentTaskId = mCurTaskIdForUser.get(userId, userId * MAX_TASK_IDS_PER_USER);
// for a userId u, a taskId can only be in the range
// [u*MAX_TASK_IDS_PER_USER, (u+1)*MAX_TASK_IDS_PER_USER-1], so if MAX_TASK_IDS_PER_USER
// was 10, user 0 could only have taskIds 0 to 9, user 1: 10 to 19, user 2: 20 to 29, so on.
- int candidateTaskId = currentTaskId;
+ int candidateTaskId = nextTaskIdForUser(currentTaskId, userId);
while (mRecentTasks.taskIdTakenForUserLocked(candidateTaskId, userId)
|| anyTaskForIdLocked(candidateTaskId, !RESTORE_FROM_RECENTS,
INVALID_STACK_ID) != null) {
- candidateTaskId++;
- if (candidateTaskId == (userId + 1) * MAX_TASK_IDS_PER_USER) {
- // Wrap around as there will be smaller task ids that are available now.
- candidateTaskId -= MAX_TASK_IDS_PER_USER;
- }
+ candidateTaskId = nextTaskIdForUser(candidateTaskId, userId);
if (candidateTaskId == currentTaskId) {
// Something wrong!
// All MAX_TASK_IDS_PER_USER task ids are taken up by running tasks for this user
diff --git a/services/core/java/com/android/server/pm/EphemeralResolverConnection.java b/services/core/java/com/android/server/pm/EphemeralResolverConnection.java
index b25ef175..8d926f5 100644
--- a/services/core/java/com/android/server/pm/EphemeralResolverConnection.java
+++ b/services/core/java/com/android/server/pm/EphemeralResolverConnection.java
@@ -16,6 +16,8 @@
package com.android.server.pm;
+import android.app.EphemeralResolverService;
+import android.app.IEphemeralResolver;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
@@ -30,9 +32,6 @@
import android.os.UserHandle;
import android.util.TimedRemoteCaller;
-import com.android.internal.app.EphemeralResolverService;
-import com.android.internal.app.IEphemeralResolver;
-
import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList;
diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java
index e502764..f1ab183 100644
--- a/services/core/java/com/android/server/policy/PhoneWindowManager.java
+++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java
@@ -3560,6 +3560,14 @@
}
}
+ @Override
+ public boolean canShowDismissingWindowWhileLockedLw() {
+ // If the keyguard is trusted, it will unlock without a challange. Therefore, windows with
+ // FLAG_DISMISS_KEYGUARD don't need to be force hidden, as they will unlock the phone right
+ // away anyways.
+ return mKeyguardDelegate != null && mKeyguardDelegate.isTrusted();
+ }
+
private void launchAssistLongPressAction() {
performHapticFeedbackLw(null, HapticFeedbackConstants.LONG_PRESS, false);
sendCloseSystemWindows(SYSTEM_DIALOG_REASON_ASSIST);
@@ -5256,7 +5264,10 @@
}
} else if (mDismissKeyguard != DISMISS_KEYGUARD_NONE) {
mKeyguardHidden = false;
- if (setKeyguardOccludedLw(false)) {
+ final boolean trusted = mKeyguardDelegate.isTrusted();
+ if (trusted) {
+ // No need to un-occlude keyguard - we'll dimiss it right away anyways.
+ } else if (setKeyguardOccludedLw(false)) {
changes |= FINISH_LAYOUT_REDO_LAYOUT
| FINISH_LAYOUT_REDO_CONFIG
| FINISH_LAYOUT_REDO_WALLPAPER;
@@ -5266,7 +5277,7 @@
mHandler.post(new Runnable() {
@Override
public void run() {
- mKeyguardDelegate.dismiss();
+ mKeyguardDelegate.dismiss(trusted /* allowWhileOccluded */);
}
});
}
@@ -6511,7 +6522,7 @@
@Override
public void run() {
// ask the keyguard to prompt the user to authenticate if necessary
- mKeyguardDelegate.dismiss();
+ mKeyguardDelegate.dismiss(false /* allowWhileOccluded */);
}
});
}
diff --git a/services/core/java/com/android/server/policy/keyguard/KeyguardServiceDelegate.java b/services/core/java/com/android/server/policy/keyguard/KeyguardServiceDelegate.java
index bcae481..d3c592d 100644
--- a/services/core/java/com/android/server/policy/keyguard/KeyguardServiceDelegate.java
+++ b/services/core/java/com/android/server/policy/keyguard/KeyguardServiceDelegate.java
@@ -199,6 +199,13 @@
return mKeyguardState.showing;
}
+ public boolean isTrusted() {
+ if (mKeyguardService != null) {
+ return mKeyguardService.isTrusted();
+ }
+ return false;
+ }
+
public boolean isInputRestricted() {
if (mKeyguardService != null) {
mKeyguardState.inputRestricted = mKeyguardService.isInputRestricted();
@@ -220,14 +227,15 @@
public void setOccluded(boolean isOccluded) {
if (mKeyguardService != null) {
+ if (DEBUG) Log.v(TAG, "setOccluded(" + isOccluded + ")");
mKeyguardService.setOccluded(isOccluded);
}
mKeyguardState.occluded = isOccluded;
}
- public void dismiss() {
+ public void dismiss(boolean allowWhileOccluded) {
if (mKeyguardService != null) {
- mKeyguardService.dismiss();
+ mKeyguardService.dismiss(allowWhileOccluded);
}
}
diff --git a/services/core/java/com/android/server/policy/keyguard/KeyguardServiceWrapper.java b/services/core/java/com/android/server/policy/keyguard/KeyguardServiceWrapper.java
index 57e8857..bea3167 100644
--- a/services/core/java/com/android/server/policy/keyguard/KeyguardServiceWrapper.java
+++ b/services/core/java/com/android/server/policy/keyguard/KeyguardServiceWrapper.java
@@ -81,9 +81,9 @@
}
@Override // Binder interface
- public void dismiss() {
+ public void dismiss(boolean allowWhileOccluded) {
try {
- mService.dismiss();
+ mService.dismiss(allowWhileOccluded);
} catch (RemoteException e) {
Slog.w(TAG , "Remote Exception", e);
}
@@ -234,6 +234,10 @@
return mKeyguardStateMonitor.isShowing();
}
+ public boolean isTrusted() {
+ return mKeyguardStateMonitor.isTrusted();
+ }
+
public boolean isSecure(int userId) {
return mKeyguardStateMonitor.isSecure(userId);
}
diff --git a/services/core/java/com/android/server/policy/keyguard/KeyguardStateMonitor.java b/services/core/java/com/android/server/policy/keyguard/KeyguardStateMonitor.java
index 138f068..f3238c8 100644
--- a/services/core/java/com/android/server/policy/keyguard/KeyguardStateMonitor.java
+++ b/services/core/java/com/android/server/policy/keyguard/KeyguardStateMonitor.java
@@ -43,6 +43,7 @@
private volatile boolean mIsShowing = true;
private volatile boolean mSimSecure = true;
private volatile boolean mInputRestricted = true;
+ private volatile boolean mTrusted = false;
private int mCurrentUserId;
@@ -70,6 +71,10 @@
return mInputRestricted;
}
+ public boolean isTrusted() {
+ return mTrusted;
+ }
+
@Override // Binder interface
public void onShowingStateChanged(boolean showing) {
mIsShowing = showing;
@@ -93,12 +98,18 @@
mInputRestricted = inputRestricted;
}
+ @Override // Binder interface
+ public void onTrustedChanged(boolean trusted) {
+ mTrusted = trusted;
+ }
+
public void dump(String prefix, PrintWriter pw) {
pw.println(prefix + TAG);
prefix += " ";
pw.println(prefix + "mIsShowing=" + mIsShowing);
pw.println(prefix + "mSimSecure=" + mSimSecure);
pw.println(prefix + "mInputRestricted=" + mInputRestricted);
+ pw.println(prefix + "mTrusted=" + mTrusted);
pw.println(prefix + "mCurrentUserId=" + mCurrentUserId);
}
}
\ No newline at end of file
diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java
index fba439f..1d57872 100644
--- a/services/core/java/com/android/server/wm/DisplayContent.java
+++ b/services/core/java/com/android/server/wm/DisplayContent.java
@@ -191,6 +191,16 @@
return mHomeStack;
}
+ TaskStack getStackById(int stackId) {
+ for (int i = mStacks.size() - 1; i >= 0; --i) {
+ final TaskStack stack = mStacks.get(i);
+ if (stack.mStackId == stackId) {
+ return stack;
+ }
+ }
+ return null;
+ }
+
void updateDisplayInfo() {
mDisplay.getDisplayInfo(mDisplayInfo);
mDisplay.getMetrics(mDisplayMetrics);
diff --git a/services/core/java/com/android/server/wm/WindowAnimator.java b/services/core/java/com/android/server/wm/WindowAnimator.java
index be060d2..e5eda05 100644
--- a/services/core/java/com/android/server/wm/WindowAnimator.java
+++ b/services/core/java/com/android/server/wm/WindowAnimator.java
@@ -16,6 +16,7 @@
package com.android.server.wm;
+import static android.view.WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD;
import static android.view.WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER;
import static android.view.WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED;
import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_KEYGUARD;
@@ -233,6 +234,12 @@
|| (win.mAttrs.privateFlags & PRIVATE_FLAG_SYSTEM_ERROR) != 0;
}
+ // Allow showing a window that dismisses Keyguard if the policy allows it. This is used for
+ // when the policy knows that the Keyguard can be dismissed without user interaction to
+ // provide a smooth transition in that case.
+ allowWhenLocked |= (win.mAttrs.flags & FLAG_DISMISS_KEYGUARD) != 0
+ && mPolicy.canShowDismissingWindowWhileLockedLw();
+
// Only hide windows if the keyguard is active and not animating away.
boolean keyguardOn = mPolicy.isKeyguardShowingOrOccluded()
&& mForceHiding != KEYGUARD_ANIMATING_OUT;
diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java
index b4085f5..c66f09c 100644
--- a/services/core/java/com/android/server/wm/WindowManagerService.java
+++ b/services/core/java/com/android/server/wm/WindowManagerService.java
@@ -5047,18 +5047,32 @@
try {
synchronized (mWindowMap) {
final DisplayContent displayContent = mDisplayContents.get(displayId);
+ boolean attachedToDisplay = false;
if (displayContent != null) {
TaskStack stack = mStackIdToStack.get(stackId);
if (stack == null) {
if (DEBUG_STACK) Slog.d(TAG_WM, "attachStack: stackId=" + stackId);
- stack = new TaskStack(this, stackId);
+
+ stack = displayContent.getStackById(stackId);
+ if (stack != null) {
+ // It's already attached to the display. Detach and re-attach
+ // because onTop might change, and be sure to clear mDeferDetach!
+ displayContent.detachStack(stack);
+ stack.mDeferDetach = false;
+ attachedToDisplay = true;
+ } else {
+ stack = new TaskStack(this, stackId);
+ }
+
mStackIdToStack.put(stackId, stack);
if (stackId == DOCKED_STACK_ID) {
getDefaultDisplayContentLocked().mDividerControllerLocked
.notifyDockedStackExistsChanged(true);
}
}
- stack.attachDisplayContent(displayContent);
+ if (!attachedToDisplay) {
+ stack.attachDisplayContent(displayContent);
+ }
displayContent.attachStack(stack, onTop);
if (stack.getRawFullscreen()) {
return null;
@@ -9454,10 +9468,17 @@
}
final boolean dragResizingChanged = w.isDragResizeChanged()
&& !w.isDragResizingChangeReported();
+
if (localLOGV) Slog.v(TAG_WM, "Resizing " + w
+ ": configChanged=" + configChanged
+ " dragResizingChanged=" + dragResizingChanged
+ " last=" + w.mLastFrame + " frame=" + w.mFrame);
+
+ // We update mLastFrame always rather than in the conditional with the
+ // last inset variables, because mFrameSizeChanged only tracks the
+ // width and height changing.
+ w.mLastFrame.set(w.mFrame);
+
if (w.mContentInsetsChanged
|| w.mVisibleInsetsChanged
|| winAnimator.mSurfaceResized
@@ -9495,7 +9516,6 @@
w.mLastVisibleInsets.set(w.mVisibleInsets);
w.mLastStableInsets.set(w.mStableInsets);
w.mLastOutsets.set(w.mOutsets);
- w.mLastFrame.set(w.mFrame);
makeWindowFreezingScreenIfNeededLocked(w);
// If the orientation is changing, or we're starting or ending
// a drag resizing action, then we need to hold off on unfreezing
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
index feeed8b..e828650 100644
--- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
+++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
@@ -2093,8 +2093,9 @@
void removeActiveAdminLocked(final ComponentName adminReceiver, final int userHandle) {
final ActiveAdmin admin = getActiveAdminUncheckedLocked(adminReceiver, userHandle);
- if (admin != null) {
- getUserData(userHandle).mRemovingAdmins.add(adminReceiver);
+ DevicePolicyData policy = getUserData(userHandle);
+ if (admin != null && !policy.mRemovingAdmins.contains(adminReceiver)) {
+ policy.mRemovingAdmins.add(adminReceiver);
sendAdminCommandLocked(admin,
DeviceAdminReceiver.ACTION_DEVICE_ADMIN_DISABLED,
new BroadcastReceiver() {
@@ -5706,7 +5707,8 @@
}
synchronized (this) {
enforceCanSetDeviceOwnerLocked(userId);
- if (getActiveAdminUncheckedLocked(admin, userId) == null) {
+ if (getActiveAdminUncheckedLocked(admin, userId) == null
+ || getUserData(userId).mRemovingAdmins.contains(admin)) {
throw new IllegalArgumentException("Not active admin: " + admin);
}
@@ -5894,7 +5896,8 @@
synchronized (this) {
enforceCanSetProfileOwnerLocked(userHandle);
- if (getActiveAdminUncheckedLocked(who, userHandle) == null) {
+ if (getActiveAdminUncheckedLocked(who, userHandle) == null
+ || getUserData(userHandle).mRemovingAdmins.contains(who)) {
throw new IllegalArgumentException("Not active admin: " + who);
}
diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java
index a3dc343..ea4ea14 100644
--- a/telephony/java/android/telephony/TelephonyManager.java
+++ b/telephony/java/android/telephony/TelephonyManager.java
@@ -705,6 +705,17 @@
"android.telephony.extra.LAUNCH_VOICEMAIL_SETTINGS_INTENT";
/**
+ * {@link android.telecom.Connection} event used to indicate that an IMS call failed to be
+ * handed over from LTE to WIFI.
+ * <p>
+ * Sent via {@link android.telecom.Connection#sendConnectionEvent(String, Bundle)}.
+ * The {@link Bundle} parameter is expected to be null when this connection event is used.
+ * @hide
+ */
+ public static final String EVENT_HANDOVER_TO_WIFI_FAILED =
+ "android.telephony.event.EVENT_HANDOVER_TO_WIFI_FAILED";
+
+ /**
* Response codes for sim activation. Activation completed successfully.
* @hide
*/