diff options
222 files changed, 5326 insertions, 1898 deletions
diff --git a/api/current.txt b/api/current.txt index 6851bbf36df6..840a275a91f7 100644 --- a/api/current.txt +++ b/api/current.txt @@ -28391,6 +28391,7 @@ package android.telecom { method public void addNewIncomingCall(android.telecom.PhoneAccountHandle, android.os.Bundle); method public void cancelMissedCallsNotification(); method public void clearAccounts(); + method public android.net.Uri getAdnUriForPhoneAccount(android.telecom.PhoneAccountHandle); method public android.telecom.PhoneAccountHandle getConnectionManager(); method public android.telecom.PhoneAccount getPhoneAccount(android.telecom.PhoneAccountHandle); method public java.util.List<android.telecom.PhoneAccountHandle> getPhoneAccountsForPackage(); @@ -28849,26 +28850,20 @@ package android.telephony { } public class SubInfoRecord implements android.os.Parcelable { - ctor public SubInfoRecord(); - ctor public SubInfoRecord(int, java.lang.String, int, java.lang.String, int, int, java.lang.String, int, int, int[], int, int); method public int describeContents(); method public int getColor(); - method public android.graphics.drawable.BitmapDrawable getIconDrawable(); - method public java.lang.String getLabel(); + method public int getDataRoaming(); + method public java.lang.CharSequence getDisplayName(); + method public java.lang.String getIccId(); + method public android.graphics.drawable.BitmapDrawable getIcon(); + method public int getMcc(); + method public int getMnc(); + method public int getNameSource(); + method public java.lang.String getNumber(); + method public int getSimSlotIndex(); + method public int getSubscriptionId(); method public void writeToParcel(android.os.Parcel, int); field public static final android.os.Parcelable.Creator<android.telephony.SubInfoRecord> CREATOR; - field public int color; - field public int dataRoaming; - field public java.lang.String displayName; - field public int displayNumberFormat; - field public java.lang.String iccId; - field public int mcc; - field public int mnc; - field public int nameSource; - field public java.lang.String number; - field public int[] simIconRes; - field public int slotId; - field public int subId; } public class SubscriptionManager implements android.provider.BaseColumns { @@ -30278,19 +30273,6 @@ package android.text.format { method public static java.text.DateFormat getMediumDateFormat(android.content.Context); method public static java.text.DateFormat getTimeFormat(android.content.Context); method public static boolean is24HourFormat(android.content.Context); - field public static final deprecated char AM_PM = 97; // 0x0061 'a' - field public static final deprecated char CAPITAL_AM_PM = 65; // 0x0041 'A' - field public static final deprecated char DATE = 100; // 0x0064 'd' - field public static final deprecated char DAY = 69; // 0x0045 'E' - field public static final deprecated char HOUR = 104; // 0x0068 'h' - field public static final deprecated char HOUR_OF_DAY = 107; // 0x006b 'k' - field public static final deprecated char MINUTE = 109; // 0x006d 'm' - field public static final deprecated char MONTH = 77; // 0x004d 'M' - field public static final deprecated char QUOTE = 39; // 0x0027 '\'' - field public static final deprecated char SECONDS = 115; // 0x0073 's' - field public static final deprecated char STANDALONE_MONTH = 76; // 0x004c 'L' - field public static final deprecated char TIME_ZONE = 122; // 0x007a 'z' - field public static final deprecated char YEAR = 121; // 0x0079 'y' } public class DateUtils { diff --git a/api/removed.txt b/api/removed.txt index 89726793064c..1b69ee8229f6 100644 --- a/api/removed.txt +++ b/api/removed.txt @@ -22,6 +22,26 @@ package android.os { } +package android.text.format { + + public class DateFormat { + field public static final deprecated char AM_PM = 97; // 0x0061 'a' + field public static final deprecated char CAPITAL_AM_PM = 65; // 0x0041 'A' + field public static final deprecated char DATE = 100; // 0x0064 'd' + field public static final deprecated char DAY = 69; // 0x0045 'E' + field public static final deprecated char HOUR = 104; // 0x0068 'h' + field public static final deprecated char HOUR_OF_DAY = 107; // 0x006b 'k' + field public static final deprecated char MINUTE = 109; // 0x006d 'm' + field public static final deprecated char MONTH = 77; // 0x004d 'M' + field public static final deprecated char QUOTE = 39; // 0x0027 '\'' + field public static final deprecated char SECONDS = 115; // 0x0073 's' + field public static final deprecated char STANDALONE_MONTH = 76; // 0x004c 'L' + field public static final deprecated char TIME_ZONE = 122; // 0x007a 'z' + field public static final deprecated char YEAR = 121; // 0x0079 'y' + } + +} + package android.view { public class View implements android.view.accessibility.AccessibilityEventSource android.graphics.drawable.Drawable.Callback android.view.KeyEvent.Callback { diff --git a/core/java/android/content/Intent.java b/core/java/android/content/Intent.java index 7676e4b8d6fc..e06f034c1570 100644 --- a/core/java/android/content/Intent.java +++ b/core/java/android/content/Intent.java @@ -41,6 +41,7 @@ import android.os.Bundle; import android.os.IBinder; import android.os.Parcel; import android.os.Parcelable; +import android.os.Process; import android.os.StrictMode; import android.os.UserHandle; import android.provider.DocumentsContract; @@ -7498,8 +7499,10 @@ public class Intent implements Parcelable, Cloneable { */ public void prepareToEnterProcess() { if (mContentUserHint != UserHandle.USER_CURRENT) { - fixUris(mContentUserHint); - mContentUserHint = UserHandle.USER_CURRENT; + if (UserHandle.getAppId(Process.myUid()) != Process.SYSTEM_UID) { + fixUris(mContentUserHint); + mContentUserHint = UserHandle.USER_CURRENT; + } } } diff --git a/core/java/android/os/Debug.java b/core/java/android/os/Debug.java index 084ca30e263c..3f42d25d830e 100644 --- a/core/java/android/os/Debug.java +++ b/core/java/android/os/Debug.java @@ -165,7 +165,7 @@ public final class Debug public int otherSwappedOut; /** @hide */ - public static final int NUM_OTHER_STATS = 16; + public static final int NUM_OTHER_STATS = 17; /** @hide */ public static final int NUM_DVK_STATS = 5; @@ -296,23 +296,24 @@ public final class Debug case 1: return "Stack"; case 2: return "Cursor"; case 3: return "Ashmem"; - case 4: return "Other dev"; - case 5: return ".so mmap"; - case 6: return ".jar mmap"; - case 7: return ".apk mmap"; - case 8: return ".ttf mmap"; - case 9: return ".dex mmap"; - case 10: return "code mmap"; - case 11: return "image mmap"; - case 12: return "Other mmap"; - case 13: return "Graphics"; - case 14: return "GL"; - case 15: return "Memtrack"; - case 16: return ".Heap"; - case 17: return ".LOS"; - case 18: return ".LinearAlloc"; - case 19: return ".GC"; - case 20: return ".JITCache"; + case 4: return "Gfx driver"; + case 5: return "Other dev"; + case 6: return ".so mmap"; + case 7: return ".jar mmap"; + case 8: return ".apk mmap"; + case 9: return ".ttf mmap"; + case 10: return ".dex mmap"; + case 11: return ".oat mmap"; + case 12: return ".art mmap"; + case 13: return "Other mmap"; + case 14: return "Graphics"; + case 15: return "GL"; + case 16: return "Memtrack"; + case 17: return ".Heap"; + case 18: return ".LOS"; + case 19: return ".LinearAlloc"; + case 20: return ".GC"; + case 21: return ".JITCache"; default: return "????"; } } diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java index c54a5ba80548..1ea520d109f2 100644 --- a/core/java/android/provider/Settings.java +++ b/core/java/android/provider/Settings.java @@ -2625,12 +2625,6 @@ public final class Settings { public static final String LOCK_TO_APP_ENABLED = "lock_to_app_enabled"; /** - * Whether lock-to-app will lock the keyguard when exiting. - * @hide - */ - public static final String LOCK_TO_APP_EXIT_LOCKED = "lock_to_app_exit_locked"; - - /** * I am the lolrus. * <p> * Nonzero values indicate that the user has a bukkit. @@ -2704,6 +2698,7 @@ public final class Settings { POINTER_SPEED, VIBRATE_WHEN_RINGING, RINGTONE, + LOCK_TO_APP_ENABLED, NOTIFICATION_SOUND }; @@ -3666,6 +3661,12 @@ public final class Settings { "lock_biometric_weak_flags"; /** + * Whether lock-to-app will lock the keyguard when exiting. + * @hide + */ + public static final String LOCK_TO_APP_EXIT_LOCKED = "lock_to_app_exit_locked"; + + /** * Whether autolock is enabled (0 = false, 1 = true) */ public static final String LOCK_PATTERN_ENABLED = "lock_pattern_autolock"; diff --git a/core/java/android/text/format/DateFormat.java b/core/java/android/text/format/DateFormat.java index 9fec9a1f5a31..933bcee1199d 100755 --- a/core/java/android/text/format/DateFormat.java +++ b/core/java/android/text/format/DateFormat.java @@ -60,27 +60,45 @@ import libcore.icu.LocaleData; * {@code SimpleDateFormat}. */ public class DateFormat { - /** @deprecated Use a literal {@code '} instead. */ + /** + * @deprecated Use a literal {@code '} instead. + * @removed + */ @Deprecated public static final char QUOTE = '\''; - /** @deprecated Use a literal {@code 'a'} instead. */ + /** + * @deprecated Use a literal {@code 'a'} instead. + * @removed + */ @Deprecated public static final char AM_PM = 'a'; - /** @deprecated Use a literal {@code 'a'} instead; 'A' was always equivalent to 'a'. */ + /** + * @deprecated Use a literal {@code 'a'} instead; 'A' was always equivalent to 'a'. + * @removed + */ @Deprecated public static final char CAPITAL_AM_PM = 'A'; - /** @deprecated Use a literal {@code 'd'} instead. */ + /** + * @deprecated Use a literal {@code 'd'} instead. + * @removed + */ @Deprecated public static final char DATE = 'd'; - /** @deprecated Use a literal {@code 'E'} instead. */ + /** + * @deprecated Use a literal {@code 'E'} instead. + * @removed + */ @Deprecated public static final char DAY = 'E'; - /** @deprecated Use a literal {@code 'h'} instead. */ + /** + * @deprecated Use a literal {@code 'h'} instead. + * @removed + */ @Deprecated public static final char HOUR = 'h'; @@ -88,31 +106,51 @@ public class DateFormat { * @deprecated Use a literal {@code 'H'} (for compatibility with {@link SimpleDateFormat} * and Unicode) or {@code 'k'} (for compatibility with Android releases up to and including * Jelly Bean MR-1) instead. Note that the two are incompatible. + * + * @removed */ @Deprecated public static final char HOUR_OF_DAY = 'k'; - /** @deprecated Use a literal {@code 'm'} instead. */ + /** + * @deprecated Use a literal {@code 'm'} instead. + * @removed + */ @Deprecated public static final char MINUTE = 'm'; - /** @deprecated Use a literal {@code 'M'} instead. */ + /** + * @deprecated Use a literal {@code 'M'} instead. + * @removed + */ @Deprecated public static final char MONTH = 'M'; - /** @deprecated Use a literal {@code 'L'} instead. */ + /** + * @deprecated Use a literal {@code 'L'} instead. + * @removed + */ @Deprecated public static final char STANDALONE_MONTH = 'L'; - /** @deprecated Use a literal {@code 's'} instead. */ + /** + * @deprecated Use a literal {@code 's'} instead. + * @removed + */ @Deprecated public static final char SECONDS = 's'; - /** @deprecated Use a literal {@code 'z'} instead. */ + /** + * @deprecated Use a literal {@code 'z'} instead. + * @removed + */ @Deprecated public static final char TIME_ZONE = 'z'; - /** @deprecated Use a literal {@code 'y'} instead. */ + /** + * @deprecated Use a literal {@code 'y'} instead. + * @removed + */ @Deprecated public static final char YEAR = 'y'; @@ -306,9 +344,9 @@ public class DateFormat { } /** - * Gets the current date format stored as a char array. The array will contain - * 3 elements ({@link #DATE}, {@link #MONTH}, and {@link #YEAR}) in the order - * specified by the user's format preference. Note that this order is + * Gets the current date format stored as a char array. Returns a 3 element + * array containing the day ({@code 'd'}), month ({@code 'M'}), and year ({@code 'y'})) + * in the order specified by the user's format preference. Note that this order is * <i>only</i> appropriate for all-numeric dates; spelled-out (MEDIUM and LONG) * dates will generally contain other punctuation, spaces, or words, * not just the day, month, and year, and not necessarily in the same diff --git a/core/java/android/view/RenderNodeAnimator.java b/core/java/android/view/RenderNodeAnimator.java index debf45de0a4f..b95f9a4cab52 100644 --- a/core/java/android/view/RenderNodeAnimator.java +++ b/core/java/android/view/RenderNodeAnimator.java @@ -219,7 +219,7 @@ public class RenderNodeAnimator extends Animator { @Override public void cancel() { - if (mState != STATE_FINISHED) { + if (mState != STATE_PREPARE && mState != STATE_FINISHED) { if (mState == STATE_DELAYED) { getHelper().removeDelayedAnimation(this); notifyStartListeners(); diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java index f0d52528807d..64501464cf5a 100644 --- a/core/java/android/view/ViewRootImpl.java +++ b/core/java/android/view/ViewRootImpl.java @@ -1649,6 +1649,9 @@ public final class ViewRootImpl implements ViewParent, mLastScrolledFocus.clear(); } mScrollY = mCurScrollY = 0; + if (mView instanceof RootViewSurfaceTaker) { + ((RootViewSurfaceTaker) mView).onRootViewScrollYChanged(mCurScrollY); + } if (mScroller != null) { mScroller.abortAnimation(); } @@ -2419,6 +2422,9 @@ public final class ViewRootImpl implements ViewParent, if (mCurScrollY != curScrollY) { mCurScrollY = curScrollY; fullRedrawNeeded = true; + if (mView instanceof RootViewSurfaceTaker) { + ((RootViewSurfaceTaker) mView).onRootViewScrollYChanged(mCurScrollY); + } } final float appScale = mAttachInfo.mApplicationScale; diff --git a/core/java/android/widget/Toolbar.java b/core/java/android/widget/Toolbar.java index d4d186c94e23..f90d64a24804 100644 --- a/core/java/android/widget/Toolbar.java +++ b/core/java/android/widget/Toolbar.java @@ -1752,6 +1752,17 @@ public class Toolbar extends ViewGroup { } /** + * Accessor to enable LayoutLib to get ActionMenuPresenter directly. + */ + ActionMenuPresenter getOuterActionMenuPresenter() { + return mOuterActionMenuPresenter; + } + + Context getPopupContext() { + return mPopupContext; + } + + /** * Interface responsible for receiving menu item click events if the items themselves * do not have individual item click listeners. */ diff --git a/core/java/com/android/internal/app/ChooserActivity.java b/core/java/com/android/internal/app/ChooserActivity.java index 0bc1a8d4e5fd..64bd6b66c734 100644 --- a/core/java/com/android/internal/app/ChooserActivity.java +++ b/core/java/com/android/internal/app/ChooserActivity.java @@ -20,6 +20,7 @@ import android.app.Activity; import android.content.ComponentName; import android.content.Intent; import android.content.IntentSender; +import android.content.pm.ActivityInfo; import android.os.Bundle; import android.os.Parcelable; import android.util.Log; @@ -75,16 +76,21 @@ public class ChooserActivity extends ResolverActivity { } @Override - public Intent getReplacementIntent(String packageName, Intent defIntent) { + public Intent getReplacementIntent(ActivityInfo aInfo, Intent defIntent) { + Intent result = defIntent; if (mReplacementExtras != null) { - final Bundle replExtras = mReplacementExtras.getBundle(packageName); + final Bundle replExtras = mReplacementExtras.getBundle(aInfo.packageName); if (replExtras != null) { - final Intent result = new Intent(defIntent); + result = new Intent(defIntent); result.putExtras(replExtras); - return result; } } - return defIntent; + if (aInfo.name.equals(IntentForwarderActivity.FORWARD_INTENT_TO_USER_OWNER) + || aInfo.name.equals(IntentForwarderActivity.FORWARD_INTENT_TO_MANAGED_PROFILE)) { + result = Intent.createChooser(result, + getIntent().getCharSequenceExtra(Intent.EXTRA_TITLE)); + } + return result; } @Override diff --git a/core/java/com/android/internal/app/IntentForwarderActivity.java b/core/java/com/android/internal/app/IntentForwarderActivity.java index 6e2f84a3e44e..9656a21d79de 100644 --- a/core/java/com/android/internal/app/IntentForwarderActivity.java +++ b/core/java/com/android/internal/app/IntentForwarderActivity.java @@ -58,21 +58,22 @@ public class IntentForwarderActivity extends Activity { Intent intentReceived = getIntent(); String className = intentReceived.getComponent().getClassName(); - final UserHandle userDest; + final int targetUserId; final int userMessageId; if (className.equals(FORWARD_INTENT_TO_USER_OWNER)) { userMessageId = com.android.internal.R.string.forward_intent_to_owner; - userDest = UserHandle.OWNER; + targetUserId = UserHandle.USER_OWNER; } else if (className.equals(FORWARD_INTENT_TO_MANAGED_PROFILE)) { userMessageId = com.android.internal.R.string.forward_intent_to_work; - userDest = getManagedProfile(); + targetUserId = getManagedProfile(); } else { Slog.wtf(TAG, IntentForwarderActivity.class.getName() + " cannot be called directly"); userMessageId = -1; - userDest = null; + targetUserId = UserHandle.USER_NULL; } - if (userDest == null) { // This covers the case where there is no managed profile. + if (targetUserId == UserHandle.USER_NULL) { + // This covers the case where there is no managed profile. finish(); return; } @@ -83,31 +84,24 @@ public class IntentForwarderActivity extends Activity { newIntent.addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT |Intent.FLAG_ACTIVITY_PREVIOUS_IS_TOP); int callingUserId = getUserId(); - IPackageManager ipm = AppGlobals.getPackageManager(); - String resolvedType = newIntent.resolveTypeIfNeeded(getContentResolver()); - boolean canForward = false; - Intent selector = newIntent.getSelector(); - if (selector == null) { - selector = newIntent; - } - try { - canForward = ipm.canForwardTo(selector, resolvedType, callingUserId, - userDest.getIdentifier()); - } catch (RemoteException e) { - Slog.e(TAG, "PackageManagerService is dead?"); - } - if (canForward) { - newIntent.setContentUserHint(callingUserId); + + if (canForward(newIntent, targetUserId)) { + if (newIntent.getAction().equals(Intent.ACTION_CHOOSER)) { + Intent innerIntent = (Intent) newIntent.getParcelableExtra(Intent.EXTRA_INTENT); + innerIntent.setContentUserHint(callingUserId); + } else { + newIntent.setContentUserHint(callingUserId); + } final android.content.pm.ResolveInfo ri = getPackageManager().resolveActivityAsUser( - newIntent, MATCH_DEFAULT_ONLY, userDest.getIdentifier()); + newIntent, MATCH_DEFAULT_ONLY, targetUserId); // Only show a disclosure if this is a normal (non-OS) app final boolean shouldShowDisclosure = !UserHandle.isSameApp(ri.activityInfo.applicationInfo.uid, Process.SYSTEM_UID); try { - startActivityAsCaller(newIntent, null, userDest.getIdentifier()); + startActivityAsCaller(newIntent, null, targetUserId); } catch (RuntimeException e) { int launchedFromUid = -1; String launchedFromPackage = "?"; @@ -129,26 +123,55 @@ public class IntentForwarderActivity extends Activity { } } else { Slog.wtf(TAG, "the intent: " + newIntent + "cannot be forwarded from user " - + callingUserId + " to user " + userDest.getIdentifier()); + + callingUserId + " to user " + targetUserId); } finish(); } + boolean canForward(Intent intent, int targetUserId) { + IPackageManager ipm = AppGlobals.getPackageManager(); + if (intent.getAction().equals(Intent.ACTION_CHOOSER)) { + // The EXTRA_INITIAL_INTENTS may not be allowed to be forwarded. + if (intent.hasExtra(Intent.EXTRA_INITIAL_INTENTS)) { + Slog.wtf(TAG, "An chooser intent with extra initial intents cannot be forwarded to" + + " a different user"); + return false; + } + if (intent.hasExtra(Intent.EXTRA_REPLACEMENT_EXTRAS)) { + Slog.wtf(TAG, "A chooser intent with replacement extras cannot be forwarded to a" + + " different user"); + return false; + } + intent = (Intent) intent.getParcelableExtra(Intent.EXTRA_INTENT); + } + String resolvedType = intent.resolveTypeIfNeeded(getContentResolver()); + if (intent.getSelector() != null) { + intent = intent.getSelector(); + } + try { + return ipm.canForwardTo(intent, resolvedType, getUserId(), + targetUserId); + } catch (RemoteException e) { + Slog.e(TAG, "PackageManagerService is dead?"); + return false; + } + } + /** - * Returns the managed profile for this device or null if there is no managed - * profile. + * Returns the userId of the managed profile for this device or UserHandle.USER_NULL if there is + * no managed profile. * * TODO: Remove the assumption that there is only one managed profile * on the device. */ - private UserHandle getManagedProfile() { + private int getManagedProfile() { UserManager userManager = (UserManager) getSystemService(Context.USER_SERVICE); List<UserInfo> relatedUsers = userManager.getProfiles(UserHandle.USER_OWNER); for (UserInfo userInfo : relatedUsers) { - if (userInfo.isManagedProfile()) return new UserHandle(userInfo.id); + if (userInfo.isManagedProfile()) return userInfo.id; } Slog.wtf(TAG, FORWARD_INTENT_TO_MANAGED_PROFILE + " has been called, but there is no managed profile"); - return null; + return UserHandle.USER_NULL; } } diff --git a/core/java/com/android/internal/app/ResolverActivity.java b/core/java/com/android/internal/app/ResolverActivity.java index 7df76e533e74..376db6e821f3 100644 --- a/core/java/com/android/internal/app/ResolverActivity.java +++ b/core/java/com/android/internal/app/ResolverActivity.java @@ -100,6 +100,7 @@ public class ResolverActivity extends Activity implements AdapterView.OnItemClic private int mMaxColumns; private int mLastSelected = ListView.INVALID_POSITION; private boolean mResolvingHome = false; + private int mProfileSwitchMessageId = -1; private UsageStatsManager mUsm; private Map<String, UsageStats> mStats; @@ -200,6 +201,11 @@ public class ResolverActivity extends Activity implements AdapterView.OnItemClic List<ResolveInfo> rList, boolean alwaysUseOption) { setTheme(R.style.Theme_DeviceDefault_Resolver); super.onCreate(savedInstanceState); + + // Determine whether we should show that intent is forwarded + // from managed profile to owner or other way around. + setProfileSwitchMessageId(intent.getContentUserHint()); + try { mLaunchedFromUid = ActivityManagerNative.getDefault().getLaunchedFromUid( getActivityToken()); @@ -320,6 +326,22 @@ public class ResolverActivity extends Activity implements AdapterView.OnItemClic } } + private void setProfileSwitchMessageId(int contentUserHint) { + if (contentUserHint != UserHandle.USER_CURRENT && + contentUserHint != UserHandle.myUserId()) { + UserManager userManager = (UserManager) getSystemService(Context.USER_SERVICE); + UserInfo originUserInfo = userManager.getUserInfo(contentUserHint); + boolean originIsManaged = originUserInfo != null ? originUserInfo.isManagedProfile() + : false; + boolean targetIsManaged = userManager.isManagedProfile(); + if (originIsManaged && !targetIsManaged) { + mProfileSwitchMessageId = com.android.internal.R.string.forward_intent_to_owner; + } else if (!originIsManaged && targetIsManaged) { + mProfileSwitchMessageId = com.android.internal.R.string.forward_intent_to_work; + } + } + } + /** * Turn on launch mode that is safe to use when forwarding intents received from * applications and running in system processes. This mode uses Activity.startActivityAsCaller @@ -529,7 +551,7 @@ public class ResolverActivity extends Activity implements AdapterView.OnItemClic /** * Replace me in subclasses! */ - public Intent getReplacementIntent(String packageName, Intent defIntent) { + public Intent getReplacementIntent(ActivityInfo aInfo, Intent defIntent) { return defIntent; } @@ -642,6 +664,11 @@ public class ResolverActivity extends Activity implements AdapterView.OnItemClic } public void safelyStartActivity(Intent intent) { + // If needed, show that intent is forwarded + // from managed profile to owner or other way around. + if (mProfileSwitchMessageId != -1) { + Toast.makeText(this, getString(mProfileSwitchMessageId), Toast.LENGTH_LONG).show(); + } if (!mSafeForwardingMode) { startActivity(intent); onActivityStarted(intent); @@ -943,7 +970,7 @@ public class ResolverActivity extends Activity implements AdapterView.OnItemClic DisplayResolveInfo dri = filtered ? getItem(position) : mList.get(position); Intent intent = new Intent(dri.origIntent != null ? dri.origIntent : - getReplacementIntent(dri.ri.activityInfo.packageName, mIntent)); + getReplacementIntent(dri.ri.activityInfo, mIntent)); intent.addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT |Intent.FLAG_ACTIVITY_PREVIOUS_IS_TOP); ActivityInfo ai = dri.ri.activityInfo; diff --git a/core/java/com/android/internal/statusbar/IStatusBarService.aidl b/core/java/com/android/internal/statusbar/IStatusBarService.aidl index e6bcea1eb4ab..5e610ed32d00 100644 --- a/core/java/com/android/internal/statusbar/IStatusBarService.aidl +++ b/core/java/com/android/internal/statusbar/IStatusBarService.aidl @@ -51,7 +51,7 @@ interface IStatusBarService void onNotificationVisibilityChanged( in String[] newlyVisibleKeys, in String[] noLongerVisibleKeys); void onNotificationExpansionChanged(in String key, in boolean userAction, in boolean expanded); - void setSystemUiVisibility(int vis, int mask); + void setSystemUiVisibility(int vis, int mask, String cause); void setWindowState(int window, int state); void showRecentApps(boolean triggeredFromAltTab); diff --git a/core/java/com/android/internal/view/RootViewSurfaceTaker.java b/core/java/com/android/internal/view/RootViewSurfaceTaker.java index 9c1b558c740b..433ec730749c 100644 --- a/core/java/com/android/internal/view/RootViewSurfaceTaker.java +++ b/core/java/com/android/internal/view/RootViewSurfaceTaker.java @@ -1,3 +1,18 @@ +/* + * Copyright (C) 2010 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package com.android.internal.view; import android.view.InputQueue; @@ -10,4 +25,5 @@ public interface RootViewSurfaceTaker { void setSurfaceFormat(int format); void setSurfaceKeepScreenOn(boolean keepOn); InputQueue.Callback willYouTakeTheInputQueue(); + void onRootViewScrollYChanged(int scrollY); } diff --git a/core/jni/android_os_Debug.cpp b/core/jni/android_os_Debug.cpp index 9ec9993a248c..178bab6bba5d 100644 --- a/core/jni/android_os_Debug.cpp +++ b/core/jni/android_os_Debug.cpp @@ -46,10 +46,12 @@ enum { HEAP_UNKNOWN, HEAP_DALVIK, HEAP_NATIVE, + HEAP_DALVIK_OTHER, HEAP_STACK, HEAP_CURSOR, HEAP_ASHMEM, + HEAP_GL_DEV, HEAP_UNKNOWN_DEV, HEAP_SO, HEAP_JAR, @@ -297,7 +299,11 @@ static void read_mapinfo(FILE *fp, stats_t* stats) } else if (strncmp(name, "[stack", 6) == 0) { whichHeap = HEAP_STACK; } else if (strncmp(name, "/dev/", 5) == 0) { - whichHeap = HEAP_UNKNOWN_DEV; + if (strncmp(name, "/dev/kgsl-3d0", 13) == 0) { + whichHeap = HEAP_GL_DEV; + } else { + whichHeap = HEAP_UNKNOWN_DEV; + } } else if (nameLen > 3 && strcmp(name+nameLen-3, ".so") == 0) { whichHeap = HEAP_SO; is_swappable = true; diff --git a/core/res/res/values-af/strings.xml b/core/res/res/values-af/strings.xml index ec4bd5027b3e..7598aa37e881 100644 --- a/core/res/res/values-af/strings.xml +++ b/core/res/res/values-af/strings.xml @@ -716,8 +716,14 @@ <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"Laat die program toe om die kaslêerstelsel te lees en skryf."</string> <string name="permlab_use_sip" msgid="2052499390128979920">"maak en/of ontvang SIP-oproepe"</string> <string name="permdesc_use_sip" msgid="2297804849860225257">"Laat die program toe om SIP-oproepe te maak en te ontvang."</string> - <string name="permlab_register_provider" msgid="2654513709546459553">"registreer nuwe telekom-verbinding"</string> - <string name="permdesc_register_provider" msgid="7571533832018681544">"Laat die program toe om nuwe telekom-verbindings te registreer."</string> + <!-- no translation found for permlab_register_sim_subscription (3166535485877549177) --> + <skip /> + <!-- no translation found for permdesc_register_sim_subscription (2138909035926222911) --> + <skip /> + <!-- no translation found for permlab_register_call_provider (108102120289029841) --> + <skip /> + <!-- no translation found for permdesc_register_call_provider (7034310263521081388) --> + <skip /> <string name="permlab_connection_manager" msgid="1116193254522105375">"bestuur telekom-verbindings"</string> <string name="permdesc_connection_manager" msgid="5925480810356483565">"Laat die program toe om telekom-verbindings te bestuur."</string> <string name="permlab_bind_incall_service" msgid="6773648341975287125">"beleef interaksie met inoproep-skerm"</string> @@ -1233,6 +1239,7 @@ <string name="smv_application" msgid="3307209192155442829">"Die program <xliff:g id="APPLICATION">%1$s</xliff:g> (proses <xliff:g id="PROCESS">%2$s</xliff:g>) het sy selfopgelegde StrictMode-beleid oortree."</string> <string name="smv_process" msgid="5120397012047462446">"Die proses <xliff:g id="PROCESS">%1$s</xliff:g> het die selfopgelegde StrictMode-beleid geskend."</string> <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_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> <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Begin programme."</string> <string name="android_upgrading_complete" msgid="1405954754112999229">"Voltooi herlaai."</string> @@ -1776,10 +1783,14 @@ <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Vra wagwoord voordat jy ontspeld"</string> <string name="battery_saver_description" msgid="2510530476513605742">"Om batteryleeftyd te help verbeter, verminder batterybespaarder jou toestel se werkverrigting en beperk vibrasie en die meeste agtergronddata. E-pos, boodskappe en ander programme wat op sinkronisering staatmaak, sal dalk nie opdateer nie tensy jy hulle oopmaak.\n\nBatterybespaarder skakel outomaties af wanneer jou toestel laai."</string> <string name="downtime_condition_summary" msgid="8761776337475705749">"Totdat jou ontspantyd om <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> eindig"</string> - <!-- no translation found for zen_mode_duration_minutes_summary:one (3177683545388923234) --> - <!-- no translation found for zen_mode_duration_minutes_summary:other (2787867221129368935) --> - <!-- no translation found for zen_mode_duration_hours_summary:one (597194865053253679) --> - <!-- no translation found for zen_mode_duration_hours_summary:other (2827214920627669898) --> + <plurals name="zen_mode_duration_minutes_summary"> + <item quantity="one" msgid="3177683545388923234">"Vir een minuut (tot <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2787867221129368935">"Vir %1$d minute (tot <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> + <plurals name="zen_mode_duration_hours_summary"> + <item quantity="one" msgid="597194865053253679">"Vir een uur (tot <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2827214920627669898">"Vir %1$d ure (tot <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> <plurals name="zen_mode_duration_minutes"> <item quantity="one" msgid="9040808414992812341">"Een minuut lank"</item> <item quantity="other" msgid="6924190729213550991">"%d minute lank"</item> @@ -1788,7 +1799,7 @@ <item quantity="one" msgid="3480040795582254384">"Een uur lank"</item> <item quantity="other" msgid="5408537517529822157">"%d uur lank"</item> </plurals> - <!-- no translation found for zen_mode_until (7336308492289875088) --> - <skip /> + <string name="zen_mode_until" msgid="7336308492289875088">"Tot <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_forever" msgid="4316804956488785559">"Onbepaalde tyd"</string> + <string name="toolbar_collapse_description" msgid="2821479483960330739">"Vou in"</string> </resources> diff --git a/core/res/res/values-am/strings.xml b/core/res/res/values-am/strings.xml index 2ba358dfb784..da4136d354c8 100644 --- a/core/res/res/values-am/strings.xml +++ b/core/res/res/values-am/strings.xml @@ -716,8 +716,14 @@ <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"መሸጎጫ ስርዓተ ፋይል ለማንበብ እና ለመፃፍ ለመተግበሪያው ይፈቅዳሉ።"</string> <string name="permlab_use_sip" msgid="2052499390128979920">"የSIP ጥሪዎችን ያድርጉ/ይቀበሉ"</string> <string name="permdesc_use_sip" msgid="2297804849860225257">"መተግበሪያው የSIP ጥሪዎችን እንዲያደር እና እንዲቀበል ያስችላል።"</string> - <string name="permlab_register_provider" msgid="2654513709546459553">"አዲስ የቴሌኮም ግንኙነት ይመዘግባል"</string> - <string name="permdesc_register_provider" msgid="7571533832018681544">"መተግበሪያው አዲስ የቴሌክኮም ግንኙነቶችን እንዲመዘግብ ያስችለዋል"</string> + <!-- no translation found for permlab_register_sim_subscription (3166535485877549177) --> + <skip /> + <!-- no translation found for permdesc_register_sim_subscription (2138909035926222911) --> + <skip /> + <!-- no translation found for permlab_register_call_provider (108102120289029841) --> + <skip /> + <!-- no translation found for permdesc_register_call_provider (7034310263521081388) --> + <skip /> <string name="permlab_connection_manager" msgid="1116193254522105375">"የቴሌኮም ግንኙነቶችን ያቀናብራል"</string> <string name="permdesc_connection_manager" msgid="5925480810356483565">"መተግበሪያው የቴሌኮም ግንኙነቶችን እንዲያቀናብር ያስችለዋል።"</string> <string name="permlab_bind_incall_service" msgid="6773648341975287125">"ከውስጠ-ጥሪ ማያ ገጽ ጋር መስተጋብር ይፈጥራል"</string> @@ -1233,6 +1239,7 @@ <string name="smv_application" msgid="3307209192155442829">"መተግበሪያው <xliff:g id="APPLICATION">%1$s</xliff:g>( ሂደት<xliff:g id="PROCESS">%2$s</xliff:g>) በራስ ተነሳሺ StrictMode ደንብን ይተላለፋል።"</string> <string name="smv_process" msgid="5120397012047462446">"ሂደቱ <xliff:g id="PROCESS">%1$s</xliff:g> በራስ ተነሳሺ StrictMode ፖሊሲን ይተላለፋል።"</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Android እያሻሻለ ነው..."</string> + <string name="android_start_title" msgid="8418054686415318207">"Android በመጀመር ላይ ነው…"</string> <string name="android_upgrading_apk" msgid="7904042682111526169">"መተግበሪያዎች በአግባቡ በመጠቀም ላይ <xliff:g id="NUMBER_0">%1$d</xliff:g> ከ <xliff:g id="NUMBER_1">%2$d</xliff:g> ፡፡"</string> <string name="android_upgrading_starting_apps" msgid="451464516346926713">"መተግበሪያዎችን በማስጀመር ላይ፡፡"</string> <string name="android_upgrading_complete" msgid="1405954754112999229">"አጨራረስ ማስነሻ፡፡"</string> @@ -1776,10 +1783,14 @@ <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"ከመንቀል በፊት የይለፍ ቃል ጠይቅ"</string> <string name="battery_saver_description" msgid="2510530476513605742">"የባትሪ ህይወትን ለማሻሻል ሲባል ባትሪ ቆጣቢ የመሣሪያዎ የስራ አፈጻጸምን እና ንዝረትንና አብዛኛውን የጀርባ ውሂብ ይቀንሳል። ኢሜይል፣ መልዕክት መላላኪያ እና ሌሎች በማመሳሰል ላይ የሚወሰኑ መተግበሪያዎች እስኪከፍቷቸው ድረስ ላይዘምኑ ይችላሉ።\n\nመሣሪያዎ ባትሪ እየሞላ ሲሆን ባትሪ ቆጣቢ በራስ-ሰር ይጠፋል።"</string> <string name="downtime_condition_summary" msgid="8761776337475705749">"የጥገና ጊዜዎ <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> ላይ እስኪያበቃ ድረስ"</string> - <!-- no translation found for zen_mode_duration_minutes_summary:one (3177683545388923234) --> - <!-- no translation found for zen_mode_duration_minutes_summary:other (2787867221129368935) --> - <!-- no translation found for zen_mode_duration_hours_summary:one (597194865053253679) --> - <!-- no translation found for zen_mode_duration_hours_summary:other (2827214920627669898) --> + <plurals name="zen_mode_duration_minutes_summary"> + <item quantity="one" msgid="3177683545388923234">"ለአንድ ደቂቃ (እስከ <xliff:g id="FORMATTEDTIME">%2$s</xliff:g> ድረስ)"</item> + <item quantity="other" msgid="2787867221129368935">"ለ%1$d ደቂቃዎች (እስከ <xliff:g id="FORMATTEDTIME">%2$s</xliff:g> ድረስ)"</item> + </plurals> + <plurals name="zen_mode_duration_hours_summary"> + <item quantity="one" msgid="597194865053253679">"ለአንድ ሰዓት (እስከ <xliff:g id="FORMATTEDTIME">%2$s</xliff:g> ድረስ)"</item> + <item quantity="other" msgid="2827214920627669898">"ለ%1$d ሰዓቶች (እስከ <xliff:g id="FORMATTEDTIME">%2$s</xliff:g> ድረስ)"</item> + </plurals> <plurals name="zen_mode_duration_minutes"> <item quantity="one" msgid="9040808414992812341">"ለአንድ ደቂቃ"</item> <item quantity="other" msgid="6924190729213550991">"ለ%d ደቂቃዎች"</item> @@ -1788,7 +1799,7 @@ <item quantity="one" msgid="3480040795582254384">"ለአንድ ሰዓት"</item> <item quantity="other" msgid="5408537517529822157">"ለ%d ሰዓቶች"</item> </plurals> - <!-- no translation found for zen_mode_until (7336308492289875088) --> - <skip /> + <string name="zen_mode_until" msgid="7336308492289875088">"እስከ <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> ድረስ"</string> <string name="zen_mode_forever" msgid="4316804956488785559">"ያለገደብ"</string> + <string name="toolbar_collapse_description" msgid="2821479483960330739">"ሰብስብ"</string> </resources> diff --git a/core/res/res/values-ar/strings.xml b/core/res/res/values-ar/strings.xml index d1320d86d545..843943256028 100644 --- a/core/res/res/values-ar/strings.xml +++ b/core/res/res/values-ar/strings.xml @@ -716,8 +716,14 @@ <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"للسماح للتطبيق بقراءة نظام ملفات ذاكرة التخزين المؤقت والكتابة به."</string> <string name="permlab_use_sip" msgid="2052499390128979920">"إجراء/تلقي مكالمات SIP"</string> <string name="permdesc_use_sip" msgid="2297804849860225257">"للسماح للتطبيق بإجراء مكالمات SIP وتلقيها."</string> - <string name="permlab_register_provider" msgid="2654513709546459553">"تسجيل الاتصال اللاسلكي الجديد"</string> - <string name="permdesc_register_provider" msgid="7571533832018681544">"للسماح للتطبيق بتسجيل الاتصالات اللاسلكية الجديدة."</string> + <!-- no translation found for permlab_register_sim_subscription (3166535485877549177) --> + <skip /> + <!-- no translation found for permdesc_register_sim_subscription (2138909035926222911) --> + <skip /> + <!-- no translation found for permlab_register_call_provider (108102120289029841) --> + <skip /> + <!-- no translation found for permdesc_register_call_provider (7034310263521081388) --> + <skip /> <string name="permlab_connection_manager" msgid="1116193254522105375">"إدارة الاتصالات اللاسلكية"</string> <string name="permdesc_connection_manager" msgid="5925480810356483565">"للسماح للتطبيق بإدارة الاتصالات اللاسلكية."</string> <string name="permlab_bind_incall_service" msgid="6773648341975287125">"التفاعل مع الشاشة أثناء الاتصال"</string> @@ -1233,6 +1239,7 @@ <string name="smv_application" msgid="3307209192155442829">"انتهك التطبيق <xliff:g id="APPLICATION">%1$s</xliff:g> (العملية <xliff:g id="PROCESS">%2$s</xliff:g>) سياسة StrictMode المفروضة ذاتيًا."</string> <string name="smv_process" msgid="5120397012047462446">"انتهكت العملية <xliff:g id="PROCESS">%1$s</xliff:g> سياسة StrictMode المفروضة ذاتيًا."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"جارٍ ترقية Android..."</string> + <string name="android_start_title" msgid="8418054686415318207">"جارٍ تشغيل Android…"</string> <string name="android_upgrading_apk" msgid="7904042682111526169">"جارٍ تحسين التطبيق <xliff:g id="NUMBER_0">%1$d</xliff:g> من <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="451464516346926713">"بدء التطبيقات."</string> <string name="android_upgrading_complete" msgid="1405954754112999229">"جارٍ إعادة التشغيل."</string> @@ -1776,10 +1783,14 @@ <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"المطالبة بكلمة المرور قبل إزالة التثبيت"</string> <string name="battery_saver_description" msgid="2510530476513605742">"للمساعدة في تحسين مدة تشغيل البطارية، يقلل وضع توفير طاقة البطارية أداء جهازك ويقلل من الاهتزاز ومعظم بيانات الخلفية. وقد لا يتم تحديث البريد الإلكتروني والمراسلة والتطبيقات الأخرى التي تعتمد على المزامنة ما لم تفتحها.\n\nيتم إيقاف وضع توفير طاقة البطارية تلقائيًا عندما يكون الجهاز قيد الشحن."</string> <string name="downtime_condition_summary" msgid="8761776337475705749">"إلى أن ينتهي وقت التوقف عن العمل في <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> - <!-- no translation found for zen_mode_duration_minutes_summary:one (3177683545388923234) --> - <!-- no translation found for zen_mode_duration_minutes_summary:other (2787867221129368935) --> - <!-- no translation found for zen_mode_duration_hours_summary:one (597194865053253679) --> - <!-- no translation found for zen_mode_duration_hours_summary:other (2827214920627669898) --> + <plurals name="zen_mode_duration_minutes_summary"> + <item quantity="one" msgid="3177683545388923234">"لمدة دقيقة واحدة (حتى <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2787867221129368935">"لمدة %1$d من الدقائق (حتى <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> + <plurals name="zen_mode_duration_hours_summary"> + <item quantity="one" msgid="597194865053253679">"لمدة ساعة واحدة (حتى <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2827214920627669898">"لمدة %1$d من الساعات (حتى <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> <plurals name="zen_mode_duration_minutes"> <item quantity="one" msgid="9040808414992812341">"لمدة دقيقة واحدة"</item> <item quantity="other" msgid="6924190729213550991">"لمدة %d من الدقائق"</item> @@ -1788,7 +1799,7 @@ <item quantity="one" msgid="3480040795582254384">"لمدة ساعة واحدة"</item> <item quantity="other" msgid="5408537517529822157">"لمدة %d من الساعات"</item> </plurals> - <!-- no translation found for zen_mode_until (7336308492289875088) --> - <skip /> + <string name="zen_mode_until" msgid="7336308492289875088">"حتى <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_forever" msgid="4316804956488785559">"إلى أجل غير مسمى"</string> + <string name="toolbar_collapse_description" msgid="2821479483960330739">"تصغير"</string> </resources> diff --git a/core/res/res/values-bg/strings.xml b/core/res/res/values-bg/strings.xml index e202127d35a4..c2f7a8f2ef99 100644 --- a/core/res/res/values-bg/strings.xml +++ b/core/res/res/values-bg/strings.xml @@ -716,8 +716,14 @@ <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"Разрешава на приложението да чете и записва във файловата система на кеша."</string> <string name="permlab_use_sip" msgid="2052499390128979920">"извършване/получаване на обаждания чрез SIP"</string> <string name="permdesc_use_sip" msgid="2297804849860225257">"Разрешава на приложението да извършва и получава обаждания чрез SIP."</string> - <string name="permlab_register_provider" msgid="2654513709546459553">"регистриране на новите телекомуникационни връзки"</string> - <string name="permdesc_register_provider" msgid="7571533832018681544">"Разрешава на приложението да регистрира новите телекомуникационни връзки."</string> + <!-- no translation found for permlab_register_sim_subscription (3166535485877549177) --> + <skip /> + <!-- no translation found for permdesc_register_sim_subscription (2138909035926222911) --> + <skip /> + <!-- no translation found for permlab_register_call_provider (108102120289029841) --> + <skip /> + <!-- no translation found for permdesc_register_call_provider (7034310263521081388) --> + <skip /> <string name="permlab_connection_manager" msgid="1116193254522105375">"управление на телекомуникационните връзки"</string> <string name="permdesc_connection_manager" msgid="5925480810356483565">"Разрешава на приложението да управлява телекомуникационните връзки."</string> <string name="permlab_bind_incall_service" msgid="6773648341975287125">"взаимодействие с екрана за обаждане"</string> @@ -1233,6 +1239,7 @@ <string name="smv_application" msgid="3307209192155442829">"Приложението „<xliff:g id="APPLICATION">%1$s</xliff:g>“ (процес „<xliff:g id="PROCESS">%2$s</xliff:g>“) наруши правилото за стриктен режим, наложено от самото него."</string> <string name="smv_process" msgid="5120397012047462446">"Процесът <xliff:g id="PROCESS">%1$s</xliff:g> наруши правилото за стриктен режим, наложено от самия него."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Android се надстройва..."</string> + <string name="android_start_title" msgid="8418054686415318207">"Android се стартира…"</string> <string name="android_upgrading_apk" msgid="7904042682111526169">"Оптимизира се приложение <xliff:g id="NUMBER_0">%1$d</xliff:g> от <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Приложенията се стартират."</string> <string name="android_upgrading_complete" msgid="1405954754112999229">"Зареждането завършва."</string> @@ -1776,10 +1783,14 @@ <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Запитване за парола преди освобождаване"</string> <string name="battery_saver_description" msgid="2510530476513605742">"С цел удължаване на живота на батерията режимът за запазването й намалява ефективността на устройството ви и ограничава вибрирането и повечето данни на заден план. Имейл, Съобщения и другите приложения, които разчитат на синхронизиране, може да не се актуализират, освен ако не ги отворите.\n\nТози режим автоматично се изключва, когато устройството ви се зарежда."</string> <string name="downtime_condition_summary" msgid="8761776337475705749">"До приключване на неактивността в <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> - <!-- no translation found for zen_mode_duration_minutes_summary:one (3177683545388923234) --> - <!-- no translation found for zen_mode_duration_minutes_summary:other (2787867221129368935) --> - <!-- no translation found for zen_mode_duration_hours_summary:one (597194865053253679) --> - <!-- no translation found for zen_mode_duration_hours_summary:other (2827214920627669898) --> + <plurals name="zen_mode_duration_minutes_summary"> + <item quantity="one" msgid="3177683545388923234">"За една минута (до <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2787867221129368935">"За %1$d минути (до <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> + <plurals name="zen_mode_duration_hours_summary"> + <item quantity="one" msgid="597194865053253679">"За един час (до <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2827214920627669898">"За %1$d часа (до <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> <plurals name="zen_mode_duration_minutes"> <item quantity="one" msgid="9040808414992812341">"За една минута"</item> <item quantity="other" msgid="6924190729213550991">"За %d минути"</item> @@ -1788,7 +1799,7 @@ <item quantity="one" msgid="3480040795582254384">"За един час"</item> <item quantity="other" msgid="5408537517529822157">"За %d часа"</item> </plurals> - <!-- no translation found for zen_mode_until (7336308492289875088) --> - <skip /> + <string name="zen_mode_until" msgid="7336308492289875088">"До <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_forever" msgid="4316804956488785559">"За неопределено време"</string> + <string name="toolbar_collapse_description" msgid="2821479483960330739">"Свиване"</string> </resources> diff --git a/core/res/res/values-bn-rBD/strings.xml b/core/res/res/values-bn-rBD/strings.xml index 43a758d26312..9c6a344f545d 100644 --- a/core/res/res/values-bn-rBD/strings.xml +++ b/core/res/res/values-bn-rBD/strings.xml @@ -716,8 +716,14 @@ <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"ক্যাশে ফাইল সিস্টেম পড়তে ও লিখতে অ্যাপ্লিকেশানকে অনুমতি দেয়৷"</string> <string name="permlab_use_sip" msgid="2052499390128979920">"SIP কল করুন/গ্রহণ করুন"</string> <string name="permdesc_use_sip" msgid="2297804849860225257">"অ্যাপ্লিকেশানকে SIP কল করতে ও গ্রহণ করতে অনুমতি দেয়।"</string> - <string name="permlab_register_provider" msgid="2654513709546459553">"নতুন টেলিকম সংযোগ নিবন্ধিত করুন"</string> - <string name="permdesc_register_provider" msgid="7571533832018681544">"নতুন টেলিকম সংযোগ নিবন্ধিত করতে অ্যাপ্লিকেশানটিকে অনুমোদিত করে৷"</string> + <!-- no translation found for permlab_register_sim_subscription (3166535485877549177) --> + <skip /> + <!-- no translation found for permdesc_register_sim_subscription (2138909035926222911) --> + <skip /> + <!-- no translation found for permlab_register_call_provider (108102120289029841) --> + <skip /> + <!-- no translation found for permdesc_register_call_provider (7034310263521081388) --> + <skip /> <string name="permlab_connection_manager" msgid="1116193254522105375">"টেলিকম সংযোগগুলি পরিচালনা করুন"</string> <string name="permdesc_connection_manager" msgid="5925480810356483565">"টেলিকম সংযোগগুলি পরিচালনা করতে অ্যাপ্লিকেশানটিকে অনুমোদিত করে৷"</string> <string name="permlab_bind_incall_service" msgid="6773648341975287125">"কলে-থাকা স্ক্রীণের সাথে ইন্টারঅ্যাক্ট করে"</string> @@ -1233,6 +1239,7 @@ <string name="smv_application" msgid="3307209192155442829">"অ্যাপ্লিকেশানটি <xliff:g id="APPLICATION">%1$s</xliff:g> (প্রক্রিয়া <xliff:g id="PROCESS">%2$s</xliff:g>) তার স্ব-প্রয়োগ করা কঠোর মোড নীতি লঙ্ঘন করেছে৷"</string> <string name="smv_process" msgid="5120397012047462446">"প্রক্রিয়াটি <xliff:g id="PROCESS">%1$s</xliff:g> তার স্ব-প্রয়োগ করা কঠোর মোড নীতি লঙ্ঘন করেছে৷"</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Android আপগ্রেড করা হচ্ছে..."</string> + <string name="android_start_title" msgid="8418054686415318207">"Android চালু হচ্ছে…"</string> <string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_1">%2$d</xliff:g>টির মধ্যে <xliff:g id="NUMBER_0">%1$d</xliff:g>টি অ্যাপ্লিকেশান অপ্টিমাইজ করা হচ্ছে৷"</string> <string name="android_upgrading_starting_apps" msgid="451464516346926713">"অ্যাপ্লিকেশানগুলি শুরু করা হচ্ছে৷"</string> <string name="android_upgrading_complete" msgid="1405954754112999229">"চালু করা সম্পূর্ণ হচ্ছে৷"</string> @@ -1776,10 +1783,14 @@ <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"আনপিন করার আগে পাসওয়ার্ড চান"</string> <string name="battery_saver_description" msgid="2510530476513605742">"ব্যাটারির আয়ু বাড়াতে সহায়তার জন্য, ব্যাটারি সঞ্চয়কারী আপনার ডিভাইসের কার্য-সম্পাদনা কমিয়ে আনবে এবং কম্পন ও পশ্চাদভূমি ডেটাকে সীমিত করবে। ইমেল, বার্তাপ্রেরণ ও অন্যান্য অ্যাপ্লিকেশান, যেগুলি সিঙ্ক হওয়ার উপর নির্ভরশীল সেগুলিকে আপনি না খোলা পর্যন্ত সেগুলি আপডেট নাও হতে পারে।\n\nআপনার ডিভাইস চার্জ হওয়ার সময় ব্যাটারি সঞ্চয়কারী স্বয়ংক্রিয়ভাবে বন্ধ হয়ে যাবে।"</string> <string name="downtime_condition_summary" msgid="8761776337475705749">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g>টার সময়ে আপনার ডাউনটাইম শেষ হওয়া পর্যন্ত"</string> - <!-- no translation found for zen_mode_duration_minutes_summary:one (3177683545388923234) --> - <!-- no translation found for zen_mode_duration_minutes_summary:other (2787867221129368935) --> - <!-- no translation found for zen_mode_duration_hours_summary:one (597194865053253679) --> - <!-- no translation found for zen_mode_duration_hours_summary:other (2827214920627669898) --> + <plurals name="zen_mode_duration_minutes_summary"> + <item quantity="one" msgid="3177683545388923234">"এক মিনিটের জন্য (<xliff:g id="FORMATTEDTIME">%2$s</xliff:g> পর্যন্ত)"</item> + <item quantity="other" msgid="2787867221129368935">"%1$d মিনিটের জন্য (<xliff:g id="FORMATTEDTIME">%2$s</xliff:g> পর্যন্ত)"</item> + </plurals> + <plurals name="zen_mode_duration_hours_summary"> + <item quantity="one" msgid="597194865053253679">"এক ঘন্টার জন্য (<xliff:g id="FORMATTEDTIME">%2$s</xliff:g> পর্যন্ত)"</item> + <item quantity="other" msgid="2827214920627669898">"%1$d ঘন্টার জন্য (<xliff:g id="FORMATTEDTIME">%2$s</xliff:g> পর্যন্ত)"</item> + </plurals> <plurals name="zen_mode_duration_minutes"> <item quantity="one" msgid="9040808414992812341">"এক মিনিটের জন্য"</item> <item quantity="other" msgid="6924190729213550991">"%d মিনিটের জন্য"</item> @@ -1788,7 +1799,7 @@ <item quantity="one" msgid="3480040795582254384">"এক ঘন্টার জন্য"</item> <item quantity="other" msgid="5408537517529822157">"%d ঘন্টার জন্য"</item> </plurals> - <!-- no translation found for zen_mode_until (7336308492289875088) --> - <skip /> + <string name="zen_mode_until" msgid="7336308492289875088">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> পর্যন্ত"</string> <string name="zen_mode_forever" msgid="4316804956488785559">"অনির্দিষ্টভাবে"</string> + <string name="toolbar_collapse_description" msgid="2821479483960330739">"সঙ্কুচিত করুন"</string> </resources> diff --git a/core/res/res/values-ca/strings.xml b/core/res/res/values-ca/strings.xml index 5aeb5d9bb9bb..0ab84cd38b68 100644 --- a/core/res/res/values-ca/strings.xml +++ b/core/res/res/values-ca/strings.xml @@ -716,8 +716,14 @@ <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"Permet que l\'aplicació llegeixi el sistema de fitxers de la memòria cau i que hi escrigui."</string> <string name="permlab_use_sip" msgid="2052499390128979920">"Fer i rebre trucades de SIP"</string> <string name="permdesc_use_sip" msgid="2297804849860225257">"Permet que l\'aplicació pugui fer i rebre trucades de SIP."</string> - <string name="permlab_register_provider" msgid="2654513709546459553">"registrar connexions de telecomunicacions noves"</string> - <string name="permdesc_register_provider" msgid="7571533832018681544">"Permet que l\'aplicació registri connexions de telecomunicacions noves."</string> + <!-- no translation found for permlab_register_sim_subscription (3166535485877549177) --> + <skip /> + <!-- no translation found for permdesc_register_sim_subscription (2138909035926222911) --> + <skip /> + <!-- no translation found for permlab_register_call_provider (108102120289029841) --> + <skip /> + <!-- no translation found for permdesc_register_call_provider (7034310263521081388) --> + <skip /> <string name="permlab_connection_manager" msgid="1116193254522105375">"gestionar les connexions de telecomunicacions"</string> <string name="permdesc_connection_manager" msgid="5925480810356483565">"Permet que l\'aplicació gestioni les connexions de telecomunicacions."</string> <string name="permlab_bind_incall_service" msgid="6773648341975287125">"interaccionar amb la pantalla de la trucada"</string> @@ -1233,6 +1239,7 @@ <string name="smv_application" msgid="3307209192155442829">"L\'aplicació <xliff:g id="APPLICATION">%1$s</xliff:g>(procés <xliff:g id="PROCESS">%2$s</xliff:g>) ha incomplert la seva política autoimposada de mode estricte."</string> <string name="smv_process" msgid="5120397012047462446">"El procés <xliff:g id="PROCESS">%1$s</xliff:g> ha incomplert la seva política de mode estricte."</string> <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_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> <string name="android_upgrading_starting_apps" msgid="451464516346926713">"S\'estan iniciant les aplicacions."</string> <string name="android_upgrading_complete" msgid="1405954754112999229">"S\'està finalitzant l\'actualització."</string> @@ -1776,10 +1783,14 @@ <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Demana la contrasenya abans d\'anul·lar la fixació"</string> <string name="battery_saver_description" msgid="2510530476513605742">"Per tal d\'augmentar la durada de la bateria, la funció d\'estalvi de bateria redueix el rendiment del dispositiu i en limita la vibració i la majoria de dades en segon pla. És possible que el correu electrònic, la missatgeria i la resta d\'aplicacions que se sincronitzen amb freqüència no s\'actualitzin llevat que les obris.\n\nL\'estalvi de bateria es desactiva automàticament mentre el dispositiu s\'està carregant."</string> <string name="downtime_condition_summary" msgid="8761776337475705749">"Fins que no finalitzi la inactivitat a les <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>."</string> - <!-- no translation found for zen_mode_duration_minutes_summary:one (3177683545388923234) --> - <!-- no translation found for zen_mode_duration_minutes_summary:other (2787867221129368935) --> - <!-- no translation found for zen_mode_duration_hours_summary:one (597194865053253679) --> - <!-- no translation found for zen_mode_duration_hours_summary:other (2827214920627669898) --> + <plurals name="zen_mode_duration_minutes_summary"> + <item quantity="one" msgid="3177683545388923234">"Durant 1 minut (fins a les <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2787867221129368935">"Durant %1$d minuts (fins a les <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> + <plurals name="zen_mode_duration_hours_summary"> + <item quantity="one" msgid="597194865053253679">"Durant 1 hora (fins a les <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2827214920627669898">"Durant %1$d hores (fins a les <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> <plurals name="zen_mode_duration_minutes"> <item quantity="one" msgid="9040808414992812341">"Durant un minut"</item> <item quantity="other" msgid="6924190729213550991">"Durant %d minuts"</item> @@ -1788,7 +1799,7 @@ <item quantity="one" msgid="3480040795582254384">"Durant una hora"</item> <item quantity="other" msgid="5408537517529822157">"Durant %d hores"</item> </plurals> - <!-- no translation found for zen_mode_until (7336308492289875088) --> - <skip /> + <string name="zen_mode_until" msgid="7336308492289875088">"Fins a les <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_forever" msgid="4316804956488785559">"Indefinidament"</string> + <string name="toolbar_collapse_description" msgid="2821479483960330739">"Replega"</string> </resources> diff --git a/core/res/res/values-cs/strings.xml b/core/res/res/values-cs/strings.xml index ffb80dac46a5..10782fe389ed 100644 --- a/core/res/res/values-cs/strings.xml +++ b/core/res/res/values-cs/strings.xml @@ -716,8 +716,14 @@ <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"Umožňuje aplikaci číst a zapisovat do souborového systému mezipaměti."</string> <string name="permlab_use_sip" msgid="2052499390128979920">"uskutečňování/příjem volání SIP"</string> <string name="permdesc_use_sip" msgid="2297804849860225257">"Povolí aplikaci uskutečňovat a přijímat volání SIP."</string> - <string name="permlab_register_provider" msgid="2654513709546459553">"registrace nového telekomunikačního připojení"</string> - <string name="permdesc_register_provider" msgid="7571533832018681544">"Umožňuje aplikaci registrovat nová telekomunikační připojení."</string> + <!-- no translation found for permlab_register_sim_subscription (3166535485877549177) --> + <skip /> + <!-- no translation found for permdesc_register_sim_subscription (2138909035926222911) --> + <skip /> + <!-- no translation found for permlab_register_call_provider (108102120289029841) --> + <skip /> + <!-- no translation found for permdesc_register_call_provider (7034310263521081388) --> + <skip /> <string name="permlab_connection_manager" msgid="1116193254522105375">"správa telekomunikačních připojení"</string> <string name="permdesc_connection_manager" msgid="5925480810356483565">"Umožňuje aplikaci spravovat telekomunikační připojení."</string> <string name="permlab_bind_incall_service" msgid="6773648341975287125">"interakce s obrazovkou příchozího hovoru"</string> @@ -1233,6 +1239,7 @@ <string name="smv_application" msgid="3307209192155442829">"Aplikace <xliff:g id="APPLICATION">%1$s</xliff:g> (proces <xliff:g id="PROCESS">%2$s</xliff:g>) porušila své vlastní vynucené zásady StrictMode."</string> <string name="smv_process" msgid="5120397012047462446">"Proces <xliff:g id="PROCESS">%1$s</xliff:g> porušil své vlastní vynucené zásady StrictMode."</string> <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_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> <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Spouštění aplikací."</string> <string name="android_upgrading_complete" msgid="1405954754112999229">"Dokončování inicializace."</string> @@ -1776,10 +1783,14 @@ <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Před uvolněním požádat o heslo"</string> <string name="battery_saver_description" msgid="2510530476513605742">"Za účelem zvýšení životnosti baterie spořič baterie sníží výkon vašeho zařízení a omezí vibrace a většinu dat na pozadí. E-mail, zprávy a další aplikace, které používají synchronizaci, nemusejí být aktualizovány, dokud je nespustíte.\n\nPři nabíjení zařízení se spořič baterie automaticky vypne."</string> <string name="downtime_condition_summary" msgid="8761776337475705749">"Dokud v <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> neskončí pozastavení"</string> - <!-- no translation found for zen_mode_duration_minutes_summary:one (3177683545388923234) --> - <!-- no translation found for zen_mode_duration_minutes_summary:other (2787867221129368935) --> - <!-- no translation found for zen_mode_duration_hours_summary:one (597194865053253679) --> - <!-- no translation found for zen_mode_duration_hours_summary:other (2827214920627669898) --> + <plurals name="zen_mode_duration_minutes_summary"> + <item quantity="one" msgid="3177683545388923234">"Jednu minutu (do <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2787867221129368935">"%1$d min (do <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> + <plurals name="zen_mode_duration_hours_summary"> + <item quantity="one" msgid="597194865053253679">"Jednu hodinu (do <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2827214920627669898">"%1$d h (do <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> <plurals name="zen_mode_duration_minutes"> <item quantity="one" msgid="9040808414992812341">"Na jednu minutu"</item> <item quantity="other" msgid="6924190729213550991">"Na %d min"</item> @@ -1788,7 +1799,7 @@ <item quantity="one" msgid="3480040795582254384">"Na 1 h"</item> <item quantity="other" msgid="5408537517529822157">"Na %d h"</item> </plurals> - <!-- no translation found for zen_mode_until (7336308492289875088) --> - <skip /> + <string name="zen_mode_until" msgid="7336308492289875088">"Do <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_forever" msgid="4316804956488785559">"Na dobu neurčitou"</string> + <string name="toolbar_collapse_description" msgid="2821479483960330739">"Sbalit"</string> </resources> diff --git a/core/res/res/values-da/strings.xml b/core/res/res/values-da/strings.xml index 0a81979b61c4..980eff7b8541 100644 --- a/core/res/res/values-da/strings.xml +++ b/core/res/res/values-da/strings.xml @@ -716,8 +716,14 @@ <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"Tillader, at appen kan læse og skrive i cachefilsystemet."</string> <string name="permlab_use_sip" msgid="2052499390128979920">"foretage/modtage SIP-opkald"</string> <string name="permdesc_use_sip" msgid="2297804849860225257">"Tillader, at appen foretager og modtager SIP-opkald."</string> - <string name="permlab_register_provider" msgid="2654513709546459553">"registrere nye telefonforbindelser"</string> - <string name="permdesc_register_provider" msgid="7571533832018681544">"Tillader, at appen registrerer nye telefonforbindelser."</string> + <!-- no translation found for permlab_register_sim_subscription (3166535485877549177) --> + <skip /> + <!-- no translation found for permdesc_register_sim_subscription (2138909035926222911) --> + <skip /> + <!-- no translation found for permlab_register_call_provider (108102120289029841) --> + <skip /> + <!-- no translation found for permdesc_register_call_provider (7034310263521081388) --> + <skip /> <string name="permlab_connection_manager" msgid="1116193254522105375">"administrere telefonforbindelser"</string> <string name="permdesc_connection_manager" msgid="5925480810356483565">"Tillader, at appen administrerer telefonforbindelser."</string> <string name="permlab_bind_incall_service" msgid="6773648341975287125">"interager med skærmen under opkald"</string> @@ -1233,6 +1239,7 @@ <string name="smv_application" msgid="3307209192155442829">"Appen <xliff:g id="APPLICATION">%1$s</xliff:g> (proces <xliff:g id="PROCESS">%2$s</xliff:g>) har overtrådt sin egen StrictMode-politik."</string> <string name="smv_process" msgid="5120397012047462446">"Processen <xliff:g id="PROCESS">%1$s</xliff:g> har overtrådt sin egen StrictMode-politik."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Android opgraderes..."</string> + <string name="android_start_title" msgid="8418054686415318207">"Android starter..."</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> <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Åbner dine apps."</string> <string name="android_upgrading_complete" msgid="1405954754112999229">"Gennemfører start."</string> @@ -1776,10 +1783,14 @@ <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Bed om adgangskode inden frigørelse"</string> <string name="battery_saver_description" msgid="2510530476513605742">"For at forbedre batteriets levetid reducerer batterisparefunktionen enhedens ydeevne og begrænser vibrationer og de fleste baggrundsdata. E-mail, beskeder og andre apps, der benytter synkronisering, opdateres ikke, medmindre du åbner dem.\n\nBatterisparefunktionen deaktiveres automatisk, når enheden oplades."</string> <string name="downtime_condition_summary" msgid="8761776337475705749">"Indtil din nedetid slutter kl. <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> - <!-- no translation found for zen_mode_duration_minutes_summary:one (3177683545388923234) --> - <!-- no translation found for zen_mode_duration_minutes_summary:other (2787867221129368935) --> - <!-- no translation found for zen_mode_duration_hours_summary:one (597194865053253679) --> - <!-- no translation found for zen_mode_duration_hours_summary:other (2827214920627669898) --> + <plurals name="zen_mode_duration_minutes_summary"> + <item quantity="one" msgid="3177683545388923234">"I ét minut (indtil <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2787867221129368935">"I %1$d minutter (indtil <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> + <plurals name="zen_mode_duration_hours_summary"> + <item quantity="one" msgid="597194865053253679">"I én time (indtil <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2827214920627669898">"I %1$d timer (indtil <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> <plurals name="zen_mode_duration_minutes"> <item quantity="one" msgid="9040808414992812341">"I ét minut"</item> <item quantity="other" msgid="6924190729213550991">"I %d minutter"</item> @@ -1788,7 +1799,7 @@ <item quantity="one" msgid="3480040795582254384">"I én time"</item> <item quantity="other" msgid="5408537517529822157">"I %d timer"</item> </plurals> - <!-- no translation found for zen_mode_until (7336308492289875088) --> - <skip /> + <string name="zen_mode_until" msgid="7336308492289875088">"Indtil <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_forever" msgid="4316804956488785559">"Uendeligt"</string> + <string name="toolbar_collapse_description" msgid="2821479483960330739">"Skjul"</string> </resources> diff --git a/core/res/res/values-de/strings.xml b/core/res/res/values-de/strings.xml index 74bd5f93fa02..3f242c3d93cb 100644 --- a/core/res/res/values-de/strings.xml +++ b/core/res/res/values-de/strings.xml @@ -716,8 +716,14 @@ <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"Ermöglicht der App Lese- und Schreibzugriff auf das Cache-Dateisystem"</string> <string name="permlab_use_sip" msgid="2052499390128979920">"SIP-Anrufe tätigen/empfangen"</string> <string name="permdesc_use_sip" msgid="2297804849860225257">"Ermöglicht der App das Tätigen und Empfangen von SIP-Anrufen"</string> - <string name="permlab_register_provider" msgid="2654513709546459553">"Neue Telekommunikationsverbindungen registrieren"</string> - <string name="permdesc_register_provider" msgid="7571533832018681544">"Gestattet der App die Registrierung neuer Telekommunikationsverbindungen"</string> + <!-- no translation found for permlab_register_sim_subscription (3166535485877549177) --> + <skip /> + <!-- no translation found for permdesc_register_sim_subscription (2138909035926222911) --> + <skip /> + <!-- no translation found for permlab_register_call_provider (108102120289029841) --> + <skip /> + <!-- no translation found for permdesc_register_call_provider (7034310263521081388) --> + <skip /> <string name="permlab_connection_manager" msgid="1116193254522105375">"Telekommunikationsverbindungen verwalten"</string> <string name="permdesc_connection_manager" msgid="5925480810356483565">"Gestattet der App die Verwaltung der Telekommunikationsverbindungen"</string> <string name="permlab_bind_incall_service" msgid="6773648341975287125">"Mit Anrufbildschirm interagieren"</string> @@ -1233,6 +1239,7 @@ <string name="smv_application" msgid="3307209192155442829">"Die App <xliff:g id="APPLICATION">%1$s</xliff:g> (Prozess <xliff:g id="PROCESS">%2$s</xliff:g>) hat gegen ihre selbsterzwungene StrictMode-Richtlinie verstoßen."</string> <string name="smv_process" msgid="5120397012047462446">"Der Prozess <xliff:g id="PROCESS">%1$s</xliff:g> hat gegen seine selbsterzwungene StrictMode-Richtlinie verstoßen."</string> <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_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> <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Apps werden gestartet..."</string> <string name="android_upgrading_complete" msgid="1405954754112999229">"Start wird abgeschlossen..."</string> @@ -1776,10 +1783,14 @@ <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Vor dem Beenden nach Passwort fragen"</string> <string name="battery_saver_description" msgid="2510530476513605742">"Der Energiesparmodus hilft, den Akku zu schonen, indem er die Leistung des Geräts reduziert und die Vibrationsfunktion und die meisten Hintergrunddatenaktivitäten einschränkt. E-Mail-, SMS/MMS- und andere Apps, die die Synchronisierungsfunktion benötigen, werden möglicherweise nicht aktualisiert, bis Sie sie öffnen.\n\nDer Energiesparmodus endet automatisch, wenn Ihr Gerät aufgeladen wird."</string> <string name="downtime_condition_summary" msgid="8761776337475705749">"Bis zum Ende der Downtime um <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> - <!-- no translation found for zen_mode_duration_minutes_summary:one (3177683545388923234) --> - <!-- no translation found for zen_mode_duration_minutes_summary:other (2787867221129368935) --> - <!-- no translation found for zen_mode_duration_hours_summary:one (597194865053253679) --> - <!-- no translation found for zen_mode_duration_hours_summary:other (2827214920627669898) --> + <plurals name="zen_mode_duration_minutes_summary"> + <item quantity="one" msgid="3177683545388923234">"1 Minute (bis <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2787867221129368935">"%1$d Minuten (bis <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> + <plurals name="zen_mode_duration_hours_summary"> + <item quantity="one" msgid="597194865053253679">"1 Stunde (bis <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2827214920627669898">"%1$d Stunden (bis <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> <plurals name="zen_mode_duration_minutes"> <item quantity="one" msgid="9040808414992812341">"Für eine Minute"</item> <item quantity="other" msgid="6924190729213550991">"Für %d Minuten"</item> @@ -1788,7 +1799,7 @@ <item quantity="one" msgid="3480040795582254384">"Für eine Stunde"</item> <item quantity="other" msgid="5408537517529822157">"Für %d Stunden"</item> </plurals> - <!-- no translation found for zen_mode_until (7336308492289875088) --> - <skip /> + <string name="zen_mode_until" msgid="7336308492289875088">"Bis <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_forever" msgid="4316804956488785559">"Unbegrenzt"</string> + <string name="toolbar_collapse_description" msgid="2821479483960330739">"Minimieren"</string> </resources> diff --git a/core/res/res/values-el/strings.xml b/core/res/res/values-el/strings.xml index edffefc5ff6a..c9465c05c166 100644 --- a/core/res/res/values-el/strings.xml +++ b/core/res/res/values-el/strings.xml @@ -716,8 +716,14 @@ <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"Επιτρέπει στην εφαρμογή την ανάγνωση και την εγγραφή του συστήματος αρχείων προσωρινής μνήμης."</string> <string name="permlab_use_sip" msgid="2052499390128979920">"πραγματοποίηση/λήψη κλήσεων SIP"</string> <string name="permdesc_use_sip" msgid="2297804849860225257">"Επιτρέπει στην εφαρμογή να πραγματοποιεί και να λαμβάνει κλήσεις SIP."</string> - <string name="permlab_register_provider" msgid="2654513709546459553">"εγγραφή νέας σύνδεσης τηλεπικοινωνιών"</string> - <string name="permdesc_register_provider" msgid="7571533832018681544">"Επιτρέπει στην εφαρμογή να εγγράφει νέες συνδέσεις τηλεπικοινωνιών."</string> + <!-- no translation found for permlab_register_sim_subscription (3166535485877549177) --> + <skip /> + <!-- no translation found for permdesc_register_sim_subscription (2138909035926222911) --> + <skip /> + <!-- no translation found for permlab_register_call_provider (108102120289029841) --> + <skip /> + <!-- no translation found for permdesc_register_call_provider (7034310263521081388) --> + <skip /> <string name="permlab_connection_manager" msgid="1116193254522105375">"διαχείριση των συνδέσεων τηλεπικοινωνιών"</string> <string name="permdesc_connection_manager" msgid="5925480810356483565">"Επιτρέπει στην εφαρμογή να διαχειρίζεται τις συνδέσεις τηλεπικοινωνιών."</string> <string name="permlab_bind_incall_service" msgid="6773648341975287125">"αλληλεπίδραση με την οθόνη κατά τη διάρκεια κλήσης"</string> @@ -1233,6 +1239,7 @@ <string name="smv_application" msgid="3307209192155442829">"Η εφαρμογή <xliff:g id="APPLICATION">%1$s</xliff:g> (διεργασία <xliff:g id="PROCESS">%2$s</xliff:g>) παραβίασε την αυτοεπιβαλλόμενη πολιτική StrictMode."</string> <string name="smv_process" msgid="5120397012047462446">"Η διεργασία <xliff:g id="PROCESS">%1$s</xliff:g> παραβίασε την αυτοεπιβαλόμενη πολιτική StrictMode."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Το Android αναβαθμίζεται..."</string> + <string name="android_start_title" msgid="8418054686415318207">"Εκκίνηση Android…"</string> <string name="android_upgrading_apk" msgid="7904042682111526169">"Βελτιστοποίηση της εφαρμογής <xliff:g id="NUMBER_0">%1$d</xliff:g> από <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Έναρξη εφαρμογών."</string> <string name="android_upgrading_complete" msgid="1405954754112999229">"Ολοκλήρωση εκκίνησης."</string> @@ -1776,10 +1783,14 @@ <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Να γίνεται ερώτηση για τον κωδικό πρόσβασης, πριν από το ξεκαρφίτσωμα"</string> <string name="battery_saver_description" msgid="2510530476513605742">"Για τη βελτίωση της διάρκειας ζωής της μπαταρίας, η λειτουργία εξοικονόμησης μπαταρίας μειώνει την απόδοση της συσκευής σας και περιορίζει τη δόνηση και την πλειονότητα των δεδομένων παρασκηνίου. Το ηλεκτρονικό ταχυδρομείου, η ανταλλαγή μηνυμάτων και άλλες εφαρμογές που βασίζονται στο συγχρονισμό ενδέχεται να μην ενημερώνονται, παρά μόνο εάν τις ανοίξετε.\n\nΗ λειτουργία εξοικονόμησης μπαταρίας απενεργοποιείται αυτόματα κατά τη φόρτιση της συσκευής σας."</string> <string name="downtime_condition_summary" msgid="8761776337475705749">"Έως τη λήξη του νεκρού χρόνου σας στις <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> - <!-- no translation found for zen_mode_duration_minutes_summary:one (3177683545388923234) --> - <!-- no translation found for zen_mode_duration_minutes_summary:other (2787867221129368935) --> - <!-- no translation found for zen_mode_duration_hours_summary:one (597194865053253679) --> - <!-- no translation found for zen_mode_duration_hours_summary:other (2827214920627669898) --> + <plurals name="zen_mode_duration_minutes_summary"> + <item quantity="one" msgid="3177683545388923234">"Για ένα λεπτό (έως τις <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2787867221129368935">"Για %1$d λεπτά (έως τις <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> + <plurals name="zen_mode_duration_hours_summary"> + <item quantity="one" msgid="597194865053253679">"Για μία ώρα (έως τις <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2827214920627669898">"Για %1$d ώρες (έως τις <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> <plurals name="zen_mode_duration_minutes"> <item quantity="one" msgid="9040808414992812341">"Για ένα λεπτό"</item> <item quantity="other" msgid="6924190729213550991">"Για %d λεπτά"</item> @@ -1788,7 +1799,7 @@ <item quantity="one" msgid="3480040795582254384">"Για μία ώρα"</item> <item quantity="other" msgid="5408537517529822157">"Για %d ώρες"</item> </plurals> - <!-- no translation found for zen_mode_until (7336308492289875088) --> - <skip /> + <string name="zen_mode_until" msgid="7336308492289875088">"Έως τις <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_forever" msgid="4316804956488785559">"Επ\' αόριστον"</string> + <string name="toolbar_collapse_description" msgid="2821479483960330739">"Σύμπτυξη"</string> </resources> diff --git a/core/res/res/values-en-rGB/strings.xml b/core/res/res/values-en-rGB/strings.xml index e3569034302c..85b7be7f7a3f 100644 --- a/core/res/res/values-en-rGB/strings.xml +++ b/core/res/res/values-en-rGB/strings.xml @@ -716,8 +716,14 @@ <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"Allows the app to read and write the cache file system."</string> <string name="permlab_use_sip" msgid="2052499390128979920">"make/receive SIP calls"</string> <string name="permdesc_use_sip" msgid="2297804849860225257">"Allows the app to make and receive SIP calls."</string> - <string name="permlab_register_provider" msgid="2654513709546459553">"register new telecom connection"</string> - <string name="permdesc_register_provider" msgid="7571533832018681544">"Allows the app to register new telecom connections."</string> + <!-- no translation found for permlab_register_sim_subscription (3166535485877549177) --> + <skip /> + <!-- no translation found for permdesc_register_sim_subscription (2138909035926222911) --> + <skip /> + <!-- no translation found for permlab_register_call_provider (108102120289029841) --> + <skip /> + <!-- no translation found for permdesc_register_call_provider (7034310263521081388) --> + <skip /> <string name="permlab_connection_manager" msgid="1116193254522105375">"manage telecom connections"</string> <string name="permdesc_connection_manager" msgid="5925480810356483565">"Allows the app to manage telecom connections."</string> <string name="permlab_bind_incall_service" msgid="6773648341975287125">"interact with in-call screen"</string> @@ -1233,6 +1239,7 @@ <string name="smv_application" msgid="3307209192155442829">"The app <xliff:g id="APPLICATION">%1$s</xliff:g> (process <xliff:g id="PROCESS">%2$s</xliff:g>) has violated its self-enforced Strict Mode policy."</string> <string name="smv_process" msgid="5120397012047462446">"The process <xliff:g id="PROCESS">%1$s</xliff:g> has violated its self-enforced StrictMode policy."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Android is upgrading…"</string> + <string name="android_start_title" msgid="8418054686415318207">"Android is starting…"</string> <string name="android_upgrading_apk" msgid="7904042682111526169">"Optimising app <xliff:g id="NUMBER_0">%1$d</xliff:g> of <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Starting apps."</string> <string name="android_upgrading_complete" msgid="1405954754112999229">"Finishing boot."</string> @@ -1776,10 +1783,14 @@ <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Ask for password before unpinning"</string> <string name="battery_saver_description" msgid="2510530476513605742">"To help improve battery life, battery saver reduces your device’s performance and limits vibration and most background data. Email, messaging and other apps that rely on syncing may not update unless you open them.\n\nBattery saver turns off automatically when your device is charging."</string> <string name="downtime_condition_summary" msgid="8761776337475705749">"Until your downtime ends at <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> - <!-- no translation found for zen_mode_duration_minutes_summary:one (3177683545388923234) --> - <!-- no translation found for zen_mode_duration_minutes_summary:other (2787867221129368935) --> - <!-- no translation found for zen_mode_duration_hours_summary:one (597194865053253679) --> - <!-- no translation found for zen_mode_duration_hours_summary:other (2827214920627669898) --> + <plurals name="zen_mode_duration_minutes_summary"> + <item quantity="one" msgid="3177683545388923234">"For one minute (until <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2787867221129368935">"For %1$d minutes (until <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> + <plurals name="zen_mode_duration_hours_summary"> + <item quantity="one" msgid="597194865053253679">"For one hour (until <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2827214920627669898">"For %1$d hours (until <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> <plurals name="zen_mode_duration_minutes"> <item quantity="one" msgid="9040808414992812341">"For one minute"</item> <item quantity="other" msgid="6924190729213550991">"For %d minutes"</item> @@ -1788,7 +1799,7 @@ <item quantity="one" msgid="3480040795582254384">"For one hour"</item> <item quantity="other" msgid="5408537517529822157">"For %d hours"</item> </plurals> - <!-- no translation found for zen_mode_until (7336308492289875088) --> - <skip /> + <string name="zen_mode_until" msgid="7336308492289875088">"Until <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_forever" msgid="4316804956488785559">"Indefinitely"</string> + <string name="toolbar_collapse_description" msgid="2821479483960330739">"Collapse"</string> </resources> diff --git a/core/res/res/values-en-rIN/strings.xml b/core/res/res/values-en-rIN/strings.xml index e3569034302c..85b7be7f7a3f 100644 --- a/core/res/res/values-en-rIN/strings.xml +++ b/core/res/res/values-en-rIN/strings.xml @@ -716,8 +716,14 @@ <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"Allows the app to read and write the cache file system."</string> <string name="permlab_use_sip" msgid="2052499390128979920">"make/receive SIP calls"</string> <string name="permdesc_use_sip" msgid="2297804849860225257">"Allows the app to make and receive SIP calls."</string> - <string name="permlab_register_provider" msgid="2654513709546459553">"register new telecom connection"</string> - <string name="permdesc_register_provider" msgid="7571533832018681544">"Allows the app to register new telecom connections."</string> + <!-- no translation found for permlab_register_sim_subscription (3166535485877549177) --> + <skip /> + <!-- no translation found for permdesc_register_sim_subscription (2138909035926222911) --> + <skip /> + <!-- no translation found for permlab_register_call_provider (108102120289029841) --> + <skip /> + <!-- no translation found for permdesc_register_call_provider (7034310263521081388) --> + <skip /> <string name="permlab_connection_manager" msgid="1116193254522105375">"manage telecom connections"</string> <string name="permdesc_connection_manager" msgid="5925480810356483565">"Allows the app to manage telecom connections."</string> <string name="permlab_bind_incall_service" msgid="6773648341975287125">"interact with in-call screen"</string> @@ -1233,6 +1239,7 @@ <string name="smv_application" msgid="3307209192155442829">"The app <xliff:g id="APPLICATION">%1$s</xliff:g> (process <xliff:g id="PROCESS">%2$s</xliff:g>) has violated its self-enforced Strict Mode policy."</string> <string name="smv_process" msgid="5120397012047462446">"The process <xliff:g id="PROCESS">%1$s</xliff:g> has violated its self-enforced StrictMode policy."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Android is upgrading…"</string> + <string name="android_start_title" msgid="8418054686415318207">"Android is starting…"</string> <string name="android_upgrading_apk" msgid="7904042682111526169">"Optimising app <xliff:g id="NUMBER_0">%1$d</xliff:g> of <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Starting apps."</string> <string name="android_upgrading_complete" msgid="1405954754112999229">"Finishing boot."</string> @@ -1776,10 +1783,14 @@ <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Ask for password before unpinning"</string> <string name="battery_saver_description" msgid="2510530476513605742">"To help improve battery life, battery saver reduces your device’s performance and limits vibration and most background data. Email, messaging and other apps that rely on syncing may not update unless you open them.\n\nBattery saver turns off automatically when your device is charging."</string> <string name="downtime_condition_summary" msgid="8761776337475705749">"Until your downtime ends at <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> - <!-- no translation found for zen_mode_duration_minutes_summary:one (3177683545388923234) --> - <!-- no translation found for zen_mode_duration_minutes_summary:other (2787867221129368935) --> - <!-- no translation found for zen_mode_duration_hours_summary:one (597194865053253679) --> - <!-- no translation found for zen_mode_duration_hours_summary:other (2827214920627669898) --> + <plurals name="zen_mode_duration_minutes_summary"> + <item quantity="one" msgid="3177683545388923234">"For one minute (until <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2787867221129368935">"For %1$d minutes (until <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> + <plurals name="zen_mode_duration_hours_summary"> + <item quantity="one" msgid="597194865053253679">"For one hour (until <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2827214920627669898">"For %1$d hours (until <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> <plurals name="zen_mode_duration_minutes"> <item quantity="one" msgid="9040808414992812341">"For one minute"</item> <item quantity="other" msgid="6924190729213550991">"For %d minutes"</item> @@ -1788,7 +1799,7 @@ <item quantity="one" msgid="3480040795582254384">"For one hour"</item> <item quantity="other" msgid="5408537517529822157">"For %d hours"</item> </plurals> - <!-- no translation found for zen_mode_until (7336308492289875088) --> - <skip /> + <string name="zen_mode_until" msgid="7336308492289875088">"Until <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_forever" msgid="4316804956488785559">"Indefinitely"</string> + <string name="toolbar_collapse_description" msgid="2821479483960330739">"Collapse"</string> </resources> diff --git a/core/res/res/values-es-rUS/strings.xml b/core/res/res/values-es-rUS/strings.xml index 816436b2aea7..1467ad6ece7a 100644 --- a/core/res/res/values-es-rUS/strings.xml +++ b/core/res/res/values-es-rUS/strings.xml @@ -716,8 +716,14 @@ <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"Permite que la aplicación lea y escriba el sistema de archivos almacenado en caché."</string> <string name="permlab_use_sip" msgid="2052499390128979920">"realizar/recibir llamadas SIP"</string> <string name="permdesc_use_sip" msgid="2297804849860225257">"Permite que la aplicación realice y reciba llamadas SIP."</string> - <string name="permlab_register_provider" msgid="2654513709546459553">"registrar conexiones de telecomunicaciones nuevas"</string> - <string name="permdesc_register_provider" msgid="7571533832018681544">"Permite que la aplicación registre las conexiones de telecomunicaciones nuevas."</string> + <!-- no translation found for permlab_register_sim_subscription (3166535485877549177) --> + <skip /> + <!-- no translation found for permdesc_register_sim_subscription (2138909035926222911) --> + <skip /> + <!-- no translation found for permlab_register_call_provider (108102120289029841) --> + <skip /> + <!-- no translation found for permdesc_register_call_provider (7034310263521081388) --> + <skip /> <string name="permlab_connection_manager" msgid="1116193254522105375">"administrar conexiones de telecomunicaciones"</string> <string name="permdesc_connection_manager" msgid="5925480810356483565">"Permite que la aplicación administre las conexiones de telecomunicaciones."</string> <string name="permlab_bind_incall_service" msgid="6773648341975287125">"interactuar con la pantalla de llamada"</string> @@ -1233,6 +1239,7 @@ <string name="smv_application" msgid="3307209192155442829">"La aplicación <xliff:g id="APPLICATION">%1$s</xliff:g> (proceso <xliff:g id="PROCESS">%2$s</xliff:g>) ha infringido su política StrictMode de aplicación automática."</string> <string name="smv_process" msgid="5120397012047462446">"El proceso <xliff:g id="PROCESS">%1$s</xliff:g> ha violado su política StrictMode autoimpuesta."</string> <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_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> <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Iniciando aplicaciones"</string> <string name="android_upgrading_complete" msgid="1405954754112999229">"Finalizando el inicio"</string> @@ -1776,10 +1783,14 @@ <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Solicitar contraseña para quitar fijación"</string> <string name="battery_saver_description" msgid="2510530476513605742">"Para ayudar a mejorar la duración de la batería, la función de ahorro de batería reduce el rendimiento del dispositivo y limita la vibración y la mayor parte de la transmisión de datos en segundo plano. Es posible que las aplicaciones que se sincronizan, como las de correo electrónico y mensajería, no se actualicen a menos que las abras.\n\nEl ahorro de batería se desactiva automáticamente cuando el dispositivo se está cargando."</string> <string name="downtime_condition_summary" msgid="8761776337475705749">"Hasta que termine el tiempo de inactividad a la(s) <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> - <!-- no translation found for zen_mode_duration_minutes_summary:one (3177683545388923234) --> - <!-- no translation found for zen_mode_duration_minutes_summary:other (2787867221129368935) --> - <!-- no translation found for zen_mode_duration_hours_summary:one (597194865053253679) --> - <!-- no translation found for zen_mode_duration_hours_summary:other (2827214920627669898) --> + <plurals name="zen_mode_duration_minutes_summary"> + <item quantity="one" msgid="3177683545388923234">"Durante 1 minuto; hasta la(s) <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>"</item> + <item quantity="other" msgid="2787867221129368935">"Durante %1$d minutos; hasta la(s) <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>"</item> + </plurals> + <plurals name="zen_mode_duration_hours_summary"> + <item quantity="one" msgid="597194865053253679">"Durante 1 hora; hasta la(s) <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>"</item> + <item quantity="other" msgid="2827214920627669898">"Durante %1$d horas; hasta la(s) <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>"</item> + </plurals> <plurals name="zen_mode_duration_minutes"> <item quantity="one" msgid="9040808414992812341">"Durante un minuto"</item> <item quantity="other" msgid="6924190729213550991">"Durante %d minutos"</item> @@ -1788,7 +1799,7 @@ <item quantity="one" msgid="3480040795582254384">"Durante una hora"</item> <item quantity="other" msgid="5408537517529822157">"Durante %d horas"</item> </plurals> - <!-- no translation found for zen_mode_until (7336308492289875088) --> - <skip /> + <string name="zen_mode_until" msgid="7336308492289875088">"Hasta la(s) <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_forever" msgid="4316804956488785559">"Indefinidamente"</string> + <string name="toolbar_collapse_description" msgid="2821479483960330739">"Contraer"</string> </resources> diff --git a/core/res/res/values-es/strings.xml b/core/res/res/values-es/strings.xml index 10c8716661a5..ca92f7105e0f 100644 --- a/core/res/res/values-es/strings.xml +++ b/core/res/res/values-es/strings.xml @@ -716,8 +716,14 @@ <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"Permite que la aplicación lea y escriba el sistema de archivos almacenado en caché."</string> <string name="permlab_use_sip" msgid="2052499390128979920">"hacer/recibir llamadas SIP"</string> <string name="permdesc_use_sip" msgid="2297804849860225257">"Permite que la aplicación haga y reciba llamadas SIP."</string> - <string name="permlab_register_provider" msgid="2654513709546459553">"registrar conexiones de telecomunicaciones nuevas"</string> - <string name="permdesc_register_provider" msgid="7571533832018681544">"Permite que la aplicación registre conexiones de telecomunicaciones nuevas."</string> + <!-- no translation found for permlab_register_sim_subscription (3166535485877549177) --> + <skip /> + <!-- no translation found for permdesc_register_sim_subscription (2138909035926222911) --> + <skip /> + <!-- no translation found for permlab_register_call_provider (108102120289029841) --> + <skip /> + <!-- no translation found for permdesc_register_call_provider (7034310263521081388) --> + <skip /> <string name="permlab_connection_manager" msgid="1116193254522105375">"administrar conexiones de telecomunicaciones"</string> <string name="permdesc_connection_manager" msgid="5925480810356483565">"Permite que la aplicación administre las conexiones de telecomunicaciones."</string> <string name="permlab_bind_incall_service" msgid="6773648341975287125">"interactuar con la pantalla de llamada"</string> @@ -1233,6 +1239,7 @@ <string name="smv_application" msgid="3307209192155442829">"La aplicación <xliff:g id="APPLICATION">%1$s</xliff:g> (proceso <xliff:g id="PROCESS">%2$s</xliff:g>) ha infringido su política StrictMode autoaplicable."</string> <string name="smv_process" msgid="5120397012047462446">"El proceso <xliff:g id="PROCESS">%1$s</xliff:g> ha infringido su política StrictMode autoaplicable."</string> <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_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> <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Iniciando aplicaciones"</string> <string name="android_upgrading_complete" msgid="1405954754112999229">"Finalizando inicio..."</string> @@ -1776,10 +1783,14 @@ <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Solicitar contraseña para desactivar"</string> <string name="battery_saver_description" msgid="2510530476513605742">"Para ayudar a mejorar la duración de la batería, la función de ahorro de energía reduce el rendimiento del dispositivo y limita la vibración y la mayor parte de la transmisión de datos en segundo plano. Es posible que las aplicaciones que se sincronizan, como las de correo y mensajes, no se actualicen a menos que las abras.\n\nLa función de ahorro de energía se desactiva automáticamente cuando el dispositivo se carga."</string> <string name="downtime_condition_summary" msgid="8761776337475705749">"Hasta que el tiempo de inactividad finalice el <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> - <!-- no translation found for zen_mode_duration_minutes_summary:one (3177683545388923234) --> - <!-- no translation found for zen_mode_duration_minutes_summary:other (2787867221129368935) --> - <!-- no translation found for zen_mode_duration_hours_summary:one (597194865053253679) --> - <!-- no translation found for zen_mode_duration_hours_summary:other (2827214920627669898) --> + <plurals name="zen_mode_duration_minutes_summary"> + <item quantity="one" msgid="3177683545388923234">"Durante un minuto (hasta las <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2787867221129368935">"Durante %1$d minutos (hasta las <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> + <plurals name="zen_mode_duration_hours_summary"> + <item quantity="one" msgid="597194865053253679">"Durante una hora (hasta las <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2827214920627669898">"Durante %1$d horas (hasta las <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> <plurals name="zen_mode_duration_minutes"> <item quantity="one" msgid="9040808414992812341">"Durante un minuto"</item> <item quantity="other" msgid="6924190729213550991">"Durante %d minutos"</item> @@ -1788,7 +1799,7 @@ <item quantity="one" msgid="3480040795582254384">"Durante 1 hora"</item> <item quantity="other" msgid="5408537517529822157">"Durante %d horas"</item> </plurals> - <!-- no translation found for zen_mode_until (7336308492289875088) --> - <skip /> + <string name="zen_mode_until" msgid="7336308492289875088">"Hasta las <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_forever" msgid="4316804956488785559">"Indefinidamente"</string> + <string name="toolbar_collapse_description" msgid="2821479483960330739">"Contraer"</string> </resources> diff --git a/core/res/res/values-et-rEE/strings.xml b/core/res/res/values-et-rEE/strings.xml index 379aef5bd143..ccd08c6aba73 100644 --- a/core/res/res/values-et-rEE/strings.xml +++ b/core/res/res/values-et-rEE/strings.xml @@ -716,8 +716,14 @@ <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"Võimaldab rakendusel vahemälu failisüsteemi lugeda ja kirjutada."</string> <string name="permlab_use_sip" msgid="2052499390128979920">"SIP-kõnede tegemine/vastuvõtmine"</string> <string name="permdesc_use_sip" msgid="2297804849860225257">"Lubab rakendusel teha ja vastu võtta SIP-kõnesid."</string> - <string name="permlab_register_provider" msgid="2654513709546459553">"uute telekommunikatsiooni ühenduste registreerimine"</string> - <string name="permdesc_register_provider" msgid="7571533832018681544">"Lubab rakendusel registreerida uusi telekommunikatsiooni ühendusi."</string> + <!-- no translation found for permlab_register_sim_subscription (3166535485877549177) --> + <skip /> + <!-- no translation found for permdesc_register_sim_subscription (2138909035926222911) --> + <skip /> + <!-- no translation found for permlab_register_call_provider (108102120289029841) --> + <skip /> + <!-- no translation found for permdesc_register_call_provider (7034310263521081388) --> + <skip /> <string name="permlab_connection_manager" msgid="1116193254522105375">"telekommunikatsiooni ühenduste haldamine"</string> <string name="permdesc_connection_manager" msgid="5925480810356483565">"Lubab rakendusel hallata telekommunikatsiooni ühendusi."</string> <string name="permlab_bind_incall_service" msgid="6773648341975287125">"ekraani Kõne pooleli kasutamine"</string> @@ -1233,6 +1239,7 @@ <string name="smv_application" msgid="3307209192155442829">"Rakendus <xliff:g id="APPLICATION">%1$s</xliff:g> (protsess <xliff:g id="PROCESS">%2$s</xliff:g>) on rikkunud isekehtestatud StrictMode\'i eeskirju."</string> <string name="smv_process" msgid="5120397012047462446">"Protsess <xliff:g id="PROCESS">%1$s</xliff:g> on rikkunud isejõustatud StrictMode\'i eeskirju."</string> <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_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> <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Rakenduste käivitamine."</string> <string name="android_upgrading_complete" msgid="1405954754112999229">"Käivitamise lõpuleviimine."</string> @@ -1776,10 +1783,14 @@ <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Enne vabastamist küsi parooli"</string> <string name="battery_saver_description" msgid="2510530476513605742">"Aku kestuse parandamiseks vähendab akusäästja teie seadme jõudlust ja piirab vibratsiooni ning suuremat osa taustaandmetest. E-posti, sõnumsidet ja muid sünkroonimisele tuginevaid rakendusi võidakse värskendada ainult siis, kui te need avate.\n\nAkusäästja lülitatakse seadme laadimise ajal automaatselt välja."</string> <string name="downtime_condition_summary" msgid="8761776337475705749">"Kuni seisakuaja lõppemiseni kell <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> - <!-- no translation found for zen_mode_duration_minutes_summary:one (3177683545388923234) --> - <!-- no translation found for zen_mode_duration_minutes_summary:other (2787867221129368935) --> - <!-- no translation found for zen_mode_duration_hours_summary:one (597194865053253679) --> - <!-- no translation found for zen_mode_duration_hours_summary:other (2827214920627669898) --> + <plurals name="zen_mode_duration_minutes_summary"> + <item quantity="one" msgid="3177683545388923234">"Üheks minutiks (kuni <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2787867221129368935">"%1$d minutiks (kuni <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> + <plurals name="zen_mode_duration_hours_summary"> + <item quantity="one" msgid="597194865053253679">"Üheks tunniks (kuni <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2827214920627669898">"%1$d tunniks (kuni <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> <plurals name="zen_mode_duration_minutes"> <item quantity="one" msgid="9040808414992812341">"Üheks minutiks"</item> <item quantity="other" msgid="6924190729213550991">"%d minutiks"</item> @@ -1788,7 +1799,7 @@ <item quantity="one" msgid="3480040795582254384">"Üheks tunniks"</item> <item quantity="other" msgid="5408537517529822157">"%d tunniks"</item> </plurals> - <!-- no translation found for zen_mode_until (7336308492289875088) --> - <skip /> + <string name="zen_mode_until" msgid="7336308492289875088">"Kuni <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_forever" msgid="4316804956488785559">"Määramata ajaks"</string> + <string name="toolbar_collapse_description" msgid="2821479483960330739">"Ahendamine"</string> </resources> diff --git a/core/res/res/values-eu-rES/strings.xml b/core/res/res/values-eu-rES/strings.xml index c19b209fcc37..2b168b38290a 100644 --- a/core/res/res/values-eu-rES/strings.xml +++ b/core/res/res/values-eu-rES/strings.xml @@ -716,9 +716,15 @@ <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"Cachearen fitxategi-sistema irakurtzea eta bertan idaztea baimentzen die aplikazioei."</string> <string name="permlab_use_sip" msgid="2052499390128979920">"Egin/Jaso SIP deiak"</string> <string name="permdesc_use_sip" msgid="2297804849860225257">"SIP deiak egitea eta jasotzea baimentzen die aplikazioei."</string> - <string name="permlab_register_provider" msgid="2654513709546459553">"erregistratu telekomunikabideekiko konexioak"</string> - <string name="permdesc_register_provider" msgid="7571533832018681544">"Telekomunikabideekiko konexioak erregistratzea baimentzen die aplikazioei."</string> - <string name="permlab_connection_manager" msgid="1116193254522105375">"kudeatu telekomunikabideekiko konexioak"</string> + <!-- no translation found for permlab_register_sim_subscription (3166535485877549177) --> + <skip /> + <!-- no translation found for permdesc_register_sim_subscription (2138909035926222911) --> + <skip /> + <!-- no translation found for permlab_register_call_provider (108102120289029841) --> + <skip /> + <!-- no translation found for permdesc_register_call_provider (7034310263521081388) --> + <skip /> + <string name="permlab_connection_manager" msgid="1116193254522105375">"Kudeatu telekomunikabideekiko konexioak"</string> <string name="permdesc_connection_manager" msgid="5925480810356483565">"Telekomunikabideekiko konexioak kudeatzea baimentzen die aplikazioei."</string> <string name="permlab_bind_incall_service" msgid="6773648341975287125">"Deiak abian direnean pantaila erabiltzea"</string> <string name="permdesc_bind_incall_service" msgid="8343471381323215005">"Erabiltzaileak deiaren pantaila noiz eta nola ikusten duen kontrolatzea baimentzen die aplikazioei."</string> @@ -1233,6 +1239,7 @@ <string name="smv_application" msgid="3307209192155442829">"<xliff:g id="APPLICATION">%1$s</xliff:g> aplikazioak (<xliff:g id="PROCESS">%2$s</xliff:g> prozesua) berak aplikatutako StrictMode gidalerroa urratu du."</string> <string name="smv_process" msgid="5120397012047462446">"<xliff:g id="PROCESS">%1$s</xliff:g> prozesuak bere kabuz ezarritako StrictMode gidalerroak urratu ditu."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Android bertsio-berritzen ari da…"</string> + <string name="android_start_title" msgid="8418054686415318207">"Android abiarazten ari da…"</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> aplikazio optimizatzen."</string> <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Aplikazioak abiarazten."</string> <string name="android_upgrading_complete" msgid="1405954754112999229">"Bertsio-berritzea amaitzen."</string> @@ -1776,10 +1783,14 @@ <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Eskatu pasahitza aingura kendu aurretik"</string> <string name="battery_saver_description" msgid="2510530476513605742">"Bateriak gehiago iraun dezan, bateria aurrezteko aukerak gailuaren errendimendua murrizten du, eta dardara eta atzeko planoko datu gehienak mugatzen ditu. Baliteke posta elektronikoa, mezuak eta sinkronizatzen diren beste aplikazio batzuk ez eguneratzea, ireki ezean.\n\nBateria aurrezteko aukera automatikoki desaktibatzen da gailua kargatzen ari denean."</string> <string name="downtime_condition_summary" msgid="8761776337475705749">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> arte iraungo du jarduerarik gabeko aldiak"</string> - <!-- no translation found for zen_mode_duration_minutes_summary:one (3177683545388923234) --> - <!-- no translation found for zen_mode_duration_minutes_summary:other (2787867221129368935) --> - <!-- no translation found for zen_mode_duration_hours_summary:one (597194865053253679) --> - <!-- no translation found for zen_mode_duration_hours_summary:other (2827214920627669898) --> + <plurals name="zen_mode_duration_minutes_summary"> + <item quantity="one" msgid="3177683545388923234">"Minutu batez (<xliff:g id="FORMATTEDTIME">%2$s</xliff:g> arte)"</item> + <item quantity="other" msgid="2787867221129368935">"%1$d minutuz (<xliff:g id="FORMATTEDTIME">%2$s</xliff:g> arte)"</item> + </plurals> + <plurals name="zen_mode_duration_hours_summary"> + <item quantity="one" msgid="597194865053253679">"Ordubetez (<xliff:g id="FORMATTEDTIME">%2$s</xliff:g> arte)"</item> + <item quantity="other" msgid="2827214920627669898">"%1$d orduz (<xliff:g id="FORMATTEDTIME">%2$s</xliff:g> arte)"</item> + </plurals> <plurals name="zen_mode_duration_minutes"> <item quantity="one" msgid="9040808414992812341">"Minutu batez"</item> <item quantity="other" msgid="6924190729213550991">"%d minutuz"</item> @@ -1788,7 +1799,7 @@ <item quantity="one" msgid="3480040795582254384">"Ordubetez"</item> <item quantity="other" msgid="5408537517529822157">"%d orduz"</item> </plurals> - <!-- no translation found for zen_mode_until (7336308492289875088) --> - <skip /> + <string name="zen_mode_until" msgid="7336308492289875088">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> arte"</string> <string name="zen_mode_forever" msgid="4316804956488785559">"Mugagabea"</string> + <string name="toolbar_collapse_description" msgid="2821479483960330739">"Tolestu"</string> </resources> diff --git a/core/res/res/values-fa/strings.xml b/core/res/res/values-fa/strings.xml index 543171661d1e..584abe6e074a 100644 --- a/core/res/res/values-fa/strings.xml +++ b/core/res/res/values-fa/strings.xml @@ -716,8 +716,14 @@ <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"به برنامه اجازه میدهد تا سیستم فایل حافظهٔ پنهان را بخواند و بنویسد."</string> <string name="permlab_use_sip" msgid="2052499390128979920">"تماس گرفتن/دریافت تماس از طریق SIP"</string> <string name="permdesc_use_sip" msgid="2297804849860225257">"به برنامه اجازه میدهد تماسهای SIP بگیرد یا دریافت کند."</string> - <string name="permlab_register_provider" msgid="2654513709546459553">"ثبت ارتباط مخابراتی جدید"</string> - <string name="permdesc_register_provider" msgid="7571533832018681544">"به برنامه امکان میدهد ارتباط مخابراتی جدید ثبت کند."</string> + <!-- no translation found for permlab_register_sim_subscription (3166535485877549177) --> + <skip /> + <!-- no translation found for permdesc_register_sim_subscription (2138909035926222911) --> + <skip /> + <!-- no translation found for permlab_register_call_provider (108102120289029841) --> + <skip /> + <!-- no translation found for permdesc_register_call_provider (7034310263521081388) --> + <skip /> <string name="permlab_connection_manager" msgid="1116193254522105375">"مدیریت ارتباطات مخابراتی"</string> <string name="permdesc_connection_manager" msgid="5925480810356483565">"به برنامه امکان میدهد ارتباطات مخابراتی را مدیریت کند."</string> <string name="permlab_bind_incall_service" msgid="6773648341975287125">"تعامل با صفحهنمایش هنگام تماس"</string> @@ -1233,6 +1239,7 @@ <string name="smv_application" msgid="3307209192155442829">"برنامه <xliff:g id="APPLICATION">%1$s</xliff:g> (پردازش <xliff:g id="PROCESS">%2$s</xliff:g>) خط مشی StrictMode اجرایی خود را نقض کرده است."</string> <string name="smv_process" msgid="5120397012047462446">"فرآیند <xliff:g id="PROCESS">%1$s</xliff:g> خط مشی StrictMode اجرای خودکار خود را نقض کرده است."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Android در حال ارتقا است..."</string> + <string name="android_start_title" msgid="8418054686415318207">"Android در حال راهاندازی است..."</string> <string name="android_upgrading_apk" msgid="7904042682111526169">"در حال بهینهسازی برنامهٔ <xliff:g id="NUMBER_0">%1$d</xliff:g> از <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="451464516346926713">"در حال آغاز برنامهها."</string> <string name="android_upgrading_complete" msgid="1405954754112999229">"در حال اتمام راهاندازی."</string> @@ -1776,10 +1783,14 @@ <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"درخواست گذرواژه قبل از برداشتن پین"</string> <string name="battery_saver_description" msgid="2510530476513605742">"برای کمک به بهبود عمر باتری، ذخیرهکننده باتری عملکرد دستگاهتان را کاهش میدهد و اغلب اطلاعات پسزمینه و لرزش را محدود میکند. ایمیل، پیامرسانی و سایر برنامههایی که به همگامسازی وابسته هستند ممکن است بهروز نشوند مگر اینکه آنها را باز کنید.\n\nوقتی دستگاهتان شارژ میشود، ذخیرهکننده باتری به صورت خودکار خاموش میشود."</string> <string name="downtime_condition_summary" msgid="8761776337475705749">"تا زمانی که زمان استراحت در <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> به پایان برسد"</string> - <!-- no translation found for zen_mode_duration_minutes_summary:one (3177683545388923234) --> - <!-- no translation found for zen_mode_duration_minutes_summary:other (2787867221129368935) --> - <!-- no translation found for zen_mode_duration_hours_summary:one (597194865053253679) --> - <!-- no translation found for zen_mode_duration_hours_summary:other (2827214920627669898) --> + <plurals name="zen_mode_duration_minutes_summary"> + <item quantity="one" msgid="3177683545388923234">"به مدت یک دقیقه (تا <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2787867221129368935">"به مدت %1$d دقیقه (تا <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> + <plurals name="zen_mode_duration_hours_summary"> + <item quantity="one" msgid="597194865053253679">"به مدت یک ساعت (تا <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2827214920627669898">"به مدت %1$d ساعت (تا <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> <plurals name="zen_mode_duration_minutes"> <item quantity="one" msgid="9040808414992812341">"برای یک دقیقه"</item> <item quantity="other" msgid="6924190729213550991">"برای %d دقیقه"</item> @@ -1788,7 +1799,7 @@ <item quantity="one" msgid="3480040795582254384">"برای یک ساعت"</item> <item quantity="other" msgid="5408537517529822157">"برای %d ساعت"</item> </plurals> - <!-- no translation found for zen_mode_until (7336308492289875088) --> - <skip /> + <string name="zen_mode_until" msgid="7336308492289875088">"تا <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_forever" msgid="4316804956488785559">"نامحدود"</string> + <string name="toolbar_collapse_description" msgid="2821479483960330739">"کوچک کردن"</string> </resources> diff --git a/core/res/res/values-fi/strings.xml b/core/res/res/values-fi/strings.xml index fdec59ae3fc2..1913af6f4695 100644 --- a/core/res/res/values-fi/strings.xml +++ b/core/res/res/values-fi/strings.xml @@ -716,14 +716,16 @@ <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"Antaa sovelluksen lukea välimuistin tiedostojärjestelmää ja kirjoittaa siihen."</string> <string name="permlab_use_sip" msgid="2052499390128979920">"soita/vastaanota SIP-puheluja"</string> <string name="permdesc_use_sip" msgid="2297804849860225257">"Sallii sovelluksen soittaa ja vastaanottaa SIP-puheluja."</string> - <!-- no translation found for permlab_register_provider (2654513709546459553) --> + <!-- no translation found for permlab_register_sim_subscription (3166535485877549177) --> <skip /> - <!-- no translation found for permdesc_register_provider (7571533832018681544) --> + <!-- no translation found for permdesc_register_sim_subscription (2138909035926222911) --> <skip /> - <!-- no translation found for permlab_connection_manager (1116193254522105375) --> + <!-- no translation found for permlab_register_call_provider (108102120289029841) --> <skip /> - <!-- no translation found for permdesc_connection_manager (5925480810356483565) --> + <!-- no translation found for permdesc_register_call_provider (7034310263521081388) --> <skip /> + <string name="permlab_connection_manager" msgid="1116193254522105375">"tietoliikenneyhteyksien hallinta"</string> + <string name="permdesc_connection_manager" msgid="5925480810356483565">"Antaa sovelluksen hallita tietoliikenneyhteyksiä."</string> <string name="permlab_bind_incall_service" msgid="6773648341975287125">"Vuorovaikutteinen puhelunäyttö"</string> <string name="permdesc_bind_incall_service" msgid="8343471381323215005">"Antaa sovelluksen määrätä, milloin ja millaisena käyttäjä näkee puhelunäytön."</string> <string name="permlab_bind_connection_service" msgid="3557341439297014940">"Puhelinpalveluiden yhteyslupa"</string> @@ -1237,6 +1239,7 @@ <string name="smv_application" msgid="3307209192155442829">"Sovellus <xliff:g id="APPLICATION">%1$s</xliff:g> (prosessi <xliff:g id="PROCESS">%2$s</xliff:g>) on rikkonut itse käyttöön ottamaansa StrictMode-käytäntöä."</string> <string name="smv_process" msgid="5120397012047462446">"Prosessi <xliff:g id="PROCESS">%1$s</xliff:g> on rikkonut itse käyttöön ottamaansa StrictMode-käytäntöä."</string> <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_apk" msgid="7904042682111526169">"Optimoidaan sovellusta <xliff:g id="NUMBER_0">%1$d</xliff:g>/<xliff:g id="NUMBER_1">%2$d</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Käynnistetään sovelluksia."</string> <string name="android_upgrading_complete" msgid="1405954754112999229">"Viimeistellään päivitystä."</string> @@ -1780,10 +1783,14 @@ <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Pyydä salasana ennen irrotusta"</string> <string name="battery_saver_description" msgid="2510530476513605742">"Akunsäästötoiminto heikentää laitteen suorituskykyä ja rajoittaa värinää ja useimpia taustatietoja akun iän pidentämiseksi. Sähköposti, viestitys ja muut synkronointia edellyttävät sovellukset eivät ehkä päivity, ellet käynnistä niitä.\n\nAkunsäästö kytkeytyy automaattisesti pois laitteen akun latauksen ajaksi."</string> <string name="downtime_condition_summary" msgid="8761776337475705749">"Käyttökatkos päättyy klo <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> - <!-- no translation found for zen_mode_duration_minutes_summary:one (3177683545388923234) --> - <!-- no translation found for zen_mode_duration_minutes_summary:other (2787867221129368935) --> - <!-- no translation found for zen_mode_duration_hours_summary:one (597194865053253679) --> - <!-- no translation found for zen_mode_duration_hours_summary:other (2827214920627669898) --> + <plurals name="zen_mode_duration_minutes_summary"> + <item quantity="one" msgid="3177683545388923234">"Yksi minuutti (kunnes kello on <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2787867221129368935">"%1$d minuuttia (kunnes kello on <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> + <plurals name="zen_mode_duration_hours_summary"> + <item quantity="one" msgid="597194865053253679">"Yksi tunti (kunnes kello on <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2827214920627669898">"%1$d tuntia (kunnes kello on <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> <plurals name="zen_mode_duration_minutes"> <item quantity="one" msgid="9040808414992812341">"Minuutiksi"</item> <item quantity="other" msgid="6924190729213550991">"%d minuutiksi"</item> @@ -1792,7 +1799,7 @@ <item quantity="one" msgid="3480040795582254384">"Tunniksi"</item> <item quantity="other" msgid="5408537517529822157">"%d tunniksi"</item> </plurals> - <!-- no translation found for zen_mode_until (7336308492289875088) --> - <skip /> + <string name="zen_mode_until" msgid="7336308492289875088">"Kunnes kello on <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_forever" msgid="4316804956488785559">"Toistaiseksi"</string> + <string name="toolbar_collapse_description" msgid="2821479483960330739">"Kutista"</string> </resources> diff --git a/core/res/res/values-fr-rCA/strings.xml b/core/res/res/values-fr-rCA/strings.xml index ed7386c0c292..134e7d68df12 100644 --- a/core/res/res/values-fr-rCA/strings.xml +++ b/core/res/res/values-fr-rCA/strings.xml @@ -716,8 +716,14 @@ <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"Permet à l\'application d\'obtenir des droits en lecture et en écriture pour le système de fichiers du cache."</string> <string name="permlab_use_sip" msgid="2052499390128979920">"faire et recevoir des appels SIP"</string> <string name="permdesc_use_sip" msgid="2297804849860225257">"Autorise l\'application à effectuer et à recevoir des appels SIP."</string> - <string name="permlab_register_provider" msgid="2654513709546459553">"enregistrer des nouvelles connexions de télécommunication"</string> - <string name="permdesc_register_provider" msgid="7571533832018681544">"Permettre à l\'application d\'enregistrer de nouvelles connexions de télécommunication"</string> + <!-- no translation found for permlab_register_sim_subscription (3166535485877549177) --> + <skip /> + <!-- no translation found for permdesc_register_sim_subscription (2138909035926222911) --> + <skip /> + <!-- no translation found for permlab_register_call_provider (108102120289029841) --> + <skip /> + <!-- no translation found for permdesc_register_call_provider (7034310263521081388) --> + <skip /> <string name="permlab_connection_manager" msgid="1116193254522105375">"gérer les connexions de télécommunication"</string> <string name="permdesc_connection_manager" msgid="5925480810356483565">"Permettre à l\'application de gérer les connexions de télécommunication"</string> <string name="permlab_bind_incall_service" msgid="6773648341975287125">"interagir avec l\'écran d\'appel"</string> @@ -1233,6 +1239,7 @@ <string name="smv_application" msgid="3307209192155442829">"L\'application <xliff:g id="APPLICATION">%1$s</xliff:g> (du processus <xliff:g id="PROCESS">%2$s</xliff:g>) a enfreint ses propres règles du mode strict."</string> <string name="smv_process" msgid="5120397012047462446">"Le processus <xliff:g id="PROCESS">%1$s</xliff:g> a enfreint ses propres règles du mode strict."</string> <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_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> <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Lancement des applications…"</string> <string name="android_upgrading_complete" msgid="1405954754112999229">"Finalisation de la mise à jour."</string> @@ -1776,10 +1783,14 @@ <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Demander le mot de passe avant d\'annuler l\'épinglage"</string> <string name="battery_saver_description" msgid="2510530476513605742">"Pour optimiser l\'autonomie de la pile, l\'économiseur d\'énergie réduit les performances de votre appareil et limite les données en arrière-plan. Vous devrez peut-être ouvrir manuellement les applications de courriel, de messagerie et les autres applications synchronisées pour les mettre à jour.\n\nL\'économiseur d\'énergie se désactive automatiquement lorsque votre appareil est en charge."</string> <string name="downtime_condition_summary" msgid="8761776337475705749">"Jusqu\'à ce que le temps d\'arrêt se termine à <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> - <!-- no translation found for zen_mode_duration_minutes_summary:one (3177683545388923234) --> - <!-- no translation found for zen_mode_duration_minutes_summary:other (2787867221129368935) --> - <!-- no translation found for zen_mode_duration_hours_summary:one (597194865053253679) --> - <!-- no translation found for zen_mode_duration_hours_summary:other (2827214920627669898) --> + <plurals name="zen_mode_duration_minutes_summary"> + <item quantity="one" msgid="3177683545388923234">"Pendant une minute (jusqu\'à <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2787867221129368935">"Pendant %1$d minutes (jusqu\'à <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> + <plurals name="zen_mode_duration_hours_summary"> + <item quantity="one" msgid="597194865053253679">"Pendant une heure (jusqu\'à <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2827214920627669898">"Pendant %1$d heures (jusqu\'à <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> <plurals name="zen_mode_duration_minutes"> <item quantity="one" msgid="9040808414992812341">"Pendant une minute"</item> <item quantity="other" msgid="6924190729213550991">"Pendant %d minutes"</item> @@ -1788,7 +1799,7 @@ <item quantity="one" msgid="3480040795582254384">"Pendant une heure"</item> <item quantity="other" msgid="5408537517529822157">"Pendant %d heures"</item> </plurals> - <!-- no translation found for zen_mode_until (7336308492289875088) --> - <skip /> + <string name="zen_mode_until" msgid="7336308492289875088">"Jusqu\'à <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_forever" msgid="4316804956488785559">"Indéfiniment"</string> + <string name="toolbar_collapse_description" msgid="2821479483960330739">"Réduire"</string> </resources> diff --git a/core/res/res/values-fr/strings.xml b/core/res/res/values-fr/strings.xml index 4f67038d9236..95b4e6f25ab9 100644 --- a/core/res/res/values-fr/strings.xml +++ b/core/res/res/values-fr/strings.xml @@ -716,8 +716,14 @@ <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"Permet à l\'application d\'obtenir des droits en lecture/écriture concernant le système de fichiers du cache."</string> <string name="permlab_use_sip" msgid="2052499390128979920">"effectuer/recevoir des appels SIP"</string> <string name="permdesc_use_sip" msgid="2297804849860225257">"Autorise l\'application à effectuer et à recevoir des appels SIP."</string> - <string name="permlab_register_provider" msgid="2654513709546459553">"enregistrer des nouvelles connexions de télécommunication"</string> - <string name="permdesc_register_provider" msgid="7571533832018681544">"Permettre à l\'application d\'enregistrer de nouvelles connexions de télécommunication"</string> + <!-- no translation found for permlab_register_sim_subscription (3166535485877549177) --> + <skip /> + <!-- no translation found for permdesc_register_sim_subscription (2138909035926222911) --> + <skip /> + <!-- no translation found for permlab_register_call_provider (108102120289029841) --> + <skip /> + <!-- no translation found for permdesc_register_call_provider (7034310263521081388) --> + <skip /> <string name="permlab_connection_manager" msgid="1116193254522105375">"gérer les connexions de télécommunication"</string> <string name="permdesc_connection_manager" msgid="5925480810356483565">"Permettre à l\'application de gérer les connexions de télécommunication"</string> <string name="permlab_bind_incall_service" msgid="6773648341975287125">"contrôler l\'écran d\'appel"</string> @@ -1233,6 +1239,7 @@ <string name="smv_application" msgid="3307209192155442829">"L\'application <xliff:g id="APPLICATION">%1$s</xliff:g> (du processus <xliff:g id="PROCESS">%2$s</xliff:g>) a enfreint ses propres règles du mode strict."</string> <string name="smv_process" msgid="5120397012047462446">"Le processus <xliff:g id="PROCESS">%1$s</xliff:g> a enfreint ses propres règles du mode strict."</string> <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_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> <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Lancement des applications…"</string> <string name="android_upgrading_complete" msgid="1405954754112999229">"Finalisation de la mise à jour."</string> @@ -1776,10 +1783,14 @@ <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Demander le mot de passe avant d\'annuler l\'épinglage"</string> <string name="battery_saver_description" msgid="2510530476513605742">"Pour optimiser l\'autonomie de la batterie, l\'économiseur de batterie réduit les performances de votre appareil et limite les données en arrière-plan. Vous devrez peut-être ouvrir manuellement vos applications d\'e-mail, de messagerie instantanée et autres applications synchronisées pour les mettre à jour.\n\nL\'économiseur de batterie s\'éteint automatiquement lorsque votre appareil est en charge."</string> <string name="downtime_condition_summary" msgid="8761776337475705749">"Jusqu\'à ce que le temps d\'arrêt se termine à <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> - <!-- no translation found for zen_mode_duration_minutes_summary:one (3177683545388923234) --> - <!-- no translation found for zen_mode_duration_minutes_summary:other (2787867221129368935) --> - <!-- no translation found for zen_mode_duration_hours_summary:one (597194865053253679) --> - <!-- no translation found for zen_mode_duration_hours_summary:other (2827214920627669898) --> + <plurals name="zen_mode_duration_minutes_summary"> + <item quantity="one" msgid="3177683545388923234">"Pendant une minute (jusqu\'à <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2787867221129368935">"Pendant %1$d minutes (jusqu\'à <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> + <plurals name="zen_mode_duration_hours_summary"> + <item quantity="one" msgid="597194865053253679">"Pendant une heure (jusqu\'à <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2827214920627669898">"Pendant %1$d heures (jusqu\'à <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> <plurals name="zen_mode_duration_minutes"> <item quantity="one" msgid="9040808414992812341">"Pendant une minute"</item> <item quantity="other" msgid="6924190729213550991">"Pendant %d minutes"</item> @@ -1788,7 +1799,7 @@ <item quantity="one" msgid="3480040795582254384">"Pendant une heure"</item> <item quantity="other" msgid="5408537517529822157">"Pendant %d heures"</item> </plurals> - <!-- no translation found for zen_mode_until (7336308492289875088) --> - <skip /> + <string name="zen_mode_until" msgid="7336308492289875088">"Jusqu\'à <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_forever" msgid="4316804956488785559">"Indéfiniment"</string> + <string name="toolbar_collapse_description" msgid="2821479483960330739">"Réduire"</string> </resources> diff --git a/core/res/res/values-gl-rES/strings.xml b/core/res/res/values-gl-rES/strings.xml index 08de833cd6ed..362867eb7d24 100644 --- a/core/res/res/values-gl-rES/strings.xml +++ b/core/res/res/values-gl-rES/strings.xml @@ -716,8 +716,14 @@ <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"Permite á aplicación ler e escribir no sistema de ficheiros da caché."</string> <string name="permlab_use_sip" msgid="2052499390128979920">"facer/recibir chamadas SIP"</string> <string name="permdesc_use_sip" msgid="2297804849860225257">"Permite que a aplicación faga e reciba chamadas SIP."</string> - <string name="permlab_register_provider" msgid="2654513709546459553">"rexistrar nova conexión de telecomunicacións"</string> - <string name="permdesc_register_provider" msgid="7571533832018681544">"Permite que a aplicación rexistre novas conexións de telecomunicacións."</string> + <!-- no translation found for permlab_register_sim_subscription (3166535485877549177) --> + <skip /> + <!-- no translation found for permdesc_register_sim_subscription (2138909035926222911) --> + <skip /> + <!-- no translation found for permlab_register_call_provider (108102120289029841) --> + <skip /> + <!-- no translation found for permdesc_register_call_provider (7034310263521081388) --> + <skip /> <string name="permlab_connection_manager" msgid="1116193254522105375">"xestionar conexións de telecomunicacións"</string> <string name="permdesc_connection_manager" msgid="5925480810356483565">"Permite que a aplicación xestione conexións de telecomunicacións."</string> <string name="permlab_bind_incall_service" msgid="6773648341975287125">"interactuar cunha pantalla de chamada"</string> @@ -1233,6 +1239,7 @@ <string name="smv_application" msgid="3307209192155442829">"A aplicación <xliff:g id="APPLICATION">%1$s</xliff:g> (proceso <xliff:g id="PROCESS">%2$s</xliff:g>) infrinxiu a súa política StrictMode autoaplicada."</string> <string name="smv_process" msgid="5120397012047462446">"O proceso <xliff:g id="PROCESS">%1$s</xliff:g> infrinxiu a política StrictMode de aplicación automática."</string> <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_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> <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Iniciando aplicacións."</string> <string name="android_upgrading_complete" msgid="1405954754112999229">"Está finalizando o arranque"</string> @@ -1776,10 +1783,14 @@ <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Solicitar un contrasinal antes de soltar a pantalla"</string> <string name="battery_saver_description" msgid="2510530476513605742">"Para axudar a mellorar a duración da batería, o aforro de batería reduce o rendemento do dispositivo e restrinxe a vibración e a maioría dos datos en segundo plano. É posible que o correo, as mensaxes e outras aplicacións que se sincronizan con frecuencia, non se actualicen a menos que as abras.\n\nO aforro de batería desactívase automaticamente durante a carga do dispositivo."</string> <string name="downtime_condition_summary" msgid="8761776337475705749">"Ata que remate o tempo de inactividade ás <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> - <!-- no translation found for zen_mode_duration_minutes_summary:one (3177683545388923234) --> - <!-- no translation found for zen_mode_duration_minutes_summary:other (2787867221129368935) --> - <!-- no translation found for zen_mode_duration_hours_summary:one (597194865053253679) --> - <!-- no translation found for zen_mode_duration_hours_summary:other (2827214920627669898) --> + <plurals name="zen_mode_duration_minutes_summary"> + <item quantity="one" msgid="3177683545388923234">"Durante un minuto (ata as <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2787867221129368935">"Durante %1$d minutos (ata as <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> + <plurals name="zen_mode_duration_hours_summary"> + <item quantity="one" msgid="597194865053253679">"Durante unha hora (ata as <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2827214920627669898">"Durante %1$d horas (ata as <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> <plurals name="zen_mode_duration_minutes"> <item quantity="one" msgid="9040808414992812341">"Durante un minuto"</item> <item quantity="other" msgid="6924190729213550991">"Durante %d minutos"</item> @@ -1788,7 +1799,7 @@ <item quantity="one" msgid="3480040795582254384">"Durante unha hora"</item> <item quantity="other" msgid="5408537517529822157">"Durante %d horas"</item> </plurals> - <!-- no translation found for zen_mode_until (7336308492289875088) --> - <skip /> + <string name="zen_mode_until" msgid="7336308492289875088">"Ata as <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_forever" msgid="4316804956488785559">"Indefinidamente"</string> + <string name="toolbar_collapse_description" msgid="2821479483960330739">"Contraer"</string> </resources> diff --git a/core/res/res/values-hi/strings.xml b/core/res/res/values-hi/strings.xml index 51586ffb64a6..c9766e155859 100644 --- a/core/res/res/values-hi/strings.xml +++ b/core/res/res/values-hi/strings.xml @@ -716,14 +716,16 @@ <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"ऐप्स को संचय फ़ाइल सिस्टम पढ़ने और लिखने देता है."</string> <string name="permlab_use_sip" msgid="2052499390128979920">"SIP कॉल करें/प्राप्त करें"</string> <string name="permdesc_use_sip" msgid="2297804849860225257">"ऐप्स को SIP कॉल करने और प्राप्त करने देती है."</string> - <!-- no translation found for permlab_register_provider (2654513709546459553) --> + <!-- no translation found for permlab_register_sim_subscription (3166535485877549177) --> <skip /> - <!-- no translation found for permdesc_register_provider (7571533832018681544) --> + <!-- no translation found for permdesc_register_sim_subscription (2138909035926222911) --> <skip /> - <!-- no translation found for permlab_connection_manager (1116193254522105375) --> + <!-- no translation found for permlab_register_call_provider (108102120289029841) --> <skip /> - <!-- no translation found for permdesc_connection_manager (5925480810356483565) --> + <!-- no translation found for permdesc_register_call_provider (7034310263521081388) --> <skip /> + <string name="permlab_connection_manager" msgid="1116193254522105375">"टेलीकॉम कनेक्शन प्रबंधित करें"</string> + <string name="permdesc_connection_manager" msgid="5925480810356483565">"ऐप को टेलीकॉम कनेक्शन प्रबंधित करने देती है."</string> <string name="permlab_bind_incall_service" msgid="6773648341975287125">"इन-कॉल स्क्रीन से सहभागिता करें"</string> <string name="permdesc_bind_incall_service" msgid="8343471381323215005">"ऐप्स को यह नियंत्रित करने देती है कि उपयोगकर्ता को इन-कॉल स्क्रीन कब और कैसी दिखाई देती है."</string> <string name="permlab_bind_connection_service" msgid="3557341439297014940">"टेलीफ़ोनी सेवाओं के साथ सहभागिता करें"</string> @@ -1237,6 +1239,7 @@ <string name="smv_application" msgid="3307209192155442829">"ऐप्स <xliff:g id="APPLICATION">%1$s</xliff:g> (प्रक्रिया <xliff:g id="PROCESS">%2$s</xliff:g>) ने उसकी स्वयं लागू होने वाली StrictMode नीति का उल्लंघन किया है."</string> <string name="smv_process" msgid="5120397012047462446">"प्रक्रिया <xliff:g id="PROCESS">%1$s</xliff:g> ने उसकी स्व-प्रवर्तित StrictMode नीति का उल्लंघन किया है."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Android अपग्रेड हो रहा है..."</string> + <string name="android_start_title" msgid="8418054686415318207">"Android प्रारंभ हो रहा है…"</string> <string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_1">%2$d</xliff:g> में से <xliff:g id="NUMBER_0">%1$d</xliff:g> ऐप्स अनुकूलित हो रहा है."</string> <string name="android_upgrading_starting_apps" msgid="451464516346926713">"ऐप्स प्रारंभ होने वाले हैं"</string> <string name="android_upgrading_complete" msgid="1405954754112999229">"बूट समाप्त हो रहा है."</string> @@ -1780,10 +1783,14 @@ <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"अनपिन करने से पहले पासवर्ड के लिए पूछें"</string> <string name="battery_saver_description" msgid="2510530476513605742">"बैटरी के जीवन काल को बेहतर बनाने में सहायता के लिए, बैटरी सेवर आपके डिवाइस के प्रदर्शन को घटा देता है तथा कंपन और अधिकांश पृष्ठभूमि डेटा को सीमित कर देता है. ईमेल, संदेश सेवा और अन्य ऐप्स जो समन्वयन पर निर्भर करते हैं वे तब तक अपडेट नहीं हो सकते जब तक कि आप उन्हें नहीं खोलते.\n\nजब आपका डिवाइस चार्ज हो रहा होता है तो बैटरी सेवर अपने आप बंद हो जाता है."</string> <string name="downtime_condition_summary" msgid="8761776337475705749">"जब तक कि <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> बजे आपका डाउनटाइम समाप्त न हो"</string> - <!-- no translation found for zen_mode_duration_minutes_summary:one (3177683545388923234) --> - <!-- no translation found for zen_mode_duration_minutes_summary:other (2787867221129368935) --> - <!-- no translation found for zen_mode_duration_hours_summary:one (597194865053253679) --> - <!-- no translation found for zen_mode_duration_hours_summary:other (2827214920627669898) --> + <plurals name="zen_mode_duration_minutes_summary"> + <item quantity="one" msgid="3177683545388923234">"एक मिनट के लिए (<xliff:g id="FORMATTEDTIME">%2$s</xliff:g> तक)"</item> + <item quantity="other" msgid="2787867221129368935">"%1$d मिनट के लिए (<xliff:g id="FORMATTEDTIME">%2$s</xliff:g> तक)"</item> + </plurals> + <plurals name="zen_mode_duration_hours_summary"> + <item quantity="one" msgid="597194865053253679">"एक घंटे के लिए (<xliff:g id="FORMATTEDTIME">%2$s</xliff:g> तक)"</item> + <item quantity="other" msgid="2827214920627669898">"%1$d घंटो के लिए (<xliff:g id="FORMATTEDTIME">%2$s</xliff:g> तक)"</item> + </plurals> <plurals name="zen_mode_duration_minutes"> <item quantity="one" msgid="9040808414992812341">"एक मिनट के लिए"</item> <item quantity="other" msgid="6924190729213550991">"%d मिनट के लिए"</item> @@ -1792,7 +1799,7 @@ <item quantity="one" msgid="3480040795582254384">"एक घंटे के लिए"</item> <item quantity="other" msgid="5408537517529822157">"%d घंटे के लिए"</item> </plurals> - <!-- no translation found for zen_mode_until (7336308492289875088) --> - <skip /> + <string name="zen_mode_until" msgid="7336308492289875088">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> तक"</string> <string name="zen_mode_forever" msgid="4316804956488785559">"अनिश्चित समय तक"</string> + <string name="toolbar_collapse_description" msgid="2821479483960330739">"संक्षिप्त करें"</string> </resources> diff --git a/core/res/res/values-hr/strings.xml b/core/res/res/values-hr/strings.xml index 1a4af08e2355..530b735c5e50 100644 --- a/core/res/res/values-hr/strings.xml +++ b/core/res/res/values-hr/strings.xml @@ -716,8 +716,14 @@ <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"Aplikaciji omogućuje čitanje i pisanje u datotečnom sustavu privremene memorije."</string> <string name="permlab_use_sip" msgid="2052499390128979920">"upućivanje/primanje SIP poziva"</string> <string name="permdesc_use_sip" msgid="2297804849860225257">"Aplikacija može upućivati i primati SIP pozive."</string> - <string name="permlab_register_provider" msgid="2654513709546459553">"registriranje novih telekomunikacijskih veza"</string> - <string name="permdesc_register_provider" msgid="7571533832018681544">"Aplikaciji omogućuje registriranje novih telekomunikacijskih veza."</string> + <!-- no translation found for permlab_register_sim_subscription (3166535485877549177) --> + <skip /> + <!-- no translation found for permdesc_register_sim_subscription (2138909035926222911) --> + <skip /> + <!-- no translation found for permlab_register_call_provider (108102120289029841) --> + <skip /> + <!-- no translation found for permdesc_register_call_provider (7034310263521081388) --> + <skip /> <string name="permlab_connection_manager" msgid="1116193254522105375">"upravljanje telekomunikacijskim vezama"</string> <string name="permdesc_connection_manager" msgid="5925480810356483565">"Aplikaciji omogućuje upravljanje telekomunikacijskim vezama."</string> <string name="permlab_bind_incall_service" msgid="6773648341975287125">"interakcija sa zaslonom tijekom poziva"</string> @@ -1233,6 +1239,7 @@ <string name="smv_application" msgid="3307209192155442829">"Aplikacija <xliff:g id="APPLICATION">%1$s</xliff:g> (proces <xliff:g id="PROCESS">%2$s</xliff:g>) prekršila je vlastito pravilo StrictMode."</string> <string name="smv_process" msgid="5120397012047462446">"Proces <xliff:g id="PROCESS">%1$s</xliff:g> prekršio je svoje vlastito pravilo StrictMode."</string> <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_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> <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Pokretanje aplikacija."</string> <string name="android_upgrading_complete" msgid="1405954754112999229">"Završetak inicijalizacije."</string> @@ -1776,10 +1783,14 @@ <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Traži zaporku radi otkvačivanja"</string> <string name="battery_saver_description" msgid="2510530476513605742">"Da bi se produljilo trajanje baterije, ušteda baterije smanjuje rad uređaja i ograničava vibraciju i većinu pozadinskih podataka. Aplikacije za e-poštu, slanje poruka i ostalo koje se oslanjaju na sinkronizaciju možda se neće ažurirati ako ih ne otvorite.\n\nUšteda baterije isključuje se automatski dok se uređaj puni."</string> <string name="downtime_condition_summary" msgid="8761776337475705749">"Dok razdoblje zastoja ne završi u <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> - <!-- no translation found for zen_mode_duration_minutes_summary:one (3177683545388923234) --> - <!-- no translation found for zen_mode_duration_minutes_summary:other (2787867221129368935) --> - <!-- no translation found for zen_mode_duration_hours_summary:one (597194865053253679) --> - <!-- no translation found for zen_mode_duration_hours_summary:other (2827214920627669898) --> + <plurals name="zen_mode_duration_minutes_summary"> + <item quantity="one" msgid="3177683545388923234">"Jednu minutu (do <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2787867221129368935">"%1$d min (do <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> + <plurals name="zen_mode_duration_hours_summary"> + <item quantity="one" msgid="597194865053253679">"Jedan sat (do <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2827214920627669898">"%1$d h (do <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> <plurals name="zen_mode_duration_minutes"> <item quantity="one" msgid="9040808414992812341">"Jednu minutu"</item> <item quantity="other" msgid="6924190729213550991">"%d min"</item> @@ -1788,7 +1799,7 @@ <item quantity="one" msgid="3480040795582254384">"Jedan sat"</item> <item quantity="other" msgid="5408537517529822157">"%d h"</item> </plurals> - <!-- no translation found for zen_mode_until (7336308492289875088) --> - <skip /> + <string name="zen_mode_until" msgid="7336308492289875088">"Do <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_forever" msgid="4316804956488785559">"Neodređeno"</string> + <string name="toolbar_collapse_description" msgid="2821479483960330739">"Sažmi"</string> </resources> diff --git a/core/res/res/values-hu/strings.xml b/core/res/res/values-hu/strings.xml index 87be17493a22..934b4dbcc35e 100644 --- a/core/res/res/values-hu/strings.xml +++ b/core/res/res/values-hu/strings.xml @@ -716,8 +716,14 @@ <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"Lehetővé teszi az alkalmazás számára a gyorsítótár-fájlrendszer olvasását és írását."</string> <string name="permlab_use_sip" msgid="2052499390128979920">"SIP-hívások indítása/fogadása"</string> <string name="permdesc_use_sip" msgid="2297804849860225257">"SIP-hívások indításának és fogadásának engedélyezése az alkalmazás számára."</string> - <string name="permlab_register_provider" msgid="2654513709546459553">"új telekommunikációs kapcsolatok regisztrálása"</string> - <string name="permdesc_register_provider" msgid="7571533832018681544">"Engedélyezi az alkalmazásnak új telekommunikációs kapcsolatok regisztrálását."</string> + <!-- no translation found for permlab_register_sim_subscription (3166535485877549177) --> + <skip /> + <!-- no translation found for permdesc_register_sim_subscription (2138909035926222911) --> + <skip /> + <!-- no translation found for permlab_register_call_provider (108102120289029841) --> + <skip /> + <!-- no translation found for permdesc_register_call_provider (7034310263521081388) --> + <skip /> <string name="permlab_connection_manager" msgid="1116193254522105375">"telekommunikációs kapcsolatok kezelése"</string> <string name="permdesc_connection_manager" msgid="5925480810356483565">"Engedélyezi az alkalmazásnak a telekommunikációs kapcsolatok kezelését."</string> <string name="permlab_bind_incall_service" msgid="6773648341975287125">"interakció a hívás közbeni képernyővel"</string> @@ -1233,6 +1239,7 @@ <string name="smv_application" msgid="3307209192155442829">"A(z) <xliff:g id="APPLICATION">%1$s</xliff:g> alkalmazás (<xliff:g id="PROCESS">%2$s</xliff:g> folyamat) megsértette az általa kényszerített Szigorú üzemmód irányelvet."</string> <string name="smv_process" msgid="5120397012047462446">"<xliff:g id="PROCESS">%1$s</xliff:g> folyamat megsértette az általa kényszerített Szigorú üzemmód irányelvet."</string> <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_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> <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Kezdő alkalmazások."</string> <string name="android_upgrading_complete" msgid="1405954754112999229">"Rendszerindítás befejezése."</string> @@ -1776,10 +1783,14 @@ <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Jelszó kérése a rögzítés feloldásához"</string> <string name="battery_saver_description" msgid="2510530476513605742">"Az akkumulátor üzemidejének növeléséhez az akkumulátorkímélő mód csökkenti az eszköz teljesítményét, valamint korlátozza a rezgést és a legtöbb háttéradatot. Előfordulhat, hogy az e-mailek, az üzenetküldő programok és más alkalmazások, amelyek a szinkronizálás funkciót használják, nem frissülnek addig, amíg meg nem nyitja őket.\n\nAz akkumulátorkímélő mód automatikusan kikapcsol, amikor az eszköz töltődik."</string> <string name="downtime_condition_summary" msgid="8761776337475705749">"Amíg az állásidő véget nem ér ekkor: <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> - <!-- no translation found for zen_mode_duration_minutes_summary:one (3177683545388923234) --> - <!-- no translation found for zen_mode_duration_minutes_summary:other (2787867221129368935) --> - <!-- no translation found for zen_mode_duration_hours_summary:one (597194865053253679) --> - <!-- no translation found for zen_mode_duration_hours_summary:other (2827214920627669898) --> + <plurals name="zen_mode_duration_minutes_summary"> + <item quantity="one" msgid="3177683545388923234">"Egy percre (eddig: <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2787867221129368935">"%1$d percre (eddig: <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> + <plurals name="zen_mode_duration_hours_summary"> + <item quantity="one" msgid="597194865053253679">"Egy órára (eddig: <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2827214920627669898">"%1$d órára (eddig: <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> <plurals name="zen_mode_duration_minutes"> <item quantity="one" msgid="9040808414992812341">"Egy percen át"</item> <item quantity="other" msgid="6924190729213550991">"%d percen át"</item> @@ -1788,7 +1799,7 @@ <item quantity="one" msgid="3480040795582254384">"Egy órán át"</item> <item quantity="other" msgid="5408537517529822157">"%d órán át"</item> </plurals> - <!-- no translation found for zen_mode_until (7336308492289875088) --> - <skip /> + <string name="zen_mode_until" msgid="7336308492289875088">"Eddig: <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_forever" msgid="4316804956488785559">"Határozatlan ideig"</string> + <string name="toolbar_collapse_description" msgid="2821479483960330739">"Összecsukás"</string> </resources> diff --git a/core/res/res/values-hy-rAM/strings.xml b/core/res/res/values-hy-rAM/strings.xml index 1ab805edcd2b..86faca3fddbb 100644 --- a/core/res/res/values-hy-rAM/strings.xml +++ b/core/res/res/values-hy-rAM/strings.xml @@ -716,14 +716,16 @@ <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"Թույլ է տալիս հավելվածին գրել և կարդալ քեշ ֆայլային համակարգը:"</string> <string name="permlab_use_sip" msgid="2052499390128979920">"կատարել կամ ստանալ SIP զանգեր"</string> <string name="permdesc_use_sip" msgid="2297804849860225257">"Ծրագրին թույլ է տալիս կատարել և ստանալ SIP զանգեր:"</string> - <!-- no translation found for permlab_register_provider (2654513709546459553) --> + <!-- no translation found for permlab_register_sim_subscription (3166535485877549177) --> <skip /> - <!-- no translation found for permdesc_register_provider (7571533832018681544) --> + <!-- no translation found for permdesc_register_sim_subscription (2138909035926222911) --> <skip /> - <!-- no translation found for permlab_connection_manager (1116193254522105375) --> + <!-- no translation found for permlab_register_call_provider (108102120289029841) --> <skip /> - <!-- no translation found for permdesc_connection_manager (5925480810356483565) --> + <!-- no translation found for permdesc_register_call_provider (7034310263521081388) --> <skip /> + <string name="permlab_connection_manager" msgid="1116193254522105375">"կառավարել հեռահաղորդակցության կապերը"</string> + <string name="permdesc_connection_manager" msgid="5925480810356483565">"Հավելվածին թույլ է տալիս կառավարել հեռահաղորդակցության կապերը:"</string> <string name="permlab_bind_incall_service" msgid="6773648341975287125">"փոխազդել մուտքային զանգի էկրանին"</string> <string name="permdesc_bind_incall_service" msgid="8343471381323215005">"Թույլ է տալիս ծրագրին վերահսկել՝ երբ և ինչպես է օգտվողը տեսնում մուտքային զանգը էկրանին:"</string> <string name="permlab_bind_connection_service" msgid="3557341439297014940">"համագործակցել հեռախոսակապի ծառայությունների հետ"</string> @@ -1237,6 +1239,8 @@ <string name="smv_application" msgid="3307209192155442829">"<xliff:g id="APPLICATION">%1$s</xliff:g> ծրագիրը (գործընթաց <xliff:g id="PROCESS">%2$s</xliff:g>) խախտել է իր ինքնահարկադրված Խիստ ռեժիմ քաղաքականությունը:"</string> <string name="smv_process" msgid="5120397012047462446">"<xliff:g id="PROCESS">%1$s</xliff:g> գործընթացը խախտել է իր ինքնահարկադրված Խիստ ռեժիմ քաղաքականությունը:"</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Android-ը նորացվում է..."</string> + <!-- no translation found for android_start_title (8418054686415318207) --> + <skip /> <string name="android_upgrading_apk" msgid="7904042682111526169">"Օպտիմալացվում է հավելված <xliff:g id="NUMBER_0">%1$d</xliff:g>-ը <xliff:g id="NUMBER_1">%2$d</xliff:g>-ից:"</string> <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Հավելվածները մեկնարկում են:"</string> <string name="android_upgrading_complete" msgid="1405954754112999229">"Բեռնումն ավարտվում է:"</string> @@ -1780,10 +1784,14 @@ <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Ապաամրացնելուց առաջ հարցնել գաղտնաբառը"</string> <string name="battery_saver_description" msgid="2510530476513605742">"Մարտկոցի աշխատաժամանակը շատացնելու համար մարտկոցի տնտեսումը կնվազեցնի ձեր սարքի կատարողականը և կսահմանափակի թրթռոցն ու ֆոնային տվյալներից շատերը: Էլփոստը, հաղորդագրությունները և այլ ծրագրերը, որոնք օգտագործում են համաժամեցումը, կթարմանան միայն դրանք աշխատեցնելիս:\n\nՄարկտոցի տնտեսումը ավտոմատ կանջատվի, հենց սարքը միացվի լիցքավորման:"</string> <string name="downtime_condition_summary" msgid="8761776337475705749">"Մինչև ձեր ժամանակն ավարտվի ժամը <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> - <!-- no translation found for zen_mode_duration_minutes_summary:one (3177683545388923234) --> - <!-- no translation found for zen_mode_duration_minutes_summary:other (2787867221129368935) --> - <!-- no translation found for zen_mode_duration_hours_summary:one (597194865053253679) --> - <!-- no translation found for zen_mode_duration_hours_summary:other (2827214920627669898) --> + <plurals name="zen_mode_duration_minutes_summary"> + <item quantity="one" msgid="3177683545388923234">"Մեկ րոպե (մինչև <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2787867221129368935">"%1$d րոպե (մինչև <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> + <plurals name="zen_mode_duration_hours_summary"> + <item quantity="one" msgid="597194865053253679">"Մեկ ժամ (մինչև <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2827214920627669898">"%1$d ժամ (մինչև <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> <plurals name="zen_mode_duration_minutes"> <item quantity="one" msgid="9040808414992812341">"Մեկ րոպե"</item> <item quantity="other" msgid="6924190729213550991">"%d րոպե"</item> @@ -1792,7 +1800,8 @@ <item quantity="one" msgid="3480040795582254384">"Մեկ ժամ"</item> <item quantity="other" msgid="5408537517529822157">"%d ժամ"</item> </plurals> - <!-- no translation found for zen_mode_until (7336308492289875088) --> - <skip /> + <string name="zen_mode_until" msgid="7336308492289875088">"Մինչև <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_forever" msgid="4316804956488785559">"Անորոշ ժամանակով"</string> + <!-- no translation found for toolbar_collapse_description (2821479483960330739) --> + <skip /> </resources> diff --git a/core/res/res/values-in/strings.xml b/core/res/res/values-in/strings.xml index d80c2bdf2e72..0ff8eaecbd8f 100644 --- a/core/res/res/values-in/strings.xml +++ b/core/res/res/values-in/strings.xml @@ -716,8 +716,14 @@ <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"Mengizinkan apl membaca dan menulis pada sistem file cache."</string> <string name="permlab_use_sip" msgid="2052499390128979920">"lakukan/terima panggilan SIP"</string> <string name="permdesc_use_sip" msgid="2297804849860225257">"Izinkan aplikasi melakukan dan menerima panggilan SIP."</string> - <string name="permlab_register_provider" msgid="2654513709546459553">"daftarkan sambungan telekomunikasi baru"</string> - <string name="permdesc_register_provider" msgid="7571533832018681544">"Mengizinkan aplikasi untuk mendaftarkan sambungan telekomunikasi baru."</string> + <!-- no translation found for permlab_register_sim_subscription (3166535485877549177) --> + <skip /> + <!-- no translation found for permdesc_register_sim_subscription (2138909035926222911) --> + <skip /> + <!-- no translation found for permlab_register_call_provider (108102120289029841) --> + <skip /> + <!-- no translation found for permdesc_register_call_provider (7034310263521081388) --> + <skip /> <string name="permlab_connection_manager" msgid="1116193254522105375">"kelola sambungan telekomunikasi"</string> <string name="permdesc_connection_manager" msgid="5925480810356483565">"Mengizinkan aplikasi untuk mengelola sambungan telekomunikasi."</string> <string name="permlab_bind_incall_service" msgid="6773648341975287125">"berinteraksi dengan layar dalam panggilan"</string> @@ -1233,6 +1239,7 @@ <string name="smv_application" msgid="3307209192155442829">"Apl <xliff:g id="APPLICATION">%1$s</xliff:g> (proses <xliff:g id="PROCESS">%2$s</xliff:g>) telah melanggar kebijakan StrictMode yang diberlakukannya sendiri."</string> <string name="smv_process" msgid="5120397012047462446">"Proses <xliff:g id="PROCESS">%1$s</xliff:g> telah melanggar kebijakan StrictMode yang diberlakukan secara otomatis."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Android sedang meningkatkan versi..."</string> + <string name="android_start_title" msgid="8418054686415318207">"Memulai Android…"</string> <string name="android_upgrading_apk" msgid="7904042682111526169">"Mengoptimalkan aplikasi <xliff:g id="NUMBER_0">%1$d</xliff:g> dari <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Memulai aplikasi."</string> <string name="android_upgrading_complete" msgid="1405954754112999229">"Menyelesaikan boot."</string> @@ -1776,10 +1783,14 @@ <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Meminta sandi sebelum melepas sematan"</string> <string name="battery_saver_description" msgid="2510530476513605742">"Guna membantu meningkatkan masa pakai baterai, penghemat baterai mengurangi kinerja perangkat dan membatasi getaran serta sebagian besar data latar belakang. Email, perpesanan, dan aplikasi lain yang bergantung pada sinkronisasi mungkin tidak akan diperbarui kecuali Anda membukanya.\n\nPenghemat baterai dinonaktifkan secara otomatis saat perangkat diisi daya."</string> <string name="downtime_condition_summary" msgid="8761776337475705749">"Hingga waktu perbaikan Anda berakhir pukul <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> - <!-- no translation found for zen_mode_duration_minutes_summary:one (3177683545388923234) --> - <!-- no translation found for zen_mode_duration_minutes_summary:other (2787867221129368935) --> - <!-- no translation found for zen_mode_duration_hours_summary:one (597194865053253679) --> - <!-- no translation found for zen_mode_duration_hours_summary:other (2827214920627669898) --> + <plurals name="zen_mode_duration_minutes_summary"> + <item quantity="one" msgid="3177683545388923234">"Selama semenit (hingga <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2787867221129368935">"Selama %1$d menit (hingga <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> + <plurals name="zen_mode_duration_hours_summary"> + <item quantity="one" msgid="597194865053253679">"Selama sejam (hingga <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2827214920627669898">"Selama %1$d jam (hingga <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> <plurals name="zen_mode_duration_minutes"> <item quantity="one" msgid="9040808414992812341">"Selama satu menit"</item> <item quantity="other" msgid="6924190729213550991">"Selama %d menit"</item> @@ -1788,7 +1799,7 @@ <item quantity="one" msgid="3480040795582254384">"Selama satu jam"</item> <item quantity="other" msgid="5408537517529822157">"Selama %d jam"</item> </plurals> - <!-- no translation found for zen_mode_until (7336308492289875088) --> - <skip /> + <string name="zen_mode_until" msgid="7336308492289875088">"Hingga <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_forever" msgid="4316804956488785559">"Tidak ditentukan"</string> + <string name="toolbar_collapse_description" msgid="2821479483960330739">"Ciutkan"</string> </resources> diff --git a/core/res/res/values-is-rIS/strings.xml b/core/res/res/values-is-rIS/strings.xml index 2b2415446d7e..5f15cb8331b3 100644 --- a/core/res/res/values-is-rIS/strings.xml +++ b/core/res/res/values-is-rIS/strings.xml @@ -716,8 +716,14 @@ <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"Leyfir forriti að lesa og skrifa í skráakerfi skyndiminnis."</string> <string name="permlab_use_sip" msgid="2052499390128979920">"hringja/svara SIP-símtölum"</string> <string name="permdesc_use_sip" msgid="2297804849860225257">"Leyfir forritinu að hringja og svara SIP-símtölum."</string> - <string name="permlab_register_provider" msgid="2654513709546459553">"skrá nýjar símatengingar"</string> - <string name="permdesc_register_provider" msgid="7571533832018681544">"Leyfir forritinu að skrá nýjar símatengingar."</string> + <!-- no translation found for permlab_register_sim_subscription (3166535485877549177) --> + <skip /> + <!-- no translation found for permdesc_register_sim_subscription (2138909035926222911) --> + <skip /> + <!-- no translation found for permlab_register_call_provider (108102120289029841) --> + <skip /> + <!-- no translation found for permdesc_register_call_provider (7034310263521081388) --> + <skip /> <string name="permlab_connection_manager" msgid="1116193254522105375">"stjórna símatengingum"</string> <string name="permdesc_connection_manager" msgid="5925480810356483565">"Leyfir forritinu að stjórna símatengingum."</string> <string name="permlab_bind_incall_service" msgid="6773648341975287125">"eiga samskipti við símtalsskjá"</string> @@ -1233,6 +1239,7 @@ <string name="smv_application" msgid="3307209192155442829">"Forritið <xliff:g id="APPLICATION">%1$s</xliff:g> (ferli <xliff:g id="PROCESS">%2$s</xliff:g>) hefur brotið gegn eigin StrictMode-stefnu."</string> <string name="smv_process" msgid="5120397012047462446">"Forritið <xliff:g id="PROCESS">%1$s</xliff:g> braut gegn eigin StrictMode-stefnu."</string> <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_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> <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Ræsir forrit."</string> <string name="android_upgrading_complete" msgid="1405954754112999229">"Lýkur ræsingu."</string> @@ -1776,10 +1783,14 @@ <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Biðja um aðgangsorð til að losa"</string> <string name="battery_saver_description" msgid="2510530476513605742">"Til að auka endingu rafhlöðunnar dregur rafhlöðusparnaður úr afköstum tækisins og takmarkar titring og flest bakgrunnsgögn. Ekki er víst að tölvupóstur, skilaboð og önnur forrit sem reiða sig á samstillingu verði uppfærð fyrr en þú opnar þau.\n\nSjálfkrafa er slökkt á rafhlöðusparnaði þegar tækið er í hleðslu."</string> <string name="downtime_condition_summary" msgid="8761776337475705749">"Þangað til niðritíma lýkur, <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> - <!-- no translation found for zen_mode_duration_minutes_summary:one (3177683545388923234) --> - <!-- no translation found for zen_mode_duration_minutes_summary:other (2787867221129368935) --> - <!-- no translation found for zen_mode_duration_hours_summary:one (597194865053253679) --> - <!-- no translation found for zen_mode_duration_hours_summary:other (2827214920627669898) --> + <plurals name="zen_mode_duration_minutes_summary"> + <item quantity="one" msgid="3177683545388923234">"Í eina mínútu (til <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2787867221129368935">"Í %1$d mín. (til <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> + <plurals name="zen_mode_duration_hours_summary"> + <item quantity="one" msgid="597194865053253679">"Í eina klukkustund (til <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2827214920627669898">"Í %1$d klst. (til <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> <plurals name="zen_mode_duration_minutes"> <item quantity="one" msgid="9040808414992812341">"Í eina mínútu"</item> <item quantity="other" msgid="6924190729213550991">"Í %d mínútur"</item> @@ -1788,7 +1799,7 @@ <item quantity="one" msgid="3480040795582254384">"Í eina klukkustund"</item> <item quantity="other" msgid="5408537517529822157">"Í %d klukkustundir"</item> </plurals> - <!-- no translation found for zen_mode_until (7336308492289875088) --> - <skip /> + <string name="zen_mode_until" msgid="7336308492289875088">"Til <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_forever" msgid="4316804956488785559">"Án tímatakmarkana"</string> + <string name="toolbar_collapse_description" msgid="2821479483960330739">"Minnka"</string> </resources> diff --git a/core/res/res/values-it/strings.xml b/core/res/res/values-it/strings.xml index 69b76048e605..a102e4be8697 100644 --- a/core/res/res/values-it/strings.xml +++ b/core/res/res/values-it/strings.xml @@ -716,8 +716,14 @@ <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"Consente all\'applicazione di leggere e scrivere il filesystem nella cache."</string> <string name="permlab_use_sip" msgid="2052499390128979920">"fare/ricevere chiamate SIP"</string> <string name="permdesc_use_sip" msgid="2297804849860225257">"Consente all\'app di effettuare e ricevere chiamate SIP."</string> - <string name="permlab_register_provider" msgid="2654513709546459553">"registra nuova connessione di telecomunicazione"</string> - <string name="permdesc_register_provider" msgid="7571533832018681544">"Consente all\'app di registrare nuove connessioni di telecomunicazione."</string> + <!-- no translation found for permlab_register_sim_subscription (3166535485877549177) --> + <skip /> + <!-- no translation found for permdesc_register_sim_subscription (2138909035926222911) --> + <skip /> + <!-- no translation found for permlab_register_call_provider (108102120289029841) --> + <skip /> + <!-- no translation found for permdesc_register_call_provider (7034310263521081388) --> + <skip /> <string name="permlab_connection_manager" msgid="1116193254522105375">"gestisci connessioni di telecomunicazione"</string> <string name="permdesc_connection_manager" msgid="5925480810356483565">"Consente all\'app di gestire connessioni di telecomunicazione."</string> <string name="permlab_bind_incall_service" msgid="6773648341975287125">"interazione con lo schermo durante una chiamata"</string> @@ -1233,6 +1239,7 @@ <string name="smv_application" msgid="3307209192155442829">"L\'applicazione <xliff:g id="APPLICATION">%1$s</xliff:g> (processo <xliff:g id="PROCESS">%2$s</xliff:g>) ha violato la norma StrictMode autoimposta."</string> <string name="smv_process" msgid="5120397012047462446">"Il processo <xliff:g id="PROCESS">%1$s</xliff:g> ha violato la norma StrictMode autoimposta."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Upgrade di Android..."</string> + <string name="android_start_title" msgid="8418054686415318207">"Avvio di Android…"</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> <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Avvio applicazioni."</string> <string name="android_upgrading_complete" msgid="1405954754112999229">"Conclusione dell\'avvio."</string> @@ -1776,10 +1783,14 @@ <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Richiedi password prima di sbloccare"</string> <string name="battery_saver_description" msgid="2510530476513605742">"Per aumentare la durata della batteria, la funzione Risparmio energetico riduce le prestazioni del dispositivo e limita vibrazione e gran parte dei dati in background. App di email, messaggi e altre app basate sulla sincronizzazione potrebbero non essere aggiornate se non le apri.\n\nIl risparmio energetico si disattiva automaticamente quando il dispositivo è in carica."</string> <string name="downtime_condition_summary" msgid="8761776337475705749">"Fino al termine del periodo di inattività previsto per le <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> - <!-- no translation found for zen_mode_duration_minutes_summary:one (3177683545388923234) --> - <!-- no translation found for zen_mode_duration_minutes_summary:other (2787867221129368935) --> - <!-- no translation found for zen_mode_duration_hours_summary:one (597194865053253679) --> - <!-- no translation found for zen_mode_duration_hours_summary:other (2827214920627669898) --> + <plurals name="zen_mode_duration_minutes_summary"> + <item quantity="one" msgid="3177683545388923234">"Per un minuto (fino alle ore <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2787867221129368935">"Per %1$d minuti (fino alle ore <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> + <plurals name="zen_mode_duration_hours_summary"> + <item quantity="one" msgid="597194865053253679">"Per un\'ora (fino alle ore <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2827214920627669898">"Per %1$d ore (fino alle ore <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> <plurals name="zen_mode_duration_minutes"> <item quantity="one" msgid="9040808414992812341">"Per un minuto"</item> <item quantity="other" msgid="6924190729213550991">"Per %d minuti"</item> @@ -1788,7 +1799,7 @@ <item quantity="one" msgid="3480040795582254384">"Per un\'ora"</item> <item quantity="other" msgid="5408537517529822157">"Per %d ore"</item> </plurals> - <!-- no translation found for zen_mode_until (7336308492289875088) --> - <skip /> + <string name="zen_mode_until" msgid="7336308492289875088">"Fino alle ore <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_forever" msgid="4316804956488785559">"Sempre"</string> + <string name="toolbar_collapse_description" msgid="2821479483960330739">"Comprimi"</string> </resources> diff --git a/core/res/res/values-iw/strings.xml b/core/res/res/values-iw/strings.xml index 6a41a47da87f..71961b581bf6 100644 --- a/core/res/res/values-iw/strings.xml +++ b/core/res/res/values-iw/strings.xml @@ -716,8 +716,14 @@ <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"מאפשר לאפליקציה לקרוא ולכתוב במערכת הקבצים של הקבצים השמורים."</string> <string name="permlab_use_sip" msgid="2052499390128979920">"ביצוע/קבלה של שיחות SIP"</string> <string name="permdesc_use_sip" msgid="2297804849860225257">"אפשר לאפליקציה לבצע ולקבל שיחות SIP."</string> - <string name="permlab_register_provider" msgid="2654513709546459553">"רישום של חיבור תקשורת חדש"</string> - <string name="permdesc_register_provider" msgid="7571533832018681544">"מאפשר לאפליקציה לרשום חיבורי תקשורת חדשים."</string> + <!-- no translation found for permlab_register_sim_subscription (3166535485877549177) --> + <skip /> + <!-- no translation found for permdesc_register_sim_subscription (2138909035926222911) --> + <skip /> + <!-- no translation found for permlab_register_call_provider (108102120289029841) --> + <skip /> + <!-- no translation found for permdesc_register_call_provider (7034310263521081388) --> + <skip /> <string name="permlab_connection_manager" msgid="1116193254522105375">"ניהול חיבורי תקשורת"</string> <string name="permdesc_connection_manager" msgid="5925480810356483565">"מאפשר לאפליקציה לנהל חיבורי תקשורת."</string> <string name="permlab_bind_incall_service" msgid="6773648341975287125">"צור אינטראקציה עם מסך שיחה נכנסת"</string> @@ -1233,6 +1239,7 @@ <string name="smv_application" msgid="3307209192155442829">"האפליקציה <xliff:g id="APPLICATION">%1$s</xliff:g> (תהליך <xliff:g id="PROCESS">%2$s</xliff:g>) הפר את מדיניות StrictMode באכיפה עצמית שלו."</string> <string name="smv_process" msgid="5120397012047462446">"התהליך <xliff:g id="PROCESS">%1$s</xliff:g> הפר את מדיניות StrictMode באכיפה עצמית."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Android מבצע שדרוג…"</string> + <string name="android_start_title" msgid="8418054686415318207">"הפעלת Android מתחילה…"</string> <string name="android_upgrading_apk" msgid="7904042682111526169">"מבצע אופטימיזציה של אפליקציה <xliff:g id="NUMBER_0">%1$d</xliff:g> מתוך <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="451464516346926713">"מפעיל אפליקציות."</string> <string name="android_upgrading_complete" msgid="1405954754112999229">"מסיים אתחול."</string> @@ -1776,10 +1783,14 @@ <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"בקש סיסמה לפני ביטול הצמדה"</string> <string name="battery_saver_description" msgid="2510530476513605742">"כדי לעזור בהארכת חיי הסוללה, תכונת \'חיסכון בסוללה\' מצמצמת את פעילות המכשיר ומגבילה את השימוש ברטט וברוב נתוני הרקע. ייתכן שאימייל, שליחת הודעות ואפליקציות אחרות המסתמכות על סנכרון לא יתעדכנו, אלא אם תפתח אותן.\n\nתכונת \'חיסכון בסוללה\' מופסקת אוטומטית כשהמכשיר מחובר לחשמל."</string> <string name="downtime_condition_summary" msgid="8761776337475705749">"עד לסיום ההשבתה בשעה <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> - <!-- no translation found for zen_mode_duration_minutes_summary:one (3177683545388923234) --> - <!-- no translation found for zen_mode_duration_minutes_summary:other (2787867221129368935) --> - <!-- no translation found for zen_mode_duration_hours_summary:one (597194865053253679) --> - <!-- no translation found for zen_mode_duration_hours_summary:other (2827214920627669898) --> + <plurals name="zen_mode_duration_minutes_summary"> + <item quantity="one" msgid="3177683545388923234">"למשך דקה אחת (עד <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2787867221129368935">"למשך %1$d דקות (עד <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> + <plurals name="zen_mode_duration_hours_summary"> + <item quantity="one" msgid="597194865053253679">"למשך שעה אחת (עד <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2827214920627669898">"למשך %1$d שעות (עד <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> <plurals name="zen_mode_duration_minutes"> <item quantity="one" msgid="9040808414992812341">"למשך דקה אחת"</item> <item quantity="other" msgid="6924190729213550991">"למשך %d דקות"</item> @@ -1788,7 +1799,7 @@ <item quantity="one" msgid="3480040795582254384">"למשך שעה אחת"</item> <item quantity="other" msgid="5408537517529822157">"למשך %d שעות"</item> </plurals> - <!-- no translation found for zen_mode_until (7336308492289875088) --> - <skip /> + <string name="zen_mode_until" msgid="7336308492289875088">"עד <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_forever" msgid="4316804956488785559">"ללא הגבלה"</string> + <string name="toolbar_collapse_description" msgid="2821479483960330739">"כווץ"</string> </resources> diff --git a/core/res/res/values-ja/strings.xml b/core/res/res/values-ja/strings.xml index 254c7f357071..388e8f143628 100644 --- a/core/res/res/values-ja/strings.xml +++ b/core/res/res/values-ja/strings.xml @@ -716,8 +716,14 @@ <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"キャッシュファイルシステムの読み書きをアプリに許可します。"</string> <string name="permlab_use_sip" msgid="2052499390128979920">"SIP通話の発着信"</string> <string name="permdesc_use_sip" msgid="2297804849860225257">"SIP通話の発着信をアプリに許可します。"</string> - <string name="permlab_register_provider" msgid="2654513709546459553">"新しい通信接続の登録"</string> - <string name="permdesc_register_provider" msgid="7571533832018681544">"新しい通信接続の登録をアプリに許可します。"</string> + <!-- no translation found for permlab_register_sim_subscription (3166535485877549177) --> + <skip /> + <!-- no translation found for permdesc_register_sim_subscription (2138909035926222911) --> + <skip /> + <!-- no translation found for permlab_register_call_provider (108102120289029841) --> + <skip /> + <!-- no translation found for permdesc_register_call_provider (7034310263521081388) --> + <skip /> <string name="permlab_connection_manager" msgid="1116193254522105375">"通信接続の管理"</string> <string name="permdesc_connection_manager" msgid="5925480810356483565">"通信接続の管理をアプリに許可します。"</string> <string name="permlab_bind_incall_service" msgid="6773648341975287125">"通話画面とのインタラクション"</string> @@ -1233,6 +1239,7 @@ <string name="smv_application" msgid="3307209192155442829">"アプリ「<xliff:g id="APPLICATION">%1$s</xliff:g>」(プロセス「<xliff:g id="PROCESS">%2$s</xliff:g>」)でStrictModeポリシー違反がありました。"</string> <string name="smv_process" msgid="5120397012047462446">"プロセス<xliff:g id="PROCESS">%1$s</xliff:g>でStrictModeポリシー違反がありました。"</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Androidをアップグレードしています..."</string> + <string name="android_start_title" msgid="8418054686415318207">"Androidの起動中…"</string> <string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_1">%2$d</xliff:g>個中<xliff:g id="NUMBER_0">%1$d</xliff:g>個のアプリを最適化しています。"</string> <string name="android_upgrading_starting_apps" msgid="451464516346926713">"アプリを起動しています。"</string> <string name="android_upgrading_complete" msgid="1405954754112999229">"ブートを終了しています。"</string> @@ -1776,10 +1783,14 @@ <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"オフライン再生を解除する前にパスワードの入力を求める"</string> <string name="battery_saver_description" msgid="2510530476513605742">"バッテリーを長持ちさせるため、バッテリーセーバーは端末のパフォーマンス、バイブレーション、ほとんどのバックグラウンドデータを制限します。同期を使用するメールやメッセージなどのアプリは起動しないと更新されない場合があります。\n\nバッテリーセーバーは、端末の充電中は自動的にOFFになります。"</string> <string name="downtime_condition_summary" msgid="8761776337475705749">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g>にダウンロードが終わるまで"</string> - <!-- no translation found for zen_mode_duration_minutes_summary:one (3177683545388923234) --> - <!-- no translation found for zen_mode_duration_minutes_summary:other (2787867221129368935) --> - <!-- no translation found for zen_mode_duration_hours_summary:one (597194865053253679) --> - <!-- no translation found for zen_mode_duration_hours_summary:other (2827214920627669898) --> + <plurals name="zen_mode_duration_minutes_summary"> + <item quantity="one" msgid="3177683545388923234">"1分間(<xliff:g id="FORMATTEDTIME">%2$s</xliff:g>まで)"</item> + <item quantity="other" msgid="2787867221129368935">"%1$d分間(<xliff:g id="FORMATTEDTIME">%2$s</xliff:g>まで)"</item> + </plurals> + <plurals name="zen_mode_duration_hours_summary"> + <item quantity="one" msgid="597194865053253679">"1時間(<xliff:g id="FORMATTEDTIME">%2$s</xliff:g>まで)"</item> + <item quantity="other" msgid="2827214920627669898">"%1$d時間(<xliff:g id="FORMATTEDTIME">%2$s</xliff:g>まで)"</item> + </plurals> <plurals name="zen_mode_duration_minutes"> <item quantity="one" msgid="9040808414992812341">"1分"</item> <item quantity="other" msgid="6924190729213550991">"%d分"</item> @@ -1788,7 +1799,7 @@ <item quantity="one" msgid="3480040795582254384">"1時間"</item> <item quantity="other" msgid="5408537517529822157">"%d時間"</item> </plurals> - <!-- no translation found for zen_mode_until (7336308492289875088) --> - <skip /> + <string name="zen_mode_until" msgid="7336308492289875088">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g>まで"</string> <string name="zen_mode_forever" msgid="4316804956488785559">"制限なし"</string> + <string name="toolbar_collapse_description" msgid="2821479483960330739">"折りたたむ"</string> </resources> diff --git a/core/res/res/values-ka-rGE/strings.xml b/core/res/res/values-ka-rGE/strings.xml index d45fb04799a7..fbf36714b75e 100644 --- a/core/res/res/values-ka-rGE/strings.xml +++ b/core/res/res/values-ka-rGE/strings.xml @@ -716,14 +716,16 @@ <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"აპებს აძლევს ქეშირებული სისტემური ფაილების წაკითხვისა და მათში ჩანაწერების გაკეთების საშუალებას."</string> <string name="permlab_use_sip" msgid="2052499390128979920">"SIP ზარების წამოწყება/მიღება"</string> <string name="permdesc_use_sip" msgid="2297804849860225257">"ნებას რთავს აპს განახორციელოს და მიიღოს SIP ზარები."</string> - <!-- no translation found for permlab_register_provider (2654513709546459553) --> + <!-- no translation found for permlab_register_sim_subscription (3166535485877549177) --> <skip /> - <!-- no translation found for permdesc_register_provider (7571533832018681544) --> + <!-- no translation found for permdesc_register_sim_subscription (2138909035926222911) --> <skip /> - <!-- no translation found for permlab_connection_manager (1116193254522105375) --> + <!-- no translation found for permlab_register_call_provider (108102120289029841) --> <skip /> - <!-- no translation found for permdesc_connection_manager (5925480810356483565) --> + <!-- no translation found for permdesc_register_call_provider (7034310263521081388) --> <skip /> + <string name="permlab_connection_manager" msgid="1116193254522105375">"ტელეკომის კავშირების მართვა"</string> + <string name="permdesc_connection_manager" msgid="5925480810356483565">"აპს ტელეკომის კავშირების მართვა შეეძლება."</string> <string name="permlab_bind_incall_service" msgid="6773648341975287125">"ინტერაქცია საუბრის რეჟიმის ეკრანთან"</string> <string name="permdesc_bind_incall_service" msgid="8343471381323215005">"აპს შეეძლება გაკონტროლება, როდის და როგორ დაინახავს მომხმარებელი საუბრის რეჟიმის ეკრანს."</string> <string name="permlab_bind_connection_service" msgid="3557341439297014940">"ტელეფონიის სერვისებთან ინტერაქცია"</string> @@ -1237,6 +1239,7 @@ <string name="smv_application" msgid="3307209192155442829">"აპმა <xliff:g id="APPLICATION">%1$s</xliff:g> (პროცესი <xliff:g id="PROCESS">%2$s</xliff:g>) დაარღვია საკუთარი StrictMode დებულება."</string> <string name="smv_process" msgid="5120397012047462446">"ამ პროცესმა <xliff:g id="PROCESS">%1$s</xliff:g> დააზიანა საკუთარი StrictMode დებულება."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Android ახალ ვერსიაზე გადადის…"</string> + <string name="android_start_title" msgid="8418054686415318207">"Android იწყება…"</string> <string name="android_upgrading_apk" msgid="7904042682111526169">"მიმდინარეობს აპლიკაციების ოპტიმიზაცია. დასრულებულია <xliff:g id="NUMBER_0">%1$d</xliff:g>, სულ <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="451464516346926713">"აპების ჩართვა"</string> <string name="android_upgrading_complete" msgid="1405954754112999229">"ჩატვირთვის დასასრული."</string> @@ -1780,10 +1783,14 @@ <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"ფიქსაციის მოხსნამდე პაროლის მოთხოვნა"</string> <string name="battery_saver_description" msgid="2510530476513605742">"ბატარეის გამძლეობის გასახანგრძლივებლად, ბატარეის დამზოგი ამცირებს თქვენი მოწყობილობის წარმადობას და ზღუდავს ვიბრაციასა და უმეტეს ფონურ მონაცემს. თუ არ განაახლებთ, შეიძლება არ გაიხსნას ელფოსტა, შეტყობინებები და სხვა აპები, რომლებიც სინქრონიზაციაზეა დამოკიდებული.\n\nბატარეის დამზოგი ავტომატურად გამოირთვება, როდესაც თქვენი მოწყობილობა იტენება."</string> <string name="downtime_condition_summary" msgid="8761776337475705749">"დანამ თქვენი კავშირგარეშე დრო დასრულდებოდეს <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>-ზე"</string> - <!-- no translation found for zen_mode_duration_minutes_summary:one (3177683545388923234) --> - <!-- no translation found for zen_mode_duration_minutes_summary:other (2787867221129368935) --> - <!-- no translation found for zen_mode_duration_hours_summary:one (597194865053253679) --> - <!-- no translation found for zen_mode_duration_hours_summary:other (2827214920627669898) --> + <plurals name="zen_mode_duration_minutes_summary"> + <item quantity="one" msgid="3177683545388923234">"ერთი წუთის განმავლობაში (<xliff:g id="FORMATTEDTIME">%2$s</xliff:g>-მდე)"</item> + <item quantity="other" msgid="2787867221129368935">"%1$d წუთის განმავლობაში (<xliff:g id="FORMATTEDTIME">%2$s</xliff:g>-მდე)"</item> + </plurals> + <plurals name="zen_mode_duration_hours_summary"> + <item quantity="one" msgid="597194865053253679">"ერთი საათის განმავლობაში (<xliff:g id="FORMATTEDTIME">%2$s</xliff:g>-მდე)"</item> + <item quantity="other" msgid="2827214920627669898">"%1$d საათის განმავლობაში (<xliff:g id="FORMATTEDTIME">%2$s</xliff:g>-მდე)"</item> + </plurals> <plurals name="zen_mode_duration_minutes"> <item quantity="one" msgid="9040808414992812341">"ერთი წუთით"</item> <item quantity="other" msgid="6924190729213550991">"%d წუთით"</item> @@ -1792,7 +1799,7 @@ <item quantity="one" msgid="3480040795582254384">"ერთი საათით"</item> <item quantity="other" msgid="5408537517529822157">"%d საათით"</item> </plurals> - <!-- no translation found for zen_mode_until (7336308492289875088) --> - <skip /> + <string name="zen_mode_until" msgid="7336308492289875088">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g>-მდე"</string> <string name="zen_mode_forever" msgid="4316804956488785559">"სამუდამოდ"</string> + <string name="toolbar_collapse_description" msgid="2821479483960330739">"აკეცვა"</string> </resources> diff --git a/core/res/res/values-kk-rKZ/strings.xml b/core/res/res/values-kk-rKZ/strings.xml index 7402cc1908d5..b4a322c0ff8f 100644 --- a/core/res/res/values-kk-rKZ/strings.xml +++ b/core/res/res/values-kk-rKZ/strings.xml @@ -716,14 +716,16 @@ <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"Қолданбаға кэш файлдық жүйесін оқуға және оған жазуға рұқсат береді."</string> <string name="permlab_use_sip" msgid="2052499390128979920">"SIP қоңырауларын шалу/қабылдау"</string> <string name="permdesc_use_sip" msgid="2297804849860225257">"Қолданбаға SIP қоңырауларын шалуға және қабылдауға рұқсат етеді."</string> - <!-- no translation found for permlab_register_provider (2654513709546459553) --> + <!-- no translation found for permlab_register_sim_subscription (3166535485877549177) --> <skip /> - <!-- no translation found for permdesc_register_provider (7571533832018681544) --> + <!-- no translation found for permdesc_register_sim_subscription (2138909035926222911) --> <skip /> - <!-- no translation found for permlab_connection_manager (1116193254522105375) --> + <!-- no translation found for permlab_register_call_provider (108102120289029841) --> <skip /> - <!-- no translation found for permdesc_connection_manager (5925480810356483565) --> + <!-- no translation found for permdesc_register_call_provider (7034310263521081388) --> <skip /> + <string name="permlab_connection_manager" msgid="1116193254522105375">"телекоммуникациялық байланыстарды басқару"</string> + <string name="permdesc_connection_manager" msgid="5925480810356483565">"Қолданбаға телекоммуникациялық байланыстарды басқаруға рұқсат етеді."</string> <string name="permlab_bind_incall_service" msgid="6773648341975287125">"қоңыраудағы экранмен өзара әрекеттесу"</string> <string name="permdesc_bind_incall_service" msgid="8343471381323215005">"Қолданбаға пайдаланушының қоңырау кезінде экранды қашан және қалай көретінін басқару мүмкіндігін береді."</string> <string name="permlab_bind_connection_service" msgid="3557341439297014940">"телефония қызметтерімен өзара әрекеттесу"</string> @@ -1237,6 +1239,7 @@ <string name="smv_application" msgid="3307209192155442829">"<xliff:g id="APPLICATION">%1$s</xliff:g> қолданбасы (<xliff:g id="PROCESS">%2$s</xliff:g> процесі) өзі қолданған StrictMode саясатын бұзды."</string> <string name="smv_process" msgid="5120397012047462446">"<xliff:g id="PROCESS">%1$s</xliff:g> үрдісі өздігінен күшіне енген ҚатаңРежим ережесін бұзды."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Android жаңартылуда…"</string> + <string name="android_start_title" msgid="8418054686415318207">"Android іске қосылуда…"</string> <string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_1">%2$d</xliff:g> ішінен <xliff:g id="NUMBER_0">%1$d</xliff:g> қолданба оңтайландырылуда."</string> <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Қолданбалар іске қосылуда."</string> <string name="android_upgrading_complete" msgid="1405954754112999229">"Қосуды аяқтауда."</string> @@ -1780,10 +1783,14 @@ <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Босату алдында құпия сөзді сұрау"</string> <string name="battery_saver_description" msgid="2510530476513605742">"Батареяның қызмет мерзімін жақсарту үшін батарея үнемдегіш құрылғының өнімділігін азайтады және діріл мен фондық деректердің көпшілігін шектейді. Синхрондауды қажет ететін электрондық пошта, хабар алмасу және басқа қолданбалар ашқанша жаңартылмауы мүмкін.\n\nБатарея үнемдегіш құрылғы зарядталып жатқанда автоматты түрде өшеді."</string> <string name="downtime_condition_summary" msgid="8761776337475705749">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> уақытында әрекетсіздік аяқталғанша"</string> - <!-- no translation found for zen_mode_duration_minutes_summary:one (3177683545388923234) --> - <!-- no translation found for zen_mode_duration_minutes_summary:other (2787867221129368935) --> - <!-- no translation found for zen_mode_duration_hours_summary:one (597194865053253679) --> - <!-- no translation found for zen_mode_duration_hours_summary:other (2827214920627669898) --> + <plurals name="zen_mode_duration_minutes_summary"> + <item quantity="one" msgid="3177683545388923234">"Бір минут бойы (<xliff:g id="FORMATTEDTIME">%2$s</xliff:g> дейін)"</item> + <item quantity="other" msgid="2787867221129368935">"%1$d минут бойы (<xliff:g id="FORMATTEDTIME">%2$s</xliff:g> дейін)"</item> + </plurals> + <plurals name="zen_mode_duration_hours_summary"> + <item quantity="one" msgid="597194865053253679">"Бір сағат бойы (<xliff:g id="FORMATTEDTIME">%2$s</xliff:g> дейін)"</item> + <item quantity="other" msgid="2827214920627669898">"%1$d сағат бойы (<xliff:g id="FORMATTEDTIME">%2$s</xliff:g> дейін)"</item> + </plurals> <plurals name="zen_mode_duration_minutes"> <item quantity="one" msgid="9040808414992812341">"Бір минут бойы"</item> <item quantity="other" msgid="6924190729213550991">"%d минут бойы"</item> @@ -1792,7 +1799,7 @@ <item quantity="one" msgid="3480040795582254384">"Бір сағат бойы"</item> <item quantity="other" msgid="5408537517529822157">"%d сағат бойы"</item> </plurals> - <!-- no translation found for zen_mode_until (7336308492289875088) --> - <skip /> + <string name="zen_mode_until" msgid="7336308492289875088">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> дейін"</string> <string name="zen_mode_forever" msgid="4316804956488785559">"Белгісіз уақыт бойы"</string> + <string name="toolbar_collapse_description" msgid="2821479483960330739">"Тасалау"</string> </resources> diff --git a/core/res/res/values-km-rKH/strings.xml b/core/res/res/values-km-rKH/strings.xml index b6e5c287dce1..94f7f010062d 100644 --- a/core/res/res/values-km-rKH/strings.xml +++ b/core/res/res/values-km-rKH/strings.xml @@ -716,8 +716,14 @@ <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"ឲ្យកម្មវិធីអាន និងសរសេរប្រព័ន្ធឯកសារឃ្លាំងសម្ងាត់។"</string> <string name="permlab_use_sip" msgid="2052499390128979920">"បង្កើត/ទទួល ការហៅ SIP"</string> <string name="permdesc_use_sip" msgid="2297804849860225257">"ឲ្យកម្មវិធី បង្កើត និងទទួលការហៅ SIP ។"</string> - <string name="permlab_register_provider" msgid="2654513709546459553">"ចុះឈ្មោះភ្ជាប់ទូរគមនាគមន៍ថ្មី"</string> - <string name="permdesc_register_provider" msgid="7571533832018681544">"ឲ្យកម្មវិធីចុះឈ្មោះការភ្ជាប់ទូរគមនាគមន៍ថ្មី។"</string> + <!-- no translation found for permlab_register_sim_subscription (3166535485877549177) --> + <skip /> + <!-- no translation found for permdesc_register_sim_subscription (2138909035926222911) --> + <skip /> + <!-- no translation found for permlab_register_call_provider (108102120289029841) --> + <skip /> + <!-- no translation found for permdesc_register_call_provider (7034310263521081388) --> + <skip /> <string name="permlab_connection_manager" msgid="1116193254522105375">"គ្រប់គ្រងការភ្ជាប់ទូរគមនាគមន៍"</string> <string name="permdesc_connection_manager" msgid="5925480810356483565">"ឲ្យកម្មវិធីគ្រប់គ្រងការភ្ជាប់ទូរគមនាគមន៍។"</string> <string name="permlab_bind_incall_service" msgid="6773648341975287125">"ទាក់ទងជាមួយអេក្រង់ហៅចូល"</string> @@ -898,7 +904,7 @@ <string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"កូដ PIN មិនត្រឹមត្រូវ។"</string> <string name="keyguard_label_text" msgid="861796461028298424">"ដើម្បីដោះសោ ចុចម៉ឺនុយ បន្ទាប់មក 0 ។"</string> <string name="emergency_call_dialog_number_for_display" msgid="696192103195090970">"លេខពេលអាសន្ន"</string> - <string name="lockscreen_carrier_default" msgid="8963839242565653192">"គ្មានសេវា។"</string> + <string name="lockscreen_carrier_default" msgid="8963839242565653192">"គ្មានសេវា"</string> <string name="lockscreen_screen_locked" msgid="7288443074806832904">"ចាក់អេក្រង់។"</string> <string name="lockscreen_instructions_when_pattern_enabled" msgid="46154051614126049">"ចុចម៉ឺនុយ ដើម្បីដោះសោ ឬហៅពេលអាសន្ន។"</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="686260028797158364">"ចុចម៉ឺនុយ ដើម្បីដោះសោ។"</string> @@ -1235,6 +1241,7 @@ <string name="smv_application" msgid="3307209192155442829">"កម្មវិធី <xliff:g id="APPLICATION">%1$s</xliff:g> (ដំណើរការ <xliff:g id="PROCESS">%2$s</xliff:g>) បានបំពានគោលនយោបាយរបៀបតឹងរ៉ឹងអនុវត្តដោយខ្លួនឯង។"</string> <string name="smv_process" msgid="5120397012047462446">"ដំណើរការ <xliff:g id="PROCESS">%1$s</xliff:g> បានបំពានគោលនយោបាយរបៀបតឹងរឹងបង្ខំដោយខ្លួនឯង"</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Android កំពុងធ្វើបច្ចុប្បន្នភាព..."</string> + <string name="android_start_title" msgid="8418054686415318207">"Android កំពុងចាប់ផ្ដើម…"</string> <string name="android_upgrading_apk" msgid="7904042682111526169">"ធ្វើឲ្យកម្មវិធីប្រសើរឡើង <xliff:g id="NUMBER_0">%1$d</xliff:g> នៃ <xliff:g id="NUMBER_1">%2$d</xliff:g> ។"</string> <string name="android_upgrading_starting_apps" msgid="451464516346926713">"ចាប់ផ្ដើមកម្មវិធី។"</string> <string name="android_upgrading_complete" msgid="1405954754112999229">"បញ្ចប់ការចាប់ផ្ដើម។"</string> @@ -1778,10 +1785,14 @@ <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"សួររកពាក្យសម្ងាត់មុនពេលផ្ដាច់"</string> <string name="battery_saver_description" msgid="2510530476513605742">"ដើម្បីបង្កើនអាយុថ្ម កម្មវិធីសន្សំថ្មកាត់បន្ថយការអនុវត្តឧបករណ៍របស់អ្នក ហើយកម្រិតការញ័រ និងទិន្នន័យផ្ទៃខាងក្រោយ។ អ៊ីមែល, ការផ្ញើសារ និងកម្មវិធីផ្សេងៗទៀតដែលផ្អែកលើការធ្វើសមកាលកម្មមិនអាចធ្វើបច្ចុប្បន្នភាពលុះត្រាតែអ្នកបើកពួកវា។\n\nកម្មវិធីសន្សំថ្មបិទដោយស្វ័យប្រវត្តិពេលឧបករណ៍របស់អ្នកកំពុងបញ្ចូលថ្ម។"</string> <string name="downtime_condition_summary" msgid="8761776337475705749">"រហូតដល់ម៉ោងសម្រាក ឬរវល់របស់អ្នកបញ្ចប់នៅ <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> - <!-- no translation found for zen_mode_duration_minutes_summary:one (3177683545388923234) --> - <!-- no translation found for zen_mode_duration_minutes_summary:other (2787867221129368935) --> - <!-- no translation found for zen_mode_duration_hours_summary:one (597194865053253679) --> - <!-- no translation found for zen_mode_duration_hours_summary:other (2827214920627669898) --> + <plurals name="zen_mode_duration_minutes_summary"> + <item quantity="one" msgid="3177683545388923234">"សម្រាប់មួយនាទី (រហូតដល់ <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2787867221129368935">"សម្រាប់ %1$d នាទី (រហូតដល់ <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> + <plurals name="zen_mode_duration_hours_summary"> + <item quantity="one" msgid="597194865053253679">"សម្រាប់មួយម៉ោង (រហូតដល់ <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2827214920627669898">"សម្រាប់ %1$d ម៉ោង (រហូតដល់ <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> <plurals name="zen_mode_duration_minutes"> <item quantity="one" msgid="9040808414992812341">"សម្រាប់មួយនាទី"</item> <item quantity="other" msgid="6924190729213550991">"សម្រាប់ %d នាទី"</item> @@ -1790,7 +1801,7 @@ <item quantity="one" msgid="3480040795582254384">"សម្រាប់មួយម៉ោង"</item> <item quantity="other" msgid="5408537517529822157">"សម្រាប់ %d ម៉ោង"</item> </plurals> - <!-- no translation found for zen_mode_until (7336308492289875088) --> - <skip /> + <string name="zen_mode_until" msgid="7336308492289875088">"រហូតដល់ <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_forever" msgid="4316804956488785559">"គ្មានកំណត់"</string> + <string name="toolbar_collapse_description" msgid="2821479483960330739">"បង្រួម"</string> </resources> diff --git a/core/res/res/values-kn-rIN/strings.xml b/core/res/res/values-kn-rIN/strings.xml index b23f82f2f61c..f8a668b5c427 100644 --- a/core/res/res/values-kn-rIN/strings.xml +++ b/core/res/res/values-kn-rIN/strings.xml @@ -716,8 +716,14 @@ <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"ಕ್ಯಾಷ್ ಫೈಲ್ ವ್ಯವಸ್ಥೆಯನ್ನು ಓದಲು ಮತ್ತು ಬರೆಯಲು ಅಪ್ಲಿಕೇಶನ್ ಅನುಮತಿಸುತ್ತದೆ."</string> <string name="permlab_use_sip" msgid="2052499390128979920">"SIP ಕರೆಗಳನ್ನು ಮಾಡಿ/ಸ್ವೀಕರಿಸಿ"</string> <string name="permdesc_use_sip" msgid="2297804849860225257">"SIP ಕರೆಗಳನ್ನು ಮಾಡಲು ಮತ್ತು ಸ್ವೀಕರಿಸಲು ಅಪ್ಲಿಕೇಶನ್ಗೆ ಅನುಮತಿಸುತ್ತದೆ."</string> - <string name="permlab_register_provider" msgid="2654513709546459553">"ಹೊಸ ಟೆಲಿಕಾಂ ಸಂಪರ್ಕವನ್ನು ನೋಂದಣಿ ಮಾಡಿ"</string> - <string name="permdesc_register_provider" msgid="7571533832018681544">"ಹೊಸ ಟೆಲಿಕಾಂ ಸಂಪರ್ಕಗಳನ್ನು ನೋಂದಣಿ ಮಾಡಲು ಅಪ್ಲಿಕೇಶನ್ ಅವಕಾಶ ಮಾಡಿಕೊಡುತ್ತದೆ."</string> + <!-- no translation found for permlab_register_sim_subscription (3166535485877549177) --> + <skip /> + <!-- no translation found for permdesc_register_sim_subscription (2138909035926222911) --> + <skip /> + <!-- no translation found for permlab_register_call_provider (108102120289029841) --> + <skip /> + <!-- no translation found for permdesc_register_call_provider (7034310263521081388) --> + <skip /> <string name="permlab_connection_manager" msgid="1116193254522105375">"ಟೆಲಿಕಾಂ ಸಂಪರ್ಕಗಳನ್ನು ನಿರ್ವಹಿಸಿ"</string> <string name="permdesc_connection_manager" msgid="5925480810356483565">"ಟೆಲಿಕಾಂ ಸಂಪರ್ಕಗಳನ್ನು ನಿರ್ವಹಿಸಲು ಅಪ್ಲಿಕೇಶನ್ ಅವಕಾಶ ಮಾಡಿಕೊಡುತ್ತದೆ."</string> <string name="permlab_bind_incall_service" msgid="6773648341975287125">"ಒಳ-ಕರೆ ಪರದೆಯ ಮೂಲಕ ಸಂವಹನ ನಡೆಸಿ"</string> @@ -1233,6 +1239,7 @@ <string name="smv_application" msgid="3307209192155442829">"ಅಪ್ಲಿಕೇಶನ್ <xliff:g id="APPLICATION">%1$s</xliff:g> (ಪ್ರಕ್ರಿಯೆಯು <xliff:g id="PROCESS">%2$s</xliff:g>) ತನ್ನ ಸ್ವಯಂ-ಜಾರಿ ಕಠಿಣ ಮೋಡ್ ನೀತಿಯನ್ನು ಉಲ್ಲಂಘನೆ ಮಾಡಿದೆ."</string> <string name="smv_process" msgid="5120397012047462446">"<xliff:g id="PROCESS">%1$s</xliff:g> ಪ್ರಕ್ರಿಯೆಯು ತನ್ನ ಸ್ವಯಂ-ಜಾರಿ ಕಠಿಣ ಮೋಡ್ ನೀತಿಯನ್ನು ಉಲ್ಲಂಘನೆ ಮಾಡಿದೆ."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Android ಅಪ್ಗ್ರೇಡ್ ಮಾಡಲಾಗುತ್ತಿದೆ…"</string> + <string name="android_start_title" msgid="8418054686415318207">"Android ಪ್ರಾರಂಭಿಸಲಾಗುತ್ತಿದೆ…"</string> <string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_1">%2$d</xliff:g> ರಲ್ಲಿ <xliff:g id="NUMBER_0">%1$d</xliff:g> ಅಪ್ಲಿಕೇಶನ್ ಆಪ್ಟಿಮೈಸ್ ಮಾಡಲಾಗುತ್ತಿದೆ."</string> <string name="android_upgrading_starting_apps" msgid="451464516346926713">"ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ಪ್ರಾರಂಭಿಸಲಾಗುತ್ತಿದೆ."</string> <string name="android_upgrading_complete" msgid="1405954754112999229">"ಬೂಟ್ ಪೂರ್ಣಗೊಳಿಸಲಾಗುತ್ತಿದೆ."</string> @@ -1776,10 +1783,14 @@ <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"ಅನ್ಪಿನ್ ಮಾಡುವುದಕ್ಕೂ ಮೊದಲು ಪಾಸ್ವರ್ಡ್ ಕೇಳಿ"</string> <string name="battery_saver_description" msgid="2510530476513605742">"ಬ್ಯಾಟರಿ ಬಾಳಿಕೆಯನ್ನು ಹೆಚ್ಚಿಸುವ ನಿಟ್ಟಿನಲ್ಲಿ ಸಹಾಯ ಮಾಡಲು, ಬ್ಯಾಟರಿ ಉಳಿತಾಯವು ನಿಮ್ಮ ಸಾಧನದ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಕುಂಠಿತಗೊಳಿಸುತ್ತದೆ ಮತ್ತು ವೈಬ್ರೇಷನ್ ಹಾಗೂ ಹೆಚ್ಚಿನ ಹಿನ್ನೆಲೆ ಡೇಟಾವನ್ನು ಸೀಮಿತಗೊಳಿಸುತ್ತದೆ. ಇಮೇಲ್, ಸಂದೇಶ ಕಳುಹಿಸುವಿಕೆ, ಮತ್ತು ಸಿಂಕ್ ಮಾಡುವುದನ್ನು ಅವಲಂಬಿಸಿರುವ ಇತರ ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ನೀವು ತೆರೆಯುವವರೆಗೆ ಅವುಗಳನ್ನು ನವೀಕರಿಸಲಾಗುವುದಿಲ್ಲ.\n\nನಿಮ್ಮ ಸಾಧನವು ಚಾರ್ಜ್ ಆಗುತ್ತಿರುವಾಗ ಬ್ಯಾಟರಿ ಉಳಿತಾಯವು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಆಫ್ ಆಗುತ್ತದೆ."</string> <string name="downtime_condition_summary" msgid="8761776337475705749">"ನಿಮ್ಮ ಅಲಭ್ಯತೆ ಕೊನೆಗೊಳ್ಳುವವರೆಗೆ <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> - <!-- no translation found for zen_mode_duration_minutes_summary:one (3177683545388923234) --> - <!-- no translation found for zen_mode_duration_minutes_summary:other (2787867221129368935) --> - <!-- no translation found for zen_mode_duration_hours_summary:one (597194865053253679) --> - <!-- no translation found for zen_mode_duration_hours_summary:other (2827214920627669898) --> + <plurals name="zen_mode_duration_minutes_summary"> + <item quantity="one" msgid="3177683545388923234">"ಒಂದು ನಿಮಿಷದವರೆಗೆ (<xliff:g id="FORMATTEDTIME">%2$s</xliff:g> ವರೆಗೆ)"</item> + <item quantity="other" msgid="2787867221129368935">"%1$d ನಿಮಿಷಗಳವರೆಗೆ (<xliff:g id="FORMATTEDTIME">%2$s</xliff:g> ವರೆಗೆ)"</item> + </plurals> + <plurals name="zen_mode_duration_hours_summary"> + <item quantity="one" msgid="597194865053253679">"ಒಂದು ಗಂಟೆಯವರೆಗೆ (<xliff:g id="FORMATTEDTIME">%2$s</xliff:g> ವರೆಗೆ)"</item> + <item quantity="other" msgid="2827214920627669898">"%1$d ಗಂಟೆಗಳವರೆಗೆ (<xliff:g id="FORMATTEDTIME">%2$s</xliff:g> ವರೆಗೆ)"</item> + </plurals> <plurals name="zen_mode_duration_minutes"> <item quantity="one" msgid="9040808414992812341">"ಒಂದು ನಿಮಿಷದವರೆಗೆ"</item> <item quantity="other" msgid="6924190729213550991">"%d ನಿಮಿಷಗಳವರೆಗೆ"</item> @@ -1788,7 +1799,7 @@ <item quantity="one" msgid="3480040795582254384">"ಒಂದು ಗಂಟೆಯವರೆಗೆ"</item> <item quantity="other" msgid="5408537517529822157">"%d ಗಂಟೆಗಳವರೆಗೆ"</item> </plurals> - <!-- no translation found for zen_mode_until (7336308492289875088) --> - <skip /> + <string name="zen_mode_until" msgid="7336308492289875088">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> ವರೆಗೆ"</string> <string name="zen_mode_forever" msgid="4316804956488785559">"ಅನಿರ್ದಿಷ್ಟವಾಗಿ"</string> + <string name="toolbar_collapse_description" msgid="2821479483960330739">"ಸಂಕುಚಿಸು"</string> </resources> diff --git a/core/res/res/values-ko/strings.xml b/core/res/res/values-ko/strings.xml index 241159316dcf..89a74b6d2ae7 100644 --- a/core/res/res/values-ko/strings.xml +++ b/core/res/res/values-ko/strings.xml @@ -716,14 +716,16 @@ <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"앱이 캐시 파일 시스템을 읽고 쓸 수 있도록 허용합니다."</string> <string name="permlab_use_sip" msgid="2052499390128979920">"SIP 통화 발신/수신"</string> <string name="permdesc_use_sip" msgid="2297804849860225257">"앱에서 SIP 통화를 발신 및 수신하도록 허용"</string> - <!-- no translation found for permlab_register_provider (2654513709546459553) --> + <!-- no translation found for permlab_register_sim_subscription (3166535485877549177) --> <skip /> - <!-- no translation found for permdesc_register_provider (7571533832018681544) --> + <!-- no translation found for permdesc_register_sim_subscription (2138909035926222911) --> <skip /> - <!-- no translation found for permlab_connection_manager (1116193254522105375) --> + <!-- no translation found for permlab_register_call_provider (108102120289029841) --> <skip /> - <!-- no translation found for permdesc_connection_manager (5925480810356483565) --> + <!-- no translation found for permdesc_register_call_provider (7034310263521081388) --> <skip /> + <string name="permlab_connection_manager" msgid="1116193254522105375">"통신 연결 관리"</string> + <string name="permdesc_connection_manager" msgid="5925480810356483565">"앱이 통신 연결을 관리할 수 있게 허용합니다."</string> <string name="permlab_bind_incall_service" msgid="6773648341975287125">"통화 화면과 상호작용"</string> <string name="permdesc_bind_incall_service" msgid="8343471381323215005">"앱에서 사용자가 통화 화면을 보는 시기와 방법을 제어하도록 허용합니다."</string> <string name="permlab_bind_connection_service" msgid="3557341439297014940">"전화 서비스와 상호 작용"</string> @@ -1237,6 +1239,7 @@ <string name="smv_application" msgid="3307209192155442829">"앱 <xliff:g id="APPLICATION">%1$s</xliff:g>(프로세스 <xliff:g id="PROCESS">%2$s</xliff:g>)이(가) 자체 시행 StrictMode 정책을 위반했습니다."</string> <string name="smv_process" msgid="5120397012047462446">"프로세스(<xliff:g id="PROCESS">%1$s</xliff:g>)가 자체 시행 StrictMode 정책을 위반했습니다."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Android 업그레이드 중.."</string> + <string name="android_start_title" msgid="8418054686415318207">"Android가 시작되는 중…"</string> <string name="android_upgrading_apk" msgid="7904042682111526169">"앱 <xliff:g id="NUMBER_1">%2$d</xliff:g>개 중 <xliff:g id="NUMBER_0">%1$d</xliff:g>개 최적화 중"</string> <string name="android_upgrading_starting_apps" msgid="451464516346926713">"앱을 시작하는 중입니다."</string> <string name="android_upgrading_complete" msgid="1405954754112999229">"부팅 완료"</string> @@ -1643,7 +1646,7 @@ <string name="accessibility_enabled" msgid="1381972048564547685">"접근성을 사용 설정했습니다."</string> <string name="enable_accessibility_canceled" msgid="3833923257966635673">"접근성이 취소되었습니다."</string> <string name="user_switched" msgid="3768006783166984410">"현재 사용자는 <xliff:g id="NAME">%1$s</xliff:g>님입니다."</string> - <string name="user_switching_message" msgid="2871009331809089783">"<xliff:g id="NAME">%1$s</xliff:g>님으로 전환하는 중…"</string> + <string name="user_switching_message" msgid="2871009331809089783">"<xliff:g id="NAME">%1$s</xliff:g>(으)로 전환하는 중…"</string> <string name="owner_name" msgid="2716755460376028154">"소유자"</string> <string name="error_message_title" msgid="4510373083082500195">"오류"</string> <string name="error_message_change_not_allowed" msgid="1347282344200417578">"관리자가 이 변경을 허용하지 않습니다."</string> @@ -1780,10 +1783,14 @@ <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"고정 해제 이전에 비밀번호 요청"</string> <string name="battery_saver_description" msgid="2510530476513605742">"배터리 수명을 개선하기 위해 배터리 세이버에서는 기기의 성능을 줄이고 진동과 대부분의 백그라운드 데이터를 제한합니다. 동기화가 필요한 이메일, 메시지, 기타 앱은 열어야 업데이트됩니다.\n\n기기를 충전하는 중에는 배터리 세이버가 자동으로 사용 중지됩니다."</string> <string name="downtime_condition_summary" msgid="8761776337475705749">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g>에 정지가 종료될 때까지"</string> - <!-- no translation found for zen_mode_duration_minutes_summary:one (3177683545388923234) --> - <!-- no translation found for zen_mode_duration_minutes_summary:other (2787867221129368935) --> - <!-- no translation found for zen_mode_duration_hours_summary:one (597194865053253679) --> - <!-- no translation found for zen_mode_duration_hours_summary:other (2827214920627669898) --> + <plurals name="zen_mode_duration_minutes_summary"> + <item quantity="one" msgid="3177683545388923234">"1분(<xliff:g id="FORMATTEDTIME">%2$s</xliff:g>까지)"</item> + <item quantity="other" msgid="2787867221129368935">"%1$d분(<xliff:g id="FORMATTEDTIME">%2$s</xliff:g>까지)"</item> + </plurals> + <plurals name="zen_mode_duration_hours_summary"> + <item quantity="one" msgid="597194865053253679">"1시간(<xliff:g id="FORMATTEDTIME">%2$s</xliff:g>까지)"</item> + <item quantity="other" msgid="2827214920627669898">"%1$d시간(<xliff:g id="FORMATTEDTIME">%2$s</xliff:g>까지)"</item> + </plurals> <plurals name="zen_mode_duration_minutes"> <item quantity="one" msgid="9040808414992812341">"1분 동안"</item> <item quantity="other" msgid="6924190729213550991">"%d분 동안"</item> @@ -1792,7 +1799,7 @@ <item quantity="one" msgid="3480040795582254384">"1시간 동안"</item> <item quantity="other" msgid="5408537517529822157">"%d시간 동안"</item> </plurals> - <!-- no translation found for zen_mode_until (7336308492289875088) --> - <skip /> + <string name="zen_mode_until" msgid="7336308492289875088">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g>까지"</string> <string name="zen_mode_forever" msgid="4316804956488785559">"무제한"</string> + <string name="toolbar_collapse_description" msgid="2821479483960330739">"접기"</string> </resources> diff --git a/core/res/res/values-ky-rKG/strings.xml b/core/res/res/values-ky-rKG/strings.xml index 5f34b9de0fb1..df87e82dc616 100644 --- a/core/res/res/values-ky-rKG/strings.xml +++ b/core/res/res/values-ky-rKG/strings.xml @@ -926,14 +926,16 @@ <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"Колдонмого кэш файл тутумун окуу жана жазуу мүмкүнчүлүгүн берет."</string> <string name="permlab_use_sip" msgid="2052499390128979920">"SIP чалууларын жасоо/кабыл алуу"</string> <string name="permdesc_use_sip" msgid="2297804849860225257">"Колдонмонун SIP чалууларын жасап жана кабыл алуусуна жол ачат."</string> - <!-- no translation found for permlab_register_provider (2654513709546459553) --> + <!-- no translation found for permlab_register_sim_subscription (3166535485877549177) --> <skip /> - <!-- no translation found for permdesc_register_provider (7571533832018681544) --> + <!-- no translation found for permdesc_register_sim_subscription (2138909035926222911) --> <skip /> - <!-- no translation found for permlab_connection_manager (1116193254522105375) --> + <!-- no translation found for permlab_register_call_provider (108102120289029841) --> <skip /> - <!-- no translation found for permdesc_connection_manager (5925480810356483565) --> + <!-- no translation found for permdesc_register_call_provider (7034310263521081388) --> <skip /> + <string name="permlab_connection_manager" msgid="1116193254522105375">"телеком туташууларын башкаруу"</string> + <string name="permdesc_connection_manager" msgid="5925480810356483565">"Колдонмого телеком туташууларын башкаруу мүмкүнчүлүгүн берет."</string> <string name="permlab_bind_incall_service" msgid="6773648341975287125">"чалуу экраны менен байланыштыруу"</string> <string name="permdesc_bind_incall_service" msgid="8343471381323215005">"Колдонмого чалуу экраны качан жана кандай көрүнө тургандыгын башкаруу мүмкүнчүлүгүн берет."</string> <string name="permlab_bind_connection_service" msgid="3557341439297014940">"телефония кызматтары"</string> @@ -1597,6 +1599,7 @@ <!-- no translation found for smv_process (5120397012047462446) --> <skip /> <string name="android_upgrading_title" msgid="1584192285441405746">"Android жаңыртылууда…"</string> + <string name="android_start_title" msgid="8418054686415318207">"Android жүргүзүлүүдө…"</string> <string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_1">%2$d</xliff:g> ичинен <xliff:g id="NUMBER_0">%1$d</xliff:g> колдонмо ыңгайлаштырылууда."</string> <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Колдонмолорду иштетип баштоо"</string> <string name="android_upgrading_complete" msgid="1405954754112999229">"Жүктөө аякталууда."</string> @@ -2260,10 +2263,14 @@ <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Бошотуудан мурун сырсөз суралсын"</string> <string name="battery_saver_description" msgid="2510530476513605742">"Батарея өмүрүн узартууга жардамдашуу үчүн, батарея үнөмдөгүч түзмөгүңүздүн өндүрүмдүүлүгүн азайтып, дирилдөөнү жана көпчүлүк фон дайындарын чектейт. Email, билдирүү жазуу жана башка шайкештирүүгө көз каранды колдонмолор, аларды ачмайыңызча жаңыртылбашы мүмкүн.\n\nТүзмөгүңүз кубатталып жатканда батарея үнөмдөгүч автоматтык түрдө өчөт."</string> <string name="downtime_condition_summary" msgid="8761776337475705749">"Иштебей турган абал <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> аяктамайынча"</string> - <!-- no translation found for zen_mode_duration_minutes_summary:one (3177683545388923234) --> - <!-- no translation found for zen_mode_duration_minutes_summary:other (2787867221129368935) --> - <!-- no translation found for zen_mode_duration_hours_summary:one (597194865053253679) --> - <!-- no translation found for zen_mode_duration_hours_summary:other (2827214920627669898) --> + <plurals name="zen_mode_duration_minutes_summary"> + <item quantity="one" msgid="3177683545388923234">"Бир мүнөткө (<xliff:g id="FORMATTEDTIME">%2$s</xliff:g> чейин)"</item> + <item quantity="other" msgid="2787867221129368935">"%1$d мүнөткө (<xliff:g id="FORMATTEDTIME">%2$s</xliff:g> чейин)"</item> + </plurals> + <plurals name="zen_mode_duration_hours_summary"> + <item quantity="one" msgid="597194865053253679">"Бир саатка (<xliff:g id="FORMATTEDTIME">%2$s</xliff:g> чейин)"</item> + <item quantity="other" msgid="2827214920627669898">"%1$d саатка (<xliff:g id="FORMATTEDTIME">%2$s</xliff:g> чейин)"</item> + </plurals> <plurals name="zen_mode_duration_minutes"> <item quantity="one" msgid="9040808414992812341">"Бир мүнөткө"</item> <item quantity="other" msgid="6924190729213550991">"%d мүнөткө"</item> @@ -2272,7 +2279,7 @@ <item quantity="one" msgid="3480040795582254384">"Бир саатка"</item> <item quantity="other" msgid="5408537517529822157">"%d саатка"</item> </plurals> - <!-- no translation found for zen_mode_until (7336308492289875088) --> - <skip /> + <string name="zen_mode_until" msgid="7336308492289875088">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> чейин"</string> <string name="zen_mode_forever" msgid="4316804956488785559">"Белгисиз"</string> + <string name="toolbar_collapse_description" msgid="2821479483960330739">"Жыйнап коюу"</string> </resources> diff --git a/core/res/res/values-lo-rLA/strings.xml b/core/res/res/values-lo-rLA/strings.xml index 719717bbfac4..daed8b656601 100644 --- a/core/res/res/values-lo-rLA/strings.xml +++ b/core/res/res/values-lo-rLA/strings.xml @@ -716,14 +716,16 @@ <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"ອະນຸຍາດໃຫ້ແອັບຯ ອ່ານ ແລະຂຽນ ລະບົບໄຟລ໌ແຄດ."</string> <string name="permlab_use_sip" msgid="2052499390128979920">"ຮັບສາຍ/ໂທອອກ ຜ່ານ SIP"</string> <string name="permdesc_use_sip" msgid="2297804849860225257">"ອະນຸຍາດໃຫ້ແອັບຯສາມາດຮັບສາຍ ແລະໂທອອກຜ່ານ SIP ໄດ້"</string> - <!-- no translation found for permlab_register_provider (2654513709546459553) --> + <!-- no translation found for permlab_register_sim_subscription (3166535485877549177) --> <skip /> - <!-- no translation found for permdesc_register_provider (7571533832018681544) --> + <!-- no translation found for permdesc_register_sim_subscription (2138909035926222911) --> <skip /> - <!-- no translation found for permlab_connection_manager (1116193254522105375) --> + <!-- no translation found for permlab_register_call_provider (108102120289029841) --> <skip /> - <!-- no translation found for permdesc_connection_manager (5925480810356483565) --> + <!-- no translation found for permdesc_register_call_provider (7034310263521081388) --> <skip /> + <string name="permlab_connection_manager" msgid="1116193254522105375">"ຈັດການການເຊື່ອມຕໍ່ໂທລະຄົມມະນາຄົມ"</string> + <string name="permdesc_connection_manager" msgid="5925480810356483565">"ອະນຸຍາດໃຫ້ແອັບຯຈັດການການເຊື່ອມຕໍ່ໂທລະຄົມມະນາຄົມ."</string> <string name="permlab_bind_incall_service" msgid="6773648341975287125">"ໂຕ້ຕອບກັບໜ້າຈໍການໂທ"</string> <string name="permdesc_bind_incall_service" msgid="8343471381323215005">"ອະນຸຍາດໃຫ້ແອັບຯຄວບຄຸມເວລາ ແລະວິທີການທີ່ຜູ່ໃຊ້ເຫັນໜ້າຈໍການໂທໄດ້."</string> <string name="permlab_bind_connection_service" msgid="3557341439297014940">"ສັ່ງບໍລິການໂທລະສັບ"</string> @@ -1237,6 +1239,7 @@ <string name="smv_application" msgid="3307209192155442829">"ແອັບຯ <xliff:g id="APPLICATION">%1$s</xliff:g> (ໂປຣເຊສ <xliff:g id="PROCESS">%2$s</xliff:g>) ໄດ້ລະເມີດນະໂຍບາຍ StrictMode ທີ່ບັງຄັບໃຊ້ດ້ວຍໂຕເອງ."</string> <string name="smv_process" msgid="5120397012047462446">"ໂປຣເຊສ <xliff:g id="PROCESS">%1$s</xliff:g> ລະເມີດນະໂຍບາຍບັງຄັບໃຊ້ເອງ StrictMode."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"ກຳລັງອັບເກຣດ Android..."</string> + <string name="android_start_title" msgid="8418054686415318207">"ກຳລັງເລີ່ມລະບົບ Android …"</string> <string name="android_upgrading_apk" msgid="7904042682111526169">"ກຳລັງປັບປຸງປະສິດທິພາບແອັບຯທີ <xliff:g id="NUMBER_0">%1$d</xliff:g> ຈາກທັງໝົດ <xliff:g id="NUMBER_1">%2$d</xliff:g> ແອັບຯ."</string> <string name="android_upgrading_starting_apps" msgid="451464516346926713">"ກຳລັງເປີດແອັບຯ."</string> <string name="android_upgrading_complete" msgid="1405954754112999229">"ກຳລັງສຳເລັດການເປີດລະບົບ."</string> @@ -1780,10 +1783,14 @@ <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"ຖາມຫາລະຫັດຜ່ານກ່ອນຍົກເລີກການປັກໝຸດ"</string> <string name="battery_saver_description" msgid="2510530476513605742">"ເພື່ອຊ່ວຍປັບປຸງອາຍຸແບັດເຕີຣີ, ໂຕປະຢັດແບັດເຕີຣີຈະຫຼຸດປະສິດທິພາບຂອງອຸປະກອນທ່ານລົງ ແລະຈຳກັດການສັ່ນເຕືອນ ຮວມເຖິງຂໍ້ມູນພື້ນຫຼັງສ່ວນໃຫຍ່ນຳ. ອີເມວ, ການສົ່ງຂໍ້ຄວາມ ແລະແອັບຯອື່ນໆທີ່ອີງອາໃສການຊິ້ງຂໍ້ມູນອາດບໍ່ມີການອັບເດດຈົນກວ່າທ່ານຈະເປີດພວກມັນຂຶ້ນມາ.\n\nໂຕປະຢັດແບັດເຕີຣີຈະປິດໂດຍອັດຕະໂນມັດເມື່ອມີອຸປະກອນຖືກສາກໄຟ."</string> <string name="downtime_condition_summary" msgid="8761776337475705749">"ຈົນກວ່າດາວທາມຂອງທ່ານຈະສິ້ນສຸດທີ່ <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> - <!-- no translation found for zen_mode_duration_minutes_summary:one (3177683545388923234) --> - <!-- no translation found for zen_mode_duration_minutes_summary:other (2787867221129368935) --> - <!-- no translation found for zen_mode_duration_hours_summary:one (597194865053253679) --> - <!-- no translation found for zen_mode_duration_hours_summary:other (2827214920627669898) --> + <plurals name="zen_mode_duration_minutes_summary"> + <item quantity="one" msgid="3177683545388923234">"ເປັນເວລາ 1 ນາທີ (ຈົນຮອດ <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2787867221129368935">"ເປັນເວລາ %1$d ນາທີ (ຈົນຮອດ <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> + <plurals name="zen_mode_duration_hours_summary"> + <item quantity="one" msgid="597194865053253679">"ເປັນເວລາ 1 ຊົ່ວໂມງ (ຈົນຮອດ <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2827214920627669898">"ເປັນເວລາ %1$d ຊົ່ວໂມງ (ຈົນຮອດ <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> <plurals name="zen_mode_duration_minutes"> <item quantity="one" msgid="9040808414992812341">"ເປັນເວລານຶ່ງນາທີ"</item> <item quantity="other" msgid="6924190729213550991">"ເປັນເວລາ %d ນາທີ"</item> @@ -1792,7 +1799,7 @@ <item quantity="one" msgid="3480040795582254384">"ເປັນເວລານຶ່ງຊົ່ວໂມງ"</item> <item quantity="other" msgid="5408537517529822157">"ເປັນເວລາ %d ຊົ່ວໂມງ"</item> </plurals> - <!-- no translation found for zen_mode_until (7336308492289875088) --> - <skip /> + <string name="zen_mode_until" msgid="7336308492289875088">"ຈົນຮອດ <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_forever" msgid="4316804956488785559">"ຢ່າງບໍ່ມີກຳນົດ"</string> + <string name="toolbar_collapse_description" msgid="2821479483960330739">"ຫຍໍ້"</string> </resources> diff --git a/core/res/res/values-lt/strings.xml b/core/res/res/values-lt/strings.xml index f6e05dc2d94a..ad841ea4c687 100644 --- a/core/res/res/values-lt/strings.xml +++ b/core/res/res/values-lt/strings.xml @@ -716,8 +716,14 @@ <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"Leidžiama programai skaityti talpyklos failų sistemą ir į ją rašyti."</string> <string name="permlab_use_sip" msgid="2052499390128979920">"skambinti / priimti SIP skambučius"</string> <string name="permdesc_use_sip" msgid="2297804849860225257">"Leidžiama programai skambinti ir priimti SIP skambučius."</string> - <string name="permlab_register_provider" msgid="2654513709546459553">"registruoti naujus telekomunikacijų ryšius"</string> - <string name="permdesc_register_provider" msgid="7571533832018681544">"Programai leidžiama registruoti naujus telekomunikacijų ryšius."</string> + <!-- no translation found for permlab_register_sim_subscription (3166535485877549177) --> + <skip /> + <!-- no translation found for permdesc_register_sim_subscription (2138909035926222911) --> + <skip /> + <!-- no translation found for permlab_register_call_provider (108102120289029841) --> + <skip /> + <!-- no translation found for permdesc_register_call_provider (7034310263521081388) --> + <skip /> <string name="permlab_connection_manager" msgid="1116193254522105375">"tvarkyti telekomunikacijų ryšius"</string> <string name="permdesc_connection_manager" msgid="5925480810356483565">"Programai leidžiama tvarkyti telekomunikacijų ryšius."</string> <string name="permlab_bind_incall_service" msgid="6773648341975287125">"sąveika su gaunamojo skambučio ekranu"</string> @@ -1233,6 +1239,7 @@ <string name="smv_application" msgid="3307209192155442829">"Programa „<xliff:g id="APPLICATION">%1$s</xliff:g>“ (procesas „<xliff:g id="PROCESS">%2$s</xliff:g>“) pažeidė savo vykdomą „StrictMode“ politiką."</string> <string name="smv_process" msgid="5120397012047462446">"„<xliff:g id="PROCESS">%1$s</xliff:g>“ procesas pažeidė savo vykdomą „StrictMode“ politiką."</string> <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_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> <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Paleidžiamos programos."</string> <string name="android_upgrading_complete" msgid="1405954754112999229">"Užbaigiamas paleidimas."</string> @@ -1776,10 +1783,14 @@ <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Prašyti slaptažodžio prieš atsegant"</string> <string name="battery_saver_description" msgid="2510530476513605742">"Siekiant pailginti akumuliatoriaus veikimo laiką, Akumuliatoriaus tausojimo priemonė sumažina įrenginio našumą ir apriboja vibravimą bei daugumą foninių duomenų. El. paštas, pranešimų siuntimas ir kitos programos, kurios veikia sinchronizavimo pagrindu, gali nebūti atnaujintos, nebent jas atidarysite.\n\nKraunant įrenginį Akumuliatoriaus tausojimo priemonė automatiškai išjungiama."</string> <string name="downtime_condition_summary" msgid="8761776337475705749">"Kol jūsų prastova baigsis <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> - <!-- no translation found for zen_mode_duration_minutes_summary:one (3177683545388923234) --> - <!-- no translation found for zen_mode_duration_minutes_summary:other (2787867221129368935) --> - <!-- no translation found for zen_mode_duration_hours_summary:one (597194865053253679) --> - <!-- no translation found for zen_mode_duration_hours_summary:other (2827214920627669898) --> + <plurals name="zen_mode_duration_minutes_summary"> + <item quantity="one" msgid="3177683545388923234">"Vieną minutę (iki <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2787867221129368935">"%1$d min. (iki <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> + <plurals name="zen_mode_duration_hours_summary"> + <item quantity="one" msgid="597194865053253679">"Vieną valandą (iki <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2827214920627669898">"%1$d val. (iki <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> <plurals name="zen_mode_duration_minutes"> <item quantity="one" msgid="9040808414992812341">"1 min."</item> <item quantity="other" msgid="6924190729213550991">"%d min."</item> @@ -1788,7 +1799,7 @@ <item quantity="one" msgid="3480040795582254384">"1 val."</item> <item quantity="other" msgid="5408537517529822157">"%d val."</item> </plurals> - <!-- no translation found for zen_mode_until (7336308492289875088) --> - <skip /> + <string name="zen_mode_until" msgid="7336308492289875088">"Iki <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_forever" msgid="4316804956488785559">"Neapibrėžta"</string> + <string name="toolbar_collapse_description" msgid="2821479483960330739">"Sutraukti"</string> </resources> diff --git a/core/res/res/values-lv/strings.xml b/core/res/res/values-lv/strings.xml index 72ecf591e033..f9587bdbd5bb 100644 --- a/core/res/res/values-lv/strings.xml +++ b/core/res/res/values-lv/strings.xml @@ -716,8 +716,14 @@ <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"Ļauj lietotnei lasīt un rakstīt kešatmiņas failu sistēmā."</string> <string name="permlab_use_sip" msgid="2052499390128979920">"SIP zvanu veikšana/saņemšana"</string> <string name="permdesc_use_sip" msgid="2297804849860225257">"Ļauj lietotnei veikt un saņemt SIP zvanus."</string> - <string name="permlab_register_provider" msgid="2654513709546459553">"jauna telekomunikācijas savienojuma reģistrēšana"</string> - <string name="permdesc_register_provider" msgid="7571533832018681544">"Ļauj lietotnei reģistrēt jaunus telekomunikācijas savienojumus."</string> + <!-- no translation found for permlab_register_sim_subscription (3166535485877549177) --> + <skip /> + <!-- no translation found for permdesc_register_sim_subscription (2138909035926222911) --> + <skip /> + <!-- no translation found for permlab_register_call_provider (108102120289029841) --> + <skip /> + <!-- no translation found for permdesc_register_call_provider (7034310263521081388) --> + <skip /> <string name="permlab_connection_manager" msgid="1116193254522105375">"telekomunikācijas savienojumu pārvaldība"</string> <string name="permdesc_connection_manager" msgid="5925480810356483565">"Ļauj lietotnei pārvaldīt telekomunikācijas savienojumus."</string> <string name="permlab_bind_incall_service" msgid="6773648341975287125">"Mijiedarboties ar zvana laikā rādītu ekrānu"</string> @@ -1233,6 +1239,7 @@ <string name="smv_application" msgid="3307209192155442829">"Lietotne <xliff:g id="APPLICATION">%1$s</xliff:g> (process <xliff:g id="PROCESS">%2$s</xliff:g>) ir pārkāpusi savu pašieviesto StrictMode politiku."</string> <string name="smv_process" msgid="5120397012047462446">"Process <xliff:g id="PROCESS">%1$s</xliff:g> ir pārkāpis savu pašieviesto StrictMode politiku."</string> <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_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> <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Notiek lietotņu palaišana."</string> <string name="android_upgrading_complete" msgid="1405954754112999229">"Tiek pabeigta sāknēšana."</string> @@ -1776,10 +1783,14 @@ <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Pirms atspraušanas pieprasīt paroli"</string> <string name="battery_saver_description" msgid="2510530476513605742">"Lai paildzinātu akumulatora darbības laiku, akumulatora enerģijas taupīšanas režīmā tiks pazemināta ierīces veiktspēja, samazināta vibrācija un ierobežota liela daļa fona datu. E-pasta, ziņojumapmaiņas un citas lietotnes, kas regulāri tiek sinhronizētas, tiks atjauninātas tikai tad, ja tās atvērsiet.\n\nIerīces uzlādes laikā akumulatora jaudas taupīšana tiek izslēgta automātiski."</string> <string name="downtime_condition_summary" msgid="8761776337475705749">"Līdz beigsies dīkstāve (<xliff:g id="FORMATTEDTIME">%1$s</xliff:g>)"</string> - <!-- no translation found for zen_mode_duration_minutes_summary:one (3177683545388923234) --> - <!-- no translation found for zen_mode_duration_minutes_summary:other (2787867221129368935) --> - <!-- no translation found for zen_mode_duration_hours_summary:one (597194865053253679) --> - <!-- no translation found for zen_mode_duration_hours_summary:other (2827214920627669898) --> + <plurals name="zen_mode_duration_minutes_summary"> + <item quantity="one" msgid="3177683545388923234">"Vienu minūti (līdz <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2787867221129368935">"%1$d minūtes (līdz <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> + <plurals name="zen_mode_duration_hours_summary"> + <item quantity="one" msgid="597194865053253679">"Vienu stundu (līdz <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2827214920627669898">"%1$d stundas (līdz <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> <plurals name="zen_mode_duration_minutes"> <item quantity="one" msgid="9040808414992812341">"Vienu minūti"</item> <item quantity="other" msgid="6924190729213550991">"%d min"</item> @@ -1788,7 +1799,7 @@ <item quantity="one" msgid="3480040795582254384">"Vienu stundu"</item> <item quantity="other" msgid="5408537517529822157">"%d h"</item> </plurals> - <!-- no translation found for zen_mode_until (7336308492289875088) --> - <skip /> + <string name="zen_mode_until" msgid="7336308492289875088">"Līdz <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_forever" msgid="4316804956488785559">"Uz nenoteiktu laiku"</string> + <string name="toolbar_collapse_description" msgid="2821479483960330739">"Sakļaut"</string> </resources> diff --git a/core/res/res/values-mk-rMK/strings.xml b/core/res/res/values-mk-rMK/strings.xml index 58ee5ec96d9c..d01a18b335f3 100644 --- a/core/res/res/values-mk-rMK/strings.xml +++ b/core/res/res/values-mk-rMK/strings.xml @@ -716,8 +716,14 @@ <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"Дозволува апликацијата да чита и да пишува кеш систем на датотеки."</string> <string name="permlab_use_sip" msgid="2052499390128979920">"остварувај/примај повици преку СИП"</string> <string name="permdesc_use_sip" msgid="2297804849860225257">"Дозволува апликацијата да остварува и прима повици преку СИП."</string> - <string name="permlab_register_provider" msgid="2654513709546459553">"регистрира нови телекомуникациски врски"</string> - <string name="permdesc_register_provider" msgid="7571533832018681544">"Дозволува апликацијата да регистрира нови телекомуникациски врски."</string> + <!-- no translation found for permlab_register_sim_subscription (3166535485877549177) --> + <skip /> + <!-- no translation found for permdesc_register_sim_subscription (2138909035926222911) --> + <skip /> + <!-- no translation found for permlab_register_call_provider (108102120289029841) --> + <skip /> + <!-- no translation found for permdesc_register_call_provider (7034310263521081388) --> + <skip /> <string name="permlab_connection_manager" msgid="1116193254522105375">"управува со телекомуникациски врски"</string> <string name="permdesc_connection_manager" msgid="5925480810356483565">"Дозволува апликацијата да управува со телекомуникациски врски."</string> <string name="permlab_bind_incall_service" msgid="6773648341975287125">"комуницирај со екран на дојдовен повик"</string> @@ -1233,6 +1239,7 @@ <string name="smv_application" msgid="3307209192155442829">"Апликацијата <xliff:g id="APPLICATION">%1$s</xliff:g> (процес <xliff:g id="PROCESS">%2$s</xliff:g>) ја прекрши политиката StrictMode што си ја наметна врз себеси."</string> <string name="smv_process" msgid="5120397012047462446">"Процесот <xliff:g id="PROCESS">%1$s</xliff:g> ја прекрши својата самонаметната политика на строг режим."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Android се ажурира…"</string> + <string name="android_start_title" msgid="8418054686415318207">"Android стартува…"</string> <string name="android_upgrading_apk" msgid="7904042682111526169">"Се оптимизира апликација <xliff:g id="NUMBER_0">%1$d</xliff:g> од <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Се стартуваат апликациите."</string> <string name="android_upgrading_complete" msgid="1405954754112999229">"Подигањето завршува."</string> @@ -1778,10 +1785,14 @@ <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Прашај за лозинка пред откачување"</string> <string name="battery_saver_description" msgid="2510530476513605742">"За да помогне во подобрување на трајноста на батеријата, штедачот на батерија го намалува учинокот на уредот и ги ограничува вибрациите и повеќето податоци во заднина. Е-поштата, испраќањето пораки и другите апликации кои се потпираат на синхронизирање може да не се ажурираат освен ако не ги отворите.\n\nШтедачот на батерија автоматски се исклучува кога уредот се полни."</string> <string name="downtime_condition_summary" msgid="8761776337475705749">"Додека не заврши паузата во <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> - <!-- no translation found for zen_mode_duration_minutes_summary:one (3177683545388923234) --> - <!-- no translation found for zen_mode_duration_minutes_summary:other (2787867221129368935) --> - <!-- no translation found for zen_mode_duration_hours_summary:one (597194865053253679) --> - <!-- no translation found for zen_mode_duration_hours_summary:other (2827214920627669898) --> + <plurals name="zen_mode_duration_minutes_summary"> + <item quantity="one" msgid="3177683545388923234">"Една минута (до <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2787867221129368935">"%1$d минути (до <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> + <plurals name="zen_mode_duration_hours_summary"> + <item quantity="one" msgid="597194865053253679">"Еден час (до <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2827214920627669898">"%1$d часа (до <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> <plurals name="zen_mode_duration_minutes"> <item quantity="one" msgid="9040808414992812341">"За една минута"</item> <item quantity="other" msgid="6924190729213550991">"За %d минути"</item> @@ -1790,7 +1801,7 @@ <item quantity="one" msgid="3480040795582254384">"За еден час"</item> <item quantity="other" msgid="5408537517529822157">"За %d часа"</item> </plurals> - <!-- no translation found for zen_mode_until (7336308492289875088) --> - <skip /> + <string name="zen_mode_until" msgid="7336308492289875088">"До <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_forever" msgid="4316804956488785559">"Неодредено време"</string> + <string name="toolbar_collapse_description" msgid="2821479483960330739">"Собери"</string> </resources> diff --git a/core/res/res/values-ml-rIN/strings.xml b/core/res/res/values-ml-rIN/strings.xml index c303fa23759b..d20da0adb9eb 100644 --- a/core/res/res/values-ml-rIN/strings.xml +++ b/core/res/res/values-ml-rIN/strings.xml @@ -716,8 +716,14 @@ <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"കാഷെ ഫയൽ സിസ്റ്റം റീഡുചെയ്യുന്നതിനും റൈറ്റുചെയ്യുന്നതിനും അപ്ലിക്കേഷനെ അനുവദിക്കുന്നു."</string> <string name="permlab_use_sip" msgid="2052499390128979920">"SIP കോളുകൾ വിളിക്കുക/സ്വീകരിക്കുക"</string> <string name="permdesc_use_sip" msgid="2297804849860225257">"SIP കോളുകൾ വിളിക്കാനും സ്വീകരിക്കാനും അപ്ലിക്കേഷനെ അനുവദിക്കുന്നു."</string> - <string name="permlab_register_provider" msgid="2654513709546459553">"പുതിയ ടെലികോം കണക്ഷൻ രജിസ്റ്റർ ചെയ്യുക"</string> - <string name="permdesc_register_provider" msgid="7571533832018681544">"പുതിയ ടെലികോം കണക്ഷനുകൾ രജിസ്റ്റർ ചെയ്യാൻ അപ്ലിക്കേഷനെ അനുവദിക്കുന്നു."</string> + <!-- no translation found for permlab_register_sim_subscription (3166535485877549177) --> + <skip /> + <!-- no translation found for permdesc_register_sim_subscription (2138909035926222911) --> + <skip /> + <!-- no translation found for permlab_register_call_provider (108102120289029841) --> + <skip /> + <!-- no translation found for permdesc_register_call_provider (7034310263521081388) --> + <skip /> <string name="permlab_connection_manager" msgid="1116193254522105375">"ടെലികോം കണക്ഷനുകൾ നിയന്ത്രിക്കുക"</string> <string name="permdesc_connection_manager" msgid="5925480810356483565">"ടെലികോം കണക്ഷനുകൾ നിയന്ത്രിക്കാൻ അപ്ലിക്കേഷനെ അനുവദിക്കുന്നു."</string> <string name="permlab_bind_incall_service" msgid="6773648341975287125">"ഇൻ-കോൾ സ്ക്രീനുമായി സംവദിക്കുക"</string> @@ -1233,6 +1239,7 @@ <string name="smv_application" msgid="3307209192155442829">"<xliff:g id="APPLICATION">%1$s</xliff:g> എന്ന അപ്ലിക്കേഷൻ (<xliff:g id="PROCESS">%2$s</xliff:g> പ്രോസസ്സ്) അതിന്റെ സ്വയം നിർബന്ധിത StrictMode നയം ലംഘിച്ചു."</string> <string name="smv_process" msgid="5120397012047462446">"<xliff:g id="PROCESS">%1$s</xliff:g> എന്ന പ്രോസസ്സ് അതിന്റെ സ്വയം നടപ്പിലാക്കിയ StrictMode നയം ലംഘിച്ചു."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Android അപ്ഗ്രേഡുചെയ്യുന്നു…"</string> + <string name="android_start_title" msgid="8418054686415318207">"Android ആരംഭിക്കുന്നു…"</string> <string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_0">%1$d</xliff:g> / <xliff:g id="NUMBER_1">%2$d</xliff:g> അപ്ലിക്കേഷൻ ഓപ്റ്റിമൈസ് ചെയ്യുന്നു."</string> <string name="android_upgrading_starting_apps" msgid="451464516346926713">"അപ്ലിക്കേഷനുകൾ ആരംഭിക്കുന്നു."</string> <string name="android_upgrading_complete" msgid="1405954754112999229">"ബൂട്ട് ചെയ്യൽ പൂർത്തിയാകുന്നു."</string> @@ -1776,10 +1783,12 @@ <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"അൺപിൻ ചെയ്യുന്നതിനുമുമ്പ് പാസ്വേഡ് ആവശ്യപ്പെടുക"</string> <string name="battery_saver_description" msgid="2510530476513605742">"ബാറ്ററി ആയുസ്സ് മെച്ചപ്പെടുത്താൻ സഹായിക്കുന്നതിന്, ബാറ്ററി സേവർ നിങ്ങളുടെ ഉപകരണത്തിന്റെ പ്രകടനത്തെ കുറയ്ക്കുകയും വൈബ്രേഷനെയും മിക്ക പശ്ചാത്തല ഡാറ്റയെയും പരിമിതപ്പെടുത്തുകയും ചെയ്യുന്നു. ഇമെയിൽ, സന്ദേശമയയ്ക്കൽ, സമന്വയിപ്പിക്കലിനെ ആശ്രയിച്ചുള്ള മറ്റ് അപ്ലിക്കേഷനുകൾ എന്നിവ നിങ്ങൾ തുറക്കുന്നതുവരെ അപ്ഡേറ്റുചെയ്യാനിടയില്ല.\n\nനിങ്ങളുടെ ഉപകരണം ചാർജ്ജുചെയ്യുമ്പോൾ ബാറ്ററി സേവർ യാന്ത്രികമായി ഓഫാകും."</string> <string name="downtime_condition_summary" msgid="8761776337475705749">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g>-ന് നിങ്ങളുടെ കാലാവധി അവസാനിക്കുന്നതുവരെ"</string> - <!-- no translation found for zen_mode_duration_minutes_summary:one (3177683545388923234) --> + <!-- String.format failed for translation --> <!-- no translation found for zen_mode_duration_minutes_summary:other (2787867221129368935) --> - <!-- no translation found for zen_mode_duration_hours_summary:one (597194865053253679) --> - <!-- no translation found for zen_mode_duration_hours_summary:other (2827214920627669898) --> + <plurals name="zen_mode_duration_hours_summary"> + <item quantity="one" msgid="597194865053253679">"ഒരു മണിക്കൂർ സമയത്തേക്ക് (<xliff:g id="FORMATTEDTIME">%2$s</xliff:g> വരെ)"</item> + <item quantity="other" msgid="2827214920627669898">"%1$d മണിക്കൂർ സമയത്തേക്ക് (<xliff:g id="FORMATTEDTIME">%2$s</xliff:g> വരെ)"</item> + </plurals> <plurals name="zen_mode_duration_minutes"> <item quantity="one" msgid="9040808414992812341">"ഒരു മിനിറ്റ് ദൈർഘ്യം"</item> <item quantity="other" msgid="6924190729213550991">"%d മിനിറ്റ് ദൈർഘ്യം"</item> @@ -1788,7 +1797,7 @@ <item quantity="one" msgid="3480040795582254384">"ഒരു മണിക്കൂർ ദൈർഘ്യം"</item> <item quantity="other" msgid="5408537517529822157">"%d മണിക്കൂർ ദൈർഘ്യം"</item> </plurals> - <!-- no translation found for zen_mode_until (7336308492289875088) --> - <skip /> + <string name="zen_mode_until" msgid="7336308492289875088">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> വരെ"</string> <string name="zen_mode_forever" msgid="4316804956488785559">"അവ്യക്തം"</string> + <string name="toolbar_collapse_description" msgid="2821479483960330739">"ചുരുക്കുക"</string> </resources> diff --git a/core/res/res/values-mn-rMN/strings.xml b/core/res/res/values-mn-rMN/strings.xml index 38e395ce39be..7132604f0fed 100644 --- a/core/res/res/values-mn-rMN/strings.xml +++ b/core/res/res/values-mn-rMN/strings.xml @@ -716,8 +716,14 @@ <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"Апп нь кеш файлсистемийг унших бичих боломжтой."</string> <string name="permlab_use_sip" msgid="2052499390128979920">"SIP дуудлага хийх/хүлээн авах"</string> <string name="permdesc_use_sip" msgid="2297804849860225257">"Апп-д SIP дуудлага хийх болон хүлээн авахыг зөвшөөрөх."</string> - <string name="permlab_register_provider" msgid="2654513709546459553">"шинэ телеком холболтуудыг бүртгэх"</string> - <string name="permdesc_register_provider" msgid="7571533832018681544">"Апп-д шинэ телеком холболтуудыг бүртгэхийг зөвшөөрнө."</string> + <!-- no translation found for permlab_register_sim_subscription (3166535485877549177) --> + <skip /> + <!-- no translation found for permdesc_register_sim_subscription (2138909035926222911) --> + <skip /> + <!-- no translation found for permlab_register_call_provider (108102120289029841) --> + <skip /> + <!-- no translation found for permdesc_register_call_provider (7034310263521081388) --> + <skip /> <string name="permlab_connection_manager" msgid="1116193254522105375">"телеком холболтуудыг удирдах."</string> <string name="permdesc_connection_manager" msgid="5925480810356483565">"Апп-д телеком холболтуудыг удирдахыг зөвшөөрнө."</string> <string name="permlab_bind_incall_service" msgid="6773648341975287125">"дуудлагын дэлгэцтэй харьцах"</string> @@ -1233,6 +1239,7 @@ <string name="smv_application" msgid="3307209192155442829">"<xliff:g id="APPLICATION">%1$s</xliff:g> апп (<xliff:g id="PROCESS">%2$s</xliff:g> процесс) өөрийнхөө StrictMode бодлогыг зөрчив."</string> <string name="smv_process" msgid="5120397012047462446">"<xliff:g id="PROCESS">%1$s</xliff:g> процесс өөрийнхөө StrictMode бодлогыг зөрчив."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Андройдыг дэвшүүлж байна…"</string> + <string name="android_start_title" msgid="8418054686415318207">"Андройд эхэлж байна..."</string> <string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_1">%2$d</xliff:g>-н <xliff:g id="NUMBER_0">%1$d</xliff:g> апп-г тохируулж байна."</string> <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Апп-г эхлүүлж байна."</string> <string name="android_upgrading_complete" msgid="1405954754112999229">"Эхлэлийг дуусгаж байна."</string> @@ -1776,10 +1783,14 @@ <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Тогтоосныг суллахаас өмнө нууц үг асуух"</string> <string name="battery_saver_description" msgid="2510530476513605742">"Батерейны ашиглалтыг уртасгахын тулд батерей хэмнэгч нь таны төхөөрөмжийн ажиллагааг бууруулж, чичрэлт болон далд датаны ихэнх хувийг хязгаарлана. Имэйл, зурвас гэх мэт синк хийгддэг бусад апп-ууд таныг нээхээс нааш шинэчлэгдэхгүй байж болно.\n\nТаныг төхөөрөмжөө цэнэглэх үед батерей хэмнэгч автоматаар унтарна."</string> <string name="downtime_condition_summary" msgid="8761776337475705749">"Таны уйтгартай байдал <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>-д дуусах хүртэл"</string> - <!-- no translation found for zen_mode_duration_minutes_summary:one (3177683545388923234) --> - <!-- no translation found for zen_mode_duration_minutes_summary:other (2787867221129368935) --> - <!-- no translation found for zen_mode_duration_hours_summary:one (597194865053253679) --> - <!-- no translation found for zen_mode_duration_hours_summary:other (2827214920627669898) --> + <plurals name="zen_mode_duration_minutes_summary"> + <item quantity="one" msgid="3177683545388923234">"Нэг минутын турш (<xliff:g id="FORMATTEDTIME">%2$s</xliff:g> хүртэл)"</item> + <item quantity="other" msgid="2787867221129368935">"%1$d минутын турш (<xliff:g id="FORMATTEDTIME">%2$s</xliff:g> хүртэл)"</item> + </plurals> + <plurals name="zen_mode_duration_hours_summary"> + <item quantity="one" msgid="597194865053253679">"Нэг цагийн турш (<xliff:g id="FORMATTEDTIME">%2$s</xliff:g> хүртэл)"</item> + <item quantity="other" msgid="2827214920627669898">"%1$d цагийн турш (<xliff:g id="FORMATTEDTIME">%2$s</xliff:g> хүртэл)"</item> + </plurals> <plurals name="zen_mode_duration_minutes"> <item quantity="one" msgid="9040808414992812341">"Нэг минутын турш"</item> <item quantity="other" msgid="6924190729213550991">"%d минутын турш"</item> @@ -1788,7 +1799,7 @@ <item quantity="one" msgid="3480040795582254384">"Нэг цагийн турш"</item> <item quantity="other" msgid="5408537517529822157">"%d цагийн турш"</item> </plurals> - <!-- no translation found for zen_mode_until (7336308492289875088) --> - <skip /> + <string name="zen_mode_until" msgid="7336308492289875088">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> хүртэл"</string> <string name="zen_mode_forever" msgid="4316804956488785559">"Тодорхойгүй"</string> + <string name="toolbar_collapse_description" msgid="2821479483960330739">"Хумих"</string> </resources> diff --git a/core/res/res/values-mr-rIN/strings.xml b/core/res/res/values-mr-rIN/strings.xml index b7401c774f62..13347e78a815 100644 --- a/core/res/res/values-mr-rIN/strings.xml +++ b/core/res/res/values-mr-rIN/strings.xml @@ -716,8 +716,14 @@ <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"कॅशे filesystem वाचण्यासाठी आणि लिहिण्यासाठी अॅप ला अनुमती देते."</string> <string name="permlab_use_sip" msgid="2052499390128979920">"SIP कॉल करा/प्राप्त करा"</string> <string name="permdesc_use_sip" msgid="2297804849860225257">"अॅपला SIP कॉल करण्याची आणि प्राप्त करण्याची अनुमती देते."</string> - <string name="permlab_register_provider" msgid="2654513709546459553">"नवीन टेलिकॉम कनेक्शनची नोंदणी करा"</string> - <string name="permdesc_register_provider" msgid="7571533832018681544">"नवीन टेलिकॉम कनेक्शनची नोंदणी करण्यासाठी अॅपला अनुमती देते."</string> + <!-- no translation found for permlab_register_sim_subscription (3166535485877549177) --> + <skip /> + <!-- no translation found for permdesc_register_sim_subscription (2138909035926222911) --> + <skip /> + <!-- no translation found for permlab_register_call_provider (108102120289029841) --> + <skip /> + <!-- no translation found for permdesc_register_call_provider (7034310263521081388) --> + <skip /> <string name="permlab_connection_manager" msgid="1116193254522105375">"टेलिकॉम कनेक्शन व्यवस्थापित करा"</string> <string name="permdesc_connection_manager" msgid="5925480810356483565">"टेलिकॉम कनेक्शन व्यवस्थापित करण्यासाठी अॅप ला अनुमती देते."</string> <string name="permlab_bind_incall_service" msgid="6773648341975287125">"कॉल-मधील स्क्रीनशी परस्परसंवाद करा"</string> @@ -1233,6 +1239,7 @@ <string name="smv_application" msgid="3307209192155442829">"अॅप <xliff:g id="APPLICATION">%1$s</xliff:g> (प्रक्रिया <xliff:g id="PROCESS">%2$s</xliff:g>) ने तिच्या स्वयं-लागू केलेल्या StrictMode धोरणाचे उल्लंघन केले आहे."</string> <string name="smv_process" msgid="5120397012047462446">"<xliff:g id="PROCESS">%1$s</xliff:g> प्रक्रियेने तिच्या स्वतः-लागू केलेल्या StrictMode धोरणाचे उल्लंघन केले."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Android श्रेणीसुधारित होत आहे..."</string> + <string name="android_start_title" msgid="8418054686415318207">"Android प्रारंभ करत आहे…"</string> <string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_1">%2$d</xliff:g> पैकी <xliff:g id="NUMBER_0">%1$d</xliff:g> अॅप ऑप्टिमाइझ करत आहे."</string> <string name="android_upgrading_starting_apps" msgid="451464516346926713">"अॅप्स प्रारंभ करत आहे."</string> <string name="android_upgrading_complete" msgid="1405954754112999229">"बूट समाप्त होत आहे."</string> @@ -1776,10 +1783,14 @@ <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"अनपिन करण्यापूर्वी संकेतशब्दासाठी विचारा"</string> <string name="battery_saver_description" msgid="2510530476513605742">"बॅटरीचे आयुष्य सुधारण्यात मदत होण्यासाठी, बॅटरी बचतकर्ता आपल्या डिव्हाइसचे कार्यप्रदर्शन कमी करतो आणि कंपन आणि बराच पार्श्वभूमी डेटा मर्यादित करतो. संकालनावर अवलंबून असणारे ईमेल, संदेशन आणि अन्य अॅप्स आपण ते उघडल्याशिवाय अद्यतनित होऊ शकत नाहीत.\n\nआपले डिव्हाइस चार्ज होत असते तेव्हा बॅटरी बचतकर्ता स्वयंचलितपणे बंद होतो."</string> <string name="downtime_condition_summary" msgid="8761776337475705749">"आपला कार्य न करण्याचा कालावधी <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> वाजता समाप्त होईपर्यंत"</string> - <!-- no translation found for zen_mode_duration_minutes_summary:one (3177683545388923234) --> - <!-- no translation found for zen_mode_duration_minutes_summary:other (2787867221129368935) --> - <!-- no translation found for zen_mode_duration_hours_summary:one (597194865053253679) --> - <!-- no translation found for zen_mode_duration_hours_summary:other (2827214920627669898) --> + <plurals name="zen_mode_duration_minutes_summary"> + <item quantity="one" msgid="3177683545388923234">"एका मिनिटासाठी (<xliff:g id="FORMATTEDTIME">%2$s</xliff:g> पर्यंत)"</item> + <item quantity="other" msgid="2787867221129368935">"%1$d मिनिटांसाठी (<xliff:g id="FORMATTEDTIME">%2$s</xliff:g> पर्यंत)"</item> + </plurals> + <plurals name="zen_mode_duration_hours_summary"> + <item quantity="one" msgid="597194865053253679">"एका तासासाठी (<xliff:g id="FORMATTEDTIME">%2$s</xliff:g> पर्यंत)"</item> + <item quantity="other" msgid="2827214920627669898">"%1$d तासांसाठी (<xliff:g id="FORMATTEDTIME">%2$s</xliff:g> पर्यंत)"</item> + </plurals> <plurals name="zen_mode_duration_minutes"> <item quantity="one" msgid="9040808414992812341">"एक मिनिटासाठी"</item> <item quantity="other" msgid="6924190729213550991">"%d मिनिटांसाठी"</item> @@ -1788,7 +1799,7 @@ <item quantity="one" msgid="3480040795582254384">"एका तासासाठी"</item> <item quantity="other" msgid="5408537517529822157">"%d तासांसाठी"</item> </plurals> - <!-- no translation found for zen_mode_until (7336308492289875088) --> - <skip /> + <string name="zen_mode_until" msgid="7336308492289875088">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> पर्यंत"</string> <string name="zen_mode_forever" msgid="4316804956488785559">"अनिश्चितपणे"</string> + <string name="toolbar_collapse_description" msgid="2821479483960330739">"संक्षिप्त करा"</string> </resources> diff --git a/core/res/res/values-ms-rMY/strings.xml b/core/res/res/values-ms-rMY/strings.xml index 95d7cef62ec1..e65fe3fa9ebd 100644 --- a/core/res/res/values-ms-rMY/strings.xml +++ b/core/res/res/values-ms-rMY/strings.xml @@ -716,14 +716,16 @@ <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"Membenarkan apl membaca dan menulis cache sistem fail."</string> <string name="permlab_use_sip" msgid="2052499390128979920">"buat/terima panggilan SIP"</string> <string name="permdesc_use_sip" msgid="2297804849860225257">"Membenarkan apl membuat dan menerima panggilan SIP."</string> - <!-- no translation found for permlab_register_provider (2654513709546459553) --> + <!-- no translation found for permlab_register_sim_subscription (3166535485877549177) --> <skip /> - <!-- no translation found for permdesc_register_provider (7571533832018681544) --> + <!-- no translation found for permdesc_register_sim_subscription (2138909035926222911) --> <skip /> - <!-- no translation found for permlab_connection_manager (1116193254522105375) --> + <!-- no translation found for permlab_register_call_provider (108102120289029841) --> <skip /> - <!-- no translation found for permdesc_connection_manager (5925480810356483565) --> + <!-- no translation found for permdesc_register_call_provider (7034310263521081388) --> <skip /> + <string name="permlab_connection_manager" msgid="1116193254522105375">"urus sambungan telekomunikasi"</string> + <string name="permdesc_connection_manager" msgid="5925480810356483565">"Membenarkan apl mengurus sambungan telekomunikasi."</string> <string name="permlab_bind_incall_service" msgid="6773648341975287125">"berinteraksi dengan skrin dalam panggilan"</string> <string name="permdesc_bind_incall_service" msgid="8343471381323215005">"Membenarkan apl mengawal masa dan cara pengguna melihat skrin dalam panggilan."</string> <string name="permlab_bind_connection_service" msgid="3557341439297014940">"berinteraksi dengan perkhidmatan telefoni"</string> @@ -1237,6 +1239,7 @@ <string name="smv_application" msgid="3307209192155442829">"Apl <xliff:g id="APPLICATION">%1$s</xliff:g> (proses <xliff:g id="PROCESS">%2$s</xliff:g>) telah melanggar dasar Mod Tegasnya sendiri."</string> <string name="smv_process" msgid="5120397012047462446">"Proses <xliff:g id="PROCESS">%1$s</xliff:g> telah melanggar dasar Mod Tegasnya sendiri."</string> <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_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> <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Memulakan apl."</string> <string name="android_upgrading_complete" msgid="1405954754112999229">"But akhir."</string> @@ -1780,10 +1783,14 @@ <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Minta kata laluan sebelum menyahsemat"</string> <string name="battery_saver_description" msgid="2510530476513605742">"Untuk membantu memperbaik hayat bateri, penjimat bateri mengurangkan prestasi peranti anda dan menghadkan getaran serta kebanyakan data latar belakang. E-mel, pemesejan dan apl lain yang bergantung pada penyegerakan mungkin tidak dikemas kini melainkan anda membuka apl tersebut.\n\nPenjimat bateri dimatikan secara automatik semasa peranti anda mengecas."</string> <string name="downtime_condition_summary" msgid="8761776337475705749">"Sehingga waktu gendala anda berakhir pada <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> - <!-- no translation found for zen_mode_duration_minutes_summary:one (3177683545388923234) --> - <!-- no translation found for zen_mode_duration_minutes_summary:other (2787867221129368935) --> - <!-- no translation found for zen_mode_duration_hours_summary:one (597194865053253679) --> - <!-- no translation found for zen_mode_duration_hours_summary:other (2827214920627669898) --> + <plurals name="zen_mode_duration_minutes_summary"> + <item quantity="one" msgid="3177683545388923234">"Selama satu minit (sehingga <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2787867221129368935">"Selaman %1$d minit (sehingga <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> + <plurals name="zen_mode_duration_hours_summary"> + <item quantity="one" msgid="597194865053253679">"Selama satu jam (sehingga <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2827214920627669898">"Selama %1$d jam (sehingga <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> <plurals name="zen_mode_duration_minutes"> <item quantity="one" msgid="9040808414992812341">"Selama satu minit"</item> <item quantity="other" msgid="6924190729213550991">"Selama %d minit"</item> @@ -1792,7 +1799,7 @@ <item quantity="one" msgid="3480040795582254384">"Selama satu jam"</item> <item quantity="other" msgid="5408537517529822157">"Selama %d jam"</item> </plurals> - <!-- no translation found for zen_mode_until (7336308492289875088) --> - <skip /> + <string name="zen_mode_until" msgid="7336308492289875088">"Sehingga <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_forever" msgid="4316804956488785559">"Selama-lamanya"</string> + <string name="toolbar_collapse_description" msgid="2821479483960330739">"Runtuhkan"</string> </resources> diff --git a/core/res/res/values-my-rMM/strings.xml b/core/res/res/values-my-rMM/strings.xml index 999fb48f5456..86b310d14662 100644 --- a/core/res/res/values-my-rMM/strings.xml +++ b/core/res/res/values-my-rMM/strings.xml @@ -716,8 +716,14 @@ <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"appအား ဖိုင်စနစ်၏ကက်ရှကို ဖတ် နှင့် ရေး ခွင့်ပြုသည်။"</string> <string name="permlab_use_sip" msgid="2052499390128979920">"SIP ခေါ်ဆိုမှုများ ခေါ်ရန်/လက်ခံရန်"</string> <string name="permdesc_use_sip" msgid="2297804849860225257">"SIP ခေါ်ဆိုမှုများ ခေါ်ရန်နှင့် လက်ခံနိုင်ရန် app ကို ခွင့်ပြုပါ။"</string> - <string name="permlab_register_provider" msgid="2654513709546459553">"တယ်လီကွမ် ဆက်သွယ်မှု အသစ်ကို မှတ်ပုံတင်ရန်"</string> - <string name="permdesc_register_provider" msgid="7571533832018681544">"appအား တယ်လီကွမ် ဆက်သွယ်မှု အသစ်ကို မှတ်ပုံတင်ခွင့် ပြုပါ။"</string> + <!-- no translation found for permlab_register_sim_subscription (3166535485877549177) --> + <skip /> + <!-- no translation found for permdesc_register_sim_subscription (2138909035926222911) --> + <skip /> + <!-- no translation found for permlab_register_call_provider (108102120289029841) --> + <skip /> + <!-- no translation found for permdesc_register_call_provider (7034310263521081388) --> + <skip /> <string name="permlab_connection_manager" msgid="1116193254522105375">"တယ်လီကွမ် ဆက်သွယ်မှုများကို စီမံရန်"</string> <string name="permdesc_connection_manager" msgid="5925480810356483565">"appအား တယ်လီကွမ် ဆက်သွယ်မှုများကို စီမံခွင့် ပြုပါ။"</string> <string name="permlab_bind_incall_service" msgid="6773648341975287125">"ခေါ်ဆိုမှု-အဝင် မျက်နှာပြင်နဲ့ တုံ့ပြန်လုပ်ကိုင်ရန်"</string> @@ -1233,6 +1239,7 @@ <string name="smv_application" msgid="3307209192155442829">"app <xliff:g id="APPLICATION">%1$s</xliff:g> (လုပ်ငန်းစဉ် <xliff:g id="PROCESS">%2$s</xliff:g>) က ကိုယ်တိုင် ပြဌာန်းခဲ့သည့် StrictMode မူဝါဒကို ချိုးဖောက်ခဲ့သည်။"</string> <string name="smv_process" msgid="5120397012047462446">"ဤ<xliff:g id="PROCESS">%1$s</xliff:g>ဖြစ်စဥ်မှာ ကိုယ်တိုင်အကျိုးသက်ရောက်သော StrictModeမူဝါဒအား ချိုးဖောက်သည်"</string> <string name="android_upgrading_title" msgid="1584192285441405746">"အန်ဒရွိုက်ကို မွမ်းမံနေ…"</string> + <string name="android_start_title" msgid="8418054686415318207">"Android စတင်နေ…"</string> <string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_0">%1$d</xliff:g> ထဲက app<xliff:g id="NUMBER_1">%2$d</xliff:g>ကို ဆီလျော်အောင် လုပ်နေ"</string> <string name="android_upgrading_starting_apps" msgid="451464516346926713">"appများကို စတင်နေ"</string> <string name="android_upgrading_complete" msgid="1405954754112999229">"လုပ်ငန်းစနစ်ထည့်သွင်း၍ ပြန်လည်စတင်ရန် ပြီးပါပြီ"</string> @@ -1776,17 +1783,21 @@ <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"ပင်မဖြုတ်မီမှာ စကားဝှက်ကို မေးကြည့်ရန်"</string> <string name="battery_saver_description" msgid="2510530476513605742">"ဘက်ထရီသက်တမ်း ကြာရှည်ခံရန်အတွက်၊ ဘက်ထရီချွေတာရေးအပိုင်းမှ သင့် စက်ပစ္စည်း၏ဆောင်ရွက်ချက်များကို လျော့ချပေးပြီး တုန်ခါမှုနှင့် နောက်ခံအချက်အလက်အများစုကို ကန့်သတ်ပေးသည်။ အီးမေး၊ စာပို့ခြင်း နှင့် တခြားapp များကို သင်ဖွင့်မထားပါက အချိန်နှင့်တပြေးညီ ညှိမပေးပါ။ \n\n စက်ပစ္စည်း အားသွင်းနေစဉ် ဘက်ထရီချွေတာရေးအပိုင်းသည် အလိုအလျောက်ပင် အလုပ်မလုပ်ပါ။"</string> <string name="downtime_condition_summary" msgid="8761776337475705749">"သင်၏ စက်ရပ်ချိန် <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> မှာ ပြီးဆုံးသည့် အထိ။"</string> - <!-- no translation found for zen_mode_duration_minutes_summary:one (3177683545388923234) --> - <!-- no translation found for zen_mode_duration_minutes_summary:other (2787867221129368935) --> - <!-- no translation found for zen_mode_duration_hours_summary:one (597194865053253679) --> - <!-- no translation found for zen_mode_duration_hours_summary:other (2827214920627669898) --> + <plurals name="zen_mode_duration_minutes_summary"> + <item quantity="one" msgid="3177683545388923234">"တစ်မိနစ်ကြာ (<xliff:g id="FORMATTEDTIME">%2$s</xliff:g>အထိ)"</item> + <item quantity="other" msgid="2787867221129368935">"%1$d မိနစ်ကြာ (<xliff:g id="FORMATTEDTIME">%2$s</xliff:g>အထိ)"</item> + </plurals> + <plurals name="zen_mode_duration_hours_summary"> + <item quantity="one" msgid="597194865053253679">"တစ်နာရီကြာ (<xliff:g id="FORMATTEDTIME">%2$s</xliff:g>အထိ)"</item> + <item quantity="other" msgid="2827214920627669898">"%1$d နာရီကြာ (<xliff:g id="FORMATTEDTIME">%2$s</xliff:g>အထိ)"</item> + </plurals> <plurals name="zen_mode_duration_minutes"> <item quantity="one" msgid="9040808414992812341">"တစ်မိနစ် အတွင်း"</item> <item quantity="other" msgid="6924190729213550991">"%d မိနစ် အတွင်း"</item> </plurals> <!-- String.format failed for translation --> <!-- no translation found for zen_mode_duration_hours:other (5408537517529822157) --> - <!-- no translation found for zen_mode_until (7336308492289875088) --> - <skip /> + <string name="zen_mode_until" msgid="7336308492289875088">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g>အထိ"</string> <string name="zen_mode_forever" msgid="4316804956488785559">"အကန့်အသတ်မရှိစွာ"</string> + <string name="toolbar_collapse_description" msgid="2821479483960330739">"ခေါက်ရန်"</string> </resources> diff --git a/core/res/res/values-nb/strings.xml b/core/res/res/values-nb/strings.xml index f9e44e7106e7..a59a30a64a5e 100644 --- a/core/res/res/values-nb/strings.xml +++ b/core/res/res/values-nb/strings.xml @@ -716,8 +716,14 @@ <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"Lar appen lese og skrive til det bufrede filsystemet."</string> <string name="permlab_use_sip" msgid="2052499390128979920">"foreta/motta SIP-anrop"</string> <string name="permdesc_use_sip" msgid="2297804849860225257">"Tillater at appen utfører og mottar SIP-anrop."</string> - <string name="permlab_register_provider" msgid="2654513709546459553">"registrere nye telekom-tilkoblinger"</string> - <string name="permdesc_register_provider" msgid="7571533832018681544">"Lar appen registrere nye telekom-tilkoblinger."</string> + <!-- no translation found for permlab_register_sim_subscription (3166535485877549177) --> + <skip /> + <!-- no translation found for permdesc_register_sim_subscription (2138909035926222911) --> + <skip /> + <!-- no translation found for permlab_register_call_provider (108102120289029841) --> + <skip /> + <!-- no translation found for permdesc_register_call_provider (7034310263521081388) --> + <skip /> <string name="permlab_connection_manager" msgid="1116193254522105375">"administrere telekom-tilkoblinger"</string> <string name="permdesc_connection_manager" msgid="5925480810356483565">"Lar appen administrere telekom-tilkoblinger."</string> <string name="permlab_bind_incall_service" msgid="6773648341975287125">"samhandle med skjermen for innkommende anrop"</string> @@ -1233,6 +1239,7 @@ <string name="smv_application" msgid="3307209192155442829">"Appen <xliff:g id="APPLICATION">%1$s</xliff:g> (prosessen <xliff:g id="PROCESS">%2$s</xliff:g>) har brutt de selvpålagte StrictMode-retningslinjene."</string> <string name="smv_process" msgid="5120397012047462446">"Prosessen<xliff:g id="PROCESS">%1$s</xliff:g> har brutt de selvpålagte StrictMode-retningslinjene."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Android oppgraderes …"</string> + <string name="android_start_title" msgid="8418054686415318207">"Android starter …"</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> <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Starter apper."</string> <string name="android_upgrading_complete" msgid="1405954754112999229">"Ferdigstiller oppstart."</string> @@ -1776,10 +1783,14 @@ <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Krev passord for å løsne apper"</string> <string name="battery_saver_description" msgid="2510530476513605742">"Batterisparing reduserer enhetens ytelse og begrenser vibrering og de fleste bakgrunnsdata for å forbedre batterilevetiden. Det kan hende E-post, Meldinger og andre apper som er avhengige av synkronisering, ikke oppdateres med mindre du åpner dem.\n\nBatterisparing slås automatisk av når enheten lades."</string> <string name="downtime_condition_summary" msgid="8761776337475705749">"Til hviletiden din ender kl. <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> - <!-- no translation found for zen_mode_duration_minutes_summary:one (3177683545388923234) --> - <!-- no translation found for zen_mode_duration_minutes_summary:other (2787867221129368935) --> - <!-- no translation found for zen_mode_duration_hours_summary:one (597194865053253679) --> - <!-- no translation found for zen_mode_duration_hours_summary:other (2827214920627669898) --> + <plurals name="zen_mode_duration_minutes_summary"> + <item quantity="one" msgid="3177683545388923234">"I ett minutt (til <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2787867221129368935">"I %1$d minutter (til <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> + <plurals name="zen_mode_duration_hours_summary"> + <item quantity="one" msgid="597194865053253679">"I én time (til <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2827214920627669898">"I %1$d timer (til <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> <plurals name="zen_mode_duration_minutes"> <item quantity="one" msgid="9040808414992812341">"I ett minutt"</item> <item quantity="other" msgid="6924190729213550991">"I %d minutter"</item> @@ -1788,7 +1799,7 @@ <item quantity="one" msgid="3480040795582254384">"I én time"</item> <item quantity="other" msgid="5408537517529822157">"I %d timer"</item> </plurals> - <!-- no translation found for zen_mode_until (7336308492289875088) --> - <skip /> + <string name="zen_mode_until" msgid="7336308492289875088">"Til <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_forever" msgid="4316804956488785559">"På ubestemt tid"</string> + <string name="toolbar_collapse_description" msgid="2821479483960330739">"Skjul"</string> </resources> diff --git a/core/res/res/values-ne-rNP/strings.xml b/core/res/res/values-ne-rNP/strings.xml index e93bee10d744..f1502f89eecc 100644 --- a/core/res/res/values-ne-rNP/strings.xml +++ b/core/res/res/values-ne-rNP/strings.xml @@ -716,10 +716,16 @@ <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"केस फाइल प्रणालीलाई पढ्न र लेख्नको लागि अनुप्रयोगलाई अनुमति दिन्छ।"</string> <string name="permlab_use_sip" msgid="2052499390128979920">"SIP कलहरू प्राप्त/बनाउन"</string> <string name="permdesc_use_sip" msgid="2297804849860225257">"SIP कलहरू बनाउन र प्राप्त गर्न अनुप्रयोगलाई अनुमति दिन्छ।"</string> - <string name="permlab_register_provider" msgid="2654513709546459553">"नयाँ दूरसंचार जडान दर्ता गर्नुहोस्"</string> - <string name="permdesc_register_provider" msgid="7571533832018681544">"अनुप्रयोग लाई नयाँ दूरसंचार सम्पर्क दर्ता गर्न अनुमति दिन्छ।"</string> + <!-- no translation found for permlab_register_sim_subscription (3166535485877549177) --> + <skip /> + <!-- no translation found for permdesc_register_sim_subscription (2138909035926222911) --> + <skip /> + <!-- no translation found for permlab_register_call_provider (108102120289029841) --> + <skip /> + <!-- no translation found for permdesc_register_call_provider (7034310263521081388) --> + <skip /> <string name="permlab_connection_manager" msgid="1116193254522105375">"दूरसंचार जडान व्यवस्थापन गर्नुहोस्"</string> - <string name="permdesc_connection_manager" msgid="5925480810356483565">"अनुप्रयोग लाई टेलिकम जडान व्यवस्थापन गर्न अनुमति दिन्छ।"</string> + <string name="permdesc_connection_manager" msgid="5925480810356483565">"अनुप्रयोगलाई टेलिकम जडान व्यवस्थापन गर्न अनुमति दिन्छ।"</string> <string name="permlab_bind_incall_service" msgid="6773648341975287125">"आगमन कल स्क्रिन संग अन्तर्क्रिया गर्नुहोस्"</string> <string name="permdesc_bind_incall_service" msgid="8343471381323215005">"कहिले र कसरी प्रयोगकर्ताले आगमन कल स्क्रीन हेर्न सक्दछ भनेर नियन्त्रण गर्न अनुप्रयोगलाई अनुमति दिनुहोस्।"</string> <string name="permlab_bind_connection_service" msgid="3557341439297014940">"टेलिफोनी सेवा अन्तरक्रिया"</string> @@ -1241,6 +1247,7 @@ <string name="smv_application" msgid="3307209192155442829">"अनुप्रयोग <xliff:g id="APPLICATION">%1$s</xliff:g> (प्रक्रिया <xliff:g id="PROCESS">%2$s</xliff:g>) ले यसको स्वयं-लागु गरिएको स्ट्रिटमोड नीति उलङ्घन गरेको छ।"</string> <string name="smv_process" msgid="5120397012047462446">"प्रक्रिया <xliff:g id="PROCESS">%1$s</xliff:g> यसको आफ्नै कडामोड नीतिका कारण उल्लङ्घन गरिएको छ।"</string> <string name="android_upgrading_title" msgid="1584192285441405746">"एन्ड्रोइड अपग्रेड हुँदैछ…"</string> + <string name="android_start_title" msgid="8418054686415318207">"Android शुरू हुँदैछ..."</string> <string name="android_upgrading_apk" msgid="7904042682111526169">"अनुप्रयोग अनुकुल हुँदै <xliff:g id="NUMBER_0">%1$d</xliff:g> को <xliff:g id="NUMBER_1">%2$d</xliff:g>।"</string> <string name="android_upgrading_starting_apps" msgid="451464516346926713">"सुरुवात अनुप्रयोगहरू।"</string> <string name="android_upgrading_complete" msgid="1405954754112999229">"बुट पुरा हुँदै।"</string> @@ -1769,12 +1776,12 @@ <string name="item_is_selected" msgid="949687401682476608">"<xliff:g id="ITEM">%1$s</xliff:g> चयन गरियो"</string> <string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> हटाइयो"</string> <string name="managed_profile_label_badge" msgid="2355652472854327647">"कार्य <xliff:g id="LABEL">%1$s</xliff:g>"</string> - <string name="lock_to_app_toast" msgid="7570091317001980053">"यो पर्दा अनपिन गर्न, छुनुहोस् र पछाडि पकड्नुहोस् र सोही समयमा अवलोकन गर्नुहोस्।"</string> - <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"यो पर्दा अनपिन गर्न, छुनुहोस् र अवलोकन पकड्नुहोस्।"</string> + <string name="lock_to_app_toast" msgid="7570091317001980053">"यस पर्दालाई अनपिन गर्न एकै समय फिर्ता र सारांशलाई छोई पक्डिनुहोस्।"</string> + <string name="lock_to_app_toast_accessible" msgid="8239120109365070664">"यस पर्दालाई अनपिन गर्न सारांशलाई छुनुहोस् र पक्डनुहोस्।"</string> <string name="lock_to_app_toast_locked" msgid="8739004135132606329">"स्क्रिन अनपिन हुँदैछ। अनपिन गर्ने तपाईँको संगठन द्वारा समर्थित छैन।"</string> <string name="lock_to_app_title" msgid="1682643873107812874">"स्क्रिन पिन गर्ने प्रयोग गर्नुहुन्छ?"</string> - <string name="lock_to_app_description" msgid="4120623404152035221">"पर्दा पिन गर्नाले एकल दृश्यमा प्रदर्शन बन्द हुन्छ।\n\nअनपिन गर्न, छुनुहोस् र पछाडि पकड्नुहोस् र सोही समयमा अवलोकन गर्नुहोस्।"</string> - <string name="lock_to_app_description_accessible" msgid="199664191087836099">"पर्दा पिन गर्नाले एकल दृश्यमा प्रदर्शन बन्द हुन्छ।\n\nअनपिन गर्न, छुनुहोस् र अवलोकन पकड्नुहोस्।"</string> + <string name="lock_to_app_description" msgid="4120623404152035221">"पर्दा पिन गर्नाले एकल दृश्यमा प्रदर्शन बन्द हुन्छ।\n\nअनपिन गर्न, छुनुहोस् र पछाडि पकड्नुहोस् र सोही समयमा सारांशलाई हेर्नुहोस्।"</string> + <string name="lock_to_app_description_accessible" msgid="199664191087836099">"पर्दा पिन गर्नाले एकल दृश्यमा प्रदर्शन बन्द हुन्छ।\n\nअनपिन गर्न, छुनुहोस् र सारांश पकड्नुहोस्।"</string> <string name="lock_to_app_negative" msgid="2259143719362732728">"होइन, धन्यवाद"</string> <string name="lock_to_app_positive" msgid="7085139175671313864">"START"</string> <string name="lock_to_app_start" msgid="6643342070839862795">"स्क्रिन पिन गरियो"</string> @@ -1784,10 +1791,14 @@ <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"पिन निकाल्नुअघि पासवर्ड सोध्नुहोस्"</string> <string name="battery_saver_description" msgid="2510530476513605742">"ब्याट्री जीवन सुधार्न, ब्याट्री बचतले आफ्नो उपकरणको प्रदर्शन र कम्पनको सीमा र सबैभन्दा पृष्ठभूमि डेटा कम गर्छ। इमेल, सन्देश, र अन्य अनुप्रयोगहरू जसले तपाईं तिनीहरूलाई नखोले सम्म समिकरण अद्यावधिक नगर्न सक्छ भनि भर पर्छ।\n\nब्याट्री बचतले तपाईँको उपकरण चार्ज हुँदै बेला तपाईँको उपकरण स्वचालित बन्द गर्छ।"</string> <string name="downtime_condition_summary" msgid="8761776337475705749">"तपाईँको <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> डाउनटाइम समाप्त हुँदा सम्म"</string> - <!-- no translation found for zen_mode_duration_minutes_summary:one (3177683545388923234) --> - <!-- no translation found for zen_mode_duration_minutes_summary:other (2787867221129368935) --> - <!-- no translation found for zen_mode_duration_hours_summary:one (597194865053253679) --> - <!-- no translation found for zen_mode_duration_hours_summary:other (2827214920627669898) --> + <plurals name="zen_mode_duration_minutes_summary"> + <item quantity="one" msgid="3177683545388923234">"एक मिनेटको लागि (<xliff:g id="FORMATTEDTIME">%2$s</xliff:g> सम्म)"</item> + <item quantity="other" msgid="2787867221129368935">"%1$d मिनेटको लागि (<xliff:g id="FORMATTEDTIME">%2$s</xliff:g> सम्म)"</item> + </plurals> + <plurals name="zen_mode_duration_hours_summary"> + <item quantity="one" msgid="597194865053253679">"एक घण्टाको लागि (<xliff:g id="FORMATTEDTIME">%2$s</xliff:g> सम्म)"</item> + <item quantity="other" msgid="2827214920627669898">"%1$d घण्टाको लागि (<xliff:g id="FORMATTEDTIME">%2$s</xliff:g> सम्म)"</item> + </plurals> <plurals name="zen_mode_duration_minutes"> <item quantity="one" msgid="9040808414992812341">"एक मिनेटको लागि"</item> <item quantity="other" msgid="6924190729213550991">"%d मिनेटको लागि"</item> @@ -1796,7 +1807,7 @@ <item quantity="one" msgid="3480040795582254384">"एक घण्टाको लागि"</item> <item quantity="other" msgid="5408537517529822157">"%d घण्टाको लागि"</item> </plurals> - <!-- no translation found for zen_mode_until (7336308492289875088) --> - <skip /> + <string name="zen_mode_until" msgid="7336308492289875088">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> सम्म"</string> <string name="zen_mode_forever" msgid="4316804956488785559">"अनिश्चित"</string> + <string name="toolbar_collapse_description" msgid="2821479483960330739">"संक्षिप्त पार्नुहोस्"</string> </resources> diff --git a/core/res/res/values-nl/strings.xml b/core/res/res/values-nl/strings.xml index f2564d889ff4..1454f6b6470f 100644 --- a/core/res/res/values-nl/strings.xml +++ b/core/res/res/values-nl/strings.xml @@ -716,8 +716,14 @@ <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"Hiermee kan de app het cachebestandssysteem lezen en schrijven."</string> <string name="permlab_use_sip" msgid="2052499390128979920">"SIP-oproepen plaatsen/ontvangen"</string> <string name="permdesc_use_sip" msgid="2297804849860225257">"Toestaan dat de app SIP-oproepen plaatst en ontvangt."</string> - <string name="permlab_register_provider" msgid="2654513709546459553">"nieuwe telecomverbinding registreren"</string> - <string name="permdesc_register_provider" msgid="7571533832018681544">"Hiermee kan de app nieuwe telecomverbindingen registreren."</string> + <!-- no translation found for permlab_register_sim_subscription (3166535485877549177) --> + <skip /> + <!-- no translation found for permdesc_register_sim_subscription (2138909035926222911) --> + <skip /> + <!-- no translation found for permlab_register_call_provider (108102120289029841) --> + <skip /> + <!-- no translation found for permdesc_register_call_provider (7034310263521081388) --> + <skip /> <string name="permlab_connection_manager" msgid="1116193254522105375">"telecomverbindingen beheren"</string> <string name="permdesc_connection_manager" msgid="5925480810356483565">"Hiermee kan de app telecomverbindingen beheren."</string> <string name="permlab_bind_incall_service" msgid="6773648341975287125">"interactie met scherm in actieve oproep"</string> @@ -1233,6 +1239,7 @@ <string name="smv_application" msgid="3307209192155442829">"De app <xliff:g id="APPLICATION">%1$s</xliff:g> (proces <xliff:g id="PROCESS">%2$s</xliff:g>) heeft het zelf afgedwongen StrictMode-beleid geschonden."</string> <string name="smv_process" msgid="5120397012047462446">"Het proces <xliff:g id="PROCESS">%1$s</xliff:g> heeft het zelf afgedwongen StrictMode-beleid geschonden."</string> <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_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> <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Apps starten."</string> <string name="android_upgrading_complete" msgid="1405954754112999229">"Opstarten afronden."</string> @@ -1776,10 +1783,14 @@ <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Vragen om wachtwoord voordat items worden losgemaakt"</string> <string name="battery_saver_description" msgid="2510530476513605742">"Accubesparing beperkt de prestaties van uw apparaat, de trilfunctie en de meeste achtergrondgegevens om de accuduur te verlengen.\n\nAccubesparing wordt automatisch uitgeschakeld wanneer uw apparaat wordt opgeladen."</string> <string name="downtime_condition_summary" msgid="8761776337475705749">"Totdat uw downtime eindigt om <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> - <!-- no translation found for zen_mode_duration_minutes_summary:one (3177683545388923234) --> - <!-- no translation found for zen_mode_duration_minutes_summary:other (2787867221129368935) --> - <!-- no translation found for zen_mode_duration_hours_summary:one (597194865053253679) --> - <!-- no translation found for zen_mode_duration_hours_summary:other (2827214920627669898) --> + <plurals name="zen_mode_duration_minutes_summary"> + <item quantity="one" msgid="3177683545388923234">"Eén minuut (tot <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2787867221129368935">"%1$d minuten (tot <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> + <plurals name="zen_mode_duration_hours_summary"> + <item quantity="one" msgid="597194865053253679">"Eén uur (tot <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2827214920627669898">"%1$d uur (tot <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> <plurals name="zen_mode_duration_minutes"> <item quantity="one" msgid="9040808414992812341">"Eén minuut"</item> <item quantity="other" msgid="6924190729213550991">"%d minuten"</item> @@ -1788,7 +1799,7 @@ <item quantity="one" msgid="3480040795582254384">"Eén uur"</item> <item quantity="other" msgid="5408537517529822157">"%d uur"</item> </plurals> - <!-- no translation found for zen_mode_until (7336308492289875088) --> - <skip /> + <string name="zen_mode_until" msgid="7336308492289875088">"Tot <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_forever" msgid="4316804956488785559">"Voor onbepaalde tijd"</string> + <string name="toolbar_collapse_description" msgid="2821479483960330739">"Samenvouwen"</string> </resources> diff --git a/core/res/res/values-pl/strings.xml b/core/res/res/values-pl/strings.xml index 69ddf8391a9d..7e9798732641 100644 --- a/core/res/res/values-pl/strings.xml +++ b/core/res/res/values-pl/strings.xml @@ -716,8 +716,14 @@ <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"Pozwala aplikacji na odczyt i zapis w systemie plików pamięci podręcznej."</string> <string name="permlab_use_sip" msgid="2052499390128979920">"wykonywanie/odbieranie połączeń SIP"</string> <string name="permdesc_use_sip" msgid="2297804849860225257">"Pozwala aplikacji na wykonywanie i odbieranie połączeń SIP."</string> - <string name="permlab_register_provider" msgid="2654513709546459553">"rejestrowanie nowych połączeń telekomunikacyjnych"</string> - <string name="permdesc_register_provider" msgid="7571533832018681544">"Zezwala aplikacji na rejestrowanie nowych połączeń telekomunikacyjnych."</string> + <!-- no translation found for permlab_register_sim_subscription (3166535485877549177) --> + <skip /> + <!-- no translation found for permdesc_register_sim_subscription (2138909035926222911) --> + <skip /> + <!-- no translation found for permlab_register_call_provider (108102120289029841) --> + <skip /> + <!-- no translation found for permdesc_register_call_provider (7034310263521081388) --> + <skip /> <string name="permlab_connection_manager" msgid="1116193254522105375">"zarządzanie połączeniami telekomunikacyjnymi"</string> <string name="permdesc_connection_manager" msgid="5925480810356483565">"Zezwala aplikacji na zarządzanie połączeniami telekomunikacyjnymi."</string> <string name="permlab_bind_incall_service" msgid="6773648341975287125">"interakcje z ekranem połączenia"</string> @@ -1233,6 +1239,7 @@ <string name="smv_application" msgid="3307209192155442829">"Aplikacja <xliff:g id="APPLICATION">%1$s</xliff:g> (proces <xliff:g id="PROCESS">%2$s</xliff:g>) naruszyła wymuszone przez siebie zasady StrictMode."</string> <string name="smv_process" msgid="5120397012047462446">"Proces <xliff:g id="PROCESS">%1$s</xliff:g> naruszył wymuszone przez siebie zasady StrictMode."</string> <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_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> <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Uruchamianie aplikacji."</string> <string name="android_upgrading_complete" msgid="1405954754112999229">"Kończenie uruchamiania."</string> @@ -1776,10 +1783,14 @@ <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Aby odpiąć, poproś o hasło"</string> <string name="battery_saver_description" msgid="2510530476513605742">"Aby wydłużyć czas pracy baterii, Oszczędzanie baterii ogranicza aktywność urządzenia, w tym wibracje i przetwarzanie większości danych w tle. Poczta, SMS i inne synchronizowane aplikacje mogą nie aktualizować swojej zawartości, dopóki ich nie otworzysz.\n\nOszczędzanie baterii wyłącza się automatycznie podczas ładowania urządzenia."</string> <string name="downtime_condition_summary" msgid="8761776337475705749">"Do zakończenia przestoju o <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> - <!-- no translation found for zen_mode_duration_minutes_summary:one (3177683545388923234) --> - <!-- no translation found for zen_mode_duration_minutes_summary:other (2787867221129368935) --> - <!-- no translation found for zen_mode_duration_hours_summary:one (597194865053253679) --> - <!-- no translation found for zen_mode_duration_hours_summary:other (2827214920627669898) --> + <plurals name="zen_mode_duration_minutes_summary"> + <item quantity="one" msgid="3177683545388923234">"Przez minutę (do <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2787867221129368935">"Przez %1$d min (do <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> + <plurals name="zen_mode_duration_hours_summary"> + <item quantity="one" msgid="597194865053253679">"Przez godzinę (do <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2827214920627669898">"Przez %1$d godz. (do <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> <plurals name="zen_mode_duration_minutes"> <item quantity="one" msgid="9040808414992812341">"Przez minutę"</item> <item quantity="other" msgid="6924190729213550991">"Przez %d min"</item> @@ -1788,7 +1799,7 @@ <item quantity="one" msgid="3480040795582254384">"Przez 1 godz."</item> <item quantity="other" msgid="5408537517529822157">"Przez %d godz."</item> </plurals> - <!-- no translation found for zen_mode_until (7336308492289875088) --> - <skip /> + <string name="zen_mode_until" msgid="7336308492289875088">"Do <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_forever" msgid="4316804956488785559">"Na czas nieokreślony"</string> + <string name="toolbar_collapse_description" msgid="2821479483960330739">"Zwiń"</string> </resources> diff --git a/core/res/res/values-pt-rPT/strings.xml b/core/res/res/values-pt-rPT/strings.xml index 84100f075aee..acdd6f8867c4 100644 --- a/core/res/res/values-pt-rPT/strings.xml +++ b/core/res/res/values-pt-rPT/strings.xml @@ -716,8 +716,14 @@ <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"Permite à aplicação ler e escrever no sistema de ficheiros da cache."</string> <string name="permlab_use_sip" msgid="2052499390128979920">"efetuar/receber chamadas SIP"</string> <string name="permdesc_use_sip" msgid="2297804849860225257">"Permite que a aplicação efetue e receba chamadas SIP."</string> - <string name="permlab_register_provider" msgid="2654513709546459553">"registar novas ligações de telecomunicação"</string> - <string name="permdesc_register_provider" msgid="7571533832018681544">"Permite que a aplicação registe novas ligações de telecomunicação."</string> + <!-- no translation found for permlab_register_sim_subscription (3166535485877549177) --> + <skip /> + <!-- no translation found for permdesc_register_sim_subscription (2138909035926222911) --> + <skip /> + <!-- no translation found for permlab_register_call_provider (108102120289029841) --> + <skip /> + <!-- no translation found for permdesc_register_call_provider (7034310263521081388) --> + <skip /> <string name="permlab_connection_manager" msgid="1116193254522105375">"gerir ligações de telecomunicação"</string> <string name="permdesc_connection_manager" msgid="5925480810356483565">"Permite que a aplicação faça a gestão das ligações de telecomunicação."</string> <string name="permlab_bind_incall_service" msgid="6773648341975287125">"interagir com o ecrã durante uma chamada"</string> @@ -1233,6 +1239,7 @@ <string name="smv_application" msgid="3307209192155442829">"A aplicação <xliff:g id="APPLICATION">%1$s</xliff:g> (processo <xliff:g id="PROCESS">%2$s</xliff:g>) violou a política StrictMode auto-imposta."</string> <string name="smv_process" msgid="5120397012047462446">"O processo <xliff:g id="PROCESS">%1$s</xliff:g> violou a política StrictMode auto-imposta."</string> <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_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> <string name="android_upgrading_starting_apps" msgid="451464516346926713">"A iniciar aplicações"</string> <string name="android_upgrading_complete" msgid="1405954754112999229">"A concluir o arranque."</string> @@ -1776,10 +1783,14 @@ <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Pedir palavra-passe antes de soltar"</string> <string name="battery_saver_description" msgid="2510530476513605742">"Para ajudar a melhorar a duração da bateria, a poupança de bateria reduz o desempenho do dispositivo e limita a vibração e a maior parte dos dados de segundo plano. O email, as mensagens e outras aplicações que dependem da sincronização não podem ser atualizados, exceto se os abrir.\n\nA poupança de bateria desliga-se automaticamente quando o dispositivo estiver a carregar."</string> <string name="downtime_condition_summary" msgid="8761776337475705749">"Até o período de inatividade terminar às <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> - <!-- no translation found for zen_mode_duration_minutes_summary:one (3177683545388923234) --> - <!-- no translation found for zen_mode_duration_minutes_summary:other (2787867221129368935) --> - <!-- no translation found for zen_mode_duration_hours_summary:one (597194865053253679) --> - <!-- no translation found for zen_mode_duration_hours_summary:other (2827214920627669898) --> + <plurals name="zen_mode_duration_minutes_summary"> + <item quantity="one" msgid="3177683545388923234">"Durante um minuto (até às <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2787867221129368935">"Durante %1$d minutos (até às <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> + <plurals name="zen_mode_duration_hours_summary"> + <item quantity="one" msgid="597194865053253679">"Durante uma hora (até às <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2827214920627669898">"Durante %1$d horas (até às <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> <plurals name="zen_mode_duration_minutes"> <item quantity="one" msgid="9040808414992812341">"Durante um minuto"</item> <item quantity="other" msgid="6924190729213550991">"Durante %d minutos"</item> @@ -1788,7 +1799,7 @@ <item quantity="one" msgid="3480040795582254384">"Durante uma hora"</item> <item quantity="other" msgid="5408537517529822157">"Durante %d horas"</item> </plurals> - <!-- no translation found for zen_mode_until (7336308492289875088) --> - <skip /> + <string name="zen_mode_until" msgid="7336308492289875088">"Até às <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_forever" msgid="4316804956488785559">"Indefinidamente"</string> + <string name="toolbar_collapse_description" msgid="2821479483960330739">"Reduzir"</string> </resources> diff --git a/core/res/res/values-pt/strings.xml b/core/res/res/values-pt/strings.xml index 3c0ab1ea6fa2..6c77afb5b4a6 100644 --- a/core/res/res/values-pt/strings.xml +++ b/core/res/res/values-pt/strings.xml @@ -716,8 +716,14 @@ <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"Permite que o app leia e grave o sistema de arquivos cache."</string> <string name="permlab_use_sip" msgid="2052499390128979920">"fazer/receber chamadas SIP"</string> <string name="permdesc_use_sip" msgid="2297804849860225257">"Permite que o app faça e receba chamadas SIP."</string> - <string name="permlab_register_provider" msgid="2654513709546459553">"registrar nova conexão de telecomunicações"</string> - <string name="permdesc_register_provider" msgid="7571533832018681544">"Permite que o app registre novas conexões de telecomunicações."</string> + <!-- no translation found for permlab_register_sim_subscription (3166535485877549177) --> + <skip /> + <!-- no translation found for permdesc_register_sim_subscription (2138909035926222911) --> + <skip /> + <!-- no translation found for permlab_register_call_provider (108102120289029841) --> + <skip /> + <!-- no translation found for permdesc_register_call_provider (7034310263521081388) --> + <skip /> <string name="permlab_connection_manager" msgid="1116193254522105375">"gerenciar conexões de telecomunicações"</string> <string name="permdesc_connection_manager" msgid="5925480810356483565">"Permite que o app gerencie conexões de telecomunicações."</string> <string name="permlab_bind_incall_service" msgid="6773648341975287125">"interagir com chamada na tela"</string> @@ -1233,6 +1239,8 @@ <string name="smv_application" msgid="3307209192155442829">"O app <xliff:g id="APPLICATION">%1$s</xliff:g>, processo <xliff:g id="PROCESS">%2$s</xliff:g>, violou a política StrictMode imposta automaticamente."</string> <string name="smv_process" msgid="5120397012047462446">"O processo <xliff:g id="PROCESS">%1$s</xliff:g> violou a política StrictMode imposta automaticamente."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"O Android está sendo atualizado..."</string> + <!-- no translation found for android_start_title (8418054686415318207) --> + <skip /> <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> <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Iniciando apps."</string> <string name="android_upgrading_complete" msgid="1405954754112999229">"Concluindo a inicialização."</string> @@ -1791,4 +1799,6 @@ <!-- no translation found for zen_mode_until (7336308492289875088) --> <skip /> <string name="zen_mode_forever" msgid="4316804956488785559">"Indefinidamente"</string> + <!-- no translation found for toolbar_collapse_description (2821479483960330739) --> + <skip /> </resources> diff --git a/core/res/res/values-ro/strings.xml b/core/res/res/values-ro/strings.xml index 6ae7f52bba49..a602257016d0 100644 --- a/core/res/res/values-ro/strings.xml +++ b/core/res/res/values-ro/strings.xml @@ -716,14 +716,16 @@ <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"Permite aplicaţiei să scrie şi să citească sistemul de fişiere cache."</string> <string name="permlab_use_sip" msgid="2052499390128979920">"efectuarea/primirea apelurilor SIP"</string> <string name="permdesc_use_sip" msgid="2297804849860225257">"Permite aplicației să efectueze și să primească apeluri SIP."</string> - <!-- no translation found for permlab_register_provider (2654513709546459553) --> + <!-- no translation found for permlab_register_sim_subscription (3166535485877549177) --> <skip /> - <!-- no translation found for permdesc_register_provider (7571533832018681544) --> + <!-- no translation found for permdesc_register_sim_subscription (2138909035926222911) --> <skip /> - <!-- no translation found for permlab_connection_manager (1116193254522105375) --> + <!-- no translation found for permlab_register_call_provider (108102120289029841) --> <skip /> - <!-- no translation found for permdesc_connection_manager (5925480810356483565) --> + <!-- no translation found for permdesc_register_call_provider (7034310263521081388) --> <skip /> + <string name="permlab_connection_manager" msgid="1116193254522105375">"gestionarea conexiunilor de telecomunicații"</string> + <string name="permdesc_connection_manager" msgid="5925480810356483565">"Permite aplicației să gestioneze conexiuni de telecomunicații."</string> <string name="permlab_bind_incall_service" msgid="6773648341975287125">"interacțiune cu ecranul în timpul unui apel"</string> <string name="permdesc_bind_incall_service" msgid="8343471381323215005">"Permite aplicației să controleze când și cum vede utilizatorul ecranul în timpul unui apel."</string> <string name="permlab_bind_connection_service" msgid="3557341439297014940">"să interacționeze cu servicii de telefonie"</string> @@ -1237,6 +1239,7 @@ <string name="smv_application" msgid="3307209192155442829">"Aplicaţia <xliff:g id="APPLICATION">%1$s</xliff:g> (procesul <xliff:g id="PROCESS">%2$s</xliff:g>) a încălcat propria politică StrictMode."</string> <string name="smv_process" msgid="5120397012047462446">"Procesul <xliff:g id="PROCESS">%1$s</xliff:g> a încălcat propria politică StrictMode."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Android trece la o vers. superioară..."</string> + <string name="android_start_title" msgid="8418054686415318207">"Android pornește..."</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> <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Se pornesc aplicaţiile."</string> <string name="android_upgrading_complete" msgid="1405954754112999229">"Se finalizează pornirea."</string> @@ -1780,10 +1783,14 @@ <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Solicită parola înainte de a anula fixarea"</string> <string name="battery_saver_description" msgid="2510530476513605742">"Pentru a ajuta la îmbunătățirea duratei bateriei, modul Economisirea bateriei reduce performanțele dispozitivului și limitează vibrațiile și majoritatea datelor de fundal. Mesajele prin e-mail și alte aplicații care se bazează pe sincronizare nu se vor actualiza dacă nu le deschideți.\n\nEconomisirea baterie se dezactivează automat când dispozitivul se încarcă."</string> <string name="downtime_condition_summary" msgid="8761776337475705749">"Până când inactivitatea dvs. se încheie la <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> - <!-- no translation found for zen_mode_duration_minutes_summary:one (3177683545388923234) --> - <!-- no translation found for zen_mode_duration_minutes_summary:other (2787867221129368935) --> - <!-- no translation found for zen_mode_duration_hours_summary:one (597194865053253679) --> - <!-- no translation found for zen_mode_duration_hours_summary:other (2827214920627669898) --> + <plurals name="zen_mode_duration_minutes_summary"> + <item quantity="one" msgid="3177683545388923234">"Timp de un minut (până la <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2787867221129368935">"Timp de %1$d (de) minute (până la <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> + <plurals name="zen_mode_duration_hours_summary"> + <item quantity="one" msgid="597194865053253679">"Timp de o oră (până la <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2827214920627669898">"Timp de %1$d (de) ore (până la <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> <plurals name="zen_mode_duration_minutes"> <item quantity="one" msgid="9040808414992812341">"Timp de un minut"</item> <item quantity="other" msgid="6924190729213550991">"Timp de %d (de) minute"</item> @@ -1792,7 +1799,7 @@ <item quantity="one" msgid="3480040795582254384">"Timp de o oră"</item> <item quantity="other" msgid="5408537517529822157">"Timp de %d (de) ore"</item> </plurals> - <!-- no translation found for zen_mode_until (7336308492289875088) --> - <skip /> + <string name="zen_mode_until" msgid="7336308492289875088">"Până la <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_forever" msgid="4316804956488785559">"Nedefinit"</string> + <string name="toolbar_collapse_description" msgid="2821479483960330739">"Restrângeți"</string> </resources> diff --git a/core/res/res/values-ru/strings.xml b/core/res/res/values-ru/strings.xml index c12a0c8f6638..3f67e8fd9ccd 100644 --- a/core/res/res/values-ru/strings.xml +++ b/core/res/res/values-ru/strings.xml @@ -716,8 +716,14 @@ <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"Приложение сможет выполнять чтение и запись в файловую систему кеша."</string> <string name="permlab_use_sip" msgid="2052499390128979920">"Входящие и исходящие вызовы SIP"</string> <string name="permdesc_use_sip" msgid="2297804849860225257">"Разрешить вызовы по протоколу SIP."</string> - <string name="permlab_register_provider" msgid="2654513709546459553">"регистрация подключений"</string> - <string name="permdesc_register_provider" msgid="7571533832018681544">"Регистрация новых сетевых подключений."</string> + <!-- no translation found for permlab_register_sim_subscription (3166535485877549177) --> + <skip /> + <!-- no translation found for permdesc_register_sim_subscription (2138909035926222911) --> + <skip /> + <!-- no translation found for permlab_register_call_provider (108102120289029841) --> + <skip /> + <!-- no translation found for permdesc_register_call_provider (7034310263521081388) --> + <skip /> <string name="permlab_connection_manager" msgid="1116193254522105375">"управление подключениями"</string> <string name="permdesc_connection_manager" msgid="5925480810356483565">"Управление сетевыми подключениями."</string> <string name="permlab_bind_incall_service" msgid="6773648341975287125">"Управление экраном во время разговора"</string> @@ -1233,6 +1239,7 @@ <string name="smv_application" msgid="3307209192155442829">"Приложение \"<xliff:g id="APPLICATION">%1$s</xliff:g>\" (процесс: <xliff:g id="PROCESS">%2$s</xliff:g>) нарушило собственную политику StrictMode."</string> <string name="smv_process" msgid="5120397012047462446">"Процесс <xliff:g id="PROCESS">%1$s</xliff:g> нарушил собственную политику StrictMode."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Обновление Android..."</string> + <string name="android_start_title" msgid="8418054686415318207">"Запуск Android…"</string> <string name="android_upgrading_apk" msgid="7904042682111526169">"Оптимизация приложения <xliff:g id="NUMBER_0">%1$d</xliff:g> из <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Запуск приложений."</string> <string name="android_upgrading_complete" msgid="1405954754112999229">"Окончание загрузки..."</string> @@ -1776,10 +1783,14 @@ <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Запрашивать пароль для отключения блокировки"</string> <string name="battery_saver_description" msgid="2510530476513605742">"Чтобы продлить время работы устройства от батареи, в режиме энергосбережения снижается производительность, а также ограничивается использование вибросигнала и фоновой передачи данных. Данные, требующие синхронизации, могут обновляться только когда вы откроете приложение.\n\nРежим энергосбережения автоматически отключается во время зарядки устройства."</string> <string name="downtime_condition_summary" msgid="8761776337475705749">"До отключения режима (в <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>)"</string> - <!-- no translation found for zen_mode_duration_minutes_summary:one (3177683545388923234) --> - <!-- no translation found for zen_mode_duration_minutes_summary:other (2787867221129368935) --> - <!-- no translation found for zen_mode_duration_hours_summary:one (597194865053253679) --> - <!-- no translation found for zen_mode_duration_hours_summary:other (2827214920627669898) --> + <plurals name="zen_mode_duration_minutes_summary"> + <item quantity="one" msgid="3177683545388923234">"На 1 мин. (до <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2787867221129368935">"На %1$d мин. (до <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> + <plurals name="zen_mode_duration_hours_summary"> + <item quantity="one" msgid="597194865053253679">"На 1 ч. (до <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2827214920627669898">"На %1$d ч. (до <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> <plurals name="zen_mode_duration_minutes"> <item quantity="one" msgid="9040808414992812341">"1 мин."</item> <item quantity="other" msgid="6924190729213550991">"%d мин."</item> @@ -1788,7 +1799,7 @@ <item quantity="one" msgid="3480040795582254384">"1 ч."</item> <item quantity="other" msgid="5408537517529822157">"%d ч."</item> </plurals> - <!-- no translation found for zen_mode_until (7336308492289875088) --> - <skip /> + <string name="zen_mode_until" msgid="7336308492289875088">"До <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_forever" msgid="4316804956488785559">"Бессрочно"</string> + <string name="toolbar_collapse_description" msgid="2821479483960330739">"Свернуть"</string> </resources> diff --git a/core/res/res/values-si-rLK/strings.xml b/core/res/res/values-si-rLK/strings.xml index b8042f7e7d12..75347d517ab2 100644 --- a/core/res/res/values-si-rLK/strings.xml +++ b/core/res/res/values-si-rLK/strings.xml @@ -716,14 +716,16 @@ <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"හැඹිලි ගොනු පද්ධති කියවීමට සහ ලිවීමට යෙදුමට අවසර දෙන්න."</string> <string name="permlab_use_sip" msgid="2052499390128979920">"SIP ඇමතුම් සිදුකිරීමට/ලබාගැනීමට"</string> <string name="permdesc_use_sip" msgid="2297804849860225257">"SIP ඇමතුම් සිදුකිරීමට සහ ලබාගැනීමට යෙදුමට ඉඩ දෙන්න."</string> - <!-- no translation found for permlab_register_provider (2654513709546459553) --> + <!-- no translation found for permlab_register_sim_subscription (3166535485877549177) --> <skip /> - <!-- no translation found for permdesc_register_provider (7571533832018681544) --> + <!-- no translation found for permdesc_register_sim_subscription (2138909035926222911) --> <skip /> - <!-- no translation found for permlab_connection_manager (1116193254522105375) --> + <!-- no translation found for permlab_register_call_provider (108102120289029841) --> <skip /> - <!-- no translation found for permdesc_connection_manager (5925480810356483565) --> + <!-- no translation found for permdesc_register_call_provider (7034310263521081388) --> <skip /> + <string name="permlab_connection_manager" msgid="1116193254522105375">"විදුලි සංදේශන සම්බන්ධතා කළමණාකරණය කරන්න"</string> + <string name="permdesc_connection_manager" msgid="5925480810356483565">"විදුලි සංදේශන සම්බන්ධතා කළමණාකරණය කිරීමට යෙදුමට ඉඩ දෙන්න."</string> <string name="permlab_bind_incall_service" msgid="6773648341975287125">"ලැබෙන ඇමතුම් තිරය සමග අන්තර් ක්රියාකාරී වන්න"</string> <string name="permdesc_bind_incall_service" msgid="8343471381323215005">"ලැබෙන ඇමතුම් තිරය පරිශීලකයාට පෙනෙන්නේ කෙදිනද සහ කෙසේද යැයි පාලනය කිරීමට යෙදුමට අවසර දෙන්න."</string> <string name="permlab_bind_connection_service" msgid="3557341439297014940">"දුරකථන සේවාවන් සමඟ සම්බන්ධ වීම"</string> @@ -1239,6 +1241,7 @@ <string name="smv_application" msgid="3307209192155442829">"<xliff:g id="APPLICATION">%1$s</xliff:g> යෙදුම (<xliff:g id="PROCESS">%2$s</xliff:g> ක්රියාවලිය) එහි StrictMode කොන්දේසිය උල්ලංඝනය කර ඇත."</string> <string name="smv_process" msgid="5120397012047462446">"<xliff:g id="PROCESS">%1$s</xliff:g> ක්රියාවලිය එහි StrictMode කොන්දේසිය උල්ලංඝනය කර ඇත."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Android උත්ශ්රේණි වෙමින් පවතී..."</string> + <string name="android_start_title" msgid="8418054686415318207">"Android ආරම්භ කරමින්…"</string> <string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_1">%2$d</xliff:g> කින් <xliff:g id="NUMBER_0">%1$d</xliff:g> වැනි යෙදුම ප්රශස්ත කරමින්."</string> <string name="android_upgrading_starting_apps" msgid="451464516346926713">"යෙදුම් ආරම්භ කරමින්."</string> <string name="android_upgrading_complete" msgid="1405954754112999229">"ඇරඹුම අවසාන කරමින්."</string> @@ -1782,10 +1785,14 @@ <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"ගැලවීමට පෙර මුරපදය විමසන්න"</string> <string name="battery_saver_description" msgid="2510530476513605742">"බැටරියේ ජීව කාලය දියුණු කිරීමට උදව් කිරීමට, ඔබගේ උපාංගයේ ක්රියාකාරිත්වය සහ සීමා කළ කම්පනයන් සහ බොහොමයක් පසුබිම් දත්ත බැටරි සුරැකීමෙන් අඩු කරයි. සමමුහුර්ත කිරීම බලාපොරොත්තු වෙන ඊ-තැපෑල, පණිවිඩ යැවීම සහ වෙනත් යෙදුම් යාවත්කාලීන වන්නේ ඔබ ඒවා විවෘත කළ විට පමණි.\n\nඔබගේ උපාංගය ආරෝපණය වන විට බැටරි සුරැකීම ස්වයංක්රීයව අක්රිය වේ."</string> <string name="downtime_condition_summary" msgid="8761776337475705749">"ඔබගේ බිඳවැටුම් වේලාව <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> දී අවසන්වන තුරු"</string> - <!-- no translation found for zen_mode_duration_minutes_summary:one (3177683545388923234) --> - <!-- no translation found for zen_mode_duration_minutes_summary:other (2787867221129368935) --> - <!-- no translation found for zen_mode_duration_hours_summary:one (597194865053253679) --> - <!-- no translation found for zen_mode_duration_hours_summary:other (2827214920627669898) --> + <plurals name="zen_mode_duration_minutes_summary"> + <item quantity="one" msgid="3177683545388923234">"මිනිත්තු එකක් සඳහා (<xliff:g id="FORMATTEDTIME">%2$s</xliff:g> තෙක්)"</item> + <item quantity="other" msgid="2787867221129368935">"මිනිත්තු %1$d සඳහා (<xliff:g id="FORMATTEDTIME">%2$s</xliff:g> තෙක්)"</item> + </plurals> + <plurals name="zen_mode_duration_hours_summary"> + <item quantity="one" msgid="597194865053253679">"පැය එකක් සඳහා (<xliff:g id="FORMATTEDTIME">%2$s</xliff:g> තෙක්)"</item> + <item quantity="other" msgid="2827214920627669898">"පැය %1$d සඳහා (<xliff:g id="FORMATTEDTIME">%2$s</xliff:g> තෙක්)"</item> + </plurals> <plurals name="zen_mode_duration_minutes"> <item quantity="one" msgid="9040808414992812341">"විනාඩි එකක් සඳහා"</item> <item quantity="other" msgid="6924190729213550991">"විනාඩි %d සඳහා"</item> @@ -1794,7 +1801,7 @@ <item quantity="one" msgid="3480040795582254384">"පැයක් සඳහා"</item> <item quantity="other" msgid="5408537517529822157">"පැය %d ක් සඳහා"</item> </plurals> - <!-- no translation found for zen_mode_until (7336308492289875088) --> - <skip /> + <string name="zen_mode_until" msgid="7336308492289875088">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> තෙක්"</string> <string name="zen_mode_forever" msgid="4316804956488785559">"අනියත ආකාරයට"</string> + <string name="toolbar_collapse_description" msgid="2821479483960330739">"හකුළන්න"</string> </resources> diff --git a/core/res/res/values-sk/strings.xml b/core/res/res/values-sk/strings.xml index 2ac1c56632e3..5567ccdd07f3 100644 --- a/core/res/res/values-sk/strings.xml +++ b/core/res/res/values-sk/strings.xml @@ -716,8 +716,14 @@ <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"Umožňuje aplikácii čítať a zapisovať do súborového systému vyrovnávacej pamäte."</string> <string name="permlab_use_sip" msgid="2052499390128979920">"uskutočňovanie/príjem hovorov SIP"</string> <string name="permdesc_use_sip" msgid="2297804849860225257">"Umožňuje aplikácii uskutočňovať a prijímať hovory SIP."</string> - <string name="permlab_register_provider" msgid="2654513709546459553">"registrácia nových pripojení telefonických sietí"</string> - <string name="permdesc_register_provider" msgid="7571533832018681544">"Povoľuje aplikácii registrovať nové pripojenia telekomunikačnej siete."</string> + <!-- no translation found for permlab_register_sim_subscription (3166535485877549177) --> + <skip /> + <!-- no translation found for permdesc_register_sim_subscription (2138909035926222911) --> + <skip /> + <!-- no translation found for permlab_register_call_provider (108102120289029841) --> + <skip /> + <!-- no translation found for permdesc_register_call_provider (7034310263521081388) --> + <skip /> <string name="permlab_connection_manager" msgid="1116193254522105375">"správa pripojení telefonických sietí"</string> <string name="permdesc_connection_manager" msgid="5925480810356483565">"Povoľuje aplikácii spravovať pripojenia telekomunikačnej siete."</string> <string name="permlab_bind_incall_service" msgid="6773648341975287125">"interakcia s obrazovkou hovoru"</string> @@ -1233,6 +1239,7 @@ <string name="smv_application" msgid="3307209192155442829">"Aplikácia <xliff:g id="APPLICATION">%1$s</xliff:g> (proces <xliff:g id="PROCESS">%2$s</xliff:g>) porušila svoje vlastné vynútené pravidlá StrictMode."</string> <string name="smv_process" msgid="5120397012047462446">"Proces <xliff:g id="PROCESS">%1$s</xliff:g> porušil svoje vlastné vynútené pravidlá StrictMode."</string> <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_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> <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Prebieha spúšťanie aplikácií."</string> <string name="android_upgrading_complete" msgid="1405954754112999229">"Prebieha dokončovanie spúšťania."</string> @@ -1776,10 +1783,14 @@ <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Pred uvoľnením požiadať o heslo"</string> <string name="battery_saver_description" msgid="2510530476513605742">"Na predĺženie výdrže batérie šetrič batérie znižuje výkonnosť zariadenia a obmedzuje vibrácie a prenos údajov na pozadí. E-mail, správy a ďalšie aplikácie, ktoré používajú synchronizáciu, sa možno nebudú aktualizovať, dokiaľ ich neotvoríte.\n\nPri nabíjaní zariadenia sa šetrič batérie automaticky vypne."</string> <string name="downtime_condition_summary" msgid="8761776337475705749">"Dokým o <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> neskončí výpadok"</string> - <!-- no translation found for zen_mode_duration_minutes_summary:one (3177683545388923234) --> - <!-- no translation found for zen_mode_duration_minutes_summary:other (2787867221129368935) --> - <!-- no translation found for zen_mode_duration_hours_summary:one (597194865053253679) --> - <!-- no translation found for zen_mode_duration_hours_summary:other (2827214920627669898) --> + <plurals name="zen_mode_duration_minutes_summary"> + <item quantity="one" msgid="3177683545388923234">"Na minútu (do <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2787867221129368935">"Na %1$d min. (do <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> + <plurals name="zen_mode_duration_hours_summary"> + <item quantity="one" msgid="597194865053253679">"Na hodinu (do <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2827214920627669898">"Na %1$d hod. (do <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> <plurals name="zen_mode_duration_minutes"> <item quantity="one" msgid="9040808414992812341">"Na jednu minútu"</item> <item quantity="other" msgid="6924190729213550991">"Na %d min"</item> @@ -1788,7 +1799,7 @@ <item quantity="one" msgid="3480040795582254384">"Na 1 h"</item> <item quantity="other" msgid="5408537517529822157">"Na %d h"</item> </plurals> - <!-- no translation found for zen_mode_until (7336308492289875088) --> - <skip /> + <string name="zen_mode_until" msgid="7336308492289875088">"Do <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_forever" msgid="4316804956488785559">"Natrvalo"</string> + <string name="toolbar_collapse_description" msgid="2821479483960330739">"Zbaliť"</string> </resources> diff --git a/core/res/res/values-sl/strings.xml b/core/res/res/values-sl/strings.xml index fc7d93e045ee..0af255734a95 100644 --- a/core/res/res/values-sl/strings.xml +++ b/core/res/res/values-sl/strings.xml @@ -716,8 +716,14 @@ <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"Aplikaciji omogoča branje in pisanje v datotečni sistem predpomnilnika."</string> <string name="permlab_use_sip" msgid="2052499390128979920">"opravljanje/sprejemanje klicev SIP"</string> <string name="permdesc_use_sip" msgid="2297804849860225257">"Aplikaciji omogoča opravljanje in sprejemanje klicev SIP."</string> - <string name="permlab_register_provider" msgid="2654513709546459553">"registriranje nove telekomunikacijske povezave"</string> - <string name="permdesc_register_provider" msgid="7571533832018681544">"Aplikaciji omogoča registriranje novih telekomunikacijskih povezav."</string> + <!-- no translation found for permlab_register_sim_subscription (3166535485877549177) --> + <skip /> + <!-- no translation found for permdesc_register_sim_subscription (2138909035926222911) --> + <skip /> + <!-- no translation found for permlab_register_call_provider (108102120289029841) --> + <skip /> + <!-- no translation found for permdesc_register_call_provider (7034310263521081388) --> + <skip /> <string name="permlab_connection_manager" msgid="1116193254522105375">"upravljanje telekomunikacijskih povezav"</string> <string name="permdesc_connection_manager" msgid="5925480810356483565">"Aplikaciji omogoča upravljanje telekomunikacijskih povezav."</string> <string name="permlab_bind_incall_service" msgid="6773648341975287125">"interakcija z zaslonom pri klicu"</string> @@ -1233,6 +1239,7 @@ <string name="smv_application" msgid="3307209192155442829">"Aplikacija <xliff:g id="APPLICATION">%1$s</xliff:g> (proces <xliff:g id="PROCESS">%2$s</xliff:g>) krši svoj samouveljavljiv pravilnik o strogem načinu."</string> <string name="smv_process" msgid="5120397012047462446">"Proces <xliff:g id="PROCESS">%1$s</xliff:g> krši svoj samoizvedljivi pravilnik o strogem načinu."</string> <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_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> <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Zagon aplikacij."</string> <string name="android_upgrading_complete" msgid="1405954754112999229">"Dokončevanje zagona."</string> @@ -1776,10 +1783,14 @@ <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Pred odpenjanjem vprašaj za geslo"</string> <string name="battery_saver_description" msgid="2510530476513605742">"Varčevanje z energijo akumulatorja poveča čas delovanja akumulatorja, tako da zmanjša zmogljivost delovanja naprave in omeji vibriranje ter prenos večine podatkov v ozadju. Aplikacije za e-pošto, sporočanje in drugo, ki uporabljajo sinhroniziranje, se morda ne posodabljajo, razen če jih odprete.\n\nVarčevanje z energijo se samodejno izklopi med polnjenjem akumulatorja naprave."</string> <string name="downtime_condition_summary" msgid="8761776337475705749">"Do konca prekinitve delovanja ob <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> - <!-- no translation found for zen_mode_duration_minutes_summary:one (3177683545388923234) --> - <!-- no translation found for zen_mode_duration_minutes_summary:other (2787867221129368935) --> - <!-- no translation found for zen_mode_duration_hours_summary:one (597194865053253679) --> - <!-- no translation found for zen_mode_duration_hours_summary:other (2827214920627669898) --> + <plurals name="zen_mode_duration_minutes_summary"> + <item quantity="one" msgid="3177683545388923234">"Eno minuto (do <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2787867221129368935">"Toliko minut: %1$d (do <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> + <plurals name="zen_mode_duration_hours_summary"> + <item quantity="one" msgid="597194865053253679">"Eno uro (do <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2827214920627669898">"Toliko ur: %1$d (do <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> <plurals name="zen_mode_duration_minutes"> <item quantity="one" msgid="9040808414992812341">"Za eno minuto"</item> <item quantity="other" msgid="6924190729213550991">"Za %d min"</item> @@ -1788,7 +1799,7 @@ <item quantity="one" msgid="3480040795582254384">"Za eno uro"</item> <item quantity="other" msgid="5408537517529822157">"Za %d h"</item> </plurals> - <!-- no translation found for zen_mode_until (7336308492289875088) --> - <skip /> + <string name="zen_mode_until" msgid="7336308492289875088">"Do <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_forever" msgid="4316804956488785559">"Za nedoločen čas"</string> + <string name="toolbar_collapse_description" msgid="2821479483960330739">"Strni"</string> </resources> diff --git a/core/res/res/values-sr/strings.xml b/core/res/res/values-sr/strings.xml index 4b44223fb0a2..801d3cc19140 100644 --- a/core/res/res/values-sr/strings.xml +++ b/core/res/res/values-sr/strings.xml @@ -716,8 +716,14 @@ <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"Дозвољава апликацији да чита систем датотека кеша и уписује податке у њега."</string> <string name="permlab_use_sip" msgid="2052499390128979920">"упућивање/пријем SIP позива"</string> <string name="permdesc_use_sip" msgid="2297804849860225257">"Омогућава апликацији да упућује и прима SIP позиве."</string> - <string name="permlab_register_provider" msgid="2654513709546459553">"регистровање нових веза са телекомуникационим мрежама"</string> - <string name="permdesc_register_provider" msgid="7571533832018681544">"Дозвољава апликацији да региструје нове везе са телекомуникационим мрежама."</string> + <!-- no translation found for permlab_register_sim_subscription (3166535485877549177) --> + <skip /> + <!-- no translation found for permdesc_register_sim_subscription (2138909035926222911) --> + <skip /> + <!-- no translation found for permlab_register_call_provider (108102120289029841) --> + <skip /> + <!-- no translation found for permdesc_register_call_provider (7034310263521081388) --> + <skip /> <string name="permlab_connection_manager" msgid="1116193254522105375">"управљање везама са телекомуникационим мрежама"</string> <string name="permdesc_connection_manager" msgid="5925480810356483565">"Дозвољава апликацији да управља везама са телекомуникационим мрежама."</string> <string name="permlab_bind_incall_service" msgid="6773648341975287125">"комуницирај са екраном током позива"</string> @@ -1233,6 +1239,7 @@ <string name="smv_application" msgid="3307209192155442829">"Апликација <xliff:g id="APPLICATION">%1$s</xliff:g> (процес <xliff:g id="PROCESS">%2$s</xliff:g>) је прекршила самонаметнуте StrictMode смернице."</string> <string name="smv_process" msgid="5120397012047462446">"Процес <xliff:g id="PROCESS">%1$s</xliff:g> је прекршио самонаметнуте StrictMode смернице."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Android се надограђује…"</string> + <string name="android_start_title" msgid="8418054686415318207">"Android се покреће…"</string> <string name="android_upgrading_apk" msgid="7904042682111526169">"Оптимизовање апликације <xliff:g id="NUMBER_0">%1$d</xliff:g> од <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Покретање апликација."</string> <string name="android_upgrading_complete" msgid="1405954754112999229">"Завршавање покретања."</string> @@ -1776,10 +1783,14 @@ <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Тражи лозинку пре откачињања"</string> <string name="battery_saver_description" msgid="2510530476513605742">"Да би смањила потрошњу батерије, Штедња батерије снижава перформансе уређаја, ограничава вибрацију и већину позадинских података. Имејл, размена порука и друге апликације које се ослањају на синхронизацију се можда неће ажурирати ако их не отворите.\n\nШтедња батерије се аутоматски искључује када се уређај пуни."</string> <string name="downtime_condition_summary" msgid="8761776337475705749">"Док се прекид рада не заврши у <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> - <!-- no translation found for zen_mode_duration_minutes_summary:one (3177683545388923234) --> - <!-- no translation found for zen_mode_duration_minutes_summary:other (2787867221129368935) --> - <!-- no translation found for zen_mode_duration_hours_summary:one (597194865053253679) --> - <!-- no translation found for zen_mode_duration_hours_summary:other (2827214920627669898) --> + <plurals name="zen_mode_duration_minutes_summary"> + <item quantity="one" msgid="3177683545388923234">"Један минут (до <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2787867221129368935">"%1$d минута (до <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> + <plurals name="zen_mode_duration_hours_summary"> + <item quantity="one" msgid="597194865053253679">"Један сат (до <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2827214920627669898">"%1$d сата(и) (до <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> <plurals name="zen_mode_duration_minutes"> <item quantity="one" msgid="9040808414992812341">"Један минут"</item> <item quantity="other" msgid="6924190729213550991">"%d мин"</item> @@ -1788,7 +1799,7 @@ <item quantity="one" msgid="3480040795582254384">"Један сат"</item> <item quantity="other" msgid="5408537517529822157">"%d с"</item> </plurals> - <!-- no translation found for zen_mode_until (7336308492289875088) --> - <skip /> + <string name="zen_mode_until" msgid="7336308492289875088">"До <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_forever" msgid="4316804956488785559">"Бесконачно"</string> + <string name="toolbar_collapse_description" msgid="2821479483960330739">"Скупи"</string> </resources> diff --git a/core/res/res/values-sv/strings.xml b/core/res/res/values-sv/strings.xml index 90085291c8e3..7c63a4febcc7 100644 --- a/core/res/res/values-sv/strings.xml +++ b/core/res/res/values-sv/strings.xml @@ -716,8 +716,14 @@ <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"Tillåter att appen läser och skriver till cachefilsystemet."</string> <string name="permlab_use_sip" msgid="2052499390128979920">"gör/ta emot SIP-anrop"</string> <string name="permdesc_use_sip" msgid="2297804849860225257">"Tillåter att appen gör och tar emot SIP-anrop."</string> - <string name="permlab_register_provider" msgid="2654513709546459553">"registrera ny telekommunikationsanslutning"</string> - <string name="permdesc_register_provider" msgid="7571533832018681544">"Tillåter att appen registrerar nya telekommunikationsanslutningar."</string> + <!-- no translation found for permlab_register_sim_subscription (3166535485877549177) --> + <skip /> + <!-- no translation found for permdesc_register_sim_subscription (2138909035926222911) --> + <skip /> + <!-- no translation found for permlab_register_call_provider (108102120289029841) --> + <skip /> + <!-- no translation found for permdesc_register_call_provider (7034310263521081388) --> + <skip /> <string name="permlab_connection_manager" msgid="1116193254522105375">"hantera telekommunikationsanslutningar"</string> <string name="permdesc_connection_manager" msgid="5925480810356483565">"Tillåter att appen hanterar telekommunikationsanslutningar."</string> <string name="permlab_bind_incall_service" msgid="6773648341975287125">"interagera med skärmen för inkommande samtal"</string> @@ -1233,6 +1239,7 @@ <string name="smv_application" msgid="3307209192155442829">"Appen <xliff:g id="APPLICATION">%1$s</xliff:g> (processen <xliff:g id="PROCESS">%2$s</xliff:g>) har brutit mot sin egen StrictMode-policy."</string> <string name="smv_process" msgid="5120397012047462446">"Processen <xliff:g id="PROCESS">%1$s</xliff:g> har brutit mot sin egen StrictMode-policy."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Android uppgraderas ..."</string> + <string name="android_start_title" msgid="8418054686415318207">"Android startar …"</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> <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Appar startas."</string> <string name="android_upgrading_complete" msgid="1405954754112999229">"Uppgraderingen är klar."</string> @@ -1776,10 +1783,14 @@ <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Be om lösenord innan skärmen slutar fästas"</string> <string name="battery_saver_description" msgid="2510530476513605742">"I batterisparläget reduceras enhetens prestanda så att batteriet ska räcka längre, och vibration samt den mesta användningen av bakgrundsdata begränsas. Det kan hända att appar för e-post, sms och annat som kräver synkronisering inte uppdateras förrän du öppnar dem.\n\nBatterisparläget inaktiveras automatiskt när enheten laddas."</string> <string name="downtime_condition_summary" msgid="8761776337475705749">"Tills avbrottstiden är slut <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> - <!-- no translation found for zen_mode_duration_minutes_summary:one (3177683545388923234) --> - <!-- no translation found for zen_mode_duration_minutes_summary:other (2787867221129368935) --> - <!-- no translation found for zen_mode_duration_hours_summary:one (597194865053253679) --> - <!-- no translation found for zen_mode_duration_hours_summary:other (2827214920627669898) --> + <plurals name="zen_mode_duration_minutes_summary"> + <item quantity="one" msgid="3177683545388923234">"I en minut (till kl. <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2787867221129368935">"I %1$d minuter (till kl. <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> + <plurals name="zen_mode_duration_hours_summary"> + <item quantity="one" msgid="597194865053253679">"I en timme (till kl. <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2827214920627669898">"I %1$d timmar (till kl. <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> <plurals name="zen_mode_duration_minutes"> <item quantity="one" msgid="9040808414992812341">"I en minut"</item> <item quantity="other" msgid="6924190729213550991">"I %d minuter"</item> @@ -1788,7 +1799,7 @@ <item quantity="one" msgid="3480040795582254384">"I en timme"</item> <item quantity="other" msgid="5408537517529822157">"I %d timmar"</item> </plurals> - <!-- no translation found for zen_mode_until (7336308492289875088) --> - <skip /> + <string name="zen_mode_until" msgid="7336308492289875088">"Till kl. <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_forever" msgid="4316804956488785559">"För alltid"</string> + <string name="toolbar_collapse_description" msgid="2821479483960330739">"Komprimera"</string> </resources> diff --git a/core/res/res/values-sw/strings.xml b/core/res/res/values-sw/strings.xml index 785f2ff1be52..3bf04661b240 100644 --- a/core/res/res/values-sw/strings.xml +++ b/core/res/res/values-sw/strings.xml @@ -716,8 +716,14 @@ <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"Huruhusu programu kusoma na kuandika mfumo wa faili wa akiba."</string> <string name="permlab_use_sip" msgid="2052499390128979920">"piga/pokea simu za SIP"</string> <string name="permdesc_use_sip" msgid="2297804849860225257">"Ruhusu programu ipige na kupokea simu za SIP."</string> - <string name="permlab_register_provider" msgid="2654513709546459553">"sajili muunganisho mpya wa mawasiliano ya simu"</string> - <string name="permdesc_register_provider" msgid="7571533832018681544">"Huruhusu programu kuandikisha miunganisho mipya ya mawasiliano ya simu."</string> + <!-- no translation found for permlab_register_sim_subscription (3166535485877549177) --> + <skip /> + <!-- no translation found for permdesc_register_sim_subscription (2138909035926222911) --> + <skip /> + <!-- no translation found for permlab_register_call_provider (108102120289029841) --> + <skip /> + <!-- no translation found for permdesc_register_call_provider (7034310263521081388) --> + <skip /> <string name="permlab_connection_manager" msgid="1116193254522105375">"dhibiti miunganisho ya mawasiliano ya simu"</string> <string name="permdesc_connection_manager" msgid="5925480810356483565">"Huruhusu programu kudhibiti miunganisho ya mawasiliano ya simu."</string> <string name="permlab_bind_incall_service" msgid="6773648341975287125">"wezesha mwingiliano na skrini ya simu inayoingia"</string> @@ -1233,6 +1239,7 @@ <string name="smv_application" msgid="3307209192155442829">"Programu <xliff:g id="APPLICATION">%1$s</xliff:g> (utaratibu <xliff:g id="PROCESS">%2$s</xliff:g>) imeenda kinyume na sera yake ya StrictMode."</string> <string name="smv_process" msgid="5120397012047462446">"Shughuli ya <xliff:g id="PROCESS">%1$s</xliff:g> imeenda kinyume na kulazimisha sera yake ya StrictMode."</string> <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_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> <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Programu zinaanza"</string> <string name="android_upgrading_complete" msgid="1405954754112999229">"Inamaliza kuwasha."</string> @@ -1776,10 +1783,14 @@ <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Omba nenosiri kabla hujabandua"</string> <string name="battery_saver_description" msgid="2510530476513605742">"Ili kusaidia kuokoa muda wa matumizi wa betri, kiokoa betri hupunguza utendaji wa kifaa chako na kuzuia kutetema na data nyingi ya chinichini. Barua pepe, kutuma ujumbe na programu zingine zinazotegemea usawazishaji huenda hazitasasisha usipozifungua.\n\nKiokoa betri hujizima kiotomatiki kifaa chako kikianza kuchajiwa."</string> <string name="downtime_condition_summary" msgid="8761776337475705749">"Hadi <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> wakati wa kutotenda kazi kwa kifaa chako unapoisha"</string> - <!-- no translation found for zen_mode_duration_minutes_summary:one (3177683545388923234) --> - <!-- no translation found for zen_mode_duration_minutes_summary:other (2787867221129368935) --> - <!-- no translation found for zen_mode_duration_hours_summary:one (597194865053253679) --> - <!-- no translation found for zen_mode_duration_hours_summary:other (2827214920627669898) --> + <plurals name="zen_mode_duration_minutes_summary"> + <item quantity="one" msgid="3177683545388923234">"Kwa dakika moja (hadi <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2787867221129368935">"Kwa dakika %1$d (hadi <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> + <plurals name="zen_mode_duration_hours_summary"> + <item quantity="one" msgid="597194865053253679">"Kwa saa moja (hadi <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2827214920627669898">"Kwa saa %1$d (hadi <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> <plurals name="zen_mode_duration_minutes"> <item quantity="one" msgid="9040808414992812341">"Kwa dakika moja"</item> <item quantity="other" msgid="6924190729213550991">"Kwa dakika %d"</item> @@ -1788,7 +1799,7 @@ <item quantity="one" msgid="3480040795582254384">"Kwa saa moja"</item> <item quantity="other" msgid="5408537517529822157">"Kwa saa %d"</item> </plurals> - <!-- no translation found for zen_mode_until (7336308492289875088) --> - <skip /> + <string name="zen_mode_until" msgid="7336308492289875088">"Hadi <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_forever" msgid="4316804956488785559">"Bila kikomo"</string> + <string name="toolbar_collapse_description" msgid="2821479483960330739">"Kunja"</string> </resources> diff --git a/core/res/res/values-ta-rIN/strings.xml b/core/res/res/values-ta-rIN/strings.xml index 8bec63ad05ba..13067127d983 100644 --- a/core/res/res/values-ta-rIN/strings.xml +++ b/core/res/res/values-ta-rIN/strings.xml @@ -716,8 +716,14 @@ <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"தற்காலிகச் சேமிப்பு கோப்பு அமைப்பைப் படிக்க மற்றும் எழுத, பயன்பாட்டை அனுமதிக்கிறது."</string> <string name="permlab_use_sip" msgid="2052499390128979920">"SIP அழைப்புகளைச் செய்தல்/பெறுதல்"</string> <string name="permdesc_use_sip" msgid="2297804849860225257">"SIP அழைப்புகளைச் செய்ய/பெற, பயன்பாட்டை அனுமதிக்கிறது."</string> - <string name="permlab_register_provider" msgid="2654513709546459553">"புதிய தொலைத்தொடர்பு இணைப்பைப் பதிவுசெய்"</string> - <string name="permdesc_register_provider" msgid="7571533832018681544">"புதிய தொலைத்தொடர்பு இணைப்புகளைப் பதிவுசெய்ய, பயன்பாட்டை அனுமதிக்கும்."</string> + <!-- no translation found for permlab_register_sim_subscription (3166535485877549177) --> + <skip /> + <!-- no translation found for permdesc_register_sim_subscription (2138909035926222911) --> + <skip /> + <!-- no translation found for permlab_register_call_provider (108102120289029841) --> + <skip /> + <!-- no translation found for permdesc_register_call_provider (7034310263521081388) --> + <skip /> <string name="permlab_connection_manager" msgid="1116193254522105375">"தொலைத்தொடர்பு இணைப்புகளை நிர்வகி"</string> <string name="permdesc_connection_manager" msgid="5925480810356483565">"தொலைத்தொடர்பு இணைப்புகளை நிர்வகிக்க, பயன்பாட்டை அனுமதிக்கும்."</string> <string name="permlab_bind_incall_service" msgid="6773648341975287125">"உள்வரும் அழைப்பிற்கான திரையுடன் ஊடாடுதல்"</string> @@ -1233,6 +1239,7 @@ <string name="smv_application" msgid="3307209192155442829">"<xliff:g id="APPLICATION">%1$s</xliff:g> பயன்பாடு (செயல்முறை <xliff:g id="PROCESS">%2$s</xliff:g>), தனது சுய-செயலாக்க StrictMode கொள்கையை மீறியது."</string> <string name="smv_process" msgid="5120397012047462446">"<xliff:g id="PROCESS">%1$s</xliff:g> செயல்முறை, தனது சுய-செயலாக்க StrictMode கொள்கையை மீறியது."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Android மேம்படுத்தப்படுகிறது…"</string> + <string name="android_start_title" msgid="8418054686415318207">"Android துவங்குகிறது..."</string> <string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_0">%1$d</xliff:g> / <xliff:g id="NUMBER_1">%2$d</xliff:g> பயன்பாட்டை ஒருங்கிணைக்கிறது."</string> <string name="android_upgrading_starting_apps" msgid="451464516346926713">"பயன்பாடுகள் தொடங்கப்படுகின்றன."</string> <string name="android_upgrading_complete" msgid="1405954754112999229">"துவக்குதலை முடிக்கிறது."</string> @@ -1776,10 +1783,14 @@ <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"அகற்றும் முன் கடவுச்சொல்லைக் கேள்"</string> <string name="battery_saver_description" msgid="2510530476513605742">"பேட்டரியின் ஆயுட்காலத்தை அதிகரிக்க, பேட்டரி சேமிப்பான் சாதனத்தின் செயல்திறனைக் குறைத்து, அதிர்வுறுவதையும் பெரும்பாலான பின்புலத் தரவையும் வரம்பிடுகிறது. ஒத்திசைவைச் சார்ந்திருக்கும் மின்னஞ்சல், மெசேஜ், மேலும் பிற பயன்பாடுகளைத் திறக்கும் வரை, அவை புதுப்பிக்கப்படாமல் இருக்கலாம்.\n\nசாதனம் சார்ஜ் ஆகும் போது, பேட்டரி சேமிப்பான் தானாகவே முடக்கப்படும்."</string> <string name="downtime_condition_summary" msgid="8761776337475705749">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> முடியும் வரை"</string> - <!-- no translation found for zen_mode_duration_minutes_summary:one (3177683545388923234) --> - <!-- no translation found for zen_mode_duration_minutes_summary:other (2787867221129368935) --> - <!-- no translation found for zen_mode_duration_hours_summary:one (597194865053253679) --> - <!-- no translation found for zen_mode_duration_hours_summary:other (2827214920627669898) --> + <plurals name="zen_mode_duration_minutes_summary"> + <item quantity="one" msgid="3177683545388923234">"ஒரு நிமிடத்திற்கு (<xliff:g id="FORMATTEDTIME">%2$s</xliff:g> வரை)"</item> + <item quantity="other" msgid="2787867221129368935">"%1$d நிமிடங்களுக்கு (<xliff:g id="FORMATTEDTIME">%2$s</xliff:g> வரை)"</item> + </plurals> + <plurals name="zen_mode_duration_hours_summary"> + <item quantity="one" msgid="597194865053253679">"ஒரு மணிநேரத்திற்கு (<xliff:g id="FORMATTEDTIME">%2$s</xliff:g> வரை)"</item> + <item quantity="other" msgid="2827214920627669898">"%1$d மணிநேரத்திற்கு (<xliff:g id="FORMATTEDTIME">%2$s</xliff:g> வரை)"</item> + </plurals> <plurals name="zen_mode_duration_minutes"> <item quantity="one" msgid="9040808414992812341">"ஒரு நிமிடம்"</item> <item quantity="other" msgid="6924190729213550991">"%d நிமிடங்கள்"</item> @@ -1788,7 +1799,7 @@ <item quantity="one" msgid="3480040795582254384">"ஒரு மணி நேரம்"</item> <item quantity="other" msgid="5408537517529822157">"%d மணிநேரம்"</item> </plurals> - <!-- no translation found for zen_mode_until (7336308492289875088) --> - <skip /> + <string name="zen_mode_until" msgid="7336308492289875088">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> வரை"</string> <string name="zen_mode_forever" msgid="4316804956488785559">"வரையறையற்றது"</string> + <string name="toolbar_collapse_description" msgid="2821479483960330739">"சுருக்கு"</string> </resources> diff --git a/core/res/res/values-te-rIN/strings.xml b/core/res/res/values-te-rIN/strings.xml index 0219a9623b9b..d33ee75f3333 100644 --- a/core/res/res/values-te-rIN/strings.xml +++ b/core/res/res/values-te-rIN/strings.xml @@ -716,8 +716,14 @@ <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"కాష్ ఫైల్సిస్టమ్ను చదవడానికి మరియు వ్రాయడానికి అనువర్తనాన్ని అనుమతిస్తుంది."</string> <string name="permlab_use_sip" msgid="2052499390128979920">"SIP కాల్లను చేయడానికి/స్వీకరించడానికి"</string> <string name="permdesc_use_sip" msgid="2297804849860225257">"SIP కాల్లను చేయడానికి మరియు స్వీకరించడానికి అనువర్తనాన్ని అనుమతిస్తుంది."</string> - <string name="permlab_register_provider" msgid="2654513709546459553">"కొత్త టెలికామ్ కనెక్షన్లను నమోదు చేయడం"</string> - <string name="permdesc_register_provider" msgid="7571533832018681544">"కొత్త టెలికామ్ కనెక్షన్లను నమోదు చేయడానికి అనువర్తనాన్ని అనుమతిస్తుంది."</string> + <!-- no translation found for permlab_register_sim_subscription (3166535485877549177) --> + <skip /> + <!-- no translation found for permdesc_register_sim_subscription (2138909035926222911) --> + <skip /> + <!-- no translation found for permlab_register_call_provider (108102120289029841) --> + <skip /> + <!-- no translation found for permdesc_register_call_provider (7034310263521081388) --> + <skip /> <string name="permlab_connection_manager" msgid="1116193254522105375">"టెలికామ్ కనెక్షన్లను నిర్వహించడం"</string> <string name="permdesc_connection_manager" msgid="5925480810356483565">"టెలికామ్ కనెక్షన్లను నిర్వహించడానికి అనువర్తనాన్ని అనుమతిస్తుంది."</string> <string name="permlab_bind_incall_service" msgid="6773648341975287125">"ఇన్-కాల్ స్క్రీన్తో పరస్పర చర్య చేయడం"</string> @@ -1233,6 +1239,7 @@ <string name="smv_application" msgid="3307209192155442829">"<xliff:g id="APPLICATION">%1$s</xliff:g> అనువర్తనం (<xliff:g id="PROCESS">%2$s</xliff:g> ప్రాసెస్) అది స్వయంగా అమలు చేసే ఖచ్చితమైన మోడ్ విధానాన్ని ఉల్లంఘించింది."</string> <string name="smv_process" msgid="5120397012047462446">"ప్రక్రియ <xliff:g id="PROCESS">%1$s</xliff:g> అది స్వయంగా అమలు చేసే ఖచ్చితమైన మోడ్ విధానాన్ని ఉల్లంఘించింది."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Android అప్గ్రేడ్ అవుతోంది…"</string> + <string name="android_start_title" msgid="8418054686415318207">"Android ప్రారంభమవుతోంది…"</string> <string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_1">%2$d</xliff:g>లో <xliff:g id="NUMBER_0">%1$d</xliff:g> అనువర్తనాన్ని అనుకూలీకరిస్తోంది."</string> <string name="android_upgrading_starting_apps" msgid="451464516346926713">"అనువర్తనాలను ప్రారంభిస్తోంది."</string> <string name="android_upgrading_complete" msgid="1405954754112999229">"బూట్ను ముగిస్తోంది."</string> @@ -1776,10 +1783,14 @@ <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"అన్పిన్ చేయడానికి ముందు పాస్వర్డ్ కోసం అడుగు"</string> <string name="battery_saver_description" msgid="2510530476513605742">"బ్యాటరీ సామర్థ్యాన్ని మెరుగుపరచడంలో సహాయపడటానికి, బ్యాటరీ సేవర్ మీ పరికరం పనితీరుని తగ్గిస్తుంది మరియు వైబ్రేషన్ను మరియు అత్యధిక నేపథ్య డేటాను పరిమితపరుస్తుంది. అలాగే సమకాలీకరణపై ఆధారపడే ఇమెయిల్, సందేశ సేవ మరియు ఇతర అనువర్తనాలు మీరు వాటిని తెరిస్తే మినహా నవీకరించబడకపోవచ్చు.\n\nమీ పరికరం ఛార్జింగ్లో ఉన్నప్పుడు బ్యాటరీ సేవర్ స్వయంచాలకంగా ఆఫ్ చేయబడుతుంది."</string> <string name="downtime_condition_summary" msgid="8761776337475705749">"మీ వృథా సమయం <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>కి ముగిసే వరకు"</string> - <!-- no translation found for zen_mode_duration_minutes_summary:one (3177683545388923234) --> - <!-- no translation found for zen_mode_duration_minutes_summary:other (2787867221129368935) --> - <!-- no translation found for zen_mode_duration_hours_summary:one (597194865053253679) --> - <!-- no translation found for zen_mode_duration_hours_summary:other (2827214920627669898) --> + <plurals name="zen_mode_duration_minutes_summary"> + <item quantity="one" msgid="3177683545388923234">"ఒక నిమిషం పాటు (<xliff:g id="FORMATTEDTIME">%2$s</xliff:g> వరకు)"</item> + <item quantity="other" msgid="2787867221129368935">"%1$d నిమిషాల పాటు (<xliff:g id="FORMATTEDTIME">%2$s</xliff:g> వరకు)"</item> + </plurals> + <plurals name="zen_mode_duration_hours_summary"> + <item quantity="one" msgid="597194865053253679">"ఒక గంట పాటు (<xliff:g id="FORMATTEDTIME">%2$s</xliff:g> వరకు)"</item> + <item quantity="other" msgid="2827214920627669898">"%1$d గంటల పాటు (<xliff:g id="FORMATTEDTIME">%2$s</xliff:g> వరకు)"</item> + </plurals> <plurals name="zen_mode_duration_minutes"> <item quantity="one" msgid="9040808414992812341">"ఒక నిమిషానికి"</item> <item quantity="other" msgid="6924190729213550991">"%d నిమిషాలకి"</item> @@ -1788,7 +1799,7 @@ <item quantity="one" msgid="3480040795582254384">"ఒక గంటకు"</item> <item quantity="other" msgid="5408537517529822157">"%d గంటలకు"</item> </plurals> - <!-- no translation found for zen_mode_until (7336308492289875088) --> - <skip /> + <string name="zen_mode_until" msgid="7336308492289875088">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> వరకు"</string> <string name="zen_mode_forever" msgid="4316804956488785559">"నిరవధికంగా"</string> + <string name="toolbar_collapse_description" msgid="2821479483960330739">"కుదించండి"</string> </resources> diff --git a/core/res/res/values-th/strings.xml b/core/res/res/values-th/strings.xml index fa6c0e83f632..a78838976640 100644 --- a/core/res/res/values-th/strings.xml +++ b/core/res/res/values-th/strings.xml @@ -716,8 +716,14 @@ <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"อนุญาตให้แอปพลิเคชันอ่านและเขียนระบบไฟล์แคช"</string> <string name="permlab_use_sip" msgid="2052499390128979920">"โทร/รับสาย SIP"</string> <string name="permdesc_use_sip" msgid="2297804849860225257">"อนุญาตให้แอปโทรและรับสาย SIP"</string> - <string name="permlab_register_provider" msgid="2654513709546459553">"ลงทะเบียนการเชื่อมต่อโทรคมนาคมใหม่"</string> - <string name="permdesc_register_provider" msgid="7571533832018681544">"อนุญาตให้แอปลงทะเบียนการเชื่อมต่อโทรคมนาคมใหม่"</string> + <!-- no translation found for permlab_register_sim_subscription (3166535485877549177) --> + <skip /> + <!-- no translation found for permdesc_register_sim_subscription (2138909035926222911) --> + <skip /> + <!-- no translation found for permlab_register_call_provider (108102120289029841) --> + <skip /> + <!-- no translation found for permdesc_register_call_provider (7034310263521081388) --> + <skip /> <string name="permlab_connection_manager" msgid="1116193254522105375">"จัดการการเชื่อมต่อโทรคมนาคม"</string> <string name="permdesc_connection_manager" msgid="5925480810356483565">"อนุญาตให้แอปจัดการการเชื่อมต่อโทรคมนาคม"</string> <string name="permlab_bind_incall_service" msgid="6773648341975287125">"โต้ตอบกับหน้าจอขณะกำลังใช้สาย"</string> @@ -1233,6 +1239,7 @@ <string name="smv_application" msgid="3307209192155442829">"แอปพลิเคชัน <xliff:g id="APPLICATION">%1$s</xliff:g> (กระบวนการ <xliff:g id="PROCESS">%2$s</xliff:g>) ละเมิดนโยบาย StrictMode ที่บังคับใช้ด้วยตัวเอง"</string> <string name="smv_process" msgid="5120397012047462446">"กระบวนการ <xliff:g id="PROCESS">%1$s</xliff:g> ละเมิดนโยบาย StrictMode ที่บังคับใช้ด้วยตัวเอง"</string> <string name="android_upgrading_title" msgid="1584192285441405746">"กำลังอัปเกรด Android ..."</string> + <string name="android_start_title" msgid="8418054686415318207">"Android กำลังเริ่มต้น…"</string> <string name="android_upgrading_apk" msgid="7904042682111526169">"กำลังเพิ่มประสิทธิภาพแอปพลิเคชัน <xliff:g id="NUMBER_0">%1$d</xliff:g> จาก <xliff:g id="NUMBER_1">%2$d</xliff:g> รายการ"</string> <string name="android_upgrading_starting_apps" msgid="451464516346926713">"กำลังเริ่มต้นแอปพลิเคชัน"</string> <string name="android_upgrading_complete" msgid="1405954754112999229">"เสร็จสิ้นการบูต"</string> @@ -1776,10 +1783,14 @@ <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"ขอรหัสผ่านก่อนเลิกตรึง"</string> <string name="battery_saver_description" msgid="2510530476513605742">"เพื่อให้สามารถใช้แบตเตอรี่ได้ยาวนานขึ้น โหมดประหยัดแบตเตอรี่จะลดการทำงานของอุปกรณ์ และจำกัดการสั่นรวมถึงข้อมูลแบ็กกราวด์เกือบทั้งหมด อีเมล การรับส่งข้อความ และแอปอื่นๆ ที่ใช้การซิงค์อาจไม่อัปเดตจนกว่าคุณจะเปิดใช้\n\nโหมดประหยัดแบตเตอรี่จะปิดอัตโนมัติเมื่อชาร์จอุปกรณ์"</string> <string name="downtime_condition_summary" msgid="8761776337475705749">"จนกว่าจะสิ้นสุดช่วงเวลาที่เครื่องไม่ทำงานในเวลา <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> - <!-- no translation found for zen_mode_duration_minutes_summary:one (3177683545388923234) --> - <!-- no translation found for zen_mode_duration_minutes_summary:other (2787867221129368935) --> - <!-- no translation found for zen_mode_duration_hours_summary:one (597194865053253679) --> - <!-- no translation found for zen_mode_duration_hours_summary:other (2827214920627669898) --> + <plurals name="zen_mode_duration_minutes_summary"> + <item quantity="one" msgid="3177683545388923234">"1 นาที (จนถึงเวลา <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2787867221129368935">"%1$d นาที (จนถึงเวลา <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> + <plurals name="zen_mode_duration_hours_summary"> + <item quantity="one" msgid="597194865053253679">"1 ชั่วโมง (จนถึงเวลา <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2827214920627669898">"%1$d ชั่วโมง (จนถึงเวลา <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> <plurals name="zen_mode_duration_minutes"> <item quantity="one" msgid="9040808414992812341">"1 นาที"</item> <item quantity="other" msgid="6924190729213550991">"%d นาที"</item> @@ -1788,7 +1799,7 @@ <item quantity="one" msgid="3480040795582254384">"1 ชั่วโมง"</item> <item quantity="other" msgid="5408537517529822157">"%d ชั่วโมง"</item> </plurals> - <!-- no translation found for zen_mode_until (7336308492289875088) --> - <skip /> + <string name="zen_mode_until" msgid="7336308492289875088">"จนถึงเวลา <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_forever" msgid="4316804956488785559">"ไม่มีกำหนด"</string> + <string name="toolbar_collapse_description" msgid="2821479483960330739">"ยุบ"</string> </resources> diff --git a/core/res/res/values-tl/strings.xml b/core/res/res/values-tl/strings.xml index 41e271861eff..dd0db3781923 100644 --- a/core/res/res/values-tl/strings.xml +++ b/core/res/res/values-tl/strings.xml @@ -716,8 +716,14 @@ <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"Pinapayagan ang app na basahin at isulat ang cache filesystem."</string> <string name="permlab_use_sip" msgid="2052499390128979920">"magsagawa/tumanggap ng mga tawag sa SIP"</string> <string name="permdesc_use_sip" msgid="2297804849860225257">"Pinapayagan ang app na magsagawa at makatanggap ng mga tawag sa SIP."</string> - <string name="permlab_register_provider" msgid="2654513709546459553">"magrehistro ng bagong koneksyon sa telecom"</string> - <string name="permdesc_register_provider" msgid="7571533832018681544">"Pinapayagan ang app na magrehistro ng mga bagong koneksyon sa telecom."</string> + <!-- no translation found for permlab_register_sim_subscription (3166535485877549177) --> + <skip /> + <!-- no translation found for permdesc_register_sim_subscription (2138909035926222911) --> + <skip /> + <!-- no translation found for permlab_register_call_provider (108102120289029841) --> + <skip /> + <!-- no translation found for permdesc_register_call_provider (7034310263521081388) --> + <skip /> <string name="permlab_connection_manager" msgid="1116193254522105375">"papamahalaan ang mga koneksyon sa telecom"</string> <string name="permdesc_connection_manager" msgid="5925480810356483565">"Pinapayagan ang app na mamahala ng mga koneksyon sa telecom."</string> <string name="permlab_bind_incall_service" msgid="6773648341975287125">"makipag-ugnayan sa in-call na screen"</string> @@ -1233,6 +1239,7 @@ <string name="smv_application" msgid="3307209192155442829">"Ang app na <xliff:g id="APPLICATION">%1$s</xliff:g> (prosesong <xliff:g id="PROCESS">%2$s</xliff:g>) ay lumabag sa sarili nitong ipinapatupad na patakarang StrictMode."</string> <string name="smv_process" msgid="5120397012047462446">"Ang prosesong <xliff:g id="PROCESS">%1$s</xliff:g> ay lumabag sa sarili nitong ipinapatupad na patakarang StrictMode."</string> <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_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> <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Sinisimulan ang apps."</string> <string name="android_upgrading_complete" msgid="1405954754112999229">"Pagtatapos ng pag-boot."</string> @@ -1776,10 +1783,14 @@ <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Humingi ng password bago mag-unpin"</string> <string name="battery_saver_description" msgid="2510530476513605742">"Upang makatulong na mas mapatagal ang baterya, binabawasan ng battery saver ang pagganap ng iyong device at nililimitahan ang pag-vibrate at ang karamihan ng data ng background. Hindi maaaring ma-update ang email, pagmemensahe at iba pang mga app na umaasa sa pagsi-sync maliban kung bubuksan mo ang mga ito.\n\nAwtomatikong mao-off ang battery saver kapag nagcha-charge ang iyong device."</string> <string name="downtime_condition_summary" msgid="8761776337475705749">"Hanggang sa matapos ang iyong downtime nang <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> - <!-- no translation found for zen_mode_duration_minutes_summary:one (3177683545388923234) --> - <!-- no translation found for zen_mode_duration_minutes_summary:other (2787867221129368935) --> - <!-- no translation found for zen_mode_duration_hours_summary:one (597194865053253679) --> - <!-- no translation found for zen_mode_duration_hours_summary:other (2827214920627669898) --> + <plurals name="zen_mode_duration_minutes_summary"> + <item quantity="one" msgid="3177683545388923234">"Sa loob ng isang minuto (hanggang <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2787867221129368935">"Sa loob ng %1$d (na) minuto (hanggang <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> + <plurals name="zen_mode_duration_hours_summary"> + <item quantity="one" msgid="597194865053253679">"Sa loob ng isang oras (hanggang <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2827214920627669898">"Sa loob ng %1$d (na) oras (hanggang <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> <plurals name="zen_mode_duration_minutes"> <item quantity="one" msgid="9040808414992812341">"Sa loob ng isang minuto"</item> <item quantity="other" msgid="6924190729213550991">"Sa loob ng %d (na) minuto"</item> @@ -1788,7 +1799,7 @@ <item quantity="one" msgid="3480040795582254384">"Sa loob ng isang oras"</item> <item quantity="other" msgid="5408537517529822157">"Sa loob ng %d (na) oras"</item> </plurals> - <!-- no translation found for zen_mode_until (7336308492289875088) --> - <skip /> + <string name="zen_mode_until" msgid="7336308492289875088">"Hanggang <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_forever" msgid="4316804956488785559">"Walang tiyak na katapusan"</string> + <string name="toolbar_collapse_description" msgid="2821479483960330739">"I-collapse"</string> </resources> diff --git a/core/res/res/values-tr/strings.xml b/core/res/res/values-tr/strings.xml index 8ddc7f8ea11e..a828baac44c4 100644 --- a/core/res/res/values-tr/strings.xml +++ b/core/res/res/values-tr/strings.xml @@ -716,14 +716,16 @@ <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"Uygulamaya, önbellek dosya sisteminde okuma ve yazma yapma izni verir."</string> <string name="permlab_use_sip" msgid="2052499390128979920">"SIP çağrıları yapma/alma"</string> <string name="permdesc_use_sip" msgid="2297804849860225257">"Uygulamanın SIP çağrıları yapmasına ve almasına izin verir."</string> - <!-- no translation found for permlab_register_provider (2654513709546459553) --> + <!-- no translation found for permlab_register_sim_subscription (3166535485877549177) --> <skip /> - <!-- no translation found for permdesc_register_provider (7571533832018681544) --> + <!-- no translation found for permdesc_register_sim_subscription (2138909035926222911) --> <skip /> - <!-- no translation found for permlab_connection_manager (1116193254522105375) --> + <!-- no translation found for permlab_register_call_provider (108102120289029841) --> <skip /> - <!-- no translation found for permdesc_connection_manager (5925480810356483565) --> + <!-- no translation found for permdesc_register_call_provider (7034310263521081388) --> <skip /> + <string name="permlab_connection_manager" msgid="1116193254522105375">"telekomunikasyon bağlantılarını yönet"</string> + <string name="permdesc_connection_manager" msgid="5925480810356483565">"Uygulamanın telekomünikasyon bağlantılarını yönetmesine izin verir."</string> <string name="permlab_bind_incall_service" msgid="6773648341975287125">"çağrı ekranıyla etkileşimde bulunma"</string> <string name="permdesc_bind_incall_service" msgid="8343471381323215005">"Uygulamaya, kullanıcının çağrı ekranını ne zaman ve nasıl göreceğini denetleme izni verir."</string> <string name="permlab_bind_connection_service" msgid="3557341439297014940">"telefon hizmetleriyle etkileşimde bulunma"</string> @@ -1237,6 +1239,7 @@ <string name="smv_application" msgid="3307209192155442829">"<xliff:g id="APPLICATION">%1$s</xliff:g> uygulaması (<xliff:g id="PROCESS">%2$s</xliff:g> işlemi) kendiliğinden uyguladığı StrictMode politikasını ihlal etti."</string> <string name="smv_process" msgid="5120397012047462446">"<xliff:g id="PROCESS">%1$s</xliff:g> işlemi kendiliğinden uyguladığı StrictMode politikasını ihlal etti."</string> <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_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> <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Uygulamalar başlatılıyor"</string> <string name="android_upgrading_complete" msgid="1405954754112999229">"Açılış tamamlanıyor."</string> @@ -1780,10 +1783,14 @@ <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Sabitlemeyi kaldırmadan önce şifre sor"</string> <string name="battery_saver_description" msgid="2510530476513605742">"Pil tasarrufu, pilin ömrünü uzatmaya yardımcı olmak amacıyla cihazınızın performansını düşürür ve arka plan verilerini sınırlar. E-posta, mesajlaşma ve senkronizasyona dayalı diğer uygulamalar siz açmadığınız müddetçe güncellenemez. \n\nPil tasarrufu, cihaz şarj olurken otomatik olarak kapanır."</string> <string name="downtime_condition_summary" msgid="8761776337475705749">"Kesinti süreniz <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> saatinde sona erene kadar"</string> - <!-- no translation found for zen_mode_duration_minutes_summary:one (3177683545388923234) --> - <!-- no translation found for zen_mode_duration_minutes_summary:other (2787867221129368935) --> - <!-- no translation found for zen_mode_duration_hours_summary:one (597194865053253679) --> - <!-- no translation found for zen_mode_duration_hours_summary:other (2827214920627669898) --> + <plurals name="zen_mode_duration_minutes_summary"> + <item quantity="one" msgid="3177683545388923234">"Bir dakika için (şu saate kadar: <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2787867221129368935">"%1$d dakika için (şu saate kadar: <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> + <plurals name="zen_mode_duration_hours_summary"> + <item quantity="one" msgid="597194865053253679">"Bir saat için (şu saate kadar: <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2827214920627669898">"%1$d saat için (şu saate kadar: <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> <plurals name="zen_mode_duration_minutes"> <item quantity="one" msgid="9040808414992812341">"Bir dakika süreyle"</item> <item quantity="other" msgid="6924190729213550991">"%d dakika süreyle"</item> @@ -1792,7 +1799,7 @@ <item quantity="one" msgid="3480040795582254384">"Bir saat süreyle"</item> <item quantity="other" msgid="5408537517529822157">"%d saat süreyle"</item> </plurals> - <!-- no translation found for zen_mode_until (7336308492289875088) --> - <skip /> + <string name="zen_mode_until" msgid="7336308492289875088">"Şu saate kadar: <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_forever" msgid="4316804956488785559">"Süresiz"</string> + <string name="toolbar_collapse_description" msgid="2821479483960330739">"Daralt"</string> </resources> diff --git a/core/res/res/values-uk/strings.xml b/core/res/res/values-uk/strings.xml index ca66cbb9fd9f..2c038ed44142 100644 --- a/core/res/res/values-uk/strings.xml +++ b/core/res/res/values-uk/strings.xml @@ -716,8 +716,14 @@ <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"Дозволяє програмі читати з файлової системи кеш-пам’яті та писати в неї."</string> <string name="permlab_use_sip" msgid="2052499390128979920">"здійснювати й отримувати дзвінки через протокол SIP"</string> <string name="permdesc_use_sip" msgid="2297804849860225257">"Додаток зможе здійснювати й отримувати дзвінки через протокол SIP."</string> - <string name="permlab_register_provider" msgid="2654513709546459553">"реєстрація нових телекомунікаційних з’єднань"</string> - <string name="permdesc_register_provider" msgid="7571533832018681544">"Додаток може реєструвати нові телекомунікаційні з’єднання."</string> + <!-- no translation found for permlab_register_sim_subscription (3166535485877549177) --> + <skip /> + <!-- no translation found for permdesc_register_sim_subscription (2138909035926222911) --> + <skip /> + <!-- no translation found for permlab_register_call_provider (108102120289029841) --> + <skip /> + <!-- no translation found for permdesc_register_call_provider (7034310263521081388) --> + <skip /> <string name="permlab_connection_manager" msgid="1116193254522105375">"керування телекомунікаційними з’єднаннями"</string> <string name="permdesc_connection_manager" msgid="5925480810356483565">"Додаток може керувати телекомунікаційними з’єднаннями."</string> <string name="permlab_bind_incall_service" msgid="6773648341975287125">"взаємодіяти з екраном вхідного дзвінка"</string> @@ -1233,6 +1239,7 @@ <string name="smv_application" msgid="3307209192155442829">"Програма <xliff:g id="APPLICATION">%1$s</xliff:g> (процес <xliff:g id="PROCESS">%2$s</xliff:g>) порушила свою самозастосовну політику StrictMode."</string> <string name="smv_process" msgid="5120397012047462446">"Процес <xliff:g id="PROCESS">%1$s</xliff:g> порушив свою самозастосовну політику StrictMode."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Android оновлюється..."</string> + <string name="android_start_title" msgid="8418054686415318207">"Запуск ОС Android…"</string> <string name="android_upgrading_apk" msgid="7904042682111526169">"Оптимізація програми <xliff:g id="NUMBER_0">%1$d</xliff:g> з <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Запуск програм."</string> <string name="android_upgrading_complete" msgid="1405954754112999229">"Завершення завантаження."</string> @@ -1776,10 +1783,14 @@ <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Запитувати пароль перед відкріпленням"</string> <string name="battery_saver_description" msgid="2510530476513605742">"Щоб подовжити час роботи акумулятора, функція заощадження заряду акумулятора знизить продуктивність пристрою й обмежить вібрацію та більшість фонових даних. Електронна пошта, повідомлення й інші додатки, які синхронізуються, можуть не оновлюватися, доки ви їх не відкриєте.\n\nФункція заощадження заряду акумулятора автоматично вимкнеться, коли пристрій заряджатиметься."</string> <string name="downtime_condition_summary" msgid="8761776337475705749">"Термін простою закінчується о <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> - <!-- no translation found for zen_mode_duration_minutes_summary:one (3177683545388923234) --> - <!-- no translation found for zen_mode_duration_minutes_summary:other (2787867221129368935) --> - <!-- no translation found for zen_mode_duration_hours_summary:one (597194865053253679) --> - <!-- no translation found for zen_mode_duration_hours_summary:other (2827214920627669898) --> + <plurals name="zen_mode_duration_minutes_summary"> + <item quantity="one" msgid="3177683545388923234">"Одну хвилину (до <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2787867221129368935">"%1$d хв (до <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> + <plurals name="zen_mode_duration_hours_summary"> + <item quantity="one" msgid="597194865053253679">"Одну годину (до <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2827214920627669898">"%1$d год (до <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> <plurals name="zen_mode_duration_minutes"> <item quantity="one" msgid="9040808414992812341">"Протягом хвилини"</item> <item quantity="other" msgid="6924190729213550991">"Протягом %d хв"</item> @@ -1788,7 +1799,7 @@ <item quantity="one" msgid="3480040795582254384">"Протягом години"</item> <item quantity="other" msgid="5408537517529822157">"Протягом %d год"</item> </plurals> - <!-- no translation found for zen_mode_until (7336308492289875088) --> - <skip /> + <string name="zen_mode_until" msgid="7336308492289875088">"До <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_forever" msgid="4316804956488785559">"Без обмежень"</string> + <string name="toolbar_collapse_description" msgid="2821479483960330739">"Згорнути"</string> </resources> diff --git a/core/res/res/values-ur-rPK/strings.xml b/core/res/res/values-ur-rPK/strings.xml index faeab4d54b1b..20ab47ec67a8 100644 --- a/core/res/res/values-ur-rPK/strings.xml +++ b/core/res/res/values-ur-rPK/strings.xml @@ -716,14 +716,16 @@ <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"ایپ کو کیش فائل سسٹم پڑھنے اور لکھنے کی اجازت دیتا ہے۔"</string> <string name="permlab_use_sip" msgid="2052499390128979920">"SIP کالز کریں/موصول کریں"</string> <string name="permdesc_use_sip" msgid="2297804849860225257">"ایپ کو SIP کالز کرنے اور موصول کرنے کی اجازت دیتا ہے۔"</string> - <!-- no translation found for permlab_register_provider (2654513709546459553) --> + <!-- no translation found for permlab_register_sim_subscription (3166535485877549177) --> <skip /> - <!-- no translation found for permdesc_register_provider (7571533832018681544) --> + <!-- no translation found for permdesc_register_sim_subscription (2138909035926222911) --> <skip /> - <!-- no translation found for permlab_connection_manager (1116193254522105375) --> + <!-- no translation found for permlab_register_call_provider (108102120289029841) --> <skip /> - <!-- no translation found for permdesc_connection_manager (5925480810356483565) --> + <!-- no translation found for permdesc_register_call_provider (7034310263521081388) --> <skip /> + <string name="permlab_connection_manager" msgid="1116193254522105375">"ٹیلی کام کنکشنز کا نظم کریں"</string> + <string name="permdesc_connection_manager" msgid="5925480810356483565">"ایپ کو ٹیلی کام کنکشنز کا نظم کرنے کی اجازت دیتی ہے۔"</string> <string name="permlab_bind_incall_service" msgid="6773648341975287125">"درون کال اسکرین کے ساتھ تعامل کریں"</string> <string name="permdesc_bind_incall_service" msgid="8343471381323215005">"ایپ کو صارف کے درون کال اسکرین دیکھنے کے وقت اور طریقے کو کنٹرول کرنے کی اجازت دیتا ہے۔"</string> <string name="permlab_bind_connection_service" msgid="3557341439297014940">"ٹیلیفونی سروسز کے ساتھ تعامل کریں"</string> @@ -1237,6 +1239,7 @@ <string name="smv_application" msgid="3307209192155442829">"ایپ <xliff:g id="APPLICATION">%1$s</xliff:g> (کارروائی <xliff:g id="PROCESS">%2$s</xliff:g>) نے خود نافذ کی گئی StrictMode پالیسی کی خلاف ورزی کی ہے۔"</string> <string name="smv_process" msgid="5120397012047462446">"کارروائی <xliff:g id="PROCESS">%1$s</xliff:g> نے اپنی ذاتی طور پر نافذ کردہ StrictMode پلیسی کی خلاف ورزی کی ہے۔"</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Android اپ گریڈ ہو رہا ہے…"</string> + <string name="android_start_title" msgid="8418054686415318207">"Android شروع ہو رہا ہے…"</string> <string name="android_upgrading_apk" msgid="7904042682111526169">"ایپ <xliff:g id="NUMBER_0">%1$d</xliff:g> از <xliff:g id="NUMBER_1">%2$d</xliff:g> کو بہتر بنایا جا رہا ہے۔"</string> <string name="android_upgrading_starting_apps" msgid="451464516346926713">"ایپس شروع ہو رہی ہیں۔"</string> <string name="android_upgrading_complete" msgid="1405954754112999229">"بوٹ مکمل ہو رہا ہے۔"</string> @@ -1780,10 +1783,14 @@ <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"پن ہٹانے سے پہلے پاس ورڈ طلب کریں"</string> <string name="battery_saver_description" msgid="2510530476513605742">"بیٹری کی میعاد بہتر بنانے میں مدد کرنے کیلئے، بیٹری سیور آپ کے آلہ کی کارکردگی میں تخفیف کر دیتی ہے اور وائبریشن اور پس منظر کے زیادہ تر ڈیٹا کو محدود کر دیتی ہے۔ ای میل، پیغام رسانی اور مطابقت پذیری پر انحصار کرنے والی دیگر ایپس ممکن ہے اس وقت تک اپ ڈیٹ نہ ہوں جب تک آپ انہیں نہ کھولیں۔\n\nآپ کا آلہ چارج ہوتے وقت بیٹری سیور خود بخود آف ہو جاتی ہے۔"</string> <string name="downtime_condition_summary" msgid="8761776337475705749">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> پر آپ کا آخری وقت ختم ہونے تک"</string> - <!-- no translation found for zen_mode_duration_minutes_summary:one (3177683545388923234) --> - <!-- no translation found for zen_mode_duration_minutes_summary:other (2787867221129368935) --> - <!-- no translation found for zen_mode_duration_hours_summary:one (597194865053253679) --> - <!-- no translation found for zen_mode_duration_hours_summary:other (2827214920627669898) --> + <plurals name="zen_mode_duration_minutes_summary"> + <item quantity="one" msgid="3177683545388923234">"ایک منٹ کیلئے (<xliff:g id="FORMATTEDTIME">%2$s</xliff:g> تک)"</item> + <item quantity="other" msgid="2787867221129368935">"%1$d منٹ کیلئے (<xliff:g id="FORMATTEDTIME">%2$s</xliff:g> تک)"</item> + </plurals> + <plurals name="zen_mode_duration_hours_summary"> + <item quantity="one" msgid="597194865053253679">"ایک گھنٹے کیلئے (<xliff:g id="FORMATTEDTIME">%2$s</xliff:g> تک)"</item> + <item quantity="other" msgid="2827214920627669898">"%1$d گھنٹوں کیلئے (<xliff:g id="FORMATTEDTIME">%2$s</xliff:g> تک)"</item> + </plurals> <plurals name="zen_mode_duration_minutes"> <item quantity="one" msgid="9040808414992812341">"ایک منٹ کیلئے"</item> <item quantity="other" msgid="6924190729213550991">"%d منٹ کیلئے"</item> @@ -1792,7 +1799,7 @@ <item quantity="one" msgid="3480040795582254384">"ایک گھنٹے کیلئے"</item> <item quantity="other" msgid="5408537517529822157">"%d گھنٹوں کیلئے"</item> </plurals> - <!-- no translation found for zen_mode_until (7336308492289875088) --> - <skip /> + <string name="zen_mode_until" msgid="7336308492289875088">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> تک"</string> <string name="zen_mode_forever" msgid="4316804956488785559">"غیر متعینہ"</string> + <string name="toolbar_collapse_description" msgid="2821479483960330739">"سکیڑیں"</string> </resources> diff --git a/core/res/res/values-uz-rUZ/strings.xml b/core/res/res/values-uz-rUZ/strings.xml index cf426e2ed1bd..997b3167e9c7 100644 --- a/core/res/res/values-uz-rUZ/strings.xml +++ b/core/res/res/values-uz-rUZ/strings.xml @@ -716,14 +716,16 @@ <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"Ilova kesh fayl tizimini o‘qishi va unga yozishi mumkin."</string> <string name="permlab_use_sip" msgid="2052499390128979920">"SIP qo‘ng‘iroqlarini amalga oshirish/qabul qilish"</string> <string name="permdesc_use_sip" msgid="2297804849860225257">"Ilovaga SIP qo‘ng‘iroqlarini amalga oshirish va qabul qilish uchun ruxsat beradi."</string> - <!-- no translation found for permlab_register_provider (2654513709546459553) --> + <!-- no translation found for permlab_register_sim_subscription (3166535485877549177) --> <skip /> - <!-- no translation found for permdesc_register_provider (7571533832018681544) --> + <!-- no translation found for permdesc_register_sim_subscription (2138909035926222911) --> <skip /> - <!-- no translation found for permlab_connection_manager (1116193254522105375) --> + <!-- no translation found for permlab_register_call_provider (108102120289029841) --> <skip /> - <!-- no translation found for permdesc_connection_manager (5925480810356483565) --> + <!-- no translation found for permdesc_register_call_provider (7034310263521081388) --> <skip /> + <string name="permlab_connection_manager" msgid="1116193254522105375">"telekommunikatsiya aloqalarini boshqarish"</string> + <string name="permdesc_connection_manager" msgid="5925480810356483565">"Ilovaga telekommunikatsiya aloqalarini boshqarish uchun ruxsat beradi."</string> <string name="permlab_bind_incall_service" msgid="6773648341975287125">"suhbat vaqtida ekranni boshqarish"</string> <string name="permdesc_bind_incall_service" msgid="8343471381323215005">"Ilova suhbat vaqtida ekranni boshqarishi mumkin."</string> <string name="permlab_bind_connection_service" msgid="3557341439297014940">"telefoniya xizmatlarini bilan aloqa qilish"</string> @@ -1237,6 +1239,7 @@ <string name="smv_application" msgid="3307209192155442829">"“<xliff:g id="APPLICATION">%1$s</xliff:g>” ilovasi (jarayaon: <xliff:g id="PROCESS">%2$s</xliff:g>) o‘zining StrictMode qoidasini buzdi."</string> <string name="smv_process" msgid="5120397012047462446">"<xliff:g id="PROCESS">%1$s</xliff:g> jarayoni o‘zining o‘zi-bajaruvchi StrictMode siyosatini buzdi."</string> <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_apk" msgid="7904042682111526169">"Ilovalar optimallashtirilmoqda (<xliff:g id="NUMBER_0">%1$d</xliff:g> / <xliff:g id="NUMBER_1">%2$d</xliff:g>)."</string> <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Ilovalar ishga tushirilmoqda."</string> <string name="android_upgrading_complete" msgid="1405954754112999229">"Tizimni yuklashni tugatish."</string> @@ -1780,10 +1783,14 @@ <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Bo‘shatishdan oldin parol so‘ralsin"</string> <string name="battery_saver_description" msgid="2510530476513605742">"Batareya quvvatini uzoqroq vaqtga yetkazish uchun quvvat tejash funksiyasi qurilmangiz unumdorligini kamaytiradi hamda uning tebranishi va orqa fonda internetdan foydalanishni cheklaydi. Sinxronlanib turishi lozim bo‘lgan e-pochta, xabar almashinuv va boshqa ilovalar esa ishga tushirilmaguncha yangilanmaydi.\n\nQurilmani quvvat oldirish uchun energiya manbayiga ulashingiz bilanoq, quvvat tejash funksiyasi avtomatik tarzda o‘chadi."</string> <string name="downtime_condition_summary" msgid="8761776337475705749">"Tanaffus vaqti tugaguncha – <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> - <!-- no translation found for zen_mode_duration_minutes_summary:one (3177683545388923234) --> - <!-- no translation found for zen_mode_duration_minutes_summary:other (2787867221129368935) --> - <!-- no translation found for zen_mode_duration_hours_summary:one (597194865053253679) --> - <!-- no translation found for zen_mode_duration_hours_summary:other (2827214920627669898) --> + <plurals name="zen_mode_duration_minutes_summary"> + <item quantity="one" msgid="3177683545388923234">"Bir daqiqa (ushbu vaqtgacha: <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2787867221129368935">"%1$d daqiqa (ushbu vaqtgacha: <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> + <plurals name="zen_mode_duration_hours_summary"> + <item quantity="one" msgid="597194865053253679">"Bir soat (ushbu vaqtgacha: <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2827214920627669898">"%1$d soat (ushbu vaqtgacha: <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> <plurals name="zen_mode_duration_minutes"> <item quantity="one" msgid="9040808414992812341">"1 daqiqa"</item> <item quantity="other" msgid="6924190729213550991">"%d daqiqa"</item> @@ -1792,7 +1799,7 @@ <item quantity="one" msgid="3480040795582254384">"1 soat"</item> <item quantity="other" msgid="5408537517529822157">"%d soat"</item> </plurals> - <!-- no translation found for zen_mode_until (7336308492289875088) --> - <skip /> + <string name="zen_mode_until" msgid="7336308492289875088">"Ushbu vaqtgacha: <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_forever" msgid="4316804956488785559">"Uzluksiz ravishda"</string> + <string name="toolbar_collapse_description" msgid="2821479483960330739">"Yig‘ish"</string> </resources> diff --git a/core/res/res/values-vi/strings.xml b/core/res/res/values-vi/strings.xml index 5acd5bbec711..178272d59919 100644 --- a/core/res/res/values-vi/strings.xml +++ b/core/res/res/values-vi/strings.xml @@ -716,14 +716,16 @@ <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"Cho phép ứng dụng đọc và ghi hệ thống tệp bộ nhớ cache."</string> <string name="permlab_use_sip" msgid="2052499390128979920">"thực hiện/nhận các cuộc gọi qua SIP"</string> <string name="permdesc_use_sip" msgid="2297804849860225257">"Cho phép ứng dụng thực hiện và nhận các cuộc gọi qua SIP."</string> - <!-- no translation found for permlab_register_provider (2654513709546459553) --> + <!-- no translation found for permlab_register_sim_subscription (3166535485877549177) --> <skip /> - <!-- no translation found for permdesc_register_provider (7571533832018681544) --> + <!-- no translation found for permdesc_register_sim_subscription (2138909035926222911) --> <skip /> - <!-- no translation found for permlab_connection_manager (1116193254522105375) --> + <!-- no translation found for permlab_register_call_provider (108102120289029841) --> <skip /> - <!-- no translation found for permdesc_connection_manager (5925480810356483565) --> + <!-- no translation found for permdesc_register_call_provider (7034310263521081388) --> <skip /> + <string name="permlab_connection_manager" msgid="1116193254522105375">"quản lý kết nối viễn thông"</string> + <string name="permdesc_connection_manager" msgid="5925480810356483565">"Cho phép ứng dụng quản lý kết nối viễn thông."</string> <string name="permlab_bind_incall_service" msgid="6773648341975287125">"tương tác với màn hình trong cuộc gọi"</string> <string name="permdesc_bind_incall_service" msgid="8343471381323215005">"Cho phép ứng dụng kiểm soát thời gian và cách người dùng nhìn thấy màn hình trong cuộc gọi."</string> <string name="permlab_bind_connection_service" msgid="3557341439297014940">"tương tác với dịch vụ điện thoại"</string> @@ -1237,6 +1239,7 @@ <string name="smv_application" msgid="3307209192155442829">"Ứng dụng <xliff:g id="APPLICATION">%1$s</xliff:g> (quá trình <xliff:g id="PROCESS">%2$s</xliff:g>) đã vi phạm chính sách StrictMode tự thi hành của mình."</string> <string name="smv_process" msgid="5120397012047462446">"Quá trình <xliff:g id="PROCESS">%1$s</xliff:g> đã vi phạm chính sách StrictMode tự thi hành của mình."</string> <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_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> <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Khởi động ứng dụng."</string> <string name="android_upgrading_complete" msgid="1405954754112999229">"Hoàn tất khởi động."</string> @@ -1780,10 +1783,14 @@ <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Hỏi mật khẩu trước khi bỏ ghim"</string> <string name="battery_saver_description" msgid="2510530476513605742">"Để giúp tăng tuổi thọ pin, trình tiết kiệm pin sẽ giảm hiệu suất thiết bị của bạn và hạn chế chế rung và hầu hết dữ liệu nền. Email, nhắn tin và các ứng dụng khác dựa trên đồng bộ hóa không thể cập nhật trừ khi bạn mở chúng.\n\nTrình tiết kiệm pin tự động tắt khi thiết bị của bạn đang sạc."</string> <string name="downtime_condition_summary" msgid="8761776337475705749">"Cho tới khi thời gian ngừng hoạt động của bạn kết thúc vào <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> - <!-- no translation found for zen_mode_duration_minutes_summary:one (3177683545388923234) --> - <!-- no translation found for zen_mode_duration_minutes_summary:other (2787867221129368935) --> - <!-- no translation found for zen_mode_duration_hours_summary:one (597194865053253679) --> - <!-- no translation found for zen_mode_duration_hours_summary:other (2827214920627669898) --> + <plurals name="zen_mode_duration_minutes_summary"> + <item quantity="one" msgid="3177683545388923234">"Trong một phút (cho đến <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2787867221129368935">"Trong %1$d phút (cho đến <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> + <plurals name="zen_mode_duration_hours_summary"> + <item quantity="one" msgid="597194865053253679">"Trong một giờ (cho đến <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2827214920627669898">"Trong %1$d giờ (cho đến <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> <plurals name="zen_mode_duration_minutes"> <item quantity="one" msgid="9040808414992812341">"Trong một phút"</item> <item quantity="other" msgid="6924190729213550991">"Trong %d phút"</item> @@ -1792,7 +1799,7 @@ <item quantity="one" msgid="3480040795582254384">"Trong một giờ"</item> <item quantity="other" msgid="5408537517529822157">"Trong %d giờ"</item> </plurals> - <!-- no translation found for zen_mode_until (7336308492289875088) --> - <skip /> + <string name="zen_mode_until" msgid="7336308492289875088">"Cho đến <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_forever" msgid="4316804956488785559">"Không giới hạn"</string> + <string name="toolbar_collapse_description" msgid="2821479483960330739">"Thu gọn"</string> </resources> diff --git a/core/res/res/values-zh-rCN/strings.xml b/core/res/res/values-zh-rCN/strings.xml index f32c8c096761..10ad4b8d7fc2 100644 --- a/core/res/res/values-zh-rCN/strings.xml +++ b/core/res/res/values-zh-rCN/strings.xml @@ -716,14 +716,16 @@ <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"允许应用读取和写入缓存文件系统。"</string> <string name="permlab_use_sip" msgid="2052499390128979920">"拨打/接听SIP电话"</string> <string name="permdesc_use_sip" msgid="2297804849860225257">"允许该应用拨打和接听SIP电话。"</string> - <!-- no translation found for permlab_register_provider (2654513709546459553) --> + <!-- no translation found for permlab_register_sim_subscription (3166535485877549177) --> <skip /> - <!-- no translation found for permdesc_register_provider (7571533832018681544) --> + <!-- no translation found for permdesc_register_sim_subscription (2138909035926222911) --> <skip /> - <!-- no translation found for permlab_connection_manager (1116193254522105375) --> + <!-- no translation found for permlab_register_call_provider (108102120289029841) --> <skip /> - <!-- no translation found for permdesc_connection_manager (5925480810356483565) --> + <!-- no translation found for permdesc_register_call_provider (7034310263521081388) --> <skip /> + <string name="permlab_connection_manager" msgid="1116193254522105375">"管理电信网络连接"</string> + <string name="permdesc_connection_manager" msgid="5925480810356483565">"允许该应用管理电信网络连接。"</string> <string name="permlab_bind_incall_service" msgid="6773648341975287125">"与通话屏幕互动"</string> <string name="permdesc_bind_incall_service" msgid="8343471381323215005">"允许应用控制用户看到通话屏幕的时机和方式。"</string> <string name="permlab_bind_connection_service" msgid="3557341439297014940">"与电话服务交互"</string> @@ -1237,6 +1239,7 @@ <string name="smv_application" msgid="3307209192155442829">"“<xliff:g id="APPLICATION">%1$s</xliff:g>”应用(<xliff:g id="PROCESS">%2$s</xliff:g> 进程)违反了自我强制执行的严格模式 (StrictMode) 政策。"</string> <string name="smv_process" msgid="5120397012047462446">"进程 <xliff:g id="PROCESS">%1$s</xliff:g> 违反了自我强制执行的严格模式 (StrictMode) 政策。"</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Android正在升级..."</string> + <string name="android_start_title" msgid="8418054686415318207">"Android 正在启动…"</string> <string name="android_upgrading_apk" msgid="7904042682111526169">"正在优化第<xliff:g id="NUMBER_0">%1$d</xliff:g>个应用(共<xliff:g id="NUMBER_1">%2$d</xliff:g>个)。"</string> <string name="android_upgrading_starting_apps" msgid="451464516346926713">"正在启动应用。"</string> <string name="android_upgrading_complete" msgid="1405954754112999229">"即将完成启动。"</string> @@ -1780,10 +1783,14 @@ <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"取消时要求输入密码"</string> <string name="battery_saver_description" msgid="2510530476513605742">"为了延长电池的续航时间,节电助手会降低设备的性能,并限制振动和大部分后台流量。对于电子邮件、聊天工具等依赖于同步功能的应用,可能要打开这类应用时才能收到新信息。\n\n节电助手会在设备充电时自动关闭。"</string> <string name="downtime_condition_summary" msgid="8761776337475705749">"直到休息时间结束(<xliff:g id="FORMATTEDTIME">%1$s</xliff:g>)"</string> - <!-- no translation found for zen_mode_duration_minutes_summary:one (3177683545388923234) --> - <!-- no translation found for zen_mode_duration_minutes_summary:other (2787867221129368935) --> - <!-- no translation found for zen_mode_duration_hours_summary:one (597194865053253679) --> - <!-- no translation found for zen_mode_duration_hours_summary:other (2827214920627669898) --> + <plurals name="zen_mode_duration_minutes_summary"> + <item quantity="one" msgid="3177683545388923234">"1 分钟(到<xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2787867221129368935">"%1$d 分钟(到<xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> + <plurals name="zen_mode_duration_hours_summary"> + <item quantity="one" msgid="597194865053253679">"1 小时(到<xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2827214920627669898">"%1$d 小时(到<xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> <plurals name="zen_mode_duration_minutes"> <item quantity="one" msgid="9040808414992812341">"1分钟"</item> <item quantity="other" msgid="6924190729213550991">"%d分钟"</item> @@ -1792,7 +1799,7 @@ <item quantity="one" msgid="3480040795582254384">"1小时"</item> <item quantity="other" msgid="5408537517529822157">"%d小时"</item> </plurals> - <!-- no translation found for zen_mode_until (7336308492289875088) --> - <skip /> + <string name="zen_mode_until" msgid="7336308492289875088">"到<xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_forever" msgid="4316804956488785559">"无限期"</string> + <string name="toolbar_collapse_description" msgid="2821479483960330739">"收起"</string> </resources> diff --git a/core/res/res/values-zh-rHK/strings.xml b/core/res/res/values-zh-rHK/strings.xml index 59ff983b3ba2..ee458f2be2a2 100644 --- a/core/res/res/values-zh-rHK/strings.xml +++ b/core/res/res/values-zh-rHK/strings.xml @@ -716,14 +716,16 @@ <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"允許應用程式讀取及寫入快取檔案系統。"</string> <string name="permlab_use_sip" msgid="2052499390128979920">"撥打/接聽 SIP 電話"</string> <string name="permdesc_use_sip" msgid="2297804849860225257">"允許應用程式撥打及接聽 SIP 電話。"</string> - <!-- no translation found for permlab_register_provider (2654513709546459553) --> + <!-- no translation found for permlab_register_sim_subscription (3166535485877549177) --> <skip /> - <!-- no translation found for permdesc_register_provider (7571533832018681544) --> + <!-- no translation found for permdesc_register_sim_subscription (2138909035926222911) --> <skip /> - <!-- no translation found for permlab_connection_manager (1116193254522105375) --> + <!-- no translation found for permlab_register_call_provider (108102120289029841) --> <skip /> - <!-- no translation found for permdesc_connection_manager (5925480810356483565) --> + <!-- no translation found for permdesc_register_call_provider (7034310263521081388) --> <skip /> + <string name="permlab_connection_manager" msgid="1116193254522105375">"管理電訊連接"</string> + <string name="permdesc_connection_manager" msgid="5925480810356483565">"允許應用程式管理電訊連接。"</string> <string name="permlab_bind_incall_service" msgid="6773648341975287125">"與通話畫面互動"</string> <string name="permdesc_bind_incall_service" msgid="8343471381323215005">"允許應用程式控制通話畫面的顯示時間和方式。"</string> <string name="permlab_bind_connection_service" msgid="3557341439297014940">"與電話語音服務互動"</string> @@ -1237,6 +1239,7 @@ <string name="smv_application" msgid="3307209192155442829">"應用程式 <xliff:g id="APPLICATION">%1$s</xliff:g> (處理程序 <xliff:g id="PROCESS">%2$s</xliff:g>) 已違反其自行強制實施的嚴格模式 (StrictMode) 政策。"</string> <string name="smv_process" msgid="5120397012047462446">"處理程序 <xliff:g id="PROCESS">%1$s</xliff:g> 已違反其自行強制實施的嚴格模式 (StrictMode) 政策。"</string> <string name="android_upgrading_title" msgid="1584192285441405746">"正在升級 Android..."</string> + <string name="android_start_title" msgid="8418054686415318207">"Android 正在啟動…"</string> <string name="android_upgrading_apk" msgid="7904042682111526169">"正在優化第 <xliff:g id="NUMBER_0">%1$d</xliff:g> 個應用程式 (共 <xliff:g id="NUMBER_1">%2$d</xliff:g> 個)。"</string> <string name="android_upgrading_starting_apps" msgid="451464516346926713">"正在啟動應用程式。"</string> <string name="android_upgrading_complete" msgid="1405954754112999229">"啟動完成。"</string> @@ -1780,10 +1783,14 @@ <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"取消固定時必須輸入密碼"</string> <string name="battery_saver_description" msgid="2510530476513605742">"省電模式可延長電池使用時間,但會降低裝置的效能,並限制震動和大部分背景數據傳輸。電郵、短訊及其他需要同步處理的應用程式可能只會在開啟時才會更新。\n\n裝置充電時,省電模式會自動關閉。"</string> <string name="downtime_condition_summary" msgid="8761776337475705749">"直到停機時間於 <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> 結束"</string> - <!-- no translation found for zen_mode_duration_minutes_summary:one (3177683545388923234) --> - <!-- no translation found for zen_mode_duration_minutes_summary:other (2787867221129368935) --> - <!-- no translation found for zen_mode_duration_hours_summary:one (597194865053253679) --> - <!-- no translation found for zen_mode_duration_hours_summary:other (2827214920627669898) --> + <plurals name="zen_mode_duration_minutes_summary"> + <item quantity="one" msgid="3177683545388923234">"需時 1 分鐘 (完成時間:<xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2787867221129368935">"需時 %1$d 分鐘 (完成時間 <xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> + <plurals name="zen_mode_duration_hours_summary"> + <item quantity="one" msgid="597194865053253679">"需時 1 小時 (完成時間:<xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2827214920627669898">"需時 %1$d 小時 (完成時間:<xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> <plurals name="zen_mode_duration_minutes"> <item quantity="one" msgid="9040808414992812341">"1 分鐘"</item> <item quantity="other" msgid="6924190729213550991">"%d 分鐘"</item> @@ -1792,7 +1799,7 @@ <item quantity="one" msgid="3480040795582254384">"1 小時"</item> <item quantity="other" msgid="5408537517529822157">"%d 小時"</item> </plurals> - <!-- no translation found for zen_mode_until (7336308492289875088) --> - <skip /> + <string name="zen_mode_until" msgid="7336308492289875088">"完成時間:<xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_forever" msgid="4316804956488785559">"無限期"</string> + <string name="toolbar_collapse_description" msgid="2821479483960330739">"收合"</string> </resources> diff --git a/core/res/res/values-zh-rTW/strings.xml b/core/res/res/values-zh-rTW/strings.xml index 1848795b73dd..fdffb7c38baf 100644 --- a/core/res/res/values-zh-rTW/strings.xml +++ b/core/res/res/values-zh-rTW/strings.xml @@ -716,14 +716,16 @@ <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"允許應用程式讀取及寫入快取檔案系統。"</string> <string name="permlab_use_sip" msgid="2052499390128979920">"撥打/接聽 SIP 通話"</string> <string name="permdesc_use_sip" msgid="2297804849860225257">"允許應用程式撥打及接聽 SIP 通話。"</string> - <!-- no translation found for permlab_register_provider (2654513709546459553) --> + <!-- no translation found for permlab_register_sim_subscription (3166535485877549177) --> <skip /> - <!-- no translation found for permdesc_register_provider (7571533832018681544) --> + <!-- no translation found for permdesc_register_sim_subscription (2138909035926222911) --> <skip /> - <!-- no translation found for permlab_connection_manager (1116193254522105375) --> + <!-- no translation found for permlab_register_call_provider (108102120289029841) --> <skip /> - <!-- no translation found for permdesc_connection_manager (5925480810356483565) --> + <!-- no translation found for permdesc_register_call_provider (7034310263521081388) --> <skip /> + <string name="permlab_connection_manager" msgid="1116193254522105375">"管理電信連線"</string> + <string name="permdesc_connection_manager" msgid="5925480810356483565">"允許應用程式管理電信連線。"</string> <string name="permlab_bind_incall_service" msgid="6773648341975287125">"與通話螢幕互動"</string> <string name="permdesc_bind_incall_service" msgid="8343471381323215005">"允許應用程式控制使用者看到通話螢幕的時機和方式。"</string> <string name="permlab_bind_connection_service" msgid="3557341439297014940">"與電話語音服務互動"</string> @@ -1237,6 +1239,7 @@ <string name="smv_application" msgid="3307209192155442829">"應用程式 <xliff:g id="APPLICATION">%1$s</xliff:g> (處理程序 <xliff:g id="PROCESS">%2$s</xliff:g>) 已違反其自行強制實施的嚴格模式 (StrictMode) 政策。"</string> <string name="smv_process" msgid="5120397012047462446">"處理程序 <xliff:g id="PROCESS">%1$s</xliff:g> 已違反其自行強制實施的嚴格模式 (StrictMode) 政策。"</string> <string name="android_upgrading_title" msgid="1584192285441405746">"正在升級 Android…"</string> + <string name="android_start_title" msgid="8418054686415318207">"Android 正在啟動…"</string> <string name="android_upgrading_apk" msgid="7904042682111526169">"正在最佳化第 <xliff:g id="NUMBER_0">%1$d</xliff:g> 個應用程式 (共 <xliff:g id="NUMBER_1">%2$d</xliff:g> 個)。"</string> <string name="android_upgrading_starting_apps" msgid="451464516346926713">"正在啟動應用程式。"</string> <string name="android_upgrading_complete" msgid="1405954754112999229">"啟動完成。"</string> @@ -1780,10 +1783,14 @@ <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"取消固定時必須輸入密碼"</string> <string name="battery_saver_description" msgid="2510530476513605742">"節約耗電量功能會降低裝置的效能,並限制震動和大多數背景資料,藉此延長電池續航力。此外,電子郵件、簡訊和其他需要使用同步功能的應用程式若未開啟,將不會自動更新。\n\n當您為裝置充電時,節約耗電量功能會自動關閉。"</string> <string name="downtime_condition_summary" msgid="8761776337475705749">"直到 <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> 停機時間結束"</string> - <!-- no translation found for zen_mode_duration_minutes_summary:one (3177683545388923234) --> - <!-- no translation found for zen_mode_duration_minutes_summary:other (2787867221129368935) --> - <!-- no translation found for zen_mode_duration_hours_summary:one (597194865053253679) --> - <!-- no translation found for zen_mode_duration_hours_summary:other (2827214920627669898) --> + <plurals name="zen_mode_duration_minutes_summary"> + <item quantity="one" msgid="3177683545388923234">"1 分鐘 (結束時間:<xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2787867221129368935">"%1$d 分鐘 (結束時間:<xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> + <plurals name="zen_mode_duration_hours_summary"> + <item quantity="one" msgid="597194865053253679">"1 小時 (結束時間:<xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2827214920627669898">"%1$d 小時 (結束時間:<xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> <plurals name="zen_mode_duration_minutes"> <item quantity="one" msgid="9040808414992812341">"1 分鐘"</item> <item quantity="other" msgid="6924190729213550991">"%d 分鐘"</item> @@ -1792,7 +1799,7 @@ <item quantity="one" msgid="3480040795582254384">"1 小時"</item> <item quantity="other" msgid="5408537517529822157">"%d 小時"</item> </plurals> - <!-- no translation found for zen_mode_until (7336308492289875088) --> - <skip /> + <string name="zen_mode_until" msgid="7336308492289875088">"結束時間:<xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_forever" msgid="4316804956488785559">"無限期"</string> + <string name="toolbar_collapse_description" msgid="2821479483960330739">"收合"</string> </resources> diff --git a/core/res/res/values-zu/strings.xml b/core/res/res/values-zu/strings.xml index 10d558f4853d..2ac1433221be 100644 --- a/core/res/res/values-zu/strings.xml +++ b/core/res/res/values-zu/strings.xml @@ -716,8 +716,14 @@ <string name="permdesc_cache_filesystem" msgid="5578967642265550955">"Ivumela uhlelo lokusebenza ukuthi ifunde futhi ibhale isistimu yokufayila amafayela esikhashana."</string> <string name="permlab_use_sip" msgid="2052499390128979920">"yenza/thola amakholi we-SIP"</string> <string name="permdesc_use_sip" msgid="2297804849860225257">"Ivumela uhlelo lokusebenza ukwenza nokuthola amakholi we-SIP."</string> - <string name="permlab_register_provider" msgid="2654513709546459553">"bhalisa ukuxhumana kwezokuxhumana kwefoni okusha"</string> - <string name="permdesc_register_provider" msgid="7571533832018681544">"Ivumela uhlelo lokusebenza ukuthi lubhalise ukuxhumana kwezokuxhumana kwefoni okusha."</string> + <!-- no translation found for permlab_register_sim_subscription (3166535485877549177) --> + <skip /> + <!-- no translation found for permdesc_register_sim_subscription (2138909035926222911) --> + <skip /> + <!-- no translation found for permlab_register_call_provider (108102120289029841) --> + <skip /> + <!-- no translation found for permdesc_register_call_provider (7034310263521081388) --> + <skip /> <string name="permlab_connection_manager" msgid="1116193254522105375">"phatha ukuxhumana kwezokuxhumana kwefoni"</string> <string name="permdesc_connection_manager" msgid="5925480810356483565">"Ivumela uhlelo lokusebenza ukuthi luphathe ukuxhumana kwezokuxhumana kwefoni."</string> <string name="permlab_bind_incall_service" msgid="6773648341975287125">"hlanganyela neskrini esingaphakathi kwekholi"</string> @@ -1233,6 +1239,7 @@ <string name="smv_application" msgid="3307209192155442829">"Inqubo <xliff:g id="APPLICATION">%1$s</xliff:g> (yohlelo <xliff:g id="PROCESS">%2$s</xliff:g>) iphule inqubomgomo oziphoqelela yona Yemodi Ebukhali."</string> <string name="smv_process" msgid="5120397012047462446">"Inqubo <xliff:g id="PROCESS">%1$s</xliff:g> yephule inqubomgomo yokuziphoqelela Yemodi Ebukhali."</string> <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_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> <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Qalisa izinhlelo zokusebenza."</string> <string name="android_upgrading_complete" msgid="1405954754112999229">"Qedela ukuqala kabusha."</string> @@ -1776,10 +1783,14 @@ <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Cela iphasiwedi ngaphambi kokususa ukuphina"</string> <string name="battery_saver_description" msgid="2510530476513605742">"Ukuze usize ukwenza kangcono impilo yebhethri, isilondolozi sebhethri sehlisa ukusebenza kwedivayisi yakho futhi sikhawulela ukudlidliza nedatha eningi yangasemuva. I-imeyili, imilayezo, nezinye izinhlelo zokusebenza ezincike ekuvumelaniseni kungenzeka zingabuyekezi ngaphandle kokuthi uzivule.\n\nIsilondolozi sebhethri sivaleka ngokuzenzakalelayo uma idivayisi yakho ishaja."</string> <string name="downtime_condition_summary" msgid="8761776337475705749">"Kuze kuphele isikhathi sakho ngo-<xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> - <!-- no translation found for zen_mode_duration_minutes_summary:one (3177683545388923234) --> - <!-- no translation found for zen_mode_duration_minutes_summary:other (2787867221129368935) --> - <!-- no translation found for zen_mode_duration_hours_summary:one (597194865053253679) --> - <!-- no translation found for zen_mode_duration_hours_summary:other (2827214920627669898) --> + <plurals name="zen_mode_duration_minutes_summary"> + <item quantity="one" msgid="3177683545388923234">"Okweminithi elilodwa (kuze kube ngu-<xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2787867221129368935">"Okwamaminithi angu-%1$d (kuze kube ngu-<xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> + <plurals name="zen_mode_duration_hours_summary"> + <item quantity="one" msgid="597194865053253679">"Okwehora elilodwa (kuze kube ngu-<xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + <item quantity="other" msgid="2827214920627669898">"Ngamahora angu-%1$d (kuze kube ngu-<xliff:g id="FORMATTEDTIME">%2$s</xliff:g>)"</item> + </plurals> <plurals name="zen_mode_duration_minutes"> <item quantity="one" msgid="9040808414992812341">"Iminithi elilodwa"</item> <item quantity="other" msgid="6924190729213550991">"Amaminithi angu-%d"</item> @@ -1788,7 +1799,7 @@ <item quantity="one" msgid="3480040795582254384">"Ihora elilodwa"</item> <item quantity="other" msgid="5408537517529822157">"Amahora angu-%d"</item> </plurals> - <!-- no translation found for zen_mode_until (7336308492289875088) --> - <skip /> + <string name="zen_mode_until" msgid="7336308492289875088">"Kuze kube ngu-<xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_forever" msgid="4316804956488785559">"Unaphakade"</string> + <string name="toolbar_collapse_description" msgid="2821479483960330739">"Goqa"</string> </resources> diff --git a/docs/html/about/dashboards/index.jd b/docs/html/about/dashboards/index.jd index 808f04ab3106..448dcda0d477 100644 --- a/docs/html/about/dashboards/index.jd +++ b/docs/html/about/dashboards/index.jd @@ -41,13 +41,6 @@ with Android 2.2 and higher. Each snapshot of data represents all the devices th Google Play Store in the prior 7 days.</p> -<div class="note"> -<p><strong>Note:</strong> Beginning in September, 2013, devices running versions older than Android -2.2 do not appear in this data because those devices do not support the new Google Play Store -app. Only the new app is able to measure the number of devices that actively visit Google Play Store -and we believe this measurement best reflects your potential user-base.</p> -</div> - <h2 id="Platform">Platform Versions</h2> @@ -64,7 +57,7 @@ Platform Versions</a>.</p> </div> -<p style="clear:both"><em>Data collected during a 7-day period ending on September 9, 2014. +<p style="clear:both"><em>Data collected during a 7-day period ending on November 3, 2014. <br/>Any versions with less than 0.1% distribution are not shown.</em> </p> @@ -95,7 +88,7 @@ Screens</a>.</p> </div> -<p style="clear:both"><em>Data collected during a 7-day period ending on September 9, 2014. +<p style="clear:both"><em>Data collected during a 7-day period ending on November 3, 2014. <br/>Any screen configurations with less than 0.1% distribution are not shown.</em></p> @@ -115,7 +108,7 @@ support for any lower version (for example, support for version 2.0 also implies <img alt="" style="float:right" -src="//chart.googleapis.com/chart?chs=400x250&cht=p&chd=t%3A77.5%2C22.5&chf=bg%2Cs%2C00000000&chl=GL%202.0%7CGL%203.0&chco=c4df9b%2C6fad0c" /> +src="//chart.googleapis.com/chart?chl=GL%202.0%7CGL%203.0&chd=t%3A74.7%2C25.3&chf=bg%2Cs%2C00000000&chco=c4df9b%2C6fad0c&cht=p&chs=400x250" /> <p>To declare which version of OpenGL ES your application requires, you should use the {@code android:glEsVersion} attribute of the <a @@ -133,17 +126,17 @@ uses.</p> </tr> <tr> <td>2.0</td> -<td>77.5%</td> +<td>74.7%</td> </tr> <tr> <td>3.0</td> -<td>22.5%</td> +<td>25.3%</td> </tr> </table> -<p style="clear:both"><em>Data collected during a 7-day period ending on September 9, 2014</em></p> +<p style="clear:both"><em>Data collected during a 7-day period ending on November 3, 2014</em></p> @@ -161,42 +154,42 @@ uses.</p> var VERSION_DATA = [ { - "chart": "//chart.googleapis.com/chart?chco=c4df9b%2C6fad0c&cht=p&chs=500x250&chl=Froyo%7CGingerbread%7CIce%20Cream%20Sandwich%7CJelly%20Bean%7CKitKat&chd=t%3A0.7%2C11.4%2C9.6%2C53.8%2C24.5&chf=bg%2Cs%2C00000000", + "chart": "//chart.googleapis.com/chart?chl=Froyo%7CGingerbread%7CIce%20Cream%20Sandwich%7CJelly%20Bean%7CKitKat&chd=t%3A0.6%2C9.8%2C8.5%2C50.9%2C30.2&chf=bg%2Cs%2C00000000&chco=c4df9b%2C6fad0c&cht=p&chs=500x250", "data": [ { "api": 8, "name": "Froyo", - "perc": "0.7" + "perc": "0.6" }, { "api": 10, "name": "Gingerbread", - "perc": "11.4" + "perc": "9.8" }, { "api": 15, "name": "Ice Cream Sandwich", - "perc": "9.6" + "perc": "8.5" }, { "api": 16, "name": "Jelly Bean", - "perc": "25.1" + "perc": "22.8" }, { "api": 17, "name": "Jelly Bean", - "perc": "20.7" + "perc": "20.8" }, { "api": 18, "name": "Jelly Bean", - "perc": "8.0" + "perc": "7.3" }, { "api": 19, "name": "KitKat", - "perc": "24.5" + "perc": "30.2" } ] } @@ -210,27 +203,27 @@ var SCREEN_DATA = "Large": { "hdpi": "0.6", "ldpi": "0.5", - "mdpi": "4.3", - "tvdpi": "1.7", + "mdpi": "4.5", + "tvdpi": "1.9", "xhdpi": "0.6" }, "Normal": { - "hdpi": "35.7", - "mdpi": "10.6", - "xhdpi": "19.2", - "xxhdpi": "16.2" + "hdpi": "36.6", + "mdpi": "9.9", + "xhdpi": "18.9", + "xxhdpi": "16.0" }, "Small": { - "ldpi": "6.2" + "ldpi": "5.8" }, "Xlarge": { "hdpi": "0.3", - "mdpi": "3.7", - "xhdpi": "0.4" + "mdpi": "3.9", + "xhdpi": "0.5" } }, - "densitychart": "//chart.googleapis.com/chart?chco=c4df9b%2C6fad0c&cht=p&chs=400x250&chl=ldpi%7Cmdpi%7Ctvdpi%7Chdpi%7Cxhdpi%7Cxxhdpi&chd=t%3A6.7%2C18.6%2C1.7%2C36.6%2C20.2%2C16.2&chf=bg%2Cs%2C00000000", - "layoutchart": "//chart.googleapis.com/chart?chco=c4df9b%2C6fad0c&cht=p&chs=400x250&chl=Xlarge%7CLarge%7CNormal%7CSmall&chd=t%3A4.4%2C7.7%2C81.7%2C6.2&chf=bg%2Cs%2C00000000" + "densitychart": "//chart.googleapis.com/chart?chl=ldpi%7Cmdpi%7Ctvdpi%7Chdpi%7Cxhdpi%7Cxxhdpi&chd=t%3A6.3%2C18.3%2C1.9%2C37.5%2C20.0%2C16.0&chf=bg%2Cs%2C00000000&chco=c4df9b%2C6fad0c&cht=p&chs=400x250", + "layoutchart": "//chart.googleapis.com/chart?chl=Xlarge%7CLarge%7CNormal%7CSmall&chd=t%3A4.7%2C8.1%2C81.4%2C5.8&chf=bg%2Cs%2C00000000&chco=c4df9b%2C6fad0c&cht=p&chs=400x250" } ]; @@ -302,6 +295,16 @@ var VERSION_NAMES = "api":19, "link":"<a href='/about/versions/android-4.4.html'>4.4</a>", "codename":"KitKat" + }, + { + "api":20, + "link":"<a href='/about/versions/android-4.4.html'>4.4W</a>", + "codename":"KitKat for Wear" + }, + { + "api":21, + "link":"<a href='/about/versions/android-5.0.html'>4.4</a>", + "codename":"Lollipop" } ]; diff --git a/docs/html/design/tv/index.jd b/docs/html/design/tv/index.jd index 483c24f7ce92..d79e27987656 100644 --- a/docs/html/design/tv/index.jd +++ b/docs/html/design/tv/index.jd @@ -1,4 +1,7 @@ -page.title=Android TV +page.title=Designing for Android TV +page.tags="tv", "leanback","designguidelines" +page.metaDescription=Guidelines to help you create a great leanback experience on Android TV. +page.image=design/tv/images/apps-games-rows.jpg @jd:body @@ -6,12 +9,15 @@ page.title=Android TV experience. It's important to understand how your app is presented in the main user interface and how your app can help users get to the content they want quickly.</p> -<p class="note"> +<p class="caution"> <strong>Important:</strong> There are specific design requirements your app must meet to qualify as an Android TV app on Google Play. For more information, see the requirements listed in <a href="{@docRoot}distribute/essentials/quality/tv.html">TV App Quality</a>. </p> +<p class="note"><strong>Note:</strong> For information about how to publish your TV apps in Google Play, +see <a href="/distribute/googleplay/tv.html">Distributing to Android TV</a>.</p> + <h2>Home Screen</h2> <p>The Home Screen is the start of the user experience, providing search, content diff --git a/docs/html/design/tv/patterns.jd b/docs/html/design/tv/patterns.jd index 768dcfcab703..be7ae319ac91 100644 --- a/docs/html/design/tv/patterns.jd +++ b/docs/html/design/tv/patterns.jd @@ -41,6 +41,8 @@ page.title=UI Patterns for TV language, you must provide versions of the banner image for each supported language.</li> </ul> +<p>See <a href="{@docRoot}training/tv/start/start.html#banner">Provide a home screen banner</a> +in Get Started with TV Apps for more information.</p> <h3>Recommendation Icons</h3> diff --git a/docs/html/distribute/essentials/quality/tv.jd b/docs/html/distribute/essentials/quality/tv.jd index b13307e8c04f..20018c3f35dd 100644 --- a/docs/html/distribute/essentials/quality/tv.jd +++ b/docs/html/distribute/essentials/quality/tv.jd @@ -47,11 +47,9 @@ page.image=/distribute/images/gp-tv-quality.png qualify as an Android TV app on Google Play. </p> -<p class="note"> - <strong>Note:</strong> You will be able to submit TV apps to Google Play with the public release - of Android 5.0 on November 3. Stay tuned for more information about how to submit your TV apps - through the Google Play Developer Console. -</p> +<p class="note"><strong>Note:</strong> For information about how to publish your TV apps in Google Play, +see <a href="{@docRoot}distribute/googleplay/tv.html">Distributing to Android TV</a>.</p> + <div class="headerLine"> diff --git a/docs/html/distribute/googleplay/edu/start.jd b/docs/html/distribute/googleplay/edu/start.jd index 3c3a175fb520..f4c971752b2b 100644 --- a/docs/html/distribute/googleplay/edu/start.jd +++ b/docs/html/distribute/googleplay/edu/start.jd @@ -1,4 +1,4 @@ -page.title=Publish Apps +page.title=Publish Education Apps page.image=/distribute/images/play-education.jpg meta.tags="education", "guidelines", "quality" page.tags="education", "addendum" diff --git a/docs/html/distribute/googleplay/googleplay_toc.cs b/docs/html/distribute/googleplay/googleplay_toc.cs index 45464c757a38..fc7cd11ea87a 100644 --- a/docs/html/distribute/googleplay/googleplay_toc.cs +++ b/docs/html/distribute/googleplay/googleplay_toc.cs @@ -18,6 +18,12 @@ </div> </li> <li class="nav-section"> + <div class="nav-section empty" style="font-weight:normal"><a href="<?cs var:toroot?>distribute/googleplay/tv.html"> + <span class="en">Distributing to <span style="white-space:nowrap">Android TV</span></span> + </a> + </div> + </li> + <li class="nav-section"> <div class="nav-section-header" style="font-weight:normal"><a href="<?cs var:toroot?>distribute/googleplay/edu/about.html"> <span class="en">Google Play for Education</span> </a> diff --git a/docs/html/distribute/googleplay/index.jd b/docs/html/distribute/googleplay/index.jd index a21593022845..20f07fa67917 100644 --- a/docs/html/distribute/googleplay/index.jd +++ b/docs/html/distribute/googleplay/index.jd @@ -21,7 +21,7 @@ nonavpage=true data-maxResults="3"> </div> - <h3>Google Play for Education</h3> + <h3>Distribute Your Apps</h3> <div class="resource-widget resource-flow-layout landing col-16" data-query="collection:distribute/gp/gpfelanding" diff --git a/docs/html/distribute/googleplay/tv.jd b/docs/html/distribute/googleplay/tv.jd new file mode 100644 index 000000000000..37cbe2676974 --- /dev/null +++ b/docs/html/distribute/googleplay/tv.jd @@ -0,0 +1,320 @@ +page.title=Distributing to Android TV +page.image=/design/tv/images/atv-home.jpg +meta.tags="tv", "publish", "quality" +page.tags="tv", "publish", "googleplay" +page.metaDescription=Distribute your apps, games, and content to Android TV. + +@jd:body + +<div id="qv-wrapper"><div id="qv"> +<h2>How to Participate</h2> +<ol> +<li><a href="#understand_guidelines">Understand the guidelines</a></li> +<li><a href="#develop_app">Develop a great app for TV</a></li> +<li><a href="#test_app">Test for TV App Quality</a></li> +<li><a href="#opt_in">Opt-in</a></li> +<li><a href="#track_review">Track your review</a></li> +</ol> + +<h2>You Should Also Read</h2> +<ol> +<li><a href="{@docRoot}distribute/essentials/quality/tv.html">TV App Quality</a></li> +<li><a href="{@docRoot}distribute/essentials/quality/core.html">Core App Quality</a></li> +</ol> + +</div></div> + +<p> + If you've got a great app or game, Android TV and Google Play can help you + bring it to users right in their living rooms. You'll be able to offer your + apps and games in a storefront experience that’s optimized for TV. You can + extend your new or existing apps for TV and then publish them using familiar + tools and processes in Google Play. +</p> + +<p> + To get started, review the sections in this document to learn how to + distribute your TV apps to users through Google Play. Be sure to read + <a href="{@docRoot}distribute/essentials/quality/tv.html">TV App Quality</a> + for information on the usability and quality standards that your apps should + meet. When your app is ready, you can opt-in to publishing in the Android TV + storefront from the Developer Console. +</p> + +<h2 id="how_to_participate"> + How to Participate +</h2> + +<p> + Google Play lets you put your TV apps in front of a new audience of users in + their living rooms. You can develop and publish using your existing Developer + Console account and your current distribution and pricing settings. It's easy + to participate — the sections below outline the process. +</p> + +<div style="float:right;margin:1em 0 1.5em 2em;"> + <img src="{@docRoot}images/gp-tv-process.png"> +</div> + +<h3 id="understand_guidelines"> + 1. Understand guidelines and requirements +</h3> + +<p> + To prepare for a successful launch on Android TV, start by reviewing the + guidelines for creating great app experiences on TV. See the <a href= + "{@docRoot}design/tv/index.html">Android TV design guidelines</a> for ideas + on extending your app for TV and details on design and usability. +</p> + +<p> + As you get started designing your TV experience, make sure to read and + understand the quality criteria for TV apps. The Google Play experience for + Android TV <strong>showcases only apps that are usable on the TV</strong> + — your apps can participate if they meet a set of basic quality + criteria. See <a href="{@docRoot}distribute/essentials/quality/tv.html">TV + App Quality</a> for details. +</p> + +<h3 id="develop_app">2. Develop a great app for TV</h3> + +<p> + A great app for TV is designed for living room use and takes advantage of the + capabilities of Android TV and related input accessories such as game + controllers, D-pads, and remotes. The app is refined to offer a polished, + high-quality experience on large screens and delivers a compelling feature + set for users. +</p> + +<p> + As you consider your TV app, review the <a href= + "{@docRoot}training/tv/start/index.html">developer documentation</a> and + usability guidelines and plan on supporting them to the greatest extent + possible. Make sure to design a great leanback experience for users and build + it with the leanback library included in the SDK. You’ll want to optimize + other parts of your app for the TV use case and it's a good idea to identify + those early in your development process. +</p> + +<p> + In most cases, we recommend delivering your TV experience as part of your + existing app for phones, tablets, and other devices, using the same package + name and store listing. This approach lets users upgrade to your TV experience + seamlessly and also lets you take advantage of the reviews and ratings you’ve + earned in your app for phones and tablets. +</p> + +<p> + You can bundle your TV intents, leanback library, and TV-specific code and + resources as part of a single APK solution for all supported devices. If + necessary, you can use <a href= + "{@docRoot}google/play/publishing/multiple-apks.html">Multiple APK + Support</a> to deliver a custom binary to Android TV devices under the same + package name and store listing that you use for phones and tablets. +</p> + +<p> + Throughout design and development, it's important to have a suitable device + on which to prototype and test your user experience. You should acquire one + or more Android TV devices or emulators and set up your testing environment + as early as possible. The recommended hardware device for testing in the + Android TV environment is Nexus Player, which is <a href= + "http://www.google.com/intl/all/nexus/player/">available from Google Play</a> + and other stores, and you should also acquire a game controller and other TV + input devices. +</p> + +<h3 id="test_app">3. Test for TV App Quality</h3> + +<p> + Your TV apps should be designed to perform well, look great on Android TV, + and offer the best user experience possible. Google Play showcases + high-quality apps for easy discovery by users in Google Play. Here’s how you + can participate and deliver an Android TV app that users will enjoy. +</p> + +<ul> + <li>Meet Core App Quality guidelines + <ul> + <li>Follow <a href="{@docRoot}design/index.html">Android Design + guidelines</a>. Pay special attention to using <a href= + "http://www.google.com/design/spec/material-design/introduction.html">material + design</a> in your app. + </li> + + <li>Test your apps against the <a href= + "{@docRoot}distribute/essentials/quality/core.html">Core App Quality + guidelines</a>. + </li> + </ul> + </li> + <li>Meet <a href="{@docRoot}distribute/essentials/quality/tv.html">TV App + Quality</a> guidelines + <ul> + <li>Follow our best practices for <a href="{@docRoot}training/tv/index.html"> + TV app development</a></li> + <li>Make sure your app meets all of the <a href= + "{@docRoot}distribute/essentials/quality/tv.html">TV App Quality</a> criteria</li> + </ul> + </li> + <li>Strive for simplicity and highest usability</li> +</ul> + +<h3 id="opt_in">4. Opt-in to Android TV and publish</h3> + +<p> + When you've built your release-ready APK and tested to ensure that it meets + all of the <a href="{@docRoot}distribute/essentials/quality/tv.html">TV App + Quality</a> guidelines, upload it to the Developer Console. Update your store + listing with TV screenshots and TV banner, and set distribution options as + needed. If you aren't familiar with how to prepare for launch on Google Play, + see the <a href= + "{@docRoot}distribute/googleplay/publish/preparing.html">Launch + Checklist.</a> +</p> + +<p> + Before you can publish to Android TV users, you need to opt-in to Android + TV from the <strong>Pricing and Distribution</strong> section of the + Developer Console. Opt-in means that you want your app to be made available + to Android TV users through Google Play, and that + your app meets <a href="{@docRoot}distribute/essentials/quality/tv.html">TV + App Quality</a> guidelines. +</p> + +<p> + You can opt-in only if your app meets two preliminary quality + criteria that are automatically checked on APK upload: +</p> + +<ul> + <li>Your app manifest must include an intent type of <a href= + "{@docRoot}reference/android/content/Intent.html#ACTION_MAIN"><code>ACTION_MAIN</code></a> + with category <a href= + "{@docRoot}reference/android/content/Intent.html#CATEGORY_LEANBACK_LAUNCHER"> + <code>CATEGORY_LEANBACK_LAUNCHER</code></a>. Learn more <a href= + "{@docRoot}training/tv/start/start.html#tv-activity">here</a>. + </li> + + <li>Your app must declare that it does not require a touchscreen. The + manifest must declare the <code>android.hardware.touchscreen</code> hardware + with <code>android:required="false”</code>. Learn more <a href= + "{@docRoot}training/tv/start/hardware.html#declare-hardware-requirements">here</a>. + </li> +</ul> + +<p> + If your app meets the preliminary criteria, you’ll see an opt-in checkbox for + Android TV, as shown below. If the opt-in checkbox is not enabled, review + your APK to ensure it meets the preliminary criteria. +</p> + +<p> + After you opt-in and save the changes, you can publish your app as usual. + Before making the app available to Android TV users, Google Play submits + your app for review against the <a href= + "{@docRoot}distribute/essentials/quality/tv.html">TV App Quality</a> criteria + and notifies you of the result. See the next section for details on how to + track the approval status of your app. +</p> + +<p> + If your app meet <a href="{@docRoot}distribute/essentials/quality/tv.html">TV + App Quality</a> criteria, Google Play makes that app available to Android TV + users. Your app is alsoeligible for higher-visibility featuring in app + collections and promotions. To let users everywhere know that your app is + designed for Android TV, Google Play decorates the app’s store listing with a + TV badge. +</p> + +<p> + Note that opt-in and review do not affect the availability of your app to + other devices in Google Play Store — on phones and tablets, for + example, your app is available as soon as you publish. +</p> + +<p> + Here are the steps to opt-in to Android TV in the Developer Console: +</p> + +<ol> + <li>Make sure your app meets all <a href= + "{@docRoot}distribute/essentials/quality/tv.html">TV App Quality</a> criteria + </li> + + <li>Add TV screenshots and banner graphic to the app’s store listing + </li> + + <li>In the <strong>All Applications</strong> page, click the app you want to opt-in. + </li> + + <li>Under <strong>Pricing and Distribution</strong>, scroll down to find <em>Android TV</em> and the + opt-in checkbox. + </li> + + <li>Click the checkbox next to <em>Distribute your app to Android TV</em>. + </li> + + <li>Click <strong>Save</strong> to save your changes. + </li> +</ol> + +<div style="padding-top:1em"> + <img style="border:2px solid #ddd;" src="{@docRoot}images/gp-tv-opt-in.png"> + <p class="caption"> + <strong>Opt-in for TV:</strong> Include your app in Android TV by opting-in from the + Developer Console. + </p> +</div> + +<h3 id="track_review">5. Track your review and approval</h3> + +<p> + If your app meets the technical and quality criteria for Android TV, as described above, + your app will be available for users to enjoy on Android TV. If your app doesn’t meet + the criteria, you’ll receive a <strong>notification email sent to your developer account + address</strong>, with a summary of the areas that you need to address. When you’ve made + the necessary adjustments, you can upload a new version of your app to the Developer + Console. +</p> + +<p> + At any time, you can check the review and approval status of your app in the + Developer Console, under <em>Android TV</em> in the app's <strong>Pricing and Distribution</strong> + page. +</p> + +<p> + There are three approval states: +</p> + +<ul> + <li> + <em>Pending</em> — Your app was sent for review and the review is not yet + complete. + </li> + + <li> + <em>Approved</em> — Your app was reviewed and approved. The app will be + made available directly to Android TV users. + </li> + + <li> + <em>Not approved</em> — Your app was reviewed and not approved. Check the + notification email for information about why the app was not approved. You + can address any issues and opt-in and publish again to initiate another + review. + </li> +</ul> + +<p>To understand how your apps are evaluated, please see the <a href= +"{@docRoot}distribute/essentials/quality/tv.html">TV App Quality</a> document. </p> + + + <h3>Related resources</h3> + + <div class="resource-widget resource-flow-layout col-16" + data-query="collection:tvlanding" + data-cardSizes="9x6, 6x3x2" + data-maxResults="6"> + </div> diff --git a/docs/html/guide/topics/manifest/activity-element.jd b/docs/html/guide/topics/manifest/activity-element.jd index ade05c98af5b..7374a67e5e16 100644 --- a/docs/html/guide/topics/manifest/activity-element.jd +++ b/docs/html/guide/topics/manifest/activity-element.jd @@ -9,6 +9,7 @@ parent.link=manifest-intro.html android:<a href="#reparent">allowTaskReparenting</a>=["true" | "false"] android:<a href="#always">alwaysRetainTaskState</a>=["true" | "false"] android:<a href="#autoremrecents">autoRemoveFromRecents</a>=["true" | "false"] + android:<a href="#banner">banner</a>="<i>drawable resource</i>" android:<a href="#clear">clearTaskOnLaunch</a>=["true" | "false"] android:<a href="#config">configChanges</a>=["mcc", "mnc", "locale", "touchscreen", "keyboard", "keyboardHidden", @@ -153,6 +154,29 @@ automatically removed from the overview screen. This overrides the caller's use "{@code true}" or "{@code false}".</dd> +<dt><a name="banner"></a>{@code android:banner}</dt> +<dd>A <a href="{@docRoot}guide/topics/resources/drawable-resource.html">drawable resource</a> +providing an extended graphical banner for its associated item. Use with the +{@code <activity>} tag to supply a default banner for a specific activity, or with the +<a href="{@docRoot}guide/topics/manifest/application-element.html"><code><application></code></a> +tag to supply a banner for all application activities. + +<p>The system uses the banner to represent an app in +the Android TV home screen. Since the banner is displayed only in the home screen, it +should only be specified by applications with an activity that handles the +{@link android.content.Intent#CATEGORY_LEANBACK_LAUNCHER} intent.</p> + +<p>This attribute must be set as a reference to a drawable resource containing +the image (for example {@code "@drawable/banner"}). There is no default banner. +</p> + +<p> +See <a href="{@docRoot}design/tv/patterns.html#banner"> +Banners</a> in the UI Patterns for TV design guide, and <a href="{@docRoot}training/tv/start/start.html#banner"> +Provide a home screen banner</a> in Get Started with TV Apps for more information. +</p></dd> + + <dt><a name="clear"></a>{@code android:clearTaskOnLaunch}</dt> <dd>Whether or not all activities will be removed from the task, except for the root activity, whenever it is re-launched from the home screen — diff --git a/docs/html/guide/topics/manifest/application-element.jd b/docs/html/guide/topics/manifest/application-element.jd index 33f6bce36801..8a0e837629b8 100644 --- a/docs/html/guide/topics/manifest/application-element.jd +++ b/docs/html/guide/topics/manifest/application-element.jd @@ -7,12 +7,14 @@ page.title=<application> <dd><pre class="stx"><application android:<a href="#reparent">allowTaskReparenting</a>=["true" | "false"] android:<a href="#allowbackup">allowBackup</a>=["true" | "false"] android:<a href="#agent">backupAgent</a>="<i>string</i>" + android:<a href="#banner">banner</a>="<i>drawable resource</i>" android:<a href="#debug">debuggable</a>=["true" | "false"] android:<a href="#desc">description</a>="<i>string resource</i>" android:<a href="#enabled">enabled</a>=["true" | "false"] android:<a href="#code">hasCode</a>=["true" | "false"] android:<a href="#hwaccel">hardwareAccelerated</a>=["true" | "false"] android:<a href="#icon">icon</a>="<i>drawable resource</i>" + android:<a href="#isGame">isGame</a>=["true" | "false"] android:<a href="#killrst">killAfterRestore</a>=["true" | "false"] android:<a href="#largeHeap">largeHeap</a>=["true" | "false"] android:<a href="#label">label</a>="<i>string resource</i>" @@ -48,13 +50,13 @@ page.title=<application> <dt>description:</dt> <dd itemprop="description">The declaration of the application. This element contains subelements -that declare each of the application's components and has attributes -that can affect all the components. Many of these attributes (such as -{@code icon}, {@code label}, {@code permission}, {@code process}, -{@code taskAffinity}, and {@code allowTaskReparenting}) set default values +that declare each of the application's components and has attributes +that can affect all the components. Many of these attributes (such as +{@code icon}, {@code label}, {@code permission}, {@code process}, +{@code taskAffinity}, and {@code allowTaskReparenting}) set default values for corresponding attributes of the component elements. Others (such as -{@code debuggable}, {@code enabled}, {@code description}, and -{@code allowClearUserData}) set values for the application as a whole and +{@code debuggable}, {@code enabled}, {@code description}, and +{@code allowClearUserData}) set values for the application as a whole and cannot be overridden by the components.</dd> @@ -65,18 +67,18 @@ cannot be overridden by the components.</dd> <dd><dl class="attr"> <dt><a name="reparent"></a>{@code android:allowTaskReparenting}</dt> -<dd>Whether or not activities that the application defines can move from -the task that started them to the task they have an affinity for when that task -is next brought to the front — {@code "true"} if they can move, and -{@code "false"} if they must remain with the task where they started. +<dd>Whether or not activities that the application defines can move from +the task that started them to the task they have an affinity for when that task +is next brought to the front — {@code "true"} if they can move, and +{@code "false"} if they must remain with the task where they started. The default value is {@code "false"}. <p> -The -<code><a href="{@docRoot}guide/topics/manifest/activity-element.html"><activity></a></code> -element has its own +The +<code><a href="{@docRoot}guide/topics/manifest/activity-element.html"><activity></a></code> +element has its own <code><a href="{@docRoot}guide/topics/manifest/activity-element.html#reparent">allowTaskReparenting</a></code> -attribute that can override the value set here. See that attribute for more +attribute that can override the value set here. See that attribute for more information. </p></dd> @@ -92,46 +94,68 @@ The default value of this attribute is true.</dd> <dt><a name="agent"></a>{@code android:backupAgent}</dt> <dd>The name of the class that implement's the application's backup agent, a subclass of {@link android.app.backup.BackupAgent}. The attribute value should be -a fully qualified class name (such as, {@code "com.example.project.MyBackupAgent"}). -However, as a shorthand, if the first character of the name is a period -(for example, {@code ".MyBackupAgent"}), it is appended to the -package name specified in the -<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html"><manifest></a></code> +a fully qualified class name (such as, {@code "com.example.project.MyBackupAgent"}). +However, as a shorthand, if the first character of the name is a period +(for example, {@code ".MyBackupAgent"}), it is appended to the +package name specified in the +<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html"><manifest></a></code> element. <p> There is no default. The name must be specified. </p></dd> +<dt><a name="banner"></a>{@code android:banner}</dt> +<dd>A <a href="{@docRoot}guide/topics/resources/drawable-resource.html">drawable resource</a> +providing an extended graphical banner for its associated item. Use with the +{@code <application>} tag to supply a default banner for all application activities, or with the +<a href="{@docRoot}guide/topics/manifest/activity-element.html"><code><activity></code></a> +tag to supply a banner for a specific activity. + +<p>The system uses the banner to represent an app in +the Android TV home screen. Since the banner is displayed only in the home screen, it +should only be specified by applications with an activity that handles the +{@link android.content.Intent#CATEGORY_LEANBACK_LAUNCHER} intent.</p> + +<p>This attribute must be set as a reference to a drawable resource containing +the image (for example {@code "@drawable/banner"}). There is no default banner. +</p> + +<p> +See <a href="{@docRoot}design/tv/patterns.html#banner"> +Banners</a> in the UI Patterns for TV design guide, and <a href="{@docRoot}training/tv/start/start.html#banner"> +Provide a home screen banner</a> in Get Started with TV Apps for more information. +</p></dd> + <dt><a name="debug"></a>{@code android:debuggable}</dt> -<dd>Whether or not the application can be debugged, even when running +<dd>Whether or not the application can be debugged, even when running on a device in user mode — {@code "true"} if it can be, and {@code "false"} -if not. The default value is {@code "false"}.</dd> +if not. The default value is {@code "false"}.</dd> <dt><a name="desc"></a>{@code android:description}</dt> <dd>User-readable text about the application, longer and more descriptive than the application label. The value must be set as a reference to a string resource. Unlike the label, it cannot be a raw string. There is no default value.</dd> <dt><a name="enabled"></a>{@code android:enabled}</dt> -<dd>Whether or not the Android system can instantiate components of -the application — {@code "true"} if it can, and {@code "false"} -if not. If the value is {@code "true"}, each component's -{@code enabled} attribute determines whether that component is enabled -or not. If the value is {@code "false"}, it overrides the +<dd>Whether or not the Android system can instantiate components of +the application — {@code "true"} if it can, and {@code "false"} +if not. If the value is {@code "true"}, each component's +{@code enabled} attribute determines whether that component is enabled +or not. If the value is {@code "false"}, it overrides the component-specific values; all components are disabled. <p> The default value is {@code "true"}. -</p></dd> +</p></dd> <dt><a name="code"></a>{@code android:hasCode}</dt> -<dd>Whether or not the application contains any code — {@code "true"} -if it does, and {@code "false"} if not. When the value is {@code "false"}, -the system does not try to load any application code when launching components. +<dd>Whether or not the application contains any code — {@code "true"} +if it does, and {@code "false"} if not. When the value is {@code "false"}, +the system does not try to load any application code when launching components. The default value is {@code "true"}. <p> An application would not have any code of its own only if it's using nothing -but built-in component classes, such as an activity that uses the {@link +but built-in component classes, such as an activity that uses the {@link android.app.AliasActivity} class, a rare occurrence.</p> </dd> @@ -140,7 +164,7 @@ android.app.AliasActivity} class, a rare occurrence.</p> activities and views in this application — {@code "true"} if it should be enabled, and {@code "false"} if not. The default value is {@code "true"} if you've set either <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#min">{@code minSdkVersion}</a> -or <a +or <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#target">{@code targetSdkVersion}</a> to {@code "14"} or higher; otherwise, it's {@code "false"}. @@ -161,20 +185,26 @@ make use of the renderer without errors.</p> </dd> <dt><a name="icon"></a>{@code android:icon}</dt> -<dd>An icon for the application as whole, and the default icon for -each of the application's components. See the individual -{@code icon} attributes for -<code><a href="{@docRoot}guide/topics/manifest/activity-element.html"><activity></a></code>, +<dd>An icon for the application as whole, and the default icon for +each of the application's components. See the individual +{@code icon} attributes for +<code><a href="{@docRoot}guide/topics/manifest/activity-element.html"><activity></a></code>, <code><a href="{@docRoot}guide/topics/manifest/activity-alias-element.html"><activity-alias></a></code>, -<code><a href="{@docRoot}guide/topics/manifest/service-element.html"><service></a></code>, +<code><a href="{@docRoot}guide/topics/manifest/service-element.html"><service></a></code>, <code><a href="{@docRoot}guide/topics/manifest/receiver-element.html"><receiver></a></code>, and <code><a href="{@docRoot}guide/topics/manifest/provider-element.html"><provider></a></code> elements. <p> This attribute must be set as a reference to a drawable resource containing -the image (for example {@code "@drawable/icon"}). There is no default icon. +the image (for example {@code "@drawable/icon"}). There is no default icon. </p></dd> +<dt><a name="isGame"></a>{@code android:isGame}</dt> +<dd>Whether or not the application is a game. The system may group together applications classifed +as games or display them separately from other applications. + +<p>The default is {@code false}.</p></dd> + <dt><a name="killrst"></a>{@code android:killAfterRestore}</dt> <dd>Whether the application in question should be terminated after its settings have been restored during a full-system restore operation. @@ -202,65 +232,65 @@ because some devices are constrained by their total available memory.</p> </dd> <dt><a name="label"></a>{@code android:label}</dt> -<dd>A user-readable label for the application as a whole, and a default -label for each of the application's components. See the individual -{@code label} attributes for -<code><a href="{@docRoot}guide/topics/manifest/activity-element.html"><activity></a></code>, +<dd>A user-readable label for the application as a whole, and a default +label for each of the application's components. See the individual +{@code label} attributes for +<code><a href="{@docRoot}guide/topics/manifest/activity-element.html"><activity></a></code>, <code><a href="{@docRoot}guide/topics/manifest/activity-alias-element.html"><activity-alias></a></code>, -<code><a href="{@docRoot}guide/topics/manifest/service-element.html"><service></a></code>, +<code><a href="{@docRoot}guide/topics/manifest/service-element.html"><service></a></code>, <code><a href="{@docRoot}guide/topics/manifest/receiver-element.html"><receiver></a></code>, and <code><a href="{@docRoot}guide/topics/manifest/provider-element.html"><provider></a></code> elements. <p> The label should be set as a reference to a string resource, so that -it can be localized like other strings in the user interface. -However, as a convenience while you're developing the application, +it can be localized like other strings in the user interface. +However, as a convenience while you're developing the application, it can also be set as a raw string. </p></dd> <dt><a name="logo"></a>{@code android:logo}</dt> <dd>A logo for the application as whole, and the default logo for activities. <p>This attribute must be set as a reference to a drawable resource containing -the image (for example {@code "@drawable/logo"}). There is no default logo.</p></dd> +the image (for example {@code "@drawable/logo"}). There is no default logo.</p></dd> <dt><a name="space"></a>{@code android:manageSpaceActivity}</dt> -<dd>The fully qualified name of an Activity subclass that the system -can launch to let users manage the memory occupied by the application -on the device. The activity should also be declared with an +<dd>The fully qualified name of an Activity subclass that the system +can launch to let users manage the memory occupied by the application +on the device. The activity should also be declared with an <code><a href="{@docRoot}guide/topics/manifest/activity-element.html"><activity></a></code> element. </dd> <dt><a name="nm"></a>{@code android:name}</dt> -<dd>The fully qualified name of an {@link android.app.Application} -subclass implemented for the application. When the application process -is started, this class is instantiated before any of the application's -components. +<dd>The fully qualified name of an {@link android.app.Application} +subclass implemented for the application. When the application process +is started, this class is instantiated before any of the application's +components. <p> The subclass is optional; most applications won't need one. -In the absence of a subclass, Android uses an instance of the base +In the absence of a subclass, Android uses an instance of the base Application class. </p></dd> <dt><a name="prmsn"></a>{@code android:permission}</dt> -<dd>The name of a permission that clients must have in order to interact -with the application. This attribute is a convenient way to set a -permission that applies to all of the application's components. It can -be overwritten by setting the {@code permission} attributes of individual +<dd>The name of a permission that clients must have in order to interact +with the application. This attribute is a convenient way to set a +permission that applies to all of the application's components. It can +be overwritten by setting the {@code permission} attributes of individual components. <p> -For more information on permissions, see the -<a href="{@docRoot}guide/topics/manifest/manifest-intro.html#sectperm">Permissions</a> -section in the introduction and another document, +For more information on permissions, see the +<a href="{@docRoot}guide/topics/manifest/manifest-intro.html#sectperm">Permissions</a> +section in the introduction and another document, <a href="{@docRoot}guide/topics/security/security.html">Security and Permissions</a>. </p></dd> <dt><a name="persistent"></a>{@code android:persistent}</dt> -<dd>Whether or not the application should remain running at all times — -{@code "true"} if it should, and {@code "false"} if not. The default value -is {@code "false"}. Applications should not normally set this flag; +<dd>Whether or not the application should remain running at all times — +{@code "true"} if it should, and {@code "false"} if not. The default value +is {@code "false"}. Applications should not normally set this flag; persistence mode is intended only for certain system applications.</dd> <dt><a name="proc"></a>{@code android:process}</dt> @@ -282,9 +312,9 @@ user ID and be signed with the same certificate. </p> <p> -If the name assigned to this attribute begins with a colon (':'), a new +If the name assigned to this attribute begins with a colon (':'), a new process, private to the application, is created when it's needed. -If the process name begins with a lowercase character, a global process +If the process name begins with a lowercase character, a global process of that name is created. A global process can be shared with other applications, reducing resource usage. </p></dd> @@ -307,7 +337,7 @@ incompatible. <em>Use with caution!</em> If your app requires an {@link android.accounts.Account}, the value for this attribute must correspond to the account authenticator type used by your app (as defined by {@link android.accounts.AuthenticatorDescription}), -such as "com.google". +such as "com.google". <p>The default value is null and indicates that the application can work <em>without</em> any accounts. @@ -369,13 +399,13 @@ direction associated to the user's Locale choice (your layouts will always be le <dt><a name="aff"></a>{@code android:taskAffinity}</dt> <dd>An affinity name that applies to all activities within the application, except for those that set a different affinity with their own -<code><a href="{@docRoot}guide/topics/manifest/activity-element.html#aff">taskAffinity</a></code> +<code><a href="{@docRoot}guide/topics/manifest/activity-element.html#aff">taskAffinity</a></code> attributes. See that attribute for more information. <p> -By default, all activities within an application share the same -affinity. The name of that affinity is the same as the package name -set by the +By default, all activities within an application share the same +affinity. The name of that affinity is the same as the package name +set by the <code><a href="{@docRoot}guide/topics/manifest/manifest-element.html"><manifest></a></code> element. </p></dd> @@ -389,7 +419,7 @@ only through adb.</dd> <dt><a name="theme"></a>{@code android:theme}</dt> <dd>A reference to a style resource defining a default theme for all activities in the application. Individual activities can override -the default by setting their own <code><a href="{@docRoot}guide/topics/manifest/activity-element.html#theme">theme</a></code> +the default by setting their own <code><a href="{@docRoot}guide/topics/manifest/activity-element.html#theme">theme</a></code> attributes. For more information, see the <a href="{@docRoot}guide/topics/ui/themes.html">Styles and Themes</a> developer guide. </dd> diff --git a/docs/html/images/games/game-controller-buttons_2x_crop.png b/docs/html/images/games/game-controller-buttons_2x_crop.png Binary files differnew file mode 100644 index 000000000000..54dc2fa4dd06 --- /dev/null +++ b/docs/html/images/games/game-controller-buttons_2x_crop.png diff --git a/docs/html/images/gp-tv-opt-in.png b/docs/html/images/gp-tv-opt-in.png Binary files differnew file mode 100644 index 000000000000..a8158188a9e6 --- /dev/null +++ b/docs/html/images/gp-tv-opt-in.png diff --git a/docs/html/images/gp-tv-process.png b/docs/html/images/gp-tv-process.png Binary files differnew file mode 100644 index 000000000000..a53077729c3c --- /dev/null +++ b/docs/html/images/gp-tv-process.png diff --git a/docs/html/jd_collections.js b/docs/html/jd_collections.js index 08c00902ac24..d63580e80010 100644 --- a/docs/html/jd_collections.js +++ b/docs/html/jd_collections.js @@ -57,8 +57,8 @@ var RESOURCE_COLLECTIONS = { }, "distribute/gp/gpfelanding": { "resources": [ + "distribute/googleplay/tv.html", "distribute/googleplay/edu/about.html", - "distribute/googleplay/edu/start.html", "distribute/googleplay/edu/videos.html" ] }, @@ -773,6 +773,14 @@ var RESOURCE_COLLECTIONS = { "https://support.google.com/googleplay/answer/2651410" ] }, + "tvlanding": { + "title": "", + "resources": [ + "tv/index.html", + "design/tv/index.html", + "training/tv/index.html" + ] + }, "distribute/stories/games": { "title": "", "resources": [ diff --git a/docs/html/training/tv/discovery/index.jd b/docs/html/training/tv/discovery/index.jd index fbc8c9f96eac..58491492ccf4 100644 --- a/docs/html/training/tv/discovery/index.jd +++ b/docs/html/training/tv/discovery/index.jd @@ -1,4 +1,5 @@ -page.title=Helping Users Find Content on TV +page.title=Helping Users Find Your Content on TV +page.tags="tv", "leanback" startpage=true diff --git a/docs/html/training/tv/games/index.jd b/docs/html/training/tv/games/index.jd index 2f510a948cf6..5276d7fc9a42 100644 --- a/docs/html/training/tv/games/index.jd +++ b/docs/html/training/tv/games/index.jd @@ -1,5 +1,7 @@ page.title=Building TV Games -page.tags="controller" +page.tags="tv", "games", "controller" +page.image=images/games/game-controller-buttons_2x_crop.png +page.metaDescription=How to bring your games to Android TV, including recommendations and examples. page.article=true @jd:body @@ -180,7 +182,7 @@ href="{@docRoot}training/game-controllers/controller-input.html#button" It includes a white controller on black background and a black controller on white background (shown in figure 1), as a PNG file and an Adobe® Illustrator® file.</p> -<img src="{@docRoot}images/games/game-controller-buttons_2x.png" width="700" +<img itemprop="image" src="{@docRoot}images/games/game-controller-buttons_2x.png" width="700" srcset="{@docRoot}images/games/game-controller-buttons_2x.png 2x, {@docRoot}images/games/game-controller-buttons.png 1x" /> <p class="img-caption"><b>Figure 1.</b> Example controller instructions using the @@ -194,22 +196,22 @@ It includes a white controller on black background and a black controller on whi <p>There are a some special things games should include in the Android manifest.</p> -<h3 id="Launcher">Show your game in the launcher</h3> +<h3 id="Launcher">Show your game on the home screen</h3> <p> - The Android TV launcher home screen displays games in a separate row from regular apps. - To make your game appear in the list of games, add the - <a href="{@docRoot}guide/topics/manifest/meta-data-element.html" - ><code><meta-data></code></a> tag in your app manifest with <code>android:name</code> - set to <code>"isGame"</code> and <code>android:value</code> - set to <code>"true"</code>. For example: + The Android TV home screen displays games in a separate row from regular apps. + To make your game appear in the list of games, set the + <a href="{@docRoot}guide/topics/manifest/application-element.html#isGame"> + {@code android:isGame}</a> attribute to <code>"true"</code> in your app manifest's + <a href="{@docRoot}guide/topics/manifest/application-element.html"><code><application></code> + </a> tag. For example: </p> <pre class="fragment"> -<application> - ... - <meta-data android:name="isGame" android:value="true" > - ... -</application> +<application + ... + android:isGame="true" + ... +> </pre> diff --git a/docs/html/training/tv/index.jd b/docs/html/training/tv/index.jd index 56667a9b50d6..d52e1e804285 100644 --- a/docs/html/training/tv/index.jd +++ b/docs/html/training/tv/index.jd @@ -1,8 +1,11 @@ page.title=Building Apps for TV page.trainingcourse=true - +page.metaDescription=Starting point for building apps and games for Android TV, with guidelines, information, and examples. +page.image=design/tv/images/focus.png @jd:body -<p>These classes teach you how to build apps for TV devices.</p>
\ No newline at end of file +<p>These classes teach you how to build apps for TV devices.</p> + +<p class="note"><strong>Note:</strong> For details on how to publish your TV apps in Google Play, see <a href="{docRoot}distribute/googleplay/tv.html">Distributing to Android TV</a>.</p>
\ No newline at end of file diff --git a/docs/html/training/tv/playback/index.jd b/docs/html/training/tv/playback/index.jd index 118fc6c5600d..09c3f24307ef 100644 --- a/docs/html/training/tv/playback/index.jd +++ b/docs/html/training/tv/playback/index.jd @@ -1,5 +1,5 @@ page.title=Building TV Playback Apps -page.tags="leanback" +page.tags="tv","leanback" startpage=true diff --git a/docs/html/training/tv/start/index.jd b/docs/html/training/tv/start/index.jd index ceefea1ac23f..fb478a85df3f 100644 --- a/docs/html/training/tv/start/index.jd +++ b/docs/html/training/tv/start/index.jd @@ -1,4 +1,5 @@ page.title=Building TV Apps +page.tags="tv", "leanback" startpage=true @jd:body diff --git a/docs/html/training/tv/start/start.jd b/docs/html/training/tv/start/start.jd index bebeeddb1098..3b26abf1a4c3 100644 --- a/docs/html/training/tv/start/start.jd +++ b/docs/html/training/tv/start/start.jd @@ -100,7 +100,8 @@ startpage=true <p>The following code snippet shows how to include this intent filter in your manifest:</p> <pre> -<application> +<application + android:banner="@drawable/banner" > ... <activity android:name="com.example.android.MainActivity" @@ -141,6 +142,34 @@ startpage=true "{@docRoot}training/tv/start/layouts.html">Building TV Layouts</a>. </p> +<h3 id="banner">Provide a home screen banner</h3> + +<p> + An application must provide a home screen banner if it includes a Leanback launcher intent + filter. The banner is the app launch point that appears on the home screen in the apps and + games rows. Desribe the banner in the manifest as follows: +</p> + +<pre> +<application + . . . + android:banner="@drawable/banner" > + . . . +</application> +</pre> + +<p> + Use the <a href="{@docRoot}guide/topics/manifest/application-element.html#banner">{@code android:banner}</a> + attribute with the <a href="{@docRoot}guide/topics/manifest/application.html"><code><application></code></a> + tag to supply a default banner for all application activities, or with the + <a href="{@docRoot}guide/topics/manifest/activity-element.html"><code><activity></code></a> + tag to supply a banner for a specific activity. +</p> + +<p> + See <a href="{@docRoot}design/tv/patterns.html#banner">Banners</a> in the UI Patterns for TV + design guide. +</p> <h3 id="tv-libraries">Add TV support libraries</h3> diff --git a/docs/html/training/tv/tif/index.jd b/docs/html/training/tv/tif/index.jd index 4746e42ed129..cde8ba7bc8a8 100644 --- a/docs/html/training/tv/tif/index.jd +++ b/docs/html/training/tv/tif/index.jd @@ -1,5 +1,5 @@ page.title=Building Live TV Apps -page.tags=tif +page.tags="tv", "tif" page.article=true @jd:body diff --git a/docs/html/training/wearables/apps/bt-debugging.jd b/docs/html/training/wearables/apps/bt-debugging.jd index 8d09c43d20ac..98cf804762a7 100644 --- a/docs/html/training/wearables/apps/bt-debugging.jd +++ b/docs/html/training/wearables/apps/bt-debugging.jd @@ -58,7 +58,8 @@ Target: connected </li> <li>Connect the handheld to your machine over USB and run: <pre> -adb forward tcp:4444 localabstract:/adb-hub; adb connect localhost:4444 +adb forward tcp:4444 localabstract:/adb-hub +adb connect localhost:4444 </pre> <p class="note"><b>Note</b>: You can use any available port that you have access to.</p> diff --git a/docs/html/tv/index.jd b/docs/html/tv/index.jd index 71e177bade47..e4d7f7ac9902 100644 --- a/docs/html/tv/index.jd +++ b/docs/html/tv/index.jd @@ -1,5 +1,9 @@ -page.title=Android TV +page.title=About Android TV +page.type=about +page.image=tv/images/hero.jpg page.viewport_width=970 +page.tags="tv", "leanback" +page.metaDescription=Bring your apps, games, and content to the biggest screen in the house. fullpage=true no_footer_links=true page.type=about diff --git a/include/androidfw/ResourceTypes.h b/include/androidfw/ResourceTypes.h index 85e442da0184..6b8449422c16 100644 --- a/include/androidfw/ResourceTypes.h +++ b/include/androidfw/ResourceTypes.h @@ -36,6 +36,17 @@ namespace android { +/** + * In C++11, char16_t is defined as *at least* 16 bits. We do a lot of + * casting on raw data and expect char16_t to be exactly 16 bits. + */ +#if __cplusplus >= 201103L +struct __assertChar16Size { + static_assert(sizeof(char16_t) == sizeof(uint16_t), "char16_t is not 16 bits"); + static_assert(alignof(char16_t) == alignof(uint16_t), "char16_t is not 16-bit aligned"); +}; +#endif + /** ******************************************************************** * PNG Extensions * @@ -702,25 +713,25 @@ public: // These are available for all nodes: int32_t getCommentID() const; - const uint16_t* getComment(size_t* outLen) const; + const char16_t* getComment(size_t* outLen) const; uint32_t getLineNumber() const; // This is available for TEXT: int32_t getTextID() const; - const uint16_t* getText(size_t* outLen) const; + const char16_t* getText(size_t* outLen) const; ssize_t getTextValue(Res_value* outValue) const; // These are available for START_NAMESPACE and END_NAMESPACE: int32_t getNamespacePrefixID() const; - const uint16_t* getNamespacePrefix(size_t* outLen) const; + const char16_t* getNamespacePrefix(size_t* outLen) const; int32_t getNamespaceUriID() const; - const uint16_t* getNamespaceUri(size_t* outLen) const; + const char16_t* getNamespaceUri(size_t* outLen) const; // These are available for START_TAG and END_TAG: int32_t getElementNamespaceID() const; - const uint16_t* getElementNamespace(size_t* outLen) const; + const char16_t* getElementNamespace(size_t* outLen) const; int32_t getElementNameID() const; - const uint16_t* getElementName(size_t* outLen) const; + const char16_t* getElementName(size_t* outLen) const; // Remaining methods are for retrieving information about attributes // associated with a START_TAG: @@ -729,10 +740,10 @@ public: // Returns -1 if no namespace, -2 if idx out of range. int32_t getAttributeNamespaceID(size_t idx) const; - const uint16_t* getAttributeNamespace(size_t idx, size_t* outLen) const; + const char16_t* getAttributeNamespace(size_t idx, size_t* outLen) const; int32_t getAttributeNameID(size_t idx) const; - const uint16_t* getAttributeName(size_t idx, size_t* outLen) const; + const char16_t* getAttributeName(size_t idx, size_t* outLen) const; uint32_t getAttributeNameResID(size_t idx) const; // These will work only if the underlying string pool is UTF-8. @@ -740,7 +751,7 @@ public: const char* getAttributeName8(size_t idx, size_t* outLen) const; int32_t getAttributeValueStringID(size_t idx) const; - const uint16_t* getAttributeStringValue(size_t idx, size_t* outLen) const; + const char16_t* getAttributeStringValue(size_t idx, size_t* outLen) const; int32_t getAttributeDataType(size_t idx) const; int32_t getAttributeData(size_t idx) const; @@ -845,7 +856,7 @@ struct ResTable_package uint32_t id; // Actual name of this package, \0-terminated. - char16_t name[128]; + uint16_t name[128]; // Offset to a ResStringPool_header defining the resource // type symbol table. If zero, this package is inheriting from @@ -1450,7 +1461,7 @@ struct ResTable_lib_entry uint32_t packageId; // The package name of the shared library. \0 terminated. - char16_t packageName[128]; + uint16_t packageName[128]; }; /** @@ -1681,7 +1692,7 @@ public: size_t defPackageLen = 0, uint32_t* outTypeSpecFlags = NULL) const; - static bool expandResourceRef(const uint16_t* refStr, size_t refLen, + static bool expandResourceRef(const char16_t* refStr, size_t refLen, String16* outPackage, String16* outType, String16* outName, diff --git a/libs/androidfw/Android.mk b/libs/androidfw/Android.mk index dbee7ed8699a..20d547007cff 100644 --- a/libs/androidfw/Android.mk +++ b/libs/androidfw/Android.mk @@ -14,7 +14,7 @@ LOCAL_PATH:= $(call my-dir) -# libandroidfw is partially built for the host (used by obbtool and others) +# libandroidfw is partially built for the host (used by obbtool, aapt, and others) # These files are common to host and target builds. commonSources := \ @@ -35,26 +35,17 @@ deviceSources := \ BackupHelpers.cpp \ CursorWindow.cpp -hostSources := \ - $(commonSources) +hostSources := $(commonSources) # For the host # ===================================================== - include $(CLEAR_VARS) -LOCAL_SRC_FILES:= $(hostSources) - LOCAL_MODULE:= libandroidfw - LOCAL_MODULE_TAGS := optional - LOCAL_CFLAGS += -DSTATIC_ANDROIDFW_FOR_TOOLS - -LOCAL_C_INCLUDES := \ - external/zlib - -LOCAL_STATIC_LIBRARIES := liblog libziparchive-host libutils +LOCAL_SRC_FILES:= $(hostSources) +LOCAL_C_INCLUDES := external/zlib include $(BUILD_HOST_STATIC_LIBRARY) @@ -64,8 +55,13 @@ include $(BUILD_HOST_STATIC_LIBRARY) include $(CLEAR_VARS) +LOCAL_MODULE:= libandroidfw +LOCAL_MODULE_TAGS := optional LOCAL_SRC_FILES:= $(deviceSources) - +LOCAL_C_INCLUDES := \ + external/zlib \ + system/core/include +LOCAL_STATIC_LIBRARIES := libziparchive LOCAL_SHARED_LIBRARIES := \ libbinder \ liblog \ @@ -73,16 +69,6 @@ LOCAL_SHARED_LIBRARIES := \ libutils \ libz -LOCAL_STATIC_LIBRARIES := libziparchive - -LOCAL_C_INCLUDES := \ - external/zlib \ - system/core/include - -LOCAL_MODULE:= libandroidfw - -LOCAL_MODULE_TAGS := optional - include $(BUILD_SHARED_LIBRARY) diff --git a/libs/androidfw/ResourceTypes.cpp b/libs/androidfw/ResourceTypes.cpp index 3bbca1a0165e..f1e4858e4052 100644 --- a/libs/androidfw/ResourceTypes.cpp +++ b/libs/androidfw/ResourceTypes.cpp @@ -87,11 +87,11 @@ inline static T max(T a, T b) { // range checked; guaranteed to NUL-terminate within the stated number of available slots // NOTE: if this truncates the dst string due to running out of space, no attempt is // made to avoid splitting surrogate pairs. -static void strcpy16_dtoh(uint16_t* dst, const uint16_t* src, size_t avail) +static void strcpy16_dtoh(char16_t* dst, const uint16_t* src, size_t avail) { - uint16_t* last = dst + avail - 1; + char16_t* last = dst + avail - 1; while (*src && (dst < last)) { - char16_t s = dtohs(*src); + char16_t s = dtohs(static_cast<char16_t>(*src)); *dst++ = s; src++; } @@ -501,7 +501,7 @@ status_t ResStringPool::setTo(const void* data, size_t size, bool copyData) if (mHeader->flags&ResStringPool_header::UTF8_FLAG) { charSize = sizeof(uint8_t); } else { - charSize = sizeof(char16_t); + charSize = sizeof(uint16_t); } // There should be at least space for the smallest string @@ -547,8 +547,8 @@ status_t ResStringPool::setTo(const void* data, size_t size, bool copyData) e[i] = dtohl(mEntries[i]); } if (!(mHeader->flags&ResStringPool_header::UTF8_FLAG)) { - const char16_t* strings = (const char16_t*)mStrings; - char16_t* s = const_cast<char16_t*>(strings); + const uint16_t* strings = (const uint16_t*)mStrings; + uint16_t* s = const_cast<uint16_t*>(strings); for (i=0; i<mStringPoolSize; i++) { s[i] = dtohs(strings[i]); } @@ -558,7 +558,7 @@ status_t ResStringPool::setTo(const void* data, size_t size, bool copyData) if ((mHeader->flags&ResStringPool_header::UTF8_FLAG && ((uint8_t*)mStrings)[mStringPoolSize-1] != 0) || (!mHeader->flags&ResStringPool_header::UTF8_FLAG && - ((char16_t*)mStrings)[mStringPoolSize-1] != 0)) { + ((uint16_t*)mStrings)[mStringPoolSize-1] != 0)) { ALOGW("Bad string block: last string is not 0-terminated\n"); return (mError=BAD_TYPE); } @@ -656,7 +656,7 @@ void ResStringPool::uninit() * add it together with the next character. */ static inline size_t -decodeLength(const char16_t** str) +decodeLength(const uint16_t** str) { size_t len = **str; if ((len & 0x8000) != 0) { @@ -689,19 +689,19 @@ decodeLength(const uint8_t** str) return len; } -const uint16_t* ResStringPool::stringAt(size_t idx, size_t* u16len) const +const char16_t* ResStringPool::stringAt(size_t idx, size_t* u16len) const { if (mError == NO_ERROR && idx < mHeader->stringCount) { const bool isUTF8 = (mHeader->flags&ResStringPool_header::UTF8_FLAG) != 0; - const uint32_t off = mEntries[idx]/(isUTF8?sizeof(char):sizeof(char16_t)); + const uint32_t off = mEntries[idx]/(isUTF8?sizeof(uint8_t):sizeof(uint16_t)); if (off < (mStringPoolSize-1)) { if (!isUTF8) { - const char16_t* strings = (char16_t*)mStrings; - const char16_t* str = strings+off; + const uint16_t* strings = (uint16_t*)mStrings; + const uint16_t* str = strings+off; *u16len = decodeLength(&str); if ((uint32_t)(str+*u16len-strings) < mStringPoolSize) { - return str; + return reinterpret_cast<const char16_t*>(str); } else { ALOGW("Bad string block: string #%d extends to %d, past end at %d\n", (int)idx, (int)(str+*u16len-strings), (int)mStringPoolSize); @@ -1013,7 +1013,7 @@ int32_t ResXMLParser::getCommentID() const return mCurNode != NULL ? dtohl(mCurNode->comment.index) : -1; } -const uint16_t* ResXMLParser::getComment(size_t* outLen) const +const char16_t* ResXMLParser::getComment(size_t* outLen) const { int32_t id = getCommentID(); return id >= 0 ? mTree.mStrings.stringAt(id, outLen) : NULL; @@ -1032,7 +1032,7 @@ int32_t ResXMLParser::getTextID() const return -1; } -const uint16_t* ResXMLParser::getText(size_t* outLen) const +const char16_t* ResXMLParser::getText(size_t* outLen) const { int32_t id = getTextID(); return id >= 0 ? mTree.mStrings.stringAt(id, outLen) : NULL; @@ -1055,7 +1055,7 @@ int32_t ResXMLParser::getNamespacePrefixID() const return -1; } -const uint16_t* ResXMLParser::getNamespacePrefix(size_t* outLen) const +const char16_t* ResXMLParser::getNamespacePrefix(size_t* outLen) const { int32_t id = getNamespacePrefixID(); //printf("prefix=%d event=%p\n", id, mEventCode); @@ -1070,7 +1070,7 @@ int32_t ResXMLParser::getNamespaceUriID() const return -1; } -const uint16_t* ResXMLParser::getNamespaceUri(size_t* outLen) const +const char16_t* ResXMLParser::getNamespaceUri(size_t* outLen) const { int32_t id = getNamespaceUriID(); //printf("uri=%d event=%p\n", id, mEventCode); @@ -1088,7 +1088,7 @@ int32_t ResXMLParser::getElementNamespaceID() const return -1; } -const uint16_t* ResXMLParser::getElementNamespace(size_t* outLen) const +const char16_t* ResXMLParser::getElementNamespace(size_t* outLen) const { int32_t id = getElementNamespaceID(); return id >= 0 ? mTree.mStrings.stringAt(id, outLen) : NULL; @@ -1105,7 +1105,7 @@ int32_t ResXMLParser::getElementNameID() const return -1; } -const uint16_t* ResXMLParser::getElementName(size_t* outLen) const +const char16_t* ResXMLParser::getElementName(size_t* outLen) const { int32_t id = getElementNameID(); return id >= 0 ? mTree.mStrings.stringAt(id, outLen) : NULL; @@ -1134,7 +1134,7 @@ int32_t ResXMLParser::getAttributeNamespaceID(size_t idx) const return -2; } -const uint16_t* ResXMLParser::getAttributeNamespace(size_t idx, size_t* outLen) const +const char16_t* ResXMLParser::getAttributeNamespace(size_t idx, size_t* outLen) const { int32_t id = getAttributeNamespaceID(idx); //printf("attribute namespace=%d idx=%d event=%p\n", id, idx, mEventCode); @@ -1165,7 +1165,7 @@ int32_t ResXMLParser::getAttributeNameID(size_t idx) const return -1; } -const uint16_t* ResXMLParser::getAttributeName(size_t idx, size_t* outLen) const +const char16_t* ResXMLParser::getAttributeName(size_t idx, size_t* outLen) const { int32_t id = getAttributeNameID(idx); //printf("attribute name=%d idx=%d event=%p\n", id, idx, mEventCode); @@ -1205,7 +1205,7 @@ int32_t ResXMLParser::getAttributeValueStringID(size_t idx) const return -1; } -const uint16_t* ResXMLParser::getAttributeStringValue(size_t idx, size_t* outLen) const +const char16_t* ResXMLParser::getAttributeStringValue(size_t idx, size_t* outLen) const { int32_t id = getAttributeValueStringID(idx); //XML_NOISY(printf("getAttributeValue 0x%x=0x%x\n", idx, id)); @@ -4239,7 +4239,7 @@ nope: return 0; } -bool ResTable::expandResourceRef(const uint16_t* refStr, size_t refLen, +bool ResTable::expandResourceRef(const char16_t* refStr, size_t refLen, String16* outPackage, String16* outType, String16* outName, @@ -5665,8 +5665,8 @@ status_t ResTable::parsePackage(const ResTable_package* const pkg, if (idx == 0) { idx = mPackageGroups.size() + 1; - char16_t tmpName[sizeof(pkg->name)/sizeof(char16_t)]; - strcpy16_dtoh(tmpName, pkg->name, sizeof(pkg->name)/sizeof(char16_t)); + char16_t tmpName[sizeof(pkg->name)/sizeof(pkg->name[0])]; + strcpy16_dtoh(tmpName, pkg->name, sizeof(pkg->name)/sizeof(pkg->name[0])); group = new PackageGroup(this, String16(tmpName), id); if (group == NULL) { delete package; @@ -6036,7 +6036,10 @@ status_t ResTable::createIdmap(const ResTable& overlay, *outSize += 2 * sizeof(uint16_t); // overlay packages are assumed to contain only one package group - const String16 overlayPackage(overlay.mPackageGroups[0]->packages[0]->package->name); + const ResTable_package* overlayPackageStruct = overlay.mPackageGroups[0]->packages[0]->package; + char16_t tmpName[sizeof(overlayPackageStruct->name)/sizeof(overlayPackageStruct->name[0])]; + strcpy16_dtoh(tmpName, overlayPackageStruct->name, sizeof(overlayPackageStruct->name)/sizeof(overlayPackageStruct->name[0])); + const String16 overlayPackage(tmpName); for (size_t typeIndex = 0; typeIndex < pg->types.size(); ++typeIndex) { const TypeList& typeList = pg->types[typeIndex]; @@ -6345,8 +6348,10 @@ void ResTable::print(bool inclValues) const // Use a package's real ID, since the ID may have been assigned // if this package is a shared library. packageId = pkg->package->id; + char16_t tmpName[sizeof(pkg->package->name)/sizeof(pkg->package->name[0])]; + strcpy16_dtoh(tmpName, pkg->package->name, sizeof(pkg->package->name)/sizeof(pkg->package->name[0])); printf(" Package %d id=0x%02x name=%s\n", (int)pkgIndex, - pkg->package->id, String8(String16(pkg->package->name)).string()); + pkg->package->id, String8(tmpName).string()); } for (size_t typeIndex=0; typeIndex < pg->types.size(); typeIndex++) { diff --git a/libs/androidfw/misc.cpp b/libs/androidfw/misc.cpp index 29686efe3753..ea54cc56e7b0 100644 --- a/libs/androidfw/misc.cpp +++ b/libs/androidfw/misc.cpp @@ -22,9 +22,9 @@ #include <androidfw/misc.h> #include <sys/stat.h> -#include <string.h> +#include <cstring> #include <errno.h> -#include <stdio.h> +#include <cstdio> using namespace android; diff --git a/libs/androidfw/tests/Android.mk b/libs/androidfw/tests/Android.mk index b2e465c55e47..2d7906f28ba3 100644 --- a/libs/androidfw/tests/Android.mk +++ b/libs/androidfw/tests/Android.mk @@ -37,7 +37,6 @@ testFiles := \ include $(CLEAR_VARS) LOCAL_MODULE := libandroidfw_tests - LOCAL_SRC_FILES := $(testFiles) LOCAL_STATIC_LIBRARIES := \ libandroidfw \ @@ -55,11 +54,9 @@ ifneq ($(SDK_ONLY),true) include $(CLEAR_VARS) LOCAL_MODULE := libandroidfw_tests - LOCAL_SRC_FILES := $(testFiles) \ BackupData_test.cpp \ ObbFile_test.cpp - LOCAL_SHARED_LIBRARIES := \ libandroidfw \ libcutils \ diff --git a/libs/hwui/Caches.cpp b/libs/hwui/Caches.cpp index ad50894ee073..952f7394fb5c 100644 --- a/libs/hwui/Caches.cpp +++ b/libs/hwui/Caches.cpp @@ -280,7 +280,7 @@ void Caches::dumpMemoryUsage(String8 &log) { layer->getWidth(), layer->getHeight(), layer->isTextureLayer(), layer->getTexture(), layer->getFbo(), layer->getStrongCount()); - memused = layer->getWidth() * layer->getHeight() * 4; + memused += layer->getWidth() * layer->getHeight() * 4; } log.appendFormat(" Layers total %8d (numLayers = %zu)\n", memused, mRenderState->mActiveLayers.size()); diff --git a/media/java/android/media/AudioService.java b/media/java/android/media/AudioService.java index 2f683828d3b1..1062880e7a4d 100644 --- a/media/java/android/media/AudioService.java +++ b/media/java/android/media/AudioService.java @@ -740,15 +740,17 @@ public class AudioService extends IAudioService.Stub { } private void checkAllAliasStreamVolumes() { - int numStreamTypes = AudioSystem.getNumStreamTypes(); - for (int streamType = 0; streamType < numStreamTypes; streamType++) { - if (streamType != mStreamVolumeAlias[streamType]) { - mStreamStates[streamType]. + synchronized (VolumeStreamState.class) { + int numStreamTypes = AudioSystem.getNumStreamTypes(); + for (int streamType = 0; streamType < numStreamTypes; streamType++) { + if (streamType != mStreamVolumeAlias[streamType]) { + mStreamStates[streamType]. setAllIndexes(mStreamStates[mStreamVolumeAlias[streamType]]); - } - // apply stream volume - if (!mStreamStates[streamType].isMuted()) { - mStreamStates[streamType].applyAllVolumes(); + } + // apply stream volume + if (!mStreamStates[streamType].isMuted_syncVSS()) { + mStreamStates[streamType].applyAllVolumes(); + } } } } @@ -1520,7 +1522,9 @@ public class AudioService extends IAudioService.Stub { /** get stream mute state. */ public boolean isStreamMute(int streamType) { - return mStreamStates[streamType].isMuted(); + synchronized (VolumeStreamState.class) { + return mStreamStates[streamType].isMuted_syncVSS(); + } } private class RmtSbmxFullVolDeathHandler implements IBinder.DeathRecipient { @@ -1658,17 +1662,19 @@ public class AudioService extends IAudioService.Stub { public int getStreamVolume(int streamType) { ensureValidStreamType(streamType); int device = getDeviceForStream(streamType); - int index = mStreamStates[streamType].getIndex(device); + synchronized (VolumeStreamState.class) { + int index = mStreamStates[streamType].getIndex(device); - // by convention getStreamVolume() returns 0 when a stream is muted. - if (mStreamStates[streamType].isMuted()) { - index = 0; - } - if (index != 0 && (mStreamVolumeAlias[streamType] == AudioSystem.STREAM_MUSIC) && - (device & mFixedVolumeDevices) != 0) { - index = mStreamStates[streamType].getMaxIndex(); + // by convention getStreamVolume() returns 0 when a stream is muted. + if (mStreamStates[streamType].isMuted_syncVSS()) { + index = 0; + } + if (index != 0 && (mStreamVolumeAlias[streamType] == AudioSystem.STREAM_MUSIC) && + (device & mFixedVolumeDevices) != 0) { + index = mStreamStates[streamType].getMaxIndex(); + } + return (index + 5) / 10; } - return (index + 5) / 10; } public int getMasterVolume() { @@ -1822,7 +1828,7 @@ public class AudioService extends IAudioService.Stub { // on voice capable devices if (isPlatformVoice() && mStreamVolumeAlias[streamType] == AudioSystem.STREAM_RING) { - synchronized (mStreamStates[streamType]) { + synchronized (VolumeStreamState.class) { Set set = mStreamStates[streamType].mIndex.entrySet(); Iterator i = set.iterator(); while (i.hasNext()) { @@ -2321,16 +2327,15 @@ public class AudioService extends IAudioService.Stub { continue; } - synchronized (streamState) { - streamState.readSettings(); - + streamState.readSettings(); + synchronized (VolumeStreamState.class) { // unmute stream that was muted but is not affect by mute anymore - if (streamState.isMuted() && ((!isStreamAffectedByMute(streamType) && + if (streamState.isMuted_syncVSS() && ((!isStreamAffectedByMute(streamType) && !isStreamMutedByRingerMode(streamType)) || mUseFixedVolume)) { int size = streamState.mDeathHandlers.size(); for (int i = 0; i < size; i++) { streamState.mDeathHandlers.get(i).mMuteCount = 1; - streamState.mDeathHandlers.get(i).mute(false); + streamState.mDeathHandlers.get(i).mute_syncVSS(false); } } } @@ -3344,6 +3349,12 @@ public class AudioService extends IAudioService.Stub { // Inner classes /////////////////////////////////////////////////////////////////////////// + // NOTE: Locking order for synchronized objects related to volume or ringer mode management: + // 1 mScoclient OR mSafeMediaVolumeState + // 2 mSetModeDeathHandlers + // 3 mSettingsLock + // 4 VolumeStreamState.class + // 5 mCameraSoundForced public class VolumeStreamState { private final int mStreamType; @@ -3425,9 +3436,10 @@ public class AudioService extends IAudioService.Stub { } } - public void applyDeviceVolume(int device) { + // must be called while synchronized VolumeStreamState.class + public void applyDeviceVolume_syncVSS(int device) { int index; - if (isMuted()) { + if (isMuted_syncVSS()) { index = 0; } else if (((device & AudioSystem.DEVICE_OUT_ALL_A2DP) != 0 && mAvrcpAbsVolSupported) || ((device & mFullVolumeDevices) != 0)) { @@ -3443,7 +3455,7 @@ public class AudioService extends IAudioService.Stub { // apply default volume first: by convention this will reset all // devices volumes in audio policy manager to the supplied value int index; - if (isMuted()) { + if (isMuted_syncVSS()) { index = 0; } else { index = (getIndex(AudioSystem.DEVICE_OUT_DEFAULT) + 5)/10; @@ -3456,7 +3468,7 @@ public class AudioService extends IAudioService.Stub { Map.Entry entry = (Map.Entry)i.next(); int device = ((Integer)entry.getKey()).intValue(); if (device != AudioSystem.DEVICE_OUT_DEFAULT) { - if (isMuted()) { + if (isMuted_syncVSS()) { index = 0; } else if (((device & AudioSystem.DEVICE_OUT_ALL_A2DP) != 0 && mAvrcpAbsVolSupported) @@ -3568,12 +3580,12 @@ public class AudioService extends IAudioService.Stub { public void mute(IBinder cb, boolean state) { synchronized (VolumeStreamState.class) { - VolumeDeathHandler handler = getDeathHandler(cb, state); + VolumeDeathHandler handler = getDeathHandler_syncVSS(cb, state); if (handler == null) { Log.e(TAG, "Could not get client death handler for stream: "+mStreamType); return; } - handler.mute(state); + handler.mute_syncVSS(state); } } @@ -3595,7 +3607,7 @@ public class AudioService extends IAudioService.Stub { || (((device & mFixedVolumeDevices) != 0) && index != 0)) { entry.setValue(mIndexMax); } - applyDeviceVolume(device); + applyDeviceVolume_syncVSS(device); } } } @@ -3619,8 +3631,8 @@ public class AudioService extends IAudioService.Stub { mICallback = cb; } - // must be called while synchronized on parent VolumeStreamState - public void mute(boolean state) { + // must be called while synchronized VolumeStreamState.class + public void mute_syncVSS(boolean state) { boolean updateVolume = false; if (state) { if (mMuteCount == 0) { @@ -3632,7 +3644,7 @@ public class AudioService extends IAudioService.Stub { } VolumeStreamState.this.mDeathHandlers.add(this); // If the stream is not yet muted by any client, set level to 0 - if (!VolumeStreamState.this.isMuted()) { + if (!VolumeStreamState.this.isMuted_syncVSS()) { updateVolume = true; } } catch (RemoteException e) { @@ -3656,7 +3668,7 @@ public class AudioService extends IAudioService.Stub { if (mICallback != null) { mICallback.unlinkToDeath(this, 0); } - if (!VolumeStreamState.this.isMuted()) { + if (!VolumeStreamState.this.isMuted_syncVSS()) { updateVolume = true; } } @@ -3674,15 +3686,17 @@ public class AudioService extends IAudioService.Stub { public void binderDied() { Log.w(TAG, "Volume service client died for stream: "+mStreamType); - if (mMuteCount != 0) { - // Reset all active mute requests from this client. - mMuteCount = 1; - mute(false); + synchronized (VolumeStreamState.class) { + if (mMuteCount != 0) { + // Reset all active mute requests from this client. + mMuteCount = 1; + mute_syncVSS(false); + } } } } - private synchronized int muteCount() { + private int muteCount() { int count = 0; int size = mDeathHandlers.size(); for (int i = 0; i < size; i++) { @@ -3691,12 +3705,13 @@ public class AudioService extends IAudioService.Stub { return count; } - private synchronized boolean isMuted() { + // must be called while synchronized VolumeStreamState.class + private boolean isMuted_syncVSS() { return muteCount() != 0; } - // only called by mute() which is already synchronized - private VolumeDeathHandler getDeathHandler(IBinder cb, boolean state) { + // must be called while synchronized VolumeStreamState.class + private VolumeDeathHandler getDeathHandler_syncVSS(IBinder cb, boolean state) { VolumeDeathHandler handler; int size = mDeathHandlers.size(); for (int i = 0; i < size; i++) { @@ -3773,25 +3788,26 @@ public class AudioService extends IAudioService.Stub { private void setDeviceVolume(VolumeStreamState streamState, int device) { - // Apply volume - streamState.applyDeviceVolume(device); - - // Apply change to all streams using this one as alias - int numStreamTypes = AudioSystem.getNumStreamTypes(); - for (int streamType = numStreamTypes - 1; streamType >= 0; streamType--) { - if (streamType != streamState.mStreamType && - mStreamVolumeAlias[streamType] == streamState.mStreamType) { - // Make sure volume is also maxed out on A2DP device for aliased stream - // that may have a different device selected - int streamDevice = getDeviceForStream(streamType); - if ((device != streamDevice) && mAvrcpAbsVolSupported && - ((device & AudioSystem.DEVICE_OUT_ALL_A2DP) != 0)) { - mStreamStates[streamType].applyDeviceVolume(device); + synchronized (VolumeStreamState.class) { + // Apply volume + streamState.applyDeviceVolume_syncVSS(device); + + // Apply change to all streams using this one as alias + int numStreamTypes = AudioSystem.getNumStreamTypes(); + for (int streamType = numStreamTypes - 1; streamType >= 0; streamType--) { + if (streamType != streamState.mStreamType && + mStreamVolumeAlias[streamType] == streamState.mStreamType) { + // Make sure volume is also maxed out on A2DP device for aliased stream + // that may have a different device selected + int streamDevice = getDeviceForStream(streamType); + if ((device != streamDevice) && mAvrcpAbsVolSupported && + ((device & AudioSystem.DEVICE_OUT_ALL_A2DP) != 0)) { + mStreamStates[streamType].applyDeviceVolume_syncVSS(device); + } + mStreamStates[streamType].applyDeviceVolume_syncVSS(streamDevice); } - mStreamStates[streamType].applyDeviceVolume(streamDevice); } } - // Post a persist volume msg sendMsg(mAudioHandler, MSG_PERSIST_VOLUME, @@ -5032,41 +5048,44 @@ public class AudioService extends IAudioService.Stub { boolean cameraSoundForced = mContext.getResources().getBoolean( com.android.internal.R.bool.config_camera_sound_forced); synchronized (mSettingsLock) { + boolean cameraSoundForcedChanged = false; synchronized (mCameraSoundForced) { if (cameraSoundForced != mCameraSoundForced) { mCameraSoundForced = cameraSoundForced; - - if (!isPlatformTelevision()) { - VolumeStreamState s = mStreamStates[AudioSystem.STREAM_SYSTEM_ENFORCED]; - if (cameraSoundForced) { - s.setAllIndexesToMax(); - mRingerModeAffectedStreams &= - ~(1 << AudioSystem.STREAM_SYSTEM_ENFORCED); - } else { - s.setAllIndexes(mStreamStates[AudioSystem.STREAM_SYSTEM]); - mRingerModeAffectedStreams |= - (1 << AudioSystem.STREAM_SYSTEM_ENFORCED); - } - // take new state into account for streams muted by ringer mode - setRingerModeInt(getRingerMode(), false); + cameraSoundForcedChanged = true; + } + } + if (cameraSoundForcedChanged) { + if (!isPlatformTelevision()) { + VolumeStreamState s = mStreamStates[AudioSystem.STREAM_SYSTEM_ENFORCED]; + if (cameraSoundForced) { + s.setAllIndexesToMax(); + mRingerModeAffectedStreams &= + ~(1 << AudioSystem.STREAM_SYSTEM_ENFORCED); + } else { + s.setAllIndexes(mStreamStates[AudioSystem.STREAM_SYSTEM]); + mRingerModeAffectedStreams |= + (1 << AudioSystem.STREAM_SYSTEM_ENFORCED); } - - sendMsg(mAudioHandler, - MSG_SET_FORCE_USE, - SENDMSG_QUEUE, - AudioSystem.FOR_SYSTEM, - cameraSoundForced ? - AudioSystem.FORCE_SYSTEM_ENFORCED : AudioSystem.FORCE_NONE, - null, - 0); - - sendMsg(mAudioHandler, - MSG_SET_ALL_VOLUMES, - SENDMSG_QUEUE, - 0, - 0, - mStreamStates[AudioSystem.STREAM_SYSTEM_ENFORCED], 0); + // take new state into account for streams muted by ringer mode + setRingerModeInt(getRingerMode(), false); } + + sendMsg(mAudioHandler, + MSG_SET_FORCE_USE, + SENDMSG_QUEUE, + AudioSystem.FOR_SYSTEM, + cameraSoundForced ? + AudioSystem.FORCE_SYSTEM_ENFORCED : AudioSystem.FORCE_NONE, + null, + 0); + + sendMsg(mAudioHandler, + MSG_SET_ALL_VOLUMES, + SENDMSG_QUEUE, + 0, + 0, + mStreamStates[AudioSystem.STREAM_SYSTEM_ENFORCED], 0); } } mVolumeController.setLayoutDirection(config.getLayoutDirection()); diff --git a/media/java/android/media/tv/TvInputService.java b/media/java/android/media/tv/TvInputService.java index 0ca5810f1002..93cca2f816f0 100644 --- a/media/java/android/media/tv/TvInputService.java +++ b/media/java/android/media/tv/TvInputService.java @@ -159,15 +159,6 @@ public abstract class TvInputService extends Service { } /** - * Get the number of callbacks that are registered. - * @hide - */ - @VisibleForTesting - public final int getRegisteredCallbackCount() { - return mCallbacks.getRegisteredCallbackCount(); - } - - /** * Returns a concrete implementation of {@link Session}. * <p> * May return {@code null} if this TV input service fails to create a session for some reason. @@ -550,13 +541,14 @@ public abstract class TvInputService extends Service { * @param left Left position in pixels, relative to the overlay view. * @param top Top position in pixels, relative to the overlay view. * @param right Right position in pixels, relative to the overlay view. - * @param bottm Bottom position in pixels, relative to the overlay view. + * @param bottom Bottom position in pixels, relative to the overlay view. * @see #onOverlayViewSizeChanged * @hide */ @SystemApi - public void layoutSurface(final int left, final int top, final int right, final int bottm) { - if (left > right || top > bottm) { + public void layoutSurface(final int left, final int top, final int right, + final int bottom) { + if (left > right || top > bottom) { throw new IllegalArgumentException("Invalid parameter"); } executeOrPostRunnable(new Runnable() { @@ -564,8 +556,8 @@ public abstract class TvInputService extends Service { public void run() { try { if (DEBUG) Log.d(TAG, "layoutSurface (l=" + left + ", t=" + top + ", r=" - + right + ", b=" + bottm + ",)"); - mSessionCallback.onLayoutSurface(left, top, right, bottm); + + right + ", b=" + bottom + ",)"); + mSessionCallback.onLayoutSurface(left, top, right, bottom); } catch (RemoteException e) { Log.w(TAG, "error in layoutSurface"); } diff --git a/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java b/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java index 1c6dc2cfef8f..aa5819e6cac7 100644 --- a/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java +++ b/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java @@ -518,7 +518,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { * Determine whether the device is plugged in (USB, power, or wireless). * @return true if the device is plugged in. */ - boolean isPluggedIn() { + public boolean isPluggedIn() { return plugged == BatteryManager.BATTERY_PLUGGED_AC || plugged == BatteryManager.BATTERY_PLUGGED_USB || plugged == BatteryManager.BATTERY_PLUGGED_WIRELESS; diff --git a/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java b/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java index eea97eac5c2f..9bfcadb4d45d 100644 --- a/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java +++ b/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java @@ -71,7 +71,7 @@ public class DatabaseHelper extends SQLiteOpenHelper { // database gets upgraded properly. At a minimum, please confirm that 'upgradeVersion' // is properly propagated through your change. Not doing so will result in a loss of user // settings. - private static final int DATABASE_VERSION = 116; + private static final int DATABASE_VERSION = 117; private Context mContext; private int mUserHandle; @@ -1865,6 +1865,20 @@ public class DatabaseHelper extends SQLiteOpenHelper { upgradeVersion = 116; } + if (upgradeVersion < 117) { + db.beginTransaction(); + try { + String[] systemToSecure = { + Settings.Secure.LOCK_TO_APP_EXIT_LOCKED + }; + moveSettingsToNewTable(db, TABLE_SYSTEM, TABLE_SECURE, systemToSecure, true); + db.setTransactionSuccessful(); + } finally { + db.endTransaction(); + } + upgradeVersion = 117; + } + // *** Remember to update DATABASE_VERSION above! if (upgradeVersion != currentVersion) { diff --git a/packages/SystemUI/res/anim/ic_landscape_from_auto_rotate_animation_arrow_bottom.xml b/packages/SystemUI/res/anim/ic_landscape_from_auto_rotate_animation_arrow_bottom.xml new file mode 100644 index 000000000000..9add90cf1f48 --- /dev/null +++ b/packages/SystemUI/res/anim/ic_landscape_from_auto_rotate_animation_arrow_bottom.xml @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2014 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<set xmlns:android="http://schemas.android.com/apk/res/android" > + <set + android:ordering="sequentially" > + <objectAnimator + android:duration="567" + android:propertyName="fillAlpha" + android:valueFrom="1" + android:valueTo="1" + android:interpolator="@android:interpolator/linear" /> + <objectAnimator + android:duration="33" + android:propertyName="fillAlpha" + android:valueFrom="1" + android:valueTo="0" + android:interpolator="@android:interpolator/linear" /> + </set> +</set> diff --git a/packages/SystemUI/res/anim/ic_landscape_from_auto_rotate_animation_arrow_top.xml b/packages/SystemUI/res/anim/ic_landscape_from_auto_rotate_animation_arrow_top.xml new file mode 100644 index 000000000000..9add90cf1f48 --- /dev/null +++ b/packages/SystemUI/res/anim/ic_landscape_from_auto_rotate_animation_arrow_top.xml @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2014 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<set xmlns:android="http://schemas.android.com/apk/res/android" > + <set + android:ordering="sequentially" > + <objectAnimator + android:duration="567" + android:propertyName="fillAlpha" + android:valueFrom="1" + android:valueTo="1" + android:interpolator="@android:interpolator/linear" /> + <objectAnimator + android:duration="33" + android:propertyName="fillAlpha" + android:valueFrom="1" + android:valueTo="0" + android:interpolator="@android:interpolator/linear" /> + </set> +</set> diff --git a/packages/SystemUI/res/anim/ic_landscape_from_auto_rotate_animation_arrows.xml b/packages/SystemUI/res/anim/ic_landscape_from_auto_rotate_animation_arrows.xml new file mode 100644 index 000000000000..6c4e13355825 --- /dev/null +++ b/packages/SystemUI/res/anim/ic_landscape_from_auto_rotate_animation_arrows.xml @@ -0,0 +1,63 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2014 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<set xmlns:android="http://schemas.android.com/apk/res/android" > + <set + android:ordering="sequentially" > + <objectAnimator + android:duration="317" + android:propertyName="scaleX" + android:valueFrom="1" + android:valueTo="1" + android:interpolator="@android:interpolator/linear" /> + <objectAnimator + android:duration="333" + android:propertyName="scaleX" + android:valueFrom="1" + android:valueTo="0.9" + android:interpolator="@android:interpolator/linear" /> + </set> + <set + android:ordering="sequentially" > + <objectAnimator + android:duration="317" + android:propertyName="scaleY" + android:valueFrom="1" + android:valueTo="1" + android:interpolator="@android:interpolator/linear" /> + <objectAnimator + android:duration="333" + android:propertyName="scaleY" + android:valueFrom="1" + android:valueTo="0.9" + android:interpolator="@android:interpolator/linear" /> + </set> + <set + android:ordering="sequentially" > + <objectAnimator + android:duration="200" + android:propertyName="rotation" + android:valueFrom="0" + android:valueTo="0" + android:interpolator="@android:interpolator/linear" /> + <objectAnimator + android:duration="450" + android:propertyName="rotation" + android:valueFrom="0" + android:valueTo="-135" + android:interpolator="@interpolator/ic_landscape_from_auto_rotate_arrows_rotation_interpolator" /> + </set> +</set> diff --git a/packages/SystemUI/res/anim/ic_landscape_from_auto_rotate_animation_body.xml b/packages/SystemUI/res/anim/ic_landscape_from_auto_rotate_animation_body.xml new file mode 100644 index 000000000000..a8f5ce015421 --- /dev/null +++ b/packages/SystemUI/res/anim/ic_landscape_from_auto_rotate_animation_body.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2014 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<set xmlns:android="http://schemas.android.com/apk/res/android" > + <set + android:ordering="sequentially" > + <objectAnimator + android:duration="267" + android:propertyName="pathData" + android:valueFrom="M -3.5,-20.5 c -1.19999694824,-1.19999694824 -3.10000610352,-1.19999694824 -4.19999694824,0.0 c 0.0,0.0 -12.8000030518,12.6999969482 -12.8000030518,12.6999969482 c -1.19999694824,1.19999694824 -1.19999694824,3.10000610352 0.0,4.19999694824 c 0.0,0.0 24.0,24.0000152588 24.0,24.0000152588 c 1.19999694824,1.19999694824 3.10000610352,1.19999694824 4.19999694824,0.0 c 0.0,0.0 12.6999969482,-12.700012207 12.6999969482,-12.700012207 c 1.20001220703,-1.19999694824 1.20001220703,-3.09999084473 0.0,-4.19999694824 c 0.0,0.0 -23.8999938965,-24.0 -23.8999938965,-24.0 Z M 2.84999084473,15.5500183105 c 0.0,0.0 -18.6000061035,-18.5000457764 -18.6000061035,-18.5000457764 c 0.0,0.0 12.5999908447,-12.8000030518 12.5999908447,-12.8000030518 c 0.0,0.0 18.6000213623,18.5000457764 18.6000213623,18.5000457764 c 0.0,0.0 -12.6000061035,12.8000030518 -12.6000061035,12.8000030518 Z" + android:valueTo="M -3.5,-20.5 c -1.19999694824,-1.19999694824 -3.10000610352,-1.19999694824 -4.19999694824,0.0 c 0.0,0.0 -12.8000030518,12.6999969482 -12.8000030518,12.6999969482 c -1.19999694824,1.19999694824 -1.19999694824,3.10000610352 0.0,4.19999694824 c 0.0,0.0 24.0,24.0000152588 24.0,24.0000152588 c 1.19999694824,1.19999694824 3.10000610352,1.19999694824 4.19999694824,0.0 c 0.0,0.0 12.6999969482,-12.700012207 12.6999969482,-12.700012207 c 1.20001220703,-1.19999694824 1.20001220703,-3.09999084473 0.0,-4.19999694824 c 0.0,0.0 -23.8999938965,-24.0 -23.8999938965,-24.0 Z M 2.84999084473,15.5500183105 c 0.0,0.0 -18.6000061035,-18.5000457764 -18.6000061035,-18.5000457764 c 0.0,0.0 12.5999908447,-12.8000030518 12.5999908447,-12.8000030518 c 0.0,0.0 18.6000213623,18.5000457764 18.6000213623,18.5000457764 c 0.0,0.0 -12.6000061035,12.8000030518 -12.6000061035,12.8000030518 Z" + android:valueType="pathType" + android:interpolator="@android:interpolator/fast_out_slow_in" /> + <objectAnimator + android:duration="217" + android:propertyName="pathData" + android:valueFrom="M -3.5,-20.5 c -1.19999694824,-1.19999694824 -3.10000610352,-1.19999694824 -4.19999694824,0.0 c 0.0,0.0 -12.8000030518,12.6999969482 -12.8000030518,12.6999969482 c -1.19999694824,1.19999694824 -1.19999694824,3.10000610352 0.0,4.19999694824 c 0.0,0.0 24.0,24.0000152588 24.0,24.0000152588 c 1.19999694824,1.19999694824 3.10000610352,1.19999694824 4.19999694824,0.0 c 0.0,0.0 12.6999969482,-12.700012207 12.6999969482,-12.700012207 c 1.20001220703,-1.19999694824 1.20001220703,-3.09999084473 0.0,-4.19999694824 c 0.0,0.0 -23.8999938965,-24.0 -23.8999938965,-24.0 Z M 2.84999084473,15.5500183105 c 0.0,0.0 -18.6000061035,-18.5000457764 -18.6000061035,-18.5000457764 c 0.0,0.0 12.5999908447,-12.8000030518 12.5999908447,-12.8000030518 c 0.0,0.0 18.6000213623,18.5000457764 18.6000213623,18.5000457764 c 0.0,0.0 -12.6000061035,12.8000030518 -12.6000061035,12.8000030518 Z" + android:valueTo="M -3.34053039551,-22.9980926514 c -1.3207244873,-1.3207244873 -3.46876525879,-1.26383972168 -4.74829101563,0.125762939453 c 0.0,0.0 -14.8512420654,14.7411804199 -14.8512420654,14.7411804199 c -1.39259338379,1.392578125 -1.44947814941,3.54061889648 -0.125762939453,4.74827575684 c 0.0,0.0 26.4143981934,26.4144134521 26.4143981934,26.4144134521 c 1.3207244873,1.3207244873 3.46876525879,1.26382446289 4.74829101562,-0.125762939453 c 0.0,0.0 14.7381896973,-14.7381896973 14.7381896973,-14.7381896973 c 1.392578125,-1.39259338379 1.44947814941,-3.54061889648 0.125762939453,-4.74829101562 c 0.0,0.0 -26.3013458252,-26.417388916 -26.3013458252,-26.417388916 Z M 2.87156677246,16.9857940674 c 0.0,0.0 -19.7573547363,-19.7573699951 -19.7573547363,-19.7573699951 c 0.0,0.0 14.0142059326,-14.2142181396 14.0142059326,-14.2142181396 c 0.0,0.0 19.7573699951,19.7573699951 19.7573699951,19.7573699951 c 0.0,0.0 -14.0142211914,14.2142181396 -14.0142211914,14.2142181396 Z" + android:valueType="pathType" + android:interpolator="@android:interpolator/fast_out_slow_in" /> + </set> +</set> diff --git a/packages/SystemUI/res/anim/ic_landscape_from_auto_rotate_animation_device.xml b/packages/SystemUI/res/anim/ic_landscape_from_auto_rotate_animation_device.xml new file mode 100644 index 000000000000..b9bb42d4134a --- /dev/null +++ b/packages/SystemUI/res/anim/ic_landscape_from_auto_rotate_animation_device.xml @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2014 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<set xmlns:android="http://schemas.android.com/apk/res/android" > + <set + android:ordering="sequentially" > + <objectAnimator + android:duration="200" + android:propertyName="rotation" + android:valueFrom="0" + android:valueTo="0" + android:interpolator="@android:interpolator/fast_out_slow_in" /> + <objectAnimator + android:duration="400" + android:propertyName="rotation" + android:valueFrom="0" + android:valueTo="-45" + android:interpolator="@android:interpolator/fast_out_slow_in" /> + </set> +</set> diff --git a/packages/SystemUI/res/anim/ic_landscape_to_auto_rotate_animation_arrow_bottom.xml b/packages/SystemUI/res/anim/ic_landscape_to_auto_rotate_animation_arrow_bottom.xml new file mode 100644 index 000000000000..b8823a9495e8 --- /dev/null +++ b/packages/SystemUI/res/anim/ic_landscape_to_auto_rotate_animation_arrow_bottom.xml @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2014 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<set xmlns:android="http://schemas.android.com/apk/res/android" > + <set + android:ordering="sequentially" > + <objectAnimator + android:duration="250" + android:propertyName="fillAlpha" + android:valueFrom="0" + android:valueTo="0" + android:interpolator="@android:interpolator/linear" /> + <objectAnimator + android:duration="33" + android:propertyName="fillAlpha" + android:valueFrom="0" + android:valueTo="1" + android:interpolator="@android:interpolator/linear" /> + </set> +</set> diff --git a/packages/SystemUI/res/anim/ic_landscape_to_auto_rotate_animation_arrow_top.xml b/packages/SystemUI/res/anim/ic_landscape_to_auto_rotate_animation_arrow_top.xml new file mode 100644 index 000000000000..b8823a9495e8 --- /dev/null +++ b/packages/SystemUI/res/anim/ic_landscape_to_auto_rotate_animation_arrow_top.xml @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2014 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<set xmlns:android="http://schemas.android.com/apk/res/android" > + <set + android:ordering="sequentially" > + <objectAnimator + android:duration="250" + android:propertyName="fillAlpha" + android:valueFrom="0" + android:valueTo="0" + android:interpolator="@android:interpolator/linear" /> + <objectAnimator + android:duration="33" + android:propertyName="fillAlpha" + android:valueFrom="0" + android:valueTo="1" + android:interpolator="@android:interpolator/linear" /> + </set> +</set> diff --git a/packages/SystemUI/res/anim/ic_landscape_to_auto_rotate_animation_arrows.xml b/packages/SystemUI/res/anim/ic_landscape_to_auto_rotate_animation_arrows.xml new file mode 100644 index 000000000000..14c27766325e --- /dev/null +++ b/packages/SystemUI/res/anim/ic_landscape_to_auto_rotate_animation_arrows.xml @@ -0,0 +1,63 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2014 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<set xmlns:android="http://schemas.android.com/apk/res/android" > + <set + android:ordering="sequentially" > + <objectAnimator + android:duration="200" + android:propertyName="scaleX" + android:valueFrom="0.9" + android:valueTo="0.9" + android:interpolator="@android:interpolator/linear" /> + <objectAnimator + android:duration="333" + android:propertyName="scaleX" + android:valueFrom="0.9" + android:valueTo="1" + android:interpolator="@android:interpolator/linear" /> + </set> + <set + android:ordering="sequentially" > + <objectAnimator + android:duration="200" + android:propertyName="scaleY" + android:valueFrom="0.9" + android:valueTo="0.9" + android:interpolator="@android:interpolator/linear" /> + <objectAnimator + android:duration="333" + android:propertyName="scaleY" + android:valueFrom="0.9" + android:valueTo="1" + android:interpolator="@android:interpolator/linear" /> + </set> + <set + android:ordering="sequentially" > + <objectAnimator + android:duration="200" + android:propertyName="rotation" + android:valueFrom="-135" + android:valueTo="-135" + android:interpolator="@android:interpolator/linear" /> + <objectAnimator + android:duration="450" + android:propertyName="rotation" + android:valueFrom="-135" + android:valueTo="0" + android:interpolator="@interpolator/ic_landscape_to_auto_rotate_arrows_rotation_interpolator" /> + </set> +</set> diff --git a/packages/SystemUI/res/anim/ic_landscape_to_auto_rotate_animation_body.xml b/packages/SystemUI/res/anim/ic_landscape_to_auto_rotate_animation_body.xml new file mode 100644 index 000000000000..ea8f9796e54f --- /dev/null +++ b/packages/SystemUI/res/anim/ic_landscape_to_auto_rotate_animation_body.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2014 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<set xmlns:android="http://schemas.android.com/apk/res/android" > + <set + android:ordering="sequentially" > + <objectAnimator + android:duration="267" + android:propertyName="pathData" + android:valueFrom="M -3.34053039551,-22.9980926514 c -1.3207244873,-1.3207244873 -3.46876525879,-1.26383972168 -4.74829101563,0.125762939453 c 0.0,0.0 -14.8512420654,14.7411804199 -14.8512420654,14.7411804199 c -1.39259338379,1.392578125 -1.44947814941,3.54061889648 -0.125762939453,4.74827575684 c 0.0,0.0 26.4143981934,26.4144134521 26.4143981934,26.4144134521 c 1.3207244873,1.3207244873 3.46876525879,1.26382446289 4.74829101562,-0.125762939453 c 0.0,0.0 14.7381896973,-14.7381896973 14.7381896973,-14.7381896973 c 1.392578125,-1.39259338379 1.44947814941,-3.54061889648 0.125762939453,-4.74829101562 c 0.0,0.0 -26.3013458252,-26.417388916 -26.3013458252,-26.417388916 Z M 2.87156677246,16.9857940674 c 0.0,0.0 -19.7573547363,-19.7573699951 -19.7573547363,-19.7573699951 c 0.0,0.0 14.0142059326,-14.2142181396 14.0142059326,-14.2142181396 c 0.0,0.0 19.7573699951,19.7573699951 19.7573699951,19.7573699951 c 0.0,0.0 -14.0142211914,14.2142181396 -14.0142211914,14.2142181396 Z" + android:valueTo="M -3.34053039551,-22.9980926514 c -1.3207244873,-1.3207244873 -3.46876525879,-1.26383972168 -4.74829101563,0.125762939453 c 0.0,0.0 -14.8512420654,14.7411804199 -14.8512420654,14.7411804199 c -1.39259338379,1.392578125 -1.44947814941,3.54061889648 -0.125762939453,4.74827575684 c 0.0,0.0 26.4143981934,26.4144134521 26.4143981934,26.4144134521 c 1.3207244873,1.3207244873 3.46876525879,1.26382446289 4.74829101562,-0.125762939453 c 0.0,0.0 14.7381896973,-14.7381896973 14.7381896973,-14.7381896973 c 1.392578125,-1.39259338379 1.44947814941,-3.54061889648 0.125762939453,-4.74829101562 c 0.0,0.0 -26.3013458252,-26.417388916 -26.3013458252,-26.417388916 Z M 2.87156677246,16.9857940674 c 0.0,0.0 -19.7573547363,-19.7573699951 -19.7573547363,-19.7573699951 c 0.0,0.0 14.0142059326,-14.2142181396 14.0142059326,-14.2142181396 c 0.0,0.0 19.7573699951,19.7573699951 19.7573699951,19.7573699951 c 0.0,0.0 -14.0142211914,14.2142181396 -14.0142211914,14.2142181396 Z" + android:valueType="pathType" + android:interpolator="@android:interpolator/fast_out_slow_in" /> + <objectAnimator + android:duration="217" + android:propertyName="pathData" + android:valueFrom="M -3.34053039551,-22.9980926514 c -1.3207244873,-1.3207244873 -3.46876525879,-1.26383972168 -4.74829101563,0.125762939453 c 0.0,0.0 -14.8512420654,14.7411804199 -14.8512420654,14.7411804199 c -1.39259338379,1.392578125 -1.44947814941,3.54061889648 -0.125762939453,4.74827575684 c 0.0,0.0 26.4143981934,26.4144134521 26.4143981934,26.4144134521 c 1.3207244873,1.3207244873 3.46876525879,1.26382446289 4.74829101562,-0.125762939453 c 0.0,0.0 14.7381896973,-14.7381896973 14.7381896973,-14.7381896973 c 1.392578125,-1.39259338379 1.44947814941,-3.54061889648 0.125762939453,-4.74829101562 c 0.0,0.0 -26.3013458252,-26.417388916 -26.3013458252,-26.417388916 Z M 2.87156677246,16.9857940674 c 0.0,0.0 -19.7573547363,-19.7573699951 -19.7573547363,-19.7573699951 c 0.0,0.0 14.0142059326,-14.2142181396 14.0142059326,-14.2142181396 c 0.0,0.0 19.7573699951,19.7573699951 19.7573699951,19.7573699951 c 0.0,0.0 -14.0142211914,14.2142181396 -14.0142211914,14.2142181396 Z" + android:valueTo="M -3.5,-20.5 c -1.19999694824,-1.19999694824 -3.10000610352,-1.19999694824 -4.19999694824,0.0 c 0.0,0.0 -12.8000030518,12.6999969482 -12.8000030518,12.6999969482 c -1.19999694824,1.19999694824 -1.19999694824,3.10000610352 0.0,4.19999694824 c 0.0,0.0 24.0,24.0000152588 24.0,24.0000152588 c 1.19999694824,1.19999694824 3.10000610352,1.19999694824 4.19999694824,0.0 c 0.0,0.0 12.6999969482,-12.700012207 12.6999969482,-12.700012207 c 1.20001220703,-1.19999694824 1.20001220703,-3.09999084473 0.0,-4.19999694824 c 0.0,0.0 -23.8999938965,-24.0 -23.8999938965,-24.0 Z M 2.84999084473,15.5500183105 c 0.0,0.0 -18.6000061035,-18.5000457764 -18.6000061035,-18.5000457764 c 0.0,0.0 12.5999908447,-12.8000030518 12.5999908447,-12.8000030518 c 0.0,0.0 18.6000213623,18.5000457764 18.6000213623,18.5000457764 c 0.0,0.0 -12.6000061035,12.8000030518 -12.6000061035,12.8000030518 Z" + android:valueType="pathType" + android:interpolator="@android:interpolator/fast_out_slow_in" /> + </set> +</set> diff --git a/packages/SystemUI/res/anim/ic_landscape_to_auto_rotate_animation_device.xml b/packages/SystemUI/res/anim/ic_landscape_to_auto_rotate_animation_device.xml new file mode 100644 index 000000000000..4e3a3563e6ed --- /dev/null +++ b/packages/SystemUI/res/anim/ic_landscape_to_auto_rotate_animation_device.xml @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2014 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<set xmlns:android="http://schemas.android.com/apk/res/android" > + <set + android:ordering="sequentially" > + <objectAnimator + android:duration="200" + android:propertyName="rotation" + android:valueFrom="-45" + android:valueTo="-45" + android:interpolator="@android:interpolator/fast_out_slow_in" /> + <objectAnimator + android:duration="400" + android:propertyName="rotation" + android:valueFrom="-45" + android:valueTo="0" + android:interpolator="@android:interpolator/fast_out_slow_in" /> + </set> +</set> diff --git a/packages/SystemUI/res/anim/ic_portrait_from_auto_rotate_animation_arrow_bottom.xml b/packages/SystemUI/res/anim/ic_portrait_from_auto_rotate_animation_arrow_bottom.xml new file mode 100644 index 000000000000..d05c4e1bd4cf --- /dev/null +++ b/packages/SystemUI/res/anim/ic_portrait_from_auto_rotate_animation_arrow_bottom.xml @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2014 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<set xmlns:android="http://schemas.android.com/apk/res/android" > + <set + android:ordering="sequentially" > + <objectAnimator + android:duration="600" + android:propertyName="fillAlpha" + android:valueFrom="1" + android:valueTo="1" + android:interpolator="@android:interpolator/linear" /> + <objectAnimator + android:duration="83" + android:propertyName="fillAlpha" + android:valueFrom="1" + android:valueTo="0" + android:interpolator="@android:interpolator/linear" /> + </set> +</set> diff --git a/packages/SystemUI/res/anim/ic_portrait_from_auto_rotate_animation_arrow_top.xml b/packages/SystemUI/res/anim/ic_portrait_from_auto_rotate_animation_arrow_top.xml new file mode 100644 index 000000000000..d05c4e1bd4cf --- /dev/null +++ b/packages/SystemUI/res/anim/ic_portrait_from_auto_rotate_animation_arrow_top.xml @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2014 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<set xmlns:android="http://schemas.android.com/apk/res/android" > + <set + android:ordering="sequentially" > + <objectAnimator + android:duration="600" + android:propertyName="fillAlpha" + android:valueFrom="1" + android:valueTo="1" + android:interpolator="@android:interpolator/linear" /> + <objectAnimator + android:duration="83" + android:propertyName="fillAlpha" + android:valueFrom="1" + android:valueTo="0" + android:interpolator="@android:interpolator/linear" /> + </set> +</set> diff --git a/packages/SystemUI/res/anim/ic_portrait_from_auto_rotate_animation_arrows.xml b/packages/SystemUI/res/anim/ic_portrait_from_auto_rotate_animation_arrows.xml new file mode 100644 index 000000000000..8bcbf1e36a1b --- /dev/null +++ b/packages/SystemUI/res/anim/ic_portrait_from_auto_rotate_animation_arrows.xml @@ -0,0 +1,63 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2014 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<set xmlns:android="http://schemas.android.com/apk/res/android" > + <set + android:ordering="sequentially" > + <objectAnimator + android:duration="317" + android:propertyName="scaleX" + android:valueFrom="1" + android:valueTo="1" + android:interpolator="@android:interpolator/linear" /> + <objectAnimator + android:duration="333" + android:propertyName="scaleX" + android:valueFrom="1" + android:valueTo="0.9" + android:interpolator="@android:interpolator/linear" /> + </set> + <set + android:ordering="sequentially" > + <objectAnimator + android:duration="317" + android:propertyName="scaleY" + android:valueFrom="1" + android:valueTo="1" + android:interpolator="@android:interpolator/linear" /> + <objectAnimator + android:duration="333" + android:propertyName="scaleY" + android:valueFrom="1" + android:valueTo="0.9" + android:interpolator="@android:interpolator/linear" /> + </set> + <set + android:ordering="sequentially" > + <objectAnimator + android:duration="200" + android:propertyName="rotation" + android:valueFrom="0" + android:valueTo="0" + android:interpolator="@android:interpolator/fast_out_slow_in" /> + <objectAnimator + android:duration="617" + android:propertyName="rotation" + android:valueFrom="0" + android:valueTo="-221" + android:interpolator="@android:interpolator/fast_out_slow_in" /> + </set> +</set> diff --git a/packages/SystemUI/res/anim/ic_portrait_from_auto_rotate_animation_device.xml b/packages/SystemUI/res/anim/ic_portrait_from_auto_rotate_animation_device.xml new file mode 100644 index 000000000000..79b1827d8c7d --- /dev/null +++ b/packages/SystemUI/res/anim/ic_portrait_from_auto_rotate_animation_device.xml @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2014 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<set xmlns:android="http://schemas.android.com/apk/res/android" > + <set + android:ordering="sequentially" > + <objectAnimator + android:duration="200" + android:propertyName="rotation" + android:valueFrom="0" + android:valueTo="0" + android:interpolator="@android:interpolator/fast_out_slow_in" /> + <objectAnimator + android:duration="400" + android:propertyName="rotation" + android:valueFrom="0" + android:valueTo="-135" + android:interpolator="@android:interpolator/fast_out_slow_in" /> + </set> +</set> diff --git a/packages/SystemUI/res/anim/ic_portrait_from_auto_rotate_animation_device_1.xml b/packages/SystemUI/res/anim/ic_portrait_from_auto_rotate_animation_device_1.xml new file mode 100644 index 000000000000..a8f5ce015421 --- /dev/null +++ b/packages/SystemUI/res/anim/ic_portrait_from_auto_rotate_animation_device_1.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2014 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<set xmlns:android="http://schemas.android.com/apk/res/android" > + <set + android:ordering="sequentially" > + <objectAnimator + android:duration="267" + android:propertyName="pathData" + android:valueFrom="M -3.5,-20.5 c -1.19999694824,-1.19999694824 -3.10000610352,-1.19999694824 -4.19999694824,0.0 c 0.0,0.0 -12.8000030518,12.6999969482 -12.8000030518,12.6999969482 c -1.19999694824,1.19999694824 -1.19999694824,3.10000610352 0.0,4.19999694824 c 0.0,0.0 24.0,24.0000152588 24.0,24.0000152588 c 1.19999694824,1.19999694824 3.10000610352,1.19999694824 4.19999694824,0.0 c 0.0,0.0 12.6999969482,-12.700012207 12.6999969482,-12.700012207 c 1.20001220703,-1.19999694824 1.20001220703,-3.09999084473 0.0,-4.19999694824 c 0.0,0.0 -23.8999938965,-24.0 -23.8999938965,-24.0 Z M 2.84999084473,15.5500183105 c 0.0,0.0 -18.6000061035,-18.5000457764 -18.6000061035,-18.5000457764 c 0.0,0.0 12.5999908447,-12.8000030518 12.5999908447,-12.8000030518 c 0.0,0.0 18.6000213623,18.5000457764 18.6000213623,18.5000457764 c 0.0,0.0 -12.6000061035,12.8000030518 -12.6000061035,12.8000030518 Z" + android:valueTo="M -3.5,-20.5 c -1.19999694824,-1.19999694824 -3.10000610352,-1.19999694824 -4.19999694824,0.0 c 0.0,0.0 -12.8000030518,12.6999969482 -12.8000030518,12.6999969482 c -1.19999694824,1.19999694824 -1.19999694824,3.10000610352 0.0,4.19999694824 c 0.0,0.0 24.0,24.0000152588 24.0,24.0000152588 c 1.19999694824,1.19999694824 3.10000610352,1.19999694824 4.19999694824,0.0 c 0.0,0.0 12.6999969482,-12.700012207 12.6999969482,-12.700012207 c 1.20001220703,-1.19999694824 1.20001220703,-3.09999084473 0.0,-4.19999694824 c 0.0,0.0 -23.8999938965,-24.0 -23.8999938965,-24.0 Z M 2.84999084473,15.5500183105 c 0.0,0.0 -18.6000061035,-18.5000457764 -18.6000061035,-18.5000457764 c 0.0,0.0 12.5999908447,-12.8000030518 12.5999908447,-12.8000030518 c 0.0,0.0 18.6000213623,18.5000457764 18.6000213623,18.5000457764 c 0.0,0.0 -12.6000061035,12.8000030518 -12.6000061035,12.8000030518 Z" + android:valueType="pathType" + android:interpolator="@android:interpolator/fast_out_slow_in" /> + <objectAnimator + android:duration="217" + android:propertyName="pathData" + android:valueFrom="M -3.5,-20.5 c -1.19999694824,-1.19999694824 -3.10000610352,-1.19999694824 -4.19999694824,0.0 c 0.0,0.0 -12.8000030518,12.6999969482 -12.8000030518,12.6999969482 c -1.19999694824,1.19999694824 -1.19999694824,3.10000610352 0.0,4.19999694824 c 0.0,0.0 24.0,24.0000152588 24.0,24.0000152588 c 1.19999694824,1.19999694824 3.10000610352,1.19999694824 4.19999694824,0.0 c 0.0,0.0 12.6999969482,-12.700012207 12.6999969482,-12.700012207 c 1.20001220703,-1.19999694824 1.20001220703,-3.09999084473 0.0,-4.19999694824 c 0.0,0.0 -23.8999938965,-24.0 -23.8999938965,-24.0 Z M 2.84999084473,15.5500183105 c 0.0,0.0 -18.6000061035,-18.5000457764 -18.6000061035,-18.5000457764 c 0.0,0.0 12.5999908447,-12.8000030518 12.5999908447,-12.8000030518 c 0.0,0.0 18.6000213623,18.5000457764 18.6000213623,18.5000457764 c 0.0,0.0 -12.6000061035,12.8000030518 -12.6000061035,12.8000030518 Z" + android:valueTo="M -3.34053039551,-22.9980926514 c -1.3207244873,-1.3207244873 -3.46876525879,-1.26383972168 -4.74829101563,0.125762939453 c 0.0,0.0 -14.8512420654,14.7411804199 -14.8512420654,14.7411804199 c -1.39259338379,1.392578125 -1.44947814941,3.54061889648 -0.125762939453,4.74827575684 c 0.0,0.0 26.4143981934,26.4144134521 26.4143981934,26.4144134521 c 1.3207244873,1.3207244873 3.46876525879,1.26382446289 4.74829101562,-0.125762939453 c 0.0,0.0 14.7381896973,-14.7381896973 14.7381896973,-14.7381896973 c 1.392578125,-1.39259338379 1.44947814941,-3.54061889648 0.125762939453,-4.74829101562 c 0.0,0.0 -26.3013458252,-26.417388916 -26.3013458252,-26.417388916 Z M 2.87156677246,16.9857940674 c 0.0,0.0 -19.7573547363,-19.7573699951 -19.7573547363,-19.7573699951 c 0.0,0.0 14.0142059326,-14.2142181396 14.0142059326,-14.2142181396 c 0.0,0.0 19.7573699951,19.7573699951 19.7573699951,19.7573699951 c 0.0,0.0 -14.0142211914,14.2142181396 -14.0142211914,14.2142181396 Z" + android:valueType="pathType" + android:interpolator="@android:interpolator/fast_out_slow_in" /> + </set> +</set> diff --git a/packages/SystemUI/res/anim/ic_portrait_to_auto_rotate_animation_arrow_bottom.xml b/packages/SystemUI/res/anim/ic_portrait_to_auto_rotate_animation_arrow_bottom.xml new file mode 100644 index 000000000000..c3ae6c1a7e9d --- /dev/null +++ b/packages/SystemUI/res/anim/ic_portrait_to_auto_rotate_animation_arrow_bottom.xml @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2014 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<set xmlns:android="http://schemas.android.com/apk/res/android" > + <set + android:ordering="sequentially" > + <objectAnimator + android:duration="250" + android:propertyName="fillAlpha" + android:valueFrom="0" + android:valueTo="0" + android:interpolator="@android:interpolator/linear" /> + <objectAnimator + android:duration="83" + android:propertyName="fillAlpha" + android:valueFrom="0" + android:valueTo="1" + android:interpolator="@android:interpolator/linear" /> + </set> +</set> diff --git a/packages/SystemUI/res/anim/ic_portrait_to_auto_rotate_animation_arrow_top.xml b/packages/SystemUI/res/anim/ic_portrait_to_auto_rotate_animation_arrow_top.xml new file mode 100644 index 000000000000..c3ae6c1a7e9d --- /dev/null +++ b/packages/SystemUI/res/anim/ic_portrait_to_auto_rotate_animation_arrow_top.xml @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2014 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<set xmlns:android="http://schemas.android.com/apk/res/android" > + <set + android:ordering="sequentially" > + <objectAnimator + android:duration="250" + android:propertyName="fillAlpha" + android:valueFrom="0" + android:valueTo="0" + android:interpolator="@android:interpolator/linear" /> + <objectAnimator + android:duration="83" + android:propertyName="fillAlpha" + android:valueFrom="0" + android:valueTo="1" + android:interpolator="@android:interpolator/linear" /> + </set> +</set> diff --git a/packages/SystemUI/res/anim/ic_portrait_to_auto_rotate_animation_arrows.xml b/packages/SystemUI/res/anim/ic_portrait_to_auto_rotate_animation_arrows.xml new file mode 100644 index 000000000000..fde172a9032b --- /dev/null +++ b/packages/SystemUI/res/anim/ic_portrait_to_auto_rotate_animation_arrows.xml @@ -0,0 +1,63 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2014 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<set xmlns:android="http://schemas.android.com/apk/res/android" > + <set + android:ordering="sequentially" > + <objectAnimator + android:duration="333" + android:propertyName="scaleX" + android:valueFrom="0.9" + android:valueTo="0.9" + android:interpolator="@android:interpolator/linear" /> + <objectAnimator + android:duration="333" + android:propertyName="scaleX" + android:valueFrom="0.9" + android:valueTo="1" + android:interpolator="@android:interpolator/linear" /> + </set> + <set + android:ordering="sequentially" > + <objectAnimator + android:duration="333" + android:propertyName="scaleY" + android:valueFrom="0.9" + android:valueTo="0.9" + android:interpolator="@android:interpolator/linear" /> + <objectAnimator + android:duration="333" + android:propertyName="scaleY" + android:valueFrom="0.9" + android:valueTo="1" + android:interpolator="@android:interpolator/linear" /> + </set> + <set + android:ordering="sequentially" > + <objectAnimator + android:duration="200" + android:propertyName="rotation" + android:valueFrom="-221" + android:valueTo="-221" + android:interpolator="@android:interpolator/fast_out_slow_in" /> + <objectAnimator + android:duration="617" + android:propertyName="rotation" + android:valueFrom="-221" + android:valueTo="0" + android:interpolator="@android:interpolator/fast_out_slow_in" /> + </set> +</set> diff --git a/packages/SystemUI/res/anim/ic_portrait_to_auto_rotate_animation_device.xml b/packages/SystemUI/res/anim/ic_portrait_to_auto_rotate_animation_device.xml new file mode 100644 index 000000000000..accf16d73872 --- /dev/null +++ b/packages/SystemUI/res/anim/ic_portrait_to_auto_rotate_animation_device.xml @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2014 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<set xmlns:android="http://schemas.android.com/apk/res/android" > + <set + android:ordering="sequentially" > + <objectAnimator + android:duration="250" + android:propertyName="rotation" + android:valueFrom="-135" + android:valueTo="-135" + android:interpolator="@android:interpolator/fast_out_slow_in" /> + <objectAnimator + android:duration="400" + android:propertyName="rotation" + android:valueFrom="-135" + android:valueTo="0" + android:interpolator="@android:interpolator/fast_out_slow_in" /> + </set> +</set> diff --git a/packages/SystemUI/res/anim/ic_portrait_to_auto_rotate_animation_device_1.xml b/packages/SystemUI/res/anim/ic_portrait_to_auto_rotate_animation_device_1.xml new file mode 100644 index 000000000000..15c67053448c --- /dev/null +++ b/packages/SystemUI/res/anim/ic_portrait_to_auto_rotate_animation_device_1.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2014 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<set xmlns:android="http://schemas.android.com/apk/res/android" > + <set + android:ordering="sequentially" > + <objectAnimator + android:duration="250" + android:propertyName="pathData" + android:valueFrom="M -3.34053039551,-22.9980926514 c -1.3207244873,-1.3207244873 -3.46876525879,-1.26383972168 -4.74829101563,0.125762939453 c 0.0,0.0 -14.8512420654,14.7411804199 -14.8512420654,14.7411804199 c -1.39259338379,1.392578125 -1.44947814941,3.54061889648 -0.125762939453,4.74827575684 c 0.0,0.0 26.4143981934,26.4144134521 26.4143981934,26.4144134521 c 1.3207244873,1.3207244873 3.46876525879,1.26382446289 4.74829101562,-0.125762939453 c 0.0,0.0 14.7381896973,-14.7381896973 14.7381896973,-14.7381896973 c 1.392578125,-1.39259338379 1.44947814941,-3.54061889648 0.125762939453,-4.74829101562 c 0.0,0.0 -26.3013458252,-26.417388916 -26.3013458252,-26.417388916 Z M 2.87156677246,16.9857940674 c 0.0,0.0 -19.7573547363,-19.7573699951 -19.7573547363,-19.7573699951 c 0.0,0.0 14.0142059326,-14.2142181396 14.0142059326,-14.2142181396 c 0.0,0.0 19.7573699951,19.7573699951 19.7573699951,19.7573699951 c 0.0,0.0 -14.0142211914,14.2142181396 -14.0142211914,14.2142181396 Z" + android:valueTo="M -3.34053039551,-22.9980926514 c -1.3207244873,-1.3207244873 -3.46876525879,-1.26383972168 -4.74829101563,0.125762939453 c 0.0,0.0 -14.8512420654,14.7411804199 -14.8512420654,14.7411804199 c -1.39259338379,1.392578125 -1.44947814941,3.54061889648 -0.125762939453,4.74827575684 c 0.0,0.0 26.4143981934,26.4144134521 26.4143981934,26.4144134521 c 1.3207244873,1.3207244873 3.46876525879,1.26382446289 4.74829101562,-0.125762939453 c 0.0,0.0 14.7381896973,-14.7381896973 14.7381896973,-14.7381896973 c 1.392578125,-1.39259338379 1.44947814941,-3.54061889648 0.125762939453,-4.74829101562 c 0.0,0.0 -26.3013458252,-26.417388916 -26.3013458252,-26.417388916 Z M 2.87156677246,16.9857940674 c 0.0,0.0 -19.7573547363,-19.7573699951 -19.7573547363,-19.7573699951 c 0.0,0.0 14.0142059326,-14.2142181396 14.0142059326,-14.2142181396 c 0.0,0.0 19.7573699951,19.7573699951 19.7573699951,19.7573699951 c 0.0,0.0 -14.0142211914,14.2142181396 -14.0142211914,14.2142181396 Z" + android:valueType="pathType" + android:interpolator="@android:interpolator/fast_out_slow_in" /> + <objectAnimator + android:duration="500" + android:propertyName="pathData" + android:valueFrom="M -3.34053039551,-22.9980926514 c -1.3207244873,-1.3207244873 -3.46876525879,-1.26383972168 -4.74829101563,0.125762939453 c 0.0,0.0 -14.8512420654,14.7411804199 -14.8512420654,14.7411804199 c -1.39259338379,1.392578125 -1.44947814941,3.54061889648 -0.125762939453,4.74827575684 c 0.0,0.0 26.4143981934,26.4144134521 26.4143981934,26.4144134521 c 1.3207244873,1.3207244873 3.46876525879,1.26382446289 4.74829101562,-0.125762939453 c 0.0,0.0 14.7381896973,-14.7381896973 14.7381896973,-14.7381896973 c 1.392578125,-1.39259338379 1.44947814941,-3.54061889648 0.125762939453,-4.74829101562 c 0.0,0.0 -26.3013458252,-26.417388916 -26.3013458252,-26.417388916 Z M 2.87156677246,16.9857940674 c 0.0,0.0 -19.7573547363,-19.7573699951 -19.7573547363,-19.7573699951 c 0.0,0.0 14.0142059326,-14.2142181396 14.0142059326,-14.2142181396 c 0.0,0.0 19.7573699951,19.7573699951 19.7573699951,19.7573699951 c 0.0,0.0 -14.0142211914,14.2142181396 -14.0142211914,14.2142181396 Z" + android:valueTo="M -3.5,-20.5 c -1.19999694824,-1.19999694824 -3.10000610352,-1.19999694824 -4.19999694824,0.0 c 0.0,0.0 -12.8000030518,12.6999969482 -12.8000030518,12.6999969482 c -1.19999694824,1.19999694824 -1.19999694824,3.10000610352 0.0,4.19999694824 c 0.0,0.0 24.0,24.0000152588 24.0,24.0000152588 c 1.19999694824,1.19999694824 3.10000610352,1.19999694824 4.19999694824,0.0 c 0.0,0.0 12.6999969482,-12.700012207 12.6999969482,-12.700012207 c 1.20001220703,-1.19999694824 1.20001220703,-3.09999084473 0.0,-4.19999694824 c 0.0,0.0 -23.8999938965,-24.0 -23.8999938965,-24.0 Z M 2.84999084473,15.5500183105 c 0.0,0.0 -18.6000061035,-18.5000457764 -18.6000061035,-18.5000457764 c 0.0,0.0 12.5999908447,-12.8000030518 12.5999908447,-12.8000030518 c 0.0,0.0 18.6000213623,18.5000457764 18.6000213623,18.5000457764 c 0.0,0.0 -12.6000061035,12.8000030518 -12.6000061035,12.8000030518 Z" + android:valueType="pathType" + android:interpolator="@android:interpolator/fast_out_slow_in" /> + </set> +</set> diff --git a/packages/SystemUI/res/drawable/ic_landscape_from_auto_rotate.xml b/packages/SystemUI/res/drawable/ic_landscape_from_auto_rotate.xml new file mode 100644 index 000000000000..bc545bae6e5b --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_landscape_from_auto_rotate.xml @@ -0,0 +1,62 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2014 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:height="48dp" + android:width="48dp" + android:viewportHeight="48" + android:viewportWidth="48" > + <group + android:name="ic_screen_rotation_48px_outlines" + android:translateX="24" + android:translateY="24" > + <group + android:name="ic_screen_rotation_48px_outlines_pivot" + android:translateX="-24.15" + android:translateY="-24.25" > + <group + android:name="arrows" + android:translateX="24.1" + android:translateY="24.1" > + <group + android:name="arrows_pivot" + android:translateX="-24.1" + android:translateY="-24.1" > + <path + android:name="arrow_top" + android:pathData="M 33.1499938965,5.25 c 6.5,3.10000610352 11.1999969482,9.40000915527 11.8999938965,17.0 c 0.0,0.0 3.00001525879,0.0 3.00001525879,0.0 c -1.00001525879,-12.3000030518 -11.3000030518,-22.0 -23.9000091553,-22.0 c -0.399993896484,0.0 -0.899993896484,0.0 -1.30000305176,0.100006103516 c 0.0,0.0 7.60000610352,7.59999084473 7.60000610352,7.59999084473 c 0.0,0.0 2.69999694824,-2.69999694824 2.69999694824,-2.69999694824 Z" + android:fillColor="#FFFFFFFF" + android:fillAlpha="1" /> + <path + android:name="arrow_bottom" + android:pathData="M 15.1499938965,43.25 c -6.5,-3.09999084473 -11.1999969482,-9.5 -11.8999938965,-17.0 c 0.0,0.0 -3.0,0.0 -3.0,0.0 c 1.0,12.3000030518 11.299987793,22.0 23.8999938965,22.0 c 0.399993896484,0.0 0.899993896484,0.0 1.30000305176,-0.0999908447266 c 0.0,0.0 -7.60000610352,-7.60000610352 -7.60000610352,-7.60000610352 c 0.0,0.0 -2.69999694824,2.69999694824 -2.69999694824,2.69999694824 Z" + android:fillColor="#FFFFFFFF" + android:fillAlpha="1" /> + </group> + </group> + <group + android:name="device" + android:translateX="24.14999" + android:translateY="24.25" > + <path + android:name="body" + android:pathData="M -3.5,-20.5 c -1.19999694824,-1.19999694824 -3.10000610352,-1.19999694824 -4.19999694824,0.0 c 0.0,0.0 -12.8000030518,12.6999969482 -12.8000030518,12.6999969482 c -1.19999694824,1.19999694824 -1.19999694824,3.10000610352 0.0,4.19999694824 c 0.0,0.0 24.0,24.0000152588 24.0,24.0000152588 c 1.19999694824,1.19999694824 3.10000610352,1.19999694824 4.19999694824,0.0 c 0.0,0.0 12.6999969482,-12.700012207 12.6999969482,-12.700012207 c 1.20001220703,-1.19999694824 1.20001220703,-3.09999084473 0.0,-4.19999694824 c 0.0,0.0 -23.8999938965,-24.0 -23.8999938965,-24.0 Z M 2.84999084473,15.5500183105 c 0.0,0.0 -18.6000061035,-18.5000457764 -18.6000061035,-18.5000457764 c 0.0,0.0 12.5999908447,-12.8000030518 12.5999908447,-12.8000030518 c 0.0,0.0 18.6000213623,18.5000457764 18.6000213623,18.5000457764 c 0.0,0.0 -12.6000061035,12.8000030518 -12.6000061035,12.8000030518 Z" + android:fillColor="#FFFFFFFF" + android:fillAlpha="1" /> + </group> + </group> + </group> +</vector> diff --git a/packages/SystemUI/res/drawable/ic_landscape_from_auto_rotate_animation.xml b/packages/SystemUI/res/drawable/ic_landscape_from_auto_rotate_animation.xml new file mode 100644 index 000000000000..400a28ba4e7d --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_landscape_from_auto_rotate_animation.xml @@ -0,0 +1,34 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2014 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<animated-vector xmlns:android="http://schemas.android.com/apk/res/android" + android:drawable="@drawable/ic_landscape_from_auto_rotate" > + <target + android:name="arrows" + android:animation="@anim/ic_landscape_from_auto_rotate_animation_arrows" /> + <target + android:name="arrow_top" + android:animation="@anim/ic_landscape_from_auto_rotate_animation_arrow_top" /> + <target + android:name="arrow_bottom" + android:animation="@anim/ic_landscape_from_auto_rotate_animation_arrow_bottom" /> + <target + android:name="device" + android:animation="@anim/ic_landscape_from_auto_rotate_animation_device" /> + <target + android:name="body" + android:animation="@anim/ic_landscape_from_auto_rotate_animation_body" /> +</animated-vector> diff --git a/packages/SystemUI/res/drawable/ic_landscape_to_auto_rotate.xml b/packages/SystemUI/res/drawable/ic_landscape_to_auto_rotate.xml new file mode 100644 index 000000000000..0bd75d1871ae --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_landscape_to_auto_rotate.xml @@ -0,0 +1,66 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2014 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:height="48dp" + android:width="48dp" + android:viewportHeight="48" + android:viewportWidth="48" > + <group + android:name="ic_screen_rotation_48px_outlines" + android:translateX="24" + android:translateY="24" > + <group + android:name="ic_screen_rotation_48px_outlines_pivot" + android:translateX="-24.15" + android:translateY="-24.25" > + <group + android:name="arrows" + android:translateX="24.1" + android:translateY="24.1" + android:scaleX="0.9" + android:scaleY="0.9" + android:rotation="-135" > + <group + android:name="arrows_pivot" + android:translateX="-24.1" + android:translateY="-24.1" > + <path + android:name="arrow_top" + android:pathData="M 33.1499938965,5.25 c 6.5,3.10000610352 11.1999969482,9.40000915527 11.8999938965,17.0 c 0.0,0.0 3.00001525879,0.0 3.00001525879,0.0 c -1.00001525879,-12.3000030518 -11.3000030518,-22.0 -23.9000091553,-22.0 c -0.399993896484,0.0 -0.899993896484,0.0 -1.30000305176,0.100006103516 c 0.0,0.0 7.60000610352,7.59999084473 7.60000610352,7.59999084473 c 0.0,0.0 2.69999694824,-2.69999694824 2.69999694824,-2.69999694824 Z" + android:fillColor="#FFFFFFFF" + android:fillAlpha="0" /> + <path + android:name="arrow_bottom" + android:pathData="M 15.1499938965,43.25 c -6.5,-3.09999084473 -11.1999969482,-9.5 -11.8999938965,-17.0 c 0.0,0.0 -3.0,0.0 -3.0,0.0 c 1.0,12.3000030518 11.299987793,22.0 23.8999938965,22.0 c 0.399993896484,0.0 0.899993896484,0.0 1.30000305176,-0.0999908447266 c 0.0,0.0 -7.60000610352,-7.60000610352 -7.60000610352,-7.60000610352 c 0.0,0.0 -2.69999694824,2.69999694824 -2.69999694824,2.69999694824 Z" + android:fillColor="#FFFFFFFF" + android:fillAlpha="0" /> + </group> + </group> + <group + android:name="device" + android:translateX="24.14999" + android:translateY="24.25" + android:rotation="-45" > + <path + android:name="body" + android:pathData="M -3.34053039551,-22.9980926514 c -1.3207244873,-1.3207244873 -3.46876525879,-1.26383972168 -4.74829101563,0.125762939453 c 0.0,0.0 -14.8512420654,14.7411804199 -14.8512420654,14.7411804199 c -1.39259338379,1.392578125 -1.44947814941,3.54061889648 -0.125762939453,4.74827575684 c 0.0,0.0 26.4143981934,26.4144134521 26.4143981934,26.4144134521 c 1.3207244873,1.3207244873 3.46876525879,1.26382446289 4.74829101562,-0.125762939453 c 0.0,0.0 14.7381896973,-14.7381896973 14.7381896973,-14.7381896973 c 1.392578125,-1.39259338379 1.44947814941,-3.54061889648 0.125762939453,-4.74829101562 c 0.0,0.0 -26.3013458252,-26.417388916 -26.3013458252,-26.417388916 Z M 2.87156677246,16.9857940674 c 0.0,0.0 -19.7573547363,-19.7573699951 -19.7573547363,-19.7573699951 c 0.0,0.0 14.0142059326,-14.2142181396 14.0142059326,-14.2142181396 c 0.0,0.0 19.7573699951,19.7573699951 19.7573699951,19.7573699951 c 0.0,0.0 -14.0142211914,14.2142181396 -14.0142211914,14.2142181396 Z" + android:fillColor="#FFFFFFFF" + android:fillAlpha="1" /> + </group> + </group> + </group> +</vector> diff --git a/packages/SystemUI/res/drawable/ic_landscape_to_auto_rotate_animation.xml b/packages/SystemUI/res/drawable/ic_landscape_to_auto_rotate_animation.xml new file mode 100644 index 000000000000..5263eb49df66 --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_landscape_to_auto_rotate_animation.xml @@ -0,0 +1,34 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2014 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<animated-vector xmlns:android="http://schemas.android.com/apk/res/android" + android:drawable="@drawable/ic_landscape_to_auto_rotate" > + <target + android:name="arrows" + android:animation="@anim/ic_landscape_to_auto_rotate_animation_arrows" /> + <target + android:name="arrow_top" + android:animation="@anim/ic_landscape_to_auto_rotate_animation_arrow_top" /> + <target + android:name="arrow_bottom" + android:animation="@anim/ic_landscape_to_auto_rotate_animation_arrow_bottom" /> + <target + android:name="device" + android:animation="@anim/ic_landscape_to_auto_rotate_animation_device" /> + <target + android:name="body" + android:animation="@anim/ic_landscape_to_auto_rotate_animation_body" /> +</animated-vector> diff --git a/packages/SystemUI/res/drawable/ic_portrait_from_auto_rotate.xml b/packages/SystemUI/res/drawable/ic_portrait_from_auto_rotate.xml new file mode 100644 index 000000000000..1805a8e33290 --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_portrait_from_auto_rotate.xml @@ -0,0 +1,62 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2014 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:height="48dp" + android:width="48dp" + android:viewportHeight="48" + android:viewportWidth="48" > + <group + android:name="ic_screen_rotation_48px_outlines" + android:translateX="24" + android:translateY="24" > + <group + android:name="ic_screen_rotation_48px_outlines_pivot" + android:translateX="-24.15" + android:translateY="-24.25" > + <group + android:name="arrows" + android:translateX="24.1" + android:translateY="24.1" > + <group + android:name="arrows_pivot" + android:translateX="-24.1" + android:translateY="-24.1" > + <path + android:name="arrow_top" + android:pathData="M 33.1499938965,5.25 c 6.5,3.10000610352 11.1999969482,9.40000915527 11.8999938965,17.0 c 0.0,0.0 3.00001525879,0.0 3.00001525879,0.0 c -1.00001525879,-12.3000030518 -11.3000030518,-22.0 -23.9000091553,-22.0 c -0.399993896484,0.0 -0.899993896484,0.0 -1.30000305176,0.100006103516 c 0.0,0.0 7.60000610352,7.59999084473 7.60000610352,7.59999084473 c 0.0,0.0 2.69999694824,-2.69999694824 2.69999694824,-2.69999694824 Z" + android:fillColor="#FFFFFFFF" + android:fillAlpha="1" /> + <path + android:name="arrow_bottom" + android:pathData="M 15.1499938965,43.25 c -6.5,-3.09999084473 -11.1999969482,-9.5 -11.8999938965,-17.0 c 0.0,0.0 -3.0,0.0 -3.0,0.0 c 1.0,12.3000030518 11.299987793,22.0 23.8999938965,22.0 c 0.399993896484,0.0 0.899993896484,0.0 1.30000305176,-0.0999908447266 c 0.0,0.0 -7.60000610352,-7.60000610352 -7.60000610352,-7.60000610352 c 0.0,0.0 -2.69999694824,2.69999694824 -2.69999694824,2.69999694824 Z" + android:fillColor="#FFFFFFFF" + android:fillAlpha="1" /> + </group> + </group> + <group + android:name="device" + android:translateX="24.14999" + android:translateY="24.25" > + <path + android:name="device_1" + android:pathData="M -3.5,-20.5 c -1.19999694824,-1.19999694824 -3.10000610352,-1.19999694824 -4.19999694824,0.0 c 0.0,0.0 -12.8000030518,12.6999969482 -12.8000030518,12.6999969482 c -1.19999694824,1.19999694824 -1.19999694824,3.10000610352 0.0,4.19999694824 c 0.0,0.0 24.0,24.0000152588 24.0,24.0000152588 c 1.19999694824,1.19999694824 3.10000610352,1.19999694824 4.19999694824,0.0 c 0.0,0.0 12.6999969482,-12.700012207 12.6999969482,-12.700012207 c 1.20001220703,-1.19999694824 1.20001220703,-3.09999084473 0.0,-4.19999694824 c 0.0,0.0 -23.8999938965,-24.0 -23.8999938965,-24.0 Z M 2.84999084473,15.5500183105 c 0.0,0.0 -18.6000061035,-18.5000457764 -18.6000061035,-18.5000457764 c 0.0,0.0 12.5999908447,-12.8000030518 12.5999908447,-12.8000030518 c 0.0,0.0 18.6000213623,18.5000457764 18.6000213623,18.5000457764 c 0.0,0.0 -12.6000061035,12.8000030518 -12.6000061035,12.8000030518 Z" + android:fillColor="#FFFFFFFF" + android:fillAlpha="1" /> + </group> + </group> + </group> +</vector> diff --git a/packages/SystemUI/res/drawable/ic_portrait_from_auto_rotate_animation.xml b/packages/SystemUI/res/drawable/ic_portrait_from_auto_rotate_animation.xml new file mode 100644 index 000000000000..565ef269743d --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_portrait_from_auto_rotate_animation.xml @@ -0,0 +1,34 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2014 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<animated-vector xmlns:android="http://schemas.android.com/apk/res/android" + android:drawable="@drawable/ic_portrait_from_auto_rotate" > + <target + android:name="arrows" + android:animation="@anim/ic_portrait_from_auto_rotate_animation_arrows" /> + <target + android:name="arrow_top" + android:animation="@anim/ic_portrait_from_auto_rotate_animation_arrow_top" /> + <target + android:name="arrow_bottom" + android:animation="@anim/ic_portrait_from_auto_rotate_animation_arrow_bottom" /> + <target + android:name="device" + android:animation="@anim/ic_portrait_from_auto_rotate_animation_device" /> + <target + android:name="device_1" + android:animation="@anim/ic_portrait_from_auto_rotate_animation_device_1" /> +</animated-vector> diff --git a/packages/SystemUI/res/drawable/ic_portrait_to_auto_rotate.xml b/packages/SystemUI/res/drawable/ic_portrait_to_auto_rotate.xml new file mode 100644 index 000000000000..feb30253cf23 --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_portrait_to_auto_rotate.xml @@ -0,0 +1,66 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2014 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:height="48dp" + android:width="48dp" + android:viewportHeight="48" + android:viewportWidth="48" > + <group + android:name="ic_screen_rotation_48px_outlines" + android:translateX="24" + android:translateY="24" > + <group + android:name="ic_screen_rotation_48px_outlines_pivot" + android:translateX="-24.15" + android:translateY="-24.25" > + <group + android:name="arrows" + android:translateX="24.1" + android:translateY="24.1" + android:scaleX="0.9" + android:scaleY="0.9" + android:rotation="-221" > + <group + android:name="arrows_pivot" + android:translateX="-24.1" + android:translateY="-24.1" > + <path + android:name="arrow_top" + android:pathData="M 33.1499938965,5.25 c 6.5,3.10000610352 11.1999969482,9.40000915527 11.8999938965,17.0 c 0.0,0.0 3.00001525879,0.0 3.00001525879,0.0 c -1.00001525879,-12.3000030518 -11.3000030518,-22.0 -23.9000091553,-22.0 c -0.399993896484,0.0 -0.899993896484,0.0 -1.30000305176,0.100006103516 c 0.0,0.0 7.60000610352,7.59999084473 7.60000610352,7.59999084473 c 0.0,0.0 2.69999694824,-2.69999694824 2.69999694824,-2.69999694824 Z" + android:fillColor="#FFFFFFFF" + android:fillAlpha="0" /> + <path + android:name="arrow_bottom" + android:pathData="M 15.1499938965,43.25 c -6.5,-3.09999084473 -11.1999969482,-9.5 -11.8999938965,-17.0 c 0.0,0.0 -3.0,0.0 -3.0,0.0 c 1.0,12.3000030518 11.299987793,22.0 23.8999938965,22.0 c 0.399993896484,0.0 0.899993896484,0.0 1.30000305176,-0.0999908447266 c 0.0,0.0 -7.60000610352,-7.60000610352 -7.60000610352,-7.60000610352 c 0.0,0.0 -2.69999694824,2.69999694824 -2.69999694824,2.69999694824 Z" + android:fillColor="#FFFFFFFF" + android:fillAlpha="0" /> + </group> + </group> + <group + android:name="device" + android:translateX="24.14999" + android:translateY="24.25" + android:rotation="-135" > + <path + android:name="device_1" + android:pathData="M -3.34053039551,-22.9980926514 c -1.3207244873,-1.3207244873 -3.46876525879,-1.26383972168 -4.74829101563,0.125762939453 c 0.0,0.0 -14.8512420654,14.7411804199 -14.8512420654,14.7411804199 c -1.39259338379,1.392578125 -1.44947814941,3.54061889648 -0.125762939453,4.74827575684 c 0.0,0.0 26.4143981934,26.4144134521 26.4143981934,26.4144134521 c 1.3207244873,1.3207244873 3.46876525879,1.26382446289 4.74829101562,-0.125762939453 c 0.0,0.0 14.7381896973,-14.7381896973 14.7381896973,-14.7381896973 c 1.392578125,-1.39259338379 1.44947814941,-3.54061889648 0.125762939453,-4.74829101562 c 0.0,0.0 -26.3013458252,-26.417388916 -26.3013458252,-26.417388916 Z M 2.87156677246,16.9857940674 c 0.0,0.0 -19.7573547363,-19.7573699951 -19.7573547363,-19.7573699951 c 0.0,0.0 14.0142059326,-14.2142181396 14.0142059326,-14.2142181396 c 0.0,0.0 19.7573699951,19.7573699951 19.7573699951,19.7573699951 c 0.0,0.0 -14.0142211914,14.2142181396 -14.0142211914,14.2142181396 Z" + android:fillColor="#FFFFFFFF" + android:fillAlpha="1" /> + </group> + </group> + </group> +</vector> diff --git a/packages/SystemUI/res/drawable/ic_portrait_to_auto_rotate_animation.xml b/packages/SystemUI/res/drawable/ic_portrait_to_auto_rotate_animation.xml new file mode 100644 index 000000000000..f75617f04bef --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_portrait_to_auto_rotate_animation.xml @@ -0,0 +1,34 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2014 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<animated-vector xmlns:android="http://schemas.android.com/apk/res/android" + android:drawable="@drawable/ic_portrait_to_auto_rotate" > + <target + android:name="arrows" + android:animation="@anim/ic_portrait_to_auto_rotate_animation_arrows" /> + <target + android:name="arrow_top" + android:animation="@anim/ic_portrait_to_auto_rotate_animation_arrow_top" /> + <target + android:name="arrow_bottom" + android:animation="@anim/ic_portrait_to_auto_rotate_animation_arrow_bottom" /> + <target + android:name="device" + android:animation="@anim/ic_portrait_to_auto_rotate_animation_device" /> + <target + android:name="device_1" + android:animation="@anim/ic_portrait_to_auto_rotate_animation_device_1" /> +</animated-vector> diff --git a/packages/SystemUI/res/drawable/ic_qs_rotation_landscape.xml b/packages/SystemUI/res/drawable/ic_qs_rotation_landscape.xml deleted file mode 100644 index 4bb3668f9108..000000000000 --- a/packages/SystemUI/res/drawable/ic_qs_rotation_landscape.xml +++ /dev/null @@ -1,25 +0,0 @@ -<!-- -Copyright (C) 2014 The Android Open Source Project - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---> -<vector xmlns:android="http://schemas.android.com/apk/res/android" - android:width="64dp" - android:height="64dp" - android:viewportWidth="48.0" - android:viewportHeight="48.0"> - - <path - android:fillColor="#FFFFFFFF" - android:pathData="M2.0,14.0l0.0,20.0c0.0,2.2 1.8,4.0 4.0,4.0l36.0,0.0c2.2,0.0 4.0,-1.8 4.0,-4.0L46.0,14.0c0.0,-2.2 -1.8,-4.0 -4.0,-4.0L6.0,10.0C3.8,10.0 2.0,11.8 2.0,14.0zM38.0,14.0l0.0,20.0L10.0,34.0L10.0,14.0L38.0,14.0z"/> -</vector> diff --git a/packages/SystemUI/res/drawable/ic_qs_rotation_portrait.xml b/packages/SystemUI/res/drawable/ic_qs_rotation_portrait.xml deleted file mode 100644 index f0878c711364..000000000000 --- a/packages/SystemUI/res/drawable/ic_qs_rotation_portrait.xml +++ /dev/null @@ -1,25 +0,0 @@ -<!-- -Copyright (C) 2014 The Android Open Source Project - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---> -<vector xmlns:android="http://schemas.android.com/apk/res/android" - android:width="64dp" - android:height="64dp" - android:viewportWidth="48.0" - android:viewportHeight="48.0"> - - <path - android:fillColor="#FFFFFFFF" - android:pathData="M34.0,2.0L14.0,2.0c-2.2,0.0 -4.0,1.8 -4.0,4.0l0.0,36.0c0.0,2.2 1.8,4.0 4.0,4.0l20.0,0.0c2.2,0.0 4.0,-1.8 4.0,-4.0L38.0,6.0C38.0,3.8 36.2,2.0 34.0,2.0zM34.0,38.0L14.0,38.0L14.0,10.0l20.0,0.0L34.0,38.0z"/> -</vector> diff --git a/packages/SystemUI/res/drawable/ic_qs_rotation_unlocked.xml b/packages/SystemUI/res/drawable/ic_qs_rotation_unlocked.xml deleted file mode 100644 index 94b3a6baf1cf..000000000000 --- a/packages/SystemUI/res/drawable/ic_qs_rotation_unlocked.xml +++ /dev/null @@ -1,24 +0,0 @@ -<!-- -Copyright (C) 2014 The Android Open Source Project - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---> -<vector xmlns:android="http://schemas.android.com/apk/res/android" - android:width="64dp" - android:height="64dp" - android:viewportWidth="24.0" - android:viewportHeight="24.0"> - <path - android:fillColor="#FFFFFFFF" - android:pathData="M16.600000,2.500000c3.300000,1.500000 5.600000,4.700000 6.000000,8.500000l1.500000,0.000000c-0.600000,-6.200000 -5.700000,-11.000000 -12.000000,-11.000000c-0.200000,0.000000 -0.400000,0.000000 -0.700000,0.000000l3.800000,3.800000L16.600000,2.500000zM10.300000,1.700000c-0.600000,-0.600000 -1.500000,-0.600000 -2.100000,0.000000L1.800000,8.100000c-0.600000,0.600000 -0.600000,1.500000 0.000000,2.100000l12.000000,12.000000c0.600000,0.600000 1.500000,0.600000 2.100000,0.000000l6.400000,-6.400000c0.600000,-0.600000 0.600000,-1.500000 0.000000,-2.100000L10.300000,1.700000zM13.400000,19.700001l-9.200000,-9.200000l6.400000,-6.400000l9.200000,9.200000L13.400000,19.700001zM7.600000,21.500000C4.300000,20.000000 2.000000,16.799999 1.600000,13.000000L0.200000,13.000000c0.500000,6.200000 5.600000,11.000000 11.900000,11.000000c0.200000,0.000000 0.400000,0.000000 0.700000,0.000000L9.000000,20.200001L7.600000,21.500000z"/> -</vector> diff --git a/packages/SystemUI/res/interpolator/ic_landscape_from_auto_rotate_arrows_rotation_interpolator.xml b/packages/SystemUI/res/interpolator/ic_landscape_from_auto_rotate_arrows_rotation_interpolator.xml new file mode 100644 index 000000000000..76f5667f5fcc --- /dev/null +++ b/packages/SystemUI/res/interpolator/ic_landscape_from_auto_rotate_arrows_rotation_interpolator.xml @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2014 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<pathInterpolator xmlns:android="http://schemas.android.com/apk/res/android" + android:pathData="M 0,0 c 0.458031162,0 0.299442342,0.748308635 1,1" /> diff --git a/packages/SystemUI/res/interpolator/ic_landscape_to_auto_rotate_arrows_rotation_interpolator.xml b/packages/SystemUI/res/interpolator/ic_landscape_to_auto_rotate_arrows_rotation_interpolator.xml new file mode 100644 index 000000000000..ac27e4dae373 --- /dev/null +++ b/packages/SystemUI/res/interpolator/ic_landscape_to_auto_rotate_arrows_rotation_interpolator.xml @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2014 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<pathInterpolator xmlns:android="http://schemas.android.com/apk/res/android" + android:pathData="M 0,0 c 0.4,0.143709151 0.2,1 1,1" /> diff --git a/packages/SystemUI/res/values-da/strings.xml b/packages/SystemUI/res/values-da/strings.xml index ae8ccf34d31d..6770cbae14ee 100644 --- a/packages/SystemUI/res/values-da/strings.xml +++ b/packages/SystemUI/res/values-da/strings.xml @@ -275,7 +275,7 @@ <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"Advarsel ved <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="recents_empty_message" msgid="8682129509540827999">"Dine seneste skærme vises her"</string> <string name="recents_app_info_button_label" msgid="2890317189376000030">"Oplysninger om applikationen"</string> - <string name="recents_lock_to_app_button_label" msgid="6942899049072506044">"skærmfastholdelse"</string> + <string name="recents_lock_to_app_button_label" msgid="6942899049072506044">"bliv i app"</string> <string name="recents_search_bar_label" msgid="8074997400187836677">"søg"</string> <string name="recents_launch_error_message" msgid="2969287838120550506">"<xliff:g id="APP">%s</xliff:g> kunne ikke startes."</string> <string name="expanded_header_battery_charged" msgid="5945855970267657951">"Opladet"</string> diff --git a/packages/SystemUI/res/values-hr/strings.xml b/packages/SystemUI/res/values-hr/strings.xml index 101b4cdad7fe..bffb40590620 100644 --- a/packages/SystemUI/res/values-hr/strings.xml +++ b/packages/SystemUI/res/values-hr/strings.xml @@ -275,7 +275,7 @@ <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"Upozorenje <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="recents_empty_message" msgid="8682129509540827999">"Ovdje se pojavljuju vaši nedavni zasloni"</string> <string name="recents_app_info_button_label" msgid="2890317189376000030">"Informacije o aplikaciji"</string> - <string name="recents_lock_to_app_button_label" msgid="6942899049072506044">"prikačivanje zaslona"</string> + <string name="recents_lock_to_app_button_label" msgid="6942899049072506044">"prikvačivanje zaslona"</string> <string name="recents_search_bar_label" msgid="8074997400187836677">"pretraži"</string> <string name="recents_launch_error_message" msgid="2969287838120550506">"Aplikacija <xliff:g id="APP">%s</xliff:g> nije pokrenuta."</string> <string name="expanded_header_battery_charged" msgid="5945855970267657951">"Napunjeno"</string> diff --git a/packages/SystemUI/res/values-ka-rGE/strings.xml b/packages/SystemUI/res/values-ka-rGE/strings.xml index 9f4163f4d918..5bf4867d450a 100644 --- a/packages/SystemUI/res/values-ka-rGE/strings.xml +++ b/packages/SystemUI/res/values-ka-rGE/strings.xml @@ -275,8 +275,7 @@ <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"<xliff:g id="DATA_LIMIT">%s</xliff:g> გაფრთხილება"</string> <string name="recents_empty_message" msgid="8682129509540827999">"თქვენი ბოლო ეკრანები აქ გამოჩნდება"</string> <string name="recents_app_info_button_label" msgid="2890317189376000030">"აპლიკაციის შესახებ"</string> - <!-- no translation found for recents_lock_to_app_button_label (6942899049072506044) --> - <skip /> + <string name="recents_lock_to_app_button_label" msgid="6942899049072506044">"ეკრანზე ჩამაგრება"</string> <string name="recents_search_bar_label" msgid="8074997400187836677">"ძიება"</string> <string name="recents_launch_error_message" msgid="2969287838120550506">"<xliff:g id="APP">%s</xliff:g>-ის გამოძახება ვერ მოხერხდა."</string> <string name="expanded_header_battery_charged" msgid="5945855970267657951">"დატენილია"</string> diff --git a/packages/SystemUI/res/values-kn-rIN/strings.xml b/packages/SystemUI/res/values-kn-rIN/strings.xml index 99d8acdffdf7..ba132601336e 100644 --- a/packages/SystemUI/res/values-kn-rIN/strings.xml +++ b/packages/SystemUI/res/values-kn-rIN/strings.xml @@ -275,7 +275,7 @@ <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"<xliff:g id="DATA_LIMIT">%s</xliff:g> ಎಚ್ಚರಿಕೆ"</string> <string name="recents_empty_message" msgid="8682129509540827999">"ನಿಮ್ಮ ಇತ್ತೀಚಿನ ಪರದೆಗಳು ಇಲ್ಲಿ ಕಾಣಿಸಿಕೊಳ್ಳುತ್ತವೆ"</string> <string name="recents_app_info_button_label" msgid="2890317189376000030">"ಅಪ್ಲಿಕೇಶನ್ ಮಾಹಿತಿ"</string> - <string name="recents_lock_to_app_button_label" msgid="6942899049072506044">"ಪರದೆ ಪಿನ್ನಿಂಗ್"</string> + <string name="recents_lock_to_app_button_label" msgid="6942899049072506044">"ಸ್ಕ್ರೀನ್ ಪಿನ್ನಿಂಗ್"</string> <string name="recents_search_bar_label" msgid="8074997400187836677">"ಹುಡುಕಾಟ"</string> <string name="recents_launch_error_message" msgid="2969287838120550506">"<xliff:g id="APP">%s</xliff:g> ಪ್ರಾರಂಭಿಸಲು ಸಾದ್ಯವಿಲ್ಲ."</string> <string name="expanded_header_battery_charged" msgid="5945855970267657951">"ಚಾರ್ಜ್ ಆಗಿದೆ"</string> diff --git a/packages/SystemUI/res/values-ne-rNP/strings.xml b/packages/SystemUI/res/values-ne-rNP/strings.xml index 6caf070d9640..4365cd5a2468 100644 --- a/packages/SystemUI/res/values-ne-rNP/strings.xml +++ b/packages/SystemUI/res/values-ne-rNP/strings.xml @@ -26,8 +26,8 @@ <string name="status_bar_no_recent_apps" msgid="7374907845131203189">"तपाईँको हालको स्क्रिन यहाँ प्रकट हुन्छ"</string> <string name="status_bar_accessibility_dismiss_recents" msgid="4576076075226540105">"नयाँ अनुप्रयोगहरू खारेज गर्नुहोस्"</string> <plurals name="status_bar_accessibility_recent_apps"> - <item quantity="one" msgid="3969335317929254918">"अवलोकन मा १ पर्दा"</item> - <item quantity="other" msgid="5523506463832158203">"अवलोकन मा %%d स्क्रीन"</item> + <item quantity="one" msgid="3969335317929254918">"सारांशमा 1 पर्दा"</item> + <item quantity="other" msgid="5523506463832158203">"सारांशमा %d पर्दाहरू"</item> </plurals> <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"कुनै सूचनाहरू छैन"</string> <string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"चलिरहेको"</string> @@ -80,7 +80,7 @@ <string name="accessibility_back" msgid="567011538994429120">"पछाडि"</string> <string name="accessibility_home" msgid="8217216074895377641">"गृह"</string> <string name="accessibility_menu" msgid="316839303324695949">"मेनु"</string> - <string name="accessibility_recent" msgid="5208608566793607626">"अवलोकन"</string> + <string name="accessibility_recent" msgid="5208608566793607626">"सारांश"</string> <string name="accessibility_search_light" msgid="1103867596330271848">"खोज्नुहोस्"</string> <string name="accessibility_camera_button" msgid="8064671582820358152">"क्यामेरा"</string> <string name="accessibility_phone_button" msgid="6738112589538563574">"फोन"</string> @@ -165,7 +165,7 @@ <string name="accessibility_desc_quick_settings" msgid="6186378411582437046">"द्रुत सेटिङहरू"</string> <string name="accessibility_desc_lock_screen" msgid="5625143713611759164">"स्क्रीन बन्द गर्नुहोस्।"</string> <string name="accessibility_desc_settings" msgid="3417884241751434521">"सेटिङहरू"</string> - <string name="accessibility_desc_recent_apps" msgid="4876900986661819788">"अवलोकन।"</string> + <string name="accessibility_desc_recent_apps" msgid="4876900986661819788">"सारांश।"</string> <string name="accessibility_quick_settings_user" msgid="1104846699869476855">"प्रयोगकर्ता <xliff:g id="USER">%s</xliff:g>।"</string> <string name="accessibility_quick_settings_wifi" msgid="5518210213118181692">"<xliff:g id="SIGNAL">%1$s</xliff:g>।"</string> <string name="accessibility_quick_settings_wifi_changed_off" msgid="8716484460897819400">"वाइफाइ बन्द गरियो।"</string> diff --git a/packages/SystemUI/res/values-zh-rTW/strings.xml b/packages/SystemUI/res/values-zh-rTW/strings.xml index 773ce0f4caa7..a9dcc3942bfb 100644 --- a/packages/SystemUI/res/values-zh-rTW/strings.xml +++ b/packages/SystemUI/res/values-zh-rTW/strings.xml @@ -298,7 +298,7 @@ <string name="speed_bump_explanation" msgid="1288875699658819755">"較不緊急的通知會顯示在下方"</string> <string name="notification_tap_again" msgid="8524949573675922138">"再次輕觸即可開啟"</string> <string name="keyguard_unlock" msgid="8043466894212841998">"向上滑動即可解鎖"</string> - <string name="phone_hint" msgid="3101468054914424646">"向左滑動可使用手機功能"</string> + <string name="phone_hint" msgid="3101468054914424646">"向右滑動可使用手機功能"</string> <string name="camera_hint" msgid="5241441720959174226">"向左滑動可使用相機功能"</string> <string name="interruption_level_none" msgid="3831278883136066646">"無"</string> <string name="interruption_level_priority" msgid="6517366750688942030">"優先"</string> diff --git a/packages/SystemUI/res/values/ids.xml b/packages/SystemUI/res/values/ids.xml index 4e93cd8dfc52..4a9eb5586d98 100644 --- a/packages/SystemUI/res/values/ids.xml +++ b/packages/SystemUI/res/values/ids.xml @@ -35,5 +35,6 @@ <item type="id" name="top_inset_animator_start_value_tag"/> <item type="id" name="height_animator_start_value_tag"/> <item type="id" name="doze_saved_filter_tag"/> + <item type="id" name="qs_icon_tag"/> </resources> diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java index 4af84994c708..172aaf67b873 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java +++ b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java @@ -364,7 +364,7 @@ public class KeyguardViewMediator extends SystemUI { // only force lock screen in case of missing sim if user hasn't // gone through setup wizard synchronized (this) { - if (!mUpdateMonitor.isDeviceProvisioned()) { + if (shouldWaitForProvisioning()) { if (!isShowing()) { if (DEBUG) Log.d(TAG, "ICC_ABSENT isn't showing," + " we need to show the keyguard since the " @@ -493,8 +493,7 @@ public class KeyguardViewMediator extends SystemUI { mLockPatternUtils.setCurrentUser(ActivityManager.getCurrentUser()); // Assume keyguard is showing (unless it's disabled) until we know for sure... - mShowing = (mUpdateMonitor.isDeviceProvisioned() || mLockPatternUtils.isSecure()) - && !mLockPatternUtils.isLockScreenDisabled(); + mShowing = !shouldWaitForProvisioning() && !mLockPatternUtils.isLockScreenDisabled(); mStatusBarKeyguardViewManager = new StatusBarKeyguardViewManager(mContext, mViewMediatorCallback, mLockPatternUtils); @@ -783,7 +782,7 @@ public class KeyguardViewMediator extends SystemUI { public void verifyUnlock(IKeyguardExitCallback callback) { synchronized (this) { if (DEBUG) Log.d(TAG, "verifyUnlock"); - if (!mUpdateMonitor.isDeviceProvisioned()) { + if (shouldWaitForProvisioning()) { // don't allow this api when the device isn't provisioned if (DEBUG) Log.d(TAG, "ignoring because device isn't provisioned"); try { @@ -873,7 +872,7 @@ public class KeyguardViewMediator extends SystemUI { * was suppressed by an app that disabled the keyguard or we haven't been provisioned yet. */ public boolean isInputRestricted() { - return mShowing || mNeedToReshowWhenReenabled || !mUpdateMonitor.isDeviceProvisioned(); + return mShowing || mNeedToReshowWhenReenabled || shouldWaitForProvisioning(); } /** @@ -905,14 +904,13 @@ public class KeyguardViewMediator extends SystemUI { // if the setup wizard hasn't run yet, don't show final boolean requireSim = !SystemProperties.getBoolean("keyguard.no_require_sim", false); - final boolean provisioned = mUpdateMonitor.isDeviceProvisioned(); final IccCardConstants.State state = mUpdateMonitor.getSimState(); final boolean lockedOrMissing = state.isPinLocked() || ((state == IccCardConstants.State.ABSENT || state == IccCardConstants.State.PERM_DISABLED) && requireSim); - if (!lockedOrMissing && !provisioned) { + if (!lockedOrMissing && shouldWaitForProvisioning()) { if (DEBUG) Log.d(TAG, "doKeyguard: not showing because device isn't provisioned" + " and the sim is not locked or missing"); return; @@ -935,6 +933,10 @@ public class KeyguardViewMediator extends SystemUI { showLocked(options); } + private boolean shouldWaitForProvisioning() { + return !mUpdateMonitor.isDeviceProvisioned() && !isSecure(); + } + /** * Dismiss the keyguard through the security layers. */ diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSTile.java b/packages/SystemUI/src/com/android/systemui/qs/QSTile.java index 6ef6e9e634ff..2a66484fb556 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSTile.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSTile.java @@ -18,11 +18,13 @@ package com.android.systemui.qs; import android.content.Context; import android.content.Intent; +import android.graphics.drawable.AnimatedVectorDrawable; import android.graphics.drawable.Drawable; import android.os.Handler; import android.os.Looper; import android.os.Message; import android.util.Log; +import android.util.SparseArray; import android.view.View; import android.view.ViewGroup; @@ -299,10 +301,91 @@ public abstract class QSTile<TState extends State> implements Listenable { } } + public static abstract class Icon { + abstract public Drawable getDrawable(Context context); + + @Override + public int hashCode() { + return Icon.class.hashCode(); + } + } + + public static class ResourceIcon extends Icon { + private static final SparseArray<Icon> ICONS = new SparseArray<Icon>(); + + private final int mResId; + + private ResourceIcon(int resId) { + mResId = resId; + } + + public static Icon get(int resId) { + Icon icon = ICONS.get(resId); + if (icon == null) { + icon = new ResourceIcon(resId); + ICONS.put(resId, icon); + } + return icon; + } + + @Override + public Drawable getDrawable(Context context) { + return context.getDrawable(mResId); + } + + @Override + public boolean equals(Object o) { + return o instanceof ResourceIcon && ((ResourceIcon) o).mResId == mResId; + } + + @Override + public String toString() { + return String.format("ResourceIcon[resId=0x%08x]", mResId); + } + } + + protected class AnimationIcon extends ResourceIcon { + private boolean mAllowAnimation; + + public AnimationIcon(int resId) { + super(resId); + } + + public void setAllowAnimation(boolean allowAnimation) { + mAllowAnimation = allowAnimation; + } + + @Override + public Drawable getDrawable(Context context) { + // workaround: get a clean state for every new AVD + final AnimatedVectorDrawable d = (AnimatedVectorDrawable) super.getDrawable(context) + .getConstantState().newDrawable(); + d.start(); + if (mAllowAnimation) { + mAllowAnimation = false; + } else { + d.stop(); // skip directly to end state + } + return d; + } + } + + protected enum UserBoolean { + USER_TRUE(true, true), + USER_FALSE(true, false), + BACKGROUND_TRUE(false, true), + BACKGROUND_FALSE(false, false); + public final boolean value; + public final boolean userInitiated; + private UserBoolean(boolean userInitiated, boolean value) { + this.value = value; + this.userInitiated = userInitiated; + } + } + public static class State { public boolean visible; - public int iconId; - public Drawable icon; + public Icon icon; public String label; public String contentDescription; public String dualLabelContentDescription; @@ -312,7 +395,6 @@ public abstract class QSTile<TState extends State> implements Listenable { if (other == null) throw new IllegalArgumentException(); if (!other.getClass().equals(getClass())) throw new IllegalArgumentException(); final boolean changed = other.visible != visible - || other.iconId != iconId || !Objects.equals(other.icon, icon) || !Objects.equals(other.label, label) || !Objects.equals(other.contentDescription, contentDescription) @@ -320,7 +402,6 @@ public abstract class QSTile<TState extends State> implements Listenable { || !Objects.equals(other.dualLabelContentDescription, dualLabelContentDescription); other.visible = visible; - other.iconId = iconId; other.icon = icon; other.label = label; other.contentDescription = contentDescription; @@ -335,9 +416,8 @@ public abstract class QSTile<TState extends State> implements Listenable { } protected StringBuilder toStringBuilder() { - final StringBuilder sb = new StringBuilder( getClass().getSimpleName()).append('['); + final StringBuilder sb = new StringBuilder(getClass().getSimpleName()).append('['); sb.append("visible=").append(visible); - sb.append(",iconId=").append(iconId); sb.append(",icon=").append(icon); sb.append(",label=").append(label); sb.append(",contentDescription=").append(contentDescription); diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSTileView.java b/packages/SystemUI/src/com/android/systemui/qs/QSTileView.java index d5c90d0668bb..6b7bdd61a761 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSTileView.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSTileView.java @@ -21,6 +21,7 @@ import android.content.res.Configuration; import android.content.res.Resources; import android.content.res.TypedArray; import android.graphics.Typeface; +import android.graphics.drawable.Animatable; import android.graphics.drawable.Drawable; import android.graphics.drawable.RippleDrawable; import android.os.Handler; @@ -39,6 +40,8 @@ import com.android.systemui.FontSizeUtils; import com.android.systemui.R; import com.android.systemui.qs.QSTile.State; +import java.util.Objects; + /** View that represents a standard quick settings tile. **/ public class QSTileView extends ViewGroup { private static final Typeface CONDENSED = Typeface.create("sans-serif-condensed", @@ -285,16 +288,7 @@ public class QSTileView extends ViewGroup { protected void handleStateChanged(QSTile.State state) { if (mIcon instanceof ImageView) { - ImageView iv = (ImageView) mIcon; - if (state.icon != null) { - iv.setImageDrawable(state.icon); - } else if (state.iconId > 0) { - iv.setImageResource(state.iconId); - } - Drawable drawable = iv.getDrawable(); - if (state.autoMirrorDrawable && drawable != null) { - drawable.setAutoMirrored(true); - } + setIcon((ImageView) mIcon, state); } if (mDual) { mDualLabel.setText(state.label); @@ -306,6 +300,22 @@ public class QSTileView extends ViewGroup { } } + protected void setIcon(ImageView iv, QSTile.State state) { + if (!Objects.equals(state.icon, iv.getTag(R.id.qs_icon_tag))) { + Drawable d = state.icon != null ? state.icon.getDrawable(mContext) : null; + if (d != null && state.autoMirrorDrawable) { + d.setAutoMirrored(true); + } + iv.setImageDrawable(d); + iv.setTag(R.id.qs_icon_tag, state.icon); + if (d instanceof Animatable) { + if (!iv.isShown()) { + ((Animatable) d).stop(); // skip directly to end state + } + } + } + } + public void onStateChanged(QSTile.State state) { mHandler.obtainMessage(H.STATE_CHANGED, state).sendToTarget(); } diff --git a/packages/SystemUI/src/com/android/systemui/qs/SignalTileView.java b/packages/SystemUI/src/com/android/systemui/qs/SignalTileView.java index cfcd74e8cf47..9ac79440ac45 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/SignalTileView.java +++ b/packages/SystemUI/src/com/android/systemui/qs/SignalTileView.java @@ -104,7 +104,7 @@ public final class SignalTileView extends QSTileView { protected void handleStateChanged(QSTile.State state) { super.handleStateChanged(state); final SignalState s = (SignalState) state; - mSignal.setImageResource(s.iconId); + setIcon(mSignal, s); if (s.overlayIconId > 0) { mOverlay.setVisibility(VISIBLE); mOverlay.setImageResource(s.overlayIconId); diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/AirplaneModeTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/AirplaneModeTile.java index 51401c8c9666..cd44a2bb2003 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/AirplaneModeTile.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/AirplaneModeTile.java @@ -68,11 +68,11 @@ public class AirplaneModeTile extends QSTile<QSTile.BooleanState> { state.visible = true; state.label = mContext.getString(R.string.quick_settings_airplane_mode_label); if (airplaneMode) { - state.iconId = R.drawable.ic_qs_airplane_on; + state.icon = ResourceIcon.get(R.drawable.ic_qs_airplane_on); state.contentDescription = mContext.getString( R.string.accessibility_quick_settings_airplane_on); } else { - state.iconId = R.drawable.ic_qs_airplane_off; + state.icon = ResourceIcon.get(R.drawable.ic_qs_airplane_off); state.contentDescription = mContext.getString( R.string.accessibility_quick_settings_airplane_off); } diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java index 84bfb8fddca1..4d7734817941 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java @@ -92,17 +92,17 @@ public class BluetoothTile extends QSTile<QSTile.BooleanState> { if (enabled) { state.label = null; if (connected) { - state.iconId = R.drawable.ic_qs_bluetooth_connected; + state.icon = ResourceIcon.get(R.drawable.ic_qs_bluetooth_connected); state.contentDescription = mContext.getString( R.string.accessibility_quick_settings_bluetooth_connected); state.label = mController.getLastDeviceName(); } else if (connecting) { - state.iconId = R.drawable.ic_qs_bluetooth_connecting; + state.icon = ResourceIcon.get(R.drawable.ic_qs_bluetooth_connecting); state.contentDescription = mContext.getString( R.string.accessibility_quick_settings_bluetooth_connecting); state.label = mContext.getString(R.string.quick_settings_bluetooth_label); } else { - state.iconId = R.drawable.ic_qs_bluetooth_on; + state.icon = ResourceIcon.get(R.drawable.ic_qs_bluetooth_on); state.contentDescription = mContext.getString( R.string.accessibility_quick_settings_bluetooth_on); } @@ -110,7 +110,7 @@ public class BluetoothTile extends QSTile<QSTile.BooleanState> { state.label = mContext.getString(R.string.quick_settings_bluetooth_label); } } else { - state.iconId = R.drawable.ic_qs_bluetooth_off; + state.icon = ResourceIcon.get(R.drawable.ic_qs_bluetooth_off); state.label = mContext.getString(R.string.quick_settings_bluetooth_label); state.contentDescription = mContext.getString( R.string.accessibility_quick_settings_bluetooth_off); diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/CastTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/CastTile.java index 830429136808..5bf6fb5b5e5c 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/CastTile.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/CastTile.java @@ -107,7 +107,8 @@ public class CastTile extends QSTile<QSTile.BooleanState> { if (!state.value && connecting) { state.label = mContext.getString(R.string.quick_settings_connecting); } - state.iconId = state.value ? R.drawable.ic_qs_cast_on : R.drawable.ic_qs_cast_off; + state.icon = ResourceIcon.get(state.value ? R.drawable.ic_qs_cast_on + : R.drawable.ic_qs_cast_off); mDetailAdapter.updateItems(devices); } diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/CellularTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/CellularTile.java index 359a259ecf0f..178590be3b23 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/CellularTile.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/CellularTile.java @@ -87,16 +87,17 @@ public class CellularTile extends QSTile<QSTile.SignalState> { if (cb == null) return; final Resources r = mContext.getResources(); - state.iconId = cb.noSim ? R.drawable.ic_qs_no_sim + final int iconId = cb.noSim ? R.drawable.ic_qs_no_sim : !cb.enabled || cb.airplaneModeEnabled ? R.drawable.ic_qs_signal_disabled : cb.mobileSignalIconId > 0 ? cb.mobileSignalIconId : R.drawable.ic_qs_signal_no_signal; + state.icon = ResourceIcon.get(iconId); state.isOverlayIconWide = cb.isDataTypeIconWide; state.autoMirrorDrawable = !cb.noSim; state.overlayIconId = cb.enabled && (cb.dataTypeIconId > 0) && !cb.wifiConnected ? cb.dataTypeIconId : 0; - state.filter = state.iconId != R.drawable.ic_qs_no_sim; + state.filter = iconId != R.drawable.ic_qs_no_sim; state.activityIn = cb.enabled && cb.activityIn; state.activityOut = cb.enabled && cb.activityOut; diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/ColorInversionTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/ColorInversionTile.java index 7ba1dc03b295..b24f8bf87afc 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/ColorInversionTile.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/ColorInversionTile.java @@ -88,7 +88,8 @@ public class ColorInversionTile extends QSTile<QSTile.BooleanState> { state.visible = enabled || mUsageTracker.isRecentlyUsed(); state.value = enabled; state.label = mContext.getString(R.string.quick_settings_inversion_label); - state.iconId = enabled ? R.drawable.ic_qs_inversion_on : R.drawable.ic_qs_inversion_off; + state.icon = ResourceIcon.get(enabled ? R.drawable.ic_qs_inversion_on + : R.drawable.ic_qs_inversion_off); } @Override diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/FlashlightTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/FlashlightTile.java index e6b7f02586f1..055a6b79e714 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/FlashlightTile.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/FlashlightTile.java @@ -92,8 +92,8 @@ public class FlashlightTile extends QSTile<QSTile.BooleanState> implements // the camera is not available while it is being used for the flashlight. state.visible = mWasLastOn != 0 || mFlashlightController.isAvailable(); state.label = mHost.getContext().getString(R.string.quick_settings_flashlight_label); - state.iconId = state.value - ? R.drawable.ic_qs_flashlight_on : R.drawable.ic_qs_flashlight_off; + state.icon = ResourceIcon.get(state.value ? R.drawable.ic_qs_flashlight_on + : R.drawable.ic_qs_flashlight_off); int onOrOffId = state.value ? R.string.accessibility_quick_settings_flashlight_on : R.string.accessibility_quick_settings_flashlight_off; diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/HotspotTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/HotspotTile.java index b30a1d3c4d91..64dab858031d 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/HotspotTile.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/HotspotTile.java @@ -71,8 +71,8 @@ public class HotspotTile extends QSTile<QSTile.BooleanState> { state.label = mContext.getString(R.string.quick_settings_hotspot_label); state.value = mController.isHotspotEnabled(); - state.iconId = state.visible && state.value ? R.drawable.ic_qs_hotspot_on - : R.drawable.ic_qs_hotspot_off; + state.icon = ResourceIcon.get(state.visible && state.value ? R.drawable.ic_qs_hotspot_on + : R.drawable.ic_qs_hotspot_off); } @Override diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/IntentTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/IntentTile.java index 58587e651bdc..6fb9cd897277 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/IntentTile.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/IntentTile.java @@ -31,6 +31,9 @@ import android.util.Log; import com.android.systemui.qs.QSTile; +import java.util.Arrays; +import java.util.Objects; + public class IntentTile extends QSTile<QSTile.State> { public static final String PREFIX = "intent("; @@ -96,13 +99,11 @@ public class IntentTile extends QSTile<QSTile.State> { state.visible = intent.getBooleanExtra("visible", true); state.contentDescription = intent.getStringExtra("contentDescription"); state.label = intent.getStringExtra("label"); - state.iconId = 0; state.icon = null; final byte[] iconBitmap = intent.getByteArrayExtra("iconBitmap"); if (iconBitmap != null) { try { - final Bitmap b = BitmapFactory.decodeByteArray(iconBitmap, 0, iconBitmap.length); - state.icon = new BitmapDrawable(mContext.getResources(), b); + state.icon = new BytesIcon(iconBitmap); } catch (Throwable t) { Log.w(TAG, "Error loading icon bitmap, length " + iconBitmap.length, t); } @@ -111,9 +112,9 @@ public class IntentTile extends QSTile<QSTile.State> { if (iconId != 0) { final String iconPackage = intent.getStringExtra("iconPackage"); if (!TextUtils.isEmpty(iconPackage)) { - state.icon = getPackageDrawable(iconPackage, iconId); + state.icon = new PackageDrawableIcon(iconPackage, iconId); } else { - state.iconId = iconId; + state.icon = ResourceIcon.get(iconId); } } } @@ -121,19 +122,66 @@ public class IntentTile extends QSTile<QSTile.State> { mOnClickUri = intent.getStringExtra("onClickUri"); } - private Drawable getPackageDrawable(String pkg, int id) { - try { - return mContext.createPackageContext(pkg, 0).getDrawable(id); - } catch (Throwable t) { - Log.w(TAG, "Error loading package drawable pkg=" + pkg + " id=" + id, t); - return null; - } - } - private final BroadcastReceiver mReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { refreshState(intent); } }; + + private static class BytesIcon extends Icon { + private final byte[] mBytes; + + public BytesIcon(byte[] bytes) { + mBytes = bytes; + } + + @Override + public Drawable getDrawable(Context context) { + final Bitmap b = BitmapFactory.decodeByteArray(mBytes, 0, mBytes.length); + return new BitmapDrawable(context.getResources(), b); + } + + @Override + public boolean equals(Object o) { + return o instanceof BytesIcon && Arrays.equals(((BytesIcon) o).mBytes, mBytes); + } + + @Override + public String toString() { + return String.format("BytesIcon[len=%s]", mBytes.length); + } + } + + private class PackageDrawableIcon extends Icon { + private final String mPackage; + private final int mResId; + + public PackageDrawableIcon(String pkg, int resId) { + mPackage = pkg; + mResId = resId; + } + + @Override + public boolean equals(Object o) { + if (!(o instanceof PackageDrawableIcon)) return false; + final PackageDrawableIcon other = (PackageDrawableIcon) o; + return Objects.equals(other.mPackage, mPackage) && other.mResId == mResId; + } + + @Override + public Drawable getDrawable(Context context) { + try { + return context.createPackageContext(mPackage, 0).getDrawable(mResId); + } catch (Throwable t) { + Log.w(TAG, "Error loading package drawable pkg=" + mPackage + " id=" + mResId, t); + return null; + } + } + + @Override + public String toString() { + return String.format("PackageDrawableIcon[pkg=%s,id=0x%08x]", mPackage, mResId); + } + } } diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/LocationTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/LocationTile.java index d1dc5d2b00e7..81741ce8a8ac 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/LocationTile.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/LocationTile.java @@ -67,12 +67,12 @@ public class LocationTile extends QSTile<QSTile.BooleanState> { state.visible = !mKeyguard.isShowing(); state.value = locationEnabled; if (locationEnabled) { - state.iconId = R.drawable.ic_qs_location_on; + state.icon = ResourceIcon.get(R.drawable.ic_qs_location_on); state.label = mContext.getString(R.string.quick_settings_location_label); state.contentDescription = mContext.getString( R.string.accessibility_quick_settings_location_on); } else { - state.iconId = R.drawable.ic_qs_location_off; + state.icon = ResourceIcon.get(R.drawable.ic_qs_location_off); state.label = mContext.getString(R.string.quick_settings_location_label); state.contentDescription = mContext.getString( R.string.accessibility_quick_settings_location_off); diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/RotationLockTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/RotationLockTile.java index ae40a4d03899..49cd14afc944 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/RotationLockTile.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/RotationLockTile.java @@ -17,7 +17,6 @@ package com.android.systemui.qs.tiles; import android.content.res.Configuration; -import android.content.res.Resources; import com.android.systemui.R; import com.android.systemui.qs.QSTile; @@ -26,6 +25,15 @@ import com.android.systemui.statusbar.policy.RotationLockController.RotationLock /** Quick settings tile: Rotation **/ public class RotationLockTile extends QSTile<QSTile.BooleanState> { + private final AnimationIcon PORTRAIT_TO_AUTO + = new AnimationIcon(R.drawable.ic_portrait_to_auto_rotate_animation); + private final AnimationIcon AUTO_TO_PORTRAIT + = new AnimationIcon(R.drawable.ic_portrait_from_auto_rotate_animation); + + private final AnimationIcon LANDSCAPE_TO_AUTO + = new AnimationIcon(R.drawable.ic_landscape_to_auto_rotate_animation); + private final AnimationIcon AUTO_TO_LANDSCAPE + = new AnimationIcon(R.drawable.ic_landscape_from_auto_rotate_animation); private final RotationLockController mController; @@ -51,30 +59,34 @@ public class RotationLockTile extends QSTile<QSTile.BooleanState> { @Override protected void handleClick() { if (mController == null) return; - mController.setRotationLocked(!mState.value); + final boolean newState = !mState.value; + mController.setRotationLocked(newState); + refreshState(newState ? UserBoolean.USER_TRUE : UserBoolean.USER_FALSE); } @Override protected void handleUpdateState(BooleanState state, Object arg) { if (mController == null) return; - final boolean rotationLocked = mController.isRotationLocked(); + final boolean rotationLocked = arg != null ? ((UserBoolean) arg).value + : mController.isRotationLocked(); + final boolean userInitiated = arg != null ? ((UserBoolean) arg).userInitiated : false; state.visible = mController.isRotationLockAffordanceVisible(); - final Resources res = mContext.getResources(); state.value = rotationLocked; + final boolean portrait = mContext.getResources().getConfiguration().orientation + != Configuration.ORIENTATION_LANDSCAPE; + final AnimationIcon icon; if (rotationLocked) { - final boolean portrait = res.getConfiguration().orientation - != Configuration.ORIENTATION_LANDSCAPE; final int label = portrait ? R.string.quick_settings_rotation_locked_portrait_label : R.string.quick_settings_rotation_locked_landscape_label; - final int icon = portrait ? R.drawable.ic_qs_rotation_portrait - : R.drawable.ic_qs_rotation_landscape; state.label = mContext.getString(label); - state.icon = mContext.getDrawable(icon); + icon = portrait ? AUTO_TO_PORTRAIT : AUTO_TO_LANDSCAPE; } else { state.label = mContext.getString(R.string.quick_settings_rotation_unlocked_label); - state.icon = res.getDrawable(R.drawable.ic_qs_rotation_unlocked); + icon = portrait ? PORTRAIT_TO_AUTO : LANDSCAPE_TO_AUTO; } - state.contentDescription = getAccessibilityString( + icon.setAllowAnimation(userInitiated); + state.icon = icon; + state.contentDescription = getAccessibilityString(rotationLocked, R.string.accessibility_rotation_lock_on_portrait, R.string.accessibility_rotation_lock_on_landscape, R.string.accessibility_rotation_lock_off); @@ -83,14 +95,16 @@ public class RotationLockTile extends QSTile<QSTile.BooleanState> { /** * Get the correct accessibility string based on the state * + * @param locked Whether or not rotation is locked. * @param idWhenPortrait The id which should be used when locked in portrait. * @param idWhenLandscape The id which should be used when locked in landscape. * @param idWhenOff The id which should be used when the rotation lock is off. * @return */ - private String getAccessibilityString(int idWhenPortrait, int idWhenLandscape, int idWhenOff) { + private String getAccessibilityString(boolean locked, int idWhenPortrait, int idWhenLandscape, + int idWhenOff) { int stringID; - if (mState.value) { + if (locked) { final boolean portrait = mContext.getResources().getConfiguration().orientation != Configuration.ORIENTATION_LANDSCAPE; stringID = portrait ? idWhenPortrait: idWhenLandscape; @@ -102,7 +116,7 @@ public class RotationLockTile extends QSTile<QSTile.BooleanState> { @Override protected String composeChangeAnnouncement() { - return getAccessibilityString( + return getAccessibilityString(mState.value, R.string.accessibility_rotation_lock_on_portrait_changed, R.string.accessibility_rotation_lock_on_landscape_changed, R.string.accessibility_rotation_lock_off_changed); @@ -111,7 +125,8 @@ public class RotationLockTile extends QSTile<QSTile.BooleanState> { private final RotationLockControllerCallback mCallback = new RotationLockControllerCallback() { @Override public void onRotationLockStateChanged(boolean rotationLocked, boolean affordanceVisible) { - refreshState(); + refreshState(rotationLocked ? UserBoolean.BACKGROUND_TRUE + : UserBoolean.BACKGROUND_FALSE); } }; } diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/WifiTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/WifiTile.java index 20c4ee8c406f..7aa884effe7a 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/WifiTile.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/WifiTile.java @@ -120,19 +120,19 @@ public class WifiTile extends QSTile<QSTile.SignalState> { final String signalContentDescription; final Resources r = mContext.getResources(); if (!state.enabled) { - state.iconId = R.drawable.ic_qs_wifi_disabled; + state.icon = ResourceIcon.get(R.drawable.ic_qs_wifi_disabled); state.label = r.getString(R.string.quick_settings_wifi_label); signalContentDescription = r.getString(R.string.accessibility_wifi_off); } else if (wifiConnected) { - state.iconId = cb.wifiSignalIconId; + state.icon = ResourceIcon.get(cb.wifiSignalIconId); state.label = removeDoubleQuotes(cb.enabledDesc); signalContentDescription = cb.wifiSignalContentDescription; } else if (wifiNotConnected) { - state.iconId = R.drawable.ic_qs_wifi_0; + state.icon = ResourceIcon.get(R.drawable.ic_qs_wifi_0); state.label = r.getString(R.string.quick_settings_wifi_label); signalContentDescription = r.getString(R.string.accessibility_no_wifi); } else { - state.iconId = R.drawable.ic_qs_wifi_no_network; + state.icon = ResourceIcon.get(R.drawable.ic_qs_wifi_no_network); state.label = r.getString(R.string.quick_settings_wifi_label); signalContentDescription = r.getString(R.string.accessibility_wifi_off); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java index 09d0b5d46e70..7bbf9e23372f 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java @@ -159,9 +159,6 @@ public abstract class BaseStatusBar extends SystemUI implements protected HeadsUpNotificationView mHeadsUpNotificationView; protected int mHeadsUpNotificationDecay; - // used to notify status bar for suppressing notification LED - protected boolean mPanelSlightlyVisible; - // Search panel protected SearchPanelView mSearchPanelView; @@ -173,6 +170,20 @@ public abstract class BaseStatusBar extends SystemUI implements // on-screen navigation buttons protected NavigationBarView mNavigationBarView = null; + + protected Boolean mScreenOn; + + // The second field is a bit different from the first one because it only listens to screen on/ + // screen of events from Keyguard. We need this so we don't have a race condition with the + // broadcast. In the future, we should remove the first field altogether and rename the second + // field. + protected boolean mScreenOnFromKeyguard; + + protected boolean mVisible; + + // mScreenOnFromKeyguard && mVisible. + private boolean mVisibleToUser; + private Locale mLocale; private float mFontScale; @@ -1599,28 +1610,41 @@ public abstract class BaseStatusBar extends SystemUI implements } } + protected void visibilityChanged(boolean visible) { + if (mVisible != visible) { + mVisible = visible; + if (!visible) { + dismissPopups(); + } + } + updateVisibleToUser(); + } + + protected void updateVisibleToUser() { + boolean oldVisibleToUser = mVisibleToUser; + mVisibleToUser = mVisible && mScreenOnFromKeyguard; + + if (oldVisibleToUser != mVisibleToUser) { + handleVisibleToUserChanged(mVisibleToUser); + } + } + /** - * The LEDs are turned o)ff when the notification panel is shown, even just a little bit. + * The LEDs are turned off when the notification panel is shown, even just a little bit. * This was added last-minute and is inconsistent with the way the rest of the notifications * are handled, because the notification isn't really cancelled. The lights are just * turned off. If any other notifications happen, the lights will turn back on. Steve says * this is what he wants. (see bug 1131461) */ - protected void visibilityChanged(boolean visible) { - if (mPanelSlightlyVisible != visible) { - mPanelSlightlyVisible = visible; - if (!visible) { - dismissPopups(); - } - try { - if (visible) { - mBarService.onPanelRevealed(); - } else { - mBarService.onPanelHidden(); - } - } catch (RemoteException ex) { - // Won't fail unless the world has ended. + protected void handleVisibleToUserChanged(boolean visibleToUser) { + try { + if (visibleToUser) { + mBarService.onPanelRevealed(); + } else { + mBarService.onPanelHidden(); } + } catch (RemoteException ex) { + // Won't fail unless the world has ended. } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java b/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java index ce35e4bce2b5..992aa9fa4c50 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java @@ -162,8 +162,9 @@ public class KeyguardIndicationController { KeyguardUpdateMonitorCallback mUpdateMonitor = new KeyguardUpdateMonitorCallback() { @Override public void onRefreshBatteryInfo(KeyguardUpdateMonitor.BatteryStatus status) { - mPowerPluggedIn = status.status == BatteryManager.BATTERY_STATUS_CHARGING + boolean isChargingOrFull = status.status == BatteryManager.BATTERY_STATUS_CHARGING || status.status == BatteryManager.BATTERY_STATUS_FULL; + mPowerPluggedIn = status.isPluggedIn() && isChargingOrFull; mPowerCharged = status.isCharged(); updateIndication(); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/BarTransitions.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/BarTransitions.java index 32fb56766c6a..e89e15d64203 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/BarTransitions.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/BarTransitions.java @@ -45,6 +45,7 @@ public class BarTransitions { public static final int MODE_LIGHTS_OUT = 3; public static final int MODE_TRANSPARENT = 4; public static final int MODE_WARNING = 5; + public static final int MODE_LIGHTS_OUT_TRANSPARENT = 6; public static final int LIGHTS_IN_DURATION = 250; public static final int LIGHTS_OUT_DURATION = 750; @@ -75,6 +76,9 @@ public class BarTransitions { || mode == MODE_TRANSPARENT)) { mode = MODE_OPAQUE; } + if (!HIGH_END && (mode == MODE_LIGHTS_OUT_TRANSPARENT)) { + mode = MODE_LIGHTS_OUT; + } if (mMode == mode) return; int oldMode = mMode; mMode = mode; @@ -102,6 +106,7 @@ public class BarTransitions { if (mode == MODE_LIGHTS_OUT) return "MODE_LIGHTS_OUT"; if (mode == MODE_TRANSPARENT) return "MODE_TRANSPARENT"; if (mode == MODE_WARNING) return "MODE_WARNING"; + if (mode == MODE_LIGHTS_OUT_TRANSPARENT) return "MODE_LIGHTS_OUT_TRANSPARENT"; throw new IllegalArgumentException("Unknown mode " + mode); } @@ -109,6 +114,10 @@ public class BarTransitions { mBarBackground.finishAnimation(); } + protected boolean isLightsOut(int mode) { + return mode == MODE_LIGHTS_OUT || mode == MODE_LIGHTS_OUT_TRANSPARENT; + } + private static class BarBackgroundDrawable extends Drawable { private final int mOpaque; private final int mSemiTransparent; @@ -196,7 +205,7 @@ public class BarTransitions { targetColor = mSemiTransparent; } else if (mMode == MODE_SEMI_TRANSPARENT) { targetColor = mSemiTransparent; - } else if (mMode == MODE_TRANSPARENT) { + } else if (mMode == MODE_TRANSPARENT || mMode == MODE_LIGHTS_OUT_TRANSPARENT) { targetColor = mTransparent; } else { targetColor = mOpaque; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarTransitions.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarTransitions.java index f3930ba14014..15f6dc2b9c15 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarTransitions.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarTransitions.java @@ -84,7 +84,7 @@ public final class NavigationBarTransitions extends BarTransitions { applyBackButtonQuiescentAlpha(mode, animate); // apply to lights out - applyLightsOut(mode == MODE_LIGHTS_OUT, animate, force); + applyLightsOut(isLightsOut(mode), animate, force); } private float alphaForMode(int mode) { @@ -171,7 +171,8 @@ public final class NavigationBarTransitions extends BarTransitions { applyLightsOut(false, false, false); try { - mBarService.setSystemUiVisibility(0, View.SYSTEM_UI_FLAG_LOW_PROFILE); + mBarService.setSystemUiVisibility(0, View.SYSTEM_UI_FLAG_LOW_PROFILE, + "LightsOutListener"); } catch (android.os.RemoteException ex) { } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java index 65762ec1cdcd..142791df1ddf 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java @@ -23,6 +23,7 @@ import static android.app.StatusBarManager.WINDOW_STATE_HIDDEN; import static android.app.StatusBarManager.WINDOW_STATE_SHOWING; import static android.app.StatusBarManager.windowStateToString; import static com.android.systemui.statusbar.phone.BarTransitions.MODE_LIGHTS_OUT; +import static com.android.systemui.statusbar.phone.BarTransitions.MODE_LIGHTS_OUT_TRANSPARENT; import static com.android.systemui.statusbar.phone.BarTransitions.MODE_OPAQUE; import static com.android.systemui.statusbar.phone.BarTransitions.MODE_SEMI_TRANSPARENT; import static com.android.systemui.statusbar.phone.BarTransitions.MODE_TRANSLUCENT; @@ -55,7 +56,6 @@ import android.graphics.Point; import android.graphics.PorterDuff; import android.graphics.PorterDuffXfermode; import android.graphics.Rect; -import android.graphics.Xfermode; import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.Drawable; import android.inputmethodservice.InputMethodService; @@ -98,7 +98,6 @@ import android.view.ViewTreeObserver; import android.view.WindowManager; import android.view.WindowManagerGlobal; import android.view.accessibility.AccessibilityEvent; -import android.view.accessibility.AccessibilityManager; import android.view.animation.AccelerateDecelerateInterpolator; import android.view.animation.AccelerateInterpolator; import android.view.animation.Animation; @@ -409,13 +408,6 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, private boolean mAutohideSuspended; private int mStatusBarMode; private int mNavigationBarMode; - private Boolean mScreenOn; - - // The second field is a bit different from the first one because it only listens to screen on/ - // screen of events from Keyguard. We need this so we don't have a race condition with the - // broadcast. In the future, we should remove the first field altogether and rename the second - // field. - private boolean mScreenOnFromKeyguard; private ViewMediatorCallback mKeyguardViewMediatorCallback; private ScrimController mScrimController; @@ -429,7 +421,6 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, } }}; - private boolean mVisible; private boolean mWaitingForKeyguardExit; private boolean mDozing; private boolean mScrimSrcModeEnabled; @@ -2610,8 +2601,10 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, } private int barMode(int vis, int transientFlag, int translucentFlag) { + int lightsOutTransparent = View.SYSTEM_UI_FLAG_LOW_PROFILE | View.SYSTEM_UI_TRANSPARENT; return (vis & transientFlag) != 0 ? MODE_SEMI_TRANSPARENT : (vis & translucentFlag) != 0 ? MODE_TRANSLUCENT + : (vis & lightsOutTransparent) == lightsOutTransparent ? MODE_LIGHTS_OUT_TRANSPARENT : (vis & View.SYSTEM_UI_TRANSPARENT) != 0 ? MODE_TRANSPARENT : (vis & View.SYSTEM_UI_FLAG_LOW_PROFILE) != 0 ? MODE_LIGHTS_OUT : MODE_OPAQUE; @@ -3077,7 +3070,6 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, notifyNavigationBarScreenOn(false); notifyHeadsUpScreenOn(false); finishBarAnimations(); - stopNotificationLogging(); resetUserExpandedStates(); } else if (Intent.ACTION_SCREEN_ON.equals(action)) { @@ -3085,7 +3077,6 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, // work around problem where mDisplay.getRotation() is not stable while screen is off (bug 7086018) repositionNavigationBar(); notifyNavigationBarScreenOn(true); - startNotificationLoggingIfScreenOnAndVisible(); } else if (ACTION_DEMO.equals(action)) { Bundle bundle = intent.getExtras(); @@ -3274,14 +3265,14 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, // Visibility reporting @Override - protected void visibilityChanged(boolean visible) { - mVisible = visible; - if (visible) { - startNotificationLoggingIfScreenOnAndVisible(); + protected void handleVisibleToUserChanged(boolean visibleToUser) { + if (visibleToUser) { + super.handleVisibleToUserChanged(visibleToUser); + startNotificationLogging(); } else { stopNotificationLogging(); + super.handleVisibleToUserChanged(visibleToUser); } - super.visibilityChanged(visible); } private void stopNotificationLogging() { @@ -3296,17 +3287,15 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, mStackScroller.setChildLocationsChangedListener(null); } - private void startNotificationLoggingIfScreenOnAndVisible() { - if (mVisible && mScreenOn) { - mStackScroller.setChildLocationsChangedListener(mNotificationLocationsChangedListener); - // Some transitions like mScreenOn=false -> mScreenOn=true don't - // cause the scroller to emit child location events. Hence generate - // one ourselves to guarantee that we're reporting visible - // notifications. - // (Note that in cases where the scroller does emit events, this - // additional event doesn't break anything.) - mNotificationLocationsChangedListener.onChildLocationsChanged(mStackScroller); - } + private void startNotificationLogging() { + mStackScroller.setChildLocationsChangedListener(mNotificationLocationsChangedListener); + // Some transitions like mVisibleToUser=false -> mVisibleToUser=true don't + // cause the scroller to emit child location events. Hence generate + // one ourselves to guarantee that we're reporting visible + // notifications. + // (Note that in cases where the scroller does emit events, this + // additional event doesn't break anything.) + mNotificationLocationsChangedListener.onChildLocationsChanged(mStackScroller); } private void logNotificationVisibilityChanges( @@ -3650,9 +3639,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, } private void updatePublicMode() { - setLockscreenPublicMode( - (mStatusBarKeyguardViewManager.isShowing() || - mStatusBarKeyguardViewManager.isOccluded()) + setLockscreenPublicMode(mStatusBarKeyguardViewManager.isShowing() && mStatusBarKeyguardViewManager.isSecure()); } @@ -3948,6 +3935,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, mScreenOnFromKeyguard = false; mScreenOnComingFromTouch = false; mStackScroller.setAnimationsEnabled(false); + updateVisibleToUser(); } public void onScreenTurnedOn() { @@ -3955,6 +3943,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, mStackScroller.setAnimationsEnabled(true); mNotificationPanel.onScreenTurnedOn(); mNotificationPanel.setTouchDisabled(false); + updateVisibleToUser(); } /** diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarTransitions.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarTransitions.java index 8520f405ee09..fb1addfeb1c3 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarTransitions.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarTransitions.java @@ -57,19 +57,19 @@ public final class PhoneStatusBarTransitions extends BarTransitions { } private float getNonBatteryClockAlphaFor(int mode) { - return mode == MODE_LIGHTS_OUT ? ICON_ALPHA_WHEN_LIGHTS_OUT_NON_BATTERY_CLOCK + return isLightsOut(mode) ? ICON_ALPHA_WHEN_LIGHTS_OUT_NON_BATTERY_CLOCK : !isOpaque(mode) ? ICON_ALPHA_WHEN_NOT_OPAQUE : mIconAlphaWhenOpaque; } private float getBatteryClockAlpha(int mode) { - return mode == MODE_LIGHTS_OUT ? ICON_ALPHA_WHEN_LIGHTS_OUT_BATTERY_CLOCK + return isLightsOut(mode) ? ICON_ALPHA_WHEN_LIGHTS_OUT_BATTERY_CLOCK : getNonBatteryClockAlphaFor(mode); } private boolean isOpaque(int mode) { return !(mode == MODE_SEMI_TRANSPARENT || mode == MODE_TRANSLUCENT - || mode == MODE_TRANSPARENT); + || mode == MODE_TRANSPARENT || mode == MODE_LIGHTS_OUT_TRANSPARENT); } @Override @@ -94,7 +94,7 @@ public final class PhoneStatusBarTransitions extends BarTransitions { animateTransitionTo(mBattery, newAlphaBC), animateTransitionTo(mClock, newAlphaBC) ); - if (mode == MODE_LIGHTS_OUT) { + if (isLightsOut(mode)) { anims.setDuration(LIGHTS_OUT_DURATION); } anims.start(); diff --git a/policy/src/com/android/internal/policy/impl/PhoneWindow.java b/policy/src/com/android/internal/policy/impl/PhoneWindow.java index 4714826dee62..c34316b5d013 100644 --- a/policy/src/com/android/internal/policy/impl/PhoneWindow.java +++ b/policy/src/com/android/internal/policy/impl/PhoneWindow.java @@ -2190,6 +2190,7 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback { private int mLastBottomInset = 0; private int mLastRightInset = 0; + private int mRootScrollY = 0; public DecorView(Context context, int featureId) { super(context); @@ -2891,6 +2892,7 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback { view.setId(id); addView(view, new LayoutParams(LayoutParams.MATCH_PARENT, height, Gravity.START | verticalGravity)); + updateColorViewTranslations(); } } else { int vis = show ? VISIBLE : INVISIBLE; @@ -2907,6 +2909,18 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback { return view; } + private void updateColorViewTranslations() { + // Put the color views back in place when they get moved off the screen + // due to the the ViewRootImpl panning. + int rootScrollY = mRootScrollY; + if (mStatusColorView != null) { + mStatusColorView.setTranslationY(rootScrollY > 0 ? rootScrollY : 0); + } + if (mNavigationColorView != null) { + mNavigationColorView.setTranslationY(rootScrollY < 0 ? rootScrollY : 0); + } + } + private WindowInsets updateStatusGuard(WindowInsets insets) { boolean showStatusGuard = false; // Show the status guard when the non-overlay contextual action bar is showing @@ -3165,6 +3179,12 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback { else PhoneWindow.this.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); } + @Override + public void onRootViewScrollYChanged(int rootScrollY) { + mRootScrollY = rootScrollY; + updateColorViewTranslations(); + } + /** * Clears out internal reference when the action mode is destroyed. */ diff --git a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java index 1195ac8b41f8..792712f66e1b 100644 --- a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java +++ b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java @@ -4767,18 +4767,39 @@ public class PhoneWindowManager implements WindowManagerPolicy { @Override public int interceptMotionBeforeQueueingNonInteractive(long whenNanos, int policyFlags) { if ((policyFlags & FLAG_WAKE) != 0) { - wakeUp(whenNanos / 1000000, mAllowTheaterModeWakeFromMotion); - return 0; + if (wakeUp(whenNanos / 1000000, mAllowTheaterModeWakeFromMotion)) { + return 0; + } } + if (shouldDispatchInputWhenNonInteractive()) { return ACTION_PASS_TO_USER; } + return 0; } private boolean shouldDispatchInputWhenNonInteractive() { - return keyguardIsShowingTq() && mDisplay != null && - mDisplay.getState() != Display.STATE_OFF; + // Send events to keyguard while the screen is on. + if (keyguardIsShowingTq() && mDisplay != null && mDisplay.getState() != Display.STATE_OFF) { + return true; + } + + // Send events to a dozing dream even if the screen is off since the dream + // is in control of the state of the screen. + IDreamManager dreamManager = getDreamManager(); + + try { + if (dreamManager != null && dreamManager.isDreaming()) { + return true; + } + } catch (RemoteException e) { + Slog.e(TAG, "RemoteException when checking if dreaming", e); + } + + // Otherwise, consume events since the user can't see what is being + // interacted with. + return false; } void dispatchMediaKeyWithWakeLock(KeyEvent event) { @@ -4949,12 +4970,13 @@ public class PhoneWindowManager implements WindowManagerPolicy { wakeUp(eventTime, mAllowTheaterModeWakeFromPowerKey); } - private void wakeUp(long wakeTime, boolean wakeInTheaterMode) { + private boolean wakeUp(long wakeTime, boolean wakeInTheaterMode) { if (!wakeInTheaterMode && isTheaterModeEnabled()) { - return; + return false; } mPowerManager.wakeUp(wakeTime); + return true; } // Called on the PowerManager's Notifier thread. @@ -5920,7 +5942,8 @@ public class PhoneWindowManager implements WindowManagerPolicy { private int updateSystemUiVisibilityLw() { // If there is no window focused, there will be nobody to handle the events // anyway, so just hang on in whatever state we're in until things settle down. - WindowState win = mFocusedWindow != null ? mFocusedWindow : mTopFullscreenOpaqueWindowState; + final WindowState win = mFocusedWindow != null ? mFocusedWindow + : mTopFullscreenOpaqueWindowState; if (win == null) { return 0; } @@ -5956,7 +5979,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { try { IStatusBarService statusbar = getStatusBarService(); if (statusbar != null) { - statusbar.setSystemUiVisibility(visibility, 0xffffffff); + statusbar.setSystemUiVisibility(visibility, 0xffffffff, win.toString()); statusbar.topAppWindowChanged(needsMenu); } } catch (RemoteException e) { diff --git a/services/core/java/com/android/server/am/ActivityStackSupervisor.java b/services/core/java/com/android/server/am/ActivityStackSupervisor.java index eaff6be64ed7..cc7026abcea5 100644 --- a/services/core/java/com/android/server/am/ActivityStackSupervisor.java +++ b/services/core/java/com/android/server/am/ActivityStackSupervisor.java @@ -3546,9 +3546,9 @@ public final class ActivityStackSupervisor implements DisplayListener { } mLockTaskNotify.show(false); try { - boolean shouldLockKeyguard = Settings.System.getInt( + boolean shouldLockKeyguard = Settings.Secure.getInt( mService.mContext.getContentResolver(), - Settings.System.LOCK_TO_APP_EXIT_LOCKED) != 0; + Settings.Secure.LOCK_TO_APP_EXIT_LOCKED) != 0; if (!mLockTaskIsLocked && shouldLockKeyguard) { mWindowManager.lockNow(null); mWindowManager.dismissKeyguard(); diff --git a/services/core/java/com/android/server/am/LockToAppRequestDialog.java b/services/core/java/com/android/server/am/LockToAppRequestDialog.java index a1eb31ec3fa2..739fd0a52661 100644 --- a/services/core/java/com/android/server/am/LockToAppRequestDialog.java +++ b/services/core/java/com/android/server/am/LockToAppRequestDialog.java @@ -112,8 +112,8 @@ public class LockToAppRequestDialog implements OnClickListener { // Remember state. try { - boolean useLock = Settings.System.getInt(mContext.getContentResolver(), - Settings.System.LOCK_TO_APP_EXIT_LOCKED) != 0; + boolean useLock = Settings.Secure.getInt(mContext.getContentResolver(), + Settings.Secure.LOCK_TO_APP_EXIT_LOCKED) != 0; mCheckbox.setChecked(useLock); } catch (SettingNotFoundException e) { } @@ -127,8 +127,8 @@ public class LockToAppRequestDialog implements OnClickListener { if (DialogInterface.BUTTON_POSITIVE == which) { Slog.d(TAG, "accept lock-to-app request"); // Set whether to use the lock screen when exiting. - Settings.System.putInt(mContext.getContentResolver(), - Settings.System.LOCK_TO_APP_EXIT_LOCKED, + Settings.Secure.putInt(mContext.getContentResolver(), + Settings.Secure.LOCK_TO_APP_EXIT_LOCKED, mCheckbox != null && mCheckbox.isChecked() ? 1 : 0); // Start lock-to-app. diff --git a/services/core/java/com/android/server/statusbar/StatusBarManagerService.java b/services/core/java/com/android/server/statusbar/StatusBarManagerService.java index 15e0bf03d2e0..1919281e5329 100644 --- a/services/core/java/com/android/server/statusbar/StatusBarManagerService.java +++ b/services/core/java/com/android/server/statusbar/StatusBarManagerService.java @@ -353,7 +353,7 @@ public class StatusBarManagerService extends IStatusBarService.Stub { } @Override - public void setSystemUiVisibility(int vis, int mask) { + public void setSystemUiVisibility(int vis, int mask, String cause) { // also allows calls from window manager which is in this process. enforceStatusBarService(); @@ -365,7 +365,7 @@ public class StatusBarManagerService extends IStatusBarService.Stub { mCurrentUserId, vis & StatusBarManager.DISABLE_MASK, mSysUiVisToken, - "WindowManager.LayoutParams"); + cause); } } diff --git a/services/core/java/com/android/server/trust/TrustManagerService.java b/services/core/java/com/android/server/trust/TrustManagerService.java index 65cb35b5a910..4437e12ac184 100644 --- a/services/core/java/com/android/server/trust/TrustManagerService.java +++ b/services/core/java/com/android/server/trust/TrustManagerService.java @@ -104,14 +104,18 @@ public class TrustManagerService extends SystemService { private final Context mContext; private final LockPatternUtils mLockPatternUtils; private final UserManager mUserManager; + private final ActivityManager mActivityManager; @GuardedBy("mUserIsTrusted") private final SparseBooleanArray mUserIsTrusted = new SparseBooleanArray(); + private boolean mTrustAgentsCanRun = false; + public TrustManagerService(Context context) { super(context); mContext = context; mUserManager = (UserManager) mContext.getSystemService(Context.USER_SERVICE); + mActivityManager = (ActivityManager) mContext.getSystemService(Context.ACTIVITY_SERVICE); mLockPatternUtils = new LockPatternUtils(context); } @@ -129,6 +133,8 @@ public class TrustManagerService extends SystemService { if (phase == SystemService.PHASE_SYSTEM_SERVICES_READY) { mPackageMonitor.register(mContext, mHandler.getLooper(), UserHandle.ALL, true); mReceiver.register(mContext); + } else if (phase == SystemService.PHASE_THIRD_PARTY_APPS_CAN_START) { + mTrustAgentsCanRun = true; refreshAgentList(UserHandle.USER_ALL); } else if (phase == SystemService.PHASE_BOOT_COMPLETED) { maybeEnableFactoryTrustAgents(mLockPatternUtils, UserHandle.USER_OWNER); @@ -178,8 +184,7 @@ public class TrustManagerService extends SystemService { void refreshAgentList(int userId) { if (DEBUG) Slog.d(TAG, "refreshAgentList()"); - if (isSafeMode()) { - // Don't ever bind to trust agents in safe mode. + if (!mTrustAgentsCanRun) { return; } if (userId != UserHandle.USER_ALL && userId < UserHandle.USER_OWNER) { @@ -202,7 +207,9 @@ public class TrustManagerService extends SystemService { obsoleteAgents.addAll(mActiveAgents); for (UserInfo userInfo : userInfos) { + if (userInfo.partial || !userInfo.isEnabled() || userInfo.guestToRemove) continue; if (!userInfo.supportsSwitchTo()) continue; + if (!mActivityManager.isUserRunning(userInfo.id)) continue; if (lockPatternUtils.getKeyguardStoredPasswordQuality(userInfo.id) == DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED) continue; if (!mUserHasAuthenticatedSinceBoot.get(userInfo.id)) continue; @@ -256,7 +263,11 @@ public class TrustManagerService extends SystemService { } if (trustMayHaveChanged) { - updateTrustAll(); + if (userId == UserHandle.USER_ALL) { + updateTrustAll(); + } else { + updateTrust(userId, false /* initiatedByUser */); + } } } @@ -523,6 +534,18 @@ public class TrustManagerService extends SystemService { } } + // User lifecycle + + @Override + public void onStartUser(int userId) { + refreshAgentList(userId); + } + + @Override + public void onCleanupUser(int userId) { + refreshAgentList(userId); + } + // Plumbing private final IBinder mService = new ITrustManager.Stub() { @@ -592,6 +615,10 @@ public class TrustManagerService extends SystemService { fout.println("disabled because the system is in safe mode."); return; } + if (!mTrustAgentsCanRun) { + fout.println("disabled because the third-party apps can't run yet."); + return; + } final UserInfo currentUser; final List<UserInfo> userInfos = mUserManager.getUsers(true /* excludeDying */); try { @@ -719,12 +746,27 @@ public class TrustManagerService extends SystemService { } else if (Intent.ACTION_USER_PRESENT.equals(action)) { updateUserHasAuthenticated(getSendingUserId()); } else if (Intent.ACTION_USER_ADDED.equals(action)) { - int userId = intent.getIntExtra(Intent.EXTRA_USER_HANDLE, -100); + int userId = getUserId(intent); if (userId > 0) { maybeEnableFactoryTrustAgents(mLockPatternUtils, userId); - } else { - Log.wtf(TAG, "EXTRA_USER_HANDLE missing or invalid, value=" + userId); } + } else if (Intent.ACTION_USER_REMOVED.equals(action)) { + int userId = getUserId(intent); + if (userId > 0) { + mUserHasAuthenticatedSinceBoot.delete(userId); + mUserIsTrusted.delete(userId); + refreshAgentList(userId); + } + } + } + + private int getUserId(Intent intent) { + int userId = intent.getIntExtra(Intent.EXTRA_USER_HANDLE, -100); + if (userId > 0) { + return userId; + } else { + Slog.wtf(TAG, "EXTRA_USER_HANDLE missing or invalid, value=" + userId); + return -100; } } @@ -733,6 +775,7 @@ public class TrustManagerService extends SystemService { filter.addAction(DevicePolicyManager.ACTION_DEVICE_POLICY_MANAGER_STATE_CHANGED); filter.addAction(Intent.ACTION_USER_PRESENT); filter.addAction(Intent.ACTION_USER_ADDED); + filter.addAction(Intent.ACTION_USER_REMOVED); context.registerReceiverAsUser(this, UserHandle.ALL, filter, diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index a48d39f41b61..b4e2778a1b7c 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -73,6 +73,7 @@ import android.graphics.RectF; import android.graphics.Region; import android.hardware.display.DisplayManager; import android.hardware.display.DisplayManagerInternal; +import android.net.Uri; import android.os.Binder; import android.os.Bundle; import android.os.Debug; @@ -558,16 +559,26 @@ public class WindowManagerService extends IWindowManager.Stub SettingsObserver mSettingsObserver; private final class SettingsObserver extends ContentObserver { + private final Uri mShowImeWithHardKeyboardUri = + Settings.Secure.getUriFor(Settings.Secure.SHOW_IME_WITH_HARD_KEYBOARD); + + private final Uri mDisplayInversionEnabledUri = + Settings.Secure.getUriFor(Settings.Secure.ACCESSIBILITY_DISPLAY_INVERSION_ENABLED); + public SettingsObserver() { super(new Handler()); ContentResolver resolver = mContext.getContentResolver(); - resolver.registerContentObserver(Settings.Secure.getUriFor( - Settings.Secure.SHOW_IME_WITH_HARD_KEYBOARD), false, this); + resolver.registerContentObserver(mShowImeWithHardKeyboardUri, false, this); + resolver.registerContentObserver(mDisplayInversionEnabledUri, false, this); } @Override - public void onChange(boolean selfChange) { - updateShowImeWithHardKeyboard(); + public void onChange(boolean selfChange, Uri uri) { + if (mShowImeWithHardKeyboardUri.equals(uri)) { + updateShowImeWithHardKeyboard(); + } else if (mDisplayInversionEnabledUri.equals(uri)) { + updateCircularDisplayMaskIfNeeded(); + } } } @@ -903,7 +914,7 @@ public class WindowManagerService extends IWindowManager.Stub SurfaceControl.closeTransaction(); } - showCircularDisplayMaskIfNeeded(); + updateCircularDisplayMaskIfNeeded(); showEmulatorDisplayOverlayIfNeeded(); } @@ -5842,13 +5853,21 @@ public class WindowManagerService extends IWindowManager.Stub } } - public void showCircularDisplayMaskIfNeeded() { + public void updateCircularDisplayMaskIfNeeded() { // we're fullscreen and not hosted in an ActivityView if (mContext.getResources().getBoolean( com.android.internal.R.bool.config_windowIsRound) && mContext.getResources().getBoolean( com.android.internal.R.bool.config_windowShowCircularMask)) { - mH.sendMessage(mH.obtainMessage(H.SHOW_CIRCULAR_DISPLAY_MASK)); + // Device configuration calls for a circular display mask, but we only enable the mask + // if the accessibility color inversion feature is disabled, as the inverted mask + // causes artifacts. + int inversionState = Settings.Secure.getIntForUser(mContext.getContentResolver(), + Settings.Secure.ACCESSIBILITY_DISPLAY_INVERSION_ENABLED, 0, mCurrentUserId); + int showMask = (inversionState == 1) ? 0 : 1; + Message m = mH.obtainMessage(H.SHOW_CIRCULAR_DISPLAY_MASK); + m.arg1 = showMask; + mH.sendMessage(m); } } @@ -5861,30 +5880,35 @@ public class WindowManagerService extends IWindowManager.Stub } } - public void showCircularMask() { + public void showCircularMask(boolean visible) { synchronized(mWindowMap) { if (SHOW_LIGHT_TRANSACTIONS) Slog.i(TAG, - ">>> OPEN TRANSACTION showCircularMask"); + ">>> OPEN TRANSACTION showCircularMask(visible=" + visible + ")"); SurfaceControl.openTransaction(); try { - // TODO(multi-display): support multiple displays - if (mCircularDisplayMask == null) { - int screenOffset = mContext.getResources().getDimensionPixelSize( - com.android.internal.R.dimen.circular_display_mask_offset); - - mCircularDisplayMask = new CircularDisplayMask( - getDefaultDisplayContentLocked().getDisplay(), - mFxSession, - mPolicy.windowTypeToLayerLw( - WindowManager.LayoutParams.TYPE_POINTER) - * TYPE_LAYER_MULTIPLIER + 10, screenOffset); + if (visible) { + // TODO(multi-display): support multiple displays + if (mCircularDisplayMask == null) { + int screenOffset = mContext.getResources().getDimensionPixelSize( + com.android.internal.R.dimen.circular_display_mask_offset); + + mCircularDisplayMask = new CircularDisplayMask( + getDefaultDisplayContentLocked().getDisplay(), + mFxSession, + mPolicy.windowTypeToLayerLw( + WindowManager.LayoutParams.TYPE_POINTER) + * TYPE_LAYER_MULTIPLIER + 10, screenOffset); + } + mCircularDisplayMask.setVisibility(true); + } else if (mCircularDisplayMask != null) { + mCircularDisplayMask.setVisibility(false); + mCircularDisplayMask = null; } - mCircularDisplayMask.setVisibility(true); } finally { SurfaceControl.closeTransaction(); if (SHOW_LIGHT_TRANSACTIONS) Slog.i(TAG, - "<<< CLOSE TRANSACTION showCircularMask"); + "<<< CLOSE TRANSACTION showCircularMask(visible=" + visible + ")"); } } } @@ -7955,7 +7979,7 @@ public class WindowManagerService extends IWindowManager.Stub } case SHOW_CIRCULAR_DISPLAY_MASK: { - showCircularMask(); + showCircularMask(msg.arg1 == 1); break; } diff --git a/services/usb/java/com/android/server/usb/UsbAudioManager.java b/services/usb/java/com/android/server/usb/UsbAudioManager.java new file mode 100644 index 000000000000..bb45ee88c0dc --- /dev/null +++ b/services/usb/java/com/android/server/usb/UsbAudioManager.java @@ -0,0 +1,197 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions an + * limitations under the License. + */ + +package com.android.server.usb; + +import android.alsa.AlsaCardsParser; +import android.alsa.AlsaDevicesParser; +import android.content.Context; +import android.content.Intent; +import android.hardware.usb.UsbConstants; +import android.hardware.usb.UsbDevice; +import android.hardware.usb.UsbInterface; +import android.media.AudioManager; +import android.os.UserHandle; +import android.util.Slog; + +import java.io.File; +import java.io.FileDescriptor; +import java.io.PrintWriter; +import java.util.HashMap; + +/** + * UsbAudioManager manages USB audio devices. + */ +public class UsbAudioManager { + private static final String TAG = UsbAudioManager.class.getSimpleName(); + private static final boolean DEBUG = false; + + private final Context mContext; + + private final class AudioDevice { + public int mCard; + public int mDevice; + public boolean mHasPlayback; + public boolean mHasCapture; + public boolean mHasMIDI; + + public AudioDevice(int card, int device, + boolean hasPlayback, boolean hasCapture, boolean hasMidi) { + mCard = card; + mDevice = device; + mHasPlayback = hasPlayback; + mHasCapture = hasCapture; + mHasMIDI = hasMidi; + } + + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("AudioDevice: [card: " + mCard); + sb.append(", device: " + mDevice); + sb.append(", hasPlayback: " + mHasPlayback); + sb.append(", hasCapture: " + mHasCapture); + sb.append(", hasMidi: " + mHasMIDI); + sb.append("]"); + return sb.toString(); + } + } + + private final HashMap<UsbDevice,AudioDevice> mAudioDevices + = new HashMap<UsbDevice,AudioDevice>(); + + /* package */ UsbAudioManager(Context context) { + mContext = context; + } + + // Broadcasts the arrival/departure of a USB audio interface + // audioDevice - the AudioDevice that was added or removed + // enabled - if true, we're connecting a device (it's arrived), else disconnecting + private void sendDeviceNotification(AudioDevice audioDevice, boolean enabled) { + // send a sticky broadcast containing current USB state + Intent intent = new Intent(AudioManager.ACTION_USB_AUDIO_DEVICE_PLUG); + intent.addFlags(Intent.FLAG_RECEIVER_REPLACE_PENDING); + intent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY); + intent.putExtra("state", enabled ? 1 : 0); + intent.putExtra("card", audioDevice.mCard); + intent.putExtra("device", audioDevice.mDevice); + intent.putExtra("hasPlayback", audioDevice.mHasPlayback); + intent.putExtra("hasCapture", audioDevice.mHasCapture); + intent.putExtra("hasMIDI", audioDevice.mHasMIDI); + mContext.sendStickyBroadcastAsUser(intent, UserHandle.ALL); + } + + private boolean waitForAlsaFile(int card, int device, boolean capture) { + // These values were empirically determined. + final int kNumRetries = 5; + final int kSleepTime = 500; // ms + String alsaDevPath = "/dev/snd/pcmC" + card + "D" + device + (capture ? "c" : "p"); + File alsaDevFile = new File(alsaDevPath); + boolean exists = false; + for (int retry = 0; !exists && retry < kNumRetries; retry++) { + exists = alsaDevFile.exists(); + if (!exists) { + try { + Thread.sleep(kSleepTime); + } catch (IllegalThreadStateException ex) { + Slog.d(TAG, "usb: IllegalThreadStateException while waiting for ALSA file."); + } catch (java.lang.InterruptedException ex) { + Slog.d(TAG, "usb: InterruptedException while waiting for ALSA file."); + } + } + } + + return exists; + } + + /* package */ void deviceAdded(UsbDevice usbDevice) { + // Is there an audio interface in there? + boolean isAudioDevice = false; + + // FIXME - handle multiple configurations? + int interfaceCount = usbDevice.getInterfaceCount(); + for (int ntrfaceIndex = 0; !isAudioDevice && ntrfaceIndex < interfaceCount; + ntrfaceIndex++) { + UsbInterface ntrface = usbDevice.getInterface(ntrfaceIndex); + if (ntrface.getInterfaceClass() == UsbConstants.USB_CLASS_AUDIO) { + isAudioDevice = true; + } + } + if (!isAudioDevice) { + return; + } + + //TODO(pmclean) The "Parser" objects inspect files in "/proc/asound" which we presume is + // present, unlike the waitForAlsaFile() which waits on a file in /dev/snd. It is not + // clear why this works, or that it can be relied on going forward. Needs further + // research. + AlsaCardsParser cardsParser = new AlsaCardsParser(); + cardsParser.scan(); + // cardsParser.Log(); + + // But we need to parse the device to determine its capabilities. + AlsaDevicesParser devicesParser = new AlsaDevicesParser(); + devicesParser.scan(); + // devicesParser.Log(); + + // The protocol for now will be to select the last-connected (highest-numbered) + // Alsa Card. + int card = cardsParser.getNumCardRecords() - 1; + int device = 0; + + boolean hasPlayback = devicesParser.hasPlaybackDevices(card); + boolean hasCapture = devicesParser.hasCaptureDevices(card); + boolean hasMidi = devicesParser.hasMIDIDevices(card); + + // Playback device file needed/present? + if (hasPlayback && + !waitForAlsaFile(card, device, false)) { + return; + } + + // Capture device file needed/present? + if (hasCapture && + !waitForAlsaFile(card, device, true)) { + return; + } + + if (DEBUG) { + Slog.d(TAG, + "usb: hasPlayback:" + hasPlayback + " hasCapture:" + hasCapture); + } + + AudioDevice audioDevice = new AudioDevice(card, device, hasPlayback, hasCapture, hasMidi); + mAudioDevices.put(usbDevice, audioDevice); + sendDeviceNotification(audioDevice, true); + } + + /* package */ void deviceRemoved(UsbDevice device) { + if (DEBUG) { + Slog.d(TAG, "deviceRemoved(): " + device); + } + + AudioDevice audioDevice = mAudioDevices.remove(device); + if (audioDevice != null) { + sendDeviceNotification(audioDevice, false); + } + } + + public void dump(FileDescriptor fd, PrintWriter pw) { + pw.println(" USB AudioDevices:"); + for (UsbDevice device : mAudioDevices.keySet()) { + pw.println(" " + device.getDeviceName() + ": " + mAudioDevices.get(device)); + } + } +} diff --git a/services/usb/java/com/android/server/usb/UsbHostManager.java b/services/usb/java/com/android/server/usb/UsbHostManager.java index 06febb3bd2bf..e769bda1eb6f 100644 --- a/services/usb/java/com/android/server/usb/UsbHostManager.java +++ b/services/usb/java/com/android/server/usb/UsbHostManager.java @@ -16,8 +16,6 @@ package com.android.server.usb; -import android.alsa.AlsaCardsParser; -import android.alsa.AlsaDevicesParser; import android.content.Context; import android.content.Intent; import android.hardware.usb.UsbConfiguration; @@ -25,16 +23,13 @@ import android.hardware.usb.UsbConstants; import android.hardware.usb.UsbDevice; import android.hardware.usb.UsbEndpoint; import android.hardware.usb.UsbInterface; -import android.media.AudioManager; import android.os.Bundle; import android.os.ParcelFileDescriptor; import android.os.Parcelable; -import android.os.UserHandle; import android.util.Slog; import com.android.internal.annotations.GuardedBy; -import java.io.File; import java.io.FileDescriptor; import java.io.FileNotFoundException; import java.io.PrintWriter; @@ -46,11 +41,12 @@ import java.util.HashMap; */ public class UsbHostManager { private static final String TAG = UsbHostManager.class.getSimpleName(); - private static final boolean DEBUG_AUDIO = false; + private static final boolean DEBUG = false; // contains all connected USB devices private final HashMap<String, UsbDevice> mDevices = new HashMap<String, UsbDevice>(); + // USB busses to exclude from USB host support private final String[] mHostBlacklist; @@ -64,14 +60,7 @@ public class UsbHostManager { private ArrayList<UsbInterface> mNewInterfaces; private ArrayList<UsbEndpoint> mNewEndpoints; - // Attributes of any connected USB audio device. - //TODO(pmclean) When we extend to multiple, USB Audio devices, we will need to get - // more clever about this. - private int mConnectedUsbCard = -1; - private int mConnectedUsbDeviceNum = -1; - private boolean mConnectedHasPlayback = false; - private boolean mConnectedHasCapture = false; - private boolean mConnectedHasMIDI = false; + private UsbAudioManager mUsbAudioManager; @GuardedBy("mLock") private UsbSettingsManager mCurrentSettings; @@ -80,6 +69,7 @@ public class UsbHostManager { mContext = context; mHostBlacklist = context.getResources().getStringArray( com.android.internal.R.array.config_usbHostBlacklist); + mUsbAudioManager = new UsbAudioManager(context); } public void setCurrentSettings(UsbSettingsManager settings) { @@ -118,48 +108,6 @@ public class UsbHostManager { return false; } - // Broadcasts the arrival/departure of a USB audio interface - // card - the ALSA card number of the physical interface - // device - the ALSA device number of the physical interface - // enabled - if true, we're connecting a device (it's arrived), else disconnecting - private void sendDeviceNotification(int card, int device, boolean enabled, - boolean hasPlayback, boolean hasCapture, boolean hasMIDI) { - // send a sticky broadcast containing current USB state - Intent intent = new Intent(AudioManager.ACTION_USB_AUDIO_DEVICE_PLUG); - intent.addFlags(Intent.FLAG_RECEIVER_REPLACE_PENDING); - intent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY); - intent.putExtra("state", enabled ? 1 : 0); - intent.putExtra("card", card); - intent.putExtra("device", device); - intent.putExtra("hasPlayback", hasPlayback); - intent.putExtra("hasCapture", hasCapture); - intent.putExtra("hasMIDI", hasMIDI); - mContext.sendStickyBroadcastAsUser(intent, UserHandle.ALL); - } - - private boolean waitForAlsaFile(int card, int device, boolean capture) { - // These values were empirically determined. - final int kNumRetries = 5; - final int kSleepTime = 500; // ms - String alsaDevPath = "/dev/snd/pcmC" + card + "D" + device + (capture ? "c" : "p"); - File alsaDevFile = new File(alsaDevPath); - boolean exists = false; - for (int retry = 0; !exists && retry < kNumRetries; retry++) { - exists = alsaDevFile.exists(); - if (!exists) { - try { - Thread.sleep(kSleepTime); - } catch (IllegalThreadStateException ex) { - Slog.d(TAG, "usb: IllegalThreadStateException while waiting for ALSA file."); - } catch (java.lang.InterruptedException ex) { - Slog.d(TAG, "usb: InterruptedException while waiting for ALSA file."); - } - } - } - - return exists; - } - /* Called from JNI in monitorUsbHostBus() to report new USB devices Returns true if successful, in which case the JNI code will continue adding configurations, interfaces and endpoints, and finally call endUsbDeviceAdded after all descriptors @@ -169,7 +117,7 @@ public class UsbHostManager { int deviceClass, int deviceSubclass, int deviceProtocol, String manufacturerName, String productName, String serialNumber) { - if (DEBUG_AUDIO) { + if (DEBUG) { Slog.d(TAG, "usb:UsbHostManager.beginUsbDeviceAdded(" + deviceName + ")"); // Audio Class Codes: // Audio: 0x01 @@ -254,7 +202,7 @@ public class UsbHostManager { /* Called from JNI in monitorUsbHostBus() to finish adding a new device */ private void endUsbDeviceAdded() { - if (DEBUG_AUDIO) { + if (DEBUG) { Slog.d(TAG, "usb:UsbHostManager.endUsbDeviceAdded()"); } if (mNewInterface != null) { @@ -266,16 +214,6 @@ public class UsbHostManager { mNewInterfaces.toArray(new UsbInterface[mNewInterfaces.size()])); } - // Is there an audio interface in there? - final int kUsbClassId_Audio = 0x01; - boolean isAudioDevice = false; - for (int ntrfaceIndex = 0; !isAudioDevice && ntrfaceIndex < mNewInterfaces.size(); - ntrfaceIndex++) { - UsbInterface ntrface = mNewInterfaces.get(ntrfaceIndex); - if (ntrface.getInterfaceClass() == kUsbClassId_Audio) { - isAudioDevice = true; - } - } synchronized (mLock) { if (mNewDevice != null) { @@ -284,6 +222,7 @@ public class UsbHostManager { mDevices.put(mNewDevice.getDeviceName(), mNewDevice); Slog.d(TAG, "Added device " + mNewDevice); getCurrentSettings().deviceAttached(mNewDevice); + mUsbAudioManager.deviceAdded(mNewDevice); } else { Slog.e(TAG, "mNewDevice is null in endUsbDeviceAdded"); } @@ -292,81 +231,14 @@ public class UsbHostManager { mNewInterfaces = null; mNewEndpoints = null; } - - if (!isAudioDevice) { - return; // bail - } - - //TODO(pmclean) The "Parser" objects inspect files in "/proc/asound" which we presume is - // present, unlike the waitForAlsaFile() which waits on a file in /dev/snd. It is not - // clear why this works, or that it can be relied on going forward. Needs further - // research. - AlsaCardsParser cardsParser = new AlsaCardsParser(); - cardsParser.scan(); - // cardsParser.Log(); - - // But we need to parse the device to determine its capabilities. - AlsaDevicesParser devicesParser = new AlsaDevicesParser(); - devicesParser.scan(); - // devicesParser.Log(); - - // The protocol for now will be to select the last-connected (highest-numbered) - // Alsa Card. - mConnectedUsbCard = cardsParser.getNumCardRecords() - 1; - mConnectedUsbDeviceNum = 0; - - mConnectedHasPlayback = devicesParser.hasPlaybackDevices(mConnectedUsbCard); - mConnectedHasCapture = devicesParser.hasCaptureDevices(mConnectedUsbCard); - mConnectedHasMIDI = devicesParser.hasMIDIDevices(mConnectedUsbCard); - - // Playback device file needed/present? - if (mConnectedHasPlayback && - !waitForAlsaFile(mConnectedUsbCard, mConnectedUsbDeviceNum, false)) { - return; - } - - // Capture device file needed/present? - if (mConnectedHasCapture && - !waitForAlsaFile(mConnectedUsbCard, mConnectedUsbDeviceNum, true)) { - return; - } - - if (DEBUG_AUDIO) { - Slog.d(TAG, - "usb: hasPlayback:" + mConnectedHasPlayback + " hasCapture:" + mConnectedHasCapture); - } - - sendDeviceNotification(mConnectedUsbCard, - mConnectedUsbDeviceNum, - true, - mConnectedHasPlayback, - mConnectedHasCapture, - mConnectedHasMIDI); } /* Called from JNI in monitorUsbHostBus to report USB device removal */ private void usbDeviceRemoved(String deviceName) { - if (DEBUG_AUDIO) { - Slog.d(TAG, "usb:UsbHostManager.usbDeviceRemoved() nm:" + deviceName); - } - - if (mConnectedUsbCard != -1 && mConnectedUsbDeviceNum != -1) { - sendDeviceNotification(mConnectedUsbCard, - mConnectedUsbDeviceNum, - false, - mConnectedHasPlayback, - mConnectedHasCapture, - mConnectedHasMIDI); - mConnectedUsbCard = -1; - mConnectedUsbDeviceNum = -1; - mConnectedHasPlayback = false; - mConnectedHasCapture = false; - mConnectedHasMIDI = false; - } - synchronized (mLock) { UsbDevice device = mDevices.remove(deviceName); if (device != null) { + mUsbAudioManager.deviceRemoved(device); getCurrentSettings().deviceDetached(device); } } @@ -418,6 +290,7 @@ public class UsbHostManager { pw.println(" " + name + ": " + mDevices.get(name)); } } + mUsbAudioManager.dump(fd, pw); } private native void monitorUsbHostBus(); diff --git a/telecomm/java/android/telecom/TelecomManager.java b/telecomm/java/android/telecom/TelecomManager.java index 4eac5ac4a570..d98a255f9079 100644 --- a/telecomm/java/android/telecom/TelecomManager.java +++ b/telecomm/java/android/telecom/TelecomManager.java @@ -17,6 +17,7 @@ package android.telecom; import android.annotation.SystemApi; import android.content.ComponentName; import android.content.Context; +import android.net.Uri; import android.os.Bundle; import android.os.RemoteException; import android.os.ServiceManager; @@ -926,7 +927,6 @@ public class TelecomManager { * @param accountHandle The handle for the account the MMI code should apply to. * @param dialString The digits to dial. * @return True if the digits were processed as an MMI code, false otherwise. - * */ public boolean handleMmi(PhoneAccountHandle accountHandle, String dialString) { ITelecomService service = getTelecomService(); @@ -941,6 +941,24 @@ public class TelecomManager { } /** + * @param accountHandle The handle for the account to derive an adn query URI for or + * {@code null} to return a URI which will use the default account. + * @return The URI (with the content:// scheme) specific to the specified {@link PhoneAccount} + * for the the content retrieve. + */ + public Uri getAdnUriForPhoneAccount(PhoneAccountHandle accountHandle) { + ITelecomService service = getTelecomService(); + if (service != null && accountHandle != null) { + try { + return service.getAdnUriForPhoneAccount(accountHandle); + } catch (RemoteException e) { + Log.e(TAG, "Error calling ITelecomService#getAdnUriForPhoneAccount", e); + } + } + return Uri.parse("content://icc/adn"); + } + + /** * Removes the missed-call notification if one is present. * <p> * Requires that the method-caller be set as the system dialer app. diff --git a/telecomm/java/com/android/internal/telecom/ITelecomService.aidl b/telecomm/java/com/android/internal/telecom/ITelecomService.aidl index fd472130deb4..cbd9d69eaa5b 100644 --- a/telecomm/java/com/android/internal/telecom/ITelecomService.aidl +++ b/telecomm/java/com/android/internal/telecom/ITelecomService.aidl @@ -18,6 +18,7 @@ package com.android.internal.telecom; import android.content.ComponentName; import android.telecom.PhoneAccountHandle; +import android.net.Uri; import android.os.Bundle; import android.telecom.PhoneAccount; @@ -174,6 +175,11 @@ interface ITelecomService { boolean handlePinMmiForPhoneAccount(in PhoneAccountHandle accountHandle, String dialString); /** + * @see TelecomServiceImpl#getAdnUriForPhoneAccount + */ + Uri getAdnUriForPhoneAccount(in PhoneAccountHandle accountHandle); + + /** * @see TelecomServiceImpl#isTtySupported */ boolean isTtySupported(); diff --git a/telephony/java/android/telephony/SubInfoRecord.java b/telephony/java/android/telephony/SubInfoRecord.java index 4a3d67ef25a5..0966ddbb654f 100644 --- a/telephony/java/android/telephony/SubInfoRecord.java +++ b/telephony/java/android/telephony/SubInfoRecord.java @@ -29,98 +29,138 @@ public class SubInfoRecord implements Parcelable { * Subscription Identifier, this is a device unique number * and not an index into an array */ - public int subId; - /** The GID for a SIM that maybe associated with this subscription, empty if unknown */ - public String iccId; + private int mId; + + /** + * The GID for a SIM that maybe associated with this subscription, empty if unknown + */ + private String mIccId; + /** - * The slot identifier for that currently contains the subscription + * The index of the slot that currently contains the subscription * and not necessarily unique and maybe INVALID_SLOT_ID if unknown */ - public int slotId; + private int mSimSlotIndex; + /** - * The string displayed to the user that identifies this subscription + * The name displayed to the user that identifies this subscription */ - public String displayName; + private CharSequence mDisplayName; + /** * The source of the name, NAME_SOURCE_UNDEFINED, NAME_SOURCE_DEFAULT_SOURCE, * NAME_SOURCE_SIM_SOURCE or NAME_SOURCE_USER_INPUT. */ - public int nameSource; + private int mNameSource; + /** * The color to be used for when displaying to the user */ - public int color; + private int mColor; + /** * A number presented to the user identify this subscription */ - public String number; - /** - * How to display the phone number, DISPLAY_NUMBER_NONE, DISPLAY_NUMBER_FIRST, - * DISPLAY_NUMBER_LAST - */ - public int displayNumberFormat; + private String mNumber; + /** * Data roaming state, DATA_RAOMING_ENABLE, DATA_RAOMING_DISABLE */ - public int dataRoaming; + private int mDataRoaming; + /** * SIM Icon resource identifiers. FIXME: Check with MTK what it really is */ - public int[] simIconRes; + private int[] mSimIconRes; + /** * Mobile Country Code */ - public int mcc; + private int mMcc; + /** * Mobile Network Code */ - public int mnc; + private int mMnc; + /** + * @hide public SubInfoRecord() { - this.subId = SubscriptionManager.INVALID_SUB_ID; - this.iccId = ""; - this.slotId = SubscriptionManager.INVALID_SLOT_ID; - this.displayName = ""; - this.nameSource = 0; - this.color = 0; - this.number = ""; - this.displayNumberFormat = 0; - this.dataRoaming = 0; - this.simIconRes = new int[2]; - this.mcc = 0; - this.mnc = 0; + this.mId = SubscriptionManager.INVALID_SUB_ID; + this.mIccId = ""; + this.mSimSlotIndex = SubscriptionManager.INVALID_SLOT_ID; + this.mDisplayName = ""; + this.mNameSource = 0; + this.mColor = 0; + this.mNumber = ""; + this.mDataRoaming = 0; + this.mSimIconRes = new int[2]; + this.mMcc = 0; + this.mMnc = 0; } + */ - public SubInfoRecord(int subId, String iccId, int slotId, String displayName, int nameSource, - int color, String number, int displayFormat, int roaming, int[] iconRes, - int mcc, int mnc) { - this.subId = subId; - this.iccId = iccId; - this.slotId = slotId; - this.displayName = displayName; - this.nameSource = nameSource; - this.color = color; - this.number = number; - this.displayNumberFormat = displayFormat; - this.dataRoaming = roaming; - this.simIconRes = iconRes; - this.mcc = mcc; - this.mnc = mnc; + /** + * @hide + */ + public SubInfoRecord(int id, String iccId, int simSlotIndex, CharSequence displayName, + int nameSource, int color, String number, int roaming, int[] iconRes, int mcc, + int mnc) { + this.mId = id; + this.mIccId = iccId; + this.mSimSlotIndex = simSlotIndex; + this.mDisplayName = displayName; + this.mNameSource = nameSource; + this.mColor = color; + this.mNumber = number; + this.mDataRoaming = roaming; + this.mSimIconRes = iconRes; + this.mMcc = mcc; + this.mMnc = mnc; } /** - * Returns the string displayed to the user that identifies this subscription + * Returns the subscription ID. */ - public String getLabel() { - return this.displayName; + public int getSubscriptionId() { + return this.mId; } /** - * Return the icon used to identify this SIM. - * TODO: return the correct drawable. + * Returns the ICC ID. */ - public BitmapDrawable getIconDrawable() { - return new BitmapDrawable(); + public String getIccId() { + return this.mIccId; + } + + /** + * Returns the slot index of this Subscription's SIM card. + */ + public int getSimSlotIndex() { + return this.mSimSlotIndex; + } + + /** + * Returns the name displayed to the user that identifies this subscription + */ + public CharSequence getDisplayName() { + return this.mDisplayName; + } + + /** + * Sets the name displayed to the user that identifies this subscription + * @hide + */ + public void setDisplayName(CharSequence name) { + this.mDisplayName = name; + } + + /** + * Return the source of the name, eg NAME_SOURCE_UNDEFINED, NAME_SOURCE_DEFAULT_SOURCE, + * NAME_SOURCE_SIM_SOURCE or NAME_SOURCE_USER_INPUT. + */ + public int getNameSource() { + return this.mNameSource; } /** @@ -130,28 +170,70 @@ public class SubInfoRecord implements Parcelable { public int getColor() { // Note: This color is currently an index into a list of drawables, but this is soon to // change. - return this.color; + return this.mColor; + } + + /** + * Sets the color displayed to the user that identifies this subscription + * @hide + */ + public void setColor(int color) { + this.mColor = color; + } + + /** + * Returns the number of this subscription. + */ + public String getNumber() { + return mNumber; + } + + /** + * Return the data roaming value. + */ + public int getDataRoaming() { + return this.mDataRoaming; + } + + /** + * Return the icon used to identify this subscription. + */ + public BitmapDrawable getIcon() { + return new BitmapDrawable(); + } + + /** + * Returns the MCC. + */ + public int getMcc() { + return this.mMcc; + } + + /** + * Returns the MNC. + */ + public int getMnc() { + return this.mMnc; } public static final Parcelable.Creator<SubInfoRecord> CREATOR = new Parcelable.Creator<SubInfoRecord>() { @Override public SubInfoRecord createFromParcel(Parcel source) { - int subId = source.readInt(); + int id = source.readInt(); String iccId = source.readString(); - int slotId = source.readInt(); + int simSlotIndex = source.readInt(); String displayName = source.readString(); int nameSource = source.readInt(); int color = source.readInt(); String number = source.readString(); - int displayNumberFormat = source.readInt(); int dataRoaming = source.readInt(); int[] iconRes = new int[2]; source.readIntArray(iconRes); int mcc = source.readInt(); int mnc = source.readInt(); - return new SubInfoRecord(subId, iccId, slotId, displayName, nameSource, color, number, - displayNumberFormat, dataRoaming, iconRes, mcc, mnc); + return new SubInfoRecord(id, iccId, simSlotIndex, displayName, nameSource, color, number, + dataRoaming, iconRes, mcc, mnc); } @Override @@ -162,18 +244,17 @@ public class SubInfoRecord implements Parcelable { @Override public void writeToParcel(Parcel dest, int flags) { - dest.writeInt(subId); - dest.writeString(iccId); - dest.writeInt(slotId); - dest.writeString(displayName); - dest.writeInt(nameSource); - dest.writeInt(color); - dest.writeString(number); - dest.writeInt(displayNumberFormat); - dest.writeInt(dataRoaming); - dest.writeIntArray(simIconRes); - dest.writeInt(mcc); - dest.writeInt(mnc); + dest.writeInt(mId); + dest.writeString(mIccId); + dest.writeInt(mSimSlotIndex); + dest.writeString(mDisplayName.toString()); + dest.writeInt(mNameSource); + dest.writeInt(mColor); + dest.writeString(mNumber.toString()); + dest.writeInt(mDataRoaming); + dest.writeIntArray(mSimIconRes); + dest.writeInt(mMcc); + dest.writeInt(mMnc); } @Override @@ -183,10 +264,9 @@ public class SubInfoRecord implements Parcelable { @Override public String toString() { - return "{mSubId=" + subId + ", mIccId=" + iccId + " mSlotId=" + slotId - + " mDisplayName=" + displayName + " mNameSource=" + nameSource - + " mColor=" + color + " mNumber=" + number - + " mDisplayNumberFormat=" + displayNumberFormat + " mDataRoaming=" + dataRoaming - + " mSimIconRes=" + simIconRes + " mMcc " + mcc + " mMnc " + mnc + "}"; + return "{id=" + mId + ", iccId=" + mIccId + " simSlotIndex=" + mSimSlotIndex + + " displayName=" + mDisplayName + " nameSource=" + mNameSource + " color=" + mColor + + " number=" + mNumber + " dataRoaming=" + mDataRoaming + " simIconRes=" + mSimIconRes + + " mcc " + mMcc + " mnc " + mMnc + "}"; } } diff --git a/telephony/java/android/telephony/SubscriptionManager.java b/telephony/java/android/telephony/SubscriptionManager.java index edfddc7d5e8b..9cd533d3b079 100644 --- a/telephony/java/android/telephony/SubscriptionManager.java +++ b/telephony/java/android/telephony/SubscriptionManager.java @@ -209,7 +209,7 @@ public class SubscriptionManager implements BaseColumns { public static final int DISPLAY_NUMBER_LAST = 2; /** @hide */ - public static final int DISLPAY_NUMBER_DEFAULT = DISPLAY_NUMBER_FIRST; + public static final int DISPLAY_NUMBER_DEFAULT = DISPLAY_NUMBER_FIRST; /** * TelephonyProvider column name for permission for data roaming of a SIM. diff --git a/tools/aapt/AaptUtil.h b/tools/aapt/AaptUtil.h index 47a704a4567d..89e1ee81d80b 100644 --- a/tools/aapt/AaptUtil.h +++ b/tools/aapt/AaptUtil.h @@ -14,9 +14,11 @@ * limitations under the License. */ -#ifndef __AAPT_UTIL_H -#define __AAPT_UTIL_H +#ifndef H_AAPT_UTIL +#define H_AAPT_UTIL +#include <utils/KeyedVector.h> +#include <utils/SortedVector.h> #include <utils/String8.h> #include <utils/Vector.h> @@ -25,6 +27,38 @@ namespace AaptUtil { android::Vector<android::String8> split(const android::String8& str, const char sep); android::Vector<android::String8> splitAndLowerCase(const android::String8& str, const char sep); +template <typename KEY, typename VALUE> +void appendValue(android::KeyedVector<KEY, android::Vector<VALUE> >& keyedVector, + const KEY& key, const VALUE& value); + +template <typename KEY, typename VALUE> +void appendValue(android::KeyedVector<KEY, android::SortedVector<VALUE> >& keyedVector, + const KEY& key, const VALUE& value); + +// +// Implementations +// + +template <typename KEY, typename VALUE> +void appendValue(android::KeyedVector<KEY, android::Vector<VALUE> >& keyedVector, + const KEY& key, const VALUE& value) { + ssize_t idx = keyedVector.indexOfKey(key); + if (idx < 0) { + idx = keyedVector.add(key, android::Vector<VALUE>()); + } + keyedVector.editValueAt(idx).add(value); +} + +template <typename KEY, typename VALUE> +void appendValue(android::KeyedVector<KEY, android::SortedVector<VALUE> >& keyedVector, + const KEY& key, const VALUE& value) { + ssize_t idx = keyedVector.indexOfKey(key); + if (idx < 0) { + idx = keyedVector.add(key, android::SortedVector<VALUE>()); + } + keyedVector.editValueAt(idx).add(value); +} + } // namespace AaptUtil -#endif // __AAPT_UTIL_H +#endif // H_AAPT_UTIL diff --git a/tools/aapt/AaptXml.cpp b/tools/aapt/AaptXml.cpp index 708e4054e63a..b04a55d91b9c 100644 --- a/tools/aapt/AaptXml.cpp +++ b/tools/aapt/AaptXml.cpp @@ -41,7 +41,7 @@ static String8 getStringAttributeAtIndex(const ResXMLTree& tree, ssize_t attrInd } size_t len; - const uint16_t* str = tree.getAttributeStringValue(attrIndex, &len); + const char16_t* str = tree.getAttributeStringValue(attrIndex, &len); return str ? String8(str, len) : String8(); } @@ -103,7 +103,7 @@ String8 getResolvedAttribute(const ResTable& resTable, const ResXMLTree& tree, if (tree.getAttributeValue(idx, &value) != NO_ERROR) { if (value.dataType == Res_value::TYPE_STRING) { size_t len; - const uint16_t* str = tree.getAttributeStringValue(idx, &len); + const char16_t* str = tree.getAttributeStringValue(idx, &len); return str ? String8(str, len) : String8(); } resTable.resolveReference(&value, 0); diff --git a/tools/aapt/Android.mk b/tools/aapt/Android.mk index 2cbabe1cf27b..bc9c1f70b8c6 100644 --- a/tools/aapt/Android.mk +++ b/tools/aapt/Android.mk @@ -33,20 +33,20 @@ aaptSources := \ Command.cpp \ CrunchCache.cpp \ FileFinder.cpp \ + Images.cpp \ Package.cpp \ - StringPool.cpp \ - XMLNode.cpp \ + pseudolocalize.cpp \ + qsort_r_compat.c \ + Resource.cpp \ ResourceFilter.cpp \ ResourceIdCache.cpp \ ResourceTable.cpp \ - Images.cpp \ - Resource.cpp \ - pseudolocalize.cpp \ SourcePos.cpp \ + StringPool.cpp \ WorkQueue.cpp \ + XMLNode.cpp \ ZipEntry.cpp \ - ZipFile.cpp \ - qsort_r_compat.c + ZipFile.cpp aaptTests := \ tests/AaptConfig_test.cpp \ @@ -88,16 +88,13 @@ endif include $(CLEAR_VARS) LOCAL_MODULE := libaapt - -LOCAL_SRC_FILES := $(aaptSources) -LOCAL_C_INCLUDES += $(aaptCIncludes) - -LOCAL_CFLAGS += -Wno-format-y2k -LOCAL_CFLAGS += -DSTATIC_ANDROIDFW_FOR_TOOLS -LOCAL_CFLAGS += $(aaptCFlags) +LOCAL_CFLAGS += -Wno-format-y2k -DSTATIC_ANDROIDFW_FOR_TOOLS $(aaptCFlags) +LOCAL_CPPFLAGS += $(aaptCppFlags) ifeq (darwin,$(HOST_OS)) LOCAL_CFLAGS += -D_DARWIN_UNLIMITED_STREAMS endif +LOCAL_C_INCLUDES += $(aaptCIncludes) +LOCAL_SRC_FILES := $(aaptSources) include $(BUILD_HOST_STATIC_LIBRARY) @@ -108,15 +105,11 @@ include $(BUILD_HOST_STATIC_LIBRARY) include $(CLEAR_VARS) LOCAL_MODULE := aapt - -LOCAL_SRC_FILES := $(aaptMain) - -LOCAL_STATIC_LIBRARIES += \ - libaapt \ - $(aaptHostStaticLibs) - -LOCAL_LDLIBS += $(aaptHostLdLibs) LOCAL_CFLAGS += $(aaptCFlags) +LOCAL_CPPFLAGS += $(aaptCppFlags) +LOCAL_LDLIBS += $(aaptHostLdLibs) +LOCAL_SRC_FILES := $(aaptMain) +LOCAL_STATIC_LIBRARIES += libaapt $(aaptHostStaticLibs) include $(BUILD_HOST_EXECUTABLE) @@ -127,16 +120,12 @@ include $(BUILD_HOST_EXECUTABLE) include $(CLEAR_VARS) LOCAL_MODULE := libaapt_tests - +LOCAL_CFLAGS += $(aaptCFlags) +LOCAL_CPPFLAGS += $(aaptCppFlags) +LOCAL_LDLIBS += $(aaptHostLdLibs) LOCAL_SRC_FILES += $(aaptTests) LOCAL_C_INCLUDES += $(LOCAL_PATH) - -LOCAL_STATIC_LIBRARIES += \ - libaapt \ - $(aaptHostStaticLibs) - -LOCAL_LDLIBS += $(aaptHostLdLibs) -LOCAL_CFLAGS += $(aaptCFlags) +LOCAL_STATIC_LIBRARIES += libaapt $(aaptHostStaticLibs) include $(BUILD_HOST_NATIVE_TEST) @@ -148,13 +137,12 @@ ifneq ($(SDK_ONLY),true) include $(CLEAR_VARS) LOCAL_MODULE := aapt - +LOCAL_CFLAGS += $(aaptCFlags) LOCAL_SRC_FILES := $(aaptSources) $(aaptMain) LOCAL_C_INCLUDES += \ $(aaptCIncludes) \ bionic \ external/stlport/stlport - LOCAL_SHARED_LIBRARIES := \ libandroidfw \ libutils \ @@ -162,14 +150,10 @@ LOCAL_SHARED_LIBRARIES := \ libpng \ liblog \ libz - LOCAL_STATIC_LIBRARIES := \ libstlport_static \ libexpat_static -LOCAL_CFLAGS += $(aaptCFlags) -LOCAL_CPPFLAGS += -Wno-non-virtual-dtor - include $(BUILD_EXECUTABLE) endif # Not SDK_ONLY diff --git a/tools/aapt/CacheUpdater.h b/tools/aapt/CacheUpdater.h index efb245361894..fade53ac2629 100644 --- a/tools/aapt/CacheUpdater.h +++ b/tools/aapt/CacheUpdater.h @@ -30,6 +30,8 @@ using namespace android; */ class CacheUpdater { public: + virtual ~CacheUpdater() {} + // Make sure all the directories along this path exist virtual void ensureDirectoriesExist(String8 path) = 0; @@ -107,4 +109,4 @@ private: Bundle* bundle; }; -#endif // CACHE_UPDATER_H
\ No newline at end of file +#endif // CACHE_UPDATER_H diff --git a/tools/aapt/Main.cpp b/tools/aapt/Main.cpp index 2857b59034ed..18b8e1ecfe49 100644 --- a/tools/aapt/Main.cpp +++ b/tools/aapt/Main.cpp @@ -11,9 +11,9 @@ #include <utils/List.h> #include <utils/Errors.h> -#include <stdlib.h> +#include <cstdlib> #include <getopt.h> -#include <assert.h> +#include <cassert> using namespace android; diff --git a/tools/aapt/Resource.cpp b/tools/aapt/Resource.cpp index a4c9dabb6be9..b9bd03a559e3 100644 --- a/tools/aapt/Resource.cpp +++ b/tools/aapt/Resource.cpp @@ -261,7 +261,7 @@ static status_t parsePackage(Bundle* bundle, const sp<AaptAssets>& assets, ssize_t minSdkIndex = block.indexOfAttribute(RESOURCES_ANDROID_NAMESPACE, "minSdkVersion"); if (minSdkIndex >= 0) { - const uint16_t* minSdk16 = block.getAttributeStringValue(minSdkIndex, &len); + const char16_t* minSdk16 = block.getAttributeStringValue(minSdkIndex, &len); const char* minSdk8 = strdup(String8(minSdk16).string()); bundle->setManifestMinSdkVersion(minSdk8); } @@ -450,7 +450,7 @@ static int validateAttr(const String8& path, const ResTable& table, size_t len; ssize_t index = parser.indexOfAttribute(ns, attr); - const uint16_t* str; + const char16_t* str; Res_value value; if (index >= 0 && parser.getAttributeValue(index, &value) >= 0) { const ResStringPool* pool = &parser.getStrings(); @@ -503,7 +503,7 @@ static int validateAttr(const String8& path, const ResTable& table, } if (validChars) { for (size_t i=0; i<len; i++) { - uint16_t c = str[i]; + char16_t c = str[i]; const char* p = validChars; bool okay = false; while (*p) { @@ -1710,7 +1710,7 @@ status_t buildResources(Bundle* bundle, const sp<AaptAssets>& assets, sp<ApkBuil } size_t len; ssize_t index = block.indexOfAttribute(RESOURCES_ANDROID_NAMESPACE, "name"); - const uint16_t* id = block.getAttributeStringValue(index, &len); + const char16_t* id = block.getAttributeStringValue(index, &len); if (id == NULL) { fprintf(stderr, "%s:%d: missing name attribute in element <%s>.\n", manifestPath.string(), block.getLineNumber(), @@ -1753,7 +1753,7 @@ status_t buildResources(Bundle* bundle, const sp<AaptAssets>& assets, sp<ApkBuil hasErrors = true; } syms->addStringSymbol(String8(e), idStr, srcPos); - const uint16_t* cmt = block.getComment(&len); + const char16_t* cmt = block.getComment(&len); if (cmt != NULL && *cmt != 0) { //printf("Comment of %s: %s\n", String8(e).string(), // String8(cmt).string()); diff --git a/tools/aapt/ResourceTable.cpp b/tools/aapt/ResourceTable.cpp index 4587a4bfa1f0..0f94f8585873 100644 --- a/tools/aapt/ResourceTable.cpp +++ b/tools/aapt/ResourceTable.cpp @@ -399,7 +399,7 @@ static status_t compileAttribute(const sp<AaptFile>& in, ssize_t l10nIdx = block.indexOfAttribute(NULL, "localization"); if (l10nIdx >= 0) { - const uint16_t* str = block.getAttributeStringValue(l10nIdx, &len); + const char16_t* str = block.getAttributeStringValue(l10nIdx, &len); bool error; uint32_t l10n_required = parse_flags(str, len, l10nRequiredFlags, &error); if (error) { @@ -1325,7 +1325,7 @@ status_t compileResourceFile(Bundle* bundle, size_t n = block.getAttributeCount(); for (size_t i = 0; i < n; i++) { size_t length; - const uint16_t* attr = block.getAttributeName(i, &length); + const char16_t* attr = block.getAttributeName(i, &length); if (strcmp16(attr, name16.string()) == 0) { name.setTo(block.getAttributeStringValue(i, &length)); } else if (strcmp16(attr, translatable16.string()) == 0) { @@ -1441,14 +1441,14 @@ status_t compileResourceFile(Bundle* bundle, // translatable. for (size_t i = 0; i < n; i++) { size_t length; - const uint16_t* attr = block.getAttributeName(i, &length); + const char16_t* attr = block.getAttributeName(i, &length); if (strcmp16(attr, formatted16.string()) == 0) { - const uint16_t* value = block.getAttributeStringValue(i, &length); + const char16_t* value = block.getAttributeStringValue(i, &length); if (strcmp16(value, false16.string()) == 0) { curIsFormatted = false; } } else if (strcmp16(attr, translatable16.string()) == 0) { - const uint16_t* value = block.getAttributeStringValue(i, &length); + const char16_t* value = block.getAttributeStringValue(i, &length); if (strcmp16(value, false16.string()) == 0) { isTranslatable = false; } diff --git a/tools/aapt/StringPool.cpp b/tools/aapt/StringPool.cpp index 06769e4a6b4d..2727b3dc9252 100644 --- a/tools/aapt/StringPool.cpp +++ b/tools/aapt/StringPool.cpp @@ -21,7 +21,8 @@ #define NOISY(x) //x -void strcpy16_htod(uint16_t* dst, const uint16_t* src) +#if __cplusplus >= 201103L +void strcpy16_htod(char16_t* dst, const char16_t* src) { while (*src) { char16_t s = htods(*src); @@ -30,6 +31,17 @@ void strcpy16_htod(uint16_t* dst, const uint16_t* src) } *dst = 0; } +#endif + +void strcpy16_htod(uint16_t* dst, const char16_t* src) +{ + while (*src) { + uint16_t s = htods(static_cast<uint16_t>(*src)); + *dst++ = s; + src++; + } + *dst = 0; +} void printStringPool(const ResStringPool* pool) { @@ -416,7 +428,7 @@ status_t StringPool::writeStringBlock(const sp<AaptFile>& pool) return NO_MEMORY; } - const size_t charSize = mUTF8 ? sizeof(uint8_t) : sizeof(char16_t); + const size_t charSize = mUTF8 ? sizeof(uint8_t) : sizeof(uint16_t); size_t strPos = 0; for (i=0; i<STRINGS; i++) { diff --git a/tools/aapt/StringPool.h b/tools/aapt/StringPool.h index 1b3abfd9b4c6..a9c7becbe700 100644 --- a/tools/aapt/StringPool.h +++ b/tools/aapt/StringPool.h @@ -26,7 +26,10 @@ using namespace android; #define PRINT_STRING_METRICS 0 -void strcpy16_htod(uint16_t* dst, const uint16_t* src); +#if __cplusplus >= 201103L +void strcpy16_htod(char16_t* dst, const char16_t* src); +#endif +void strcpy16_htod(uint16_t* dst, const char16_t* src); void printStringPool(const ResStringPool* pool); diff --git a/tools/aapt/XMLNode.cpp b/tools/aapt/XMLNode.cpp index 51a4154d5335..899fb63e2a4c 100644 --- a/tools/aapt/XMLNode.cpp +++ b/tools/aapt/XMLNode.cpp @@ -234,9 +234,9 @@ status_t parseStyledString(Bundle* bundle, const String8 element8(element16); size_t nslen; - const uint16_t* ns = inXml->getElementNamespace(&nslen); + const char16_t* ns = inXml->getElementNamespace(&nslen); if (ns == NULL) { - ns = (const uint16_t*)"\0\0"; + ns = (const char16_t*)"\0\0"; nslen = 0; } const String8 nspace(String16(ns, nslen)); @@ -291,9 +291,9 @@ moveon: } else if (code == ResXMLTree::END_TAG) { size_t nslen; - const uint16_t* ns = inXml->getElementNamespace(&nslen); + const char16_t* ns = inXml->getElementNamespace(&nslen); if (ns == NULL) { - ns = (const uint16_t*)"\0\0"; + ns = (const char16_t*)"\0\0"; nslen = 0; } const String8 nspace(String16(ns, nslen)); @@ -422,7 +422,7 @@ static String8 make_prefix(int depth) } static String8 build_namespace(const Vector<namespace_entry>& namespaces, - const uint16_t* ns) + const char16_t* ns) { String8 str; if (ns != NULL) { @@ -453,9 +453,9 @@ void printXMLBlock(ResXMLTree* block) int i; if (code == ResXMLTree::START_TAG) { size_t len; - const uint16_t* ns16 = block->getElementNamespace(&len); + const char16_t* ns16 = block->getElementNamespace(&len); String8 elemNs = build_namespace(namespaces, ns16); - const uint16_t* com16 = block->getComment(&len); + const char16_t* com16 = block->getComment(&len); if (com16) { printf("%s <!-- %s -->\n", prefix.string(), String8(com16).string()); } @@ -503,7 +503,7 @@ void printXMLBlock(ResXMLTree* block) } else if (code == ResXMLTree::START_NAMESPACE) { namespace_entry ns; size_t len; - const uint16_t* prefix16 = block->getNamespacePrefix(&len); + const char16_t* prefix16 = block->getNamespacePrefix(&len); if (prefix16) { ns.prefix = String8(prefix16); } else { @@ -518,7 +518,7 @@ void printXMLBlock(ResXMLTree* block) depth--; const namespace_entry& ns = namespaces.top(); size_t len; - const uint16_t* prefix16 = block->getNamespacePrefix(&len); + const char16_t* prefix16 = block->getNamespacePrefix(&len); String8 pr; if (prefix16) { pr = String8(prefix16); diff --git a/tools/layoutlib/bridge/src/android/view/WindowCallback.java b/tools/layoutlib/bridge/src/android/view/WindowCallback.java new file mode 100644 index 000000000000..78242a8ab08e --- /dev/null +++ b/tools/layoutlib/bridge/src/android/view/WindowCallback.java @@ -0,0 +1,131 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.view; + +import android.view.ActionMode.Callback; +import android.view.WindowManager.LayoutParams; +import android.view.accessibility.AccessibilityEvent; + +/** + * An empty implementation of {@link Window.Callback} that always returns null/false. + */ +public class WindowCallback implements Window.Callback { + @Override + public boolean dispatchKeyEvent(KeyEvent event) { + return false; + } + + @Override + public boolean dispatchKeyShortcutEvent(KeyEvent event) { + return false; + } + + @Override + public boolean dispatchTouchEvent(MotionEvent event) { + return false; + } + + @Override + public boolean dispatchTrackballEvent(MotionEvent event) { + return false; + } + + @Override + public boolean dispatchGenericMotionEvent(MotionEvent event) { + return false; + } + + @Override + public boolean dispatchPopulateAccessibilityEvent(AccessibilityEvent event) { + return false; + } + + @Override + public View onCreatePanelView(int featureId) { + return null; + } + + @Override + public boolean onCreatePanelMenu(int featureId, Menu menu) { + return false; + } + + @Override + public boolean onPreparePanel(int featureId, View view, Menu menu) { + return false; + } + + @Override + public boolean onMenuOpened(int featureId, Menu menu) { + return false; + } + + @Override + public boolean onMenuItemSelected(int featureId, MenuItem item) { + return false; + } + + @Override + public void onWindowAttributesChanged(LayoutParams attrs) { + + } + + @Override + public void onContentChanged() { + + } + + @Override + public void onWindowFocusChanged(boolean hasFocus) { + + } + + @Override + public void onAttachedToWindow() { + + } + + @Override + public void onDetachedFromWindow() { + + } + + @Override + public void onPanelClosed(int featureId, Menu menu) { + + } + + @Override + public boolean onSearchRequested() { + return false; + } + + @Override + public ActionMode onWindowStartingActionMode(Callback callback) { + return null; + } + + @Override + public void onActionModeStarted(ActionMode mode) { + + } + + @Override + public void onActionModeFinished(ActionMode mode) { + + } +} diff --git a/tools/layoutlib/bridge/src/android/widget/Toolbar_Accessor.java b/tools/layoutlib/bridge/src/android/widget/Toolbar_Accessor.java new file mode 100644 index 000000000000..fdd1779d6bd3 --- /dev/null +++ b/tools/layoutlib/bridge/src/android/widget/Toolbar_Accessor.java @@ -0,0 +1,32 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.widget; + +import android.content.Context; + +/** + * To access non public members of classes in {@link Toolbar} + */ +public class Toolbar_Accessor { + public static ActionMenuPresenter getActionMenuPresenter(Toolbar toolbar) { + return toolbar.getOuterActionMenuPresenter(); + } + + public static Context getPopupContext(Toolbar toolbar) { + return toolbar.getPopupContext(); + } +} diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/Bridge.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/Bridge.java index 825731b57996..ec7871260acf 100644 --- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/Bridge.java +++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/Bridge.java @@ -19,6 +19,7 @@ package com.android.layoutlib.bridge; import static com.android.ide.common.rendering.api.Result.Status.ERROR_UNKNOWN; import static com.android.ide.common.rendering.api.Result.Status.SUCCESS; +import com.android.annotations.NonNull; import com.android.ide.common.rendering.api.Capability; import com.android.ide.common.rendering.api.DrawableParams; import com.android.ide.common.rendering.api.LayoutLog; @@ -459,7 +460,7 @@ public final class Bridge extends com.android.ide.common.rendering.api.Bridge { public static void setLog(LayoutLog log) { // check only the thread currently owning the lock can do this. - if (sLock.isHeldByCurrentThread() == false) { + if (!sLock.isHeldByCurrentThread()) { throw new IllegalStateException("scene must be acquired first. see #acquire(long)"); } @@ -489,7 +490,6 @@ public final class Bridge extends com.android.ide.common.rendering.api.Bridge { /** * Returns the name of a framework resource whose value is an int array. - * @param array */ public static String resolveResourceId(int[] array) { sIntArrayWrapper.set(array); @@ -502,6 +502,7 @@ public final class Bridge extends com.android.ide.common.rendering.api.Bridge { * @param name the name of the resource. * @return an {@link Integer} containing the resource id, or null if no resource were found. */ + @NonNull public static Integer getResourceId(ResourceType type, String name) { Map<String, Integer> map = sRevRMap.get(type); Integer value = null; @@ -509,11 +510,8 @@ public final class Bridge extends com.android.ide.common.rendering.api.Bridge { value = map.get(name); } - if (value == null) { - value = sDynamicIds.getId(type, name); - } + return value == null ? sDynamicIds.getId(type, name) : value; - return value; } /** diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeContext.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeContext.java index d8042308ce94..3d3afa4d8fe4 100644 --- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeContext.java +++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeContext.java @@ -52,7 +52,6 @@ import android.content.res.BridgeTypedArray; import android.content.res.Configuration; import android.content.res.Resources; import android.content.res.Resources.Theme; -import android.content.res.TypedArray; import android.database.DatabaseErrorHandler; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteDatabase.CursorFactory; @@ -127,7 +126,6 @@ public final class BridgeContext extends Context { * @param metrics the {@link DisplayMetrics}. * @param renderResources the configured resources (both framework and projects) for this * render. - * @param projectCallback * @param config the Configuration object for this render. * @param targetSdkVersion the targetSdkVersion of the application. */ @@ -331,7 +329,7 @@ public final class BridgeContext extends Context { boolean attachToRoot, boolean skipCallbackParser) { boolean isPlatformLayout = resource.isFramework(); - if (isPlatformLayout == false && skipCallbackParser == false) { + if (!isPlatformLayout && !skipCallbackParser) { // check if the project callback can provide us with a custom parser. ILayoutPullParser parser = getParser(resource); @@ -663,7 +661,7 @@ public final class BridgeContext extends Context { } String attrName = attribute.getFirst(); - boolean frameworkAttr = attribute.getSecond().booleanValue(); + boolean frameworkAttr = attribute.getSecond(); String value = null; if (set != null) { value = set.getAttributeValue( @@ -672,7 +670,7 @@ public final class BridgeContext extends Context { // if this is an app attribute, and the first get fails, try with the // new res-auto namespace as well - if (frameworkAttr == false && value == null) { + if (!frameworkAttr && value == null) { value = set.getAttributeValue(BridgeConstants.NS_APP_RES_AUTO, attrName); } } @@ -789,13 +787,13 @@ public final class BridgeContext extends Context { List<Pair<String, Boolean>> results = new ArrayList<Pair<String, Boolean>>(attrs.length); // for each attribute, get its name so that we can search it in the style - for (int i = 0 ; i < attrs.length ; i++) { - Pair<ResourceType, String> resolvedResource = Bridge.resolveResourceId(attrs[i]); + for (int attr : attrs) { + Pair<ResourceType, String> resolvedResource = Bridge.resolveResourceId(attr); boolean isFramework = false; if (resolvedResource != null) { isFramework = true; } else { - resolvedResource = mProjectCallback.resolveResourceId(attrs[i]); + resolvedResource = mProjectCallback.resolveResourceId(attr); } if (resolvedResource != null) { @@ -841,7 +839,7 @@ public final class BridgeContext extends Context { if (id == null) { // generate a new id - id = Integer.valueOf(++mDynamicIdGenerator); + id = ++mDynamicIdGenerator; // and add it to the maps. mDynamicIdToStyleMap.put(id, resValue); @@ -860,19 +858,24 @@ public final class BridgeContext extends Context { } public int getFrameworkResourceValue(ResourceType resType, String resName, int defValue) { - Integer value = Bridge.getResourceId(resType, resName); - if (value != null) { - return value.intValue(); + if (getRenderResources().getFrameworkResource(resType, resName) != null) { + // Bridge.getResourceId creates a new resource id if an existing one isn't found. So, + // we check for the existence of the resource before calling it. + return Bridge.getResourceId(resType, resName); } return defValue; } public int getProjectResourceValue(ResourceType resType, String resName, int defValue) { - if (mProjectCallback != null) { - Integer value = mProjectCallback.getResourceId(resType, resName); - if (value != null) { - return value.intValue(); + // getResourceId creates a new resource id if an existing resource id isn't found. So, we + // check for the existence of the resource before calling it. + if (getRenderResources().getProjectResource(resType, resName) != null) { + if (mProjectCallback != null) { + Integer value = mProjectCallback.getResourceId(resType, resName); + if (value != null) { + return value; + } } } @@ -1455,9 +1458,6 @@ public final class BridgeContext extends Context { return null; } - /** - * @hide - */ @Override public int getUserId() { return 0; // not used diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/bars/ActionBarLayout.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/bars/ActionBarLayout.java index d95c815771de..57fd68e1c128 100644 --- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/bars/ActionBarLayout.java +++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/bars/ActionBarLayout.java @@ -18,36 +18,24 @@ package com.android.layoutlib.bridge.bars; import com.android.annotations.NonNull; import com.android.annotations.Nullable; -import com.android.ide.common.rendering.api.ActionBarCallback; -import com.android.ide.common.rendering.api.ActionBarCallback.HomeButtonStyle; -import com.android.ide.common.rendering.api.RenderResources; import com.android.ide.common.rendering.api.ResourceValue; import com.android.ide.common.rendering.api.SessionParams; import com.android.internal.R; -import com.android.internal.app.WindowDecorActionBar; import com.android.internal.view.menu.MenuBuilder; import com.android.internal.view.menu.MenuItemImpl; -import com.android.internal.widget.ActionBarAccessor; -import com.android.internal.widget.ActionBarContainer; -import com.android.internal.widget.ActionBarView; import com.android.layoutlib.bridge.android.BridgeContext; import com.android.layoutlib.bridge.impl.ResourceHelper; -import com.android.resources.ResourceType; -import android.app.ActionBar; -import android.app.ActionBar.Tab; -import android.app.ActionBar.TabListener; -import android.app.FragmentTransaction; import android.content.Context; import android.content.res.TypedArray; -import android.graphics.drawable.Drawable; import android.util.DisplayMetrics; import android.util.TypedValue; -import android.view.Gravity; import android.view.LayoutInflater; -import android.view.MenuInflater; import android.view.View; +import android.view.View.MeasureSpec; import android.view.ViewGroup; +import android.view.ViewGroup.LayoutParams; +import android.widget.ActionMenuPresenter; import android.widget.FrameLayout; import android.widget.LinearLayout; import android.widget.ListAdapter; @@ -56,172 +44,72 @@ import android.widget.RelativeLayout; import java.util.ArrayList; -/** - * A layout representing the action bar. - */ -public class ActionBarLayout extends LinearLayout { +public class ActionBarLayout { + + private static final String LAYOUT_ATTR_NAME = "windowActionBarFullscreenDecorLayout"; + + // The Action Bar + @NonNull private CustomActionBarWrapper mActionBar; // Store another reference to the context so that we don't have to cast it repeatedly. @NonNull private final BridgeContext mBridgeContext; - @NonNull private final Context mThemedContext; - - @NonNull private final ActionBar mActionBar; - - // Data for Action Bar. - @Nullable private final String mIcon; - @Nullable private final String mTitle; - @Nullable private final String mSubTitle; - private final boolean mSplit; - private final boolean mShowHomeAsUp; - private final int mNavMode; - - // Helper fields. - @NonNull private final MenuBuilder mMenuBuilder; - private final int mPopupMaxWidth; - @NonNull private final RenderResources res; - @Nullable private final ActionBarView mActionBarView; - @Nullable private FrameLayout mContentRoot; - @NonNull private final ActionBarCallback mCallback; + + @NonNull private FrameLayout mContentRoot; // A fake parent for measuring views. @Nullable private ViewGroup mMeasureParent; - public ActionBarLayout(@NonNull BridgeContext context, @NonNull SessionParams params) { - - super(context); - setOrientation(LinearLayout.HORIZONTAL); - setGravity(Gravity.CENTER_VERTICAL); - - // Inflate action bar layout. - LayoutInflater.from(context).inflate(R.layout.screen_action_bar, this, - true /*attachToRoot*/); - mActionBar = new WindowDecorActionBar(this); - - // Set contexts. - mBridgeContext = context; - mThemedContext = mActionBar.getThemedContext(); - - // Set data for action bar. - mCallback = params.getProjectCallback().getActionBarCallback(); - mIcon = params.getAppIcon(); - mTitle = params.getAppLabel(); - // Split Action Bar when the screen size is narrow and the application requests split action - // bar when narrow. - mSplit = context.getResources().getBoolean(R.bool.split_action_bar_is_narrow) && - mCallback.getSplitActionBarWhenNarrow(); - mNavMode = mCallback.getNavigationMode(); - // TODO: Support Navigation Drawer Indicator. - mShowHomeAsUp = mCallback.getHomeButtonStyle() == HomeButtonStyle.SHOW_HOME_AS_UP; - mSubTitle = mCallback.getSubTitle(); - - - // Set helper fields. - mMenuBuilder = new MenuBuilder(mThemedContext); - res = mBridgeContext.getRenderResources(); - mPopupMaxWidth = Math.max(mBridgeContext.getMetrics().widthPixels / 2, - mThemedContext.getResources().getDimensionPixelSize( - R.dimen.config_prefDialogWidth)); - mActionBarView = (ActionBarView) findViewById(R.id.action_bar); - mContentRoot = (FrameLayout) findViewById(android.R.id.content); - - setupActionBar(); - } - /** - * Sets up the action bar by filling the appropriate data. + * Inflate the action bar and attach it to {@code parentView} */ - private void setupActionBar() { - // Add title and sub title. - ResourceValue titleValue = res.findResValue(mTitle, false /*isFramework*/); - if (titleValue != null && titleValue.getValue() != null) { - mActionBar.setTitle(titleValue.getValue()); - } else { - mActionBar.setTitle(mTitle); - } - if (mSubTitle != null) { - mActionBar.setSubtitle(mSubTitle); - } + public ActionBarLayout(@NonNull BridgeContext context, @NonNull SessionParams params, + @NonNull ViewGroup parentView) { - // Add show home as up icon. - if (mShowHomeAsUp) { - mActionBar.setDisplayOptions(0xFF, ActionBar.DISPLAY_HOME_AS_UP); - } + mBridgeContext = context; - // Set the navigation mode. - mActionBar.setNavigationMode(mNavMode); - if (mNavMode == ActionBar.NAVIGATION_MODE_TABS) { - setupTabs(3); + ResourceValue layoutName = context.getRenderResources() + .findItemInTheme(LAYOUT_ATTR_NAME, true); + if (layoutName != null) { + // We may need to resolve the reference obtained. + layoutName = context.getRenderResources().findResValue(layoutName.getValue(), + layoutName.isFramework()); } - - if (mActionBarView != null) { - // If the action bar style doesn't specify an icon, set the icon obtained from the session - // params. - if (!mActionBarView.hasIcon() && mIcon != null) { - Drawable iconDrawable = getDrawable(mIcon, false /*isFramework*/); - if (iconDrawable != null) { - mActionBar.setIcon(iconDrawable); - } + int layoutId = 0; + String error = null; + if (layoutName == null) { + error = "Unable to find action bar layout (" + LAYOUT_ATTR_NAME + + ") in the current theme."; + } else { + layoutId = context.getFrameworkResourceValue(layoutName.getResourceType(), + layoutName.getName(), 0); + if (layoutId == 0) { + error = String.format("Unable to resolve attribute \"%s\" of type \"%s\"", + layoutName.getName(), layoutName.getResourceType()); } - - // Set action bar to be split, if needed. - ActionBarContainer splitView = (ActionBarContainer) findViewById(R.id.split_action_bar); - mActionBarView.setSplitView(splitView); - mActionBarView.setSplitToolbar(mSplit); - - inflateMenus(); } - } - - /** - * Gets the menus to add to the action bar from the callback, resolves them, inflates them and - * adds them to the action bar. - */ - private void inflateMenus() { - if (mActionBarView == null) { - return; - } - final MenuInflater inflater = new MenuInflater(mThemedContext); - for (String name : mCallback.getMenuIdNames()) { - if (mBridgeContext.getRenderResources().getProjectResource(ResourceType.MENU, name) - != null) { - int id = mBridgeContext.getProjectResourceValue(ResourceType.MENU, name, -1); - if (id > -1) { - inflater.inflate(id, mMenuBuilder); - } - } + if (layoutId == 0) { + throw new RuntimeException(error); } - mActionBarView.setMenu(mMenuBuilder, null /*callback*/); - } + // Inflate action bar layout. + View decorContent = LayoutInflater.from(context).inflate(layoutId, parentView, true); - // TODO: Use an adapter, like List View to set up tabs. - private void setupTabs(int num) { - for (int i = 1; i <= num; i++) { - Tab tab = mActionBar.newTab().setText("Tab" + i).setTabListener(new TabListener() { - @Override - public void onTabUnselected(Tab t, FragmentTransaction ft) { - // pass - } - @Override - public void onTabSelected(Tab t, FragmentTransaction ft) { - // pass - } - @Override - public void onTabReselected(Tab t, FragmentTransaction ft) { - // pass - } - }); - mActionBar.addTab(tab); - } - } + mActionBar = CustomActionBarWrapper.getActionBarWrapper(context, params, decorContent); - @Nullable - private Drawable getDrawable(@NonNull String name, boolean isFramework) { - ResourceValue value = res.findResValue(name, isFramework); - value = res.resolveResValue(value); - if (value != null) { - return ResourceHelper.getDrawable(value, mBridgeContext); + FrameLayout contentRoot = (FrameLayout) parentView.findViewById(android.R.id.content); + + // If something went wrong and we were not able to initialize the content root, + // just add a frame layout inside this and return. + if (contentRoot == null) { + contentRoot = new FrameLayout(context); + contentRoot.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, + LayoutParams.MATCH_PARENT)); + parentView.addView(contentRoot); + mContentRoot = contentRoot; + } else { + mContentRoot = contentRoot; + mActionBar.setupActionBar(); + mActionBar.inflateMenus(); } - return null; } /** @@ -229,7 +117,7 @@ public class ActionBarLayout extends LinearLayout { * the content frame which shall serve as the new content root. */ public void createMenuPopup() { - assert mContentRoot != null && findViewById(android.R.id.content) == mContentRoot + assert mContentRoot.getId() == android.R.id.content : "Action Bar Menus have already been created."; if (!isOverflowPopupNeeded()) { @@ -237,7 +125,7 @@ public class ActionBarLayout extends LinearLayout { } // Create a layout to hold the menus and the user's content. - RelativeLayout layout = new RelativeLayout(mThemedContext); + RelativeLayout layout = new RelativeLayout(mActionBar.getPopupContext()); layout.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); mContentRoot.addView(layout); @@ -259,13 +147,14 @@ public class ActionBarLayout extends LinearLayout { @NonNull private View createMenuView() { DisplayMetrics metrics = mBridgeContext.getMetrics(); - OverflowMenuAdapter adapter = new OverflowMenuAdapter(mMenuBuilder, mThemedContext); + MenuBuilder menu = mActionBar.getMenuBuilder(); + OverflowMenuAdapter adapter = new OverflowMenuAdapter(menu, mActionBar.getPopupContext()); - LinearLayout layout = new LinearLayout(mThemedContext); + LinearLayout layout = new LinearLayout(mActionBar.getPopupContext()); RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams( measureContentWidth(adapter), LayoutParams.WRAP_CONTENT); layoutParams.addRule(RelativeLayout.ALIGN_PARENT_END); - if (mSplit) { + if (mActionBar.isSplit()) { layoutParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM); // TODO: Find correct value instead of hardcoded 10dp. layoutParams.bottomMargin = getPixelValue("-10dp", metrics); @@ -273,7 +162,7 @@ public class ActionBarLayout extends LinearLayout { layoutParams.topMargin = getPixelValue("-10dp", metrics); } layout.setLayoutParams(layoutParams); - final TypedArray a = mThemedContext.obtainStyledAttributes(null, + final TypedArray a = mActionBar.getPopupContext().obtainStyledAttributes(null, R.styleable.PopupWindow, R.attr.popupMenuStyle, 0); layout.setBackground(a.getDrawable(R.styleable.PopupWindow_popupBackground)); layout.setDividerDrawable(a.getDrawable(R.attr.actionBarDivider)); @@ -282,20 +171,25 @@ public class ActionBarLayout extends LinearLayout { layout.setDividerPadding(getPixelValue("12dp", metrics)); layout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); - ListView listView = new ListView(mThemedContext, null, R.attr.dropDownListViewStyle); + ListView listView = new ListView(mActionBar.getPopupContext(), null, + R.attr.dropDownListViewStyle); listView.setAdapter(adapter); layout.addView(listView); return layout; } private boolean isOverflowPopupNeeded() { - boolean needed = mCallback.isOverflowPopupNeeded(); + boolean needed = mActionBar.isOverflowPopupNeeded(); if (!needed) { return false; } // Copied from android.widget.ActionMenuPresenter.updateMenuView() - ArrayList<MenuItemImpl> menus = mMenuBuilder.getNonActionItems(); - if (ActionBarAccessor.getActionMenuPresenter(mActionBarView).isOverflowReserved() && + ArrayList<MenuItemImpl> menus = mActionBar.getMenuBuilder().getNonActionItems(); + ActionMenuPresenter presenter = mActionBar.getActionMenuPresenter(); + if (presenter == null) { + throw new RuntimeException("Failed to create a Presenter for Action Bar Menus."); + } + if (presenter.isOverflowReserved() && menus != null) { final int count = menus.size(); if (count == 1) { @@ -307,7 +201,7 @@ public class ActionBarLayout extends LinearLayout { return needed; } - @Nullable + @NonNull public FrameLayout getContentRoot() { return mContentRoot; } @@ -319,6 +213,7 @@ public class ActionBarLayout extends LinearLayout { View itemView = null; int itemType = 0; + Context context = mActionBar.getPopupContext(); final int widthMeasureSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED); final int heightMeasureSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED); final int count = adapter.getCount(); @@ -330,15 +225,17 @@ public class ActionBarLayout extends LinearLayout { } if (mMeasureParent == null) { - mMeasureParent = new FrameLayout(mThemedContext); + mMeasureParent = new FrameLayout(context); } itemView = adapter.getView(i, itemView, mMeasureParent); itemView.measure(widthMeasureSpec, heightMeasureSpec); final int itemWidth = itemView.getMeasuredWidth(); - if (itemWidth >= mPopupMaxWidth) { - return mPopupMaxWidth; + int popupMaxWidth = Math.max(mBridgeContext.getMetrics().widthPixels / 2, + context.getResources().getDimensionPixelSize(R.dimen.config_prefDialogWidth)); + if (itemWidth >= popupMaxWidth) { + return popupMaxWidth; } else if (itemWidth > maxWidth) { maxWidth = itemWidth; } diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/bars/CustomActionBarWrapper.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/bars/CustomActionBarWrapper.java new file mode 100644 index 000000000000..70b9cc3eefb4 --- /dev/null +++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/bars/CustomActionBarWrapper.java @@ -0,0 +1,351 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.layoutlib.bridge.bars; + +import com.android.annotations.NonNull; +import com.android.annotations.Nullable; +import com.android.ide.common.rendering.api.ActionBarCallback; +import com.android.ide.common.rendering.api.ActionBarCallback.HomeButtonStyle; +import com.android.ide.common.rendering.api.RenderResources; +import com.android.ide.common.rendering.api.ResourceValue; +import com.android.ide.common.rendering.api.SessionParams; +import com.android.internal.R; +import com.android.internal.app.ToolbarActionBar; +import com.android.internal.app.WindowDecorActionBar; +import com.android.internal.view.menu.MenuBuilder; +import com.android.internal.widget.ActionBarAccessor; +import com.android.internal.widget.ActionBarView; +import com.android.internal.widget.DecorToolbar; +import com.android.layoutlib.bridge.android.BridgeContext; +import com.android.layoutlib.bridge.impl.ResourceHelper; + +import android.app.ActionBar; +import android.app.ActionBar.Tab; +import android.app.ActionBar.TabListener; +import android.app.FragmentTransaction; +import android.content.Context; +import android.content.res.Resources; +import android.graphics.drawable.Drawable; +import android.view.MenuInflater; +import android.view.View; +import android.view.ViewGroup; +import android.view.WindowCallback; +import android.widget.ActionMenuPresenter; +import android.widget.Toolbar; +import android.widget.Toolbar_Accessor; + +import static com.android.SdkConstants.ANDROID_NS_NAME_PREFIX; +import static com.android.resources.ResourceType.MENU; + +/** + * A common API to access {@link ToolbarActionBar} and {@link WindowDecorActionBar}. + */ +public abstract class CustomActionBarWrapper { + + @NonNull protected ActionBar mActionBar; + @NonNull protected SessionParams mParams; + @NonNull protected ActionBarCallback mCallback; + @NonNull protected BridgeContext mContext; + + /** + * Returns a wrapper around different implementations of the Action Bar to provide a common API. + * + * @param decorContent the top level view returned by inflating + * ?attr/windowActionBarFullscreenDecorLayout + */ + @NonNull + public static CustomActionBarWrapper getActionBarWrapper(@NonNull BridgeContext context, + @NonNull SessionParams params, @NonNull View decorContent) { + View view = decorContent.findViewById(R.id.action_bar); + if (view instanceof Toolbar) { + return new ToolbarWrapper(context, params, ((Toolbar) view) + ); + } else if (view instanceof ActionBarView) { + return new WindowActionBarWrapper(context, params, decorContent, ((ActionBarView) view) + ); + } else { + throw new IllegalStateException("Can't make an action bar out of " + + view.getClass().getSimpleName()); + } + } + + CustomActionBarWrapper(@NonNull BridgeContext context, @NonNull SessionParams params, + @NonNull ActionBar actionBar) { + mActionBar = actionBar; + mParams = params; + mCallback = params.getProjectCallback().getActionBarCallback(); + mContext = context; + } + + protected void setupActionBar() { + // Do the things that are common to all implementations. + RenderResources res = mContext.getRenderResources(); + + String title = mParams.getAppLabel(); + ResourceValue titleValue = res.findResValue(title, false); + if (titleValue != null && titleValue.getValue() != null) { + mActionBar.setTitle(titleValue.getValue()); + } else { + mActionBar.setTitle(title); + } + + String subTitle = mCallback.getSubTitle(); + if (subTitle != null) { + mActionBar.setSubtitle(subTitle); + } + + // Add show home as up icon. + if (mCallback.getHomeButtonStyle() == HomeButtonStyle.SHOW_HOME_AS_UP) { + mActionBar.setDisplayOptions(0xFF, ActionBar.DISPLAY_HOME_AS_UP); + } + } + + protected boolean isSplit() { + return getDecorToolbar().isSplit(); + } + + protected boolean isOverflowPopupNeeded() { + return mCallback.isOverflowPopupNeeded(); + } + + /** + * Gets the menus to add to the action bar from the callback, resolves them, inflates them and + * adds them to the action bar. + */ + protected void inflateMenus() { + MenuInflater inflater = new MenuInflater(getActionMenuContext()); + MenuBuilder menuBuilder = getMenuBuilder(); + for (String name : mCallback.getMenuIdNames()) { + int id; + if (name.startsWith(ANDROID_NS_NAME_PREFIX)) { + // Framework menu. + name = name.substring(ANDROID_NS_NAME_PREFIX.length()); + id = mContext.getFrameworkResourceValue(MENU, name, -1); + } else { + // Project menu. + id = mContext.getProjectResourceValue(MENU, name, -1); + } + if (id > -1) { + inflater.inflate(id, menuBuilder); + } + } + } + + /** + * The context used for the ActionBar and the menus in the ActionBarView. + */ + @NonNull + protected Context getActionMenuContext() { + return mActionBar.getThemedContext(); + } + + /** + * The context used to inflate the popup menu. + */ + @NonNull + abstract Context getPopupContext(); + + /** + * The Menu in which to inflate the user's menus. + */ + @NonNull + abstract MenuBuilder getMenuBuilder(); + + @Nullable + abstract ActionMenuPresenter getActionMenuPresenter(); + + /** + * Framework's wrapper over two ActionBar implementations. + */ + @NonNull + abstract DecorToolbar getDecorToolbar(); + + // ---- The implementations ---- + + /** + * Material theme uses {@link Toolbar} as the action bar. This wrapper provides access to + * Toolbar using a common API. + */ + private static class ToolbarWrapper extends CustomActionBarWrapper { + + @NonNull + private final Toolbar mToolbar; // This is the view. + + ToolbarWrapper(@NonNull BridgeContext context, @NonNull SessionParams params, + @NonNull Toolbar toolbar) { + super(context, params, new ToolbarActionBar(toolbar, "", new WindowCallback()) + ); + mToolbar = toolbar; + } + + @Override + protected void inflateMenus() { + super.inflateMenus(); + // Inflating the menus doesn't initialize the ActionMenuPresenter. Setting a fake menu + // and then setting it back does the trick. + MenuBuilder menu = getMenuBuilder(); + DecorToolbar decorToolbar = getDecorToolbar(); + decorToolbar.setMenu(new MenuBuilder(getActionMenuContext()), null); + decorToolbar.setMenu(menu, null); + } + + @NonNull + @Override + Context getPopupContext() { + return Toolbar_Accessor.getPopupContext(mToolbar); + } + + @NonNull + @Override + MenuBuilder getMenuBuilder() { + return (MenuBuilder) mToolbar.getMenu(); + } + + @Nullable + @Override + ActionMenuPresenter getActionMenuPresenter() { + return Toolbar_Accessor.getActionMenuPresenter(mToolbar); + } + + @NonNull + @Override + DecorToolbar getDecorToolbar() { + return mToolbar.getWrapper(); + } + } + + /** + * Holo theme uses {@link WindowDecorActionBar} as the action bar. This wrapper provides + * access to it using a common API. + */ + private static class WindowActionBarWrapper extends CustomActionBarWrapper{ + + @NonNull + private final WindowDecorActionBar mActionBar; + private final ActionBarView mActionBarView; + private MenuBuilder mMenuBuilder; + + public WindowActionBarWrapper(@NonNull BridgeContext context, @NonNull SessionParams params, + @NonNull View decorContentRoot, @NonNull ActionBarView actionBarView) { + super(context, params, new WindowDecorActionBar(decorContentRoot) + ); + mActionBarView = actionBarView; + mActionBar = ((WindowDecorActionBar) super.mActionBar); + } + + @Override + protected void setupActionBar() { + super.setupActionBar(); + + // Set the navigation mode. + int navMode = mCallback.getNavigationMode(); + mActionBar.setNavigationMode(navMode); + //noinspection deprecation + if (navMode == ActionBar.NAVIGATION_MODE_TABS) { + setupTabs(3); + } + + String icon = mParams.getAppIcon(); + // If the action bar style doesn't specify an icon, set the icon obtained from the + // session params. + if (!mActionBar.hasIcon() && icon != null) { + Drawable iconDrawable = getDrawable(icon, false); + if (iconDrawable != null) { + mActionBar.setIcon(iconDrawable); + } + } + + // Set action bar to be split, if needed. + ViewGroup splitView = (ViewGroup) mActionBarView.findViewById(R.id.split_action_bar); + if (splitView != null) { + mActionBarView.setSplitView(splitView); + Resources res = mContext.getResources(); + boolean split = res.getBoolean(R.bool.split_action_bar_is_narrow) + && mCallback.getSplitActionBarWhenNarrow(); + mActionBarView.setSplitToolbar(split); + } + } + + @Override + protected void inflateMenus() { + super.inflateMenus(); + // The super implementation doesn't set the menu on the view. Set it here. + mActionBarView.setMenu(getMenuBuilder(), null); + } + + @NonNull + @Override + Context getPopupContext() { + return getActionMenuContext(); + } + + @NonNull + @Override + MenuBuilder getMenuBuilder() { + if (mMenuBuilder == null) { + mMenuBuilder = new MenuBuilder(getActionMenuContext()); + } + return mMenuBuilder; + } + + @Nullable + @Override + ActionMenuPresenter getActionMenuPresenter() { + return ActionBarAccessor.getActionMenuPresenter(mActionBarView); + } + + @NonNull + @Override + ActionBarView getDecorToolbar() { + return mActionBarView; + } + + // TODO: Use an adapter, like List View to set up tabs. + @SuppressWarnings("deprecation") // For Tab + private void setupTabs(int num) { + for (int i = 1; i <= num; i++) { + Tab tab = mActionBar.newTab().setText("Tab" + i).setTabListener(new TabListener() { + @Override + public void onTabUnselected(Tab t, FragmentTransaction ft) { + // pass + } + @Override + public void onTabSelected(Tab t, FragmentTransaction ft) { + // pass + } + @Override + public void onTabReselected(Tab t, FragmentTransaction ft) { + // pass + } + }); + mActionBar.addTab(tab); + } + } + + @Nullable + private Drawable getDrawable(@NonNull String name, boolean isFramework) { + RenderResources res = mContext.getRenderResources(); + ResourceValue value = res.findResValue(name, isFramework); + value = res.resolveResValue(value); + if (value != null) { + return ResourceHelper.getDrawable(value, mContext); + } + return null; + } + + } +} diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/impl/RenderSessionImpl.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/impl/RenderSessionImpl.java index b8dce70d98f5..a2eed9a5a2ab 100644 --- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/impl/RenderSessionImpl.java +++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/impl/RenderSessionImpl.java @@ -353,8 +353,7 @@ public class RenderSessionImpl extends RenderAction<SessionParams> { // if the theme says no title/action bar, then the size will be 0 if (mActionBarSize > 0) { - ActionBarLayout actionBar = createActionBar(context, params); - backgroundLayout.addView(actionBar); + ActionBarLayout actionBar = createActionBar(context, params, backgroundLayout); actionBar.createMenuPopup(); mContentRoot = actionBar.getContentRoot(); } else if (mTitleBarSize > 0) { @@ -1624,11 +1623,9 @@ public class RenderSessionImpl extends RenderAction<SessionParams> { /** * Creates the action bar. Also queries the project callback for missing information. */ - private ActionBarLayout createActionBar(BridgeContext context, SessionParams params) { - ActionBarLayout actionBar = new ActionBarLayout(context, params); - actionBar.setLayoutParams(new LinearLayout.LayoutParams( - LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); - return actionBar; + private ActionBarLayout createActionBar(BridgeContext context, SessionParams params, + ViewGroup parentView) { + return new ActionBarLayout(context, params, parentView); } public BufferedImage getImage() { diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/util/DynamicIdMap.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/util/DynamicIdMap.java index a1fae95fc1ae..979aa338e041 100644 --- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/util/DynamicIdMap.java +++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/util/DynamicIdMap.java @@ -16,6 +16,7 @@ package com.android.layoutlib.bridge.util; +import com.android.annotations.NonNull; import com.android.resources.ResourceType; import com.android.util.Pair; @@ -48,6 +49,7 @@ public class DynamicIdMap { * @param name the name of the resource * @return an integer. */ + @NonNull public Integer getId(ResourceType type, String name) { return getId(Pair.of(type, name)); } @@ -59,10 +61,11 @@ public class DynamicIdMap { * @param resource the type/name of the resource * @return an integer. */ + @NonNull public Integer getId(Pair<ResourceType, String> resource) { Integer value = mDynamicIds.get(resource); if (value == null) { - value = Integer.valueOf(++mDynamicSeed); + value = ++mDynamicSeed; mDynamicIds.put(resource, value); mRevDynamicIds.put(value, resource); } diff --git a/tools/split-select/Abi.cpp b/tools/split-select/Abi.cpp index 20654b613384..180dd8fb81b0 100644 --- a/tools/split-select/Abi.cpp +++ b/tools/split-select/Abi.cpp @@ -16,42 +16,58 @@ #include "Abi.h" +using namespace android; + namespace split { namespace abi { -static const std::vector<Variant> sNoneVariants = {}; -static const std::vector<Variant> sArmVariants = - {Variant::armeabi, Variant::armeabi_v7a, Variant::arm64_v8a}; -static const std::vector<Variant> sIntelVariants = {Variant::x86, Variant::x86_64}; -static const std::vector<Variant> sMipsVariants = {Variant::mips, Variant::mips64}; +static Vector<Variant> buildVariants(Variant v1, Variant v2) { + Vector<Variant> v; + v.add(v1); + v.add(v2); + return v; +} + +static Vector<Variant> buildVariants(Variant v1, Variant v2, Variant v3) { + Vector<Variant> v; + v.add(v1); + v.add(v2); + v.add(v3); + return v; +} + +static const Vector<Variant> sNoneVariants; +static const Vector<Variant> sArmVariants = buildVariants(Variant_armeabi, Variant_armeabi_v7a, Variant_arm64_v8a); +static const Vector<Variant> sIntelVariants = buildVariants(Variant_x86, Variant_x86_64); +static const Vector<Variant> sMipsVariants = buildVariants(Variant_mips, Variant_mips64); Family getFamily(Variant variant) { switch (variant) { - case Variant::none: - return Family::none; - case Variant::armeabi: - case Variant::armeabi_v7a: - case Variant::arm64_v8a: - return Family::arm; - case Variant::x86: - case Variant::x86_64: - return Family::intel; - case Variant::mips: - case Variant::mips64: - return Family::mips; + case Variant_none: + return Family_none; + case Variant_armeabi: + case Variant_armeabi_v7a: + case Variant_arm64_v8a: + return Family_arm; + case Variant_x86: + case Variant_x86_64: + return Family_intel; + case Variant_mips: + case Variant_mips64: + return Family_mips; } - return Family::none; + return Family_none; } -const std::vector<Variant>& getVariants(Family family) { +const Vector<Variant>& getVariants(Family family) { switch (family) { - case Family::none: + case Family_none: return sNoneVariants; - case Family::arm: + case Family_arm: return sArmVariants; - case Family::intel: + case Family_intel: return sIntelVariants; - case Family::mips: + case Family_mips: return sMipsVariants; } return sNoneVariants; @@ -59,21 +75,21 @@ const std::vector<Variant>& getVariants(Family family) { const char* toString(Variant variant) { switch (variant) { - case Variant::none: + case Variant_none: return ""; - case Variant::armeabi: + case Variant_armeabi: return "armeabi"; - case Variant::armeabi_v7a: + case Variant_armeabi_v7a: return "armeabi-v7a"; - case Variant::arm64_v8a: + case Variant_arm64_v8a: return "arm64-v8a"; - case Variant::x86: + case Variant_x86: return "x86"; - case Variant::x86_64: + case Variant_x86_64: return "x86_64"; - case Variant::mips: + case Variant_mips: return "mips"; - case Variant::mips64: + case Variant_mips64: return "mips64"; } return ""; diff --git a/tools/split-select/Abi.h b/tools/split-select/Abi.h index 3e00eba547ec..85b4d626473e 100644 --- a/tools/split-select/Abi.h +++ b/tools/split-select/Abi.h @@ -17,31 +17,31 @@ #ifndef H_ANDROID_SPLIT_ABI #define H_ANDROID_SPLIT_ABI -#include <vector> +#include <utils/Vector.h> namespace split { namespace abi { -enum class Variant { - none = 0, - armeabi, - armeabi_v7a, - arm64_v8a, - x86, - x86_64, - mips, - mips64, +enum Variant { + Variant_none = 0, + Variant_armeabi, + Variant_armeabi_v7a, + Variant_arm64_v8a, + Variant_x86, + Variant_x86_64, + Variant_mips, + Variant_mips64, }; -enum class Family { - none, - arm, - intel, - mips, +enum Family { + Family_none, + Family_arm, + Family_intel, + Family_mips, }; Family getFamily(Variant variant); -const std::vector<Variant>& getVariants(Family family); +const android::Vector<Variant>& getVariants(Family family); const char* toString(Variant variant); } // namespace abi diff --git a/tools/split-select/Android.mk b/tools/split-select/Android.mk index d0b72877e5b6..dc48ea8b698b 100644 --- a/tools/split-select/Android.mk +++ b/tools/split-select/Android.mk @@ -17,10 +17,6 @@ # This tool is prebuilt if we're doing an app-only build. ifeq ($(TARGET_BUILD_APPS)$(filter true,$(TARGET_BUILD_PDK)),) -# TODO(adamlesinski): Enable OS X builds when I figure out how -# to build with clang and libc++ -ifneq ($(HOST_OS),darwin) - # ========================================================== # Setup some common variables for the different build # targets here. @@ -55,7 +51,7 @@ hostStaticLibs := \ libexpat \ libziparchive-host -cFlags := -std=c++11 -Wall -Werror +cFlags := -Wall -Werror ifeq ($(HOST_OS),linux) hostLdLibs += -lrt -ldl -lpthread @@ -115,5 +111,4 @@ LOCAL_CFLAGS += $(cFlags) include $(BUILD_HOST_EXECUTABLE) -endif # Not OS X endif # No TARGET_BUILD_APPS or TARGET_BUILD_PDK diff --git a/tools/split-select/Grouper.cpp b/tools/split-select/Grouper.cpp index 15edf89bd60f..22685cd4e194 100644 --- a/tools/split-select/Grouper.cpp +++ b/tools/split-select/Grouper.cpp @@ -16,25 +16,17 @@ #include "Grouper.h" +#include "aapt/AaptUtil.h" #include "SplitDescription.h" #include <utils/KeyedVector.h> #include <utils/Vector.h> using namespace android; +using AaptUtil::appendValue; namespace split { -template <typename Key, typename Value> -static void addToVector(KeyedVector<Key, SortedVector<Value> >& group, - const Key& key, const Value& value) { - ssize_t idx = group.indexOfKey(key); - if (idx < 0) { - idx = group.add(key, SortedVector<Value>()); - } - group.editValueAt(idx).add(value); -} - Vector<SortedVector<SplitDescription> > groupByMutualExclusivity(const Vector<SplitDescription>& splits) { Vector<SortedVector<SplitDescription> > groups; @@ -43,20 +35,22 @@ groupByMutualExclusivity(const Vector<SplitDescription>& splits) { KeyedVector<SplitDescription, SortedVector<SplitDescription> > densityGroups; KeyedVector<SplitDescription, SortedVector<SplitDescription> > abiGroups; KeyedVector<SplitDescription, SortedVector<SplitDescription> > localeGroups; - for (const SplitDescription& split : splits) { + const size_t splitCount = splits.size(); + for (size_t i = 0; i < splitCount; i++) { + const SplitDescription& split = splits[i]; if (split.config.density != 0) { SplitDescription key(split); key.config.density = 0; key.config.sdkVersion = 0; // Ignore density so we can support anydpi. - addToVector(densityGroups, key, split); - } else if (split.abi != abi::Variant::none) { + appendValue(densityGroups, key, split); + } else if (split.abi != abi::Variant_none) { SplitDescription key(split); - key.abi = abi::Variant::none; - addToVector(abiGroups, key, split); + key.abi = abi::Variant_none; + appendValue(abiGroups, key, split); } else if (split.config.locale != 0) { SplitDescription key(split); key.config.clearLocale(); - addToVector(localeGroups, key, split); + appendValue(localeGroups, key, split); } else { groups.add(); groups.editTop().add(split); diff --git a/tools/split-select/Grouper_test.cpp b/tools/split-select/Grouper_test.cpp index 4d146cdd8ed1..a5f9c5acfbbf 100644 --- a/tools/split-select/Grouper_test.cpp +++ b/tools/split-select/Grouper_test.cpp @@ -19,7 +19,6 @@ #include "SplitDescription.h" #include <gtest/gtest.h> -#include <initializer_list> #include <utils/String8.h> #include <utils/Vector.h> @@ -55,7 +54,11 @@ protected: } void addSplit(Vector<SplitDescription>& splits, const char* str); - void expectHasGroupWithSplits(std::initializer_list<const char*> l); + void expectHasGroupWithSplits(const char* a); + void expectHasGroupWithSplits(const char* a, const char* b); + void expectHasGroupWithSplits(const char* a, const char* b, const char* c); + void expectHasGroupWithSplits(const char* a, const char* b, const char* c, const char* d); + void expectHasGroupWithSplits(const Vector<const char*>& expectedStrs); Vector<SortedVector<SplitDescription> > mGroups; }; @@ -65,39 +68,70 @@ TEST_F(GrouperTest, shouldHaveCorrectNumberOfGroups) { } TEST_F(GrouperTest, shouldGroupDensities) { - expectHasGroupWithSplits({"en-rUS-sw300dp-hdpi", "en-rUS-sw300dp-xhdpi"}); - expectHasGroupWithSplits({"en-rUS-sw600dp-hdpi", "en-rUS-sw600dp-xhdpi"}); - expectHasGroupWithSplits({"fr-rFR-sw600dp-hdpi", "fr-rFR-sw600dp-xhdpi"}); - expectHasGroupWithSplits({"hdpi", "xhdpi", "xxhdpi", "anydpi"}); + expectHasGroupWithSplits("en-rUS-sw300dp-hdpi", "en-rUS-sw300dp-xhdpi"); + expectHasGroupWithSplits("en-rUS-sw600dp-hdpi", "en-rUS-sw600dp-xhdpi"); + expectHasGroupWithSplits("fr-rFR-sw600dp-hdpi", "fr-rFR-sw600dp-xhdpi"); + expectHasGroupWithSplits("hdpi", "xhdpi", "xxhdpi", "anydpi"); } TEST_F(GrouperTest, shouldGroupAbi) { - expectHasGroupWithSplits({":armeabi", ":x86"}); + expectHasGroupWithSplits(":armeabi", ":x86"); } TEST_F(GrouperTest, shouldGroupLocale) { - expectHasGroupWithSplits({"pl-rPL", "de-rDE"}); + expectHasGroupWithSplits("pl-rPL", "de-rDE"); } TEST_F(GrouperTest, shouldGroupEachSplitIntoItsOwnGroup) { - expectHasGroupWithSplits({"large"}); - expectHasGroupWithSplits({"xlarge"}); - expectHasGroupWithSplits({"v7"}); - expectHasGroupWithSplits({"v8"}); - expectHasGroupWithSplits({"sw600dp"}); - expectHasGroupWithSplits({"sw300dp"}); + expectHasGroupWithSplits("large"); + expectHasGroupWithSplits("xlarge"); + expectHasGroupWithSplits("v7"); + expectHasGroupWithSplits("v8"); + expectHasGroupWithSplits("sw600dp"); + expectHasGroupWithSplits("sw300dp"); } // // Helper methods // -void GrouperTest::expectHasGroupWithSplits(std::initializer_list<const char*> l) { +void GrouperTest::expectHasGroupWithSplits(const char* a) { + Vector<const char*> expected; + expected.add(a); + expectHasGroupWithSplits(expected); +} + +void GrouperTest::expectHasGroupWithSplits(const char* a, const char* b) { + Vector<const char*> expected; + expected.add(a); + expected.add(b); + expectHasGroupWithSplits(expected); +} + +void GrouperTest::expectHasGroupWithSplits(const char* a, const char* b, const char* c) { + Vector<const char*> expected; + expected.add(a); + expected.add(b); + expected.add(c); + expectHasGroupWithSplits(expected); +} + +void GrouperTest::expectHasGroupWithSplits(const char* a, const char* b, const char* c, const char* d) { + Vector<const char*> expected; + expected.add(a); + expected.add(b); + expected.add(c); + expected.add(d); + expectHasGroupWithSplits(expected); +} + +void GrouperTest::expectHasGroupWithSplits(const Vector<const char*>& expectedStrs) { Vector<SplitDescription> splits; - for (const char* str : l) { + const size_t expectedStrCount = expectedStrs.size(); + for (size_t i = 0; i < expectedStrCount; i++) { splits.add(); - if (!SplitDescription::parse(String8(str), &splits.editTop())) { - ADD_FAILURE() << "Failed to parse SplitDescription " << str; + if (!SplitDescription::parse(String8(expectedStrs[i]), &splits.editTop())) { + ADD_FAILURE() << "Failed to parse SplitDescription " << expectedStrs[i]; return; } } diff --git a/tools/split-select/Main.cpp b/tools/split-select/Main.cpp index d6251c3c1511..434494ead3a8 100644 --- a/tools/split-select/Main.cpp +++ b/tools/split-select/Main.cpp @@ -63,7 +63,7 @@ static void help() { class SplitSelector { public: - SplitSelector() = default; + SplitSelector(); SplitSelector(const Vector<SplitDescription>& splits); Vector<SplitDescription> getBestSplits(const SplitDescription& target) const; @@ -75,6 +75,9 @@ private: Vector<SortedVector<SplitDescription> > mGroups; }; +SplitSelector::SplitSelector() { +} + SplitSelector::SplitSelector(const Vector<SplitDescription>& splits) : mGroups(groupByMutualExclusivity(splits)) { } diff --git a/tools/split-select/RuleGenerator.cpp b/tools/split-select/RuleGenerator.cpp index 669ae781aace..b8f3bcbb422d 100644 --- a/tools/split-select/RuleGenerator.cpp +++ b/tools/split-select/RuleGenerator.cpp @@ -65,12 +65,12 @@ sp<Rule> RuleGenerator::generateDensity(const Vector<int>& allDensities, size_t sp<Rule> RuleGenerator::generateAbi(const Vector<abi::Variant>& splitAbis, size_t index) { const abi::Variant thisAbi = splitAbis[index]; - const std::vector<abi::Variant>& familyVariants = abi::getVariants(abi::getFamily(thisAbi)); + const Vector<abi::Variant>& familyVariants = abi::getVariants(abi::getFamily(thisAbi)); - std::vector<abi::Variant>::const_iterator start = + Vector<abi::Variant>::const_iterator start = std::find(familyVariants.begin(), familyVariants.end(), thisAbi); - std::vector<abi::Variant>::const_iterator end = familyVariants.end(); + Vector<abi::Variant>::const_iterator end = familyVariants.end(); if (index + 1 < splitAbis.size()) { end = std::find(start, familyVariants.end(), splitAbis[index + 1]); } @@ -127,7 +127,7 @@ sp<Rule> RuleGenerator::generate(const SortedVector<SplitDescription>& group, si rootRule->subrules.add(generateDensity(allDensities, densityIndex)); } - if (group[index].abi != abi::Variant::none) { + if (group[index].abi != abi::Variant_none) { size_t abiIndex = 0; Vector<abi::Variant> allVariants; allVariants.add(group[index].abi); diff --git a/tools/split-select/RuleGenerator_test.cpp b/tools/split-select/RuleGenerator_test.cpp index 60baabe414b4..ee387be62844 100644 --- a/tools/split-select/RuleGenerator_test.cpp +++ b/tools/split-select/RuleGenerator_test.cpp @@ -25,19 +25,19 @@ using namespace android; namespace split { static void expectDensityRule(const Vector<int>& densities, int density, int greaterThan, int lessThan); -static void expectAbiRule(const Vector<abi::Variant>& abis, abi::Variant variant, - std::initializer_list<const char*> matches); +static void expectAbiRule(const Vector<abi::Variant>& abis, abi::Variant variant, const char* a); +static void expectAbiRule(const Vector<abi::Variant>& abis, abi::Variant variant, const char* a, const char* b); TEST(RuleGeneratorTest, testAbiRules) { Vector<abi::Variant> abis; - abis.add(abi::Variant::armeabi); - abis.add(abi::Variant::armeabi_v7a); - abis.add(abi::Variant::x86); + abis.add(abi::Variant_armeabi); + abis.add(abi::Variant_armeabi_v7a); + abis.add(abi::Variant_x86); std::sort(abis.begin(), abis.end()); - expectAbiRule(abis, abi::Variant::armeabi, {"armeabi"}); - expectAbiRule(abis, abi::Variant::armeabi_v7a, {"armeabi-v7a", "arm64-v8a"}); - expectAbiRule(abis, abi::Variant::x86, {"x86", "x86_64"}); + expectAbiRule(abis, abi::Variant_armeabi, "armeabi"); + expectAbiRule(abis, abi::Variant_armeabi_v7a, "armeabi-v7a", "arm64-v8a"); + expectAbiRule(abis, abi::Variant_x86, "x86", "x86_64"); } TEST(RuleGeneratorTest, testDensityRules) { @@ -126,8 +126,7 @@ static void expectDensityRule(const Vector<int>& densities, int density, int gre } } -static void expectAbiRule(const Vector<abi::Variant>& abis, abi::Variant variant, - std::initializer_list<const char*> matches) { +static void expectAbiRule(const Vector<abi::Variant>& abis, abi::Variant variant, const Vector<const char*>& matches) { const abi::Variant* iter = std::find(abis.begin(), abis.end(), variant); if (abis.end() == iter) { ADD_FAILURE() << abi::toString(variant) << " was not in the abi list."; @@ -143,7 +142,9 @@ static void expectAbiRule(const Vector<abi::Variant>& abis, abi::Variant variant EXPECT_EQ(matches.size(), rule->stringArgs.size()) << " for " << abi::toString(variant) << " rule"; - for (const char* match : matches) { + const size_t matchCount = matches.size(); + for (size_t i = 0; i < matchCount; i++) { + const char* match = matches[i]; if (rule->stringArgs.end() == std::find(rule->stringArgs.begin(), rule->stringArgs.end(), String8(match))) { ADD_FAILURE() << "Rule for abi " << abi::toString(variant) @@ -152,4 +153,17 @@ static void expectAbiRule(const Vector<abi::Variant>& abis, abi::Variant variant } } +static void expectAbiRule(const Vector<abi::Variant>& abis, abi::Variant variant, const char* a) { + Vector<const char*> matches; + matches.add(a); + expectAbiRule(abis, variant, matches); +} + +static void expectAbiRule(const Vector<abi::Variant>& abis, abi::Variant variant, const char* a, const char* b) { + Vector<const char*> matches; + matches.add(a); + matches.add(b); + expectAbiRule(abis, variant, matches); +} + } // namespace split diff --git a/tools/split-select/SplitDescription.cpp b/tools/split-select/SplitDescription.cpp index 8037ef01f909..99bc23d819fb 100644 --- a/tools/split-select/SplitDescription.cpp +++ b/tools/split-select/SplitDescription.cpp @@ -27,7 +27,7 @@ using namespace android; namespace split { SplitDescription::SplitDescription() -: abi(abi::Variant::none) { +: abi(abi::Variant_none) { } int SplitDescription::compare(const SplitDescription& rhs) const { @@ -38,11 +38,11 @@ int SplitDescription::compare(const SplitDescription& rhs) const { } bool SplitDescription::isBetterThan(const SplitDescription& o, const SplitDescription& target) const { - if (abi != abi::Variant::none || o.abi != abi::Variant::none) { + if (abi != abi::Variant_none || o.abi != abi::Variant_none) { abi::Family family = abi::getFamily(abi); abi::Family oFamily = abi::getFamily(o.abi); if (family != oFamily) { - return family != abi::Family::none; + return family != abi::Family_none; } if (int(target.abi) - int(abi) < int(target.abi) - int(o.abi)) { @@ -53,7 +53,7 @@ bool SplitDescription::isBetterThan(const SplitDescription& o, const SplitDescri } bool SplitDescription::match(const SplitDescription& o) const { - if (abi != abi::Variant::none) { + if (abi != abi::Variant_none) { abi::Family family = abi::getFamily(abi); abi::Family oFamily = abi::getFamily(o.abi); if (family != oFamily) { @@ -69,7 +69,7 @@ bool SplitDescription::match(const SplitDescription& o) const { String8 SplitDescription::toString() const { String8 extension; - if (abi != abi::Variant::none) { + if (abi != abi::Variant_none) { if (extension.isEmpty()) { extension.append(":"); } else { @@ -85,40 +85,40 @@ String8 SplitDescription::toString() const { ssize_t parseAbi(const Vector<String8>& parts, const ssize_t index, SplitDescription* outSplit) { const ssize_t N = parts.size(); - abi::Variant abi = abi::Variant::none; + abi::Variant abi = abi::Variant_none; ssize_t endIndex = index; if (parts[endIndex] == "arm64") { endIndex++; if (endIndex < N) { if (parts[endIndex] == "v8a") { endIndex++; - abi = abi::Variant::arm64_v8a; + abi = abi::Variant_arm64_v8a; } } } else if (parts[endIndex] == "armeabi") { endIndex++; - abi = abi::Variant::armeabi; + abi = abi::Variant_armeabi; if (endIndex < N) { if (parts[endIndex] == "v7a") { endIndex++; - abi = abi::Variant::armeabi_v7a; + abi = abi::Variant_armeabi_v7a; } } } else if (parts[endIndex] == "x86") { endIndex++; - abi = abi::Variant::x86; + abi = abi::Variant_x86; } else if (parts[endIndex] == "x86_64") { endIndex++; - abi = abi::Variant::x86_64; + abi = abi::Variant_x86_64; } else if (parts[endIndex] == "mips") { endIndex++; - abi = abi::Variant::mips; + abi = abi::Variant_mips; } else if (parts[endIndex] == "mips64") { endIndex++; - abi = abi::Variant::mips64; + abi = abi::Variant_mips64; } - if (abi == abi::Variant::none && endIndex != index) { + if (abi == abi::Variant_none && endIndex != index) { return -1; } diff --git a/tools/split-select/SplitDescription.h b/tools/split-select/SplitDescription.h index 5fcafc86f9c4..b13c9ee021a6 100644 --- a/tools/split-select/SplitDescription.h +++ b/tools/split-select/SplitDescription.h @@ -27,7 +27,6 @@ namespace split { struct SplitDescription { SplitDescription(); - SplitDescription(const SplitDescription&) = default; ConfigDescription config; abi::Variant abi; |