diff options
478 files changed, 15421 insertions, 3789 deletions
diff --git a/Android.mk b/Android.mk index 43791c7ac6ed..1b893f17ce30 100644 --- a/Android.mk +++ b/Android.mk @@ -182,6 +182,9 @@ LOCAL_SRC_FILES += \ core/java/com/android/internal/backup/IBackupTransport.aidl \ core/java/com/android/internal/policy/IFaceLockCallback.aidl \ core/java/com/android/internal/policy/IFaceLockInterface.aidl \ + core/java/com/android/internal/policy/IKeyguardShowCallback.aidl \ + core/java/com/android/internal/policy/IKeyguardExitCallback.aidl \ + core/java/com/android/internal/policy/IKeyguardService.aidl \ core/java/com/android/internal/os/IDropBoxManagerService.aidl \ core/java/com/android/internal/os/IResultReceiver.aidl \ core/java/com/android/internal/statusbar/IStatusBar.aidl \ diff --git a/api/current.txt b/api/current.txt index 2e1dcf64aa18..caa06c74b50c 100644 --- a/api/current.txt +++ b/api/current.txt @@ -620,6 +620,7 @@ package android { field public static final int keyboardLayout = 16843691; // 0x10103ab field public static final int keyboardMode = 16843341; // 0x101024d field public static final int keycode = 16842949; // 0x10100c5 + field public static final int keyset = 16843727; // 0x10103cf field public static final int killAfterRestore = 16843420; // 0x101029c field public static final int label = 16842753; // 0x1010001 field public static final int labelFor = 16843718; // 0x10103c6 @@ -1174,7 +1175,7 @@ package android { field public static final int windowMinWidthMinor = 16843607; // 0x1010357 field public static final int windowNoDisplay = 16843294; // 0x101021e field public static final int windowNoTitle = 16842838; // 0x1010056 - field public static final int windowOverscan = 16843727; // 0x10103cf + field public static final int windowOverscan = 16843728; // 0x10103d0 field public static final int windowShowAnimation = 16842934; // 0x10100b6 field public static final int windowShowWallpaper = 16843410; // 0x1010292 field public static final int windowSoftInputMode = 16843307; // 0x101022b @@ -11070,7 +11071,7 @@ package android.media { method public static float getMaxVolume(); method public static int getMinBufferSize(int, int, int); method public static float getMinVolume(); - method protected int getNativeFrameCount(); + method protected deprecated int getNativeFrameCount(); method public static int getNativeOutputSampleRate(int); method public int getNotificationMarkerPosition(); method public int getPlayState(); @@ -11092,7 +11093,7 @@ package android.media { method public void setPlaybackPositionUpdateListener(android.media.AudioTrack.OnPlaybackPositionUpdateListener, android.os.Handler); method public int setPlaybackRate(int); method public int setPositionNotificationPeriod(int); - method protected void setState(int); + method protected deprecated void setState(int); method public int setStereoVolume(float, float); method public void stop() throws java.lang.IllegalStateException; method public int write(byte[], int, int); @@ -15851,6 +15852,7 @@ package android.os { field public static final int JELLY_BEAN = 16; // 0x10 field public static final int JELLY_BEAN_MR1 = 17; // 0x11 field public static final int JELLY_BEAN_MR2 = 10000; // 0x2710 + field public static final int KEY_LIME_PIE = 10000; // 0x2710 } public final class Bundle implements java.lang.Cloneable android.os.Parcelable { @@ -28646,6 +28648,7 @@ package android.widget { method public int getAlignmentMode(); method public int getColumnCount(); method public int getOrientation(); + method public android.util.Printer getPrinter(); method public int getRowCount(); method public boolean getUseDefaultMargins(); method public boolean isColumnOrderPreserved(); @@ -28655,6 +28658,7 @@ package android.widget { method public void setColumnCount(int); method public void setColumnOrderPreserved(boolean); method public void setOrientation(int); + method public void setPrinter(android.util.Printer); method public void setRowCount(int); method public void setRowOrderPreserved(boolean); method public void setUseDefaultMargins(boolean); diff --git a/core/java/android/appwidget/AppWidgetHost.java b/core/java/android/appwidget/AppWidgetHost.java index a470e704f0c4..37f20c9b4e97 100644 --- a/core/java/android/appwidget/AppWidgetHost.java +++ b/core/java/android/appwidget/AppWidgetHost.java @@ -198,7 +198,6 @@ public class AppWidgetHost { * @return a appWidgetId */ public int allocateAppWidgetId() { - try { if (mPackageName == null) { mPackageName = mContext.getPackageName(); @@ -211,20 +210,17 @@ public class AppWidgetHost { } /** - * Get a appWidgetId for a host in the calling process. + * Get a appWidgetId for a host in the given package. * * @return a appWidgetId * @hide */ - public static int allocateAppWidgetIdForSystem(int hostId, int userId) { + public static int allocateAppWidgetIdForPackage(int hostId, int userId, String packageName) { checkCallerIsSystem(); try { if (sService == null) { bindService(); } - Context systemContext = - (Context) ActivityThread.currentActivityThread().getSystemContext(); - String packageName = systemContext.getPackageName(); return sService.allocateAppWidgetId(packageName, hostId, userId); } catch (RemoteException e) { throw new RuntimeException("system server dead?", e); diff --git a/core/java/android/content/pm/KeySet.java b/core/java/android/content/pm/KeySet.java new file mode 100644 index 000000000000..0ef09a432528 --- /dev/null +++ b/core/java/android/content/pm/KeySet.java @@ -0,0 +1,34 @@ +/* + * Copyright (C) 2012 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.content.pm; + +import android.os.Binder; + +/** @hide */ +public class KeySet { + + private Binder token; + + /** @hide */ + public KeySet(Binder token) { + this.token = token; + } + + Binder getToken() { + return token; + } +}
\ No newline at end of file diff --git a/core/java/android/content/pm/PackageParser.java b/core/java/android/content/pm/PackageParser.java index e1887bc64452..383e60335b68 100644 --- a/core/java/android/content/pm/PackageParser.java +++ b/core/java/android/content/pm/PackageParser.java @@ -46,14 +46,20 @@ import java.security.NoSuchAlgorithmException; import java.security.PublicKey; import java.security.cert.Certificate; import java.security.cert.CertificateEncodingException; +import java.security.cert.CertificateFactory; +import java.security.cert.CertPath; +import java.security.cert.X509Certificate; import java.security.spec.EncodedKeySpec; import java.security.spec.InvalidKeySpecException; import java.security.spec.X509EncodedKeySpec; import java.util.ArrayList; import java.util.Enumeration; +import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.List; +import java.util.Map; +import java.util.Set; import java.util.jar.Attributes; import java.util.jar.JarEntry; import java.util.jar.JarFile; @@ -689,6 +695,13 @@ public class PackageParser { mParseError = PackageManager.INSTALL_PARSE_FAILED_NO_CERTIFICATES; return false; } + + // Add the signing KeySet to the system + pkg.mSigningKeys = new HashSet<PublicKey>(); + for (int i=0; i < certs.length; i++) { + pkg.mSigningKeys.add(certs[i].getPublicKey()); + } + } catch (CertificateEncodingException e) { Slog.w(TAG, "Exception reading " + mArchiveSourcePath, e); mParseError = PackageManager.INSTALL_PARSE_FAILED_CERTIFICATE_ENCODING; @@ -1002,6 +1015,10 @@ public class PackageParser { if (!parseApplication(pkg, res, parser, attrs, flags, outError)) { return null; } + } else if (tagName.equals("keys")) { + if (!parseKeys(pkg, res, parser, attrs, outError)) { + return null; + } } else if (tagName.equals("permission-group")) { if (parsePermissionGroup(pkg, flags, res, parser, attrs, outError) == null) { return null; @@ -1464,7 +1481,71 @@ public class PackageParser { } return buildCompoundName(pkg, procSeq, "taskAffinity", outError); } - + + private boolean parseKeys(Package owner, Resources res, + XmlPullParser parser, AttributeSet attrs, String[] outError) + throws XmlPullParserException, IOException { + // we've encountered the 'keys' tag + // all the keys and keysets that we want must be defined here + // so we're going to iterate over the parser and pull out the things we want + int outerDepth = parser.getDepth(); + + int type; + PublicKey currentKey = null; + Map<PublicKey, Set<String>> definedKeySets = new HashMap<PublicKey, Set<String>>(); + while ((type = parser.next()) != XmlPullParser.END_DOCUMENT + && (type != XmlPullParser.END_TAG || parser.getDepth() > outerDepth)) { + if (type == XmlPullParser.END_TAG) { + continue; + } + String tagname = parser.getName(); + if (tagname.equals("publicKey")) { + final TypedArray sa = res.obtainAttributes(attrs, + com.android.internal.R.styleable.PublicKey); + final String encodedKey = sa.getNonResourceString( + com.android.internal.R.styleable.PublicKey_value); + currentKey = parsePublicKey(encodedKey); + definedKeySets.put(currentKey, new HashSet<String>()); + sa.recycle(); + } else if (tagname.equals("keyset")) { + final TypedArray sa = res.obtainAttributes(attrs, + com.android.internal.R.styleable.KeySet); + final String name = sa.getNonResourceString( + com.android.internal.R.styleable.KeySet_name); + definedKeySets.get(currentKey).add(name); + sa.recycle(); + } else if (RIGID_PARSER) { + Slog.w(TAG, "Bad element under <keys>: " + parser.getName() + + " at " + mArchiveSourcePath + " " + + parser.getPositionDescription()); + return false; + } else { + Slog.w(TAG, "Unknown element under <keys>: " + parser.getName() + + " at " + mArchiveSourcePath + " " + + parser.getPositionDescription()); + XmlUtils.skipCurrentTag(parser); + continue; + } + } + + owner.mKeySetMapping = new HashMap<String, Set<PublicKey>>(); + for (Map.Entry<PublicKey, Set<String>> e : definedKeySets.entrySet()) { + PublicKey key = e.getKey(); + Set<String> keySetNames = e.getValue(); + for (String alias : keySetNames) { + if (owner.mKeySetMapping.containsKey(alias)) { + owner.mKeySetMapping.get(alias).add(key); + } else { + Set<PublicKey> keys = new HashSet<PublicKey>(); + keys.add(key); + owner.mKeySetMapping.put(alias, keys); + } + } + } + + return true; + } + private PermissionGroup parsePermissionGroup(Package owner, int flags, Resources res, XmlPullParser parser, AttributeSet attrs, String[] outError) throws XmlPullParserException, IOException { @@ -2988,20 +3069,28 @@ public class PackageParser { Slog.i(TAG, "verifier " + packageName + " public key was null; skipping"); } + PublicKey publicKey = parsePublicKey(encodedPublicKey); + if (publicKey != null) { + return new VerifierInfo(packageName, publicKey); + } + + return null; + } + + public static final PublicKey parsePublicKey(String encodedPublicKey) { EncodedKeySpec keySpec; try { final byte[] encoded = Base64.decode(encodedPublicKey, Base64.DEFAULT); keySpec = new X509EncodedKeySpec(encoded); } catch (IllegalArgumentException e) { - Slog.i(TAG, "Could not parse verifier " + packageName + " public key; invalid Base64"); + Slog.i(TAG, "Could not parse verifier public key; invalid Base64"); return null; } /* First try the key as an RSA key. */ try { final KeyFactory keyFactory = KeyFactory.getInstance("RSA"); - final PublicKey publicKey = keyFactory.generatePublic(keySpec); - return new VerifierInfo(packageName, publicKey); + return keyFactory.generatePublic(keySpec); } catch (NoSuchAlgorithmException e) { Log.wtf(TAG, "Could not parse public key because RSA isn't included in build"); return null; @@ -3012,8 +3101,7 @@ public class PackageParser { /* Now try it as a DSA key. */ try { final KeyFactory keyFactory = KeyFactory.getInstance("DSA"); - final PublicKey publicKey = keyFactory.generatePublic(keySpec); - return new VerifierInfo(packageName, publicKey); + return keyFactory.generatePublic(keySpec); } catch (NoSuchAlgorithmException e) { Log.wtf(TAG, "Could not parse public key because DSA isn't included in build"); return null; @@ -3254,6 +3342,12 @@ public class PackageParser { */ public ManifestDigest manifestDigest; + /** + * Data used to feed the KeySetManager + */ + public Set<PublicKey> mSigningKeys; + public Map<String, Set<PublicKey>> mKeySetMapping; + public Package(String _name) { packageName = _name; applicationInfo.packageName = _name; diff --git a/core/java/android/os/Build.java b/core/java/android/os/Build.java index 97ac8626113b..bbad76a53b32 100644 --- a/core/java/android/os/Build.java +++ b/core/java/android/os/Build.java @@ -436,6 +436,11 @@ public class Build { * Android 4.X: Jelly Bean MR2, the revenge of the beans. */ public static final int JELLY_BEAN_MR2 = CUR_DEVELOPMENT; + + /** + * Android X.X: Key Lime Pie, another tasty treat. + */ + public static final int KEY_LIME_PIE = CUR_DEVELOPMENT; } /** The type of build, like "user" or "eng". */ diff --git a/core/java/android/view/IWindowManager.aidl b/core/java/android/view/IWindowManager.aidl index f0c6241644d8..e4ecb5c8063b 100644 --- a/core/java/android/view/IWindowManager.aidl +++ b/core/java/android/view/IWindowManager.aidl @@ -99,9 +99,6 @@ interface IWindowManager void startAppFreezingScreen(IBinder token, int configChanges); void stopAppFreezingScreen(IBinder token, boolean force); void removeAppToken(IBinder token); - void moveAppToken(int index, IBinder token); - void moveAppTokensToTop(in List<IBinder> tokens); - void moveAppTokensToBottom(in List<IBinder> tokens); // Re-evaluate the current orientation from the caller's state. // If there is a change, the new Configuration is returned and the diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java index 7e0d1157a506..1790b350eef0 100644 --- a/core/java/android/view/View.java +++ b/core/java/android/view/View.java @@ -2341,7 +2341,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback, * allows it to avoid artifacts when switching in and out of that mode, at * the expense that some of its user interface may be covered by screen * decorations when they are shown. You can perform layout of your inner - * UI elements to account for the navagation system UI through the + * UI elements to account for the navigation system UI through the * {@link #fitSystemWindows(Rect)} method. */ public static final int SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION = 0x00000200; @@ -6068,8 +6068,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback, mTransientStateCount = 0; Log.e(VIEW_LOG_TAG, "hasTransientState decremented below 0: " + "unmatched pair of setHasTransientState calls"); - } - if ((hasTransientState && mTransientStateCount == 1) || + } else if ((hasTransientState && mTransientStateCount == 1) || (!hasTransientState && mTransientStateCount == 0)) { // update flag if we've just incremented up from 0 or decremented down to 0 mPrivateFlags2 = (mPrivateFlags2 & ~PFLAG2_HAS_TRANSIENT_STATE) | @@ -12004,6 +12003,9 @@ public class View implements Drawable.Callback, KeyEvent.Callback, resetAccessibilityStateChanged(); } + void invalidateInheritedLayoutMode(int layoutModeOfRoot) { + } + /** * @return The number of times this view has been attached to a window */ diff --git a/core/java/android/view/ViewGroup.java b/core/java/android/view/ViewGroup.java index 442dfdbee73e..5f05f4927d07 100644 --- a/core/java/android/view/ViewGroup.java +++ b/core/java/android/view/ViewGroup.java @@ -202,7 +202,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager /** * Either {@link #LAYOUT_MODE_CLIP_BOUNDS} or {@link #LAYOUT_MODE_OPTICAL_BOUNDS}. */ - private int mLayoutMode = DEFAULT_LAYOUT_MODE; + private int mLayoutMode = LAYOUT_MODE_UNDEFINED; /** * NOTE: If you change the flags below make sure to reflect the changes @@ -343,6 +343,14 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager private static final int FLAG_PREVENT_DISPATCH_ATTACHED_TO_WINDOW = 0x400000; /** + * When true, indicates that a layoutMode has been explicitly set, either with + * an explicit call to {@link #setLayoutMode(int)} in code or from an XML resource. + * This distinguishes the situation in which a layout mode was inherited from + * one of the ViewGroup's ancestors and cached locally. + */ + private static final int FLAG_LAYOUT_MODE_WAS_EXPLICITLY_SET = 0x800000; + + /** * Indicates which types of drawing caches are to be kept in memory. * This field should be made private, so it is hidden from the SDK. * {@hide} @@ -371,6 +379,8 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager // Layout Modes + private static final int LAYOUT_MODE_UNDEFINED = -1; + /** * This constant is a {@link #setLayoutMode(int) layoutMode}. * Clip bounds are the raw values of {@link #getLeft() left}, {@link #getTop() top}, @@ -387,7 +397,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager public static final int LAYOUT_MODE_OPTICAL_BOUNDS = 1; /** @hide */ - public static int DEFAULT_LAYOUT_MODE = LAYOUT_MODE_CLIP_BOUNDS; + public static int LAYOUT_MODE_DEFAULT = LAYOUT_MODE_CLIP_BOUNDS; /** * We clip to padding when FLAG_CLIP_TO_PADDING and FLAG_PADDING_NOT_NULL @@ -523,7 +533,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager } break; case R.styleable.ViewGroup_layoutMode: - setLayoutMode(a.getInt(attr, DEFAULT_LAYOUT_MODE)); + setLayoutMode(a.getInt(attr, LAYOUT_MODE_UNDEFINED)); break; } } @@ -3392,6 +3402,24 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager } } + private void clearCachedLayoutMode() { + if (!getBooleanFlag(FLAG_LAYOUT_MODE_WAS_EXPLICITLY_SET)) { + mLayoutMode = LAYOUT_MODE_UNDEFINED; + } + } + + @Override + protected void onAttachedToWindow() { + super.onAttachedToWindow(); + clearCachedLayoutMode(); + } + + @Override + protected void onDetachedFromWindow() { + super.onDetachedFromWindow(); + clearCachedLayoutMode(); + } + /** * Adds a view during layout. This is useful if in your onLayout() method, * you need to add more views (as does the list view for example). @@ -4684,6 +4712,10 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager setBooleanFlag(FLAG_USE_CHILD_DRAWING_ORDER, enabled); } + private boolean getBooleanFlag(int flag) { + return (mGroupFlags & flag) == flag; + } + private void setBooleanFlag(int flag, boolean value) { if (value) { mGroupFlags |= flag; @@ -4727,24 +4759,63 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager mPersistentDrawingCache = drawingCacheToKeep & PERSISTENT_ALL_CACHES; } + private void setLayoutMode(int layoutMode, boolean explicitly) { + mLayoutMode = layoutMode; + setBooleanFlag(FLAG_LAYOUT_MODE_WAS_EXPLICITLY_SET, explicitly); + } + /** - * Returns the basis of alignment during layout operations on this view group: + * Recursively traverse the view hierarchy, resetting the layoutMode of any + * descendants that had inherited a different layoutMode from a previous parent. + * Recursion terminates when a descendant's mode is: + * <ul> + * <li>Undefined</li> + * <li>The same as the root node's</li> + * <li>A mode that had been explicitly set</li> + * <ul/> + * The first two clauses are optimizations. + * @param layoutModeOfRoot + */ + @Override + void invalidateInheritedLayoutMode(int layoutModeOfRoot) { + if (mLayoutMode == LAYOUT_MODE_UNDEFINED || + mLayoutMode == layoutModeOfRoot || + getBooleanFlag(FLAG_LAYOUT_MODE_WAS_EXPLICITLY_SET)) { + return; + } + setLayoutMode(LAYOUT_MODE_UNDEFINED, false); + + // apply recursively + for (int i = 0, N = getChildCount(); i < N; i++) { + getChildAt(i).invalidateInheritedLayoutMode(layoutModeOfRoot); + } + } + + /** + * Returns the basis of alignment during layout operations on this ViewGroup: * either {@link #LAYOUT_MODE_CLIP_BOUNDS} or {@link #LAYOUT_MODE_OPTICAL_BOUNDS}. + * <p> + * If no layoutMode was explicitly set, either programmatically or in an XML resource, + * the method returns the layoutMode of the view's parent ViewGroup if such a parent exists, + * otherwise the method returns a default value of {@link #LAYOUT_MODE_CLIP_BOUNDS}. * * @return the layout mode to use during layout operations * * @see #setLayoutMode(int) */ public int getLayoutMode() { + if (mLayoutMode == LAYOUT_MODE_UNDEFINED) { + int inheritedLayoutMode = (mParent instanceof ViewGroup) ? + ((ViewGroup) mParent).getLayoutMode() : LAYOUT_MODE_DEFAULT; + setLayoutMode(inheritedLayoutMode, false); + } return mLayoutMode; } /** - * Sets the basis of alignment during the layout of this view group. + * Sets the basis of alignment during the layout of this ViewGroup. * Valid values are either {@link #LAYOUT_MODE_CLIP_BOUNDS} or * {@link #LAYOUT_MODE_OPTICAL_BOUNDS}. - * <p> - * The default is {@link #LAYOUT_MODE_CLIP_BOUNDS}. * * @param layoutMode the layout mode to use during layout operations * @@ -4752,7 +4823,8 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager */ public void setLayoutMode(int layoutMode) { if (mLayoutMode != layoutMode) { - mLayoutMode = layoutMode; + invalidateInheritedLayoutMode(layoutMode); + setLayoutMode(layoutMode, layoutMode != LAYOUT_MODE_UNDEFINED); requestLayout(); } } diff --git a/core/java/android/view/WindowManager.java b/core/java/android/view/WindowManager.java index 792188bb501a..4cc9adb268b0 100644 --- a/core/java/android/view/WindowManager.java +++ b/core/java/android/view/WindowManager.java @@ -527,6 +527,14 @@ public interface WindowManager extends ViewManager { */ public static final int TYPE_RECENTS_OVERLAY = FIRST_SYSTEM_WINDOW+28; + + /** + * Window type: keyguard scrim window. Shows if keyguard needs to be restarted. + * In multiuser systems shows on all users' windows. + * @hide + */ + public static final int TYPE_KEYGUARD_SCRIM = FIRST_SYSTEM_WINDOW+29; + /** * End of types of system windows. */ diff --git a/core/java/android/view/accessibility/AccessibilityManager.java b/core/java/android/view/accessibility/AccessibilityManager.java index 732699b0b0f4..04ce7e2665b8 100644 --- a/core/java/android/view/accessibility/AccessibilityManager.java +++ b/core/java/android/view/accessibility/AccessibilityManager.java @@ -16,14 +16,17 @@ package android.view.accessibility; +import android.Manifest; import android.accessibilityservice.AccessibilityServiceInfo; import android.content.Context; +import android.content.pm.PackageManager; import android.content.pm.ServiceInfo; import android.os.Binder; import android.os.Handler; import android.os.IBinder; import android.os.Looper; import android.os.Message; +import android.os.Process; import android.os.RemoteException; import android.os.ServiceManager; import android.os.SystemClock; @@ -132,29 +135,6 @@ public final class AccessibilityManager { } /** - * Creates the singleton AccessibilityManager to be shared across users. This - * has to be called before the local AccessibilityManager is created to ensure - * it registers itself in the system correctly. - * <p> - * Note: Calling this method requires INTERACT_ACROSS_USERS_FULL or - * INTERACT_ACROSS_USERS permission. - * </p> - * @param context Context in which this manager operates. - * @throws IllegalStateException if not called before the local - * AccessibilityManager is instantiated. - * - * @hide - */ - public static void createAsSharedAcrossUsers(Context context) { - synchronized (sInstanceSync) { - if (sInstance != null) { - throw new IllegalStateException("AccessibilityManager already created."); - } - createSingletonInstance(context, UserHandle.USER_CURRENT); - } - } - - /** * Get an AccessibilityManager instance (create one if necessary). * * @param context Context in which this manager operates. @@ -164,25 +144,27 @@ public final class AccessibilityManager { public static AccessibilityManager getInstance(Context context) { synchronized (sInstanceSync) { if (sInstance == null) { - createSingletonInstance(context, UserHandle.myUserId()); + final int userId; + if (Binder.getCallingUid() == Process.SYSTEM_UID + || context.checkCallingOrSelfPermission( + Manifest.permission.INTERACT_ACROSS_USERS) + == PackageManager.PERMISSION_GRANTED + || context.checkCallingOrSelfPermission( + Manifest.permission.INTERACT_ACROSS_USERS_FULL) + == PackageManager.PERMISSION_GRANTED) { + userId = UserHandle.USER_CURRENT; + } else { + userId = UserHandle.myUserId(); + } + IBinder iBinder = ServiceManager.getService(Context.ACCESSIBILITY_SERVICE); + IAccessibilityManager service = IAccessibilityManager.Stub.asInterface(iBinder); + sInstance = new AccessibilityManager(context, service, userId); } } return sInstance; } /** - * Creates the singleton instance. - * - * @param context Context in which this manager operates. - * @param userId The user id under which to operate. - */ - private static void createSingletonInstance(Context context, int userId) { - IBinder iBinder = ServiceManager.getService(Context.ACCESSIBILITY_SERVICE); - IAccessibilityManager service = IAccessibilityManager.Stub.asInterface(iBinder); - sInstance = new AccessibilityManager(context, service, userId); - } - - /** * Create an instance. * * @param context A {@link Context}. diff --git a/core/java/android/widget/AbsListView.java b/core/java/android/widget/AbsListView.java index 396fd6821cde..d659110b1266 100644 --- a/core/java/android/widget/AbsListView.java +++ b/core/java/android/widget/AbsListView.java @@ -6167,6 +6167,7 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te private ArrayList<View> mSkippedScrap; private SparseArray<View> mTransientStateViews; + private LongSparseArray<View> mTransientStateViewsById; public void setViewTypeCount(int viewTypeCount) { if (viewTypeCount < 1) { @@ -6205,6 +6206,12 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te mTransientStateViews.valueAt(i).forceLayout(); } } + if (mTransientStateViewsById != null) { + final int count = mTransientStateViewsById.size(); + for (int i = 0; i < count; i++) { + mTransientStateViewsById.valueAt(i).forceLayout(); + } + } } public boolean shouldRecycleViewType(int viewType) { @@ -6234,6 +6241,9 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te if (mTransientStateViews != null) { mTransientStateViews.clear(); } + if (mTransientStateViewsById != null) { + mTransientStateViewsById.clear(); + } } /** @@ -6281,16 +6291,21 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te } View getTransientStateView(int position) { - if (mTransientStateViews == null) { - return null; + if (mAdapter != null && mAdapterHasStableIds && mTransientStateViewsById != null) { + long id = mAdapter.getItemId(position); + View result = mTransientStateViewsById.get(id); + mTransientStateViewsById.remove(id); + return result; } - final int index = mTransientStateViews.indexOfKey(position); - if (index < 0) { - return null; + if (mTransientStateViews != null) { + final int index = mTransientStateViews.indexOfKey(position); + if (index >= 0) { + View result = mTransientStateViews.valueAt(index); + mTransientStateViews.removeAt(index); + return result; + } } - final View result = mTransientStateViews.valueAt(index); - mTransientStateViews.removeAt(index); - return result; + return null; } /** @@ -6300,6 +6315,9 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te if (mTransientStateViews != null) { mTransientStateViews.clear(); } + if (mTransientStateViewsById != null) { + mTransientStateViewsById.clear(); + } } /** @@ -6342,11 +6360,18 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te mSkippedScrap.add(scrap); } if (scrapHasTransientState) { - if (mTransientStateViews == null) { - mTransientStateViews = new SparseArray<View>(); - } scrap.dispatchStartTemporaryDetach(); - mTransientStateViews.put(position, scrap); + if (mAdapter != null && mAdapterHasStableIds) { + if (mTransientStateViewsById == null) { + mTransientStateViewsById = new LongSparseArray<View>(); + } + mTransientStateViewsById.put(lp.itemId, scrap); + } else { + if (mTransientStateViews == null) { + mTransientStateViews = new SparseArray<View>(); + } + mTransientStateViews.put(position, scrap); + } } return; } @@ -6405,10 +6430,18 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te removeDetachedView(victim, false); } if (scrapHasTransientState) { - if (mTransientStateViews == null) { - mTransientStateViews = new SparseArray<View>(); + if (mAdapter != null && mAdapterHasStableIds) { + if (mTransientStateViewsById == null) { + mTransientStateViewsById = new LongSparseArray<View>(); + } + long id = mAdapter.getItemId(mFirstActivePosition + i); + mTransientStateViewsById.put(id, victim); + } else { + if (mTransientStateViews == null) { + mTransientStateViews = new SparseArray<View>(); + } + mTransientStateViews.put(mFirstActivePosition + i, victim); } - mTransientStateViews.put(mFirstActivePosition + i, victim); } continue; } @@ -6457,6 +6490,15 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te } } } + if (mTransientStateViewsById != null) { + for (int i = 0; i < mTransientStateViewsById.size(); i++) { + final View v = mTransientStateViewsById.valueAt(i); + if (!v.hasTransientState()) { + mTransientStateViewsById.removeAt(i); + i--; + } + } + } } /** diff --git a/core/java/android/widget/GridLayout.java b/core/java/android/widget/GridLayout.java index 85ed8dbd4927..206beb35a5ff 100644 --- a/core/java/android/widget/GridLayout.java +++ b/core/java/android/widget/GridLayout.java @@ -24,7 +24,9 @@ import android.graphics.Insets; import android.graphics.Paint; import android.util.AttributeSet; import android.util.Log; +import android.util.LogPrinter; import android.util.Pair; +import android.util.Printer; import android.view.Gravity; import android.view.View; import android.view.ViewGroup; @@ -124,6 +126,17 @@ import static java.lang.Math.min; * GridLayout's algorithms favour rows and columns that are closer to its <em>right</em> * and <em>bottom</em> edges. * + * <h4>Interpretation of GONE</h4> + * + * For layout purposes, GridLayout treats views whose visibility status is + * {@link View#GONE GONE}, as having zero width and height. This is subtly different from + * the policy of ignoring views that are marked as GONE outright. If, for example, a gone-marked + * view was alone in a column, that column would itself collapse to zero width if and only if + * no gravity was defined on the view. If gravity was defined, then the gone-marked + * view has no effect on the layout and the container should be laid out as if the view + * had never been added to it. + * These statements apply equally to rows as well as columns, and to groups of rows or columns. + * * <h5>Limitations</h5> * * GridLayout does not provide support for the principle of <em>weight</em>, as defined in @@ -208,10 +221,15 @@ public class GridLayout extends ViewGroup { // Misc constants - static final String TAG = GridLayout.class.getName(); static final int MAX_SIZE = 100000; static final int DEFAULT_CONTAINER_MARGIN = 0; static final int UNINITIALIZED_HASH = 0; + static final Printer LOG_PRINTER = new LogPrinter(Log.DEBUG, GridLayout.class.getName()); + static final Printer NO_PRINTER = new Printer() { + @Override + public void println(String x) { + } + }; // Defaults @@ -240,6 +258,7 @@ public class GridLayout extends ViewGroup { int alignmentMode = DEFAULT_ALIGNMENT_MODE; int defaultGap; int lastLayoutParamsHashCode = UNINITIALIZED_HASH; + Printer printer = LOG_PRINTER; // Constructors @@ -556,6 +575,29 @@ public class GridLayout extends ViewGroup { requestLayout(); } + /** + * Return the printer that will log diagnostics from this layout. + * + * @see #setPrinter(android.util.Printer) + * + * @return the printer associated with this view + */ + public Printer getPrinter() { + return printer; + } + + /** + * Set the printer that will log diagnostics from this layout. + * The default value is created by {@link android.util.LogPrinter}. + * + * @param printer the printer associated with this layout + * + * @see #getPrinter() + */ + public void setPrinter(Printer printer) { + this.printer = (printer == null) ? NO_PRINTER : printer; + } + // Static utility methods static int max2(int[] a, int valueIfEmpty) { @@ -915,7 +957,7 @@ public class GridLayout extends ViewGroup { protected void onChildVisibilityChanged(View child, int oldVisibility, int newVisibility) { super.onChildVisibilityChanged(child, oldVisibility, newVisibility); if (oldVisibility == GONE || newVisibility == GONE) { - invalidateStructure(); + invalidateStructure(); } } @@ -935,8 +977,8 @@ public class GridLayout extends ViewGroup { validateLayoutParams(); lastLayoutParamsHashCode = computeLayoutParamsHashCode(); } else if (lastLayoutParamsHashCode != computeLayoutParamsHashCode()) { - Log.w(TAG, "The fields of some layout parameters were modified in between layout " + - "operations. Check the javadoc for GridLayout.LayoutParams#rowSpec."); + printer.println("The fields of some layout parameters were modified in between " + + "layout operations. Check the javadoc for GridLayout.LayoutParams#rowSpec."); invalidateStructure(); consistencyCheck(); } @@ -1235,6 +1277,7 @@ public class GridLayout extends ViewGroup { Assoc<Spec, Bounds> assoc = Assoc.of(Spec.class, Bounds.class); for (int i = 0, N = getChildCount(); i < N; i++) { View c = getChildAt(i); + // we must include views that are GONE here, see introductory javadoc LayoutParams lp = getLayoutParams(c); Spec spec = horizontal ? lp.columnSpec : lp.rowSpec; Bounds bounds = getAlignment(spec.alignment, horizontal).getBounds(); @@ -1250,6 +1293,7 @@ public class GridLayout extends ViewGroup { } for (int i = 0, N = getChildCount(); i < N; i++) { View c = getChildAt(i); + // we must include views that are GONE here, see introductory javadoc LayoutParams lp = getLayoutParams(c); Spec spec = horizontal ? lp.columnSpec : lp.rowSpec; groupBounds.getValue(i).include(GridLayout.this, c, spec, this); @@ -1516,8 +1560,8 @@ public class GridLayout extends ViewGroup { removed.add(arc); } } - Log.d(TAG, axisName + " constraints: " + arcsToString(culprits) + " are inconsistent; " - + "permanently removing: " + arcsToString(removed) + ". "); + printer.println(axisName + " constraints: " + arcsToString(culprits) + + " are inconsistent; permanently removing: " + arcsToString(removed) + ". "); } /* @@ -2655,6 +2699,9 @@ public class GridLayout extends ViewGroup { @Override public int getAlignmentValue(View view, int viewSize, int mode) { + if (view.getVisibility() == GONE) { + return 0; + } int baseline = view.getBaseline(); return baseline == -1 ? UNDEFINED : baseline; } diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java index adacef27515d..e70a6bae5b74 100644 --- a/core/java/android/widget/TextView.java +++ b/core/java/android/widget/TextView.java @@ -282,6 +282,13 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener private boolean mPreDrawRegistered; + // A flag to prevent repeated movements from escaping the enclosing text view. The idea here is + // that if a user is holding down a movement key to traverse text, we shouldn't also traverse + // the view hierarchy. On the other hand, if the user is using the movement key to traverse views + // (i.e. the first movement was to traverse out of this view, or this view was traversed into by + // the user holding the movement key down) then we shouldn't prevent the focus from changing. + private boolean mPreventDefaultMovement; + private TextUtils.TruncateAt mEllipsize; static class Drawables { @@ -5224,7 +5231,6 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener public boolean onKeyDown(int keyCode, KeyEvent event) { int which = doKeyDown(keyCode, event, null); if (which == 0) { - // Go through default dispatching. return super.onKeyDown(keyCode, event); } @@ -5322,6 +5328,15 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener return 0; } + // If this is the initial keydown, we don't want to prevent a movement away from this view. + // While this shouldn't be necessary because any time we're preventing default movement we + // should be restricting the focus to remain within this view, thus we'll also receive + // the key up event, occasionally key up events will get dropped and we don't want to + // prevent the user from traversing out of this on the next key down. + if (event.getRepeatCount() == 0 && !KeyEvent.isModifierKey(keyCode)) { + mPreventDefaultMovement = false; + } + switch (keyCode) { case KeyEvent.KEYCODE_ENTER: if (event.hasNoModifiers()) { @@ -5430,12 +5445,16 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener } } if (doDown) { - if (mMovement.onKeyDown(this, (Spannable)mText, keyCode, event)) + if (mMovement.onKeyDown(this, (Spannable)mText, keyCode, event)) { + if (event.getRepeatCount() == 0 && !KeyEvent.isModifierKey(keyCode)) { + mPreventDefaultMovement = true; + } return 2; + } } } - return 0; + return mPreventDefaultMovement && !KeyEvent.isModifierKey(keyCode) ? -1 : 0; } /** @@ -5468,6 +5487,10 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener return super.onKeyUp(keyCode, event); } + if (!KeyEvent.isModifierKey(keyCode)) { + mPreventDefaultMovement = false; + } + switch (keyCode) { case KeyEvent.KEYCODE_DPAD_CENTER: if (event.hasNoModifiers()) { diff --git a/core/java/com/android/internal/policy/IKeyguardExitCallback.aidl b/core/java/com/android/internal/policy/IKeyguardExitCallback.aidl new file mode 100644 index 000000000000..37027122f54b --- /dev/null +++ b/core/java/com/android/internal/policy/IKeyguardExitCallback.aidl @@ -0,0 +1,20 @@ +/* + * Copyright (C) 2013 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.android.internal.policy; + +oneway interface IKeyguardExitCallback { + void onKeyguardExitResult(boolean success); +} diff --git a/core/java/com/android/internal/policy/IKeyguardService.aidl b/core/java/com/android/internal/policy/IKeyguardService.aidl new file mode 100644 index 000000000000..880464d8c453 --- /dev/null +++ b/core/java/com/android/internal/policy/IKeyguardService.aidl @@ -0,0 +1,44 @@ +/* + * Copyright (C) 2013 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.android.internal.policy; + +import com.android.internal.policy.IKeyguardShowCallback; +import com.android.internal.policy.IKeyguardExitCallback; + +import android.os.Bundle; + +interface IKeyguardService { + boolean isShowing(); + boolean isSecure(); + boolean isShowingAndNotHidden(); + boolean isInputRestricted(); + boolean isDismissable(); + oneway void verifyUnlock(IKeyguardExitCallback callback); + oneway void keyguardDone(boolean authenticated, boolean wakeup); + oneway void setHidden(boolean isHidden); + oneway void dismiss(); + oneway void onWakeKeyWhenKeyguardShowing(int keyCode); + oneway void onWakeMotionWhenKeyguardShowing(); + oneway void onDreamingStarted(); + oneway void onDreamingStopped(); + oneway void onScreenTurnedOff(int reason); + oneway void onScreenTurnedOn(IKeyguardShowCallback callback); + oneway void setKeyguardEnabled(boolean enabled); + oneway void onSystemReady(); + oneway void doKeyguardTimeout(in Bundle options); + oneway void setCurrentUser(int userId); + oneway void showAssistant(); +} diff --git a/core/java/com/android/internal/policy/IKeyguardShowCallback.aidl b/core/java/com/android/internal/policy/IKeyguardShowCallback.aidl new file mode 100644 index 000000000000..a2784d941474 --- /dev/null +++ b/core/java/com/android/internal/policy/IKeyguardShowCallback.aidl @@ -0,0 +1,20 @@ +/* + * Copyright (C) 2013 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.android.internal.policy; + +oneway interface IKeyguardShowCallback { + void onShown(IBinder windowToken); +} diff --git a/core/java/com/android/internal/widget/LockPatternUtils.java b/core/java/com/android/internal/widget/LockPatternUtils.java index 555c7c256e99..9b12aa02053c 100644 --- a/core/java/com/android/internal/widget/LockPatternUtils.java +++ b/core/java/com/android/internal/widget/LockPatternUtils.java @@ -16,6 +16,7 @@ package com.android.internal.widget; +import android.Manifest; import android.app.ActivityManagerNative; import android.app.admin.DevicePolicyManager; import android.appwidget.AppWidgetManager; @@ -145,6 +146,8 @@ public class LockPatternUtils { private DevicePolicyManager mDevicePolicyManager; private ILockSettings mLockSettingsService; + private final boolean mMultiUserMode; + // The current user is set by KeyguardViewMediator and shared by all LockPatternUtils. private static volatile int sCurrentUserId = UserHandle.USER_NULL; @@ -166,6 +169,12 @@ public class LockPatternUtils { public LockPatternUtils(Context context) { mContext = context; mContentResolver = context.getContentResolver(); + + // If this is being called by the system or by an application like keyguard that + // has permision INTERACT_ACROSS_USERS, then LockPatternUtils will operate in multi-user + // mode where calls are for the current user rather than the user of the calling process. + mMultiUserMode = context.checkCallingOrSelfPermission( + Manifest.permission.INTERACT_ACROSS_USERS_FULL) == PackageManager.PERMISSION_GRANTED; } private ILockSettings getLockSettings() { @@ -260,13 +269,12 @@ public class LockPatternUtils { } private int getCurrentOrCallingUserId() { - int callingUid = Binder.getCallingUid(); - if (callingUid == android.os.Process.SYSTEM_UID) { + if (mMultiUserMode) { // TODO: This is a little inefficient. See if all users of this are able to // handle USER_CURRENT and pass that instead. return getCurrentUser(); } else { - return UserHandle.getUserId(callingUid); + return UserHandle.getCallingUserId(); } } diff --git a/core/java/com/android/internal/widget/TransportControlView.java b/core/java/com/android/internal/widget/TransportControlView.java deleted file mode 100644 index c33f0388bd4c..000000000000 --- a/core/java/com/android/internal/widget/TransportControlView.java +++ /dev/null @@ -1,514 +0,0 @@ -/* - * Copyright (C) 2011 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.widget; - -import java.lang.ref.WeakReference; - -import com.android.internal.widget.LockScreenWidgetCallback; -import com.android.internal.widget.LockScreenWidgetInterface; - -import android.app.PendingIntent; -import android.app.PendingIntent.CanceledException; -import android.content.Context; -import android.content.Intent; -import android.graphics.Bitmap; -import android.media.AudioManager; -import android.media.MediaMetadataRetriever; -import android.media.RemoteControlClient; -import android.media.IRemoteControlDisplay; -import android.os.Bundle; -import android.os.Handler; -import android.os.Message; -import android.os.Parcel; -import android.os.Parcelable; -import android.os.RemoteException; -import android.os.SystemClock; -import android.text.Spannable; -import android.text.TextUtils; -import android.text.style.ForegroundColorSpan; -import android.util.AttributeSet; -import android.util.Log; -import android.view.KeyEvent; -import android.view.View; -import android.view.View.OnClickListener; -import android.widget.FrameLayout; -import android.widget.ImageView; -import android.widget.TextView; - - -import com.android.internal.R; - -public class TransportControlView extends FrameLayout implements OnClickListener, - LockScreenWidgetInterface { - - private static final int MSG_UPDATE_STATE = 100; - private static final int MSG_SET_METADATA = 101; - private static final int MSG_SET_TRANSPORT_CONTROLS = 102; - private static final int MSG_SET_ARTWORK = 103; - private static final int MSG_SET_GENERATION_ID = 104; - private static final int MAXDIM = 512; - private static final int DISPLAY_TIMEOUT_MS = 5000; // 5s - protected static final boolean DEBUG = false; - protected static final String TAG = "TransportControlView"; - - private ImageView mAlbumArt; - private TextView mTrackTitle; - private ImageView mBtnPrev; - private ImageView mBtnPlay; - private ImageView mBtnNext; - private int mClientGeneration; - private Metadata mMetadata = new Metadata(); - private boolean mAttached; - private PendingIntent mClientIntent; - private int mTransportControlFlags; - private int mCurrentPlayState; - private AudioManager mAudioManager; - private LockScreenWidgetCallback mWidgetCallbacks; - private IRemoteControlDisplayWeak mIRCD; - - /** - * The metadata which should be populated into the view once we've been attached - */ - private Bundle mPopulateMetadataWhenAttached = null; - - // This handler is required to ensure messages from IRCD are handled in sequence and on - // the UI thread. - private Handler mHandler = new Handler() { - @Override - public void handleMessage(Message msg) { - switch (msg.what) { - case MSG_UPDATE_STATE: - if (mClientGeneration == msg.arg1) updatePlayPauseState(msg.arg2); - break; - - case MSG_SET_METADATA: - if (mClientGeneration == msg.arg1) updateMetadata((Bundle) msg.obj); - break; - - case MSG_SET_TRANSPORT_CONTROLS: - if (mClientGeneration == msg.arg1) updateTransportControls(msg.arg2); - break; - - case MSG_SET_ARTWORK: - if (mClientGeneration == msg.arg1) { - if (mMetadata.bitmap != null) { - mMetadata.bitmap.recycle(); - } - mMetadata.bitmap = (Bitmap) msg.obj; - mAlbumArt.setImageBitmap(mMetadata.bitmap); - } - break; - - case MSG_SET_GENERATION_ID: - if (msg.arg2 != 0) { - // This means nobody is currently registered. Hide the view. - if (mWidgetCallbacks != null) { - mWidgetCallbacks.requestHide(TransportControlView.this); - } - } - if (DEBUG) Log.v(TAG, "New genId = " + msg.arg1 + ", clearing = " + msg.arg2); - mClientGeneration = msg.arg1; - mClientIntent = (PendingIntent) msg.obj; - break; - - } - } - }; - - /** - * This class is required to have weak linkage to the current TransportControlView - * because the remote process can hold a strong reference to this binder object and - * we can't predict when it will be GC'd in the remote process. Without this code, it - * would allow a heavyweight object to be held on this side of the binder when there's - * no requirement to run a GC on the other side. - */ - private static class IRemoteControlDisplayWeak extends IRemoteControlDisplay.Stub { - private WeakReference<Handler> mLocalHandler; - - IRemoteControlDisplayWeak(Handler handler) { - mLocalHandler = new WeakReference<Handler>(handler); - } - - public void setPlaybackState(int generationId, int state, long stateChangeTimeMs) { - Handler handler = mLocalHandler.get(); - if (handler != null) { - handler.obtainMessage(MSG_UPDATE_STATE, generationId, state).sendToTarget(); - } - } - - public void setMetadata(int generationId, Bundle metadata) { - Handler handler = mLocalHandler.get(); - if (handler != null) { - handler.obtainMessage(MSG_SET_METADATA, generationId, 0, metadata).sendToTarget(); - } - } - - public void setTransportControlFlags(int generationId, int flags) { - Handler handler = mLocalHandler.get(); - if (handler != null) { - handler.obtainMessage(MSG_SET_TRANSPORT_CONTROLS, generationId, flags) - .sendToTarget(); - } - } - - public void setArtwork(int generationId, Bitmap bitmap) { - Handler handler = mLocalHandler.get(); - if (handler != null) { - handler.obtainMessage(MSG_SET_ARTWORK, generationId, 0, bitmap).sendToTarget(); - } - } - - public void setAllMetadata(int generationId, Bundle metadata, Bitmap bitmap) { - Handler handler = mLocalHandler.get(); - if (handler != null) { - handler.obtainMessage(MSG_SET_METADATA, generationId, 0, metadata).sendToTarget(); - handler.obtainMessage(MSG_SET_ARTWORK, generationId, 0, bitmap).sendToTarget(); - } - } - - public void setCurrentClientId(int clientGeneration, PendingIntent mediaIntent, - boolean clearing) throws RemoteException { - Handler handler = mLocalHandler.get(); - if (handler != null) { - handler.obtainMessage(MSG_SET_GENERATION_ID, - clientGeneration, (clearing ? 1 : 0), mediaIntent).sendToTarget(); - } - } - }; - - public TransportControlView(Context context, AttributeSet attrs) { - super(context, attrs); - if (DEBUG) Log.v(TAG, "Create TCV " + this); - mAudioManager = new AudioManager(mContext); - mCurrentPlayState = RemoteControlClient.PLAYSTATE_NONE; // until we get a callback - mIRCD = new IRemoteControlDisplayWeak(mHandler); - } - - private void updateTransportControls(int transportControlFlags) { - mTransportControlFlags = transportControlFlags; - } - - @Override - public void onFinishInflate() { - super.onFinishInflate(); - mTrackTitle = (TextView) findViewById(R.id.title); - mTrackTitle.setSelected(true); // enable marquee - mAlbumArt = (ImageView) findViewById(R.id.albumart); - mBtnPrev = (ImageView) findViewById(R.id.btn_prev); - mBtnPlay = (ImageView) findViewById(R.id.btn_play); - mBtnNext = (ImageView) findViewById(R.id.btn_next); - final View buttons[] = { mBtnPrev, mBtnPlay, mBtnNext }; - for (View view : buttons) { - view.setOnClickListener(this); - } - } - - @Override - public void onAttachedToWindow() { - super.onAttachedToWindow(); - if (mPopulateMetadataWhenAttached != null) { - updateMetadata(mPopulateMetadataWhenAttached); - mPopulateMetadataWhenAttached = null; - } - if (!mAttached) { - if (DEBUG) Log.v(TAG, "Registering TCV " + this); - mAudioManager.registerRemoteControlDisplay(mIRCD); - } - mAttached = true; - } - - @Override - public void onDetachedFromWindow() { - super.onDetachedFromWindow(); - if (mAttached) { - if (DEBUG) Log.v(TAG, "Unregistering TCV " + this); - mAudioManager.unregisterRemoteControlDisplay(mIRCD); - } - mAttached = false; - } - - @Override - protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { - super.onMeasure(widthMeasureSpec, heightMeasureSpec); - int dim = Math.min(MAXDIM, Math.max(getWidth(), getHeight())); -// Log.v(TAG, "setting max bitmap size: " + dim + "x" + dim); -// mAudioManager.remoteControlDisplayUsesBitmapSize(mIRCD, dim, dim); - } - - class Metadata { - private String artist; - private String trackTitle; - private String albumTitle; - private Bitmap bitmap; - - public String toString() { - return "Metadata[artist=" + artist + " trackTitle=" + trackTitle + " albumTitle=" + albumTitle + "]"; - } - } - - private String getMdString(Bundle data, int id) { - return data.getString(Integer.toString(id)); - } - - private void updateMetadata(Bundle data) { - if (mAttached) { - mMetadata.artist = getMdString(data, MediaMetadataRetriever.METADATA_KEY_ALBUMARTIST); - mMetadata.trackTitle = getMdString(data, MediaMetadataRetriever.METADATA_KEY_TITLE); - mMetadata.albumTitle = getMdString(data, MediaMetadataRetriever.METADATA_KEY_ALBUM); - populateMetadata(); - } else { - mPopulateMetadataWhenAttached = data; - } - } - - /** - * Populates the given metadata into the view - */ - private void populateMetadata() { - StringBuilder sb = new StringBuilder(); - int trackTitleLength = 0; - if (!TextUtils.isEmpty(mMetadata.trackTitle)) { - sb.append(mMetadata.trackTitle); - trackTitleLength = mMetadata.trackTitle.length(); - } - if (!TextUtils.isEmpty(mMetadata.artist)) { - if (sb.length() != 0) { - sb.append(" - "); - } - sb.append(mMetadata.artist); - } - if (!TextUtils.isEmpty(mMetadata.albumTitle)) { - if (sb.length() != 0) { - sb.append(" - "); - } - sb.append(mMetadata.albumTitle); - } - mTrackTitle.setText(sb.toString(), TextView.BufferType.SPANNABLE); - Spannable str = (Spannable) mTrackTitle.getText(); - if (trackTitleLength != 0) { - str.setSpan(new ForegroundColorSpan(0xffffffff), 0, trackTitleLength, - Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); - trackTitleLength++; - } - if (sb.length() > trackTitleLength) { - str.setSpan(new ForegroundColorSpan(0x7fffffff), trackTitleLength, sb.length(), - Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); - } - - mAlbumArt.setImageBitmap(mMetadata.bitmap); - final int flags = mTransportControlFlags; - setVisibilityBasedOnFlag(mBtnPrev, flags, RemoteControlClient.FLAG_KEY_MEDIA_PREVIOUS); - setVisibilityBasedOnFlag(mBtnNext, flags, RemoteControlClient.FLAG_KEY_MEDIA_NEXT); - setVisibilityBasedOnFlag(mBtnPlay, flags, - RemoteControlClient.FLAG_KEY_MEDIA_PLAY - | RemoteControlClient.FLAG_KEY_MEDIA_PAUSE - | RemoteControlClient.FLAG_KEY_MEDIA_PLAY_PAUSE - | RemoteControlClient.FLAG_KEY_MEDIA_STOP); - - updatePlayPauseState(mCurrentPlayState); - } - - private static void setVisibilityBasedOnFlag(View view, int flags, int flag) { - if ((flags & flag) != 0) { - view.setVisibility(View.VISIBLE); - } else { - view.setVisibility(View.GONE); - } - } - - private void updatePlayPauseState(int state) { - if (DEBUG) Log.v(TAG, - "updatePlayPauseState(), old=" + mCurrentPlayState + ", state=" + state); - if (state == mCurrentPlayState) { - return; - } - final int imageResId; - final int imageDescId; - boolean showIfHidden = false; - switch (state) { - case RemoteControlClient.PLAYSTATE_ERROR: - imageResId = com.android.internal.R.drawable.stat_sys_warning; - // TODO use more specific image description string for warning, but here the "play" - // message is still valid because this button triggers a play command. - imageDescId = com.android.internal.R.string.lockscreen_transport_play_description; - break; - - case RemoteControlClient.PLAYSTATE_PLAYING: - imageResId = com.android.internal.R.drawable.ic_media_pause; - imageDescId = com.android.internal.R.string.lockscreen_transport_pause_description; - showIfHidden = true; - break; - - case RemoteControlClient.PLAYSTATE_BUFFERING: - imageResId = com.android.internal.R.drawable.ic_media_stop; - imageDescId = com.android.internal.R.string.lockscreen_transport_stop_description; - showIfHidden = true; - break; - - case RemoteControlClient.PLAYSTATE_PAUSED: - default: - imageResId = com.android.internal.R.drawable.ic_media_play; - imageDescId = com.android.internal.R.string.lockscreen_transport_play_description; - showIfHidden = false; - break; - } - mBtnPlay.setImageResource(imageResId); - mBtnPlay.setContentDescription(getResources().getString(imageDescId)); - if (showIfHidden && mWidgetCallbacks != null && !mWidgetCallbacks.isVisible(this)) { - mWidgetCallbacks.requestShow(this); - } - mCurrentPlayState = state; - } - - static class SavedState extends BaseSavedState { - boolean wasShowing; - - SavedState(Parcelable superState) { - super(superState); - } - - private SavedState(Parcel in) { - super(in); - this.wasShowing = in.readInt() != 0; - } - - @Override - public void writeToParcel(Parcel out, int flags) { - super.writeToParcel(out, flags); - out.writeInt(this.wasShowing ? 1 : 0); - } - - public static final Parcelable.Creator<SavedState> CREATOR - = new Parcelable.Creator<SavedState>() { - public SavedState createFromParcel(Parcel in) { - return new SavedState(in); - } - - public SavedState[] newArray(int size) { - return new SavedState[size]; - } - }; - } - - @Override - public Parcelable onSaveInstanceState() { - if (DEBUG) Log.v(TAG, "onSaveInstanceState()"); - Parcelable superState = super.onSaveInstanceState(); - SavedState ss = new SavedState(superState); - ss.wasShowing = mWidgetCallbacks != null && mWidgetCallbacks.isVisible(this); - return ss; - } - - @Override - public void onRestoreInstanceState(Parcelable state) { - if (DEBUG) Log.v(TAG, "onRestoreInstanceState()"); - if (!(state instanceof SavedState)) { - super.onRestoreInstanceState(state); - return; - } - SavedState ss = (SavedState) state; - super.onRestoreInstanceState(ss.getSuperState()); - if (ss.wasShowing && mWidgetCallbacks != null) { - mWidgetCallbacks.requestShow(this); - } - } - - public void onClick(View v) { - int keyCode = -1; - if (v == mBtnPrev) { - keyCode = KeyEvent.KEYCODE_MEDIA_PREVIOUS; - } else if (v == mBtnNext) { - keyCode = KeyEvent.KEYCODE_MEDIA_NEXT; - } else if (v == mBtnPlay) { - keyCode = KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE; - - } - if (keyCode != -1) { - sendMediaButtonClick(keyCode); - if (mWidgetCallbacks != null) { - mWidgetCallbacks.userActivity(this); - } - } - } - - private void sendMediaButtonClick(int keyCode) { - if (mClientIntent == null) { - // Shouldn't be possible because this view should be hidden in this case. - Log.e(TAG, "sendMediaButtonClick(): No client is currently registered"); - return; - } - // use the registered PendingIntent that will be processed by the registered - // media button event receiver, which is the component of mClientIntent - KeyEvent keyEvent = new KeyEvent(KeyEvent.ACTION_DOWN, keyCode); - Intent intent = new Intent(Intent.ACTION_MEDIA_BUTTON); - intent.putExtra(Intent.EXTRA_KEY_EVENT, keyEvent); - try { - mClientIntent.send(getContext(), 0, intent); - } catch (CanceledException e) { - Log.e(TAG, "Error sending intent for media button down: "+e); - e.printStackTrace(); - } - - keyEvent = new KeyEvent(KeyEvent.ACTION_UP, keyCode); - intent = new Intent(Intent.ACTION_MEDIA_BUTTON); - intent.putExtra(Intent.EXTRA_KEY_EVENT, keyEvent); - try { - mClientIntent.send(getContext(), 0, intent); - } catch (CanceledException e) { - Log.e(TAG, "Error sending intent for media button up: "+e); - e.printStackTrace(); - } - } - - public void setCallback(LockScreenWidgetCallback callback) { - mWidgetCallbacks = callback; - } - - public boolean providesClock() { - return false; - } - - private boolean wasPlayingRecently(int state, long stateChangeTimeMs) { - switch (state) { - case RemoteControlClient.PLAYSTATE_PLAYING: - case RemoteControlClient.PLAYSTATE_FAST_FORWARDING: - case RemoteControlClient.PLAYSTATE_REWINDING: - case RemoteControlClient.PLAYSTATE_SKIPPING_FORWARDS: - case RemoteControlClient.PLAYSTATE_SKIPPING_BACKWARDS: - case RemoteControlClient.PLAYSTATE_BUFFERING: - // actively playing or about to play - return true; - case RemoteControlClient.PLAYSTATE_NONE: - return false; - case RemoteControlClient.PLAYSTATE_STOPPED: - case RemoteControlClient.PLAYSTATE_PAUSED: - case RemoteControlClient.PLAYSTATE_ERROR: - // we have stopped playing, check how long ago - if (DEBUG) { - if ((SystemClock.elapsedRealtime() - stateChangeTimeMs) < DISPLAY_TIMEOUT_MS) { - Log.v(TAG, "wasPlayingRecently: time < TIMEOUT was playing recently"); - } else { - Log.v(TAG, "wasPlayingRecently: time > TIMEOUT"); - } - } - return ((SystemClock.elapsedRealtime() - stateChangeTimeMs) < DISPLAY_TIMEOUT_MS); - default: - Log.e(TAG, "Unknown playback state " + state + " in wasPlayingRecently()"); - return false; - } - } -} diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml index 8a53cc35ca7d..bedb33c88911 100644 --- a/core/res/AndroidManifest.xml +++ b/core/res/AndroidManifest.xml @@ -2187,6 +2187,13 @@ android:description="@string/permdesc_accessNotifications" android:protectionLevel="signature|system" /> + <!-- Allows access to keyguard secure storage. Only allowed for system processes. + @hide --> + <permission android:name="android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" + android:protectionLevel="signature" + android:label="@string/permlab_access_keyguard_secure_storage" + android:description="@string/permdesc_access_keyguard_secure_storage" /> + <!-- The system process is explicitly the only one allowed to launch the confirmation UI for full backup/restore --> <uses-permission android:name="android.permission.CONFIRM_FULL_BACKUP"/> diff --git a/core/res/res/drawable-hdpi/kg_add_widget.png b/core/res/res/drawable-hdpi/kg_add_widget.png Binary files differdeleted file mode 100644 index 68971a58c5ac..000000000000 --- a/core/res/res/drawable-hdpi/kg_add_widget.png +++ /dev/null diff --git a/core/res/res/drawable-hdpi/kg_security_lock_focused.png b/core/res/res/drawable-hdpi/kg_security_lock_focused.png Binary files differdeleted file mode 100644 index abcf6837a722..000000000000 --- a/core/res/res/drawable-hdpi/kg_security_lock_focused.png +++ /dev/null diff --git a/core/res/res/drawable-hdpi/kg_security_lock_normal.png b/core/res/res/drawable-hdpi/kg_security_lock_normal.png Binary files differdeleted file mode 100644 index e8cff24a4255..000000000000 --- a/core/res/res/drawable-hdpi/kg_security_lock_normal.png +++ /dev/null diff --git a/core/res/res/drawable-hdpi/kg_security_lock_pressed.png b/core/res/res/drawable-hdpi/kg_security_lock_pressed.png Binary files differdeleted file mode 100644 index 3214dcbcdbfc..000000000000 --- a/core/res/res/drawable-hdpi/kg_security_lock_pressed.png +++ /dev/null diff --git a/core/res/res/drawable-mdpi/kg_add_widget.png b/core/res/res/drawable-mdpi/kg_add_widget.png Binary files differdeleted file mode 100644 index 136ae1740410..000000000000 --- a/core/res/res/drawable-mdpi/kg_add_widget.png +++ /dev/null diff --git a/core/res/res/drawable-mdpi/kg_security_lock_focused.png b/core/res/res/drawable-mdpi/kg_security_lock_focused.png Binary files differdeleted file mode 100644 index c567a82396a1..000000000000 --- a/core/res/res/drawable-mdpi/kg_security_lock_focused.png +++ /dev/null diff --git a/core/res/res/drawable-mdpi/kg_security_lock_normal.png b/core/res/res/drawable-mdpi/kg_security_lock_normal.png Binary files differdeleted file mode 100644 index 6fbecc187d3a..000000000000 --- a/core/res/res/drawable-mdpi/kg_security_lock_normal.png +++ /dev/null diff --git a/core/res/res/drawable-mdpi/kg_security_lock_pressed.png b/core/res/res/drawable-mdpi/kg_security_lock_pressed.png Binary files differdeleted file mode 100644 index a88325897837..000000000000 --- a/core/res/res/drawable-mdpi/kg_security_lock_pressed.png +++ /dev/null diff --git a/core/res/res/drawable-xhdpi/kg_add_widget.png b/core/res/res/drawable-xhdpi/kg_add_widget.png Binary files differdeleted file mode 100644 index ca48be2793df..000000000000 --- a/core/res/res/drawable-xhdpi/kg_add_widget.png +++ /dev/null diff --git a/core/res/res/drawable-xhdpi/kg_security_lock_focused.png b/core/res/res/drawable-xhdpi/kg_security_lock_focused.png Binary files differdeleted file mode 100644 index ee21647399e2..000000000000 --- a/core/res/res/drawable-xhdpi/kg_security_lock_focused.png +++ /dev/null diff --git a/core/res/res/drawable-xhdpi/kg_security_lock_normal.png b/core/res/res/drawable-xhdpi/kg_security_lock_normal.png Binary files differdeleted file mode 100644 index eae7d8c55e3d..000000000000 --- a/core/res/res/drawable-xhdpi/kg_security_lock_normal.png +++ /dev/null diff --git a/core/res/res/drawable-xhdpi/kg_security_lock_pressed.png b/core/res/res/drawable-xhdpi/kg_security_lock_pressed.png Binary files differdeleted file mode 100644 index 5e9a52b6b504..000000000000 --- a/core/res/res/drawable-xhdpi/kg_security_lock_pressed.png +++ /dev/null diff --git a/core/res/res/drawable/lockscreen_password_field_dark.xml b/core/res/res/drawable/lockscreen_password_field_dark.xml deleted file mode 100644 index 92ceb79fc7f0..000000000000 --- a/core/res/res/drawable/lockscreen_password_field_dark.xml +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- 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. ---> - -<selector xmlns:android="http://schemas.android.com/apk/res/android"> - <item android:state_window_focused="false" android:state_enabled="true" android:drawable="@drawable/textfield_bg_default_holo_dark" /> - <item android:state_window_focused="false" android:state_enabled="false" android:drawable="@drawable/textfield_bg_disabled_holo_dark" /> - <item android:state_enabled="true" android:state_focused="true" android:drawable="@drawable/textfield_bg_activated_holo_dark" /> - <iten android:state_enabled="true" android:state_activated="true" android:drawable="@drawable/textfield_bg_focused_holo_dark" /> - <item android:state_enabled="true" android:drawable="@drawable/textfield_bg_default_holo_dark" /> - <item android:state_focused="true" android:drawable="@drawable/textfield_bg_disabled_focused_holo_dark" /> - <item android:drawable="@drawable/textfield_bg_disabled_holo_dark" /> -</selector> - diff --git a/core/res/res/layout-sw600dp-port/keyguard_status_area.xml b/core/res/res/layout-sw600dp-port/keyguard_status_area.xml deleted file mode 100644 index 88dd760146a9..000000000000 --- a/core/res/res/layout-sw600dp-port/keyguard_status_area.xml +++ /dev/null @@ -1,56 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -** -** Copyright 2009, 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. -*/ ---> - -<!-- This is a view that shows general status information in Keyguard. --> -<LinearLayout - xmlns:android="http://schemas.android.com/apk/res/android" - android:id="@+id/keyguard_status_area" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_gravity="end" - android:layout_marginTop="-16dp" - android:orientation="vertical"> - - <TextView - android:id="@+id/date" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_gravity="end" - android:layout_marginEnd="@dimen/kg_status_line_font_right_margin" - android:singleLine="true" - android:ellipsize="marquee" - android:textAppearance="?android:attr/textAppearanceMedium" - android:textSize="@dimen/kg_status_date_font_size" - /> - - <TextView - android:id="@+id/alarm_status" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_gravity="end" - android:layout_marginTop="28dp" - android:layout_marginEnd="@dimen/kg_status_line_font_right_margin" - android:singleLine="true" - android:ellipsize="marquee" - android:textAppearance="?android:attr/textAppearance" - android:textSize="@dimen/kg_status_line_font_size" - android:drawablePadding="4dip" - /> - -</LinearLayout> diff --git a/core/res/res/layout-sw600dp/keyguard_transport_control.xml b/core/res/res/layout-sw600dp/keyguard_transport_control.xml deleted file mode 100644 index f864339422ce..000000000000 --- a/core/res/res/layout-sw600dp/keyguard_transport_control.xml +++ /dev/null @@ -1,111 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2011 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. ---> - -<!-- *** Note *** This should mirror the file in layout/ with the exception of the background set - here for adding a drop shadow on tablets. --> - -<com.android.internal.widget.TransportControlView - xmlns:android="http://schemas.android.com/apk/res/android" - android:id="@+id/transport_controls" - android:background="@drawable/transportcontrol_bg"> - - <!-- FrameLayout used as scrim to show between album art and buttons --> - <FrameLayout - android:layout_width="match_parent" - android:layout_height="match_parent" - android:foreground="@drawable/ic_lockscreen_player_background"> - <!-- We use ImageView for its cropping features, otherwise could be android:background --> - <ImageView - android:id="@+id/albumart" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:layout_gravity="fill" - android:scaleType="centerCrop" - android:adjustViewBounds="false" - /> - </FrameLayout> - - <LinearLayout - android:orientation="vertical" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_gravity="bottom"> - <TextView - android:id="@+id/title" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_marginTop="8dip" - android:layout_marginStart="16dip" - android:layout_marginEnd="16dip" - android:gravity="center_horizontal" - android:singleLine="true" - android:ellipsize="end" - android:textAppearance="?android:attr/textAppearanceMedium" - /> - <LinearLayout - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:orientation="horizontal" - android:layout_marginTop="5dip"> - <FrameLayout - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_weight="1"> - <ImageView - android:id="@+id/btn_prev" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_gravity="center" - android:src="@drawable/ic_media_previous" - android:clickable="true" - android:background="?android:attr/selectableItemBackground" - android:padding="10dip" - android:contentDescription="@string/lockscreen_transport_prev_description"/> - </FrameLayout> - <FrameLayout - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_weight="1"> - <ImageView - android:id="@+id/btn_play" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_gravity="center" - android:clickable="true" - android:src="@drawable/ic_media_play" - android:background="?android:attr/selectableItemBackground" - android:padding="10dip" - android:contentDescription="@string/lockscreen_transport_play_description"/> - </FrameLayout> - <FrameLayout - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_weight="1"> - <ImageView - android:id="@+id/btn_next" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_gravity="center" - android:clickable="true" - android:src="@drawable/ic_media_next" - android:background="?android:attr/selectableItemBackground" - android:padding="10dip" - android:contentDescription="@string/lockscreen_transport_next_description"/> - </FrameLayout> - </LinearLayout> - </LinearLayout> - -</com.android.internal.widget.TransportControlView> diff --git a/core/res/res/values-af/strings.xml b/core/res/res/values-af/strings.xml index 8cfad68192b6..db141c2b5a15 100644 --- a/core/res/res/values-af/strings.xml +++ b/core/res/res/values-af/strings.xml @@ -1239,6 +1239,8 @@ <string name="permdesc_copyProtectedData" msgid="4390697124288317831">"Laat die program toe om die verstek houerdiens in te roep om inhoud te kopieer. Nie vir gebruik deur normale programme nie."</string> <string name="permlab_route_media_output" msgid="1642024455750414694">"Roeteer media-uitvoer"</string> <string name="permdesc_route_media_output" msgid="4932818749547244346">"Laat \'n program toe om media-uitvoere na ander eksterne toestelle te roeteer."</string> + <string name="permlab_access_keyguard_secure_storage" msgid="7565552237977815047">"Kry toegang tot keyguard se veilige berging"</string> + <string name="permdesc_access_keyguard_secure_storage" msgid="5866245484303285762">"Laat \'n program toe om toegang tot keyguard se veilige berging te kry."</string> <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Raak twee keer vir zoembeheer"</string> <string name="gadget_host_error_inflating" msgid="4882004314906466162">"Kon nie legstuk byvoeg nie."</string> <string name="ime_action_go" msgid="8320845651737369027">"Gaan"</string> diff --git a/core/res/res/values-am/strings.xml b/core/res/res/values-am/strings.xml index 2cef636a9dfe..af69aa72edb2 100644 --- a/core/res/res/values-am/strings.xml +++ b/core/res/res/values-am/strings.xml @@ -1239,6 +1239,8 @@ <string name="permdesc_copyProtectedData" msgid="4390697124288317831">"ይዘትን ለመቅዳት ነባሪ መያዣ አገልግሎት እንዲያስነሳ ለመተግበሪው ይፈቅዳሉ፡፡ ለመደበኛ መተግበሪያዎች ለመጠቀም አይሆንም፡፡"</string> <string name="permlab_route_media_output" msgid="1642024455750414694">"የሚዲያ ውፅአት መንገድ"</string> <string name="permdesc_route_media_output" msgid="4932818749547244346">"አንድ መተግበሪያ የሚዲያ ውፅአትን ወደ ሌላ ውጫዊ መሳሪያ እንዲመራ ይፈቅድለታል።"</string> + <string name="permlab_access_keyguard_secure_storage" msgid="7565552237977815047">"ደህንነቱ በቁልፍ የተጠበቀ ማከማቻን ይድረሱ"</string> + <string name="permdesc_access_keyguard_secure_storage" msgid="5866245484303285762">"አንድ መተግበሪያ ደህንነቱ በቁልፍ የተጠበቀ ማከማቻ እንዲደርስ ያስችለዋል።"</string> <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"ለአጉላ መቆጣጠሪያ ሁለት ጊዜ ነካ አድርግ"</string> <string name="gadget_host_error_inflating" msgid="4882004314906466162">"ምግብር ማከል አልተቻለም።"</string> <string name="ime_action_go" msgid="8320845651737369027">"ሂድ"</string> diff --git a/core/res/res/values-ar/strings.xml b/core/res/res/values-ar/strings.xml index 9f6345f9a8e3..49943bc43bb9 100644 --- a/core/res/res/values-ar/strings.xml +++ b/core/res/res/values-ar/strings.xml @@ -1239,6 +1239,8 @@ <string name="permdesc_copyProtectedData" msgid="4390697124288317831">"للسماح باستدعاء خدمة الحاوية الافتراضية لنسخ المحتوى. ليس للاستخدام بواسطة التطبيقات العادية."</string> <string name="permlab_route_media_output" msgid="1642024455750414694">"توجيه إخراج الوسائط"</string> <string name="permdesc_route_media_output" msgid="4932818749547244346">"للسماح للتطبيق بتوجيه إخراج الوسائط إلى أجهزة خارجية أخرى."</string> + <string name="permlab_access_keyguard_secure_storage" msgid="7565552237977815047">"الدخول إلى التخزين المحمي بقفل المفاتيح"</string> + <string name="permdesc_access_keyguard_secure_storage" msgid="5866245484303285762">"السماح لأحد التطبيقات بالدخول إلى التخزين المحمي بقفل المفاتيح."</string> <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"المس مرتين للتحكم في التكبير/التصغير"</string> <string name="gadget_host_error_inflating" msgid="4882004314906466162">"تعذرت إضافة أداة."</string> <string name="ime_action_go" msgid="8320845651737369027">"تنفيذ"</string> diff --git a/core/res/res/values-be/strings.xml b/core/res/res/values-be/strings.xml index 2c6aff392a88..795716493605 100644 --- a/core/res/res/values-be/strings.xml +++ b/core/res/res/values-be/strings.xml @@ -1239,6 +1239,10 @@ <string name="permdesc_copyProtectedData" msgid="4390697124288317831">"Дазваляе прыкладанням выклікаць службу захавання па змаўчанні для капіявання змесціва. Не выкарыстоўваецца звычайнымі прыкладаннямі."</string> <string name="permlab_route_media_output" msgid="1642024455750414694">"Маршрутны мультымедыйны выхад"</string> <string name="permdesc_route_media_output" msgid="4932818749547244346">"Дазваляе прыкладанням маршрутызаваць мультымедыйны выхад на iншыя знешнiя прылады."</string> + <!-- no translation found for permlab_access_keyguard_secure_storage (7565552237977815047) --> + <skip /> + <!-- no translation found for permdesc_access_keyguard_secure_storage (5866245484303285762) --> + <skip /> <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Двойчы дакраніцеся, каб змянiць маштаб"</string> <string name="gadget_host_error_inflating" msgid="4882004314906466162">"Немагчыма дадаць віджэт."</string> <string name="ime_action_go" msgid="8320845651737369027">"Пачаць"</string> diff --git a/core/res/res/values-bg/strings.xml b/core/res/res/values-bg/strings.xml index f5f89a65b483..e04146b3809c 100644 --- a/core/res/res/values-bg/strings.xml +++ b/core/res/res/values-bg/strings.xml @@ -1239,6 +1239,8 @@ <string name="permdesc_copyProtectedData" msgid="4390697124288317831">"Разрешава на приложението да извиква стандартната услуга на контейнера, за да се копира съдържание. Не е предназначено за нормални приложения."</string> <string name="permlab_route_media_output" msgid="1642024455750414694">"Насочване на изходящата мултимедия"</string> <string name="permdesc_route_media_output" msgid="4932818749547244346">"Разрешава на приложението да насочва изходящата мултимедия към други външни устройства."</string> + <string name="permlab_access_keyguard_secure_storage" msgid="7565552237977815047">"Достъп до сигурното хранилище за зашита на ключове"</string> + <string name="permdesc_access_keyguard_secure_storage" msgid="5866245484303285762">"Позволява на приложението да осъществява достъп до сигурното хранилище за зашита на ключове."</string> <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Докоснете двукратно за управление на промяната на мащаба"</string> <string name="gadget_host_error_inflating" msgid="4882004314906466162">"Приспособлението не можа да бъде добавено."</string> <string name="ime_action_go" msgid="8320845651737369027">"Старт"</string> diff --git a/core/res/res/values-ca/strings.xml b/core/res/res/values-ca/strings.xml index b0773085d50c..97decea05580 100644 --- a/core/res/res/values-ca/strings.xml +++ b/core/res/res/values-ca/strings.xml @@ -1239,6 +1239,8 @@ <string name="permdesc_copyProtectedData" msgid="4390697124288317831">"Permet invocar el servei de contenidor predeterminat per copiar contingut. No indicat per a les aplicacions normals."</string> <string name="permlab_route_media_output" msgid="1642024455750414694">"Indicació de ruta de sortida de contingut multimèdia"</string> <string name="permdesc_route_media_output" msgid="4932818749547244346">"Permet que una aplicació indiqui la ruta de sortida de contingut multimèdia a altres dispositius externs."</string> + <string name="permlab_access_keyguard_secure_storage" msgid="7565552237977815047">"Accedeix a l\'emmagatzematge protegit per contrasenya"</string> + <string name="permdesc_access_keyguard_secure_storage" msgid="5866245484303285762">"Permet que una aplicació accedeixi a l\'emmagatzematge protegit per contrasenya."</string> <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Toca dos cops per controlar el zoom"</string> <string name="gadget_host_error_inflating" msgid="4882004314906466162">"No s\'ha pogut afegir el widget."</string> <string name="ime_action_go" msgid="8320845651737369027">"Vés"</string> @@ -1406,7 +1408,7 @@ <string name="launchBrowserDefault" msgid="2057951947297614725">"Vols iniciar el navegador?"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"Vols acceptar la trucada?"</string> <string name="activity_resolver_use_always" msgid="8017770747801494933">"Sempre"</string> - <string name="activity_resolver_use_once" msgid="2404644797149173758">"Només una"</string> + <string name="activity_resolver_use_once" msgid="2404644797149173758">"Només una vegada"</string> <string name="default_audio_route_name" product="tablet" msgid="4617053898167127471">"Tauleta"</string> <string name="default_audio_route_name" product="default" msgid="4239291273420140123">"Telèfon"</string> <string name="default_audio_route_name_headphones" msgid="8119971843803439110">"Auriculars"</string> diff --git a/core/res/res/values-cs/strings.xml b/core/res/res/values-cs/strings.xml index 3482ed4fddbb..fbfdab0e5548 100644 --- a/core/res/res/values-cs/strings.xml +++ b/core/res/res/values-cs/strings.xml @@ -959,7 +959,7 @@ </plurals> <plurals name="in_num_days"> <item quantity="one" msgid="5413088743009839518">"zítra"</item> - <item quantity="other" msgid="5109449375100953247">"zbývající počet dní: <xliff:g id="COUNT">%d</xliff:g>"</item> + <item quantity="other" msgid="5109449375100953247">"za <xliff:g id="COUNT">%d</xliff:g> dny"</item> </plurals> <plurals name="abbrev_num_seconds_ago"> <item quantity="one" msgid="1849036840200069118">"před 1 s"</item> @@ -991,7 +991,7 @@ </plurals> <plurals name="abbrev_in_num_days"> <item quantity="one" msgid="2178576254385739855">"zítra"</item> - <item quantity="other" msgid="2973062968038355991">"zbývající počet dní: <xliff:g id="COUNT">%d</xliff:g>"</item> + <item quantity="other" msgid="2973062968038355991">"za <xliff:g id="COUNT">%d</xliff:g> dny"</item> </plurals> <string name="preposition_for_date" msgid="9093949757757445117">"dne <xliff:g id="DATE">%s</xliff:g>"</string> <string name="preposition_for_time" msgid="5506831244263083793">"v <xliff:g id="TIME">%s</xliff:g>"</string> @@ -1239,6 +1239,10 @@ <string name="permdesc_copyProtectedData" msgid="4390697124288317831">"Umožňuje aplikaci dát výchozí službě kontejneru příkaz ke zkopírování obsahu. Toto oprávnění není určeno pro běžné aplikace."</string> <string name="permlab_route_media_output" msgid="1642024455750414694">"Směrování výstupu médií"</string> <string name="permdesc_route_media_output" msgid="4932818749547244346">"Umožňuje aplikaci směrovat výstup médií do dalších externích zařízení."</string> + <!-- no translation found for permlab_access_keyguard_secure_storage (7565552237977815047) --> + <skip /> + <!-- no translation found for permdesc_access_keyguard_secure_storage (5866245484303285762) --> + <skip /> <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Dvojitým dotykem můžete ovládat přiblížení"</string> <string name="gadget_host_error_inflating" msgid="4882004314906466162">"Widget nelze přidat."</string> <string name="ime_action_go" msgid="8320845651737369027">"Přejít"</string> diff --git a/core/res/res/values-da/strings.xml b/core/res/res/values-da/strings.xml index 3fb84ec3ee52..8f15a68c902d 100644 --- a/core/res/res/values-da/strings.xml +++ b/core/res/res/values-da/strings.xml @@ -1239,6 +1239,8 @@ <string name="permdesc_copyProtectedData" msgid="4390697124288317831">"Tillader, at appen kan benytte standardlagertjenesten til at kopiere indhold. Anvendes ikke af almindelige apps."</string> <string name="permlab_route_media_output" msgid="1642024455750414694">"Viderefør medieoutput"</string> <string name="permdesc_route_media_output" msgid="4932818749547244346">"Tillader, at en applikation viderefører medieoutput til andre eksterne enheder."</string> + <string name="permlab_access_keyguard_secure_storage" msgid="7565552237977815047">"Få adgang nøglebeskyttet lager"</string> + <string name="permdesc_access_keyguard_secure_storage" msgid="5866245484303285762">"Tillader, at en applikation får adgang til et nøglebeskyttet lager."</string> <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Tryk to gange for zoomstyring"</string> <string name="gadget_host_error_inflating" msgid="4882004314906466162">"Widget kunne ikke tilføjes."</string> <string name="ime_action_go" msgid="8320845651737369027">"Gå"</string> diff --git a/core/res/res/values-de/strings.xml b/core/res/res/values-de/strings.xml index 95e0b5b1ca6e..8d9126db9981 100644 --- a/core/res/res/values-de/strings.xml +++ b/core/res/res/values-de/strings.xml @@ -1239,6 +1239,8 @@ <string name="permdesc_copyProtectedData" msgid="4390697124288317831">"Ermöglicht der App das Aufrufen des Standard-Containerdienstes zum Kopieren von Inhalten. Nicht für normale Apps vorgesehen."</string> <string name="permlab_route_media_output" msgid="1642024455750414694">"Medienausgabe umleiten"</string> <string name="permdesc_route_media_output" msgid="4932818749547244346">"Ermöglicht einer App, die Medienausgabe auf andere externe Geräte umzuleiten."</string> + <string name="permlab_access_keyguard_secure_storage" msgid="7565552237977815047">"Zugriff auf mit Keyguard geschützten Speicher"</string> + <string name="permdesc_access_keyguard_secure_storage" msgid="5866245484303285762">"Ermöglicht einer App den Zugriff auf mit Keyguard geschützten Speicher"</string> <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Für Zoomeinstellung zweimal berühren"</string> <string name="gadget_host_error_inflating" msgid="4882004314906466162">"Widget konnte nicht hinzugefügt werden."</string> <string name="ime_action_go" msgid="8320845651737369027">"Los"</string> diff --git a/core/res/res/values-el/strings.xml b/core/res/res/values-el/strings.xml index 478b064d600e..87fa966fbb02 100644 --- a/core/res/res/values-el/strings.xml +++ b/core/res/res/values-el/strings.xml @@ -1239,6 +1239,8 @@ <string name="permdesc_copyProtectedData" msgid="4390697124288317831">"Επιτρέπει στην εφαρμογή την κλήση της προεπιλεγμένης υπηρεσίας κοντέινερ για την αντιγραφή περιεχομένου. Δεν χρησιμοποιείται από συνήθεις εφαρμογές."</string> <string name="permlab_route_media_output" msgid="1642024455750414694">"Διαγραφή διαδρομής δεδομένων εξόδου μέσων"</string> <string name="permdesc_route_media_output" msgid="4932818749547244346">"Επιτρέπει σε μια εφαρμογή τη διαγραφή διαδρομής δεδομένων εξόδου μέσων σε άλλες εξωτερικές συσκευές."</string> + <string name="permlab_access_keyguard_secure_storage" msgid="7565552237977815047">"Πρόσβαση στον ασφαλή αποθηκευτικό χώρο με κλείδωμα"</string> + <string name="permdesc_access_keyguard_secure_storage" msgid="5866245484303285762">"Επιτρέπει σε μια εφαρμογή να αποκτήσει πρόσβαση στον ασφαλή αποθηκευτικό χώρο με κλείδωμα."</string> <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Αγγίξτε δύο φορές για έλεγχο εστίασης"</string> <string name="gadget_host_error_inflating" msgid="4882004314906466162">"Δεν ήταν δυνατή η προσθήκη του γραφικού στοιχείου."</string> <string name="ime_action_go" msgid="8320845651737369027">"Μετάβαση"</string> diff --git a/core/res/res/values-en-rGB/strings.xml b/core/res/res/values-en-rGB/strings.xml index 8794a5d86763..67f5c0e7fa6e 100644 --- a/core/res/res/values-en-rGB/strings.xml +++ b/core/res/res/values-en-rGB/strings.xml @@ -1239,6 +1239,8 @@ <string name="permdesc_copyProtectedData" msgid="4390697124288317831">"Allows the app to invoke default container service to copy content. Not for use by normal apps."</string> <string name="permlab_route_media_output" msgid="1642024455750414694">"Route media output"</string> <string name="permdesc_route_media_output" msgid="4932818749547244346">"Allows an application to route media output to other external devices."</string> + <string name="permlab_access_keyguard_secure_storage" msgid="7565552237977815047">"Access keyguard secure storage"</string> + <string name="permdesc_access_keyguard_secure_storage" msgid="5866245484303285762">"Allows an application to access keyguard secure storage."</string> <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Touch twice for zoom control"</string> <string name="gadget_host_error_inflating" msgid="4882004314906466162">"Couldn\'t add widget."</string> <string name="ime_action_go" msgid="8320845651737369027">"Go"</string> diff --git a/core/res/res/values-es-rUS/strings.xml b/core/res/res/values-es-rUS/strings.xml index 985b088f63c1..aafa537f87db 100644 --- a/core/res/res/values-es-rUS/strings.xml +++ b/core/res/res/values-es-rUS/strings.xml @@ -1239,6 +1239,10 @@ <string name="permdesc_copyProtectedData" msgid="4390697124288317831">"Permite que la aplicación ejecute el servicio de contenedor predeterminado para que copie contenido. Las aplicaciones normales no deben utilizar este permiso."</string> <string name="permlab_route_media_output" msgid="1642024455750414694">"Dirigir salida de medios"</string> <string name="permdesc_route_media_output" msgid="4932818749547244346">"Permite que la aplicación dirija salidas de medios a otros dispositivos externos."</string> + <!-- no translation found for permlab_access_keyguard_secure_storage (7565552237977815047) --> + <skip /> + <!-- no translation found for permdesc_access_keyguard_secure_storage (5866245484303285762) --> + <skip /> <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Toca dos veces para acceder al control de zoom."</string> <string name="gadget_host_error_inflating" msgid="4882004314906466162">"No se pudo agregar el widget."</string> <string name="ime_action_go" msgid="8320845651737369027">"Ir"</string> diff --git a/core/res/res/values-es/strings.xml b/core/res/res/values-es/strings.xml index febefe3153a1..a0e858d26dd5 100644 --- a/core/res/res/values-es/strings.xml +++ b/core/res/res/values-es/strings.xml @@ -1239,6 +1239,8 @@ <string name="permdesc_copyProtectedData" msgid="4390697124288317831">"Permite que la aplicación ejecute el servicio de contenedor predeterminado para copiar contenido. Las aplicaciones normales no deben usar este permiso."</string> <string name="permlab_route_media_output" msgid="1642024455750414694">"Dirigir salida de medio"</string> <string name="permdesc_route_media_output" msgid="4932818749547244346">"Permite que la aplicación dirija salidas de medios a otros dispositivos externos."</string> + <string name="permlab_access_keyguard_secure_storage" msgid="7565552237977815047">"Acceder al almacenamiento seguro de bloqueos"</string> + <string name="permdesc_access_keyguard_secure_storage" msgid="5866245484303285762">"Permite que una aplicación acceda al almacenamiento seguro de bloqueos."</string> <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Toca dos veces para acceder al control de zoom."</string> <string name="gadget_host_error_inflating" msgid="4882004314906466162">"No se ha podido añadir el widget."</string> <string name="ime_action_go" msgid="8320845651737369027">"Ir"</string> diff --git a/core/res/res/values-et/strings.xml b/core/res/res/values-et/strings.xml index 2815c4386cfc..f8b61d79d91f 100644 --- a/core/res/res/values-et/strings.xml +++ b/core/res/res/values-et/strings.xml @@ -1239,6 +1239,10 @@ <string name="permdesc_copyProtectedData" msgid="4390697124288317831">"Võimaldab rakendusel võtta sisu kopeerimiseks appi vaikekonteinerteenuse. Mitte kasutada tavarakenduste puhul."</string> <string name="permlab_route_media_output" msgid="1642024455750414694">"Meediaväljundi teekonna koostamine"</string> <string name="permdesc_route_media_output" msgid="4932818749547244346">"Võimaldab rakendusel koostada teekonna meediaväljundist teistesse välistesse seadmetesse."</string> + <!-- no translation found for permlab_access_keyguard_secure_storage (7565552237977815047) --> + <skip /> + <!-- no translation found for permdesc_access_keyguard_secure_storage (5866245484303285762) --> + <skip /> <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Suumi juhtimiseks puudutage kaks korda"</string> <string name="gadget_host_error_inflating" msgid="4882004314906466162">"Vidinat ei saanud lisada."</string> <string name="ime_action_go" msgid="8320845651737369027">"Mine"</string> diff --git a/core/res/res/values-fa/strings.xml b/core/res/res/values-fa/strings.xml index 660029a9df30..ee8b77fa9c79 100644 --- a/core/res/res/values-fa/strings.xml +++ b/core/res/res/values-fa/strings.xml @@ -1239,6 +1239,8 @@ <string name="permdesc_copyProtectedData" msgid="4390697124288317831">"به برنامه اجازه میدهد تا سرویس پیشفرض را فراخوانی کند و محتوا را کپی کند. برای استفاده برنامههای عادی مورد نیاز نیست."</string> <string name="permlab_route_media_output" msgid="1642024455750414694">"تعیین مسیر خروجی رسانه"</string> <string name="permdesc_route_media_output" msgid="4932818749547244346">"به یک برنامه اجازه میدهد خروجی رسانه را به دستگاههای خارجی دیگر تعیین مسیر کند."</string> + <string name="permlab_access_keyguard_secure_storage" msgid="7565552237977815047">"دسترسی به فضای ذخیرهسازی ایمن محافظ کلید"</string> + <string name="permdesc_access_keyguard_secure_storage" msgid="5866245484303285762">"به یک برنامه کاربردی برای دسترسی به فضای ذخیرهسازی ایمن محافظ کلید اجازه میدهد."</string> <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"دوبار لمس کنید تا بزرگنمایی کنترل شود"</string> <string name="gadget_host_error_inflating" msgid="4882004314906466162">"افزودن ابزارک انجام نشد."</string> <string name="ime_action_go" msgid="8320845651737369027">"برو"</string> diff --git a/core/res/res/values-fi/strings.xml b/core/res/res/values-fi/strings.xml index 78e14121214e..20067ea8b815 100644 --- a/core/res/res/values-fi/strings.xml +++ b/core/res/res/values-fi/strings.xml @@ -1239,6 +1239,8 @@ <string name="permdesc_copyProtectedData" msgid="4390697124288317831">"Antaa sovelluksen kutsua oletussäilöpalvelua sisällön kopioimiseen. Ei tavallisten sovellusten käyttöön."</string> <string name="permlab_route_media_output" msgid="1642024455750414694">"Median reititys"</string> <string name="permdesc_route_media_output" msgid="4932818749547244346">"Antaa sovelluksen reitittää mediaa muihin ulkoisiin laitteisiin."</string> + <string name="permlab_access_keyguard_secure_storage" msgid="7565552237977815047">"Salasanalla suojatun tallennustilan hallinta"</string> + <string name="permdesc_access_keyguard_secure_storage" msgid="5866245484303285762">"Sallii sovelluksen käyttää salasanalla suojattua tallennustilaa."</string> <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Ohjaa zoomausta napauttamalla kahdesti"</string> <string name="gadget_host_error_inflating" msgid="4882004314906466162">"Widgetin lisääminen epäonnistui."</string> <string name="ime_action_go" msgid="8320845651737369027">"Siirry"</string> diff --git a/core/res/res/values-fr/strings.xml b/core/res/res/values-fr/strings.xml index 4c9c0a550fdd..608f291ff344 100644 --- a/core/res/res/values-fr/strings.xml +++ b/core/res/res/values-fr/strings.xml @@ -1239,6 +1239,10 @@ <string name="permdesc_copyProtectedData" msgid="4390697124288317831">"Permet à l\'application d\'invoquer le service de conteneur par défaut pour copier du contenu. Les applications standards ne doivent pas utiliser cette fonctionnalité."</string> <string name="permlab_route_media_output" msgid="1642024455750414694">"Diriger la sortie multimédia"</string> <string name="permdesc_route_media_output" msgid="4932818749547244346">"Permet à une application de diriger la sortie multimédia vers d\'autres appareils externes."</string> + <!-- no translation found for permlab_access_keyguard_secure_storage (7565552237977815047) --> + <skip /> + <!-- no translation found for permdesc_access_keyguard_secure_storage (5866245484303285762) --> + <skip /> <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Appuyez deux fois pour régler le zoom."</string> <string name="gadget_host_error_inflating" msgid="4882004314906466162">"Impossible d\'ajouter le widget."</string> <string name="ime_action_go" msgid="8320845651737369027">"OK"</string> diff --git a/core/res/res/values-hi/strings.xml b/core/res/res/values-hi/strings.xml index 3aaace5dd357..e7bc9d96dea9 100644 --- a/core/res/res/values-hi/strings.xml +++ b/core/res/res/values-hi/strings.xml @@ -1239,6 +1239,8 @@ <string name="permdesc_copyProtectedData" msgid="4390697124288317831">"एप्लिकेशन को सामग्री की प्रतिलिपि बनाने के लिए डिफ़ॉल्ट कंटेनर सेवा शुरू करने देता है. सामान्य एप्लिकेशन द्वारा उपयोग करने के लिए नहीं."</string> <string name="permlab_route_media_output" msgid="1642024455750414694">"मीडिया आउटपुट को रूट करें"</string> <string name="permdesc_route_media_output" msgid="4932818749547244346">"एप्लिकेशन को मीडिया आउटपुट को अन्य बाहरी उपकरणों पर रूट करने देता है."</string> + <string name="permlab_access_keyguard_secure_storage" msgid="7565552237977815047">"कीगार्ड सुरक्षित संग्रहण एक्सेस करें"</string> + <string name="permdesc_access_keyguard_secure_storage" msgid="5866245484303285762">"एप्लिकेशन को कीगार्ड सुरक्षित संग्रहण एक्सेस करने देती है."</string> <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"ज़ूम नियंत्रण के लिए दो बार स्पर्श करें"</string> <string name="gadget_host_error_inflating" msgid="4882004314906466162">"विजेट नहीं जोड़ा जा सका."</string> <string name="ime_action_go" msgid="8320845651737369027">"जाएं"</string> diff --git a/core/res/res/values-hr/strings.xml b/core/res/res/values-hr/strings.xml index dbf80ce4b306..5552e86336bf 100644 --- a/core/res/res/values-hr/strings.xml +++ b/core/res/res/values-hr/strings.xml @@ -1239,6 +1239,8 @@ <string name="permdesc_copyProtectedData" msgid="4390697124288317831">"Omogućuje aplikaciji dozivanje usluge zadanog spremnika radi kopiranja sadržaja. Nije namijenjena uobičajenim aplikacijama."</string> <string name="permlab_route_media_output" msgid="1642024455750414694">"Usmjeravanje medijskog izlaza"</string> <string name="permdesc_route_media_output" msgid="4932818749547244346">"Aplikaciji omogućuje usmjeravanje medijskog izlaza na druge vanjske uređaje."</string> + <string name="permlab_access_keyguard_secure_storage" msgid="7565552237977815047">"Pristup zaključanoj sigurnoj pohrani"</string> + <string name="permdesc_access_keyguard_secure_storage" msgid="5866245484303285762">"Omogućuje aplikaciji pristupanje zaključanoj sigurnoj pohrani."</string> <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Dodirnite dvaput za upravljanje zumiranjem"</string> <string name="gadget_host_error_inflating" msgid="4882004314906466162">"Widget nije moguće dodati."</string> <string name="ime_action_go" msgid="8320845651737369027">"Idi"</string> diff --git a/core/res/res/values-hu/strings.xml b/core/res/res/values-hu/strings.xml index 3cb1df766a0e..32b682b861d2 100644 --- a/core/res/res/values-hu/strings.xml +++ b/core/res/res/values-hu/strings.xml @@ -1239,6 +1239,8 @@ <string name="permdesc_copyProtectedData" msgid="4390697124288317831">"Lehetővé teszi az alkalmazás számára az alapértelmezett tárolószolgáltatás használatát tartalom másolásához. Normál alkalmazások nem használhatják."</string> <string name="permlab_route_media_output" msgid="1642024455750414694">"Médiafájlok kimenetének irányítása"</string> <string name="permdesc_route_media_output" msgid="4932818749547244346">"Lehetővé teszi az alkalmazás számára, hogy más külső eszközökre irányítsa a médiafájlok lejátszását."</string> + <string name="permlab_access_keyguard_secure_storage" msgid="7565552237977815047">"Hozzáférés a kóddal védett tárhelyhez"</string> + <string name="permdesc_access_keyguard_secure_storage" msgid="5866245484303285762">"Lehetővé teszi egy alkalmazás számára, hogy hozzáférjen a kóddal védett tárhelyhez."</string> <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Érintse meg kétszer a nagyítás beállításához"</string> <string name="gadget_host_error_inflating" msgid="4882004314906466162">"Nem sikerült hozzáadni a modult."</string> <string name="ime_action_go" msgid="8320845651737369027">"Ugrás"</string> diff --git a/core/res/res/values-in/strings.xml b/core/res/res/values-in/strings.xml index 33e3b2d22ec2..092fe809fb78 100644 --- a/core/res/res/values-in/strings.xml +++ b/core/res/res/values-in/strings.xml @@ -1239,6 +1239,8 @@ <string name="permdesc_copyProtectedData" msgid="4390697124288317831">"Mengizinkan apl menjalankan layanan kontainer default untuk menyalin konten. Tidak untuk digunakan oleh apl normal."</string> <string name="permlab_route_media_output" msgid="1642024455750414694">"Menentukan rute keluaran media"</string> <string name="permdesc_route_media_output" msgid="4932818749547244346">"Memungkinkan aplikasi menentukan rute keluaran media ke perangkat eksternal lainnya."</string> + <string name="permlab_access_keyguard_secure_storage" msgid="7565552237977815047">"Mengakses pengaman penyimpanan aman"</string> + <string name="permdesc_access_keyguard_secure_storage" msgid="5866245484303285762">"Mengizinkan aplikasi mengakses pengaman penyimpanan aman."</string> <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Sentuh dua kali untuk mengontrol perbesar/perkecil"</string> <string name="gadget_host_error_inflating" msgid="4882004314906466162">"Tidak dapat menambahkan widget."</string> <string name="ime_action_go" msgid="8320845651737369027">"Buka"</string> diff --git a/core/res/res/values-it/strings.xml b/core/res/res/values-it/strings.xml index ec9a00ed33c0..bc84df2335b3 100644 --- a/core/res/res/values-it/strings.xml +++ b/core/res/res/values-it/strings.xml @@ -1239,6 +1239,8 @@ <string name="permdesc_copyProtectedData" msgid="4390697124288317831">"Consente all\'applicazione di richiamare il servizio container predefinito per la copia di contenuti. Da non usare per normali applicazioni."</string> <string name="permlab_route_media_output" msgid="1642024455750414694">"Indirizzamento uscita media"</string> <string name="permdesc_route_media_output" msgid="4932818749547244346">"Consente a un\'applicazione di indirizzare l\'uscita di media verso altri dispositivi esterni."</string> + <string name="permlab_access_keyguard_secure_storage" msgid="7565552237977815047">"Accesso all\'archivio sicuro keyguard"</string> + <string name="permdesc_access_keyguard_secure_storage" msgid="5866245484303285762">"Consente a un\'applicazione di accedere all\'archivio sicuro keguard."</string> <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Tocca due volte per il comando dello zoom"</string> <string name="gadget_host_error_inflating" msgid="4882004314906466162">"Aggiunta del widget non riuscita."</string> <string name="ime_action_go" msgid="8320845651737369027">"Vai"</string> diff --git a/core/res/res/values-iw/strings.xml b/core/res/res/values-iw/strings.xml index 6a0d9e22a01b..ec44dbf4f284 100644 --- a/core/res/res/values-iw/strings.xml +++ b/core/res/res/values-iw/strings.xml @@ -1239,6 +1239,8 @@ <string name="permdesc_copyProtectedData" msgid="4390697124288317831">"מאפשר ליישום להפעיל שירות גורם מכיל המוגדר כברירת מחדל להעתקת תוכן. לא מיועד לשימוש על ידי יישומים רגילים."</string> <string name="permlab_route_media_output" msgid="1642024455750414694">"ניתוב פלט מדיה"</string> <string name="permdesc_route_media_output" msgid="4932818749547244346">"מאפשר ליישום לנתב פלט מדיה למכשירים חיצוניים אחרים."</string> + <string name="permlab_access_keyguard_secure_storage" msgid="7565552237977815047">"גישה לאחסון המוגן באמצעות מפתח"</string> + <string name="permdesc_access_keyguard_secure_storage" msgid="5866245484303285762">"מאפשר ליישום לגשת לאחסון המוגן באמצעות מפתח."</string> <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"גע פעמיים לבקרת מרחק מתצוגה"</string> <string name="gadget_host_error_inflating" msgid="4882004314906466162">"לא ניתן להוסיף widget."</string> <string name="ime_action_go" msgid="8320845651737369027">"התחל"</string> diff --git a/core/res/res/values-ja/strings.xml b/core/res/res/values-ja/strings.xml index 5009af494f16..e69a87fd8d17 100644 --- a/core/res/res/values-ja/strings.xml +++ b/core/res/res/values-ja/strings.xml @@ -1239,6 +1239,8 @@ <string name="permdesc_copyProtectedData" msgid="4390697124288317831">"デフォルトのコンテナサービスを呼び出してコンテンツをコピーすることをアプリに許可します。通常のアプリでは使用しません。"</string> <string name="permlab_route_media_output" msgid="1642024455750414694">"メディア出力のルーティング"</string> <string name="permdesc_route_media_output" msgid="4932818749547244346">"メディア出力を他の外部デバイスにルーティングすることをアプリに許可します。"</string> + <string name="permlab_access_keyguard_secure_storage" msgid="7565552237977815047">"キーガードセキュアストレージへのアクセス"</string> + <string name="permdesc_access_keyguard_secure_storage" msgid="5866245484303285762">"キーガードセキュアストレージへのアクセスをアプリに許可する"</string> <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"ダブルタップでズームコントロール"</string> <string name="gadget_host_error_inflating" msgid="4882004314906466162">"ウィジェットを追加できませんでした。"</string> <string name="ime_action_go" msgid="8320845651737369027">"移動"</string> diff --git a/core/res/res/values-ko/strings.xml b/core/res/res/values-ko/strings.xml index 46e633953f0d..1d84ab0b86a5 100644 --- a/core/res/res/values-ko/strings.xml +++ b/core/res/res/values-ko/strings.xml @@ -1239,6 +1239,10 @@ <string name="permdesc_copyProtectedData" msgid="4390697124288317831">"기본 컨테이너 서비스를 호출하여 콘텐츠를 복사할 수 있도록 허용합니다. 일반 앱에서는 사용하지 않습니다."</string> <string name="permlab_route_media_output" msgid="1642024455750414694">"미디어 출력 연결"</string> <string name="permdesc_route_media_output" msgid="4932818749547244346">"앱이 미디어 출력을 기타 외부 기기에 연결할 수 있도록 허용합니다."</string> + <!-- no translation found for permlab_access_keyguard_secure_storage (7565552237977815047) --> + <skip /> + <!-- no translation found for permdesc_access_keyguard_secure_storage (5866245484303285762) --> + <skip /> <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"확대/축소하려면 두 번 터치하세요."</string> <string name="gadget_host_error_inflating" msgid="4882004314906466162">"위젯을 추가할 수 없습니다."</string> <string name="ime_action_go" msgid="8320845651737369027">"이동"</string> diff --git a/core/res/res/values-land/arrays.xml b/core/res/res/values-land/arrays.xml index 240b9e47696a..5602a1cf428e 100644 --- a/core/res/res/values-land/arrays.xml +++ b/core/res/res/values-land/arrays.xml @@ -19,54 +19,4 @@ --> <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <!-- Resources for GlowPadView in LockScreen --> - <array name="lockscreen_targets_when_silent"> - <item>@null</item>" - <item>@drawable/ic_action_assist_generic</item> - <item>@drawable/ic_lockscreen_soundon</item> - <item>@drawable/ic_lockscreen_unlock</item> - </array> - - <array name="lockscreen_target_descriptions_when_silent"> - <item>@null</item> - <item>@string/description_target_search</item> - <item>@string/description_target_soundon</item> - <item>@string/description_target_unlock</item> - </array> - - <array name="lockscreen_direction_descriptions"> - <item>@null</item> - <item>@string/description_direction_up</item> - <item>@string/description_direction_left</item> - <item>@string/description_direction_down</item> - </array> - - <array name="lockscreen_targets_when_soundon"> - <item>@null</item> - <item>@drawable/ic_action_assist_generic</item> - <item>@drawable/ic_lockscreen_silent</item> - <item>@drawable/ic_lockscreen_unlock</item> - </array> - - <array name="lockscreen_target_descriptions_when_soundon"> - <item>@null</item> - <item>@string/description_target_search</item> - <item>@string/description_target_silent</item> - <item>@string/description_target_unlock</item> - </array> - - <array name="lockscreen_targets_with_camera"> - <item>@null</item> - <item>@drawable/ic_action_assist_generic</item> - <item>@drawable/ic_lockscreen_camera</item> - <item>@drawable/ic_lockscreen_unlock</item> - </array> - - <array name="lockscreen_target_descriptions_with_camera"> - <item>@null</item> - <item>@string/description_target_search</item> - <item>@string/description_target_camera</item> - <item>@string/description_target_unlock</item> - </array> - </resources> diff --git a/core/res/res/values-lt/strings.xml b/core/res/res/values-lt/strings.xml index fb476b5886a3..1fd04592532a 100644 --- a/core/res/res/values-lt/strings.xml +++ b/core/res/res/values-lt/strings.xml @@ -1239,6 +1239,10 @@ <string name="permdesc_copyProtectedData" msgid="4390697124288317831">"Leidžiama programai iškviesti numatytąją sudėtinio rodinio paslaugą, kad būtų kopijuojamas turinys. Neskirta naudoti įprastoms programoms."</string> <string name="permlab_route_media_output" msgid="1642024455750414694">"Medijos išvesties nukreipimas"</string> <string name="permdesc_route_media_output" msgid="4932818749547244346">"Leidžiama programai nukreipti medijos išvestį į kitus išorinius įrenginius."</string> + <!-- no translation found for permlab_access_keyguard_secure_storage (7565552237977815047) --> + <skip /> + <!-- no translation found for permdesc_access_keyguard_secure_storage (5866245484303285762) --> + <skip /> <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Dukart palieskite, kad valdytumėte mastelio keitimą"</string> <string name="gadget_host_error_inflating" msgid="4882004314906466162">"Nepavyko pridėti."</string> <string name="ime_action_go" msgid="8320845651737369027">"Pradėti"</string> diff --git a/core/res/res/values-lv/strings.xml b/core/res/res/values-lv/strings.xml index 667e29cae4a2..ec7bc98ea410 100644 --- a/core/res/res/values-lv/strings.xml +++ b/core/res/res/values-lv/strings.xml @@ -1239,6 +1239,10 @@ <string name="permdesc_copyProtectedData" msgid="4390697124288317831">"Ļauj lietotnei izsaukt noklusējuma konteinera pakalpojumu, lai kopētu saturu. Atļauja neattiecas uz parastām lietotnēm."</string> <string name="permlab_route_media_output" msgid="1642024455750414694">"Multivides datu izejas maršrutēšana"</string> <string name="permdesc_route_media_output" msgid="4932818749547244346">"Ļauj lietojumprogrammai maršrutēt multivides datu izeju uz citām ārējām ierīcēm."</string> + <!-- no translation found for permlab_access_keyguard_secure_storage (7565552237977815047) --> + <skip /> + <!-- no translation found for permdesc_access_keyguard_secure_storage (5866245484303285762) --> + <skip /> <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Pieskarieties divreiz, lai kontrolētu tālummaiņu."</string> <string name="gadget_host_error_inflating" msgid="4882004314906466162">"Nevarēja pievienot logrīku."</string> <string name="ime_action_go" msgid="8320845651737369027">"Doties uz"</string> diff --git a/core/res/res/values-ms/strings.xml b/core/res/res/values-ms/strings.xml index a04aac11770d..8dd7eaa31554 100644 --- a/core/res/res/values-ms/strings.xml +++ b/core/res/res/values-ms/strings.xml @@ -1239,6 +1239,8 @@ <string name="permdesc_copyProtectedData" msgid="4390697124288317831">"Membenarkan apl untuk menggunakan perkhidmatan bekas lalai untuk menyalin kandungan. Bukan untuk digunakan oleh apl biasa."</string> <string name="permlab_route_media_output" msgid="1642024455750414694">"Buat laluan output media"</string> <string name="permdesc_route_media_output" msgid="4932818749547244346">"Membenarkan apl untuk membuat laluan output media ke peranti luaran lain."</string> + <string name="permlab_access_keyguard_secure_storage" msgid="7565552237977815047">"Akses storan selamat pengawal kekunci"</string> + <string name="permdesc_access_keyguard_secure_storage" msgid="5866245484303285762">"Membenarkan aplikasi mengakses storan selamat pengawal kekunci."</string> <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Sentuh dua kali untuk mendapatkan kawalan zum"</string> <string name="gadget_host_error_inflating" msgid="4882004314906466162">"Tidak dapat menambahkan widget."</string> <string name="ime_action_go" msgid="8320845651737369027">"Pergi"</string> diff --git a/core/res/res/values-nb/strings.xml b/core/res/res/values-nb/strings.xml index 62da0aef19b4..94fafcf56549 100644 --- a/core/res/res/values-nb/strings.xml +++ b/core/res/res/values-nb/strings.xml @@ -1239,6 +1239,8 @@ <string name="permdesc_copyProtectedData" msgid="4390697124288317831">"Lar appen påkalle standard meldingsbeholdertjeneste for kopiering av innhold. Ikke beregnet på vanlige apper."</string> <string name="permlab_route_media_output" msgid="1642024455750414694">"Videresending av medieutdata"</string> <string name="permdesc_route_media_output" msgid="4932818749547244346">"Lar en app videresende medieutdata til andre eksterne enheter."</string> + <string name="permlab_access_keyguard_secure_storage" msgid="7565552237977815047">"Bruk av sikker lagring via keyguard."</string> + <string name="permdesc_access_keyguard_secure_storage" msgid="5866245484303285762">"Lar en app bruke sikker lagring via keyguard."</string> <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Trykk to ganger for zoomkontroll"</string> <string name="gadget_host_error_inflating" msgid="4882004314906466162">"Kunne ikke legge til modulen."</string> <string name="ime_action_go" msgid="8320845651737369027">"Utfør"</string> diff --git a/core/res/res/values-nl/strings.xml b/core/res/res/values-nl/strings.xml index 47264b0302b0..425795bf7302 100644 --- a/core/res/res/values-nl/strings.xml +++ b/core/res/res/values-nl/strings.xml @@ -1239,6 +1239,8 @@ <string name="permdesc_copyProtectedData" msgid="4390697124288317831">"Hiermee kan de app de standaard containerservice aanroepen om inhoud te kopiëren. Niet voor gebruik door normale apps."</string> <string name="permlab_route_media_output" msgid="1642024455750414694">"Media-uitvoer aansturen"</string> <string name="permdesc_route_media_output" msgid="4932818749547244346">"Hiermee kan een app media-uitvoer naar andere externe apparaten doorsturen."</string> + <string name="permlab_access_keyguard_secure_storage" msgid="7565552237977815047">"Toegang tot opslag met toetsbeveiliging"</string> + <string name="permdesc_access_keyguard_secure_storage" msgid="5866245484303285762">"Hiermee krijgt een app toegang tot opslag met toetsbeveiliging."</string> <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Raak twee keer aan voor zoomregeling"</string> <string name="gadget_host_error_inflating" msgid="4882004314906466162">"Kan widget niet toevoegen."</string> <string name="ime_action_go" msgid="8320845651737369027">"Ga"</string> diff --git a/core/res/res/values-pl/strings.xml b/core/res/res/values-pl/strings.xml index 98d7477a14aa..c12c4d002dfb 100644 --- a/core/res/res/values-pl/strings.xml +++ b/core/res/res/values-pl/strings.xml @@ -1239,6 +1239,10 @@ <string name="permdesc_copyProtectedData" msgid="4390697124288317831">"Pozwala aplikacji na wywoływanie domyślnej usługi kontenera w celu skopiowania zawartości. Nieprzeznaczone dla zwykłych aplikacji."</string> <string name="permlab_route_media_output" msgid="1642024455750414694">"Kierowanie wyjścia multimediów"</string> <string name="permdesc_route_media_output" msgid="4932818749547244346">"Pozwala aplikacji na kierowanie wyjściowych danych multimedialnych do innych urządzeń zewnętrznych."</string> + <!-- no translation found for permlab_access_keyguard_secure_storage (7565552237977815047) --> + <skip /> + <!-- no translation found for permdesc_access_keyguard_secure_storage (5866245484303285762) --> + <skip /> <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Dotknij dwukrotnie, aby sterować powiększeniem."</string> <string name="gadget_host_error_inflating" msgid="4882004314906466162">"Nie można dodać widżetu."</string> <string name="ime_action_go" msgid="8320845651737369027">"OK"</string> diff --git a/core/res/res/values-pt-rPT/strings.xml b/core/res/res/values-pt-rPT/strings.xml index 5a701a052615..d1ae962a9c14 100644 --- a/core/res/res/values-pt-rPT/strings.xml +++ b/core/res/res/values-pt-rPT/strings.xml @@ -1239,6 +1239,8 @@ <string name="permdesc_copyProtectedData" msgid="4390697124288317831">"Permite à aplicação invocar o serviço de contentor predefinido para copiar conteúdo. Não se destina a ser utilizado por aplicações normais."</string> <string name="permlab_route_media_output" msgid="1642024455750414694">"Encaminhar saída de som multimédia"</string> <string name="permdesc_route_media_output" msgid="4932818749547244346">"Permite que a aplicação encaminhe a saída de som multimédia para outros dispositivos externos."</string> + <string name="permlab_access_keyguard_secure_storage" msgid="7565552237977815047">"Aceder ao armazenamento seguro de proteção de teclado"</string> + <string name="permdesc_access_keyguard_secure_storage" msgid="5866245484303285762">"Permite a uma aplicação aceder ao armazenamento seguro de proteção de teclado."</string> <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Toque duas vezes para controlar o zoom"</string> <string name="gadget_host_error_inflating" msgid="4882004314906466162">"Não foi possível adicionar widget."</string> <string name="ime_action_go" msgid="8320845651737369027">"Ir"</string> diff --git a/core/res/res/values-pt/strings.xml b/core/res/res/values-pt/strings.xml index 9eb11b226a3c..670406edc497 100644 --- a/core/res/res/values-pt/strings.xml +++ b/core/res/res/values-pt/strings.xml @@ -1239,6 +1239,10 @@ <string name="permdesc_copyProtectedData" msgid="4390697124288317831">"Permite que o aplicativo invoque serviços contêiner padrão para copiar conteúdo. Não deve ser usado em aplicativos normais."</string> <string name="permlab_route_media_output" msgid="1642024455750414694">"Rotear saída de mídia"</string> <string name="permdesc_route_media_output" msgid="4932818749547244346">"Permite que um aplicativo faça o roteamento de saída de mídia para outros dispositivos externos."</string> + <!-- no translation found for permlab_access_keyguard_secure_storage (7565552237977815047) --> + <skip /> + <!-- no translation found for permdesc_access_keyguard_secure_storage (5866245484303285762) --> + <skip /> <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Toque duas vezes para controlar o zoom"</string> <string name="gadget_host_error_inflating" msgid="4882004314906466162">"Não foi possível adicionar widget."</string> <string name="ime_action_go" msgid="8320845651737369027">"Ir"</string> diff --git a/core/res/res/values-rm/strings.xml b/core/res/res/values-rm/strings.xml index b49854a528db..997b63c9f5f5 100644 --- a/core/res/res/values-rm/strings.xml +++ b/core/res/res/values-rm/strings.xml @@ -1949,6 +1949,10 @@ <skip /> <!-- no translation found for permdesc_route_media_output (4932818749547244346) --> <skip /> + <!-- no translation found for permlab_access_keyguard_secure_storage (7565552237977815047) --> + <skip /> + <!-- no translation found for permdesc_access_keyguard_secure_storage (5866245484303285762) --> + <skip /> <!-- no translation found for tutorial_double_tap_to_zoom_message_short (4070433208160063538) --> <skip /> <!-- no translation found for gadget_host_error_inflating (4882004314906466162) --> diff --git a/core/res/res/values-ro/strings.xml b/core/res/res/values-ro/strings.xml index eb7185fcb799..ef01ea96139b 100644 --- a/core/res/res/values-ro/strings.xml +++ b/core/res/res/values-ro/strings.xml @@ -1239,6 +1239,10 @@ <string name="permdesc_copyProtectedData" msgid="4390697124288317831">"Permite aplicaţiei să invoce serviciul containerului prestabilit pentru a copia conţinutul. Nu se utilizează de aplicaţiile obişnuite."</string> <string name="permlab_route_media_output" msgid="1642024455750414694">"Direcţionează rezultatele media"</string> <string name="permdesc_route_media_output" msgid="4932818749547244346">"Permite unei aplicaţii să direcţioneze rezultate media către alte dispozitive externe."</string> + <!-- no translation found for permlab_access_keyguard_secure_storage (7565552237977815047) --> + <skip /> + <!-- no translation found for permdesc_access_keyguard_secure_storage (5866245484303285762) --> + <skip /> <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Atingeţi de două ori pentru a mări/micşora"</string> <string name="gadget_host_error_inflating" msgid="4882004314906466162">"Nu s-a putut adăuga widgetul."</string> <string name="ime_action_go" msgid="8320845651737369027">"Accesaţi"</string> diff --git a/core/res/res/values-ru/strings.xml b/core/res/res/values-ru/strings.xml index b8b1c29c7831..6676a185751b 100644 --- a/core/res/res/values-ru/strings.xml +++ b/core/res/res/values-ru/strings.xml @@ -1239,6 +1239,10 @@ <string name="permdesc_copyProtectedData" msgid="4390697124288317831">"Приложение сможет вызывать службу контейнеров по умолчанию для копирования данных. Это разрешение не используется обычными приложениями."</string> <string name="permlab_route_media_output" msgid="1642024455750414694">"Перенаправление мультимедийных данных"</string> <string name="permdesc_route_media_output" msgid="4932818749547244346">"Приложение сможет направлять поток мультимедиа на другие внешние устройства."</string> + <!-- no translation found for permlab_access_keyguard_secure_storage (7565552237977815047) --> + <skip /> + <!-- no translation found for permdesc_access_keyguard_secure_storage (5866245484303285762) --> + <skip /> <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Нажмите дважды для изменения масштаба"</string> <string name="gadget_host_error_inflating" msgid="4882004314906466162">"Не удалось добавить виджет."</string> <string name="ime_action_go" msgid="8320845651737369027">"Выбрать"</string> diff --git a/core/res/res/values-sk/strings.xml b/core/res/res/values-sk/strings.xml index c1d2c46fe9f0..baf57c21b4d3 100644 --- a/core/res/res/values-sk/strings.xml +++ b/core/res/res/values-sk/strings.xml @@ -1239,6 +1239,10 @@ <string name="permdesc_copyProtectedData" msgid="4390697124288317831">"Umožňuje volať predvolenú službu kontajnera na skopírovanie obsahu. Bežné aplikácie toto nastavenie nepoužívajú."</string> <string name="permlab_route_media_output" msgid="1642024455750414694">"Smerovanie výstupu médií"</string> <string name="permdesc_route_media_output" msgid="4932818749547244346">"Umožňuje aplikácii smerovať výstup médií do ďalších externých zariadení."</string> + <!-- no translation found for permlab_access_keyguard_secure_storage (7565552237977815047) --> + <skip /> + <!-- no translation found for permdesc_access_keyguard_secure_storage (5866245484303285762) --> + <skip /> <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Ovládacie prvky lupy zobrazíte dvojitým dotknutím"</string> <string name="gadget_host_error_inflating" msgid="4882004314906466162">"Miniaplikáciu sa nepodarilo pridať."</string> <string name="ime_action_go" msgid="8320845651737369027">"Hľadať"</string> diff --git a/core/res/res/values-sl/strings.xml b/core/res/res/values-sl/strings.xml index 7eb85832e0f5..d02d0a230264 100644 --- a/core/res/res/values-sl/strings.xml +++ b/core/res/res/values-sl/strings.xml @@ -1239,6 +1239,8 @@ <string name="permdesc_copyProtectedData" msgid="4390697124288317831">"Programu omogoča pozivanje privzete storitve vsebnika, da kopira vsebino. Ni za uporabo z navadnimi programi."</string> <string name="permlab_route_media_output" msgid="1642024455750414694">"Preusmeritev predstavnosti"</string> <string name="permdesc_route_media_output" msgid="4932818749547244346">"Aplikaciji omogoča preusmerjanje predstavnosti v druge zunanje naprave."</string> + <string name="permlab_access_keyguard_secure_storage" msgid="7565552237977815047">"Dostop do varne shrambe Keyguard."</string> + <string name="permdesc_access_keyguard_secure_storage" msgid="5866245484303285762">"Aplikaciji omogoča dostop do varne shrambe Keyguard."</string> <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Dvakrat se dotaknite za nadzor povečave/pomanjšave"</string> <string name="gadget_host_error_inflating" msgid="4882004314906466162">"Pripomočka ni bilo mogoče dodati."</string> <string name="ime_action_go" msgid="8320845651737369027">"Pojdi"</string> diff --git a/core/res/res/values-sr/strings.xml b/core/res/res/values-sr/strings.xml index de942eae4174..3d6dfed7a9ba 100644 --- a/core/res/res/values-sr/strings.xml +++ b/core/res/res/values-sr/strings.xml @@ -1239,6 +1239,8 @@ <string name="permdesc_copyProtectedData" msgid="4390697124288317831">"Дозвољава апликацији да од подразумеване услуге контејнера захтева да копира садржај. Не користе је уобичајене апликације."</string> <string name="permlab_route_media_output" msgid="1642024455750414694">"Усмеравање излаза медија"</string> <string name="permdesc_route_media_output" msgid="4932818749547244346">"Дозвољава апликацији да усмерава излаз медија на друге спољне уређаје."</string> + <string name="permlab_access_keyguard_secure_storage" msgid="7565552237977815047">"Приступај безбедној меморији заштићеној шифром"</string> + <string name="permdesc_access_keyguard_secure_storage" msgid="5866245484303285762">"Дозвољава апликацији да приступа безбедној меморији заштићеној шифром."</string> <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Додирните двапут да бисте контролисали зум"</string> <string name="gadget_host_error_inflating" msgid="4882004314906466162">"Није могуће додати виџет."</string> <string name="ime_action_go" msgid="8320845651737369027">"Иди"</string> diff --git a/core/res/res/values-sv/strings.xml b/core/res/res/values-sv/strings.xml index adfc22a3d824..62639cc114de 100644 --- a/core/res/res/values-sv/strings.xml +++ b/core/res/res/values-sv/strings.xml @@ -1239,6 +1239,10 @@ <string name="permdesc_copyProtectedData" msgid="4390697124288317831">"Tillåter att appen kopierar innehåll genom att standardbehållartjänsten startas. Används inte av vanliga appar."</string> <string name="permlab_route_media_output" msgid="1642024455750414694">"Omdirigera medieuppspelning"</string> <string name="permdesc_route_media_output" msgid="4932818749547244346">"Tillåter att appen omdirigerar medieuppspelningar till andra externa enheter."</string> + <!-- no translation found for permlab_access_keyguard_secure_storage (7565552237977815047) --> + <skip /> + <!-- no translation found for permdesc_access_keyguard_secure_storage (5866245484303285762) --> + <skip /> <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Tryck två gånger för zoomkontroll"</string> <string name="gadget_host_error_inflating" msgid="4882004314906466162">"Det gick inte att lägga till widgeten."</string> <string name="ime_action_go" msgid="8320845651737369027">"Kör"</string> diff --git a/core/res/res/values-sw/strings.xml b/core/res/res/values-sw/strings.xml index f30d11f5f905..029bf3b9dbb5 100644 --- a/core/res/res/values-sw/strings.xml +++ b/core/res/res/values-sw/strings.xml @@ -1239,6 +1239,10 @@ <string name="permdesc_copyProtectedData" msgid="4390697124288317831">"Inaruhusu programu kuomba huduma ya chombo chaguo-msingi kunakili maudhui. Si ya matumizi na programu za kawiada."</string> <string name="permlab_route_media_output" msgid="1642024455750414694">"Fuatalia utoaji wa habari"</string> <string name="permdesc_route_media_output" msgid="4932818749547244346">"Inaruhusu programu kufuatilia utoaji wa habari kwa vifaa vingine vya nje."</string> + <!-- no translation found for permlab_access_keyguard_secure_storage (7565552237977815047) --> + <skip /> + <!-- no translation found for permdesc_access_keyguard_secure_storage (5866245484303285762) --> + <skip /> <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Gusa mara mbili kwa udhibiti cha kuza"</string> <string name="gadget_host_error_inflating" msgid="4882004314906466162">"Haikuweza kuongeza wijeti."</string> <string name="ime_action_go" msgid="8320845651737369027">"Nenda"</string> diff --git a/core/res/res/values-sw600dp-land/arrays.xml b/core/res/res/values-sw600dp-land/arrays.xml index 55502164a751..5602a1cf428e 100644 --- a/core/res/res/values-sw600dp-land/arrays.xml +++ b/core/res/res/values-sw600dp-land/arrays.xml @@ -19,54 +19,4 @@ --> <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <!-- Resources for GlowPadView in LockScreen --> - <array name="lockscreen_targets_when_silent"> - <item>@drawable/ic_lockscreen_unlock</item> - <item>@null</item> - <item>@drawable/ic_lockscreen_soundon</item> - <item>@null</item> - </array> - - <array name="lockscreen_target_descriptions_when_silent"> - <item>@string/description_target_unlock</item> - <item>@null</item> - <item>@string/description_target_soundon</item> - <item>@null</item> - </array> - - <array name="lockscreen_direction_descriptions"> - <item>@string/description_direction_right</item> - <item>@null</item> - <item>@string/description_direction_left</item> - <item>@null</item> - </array> - - <array name="lockscreen_targets_when_soundon"> - <item>@drawable/ic_lockscreen_unlock</item> - <item>@null</item> - <item>@drawable/ic_lockscreen_silent</item> - <item>@null</item> - </array> - - <array name="lockscreen_target_descriptions_when_soundon"> - <item>@string/description_target_unlock</item> - <item>@null</item> - <item>@string/description_target_silent</item> - <item>@null</item> - </array> - - <array name="lockscreen_targets_with_camera"> - <item>@drawable/ic_lockscreen_unlock</item> - <item>@drawable/ic_action_assist_generic</item> - <item>@drawable/ic_lockscreen_camera</item> - <item>@null</item> - </array> - - <array name="lockscreen_target_descriptions_with_camera"> - <item>@string/description_target_unlock</item> - <item>@string/description_target_search</item> - <item>@string/description_target_camera</item> - <item>@null</item> - </array> - </resources> diff --git a/core/res/res/values-th/strings.xml b/core/res/res/values-th/strings.xml index 1a6d6105fc76..980b7644eca5 100644 --- a/core/res/res/values-th/strings.xml +++ b/core/res/res/values-th/strings.xml @@ -1239,6 +1239,8 @@ <string name="permdesc_copyProtectedData" msgid="4390697124288317831">"อนุญาตให้แอปพลิเคชันเรียกใช้บริการที่เก็บค่าเริ่มต้นเพื่อคัดลอกเนื้อหา ไม่ใช้สำหรับแอปพลิเคชันทั่วไป"</string> <string name="permlab_route_media_output" msgid="1642024455750414694">"กำหนดเส้นทางเอาต์พุตของสื่อ"</string> <string name="permdesc_route_media_output" msgid="4932818749547244346">"อนุญาตให้แอปพลิเคชันกำหนดเส้นทางเอาต์พุตของสื่อไปยังอุปกรณ์ภายนอกอื่นๆ"</string> + <string name="permlab_access_keyguard_secure_storage" msgid="7565552237977815047">"เข้าถึงพื้นที่จัดเก็บที่รักษาความปลอดภัยด้วยคีย์การ์ด"</string> + <string name="permdesc_access_keyguard_secure_storage" msgid="5866245484303285762">"อนุญาตให้แอปพลิเคชันเข้าถึงพื้นที่จัดเก็บที่รักษาความปลอดภัยด้วยคีย์การ์ด"</string> <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"แตะสองครั้งเพื่อควบคุมการซูม"</string> <string name="gadget_host_error_inflating" msgid="4882004314906466162">"ไม่สามารถเพิ่มวิดเจ็ต"</string> <string name="ime_action_go" msgid="8320845651737369027">"ไป"</string> diff --git a/core/res/res/values-tl/strings.xml b/core/res/res/values-tl/strings.xml index 13541292b92e..6af198f1861d 100644 --- a/core/res/res/values-tl/strings.xml +++ b/core/res/res/values-tl/strings.xml @@ -1239,6 +1239,8 @@ <string name="permdesc_copyProtectedData" msgid="4390697124288317831">"Pinapayagan ang app na i-apela ang default na serbisyo ng container upang kopyahin ang nilalaman. Hindi para sa paggamit ng normal na apps."</string> <string name="permlab_route_media_output" msgid="1642024455750414694">"I-route ang output ng media"</string> <string name="permdesc_route_media_output" msgid="4932818749547244346">"Pinapayagan ang application na mag-route ng output ng media sa iba pang mga panlabas na device."</string> + <string name="permlab_access_keyguard_secure_storage" msgid="7565552237977815047">"I-access ang secure na storage ng keyguard"</string> + <string name="permdesc_access_keyguard_secure_storage" msgid="5866245484303285762">"Nagbibigay-daan sa isang application na i-access ang secure na storage ng keyguard."</string> <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Pindutin nang dalawang beses para sa pagkontrol ng zoom"</string> <string name="gadget_host_error_inflating" msgid="4882004314906466162">"Hindi maidagdag ang widget."</string> <string name="ime_action_go" msgid="8320845651737369027">"Pumunta"</string> diff --git a/core/res/res/values-tr/strings.xml b/core/res/res/values-tr/strings.xml index aa3244c4a4c1..0dc6f20141d5 100644 --- a/core/res/res/values-tr/strings.xml +++ b/core/res/res/values-tr/strings.xml @@ -1239,6 +1239,10 @@ <string name="permdesc_copyProtectedData" msgid="4390697124288317831">"Uygulamaya, içerik kopyalamak için varsayılan kapsayıcı hizmetini çağırma izni verir. Normal uygulamaların kullanımına yönelik değildir."</string> <string name="permlab_route_media_output" msgid="1642024455750414694">"Medya çıktısını yönlendir"</string> <string name="permdesc_route_media_output" msgid="4932818749547244346">"Uygulamaya medya çıktısını başka harici cihazlara yönlendirme izni verir."</string> + <!-- no translation found for permlab_access_keyguard_secure_storage (7565552237977815047) --> + <skip /> + <!-- no translation found for permdesc_access_keyguard_secure_storage (5866245484303285762) --> + <skip /> <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Yakınlaştırma denetimi için iki kez dokunun"</string> <string name="gadget_host_error_inflating" msgid="4882004314906466162">"Widget eklenemedi."</string> <string name="ime_action_go" msgid="8320845651737369027">"Git"</string> diff --git a/core/res/res/values-uk/strings.xml b/core/res/res/values-uk/strings.xml index 2f6d65cfcb85..15d9a03f5d5c 100644 --- a/core/res/res/values-uk/strings.xml +++ b/core/res/res/values-uk/strings.xml @@ -1239,6 +1239,8 @@ <string name="permdesc_copyProtectedData" msgid="4390697124288317831">"Дозволяє програмі викликати службу контейнерів за умовчанням для копіювання вмісту. Не для використання звичайними програмами."</string> <string name="permlab_route_media_output" msgid="1642024455750414694">"Скеровувати вивід медіа-даних"</string> <string name="permdesc_route_media_output" msgid="4932818749547244346">"Дозволяє програмі скеровувати вивід медіа-даних на інші зовнішні пристрої."</string> + <string name="permlab_access_keyguard_secure_storage" msgid="7565552237977815047">"Отримувати доступ до безпечного сховища через клавіатуру"</string> + <string name="permdesc_access_keyguard_secure_storage" msgid="5866245484303285762">"Дозволяє програмі отримувати доступ до безпечного сховища через клавіатуру."</string> <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Двічі торкніться, щоб керувати масштабом"</string> <string name="gadget_host_error_inflating" msgid="4882004314906466162">"Не вдалося додати віджет."</string> <string name="ime_action_go" msgid="8320845651737369027">"Йти"</string> diff --git a/core/res/res/values-vi/strings.xml b/core/res/res/values-vi/strings.xml index df865973da89..0908f8d8cf30 100644 --- a/core/res/res/values-vi/strings.xml +++ b/core/res/res/values-vi/strings.xml @@ -1239,6 +1239,8 @@ <string name="permdesc_copyProtectedData" msgid="4390697124288317831">"Cho phép ứng dụng gọi ra dịch vụ bộ chứa mặc định để sao chép nội dung. Không dành cho ứng dụng thông thường."</string> <string name="permlab_route_media_output" msgid="1642024455750414694">"Định tuyến thiết bị ra phương tiện"</string> <string name="permdesc_route_media_output" msgid="4932818749547244346">"Cho phép ứng dụng định tuyến thiết bị ra phương tiện đến các thiết bị bên ngoài khác."</string> + <string name="permlab_access_keyguard_secure_storage" msgid="7565552237977815047">"Truy cập bộ lưu trữ an toàn khóa bàn phím"</string> + <string name="permdesc_access_keyguard_secure_storage" msgid="5866245484303285762">"Cho phép ứng dụng truy cập bộ lưu trữ an toàn khóa bàn phím."</string> <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Chạm hai lần để kiểm soát thu phóng"</string> <string name="gadget_host_error_inflating" msgid="4882004314906466162">"Không thể thêm tiện ích."</string> <string name="ime_action_go" msgid="8320845651737369027">"Đến"</string> diff --git a/core/res/res/values-zh-rCN/strings.xml b/core/res/res/values-zh-rCN/strings.xml index 554c1aa30124..ecbd0cd0829e 100644 --- a/core/res/res/values-zh-rCN/strings.xml +++ b/core/res/res/values-zh-rCN/strings.xml @@ -1239,6 +1239,10 @@ <string name="permdesc_copyProtectedData" msgid="4390697124288317831">"允许应用调用默认的容器服务,以便复制内容。普通应用不应使用此权限。"</string> <string name="permlab_route_media_output" msgid="1642024455750414694">"更改媒体输出线路"</string> <string name="permdesc_route_media_output" msgid="4932818749547244346">"允许该应用将媒体输出线路更改到其他外部设备。"</string> + <!-- no translation found for permlab_access_keyguard_secure_storage (7565552237977815047) --> + <skip /> + <!-- no translation found for permdesc_access_keyguard_secure_storage (5866245484303285762) --> + <skip /> <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"触摸两次可进行缩放控制"</string> <string name="gadget_host_error_inflating" msgid="4882004314906466162">"无法添加小部件。"</string> <string name="ime_action_go" msgid="8320845651737369027">"开始"</string> diff --git a/core/res/res/values-zh-rTW/strings.xml b/core/res/res/values-zh-rTW/strings.xml index c13cdf7b4845..39f62bc920bb 100644 --- a/core/res/res/values-zh-rTW/strings.xml +++ b/core/res/res/values-zh-rTW/strings.xml @@ -1239,6 +1239,8 @@ <string name="permdesc_copyProtectedData" msgid="4390697124288317831">"允許觸發預設容器服務,以便複製內容 (不建議一般應用程式使用)。"</string> <string name="permlab_route_media_output" msgid="1642024455750414694">"轉送媒體輸出"</string> <string name="permdesc_route_media_output" msgid="4932818749547244346">"允許應用程式將媒體輸出轉送至其他外部裝置。"</string> + <string name="permlab_access_keyguard_secure_storage" msgid="7565552237977815047">"存取 Keyguard 安全儲存空間"</string> + <string name="permdesc_access_keyguard_secure_storage" msgid="5866245484303285762">"允許應用程式存取 Keyguard 安全儲存空間。"</string> <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"輕觸兩下即可控制縮放"</string> <string name="gadget_host_error_inflating" msgid="4882004314906466162">"無法新增小工具。"</string> <string name="ime_action_go" msgid="8320845651737369027">"開始"</string> diff --git a/core/res/res/values-zu/strings.xml b/core/res/res/values-zu/strings.xml index 6dc9e6862d4e..9d2aa34acca7 100644 --- a/core/res/res/values-zu/strings.xml +++ b/core/res/res/values-zu/strings.xml @@ -1239,6 +1239,8 @@ <string name="permdesc_copyProtectedData" msgid="4390697124288317831">"Ivumela insiza ukuthi inqabe okutholakala kukhona ukukopisha okuqukethwe. Akusetshenziswa izinsiza ezijwayelekile."</string> <string name="permlab_route_media_output" msgid="1642024455750414694">"Yenza umzila wemidiya wokukhiphayo"</string> <string name="permdesc_route_media_output" msgid="4932818749547244346">"Ivumela uhlelo lokusebenza ukwenza umzila wokukhiphayo wemidiya kuya kumadivayisi angaphandle."</string> + <string name="permlab_access_keyguard_secure_storage" msgid="7565552237977815047">"Finyelela kusitoreji esiqashwa ngesikhiya esiphephile"</string> + <string name="permdesc_access_keyguard_secure_storage" msgid="5866245484303285762">"Ivumela uhlelo lokusebenza ukuthi lufinyelele kusitoreji esiqashwa ngesikhiya esiphephile."</string> <string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Thinta kabili ukulawula ukusondeza"</string> <string name="gadget_host_error_inflating" msgid="4882004314906466162">"Yehlulekile ukwengeza i-widget."</string> <string name="ime_action_go" msgid="8320845651737369027">"Iya"</string> diff --git a/core/res/res/values/arrays.xml b/core/res/res/values/arrays.xml index f7ff77bfee8b..7cdc7bb02a48 100644 --- a/core/res/res/values/arrays.xml +++ b/core/res/res/values/arrays.xml @@ -342,75 +342,4 @@ <item>中文 (繁體)</item> </string-array> - <!-- Resources for GlowPadView in LockScreen --> - <array name="lockscreen_targets_when_silent"> - <item>@drawable/ic_lockscreen_unlock</item> - <item>@drawable/ic_action_assist_generic</item> - <item>@drawable/ic_lockscreen_soundon</item> - <item>@null</item> - </array> - - <array name="lockscreen_target_descriptions_when_silent"> - <item>@string/description_target_unlock</item> - <item>@string/description_target_search</item> - <item>@string/description_target_soundon</item> - <item>@null</item> - </array> - - <array name="lockscreen_direction_descriptions"> - <item>@string/description_direction_right</item> - <item>@string/description_direction_up</item> - <item>@string/description_direction_left</item> - <item>@null</item> - </array> - - <array name="lockscreen_targets_when_soundon"> - <item>@drawable/ic_lockscreen_unlock</item> - <item>@drawable/ic_action_assist_generic</item> - <item>@drawable/ic_lockscreen_silent</item> - <item>@null</item> - </array> - - <array name="lockscreen_target_descriptions_when_soundon"> - <item>@string/description_target_unlock</item> - <item>@string/description_target_search</item> - <item>@string/description_target_silent</item> - <item>@null</item> - </array> - - <array name="lockscreen_targets_with_camera"> - <item>@drawable/ic_lockscreen_unlock</item> - <item>@drawable/ic_action_assist_generic</item> - <item>@drawable/ic_lockscreen_camera</item> - <item>@null</item> - </array> - - <array name="lockscreen_target_descriptions_with_camera"> - <item>@string/description_target_unlock</item> - <item>@string/description_target_search</item> - <item>@string/description_target_camera</item> - <item>@null</item> - </array> - - <array name="lockscreen_targets_unlock_only"> - <item>@*android:drawable/ic_lockscreen_unlock</item> - </array> - - <array name="lockscreen_target_descriptions_unlock_only"> - <item>@*android:string/description_target_unlock</item> - </array> - - <!-- list of 3- or 4-letter mnemonics for a 10-key numeric keypad --> - <string-array translatable="false" name="lockscreen_num_pad_klondike"> - <item></item><!-- 0 --> - <item></item><!-- 1 --> - <item>ABC</item><!-- 2 --> - <item>DEF</item><!-- 3 --> - <item>GHI</item><!-- 4 --> - <item>JKL</item><!-- 5 --> - <item>MNO</item><!-- 6 --> - <item>PQRS</item><!-- 7 --> - <item>TUV</item><!-- 8 --> - <item>WXYZ</item><!-- 9 --> - </string-array> </resources> diff --git a/core/res/res/values/attrs_manifest.xml b/core/res/res/values/attrs_manifest.xml index d899e9dc61b6..762c9715e0cc 100644 --- a/core/res/res/values/attrs_manifest.xml +++ b/core/res/res/values/attrs_manifest.xml @@ -1699,4 +1699,12 @@ <!-- Concrete value to put for this named extra data. --> <attr name="value" /> </declare-styleable> + + <attr name="keyset" /> + <declare-styleable name="PublicKey"> + <attr name="value" /> + </declare-styleable> + <declare-styleable name="KeySet"> + <attr name="name" /> + </declare-styleable> </resources> diff --git a/core/res/res/values/public.xml b/core/res/res/values/public.xml index 42e5cf1ba4ba..f5918fbf8678 100644 --- a/core/res/res/values/public.xml +++ b/core/res/res/values/public.xml @@ -2041,6 +2041,7 @@ =============================================================== --> <eat-comment /> + <public type="attr" name="keyset" id="0x010103cf" /> <public type="attr" name="windowOverscan" /> <public type="style" name="Theme.NoTitleBar.Overscan" /> <public type="style" name="Theme.Light.NoTitleBar.Overscan" /> diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml index 5fc26fc445be..a96a6e966725 100644 --- a/core/res/res/values/strings.xml +++ b/core/res/res/values/strings.xml @@ -3429,6 +3429,11 @@ <!-- Description of an application permission that lets an application route media output. --> <string name="permdesc_route_media_output">Allows an application to route media output to other external devices.</string> + <!-- Title of an application permission that lets an application access keyguard secure storage. --> + <string name="permlab_access_keyguard_secure_storage">Access keyguard secure storage</string> + <!-- Description of an application permission that lets an application access keyguard secure storage. --> + <string name="permdesc_access_keyguard_secure_storage">Allows an application to access keguard secure storage.</string> + <!-- Shown in the tutorial for tap twice for zoom control. --> <string name="tutorial_double_tap_to_zoom_message_short">Touch twice for zoom control</string> diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index 140ff704f277..90cb8dacf1eb 100644 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -38,16 +38,12 @@ <java-symbol type="id" name="action_menu_presenter" /> <java-symbol type="id" name="action_mode_close_button" /> <java-symbol type="id" name="activity_chooser_view_content" /> - <java-symbol type="id" name="albumart" /> <java-symbol type="id" name="alertTitle" /> <java-symbol type="id" name="allow_button" /> <java-symbol type="id" name="alwaysUse" /> <java-symbol type="id" name="amPm" /> <java-symbol type="id" name="authtoken_type" /> <java-symbol type="id" name="back_button" /> - <java-symbol type="id" name="btn_next" /> - <java-symbol type="id" name="btn_play" /> - <java-symbol type="id" name="btn_prev" /> <java-symbol type="id" name="button_bar" /> <java-symbol type="id" name="buttonPanel" /> <java-symbol type="id" name="by_common" /> @@ -558,26 +554,6 @@ <java-symbol type="string" name="keyboardview_keycode_enter" /> <java-symbol type="string" name="keyboardview_keycode_mode_change" /> <java-symbol type="string" name="keyboardview_keycode_shift" /> - <java-symbol type="string" name="keyguard_accessibility_add_widget" /> - <java-symbol type="string" name="keyguard_accessibility_camera" /> - <java-symbol type="string" name="keyguard_accessibility_expand_lock_area" /> - <java-symbol type="string" name="keyguard_accessibility_face_unlock" /> - <java-symbol type="string" name="keygaurd_accessibility_media_controls" /> - <java-symbol type="string" name="keyguard_accessibility_pattern_area" /> - <java-symbol type="string" name="keyguard_accessibility_pattern_unlock" /> - <java-symbol type="string" name="keyguard_accessibility_password_unlock" /> - <java-symbol type="string" name="keyguard_accessibility_pin_unlock" /> - <java-symbol type="string" name="keyguard_accessibility_slide_area" /> - <java-symbol type="string" name="keyguard_accessibility_slide_unlock" /> - <java-symbol type="string" name="keyguard_accessibility_status" /> - <java-symbol type="string" name="keyguard_accessibility_user_selector" /> - <java-symbol type="string" name="keyguard_accessibility_widget" /> - <java-symbol type="string" name="keyguard_accessibility_widget_deleted" /> - <java-symbol type="string" name="keyguard_accessibility_widget_empty_slot" /> - <java-symbol type="string" name="keyguard_accessibility_widget_reorder_start" /> - <java-symbol type="string" name="keyguard_accessibility_widget_reorder_end" /> - <java-symbol type="string" name="keyguard_accessibility_unlock_area_collapsed" /> - <java-symbol type="string" name="keyguard_accessibility_unlock_area_expanded" /> <java-symbol type="string" name="kilobyteShort" /> <java-symbol type="string" name="last_month" /> <java-symbol type="string" name="launchBrowserDefault" /> @@ -587,9 +563,6 @@ <java-symbol type="string" name="lockscreen_access_pattern_start" /> <java-symbol type="string" name="lockscreen_emergency_call" /> <java-symbol type="string" name="lockscreen_return_to_call" /> - <java-symbol type="string" name="lockscreen_transport_pause_description" /> - <java-symbol type="string" name="lockscreen_transport_play_description" /> - <java-symbol type="string" name="lockscreen_transport_stop_description" /> <java-symbol type="string" name="low_memory" /> <java-symbol type="string" name="media_bad_removal" /> <java-symbol type="string" name="media_checking" /> @@ -1000,16 +973,11 @@ <java-symbol type="drawable" name="unlock_halo" /> <java-symbol type="drawable" name="unlock_ring" /> <java-symbol type="drawable" name="unlock_wave" /> - <java-symbol type="drawable" name="ic_lockscreen_camera" /> - <java-symbol type="drawable" name="ic_lockscreen_silent" /> - <java-symbol type="drawable" name="ic_lockscreen_unlock" /> <java-symbol type="drawable" name="ic_action_assist_generic" /> - <java-symbol type="drawable" name="ic_lockscreen_alarm" /> <java-symbol type="drawable" name="notification_bg" /> <java-symbol type="drawable" name="notification_bg_low" /> <java-symbol type="drawable" name="notification_template_icon_bg" /> <java-symbol type="drawable" name="notification_template_icon_low_bg" /> - <java-symbol type="drawable" name="ic_lockscreen_unlock_phantom" /> <java-symbol type="drawable" name="ic_media_route_on_holo_dark" /> <java-symbol type="drawable" name="ic_media_route_disabled_holo_dark" /> @@ -1109,10 +1077,7 @@ <java-symbol type="layout" name="notification_template_part_time" /> <java-symbol type="layout" name="notification_template_part_chronometer" /> <java-symbol type="layout" name="notification_template_inbox" /> - <java-symbol type="layout" name="keyguard_multi_user_avatar" /> - <java-symbol type="layout" name="keyguard_multi_user_selector_widget" /> <java-symbol type="layout" name="sms_short_code_confirmation_dialog" /> - <java-symbol type="layout" name="keyguard_add_widget" /> <java-symbol type="layout" name="action_bar_up_container" /> <java-symbol type="anim" name="slide_in_child_bottom" /> @@ -1129,7 +1094,6 @@ <java-symbol type="xml" name="password_kbd_qwerty_shifted" /> <java-symbol type="xml" name="password_kbd_symbols" /> <java-symbol type="xml" name="password_kbd_symbols_shift" /> - <java-symbol type="xml" name="kg_password_kbd_numeric" /> <java-symbol type="xml" name="power_profile" /> <java-symbol type="xml" name="time_zones_by_country" /> <java-symbol type="xml" name="sms_short_codes" /> @@ -1181,8 +1145,6 @@ <!-- From android.policy --> <java-symbol type="anim" name="app_starting_exit" /> - <java-symbol type="anim" name="lock_screen_behind_enter" /> - <java-symbol type="anim" name="lock_screen_wallpaper_behind_enter" /> <java-symbol type="anim" name="dock_top_enter" /> <java-symbol type="anim" name="dock_top_exit" /> <java-symbol type="anim" name="dock_bottom_enter" /> @@ -1191,22 +1153,12 @@ <java-symbol type="anim" name="dock_left_exit" /> <java-symbol type="anim" name="dock_right_enter" /> <java-symbol type="anim" name="dock_right_exit" /> - <java-symbol type="anim" name="keyguard_security_animate_in" /> - <java-symbol type="anim" name="keyguard_security_animate_out" /> - <java-symbol type="anim" name="keyguard_security_fade_in" /> - <java-symbol type="anim" name="keyguard_security_fade_out" /> - <java-symbol type="anim" name="keyguard_action_assist_exit" /> - <java-symbol type="anim" name="keyguard_action_assist_enter" /> <java-symbol type="array" name="config_keyboardTapVibePattern" /> <java-symbol type="array" name="config_longPressVibePattern" /> <java-symbol type="array" name="config_safeModeDisabledVibePattern" /> <java-symbol type="array" name="config_safeModeEnabledVibePattern" /> <java-symbol type="array" name="config_virtualKeyVibePattern" /> - <java-symbol type="array" name="lockscreen_targets_when_silent" /> - <java-symbol type="array" name="lockscreen_targets_when_soundon" /> - <java-symbol type="array" name="lockscreen_targets_with_camera" /> - <java-symbol type="array" name="lockscreen_num_pad_klondike" /> <java-symbol type="attr" name="actionModePopupWindowStyle" /> <java-symbol type="attr" name="dialogCustomTitleDecorLayout" /> <java-symbol type="attr" name="dialogTitleDecorLayout" /> @@ -1221,33 +1173,11 @@ <java-symbol type="bool" name="config_lidControlsSleep" /> <java-symbol type="bool" name="config_reverseDefaultRotation" /> <java-symbol type="bool" name="config_showNavigationBar" /> - <java-symbol type="bool" name="kg_enable_camera_default_widget" /> - <java-symbol type="bool" name="kg_share_status_area" /> - <java-symbol type="bool" name="kg_sim_puk_account_full_screen" /> - <java-symbol type="bool" name="kg_top_align_page_shrink_on_bouncer_visible" /> <java-symbol type="bool" name="target_honeycomb_needs_options_menu" /> - <java-symbol type="bool" name="kg_center_small_widgets_vertically" /> - <java-symbol type="bool" name="kg_show_ime_at_screen_on" /> - <java-symbol type="color" name="kg_multi_user_text_active" /> - <java-symbol type="color" name="kg_multi_user_text_inactive" /> - <java-symbol type="color" name="kg_widget_pager_gradient" /> - <java-symbol type="color" name="keyguard_avatar_frame_color" /> - <java-symbol type="color" name="keyguard_avatar_frame_pressed_color" /> - <java-symbol type="color" name="keyguard_avatar_frame_shadow_color" /> - <java-symbol type="color" name="keyguard_avatar_nick_color" /> <java-symbol type="dimen" name="navigation_bar_height" /> <java-symbol type="dimen" name="navigation_bar_height_landscape" /> <java-symbol type="dimen" name="navigation_bar_width" /> <java-symbol type="dimen" name="status_bar_height" /> - <java-symbol type="dimen" name="kg_widget_pager_horizontal_padding" /> - <java-symbol type="dimen" name="kg_widget_pager_top_padding" /> - <java-symbol type="dimen" name="kg_widget_pager_bottom_padding" /> - <java-symbol type="dimen" name="keyguard_avatar_size" /> - <java-symbol type="dimen" name="keyguard_avatar_frame_stroke_width" /> - <java-symbol type="dimen" name="keyguard_avatar_frame_shadow_radius" /> - <java-symbol type="dimen" name="kg_edge_swipe_region_size" /> - <java-symbol type="dimen" name="kg_squashed_layout_threshold" /> - <java-symbol type="dimen" name="kg_small_widget_height" /> <java-symbol type="drawable" name="ic_jog_dial_sound_off" /> <java-symbol type="drawable" name="ic_jog_dial_sound_on" /> <java-symbol type="drawable" name="ic_jog_dial_unlock" /> @@ -1266,9 +1196,7 @@ <java-symbol type="drawable" name="magnified_region_frame" /> <java-symbol type="drawable" name="menu_background" /> <java-symbol type="drawable" name="stat_sys_secure" /> - <java-symbol type="drawable" name="kg_widget_bg_padded" /> <java-symbol type="id" name="action_mode_bar_stub" /> - <java-symbol type="id" name="alarm_status" /> <java-symbol type="id" name="button0" /> <java-symbol type="id" name="button4" /> <java-symbol type="id" name="button5" /> @@ -1276,15 +1204,12 @@ <java-symbol type="id" name="button7" /> <java-symbol type="id" name="date" /> <java-symbol type="id" name="eight" /> - <java-symbol type="id" name="face_unlock_area_view" /> - <java-symbol type="id" name="face_unlock_cancel_button" /> <java-symbol type="id" name="five" /> <java-symbol type="id" name="four" /> <java-symbol type="id" name="icon_menu_presenter" /> <java-symbol type="id" name="keyboard" /> <java-symbol type="id" name="list_menu_presenter" /> <java-symbol type="id" name="lock_screen" /> - <java-symbol type="id" name="login" /> <java-symbol type="id" name="nine" /> <java-symbol type="id" name="no_applications_message" /> <java-symbol type="id" name="ok" /> @@ -1292,56 +1217,14 @@ <java-symbol type="id" name="option1" /> <java-symbol type="id" name="option2" /> <java-symbol type="id" name="option3" /> - <java-symbol type="id" name="password" /> - <java-symbol type="id" name="passwordEntry" /> - <java-symbol type="id" name="pinEntry" /> <java-symbol type="id" name="right_icon" /> <java-symbol type="id" name="seven" /> <java-symbol type="id" name="six" /> <java-symbol type="id" name="status" /> - <java-symbol type="id" name="switch_ime_button" /> <java-symbol type="id" name="three" /> <java-symbol type="id" name="title_container" /> <java-symbol type="id" name="two" /> <java-symbol type="id" name="zero" /> - <java-symbol type="id" name="keyguard_message_area" /> - <java-symbol type="id" name="keyguard_click_area" /> - <java-symbol type="id" name="keyguard_selector_view" /> - <java-symbol type="id" name="keyguard_pattern_view" /> - <java-symbol type="id" name="keyguard_password_view" /> - <java-symbol type="id" name="keyguard_pin_view" /> - <java-symbol type="id" name="keyguard_face_unlock_view" /> - <java-symbol type="id" name="keyguard_sim_pin_view" /> - <java-symbol type="id" name="keyguard_sim_puk_view" /> - <java-symbol type="id" name="keyguard_account_view" /> - <java-symbol type="id" name="keyguard_selector_fade_container" /> - <java-symbol type="id" name="keyguard_widget_pager_delete_target" /> - <java-symbol type="id" name="keyguard_bouncer_frame" /> - <java-symbol type="id" name="app_widget_container" /> - <java-symbol type="id" name="view_flipper" /> - <java-symbol type="id" name="emergency_call_button" /> - <java-symbol type="id" name="keyguard_host_view" /> - <java-symbol type="id" name="delete_button" /> - <java-symbol type="id" name="lockPatternView" /> - <java-symbol type="id" name="forgot_password_button" /> - <java-symbol type="id" name="glow_pad_view" /> - <java-symbol type="id" name="delete_button" /> - <java-symbol type="id" name="keyguard_user_avatar" /> - <java-symbol type="id" name="keyguard_user_name" /> - <java-symbol type="id" name="keyguard_transport_control" /> - <java-symbol type="id" name="keyguard_status_view" /> - <java-symbol type="id" name="keyguard_status_view_face_palm" /> - <java-symbol type="id" name="keyguard_users_grid" /> - <java-symbol type="id" name="clock_text" /> - <java-symbol type="id" name="clock_view" /> - <java-symbol type="id" name="keyguard_multi_user_selector" /> - <java-symbol type="id" name="sliding_layout" /> - <java-symbol type="id" name="keyguard_add_widget" /> - <java-symbol type="id" name="keyguard_add_widget_view" /> - <java-symbol type="id" name="multi_pane_challenge" /> - <java-symbol type="id" name="keyguard_user_selector" /> - <java-symbol type="id" name="key_enter" /> - <java-symbol type="id" name="keyguard_selector_view_frame" /> <java-symbol type="integer" name="config_carDockRotation" /> <java-symbol type="integer" name="config_defaultUiModeType" /> <java-symbol type="integer" name="config_deskDockRotation" /> @@ -1349,18 +1232,8 @@ <java-symbol type="integer" name="config_lidNavigationAccessibility" /> <java-symbol type="integer" name="config_lidOpenRotation" /> <java-symbol type="integer" name="config_longPressOnHomeBehavior" /> - <java-symbol type="integer" name="kg_security_flip_duration" /> - <java-symbol type="integer" name="kg_carousel_angle" /> <java-symbol type="layout" name="global_actions_item" /> <java-symbol type="layout" name="global_actions_silent_mode" /> - <java-symbol type="layout" name="keyguard_selector_view" /> - <java-symbol type="layout" name="keyguard_pattern_view" /> - <java-symbol type="layout" name="keyguard_password_view" /> - <java-symbol type="layout" name="keyguard_pin_view" /> - <java-symbol type="layout" name="keyguard_face_unlock_view" /> - <java-symbol type="layout" name="keyguard_sim_pin_view" /> - <java-symbol type="layout" name="keyguard_sim_puk_view" /> - <java-symbol type="layout" name="keyguard_account_view" /> <java-symbol type="layout" name="recent_apps_dialog" /> <java-symbol type="layout" name="screen_action_bar" /> <java-symbol type="layout" name="screen_custom_title" /> @@ -1369,9 +1242,6 @@ <java-symbol type="layout" name="screen_simple_overlay_action_mode" /> <java-symbol type="layout" name="screen_title" /> <java-symbol type="layout" name="screen_title_icons" /> - <java-symbol type="layout" name="keyguard_host_view" /> - <java-symbol type="layout" name="keyguard_transport_control_view" /> - <java-symbol type="layout" name="keyguard_status_view" /> <java-symbol type="string" name="abbrev_wday_month_day_no_year" /> <java-symbol type="string" name="system_ui_date_pattern" /> <java-symbol type="string" name="android_upgrading_title" /> @@ -1387,41 +1257,7 @@ <java-symbol type="string" name="global_action_silent_mode_on_status" /> <java-symbol type="string" name="global_action_toggle_silent_mode" /> <java-symbol type="string" name="invalidPuk" /> - <java-symbol type="string" name="keyguard_password_enter_pin_code" /> - <java-symbol type="string" name="keyguard_password_enter_puk_code" /> - <java-symbol type="string" name="keyguard_password_wrong_pin_code" /> <java-symbol type="string" name="lockscreen_carrier_default" /> - <java-symbol type="string" name="lockscreen_charged" /> - <java-symbol type="string" name="lockscreen_failed_attempts_almost_at_wipe" /> - <java-symbol type="string" name="lockscreen_failed_attempts_almost_glogin" /> - <java-symbol type="string" name="lockscreen_failed_attempts_now_wiping" /> - <java-symbol type="string" name="lockscreen_forgot_pattern_button_text" /> - <java-symbol type="string" name="lockscreen_glogin_checking_password" /> - <java-symbol type="string" name="lockscreen_glogin_forgot_pattern" /> - <java-symbol type="string" name="lockscreen_glogin_invalid_input" /> - <java-symbol type="string" name="lockscreen_glogin_too_many_attempts" /> - <java-symbol type="string" name="lockscreen_instructions_when_pattern_disabled" /> - <java-symbol type="string" name="lockscreen_low_battery" /> - <java-symbol type="string" name="lockscreen_missing_sim_instructions" /> - <java-symbol type="string" name="lockscreen_missing_sim_instructions_long" /> - <java-symbol type="string" name="lockscreen_missing_sim_message_short" /> - <java-symbol type="string" name="lockscreen_network_locked_message" /> - <java-symbol type="string" name="lockscreen_password_wrong" /> - <java-symbol type="string" name="lockscreen_pattern_instructions" /> - <java-symbol type="string" name="lockscreen_pattern_wrong" /> - <java-symbol type="string" name="lockscreen_permanent_disabled_sim_message_short" /> - <java-symbol type="string" name="lockscreen_permanent_disabled_sim_instructions" /> - <java-symbol type="string" name="lockscreen_plugged_in" /> - <java-symbol type="string" name="lockscreen_sim_locked_message" /> - <java-symbol type="string" name="lockscreen_sim_puk_locked_message" /> - <java-symbol type="string" name="lockscreen_sim_unlock_progress_dialog_message" /> - <java-symbol type="string" name="lockscreen_sound_off_label" /> - <java-symbol type="string" name="lockscreen_sound_on_label" /> - <java-symbol type="string" name="lockscreen_too_many_failed_attempts_countdown" /> - <java-symbol type="string" name="lockscreen_too_many_failed_attempts_dialog_message" /> - <java-symbol type="string" name="lockscreen_too_many_failed_password_attempts_dialog_message" /> - <java-symbol type="string" name="lockscreen_too_many_failed_pin_attempts_dialog_message" /> - <java-symbol type="string" name="lockscreen_unlock_label" /> <java-symbol type="string" name="status_bar_device_locked" /> <java-symbol type="style" name="Animation.LockScreen" /> <java-symbol type="style" name="Theme.Dialog.RecentApplications" /> @@ -1429,40 +1265,6 @@ <java-symbol type="style" name="Widget.Button.NumPadKey" /> <java-symbol type="style" name="TextAppearance.NumPadKey" /> <java-symbol type="style" name="TextAppearance.NumPadKey.Klondike" /> - <java-symbol type="string" name="kg_emergency_call_label" /> - <java-symbol type="string" name="kg_forgot_pattern_button_text" /> - <java-symbol type="string" name="kg_wrong_pattern" /> - <java-symbol type="string" name="kg_wrong_password" /> - <java-symbol type="string" name="kg_wrong_pin" /> - <java-symbol type="string" name="kg_too_many_failed_attempts_countdown" /> - <java-symbol type="string" name="kg_pattern_instructions" /> - <java-symbol type="string" name="kg_sim_pin_instructions" /> - <java-symbol type="string" name="kg_pin_instructions" /> - <java-symbol type="string" name="kg_password_instructions" /> - <java-symbol type="string" name="kg_puk_enter_puk_hint" /> - <java-symbol type="string" name="kg_puk_enter_pin_hint" /> - <java-symbol type="string" name="kg_sim_unlock_progress_dialog_message" /> - <java-symbol type="string" name="kg_password_wrong_pin_code" /> - <java-symbol type="string" name="kg_invalid_sim_pin_hint" /> - <java-symbol type="string" name="kg_invalid_sim_puk_hint" /> - <java-symbol type="string" name="kg_invalid_puk" /> - <java-symbol type="string" name="kg_login_too_many_attempts" /> - <java-symbol type="string" name="kg_login_instructions" /> - <java-symbol type="string" name="kg_login_username_hint" /> - <java-symbol type="string" name="kg_login_password_hint" /> - <java-symbol type="string" name="kg_login_submit_button" /> - <java-symbol type="string" name="kg_login_invalid_input" /> - <java-symbol type="string" name="kg_login_account_recovery_hint" /> - <java-symbol type="string" name="kg_login_checking_password" /> - <java-symbol type="string" name="kg_too_many_failed_pin_attempts_dialog_message" /> - <java-symbol type="string" name="kg_too_many_failed_pattern_attempts_dialog_message" /> - <java-symbol type="string" name="kg_too_many_failed_password_attempts_dialog_message" /> - <java-symbol type="string" name="kg_failed_attempts_almost_at_wipe" /> - <java-symbol type="string" name="kg_failed_attempts_now_wiping" /> - <java-symbol type="string" name="kg_failed_attempts_almost_at_login" /> - <java-symbol type="string" name="kg_enter_confirm_pin_hint" /> - <java-symbol type="string" name="kg_invalid_confirm_pin_hint" /> - <java-symbol type="string" name="kg_text_message_separator" /> <!-- From services --> <java-symbol type="anim" name="screen_rotate_0_enter" /> @@ -1679,6 +1481,9 @@ <java-symbol type="anim" name="push_down_out" /> <java-symbol type="anim" name="push_up_in" /> <java-symbol type="anim" name="push_up_out" /> + <java-symbol type="anim" name="lock_screen_wallpaper_behind_enter" /> + <java-symbol type="anim" name="lock_screen_behind_enter" /> + <java-symbol type="bool" name="config_alwaysUseCdmaRssi" /> <java-symbol type="dimen" name="status_bar_icon_size" /> <java-symbol type="dimen" name="system_bar_icon_size" /> diff --git a/docs/html/training/monitoring-device-state/battery-monitoring.jd b/docs/html/training/monitoring-device-state/battery-monitoring.jd index c963a18624fc..81b6e6b53ed8 100644 --- a/docs/html/training/monitoring-device-state/battery-monitoring.jd +++ b/docs/html/training/monitoring-device-state/battery-monitoring.jd @@ -65,7 +65,7 @@ boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING || status == BatteryManager.BATTERY_STATUS_FULL; // How are we charging? -int chargePlug = battery.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1); +int chargePlug = batteryStatus.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1); boolean usbCharge = chargePlug == BATTERY_PLUGGED_USB; boolean acCharge = chargePlug == BATTERY_PLUGGED_AC;</pre> @@ -119,8 +119,8 @@ the rate of your background updates if the battery charge is below a certain lev <p>You can find the current battery charge by extracting the current battery level and scale from the battery status intent as shown here:</p> -<pre>int level = battery.getIntExtra(BatteryManager.EXTRA_LEVEL, -1); -int scale = battery.getIntExtra(BatteryManager.EXTRA_SCALE, -1); +<pre>int level = batteryStatus.getIntExtra(BatteryManager.EXTRA_LEVEL, -1); +int scale = batteryStatus.getIntExtra(BatteryManager.EXTRA_SCALE, -1); float batteryPct = level / (float)scale;</pre> diff --git a/media/java/android/media/AudioTrack.java b/media/java/android/media/AudioTrack.java index cd50de41fd57..11bfa4b8c394 100644 --- a/media/java/android/media/AudioTrack.java +++ b/media/java/android/media/AudioTrack.java @@ -55,6 +55,8 @@ import android.util.Log; * be played from it.<br> * For the streaming mode, data will be written to the hardware in chunks of * sizes less than or equal to the total buffer size. + * + * AudioTrack is not final and thus permits subclasses, but such use is not recommended. */ public class AudioTrack { @@ -601,7 +603,11 @@ public class AudioTrack /** * Returns the native frame count used by the hardware. + * @deprecated Only accessible by subclasses, which are not recommended for AudioTrack. + * See {@link AudioManager#getProperty(String)} for key + * {@link AudioManager#PROPERTY_OUTPUT_FRAMES_PER_BUFFER}. */ + @Deprecated protected int getNativeFrameCount() { return native_get_native_frame_count(); } @@ -865,10 +871,13 @@ public class AudioTrack } /** - * Sets the initialization state of the instance. To be used in an AudioTrack subclass - * constructor to set a subclass-specific post-initialization state. + * Sets the initialization state of the instance. This method was originally intended to be used + * in an AudioTrack subclass constructor to set a subclass-specific post-initialization state. + * However, subclasses of AudioTrack are no longer recommended, so this method is obsolete. * @param state the state of the AudioTrack instance + * @deprecated Only accessible by subclasses, which are not recommended for AudioTrack. */ + @Deprecated protected void setState(int state) { mState = state; } diff --git a/packages/BackupRestoreConfirmation/res/values-sw/strings.xml b/packages/BackupRestoreConfirmation/res/values-sw/strings.xml index 493c168ea75e..24d9c39d4644 100644 --- a/packages/BackupRestoreConfirmation/res/values-sw/strings.xml +++ b/packages/BackupRestoreConfirmation/res/values-sw/strings.xml @@ -17,7 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="backup_confirm_title" msgid="827563724209303345">"Kuhifadhi kikamilifu"</string> - <string name="restore_confirm_title" msgid="5469365809567486602">"Kurejeza kamili"</string> + <string name="restore_confirm_title" msgid="5469365809567486602">"Kurejesha kila kitu"</string> <string name="backup_confirm_text" msgid="1878021282758896593">"Chelezo kamili la data iliyounganishwa kwenye eneo kazi la kompyuta limeombwa. Unataka kuruhusu hii kutendeka?"\n\n" Ikiwa hukuomba chelezo mwenyewe, usikubali uendeshaji kuendelea."</string> <string name="allow_backup_button_label" msgid="4217228747769644068">"Cheleza data yangu"</string> <string name="deny_backup_button_label" msgid="6009119115581097708">"Usicheleze"</string> @@ -32,7 +32,7 @@ <string name="restore_enc_password_text" msgid="6140898525580710823">"Ikiwa data iliyorejeshwa upya, tafadhali ingiza nenosiri lililo hapo chini:"</string> <string name="toast_backup_started" msgid="550354281452756121">"Inaanza kuhifadhi..."</string> <string name="toast_backup_ended" msgid="3818080769548726424">"Imemaliza kuhifadhi"</string> - <string name="toast_restore_started" msgid="7881679218971277385">"Inaanza kurejeza..."</string> - <string name="toast_restore_ended" msgid="1764041639199696132">"Kurejeza kumekamilika"</string> + <string name="toast_restore_started" msgid="7881679218971277385">"Inaanza kurejesha..."</string> + <string name="toast_restore_ended" msgid="1764041639199696132">"Kurejesha kumekamilika"</string> <string name="toast_timeout" msgid="5276598587087626877">"Muda wa uendeshaji umeisha"</string> </resources> diff --git a/packages/Keyguard/Android.mk b/packages/Keyguard/Android.mk new file mode 100644 index 000000000000..2f8edad7e156 --- /dev/null +++ b/packages/Keyguard/Android.mk @@ -0,0 +1,31 @@ +# Copyright (C) 2013 The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +LOCAL_PATH:= $(call my-dir) +include $(CLEAR_VARS) + +LOCAL_SRC_FILES := $(call all-subdir-java-files) $(call all-subdir-Iaidl-files) + +LOCAL_JAVA_LIBRARIES := services + +LOCAL_PACKAGE_NAME := Keyguard + +LOCAL_CERTIFICATE := platform + +LOCAL_PROGUARD_FLAG_FILES := proguard.flags + +include $(BUILD_PACKAGE) + +include $(call all-makefiles-under,$(LOCAL_PATH)) diff --git a/packages/Keyguard/AndroidManifest.xml b/packages/Keyguard/AndroidManifest.xml new file mode 100644 index 000000000000..38e764addf2e --- /dev/null +++ b/packages/Keyguard/AndroidManifest.xml @@ -0,0 +1,49 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** Copyright 2013, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> +<manifest xmlns:android="http://schemas.android.com/apk/res/android" + package="com.android.keyguard" + android:sharedUserId="android.uid.systemui" + coreApp="true"> + <uses-sdk android:minSdkVersion="10" android:targetSdkVersion="17"/> + <uses-permission android:name="android.permission.VIBRATE" /> + <uses-permission android:name="android.permission.MODIFY_PHONE_STATE" /> + <uses-permission android:name="android.permission.GET_ACCOUNTS" /> + <uses-permission android:name="android.permission.MANAGE_ACCOUNTS" /> + <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL" /> + <uses-permission android:name="android.permission.WAKE_LOCK" /> + <uses-permission android:name="android.permission.STATUS_BAR" /> + <uses-permission android:name="android.permission.DEVICE_POWER" /> + <uses-permission android:name="android.permission.MANAGE_USERS" /> + <uses-permission android:name="android.permission.MANAGE_APP_TOKENS" /> + <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> + <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" /> + <uses-permission android:name="android.permission.BIND_APPWIDGET" /> + <uses-permission android:name="android.permission.INTERNAL_SYSTEM_WINDOW" /> + <uses-permission android:name="android.permission.BIND_DEVICE_ADMIN" /> + <uses-permission android:name="android.permission.CHANGE_COMPONENT_ENABLED_STATE" /> + + <application android:label="@string/app_name" android:icon="@drawable/app_icon" + android:process="com.android.systemui.keyguard" + android:persistent="true" > + + <service android:name=".KeyguardService" + android:exported="true" /> + + </application> +</manifest> diff --git a/packages/Keyguard/NOTICE b/packages/Keyguard/NOTICE new file mode 100644 index 000000000000..33ff96160b77 --- /dev/null +++ b/packages/Keyguard/NOTICE @@ -0,0 +1,190 @@ + + Copyright (c) 2005-2012, The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + + 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. + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + diff --git a/packages/Keyguard/proguard.flags b/packages/Keyguard/proguard.flags new file mode 100644 index 000000000000..00ca0fabf9fa --- /dev/null +++ b/packages/Keyguard/proguard.flags @@ -0,0 +1,2 @@ +-keep public class com.android.keyguard.KeyguardService + diff --git a/core/res/res/anim/keyguard_action_assist_enter.xml b/packages/Keyguard/res/anim/keyguard_action_assist_enter.xml index f3333b7cd816..f3333b7cd816 100644 --- a/core/res/res/anim/keyguard_action_assist_enter.xml +++ b/packages/Keyguard/res/anim/keyguard_action_assist_enter.xml diff --git a/core/res/res/anim/keyguard_action_assist_exit.xml b/packages/Keyguard/res/anim/keyguard_action_assist_exit.xml index b4ed2789930e..b4ed2789930e 100644 --- a/core/res/res/anim/keyguard_action_assist_exit.xml +++ b/packages/Keyguard/res/anim/keyguard_action_assist_exit.xml diff --git a/core/res/res/anim/keyguard_security_animate_in.xml b/packages/Keyguard/res/anim/keyguard_security_animate_in.xml index 4ee30c363599..4ee30c363599 100644 --- a/core/res/res/anim/keyguard_security_animate_in.xml +++ b/packages/Keyguard/res/anim/keyguard_security_animate_in.xml diff --git a/core/res/res/anim/keyguard_security_animate_out.xml b/packages/Keyguard/res/anim/keyguard_security_animate_out.xml index 76d065c74f66..76d065c74f66 100644 --- a/core/res/res/anim/keyguard_security_animate_out.xml +++ b/packages/Keyguard/res/anim/keyguard_security_animate_out.xml diff --git a/core/res/res/anim/keyguard_security_fade_in.xml b/packages/Keyguard/res/anim/keyguard_security_fade_in.xml index 6293432c7ccc..c66c6049d52f 100644 --- a/core/res/res/anim/keyguard_security_fade_in.xml +++ b/packages/Keyguard/res/anim/keyguard_security_fade_in.xml @@ -17,6 +17,6 @@ <alpha xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:interpolator/decelerate_quad" android:fromAlpha="0.0" android:toAlpha="1.0" - android:duration="@*android:integer/kg_security_fade_duration" /> + android:duration="@integer/kg_security_fade_duration" /> diff --git a/core/res/res/anim/keyguard_security_fade_out.xml b/packages/Keyguard/res/anim/keyguard_security_fade_out.xml index 4ab0229e2092..6465b35fab65 100644 --- a/core/res/res/anim/keyguard_security_fade_out.xml +++ b/packages/Keyguard/res/anim/keyguard_security_fade_out.xml @@ -17,5 +17,5 @@ android:interpolator="@android:interpolator/accelerate_quad" android:fromAlpha="1.0" android:toAlpha="0.0" - android:duration="@*android:integer/kg_security_fade_duration" + android:duration="@integer/kg_security_fade_duration" /> diff --git a/packages/Keyguard/res/anim/lock_screen_enter.xml b/packages/Keyguard/res/anim/lock_screen_enter.xml new file mode 100644 index 000000000000..4344cf9e4bf3 --- /dev/null +++ b/packages/Keyguard/res/anim/lock_screen_enter.xml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** Copyright 2007, 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" + android:interpolator="@android:interpolator/accelerate_cubic"> + <alpha android:fromAlpha="0.0" android:toAlpha="1.0" + android:duration="@integer/config_activityDefaultDur" /> +</set> diff --git a/packages/Keyguard/res/anim/lock_screen_exit.xml b/packages/Keyguard/res/anim/lock_screen_exit.xml new file mode 100644 index 000000000000..c75b3ccc145a --- /dev/null +++ b/packages/Keyguard/res/anim/lock_screen_exit.xml @@ -0,0 +1,36 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** Copyright 2007, 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" + android:zAdjustment="top" + android:shareInterpolator="false"> + <scale + android:fromXScale="1.0" android:toXScale="1.10" + android:fromYScale="1.0" android:toYScale="1.10" + android:pivotX="50%p" android:pivotY="50%p" + android:fillEnabled="true" android:fillAfter="true" + android:interpolator="@android:interpolator/accelerate_quint" + android:duration="@android:integer/config_shortAnimTime" /> + <alpha + android:fromAlpha="1.0" android:toAlpha="0" + android:fillEnabled="true" android:fillAfter="true" + android:interpolator="@android:interpolator/accelerate_quad" + android:duration="@android:integer/config_shortAnimTime"/> +</set> diff --git a/packages/Keyguard/res/drawable-hdpi/ic_action_assist_generic_activated.png b/packages/Keyguard/res/drawable-hdpi/ic_action_assist_generic_activated.png Binary files differnew file mode 100644 index 000000000000..c0e20984b674 --- /dev/null +++ b/packages/Keyguard/res/drawable-hdpi/ic_action_assist_generic_activated.png diff --git a/packages/Keyguard/res/drawable-hdpi/ic_action_assist_generic_normal.png b/packages/Keyguard/res/drawable-hdpi/ic_action_assist_generic_normal.png Binary files differnew file mode 100644 index 000000000000..a852e2cc99bb --- /dev/null +++ b/packages/Keyguard/res/drawable-hdpi/ic_action_assist_generic_normal.png diff --git a/core/res/res/drawable-hdpi/ic_facial_backup.png b/packages/Keyguard/res/drawable-hdpi/ic_facial_backup.png Binary files differindex 295610910dda..295610910dda 100644 --- a/core/res/res/drawable-hdpi/ic_facial_backup.png +++ b/packages/Keyguard/res/drawable-hdpi/ic_facial_backup.png diff --git a/packages/Keyguard/res/drawable-hdpi/ic_input_delete.png b/packages/Keyguard/res/drawable-hdpi/ic_input_delete.png Binary files differnew file mode 100644 index 000000000000..5d638bd511ed --- /dev/null +++ b/packages/Keyguard/res/drawable-hdpi/ic_input_delete.png diff --git a/core/res/res/drawable-hdpi/ic_lockscreen_alarm.png b/packages/Keyguard/res/drawable-hdpi/ic_lockscreen_alarm.png Binary files differindex d7a8cfcba3c3..d7a8cfcba3c3 100644 --- a/core/res/res/drawable-hdpi/ic_lockscreen_alarm.png +++ b/packages/Keyguard/res/drawable-hdpi/ic_lockscreen_alarm.png diff --git a/core/res/res/drawable-hdpi/ic_lockscreen_camera_activated.png b/packages/Keyguard/res/drawable-hdpi/ic_lockscreen_camera_activated.png Binary files differindex 19c8eb29e273..19c8eb29e273 100644 --- a/core/res/res/drawable-hdpi/ic_lockscreen_camera_activated.png +++ b/packages/Keyguard/res/drawable-hdpi/ic_lockscreen_camera_activated.png diff --git a/core/res/res/drawable-hdpi/ic_lockscreen_camera_normal.png b/packages/Keyguard/res/drawable-hdpi/ic_lockscreen_camera_normal.png Binary files differindex c79a245580cb..c79a245580cb 100644 --- a/core/res/res/drawable-hdpi/ic_lockscreen_camera_normal.png +++ b/packages/Keyguard/res/drawable-hdpi/ic_lockscreen_camera_normal.png diff --git a/core/res/res/drawable-hdpi/ic_lockscreen_emergencycall_normal.png b/packages/Keyguard/res/drawable-hdpi/ic_lockscreen_emergencycall_normal.png Binary files differindex 460495af2c30..460495af2c30 100644 --- a/core/res/res/drawable-hdpi/ic_lockscreen_emergencycall_normal.png +++ b/packages/Keyguard/res/drawable-hdpi/ic_lockscreen_emergencycall_normal.png diff --git a/core/res/res/drawable-hdpi/ic_lockscreen_emergencycall_pressed.png b/packages/Keyguard/res/drawable-hdpi/ic_lockscreen_emergencycall_pressed.png Binary files differindex b0f7ae97a1ae..b0f7ae97a1ae 100644 --- a/core/res/res/drawable-hdpi/ic_lockscreen_emergencycall_pressed.png +++ b/packages/Keyguard/res/drawable-hdpi/ic_lockscreen_emergencycall_pressed.png diff --git a/core/res/res/drawable-hdpi/ic_lockscreen_forgotpassword_normal.png b/packages/Keyguard/res/drawable-hdpi/ic_lockscreen_forgotpassword_normal.png Binary files differindex 6402d3d428b0..6402d3d428b0 100644 --- a/core/res/res/drawable-hdpi/ic_lockscreen_forgotpassword_normal.png +++ b/packages/Keyguard/res/drawable-hdpi/ic_lockscreen_forgotpassword_normal.png diff --git a/core/res/res/drawable-hdpi/ic_lockscreen_forgotpassword_pressed.png b/packages/Keyguard/res/drawable-hdpi/ic_lockscreen_forgotpassword_pressed.png Binary files differindex 83be04650a0b..83be04650a0b 100644 --- a/core/res/res/drawable-hdpi/ic_lockscreen_forgotpassword_pressed.png +++ b/packages/Keyguard/res/drawable-hdpi/ic_lockscreen_forgotpassword_pressed.png diff --git a/packages/Keyguard/res/drawable-hdpi/ic_lockscreen_glowdot.png b/packages/Keyguard/res/drawable-hdpi/ic_lockscreen_glowdot.png Binary files differnew file mode 100644 index 000000000000..983c45e2c38c --- /dev/null +++ b/packages/Keyguard/res/drawable-hdpi/ic_lockscreen_glowdot.png diff --git a/core/res/res/drawable-hdpi/ic_lockscreen_google_activated.png b/packages/Keyguard/res/drawable-hdpi/ic_lockscreen_google_activated.png Binary files differindex 2c4847c53179..2c4847c53179 100644 --- a/core/res/res/drawable-hdpi/ic_lockscreen_google_activated.png +++ b/packages/Keyguard/res/drawable-hdpi/ic_lockscreen_google_activated.png diff --git a/core/res/res/drawable-hdpi/ic_lockscreen_google_focused.png b/packages/Keyguard/res/drawable-hdpi/ic_lockscreen_google_focused.png Binary files differindex d98557d5e692..d98557d5e692 100644 --- a/core/res/res/drawable-hdpi/ic_lockscreen_google_focused.png +++ b/packages/Keyguard/res/drawable-hdpi/ic_lockscreen_google_focused.png diff --git a/core/res/res/drawable-hdpi/ic_lockscreen_google_normal.png b/packages/Keyguard/res/drawable-hdpi/ic_lockscreen_google_normal.png Binary files differindex 656f3ba17e0d..656f3ba17e0d 100644 --- a/core/res/res/drawable-hdpi/ic_lockscreen_google_normal.png +++ b/packages/Keyguard/res/drawable-hdpi/ic_lockscreen_google_normal.png diff --git a/core/res/res/drawable-hdpi/ic_lockscreen_handle_normal.png b/packages/Keyguard/res/drawable-hdpi/ic_lockscreen_handle_normal.png Binary files differindex 1780ec059a6c..1780ec059a6c 100644 --- a/core/res/res/drawable-hdpi/ic_lockscreen_handle_normal.png +++ b/packages/Keyguard/res/drawable-hdpi/ic_lockscreen_handle_normal.png diff --git a/packages/Keyguard/res/drawable-hdpi/ic_lockscreen_handle_pressed.png b/packages/Keyguard/res/drawable-hdpi/ic_lockscreen_handle_pressed.png Binary files differnew file mode 100644 index 000000000000..58a5f16dfb42 --- /dev/null +++ b/packages/Keyguard/res/drawable-hdpi/ic_lockscreen_handle_pressed.png diff --git a/core/res/res/drawable-hdpi/ic_lockscreen_ime.png b/packages/Keyguard/res/drawable-hdpi/ic_lockscreen_ime.png Binary files differindex 29a7989372fc..29a7989372fc 100644 --- a/core/res/res/drawable-hdpi/ic_lockscreen_ime.png +++ b/packages/Keyguard/res/drawable-hdpi/ic_lockscreen_ime.png diff --git a/core/res/res/drawable-hdpi/ic_lockscreen_lock_normal.png b/packages/Keyguard/res/drawable-hdpi/ic_lockscreen_lock_normal.png Binary files differindex 732133c13a24..732133c13a24 100644 --- a/core/res/res/drawable-hdpi/ic_lockscreen_lock_normal.png +++ b/packages/Keyguard/res/drawable-hdpi/ic_lockscreen_lock_normal.png diff --git a/core/res/res/drawable-hdpi/ic_lockscreen_lock_pressed.png b/packages/Keyguard/res/drawable-hdpi/ic_lockscreen_lock_pressed.png Binary files differindex 0bbf62fd1231..0bbf62fd1231 100644 --- a/core/res/res/drawable-hdpi/ic_lockscreen_lock_pressed.png +++ b/packages/Keyguard/res/drawable-hdpi/ic_lockscreen_lock_pressed.png diff --git a/core/res/res/drawable-hdpi/ic_lockscreen_player_background.9.png b/packages/Keyguard/res/drawable-hdpi/ic_lockscreen_player_background.9.png Binary files differindex fbb75b548dd2..fbb75b548dd2 100644 --- a/core/res/res/drawable-hdpi/ic_lockscreen_player_background.9.png +++ b/packages/Keyguard/res/drawable-hdpi/ic_lockscreen_player_background.9.png diff --git a/core/res/res/drawable-hdpi/ic_lockscreen_search_activated.png b/packages/Keyguard/res/drawable-hdpi/ic_lockscreen_search_activated.png Binary files differindex 0d2e2eff126e..0d2e2eff126e 100644 --- a/core/res/res/drawable-hdpi/ic_lockscreen_search_activated.png +++ b/packages/Keyguard/res/drawable-hdpi/ic_lockscreen_search_activated.png diff --git a/core/res/res/drawable-hdpi/ic_lockscreen_search_normal.png b/packages/Keyguard/res/drawable-hdpi/ic_lockscreen_search_normal.png Binary files differindex 66d14aec0cce..66d14aec0cce 100644 --- a/core/res/res/drawable-hdpi/ic_lockscreen_search_normal.png +++ b/packages/Keyguard/res/drawable-hdpi/ic_lockscreen_search_normal.png diff --git a/core/res/res/drawable-hdpi/ic_lockscreen_silent_activated.png b/packages/Keyguard/res/drawable-hdpi/ic_lockscreen_silent_activated.png Binary files differindex 7060d596f32e..7060d596f32e 100644 --- a/core/res/res/drawable-hdpi/ic_lockscreen_silent_activated.png +++ b/packages/Keyguard/res/drawable-hdpi/ic_lockscreen_silent_activated.png diff --git a/core/res/res/drawable-hdpi/ic_lockscreen_silent_focused.png b/packages/Keyguard/res/drawable-hdpi/ic_lockscreen_silent_focused.png Binary files differindex f9a8c7caeda3..f9a8c7caeda3 100644 --- a/core/res/res/drawable-hdpi/ic_lockscreen_silent_focused.png +++ b/packages/Keyguard/res/drawable-hdpi/ic_lockscreen_silent_focused.png diff --git a/core/res/res/drawable-hdpi/ic_lockscreen_silent_normal.png b/packages/Keyguard/res/drawable-hdpi/ic_lockscreen_silent_normal.png Binary files differindex b47cd08f2138..b47cd08f2138 100644 --- a/core/res/res/drawable-hdpi/ic_lockscreen_silent_normal.png +++ b/packages/Keyguard/res/drawable-hdpi/ic_lockscreen_silent_normal.png diff --git a/core/res/res/drawable-hdpi/ic_lockscreen_sim.png b/packages/Keyguard/res/drawable-hdpi/ic_lockscreen_sim.png Binary files differindex 7cf9e3699ceb..7cf9e3699ceb 100644 --- a/core/res/res/drawable-hdpi/ic_lockscreen_sim.png +++ b/packages/Keyguard/res/drawable-hdpi/ic_lockscreen_sim.png diff --git a/core/res/res/drawable-hdpi/ic_lockscreen_soundon_activated.png b/packages/Keyguard/res/drawable-hdpi/ic_lockscreen_soundon_activated.png Binary files differindex 88d0a9f55818..88d0a9f55818 100644 --- a/core/res/res/drawable-hdpi/ic_lockscreen_soundon_activated.png +++ b/packages/Keyguard/res/drawable-hdpi/ic_lockscreen_soundon_activated.png diff --git a/core/res/res/drawable-hdpi/ic_lockscreen_soundon_focused.png b/packages/Keyguard/res/drawable-hdpi/ic_lockscreen_soundon_focused.png Binary files differindex 6e16e40379ce..6e16e40379ce 100644 --- a/core/res/res/drawable-hdpi/ic_lockscreen_soundon_focused.png +++ b/packages/Keyguard/res/drawable-hdpi/ic_lockscreen_soundon_focused.png diff --git a/core/res/res/drawable-hdpi/ic_lockscreen_soundon_normal.png b/packages/Keyguard/res/drawable-hdpi/ic_lockscreen_soundon_normal.png Binary files differindex 0dd81c021791..0dd81c021791 100644 --- a/core/res/res/drawable-hdpi/ic_lockscreen_soundon_normal.png +++ b/packages/Keyguard/res/drawable-hdpi/ic_lockscreen_soundon_normal.png diff --git a/core/res/res/drawable-hdpi/ic_lockscreen_unlock_activated.png b/packages/Keyguard/res/drawable-hdpi/ic_lockscreen_unlock_activated.png Binary files differindex 374a62ae82b8..374a62ae82b8 100644 --- a/core/res/res/drawable-hdpi/ic_lockscreen_unlock_activated.png +++ b/packages/Keyguard/res/drawable-hdpi/ic_lockscreen_unlock_activated.png diff --git a/core/res/res/drawable-hdpi/ic_lockscreen_unlock_normal.png b/packages/Keyguard/res/drawable-hdpi/ic_lockscreen_unlock_normal.png Binary files differindex 39608932b3e6..39608932b3e6 100644 --- a/core/res/res/drawable-hdpi/ic_lockscreen_unlock_normal.png +++ b/packages/Keyguard/res/drawable-hdpi/ic_lockscreen_unlock_normal.png diff --git a/packages/Keyguard/res/drawable-hdpi/ic_media_next.png b/packages/Keyguard/res/drawable-hdpi/ic_media_next.png Binary files differnew file mode 100644 index 000000000000..6e27b8161e4a --- /dev/null +++ b/packages/Keyguard/res/drawable-hdpi/ic_media_next.png diff --git a/packages/Keyguard/res/drawable-hdpi/ic_media_play.png b/packages/Keyguard/res/drawable-hdpi/ic_media_play.png Binary files differnew file mode 100644 index 000000000000..2746d17fb1fe --- /dev/null +++ b/packages/Keyguard/res/drawable-hdpi/ic_media_play.png diff --git a/packages/Keyguard/res/drawable-hdpi/ic_media_previous.png b/packages/Keyguard/res/drawable-hdpi/ic_media_previous.png Binary files differnew file mode 100644 index 000000000000..85b376690418 --- /dev/null +++ b/packages/Keyguard/res/drawable-hdpi/ic_media_previous.png diff --git a/core/res/res/drawable-hdpi/intro_bg.png b/packages/Keyguard/res/drawable-hdpi/intro_bg.png Binary files differindex a758e7dd1b89..a758e7dd1b89 100644 --- a/core/res/res/drawable-hdpi/intro_bg.png +++ b/packages/Keyguard/res/drawable-hdpi/intro_bg.png diff --git a/packages/Keyguard/res/drawable-hdpi/kg_add_widget.png b/packages/Keyguard/res/drawable-hdpi/kg_add_widget.png Binary files differnew file mode 100644 index 000000000000..7456705b402f --- /dev/null +++ b/packages/Keyguard/res/drawable-hdpi/kg_add_widget.png diff --git a/core/res/res/drawable-hdpi/kg_add_widget_disabled.png b/packages/Keyguard/res/drawable-hdpi/kg_add_widget_disabled.png Binary files differindex f24cf6423ff9..f24cf6423ff9 100644 --- a/core/res/res/drawable-hdpi/kg_add_widget_disabled.png +++ b/packages/Keyguard/res/drawable-hdpi/kg_add_widget_disabled.png diff --git a/core/res/res/drawable-hdpi/kg_add_widget_pressed.png b/packages/Keyguard/res/drawable-hdpi/kg_add_widget_pressed.png Binary files differindex 55112ca7ea9a..55112ca7ea9a 100644 --- a/core/res/res/drawable-hdpi/kg_add_widget_pressed.png +++ b/packages/Keyguard/res/drawable-hdpi/kg_add_widget_pressed.png diff --git a/core/res/res/drawable-hdpi/kg_bouncer_bg_white.9.png b/packages/Keyguard/res/drawable-hdpi/kg_bouncer_bg_white.9.png Binary files differindex cfd5db357dc4..cfd5db357dc4 100644 --- a/core/res/res/drawable-hdpi/kg_bouncer_bg_white.9.png +++ b/packages/Keyguard/res/drawable-hdpi/kg_bouncer_bg_white.9.png diff --git a/core/res/res/drawable-hdpi/kg_security_grip.9.png b/packages/Keyguard/res/drawable-hdpi/kg_security_grip.9.png Binary files differindex 1e40aef33699..1e40aef33699 100644 --- a/core/res/res/drawable-hdpi/kg_security_grip.9.png +++ b/packages/Keyguard/res/drawable-hdpi/kg_security_grip.9.png diff --git a/core/res/res/drawable-hdpi/kg_security_lock.png b/packages/Keyguard/res/drawable-hdpi/kg_security_lock.png Binary files differindex c3c94c464bf8..c3c94c464bf8 100644 --- a/core/res/res/drawable-hdpi/kg_security_lock.png +++ b/packages/Keyguard/res/drawable-hdpi/kg_security_lock.png diff --git a/packages/Keyguard/res/drawable-hdpi/kg_security_lock_focused.png b/packages/Keyguard/res/drawable-hdpi/kg_security_lock_focused.png Binary files differnew file mode 100644 index 000000000000..9a827997a482 --- /dev/null +++ b/packages/Keyguard/res/drawable-hdpi/kg_security_lock_focused.png diff --git a/packages/Keyguard/res/drawable-hdpi/kg_security_lock_normal.png b/packages/Keyguard/res/drawable-hdpi/kg_security_lock_normal.png Binary files differnew file mode 100644 index 000000000000..d608707e38e4 --- /dev/null +++ b/packages/Keyguard/res/drawable-hdpi/kg_security_lock_normal.png diff --git a/packages/Keyguard/res/drawable-hdpi/kg_security_lock_pressed.png b/packages/Keyguard/res/drawable-hdpi/kg_security_lock_pressed.png Binary files differnew file mode 100644 index 000000000000..7ca995dfdf07 --- /dev/null +++ b/packages/Keyguard/res/drawable-hdpi/kg_security_lock_pressed.png diff --git a/core/res/res/drawable-hdpi/kg_widget_bg_padded.9.png b/packages/Keyguard/res/drawable-hdpi/kg_widget_bg_padded.9.png Binary files differindex dff1dfaf9d27..dff1dfaf9d27 100644 --- a/core/res/res/drawable-hdpi/kg_widget_bg_padded.9.png +++ b/packages/Keyguard/res/drawable-hdpi/kg_widget_bg_padded.9.png diff --git a/core/res/res/drawable-hdpi/kg_widget_delete_drop_target.png b/packages/Keyguard/res/drawable-hdpi/kg_widget_delete_drop_target.png Binary files differindex 84549ff946a7..84549ff946a7 100644 --- a/core/res/res/drawable-hdpi/kg_widget_delete_drop_target.png +++ b/packages/Keyguard/res/drawable-hdpi/kg_widget_delete_drop_target.png diff --git a/core/res/res/drawable-hdpi/lockscreen_protection_pattern.png b/packages/Keyguard/res/drawable-hdpi/lockscreen_protection_pattern.png Binary files differindex 681d8be1f8c6..681d8be1f8c6 100644 --- a/core/res/res/drawable-hdpi/lockscreen_protection_pattern.png +++ b/packages/Keyguard/res/drawable-hdpi/lockscreen_protection_pattern.png diff --git a/core/res/res/drawable-hdpi/sym_keyboard_return_holo.png b/packages/Keyguard/res/drawable-hdpi/sym_keyboard_return_holo.png Binary files differindex f1bcf487c5f1..f1bcf487c5f1 100644 --- a/core/res/res/drawable-hdpi/sym_keyboard_return_holo.png +++ b/packages/Keyguard/res/drawable-hdpi/sym_keyboard_return_holo.png diff --git a/packages/Keyguard/res/drawable-ldpi/ic_input_delete.png b/packages/Keyguard/res/drawable-ldpi/ic_input_delete.png Binary files differnew file mode 100644 index 000000000000..d7eff17b5bcd --- /dev/null +++ b/packages/Keyguard/res/drawable-ldpi/ic_input_delete.png diff --git a/packages/Keyguard/res/drawable-ldpi/ic_media_next.png b/packages/Keyguard/res/drawable-ldpi/ic_media_next.png Binary files differnew file mode 100644 index 000000000000..99927fd27b90 --- /dev/null +++ b/packages/Keyguard/res/drawable-ldpi/ic_media_next.png diff --git a/packages/Keyguard/res/drawable-ldpi/ic_media_play.png b/packages/Keyguard/res/drawable-ldpi/ic_media_play.png Binary files differnew file mode 100644 index 000000000000..e7c19724bbcb --- /dev/null +++ b/packages/Keyguard/res/drawable-ldpi/ic_media_play.png diff --git a/packages/Keyguard/res/drawable-ldpi/ic_media_previous.png b/packages/Keyguard/res/drawable-ldpi/ic_media_previous.png Binary files differnew file mode 100644 index 000000000000..df043228d017 --- /dev/null +++ b/packages/Keyguard/res/drawable-ldpi/ic_media_previous.png diff --git a/packages/Keyguard/res/drawable-mdpi/ic_action_assist_generic_activated.png b/packages/Keyguard/res/drawable-mdpi/ic_action_assist_generic_activated.png Binary files differnew file mode 100644 index 000000000000..f88f7e13f3ba --- /dev/null +++ b/packages/Keyguard/res/drawable-mdpi/ic_action_assist_generic_activated.png diff --git a/packages/Keyguard/res/drawable-mdpi/ic_action_assist_generic_normal.png b/packages/Keyguard/res/drawable-mdpi/ic_action_assist_generic_normal.png Binary files differnew file mode 100644 index 000000000000..7426994a59e3 --- /dev/null +++ b/packages/Keyguard/res/drawable-mdpi/ic_action_assist_generic_normal.png diff --git a/core/res/res/drawable-mdpi/ic_facial_backup.png b/packages/Keyguard/res/drawable-mdpi/ic_facial_backup.png Binary files differindex 6ed1327a626a..6ed1327a626a 100644 --- a/core/res/res/drawable-mdpi/ic_facial_backup.png +++ b/packages/Keyguard/res/drawable-mdpi/ic_facial_backup.png diff --git a/packages/Keyguard/res/drawable-mdpi/ic_input_delete.png b/packages/Keyguard/res/drawable-mdpi/ic_input_delete.png Binary files differnew file mode 100644 index 000000000000..47c8708782a2 --- /dev/null +++ b/packages/Keyguard/res/drawable-mdpi/ic_input_delete.png diff --git a/core/res/res/drawable-mdpi/ic_lockscreen_alarm.png b/packages/Keyguard/res/drawable-mdpi/ic_lockscreen_alarm.png Binary files differindex 330ade15fb78..330ade15fb78 100644 --- a/core/res/res/drawable-mdpi/ic_lockscreen_alarm.png +++ b/packages/Keyguard/res/drawable-mdpi/ic_lockscreen_alarm.png diff --git a/core/res/res/drawable-mdpi/ic_lockscreen_camera_activated.png b/packages/Keyguard/res/drawable-mdpi/ic_lockscreen_camera_activated.png Binary files differindex 862f33bffe6b..862f33bffe6b 100644 --- a/core/res/res/drawable-mdpi/ic_lockscreen_camera_activated.png +++ b/packages/Keyguard/res/drawable-mdpi/ic_lockscreen_camera_activated.png diff --git a/core/res/res/drawable-mdpi/ic_lockscreen_camera_normal.png b/packages/Keyguard/res/drawable-mdpi/ic_lockscreen_camera_normal.png Binary files differindex 30df0a328ca5..30df0a328ca5 100644 --- a/core/res/res/drawable-mdpi/ic_lockscreen_camera_normal.png +++ b/packages/Keyguard/res/drawable-mdpi/ic_lockscreen_camera_normal.png diff --git a/core/res/res/drawable-mdpi/ic_lockscreen_emergencycall_normal.png b/packages/Keyguard/res/drawable-mdpi/ic_lockscreen_emergencycall_normal.png Binary files differindex cae795fd7547..cae795fd7547 100644 --- a/core/res/res/drawable-mdpi/ic_lockscreen_emergencycall_normal.png +++ b/packages/Keyguard/res/drawable-mdpi/ic_lockscreen_emergencycall_normal.png diff --git a/core/res/res/drawable-mdpi/ic_lockscreen_emergencycall_pressed.png b/packages/Keyguard/res/drawable-mdpi/ic_lockscreen_emergencycall_pressed.png Binary files differindex 28679564935b..28679564935b 100644 --- a/core/res/res/drawable-mdpi/ic_lockscreen_emergencycall_pressed.png +++ b/packages/Keyguard/res/drawable-mdpi/ic_lockscreen_emergencycall_pressed.png diff --git a/core/res/res/drawable-mdpi/ic_lockscreen_forgotpassword_normal.png b/packages/Keyguard/res/drawable-mdpi/ic_lockscreen_forgotpassword_normal.png Binary files differindex a7e063a5c8c1..a7e063a5c8c1 100644 --- a/core/res/res/drawable-mdpi/ic_lockscreen_forgotpassword_normal.png +++ b/packages/Keyguard/res/drawable-mdpi/ic_lockscreen_forgotpassword_normal.png diff --git a/core/res/res/drawable-mdpi/ic_lockscreen_forgotpassword_pressed.png b/packages/Keyguard/res/drawable-mdpi/ic_lockscreen_forgotpassword_pressed.png Binary files differindex 53af5a54faa5..53af5a54faa5 100644 --- a/core/res/res/drawable-mdpi/ic_lockscreen_forgotpassword_pressed.png +++ b/packages/Keyguard/res/drawable-mdpi/ic_lockscreen_forgotpassword_pressed.png diff --git a/packages/Keyguard/res/drawable-mdpi/ic_lockscreen_glowdot.png b/packages/Keyguard/res/drawable-mdpi/ic_lockscreen_glowdot.png Binary files differnew file mode 100644 index 000000000000..056c3f175471 --- /dev/null +++ b/packages/Keyguard/res/drawable-mdpi/ic_lockscreen_glowdot.png diff --git a/core/res/res/drawable-mdpi/ic_lockscreen_google_activated.png b/packages/Keyguard/res/drawable-mdpi/ic_lockscreen_google_activated.png Binary files differindex 32a68e0f28c1..32a68e0f28c1 100644 --- a/core/res/res/drawable-mdpi/ic_lockscreen_google_activated.png +++ b/packages/Keyguard/res/drawable-mdpi/ic_lockscreen_google_activated.png diff --git a/core/res/res/drawable-mdpi/ic_lockscreen_google_focused.png b/packages/Keyguard/res/drawable-mdpi/ic_lockscreen_google_focused.png Binary files differindex 3f96d0379d3d..3f96d0379d3d 100644 --- a/core/res/res/drawable-mdpi/ic_lockscreen_google_focused.png +++ b/packages/Keyguard/res/drawable-mdpi/ic_lockscreen_google_focused.png diff --git a/core/res/res/drawable-mdpi/ic_lockscreen_google_normal.png b/packages/Keyguard/res/drawable-mdpi/ic_lockscreen_google_normal.png Binary files differindex 2f7efcf5e80b..2f7efcf5e80b 100644 --- a/core/res/res/drawable-mdpi/ic_lockscreen_google_normal.png +++ b/packages/Keyguard/res/drawable-mdpi/ic_lockscreen_google_normal.png diff --git a/core/res/res/drawable-mdpi/ic_lockscreen_handle_normal.png b/packages/Keyguard/res/drawable-mdpi/ic_lockscreen_handle_normal.png Binary files differindex 1d547e118c5b..1d547e118c5b 100644 --- a/core/res/res/drawable-mdpi/ic_lockscreen_handle_normal.png +++ b/packages/Keyguard/res/drawable-mdpi/ic_lockscreen_handle_normal.png diff --git a/packages/Keyguard/res/drawable-mdpi/ic_lockscreen_handle_pressed.png b/packages/Keyguard/res/drawable-mdpi/ic_lockscreen_handle_pressed.png Binary files differnew file mode 100644 index 000000000000..0187a02afc21 --- /dev/null +++ b/packages/Keyguard/res/drawable-mdpi/ic_lockscreen_handle_pressed.png diff --git a/core/res/res/drawable-mdpi/ic_lockscreen_ime.png b/packages/Keyguard/res/drawable-mdpi/ic_lockscreen_ime.png Binary files differindex b27e059260ce..b27e059260ce 100644 --- a/core/res/res/drawable-mdpi/ic_lockscreen_ime.png +++ b/packages/Keyguard/res/drawable-mdpi/ic_lockscreen_ime.png diff --git a/core/res/res/drawable-mdpi/ic_lockscreen_lock_normal.png b/packages/Keyguard/res/drawable-mdpi/ic_lockscreen_lock_normal.png Binary files differindex 30eb97473dc1..30eb97473dc1 100644 --- a/core/res/res/drawable-mdpi/ic_lockscreen_lock_normal.png +++ b/packages/Keyguard/res/drawable-mdpi/ic_lockscreen_lock_normal.png diff --git a/core/res/res/drawable-mdpi/ic_lockscreen_lock_pressed.png b/packages/Keyguard/res/drawable-mdpi/ic_lockscreen_lock_pressed.png Binary files differindex aab2f6b065b6..aab2f6b065b6 100644 --- a/core/res/res/drawable-mdpi/ic_lockscreen_lock_pressed.png +++ b/packages/Keyguard/res/drawable-mdpi/ic_lockscreen_lock_pressed.png diff --git a/core/res/res/drawable-mdpi/ic_lockscreen_player_background.9.png b/packages/Keyguard/res/drawable-mdpi/ic_lockscreen_player_background.9.png Binary files differindex 17d97c4332ab..17d97c4332ab 100644 --- a/core/res/res/drawable-mdpi/ic_lockscreen_player_background.9.png +++ b/packages/Keyguard/res/drawable-mdpi/ic_lockscreen_player_background.9.png diff --git a/core/res/res/drawable-mdpi/ic_lockscreen_search_activated.png b/packages/Keyguard/res/drawable-mdpi/ic_lockscreen_search_activated.png Binary files differindex 73c6be654aa8..73c6be654aa8 100644 --- a/core/res/res/drawable-mdpi/ic_lockscreen_search_activated.png +++ b/packages/Keyguard/res/drawable-mdpi/ic_lockscreen_search_activated.png diff --git a/core/res/res/drawable-mdpi/ic_lockscreen_search_normal.png b/packages/Keyguard/res/drawable-mdpi/ic_lockscreen_search_normal.png Binary files differindex 73c6be654aa8..73c6be654aa8 100644 --- a/core/res/res/drawable-mdpi/ic_lockscreen_search_normal.png +++ b/packages/Keyguard/res/drawable-mdpi/ic_lockscreen_search_normal.png diff --git a/core/res/res/drawable-mdpi/ic_lockscreen_silent_activated.png b/packages/Keyguard/res/drawable-mdpi/ic_lockscreen_silent_activated.png Binary files differindex 2bc3f52b86b9..2bc3f52b86b9 100644 --- a/core/res/res/drawable-mdpi/ic_lockscreen_silent_activated.png +++ b/packages/Keyguard/res/drawable-mdpi/ic_lockscreen_silent_activated.png diff --git a/core/res/res/drawable-mdpi/ic_lockscreen_silent_focused.png b/packages/Keyguard/res/drawable-mdpi/ic_lockscreen_silent_focused.png Binary files differindex 6a5af9d652eb..6a5af9d652eb 100644 --- a/core/res/res/drawable-mdpi/ic_lockscreen_silent_focused.png +++ b/packages/Keyguard/res/drawable-mdpi/ic_lockscreen_silent_focused.png diff --git a/core/res/res/drawable-mdpi/ic_lockscreen_silent_normal.png b/packages/Keyguard/res/drawable-mdpi/ic_lockscreen_silent_normal.png Binary files differindex c288ce4284cd..c288ce4284cd 100644 --- a/core/res/res/drawable-mdpi/ic_lockscreen_silent_normal.png +++ b/packages/Keyguard/res/drawable-mdpi/ic_lockscreen_silent_normal.png diff --git a/core/res/res/drawable-mdpi/ic_lockscreen_sim.png b/packages/Keyguard/res/drawable-mdpi/ic_lockscreen_sim.png Binary files differindex 2e259c3e17c1..2e259c3e17c1 100644 --- a/core/res/res/drawable-mdpi/ic_lockscreen_sim.png +++ b/packages/Keyguard/res/drawable-mdpi/ic_lockscreen_sim.png diff --git a/core/res/res/drawable-mdpi/ic_lockscreen_soundon_activated.png b/packages/Keyguard/res/drawable-mdpi/ic_lockscreen_soundon_activated.png Binary files differindex 637eec6fb0cd..637eec6fb0cd 100644 --- a/core/res/res/drawable-mdpi/ic_lockscreen_soundon_activated.png +++ b/packages/Keyguard/res/drawable-mdpi/ic_lockscreen_soundon_activated.png diff --git a/core/res/res/drawable-mdpi/ic_lockscreen_soundon_focused.png b/packages/Keyguard/res/drawable-mdpi/ic_lockscreen_soundon_focused.png Binary files differindex db59b5f3eee7..db59b5f3eee7 100644 --- a/core/res/res/drawable-mdpi/ic_lockscreen_soundon_focused.png +++ b/packages/Keyguard/res/drawable-mdpi/ic_lockscreen_soundon_focused.png diff --git a/core/res/res/drawable-mdpi/ic_lockscreen_soundon_normal.png b/packages/Keyguard/res/drawable-mdpi/ic_lockscreen_soundon_normal.png Binary files differindex eb6ceedb8185..eb6ceedb8185 100644 --- a/core/res/res/drawable-mdpi/ic_lockscreen_soundon_normal.png +++ b/packages/Keyguard/res/drawable-mdpi/ic_lockscreen_soundon_normal.png diff --git a/core/res/res/drawable-mdpi/ic_lockscreen_unlock_activated.png b/packages/Keyguard/res/drawable-mdpi/ic_lockscreen_unlock_activated.png Binary files differindex 68409c5b37f9..68409c5b37f9 100644 --- a/core/res/res/drawable-mdpi/ic_lockscreen_unlock_activated.png +++ b/packages/Keyguard/res/drawable-mdpi/ic_lockscreen_unlock_activated.png diff --git a/core/res/res/drawable-mdpi/ic_lockscreen_unlock_normal.png b/packages/Keyguard/res/drawable-mdpi/ic_lockscreen_unlock_normal.png Binary files differindex 52866f258e32..52866f258e32 100644 --- a/core/res/res/drawable-mdpi/ic_lockscreen_unlock_normal.png +++ b/packages/Keyguard/res/drawable-mdpi/ic_lockscreen_unlock_normal.png diff --git a/packages/Keyguard/res/drawable-mdpi/ic_media_next.png b/packages/Keyguard/res/drawable-mdpi/ic_media_next.png Binary files differnew file mode 100644 index 000000000000..fcd73d90e762 --- /dev/null +++ b/packages/Keyguard/res/drawable-mdpi/ic_media_next.png diff --git a/packages/Keyguard/res/drawable-mdpi/ic_media_play.png b/packages/Keyguard/res/drawable-mdpi/ic_media_play.png Binary files differnew file mode 100644 index 000000000000..7966bbc5161a --- /dev/null +++ b/packages/Keyguard/res/drawable-mdpi/ic_media_play.png diff --git a/packages/Keyguard/res/drawable-mdpi/ic_media_previous.png b/packages/Keyguard/res/drawable-mdpi/ic_media_previous.png Binary files differnew file mode 100644 index 000000000000..b653d05b9f4a --- /dev/null +++ b/packages/Keyguard/res/drawable-mdpi/ic_media_previous.png diff --git a/core/res/res/drawable-mdpi/intro_bg.png b/packages/Keyguard/res/drawable-mdpi/intro_bg.png Binary files differindex 540da311dcc1..540da311dcc1 100644 --- a/core/res/res/drawable-mdpi/intro_bg.png +++ b/packages/Keyguard/res/drawable-mdpi/intro_bg.png diff --git a/packages/Keyguard/res/drawable-mdpi/kg_add_widget.png b/packages/Keyguard/res/drawable-mdpi/kg_add_widget.png Binary files differnew file mode 100644 index 000000000000..1cab0d9328fb --- /dev/null +++ b/packages/Keyguard/res/drawable-mdpi/kg_add_widget.png diff --git a/core/res/res/drawable-mdpi/kg_add_widget_disabled.png b/packages/Keyguard/res/drawable-mdpi/kg_add_widget_disabled.png Binary files differindex 02e0f0ecc260..02e0f0ecc260 100644 --- a/core/res/res/drawable-mdpi/kg_add_widget_disabled.png +++ b/packages/Keyguard/res/drawable-mdpi/kg_add_widget_disabled.png diff --git a/core/res/res/drawable-mdpi/kg_add_widget_pressed.png b/packages/Keyguard/res/drawable-mdpi/kg_add_widget_pressed.png Binary files differindex 34a7aaa535a2..34a7aaa535a2 100644 --- a/core/res/res/drawable-mdpi/kg_add_widget_pressed.png +++ b/packages/Keyguard/res/drawable-mdpi/kg_add_widget_pressed.png diff --git a/core/res/res/drawable-mdpi/kg_bouncer_bg_white.9.png b/packages/Keyguard/res/drawable-mdpi/kg_bouncer_bg_white.9.png Binary files differindex e3cb6db09736..e3cb6db09736 100644 --- a/core/res/res/drawable-mdpi/kg_bouncer_bg_white.9.png +++ b/packages/Keyguard/res/drawable-mdpi/kg_bouncer_bg_white.9.png diff --git a/core/res/res/drawable-mdpi/kg_security_grip.9.png b/packages/Keyguard/res/drawable-mdpi/kg_security_grip.9.png Binary files differindex 334a39b5c9a2..334a39b5c9a2 100644 --- a/core/res/res/drawable-mdpi/kg_security_grip.9.png +++ b/packages/Keyguard/res/drawable-mdpi/kg_security_grip.9.png diff --git a/core/res/res/drawable-mdpi/kg_security_lock.png b/packages/Keyguard/res/drawable-mdpi/kg_security_lock.png Binary files differindex a39f38002e5d..a39f38002e5d 100644 --- a/core/res/res/drawable-mdpi/kg_security_lock.png +++ b/packages/Keyguard/res/drawable-mdpi/kg_security_lock.png diff --git a/packages/Keyguard/res/drawable-mdpi/kg_security_lock_focused.png b/packages/Keyguard/res/drawable-mdpi/kg_security_lock_focused.png Binary files differnew file mode 100644 index 000000000000..c3608f940169 --- /dev/null +++ b/packages/Keyguard/res/drawable-mdpi/kg_security_lock_focused.png diff --git a/packages/Keyguard/res/drawable-mdpi/kg_security_lock_normal.png b/packages/Keyguard/res/drawable-mdpi/kg_security_lock_normal.png Binary files differnew file mode 100644 index 000000000000..7957c79dccab --- /dev/null +++ b/packages/Keyguard/res/drawable-mdpi/kg_security_lock_normal.png diff --git a/packages/Keyguard/res/drawable-mdpi/kg_security_lock_pressed.png b/packages/Keyguard/res/drawable-mdpi/kg_security_lock_pressed.png Binary files differnew file mode 100644 index 000000000000..41715f5be419 --- /dev/null +++ b/packages/Keyguard/res/drawable-mdpi/kg_security_lock_pressed.png diff --git a/core/res/res/drawable-mdpi/kg_widget_bg_padded.9.png b/packages/Keyguard/res/drawable-mdpi/kg_widget_bg_padded.9.png Binary files differindex c313df12f4aa..c313df12f4aa 100644 --- a/core/res/res/drawable-mdpi/kg_widget_bg_padded.9.png +++ b/packages/Keyguard/res/drawable-mdpi/kg_widget_bg_padded.9.png diff --git a/core/res/res/drawable-mdpi/kg_widget_delete_drop_target.png b/packages/Keyguard/res/drawable-mdpi/kg_widget_delete_drop_target.png Binary files differindex 219f3e5cfd6d..219f3e5cfd6d 100644 --- a/core/res/res/drawable-mdpi/kg_widget_delete_drop_target.png +++ b/packages/Keyguard/res/drawable-mdpi/kg_widget_delete_drop_target.png diff --git a/core/res/res/drawable-mdpi/lockscreen_protection_pattern.png b/packages/Keyguard/res/drawable-mdpi/lockscreen_protection_pattern.png Binary files differindex 30bcea537afd..30bcea537afd 100644 --- a/core/res/res/drawable-mdpi/lockscreen_protection_pattern.png +++ b/packages/Keyguard/res/drawable-mdpi/lockscreen_protection_pattern.png diff --git a/core/res/res/drawable-mdpi/sym_keyboard_return_holo.png b/packages/Keyguard/res/drawable-mdpi/sym_keyboard_return_holo.png Binary files differindex d5a7708ca082..d5a7708ca082 100644 --- a/core/res/res/drawable-mdpi/sym_keyboard_return_holo.png +++ b/packages/Keyguard/res/drawable-mdpi/sym_keyboard_return_holo.png diff --git a/packages/Keyguard/res/drawable-nodpi/app_icon.png b/packages/Keyguard/res/drawable-nodpi/app_icon.png Binary files differnew file mode 100644 index 000000000000..ea31bd8ea1c6 --- /dev/null +++ b/packages/Keyguard/res/drawable-nodpi/app_icon.png diff --git a/core/res/res/drawable-sw600dp-hdpi/ic_lockscreen_handle_normal.png b/packages/Keyguard/res/drawable-sw600dp-hdpi/ic_lockscreen_handle_normal.png Binary files differindex f28fe38eb449..f28fe38eb449 100644 --- a/core/res/res/drawable-sw600dp-hdpi/ic_lockscreen_handle_normal.png +++ b/packages/Keyguard/res/drawable-sw600dp-hdpi/ic_lockscreen_handle_normal.png diff --git a/packages/Keyguard/res/drawable-sw600dp-hdpi/ic_lockscreen_handle_pressed.png b/packages/Keyguard/res/drawable-sw600dp-hdpi/ic_lockscreen_handle_pressed.png Binary files differnew file mode 100644 index 000000000000..728fc6756e25 --- /dev/null +++ b/packages/Keyguard/res/drawable-sw600dp-hdpi/ic_lockscreen_handle_pressed.png diff --git a/core/res/res/drawable-sw600dp-mdpi/ic_lockscreen_handle_normal.png b/packages/Keyguard/res/drawable-sw600dp-mdpi/ic_lockscreen_handle_normal.png Binary files differindex 99e742fa27a3..99e742fa27a3 100644 --- a/core/res/res/drawable-sw600dp-mdpi/ic_lockscreen_handle_normal.png +++ b/packages/Keyguard/res/drawable-sw600dp-mdpi/ic_lockscreen_handle_normal.png diff --git a/packages/Keyguard/res/drawable-sw600dp-mdpi/ic_lockscreen_handle_pressed.png b/packages/Keyguard/res/drawable-sw600dp-mdpi/ic_lockscreen_handle_pressed.png Binary files differnew file mode 100644 index 000000000000..c7da0242730d --- /dev/null +++ b/packages/Keyguard/res/drawable-sw600dp-mdpi/ic_lockscreen_handle_pressed.png diff --git a/core/res/res/drawable-sw600dp-xhdpi/ic_lockscreen_handle_normal.png b/packages/Keyguard/res/drawable-sw600dp-xhdpi/ic_lockscreen_handle_normal.png Binary files differindex 75e478310a1b..75e478310a1b 100644 --- a/core/res/res/drawable-sw600dp-xhdpi/ic_lockscreen_handle_normal.png +++ b/packages/Keyguard/res/drawable-sw600dp-xhdpi/ic_lockscreen_handle_normal.png diff --git a/packages/Keyguard/res/drawable-sw600dp-xhdpi/ic_lockscreen_handle_pressed.png b/packages/Keyguard/res/drawable-sw600dp-xhdpi/ic_lockscreen_handle_pressed.png Binary files differnew file mode 100644 index 000000000000..534c10bc08e0 --- /dev/null +++ b/packages/Keyguard/res/drawable-sw600dp-xhdpi/ic_lockscreen_handle_pressed.png diff --git a/packages/Keyguard/res/drawable-xhdpi/ic_action_assist_generic_activated.png b/packages/Keyguard/res/drawable-xhdpi/ic_action_assist_generic_activated.png Binary files differnew file mode 100644 index 000000000000..500b15755b88 --- /dev/null +++ b/packages/Keyguard/res/drawable-xhdpi/ic_action_assist_generic_activated.png diff --git a/packages/Keyguard/res/drawable-xhdpi/ic_action_assist_generic_normal.png b/packages/Keyguard/res/drawable-xhdpi/ic_action_assist_generic_normal.png Binary files differnew file mode 100644 index 000000000000..d0e4cf3f839a --- /dev/null +++ b/packages/Keyguard/res/drawable-xhdpi/ic_action_assist_generic_normal.png diff --git a/core/res/res/drawable-xhdpi/ic_facial_backup.png b/packages/Keyguard/res/drawable-xhdpi/ic_facial_backup.png Binary files differindex 942cf239fff9..942cf239fff9 100644 --- a/core/res/res/drawable-xhdpi/ic_facial_backup.png +++ b/packages/Keyguard/res/drawable-xhdpi/ic_facial_backup.png diff --git a/packages/Keyguard/res/drawable-xhdpi/ic_input_delete.png b/packages/Keyguard/res/drawable-xhdpi/ic_input_delete.png Binary files differnew file mode 100644 index 000000000000..8b822d9e37c2 --- /dev/null +++ b/packages/Keyguard/res/drawable-xhdpi/ic_input_delete.png diff --git a/core/res/res/drawable-xhdpi/ic_lockscreen_alarm.png b/packages/Keyguard/res/drawable-xhdpi/ic_lockscreen_alarm.png Binary files differindex e6cceefe6a5b..e6cceefe6a5b 100644 --- a/core/res/res/drawable-xhdpi/ic_lockscreen_alarm.png +++ b/packages/Keyguard/res/drawable-xhdpi/ic_lockscreen_alarm.png diff --git a/core/res/res/drawable-xhdpi/ic_lockscreen_camera_activated.png b/packages/Keyguard/res/drawable-xhdpi/ic_lockscreen_camera_activated.png Binary files differindex 760ef2d9ed49..760ef2d9ed49 100644 --- a/core/res/res/drawable-xhdpi/ic_lockscreen_camera_activated.png +++ b/packages/Keyguard/res/drawable-xhdpi/ic_lockscreen_camera_activated.png diff --git a/core/res/res/drawable-xhdpi/ic_lockscreen_camera_normal.png b/packages/Keyguard/res/drawable-xhdpi/ic_lockscreen_camera_normal.png Binary files differindex 093bc055081c..093bc055081c 100644 --- a/core/res/res/drawable-xhdpi/ic_lockscreen_camera_normal.png +++ b/packages/Keyguard/res/drawable-xhdpi/ic_lockscreen_camera_normal.png diff --git a/core/res/res/drawable-xhdpi/ic_lockscreen_emergencycall_normal.png b/packages/Keyguard/res/drawable-xhdpi/ic_lockscreen_emergencycall_normal.png Binary files differindex a61f7a518d32..a61f7a518d32 100644 --- a/core/res/res/drawable-xhdpi/ic_lockscreen_emergencycall_normal.png +++ b/packages/Keyguard/res/drawable-xhdpi/ic_lockscreen_emergencycall_normal.png diff --git a/core/res/res/drawable-xhdpi/ic_lockscreen_emergencycall_pressed.png b/packages/Keyguard/res/drawable-xhdpi/ic_lockscreen_emergencycall_pressed.png Binary files differindex dd5e4815b5d9..dd5e4815b5d9 100644 --- a/core/res/res/drawable-xhdpi/ic_lockscreen_emergencycall_pressed.png +++ b/packages/Keyguard/res/drawable-xhdpi/ic_lockscreen_emergencycall_pressed.png diff --git a/core/res/res/drawable-xhdpi/ic_lockscreen_forgotpassword_normal.png b/packages/Keyguard/res/drawable-xhdpi/ic_lockscreen_forgotpassword_normal.png Binary files differindex e4172ce65002..e4172ce65002 100644 --- a/core/res/res/drawable-xhdpi/ic_lockscreen_forgotpassword_normal.png +++ b/packages/Keyguard/res/drawable-xhdpi/ic_lockscreen_forgotpassword_normal.png diff --git a/core/res/res/drawable-xhdpi/ic_lockscreen_forgotpassword_pressed.png b/packages/Keyguard/res/drawable-xhdpi/ic_lockscreen_forgotpassword_pressed.png Binary files differindex e2c76217f128..e2c76217f128 100644 --- a/core/res/res/drawable-xhdpi/ic_lockscreen_forgotpassword_pressed.png +++ b/packages/Keyguard/res/drawable-xhdpi/ic_lockscreen_forgotpassword_pressed.png diff --git a/packages/Keyguard/res/drawable-xhdpi/ic_lockscreen_glowdot.png b/packages/Keyguard/res/drawable-xhdpi/ic_lockscreen_glowdot.png Binary files differnew file mode 100644 index 000000000000..cbd039afd5cd --- /dev/null +++ b/packages/Keyguard/res/drawable-xhdpi/ic_lockscreen_glowdot.png diff --git a/core/res/res/drawable-xhdpi/ic_lockscreen_google_activated.png b/packages/Keyguard/res/drawable-xhdpi/ic_lockscreen_google_activated.png Binary files differindex d643f83b36a8..d643f83b36a8 100644 --- a/core/res/res/drawable-xhdpi/ic_lockscreen_google_activated.png +++ b/packages/Keyguard/res/drawable-xhdpi/ic_lockscreen_google_activated.png diff --git a/core/res/res/drawable-xhdpi/ic_lockscreen_google_focused.png b/packages/Keyguard/res/drawable-xhdpi/ic_lockscreen_google_focused.png Binary files differindex 51863f498e68..51863f498e68 100644 --- a/core/res/res/drawable-xhdpi/ic_lockscreen_google_focused.png +++ b/packages/Keyguard/res/drawable-xhdpi/ic_lockscreen_google_focused.png diff --git a/core/res/res/drawable-xhdpi/ic_lockscreen_google_normal.png b/packages/Keyguard/res/drawable-xhdpi/ic_lockscreen_google_normal.png Binary files differindex 9a9bf6800777..9a9bf6800777 100644 --- a/core/res/res/drawable-xhdpi/ic_lockscreen_google_normal.png +++ b/packages/Keyguard/res/drawable-xhdpi/ic_lockscreen_google_normal.png diff --git a/core/res/res/drawable-xhdpi/ic_lockscreen_handle_normal.png b/packages/Keyguard/res/drawable-xhdpi/ic_lockscreen_handle_normal.png Binary files differindex b09071b705c2..b09071b705c2 100644 --- a/core/res/res/drawable-xhdpi/ic_lockscreen_handle_normal.png +++ b/packages/Keyguard/res/drawable-xhdpi/ic_lockscreen_handle_normal.png diff --git a/packages/Keyguard/res/drawable-xhdpi/ic_lockscreen_handle_pressed.png b/packages/Keyguard/res/drawable-xhdpi/ic_lockscreen_handle_pressed.png Binary files differnew file mode 100644 index 000000000000..2d28009f2235 --- /dev/null +++ b/packages/Keyguard/res/drawable-xhdpi/ic_lockscreen_handle_pressed.png diff --git a/core/res/res/drawable-xhdpi/ic_lockscreen_ime.png b/packages/Keyguard/res/drawable-xhdpi/ic_lockscreen_ime.png Binary files differindex a40ddebf87c0..a40ddebf87c0 100644 --- a/core/res/res/drawable-xhdpi/ic_lockscreen_ime.png +++ b/packages/Keyguard/res/drawable-xhdpi/ic_lockscreen_ime.png diff --git a/core/res/res/drawable-xhdpi/ic_lockscreen_lock_normal.png b/packages/Keyguard/res/drawable-xhdpi/ic_lockscreen_lock_normal.png Binary files differindex c44a33012aa6..c44a33012aa6 100644 --- a/core/res/res/drawable-xhdpi/ic_lockscreen_lock_normal.png +++ b/packages/Keyguard/res/drawable-xhdpi/ic_lockscreen_lock_normal.png diff --git a/core/res/res/drawable-xhdpi/ic_lockscreen_lock_pressed.png b/packages/Keyguard/res/drawable-xhdpi/ic_lockscreen_lock_pressed.png Binary files differindex 2264dc3fc9d7..2264dc3fc9d7 100644 --- a/core/res/res/drawable-xhdpi/ic_lockscreen_lock_pressed.png +++ b/packages/Keyguard/res/drawable-xhdpi/ic_lockscreen_lock_pressed.png diff --git a/core/res/res/drawable-xhdpi/ic_lockscreen_player_background.9.png b/packages/Keyguard/res/drawable-xhdpi/ic_lockscreen_player_background.9.png Binary files differindex 393bca6882cd..393bca6882cd 100644 --- a/core/res/res/drawable-xhdpi/ic_lockscreen_player_background.9.png +++ b/packages/Keyguard/res/drawable-xhdpi/ic_lockscreen_player_background.9.png diff --git a/core/res/res/drawable-xhdpi/ic_lockscreen_silent_activated.png b/packages/Keyguard/res/drawable-xhdpi/ic_lockscreen_silent_activated.png Binary files differindex 2900045963a8..2900045963a8 100644 --- a/core/res/res/drawable-xhdpi/ic_lockscreen_silent_activated.png +++ b/packages/Keyguard/res/drawable-xhdpi/ic_lockscreen_silent_activated.png diff --git a/core/res/res/drawable-xhdpi/ic_lockscreen_silent_focused.png b/packages/Keyguard/res/drawable-xhdpi/ic_lockscreen_silent_focused.png Binary files differindex 5a93472045b0..5a93472045b0 100644 --- a/core/res/res/drawable-xhdpi/ic_lockscreen_silent_focused.png +++ b/packages/Keyguard/res/drawable-xhdpi/ic_lockscreen_silent_focused.png diff --git a/core/res/res/drawable-xhdpi/ic_lockscreen_silent_normal.png b/packages/Keyguard/res/drawable-xhdpi/ic_lockscreen_silent_normal.png Binary files differindex 73f6a2e7eda8..73f6a2e7eda8 100644 --- a/core/res/res/drawable-xhdpi/ic_lockscreen_silent_normal.png +++ b/packages/Keyguard/res/drawable-xhdpi/ic_lockscreen_silent_normal.png diff --git a/core/res/res/drawable-xhdpi/ic_lockscreen_sim.png b/packages/Keyguard/res/drawable-xhdpi/ic_lockscreen_sim.png Binary files differindex f4de96adae30..f4de96adae30 100644 --- a/core/res/res/drawable-xhdpi/ic_lockscreen_sim.png +++ b/packages/Keyguard/res/drawable-xhdpi/ic_lockscreen_sim.png diff --git a/core/res/res/drawable-xhdpi/ic_lockscreen_soundon_activated.png b/packages/Keyguard/res/drawable-xhdpi/ic_lockscreen_soundon_activated.png Binary files differindex da2adc2e50fc..da2adc2e50fc 100644 --- a/core/res/res/drawable-xhdpi/ic_lockscreen_soundon_activated.png +++ b/packages/Keyguard/res/drawable-xhdpi/ic_lockscreen_soundon_activated.png diff --git a/core/res/res/drawable-xhdpi/ic_lockscreen_soundon_focused.png b/packages/Keyguard/res/drawable-xhdpi/ic_lockscreen_soundon_focused.png Binary files differindex 0485af0baa05..0485af0baa05 100644 --- a/core/res/res/drawable-xhdpi/ic_lockscreen_soundon_focused.png +++ b/packages/Keyguard/res/drawable-xhdpi/ic_lockscreen_soundon_focused.png diff --git a/core/res/res/drawable-xhdpi/ic_lockscreen_soundon_normal.png b/packages/Keyguard/res/drawable-xhdpi/ic_lockscreen_soundon_normal.png Binary files differindex 6af5375b919b..6af5375b919b 100644 --- a/core/res/res/drawable-xhdpi/ic_lockscreen_soundon_normal.png +++ b/packages/Keyguard/res/drawable-xhdpi/ic_lockscreen_soundon_normal.png diff --git a/core/res/res/drawable-xhdpi/ic_lockscreen_unlock_activated.png b/packages/Keyguard/res/drawable-xhdpi/ic_lockscreen_unlock_activated.png Binary files differindex 8a0331d8359d..8a0331d8359d 100644 --- a/core/res/res/drawable-xhdpi/ic_lockscreen_unlock_activated.png +++ b/packages/Keyguard/res/drawable-xhdpi/ic_lockscreen_unlock_activated.png diff --git a/core/res/res/drawable-xhdpi/ic_lockscreen_unlock_normal.png b/packages/Keyguard/res/drawable-xhdpi/ic_lockscreen_unlock_normal.png Binary files differindex 0422117f72d3..0422117f72d3 100644 --- a/core/res/res/drawable-xhdpi/ic_lockscreen_unlock_normal.png +++ b/packages/Keyguard/res/drawable-xhdpi/ic_lockscreen_unlock_normal.png diff --git a/packages/Keyguard/res/drawable-xhdpi/ic_media_next.png b/packages/Keyguard/res/drawable-xhdpi/ic_media_next.png Binary files differnew file mode 100644 index 000000000000..4def965cec24 --- /dev/null +++ b/packages/Keyguard/res/drawable-xhdpi/ic_media_next.png diff --git a/packages/Keyguard/res/drawable-xhdpi/ic_media_play.png b/packages/Keyguard/res/drawable-xhdpi/ic_media_play.png Binary files differnew file mode 100644 index 000000000000..ccfef180562c --- /dev/null +++ b/packages/Keyguard/res/drawable-xhdpi/ic_media_play.png diff --git a/packages/Keyguard/res/drawable-xhdpi/ic_media_previous.png b/packages/Keyguard/res/drawable-xhdpi/ic_media_previous.png Binary files differnew file mode 100644 index 000000000000..c4472ae2d9cb --- /dev/null +++ b/packages/Keyguard/res/drawable-xhdpi/ic_media_previous.png diff --git a/core/res/res/drawable-xhdpi/intro_bg.png b/packages/Keyguard/res/drawable-xhdpi/intro_bg.png Binary files differindex 00466c539e8a..00466c539e8a 100644 --- a/core/res/res/drawable-xhdpi/intro_bg.png +++ b/packages/Keyguard/res/drawable-xhdpi/intro_bg.png diff --git a/packages/Keyguard/res/drawable-xhdpi/kg_add_widget.png b/packages/Keyguard/res/drawable-xhdpi/kg_add_widget.png Binary files differnew file mode 100644 index 000000000000..d71905f8ff78 --- /dev/null +++ b/packages/Keyguard/res/drawable-xhdpi/kg_add_widget.png diff --git a/core/res/res/drawable-xhdpi/kg_add_widget_disabled.png b/packages/Keyguard/res/drawable-xhdpi/kg_add_widget_disabled.png Binary files differindex 55fa1acc5806..55fa1acc5806 100644 --- a/core/res/res/drawable-xhdpi/kg_add_widget_disabled.png +++ b/packages/Keyguard/res/drawable-xhdpi/kg_add_widget_disabled.png diff --git a/core/res/res/drawable-xhdpi/kg_add_widget_pressed.png b/packages/Keyguard/res/drawable-xhdpi/kg_add_widget_pressed.png Binary files differindex 4b86727bc899..4b86727bc899 100644 --- a/core/res/res/drawable-xhdpi/kg_add_widget_pressed.png +++ b/packages/Keyguard/res/drawable-xhdpi/kg_add_widget_pressed.png diff --git a/core/res/res/drawable-xhdpi/kg_bouncer_bg_white.9.png b/packages/Keyguard/res/drawable-xhdpi/kg_bouncer_bg_white.9.png Binary files differindex b9e30e20a952..b9e30e20a952 100644 --- a/core/res/res/drawable-xhdpi/kg_bouncer_bg_white.9.png +++ b/packages/Keyguard/res/drawable-xhdpi/kg_bouncer_bg_white.9.png diff --git a/core/res/res/drawable-xhdpi/kg_security_grip.9.png b/packages/Keyguard/res/drawable-xhdpi/kg_security_grip.9.png Binary files differindex c33b9d3471bc..c33b9d3471bc 100644 --- a/core/res/res/drawable-xhdpi/kg_security_grip.9.png +++ b/packages/Keyguard/res/drawable-xhdpi/kg_security_grip.9.png diff --git a/core/res/res/drawable-xhdpi/kg_security_lock.png b/packages/Keyguard/res/drawable-xhdpi/kg_security_lock.png Binary files differindex 81d577e328d6..81d577e328d6 100644 --- a/core/res/res/drawable-xhdpi/kg_security_lock.png +++ b/packages/Keyguard/res/drawable-xhdpi/kg_security_lock.png diff --git a/packages/Keyguard/res/drawable-xhdpi/kg_security_lock_focused.png b/packages/Keyguard/res/drawable-xhdpi/kg_security_lock_focused.png Binary files differnew file mode 100644 index 000000000000..db220162444d --- /dev/null +++ b/packages/Keyguard/res/drawable-xhdpi/kg_security_lock_focused.png diff --git a/packages/Keyguard/res/drawable-xhdpi/kg_security_lock_normal.png b/packages/Keyguard/res/drawable-xhdpi/kg_security_lock_normal.png Binary files differnew file mode 100644 index 000000000000..17ebb5f8dc99 --- /dev/null +++ b/packages/Keyguard/res/drawable-xhdpi/kg_security_lock_normal.png diff --git a/packages/Keyguard/res/drawable-xhdpi/kg_security_lock_pressed.png b/packages/Keyguard/res/drawable-xhdpi/kg_security_lock_pressed.png Binary files differnew file mode 100644 index 000000000000..186b6ffec111 --- /dev/null +++ b/packages/Keyguard/res/drawable-xhdpi/kg_security_lock_pressed.png diff --git a/core/res/res/drawable-xhdpi/kg_widget_bg_padded.9.png b/packages/Keyguard/res/drawable-xhdpi/kg_widget_bg_padded.9.png Binary files differindex a84bfa39ce6c..a84bfa39ce6c 100644 --- a/core/res/res/drawable-xhdpi/kg_widget_bg_padded.9.png +++ b/packages/Keyguard/res/drawable-xhdpi/kg_widget_bg_padded.9.png diff --git a/core/res/res/drawable-xhdpi/kg_widget_delete_drop_target.png b/packages/Keyguard/res/drawable-xhdpi/kg_widget_delete_drop_target.png Binary files differindex d4965d9f804e..d4965d9f804e 100644 --- a/core/res/res/drawable-xhdpi/kg_widget_delete_drop_target.png +++ b/packages/Keyguard/res/drawable-xhdpi/kg_widget_delete_drop_target.png diff --git a/core/res/res/drawable-xhdpi/lockscreen_protection_pattern.png b/packages/Keyguard/res/drawable-xhdpi/lockscreen_protection_pattern.png Binary files differindex c13afe2b795c..c13afe2b795c 100644 --- a/core/res/res/drawable-xhdpi/lockscreen_protection_pattern.png +++ b/packages/Keyguard/res/drawable-xhdpi/lockscreen_protection_pattern.png diff --git a/core/res/res/drawable-xhdpi/sym_keyboard_return_holo.png b/packages/Keyguard/res/drawable-xhdpi/sym_keyboard_return_holo.png Binary files differindex 55174e076765..55174e076765 100644 --- a/core/res/res/drawable-xhdpi/sym_keyboard_return_holo.png +++ b/packages/Keyguard/res/drawable-xhdpi/sym_keyboard_return_holo.png diff --git a/packages/Keyguard/res/drawable/ic_action_assist_generic.xml b/packages/Keyguard/res/drawable/ic_action_assist_generic.xml new file mode 100644 index 000000000000..60f5d5df11dc --- /dev/null +++ b/packages/Keyguard/res/drawable/ic_action_assist_generic.xml @@ -0,0 +1,36 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2012 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<selector xmlns:android="http://schemas.android.com/apk/res/android"> + + <item + android:state_enabled="true" + android:state_active="false" + android:state_focused="false" + android:drawable="@drawable/ic_action_assist_generic_normal" /> + + <item + android:state_enabled="true" + android:state_active="true" + android:state_focused="false" + android:drawable="@drawable/ic_action_assist_generic_activated" /> + + <item + android:state_enabled="true" + android:state_active="false" + android:state_focused="true" + android:drawable="@drawable/ic_action_assist_generic_activated" /> + +</selector> diff --git a/core/res/res/drawable/ic_lockscreen_camera.xml b/packages/Keyguard/res/drawable/ic_lockscreen_camera.xml index 41277fe3a43c..41277fe3a43c 100644 --- a/core/res/res/drawable/ic_lockscreen_camera.xml +++ b/packages/Keyguard/res/drawable/ic_lockscreen_camera.xml diff --git a/core/res/res/drawable/ic_lockscreen_handle.xml b/packages/Keyguard/res/drawable/ic_lockscreen_handle.xml index e7b4a6e95f83..e7b4a6e95f83 100644 --- a/core/res/res/drawable/ic_lockscreen_handle.xml +++ b/packages/Keyguard/res/drawable/ic_lockscreen_handle.xml diff --git a/packages/Keyguard/res/drawable/ic_lockscreen_outerring.xml b/packages/Keyguard/res/drawable/ic_lockscreen_outerring.xml new file mode 100644 index 000000000000..75bea70b3aac --- /dev/null +++ b/packages/Keyguard/res/drawable/ic_lockscreen_outerring.xml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2011 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<shape xmlns:android="http://schemas.android.com/apk/res/android" + android:shape="oval" + > + <size android:height="@dimen/keyguard_lockscreen_outerring_diameter" + android:width="@dimen/keyguard_lockscreen_outerring_diameter" /> + <solid android:color="#00000000" /> + <stroke android:color="#1affffff" android:width="2dp" /> +</shape> diff --git a/core/res/res/drawable/ic_lockscreen_silent.xml b/packages/Keyguard/res/drawable/ic_lockscreen_silent.xml index df23278a0352..df23278a0352 100644 --- a/core/res/res/drawable/ic_lockscreen_silent.xml +++ b/packages/Keyguard/res/drawable/ic_lockscreen_silent.xml diff --git a/core/res/res/drawable/ic_lockscreen_soundon.xml b/packages/Keyguard/res/drawable/ic_lockscreen_soundon.xml index b44c86c06bd7..b44c86c06bd7 100644 --- a/core/res/res/drawable/ic_lockscreen_soundon.xml +++ b/packages/Keyguard/res/drawable/ic_lockscreen_soundon.xml diff --git a/core/res/res/drawable/ic_lockscreen_unlock.xml b/packages/Keyguard/res/drawable/ic_lockscreen_unlock.xml index bb1d0ee9ee30..bb1d0ee9ee30 100644 --- a/core/res/res/drawable/ic_lockscreen_unlock.xml +++ b/packages/Keyguard/res/drawable/ic_lockscreen_unlock.xml diff --git a/core/res/res/drawable/ic_lockscreen_unlock_phantom.xml b/packages/Keyguard/res/drawable/ic_lockscreen_unlock_phantom.xml index 83f0aed28ced..83f0aed28ced 100644 --- a/core/res/res/drawable/ic_lockscreen_unlock_phantom.xml +++ b/packages/Keyguard/res/drawable/ic_lockscreen_unlock_phantom.xml diff --git a/core/res/res/drawable/keyguard_add_widget_button.xml b/packages/Keyguard/res/drawable/keyguard_add_widget_button.xml index c26f81dd9d66..c26f81dd9d66 100644 --- a/core/res/res/drawable/keyguard_add_widget_button.xml +++ b/packages/Keyguard/res/drawable/keyguard_add_widget_button.xml diff --git a/core/res/res/drawable/keyguard_expand_challenge_handle.xml b/packages/Keyguard/res/drawable/keyguard_expand_challenge_handle.xml index 3e0780bedcaf..3e0780bedcaf 100644 --- a/core/res/res/drawable/keyguard_expand_challenge_handle.xml +++ b/packages/Keyguard/res/drawable/keyguard_expand_challenge_handle.xml diff --git a/core/res/res/drawable/lockscreen_emergency_button.xml b/packages/Keyguard/res/drawable/lockscreen_emergency_button.xml index 4ec6a963e1da..4ec6a963e1da 100644 --- a/core/res/res/drawable/lockscreen_emergency_button.xml +++ b/packages/Keyguard/res/drawable/lockscreen_emergency_button.xml diff --git a/core/res/res/drawable/lockscreen_forgot_password_button.xml b/packages/Keyguard/res/drawable/lockscreen_forgot_password_button.xml index 6c081bf2c948..6c081bf2c948 100644 --- a/core/res/res/drawable/lockscreen_forgot_password_button.xml +++ b/packages/Keyguard/res/drawable/lockscreen_forgot_password_button.xml diff --git a/core/res/res/layout-land/keyguard_host_view.xml b/packages/Keyguard/res/layout-land/keyguard_host_view.xml index 6b3623569526..eeb9ee7998c1 100644 --- a/core/res/res/layout-land/keyguard_host_view.xml +++ b/packages/Keyguard/res/layout-land/keyguard_host_view.xml @@ -19,18 +19,19 @@ <!-- This is the host view that generally contains two sub views: the widget view and the security view. --> -<com.android.internal.policy.impl.keyguard.KeyguardHostView +<com.android.keyguard.KeyguardHostView xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:androidprv="http://schemas.android.com/apk/res/android" + xmlns:androidprv="http://schemas.android.com/apk/res/com.android.keyguard" android:id="@+id/keyguard_host_view" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal"> - <com.android.internal.policy.impl.keyguard.MultiPaneChallengeLayout + <com.android.keyguard.MultiPaneChallengeLayout android:id="@+id/multi_pane_challenge" android:layout_width="match_parent" android:layout_height="match_parent" + android:orientation="horizontal" android:clipChildren="false"> <include layout="@layout/keyguard_widget_remove_drop_target" @@ -55,13 +56,13 @@ androidprv:layout_childType="scrim" android:background="#99000000" /> - <com.android.internal.policy.impl.keyguard.KeyguardSecurityContainer + <com.android.keyguard.KeyguardSecurityContainer android:id="@+id/keyguard_security_container" android:layout_width="wrap_content" android:layout_height="wrap_content" androidprv:layout_childType="challenge" androidprv:layout_centerWithinArea="0.55"> - <com.android.internal.policy.impl.keyguard.KeyguardSecurityViewFlipper + <com.android.keyguard.KeyguardSecurityViewFlipper android:id="@+id/view_flipper" android:layout_width="match_parent" android:layout_height="match_parent" @@ -72,9 +73,9 @@ android:paddingRight="@dimen/keyguard_security_view_margin" android:paddingBottom="@dimen/keyguard_security_view_margin" android:gravity="center"> - </com.android.internal.policy.impl.keyguard.KeyguardSecurityViewFlipper> - </com.android.internal.policy.impl.keyguard.KeyguardSecurityContainer> + </com.android.keyguard.KeyguardSecurityViewFlipper> + </com.android.keyguard.KeyguardSecurityContainer> - </com.android.internal.policy.impl.keyguard.MultiPaneChallengeLayout> -</com.android.internal.policy.impl.keyguard.KeyguardHostView> + </com.android.keyguard.MultiPaneChallengeLayout> +</com.android.keyguard.KeyguardHostView> diff --git a/core/res/res/layout-land/keyguard_status_area.xml b/packages/Keyguard/res/layout-land/keyguard_status_area.xml index 51ee740befa1..51ee740befa1 100644 --- a/core/res/res/layout-land/keyguard_status_area.xml +++ b/packages/Keyguard/res/layout-land/keyguard_status_area.xml diff --git a/core/res/res/layout-land/keyguard_widget_pager.xml b/packages/Keyguard/res/layout-land/keyguard_widget_pager.xml index 02c6d0e8d276..da31065f2582 100644 --- a/core/res/res/layout-land/keyguard_widget_pager.xml +++ b/packages/Keyguard/res/layout-land/keyguard_widget_pager.xml @@ -18,8 +18,8 @@ --> <!-- This is the selector widget that allows the user to select an action. --> -<com.android.internal.policy.impl.keyguard.KeyguardWidgetCarousel - xmlns:androidprv="http://schemas.android.com/apk/res/android" +<com.android.keyguard.KeyguardWidgetCarousel + xmlns:androidprv="http://schemas.android.com/apk/res/com.android.keyguard" xmlns:android="http://schemas.android.com/apk/res/android" android:paddingLeft="25dp" android:paddingRight="25dp" @@ -27,4 +27,4 @@ android:paddingBottom="25dp" android:clipToPadding="false" androidprv:pageSpacing="10dp"> -</com.android.internal.policy.impl.keyguard.KeyguardWidgetCarousel>
\ No newline at end of file +</com.android.keyguard.KeyguardWidgetCarousel> diff --git a/core/res/res/layout-port/keyguard_host_view.xml b/packages/Keyguard/res/layout-port/keyguard_host_view.xml index fb25f9c12802..8498dcfe3d83 100644 --- a/core/res/res/layout-port/keyguard_host_view.xml +++ b/packages/Keyguard/res/layout-port/keyguard_host_view.xml @@ -19,16 +19,16 @@ <!-- This is the host view that generally contains two sub views: the widget view and the security view. --> -<com.android.internal.policy.impl.keyguard.KeyguardHostView +<com.android.keyguard.KeyguardHostView xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:androidprv="http://schemas.android.com/apk/res/android" + xmlns:androidprv="http://schemas.android.com/apk/res/com.android.keyguard" android:id="@+id/keyguard_host_view" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center_horizontal" android:orientation="vertical"> - <com.android.internal.policy.impl.keyguard.SlidingChallengeLayout + <com.android.keyguard.SlidingChallengeLayout android:id="@+id/sliding_layout" android:layout_width="match_parent" android:layout_height="match_parent"> @@ -60,15 +60,15 @@ androidprv:layout_childType="scrim" android:background="#99000000" /> - <com.android.internal.policy.impl.keyguard.KeyguardSecurityContainer + <com.android.keyguard.KeyguardSecurityContainer android:id="@+id/keyguard_security_container" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_maxHeight="@dimen/keyguard_security_height" + androidprv:layout_maxHeight="@dimen/keyguard_security_height" androidprv:layout_childType="challenge" android:padding="0dp" android:gravity="bottom|center_horizontal"> - <com.android.internal.policy.impl.keyguard.KeyguardSecurityViewFlipper + <com.android.keyguard.KeyguardSecurityViewFlipper android:id="@+id/view_flipper" android:layout_width="match_parent" android:layout_height="match_parent" @@ -76,8 +76,8 @@ android:clipToPadding="false" android:paddingTop="@dimen/keyguard_security_view_margin" android:gravity="center"> - </com.android.internal.policy.impl.keyguard.KeyguardSecurityViewFlipper> - </com.android.internal.policy.impl.keyguard.KeyguardSecurityContainer> + </com.android.keyguard.KeyguardSecurityViewFlipper> + </com.android.keyguard.KeyguardSecurityContainer> <ImageButton android:layout_width="match_parent" @@ -89,6 +89,6 @@ android:scaleType="center" android:contentDescription="@string/keyguard_accessibility_expand_lock_area" /> - </com.android.internal.policy.impl.keyguard.SlidingChallengeLayout> -</com.android.internal.policy.impl.keyguard.KeyguardHostView> + </com.android.keyguard.SlidingChallengeLayout> +</com.android.keyguard.KeyguardHostView> diff --git a/core/res/res/layout-port/keyguard_status_area.xml b/packages/Keyguard/res/layout-port/keyguard_status_area.xml index d274457ce227..d274457ce227 100644 --- a/core/res/res/layout-port/keyguard_status_area.xml +++ b/packages/Keyguard/res/layout-port/keyguard_status_area.xml diff --git a/core/res/res/layout-port/keyguard_widget_pager.xml b/packages/Keyguard/res/layout-port/keyguard_widget_pager.xml index 7f22709a0d72..d0a07ca0a697 100644 --- a/core/res/res/layout-port/keyguard_widget_pager.xml +++ b/packages/Keyguard/res/layout-port/keyguard_widget_pager.xml @@ -18,8 +18,8 @@ --> <!-- This is the selector widget that allows the user to select an action. --> -<com.android.internal.policy.impl.keyguard.KeyguardWidgetPager - xmlns:androidprv="http://schemas.android.com/apk/res/android" +<com.android.keyguard.KeyguardWidgetPager + xmlns:androidprv="http://schemas.android.com/apk/res/com.android.keyguard" xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/app_widget_container" android:paddingLeft="25dp" @@ -28,4 +28,4 @@ android:paddingBottom="@dimen/kg_widget_pager_bottom_padding" android:clipToPadding="false" androidprv:pageSpacing="10dp"> -</com.android.internal.policy.impl.keyguard.KeyguardWidgetPager> +</com.android.keyguard.KeyguardWidgetPager> diff --git a/core/res/res/layout-sw600dp-port/keyguard_host_view.xml b/packages/Keyguard/res/layout-sw600dp-port/keyguard_host_view.xml index e3d577dc38a7..77bc9b5bc129 100644 --- a/core/res/res/layout-sw600dp-port/keyguard_host_view.xml +++ b/packages/Keyguard/res/layout-sw600dp-port/keyguard_host_view.xml @@ -19,15 +19,15 @@ <!-- This is the host view that generally contains two sub views: the widget view and the security view. --> -<com.android.internal.policy.impl.keyguard.KeyguardHostView +<com.android.keyguard.KeyguardHostView xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:androidprv="http://schemas.android.com/apk/res/android" + xmlns:androidprv="http://schemas.android.com/apk/res/com.android.keyguard" android:id="@+id/keyguard_host_view" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal"> - <com.android.internal.policy.impl.keyguard.MultiPaneChallengeLayout + <com.android.keyguard.MultiPaneChallengeLayout android:id="@+id/multi_pane_challenge" android:layout_width="match_parent" android:layout_height="match_parent" @@ -57,14 +57,14 @@ androidprv:layout_childType="scrim" android:background="#99000000" /> - <com.android.internal.policy.impl.keyguard.KeyguardSecurityContainer + <com.android.keyguard.KeyguardSecurityContainer android:id="@+id/keyguard_security_container" android:layout_width="wrap_content" android:layout_height="wrap_content" androidprv:layout_centerWithinArea="0.5" androidprv:layout_childType="challenge" android:layout_gravity="center_horizontal|bottom"> - <com.android.internal.policy.impl.keyguard.KeyguardSecurityViewFlipper + <com.android.keyguard.KeyguardSecurityViewFlipper android:id="@+id/view_flipper" android:layout_width="wrap_content" android:layout_height="wrap_content" @@ -75,8 +75,8 @@ android:paddingRight="@dimen/keyguard_security_view_margin" android:paddingBottom="@dimen/keyguard_security_view_margin" android:gravity="center"> - </com.android.internal.policy.impl.keyguard.KeyguardSecurityViewFlipper> - </com.android.internal.policy.impl.keyguard.KeyguardSecurityContainer> + </com.android.keyguard.KeyguardSecurityViewFlipper> + </com.android.keyguard.KeyguardSecurityContainer> - </com.android.internal.policy.impl.keyguard.MultiPaneChallengeLayout> -</com.android.internal.policy.impl.keyguard.KeyguardHostView> + </com.android.keyguard.MultiPaneChallengeLayout> +</com.android.keyguard.KeyguardHostView> diff --git a/core/res/res/layout-sw600dp/keyguard_glow_pad_container.xml b/packages/Keyguard/res/layout-sw600dp/keyguard_glow_pad_container.xml index 930b14e925ec..930b14e925ec 100644 --- a/core/res/res/layout-sw600dp/keyguard_glow_pad_container.xml +++ b/packages/Keyguard/res/layout-sw600dp/keyguard_glow_pad_container.xml diff --git a/core/res/res/layout/keyguard_account_view.xml b/packages/Keyguard/res/layout/keyguard_account_view.xml index fa36371a44d8..766effaed729 100644 --- a/core/res/res/layout/keyguard_account_view.xml +++ b/packages/Keyguard/res/layout/keyguard_account_view.xml @@ -16,13 +16,14 @@ ** limitations under the License. */ --> -<com.android.internal.policy.impl.keyguard.KeyguardAccountView +<com.android.keyguard.KeyguardAccountView xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:androidprv="http://schemas.android.com/apk/res/com.android.keyguard" android:id="@+id/keyguard_account_view" android:layout_width="match_parent" android:layout_height="match_parent" - android:layout_maxWidth="@dimen/keyguard_security_width" - android:layout_maxHeight="@dimen/keyguard_security_height" + androidprv:layout_maxWidth="@dimen/keyguard_security_width" + androidprv:layout_maxHeight="@dimen/keyguard_security_height" android:orientation="vertical"> <include layout="@layout/keyguard_message_area" @@ -84,4 +85,4 @@ android:gravity="center_horizontal" /> --> -</com.android.internal.policy.impl.keyguard.KeyguardAccountView> +</com.android.keyguard.KeyguardAccountView> diff --git a/core/res/res/layout/keyguard_add_widget.xml b/packages/Keyguard/res/layout/keyguard_add_widget.xml index d043fdbf6e84..01b616cc31a3 100644 --- a/core/res/res/layout/keyguard_add_widget.xml +++ b/packages/Keyguard/res/layout/keyguard_add_widget.xml @@ -18,7 +18,7 @@ --> <!-- This is a view that shows general status information in Keyguard. --> -<com.android.internal.policy.impl.keyguard.KeyguardWidgetFrame +<com.android.keyguard.KeyguardWidgetFrame xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/keyguard_add_widget" android:layout_width="match_parent" @@ -39,4 +39,4 @@ android:src="@drawable/keyguard_add_widget_button" android:contentDescription="@string/keyguard_accessibility_add_widget"/> </FrameLayout> -</com.android.internal.policy.impl.keyguard.KeyguardWidgetFrame> +</com.android.keyguard.KeyguardWidgetFrame> diff --git a/core/res/res/layout/keyguard_emergency_carrier_area.xml b/packages/Keyguard/res/layout/keyguard_emergency_carrier_area.xml index 52adc0407223..1e2de92fec95 100644 --- a/core/res/res/layout/keyguard_emergency_carrier_area.xml +++ b/packages/Keyguard/res/layout/keyguard_emergency_carrier_area.xml @@ -28,7 +28,7 @@ android:layout_alignParentBottom="true" android:clickable="true"> - <com.android.internal.policy.impl.keyguard.CarrierText + <com.android.keyguard.CarrierText android:layout_width="wrap_content" android:layout_height="wrap_content" android:singleLine="true" @@ -46,12 +46,12 @@ android:gravity="center" android:weightSum="2"> - <com.android.internal.policy.impl.keyguard.EmergencyButton + <com.android.keyguard.EmergencyButton android:id="@+id/emergency_call_button" android:layout_width="0dip" android:layout_height="wrap_content" android:layout_weight="1" - android:drawableLeft="@*android:drawable/lockscreen_emergency_button" + android:drawableLeft="@drawable/lockscreen_emergency_button" android:text="@string/kg_emergency_call_label" style="?android:attr/buttonBarButtonStyle" android:textAppearance="?android:attr/textAppearanceMedium" @@ -63,7 +63,7 @@ android:layout_width="0dip" android:layout_height="wrap_content" android:layout_weight="1" - android:drawableLeft="@*android:drawable/lockscreen_forgot_password_button" + android:drawableLeft="@drawable/lockscreen_forgot_password_button" style="?android:attr/buttonBarButtonStyle" android:textSize="@dimen/kg_status_line_font_size" android:textColor="?android:attr/textColorSecondary" diff --git a/core/res/res/layout/keyguard_emergency_carrier_area_empty.xml b/packages/Keyguard/res/layout/keyguard_emergency_carrier_area_empty.xml index 2f4adae00cf7..2f4adae00cf7 100644 --- a/core/res/res/layout/keyguard_emergency_carrier_area_empty.xml +++ b/packages/Keyguard/res/layout/keyguard_emergency_carrier_area_empty.xml diff --git a/core/res/res/layout/keyguard_face_unlock_view.xml b/packages/Keyguard/res/layout/keyguard_face_unlock_view.xml index c9f11761c3e3..94c68a5870e6 100644 --- a/core/res/res/layout/keyguard_face_unlock_view.xml +++ b/packages/Keyguard/res/layout/keyguard_face_unlock_view.xml @@ -18,14 +18,15 @@ --> <!-- This is the screen that allows the user to unlock by showing their face. --> -<com.android.internal.policy.impl.keyguard.KeyguardFaceUnlockView +<com.android.keyguard.KeyguardFaceUnlockView xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:androidprv="http://schemas.android.com/apk/res/com.android.keyguard" android:id="@+id/keyguard_face_unlock_view" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" - android:layout_maxWidth="@dimen/keyguard_security_width" - android:layout_maxHeight="@dimen/keyguard_security_height" + androidprv:layout_maxWidth="@dimen/keyguard_security_width" + androidprv:layout_maxHeight="@dimen/keyguard_security_height" android:contentDescription="@string/keyguard_accessibility_face_unlock"> <include layout="@layout/keyguard_message_area" @@ -35,7 +36,7 @@ <FrameLayout android:id="@+id/keyguard_bouncer_frame" - android:background="@*android:drawable/kg_bouncer_bg_white" + android:background="@drawable/kg_bouncer_bg_white" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" @@ -45,14 +46,14 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="center_horizontal" - android:background="@*android:drawable/intro_bg" + android:background="@drawable/intro_bg" android:gravity="center"> <View android:id="@+id/spotlightMask" android:layout_width="match_parent" android:layout_height="match_parent" - android:background="@*android:color/facelock_spotlight_mask" + android:background="@color/facelock_spotlight_mask" /> <ImageButton @@ -63,7 +64,7 @@ android:layout_alignParentTop="true" android:layout_alignParentEnd="true" android:background="#00000000" - android:src="@*android:drawable/ic_facial_backup" + android:src="@drawable/ic_facial_backup" /> </com.android.internal.widget.FaceUnlockView> </FrameLayout> @@ -75,4 +76,4 @@ android:orientation="vertical" android:layout_gravity="bottom|center_horizontal" android:gravity="center_horizontal" /> -</com.android.internal.policy.impl.keyguard.KeyguardFaceUnlockView> +</com.android.keyguard.KeyguardFaceUnlockView> diff --git a/core/res/res/layout/keyguard_glow_pad_container.xml b/packages/Keyguard/res/layout/keyguard_glow_pad_container.xml index d86707fb1411..376d0e935368 100644 --- a/core/res/res/layout/keyguard_glow_pad_container.xml +++ b/packages/Keyguard/res/layout/keyguard_glow_pad_container.xml @@ -22,5 +22,5 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom|center_horizontal" - android:layout_marginBottom="-60dp"/> + android:layout_marginBottom="-80dp"/> </merge>
\ No newline at end of file diff --git a/core/res/res/layout/keyguard_glow_pad_view.xml b/packages/Keyguard/res/layout/keyguard_glow_pad_view.xml index cfd8160582c4..3a466ddfcb66 100644 --- a/core/res/res/layout/keyguard_glow_pad_view.xml +++ b/packages/Keyguard/res/layout/keyguard_glow_pad_view.xml @@ -31,16 +31,16 @@ prvandroid:targetDrawables="@array/lockscreen_targets_unlock_only" prvandroid:targetDescriptions="@array/lockscreen_target_descriptions_unlock_only" - prvandroid:directionDescriptions="@*android:array/lockscreen_direction_descriptions" - prvandroid:handleDrawable="@*android:drawable/ic_lockscreen_handle" - prvandroid:outerRingDrawable="@*android:drawable/ic_lockscreen_outerring" - prvandroid:outerRadius="@*android:dimen/glowpadview_target_placement_radius" - prvandroid:innerRadius="@*android:dimen/glowpadview_inner_radius" - prvandroid:snapMargin="@*android:dimen/glowpadview_snap_margin" + prvandroid:directionDescriptions="@array/lockscreen_direction_descriptions" + prvandroid:handleDrawable="@drawable/ic_lockscreen_handle" + prvandroid:outerRingDrawable="@drawable/ic_lockscreen_outerring" + prvandroid:outerRadius="@dimen/glowpadview_target_placement_radius" + prvandroid:innerRadius="@dimen/glowpadview_inner_radius" + prvandroid:snapMargin="@dimen/glowpadview_snap_margin" prvandroid:firstItemOffset="@integer/kg_glowpad_rotation_offset" prvandroid:magneticTargets="true" prvandroid:feedbackCount="1" prvandroid:vibrationDuration="20" - prvandroid:glowRadius="@*android:dimen/glowpadview_glow_radius" - prvandroid:pointDrawable="@*android:drawable/ic_lockscreen_glowdot" + prvandroid:glowRadius="@dimen/glowpadview_glow_radius" + prvandroid:pointDrawable="@drawable/ic_lockscreen_glowdot" prvandroid:allowScaling="true" /> diff --git a/core/res/res/layout/keyguard_message_area.xml b/packages/Keyguard/res/layout/keyguard_message_area.xml index 37463cfa7d7b..a709e98cee5b 100644 --- a/core/res/res/layout/keyguard_message_area.xml +++ b/packages/Keyguard/res/layout/keyguard_message_area.xml @@ -18,7 +18,7 @@ --> <!-- This contains emergency call button and carrier as shared by pin/pattern/password screens --> -<com.android.internal.policy.impl.keyguard.KeyguardMessageArea +<com.android.keyguard.KeyguardMessageArea xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" diff --git a/core/res/res/layout/keyguard_message_area_large.xml b/packages/Keyguard/res/layout/keyguard_message_area_large.xml index 584cec4e5a47..ab6246d1f5df 100644 --- a/core/res/res/layout/keyguard_message_area_large.xml +++ b/packages/Keyguard/res/layout/keyguard_message_area_large.xml @@ -18,7 +18,7 @@ --> <!-- This contains emergency call button and carrier as shared by pin/pattern/password screens --> -<com.android.internal.policy.impl.keyguard.KeyguardMessageArea +<com.android.keyguard.KeyguardMessageArea xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" diff --git a/core/res/res/layout/keyguard_multi_user_avatar.xml b/packages/Keyguard/res/layout/keyguard_multi_user_avatar.xml index 2d8f02d6aa09..41b0be996990 100644 --- a/core/res/res/layout/keyguard_multi_user_avatar.xml +++ b/packages/Keyguard/res/layout/keyguard_multi_user_avatar.xml @@ -18,7 +18,7 @@ --> <!-- This is a view that shows general status information in Keyguard. --> -<com.android.internal.policy.impl.keyguard.KeyguardMultiUserAvatar +<com.android.keyguard.KeyguardMultiUserAvatar xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="@dimen/keyguard_avatar_size" android:layout_height="@dimen/keyguard_avatar_size" @@ -42,4 +42,4 @@ android:ellipsize="end" android:paddingLeft="2dp" android:paddingRight="2dp" /> -</com.android.internal.policy.impl.keyguard.KeyguardMultiUserAvatar> +</com.android.keyguard.KeyguardMultiUserAvatar> diff --git a/core/res/res/layout/keyguard_multi_user_selector.xml b/packages/Keyguard/res/layout/keyguard_multi_user_selector.xml index ee01285062a1..c1d53267226e 100644 --- a/core/res/res/layout/keyguard_multi_user_selector.xml +++ b/packages/Keyguard/res/layout/keyguard_multi_user_selector.xml @@ -16,8 +16,8 @@ ** limitations under the License. */ --> -<com.android.internal.policy.impl.keyguard.KeyguardMultiUserSelectorView - xmlns:androidprv="http://schemas.android.com/apk/res/android" +<com.android.keyguard.KeyguardMultiUserSelectorView + xmlns:androidprv="http://schemas.android.com/apk/res/com.android.keyguard" xmlns:android="http://schemas.android.com/apk/res/android" androidprv:layout_childType="userSwitcher" android:id="@+id/keyguard_user_selector" @@ -25,10 +25,10 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="bottom" - android:contentDescription="@*android:string/keyguard_accessibility_user_selector" + android:contentDescription="@string/keyguard_accessibility_user_selector" android:visibility="gone"> - <com.android.internal.policy.impl.keyguard.KeyguardLinearLayout + <com.android.keyguard.KeyguardLinearLayout android:id="@+id/keyguard_users_grid" android:orientation="horizontal" android:layout_width="wrap_content" @@ -36,4 +36,4 @@ android:layout_height="@dimen/keyguard_avatar_size" android:layout_gravity="center|bottom" /> -</com.android.internal.policy.impl.keyguard.KeyguardMultiUserSelectorView> +</com.android.keyguard.KeyguardMultiUserSelectorView> diff --git a/core/res/res/layout/keyguard_password_view.xml b/packages/Keyguard/res/layout/keyguard_password_view.xml index aab54c3f23cb..d8012bfeb549 100644 --- a/core/res/res/layout/keyguard_password_view.xml +++ b/packages/Keyguard/res/layout/keyguard_password_view.xml @@ -16,14 +16,15 @@ ** limitations under the License. */ --> -<com.android.internal.policy.impl.keyguard.KeyguardPasswordView +<com.android.keyguard.KeyguardPasswordView xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:androidprv="http://schemas.android.com/apk/res/com.android.keyguard" android:id="@+id/keyguard_password_view" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" - android:layout_maxWidth="@dimen/keyguard_security_width" - android:layout_maxHeight="@dimen/keyguard_security_height" + androidprv:layout_maxWidth="@dimen/keyguard_security_width" + androidprv:layout_maxHeight="@dimen/keyguard_security_height" android:gravity="bottom" android:contentDescription="@string/keyguard_accessibility_password_unlock" > @@ -43,7 +44,7 @@ since the backspace/IME switcher looks better inside --> <FrameLayout android:id="@+id/keyguard_bouncer_frame" - android:background="@*android:drawable/kg_bouncer_bg_white" + android:background="@drawable/kg_bouncer_bg_white" android:layout_height="wrap_content" android:layout_width="match_parent" > @@ -62,7 +63,7 @@ android:layout_weight="1" android:gravity="center_horizontal" android:layout_gravity="center_vertical" - android:layout_marginStart="@*android:dimen/keyguard_lockscreen_pin_margin_left" + android:layout_marginStart="@dimen/keyguard_lockscreen_pin_margin_left" android:singleLine="true" android:textStyle="normal" android:inputType="textPassword" @@ -76,7 +77,7 @@ <ImageView android:id="@+id/switch_ime_button" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:src="@*android:drawable/ic_lockscreen_ime" + android:src="@drawable/ic_lockscreen_ime" android:clickable="true" android:padding="8dip" android:layout_gravity="center" @@ -101,4 +102,4 @@ android:layout_gravity="bottom|center_horizontal" android:gravity="center_horizontal" /> -</com.android.internal.policy.impl.keyguard.KeyguardPasswordView> +</com.android.keyguard.KeyguardPasswordView> diff --git a/core/res/res/layout/keyguard_pattern_view.xml b/packages/Keyguard/res/layout/keyguard_pattern_view.xml index 1bd3e4ebdd9e..0c9380c996d0 100644 --- a/core/res/res/layout/keyguard_pattern_view.xml +++ b/packages/Keyguard/res/layout/keyguard_pattern_view.xml @@ -20,14 +20,15 @@ <!-- This is the screen that shows the 9 circle unlock widget and instructs the user how to unlock their device, or make an emergency call. This is the portrait layout. --> -<com.android.internal.policy.impl.keyguard.KeyguardPatternView +<com.android.keyguard.KeyguardPatternView xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:androidprv="http://schemas.android.com/apk/res/com.android.keyguard" android:id="@+id/keyguard_pattern_view" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" - android:layout_maxWidth="@dimen/keyguard_security_width" - android:layout_maxHeight="@dimen/keyguard_security_height" + androidprv:layout_maxWidth="@dimen/keyguard_security_width" + androidprv:layout_maxHeight="@dimen/keyguard_security_height" android:gravity="center_horizontal" android:contentDescription="@string/keyguard_accessibility_pattern_unlock"> @@ -48,7 +49,7 @@ <FrameLayout android:id="@+id/keyguard_bouncer_frame" - android:background="@*android:drawable/kg_bouncer_bg_white" + android:background="@drawable/kg_bouncer_bg_white" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" @@ -75,4 +76,4 @@ </LinearLayout> </FrameLayout> -</com.android.internal.policy.impl.keyguard.KeyguardPatternView> +</com.android.keyguard.KeyguardPatternView> diff --git a/core/res/res/layout/keyguard_pin_view.xml b/packages/Keyguard/res/layout/keyguard_pin_view.xml index 6a3b9e688629..00c6a21de0bb 100644 --- a/core/res/res/layout/keyguard_pin_view.xml +++ b/packages/Keyguard/res/layout/keyguard_pin_view.xml @@ -17,14 +17,14 @@ */ --> -<com.android.internal.policy.impl.keyguard.KeyguardPINView +<com.android.keyguard.KeyguardPINView xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:androidprv="http://schemas.android.com/apk/res/android" + xmlns:androidprv="http://schemas.android.com/apk/res/com.android.keyguard" android:id="@+id/keyguard_pin_view" android:layout_width="match_parent" android:layout_height="match_parent" - android:layout_maxWidth="@dimen/keyguard_security_width" - android:layout_maxHeight="@dimen/keyguard_security_height" + androidprv:layout_maxWidth="@dimen/keyguard_security_width" + androidprv:layout_maxHeight="@dimen/keyguard_security_height" android:orientation="vertical" android:contentDescription="@string/keyguard_accessibility_pin_unlock" > @@ -34,7 +34,7 @@ /> <LinearLayout android:id="@+id/keyguard_bouncer_frame" - android:background="@*android:drawable/kg_bouncer_bg_white" + android:background="@drawable/kg_bouncer_bg_white" android:layout_width="match_parent" android:layout_height="0dp" android:orientation="vertical" @@ -53,7 +53,7 @@ android:layout_height="match_parent" android:layout_weight="1" android:gravity="center" - android:layout_marginStart="@*android:dimen/keyguard_lockscreen_pin_margin_left" + android:layout_marginStart="@dimen/keyguard_lockscreen_pin_margin_left" android:singleLine="true" android:cursorVisible="false" android:background="@null" @@ -64,7 +64,7 @@ android:layout_width="wrap_content" android:layout_height="match_parent" android:gravity="center_vertical" - android:src="@*android:drawable/ic_input_delete" + android:src="@drawable/ic_input_delete" android:clickable="true" android:paddingTop="8dip" android:paddingBottom="8dip" @@ -85,7 +85,7 @@ android:layout_weight="1" android:orientation="horizontal" > - <view class="com.android.internal.policy.impl.keyguard.NumPadKey" + <view class="com.android.keyguard.NumPadKey" android:id="@+id/key1" style="@style/Widget.Button.NumPadKey" android:layout_width="0px" @@ -94,7 +94,7 @@ androidprv:textView="@+id/pinEntry" androidprv:digit="1" /> - <view class="com.android.internal.policy.impl.keyguard.NumPadKey" + <view class="com.android.keyguard.NumPadKey" android:id="@+id/key2" style="@style/Widget.Button.NumPadKey" android:layout_width="0px" @@ -103,7 +103,7 @@ androidprv:textView="@+id/pinEntry" androidprv:digit="2" /> - <view class="com.android.internal.policy.impl.keyguard.NumPadKey" + <view class="com.android.keyguard.NumPadKey" android:id="@+id/key3" style="@style/Widget.Button.NumPadKey" android:layout_width="0px" @@ -119,7 +119,7 @@ android:layout_weight="1" android:orientation="horizontal" > - <view class="com.android.internal.policy.impl.keyguard.NumPadKey" + <view class="com.android.keyguard.NumPadKey" android:id="@+id/key4" style="@style/Widget.Button.NumPadKey" android:layout_width="0px" @@ -128,7 +128,7 @@ androidprv:textView="@+id/pinEntry" androidprv:digit="4" /> - <view class="com.android.internal.policy.impl.keyguard.NumPadKey" + <view class="com.android.keyguard.NumPadKey" android:id="@+id/key5" style="@style/Widget.Button.NumPadKey" android:layout_width="0px" @@ -137,7 +137,7 @@ androidprv:textView="@+id/pinEntry" androidprv:digit="5" /> - <view class="com.android.internal.policy.impl.keyguard.NumPadKey" + <view class="com.android.keyguard.NumPadKey" android:id="@+id/key6" style="@style/Widget.Button.NumPadKey" android:layout_width="0px" @@ -153,7 +153,7 @@ android:orientation="horizontal" android:layout_weight="1" > - <view class="com.android.internal.policy.impl.keyguard.NumPadKey" + <view class="com.android.keyguard.NumPadKey" android:id="@+id/key7" style="@style/Widget.Button.NumPadKey" android:layout_width="0px" @@ -162,7 +162,7 @@ androidprv:textView="@+id/pinEntry" androidprv:digit="7" /> - <view class="com.android.internal.policy.impl.keyguard.NumPadKey" + <view class="com.android.keyguard.NumPadKey" android:id="@+id/key8" style="@style/Widget.Button.NumPadKey" android:layout_width="0px" @@ -171,7 +171,7 @@ androidprv:textView="@+id/pinEntry" androidprv:digit="8" /> - <view class="com.android.internal.policy.impl.keyguard.NumPadKey" + <view class="com.android.keyguard.NumPadKey" android:id="@+id/key9" style="@style/Widget.Button.NumPadKey" android:layout_width="0px" @@ -192,7 +192,7 @@ android:layout_height="match_parent" android:layout_weight="1" /> - <view class="com.android.internal.policy.impl.keyguard.NumPadKey" + <view class="com.android.keyguard.NumPadKey" android:id="@+id/key0" style="@style/Widget.Button.NumPadKey" android:layout_width="0px" @@ -221,4 +221,4 @@ android:layout_gravity="bottom|center_horizontal" android:gravity="center_horizontal" /> -</com.android.internal.policy.impl.keyguard.KeyguardPINView> +</com.android.keyguard.KeyguardPINView> diff --git a/core/res/res/layout/keyguard_selector_view.xml b/packages/Keyguard/res/layout/keyguard_selector_view.xml index dfacb6a15103..6cb5e67fee12 100644 --- a/core/res/res/layout/keyguard_selector_view.xml +++ b/packages/Keyguard/res/layout/keyguard_selector_view.xml @@ -18,14 +18,14 @@ --> <!-- This is the selector widget that allows the user to select an action. --> -<com.android.internal.policy.impl.keyguard.KeyguardSelectorView - xmlns:prvandroid="http://schemas.android.com/apk/prv/res/android" +<com.android.keyguard.KeyguardSelectorView xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:androidprv="http://schemas.android.com/apk/res/com.android.keyguard" android:id="@+id/keyguard_selector_view" android:layout_width="match_parent" android:layout_height="match_parent" - android:layout_maxWidth="420dp" - android:layout_maxHeight="@dimen/keyguard_security_height" + androidprv:layout_maxWidth="420dp" + androidprv:layout_maxHeight="@dimen/keyguard_security_height" android:clipChildren="false" android:clipToPadding="false" android:orientation="vertical" @@ -49,7 +49,7 @@ android:layout_height="match_parent" android:layout_marginLeft="16dp" android:layout_marginRight="16dp" - android:background="@*android:drawable/kg_bouncer_bg_white"/> + android:background="@drawable/kg_bouncer_bg_white"/> <include layout="@layout/keyguard_glow_pad_container" /> @@ -60,5 +60,5 @@ android:layout_gravity="bottom|center_horizontal" /> </FrameLayout> -</com.android.internal.policy.impl.keyguard.KeyguardSelectorView> +</com.android.keyguard.KeyguardSelectorView> diff --git a/core/res/res/layout/keyguard_sim_pin_view.xml b/packages/Keyguard/res/layout/keyguard_sim_pin_view.xml index 6e6fe0853680..eccac19cfacb 100644 --- a/core/res/res/layout/keyguard_sim_pin_view.xml +++ b/packages/Keyguard/res/layout/keyguard_sim_pin_view.xml @@ -17,15 +17,15 @@ */ --> <!-- This is the SIM PIN view that allows the user to enter a SIM PIN to unlock the device. --> -<com.android.internal.policy.impl.keyguard.KeyguardSimPinView +<com.android.keyguard.KeyguardSimPinView xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:androidprv="http://schemas.android.com/apk/res/android" + xmlns:androidprv="http://schemas.android.com/apk/res/com.android.keyguard" android:id="@+id/keyguard_sim_pin_view" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" - android:layout_maxWidth="@dimen/keyguard_security_width" - android:layout_maxHeight="@dimen/keyguard_security_height" + androidprv:layout_maxWidth="@dimen/keyguard_security_width" + androidprv:layout_maxHeight="@dimen/keyguard_security_height" android:gravity="center_horizontal"> <ImageView @@ -39,7 +39,7 @@ /> <LinearLayout android:id="@+id/keyguard_bouncer_frame" - android:background="@*android:drawable/kg_bouncer_bg_white" + android:background="@drawable/kg_bouncer_bg_white" android:layout_width="match_parent" android:layout_height="0dp" android:orientation="vertical" @@ -58,7 +58,7 @@ android:layout_height="match_parent" android:layout_weight="1" android:gravity="center" - android:layout_marginStart="@*android:dimen/keyguard_lockscreen_pin_margin_left" + android:layout_marginStart="@dimen/keyguard_lockscreen_pin_margin_left" android:singleLine="true" android:cursorVisible="false" android:background="@null" @@ -69,7 +69,7 @@ android:layout_width="wrap_content" android:layout_height="match_parent" android:gravity="center_vertical" - android:src="@*android:drawable/ic_input_delete" + android:src="@drawable/ic_input_delete" android:clickable="true" android:paddingTop="8dip" android:paddingBottom="8dip" @@ -90,7 +90,7 @@ android:layout_weight="1" android:orientation="horizontal" > - <view class="com.android.internal.policy.impl.keyguard.NumPadKey" + <view class="com.android.keyguard.NumPadKey" android:id="@+id/key1" style="@style/Widget.Button.NumPadKey" android:layout_width="0px" @@ -99,7 +99,7 @@ androidprv:textView="@+id/pinEntry" androidprv:digit="1" /> - <view class="com.android.internal.policy.impl.keyguard.NumPadKey" + <view class="com.android.keyguard.NumPadKey" android:id="@+id/key2" style="@style/Widget.Button.NumPadKey" android:layout_width="0px" @@ -108,7 +108,7 @@ androidprv:textView="@+id/pinEntry" androidprv:digit="2" /> - <view class="com.android.internal.policy.impl.keyguard.NumPadKey" + <view class="com.android.keyguard.NumPadKey" android:id="@+id/key3" style="@style/Widget.Button.NumPadKey" android:layout_width="0px" @@ -124,7 +124,7 @@ android:layout_weight="1" android:orientation="horizontal" > - <view class="com.android.internal.policy.impl.keyguard.NumPadKey" + <view class="com.android.keyguard.NumPadKey" android:id="@+id/key4" style="@style/Widget.Button.NumPadKey" android:layout_width="0px" @@ -133,7 +133,7 @@ androidprv:textView="@+id/pinEntry" androidprv:digit="4" /> - <view class="com.android.internal.policy.impl.keyguard.NumPadKey" + <view class="com.android.keyguard.NumPadKey" android:id="@+id/key5" style="@style/Widget.Button.NumPadKey" android:layout_width="0px" @@ -142,7 +142,7 @@ androidprv:textView="@+id/pinEntry" androidprv:digit="5" /> - <view class="com.android.internal.policy.impl.keyguard.NumPadKey" + <view class="com.android.keyguard.NumPadKey" android:id="@+id/key6" style="@style/Widget.Button.NumPadKey" android:layout_width="0px" @@ -158,7 +158,7 @@ android:orientation="horizontal" android:layout_weight="1" > - <view class="com.android.internal.policy.impl.keyguard.NumPadKey" + <view class="com.android.keyguard.NumPadKey" android:id="@+id/key7" style="@style/Widget.Button.NumPadKey" android:layout_width="0px" @@ -167,7 +167,7 @@ androidprv:textView="@+id/pinEntry" androidprv:digit="7" /> - <view class="com.android.internal.policy.impl.keyguard.NumPadKey" + <view class="com.android.keyguard.NumPadKey" android:id="@+id/key8" style="@style/Widget.Button.NumPadKey" android:layout_width="0px" @@ -176,7 +176,7 @@ androidprv:textView="@+id/pinEntry" androidprv:digit="8" /> - <view class="com.android.internal.policy.impl.keyguard.NumPadKey" + <view class="com.android.keyguard.NumPadKey" android:id="@+id/key9" style="@style/Widget.Button.NumPadKey" android:layout_width="0px" @@ -197,7 +197,7 @@ android:layout_height="match_parent" android:layout_weight="1" /> - <view class="com.android.internal.policy.impl.keyguard.NumPadKey" + <view class="com.android.keyguard.NumPadKey" android:id="@+id/key0" style="@style/Widget.Button.NumPadKey" android:layout_width="0px" @@ -227,4 +227,4 @@ android:layout_gravity="bottom|center_horizontal" android:gravity="center_horizontal" /> -</com.android.internal.policy.impl.keyguard.KeyguardSimPinView> +</com.android.keyguard.KeyguardSimPinView> diff --git a/core/res/res/layout/keyguard_sim_puk_view.xml b/packages/Keyguard/res/layout/keyguard_sim_puk_view.xml index 0412fdc9dcad..fe372036d59b 100644 --- a/core/res/res/layout/keyguard_sim_puk_view.xml +++ b/packages/Keyguard/res/layout/keyguard_sim_puk_view.xml @@ -18,15 +18,15 @@ --> <!-- This is the SIM PUK view that allows the user to recover their device by entering the carrier-provided PUK code and entering a new SIM PIN for it. --> -<com.android.internal.policy.impl.keyguard.KeyguardSimPukView +<com.android.keyguard.KeyguardSimPukView xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:androidprv="http://schemas.android.com/apk/res/android" + xmlns:androidprv="http://schemas.android.com/apk/res/com.android.keyguard" android:id="@+id/keyguard_sim_puk_view" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" - android:layout_maxWidth="@dimen/keyguard_security_width" - android:layout_maxHeight="@dimen/keyguard_security_height" + androidprv:layout_maxWidth="@dimen/keyguard_security_width" + androidprv:layout_maxHeight="@dimen/keyguard_security_height" android:gravity="center_horizontal"> <ImageView @@ -40,7 +40,7 @@ /> <LinearLayout android:id="@+id/keyguard_bouncer_frame" - android:background="@*android:drawable/kg_bouncer_bg_white" + android:background="@drawable/kg_bouncer_bg_white" android:layout_width="match_parent" android:layout_height="0dp" android:orientation="vertical" @@ -59,7 +59,7 @@ android:layout_height="match_parent" android:layout_weight="1" android:gravity="center" - android:layout_marginStart="@*android:dimen/keyguard_lockscreen_pin_margin_left" + android:layout_marginStart="@dimen/keyguard_lockscreen_pin_margin_left" android:singleLine="true" android:cursorVisible="false" android:background="@null" @@ -70,7 +70,7 @@ android:layout_width="wrap_content" android:layout_height="match_parent" android:gravity="center_vertical" - android:src="@*android:drawable/ic_input_delete" + android:src="@drawable/ic_input_delete" android:clickable="true" android:paddingTop="8dip" android:paddingBottom="8dip" @@ -91,7 +91,7 @@ android:layout_weight="1" android:orientation="horizontal" > - <view class="com.android.internal.policy.impl.keyguard.NumPadKey" + <view class="com.android.keyguard.NumPadKey" android:id="@+id/key1" style="@style/Widget.Button.NumPadKey" android:layout_width="0px" @@ -100,7 +100,7 @@ androidprv:textView="@+id/pinEntry" androidprv:digit="1" /> - <view class="com.android.internal.policy.impl.keyguard.NumPadKey" + <view class="com.android.keyguard.NumPadKey" android:id="@+id/key2" style="@style/Widget.Button.NumPadKey" android:layout_width="0px" @@ -109,7 +109,7 @@ androidprv:textView="@+id/pinEntry" androidprv:digit="2" /> - <view class="com.android.internal.policy.impl.keyguard.NumPadKey" + <view class="com.android.keyguard.NumPadKey" android:id="@+id/key3" style="@style/Widget.Button.NumPadKey" android:layout_width="0px" @@ -125,7 +125,7 @@ android:layout_weight="1" android:orientation="horizontal" > - <view class="com.android.internal.policy.impl.keyguard.NumPadKey" + <view class="com.android.keyguard.NumPadKey" android:id="@+id/key4" style="@style/Widget.Button.NumPadKey" android:layout_width="0px" @@ -134,7 +134,7 @@ androidprv:textView="@+id/pinEntry" androidprv:digit="4" /> - <view class="com.android.internal.policy.impl.keyguard.NumPadKey" + <view class="com.android.keyguard.NumPadKey" android:id="@+id/key5" style="@style/Widget.Button.NumPadKey" android:layout_width="0px" @@ -143,7 +143,7 @@ androidprv:textView="@+id/pinEntry" androidprv:digit="5" /> - <view class="com.android.internal.policy.impl.keyguard.NumPadKey" + <view class="com.android.keyguard.NumPadKey" android:id="@+id/key6" style="@style/Widget.Button.NumPadKey" android:layout_width="0px" @@ -159,7 +159,7 @@ android:orientation="horizontal" android:layout_weight="1" > - <view class="com.android.internal.policy.impl.keyguard.NumPadKey" + <view class="com.android.keyguard.NumPadKey" android:id="@+id/key7" style="@style/Widget.Button.NumPadKey" android:layout_width="0px" @@ -168,7 +168,7 @@ androidprv:textView="@+id/pinEntry" androidprv:digit="7" /> - <view class="com.android.internal.policy.impl.keyguard.NumPadKey" + <view class="com.android.keyguard.NumPadKey" android:id="@+id/key8" style="@style/Widget.Button.NumPadKey" android:layout_width="0px" @@ -177,7 +177,7 @@ androidprv:textView="@+id/pinEntry" androidprv:digit="8" /> - <view class="com.android.internal.policy.impl.keyguard.NumPadKey" + <view class="com.android.keyguard.NumPadKey" android:id="@+id/key9" style="@style/Widget.Button.NumPadKey" android:layout_width="0px" @@ -198,7 +198,7 @@ android:layout_height="match_parent" android:layout_weight="1" /> - <view class="com.android.internal.policy.impl.keyguard.NumPadKey" + <view class="com.android.keyguard.NumPadKey" android:id="@+id/key0" style="@style/Widget.Button.NumPadKey" android:layout_width="0px" @@ -227,4 +227,4 @@ android:orientation="vertical" android:layout_gravity="bottom|center_horizontal" android:gravity="center_horizontal" /> -</com.android.internal.policy.impl.keyguard.KeyguardSimPukView> +</com.android.keyguard.KeyguardSimPukView> diff --git a/core/res/res/layout/keyguard_status_view.xml b/packages/Keyguard/res/layout/keyguard_status_view.xml index 9e36df378f5c..2304d9f33bc8 100644 --- a/core/res/res/layout/keyguard_status_view.xml +++ b/packages/Keyguard/res/layout/keyguard_status_view.xml @@ -18,29 +18,30 @@ --> <!-- This is a view that shows general status information in Keyguard. --> -<com.android.internal.policy.impl.keyguard.KeyguardWidgetFrame +<com.android.keyguard.KeyguardWidgetFrame xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:androidprv="http://schemas.android.com/apk/res/com.android.keyguard" android:id="@+id/keyguard_status_view" android:layout_width="match_parent" android:layout_height="match_parent" - android:layout_maxWidth="@dimen/keyguard_security_width" - android:layout_maxHeight="@dimen/keyguard_security_height" + androidprv:layout_maxWidth="@dimen/keyguard_security_width" + androidprv:layout_maxHeight="@dimen/keyguard_security_height" android:gravity="center_horizontal"> - <com.android.internal.policy.impl.keyguard.KeyguardStatusView + <com.android.keyguard.KeyguardStatusView android:id="@+id/keyguard_status_view_face_palm" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center_horizontal|top" - android:contentDescription="@android:string/keyguard_accessibility_status"> + android:contentDescription="@string/keyguard_accessibility_status"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center_horizontal|top" android:orientation="vertical" android:focusable="true"> - <com.android.internal.policy.impl.keyguard.ClockView + <com.android.keyguard.ClockView android:id="@+id/clock_view" android:layout_width="wrap_content" android:layout_height="wrap_content" @@ -58,10 +59,10 @@ android:drawablePadding="2dip" /> - </com.android.internal.policy.impl.keyguard.ClockView> + </com.android.keyguard.ClockView> <include layout="@layout/keyguard_status_area" /> </LinearLayout> - </com.android.internal.policy.impl.keyguard.KeyguardStatusView> -</com.android.internal.policy.impl.keyguard.KeyguardWidgetFrame> + </com.android.keyguard.KeyguardStatusView> +</com.android.keyguard.KeyguardWidgetFrame> diff --git a/packages/Keyguard/res/layout/keyguard_test_activity.xml b/packages/Keyguard/res/layout/keyguard_test_activity.xml new file mode 100644 index 000000000000..a3b75b0e2b3d --- /dev/null +++ b/packages/Keyguard/res/layout/keyguard_test_activity.xml @@ -0,0 +1,47 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +** +** Copyright 2012, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License") +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<LinearLayout + xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:orientation="vertical" + android:gravity="center"> + + <Button android:id="@+id/do_keyguard" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="@string/do_keyguard" /> + + <Button android:id="@+id/on_screen_turned_off" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="@string/on_screen_turned_off" /> + + <Button android:id="@+id/on_screen_turned_on" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="@string/on_screen_turned_on" /> + + <Button android:id="@+id/verify_unlock" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="@string/verify_unlock" /> + +</LinearLayout> diff --git a/core/res/res/layout/keyguard_transport_control_view.xml b/packages/Keyguard/res/layout/keyguard_transport_control_view.xml index 532322c764bf..7e36f9f68851 100644 --- a/core/res/res/layout/keyguard_transport_control_view.xml +++ b/packages/Keyguard/res/layout/keyguard_transport_control_view.xml @@ -15,7 +15,7 @@ --> <!-- This is a view to control music playback in keyguard. --> -<com.android.internal.policy.impl.keyguard.KeyguardTransportControlView +<com.android.keyguard.KeyguardTransportControlView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" @@ -26,8 +26,8 @@ <FrameLayout android:layout_width="match_parent" android:layout_height="match_parent" - android:foreground="@*android:drawable/ic_lockscreen_player_background" - android:contentDescription="@*android:string/keygaurd_accessibility_media_controls"> + android:foreground="@drawable/ic_lockscreen_player_background" + android:contentDescription="@string/keygaurd_accessibility_media_controls"> <!-- Use ImageView for its cropping features; otherwise could be android:background --> <ImageView android:id="@+id/albumart" @@ -70,11 +70,11 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" - android:src="@*android:drawable/ic_media_previous" + android:src="@drawable/ic_media_previous" android:clickable="true" android:background="?android:attr/selectableItemBackground" android:padding="10dip" - android:contentDescription="@*android:string/lockscreen_transport_prev_description"/> + android:contentDescription="@string/keyguard_accessibility_transport_prev_description"/> </FrameLayout> <FrameLayout android:layout_width="wrap_content" @@ -86,10 +86,10 @@ android:layout_height="wrap_content" android:layout_gravity="center" android:clickable="true" - android:src="@*android:drawable/ic_media_play" + android:src="@drawable/ic_media_play" android:background="?android:attr/selectableItemBackground" android:padding="10dip" - android:contentDescription="@*android:string/lockscreen_transport_play_description"/> + android:contentDescription="@string/keyguard_accessibility_transport_play_description"/> </FrameLayout> <FrameLayout android:layout_width="wrap_content" @@ -101,12 +101,12 @@ android:layout_height="wrap_content" android:layout_gravity="center" android:clickable="true" - android:src="@*android:drawable/ic_media_next" + android:src="@drawable/ic_media_next" android:background="?android:attr/selectableItemBackground" android:padding="10dip" - android:contentDescription="@*android:string/lockscreen_transport_next_description"/> + android:contentDescription="@string/keyguard_accessibility_transport_next_description"/> </FrameLayout> </LinearLayout> </LinearLayout> -</com.android.internal.policy.impl.keyguard.KeyguardTransportControlView>
\ No newline at end of file +</com.android.keyguard.KeyguardTransportControlView> diff --git a/core/res/res/layout/keyguard_widget_remove_drop_target.xml b/packages/Keyguard/res/layout/keyguard_widget_remove_drop_target.xml index 294c3862612d..294c3862612d 100644 --- a/core/res/res/layout/keyguard_widget_remove_drop_target.xml +++ b/packages/Keyguard/res/layout/keyguard_widget_remove_drop_target.xml diff --git a/packages/Keyguard/res/menu/optionmenu.xml b/packages/Keyguard/res/menu/optionmenu.xml new file mode 100644 index 000000000000..22f300d19ca6 --- /dev/null +++ b/packages/Keyguard/res/menu/optionmenu.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="utf-8"?> +<menu xmlns:android="http://schemas.android.com/apk/res/android"> + <item android:id="@+id/none_menu_item" + android:title="@string/none_menu_item" /> + <item android:id="@+id/pin_menu_item" + android:title="@string/pin_menu_item" /> + <item android:id="@+id/password_menu_item" + android:title="@string/password_menu_item" /> + <item android:id="@+id/pattern_menu_item" + android:title="@string/pattern_menu_item" /> + <item android:id="@+id/sim_pin_menu_item" + android:title="@string/sim_pin_menu_item" /> + <item android:id="@+id/sim_puk_menu_item" + android:title="@string/sim_puk_menu_item" /> + <item android:id="@+id/add_widget_item" + android:title="@string/add_widget_item" /> +</menu> diff --git a/packages/Keyguard/res/values-af/strings.xml b/packages/Keyguard/res/values-af/strings.xml new file mode 100644 index 000000000000..7bc978b92a7d --- /dev/null +++ b/packages/Keyguard/res/values-af/strings.xml @@ -0,0 +1,164 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* //device/apps/common/assets/res/any/strings.xml +** +** Copyright 2006, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="keyguard_password_enter_pin_code" msgid="3037685796058495017">"Voer PIN-kode in"</string> + <string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Voer PUK en nuwe PIN-kode in"</string> + <string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK-kode"</string> + <string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Nuwe PIN-kode"</string> + <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Raak om wagwoord in te voer"</font></string> + <string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Voer wagwoord in om te ontsluit"</string> + <string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Voer PIN in om te ontsluit"</string> + <string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Verkeerde PIN-kode."</string> + <string name="keyguard_label_text" msgid="861796461028298424">"Om te ontsluit, druk Kieslys dan 0."</string> + <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Maksimum gesigontsluit-pogings oorskry"</string> + <!-- no translation found for keyguard_charged (3272223906073492454) --> + <skip /> + <!-- no translation found for keyguard_plugged_in (8117572000639998388) --> + <skip /> + <!-- no translation found for keyguard_low_battery (8143808018719173859) --> + <skip /> + <!-- no translation found for keyguard_instructions_when_pattern_disabled (1332288268600329841) --> + <skip /> + <!-- no translation found for keyguard_network_locked_message (9169717779058037168) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message_short (494980561304211931) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (1445849005909260039) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (3481110395508637643) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions (5210891509995942250) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions_long (5968985489463870358) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_message_short (8340813989586622356) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5892940909699723544) --> + <skip /> + <!-- no translation found for keyguard_sim_locked_message (6875773413306380902) --> + <skip /> + <!-- no translation found for keyguard_sim_puk_locked_message (3747232467471801633) --> + <skip /> + <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (7975221805033614426) --> + <skip /> + <string name="keyguard_accessibility_widget_changed" msgid="5678624624681400191">"%1$s. Legstuk %2$d van %3$d."</string> + <string name="keyguard_accessibility_add_widget" msgid="8273277058724924654">"Voeg legstuk by."</string> + <string name="keyguard_accessibility_widget_empty_slot" msgid="1281505703307930757">"Leeg"</string> + <string name="keyguard_accessibility_unlock_area_expanded" msgid="2278106022311170299">"Ontsluitruimte uitgevou."</string> + <string name="keyguard_accessibility_unlock_area_collapsed" msgid="6366992066936076396">"Ontsluitruimte ingevou."</string> + <string name="keyguard_accessibility_widget" msgid="6527131039741808240">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g>-legstuk."</string> + <string name="keyguard_accessibility_user_selector" msgid="1226798370913698896">"Gebruikerkieser"</string> + <string name="keyguard_accessibility_status" msgid="8008264603935930611">"Status"</string> + <string name="keyguard_accessibility_camera" msgid="8904231194181114603">"Kamera"</string> + <string name="keygaurd_accessibility_media_controls" msgid="262209654292161806">"Media-kontroles"</string> + <string name="keyguard_accessibility_widget_reorder_start" msgid="8736853615588828197">"Herordening van legstuk begin."</string> + <string name="keyguard_accessibility_widget_reorder_end" msgid="7170190950870468320">"Herordening van legstuk beëindig."</string> + <string name="keyguard_accessibility_widget_deleted" msgid="4426204263929224434">"Legstuk <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> uitgevee."</string> + <string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"Vou ontsluitruimte uit."</string> + <string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"Sleep-ontsluit."</string> + <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"Patroon ontsluit."</string> + <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"Gesigslot."</string> + <string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"PIN ontsluit."</string> + <string name="keyguard_accessibility_password_unlock" msgid="7675777623912155089">"Wagwoord ontsluit."</string> + <string name="keyguard_accessibility_pattern_area" msgid="7679891324509597904">"Patroonarea."</string> + <string name="keyguard_accessibility_slide_area" msgid="6736064494019979544">"Sleep-area."</string> + <!-- no translation found for keyguard_accessibility_transport_prev_description (1337286538318543555) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_next_description (7073928300444909320) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_pause_description (8455979545295224302) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_play_description (8146417789511154044) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_stop_description (7656358482980912216) --> + <skip /> + <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> + <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string> + <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> + <string name="keyboardview_keycode_alt" msgid="4856868820040051939">"Alt"</string> + <string name="keyboardview_keycode_cancel" msgid="1203984017245783244">"Kanselleer"</string> + <string name="keyboardview_keycode_delete" msgid="3337914833206635744">"Vee uit"</string> + <string name="keyboardview_keycode_done" msgid="1992571118466679775">"Klaar"</string> + <string name="keyboardview_keycode_mode_change" msgid="4547387741906537519">"Modus verander"</string> + <string name="keyboardview_keycode_shift" msgid="2270748814315147690">"Shift"</string> + <string name="keyboardview_keycode_enter" msgid="2985864015076059467">"Invoersleutel"</string> + <string name="description_target_unlock" msgid="2228524900439801453">"Ontsluit"</string> + <string name="description_target_camera" msgid="969071997552486814">"Kamera"</string> + <string name="description_target_silent" msgid="893551287746522182">"Stil"</string> + <string name="description_target_soundon" msgid="30052466675500172">"Klank aan"</string> + <string name="description_target_search" msgid="3091587249776033139">"Soek"</string> + <string name="description_direction_up" msgid="7169032478259485180">"Gly op vir <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_down" msgid="5087739728639014595">"Gly af vir <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_left" msgid="7207478719805562165">"Gly links vir <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_right" msgid="8034433242579600980">"Gly regs vir <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="user_switched" msgid="3768006783166984410">"Huidige gebruiker <xliff:g id="NAME">%1$s</xliff:g> ."</string> + <string name="kg_emergency_call_label" msgid="684946192523830531">"Noodoproep"</string> + <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Het jy die patroon vergeet?"</string> + <string name="kg_wrong_pattern" msgid="1850806070801358830">"Verkeerde patroon"</string> + <string name="kg_wrong_password" msgid="2333281762128113157">"Verkeerde wagwoord"</string> + <string name="kg_wrong_pin" msgid="1131306510833563801">"Verkeerde PIN"</string> + <string name="kg_too_many_failed_attempts_countdown" msgid="6358110221603297548">"Probeer weer oor <xliff:g id="NUMBER">%d</xliff:g> sekondes."</string> + <string name="kg_pattern_instructions" msgid="398978611683075868">"Teken jou patroon"</string> + <string name="kg_sim_pin_instructions" msgid="2319508550934557331">"Voer SIM-PIN in"</string> + <string name="kg_pin_instructions" msgid="2377242233495111557">"Voer PIN in"</string> + <string name="kg_password_instructions" msgid="5753646556186936819">"Voer wagwoord in"</string> + <string name="kg_puk_enter_puk_hint" msgid="453227143861735537">"SIM is nou gedeaktiveer. Voer PUK-kode in om voort te gaan. Kontak diensverskaffer vir details."</string> + <string name="kg_puk_enter_pin_hint" msgid="7871604527429602024">"Voer die gewenste PIN-kode in"</string> + <string name="kg_enter_confirm_pin_hint" msgid="325676184762529976">"Bevestig gewenste PIN-kode"</string> + <string name="kg_sim_unlock_progress_dialog_message" msgid="8950398016976865762">"Ontsluit tans SIM-kaart…"</string> + <string name="kg_password_wrong_pin_code" msgid="1139324887413846912">"Verkeerde PIN-kode."</string> + <string name="kg_invalid_sim_pin_hint" msgid="8795159358110620001">"Tik \'n PIN in wat 4 tot 8 syfers lank is."</string> + <string name="kg_invalid_sim_puk_hint" msgid="7553388325654369575">"PUK-kode moet 8 of meer syfers wees."</string> + <string name="kg_invalid_puk" msgid="3638289409676051243">"Voer weer die korrekte PUK-kode in. Herhaalde pogings sal die SIM permanent deaktiveer."</string> + <string name="kg_invalid_confirm_pin_hint" product="default" msgid="7003469261464593516">"PIN-kodes stem nie ooreen nie"</string> + <string name="kg_login_too_many_attempts" msgid="6486842094005698475">"Te veel patroonpogings"</string> + <string name="kg_login_instructions" msgid="1100551261265506448">"Om te ontsluit, meld met jou Google-rekening aan."</string> + <string name="kg_login_username_hint" msgid="5718534272070920364">"Gebruikernaam (e-pos)"</string> + <string name="kg_login_password_hint" msgid="9057289103827298549">"Wagwoord"</string> + <string name="kg_login_submit_button" msgid="5355904582674054702">"Meld aan"</string> + <string name="kg_login_invalid_input" msgid="5754664119319872197">"Ongeldige gebruikernaam of wagwoord."</string> + <string name="kg_login_account_recovery_hint" msgid="5690709132841752974">"Het jy jou gebruikernaam of wagwoord vergeet?"\n"Besoek "<b>"google.com/accounts/recovery"</b>"."</string> + <string name="kg_login_checking_password" msgid="1052685197710252395">"Kontroleer tans rekening..."</string> + <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="8276745642049502550">"Jy het jou PIN <xliff:g id="NUMBER_0">%d</xliff:g> keer verkeerd ingetik. "\n\n"Probeer weer oor <xliff:g id="NUMBER_1">%d</xliff:g> sekondes."</string> + <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="7813713389422226531">"Jy het <xliff:g id="NUMBER_0">%d</xliff:g> keer jou wagwoord verkeerdelik getik. "\n\n"Probeer weer oor <xliff:g id="NUMBER_1">%d</xliff:g> sekondes."</string> + <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="74089475965050805">"Jy het jou ontsluitpatroon <xliff:g id="NUMBER_0">%d</xliff:g> keer verkeerdelik geteken. "\n\n"Probeer weer oor <xliff:g id="NUMBER_1">%d</xliff:g> sekondes."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="1575557200627128949">"Jy het <xliff:g id="NUMBER_0">%d</xliff:g> keer verkeerdelik gepoog om die tablet te ontsluit. Na nog <xliff:g id="NUMBER_1">%d</xliff:g> onsuksesvolle pogings, sal die tablet na die fabrieksverstek teruggestel word en al die gebruikerdata sal verlore wees."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="4051015943038199910">"Jy het <xliff:g id="NUMBER_0">%d</xliff:g> keer verkeerdelik gepoog om die foon te ontsluit. Na nog <xliff:g id="NUMBER_1">%d</xliff:g> onsuksesvolle pogings, sal die foon na die fabrieksverstek teruggestel word en al die gebruikerdata sal verlore wees."</string> + <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2072996269148483637">"Jy het <xliff:g id="NUMBER">%d</xliff:g> keer verkeerdelik gepoog om die tablet te ontsluit. Die tablet sal nou na fabrieksverstek teruggestel word."</string> + <string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"Jy het <xliff:g id="NUMBER">%d</xliff:g> keer verkeerdelik gepoog om die foon te ontsluit. Die foon sal nou na fabrieksverstek teruggestel word."</string> + <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Jy het jou ontsluitpatroon <xliff:g id="NUMBER_0">%d</xliff:g> keer verkeerdelik geteken. Na nog <xliff:g id="NUMBER_1">%d</xliff:g> onsuksesvolle pogings, sal jy gevra word om jou tablet te ontsluit deur middel van \'n e-posrekening."\n\n" Probeer weer oor <xliff:g id="NUMBER_2">%d</xliff:g> sekondes."</string> + <string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"Jy het jou ontsluitpatroon <xliff:g id="NUMBER_0">%d</xliff:g> keer verkeerdelik geteken. Na nog <xliff:g id="NUMBER_1">%d</xliff:g> onsuksesvolle pogings, sal jy gevra word om jou foon te ontsluit deur middel van \'n e-posrekening."\n\n" Probeer weer oor <xliff:g id="NUMBER_2">%d</xliff:g> sekondes."</string> + <string name="kg_text_message_separator" product="default" msgid="4160700433287233771">" — "</string> + <string name="kg_reordering_delete_drop_target_text" msgid="7899202978204438708">"Verwyder"</string> + <!-- no translation found for keyguard_transport_prev_description (8229108430245669854) --> + <skip /> + <!-- no translation found for keyguard_transport_next_description (4299258300283778305) --> + <skip /> + <!-- no translation found for keyguard_transport_pause_description (5093073338238310224) --> + <skip /> + <!-- no translation found for keyguard_transport_play_description (2924628863741150956) --> + <skip /> + <!-- no translation found for keyguard_transport_stop_description (3084179324810575787) --> + <skip /> + <!-- no translation found for keyguard_carrier_default (8700650403054042153) --> + <skip /> +</resources> diff --git a/packages/Keyguard/res/values-am/strings.xml b/packages/Keyguard/res/values-am/strings.xml new file mode 100644 index 000000000000..bf0112338de0 --- /dev/null +++ b/packages/Keyguard/res/values-am/strings.xml @@ -0,0 +1,164 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* //device/apps/common/assets/res/any/strings.xml +** +** Copyright 2006, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="keyguard_password_enter_pin_code" msgid="3037685796058495017">"ፒን ኮድ ተይብ"</string> + <string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"PUK እና አዲስ ፒን ተይብ"</string> + <string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"የPUK ኮድ"</string> + <string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"አዲስ Pin ኮድ"</string> + <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"የይለፍ ቃል ለመተየብ ንካ"</font></string> + <string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"ለመክፈት የይለፍ ቃል ተይብ"</string> + <string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"ለመክፈት ፒን ተይብ"</string> + <string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"ትክክል ያልሆነ PIN ኮድ።"</string> + <string name="keyguard_label_text" msgid="861796461028298424">"ለመክፈት፣ምናሌ ተጫን ከዛ 0"</string> + <string name="faceunlock_multiple_failures" msgid="754137583022792429">"የመጨረሻውን የገጽ ክፈት ሙከራዎችን አልፏል"</string> + <!-- no translation found for keyguard_charged (3272223906073492454) --> + <skip /> + <!-- no translation found for keyguard_plugged_in (8117572000639998388) --> + <skip /> + <!-- no translation found for keyguard_low_battery (8143808018719173859) --> + <skip /> + <!-- no translation found for keyguard_instructions_when_pattern_disabled (1332288268600329841) --> + <skip /> + <!-- no translation found for keyguard_network_locked_message (9169717779058037168) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message_short (494980561304211931) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (1445849005909260039) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (3481110395508637643) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions (5210891509995942250) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions_long (5968985489463870358) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_message_short (8340813989586622356) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5892940909699723544) --> + <skip /> + <!-- no translation found for keyguard_sim_locked_message (6875773413306380902) --> + <skip /> + <!-- no translation found for keyguard_sim_puk_locked_message (3747232467471801633) --> + <skip /> + <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (7975221805033614426) --> + <skip /> + <string name="keyguard_accessibility_widget_changed" msgid="5678624624681400191">"%1$s። ምግብር %2$d ከ%3$d።"</string> + <string name="keyguard_accessibility_add_widget" msgid="8273277058724924654">"ንዑስ ፕሮግራም አክል"</string> + <string name="keyguard_accessibility_widget_empty_slot" msgid="1281505703307930757">"ባዶ"</string> + <string name="keyguard_accessibility_unlock_area_expanded" msgid="2278106022311170299">"የመክፈቻ አካባቢ ተስፋፍቷል።"</string> + <string name="keyguard_accessibility_unlock_area_collapsed" msgid="6366992066936076396">"የመክፈቻ አካባቢ ተሰብስቧል።"</string> + <string name="keyguard_accessibility_widget" msgid="6527131039741808240">"የ<xliff:g id="WIDGET_INDEX">%1$s</xliff:g> ንዑስ ፕሮግራም።"</string> + <string name="keyguard_accessibility_user_selector" msgid="1226798370913698896">"ተጠቃሚ መራጭ"</string> + <string name="keyguard_accessibility_status" msgid="8008264603935930611">"ሁኔታ"</string> + <string name="keyguard_accessibility_camera" msgid="8904231194181114603">"ካሜራ"</string> + <string name="keygaurd_accessibility_media_controls" msgid="262209654292161806">"የሚዲያ መቆጣጠሪያዎች"</string> + <string name="keyguard_accessibility_widget_reorder_start" msgid="8736853615588828197">"የንዑስ ፕሮግራም ዳግም መደርደር ተጀምሯል።"</string> + <string name="keyguard_accessibility_widget_reorder_end" msgid="7170190950870468320">"የንዑስ ፕሮግራም ዳግም መደርደር አብቅቷል።"</string> + <string name="keyguard_accessibility_widget_deleted" msgid="4426204263929224434">"ንዑስ ፕሮግራም <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> ተሰርዟል።"</string> + <string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"የመክፈቻ አካባቢውን አስፋፋ።"</string> + <string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"በማንሸራተት ክፈት።"</string> + <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"በስርዓተ-ጥለት መክፈት።"</string> + <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"በፊት መክፈት።"</string> + <string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"በፒን መክፈት።"</string> + <string name="keyguard_accessibility_password_unlock" msgid="7675777623912155089">"በይለፍ ቃል መክፈት።"</string> + <string name="keyguard_accessibility_pattern_area" msgid="7679891324509597904">"የስርዓተ-ጥለት አካባቢ።"</string> + <string name="keyguard_accessibility_slide_area" msgid="6736064494019979544">"የማንሸራተቻ አካባቢ።"</string> + <!-- no translation found for keyguard_accessibility_transport_prev_description (1337286538318543555) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_next_description (7073928300444909320) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_pause_description (8455979545295224302) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_play_description (8146417789511154044) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_stop_description (7656358482980912216) --> + <skip /> + <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> + <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string> + <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> + <string name="keyboardview_keycode_alt" msgid="4856868820040051939">"Alt"</string> + <string name="keyboardview_keycode_cancel" msgid="1203984017245783244">"ተወው"</string> + <string name="keyboardview_keycode_delete" msgid="3337914833206635744">"ሰርዝ"</string> + <string name="keyboardview_keycode_done" msgid="1992571118466679775">"ተከናውኗል"</string> + <string name="keyboardview_keycode_mode_change" msgid="4547387741906537519">"ሞድ ለውጥ"</string> + <string name="keyboardview_keycode_shift" msgid="2270748814315147690">"ቀይር"</string> + <string name="keyboardview_keycode_enter" msgid="2985864015076059467">"አስገባ"</string> + <string name="description_target_unlock" msgid="2228524900439801453">"ክፈት"</string> + <string name="description_target_camera" msgid="969071997552486814">"ካሜራ"</string> + <string name="description_target_silent" msgid="893551287746522182">"ፀጥታ"</string> + <string name="description_target_soundon" msgid="30052466675500172">"ድምፅ አብራ"</string> + <string name="description_target_search" msgid="3091587249776033139">"ፈልግ"</string> + <string name="description_direction_up" msgid="7169032478259485180">"ለ<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> ወደ ላይ አንሸራትት።"</string> + <string name="description_direction_down" msgid="5087739728639014595">"ለ<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> ወደ ታች አንሸራትት።"</string> + <string name="description_direction_left" msgid="7207478719805562165">"ለ<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> ወደ ግራ አንሸራትት።"</string> + <string name="description_direction_right" msgid="8034433242579600980">"ለ<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> ወደ ቀኝ አንሸራትት።"</string> + <string name="user_switched" msgid="3768006783166984410">"የአሁኑ ተጠቃሚ <xliff:g id="NAME">%1$s</xliff:g>።"</string> + <string name="kg_emergency_call_label" msgid="684946192523830531">"የአደጋ ጊዜ ጥሪ"</string> + <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"ስርዓተ ጥለቱን እርሳ"</string> + <string name="kg_wrong_pattern" msgid="1850806070801358830">"የተሳሳተ ስርዓተ ጥለት"</string> + <string name="kg_wrong_password" msgid="2333281762128113157">"የተሳሳተ ይለፍ ቃል"</string> + <string name="kg_wrong_pin" msgid="1131306510833563801">"የተሳሳተ ፒን"</string> + <string name="kg_too_many_failed_attempts_countdown" msgid="6358110221603297548">"በ<xliff:g id="NUMBER">%d</xliff:g> ሰከንዶች ውስጥ እንደገና ይሞክሩ።"</string> + <string name="kg_pattern_instructions" msgid="398978611683075868">"ስርዓተ ጥለትዎን ይሳሉ"</string> + <string name="kg_sim_pin_instructions" msgid="2319508550934557331">"የሲም ፒን ያስገቡ"</string> + <string name="kg_pin_instructions" msgid="2377242233495111557">"ፒን ያስገቡ"</string> + <string name="kg_password_instructions" msgid="5753646556186936819">"የይለፍ ቃል ያስገቡ"</string> + <string name="kg_puk_enter_puk_hint" msgid="453227143861735537">"ሲም አሁን ተሰናክሏል። ለመቀጠል የPUK ኮድ ያስገቡ። ለዝርዝር ድምጸ ተያያዥ ሞደምን ያግኙ።"</string> + <string name="kg_puk_enter_pin_hint" msgid="7871604527429602024">"የተፈለገውን የፒን ኮድ ያስገቡ"</string> + <string name="kg_enter_confirm_pin_hint" msgid="325676184762529976">"የተፈለገውን የፒን ኮድ ያረጋግጡ"</string> + <string name="kg_sim_unlock_progress_dialog_message" msgid="8950398016976865762">"ሲም ካርዱን በመክፈት ላይ…"</string> + <string name="kg_password_wrong_pin_code" msgid="1139324887413846912">"ትክክል ያልሆነ ፒን ኮድ።"</string> + <string name="kg_invalid_sim_pin_hint" msgid="8795159358110620001">"ከ4 እስከ 8 ቁጥሮች የያዘ ፒን ይተይቡ።"</string> + <string name="kg_invalid_sim_puk_hint" msgid="7553388325654369575">"የPUK ኮድ 8 ወይም ከዚያ በላይ ቁጥሮች ሊኖረው ይገባል።"</string> + <string name="kg_invalid_puk" msgid="3638289409676051243">"ትክክለኛውን የPUK ኮድ እንደገና ያስገቡ። ተደጋጋሚ ሙከራዎች ሲም ካርዱን እስከመጨረሻው ያሰናክሉታል።"</string> + <string name="kg_invalid_confirm_pin_hint" product="default" msgid="7003469261464593516">"ፒን ኮዶች አይገጣጠሙም"</string> + <string name="kg_login_too_many_attempts" msgid="6486842094005698475">"በጣም ብዙ የስርዓተ ጥለት ሙከራዎች"</string> + <string name="kg_login_instructions" msgid="1100551261265506448">"ለመክፈት በGoogle መለያዎ ይግቡ።"</string> + <string name="kg_login_username_hint" msgid="5718534272070920364">"የተጠቃሚ ስም (ኢሜይል)"</string> + <string name="kg_login_password_hint" msgid="9057289103827298549">"የይለፍ ቃል"</string> + <string name="kg_login_submit_button" msgid="5355904582674054702">"ግባ"</string> + <string name="kg_login_invalid_input" msgid="5754664119319872197">"ልክ ያልሆነ የተጠቃሚ ስም ወይም የይለፍ ቃል።"</string> + <string name="kg_login_account_recovery_hint" msgid="5690709132841752974">"የተጠቃሚ ስምዎን ወይም የይለፍ ቃልዎን ረሱት?"\n<b>"google.com/accounts/recovery"</b>"ይጎብኙ።"</string> + <string name="kg_login_checking_password" msgid="1052685197710252395">"መለያውን በማረጋገጥ ላይ…"</string> + <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="8276745642049502550">"ፒንዎን <xliff:g id="NUMBER_0">%d</xliff:g> ጊዜ በትክክል አልተየቡም። "\n\n"በ<xliff:g id="NUMBER_1">%d</xliff:g> ሰኮንዶች ውስጥ እንደገና ይሞክሩ።"</string> + <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="7813713389422226531">"የይለፍ ቃልዎን <xliff:g id="NUMBER_0">%d</xliff:g> ጊዜ ትክክል ባልሆነ መንገድ ተይበዋል።"\n\n"በ<xliff:g id="NUMBER_1">%d</xliff:g> ሰኮንዶች ውስጥ እንደገና ይሞክሩ።"</string> + <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="74089475965050805">"የመክፈቻ ስርዓተ ጥለትዎን <xliff:g id="NUMBER_0">%d</xliff:g> ጊዜ በትክክል አልሳሉትም። "\n\n" ከ<xliff:g id="NUMBER_1">%d</xliff:g> ሰከንዶች በኋላ እንደገና ይሞክሩ።"</string> + <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="1575557200627128949">"ጡባዊ ቱኮውን <xliff:g id="NUMBER_0">%d</xliff:g> ጊዜ ትክክል ባልሆነ መንገድ ለመክፈት ሞክረዋል። ከ<xliff:g id="NUMBER_1">%d</xliff:g> ተጨማሪ ያልተሳኩ ሙከራዎች በኋላ ጡባዊ ቱኮው በፋብሪካ ነባሪ ቅንብር ዳግም ይጀመርና ሁሉም የተጠቃሚ ውሂብ ይጠፋል።"</string> + <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="4051015943038199910">"ስልኩን <xliff:g id="NUMBER_0">%d</xliff:g> ጊዜ ትክክል ባልሆነ መንገድ ለመክፈት ሞክረዋል። ከ<xliff:g id="NUMBER_1">%d</xliff:g> ተጨማሪ ያልተሳኩ ሙከራዎች በኋላ ስልኩ በፋብሪካ ነባሪ ቅንብር ዳግም ይጀመርና ሁሉም የተጠቃሚ ውሂብ ይጠፋል።"</string> + <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2072996269148483637">"ጡባዊ ቱኮዎን <xliff:g id="NUMBER">%d</xliff:g> ጊዜ ትክክል ባልሆነ መንገድ ለመክፈት ሞክረዋል። ጡባዊ ቱኮዎ አሁን በፋብሪካ ነባሪ ቅንብር ዳግም ይጀመራል።"</string> + <string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"ስልኩን <xliff:g id="NUMBER">%d</xliff:g> ጊዜ ትክክል ባልሆነ መንገድ ለመክፈት ሞክረዋል። ስልኩ አሁን በፋብሪካ ነባሪ ቅንብር ዳግም ይጀመራል።"</string> + <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"የመክፈቻ ስርዓተ ጥለቱን <xliff:g id="NUMBER_0">%d</xliff:g> ጊዜ በትክክል አልሳሉትም። ከ<xliff:g id="NUMBER_1">%d</xliff:g> ተጨማሪ ያልተሳኩ ሙከራዎች በኋላ የኢሜይል መለያ ተጠቅመው ጡባዊ ቱኮዎን እንዲከፍቱ ይጠየቃሉ።"\n\n" ከ<xliff:g id="NUMBER_2">%d</xliff:g> ከሰከንዶች በኋላ እንደገና ይሞክሩ።"</string> + <string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"የመክፈቻ ስርዓተ ጥለቱን <xliff:g id="NUMBER_0">%d</xliff:g> ጊዜ በትክክል አልሳሉትም። ከ<xliff:g id="NUMBER_1">%d</xliff:g> ተጨማሪ ያልተሳኩ ሙከራዎች በኋላ የኢሜይል መለያ ተጠቅመው ስልክዎን እንዲከፍቱ ይጠየቃሉ።"\n\n"እባክዎ ከ<xliff:g id="NUMBER_2">%d</xliff:g> ሰከንዶች በኋላ እንደገና ይሞክሩ።"</string> + <string name="kg_text_message_separator" product="default" msgid="4160700433287233771">" — "</string> + <string name="kg_reordering_delete_drop_target_text" msgid="7899202978204438708">"አስወግድ"</string> + <!-- no translation found for keyguard_transport_prev_description (8229108430245669854) --> + <skip /> + <!-- no translation found for keyguard_transport_next_description (4299258300283778305) --> + <skip /> + <!-- no translation found for keyguard_transport_pause_description (5093073338238310224) --> + <skip /> + <!-- no translation found for keyguard_transport_play_description (2924628863741150956) --> + <skip /> + <!-- no translation found for keyguard_transport_stop_description (3084179324810575787) --> + <skip /> + <!-- no translation found for keyguard_carrier_default (8700650403054042153) --> + <skip /> +</resources> diff --git a/packages/Keyguard/res/values-ar/strings.xml b/packages/Keyguard/res/values-ar/strings.xml new file mode 100644 index 000000000000..145475892222 --- /dev/null +++ b/packages/Keyguard/res/values-ar/strings.xml @@ -0,0 +1,164 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* //device/apps/common/assets/res/any/strings.xml +** +** Copyright 2006, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="keyguard_password_enter_pin_code" msgid="3037685796058495017">"اكتب رمز رقم التعريف الشخصي"</string> + <string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"اكتب رمز PUK ورمز رقم التعريف الشخصي الجديد"</string> + <string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"رمز PUK"</string> + <string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"رمز رقم التعريف الشخصي الجديد"</string> + <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"المس لكتابة كلمة المرور"</font></string> + <string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"اكتب كلمة المرور لإلغاء التأمين"</string> + <string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"اكتب رقم التعريف الشخصي لإلغاء التأمين"</string> + <string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"رقم التعريف الشخصي غير صحيح."</string> + <string name="keyguard_label_text" msgid="861796461028298424">"لإلغاء التأمين، اضغط على \"القائمة\" ثم على 0."</string> + <string name="faceunlock_multiple_failures" msgid="754137583022792429">"تم تجاوز الحد الأقصى لعدد محاولات تأمين الجهاز بالوجه"</string> + <!-- no translation found for keyguard_charged (3272223906073492454) --> + <skip /> + <!-- no translation found for keyguard_plugged_in (8117572000639998388) --> + <skip /> + <!-- no translation found for keyguard_low_battery (8143808018719173859) --> + <skip /> + <!-- no translation found for keyguard_instructions_when_pattern_disabled (1332288268600329841) --> + <skip /> + <!-- no translation found for keyguard_network_locked_message (9169717779058037168) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message_short (494980561304211931) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (1445849005909260039) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (3481110395508637643) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions (5210891509995942250) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions_long (5968985489463870358) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_message_short (8340813989586622356) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5892940909699723544) --> + <skip /> + <!-- no translation found for keyguard_sim_locked_message (6875773413306380902) --> + <skip /> + <!-- no translation found for keyguard_sim_puk_locked_message (3747232467471801633) --> + <skip /> + <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (7975221805033614426) --> + <skip /> + <string name="keyguard_accessibility_widget_changed" msgid="5678624624681400191">"%1$s. الأداة %2$d من %3$d."</string> + <string name="keyguard_accessibility_add_widget" msgid="8273277058724924654">"إضافة أداة."</string> + <string name="keyguard_accessibility_widget_empty_slot" msgid="1281505703307930757">"فارغة"</string> + <string name="keyguard_accessibility_unlock_area_expanded" msgid="2278106022311170299">"تم توسيع منطقة إلغاء القفل."</string> + <string name="keyguard_accessibility_unlock_area_collapsed" msgid="6366992066936076396">"تم تصغير منطقة إلغاء القفل."</string> + <string name="keyguard_accessibility_widget" msgid="6527131039741808240">"أداة <xliff:g id="WIDGET_INDEX">%1$s</xliff:g>."</string> + <string name="keyguard_accessibility_user_selector" msgid="1226798370913698896">"محدد المستخدم"</string> + <string name="keyguard_accessibility_status" msgid="8008264603935930611">"الحالة"</string> + <string name="keyguard_accessibility_camera" msgid="8904231194181114603">"الكاميرا"</string> + <string name="keygaurd_accessibility_media_controls" msgid="262209654292161806">"أدوات التحكم في الوسائط"</string> + <string name="keyguard_accessibility_widget_reorder_start" msgid="8736853615588828197">"بدأت إعادة ترتيب الأدوات."</string> + <string name="keyguard_accessibility_widget_reorder_end" msgid="7170190950870468320">"انتهت إعادة ترتيب الأدوات."</string> + <string name="keyguard_accessibility_widget_deleted" msgid="4426204263929224434">"تم حذف أداة <xliff:g id="WIDGET_INDEX">%1$s</xliff:g>."</string> + <string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"توسيع منطقة إلغاء القفل."</string> + <string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"إلغاء القفل باستخدام التمرير."</string> + <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"إلغاء القفل باستخدام النقش."</string> + <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"تأمين الجهاز بالوجه."</string> + <string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"إلغاء القفل باستخدام رقم التعريف الشخصي."</string> + <string name="keyguard_accessibility_password_unlock" msgid="7675777623912155089">"إلغاء القفل باستخدام كلمة المرور."</string> + <string name="keyguard_accessibility_pattern_area" msgid="7679891324509597904">"منطقة النقش."</string> + <string name="keyguard_accessibility_slide_area" msgid="6736064494019979544">"منطقة التمرير."</string> + <!-- no translation found for keyguard_accessibility_transport_prev_description (1337286538318543555) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_next_description (7073928300444909320) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_pause_description (8455979545295224302) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_play_description (8146417789511154044) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_stop_description (7656358482980912216) --> + <skip /> + <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> + <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ب ت ث"</string> + <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> + <string name="keyboardview_keycode_alt" msgid="4856868820040051939">"Alt"</string> + <string name="keyboardview_keycode_cancel" msgid="1203984017245783244">"إلغاء"</string> + <string name="keyboardview_keycode_delete" msgid="3337914833206635744">"حذف"</string> + <string name="keyboardview_keycode_done" msgid="1992571118466679775">"تم"</string> + <string name="keyboardview_keycode_mode_change" msgid="4547387741906537519">"تغيير الوضع"</string> + <string name="keyboardview_keycode_shift" msgid="2270748814315147690">"العالي"</string> + <string name="keyboardview_keycode_enter" msgid="2985864015076059467">"Enter"</string> + <string name="description_target_unlock" msgid="2228524900439801453">"إلغاء تأمين"</string> + <string name="description_target_camera" msgid="969071997552486814">"الكاميرا"</string> + <string name="description_target_silent" msgid="893551287746522182">"صامت"</string> + <string name="description_target_soundon" msgid="30052466675500172">"تشغيل الصوت"</string> + <string name="description_target_search" msgid="3091587249776033139">"بحث"</string> + <string name="description_direction_up" msgid="7169032478259485180">"تمرير لأعلى لـ <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_down" msgid="5087739728639014595">"تمرير لأسفل لـ <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_left" msgid="7207478719805562165">"تمرير لليسار لـ <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_right" msgid="8034433242579600980">"تمرير لليمين لـ <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="user_switched" msgid="3768006783166984410">"المستخدم الحالي <xliff:g id="NAME">%1$s</xliff:g>."</string> + <string name="kg_emergency_call_label" msgid="684946192523830531">"الاتصال بالطوارئ"</string> + <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"نسيت النقش"</string> + <string name="kg_wrong_pattern" msgid="1850806070801358830">"نقش خاطئ"</string> + <string name="kg_wrong_password" msgid="2333281762128113157">"كلمة مرور خاطئة"</string> + <string name="kg_wrong_pin" msgid="1131306510833563801">"رقم تعريف شخصي خاطئ"</string> + <string name="kg_too_many_failed_attempts_countdown" msgid="6358110221603297548">"حاول مرة أخرى خلال <xliff:g id="NUMBER">%d</xliff:g> ثانية."</string> + <string name="kg_pattern_instructions" msgid="398978611683075868">"ارسم نقشك"</string> + <string name="kg_sim_pin_instructions" msgid="2319508550934557331">"أدخل رقم التعريف الشخصي لبطاقة SIM"</string> + <string name="kg_pin_instructions" msgid="2377242233495111557">"أدخل رقم التعريف الشخصي"</string> + <string name="kg_password_instructions" msgid="5753646556186936819">"أدخل كلمة المرور"</string> + <string name="kg_puk_enter_puk_hint" msgid="453227143861735537">"بطاقة SIM معطلة الآن. أدخل رمز PUK للمتابعة. اتصل بمشغل شبكة الجوال للاطلاع على التفاصيل."</string> + <string name="kg_puk_enter_pin_hint" msgid="7871604527429602024">"إدخال رمز رقم التعريف الشخصي المراد"</string> + <string name="kg_enter_confirm_pin_hint" msgid="325676184762529976">"تأكيد رمز رقم التعريف الشخصي المراد"</string> + <string name="kg_sim_unlock_progress_dialog_message" msgid="8950398016976865762">"جارٍ إلغاء تأمين بطاقة SIM…"</string> + <string name="kg_password_wrong_pin_code" msgid="1139324887413846912">"رقم التعريف الشخصي غير صحيح."</string> + <string name="kg_invalid_sim_pin_hint" msgid="8795159358110620001">"اكتب رقم التعريف الشخصي المكون من 4 إلى 8 أرقام."</string> + <string name="kg_invalid_sim_puk_hint" msgid="7553388325654369575">"يجب أن يتضمن رمز PUK 8 أرقام أو أكثر."</string> + <string name="kg_invalid_puk" msgid="3638289409676051243">"أعد إدخال رمز PUK الصحيح. وستؤدي المحاولات المتكررة إلى تعطيل بطاقة SIM نهائيًا."</string> + <string name="kg_invalid_confirm_pin_hint" product="default" msgid="7003469261464593516">"لا يتطابق رمزا رقم التعريف الشخصي"</string> + <string name="kg_login_too_many_attempts" msgid="6486842094005698475">"محاولات النقش كثيرة جدًا"</string> + <string name="kg_login_instructions" msgid="1100551261265506448">"لإلغاء التأمين، سجّل الدخول بحسابك في Google."</string> + <string name="kg_login_username_hint" msgid="5718534272070920364">"اسم المستخدم (البريد إلكتروني)"</string> + <string name="kg_login_password_hint" msgid="9057289103827298549">"كلمة المرور"</string> + <string name="kg_login_submit_button" msgid="5355904582674054702">"تسجيل الدخول"</string> + <string name="kg_login_invalid_input" msgid="5754664119319872197">"اسم مستخدم غير صحيح أو كلمة مرور غير صالحة."</string> + <string name="kg_login_account_recovery_hint" msgid="5690709132841752974">"هل نسيت اسم المستخدم أو كلمة المرور؟"\n"انتقل إلى "<b>"google.com/accounts/recovery"</b>"."</string> + <string name="kg_login_checking_password" msgid="1052685197710252395">"جارٍ فحص الحساب…"</string> + <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="8276745642049502550">"لقد كتبت رقم التعريف الشخصي بشكل غير صحيح <xliff:g id="NUMBER_0">%d</xliff:g> مرة. "\n\n"أعد المحاولة خلال <xliff:g id="NUMBER_1">%d</xliff:g> ثانية."</string> + <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="7813713389422226531">"لقد كتبت كلمة المرور بشكل غير صحيح <xliff:g id="NUMBER_0">%d</xliff:g> مرة. "\n\n"أعد المحاولة خلال <xliff:g id="NUMBER_1">%d</xliff:g> ثانية."</string> + <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="74089475965050805">"لقد رسمت نقش إلغاء التأمين بطريقة غير صحيحة <xliff:g id="NUMBER_0">%d</xliff:g> مرة. "\n\n"أعد المحاولة خلال <xliff:g id="NUMBER_1">%d</xliff:g> ثانية."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="1575557200627128949">"لقد حاولت إلغاء تأمين الجهاز اللوحي بشكل غير صحيح <xliff:g id="NUMBER_0">%d</xliff:g> مرة. بعد إجراء <xliff:g id="NUMBER_1">%d</xliff:g> من المحاولات غير الناجحة الأخرى، ستتم إعادة تعيين الجهاز اللوحي على الإعدادات الافتراضية للمصنع وسيتم فقد جميع بيانات المستخدم."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="4051015943038199910">"لقد حاولت إلغاء تأمين الهاتف بشكل غير صحيح <xliff:g id="NUMBER_0">%d</xliff:g> مرة. بعد إجراء <xliff:g id="NUMBER_1">%d</xliff:g> من المحاولات غير الناجحة الأخرى، ستتم إعادة تعيين الهاتف على الإعدادات الافتراضية للمصنع وسيتم فقد جميع بيانات المستخدم."</string> + <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2072996269148483637">"لقد حاولت إلغاء تأمين الجهاز اللوحي بشكل غير صحيح <xliff:g id="NUMBER">%d</xliff:g> مرة. سيتم الآن إعادة تعيين الجهاز اللوحي على الإعدادات الافتراضية للمصنع."</string> + <string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"لقد حاولت إلغاء تأمين الهاتف بشكل غير صحيح <xliff:g id="NUMBER">%d</xliff:g> مرة. سيتم الآن إعادة تعيين الهاتف على الإعدادات الافتراضية للمصنع."</string> + <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"لقد رسمت نقش إلغاء التأمين بشكل غير صحيح <xliff:g id="NUMBER_0">%d</xliff:g> مرة. بعد إجراء <xliff:g id="NUMBER_1">%d</xliff:g> من المحاولات غير الناجحة الأخرى، ستطالَب بإلغاء تأمين الجهاز اللوحي باستخدام معلومات حساب بريد إلكتروني."\n\n" أعد المحاولة خلال <xliff:g id="NUMBER_2">%d</xliff:g> ثانية."</string> + <string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"لقد رسمت نقش إلغاء التأمين بشكل غير صحيح <xliff:g id="NUMBER_0">%d</xliff:g> مرة. بعد إجراء <xliff:g id="NUMBER_1">%d</xliff:g> من المحاولات غير الناجحة الأخرى، ستُطالب بإلغاء تأمين الهاتف باستخدام حساب بريد إلكتروني لإلغاء تأمين الهاتف."\n\n" أعد المحاولة خلال <xliff:g id="NUMBER_2">%d</xliff:g> ثانية."</string> + <string name="kg_text_message_separator" product="default" msgid="4160700433287233771">" — "</string> + <string name="kg_reordering_delete_drop_target_text" msgid="7899202978204438708">"إزالة"</string> + <!-- no translation found for keyguard_transport_prev_description (8229108430245669854) --> + <skip /> + <!-- no translation found for keyguard_transport_next_description (4299258300283778305) --> + <skip /> + <!-- no translation found for keyguard_transport_pause_description (5093073338238310224) --> + <skip /> + <!-- no translation found for keyguard_transport_play_description (2924628863741150956) --> + <skip /> + <!-- no translation found for keyguard_transport_stop_description (3084179324810575787) --> + <skip /> + <!-- no translation found for keyguard_carrier_default (8700650403054042153) --> + <skip /> +</resources> diff --git a/packages/Keyguard/res/values-be/strings.xml b/packages/Keyguard/res/values-be/strings.xml new file mode 100644 index 000000000000..b003fa43899b --- /dev/null +++ b/packages/Keyguard/res/values-be/strings.xml @@ -0,0 +1,164 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* //device/apps/common/assets/res/any/strings.xml +** +** Copyright 2006, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="keyguard_password_enter_pin_code" msgid="3037685796058495017">"Увядзіце PIN-код"</string> + <string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Увядзіце PUK-код і новы PIN-код"</string> + <string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK"</string> + <string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Новы PIN-код"</string> + <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Дакраніцеся, каб увесці пароль"</font></string> + <string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Увядзіце пароль для разблакавання"</string> + <string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Каб разблакаваць, увядзіце PIN-код"</string> + <string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Няправільны PIN-код."</string> + <string name="keyguard_label_text" msgid="861796461028298424">"Каб разблакаваць, націсніце \"Меню\", затым 0."</string> + <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Перавышана максімальная колькасць спроб разблакоўкі праз Фэйскантроль"</string> + <!-- no translation found for keyguard_charged (3272223906073492454) --> + <skip /> + <!-- no translation found for keyguard_plugged_in (8117572000639998388) --> + <skip /> + <!-- no translation found for keyguard_low_battery (8143808018719173859) --> + <skip /> + <!-- no translation found for keyguard_instructions_when_pattern_disabled (1332288268600329841) --> + <skip /> + <!-- no translation found for keyguard_network_locked_message (9169717779058037168) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message_short (494980561304211931) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (1445849005909260039) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (3481110395508637643) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions (5210891509995942250) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions_long (5968985489463870358) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_message_short (8340813989586622356) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5892940909699723544) --> + <skip /> + <!-- no translation found for keyguard_sim_locked_message (6875773413306380902) --> + <skip /> + <!-- no translation found for keyguard_sim_puk_locked_message (3747232467471801633) --> + <skip /> + <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (7975221805033614426) --> + <skip /> + <string name="keyguard_accessibility_widget_changed" msgid="5678624624681400191">"%1$s. ВIджэт %2$d з %3$d."</string> + <string name="keyguard_accessibility_add_widget" msgid="8273277058724924654">"Дадаць віджэт"</string> + <string name="keyguard_accessibility_widget_empty_slot" msgid="1281505703307930757">"Пусты"</string> + <string name="keyguard_accessibility_unlock_area_expanded" msgid="2278106022311170299">"Вобласць разблакіроўкі разгарнута."</string> + <string name="keyguard_accessibility_unlock_area_collapsed" msgid="6366992066936076396">"Вобласць разблакіроўкі згарнута."</string> + <string name="keyguard_accessibility_widget" msgid="6527131039741808240">"Віджэт <xliff:g id="WIDGET_INDEX">%1$s</xliff:g>."</string> + <string name="keyguard_accessibility_user_selector" msgid="1226798370913698896">"Селектар карыстальнiка"</string> + <string name="keyguard_accessibility_status" msgid="8008264603935930611">"Стан"</string> + <string name="keyguard_accessibility_camera" msgid="8904231194181114603">"Камера"</string> + <string name="keygaurd_accessibility_media_controls" msgid="262209654292161806">"Налады мультымедыя"</string> + <string name="keyguard_accessibility_widget_reorder_start" msgid="8736853615588828197">"Змяненне парадку віджэтаў пачалося."</string> + <string name="keyguard_accessibility_widget_reorder_end" msgid="7170190950870468320">"Змяненне парадку віджэтаў скончылася."</string> + <string name="keyguard_accessibility_widget_deleted" msgid="4426204263929224434">"Віджэт <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> выдалены."</string> + <string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"Разгарнуць вобласць разблакіроўкі."</string> + <string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"Разблакiроўка слайда."</string> + <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"Узор разблакiроўкі."</string> + <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"Фэйскантроль"</string> + <string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"PIN-код разблакiроўкі."</string> + <string name="keyguard_accessibility_password_unlock" msgid="7675777623912155089">"Пароль разблакiроўкі."</string> + <string name="keyguard_accessibility_pattern_area" msgid="7679891324509597904">"Вобласць узора."</string> + <string name="keyguard_accessibility_slide_area" msgid="6736064494019979544">"Вобласць слайда."</string> + <!-- no translation found for keyguard_accessibility_transport_prev_description (1337286538318543555) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_next_description (7073928300444909320) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_pause_description (8455979545295224302) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_play_description (8146417789511154044) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_stop_description (7656358482980912216) --> + <skip /> + <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"123"</string> + <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string> + <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"Alt"</string> + <string name="keyboardview_keycode_alt" msgid="4856868820040051939">"Alt"</string> + <string name="keyboardview_keycode_cancel" msgid="1203984017245783244">"Адмена"</string> + <string name="keyboardview_keycode_delete" msgid="3337914833206635744">"Выдаліць"</string> + <string name="keyboardview_keycode_done" msgid="1992571118466679775">"Гатова"</string> + <string name="keyboardview_keycode_mode_change" msgid="4547387741906537519">"Змена рэжыму"</string> + <string name="keyboardview_keycode_shift" msgid="2270748814315147690">"Shift"</string> + <string name="keyboardview_keycode_enter" msgid="2985864015076059467">"Enter"</string> + <string name="description_target_unlock" msgid="2228524900439801453">"Разблакаваць"</string> + <string name="description_target_camera" msgid="969071997552486814">"Камера"</string> + <string name="description_target_silent" msgid="893551287746522182">"Ціхі рэжым"</string> + <string name="description_target_soundon" msgid="30052466675500172">"Гук уключаны"</string> + <string name="description_target_search" msgid="3091587249776033139">"Пошук"</string> + <string name="description_direction_up" msgid="7169032478259485180">"Правядзіце пальцам уверх, каб атрымаць <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_down" msgid="5087739728639014595">"Правядзіце пальцам уніз, каб атрымаць <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_left" msgid="7207478719805562165">"Правядзіце пальцам улева, каб атрымаць <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_right" msgid="8034433242579600980">"Правядзіце пальцам управа, каб атрымаць <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="user_switched" msgid="3768006783166984410">"Бягучы карыстальнік <xliff:g id="NAME">%1$s</xliff:g>."</string> + <string name="kg_emergency_call_label" msgid="684946192523830531">"Экстранны выклік"</string> + <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Забылі ключ"</string> + <string name="kg_wrong_pattern" msgid="1850806070801358830">"Няправільна ключ"</string> + <string name="kg_wrong_password" msgid="2333281762128113157">"Няправiльны пароль"</string> + <string name="kg_wrong_pin" msgid="1131306510833563801">"Няправільны PIN-код"</string> + <string name="kg_too_many_failed_attempts_countdown" msgid="6358110221603297548">"Паўтарыце спробу праз <xliff:g id="NUMBER">%d</xliff:g> с."</string> + <string name="kg_pattern_instructions" msgid="398978611683075868">"Намалюйце ключ"</string> + <string name="kg_sim_pin_instructions" msgid="2319508550934557331">"Увядзіце PIN-код SIM-карты"</string> + <string name="kg_pin_instructions" msgid="2377242233495111557">"Увядзіце PIN-код"</string> + <string name="kg_password_instructions" msgid="5753646556186936819">"Увядзіце пароль"</string> + <string name="kg_puk_enter_puk_hint" msgid="453227143861735537">"SIM-карта зараз адключана. Увядзіце PUK-код, каб працягнуць. Звяжыцеся са сваiм аператарам, каб атрымаць дадатковую iнфармацыю."</string> + <string name="kg_puk_enter_pin_hint" msgid="7871604527429602024">"Увядзіце жаданы PIN-код"</string> + <string name="kg_enter_confirm_pin_hint" msgid="325676184762529976">"Пацвердзіце жадан PIN-код"</string> + <string name="kg_sim_unlock_progress_dialog_message" msgid="8950398016976865762">"Разблакiроўка SIM-карты..."</string> + <string name="kg_password_wrong_pin_code" msgid="1139324887413846912">"Няправільны PIN-код."</string> + <string name="kg_invalid_sim_pin_hint" msgid="8795159358110620001">"Увядзіце PIN-код, які змяшчае ад 4 да 8 лічбаў."</string> + <string name="kg_invalid_sim_puk_hint" msgid="7553388325654369575">"PUK-код павінен утрымлiваць 8 лiчбаў і больш."</string> + <string name="kg_invalid_puk" msgid="3638289409676051243">"Паўторна увядзіце правільны PUK-код. Неаднаразовыя спробы назаўжды адключаць SIM-карту."</string> + <string name="kg_invalid_confirm_pin_hint" product="default" msgid="7003469261464593516">"PIN-коды не супадаюць"</string> + <string name="kg_login_too_many_attempts" msgid="6486842094005698475">"Занадта шмат спроб паўтарыць шаблон!"</string> + <string name="kg_login_instructions" msgid="1100551261265506448">"Каб разблакiраваць, увайдзіце ў свой уліковы запіс Google."</string> + <string name="kg_login_username_hint" msgid="5718534272070920364">"Імя карыстальніка (электронная пошта)"</string> + <string name="kg_login_password_hint" msgid="9057289103827298549">"Пароль"</string> + <string name="kg_login_submit_button" msgid="5355904582674054702">"Увайсцi"</string> + <string name="kg_login_invalid_input" msgid="5754664119319872197">"Няправільнае імя карыстальніка ці пароль."</string> + <string name="kg_login_account_recovery_hint" msgid="5690709132841752974">"Забыліся на імя карыстальніка або пароль?"\n"Наведайце "<b>"google.com/accounts/recovery"</b></string> + <string name="kg_login_checking_password" msgid="1052685197710252395">"Праверка ўлiковага запiсу..."</string> + <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="8276745642049502550">"Вы няправільна ўвялі PIN-код пэўную колькасць разоў: <xliff:g id="NUMBER_0">%d</xliff:g>. "\n\n"Паўтарыце спробу праз <xliff:g id="NUMBER_1">%d</xliff:g> с."</string> + <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="7813713389422226531">"Вы няправільна ўвялі пароль пэўную колькасць разоў: <xliff:g id="NUMBER_0">%d</xliff:g>. "\n\n"Паўтарыце спробу праз <xliff:g id="NUMBER_1">%d</xliff:g> с."</string> + <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="74089475965050805">"Вы няправільна ўвялі графічны ключ разблакiроўкi пэўную колькасць разоў: <xliff:g id="NUMBER_0">%d</xliff:g>. "\n\n"Паўтарыце спробу праз <xliff:g id="NUMBER_1">%d</xliff:g> с."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="1575557200627128949">"Вы няправільна спрабавалі разблакiраваць планшэт некалькi разоў (<xliff:g id="NUMBER_0">%d</xliff:g>). Пасля яшчэ некалькiх спроб (<xliff:g id="NUMBER_1">%d</xliff:g>) ён будзе скінуты да заводскіх налад i карыстальнiцкiя дадзеныя будуць згубленыя."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="4051015943038199910">"Вы няправільна спрабавалі разблакiраваць планшэт некалькi разоў (<xliff:g id="NUMBER_0">%d</xliff:g>). Пасля яшчэ некалькiх спроб (<xliff:g id="NUMBER_1">%d</xliff:g>) ён будзе скінуты да завадскіх налад i карыстальнiцкiя дадзеныя будуць згубленыя."</string> + <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2072996269148483637">"Вы няправільна спрабавалі разблакiраваць планшэт некалькi разоў (<xliff:g id="NUMBER">%d</xliff:g>). Цяпер ён будзе скінуты да завадскіх налад."</string> + <string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"Вы няправільна спрабавалі разблакiраваць тэлефон некалькi разоў (<xliff:g id="NUMBER">%d</xliff:g>). Цяпер ён будзе скінуты да завадскіх налад."</string> + <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Вы няправільна ўвялі графічны ключ разблакiроўкi пэўную колькасць разоў: <xliff:g id="NUMBER_0">%d</xliff:g>. Пасля яшчэ некалькiх няўдалых спроб (<xliff:g id="NUMBER_1">%d</xliff:g>) вам будзе прапанавана разблакiраваць тэлефон, увайшоўшы ў Google."\n\n" Паўтарыце спробу праз <xliff:g id="NUMBER_2">%d</xliff:g> с."</string> + <string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"Вы няправільна ўвялі графічны ключ разблакiроўкi пэўную колькасць разоў: <xliff:g id="NUMBER_0">%d</xliff:g>. Пасля яшчэ некалькiх няўдалых спроб (<xliff:g id="NUMBER_1">%d</xliff:g>) вам будзе прапанавана разблакiраваць тэлефон, увайшоўшы ў Google."\n\n" Паўтарыце спробу праз <xliff:g id="NUMBER_2">%d</xliff:g> с."</string> + <string name="kg_text_message_separator" product="default" msgid="4160700433287233771">" — "</string> + <string name="kg_reordering_delete_drop_target_text" msgid="7899202978204438708">"Выдалiць"</string> + <!-- no translation found for keyguard_transport_prev_description (8229108430245669854) --> + <skip /> + <!-- no translation found for keyguard_transport_next_description (4299258300283778305) --> + <skip /> + <!-- no translation found for keyguard_transport_pause_description (5093073338238310224) --> + <skip /> + <!-- no translation found for keyguard_transport_play_description (2924628863741150956) --> + <skip /> + <!-- no translation found for keyguard_transport_stop_description (3084179324810575787) --> + <skip /> + <!-- no translation found for keyguard_carrier_default (8700650403054042153) --> + <skip /> +</resources> diff --git a/packages/Keyguard/res/values-bg/strings.xml b/packages/Keyguard/res/values-bg/strings.xml new file mode 100644 index 000000000000..c3c5905a7f61 --- /dev/null +++ b/packages/Keyguard/res/values-bg/strings.xml @@ -0,0 +1,164 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* //device/apps/common/assets/res/any/strings.xml +** +** Copyright 2006, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="keyguard_password_enter_pin_code" msgid="3037685796058495017">"Въведете ПИН кода"</string> + <string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Въведете PUK и новия ПИН код"</string> + <string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK код"</string> + <string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Нов ПИН код"</string> + <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Докоснете и въведете парола"</font></string> + <string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Въведете парола, за да отключите"</string> + <string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Въведете ПИН, за да отключите"</string> + <string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Неправилен ПИН код."</string> + <string name="keyguard_label_text" msgid="861796461028298424">"За да отключите, натиснете „Меню“ и после 0."</string> + <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Максималният брой опити за отключване с лице е надвишен"</string> + <!-- no translation found for keyguard_charged (3272223906073492454) --> + <skip /> + <!-- no translation found for keyguard_plugged_in (8117572000639998388) --> + <skip /> + <!-- no translation found for keyguard_low_battery (8143808018719173859) --> + <skip /> + <!-- no translation found for keyguard_instructions_when_pattern_disabled (1332288268600329841) --> + <skip /> + <!-- no translation found for keyguard_network_locked_message (9169717779058037168) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message_short (494980561304211931) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (1445849005909260039) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (3481110395508637643) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions (5210891509995942250) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions_long (5968985489463870358) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_message_short (8340813989586622356) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5892940909699723544) --> + <skip /> + <!-- no translation found for keyguard_sim_locked_message (6875773413306380902) --> + <skip /> + <!-- no translation found for keyguard_sim_puk_locked_message (3747232467471801633) --> + <skip /> + <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (7975221805033614426) --> + <skip /> + <string name="keyguard_accessibility_widget_changed" msgid="5678624624681400191">"%1$s. Приспособление %2$d от %3$d."</string> + <string name="keyguard_accessibility_add_widget" msgid="8273277058724924654">"Добавяне на приспособление."</string> + <string name="keyguard_accessibility_widget_empty_slot" msgid="1281505703307930757">"Празно"</string> + <string name="keyguard_accessibility_unlock_area_expanded" msgid="2278106022311170299">"Областта за отключване е разгъната."</string> + <string name="keyguard_accessibility_unlock_area_collapsed" msgid="6366992066936076396">"Областта за отключване е свита."</string> + <string name="keyguard_accessibility_widget" msgid="6527131039741808240">"Приспособление за <xliff:g id="WIDGET_INDEX">%1$s</xliff:g>."</string> + <string name="keyguard_accessibility_user_selector" msgid="1226798370913698896">"Инструмент за избор на потребители"</string> + <string name="keyguard_accessibility_status" msgid="8008264603935930611">"Състояние"</string> + <string name="keyguard_accessibility_camera" msgid="8904231194181114603">"Камера"</string> + <string name="keygaurd_accessibility_media_controls" msgid="262209654292161806">"Контроли за мултимедията"</string> + <string name="keyguard_accessibility_widget_reorder_start" msgid="8736853615588828197">"Пренареждането на приспособленията започна."</string> + <string name="keyguard_accessibility_widget_reorder_end" msgid="7170190950870468320">"Пренареждането на приспособленията завърши."</string> + <string name="keyguard_accessibility_widget_deleted" msgid="4426204263929224434">"Приспособлението за <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> е изтрито."</string> + <string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"Разгъване на областта за отключване."</string> + <string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"Отключване с плъзгане."</string> + <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"Отключване с фигура."</string> + <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"Отключване с лице."</string> + <string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"Отключване с ПИН код."</string> + <string name="keyguard_accessibility_password_unlock" msgid="7675777623912155089">"Отключване с парола."</string> + <string name="keyguard_accessibility_pattern_area" msgid="7679891324509597904">"Област на фигурата."</string> + <string name="keyguard_accessibility_slide_area" msgid="6736064494019979544">"Област на плъзгане."</string> + <!-- no translation found for keyguard_accessibility_transport_prev_description (1337286538318543555) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_next_description (7073928300444909320) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_pause_description (8455979545295224302) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_play_description (8146417789511154044) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_stop_description (7656358482980912216) --> + <skip /> + <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> + <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"АБВ"</string> + <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> + <string name="keyboardview_keycode_alt" msgid="4856868820040051939">"Alt"</string> + <string name="keyboardview_keycode_cancel" msgid="1203984017245783244">"Отказ"</string> + <string name="keyboardview_keycode_delete" msgid="3337914833206635744">"Изтриване"</string> + <string name="keyboardview_keycode_done" msgid="1992571118466679775">"Готово"</string> + <string name="keyboardview_keycode_mode_change" msgid="4547387741906537519">"Промяна на режима"</string> + <string name="keyboardview_keycode_shift" msgid="2270748814315147690">"Shift"</string> + <string name="keyboardview_keycode_enter" msgid="2985864015076059467">"Enter"</string> + <string name="description_target_unlock" msgid="2228524900439801453">"Отключване"</string> + <string name="description_target_camera" msgid="969071997552486814">"Камера"</string> + <string name="description_target_silent" msgid="893551287746522182">"Тих режим"</string> + <string name="description_target_soundon" msgid="30052466675500172">"Включване на звука"</string> + <string name="description_target_search" msgid="3091587249776033139">"Търсене"</string> + <string name="description_direction_up" msgid="7169032478259485180">"Плъзнете нагоре за <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_down" msgid="5087739728639014595">"Плъзнете надолу за <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_left" msgid="7207478719805562165">"Плъзнете наляво за <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_right" msgid="8034433242579600980">"Плъзнете надясно за <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="user_switched" msgid="3768006783166984410">"Текущ потребител <xliff:g id="NAME">%1$s</xliff:g>."</string> + <string name="kg_emergency_call_label" msgid="684946192523830531">"Спешно обаждане"</string> + <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Забравена фигура"</string> + <string name="kg_wrong_pattern" msgid="1850806070801358830">"Грешна фигура"</string> + <string name="kg_wrong_password" msgid="2333281762128113157">"Грешна парола"</string> + <string name="kg_wrong_pin" msgid="1131306510833563801">"Грешен ПИН код"</string> + <string name="kg_too_many_failed_attempts_countdown" msgid="6358110221603297548">"Опитайте отново след <xliff:g id="NUMBER">%d</xliff:g> секунди."</string> + <string name="kg_pattern_instructions" msgid="398978611683075868">"Начертайте фигурата си"</string> + <string name="kg_sim_pin_instructions" msgid="2319508550934557331">"Въведете ПИН кода за SIM картата"</string> + <string name="kg_pin_instructions" msgid="2377242233495111557">"Въведете ПИН код"</string> + <string name="kg_password_instructions" msgid="5753646556186936819">"Въведете паролата"</string> + <string name="kg_puk_enter_puk_hint" msgid="453227143861735537">"SIM картата вече е деактивирана. Въведете PUK кода, за да продължите. Свържете се с оператора за подробности."</string> + <string name="kg_puk_enter_pin_hint" msgid="7871604527429602024">"Въведете желания ПИН код"</string> + <string name="kg_enter_confirm_pin_hint" msgid="325676184762529976">"Потвърдете желания ПИН код"</string> + <string name="kg_sim_unlock_progress_dialog_message" msgid="8950398016976865762">"SIM картата се отключва…"</string> + <string name="kg_password_wrong_pin_code" msgid="1139324887413846912">"Неправилен ПИН код."</string> + <string name="kg_invalid_sim_pin_hint" msgid="8795159358110620001">"Въведете ПИН код с четири до осем цифри."</string> + <string name="kg_invalid_sim_puk_hint" msgid="7553388325654369575">"PUK кодът трябва да е с 8 или повече цифри."</string> + <string name="kg_invalid_puk" msgid="3638289409676051243">"Въведете отново правилния PUK код. Многократните опити ще деактивират за постоянно SIM картата."</string> + <string name="kg_invalid_confirm_pin_hint" product="default" msgid="7003469261464593516">"ПИН кодовете не съвпадат"</string> + <string name="kg_login_too_many_attempts" msgid="6486842094005698475">"Опитите за фигурата са твърде много"</string> + <string name="kg_login_instructions" msgid="1100551261265506448">"За да отключите, влезте с профила си в Google."</string> + <string name="kg_login_username_hint" msgid="5718534272070920364">"Потребителско име (имейл)"</string> + <string name="kg_login_password_hint" msgid="9057289103827298549">"Парола"</string> + <string name="kg_login_submit_button" msgid="5355904582674054702">"Вход"</string> + <string name="kg_login_invalid_input" msgid="5754664119319872197">"Невалидно потребителско име или парола."</string> + <string name="kg_login_account_recovery_hint" msgid="5690709132841752974">"Забравили сте потребителското име или паролата си?"\n"Посетете "<b>"google.com/accounts/recovery"</b>"."</string> + <string name="kg_login_checking_password" msgid="1052685197710252395">"Профилът се проверява…"</string> + <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="8276745642049502550">"Въведохте неправилно ПИН кода си <xliff:g id="NUMBER_0">%d</xliff:g> пъти. "\n\n"Опитайте отново след <xliff:g id="NUMBER_1">%d</xliff:g> секунди."</string> + <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="7813713389422226531">"Въведохте неправилно паролата си <xliff:g id="NUMBER_0">%d</xliff:g> пъти. "\n\n"Опитайте отново след <xliff:g id="NUMBER_1">%d</xliff:g> секунди."</string> + <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="74089475965050805">"Начертахте неправилно фигурата си за отключване <xliff:g id="NUMBER_0">%d</xliff:g> пъти. "\n\n"Опитайте отново след <xliff:g id="NUMBER_1">%d</xliff:g> секунди."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="1575557200627128949">"Направихте опит да отключите неправилно таблета <xliff:g id="NUMBER_0">%d</xliff:g> пъти. След още <xliff:g id="NUMBER_1">%d</xliff:g> неуспешни опита ще бъдат възстановени стандартните му фабрични настройки и всички потребителски данни ще бъдат заличени."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="4051015943038199910">"Направихте опит да отключите неправилно телефона <xliff:g id="NUMBER_0">%d</xliff:g> пъти. След още <xliff:g id="NUMBER_1">%d</xliff:g> неуспешни опита ще бъдат възстановени стандартните му фабрични настройки и всички потребителски данни ще бъдат заличени."</string> + <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2072996269148483637">"Направихте опит да отключите неправилно таблета <xliff:g id="NUMBER">%d</xliff:g> пъти. Сега ще бъдат възстановени стандартните му фабрични настройки."</string> + <string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"Направихте опит да отключите неправилно телефона <xliff:g id="NUMBER">%d</xliff:g> пъти. Сега ще бъдат възстановени стандартните му фабрични настройки."</string> + <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Начертахте неправилно фигурата си за отключване <xliff:g id="NUMBER_0">%d</xliff:g> пъти. След още <xliff:g id="NUMBER_1">%d</xliff:g> неуспешни опита ще бъдете помолени да отключите таблета посредством имейл адрес."\n\n" Опитайте отново след <xliff:g id="NUMBER_2">%d</xliff:g> секунди."</string> + <string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"Начертахте неправилно фигурата си за отключване <xliff:g id="NUMBER_0">%d</xliff:g> пъти. След още <xliff:g id="NUMBER_1">%d</xliff:g> неуспешни опита ще бъдете помолени да отключите телефона посредством имейл адрес."\n\n" Опитайте отново след <xliff:g id="NUMBER_2">%d</xliff:g> секунди."</string> + <string name="kg_text_message_separator" product="default" msgid="4160700433287233771">" – "</string> + <string name="kg_reordering_delete_drop_target_text" msgid="7899202978204438708">"Премахване"</string> + <!-- no translation found for keyguard_transport_prev_description (8229108430245669854) --> + <skip /> + <!-- no translation found for keyguard_transport_next_description (4299258300283778305) --> + <skip /> + <!-- no translation found for keyguard_transport_pause_description (5093073338238310224) --> + <skip /> + <!-- no translation found for keyguard_transport_play_description (2924628863741150956) --> + <skip /> + <!-- no translation found for keyguard_transport_stop_description (3084179324810575787) --> + <skip /> + <!-- no translation found for keyguard_carrier_default (8700650403054042153) --> + <skip /> +</resources> diff --git a/packages/Keyguard/res/values-ca/strings.xml b/packages/Keyguard/res/values-ca/strings.xml new file mode 100644 index 000000000000..20e80cf72abd --- /dev/null +++ b/packages/Keyguard/res/values-ca/strings.xml @@ -0,0 +1,164 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* //device/apps/common/assets/res/any/strings.xml +** +** Copyright 2006, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="keyguard_password_enter_pin_code" msgid="3037685796058495017">"Introdueix el codi PIN"</string> + <string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Introdueix el codi PUK i el codi PIN nou"</string> + <string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"Codi PUK"</string> + <string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Codi PIN nou"</string> + <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Toca per introduir contrasenya"</font></string> + <string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Introdueix la contrasenya per desbloquejar"</string> + <string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Introdueix la contrasenya per desbloquejar"</string> + <string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Codi PIN incorrecte."</string> + <string name="keyguard_label_text" msgid="861796461028298424">"Per desbloquejar-lo, premeu Menú i després 0."</string> + <string name="faceunlock_multiple_failures" msgid="754137583022792429">"S\'ha superat el nombre màxim d\'intents de desbloqueig facial"</string> + <!-- no translation found for keyguard_charged (3272223906073492454) --> + <skip /> + <!-- no translation found for keyguard_plugged_in (8117572000639998388) --> + <skip /> + <!-- no translation found for keyguard_low_battery (8143808018719173859) --> + <skip /> + <!-- no translation found for keyguard_instructions_when_pattern_disabled (1332288268600329841) --> + <skip /> + <!-- no translation found for keyguard_network_locked_message (9169717779058037168) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message_short (494980561304211931) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (1445849005909260039) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (3481110395508637643) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions (5210891509995942250) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions_long (5968985489463870358) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_message_short (8340813989586622356) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5892940909699723544) --> + <skip /> + <!-- no translation found for keyguard_sim_locked_message (6875773413306380902) --> + <skip /> + <!-- no translation found for keyguard_sim_puk_locked_message (3747232467471801633) --> + <skip /> + <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (7975221805033614426) --> + <skip /> + <string name="keyguard_accessibility_widget_changed" msgid="5678624624681400191">"%1$s. Widget %2$d de %3$d."</string> + <string name="keyguard_accessibility_add_widget" msgid="8273277058724924654">"Afegeix un widget"</string> + <string name="keyguard_accessibility_widget_empty_slot" msgid="1281505703307930757">"Buit"</string> + <string name="keyguard_accessibility_unlock_area_expanded" msgid="2278106022311170299">"S\'ha ampliat l\'àrea de desbloqueig."</string> + <string name="keyguard_accessibility_unlock_area_collapsed" msgid="6366992066936076396">"L\'àrea de desbloqueig està replegada."</string> + <string name="keyguard_accessibility_widget" msgid="6527131039741808240">"Widget de <xliff:g id="WIDGET_INDEX">%1$s</xliff:g>."</string> + <string name="keyguard_accessibility_user_selector" msgid="1226798370913698896">"Selector d\'usuaris"</string> + <string name="keyguard_accessibility_status" msgid="8008264603935930611">"Estat"</string> + <string name="keyguard_accessibility_camera" msgid="8904231194181114603">"Càmera"</string> + <string name="keygaurd_accessibility_media_controls" msgid="262209654292161806">"Controls multimèdia"</string> + <string name="keyguard_accessibility_widget_reorder_start" msgid="8736853615588828197">"S\'ha iniciat la reorganització del widget."</string> + <string name="keyguard_accessibility_widget_reorder_end" msgid="7170190950870468320">"Ha finalitzat la reorganització del widget."</string> + <string name="keyguard_accessibility_widget_deleted" msgid="4426204263929224434">"S\'ha suprimit el widget de <xliff:g id="WIDGET_INDEX">%1$s</xliff:g>."</string> + <string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"Amplia l\'àrea de desbloqueig."</string> + <string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"Desbloqueig lliscant el dit"</string> + <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"Desbloqueig mitjançant patró"</string> + <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"Desbloqueig facial"</string> + <string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"Desbloqueig mitjançant PIN"</string> + <string name="keyguard_accessibility_password_unlock" msgid="7675777623912155089">"Desbloqueig mitjançant contrasenya"</string> + <string name="keyguard_accessibility_pattern_area" msgid="7679891324509597904">"Àrea de patró"</string> + <string name="keyguard_accessibility_slide_area" msgid="6736064494019979544">"Àrea per lliscar el dit"</string> + <!-- no translation found for keyguard_accessibility_transport_prev_description (1337286538318543555) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_next_description (7073928300444909320) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_pause_description (8455979545295224302) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_play_description (8146417789511154044) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_stop_description (7656358482980912216) --> + <skip /> + <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> + <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string> + <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> + <string name="keyboardview_keycode_alt" msgid="4856868820040051939">"Alt"</string> + <string name="keyboardview_keycode_cancel" msgid="1203984017245783244">"Cancel·la"</string> + <string name="keyboardview_keycode_delete" msgid="3337914833206635744">"Suprimeix"</string> + <string name="keyboardview_keycode_done" msgid="1992571118466679775">"Fet"</string> + <string name="keyboardview_keycode_mode_change" msgid="4547387741906537519">"Canvi de mode"</string> + <string name="keyboardview_keycode_shift" msgid="2270748814315147690">"Maj"</string> + <string name="keyboardview_keycode_enter" msgid="2985864015076059467">"Retorn"</string> + <string name="description_target_unlock" msgid="2228524900439801453">"Desbloqueja"</string> + <string name="description_target_camera" msgid="969071997552486814">"Càmera"</string> + <string name="description_target_silent" msgid="893551287746522182">"Silenci"</string> + <string name="description_target_soundon" msgid="30052466675500172">"Activa el so"</string> + <string name="description_target_search" msgid="3091587249776033139">"Cerca"</string> + <string name="description_direction_up" msgid="7169032478259485180">"Fes lliscar el dit cap amunt per <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_down" msgid="5087739728639014595">"Fes lliscar el dit cap avall per <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_left" msgid="7207478719805562165">"Fes lliscar el dit cap a l\'esquerra per <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_right" msgid="8034433242579600980">"Fes lliscar el dit cap a la dreta per <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="user_switched" msgid="3768006783166984410">"Usuari actual: <xliff:g id="NAME">%1$s</xliff:g>."</string> + <string name="kg_emergency_call_label" msgid="684946192523830531">"Trucada d\'emergència"</string> + <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Patró oblidat"</string> + <string name="kg_wrong_pattern" msgid="1850806070801358830">"Patró incorrecte"</string> + <string name="kg_wrong_password" msgid="2333281762128113157">"Contrasenya incorrecta"</string> + <string name="kg_wrong_pin" msgid="1131306510833563801">"PIN incorrecte"</string> + <string name="kg_too_many_failed_attempts_countdown" msgid="6358110221603297548">"Torna-ho a provar d\'aquí a <xliff:g id="NUMBER">%d</xliff:g> segons."</string> + <string name="kg_pattern_instructions" msgid="398978611683075868">"Dibuixa el patró"</string> + <string name="kg_sim_pin_instructions" msgid="2319508550934557331">"Introdueix el PIN de la SIM"</string> + <string name="kg_pin_instructions" msgid="2377242233495111557">"Introdueix el PIN"</string> + <string name="kg_password_instructions" msgid="5753646556186936819">"Introdueix la contrasenya"</string> + <string name="kg_puk_enter_puk_hint" msgid="453227143861735537">"La SIM està desactivada. Introdueix el codi PUK per continuar. Contacta amb l\'operador de telefonia mòbil per obtenir detalls."</string> + <string name="kg_puk_enter_pin_hint" msgid="7871604527429602024">"Introdueix el codi PIN"</string> + <string name="kg_enter_confirm_pin_hint" msgid="325676184762529976">"Confirma el codi PIN"</string> + <string name="kg_sim_unlock_progress_dialog_message" msgid="8950398016976865762">"S\'està desbloquejant la targeta SIM..."</string> + <string name="kg_password_wrong_pin_code" msgid="1139324887413846912">"Codi PIN incorrecte."</string> + <string name="kg_invalid_sim_pin_hint" msgid="8795159358110620001">"Escriu un PIN que tingui de 4 a 8 números."</string> + <string name="kg_invalid_sim_puk_hint" msgid="7553388325654369575">"El codi PUK ha de tenir 8 números o més."</string> + <string name="kg_invalid_puk" msgid="3638289409676051243">"Torna a introduir el codi PUK correcte. Els intents repetits faran que es desactivi la SIM de manera permanent."</string> + <string name="kg_invalid_confirm_pin_hint" product="default" msgid="7003469261464593516">"Els codis PIN no coincideixen"</string> + <string name="kg_login_too_many_attempts" msgid="6486842094005698475">"Massa intents incorrectes"</string> + <string name="kg_login_instructions" msgid="1100551261265506448">"Per desbloquejar el telèfon, inicia la sessió amb el compte de Google."</string> + <string name="kg_login_username_hint" msgid="5718534272070920364">"Nom d\'usuari (correu electrònic)"</string> + <string name="kg_login_password_hint" msgid="9057289103827298549">"Contrasenya"</string> + <string name="kg_login_submit_button" msgid="5355904582674054702">"Inicia la sessió"</string> + <string name="kg_login_invalid_input" msgid="5754664119319872197">"Nom d\'usuari o contrasenya no vàlids."</string> + <string name="kg_login_account_recovery_hint" msgid="5690709132841752974">"Has oblidat el teu nom d\'usuari o la contrasenya?"\n"Visita "<b>"google.com/accounts/recovery"</b>"."</string> + <string name="kg_login_checking_password" msgid="1052685197710252395">"S\'està comprovant el compte…"</string> + <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="8276745642049502550">"Has escrit malament el PIN <xliff:g id="NUMBER_0">%d</xliff:g> vegades. "\n\n"Torna-ho a provar d\'aquí a <xliff:g id="NUMBER_1">%d</xliff:g> segons."</string> + <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="7813713389422226531">"Has escrit malament la contrasenya <xliff:g id="NUMBER_0">%d</xliff:g> vegades. "\n\n"Torna-ho a provar d\'aquí a <xliff:g id="NUMBER_1">%d</xliff:g> segons."</string> + <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="74089475965050805">"Has dibuixat el patró de desbloqueig de manera incorrecta <xliff:g id="NUMBER_0">%d</xliff:g> vegades. "\n\n"Torna-ho a provar d\'aquí a <xliff:g id="NUMBER_1">%d</xliff:g> segons."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="1575557200627128949">"Has provat de desbloquejar la tauleta <xliff:g id="NUMBER_0">%d</xliff:g> vegades de manera incorrecta. D\'aquí a <xliff:g id="NUMBER_1">%d</xliff:g> intents incorrectes més, la tauleta es restablirà a la configuració predeterminada de fàbrica i es perdran totes les dades dels usuaris."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="4051015943038199910">"Has provat de desbloquejar el telèfon <xliff:g id="NUMBER_0">%d</xliff:g> vegades de manera incorrecta. D\'aquí a <xliff:g id="NUMBER_1">%d</xliff:g> intents incorrectes més, el telèfon es restablirà a la configuració predeterminada de fàbrica i es perdran totes les dades dels usuaris."</string> + <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2072996269148483637">"Has provat de desbloquejar la tauleta <xliff:g id="NUMBER">%d</xliff:g> vegades de manera incorrecta. Ara la tauleta es restablirà a la configuració predeterminada de fàbrica."</string> + <string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"Has provat de desbloquejar el telèfon <xliff:g id="NUMBER">%d</xliff:g> vegades de manera incorrecta. Ara el telèfon es restablirà a la configuració predeterminada de fàbrica."</string> + <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Has dibuixat el patró de desbloqueig <xliff:g id="NUMBER_0">%d</xliff:g> vegades de manera incorrecta. Després de <xliff:g id="NUMBER_1">%d</xliff:g> intents incorrectes més, se\'t demanarà que desbloquegis la tauleta amb un compte de correu electrònic."\n\n" Torna-ho a provar d\'aquí a <xliff:g id="NUMBER_2">%d</xliff:g> segons."</string> + <string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"Has dibuixat el patró de desbloqueig <xliff:g id="NUMBER_0">%d</xliff:g> vegades de manera incorrecta. Després de <xliff:g id="NUMBER_1">%d</xliff:g> intents incorrectes més, se\'t demanarà que desbloquegis el telèfon amb un compte de correu electrònic."\n\n" Torna-ho a provar d\'aquí a <xliff:g id="NUMBER_2">%d</xliff:g> segons."</string> + <string name="kg_text_message_separator" product="default" msgid="4160700433287233771">" — "</string> + <string name="kg_reordering_delete_drop_target_text" msgid="7899202978204438708">"Elimina"</string> + <!-- no translation found for keyguard_transport_prev_description (8229108430245669854) --> + <skip /> + <!-- no translation found for keyguard_transport_next_description (4299258300283778305) --> + <skip /> + <!-- no translation found for keyguard_transport_pause_description (5093073338238310224) --> + <skip /> + <!-- no translation found for keyguard_transport_play_description (2924628863741150956) --> + <skip /> + <!-- no translation found for keyguard_transport_stop_description (3084179324810575787) --> + <skip /> + <!-- no translation found for keyguard_carrier_default (8700650403054042153) --> + <skip /> +</resources> diff --git a/packages/Keyguard/res/values-cs/strings.xml b/packages/Keyguard/res/values-cs/strings.xml new file mode 100644 index 000000000000..ad4e04263b23 --- /dev/null +++ b/packages/Keyguard/res/values-cs/strings.xml @@ -0,0 +1,164 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* //device/apps/common/assets/res/any/strings.xml +** +** Copyright 2006, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="keyguard_password_enter_pin_code" msgid="3037685796058495017">"Zadejte kód PIN"</string> + <string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Zadejte kód PUK a nový kód PIN."</string> + <string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"Kód PUK"</string> + <string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Nový kód PIN"</string> + <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Dotykem zadáte heslo"</font></string> + <string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Zadejte heslo pro odemknutí"</string> + <string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Zadejte kód PIN pro odemknutí"</string> + <string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Nesprávný kód PIN."</string> + <string name="keyguard_label_text" msgid="861796461028298424">"Chcete-li telefon odemknout, stiskněte Menu a poté 0."</string> + <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Překročili jste maximální povolený počet pokusů o odemknutí obličejem."</string> + <!-- no translation found for keyguard_charged (3272223906073492454) --> + <skip /> + <!-- no translation found for keyguard_plugged_in (8117572000639998388) --> + <skip /> + <!-- no translation found for keyguard_low_battery (8143808018719173859) --> + <skip /> + <!-- no translation found for keyguard_instructions_when_pattern_disabled (1332288268600329841) --> + <skip /> + <!-- no translation found for keyguard_network_locked_message (9169717779058037168) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message_short (494980561304211931) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (1445849005909260039) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (3481110395508637643) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions (5210891509995942250) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions_long (5968985489463870358) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_message_short (8340813989586622356) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5892940909699723544) --> + <skip /> + <!-- no translation found for keyguard_sim_locked_message (6875773413306380902) --> + <skip /> + <!-- no translation found for keyguard_sim_puk_locked_message (3747232467471801633) --> + <skip /> + <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (7975221805033614426) --> + <skip /> + <string name="keyguard_accessibility_widget_changed" msgid="5678624624681400191">"%1$s. Widget %2$d z %3$d."</string> + <string name="keyguard_accessibility_add_widget" msgid="8273277058724924654">"Přidat widget"</string> + <string name="keyguard_accessibility_widget_empty_slot" msgid="1281505703307930757">"Prázdné"</string> + <string name="keyguard_accessibility_unlock_area_expanded" msgid="2278106022311170299">"Oblast odemknutí byla rozšířena."</string> + <string name="keyguard_accessibility_unlock_area_collapsed" msgid="6366992066936076396">"Oblast odemknutí byla sbalena."</string> + <string name="keyguard_accessibility_widget" msgid="6527131039741808240">"Widget <xliff:g id="WIDGET_INDEX">%1$s</xliff:g>"</string> + <string name="keyguard_accessibility_user_selector" msgid="1226798370913698896">"Výběr uživatele"</string> + <string name="keyguard_accessibility_status" msgid="8008264603935930611">"Stav"</string> + <string name="keyguard_accessibility_camera" msgid="8904231194181114603">"Fotoaparát"</string> + <string name="keygaurd_accessibility_media_controls" msgid="262209654292161806">"Ovládání médií"</string> + <string name="keyguard_accessibility_widget_reorder_start" msgid="8736853615588828197">"Přeuspořádání widgetů bylo zahájeno."</string> + <string name="keyguard_accessibility_widget_reorder_end" msgid="7170190950870468320">"Přeuspořádání widgetů bylo dokončeno."</string> + <string name="keyguard_accessibility_widget_deleted" msgid="4426204263929224434">"Widget <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> byl smazán."</string> + <string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"Rozšířit oblast odemknutí"</string> + <string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"Odemknutí přejetím prstem."</string> + <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"Odemknutí gestem."</string> + <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"Odemknutí obličejem."</string> + <string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"Odemknutí kódem PIN."</string> + <string name="keyguard_accessibility_password_unlock" msgid="7675777623912155089">"Odemknutí heslem."</string> + <string name="keyguard_accessibility_pattern_area" msgid="7679891324509597904">"Oblast pro zadání bezpečnostního gesta."</string> + <string name="keyguard_accessibility_slide_area" msgid="6736064494019979544">"Oblast pro přejetí prstem."</string> + <!-- no translation found for keyguard_accessibility_transport_prev_description (1337286538318543555) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_next_description (7073928300444909320) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_pause_description (8455979545295224302) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_play_description (8146417789511154044) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_stop_description (7656358482980912216) --> + <skip /> + <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> + <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string> + <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"Alt"</string> + <string name="keyboardview_keycode_alt" msgid="4856868820040051939">"Alt"</string> + <string name="keyboardview_keycode_cancel" msgid="1203984017245783244">"Zrušit"</string> + <string name="keyboardview_keycode_delete" msgid="3337914833206635744">"Smazat"</string> + <string name="keyboardview_keycode_done" msgid="1992571118466679775">"Hotovo"</string> + <string name="keyboardview_keycode_mode_change" msgid="4547387741906537519">"Změna režimu"</string> + <string name="keyboardview_keycode_shift" msgid="2270748814315147690">"Shift"</string> + <string name="keyboardview_keycode_enter" msgid="2985864015076059467">"Enter"</string> + <string name="description_target_unlock" msgid="2228524900439801453">"Odemknout"</string> + <string name="description_target_camera" msgid="969071997552486814">"Fotoaparát"</string> + <string name="description_target_silent" msgid="893551287746522182">"Tichý"</string> + <string name="description_target_soundon" msgid="30052466675500172">"Zapnout zvuk"</string> + <string name="description_target_search" msgid="3091587249776033139">"Vyhledávání"</string> + <string name="description_direction_up" msgid="7169032478259485180">"Přejeďte prstem nahoru: <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>"</string> + <string name="description_direction_down" msgid="5087739728639014595">"Přejeďte prstem dolů: <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>"</string> + <string name="description_direction_left" msgid="7207478719805562165">"Přejeďte prstem doleva: <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>"</string> + <string name="description_direction_right" msgid="8034433242579600980">"Přejeďte prstem doprava: <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>"</string> + <string name="user_switched" msgid="3768006783166984410">"Aktuální uživatel je <xliff:g id="NAME">%1$s</xliff:g>."</string> + <string name="kg_emergency_call_label" msgid="684946192523830531">"Tísňové volání"</string> + <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Zapomenuté gesto"</string> + <string name="kg_wrong_pattern" msgid="1850806070801358830">"Nesprávné gesto"</string> + <string name="kg_wrong_password" msgid="2333281762128113157">"Nesprávné heslo"</string> + <string name="kg_wrong_pin" msgid="1131306510833563801">"Nesprávný kód PIN"</string> + <string name="kg_too_many_failed_attempts_countdown" msgid="6358110221603297548">"Zkuste to znovu za <xliff:g id="NUMBER">%d</xliff:g> s."</string> + <string name="kg_pattern_instructions" msgid="398978611683075868">"Nakreslete gesto"</string> + <string name="kg_sim_pin_instructions" msgid="2319508550934557331">"Zadejte kód PIN SIM karty"</string> + <string name="kg_pin_instructions" msgid="2377242233495111557">"Zadejte kód PIN"</string> + <string name="kg_password_instructions" msgid="5753646556186936819">"Zadejte heslo"</string> + <string name="kg_puk_enter_puk_hint" msgid="453227143861735537">"SIM karta byla deaktivována. Chcete-li pokračovat, je třeba zadat kód PUK. Podrobné informace získáte od operátora."</string> + <string name="kg_puk_enter_pin_hint" msgid="7871604527429602024">"Zadejte požadovaný kód PIN."</string> + <string name="kg_enter_confirm_pin_hint" msgid="325676184762529976">"Potvrďte požadovaný kód PIN."</string> + <string name="kg_sim_unlock_progress_dialog_message" msgid="8950398016976865762">"Odblokování SIM karty..."</string> + <string name="kg_password_wrong_pin_code" msgid="1139324887413846912">"Nesprávný kód PIN."</string> + <string name="kg_invalid_sim_pin_hint" msgid="8795159358110620001">"Zadejte kód PIN o délce 4–8 číslic."</string> + <string name="kg_invalid_sim_puk_hint" msgid="7553388325654369575">"Minimální délka kódu PUK je 8 číslic."</string> + <string name="kg_invalid_puk" msgid="3638289409676051243">"Znovu zadejte správný kód PUK. Opakovanými pokusy SIM kartu trvale deaktivujete."</string> + <string name="kg_invalid_confirm_pin_hint" product="default" msgid="7003469261464593516">"Kódy PIN se neshodují."</string> + <string name="kg_login_too_many_attempts" msgid="6486842094005698475">"Příliš mnoho pokusů o nakreslení gesta"</string> + <string name="kg_login_instructions" msgid="1100551261265506448">"Chcete-li telefon odemknout, přihlaste se pomocí svého účtu Google."</string> + <string name="kg_login_username_hint" msgid="5718534272070920364">"Uživatelské jméno (e-mail)"</string> + <string name="kg_login_password_hint" msgid="9057289103827298549">"Heslo"</string> + <string name="kg_login_submit_button" msgid="5355904582674054702">"Přihlásit se"</string> + <string name="kg_login_invalid_input" msgid="5754664119319872197">"Neplatné uživatelské jméno nebo heslo."</string> + <string name="kg_login_account_recovery_hint" msgid="5690709132841752974">"Zapomněli jste uživatelské jméno nebo heslo?"\n"Přejděte na stránku "<b>"google.com/accounts/recovery"</b>"."</string> + <string name="kg_login_checking_password" msgid="1052685197710252395">"Kontrola účtu…"</string> + <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="8276745642049502550">"Již <xliff:g id="NUMBER_0">%d</xliff:g>krát jste zadali nesprávný kód PIN. "\n\n"Zkuste to znovu za <xliff:g id="NUMBER_1">%d</xliff:g> s."</string> + <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="7813713389422226531">"Již <xliff:g id="NUMBER_0">%d</xliff:g>krát jste nesprávně zadali heslo. "\n\n"Zkuste to znovu za <xliff:g id="NUMBER_1">%d</xliff:g> s."</string> + <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="74089475965050805">"Již <xliff:g id="NUMBER_0">%d</xliff:g>krát jste zadali nesprávné bezpečnostní gesto. "\n\n"Zkuste to znovu za <xliff:g id="NUMBER_1">%d</xliff:g> s."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="1575557200627128949">"Již jste se <xliff:g id="NUMBER_0">%d</xliff:g>krát pokusili odemknout tablet nesprávným způsobem. Po <xliff:g id="NUMBER_1">%d</xliff:g> dalších neúspěšných pokusech se v tabletu obnoví tovární nastavení a veškerá uživatelská data budou ztracena."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="4051015943038199910">"Již jste se <xliff:g id="NUMBER_0">%d</xliff:g>krát pokusili odemknout telefon nesprávným způsobem. Po <xliff:g id="NUMBER_1">%d</xliff:g> dalších neúspěšných pokusech se v telefonu obnoví tovární nastavení a veškerá uživatelská data budou ztracena."</string> + <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2072996269148483637">"Již jste se <xliff:g id="NUMBER">%d</xliff:g>krát pokusili odemknout tablet nesprávným způsobem. V tabletu se nyní obnoví výchozí tovární nastavení."</string> + <string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"Již jste se <xliff:g id="NUMBER">%d</xliff:g>krát pokusili odemknout telefon nesprávným způsobem. V telefonu se nyní obnoví výchozí tovární nastavení."</string> + <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Již <xliff:g id="NUMBER_0">%d</xliff:g>krát jste nesprávně nakreslili své heslo odemknutí. Po <xliff:g id="NUMBER_1">%d</xliff:g>dalších neúspěšných pokusech budete požádáni o odemčení tabletu pomocí e-mailového účtu."\n\n" Zkuste to znovu za <xliff:g id="NUMBER_2">%d</xliff:g> s."</string> + <string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"Již <xliff:g id="NUMBER_0">%d</xliff:g>krát jste nesprávně nakreslili své heslo odemknutí. Po <xliff:g id="NUMBER_1">%d</xliff:g> dalších neúspěšných pokusech budete požádáni o odemčení telefonu pomocí e-mailového účtu."\n\n" Zkuste to znovu za <xliff:g id="NUMBER_2">%d</xliff:g> s."</string> + <string name="kg_text_message_separator" product="default" msgid="4160700433287233771">" – "</string> + <string name="kg_reordering_delete_drop_target_text" msgid="7899202978204438708">"Odebrat"</string> + <!-- no translation found for keyguard_transport_prev_description (8229108430245669854) --> + <skip /> + <!-- no translation found for keyguard_transport_next_description (4299258300283778305) --> + <skip /> + <!-- no translation found for keyguard_transport_pause_description (5093073338238310224) --> + <skip /> + <!-- no translation found for keyguard_transport_play_description (2924628863741150956) --> + <skip /> + <!-- no translation found for keyguard_transport_stop_description (3084179324810575787) --> + <skip /> + <!-- no translation found for keyguard_carrier_default (8700650403054042153) --> + <skip /> +</resources> diff --git a/packages/Keyguard/res/values-da/strings.xml b/packages/Keyguard/res/values-da/strings.xml new file mode 100644 index 000000000000..cc1a9714e8b0 --- /dev/null +++ b/packages/Keyguard/res/values-da/strings.xml @@ -0,0 +1,164 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* //device/apps/common/assets/res/any/strings.xml +** +** Copyright 2006, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="keyguard_password_enter_pin_code" msgid="3037685796058495017">"Indtast pinkode"</string> + <string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Indtast PUK- og pinkode"</string> + <string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK-kode"</string> + <string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Ny pinkode"</string> + <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Tryk for at angive adgangskode"</font></string> + <string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Indtast adgangskoden for at låse op"</string> + <string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Indtast pinkode for at låse op"</string> + <string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Forkert pinkode."</string> + <string name="keyguard_label_text" msgid="861796461028298424">"Tryk på Menu og dernæst på 0 for at låse op."</string> + <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Det maksimale antal forsøg på at bruge Ansigtslås er overskredet"</string> + <!-- no translation found for keyguard_charged (3272223906073492454) --> + <skip /> + <!-- no translation found for keyguard_plugged_in (8117572000639998388) --> + <skip /> + <!-- no translation found for keyguard_low_battery (8143808018719173859) --> + <skip /> + <!-- no translation found for keyguard_instructions_when_pattern_disabled (1332288268600329841) --> + <skip /> + <!-- no translation found for keyguard_network_locked_message (9169717779058037168) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message_short (494980561304211931) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (1445849005909260039) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (3481110395508637643) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions (5210891509995942250) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions_long (5968985489463870358) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_message_short (8340813989586622356) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5892940909699723544) --> + <skip /> + <!-- no translation found for keyguard_sim_locked_message (6875773413306380902) --> + <skip /> + <!-- no translation found for keyguard_sim_puk_locked_message (3747232467471801633) --> + <skip /> + <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (7975221805033614426) --> + <skip /> + <string name="keyguard_accessibility_widget_changed" msgid="5678624624681400191">"%1$s. Widget %2$d af %3$d."</string> + <string name="keyguard_accessibility_add_widget" msgid="8273277058724924654">"Tilføj widget."</string> + <string name="keyguard_accessibility_widget_empty_slot" msgid="1281505703307930757">"Tom"</string> + <string name="keyguard_accessibility_unlock_area_expanded" msgid="2278106022311170299">"Oplåsningsområdet er udvidet."</string> + <string name="keyguard_accessibility_unlock_area_collapsed" msgid="6366992066936076396">"Oplåsningsområdet er skjult."</string> + <string name="keyguard_accessibility_widget" msgid="6527131039741808240">"Widget til <xliff:g id="WIDGET_INDEX">%1$s</xliff:g>."</string> + <string name="keyguard_accessibility_user_selector" msgid="1226798370913698896">"Brugervælger"</string> + <string name="keyguard_accessibility_status" msgid="8008264603935930611">"Status"</string> + <string name="keyguard_accessibility_camera" msgid="8904231194181114603">"Kamera"</string> + <string name="keygaurd_accessibility_media_controls" msgid="262209654292161806">"Mediekontrolelementer"</string> + <string name="keyguard_accessibility_widget_reorder_start" msgid="8736853615588828197">"Omrokering af widgets er påbegyndt."</string> + <string name="keyguard_accessibility_widget_reorder_end" msgid="7170190950870468320">"Omrokering af widgets er afsluttet."</string> + <string name="keyguard_accessibility_widget_deleted" msgid="4426204263929224434">"Widgetten <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> er slettet."</string> + <string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"Udvid oplåsningsområdet."</string> + <string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"Lås op ved at stryge."</string> + <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"Lås op med mønster."</string> + <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"Lås op med ansigt."</string> + <string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"Lås op med pinkode."</string> + <string name="keyguard_accessibility_password_unlock" msgid="7675777623912155089">"Lås op med adgangskode."</string> + <string name="keyguard_accessibility_pattern_area" msgid="7679891324509597904">"Mønsterområde."</string> + <string name="keyguard_accessibility_slide_area" msgid="6736064494019979544">"Strygeområde."</string> + <!-- no translation found for keyguard_accessibility_transport_prev_description (1337286538318543555) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_next_description (7073928300444909320) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_pause_description (8455979545295224302) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_play_description (8146417789511154044) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_stop_description (7656358482980912216) --> + <skip /> + <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> + <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string> + <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> + <string name="keyboardview_keycode_alt" msgid="4856868820040051939">"Alt"</string> + <string name="keyboardview_keycode_cancel" msgid="1203984017245783244">"Annuller"</string> + <string name="keyboardview_keycode_delete" msgid="3337914833206635744">"Slet"</string> + <string name="keyboardview_keycode_done" msgid="1992571118466679775">"Udført"</string> + <string name="keyboardview_keycode_mode_change" msgid="4547387741906537519">"Ændring af tilstand"</string> + <string name="keyboardview_keycode_shift" msgid="2270748814315147690">"Shift"</string> + <string name="keyboardview_keycode_enter" msgid="2985864015076059467">"Angiv"</string> + <string name="description_target_unlock" msgid="2228524900439801453">"Lås op"</string> + <string name="description_target_camera" msgid="969071997552486814">"Kamera"</string> + <string name="description_target_silent" msgid="893551287746522182">"Lydløs"</string> + <string name="description_target_soundon" msgid="30052466675500172">"Lyd slået til"</string> + <string name="description_target_search" msgid="3091587249776033139">"Søgning"</string> + <string name="description_direction_up" msgid="7169032478259485180">"Glid op for at <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_down" msgid="5087739728639014595">"Glid ned for at <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_left" msgid="7207478719805562165">"Glid til venstre for at <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_right" msgid="8034433242579600980">"Glid til højre for at <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="user_switched" msgid="3768006783166984410">"Nuværende bruger <xliff:g id="NAME">%1$s</xliff:g>."</string> + <string name="kg_emergency_call_label" msgid="684946192523830531">"Nødopkald"</string> + <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Glemt mønster"</string> + <string name="kg_wrong_pattern" msgid="1850806070801358830">"Forkert mønster"</string> + <string name="kg_wrong_password" msgid="2333281762128113157">"Forkert adgangskode"</string> + <string name="kg_wrong_pin" msgid="1131306510833563801">"Forkert pinkode"</string> + <string name="kg_too_many_failed_attempts_countdown" msgid="6358110221603297548">"Prøv igen om <xliff:g id="NUMBER">%d</xliff:g> sekunder."</string> + <string name="kg_pattern_instructions" msgid="398978611683075868">"Tegn dit mønster"</string> + <string name="kg_sim_pin_instructions" msgid="2319508550934557331">"Indtast pinkode til SIM"</string> + <string name="kg_pin_instructions" msgid="2377242233495111557">"Indtast pinkode"</string> + <string name="kg_password_instructions" msgid="5753646556186936819">"Angiv adgangskode"</string> + <string name="kg_puk_enter_puk_hint" msgid="453227143861735537">"SIM-kortet er nu deaktiveret. Indtast PUK-koden for at fortsætte. Kontakt mobiloperatøren for at få flere oplysninger."</string> + <string name="kg_puk_enter_pin_hint" msgid="7871604527429602024">"Indtast den ønskede pinkode"</string> + <string name="kg_enter_confirm_pin_hint" msgid="325676184762529976">"Bekræft den ønskede pinkode"</string> + <string name="kg_sim_unlock_progress_dialog_message" msgid="8950398016976865762">"SIM-kortet låses op…"</string> + <string name="kg_password_wrong_pin_code" msgid="1139324887413846912">"Forkert pinkode."</string> + <string name="kg_invalid_sim_pin_hint" msgid="8795159358110620001">"Indtast en pinkode på mellem 4 og 8 tal."</string> + <string name="kg_invalid_sim_puk_hint" msgid="7553388325654369575">"PUK-koden skal være på 8 tal eller mere."</string> + <string name="kg_invalid_puk" msgid="3638289409676051243">"Indtast den korrekte PUK-kode. Gentagne forsøg vil permanent deaktivere SIM-kortet."</string> + <string name="kg_invalid_confirm_pin_hint" product="default" msgid="7003469261464593516">"Pinkoderne stemmer ikke overens"</string> + <string name="kg_login_too_many_attempts" msgid="6486842094005698475">"For mange forsøg på at tegne mønstret korrekt"</string> + <string name="kg_login_instructions" msgid="1100551261265506448">"Lås op ved at logge ind med din Google-konto."</string> + <string name="kg_login_username_hint" msgid="5718534272070920364">"Brugernavn (e-mail)"</string> + <string name="kg_login_password_hint" msgid="9057289103827298549">"Adgangskode"</string> + <string name="kg_login_submit_button" msgid="5355904582674054702">"Log ind"</string> + <string name="kg_login_invalid_input" msgid="5754664119319872197">"Ugyldigt brugernavn eller ugyldig adgangskode."</string> + <string name="kg_login_account_recovery_hint" msgid="5690709132841752974">"Har du glemt dit brugernavn eller din adgangskode?"\n"Gå til "<b>"google.com/accounts/recovery"</b>"."</string> + <string name="kg_login_checking_password" msgid="1052685197710252395">"Kontoen kontrolleres…"</string> + <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="8276745642049502550">"Du har indtastet en forkert pinkode <xliff:g id="NUMBER_0">%d</xliff:g> gange. "\n\n"Prøv igen om <xliff:g id="NUMBER_1">%d</xliff:g> sekunder."</string> + <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="7813713389422226531">"Du har indtastet din adgangskode forkert <xliff:g id="NUMBER_0">%d</xliff:g> gange. "\n\n"Prøv igen om <xliff:g id="NUMBER_1">%d</xliff:g> sekunder."</string> + <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="74089475965050805">"Du har tegnet dit oplåsningsmønster forkert <xliff:g id="NUMBER_0">%d</xliff:g> gange. "\n\n"Prøv igen om <xliff:g id="NUMBER_1">%d</xliff:g> sekunder."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="1575557200627128949">"Du har forsøgt at låse tabletten op forkert <xliff:g id="NUMBER_0">%d</xliff:g> gange. Efter <xliff:g id="NUMBER_1">%d</xliff:g> yderligere mislykkede forsøg nulstilles tabletten til fabriksindstillingerne, og alle brugerdata mistes."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="4051015943038199910">"Du har forsøgt at låse telefonen op forkert <xliff:g id="NUMBER_0">%d</xliff:g> gange. Efter <xliff:g id="NUMBER_1">%d</xliff:g> yderligere mislykkede forsøg, nulstilles telefonen til fabriksindstillingerne, og alle brugerdata mistes."</string> + <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2072996269148483637">"Du har forsøgt at låse tabletten op forkert <xliff:g id="NUMBER">%d</xliff:g> gange. Tabletten nulstilles til fabriksindstillingerne."</string> + <string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"Du har forsøgt at låse telefonen op forkert <xliff:g id="NUMBER">%d</xliff:g> gange. Telefonen nulstilles til fabriksindstillingerne."</string> + <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Du har tegnet dit oplåsningsmønster forkert <xliff:g id="NUMBER_0">%d</xliff:g> gange. Efter <xliff:g id="NUMBER_1">%d</xliff:g> yderligere mislykkede forsøg vil du blive bedt om at låse din tablet op ved hjælp af en e-mailkonto"\n\n" Prøv igen om <xliff:g id="NUMBER_2">%d</xliff:g> sekunder."</string> + <string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"Du har tegnet dit oplåsningsmønster forkert <xliff:g id="NUMBER_0">%d</xliff:g> gange. Efter <xliff:g id="NUMBER_1">%d</xliff:g> yderligere mislykkede forsøg til vil du blive bedt om at låse din telefon op ved hjælp af en e-mailkonto."\n\n" Prøv igen om <xliff:g id="NUMBER_2">%d</xliff:g> sekunder."</string> + <string name="kg_text_message_separator" product="default" msgid="4160700433287233771">" – "</string> + <string name="kg_reordering_delete_drop_target_text" msgid="7899202978204438708">"Fjern"</string> + <!-- no translation found for keyguard_transport_prev_description (8229108430245669854) --> + <skip /> + <!-- no translation found for keyguard_transport_next_description (4299258300283778305) --> + <skip /> + <!-- no translation found for keyguard_transport_pause_description (5093073338238310224) --> + <skip /> + <!-- no translation found for keyguard_transport_play_description (2924628863741150956) --> + <skip /> + <!-- no translation found for keyguard_transport_stop_description (3084179324810575787) --> + <skip /> + <!-- no translation found for keyguard_carrier_default (8700650403054042153) --> + <skip /> +</resources> diff --git a/packages/Keyguard/res/values-de/strings.xml b/packages/Keyguard/res/values-de/strings.xml new file mode 100644 index 000000000000..5aa9641d1d8a --- /dev/null +++ b/packages/Keyguard/res/values-de/strings.xml @@ -0,0 +1,164 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* //device/apps/common/assets/res/any/strings.xml +** +** Copyright 2006, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="keyguard_password_enter_pin_code" msgid="3037685796058495017">"PIN-Code eingeben"</string> + <string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"PUK und neuen PIN-Code eingeben"</string> + <string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK-Code"</string> + <string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Neuer PIN-Code"</string> + <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Zur Passworteingabe berühren"</font></string> + <string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Passwort zum Entsperren eingeben"</string> + <string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"PIN zum Entsperren eingeben"</string> + <string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Falscher PIN-Code"</string> + <string name="keyguard_label_text" msgid="861796461028298424">"Drücken Sie zum Entsperren die Menütaste und dann auf \"0\"."</string> + <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Die maximal zulässige Anzahl an Face Unlock-Versuchen wurde überschritten."</string> + <!-- no translation found for keyguard_charged (3272223906073492454) --> + <skip /> + <!-- no translation found for keyguard_plugged_in (8117572000639998388) --> + <skip /> + <!-- no translation found for keyguard_low_battery (8143808018719173859) --> + <skip /> + <!-- no translation found for keyguard_instructions_when_pattern_disabled (1332288268600329841) --> + <skip /> + <!-- no translation found for keyguard_network_locked_message (9169717779058037168) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message_short (494980561304211931) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (1445849005909260039) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (3481110395508637643) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions (5210891509995942250) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions_long (5968985489463870358) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_message_short (8340813989586622356) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5892940909699723544) --> + <skip /> + <!-- no translation found for keyguard_sim_locked_message (6875773413306380902) --> + <skip /> + <!-- no translation found for keyguard_sim_puk_locked_message (3747232467471801633) --> + <skip /> + <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (7975221805033614426) --> + <skip /> + <string name="keyguard_accessibility_widget_changed" msgid="5678624624681400191">"%1$s. Widget %2$d von %3$d."</string> + <string name="keyguard_accessibility_add_widget" msgid="8273277058724924654">"Widget hinzufügen"</string> + <string name="keyguard_accessibility_widget_empty_slot" msgid="1281505703307930757">"Leer"</string> + <string name="keyguard_accessibility_unlock_area_expanded" msgid="2278106022311170299">"Entsperr-Bereich maximiert"</string> + <string name="keyguard_accessibility_unlock_area_collapsed" msgid="6366992066936076396">"Entsperr-Bereich mminimiert"</string> + <string name="keyguard_accessibility_widget" msgid="6527131039741808240">"Widget <xliff:g id="WIDGET_INDEX">%1$s</xliff:g>"</string> + <string name="keyguard_accessibility_user_selector" msgid="1226798370913698896">"Nutzerauswahl"</string> + <string name="keyguard_accessibility_status" msgid="8008264603935930611">"Status"</string> + <string name="keyguard_accessibility_camera" msgid="8904231194181114603">"Kamera"</string> + <string name="keygaurd_accessibility_media_controls" msgid="262209654292161806">"Mediensteuerelemente"</string> + <string name="keyguard_accessibility_widget_reorder_start" msgid="8736853615588828197">"Neuordnung der Widgets gestartet"</string> + <string name="keyguard_accessibility_widget_reorder_end" msgid="7170190950870468320">"Neuordnung der Widgets abgeschlossen"</string> + <string name="keyguard_accessibility_widget_deleted" msgid="4426204263929224434">"Widget <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> gelöscht"</string> + <string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"Entsperr-Bereich maximieren"</string> + <string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"Entsperrung mit Fingerbewegung"</string> + <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"Entsperrung mit Muster"</string> + <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"Face Unlock"</string> + <string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"Entsperrung mit PIN"</string> + <string name="keyguard_accessibility_password_unlock" msgid="7675777623912155089">"Entsperrung mit Passwort"</string> + <string name="keyguard_accessibility_pattern_area" msgid="7679891324509597904">"Bereich für Muster"</string> + <string name="keyguard_accessibility_slide_area" msgid="6736064494019979544">"Bereich für Fingerbewegung"</string> + <!-- no translation found for keyguard_accessibility_transport_prev_description (1337286538318543555) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_next_description (7073928300444909320) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_pause_description (8455979545295224302) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_play_description (8146417789511154044) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_stop_description (7656358482980912216) --> + <skip /> + <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> + <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string> + <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> + <string name="keyboardview_keycode_alt" msgid="4856868820040051939">"Alt"</string> + <string name="keyboardview_keycode_cancel" msgid="1203984017245783244">"Abbrechen"</string> + <string name="keyboardview_keycode_delete" msgid="3337914833206635744">"Löschen"</string> + <string name="keyboardview_keycode_done" msgid="1992571118466679775">"Fertig"</string> + <string name="keyboardview_keycode_mode_change" msgid="4547387741906537519">"Modusänderung"</string> + <string name="keyboardview_keycode_shift" msgid="2270748814315147690">"Umschalttaste"</string> + <string name="keyboardview_keycode_enter" msgid="2985864015076059467">"Eingabetaste"</string> + <string name="description_target_unlock" msgid="2228524900439801453">"Entsperren"</string> + <string name="description_target_camera" msgid="969071997552486814">"Kamera"</string> + <string name="description_target_silent" msgid="893551287746522182">"Lautlos"</string> + <string name="description_target_soundon" msgid="30052466675500172">"Ton ein"</string> + <string name="description_target_search" msgid="3091587249776033139">"Suche"</string> + <string name="description_direction_up" msgid="7169032478259485180">"Zum <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> nach oben schieben"</string> + <string name="description_direction_down" msgid="5087739728639014595">"Zum <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> nach unten schieben"</string> + <string name="description_direction_left" msgid="7207478719805562165">"Zum <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> nach links schieben"</string> + <string name="description_direction_right" msgid="8034433242579600980">"Zum <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> nach rechts schieben"</string> + <string name="user_switched" msgid="3768006783166984410">"Aktueller Nutzer <xliff:g id="NAME">%1$s</xliff:g>"</string> + <string name="kg_emergency_call_label" msgid="684946192523830531">"Notruf"</string> + <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Muster vergessen"</string> + <string name="kg_wrong_pattern" msgid="1850806070801358830">"Falsches Muster"</string> + <string name="kg_wrong_password" msgid="2333281762128113157">"Falsches Passwort"</string> + <string name="kg_wrong_pin" msgid="1131306510833563801">"Falsche PIN"</string> + <string name="kg_too_many_failed_attempts_countdown" msgid="6358110221603297548">"Versuchen Sie es in <xliff:g id="NUMBER">%d</xliff:g> Sekunden erneut."</string> + <string name="kg_pattern_instructions" msgid="398978611683075868">"Muster zeichnen"</string> + <string name="kg_sim_pin_instructions" msgid="2319508550934557331">"SIM-PIN eingeben"</string> + <string name="kg_pin_instructions" msgid="2377242233495111557">"PIN eingeben"</string> + <string name="kg_password_instructions" msgid="5753646556186936819">"Passwort eingeben"</string> + <string name="kg_puk_enter_puk_hint" msgid="453227143861735537">"Die SIM-Karte ist jetzt deaktiviert. Geben Sie den PUK-Code ein, um fortzufahren. Weitere Informationen erhalten Sie von Ihrem Mobilfunkanbieter."</string> + <string name="kg_puk_enter_pin_hint" msgid="7871604527429602024">"Gewünschten PIN-Code eingeben"</string> + <string name="kg_enter_confirm_pin_hint" msgid="325676184762529976">"Gewünschten PIN-Code bestätigen"</string> + <string name="kg_sim_unlock_progress_dialog_message" msgid="8950398016976865762">"SIM-Karte wird entsperrt…"</string> + <string name="kg_password_wrong_pin_code" msgid="1139324887413846912">"Falscher PIN-Code"</string> + <string name="kg_invalid_sim_pin_hint" msgid="8795159358110620001">"Geben Sie eine 4- bis 8-stellige PIN ein."</string> + <string name="kg_invalid_sim_puk_hint" msgid="7553388325654369575">"Der PUK-Code muss mindestens 8 Ziffern betragen."</string> + <string name="kg_invalid_puk" msgid="3638289409676051243">"Geben Sie den richtigen PUK-Code ein. Bei wiederholten Versuchen wird die SIM-Karte dauerhaft deaktiviert."</string> + <string name="kg_invalid_confirm_pin_hint" product="default" msgid="7003469261464593516">"PIN-Codes stimmen nicht überein"</string> + <string name="kg_login_too_many_attempts" msgid="6486842094005698475">"Zu viele Musterversuche"</string> + <string name="kg_login_instructions" msgid="1100551261265506448">"Melden Sie sich zum Entsperren mit Ihrem Google-Konto an."</string> + <string name="kg_login_username_hint" msgid="5718534272070920364">"Nutzername (E-Mail)"</string> + <string name="kg_login_password_hint" msgid="9057289103827298549">"Passwort"</string> + <string name="kg_login_submit_button" msgid="5355904582674054702">"Anmelden"</string> + <string name="kg_login_invalid_input" msgid="5754664119319872197">"Ungültiger Nutzername oder ungültiges Passwort"</string> + <string name="kg_login_account_recovery_hint" msgid="5690709132841752974">"Nutzernamen oder Passwort vergessen?"\n"Besuchen Sie "<b>"google.com/accounts/recovery"</b>"."</string> + <string name="kg_login_checking_password" msgid="1052685197710252395">"Konto wird geprüft…"</string> + <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="8276745642049502550">"Sie haben Ihre PIN <xliff:g id="NUMBER_0">%d</xliff:g>-mal falsch eingegeben."\n\n"Versuchen Sie es in <xliff:g id="NUMBER_1">%d</xliff:g> Sekunden erneut."</string> + <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="7813713389422226531">"Sie haben Ihr Passwort <xliff:g id="NUMBER_0">%d</xliff:g>-mal falsch eingegeben."\n\n"Versuchen Sie es in <xliff:g id="NUMBER_1">%d</xliff:g> Sekunden erneut."</string> + <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="74089475965050805">"Sie haben Ihr Entsperrungsmuster <xliff:g id="NUMBER_0">%d</xliff:g>-mal falsch gezeichnet. "\n\n"Versuchen Sie es in <xliff:g id="NUMBER_1">%d</xliff:g> Sekunden erneut."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="1575557200627128949">"Sie haben <xliff:g id="NUMBER_0">%d</xliff:g>-mal erfolglos versucht, das Tablet zu entsperren. Nach <xliff:g id="NUMBER_1">%d</xliff:g> weiteren erfolglosen Versuchen wird das Tablet auf die Werkseinstellungen zurückgesetzt und alle Nutzerdaten gehen verloren."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="4051015943038199910">"Sie haben <xliff:g id="NUMBER_0">%d</xliff:g>-mal erfolglos versucht, das Telefon zu entsperren. Nach <xliff:g id="NUMBER_1">%d</xliff:g> weiteren erfolglosen Versuchen wird das Telefon auf die Werkseinstellungen zurückgesetzt und alle Nutzerdaten gehen verloren."</string> + <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2072996269148483637">"Sie haben <xliff:g id="NUMBER">%d</xliff:g>-mal erfolglos versucht, das Tablet zu entsperren. Das Tablet wird nun auf die Werkseinstellungen zurückgesetzt."</string> + <string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"Sie haben <xliff:g id="NUMBER">%d</xliff:g>-mal erfolglos versucht, das Telefon zu entsperren. Das Telefon wird nun auf die Werkseinstellungen zurückgesetzt."</string> + <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Sie haben Ihr Entsperrungsmuster <xliff:g id="NUMBER_0">%d</xliff:g>-mal falsch gezeichnet. Nach <xliff:g id="NUMBER_1">%d</xliff:g> weiteren erfolglosen Versuchen werden Sie aufgefordert, Ihr Tablet mithilfe eines E-Mail-Kontos zu entsperren."\n\n" Versuchen Sie es in <xliff:g id="NUMBER_2">%d</xliff:g> Sekunden erneut."</string> + <string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"Sie haben Ihr Entsperrungsmuster <xliff:g id="NUMBER_0">%d</xliff:g>-mal falsch gezeichnet. Nach <xliff:g id="NUMBER_1">%d</xliff:g> weiteren erfolglosen Versuchen werden Sie aufgefordert, Ihr Telefon mithilfe eines E-Mail-Kontos zu entsperren."\n\n" Versuchen Sie es in <xliff:g id="NUMBER_2">%d</xliff:g> Sekunden erneut."</string> + <string name="kg_text_message_separator" product="default" msgid="4160700433287233771">" – "</string> + <string name="kg_reordering_delete_drop_target_text" msgid="7899202978204438708">"Entfernen"</string> + <!-- no translation found for keyguard_transport_prev_description (8229108430245669854) --> + <skip /> + <!-- no translation found for keyguard_transport_next_description (4299258300283778305) --> + <skip /> + <!-- no translation found for keyguard_transport_pause_description (5093073338238310224) --> + <skip /> + <!-- no translation found for keyguard_transport_play_description (2924628863741150956) --> + <skip /> + <!-- no translation found for keyguard_transport_stop_description (3084179324810575787) --> + <skip /> + <!-- no translation found for keyguard_carrier_default (8700650403054042153) --> + <skip /> +</resources> diff --git a/packages/Keyguard/res/values-el/strings.xml b/packages/Keyguard/res/values-el/strings.xml new file mode 100644 index 000000000000..03809698d125 --- /dev/null +++ b/packages/Keyguard/res/values-el/strings.xml @@ -0,0 +1,164 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* //device/apps/common/assets/res/any/strings.xml +** +** Copyright 2006, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="keyguard_password_enter_pin_code" msgid="3037685796058495017">"Πληκτρολογήστε τον κωδικό αριθμό PIN"</string> + <string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Πληκτρολογήστε τον κωδικό PUK και τον νέο κωδικό PIN"</string> + <string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"Κωδικός PUK"</string> + <string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Νέος κωδικός PIN"</string> + <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Αγγίξτε για εισαγ. κωδ. πρόσβ."</font></string> + <string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Πληκτρολογήστε τον κωδικό πρόσβασης για ξεκλείδωμα"</string> + <string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Πληκτρολογήστε τον αριθμό PIN για ξεκλείδωμα"</string> + <string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Εσφαλμένος κωδικός PIN."</string> + <string name="keyguard_label_text" msgid="861796461028298424">"Για ξεκλείδωμα, πατήστε το πλήκτρο Menu και, στη συνέχεια, το πλήκτρο 0."</string> + <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Έγινε υπέρβαση του μέγιστου αριθμού προσπαθειών Face Unlock"</string> + <!-- no translation found for keyguard_charged (3272223906073492454) --> + <skip /> + <!-- no translation found for keyguard_plugged_in (8117572000639998388) --> + <skip /> + <!-- no translation found for keyguard_low_battery (8143808018719173859) --> + <skip /> + <!-- no translation found for keyguard_instructions_when_pattern_disabled (1332288268600329841) --> + <skip /> + <!-- no translation found for keyguard_network_locked_message (9169717779058037168) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message_short (494980561304211931) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (1445849005909260039) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (3481110395508637643) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions (5210891509995942250) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions_long (5968985489463870358) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_message_short (8340813989586622356) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5892940909699723544) --> + <skip /> + <!-- no translation found for keyguard_sim_locked_message (6875773413306380902) --> + <skip /> + <!-- no translation found for keyguard_sim_puk_locked_message (3747232467471801633) --> + <skip /> + <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (7975221805033614426) --> + <skip /> + <string name="keyguard_accessibility_widget_changed" msgid="5678624624681400191">"%1$s. Γραφικό στοιχείο %2$d από %3$d."</string> + <string name="keyguard_accessibility_add_widget" msgid="8273277058724924654">"Προσθήκη γραφικού στοιχείου"</string> + <string name="keyguard_accessibility_widget_empty_slot" msgid="1281505703307930757">"Κενή"</string> + <string name="keyguard_accessibility_unlock_area_expanded" msgid="2278106022311170299">"Ανάπτυξη της περιοχής ξεκλειδώματος."</string> + <string name="keyguard_accessibility_unlock_area_collapsed" msgid="6366992066936076396">"Σύμπτυξη της περιοχής ξεκλειδώματος."</string> + <string name="keyguard_accessibility_widget" msgid="6527131039741808240">"Γραφικό στοιχείο <xliff:g id="WIDGET_INDEX">%1$s</xliff:g>."</string> + <string name="keyguard_accessibility_user_selector" msgid="1226798370913698896">"Επιλογέας χρήστη"</string> + <string name="keyguard_accessibility_status" msgid="8008264603935930611">"Κατάσταση"</string> + <string name="keyguard_accessibility_camera" msgid="8904231194181114603">"Φωτογραφική μηχανή"</string> + <string name="keygaurd_accessibility_media_controls" msgid="262209654292161806">"Στοιχεία ελέγχου μέσων"</string> + <string name="keyguard_accessibility_widget_reorder_start" msgid="8736853615588828197">"Έχει ξεκινήσει η αναδιάταξη των γραφικών στοιχείων."</string> + <string name="keyguard_accessibility_widget_reorder_end" msgid="7170190950870468320">"Έχει ολοκληρωθεί η αναδιάταξη των γραφικών στοιχείων."</string> + <string name="keyguard_accessibility_widget_deleted" msgid="4426204263929224434">"Το γραφικό στοιχείο <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> έχει διαγραφεί."</string> + <string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"Ανάπτυξη περιοχής ξεκλειδώματος."</string> + <string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"Ξεκλείδωμα ολίσθησης."</string> + <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"Ξεκλείδωμα μοτίβου."</string> + <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"Face unlock."</string> + <string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"Ξεκλείδωμα κωδικού ασφαλείας"</string> + <string name="keyguard_accessibility_password_unlock" msgid="7675777623912155089">"Ξεκλείδωμα κωδικού πρόσβασης."</string> + <string name="keyguard_accessibility_pattern_area" msgid="7679891324509597904">"Περιοχή μοτίβου."</string> + <string name="keyguard_accessibility_slide_area" msgid="6736064494019979544">"Περιοχή ολίσθησης"</string> + <!-- no translation found for keyguard_accessibility_transport_prev_description (1337286538318543555) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_next_description (7073928300444909320) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_pause_description (8455979545295224302) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_play_description (8146417789511154044) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_stop_description (7656358482980912216) --> + <skip /> + <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> + <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ΑΒΓ"</string> + <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> + <string name="keyboardview_keycode_alt" msgid="4856868820040051939">"Alt"</string> + <string name="keyboardview_keycode_cancel" msgid="1203984017245783244">"Ακύρωση"</string> + <string name="keyboardview_keycode_delete" msgid="3337914833206635744">"Διαγραφή"</string> + <string name="keyboardview_keycode_done" msgid="1992571118466679775">"Τέλος"</string> + <string name="keyboardview_keycode_mode_change" msgid="4547387741906537519">"Αλλαγή τρόπου"</string> + <string name="keyboardview_keycode_shift" msgid="2270748814315147690">"Shift"</string> + <string name="keyboardview_keycode_enter" msgid="2985864015076059467">"Enter"</string> + <string name="description_target_unlock" msgid="2228524900439801453">"Ξεκλείδωμα"</string> + <string name="description_target_camera" msgid="969071997552486814">"Φωτογραφική μηχανή"</string> + <string name="description_target_silent" msgid="893551287746522182">"Αθόρυβο"</string> + <string name="description_target_soundon" msgid="30052466675500172">"Ενεργοποίηση ήχου"</string> + <string name="description_target_search" msgid="3091587249776033139">"Αναζήτηση"</string> + <string name="description_direction_up" msgid="7169032478259485180">"Κύλιση προς τα επάνω για <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_down" msgid="5087739728639014595">"Κύλιση προς τα κάτω για <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_left" msgid="7207478719805562165">"Κύλιση προς τα αριστερά για <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_right" msgid="8034433242579600980">"Κύλιση προς τα δεξιά για <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="user_switched" msgid="3768006783166984410">"Τρέχων χρήστης <xliff:g id="NAME">%1$s</xliff:g>."</string> + <string name="kg_emergency_call_label" msgid="684946192523830531">"Κλήσεις επείγουσας ανάγκης"</string> + <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Ξεχάσατε το μοτίβο"</string> + <string name="kg_wrong_pattern" msgid="1850806070801358830">"Εσφαλμένο μοτίβο"</string> + <string name="kg_wrong_password" msgid="2333281762128113157">"Εσφαλμένος κωδικός πρόσβασης"</string> + <string name="kg_wrong_pin" msgid="1131306510833563801">"Εσφαλμένος κωδικός PIN"</string> + <string name="kg_too_many_failed_attempts_countdown" msgid="6358110221603297548">"Δοκιμάστε ξανά σε <xliff:g id="NUMBER">%d</xliff:g> δευτερόλεπτα."</string> + <string name="kg_pattern_instructions" msgid="398978611683075868">"Σχεδιάστε το μοτίβο σας"</string> + <string name="kg_sim_pin_instructions" msgid="2319508550934557331">"Εισαγωγή PIN SIM"</string> + <string name="kg_pin_instructions" msgid="2377242233495111557">"Πληκτρολογήστε το PIN"</string> + <string name="kg_password_instructions" msgid="5753646556186936819">"Εισαγάγετε κωδικό πρόσβασης"</string> + <string name="kg_puk_enter_puk_hint" msgid="453227143861735537">"Η κάρτα SIM είναι απενεργοποιημένη αυτή τη στιγμή. Εισαγάγετε τον κωδικό PUK για να συνεχίσετε. Επικοινωνήστε με την εταιρεία κινητής τηλεφωνίας σας για λεπτομέρειες."</string> + <string name="kg_puk_enter_pin_hint" msgid="7871604527429602024">"Εισαγάγετε τον απαιτούμενο κωδικό PIN"</string> + <string name="kg_enter_confirm_pin_hint" msgid="325676184762529976">"Επιβεβαιώστε τον απαιτούμενο κωδικό PIN"</string> + <string name="kg_sim_unlock_progress_dialog_message" msgid="8950398016976865762">"Ξεκλείδωμα κάρτας SIM..."</string> + <string name="kg_password_wrong_pin_code" msgid="1139324887413846912">"Εσφαλμένος κωδικός PIN."</string> + <string name="kg_invalid_sim_pin_hint" msgid="8795159358110620001">"Πληκτρολογήστε έναν αριθμό PIN που να αποτελείται από 4 έως 8 αριθμούς."</string> + <string name="kg_invalid_sim_puk_hint" msgid="7553388325654369575">"Ο κωδικός PUK θα πρέπει να περιέχει τουλάχιστον 8 αριθμούς."</string> + <string name="kg_invalid_puk" msgid="3638289409676051243">"Εισαγάγετε ξανά τον κωδικό PUK. Οι επαναλαμβανόμενες προσπάθειες θα απενεργοποιήσουν οριστικά την κάρτα SIM."</string> + <string name="kg_invalid_confirm_pin_hint" product="default" msgid="7003469261464593516">"Δεν υπάρχει αντιστοιχία των κωδικών PIN"</string> + <string name="kg_login_too_many_attempts" msgid="6486842094005698475">"Πάρα πολλές προσπάθειες μοτίβου"</string> + <string name="kg_login_instructions" msgid="1100551261265506448">"Για ξεκλείδωμα, συνδεθείτε με τον λογαριασμό σας Google."</string> + <string name="kg_login_username_hint" msgid="5718534272070920364">"Όνομα χρήστη (διεύθυνση ηλεκτρονικού ταχυδρομείου)"</string> + <string name="kg_login_password_hint" msgid="9057289103827298549">"Κωδικός πρόσβασης"</string> + <string name="kg_login_submit_button" msgid="5355904582674054702">"Σύνδεση"</string> + <string name="kg_login_invalid_input" msgid="5754664119319872197">"Μη έγκυρο όνομα χρήστη ή κωδικός πρόσβασης."</string> + <string name="kg_login_account_recovery_hint" msgid="5690709132841752974">"Ξεχάσατε το όνομα χρήστη ή τον κωδικό πρόσβασής σας;"\n"Επισκεφτείτε τη διεύθυνση "<b>"google.com/accounts/recovery"</b>"."</string> + <string name="kg_login_checking_password" msgid="1052685197710252395">"Έλεγχος λογαριασμού…"</string> + <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="8276745642049502550">"Έχετε πληκτρολογήσει εσφαλμένα τον κωδικό σας PIN <xliff:g id="NUMBER_0">%d</xliff:g> φορές. "\n\n"Δοκιμάστε ξανά σε <xliff:g id="NUMBER_1">%d</xliff:g> δευτερόλεπτα."</string> + <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="7813713389422226531">"Έχετε πληκτρολογήσει τον κωδικό πρόσβασης εσφαλμένα <xliff:g id="NUMBER_0">%d</xliff:g> φορές. "\n\n"Δοκιμάστε ξανά σε <xliff:g id="NUMBER_1">%d</xliff:g> δευτερόλεπτα."</string> + <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="74089475965050805">"Σχεδιάσατε εσφαλμένα το μοτίβο ξεκλειδώματος <xliff:g id="NUMBER_0">%d</xliff:g> φορές. "\n\n"Δοκιμάστε ξανά σε <xliff:g id="NUMBER_1">%d</xliff:g> δευτερόλετπα."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="1575557200627128949">"Προσπαθήσατε να ξεκλειδώσετε εσφαλμένα το tablet <xliff:g id="NUMBER_0">%d</xliff:g> φορές. Μετά από <xliff:g id="NUMBER_1">%d</xliff:g> προσπάθειες, το tablet θα επαναφερθεί στις εργοστασιακές ρυθμίσεις και όλα τα δεδομένα χρήστη θα χαθούν."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="4051015943038199910">"Προσπαθήσατε να ξεκλειδώσετε εσφαλμένα το τηλέφωνο <xliff:g id="NUMBER_0">%d</xliff:g> φορές. Μετά από <xliff:g id="NUMBER_1">%d</xliff:g> προσπάθειες, το τηλέφωνο θα επαναφερθεί στις εργοστασιακές ρυθμίσεις και όλα τα δεδομένα χρήστη θα χαθούν."</string> + <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2072996269148483637">"Προσπαθήσατε να ξεκλειδώσετε εσφαλμένα το tablet <xliff:g id="NUMBER">%d</xliff:g> φορές. Το tablet θα επαναφερθεί στις εργοστασιακές ρυθμίσεις."</string> + <string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"Προσπαθήσατε να ξεκλειδώσετε εσφαλμένα το τηλέφωνο <xliff:g id="NUMBER">%d</xliff:g> φορές. Το τηλέφωνο θα επαναφερθεί στις εργοστασιακές ρυθμίσεις."</string> + <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Σχεδιάσατε το μοτίβο ξεκλειδώματος εσφαλμένα <xliff:g id="NUMBER_0">%d</xliff:g> φορές. Μετά από <xliff:g id="NUMBER_1">%d</xliff:g> ανεπιτυχείς προσπάθειες ακόμη, θα σας ζητηθεί να ξεκλειδώσετε το tablet σας με τη χρήση ενός λογαριασμού ηλεκτρονικού ταχυδρομείου."\n\n" Δοκιμάστε να συνδεθείτε ξανά σε <xliff:g id="NUMBER_2">%d</xliff:g> δευτερόλεπτα."</string> + <string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"Σχεδιάσατε το μοτίβο ξεκλειδώματος εσφαλμένα <xliff:g id="NUMBER_0">%d</xliff:g> φορές. Μετά από <xliff:g id="NUMBER_1">%d</xliff:g> ανεπιτυχείς προσπάθειες ακόμη, θα σας ζητηθεί να ξεκλειδώσετε το τηλέφωνό σας με τη χρήση ενός λογαριασμού ηλεκτρονικού ταχυδρομείου."\n\n" Δοκιμάστε ξανά σε <xliff:g id="NUMBER_2">%d</xliff:g> δευτερόλεπτα."</string> + <string name="kg_text_message_separator" product="default" msgid="4160700433287233771">" — "</string> + <string name="kg_reordering_delete_drop_target_text" msgid="7899202978204438708">"Κατάργηση"</string> + <!-- no translation found for keyguard_transport_prev_description (8229108430245669854) --> + <skip /> + <!-- no translation found for keyguard_transport_next_description (4299258300283778305) --> + <skip /> + <!-- no translation found for keyguard_transport_pause_description (5093073338238310224) --> + <skip /> + <!-- no translation found for keyguard_transport_play_description (2924628863741150956) --> + <skip /> + <!-- no translation found for keyguard_transport_stop_description (3084179324810575787) --> + <skip /> + <!-- no translation found for keyguard_carrier_default (8700650403054042153) --> + <skip /> +</resources> diff --git a/packages/Keyguard/res/values-en-rGB/strings.xml b/packages/Keyguard/res/values-en-rGB/strings.xml new file mode 100644 index 000000000000..7053d028b9a8 --- /dev/null +++ b/packages/Keyguard/res/values-en-rGB/strings.xml @@ -0,0 +1,164 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* //device/apps/common/assets/res/any/strings.xml +** +** Copyright 2006, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="keyguard_password_enter_pin_code" msgid="3037685796058495017">"Type PIN code"</string> + <string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Type PUK and new PIN code"</string> + <string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK code"</string> + <string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"New PIN Code"</string> + <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Touch to type password"</font></string> + <string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Type password to unlock"</string> + <string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Type PIN to unlock"</string> + <string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Incorrect PIN code."</string> + <string name="keyguard_label_text" msgid="861796461028298424">"To unlock, press Menu, then 0."</string> + <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Maximum Face Unlock attempts exceeded"</string> + <!-- no translation found for keyguard_charged (3272223906073492454) --> + <skip /> + <!-- no translation found for keyguard_plugged_in (8117572000639998388) --> + <skip /> + <!-- no translation found for keyguard_low_battery (8143808018719173859) --> + <skip /> + <!-- no translation found for keyguard_instructions_when_pattern_disabled (1332288268600329841) --> + <skip /> + <!-- no translation found for keyguard_network_locked_message (9169717779058037168) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message_short (494980561304211931) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (1445849005909260039) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (3481110395508637643) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions (5210891509995942250) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions_long (5968985489463870358) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_message_short (8340813989586622356) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5892940909699723544) --> + <skip /> + <!-- no translation found for keyguard_sim_locked_message (6875773413306380902) --> + <skip /> + <!-- no translation found for keyguard_sim_puk_locked_message (3747232467471801633) --> + <skip /> + <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (7975221805033614426) --> + <skip /> + <string name="keyguard_accessibility_widget_changed" msgid="5678624624681400191">"%1$s. Widget %2$d of %3$d."</string> + <string name="keyguard_accessibility_add_widget" msgid="8273277058724924654">"Add widget"</string> + <string name="keyguard_accessibility_widget_empty_slot" msgid="1281505703307930757">"Empty"</string> + <string name="keyguard_accessibility_unlock_area_expanded" msgid="2278106022311170299">"Unlock area expanded."</string> + <string name="keyguard_accessibility_unlock_area_collapsed" msgid="6366992066936076396">"Unlock area collapsed."</string> + <string name="keyguard_accessibility_widget" msgid="6527131039741808240">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g> widget."</string> + <string name="keyguard_accessibility_user_selector" msgid="1226798370913698896">"User selector"</string> + <string name="keyguard_accessibility_status" msgid="8008264603935930611">"Status"</string> + <string name="keyguard_accessibility_camera" msgid="8904231194181114603">"Camera"</string> + <string name="keygaurd_accessibility_media_controls" msgid="262209654292161806">"Media controls"</string> + <string name="keyguard_accessibility_widget_reorder_start" msgid="8736853615588828197">"Widget reordering started."</string> + <string name="keyguard_accessibility_widget_reorder_end" msgid="7170190950870468320">"Widget reordering ended."</string> + <string name="keyguard_accessibility_widget_deleted" msgid="4426204263929224434">"Widget <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> deleted."</string> + <string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"Expand unlock area."</string> + <string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"Slide unlock."</string> + <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"Pattern unlock."</string> + <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"Face unlock."</string> + <string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"Pin unlock."</string> + <string name="keyguard_accessibility_password_unlock" msgid="7675777623912155089">"Password unlock."</string> + <string name="keyguard_accessibility_pattern_area" msgid="7679891324509597904">"Pattern area."</string> + <string name="keyguard_accessibility_slide_area" msgid="6736064494019979544">"Slide area."</string> + <!-- no translation found for keyguard_accessibility_transport_prev_description (1337286538318543555) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_next_description (7073928300444909320) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_pause_description (8455979545295224302) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_play_description (8146417789511154044) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_stop_description (7656358482980912216) --> + <skip /> + <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> + <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string> + <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> + <string name="keyboardview_keycode_alt" msgid="4856868820040051939">"Alt"</string> + <string name="keyboardview_keycode_cancel" msgid="1203984017245783244">"Cancel"</string> + <string name="keyboardview_keycode_delete" msgid="3337914833206635744">"Delete"</string> + <string name="keyboardview_keycode_done" msgid="1992571118466679775">"Done"</string> + <string name="keyboardview_keycode_mode_change" msgid="4547387741906537519">"Mode change"</string> + <string name="keyboardview_keycode_shift" msgid="2270748814315147690">"Shift"</string> + <string name="keyboardview_keycode_enter" msgid="2985864015076059467">"Enter"</string> + <string name="description_target_unlock" msgid="2228524900439801453">"Unlock"</string> + <string name="description_target_camera" msgid="969071997552486814">"Camera"</string> + <string name="description_target_silent" msgid="893551287746522182">"Silent"</string> + <string name="description_target_soundon" msgid="30052466675500172">"Sound on"</string> + <string name="description_target_search" msgid="3091587249776033139">"Search"</string> + <string name="description_direction_up" msgid="7169032478259485180">"Slide up for <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_down" msgid="5087739728639014595">"Slide down for <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_left" msgid="7207478719805562165">"Slide left for <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_right" msgid="8034433242579600980">"Slide right for <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="user_switched" msgid="3768006783166984410">"Current user <xliff:g id="NAME">%1$s</xliff:g>."</string> + <string name="kg_emergency_call_label" msgid="684946192523830531">"Emergency call"</string> + <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Forgot Pattern"</string> + <string name="kg_wrong_pattern" msgid="1850806070801358830">"Wrong Pattern"</string> + <string name="kg_wrong_password" msgid="2333281762128113157">"Wrong Password"</string> + <string name="kg_wrong_pin" msgid="1131306510833563801">"Wrong PIN"</string> + <string name="kg_too_many_failed_attempts_countdown" msgid="6358110221603297548">"Try again in <xliff:g id="NUMBER">%d</xliff:g> seconds."</string> + <string name="kg_pattern_instructions" msgid="398978611683075868">"Draw your pattern"</string> + <string name="kg_sim_pin_instructions" msgid="2319508550934557331">"Enter SIM PIN"</string> + <string name="kg_pin_instructions" msgid="2377242233495111557">"Enter PIN"</string> + <string name="kg_password_instructions" msgid="5753646556186936819">"Enter Password"</string> + <string name="kg_puk_enter_puk_hint" msgid="453227143861735537">"SIM is now disabled. Enter PUK code to continue. Contact carrier for details."</string> + <string name="kg_puk_enter_pin_hint" msgid="7871604527429602024">"Enter desired PIN code"</string> + <string name="kg_enter_confirm_pin_hint" msgid="325676184762529976">"Confirm desired PIN code"</string> + <string name="kg_sim_unlock_progress_dialog_message" msgid="8950398016976865762">"Unlocking SIM card…"</string> + <string name="kg_password_wrong_pin_code" msgid="1139324887413846912">"Incorrect PIN code."</string> + <string name="kg_invalid_sim_pin_hint" msgid="8795159358110620001">"Type a PIN that is 4 to 8 numbers."</string> + <string name="kg_invalid_sim_puk_hint" msgid="7553388325654369575">"PUK code should be 8 numbers or more."</string> + <string name="kg_invalid_puk" msgid="3638289409676051243">"Re-enter the correct PUK code. Repeated attempts will permanently disable the SIM."</string> + <string name="kg_invalid_confirm_pin_hint" product="default" msgid="7003469261464593516">"PIN codes do not match"</string> + <string name="kg_login_too_many_attempts" msgid="6486842094005698475">"Too many pattern attempts"</string> + <string name="kg_login_instructions" msgid="1100551261265506448">"To unlock, sign in with your Google account."</string> + <string name="kg_login_username_hint" msgid="5718534272070920364">"Username (email)"</string> + <string name="kg_login_password_hint" msgid="9057289103827298549">"Password"</string> + <string name="kg_login_submit_button" msgid="5355904582674054702">"Sign in"</string> + <string name="kg_login_invalid_input" msgid="5754664119319872197">"Invalid username or password."</string> + <string name="kg_login_account_recovery_hint" msgid="5690709132841752974">"Forgot your username or password?"\n"Visit "<b>"google.com/accounts/recovery"</b>"."</string> + <string name="kg_login_checking_password" msgid="1052685197710252395">"Checking account…"</string> + <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="8276745642049502550">"You have incorrectly typed your PIN <xliff:g id="NUMBER_0">%d</xliff:g> times. "\n\n"Try again in <xliff:g id="NUMBER_1">%d</xliff:g> seconds."</string> + <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="7813713389422226531">"You have incorrectly typed your password <xliff:g id="NUMBER_0">%d</xliff:g> times. "\n\n"Try again in <xliff:g id="NUMBER_1">%d</xliff:g> seconds."</string> + <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="74089475965050805">"You have incorrectly drawn your unlock pattern <xliff:g id="NUMBER_0">%d</xliff:g> times. "\n\n"Try again in <xliff:g id="NUMBER_1">%d</xliff:g> seconds."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="1575557200627128949">"You have incorrectly attempted to unlock the tablet <xliff:g id="NUMBER_0">%d</xliff:g> times. After <xliff:g id="NUMBER_1">%d</xliff:g> more unsuccessful attempts, the tablet will be reset to factory default and all user data will be lost."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="4051015943038199910">"You have incorrectly attempted to unlock the phone <xliff:g id="NUMBER_0">%d</xliff:g> times. After <xliff:g id="NUMBER_1">%d</xliff:g> more unsuccessful attempts, the phone will be reset to factory default and all user data will be lost."</string> + <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2072996269148483637">"You have incorrectly attempted to unlock the tablet <xliff:g id="NUMBER">%d</xliff:g> times. The tablet will now be reset to factory default."</string> + <string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"You have incorrectly attempted to unlock the phone <xliff:g id="NUMBER">%d</xliff:g> times. The phone will now be reset to factory default."</string> + <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"You have incorrectly drawn your unlock pattern <xliff:g id="NUMBER_0">%d</xliff:g> times. After <xliff:g id="NUMBER_1">%d</xliff:g> more unsuccessful attempts, you will be asked to unlock your tablet using an email account."\n\n" Try again in <xliff:g id="NUMBER_2">%d</xliff:g> seconds."</string> + <string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"You have incorrectly drawn your unlock pattern <xliff:g id="NUMBER_0">%d</xliff:g> times. After <xliff:g id="NUMBER_1">%d</xliff:g> more unsuccessful attempts, you will be asked to unlock your phone using an email account."\n\n" Try again in <xliff:g id="NUMBER_2">%d</xliff:g> seconds."</string> + <string name="kg_text_message_separator" product="default" msgid="4160700433287233771">" — "</string> + <string name="kg_reordering_delete_drop_target_text" msgid="7899202978204438708">"Remove"</string> + <!-- no translation found for keyguard_transport_prev_description (8229108430245669854) --> + <skip /> + <!-- no translation found for keyguard_transport_next_description (4299258300283778305) --> + <skip /> + <!-- no translation found for keyguard_transport_pause_description (5093073338238310224) --> + <skip /> + <!-- no translation found for keyguard_transport_play_description (2924628863741150956) --> + <skip /> + <!-- no translation found for keyguard_transport_stop_description (3084179324810575787) --> + <skip /> + <!-- no translation found for keyguard_carrier_default (8700650403054042153) --> + <skip /> +</resources> diff --git a/packages/Keyguard/res/values-es-rUS/strings.xml b/packages/Keyguard/res/values-es-rUS/strings.xml new file mode 100644 index 000000000000..0e47bddd3782 --- /dev/null +++ b/packages/Keyguard/res/values-es-rUS/strings.xml @@ -0,0 +1,164 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* //device/apps/common/assets/res/any/strings.xml +** +** Copyright 2006, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="keyguard_password_enter_pin_code" msgid="3037685796058495017">"Ingresa el código PIN"</string> + <string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Escribe el código PUK y un nuevo código PIN."</string> + <string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"Código PUK"</string> + <string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Nuevo código PIN"</string> + <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Toca para ingresar la contraseña"</font></string> + <string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Ingresar contraseña para desbloquear"</string> + <string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Ingresa el PIN para desbloquear"</string> + <string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Código PIN incorrecto"</string> + <string name="keyguard_label_text" msgid="861796461028298424">"Para desbloquear, presiona el menú y luego 0."</string> + <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Se superó el máximo de intentos permitido para el desbloqueo facial del dispositivo."</string> + <!-- no translation found for keyguard_charged (3272223906073492454) --> + <skip /> + <!-- no translation found for keyguard_plugged_in (8117572000639998388) --> + <skip /> + <!-- no translation found for keyguard_low_battery (8143808018719173859) --> + <skip /> + <!-- no translation found for keyguard_instructions_when_pattern_disabled (1332288268600329841) --> + <skip /> + <!-- no translation found for keyguard_network_locked_message (9169717779058037168) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message_short (494980561304211931) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (1445849005909260039) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (3481110395508637643) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions (5210891509995942250) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions_long (5968985489463870358) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_message_short (8340813989586622356) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5892940909699723544) --> + <skip /> + <!-- no translation found for keyguard_sim_locked_message (6875773413306380902) --> + <skip /> + <!-- no translation found for keyguard_sim_puk_locked_message (3747232467471801633) --> + <skip /> + <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (7975221805033614426) --> + <skip /> + <string name="keyguard_accessibility_widget_changed" msgid="5678624624681400191">"%1$s. Widget %2$d de %3$d"</string> + <string name="keyguard_accessibility_add_widget" msgid="8273277058724924654">"Agregar widget"</string> + <string name="keyguard_accessibility_widget_empty_slot" msgid="1281505703307930757">"Vacío"</string> + <string name="keyguard_accessibility_unlock_area_expanded" msgid="2278106022311170299">"Área desbloqueada expandida."</string> + <string name="keyguard_accessibility_unlock_area_collapsed" msgid="6366992066936076396">"El área desbloqueada se contrajo."</string> + <string name="keyguard_accessibility_widget" msgid="6527131039741808240">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g> widget"</string> + <string name="keyguard_accessibility_user_selector" msgid="1226798370913698896">"Selector de usuarios"</string> + <string name="keyguard_accessibility_status" msgid="8008264603935930611">"Estado"</string> + <string name="keyguard_accessibility_camera" msgid="8904231194181114603">"Cámara"</string> + <string name="keygaurd_accessibility_media_controls" msgid="262209654292161806">"Controles de medios"</string> + <string name="keyguard_accessibility_widget_reorder_start" msgid="8736853615588828197">"Se comenzaron a reordenar los widgets."</string> + <string name="keyguard_accessibility_widget_reorder_end" msgid="7170190950870468320">"Se terminaron de reordenar los widgets."</string> + <string name="keyguard_accessibility_widget_deleted" msgid="4426204263929224434">"Widget <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> eliminado"</string> + <string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"Expandir el área desbloqueada"</string> + <string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"Desbloqueo por deslizamiento"</string> + <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"Desbloqueo por patrón"</string> + <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"Desbloqueo facial"</string> + <string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"Desbloqueo por PIN"</string> + <string name="keyguard_accessibility_password_unlock" msgid="7675777623912155089">"Desbloqueo por contraseña"</string> + <string name="keyguard_accessibility_pattern_area" msgid="7679891324509597904">"Área de patrón"</string> + <string name="keyguard_accessibility_slide_area" msgid="6736064494019979544">"Área de deslizamiento"</string> + <!-- no translation found for keyguard_accessibility_transport_prev_description (1337286538318543555) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_next_description (7073928300444909320) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_pause_description (8455979545295224302) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_play_description (8146417789511154044) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_stop_description (7656358482980912216) --> + <skip /> + <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> + <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string> + <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> + <string name="keyboardview_keycode_alt" msgid="4856868820040051939">"Alt"</string> + <string name="keyboardview_keycode_cancel" msgid="1203984017245783244">"Cancelar"</string> + <string name="keyboardview_keycode_delete" msgid="3337914833206635744">"Eliminar"</string> + <string name="keyboardview_keycode_done" msgid="1992571118466679775">"Listo"</string> + <string name="keyboardview_keycode_mode_change" msgid="4547387741906537519">"Cambio de modo"</string> + <string name="keyboardview_keycode_shift" msgid="2270748814315147690">"Mayúscula"</string> + <string name="keyboardview_keycode_enter" msgid="2985864015076059467">"Ingresar"</string> + <string name="description_target_unlock" msgid="2228524900439801453">"Desbloquear"</string> + <string name="description_target_camera" msgid="969071997552486814">"Cámara"</string> + <string name="description_target_silent" msgid="893551287746522182">"Silencioso"</string> + <string name="description_target_soundon" msgid="30052466675500172">"Sonido activado"</string> + <string name="description_target_search" msgid="3091587249776033139">"Buscar"</string> + <string name="description_direction_up" msgid="7169032478259485180">"Desliza el dedo hacia arriba para <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_down" msgid="5087739728639014595">"Desliza el dedo hacia abajo para <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_left" msgid="7207478719805562165">"Desliza el dedo hacia la izquierda para <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_right" msgid="8034433242579600980">"Desliza el dedo hacia la derecha para <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="user_switched" msgid="3768006783166984410">"Usuario actual: <xliff:g id="NAME">%1$s</xliff:g>"</string> + <string name="kg_emergency_call_label" msgid="684946192523830531">"Llamada de emergencia"</string> + <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"¿Olvidaste el patrón?"</string> + <string name="kg_wrong_pattern" msgid="1850806070801358830">"Patrón incorrecto"</string> + <string name="kg_wrong_password" msgid="2333281762128113157">"Contraseña incorrecta"</string> + <string name="kg_wrong_pin" msgid="1131306510833563801">"PIN incorrecto"</string> + <string name="kg_too_many_failed_attempts_countdown" msgid="6358110221603297548">"Vuelve a intentarlo en <xliff:g id="NUMBER">%d</xliff:g> segundos."</string> + <string name="kg_pattern_instructions" msgid="398978611683075868">"Dibuja tu patrón."</string> + <string name="kg_sim_pin_instructions" msgid="2319508550934557331">"Ingresa el PIN de la tarjeta SIM."</string> + <string name="kg_pin_instructions" msgid="2377242233495111557">"Ingresa el PIN."</string> + <string name="kg_password_instructions" msgid="5753646556186936819">"Ingresa tu contraseña."</string> + <string name="kg_puk_enter_puk_hint" msgid="453227143861735537">"La tarjeta SIM está inhabilitada. Para continuar, ingresa el código PUK. Si quieres obtener más información, ponte en contacto con el proveedor."</string> + <string name="kg_puk_enter_pin_hint" msgid="7871604527429602024">"Ingresa el código PIN deseado"</string> + <string name="kg_enter_confirm_pin_hint" msgid="325676184762529976">"Confirmar código PIN deseado"</string> + <string name="kg_sim_unlock_progress_dialog_message" msgid="8950398016976865762">"Desbloqueando tarjeta SIM…"</string> + <string name="kg_password_wrong_pin_code" msgid="1139324887413846912">"Código PIN incorrecto"</string> + <string name="kg_invalid_sim_pin_hint" msgid="8795159358110620001">"Escribe un PIN que tenga de cuatro a ocho números."</string> + <string name="kg_invalid_sim_puk_hint" msgid="7553388325654369575">"El código PUK debe tener ocho números como mínimo."</string> + <string name="kg_invalid_puk" msgid="3638289409676051243">"Vuelve a ingresar el código PUK correcto. Si ingresas un código incorrecto varias veces, se inhabilitará la tarjeta SIM."</string> + <string name="kg_invalid_confirm_pin_hint" product="default" msgid="7003469261464593516">"Los códigos PIN no coinciden."</string> + <string name="kg_login_too_many_attempts" msgid="6486842094005698475">"Demasiados intentos incorrectos de ingresar el patrón"</string> + <string name="kg_login_instructions" msgid="1100551261265506448">"Para desbloquear, accede con tu cuenta de Google."</string> + <string name="kg_login_username_hint" msgid="5718534272070920364">"Nombre de usuario (correo)"</string> + <string name="kg_login_password_hint" msgid="9057289103827298549">"Contraseña"</string> + <string name="kg_login_submit_button" msgid="5355904582674054702">"Acceder"</string> + <string name="kg_login_invalid_input" msgid="5754664119319872197">"Nombre de usuario o contraseña incorrectos"</string> + <string name="kg_login_account_recovery_hint" msgid="5690709132841752974">"¿Olvidaste tu nombre de usuario o contraseña?"\n"Accede a "<b>"google.com/accounts/recovery"</b>"."</string> + <string name="kg_login_checking_password" msgid="1052685197710252395">"Comprobando la cuenta…"</string> + <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="8276745642049502550">"Escribiste incorrectamente tu PIN <xliff:g id="NUMBER_0">%d</xliff:g> veces. "\n\n"Vuelve a intentarlo en <xliff:g id="NUMBER_1">%d</xliff:g> segundos."</string> + <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="7813713389422226531">"Escribiste incorrectamente tu contraseña <xliff:g id="NUMBER_0">%d</xliff:g> veces. "\n\n"Vuelve a intentarlo en <xliff:g id="NUMBER_1">%d</xliff:g> segundos."</string> + <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="74089475965050805">"Dibujaste incorrectamente tu patrón de desbloqueo <xliff:g id="NUMBER_0">%d</xliff:g> veces. "\n\n"Vuelve a intentarlo en <xliff:g id="NUMBER_1">%d</xliff:g> segundos."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="1575557200627128949">"Intentaste desbloquear la tableta <xliff:g id="NUMBER_0">%d</xliff:g> veces, pero no lo lograste. Puedes intentarlo <xliff:g id="NUMBER_1">%d</xliff:g> veces más antes de que se restablezcan los valores predeterminados de fábrica de la tableta y se pierdan todos los datos del usuario."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="4051015943038199910">"Intentaste desbloquear el dispositivo <xliff:g id="NUMBER_0">%d</xliff:g> veces, pero no lo lograste. Puedes intentarlo <xliff:g id="NUMBER_1">%d</xliff:g> veces más antes de que se restablezcan los valores predeterminados de fábrica del dispositivo y se pierdan todos los datos del usuario."</string> + <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2072996269148483637">"Intentaste desbloquear la tableta <xliff:g id="NUMBER">%d</xliff:g> veces, pero no lo lograste. Se restablecerán los valores predeterminados de fábrica de la tableta."</string> + <string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"Intentaste desbloquear el dispositivo <xliff:g id="NUMBER">%d</xliff:g> veces, pero no lo lograste. Se restablecerán los valores predeterminados de fábrica del dispositivo."</string> + <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Dibujaste incorrectamente tu patrón de desbloqueo <xliff:g id="NUMBER_0">%d</xliff:g> veces. Luego de <xliff:g id="NUMBER_1">%d</xliff:g> intentos incorrectos más, se te solicitará que desbloquees tu tableta mediante el uso de una cuenta de correo."\n\n" Vuelve a intentarlo en <xliff:g id="NUMBER_2">%d</xliff:g> segundos."</string> + <string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"Dibujaste incorrectamente tu patrón de desbloqueo <xliff:g id="NUMBER_0">%d</xliff:g> veces. Luego de <xliff:g id="NUMBER_1">%d</xliff:g> intentos incorrectos más, se te solicitará que desbloquees tu dispositivo mediante el uso de una cuenta de correo."\n\n" Vuelve a intentarlo en <xliff:g id="NUMBER_2">%d</xliff:g> segundos."</string> + <string name="kg_text_message_separator" product="default" msgid="4160700433287233771">" — "</string> + <string name="kg_reordering_delete_drop_target_text" msgid="7899202978204438708">"Eliminar"</string> + <!-- no translation found for keyguard_transport_prev_description (8229108430245669854) --> + <skip /> + <!-- no translation found for keyguard_transport_next_description (4299258300283778305) --> + <skip /> + <!-- no translation found for keyguard_transport_pause_description (5093073338238310224) --> + <skip /> + <!-- no translation found for keyguard_transport_play_description (2924628863741150956) --> + <skip /> + <!-- no translation found for keyguard_transport_stop_description (3084179324810575787) --> + <skip /> + <!-- no translation found for keyguard_carrier_default (8700650403054042153) --> + <skip /> +</resources> diff --git a/packages/Keyguard/res/values-es/strings.xml b/packages/Keyguard/res/values-es/strings.xml new file mode 100644 index 000000000000..35924b3bdc5b --- /dev/null +++ b/packages/Keyguard/res/values-es/strings.xml @@ -0,0 +1,164 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* //device/apps/common/assets/res/any/strings.xml +** +** Copyright 2006, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="keyguard_password_enter_pin_code" msgid="3037685796058495017">"Introduce el código PIN."</string> + <string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Introduce el código PUK y un nuevo código PIN."</string> + <string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"Código PUK"</string> + <string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Nuevo código PIN"</string> + <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Toca para introducir contraseña"</font></string> + <string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Introduce la contraseña para desbloquear."</string> + <string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Introduce el código PIN para desbloquear."</string> + <string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Código PIN incorrecto"</string> + <string name="keyguard_label_text" msgid="861796461028298424">"Para desbloquear el teléfono, pulsa la tecla de menú y, a continuación, pulsa 0."</string> + <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Se ha superado el número máximo de intentos de desbloqueo facial."</string> + <!-- no translation found for keyguard_charged (3272223906073492454) --> + <skip /> + <!-- no translation found for keyguard_plugged_in (8117572000639998388) --> + <skip /> + <!-- no translation found for keyguard_low_battery (8143808018719173859) --> + <skip /> + <!-- no translation found for keyguard_instructions_when_pattern_disabled (1332288268600329841) --> + <skip /> + <!-- no translation found for keyguard_network_locked_message (9169717779058037168) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message_short (494980561304211931) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (1445849005909260039) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (3481110395508637643) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions (5210891509995942250) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions_long (5968985489463870358) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_message_short (8340813989586622356) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5892940909699723544) --> + <skip /> + <!-- no translation found for keyguard_sim_locked_message (6875773413306380902) --> + <skip /> + <!-- no translation found for keyguard_sim_puk_locked_message (3747232467471801633) --> + <skip /> + <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (7975221805033614426) --> + <skip /> + <string name="keyguard_accessibility_widget_changed" msgid="5678624624681400191">"%1$s. Widget %2$d de %3$d"</string> + <string name="keyguard_accessibility_add_widget" msgid="8273277058724924654">"Añadir widget"</string> + <string name="keyguard_accessibility_widget_empty_slot" msgid="1281505703307930757">"Vacío"</string> + <string name="keyguard_accessibility_unlock_area_expanded" msgid="2278106022311170299">"Área de desbloqueo ampliada"</string> + <string name="keyguard_accessibility_unlock_area_collapsed" msgid="6366992066936076396">"Área de desbloqueo contraída"</string> + <string name="keyguard_accessibility_widget" msgid="6527131039741808240">"Widget de <xliff:g id="WIDGET_INDEX">%1$s</xliff:g>"</string> + <string name="keyguard_accessibility_user_selector" msgid="1226798370913698896">"Selector de usuarios"</string> + <string name="keyguard_accessibility_status" msgid="8008264603935930611">"Estado"</string> + <string name="keyguard_accessibility_camera" msgid="8904231194181114603">"Cámara"</string> + <string name="keygaurd_accessibility_media_controls" msgid="262209654292161806">"Controles multimedia"</string> + <string name="keyguard_accessibility_widget_reorder_start" msgid="8736853615588828197">"Se ha empezado a cambiar el orden de los widgets."</string> + <string name="keyguard_accessibility_widget_reorder_end" msgid="7170190950870468320">"Se ha terminado de cambiar el orden de los widgets."</string> + <string name="keyguard_accessibility_widget_deleted" msgid="4426204263929224434">"Widget <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> eliminado"</string> + <string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"Ampliar área de desbloqueo"</string> + <string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"Desbloqueo deslizando el dedo"</string> + <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"Desbloqueo por patrón"</string> + <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"Desbloqueo facial"</string> + <string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"Desbloqueo por PIN"</string> + <string name="keyguard_accessibility_password_unlock" msgid="7675777623912155089">"Desbloqueo por contraseña"</string> + <string name="keyguard_accessibility_pattern_area" msgid="7679891324509597904">"Área de patrón"</string> + <string name="keyguard_accessibility_slide_area" msgid="6736064494019979544">"Área para deslizar"</string> + <!-- no translation found for keyguard_accessibility_transport_prev_description (1337286538318543555) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_next_description (7073928300444909320) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_pause_description (8455979545295224302) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_play_description (8146417789511154044) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_stop_description (7656358482980912216) --> + <skip /> + <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> + <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string> + <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> + <string name="keyboardview_keycode_alt" msgid="4856868820040051939">"Alt"</string> + <string name="keyboardview_keycode_cancel" msgid="1203984017245783244">"Cancelar"</string> + <string name="keyboardview_keycode_delete" msgid="3337914833206635744">"Eliminar"</string> + <string name="keyboardview_keycode_done" msgid="1992571118466679775">"Listo"</string> + <string name="keyboardview_keycode_mode_change" msgid="4547387741906537519">"Cambio de modo"</string> + <string name="keyboardview_keycode_shift" msgid="2270748814315147690">"Mayús"</string> + <string name="keyboardview_keycode_enter" msgid="2985864015076059467">"Intro"</string> + <string name="description_target_unlock" msgid="2228524900439801453">"Desbloquear"</string> + <string name="description_target_camera" msgid="969071997552486814">"Cámara"</string> + <string name="description_target_silent" msgid="893551287746522182">"Silencio"</string> + <string name="description_target_soundon" msgid="30052466675500172">"Sonido activado"</string> + <string name="description_target_search" msgid="3091587249776033139">"Buscar"</string> + <string name="description_direction_up" msgid="7169032478259485180">"Desliza el dedo hacia arriba para <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_down" msgid="5087739728639014595">"Desliza el dedo hacia abajo para <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_left" msgid="7207478719805562165">"Desliza el dedo hacia la izquierda para <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_right" msgid="8034433242579600980">"Desliza el dedo hacia la derecha para <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="user_switched" msgid="3768006783166984410">"Usuario actual: <xliff:g id="NAME">%1$s</xliff:g>"</string> + <string name="kg_emergency_call_label" msgid="684946192523830531">"Llamada de emergencia"</string> + <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"¿Has olvidado el patrón?"</string> + <string name="kg_wrong_pattern" msgid="1850806070801358830">"El patrón es incorrecto."</string> + <string name="kg_wrong_password" msgid="2333281762128113157">"Contraseña incorrecta"</string> + <string name="kg_wrong_pin" msgid="1131306510833563801">"PIN incorrecto"</string> + <string name="kg_too_many_failed_attempts_countdown" msgid="6358110221603297548">"Inténtalo de nuevo en <xliff:g id="NUMBER">%d</xliff:g> segundos."</string> + <string name="kg_pattern_instructions" msgid="398978611683075868">"Dibuja tu patrón de desbloqueo."</string> + <string name="kg_sim_pin_instructions" msgid="2319508550934557331">"Introduce el PIN de la tarjeta SIM."</string> + <string name="kg_pin_instructions" msgid="2377242233495111557">"Introduce el PIN."</string> + <string name="kg_password_instructions" msgid="5753646556186936819">"Escribe tu contraseña."</string> + <string name="kg_puk_enter_puk_hint" msgid="453227143861735537">"La tarjeta SIM está inhabilitada. Para continuar, introduce el código PUK. Si quieres obtener más información, ponte en contacto con el operador"</string> + <string name="kg_puk_enter_pin_hint" msgid="7871604527429602024">"Introduce el código PIN deseado"</string> + <string name="kg_enter_confirm_pin_hint" msgid="325676184762529976">"Confirma el código PIN"</string> + <string name="kg_sim_unlock_progress_dialog_message" msgid="8950398016976865762">"Desbloqueando tarjeta SIM…"</string> + <string name="kg_password_wrong_pin_code" msgid="1139324887413846912">"Código PIN incorrecto"</string> + <string name="kg_invalid_sim_pin_hint" msgid="8795159358110620001">"Introduce un código PIN con una longitud comprendida entre cuatro y ocho dígitos."</string> + <string name="kg_invalid_sim_puk_hint" msgid="7553388325654369575">"El código PUK debe tener ocho números como mínimo."</string> + <string name="kg_invalid_puk" msgid="3638289409676051243">"Vuelve a introducir el código PUK correcto. Si introduces un código incorrecto varias veces, se inhabilitará la tarjeta SIM."</string> + <string name="kg_invalid_confirm_pin_hint" product="default" msgid="7003469261464593516">"Los códigos PIN no coinciden."</string> + <string name="kg_login_too_many_attempts" msgid="6486842094005698475">"Demasiados intentos incorrectos de crear el patrón"</string> + <string name="kg_login_instructions" msgid="1100551261265506448">"Para desbloquear el teléfono, inicia sesión con tu cuenta de Google."</string> + <string name="kg_login_username_hint" msgid="5718534272070920364">"Nombre de usuario (correo electrónico)"</string> + <string name="kg_login_password_hint" msgid="9057289103827298549">"Contraseña"</string> + <string name="kg_login_submit_button" msgid="5355904582674054702">"Iniciar sesión"</string> + <string name="kg_login_invalid_input" msgid="5754664119319872197">"El nombre de usuario o la contraseña no son válidos."</string> + <string name="kg_login_account_recovery_hint" msgid="5690709132841752974">"Si has olvidado tu nombre de usuario o tu contraseña,"\n"accede a la página "<b>"google.com/accounts/recovery"</b>"."</string> + <string name="kg_login_checking_password" msgid="1052685197710252395">"Comprobando cuenta…"</string> + <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="8276745642049502550">"Has introducido un código PIN incorrecto <xliff:g id="NUMBER_0">%d</xliff:g> veces. "\n\n"Inténtalo de nuevo en <xliff:g id="NUMBER_1">%d</xliff:g> segundos."</string> + <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="7813713389422226531">"Has introducido una contraseña incorrecta <xliff:g id="NUMBER_0">%d</xliff:g> veces. "\n\n"Inténtalo de nuevo en <xliff:g id="NUMBER_1">%d</xliff:g> segundos."</string> + <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="74089475965050805">"Has fallado <xliff:g id="NUMBER_0">%d</xliff:g> veces al dibujar tu patrón de desbloqueo. "\n\n"Inténtalo de nuevo en <xliff:g id="NUMBER_1">%d</xliff:g> segundos."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="1575557200627128949">"Has intentado desbloquear el tablet <xliff:g id="NUMBER_0">%d</xliff:g> veces, pero no lo has conseguido. Si fallas otras <xliff:g id="NUMBER_1">%d</xliff:g> veces, se restablecerán los datos de fábrica y se perderán todos los datos del usuario."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="4051015943038199910">"Has intentado desbloquear el teléfono <xliff:g id="NUMBER_0">%d</xliff:g> veces, pero no lo has conseguido. Si fallas otras <xliff:g id="NUMBER_1">%d</xliff:g> veces, se restablecerán los datos de fábrica y se perderán todos los datos del usuario."</string> + <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2072996269148483637">"Has intentado desbloquear el tablet <xliff:g id="NUMBER">%d</xliff:g> veces, pero no lo has conseguido. Se restablecerán los datos de fábrica del dispositivo."</string> + <string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"Has intentado desbloquear el teléfono <xliff:g id="NUMBER">%d</xliff:g> veces, pero no lo has conseguido. Se restablecerán los datos de fábrica del dispositivo."</string> + <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Has fallado <xliff:g id="NUMBER_0">%d</xliff:g> veces al dibujar el patrón de desbloqueo. Si fallas otras <xliff:g id="NUMBER_1">%d</xliff:g> veces, deberás usar una cuenta de correo electrónico para desbloquear el tablet."\n\n" Inténtalo de nuevo en <xliff:g id="NUMBER_2">%d</xliff:g> segundos."</string> + <string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"Has fallado <xliff:g id="NUMBER_0">%d</xliff:g> veces al dibujar el patrón de desbloqueo. Si fallas otras <xliff:g id="NUMBER_1">%d</xliff:g> veces, deberás usar una cuenta de correo electrónico para desbloquear el teléfono."\n\n" Inténtalo de nuevo en <xliff:g id="NUMBER_2">%d</xliff:g> segundos."</string> + <string name="kg_text_message_separator" product="default" msgid="4160700433287233771">" — "</string> + <string name="kg_reordering_delete_drop_target_text" msgid="7899202978204438708">"Eliminar"</string> + <!-- no translation found for keyguard_transport_prev_description (8229108430245669854) --> + <skip /> + <!-- no translation found for keyguard_transport_next_description (4299258300283778305) --> + <skip /> + <!-- no translation found for keyguard_transport_pause_description (5093073338238310224) --> + <skip /> + <!-- no translation found for keyguard_transport_play_description (2924628863741150956) --> + <skip /> + <!-- no translation found for keyguard_transport_stop_description (3084179324810575787) --> + <skip /> + <!-- no translation found for keyguard_carrier_default (8700650403054042153) --> + <skip /> +</resources> diff --git a/packages/Keyguard/res/values-et/strings.xml b/packages/Keyguard/res/values-et/strings.xml new file mode 100644 index 000000000000..c83b55cf00a9 --- /dev/null +++ b/packages/Keyguard/res/values-et/strings.xml @@ -0,0 +1,164 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* //device/apps/common/assets/res/any/strings.xml +** +** Copyright 2006, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="keyguard_password_enter_pin_code" msgid="3037685796058495017">"Sisestage PIN-kood"</string> + <string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Sisestage PUK-kood ja uus PIN-kood"</string> + <string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK-kood"</string> + <string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Uus PIN-kood"</string> + <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Puudutage parooli sisestamiseks"</font></string> + <string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Avamiseks sisestage parool"</string> + <string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Avamiseks sisestage PIN-kood"</string> + <string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Vale PIN-kood."</string> + <string name="keyguard_label_text" msgid="861796461028298424">"Avamiseks vajutage menüüklahvi, seejärel klahvi 0."</string> + <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Maksimaalne teenusega Face Unlock avamise katsete arv on ületatud"</string> + <!-- no translation found for keyguard_charged (3272223906073492454) --> + <skip /> + <!-- no translation found for keyguard_plugged_in (8117572000639998388) --> + <skip /> + <!-- no translation found for keyguard_low_battery (8143808018719173859) --> + <skip /> + <!-- no translation found for keyguard_instructions_when_pattern_disabled (1332288268600329841) --> + <skip /> + <!-- no translation found for keyguard_network_locked_message (9169717779058037168) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message_short (494980561304211931) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (1445849005909260039) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (3481110395508637643) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions (5210891509995942250) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions_long (5968985489463870358) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_message_short (8340813989586622356) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5892940909699723544) --> + <skip /> + <!-- no translation found for keyguard_sim_locked_message (6875773413306380902) --> + <skip /> + <!-- no translation found for keyguard_sim_puk_locked_message (3747232467471801633) --> + <skip /> + <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (7975221805033614426) --> + <skip /> + <string name="keyguard_accessibility_widget_changed" msgid="5678624624681400191">"%1$s. Vidin %2$d/%3$d."</string> + <string name="keyguard_accessibility_add_widget" msgid="8273277058724924654">"Vidina lisamine."</string> + <string name="keyguard_accessibility_widget_empty_slot" msgid="1281505703307930757">"Tühi"</string> + <string name="keyguard_accessibility_unlock_area_expanded" msgid="2278106022311170299">"Avamisala on laiendatud."</string> + <string name="keyguard_accessibility_unlock_area_collapsed" msgid="6366992066936076396">"Avamisala on ahendatud."</string> + <string name="keyguard_accessibility_widget" msgid="6527131039741808240">"Vidin <xliff:g id="WIDGET_INDEX">%1$s</xliff:g>."</string> + <string name="keyguard_accessibility_user_selector" msgid="1226798370913698896">"Kasutaja valija"</string> + <string name="keyguard_accessibility_status" msgid="8008264603935930611">"Olek"</string> + <string name="keyguard_accessibility_camera" msgid="8904231194181114603">"Kaamera"</string> + <string name="keygaurd_accessibility_media_controls" msgid="262209654292161806">"Meedia juhtnupud"</string> + <string name="keyguard_accessibility_widget_reorder_start" msgid="8736853615588828197">"Vidina ümberkorraldamine algas."</string> + <string name="keyguard_accessibility_widget_reorder_end" msgid="7170190950870468320">"Vidina ümberkorraldamine lõppes."</string> + <string name="keyguard_accessibility_widget_deleted" msgid="4426204263929224434">"Vidin <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> on kustutatud."</string> + <string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"Avamisala laiendamine."</string> + <string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"Lohistamisega avamine."</string> + <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"Mustriga avamine."</string> + <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"Näoga avamine."</string> + <string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"PIN-koodiga avamine."</string> + <string name="keyguard_accessibility_password_unlock" msgid="7675777623912155089">"Parooliga avamine."</string> + <string name="keyguard_accessibility_pattern_area" msgid="7679891324509597904">"Mustri ala."</string> + <string name="keyguard_accessibility_slide_area" msgid="6736064494019979544">"Lohistamisala."</string> + <!-- no translation found for keyguard_accessibility_transport_prev_description (1337286538318543555) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_next_description (7073928300444909320) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_pause_description (8455979545295224302) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_play_description (8146417789511154044) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_stop_description (7656358482980912216) --> + <skip /> + <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> + <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string> + <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> + <string name="keyboardview_keycode_alt" msgid="4856868820040051939">"Alt"</string> + <string name="keyboardview_keycode_cancel" msgid="1203984017245783244">"Tühista"</string> + <string name="keyboardview_keycode_delete" msgid="3337914833206635744">"Kustuta"</string> + <string name="keyboardview_keycode_done" msgid="1992571118466679775">"Valmis"</string> + <string name="keyboardview_keycode_mode_change" msgid="4547387741906537519">"Režiimi muutmine"</string> + <string name="keyboardview_keycode_shift" msgid="2270748814315147690">"Tõstuklahv"</string> + <string name="keyboardview_keycode_enter" msgid="2985864015076059467">"Sisestusklahv"</string> + <string name="description_target_unlock" msgid="2228524900439801453">"Luku avamine"</string> + <string name="description_target_camera" msgid="969071997552486814">"Kaamera"</string> + <string name="description_target_silent" msgid="893551287746522182">"Hääletu"</string> + <string name="description_target_soundon" msgid="30052466675500172">"Heli on sees"</string> + <string name="description_target_search" msgid="3091587249776033139">"Otsing"</string> + <string name="description_direction_up" msgid="7169032478259485180">"Lohistage üles: <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_down" msgid="5087739728639014595">"Lohistage alla: <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_left" msgid="7207478719805562165">"Lohistage vasakule: <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_right" msgid="8034433242579600980">"Lohistage paremale: <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="user_switched" msgid="3768006783166984410">"Praegune kasutaja <xliff:g id="NAME">%1$s</xliff:g>."</string> + <string name="kg_emergency_call_label" msgid="684946192523830531">"Hädaabikõne"</string> + <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Unustasin mustri"</string> + <string name="kg_wrong_pattern" msgid="1850806070801358830">"Vale muster"</string> + <string name="kg_wrong_password" msgid="2333281762128113157">"Vale parool"</string> + <string name="kg_wrong_pin" msgid="1131306510833563801">"Vale PIN-kood"</string> + <string name="kg_too_many_failed_attempts_countdown" msgid="6358110221603297548">"Proovige uuesti <xliff:g id="NUMBER">%d</xliff:g> sekundi pärast."</string> + <string name="kg_pattern_instructions" msgid="398978611683075868">"Joonistage oma muster"</string> + <string name="kg_sim_pin_instructions" msgid="2319508550934557331">"Sisestage SIM-i PIN-kood"</string> + <string name="kg_pin_instructions" msgid="2377242233495111557">"Sisestage PIN-kood"</string> + <string name="kg_password_instructions" msgid="5753646556186936819">"Sisestage parool"</string> + <string name="kg_puk_enter_puk_hint" msgid="453227143861735537">"SIM on nüüd keelatud. Jätkamiseks sisestage PUK-kood. Üksikasju küsige operaatorilt."</string> + <string name="kg_puk_enter_pin_hint" msgid="7871604527429602024">"Sisestage soovitud PIN-kood"</string> + <string name="kg_enter_confirm_pin_hint" msgid="325676184762529976">"Kinnitage soovitud PIN-kood"</string> + <string name="kg_sim_unlock_progress_dialog_message" msgid="8950398016976865762">"SIM-kaardi avamine ..."</string> + <string name="kg_password_wrong_pin_code" msgid="1139324887413846912">"Vale PIN-kood."</string> + <string name="kg_invalid_sim_pin_hint" msgid="8795159358110620001">"Sisestage 4–8-numbriline PIN-kood."</string> + <string name="kg_invalid_sim_puk_hint" msgid="7553388325654369575">"PUK-koodi pikkus peab olema vähemalt 8 numbrit."</string> + <string name="kg_invalid_puk" msgid="3638289409676051243">"Sisestage uuesti õige PUK-kood. Korduvkatsete korral keelatakse SIM jäädavalt."</string> + <string name="kg_invalid_confirm_pin_hint" product="default" msgid="7003469261464593516">"PIN-koodid ei ole vastavuses"</string> + <string name="kg_login_too_many_attempts" msgid="6486842094005698475">"Liiga palju mustrikatseid"</string> + <string name="kg_login_instructions" msgid="1100551261265506448">"Avamiseks logige sisse oma Google\'i kontoga."</string> + <string name="kg_login_username_hint" msgid="5718534272070920364">"Kasutajanimi (e-post)"</string> + <string name="kg_login_password_hint" msgid="9057289103827298549">"Parool"</string> + <string name="kg_login_submit_button" msgid="5355904582674054702">"Logi sisse"</string> + <string name="kg_login_invalid_input" msgid="5754664119319872197">"Vale kasutajanimi või parool."</string> + <string name="kg_login_account_recovery_hint" msgid="5690709132841752974">"Kas unustasite kasutajanime või parooli?"\n"Külastage aadressi "<b>"google.com/accounts/recovery"</b>"."</string> + <string name="kg_login_checking_password" msgid="1052685197710252395">"Konto kontrollimine ..."</string> + <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="8276745642049502550">"Olete PIN-koodi <xliff:g id="NUMBER_0">%d</xliff:g> korda valesti sisestanud."\n\n"Proovige <xliff:g id="NUMBER_1">%d</xliff:g> sekundi pärast uuesti."</string> + <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="7813713389422226531">"Olete parooli <xliff:g id="NUMBER_0">%d</xliff:g> korda valesti sisestanud. "\n\n"Proovige uuesti <xliff:g id="NUMBER_1">%d</xliff:g> sekundi pärast."</string> + <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="74089475965050805">"Joonistasite oma avamismustri <xliff:g id="NUMBER_0">%d</xliff:g> korda valesti."\n\n"Proovige <xliff:g id="NUMBER_1">%d</xliff:g> sekundi pärast uuesti."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="1575557200627128949">"Olete üritanud <xliff:g id="NUMBER_0">%d</xliff:g> korda tahvelarvutit valesti avada. Pärast veel <xliff:g id="NUMBER_1">%d</xliff:g> ebaõnnestunud katset lähtestatakse tahvelarvuti tehase vaikeseadetele ja kõik kasutajaandmed lähevad kaotsi."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="4051015943038199910">"Olete üritanud <xliff:g id="NUMBER_0">%d</xliff:g> korda telefoni valesti avada. Pärast veel <xliff:g id="NUMBER_1">%d</xliff:g> ebaõnnestunud katset lähtestatakse telefon tehase vaikeseadetele ja kõik kasutajaandmed lähevad kaotsi."</string> + <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2072996269148483637">"Olete püüdnud tahvelarvutit <xliff:g id="NUMBER">%d</xliff:g> korda valesti avada. Tahvelarvuti lähtestatakse nüüd tehase vaikeseadetele."</string> + <string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"Olete püüdnud telefoni <xliff:g id="NUMBER">%d</xliff:g> korda valesti avada. Telefon lähtestatakse nüüd tehase vaikeseadetele."</string> + <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Joonistasite oma avamismustri <xliff:g id="NUMBER_0">%d</xliff:g> korda valesti. Pärast veel <xliff:g id="NUMBER_1">%d</xliff:g> ebaõnnestunud katset palutakse teil tahvelarvuti avada meilikontoga."\n\n" Proovige uuesti <xliff:g id="NUMBER_2">%d</xliff:g> sekundi pärast."</string> + <string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"Joonistasite oma avamismustri <xliff:g id="NUMBER_0">%d</xliff:g> korda valesti. Pärast veel <xliff:g id="NUMBER_1">%d</xliff:g> ebaõnnestunud katset palutakse teil telefon avada meilikontoga."\n\n" Proovige uuesti <xliff:g id="NUMBER_2">%d</xliff:g> sekundi pärast."</string> + <string name="kg_text_message_separator" product="default" msgid="4160700433287233771">" — "</string> + <string name="kg_reordering_delete_drop_target_text" msgid="7899202978204438708">"Eemalda"</string> + <!-- no translation found for keyguard_transport_prev_description (8229108430245669854) --> + <skip /> + <!-- no translation found for keyguard_transport_next_description (4299258300283778305) --> + <skip /> + <!-- no translation found for keyguard_transport_pause_description (5093073338238310224) --> + <skip /> + <!-- no translation found for keyguard_transport_play_description (2924628863741150956) --> + <skip /> + <!-- no translation found for keyguard_transport_stop_description (3084179324810575787) --> + <skip /> + <!-- no translation found for keyguard_carrier_default (8700650403054042153) --> + <skip /> +</resources> diff --git a/packages/Keyguard/res/values-fa/strings.xml b/packages/Keyguard/res/values-fa/strings.xml new file mode 100644 index 000000000000..f0b83c1bf3fc --- /dev/null +++ b/packages/Keyguard/res/values-fa/strings.xml @@ -0,0 +1,164 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* //device/apps/common/assets/res/any/strings.xml +** +** Copyright 2006, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="keyguard_password_enter_pin_code" msgid="3037685796058495017">"پین کد را وارد کنید"</string> + <string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"PUK و پین کد جدید را تایپ کنید"</string> + <string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"کد PUK"</string> + <string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"پین کد جدید"</string> + <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"برای تایپ گذرواژه لمس کنید"</font></string> + <string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"برای بازکردن قفل، گذرواژه را وارد کنید"</string> + <string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"برای بازکردن قفل، پین را تایپ کنید"</string> + <string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"پین کد اشتباه است."</string> + <string name="keyguard_label_text" msgid="861796461028298424">"برای بازگشایی قفل، منو را فشار دهید و سپس 0 را فشار دهید."</string> + <string name="faceunlock_multiple_failures" msgid="754137583022792429">"دفعات تلاش برای Face Unlock از حداکثر مجاز بیشتر شد"</string> + <!-- no translation found for keyguard_charged (3272223906073492454) --> + <skip /> + <!-- no translation found for keyguard_plugged_in (8117572000639998388) --> + <skip /> + <!-- no translation found for keyguard_low_battery (8143808018719173859) --> + <skip /> + <!-- no translation found for keyguard_instructions_when_pattern_disabled (1332288268600329841) --> + <skip /> + <!-- no translation found for keyguard_network_locked_message (9169717779058037168) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message_short (494980561304211931) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (1445849005909260039) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (3481110395508637643) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions (5210891509995942250) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions_long (5968985489463870358) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_message_short (8340813989586622356) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5892940909699723544) --> + <skip /> + <!-- no translation found for keyguard_sim_locked_message (6875773413306380902) --> + <skip /> + <!-- no translation found for keyguard_sim_puk_locked_message (3747232467471801633) --> + <skip /> + <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (7975221805033614426) --> + <skip /> + <string name="keyguard_accessibility_widget_changed" msgid="5678624624681400191">"%1$s. ابزارک %2$d از %3$d."</string> + <string name="keyguard_accessibility_add_widget" msgid="8273277058724924654">"ابزارک اضافه کنید."</string> + <string name="keyguard_accessibility_widget_empty_slot" msgid="1281505703307930757">"خالی"</string> + <string name="keyguard_accessibility_unlock_area_expanded" msgid="2278106022311170299">"منطقه بازگشایی گسترده شد."</string> + <string name="keyguard_accessibility_unlock_area_collapsed" msgid="6366992066936076396">"منطقه بازگشایی کوچک شد."</string> + <string name="keyguard_accessibility_widget" msgid="6527131039741808240">"ابزارک <xliff:g id="WIDGET_INDEX">%1$s</xliff:g>."</string> + <string name="keyguard_accessibility_user_selector" msgid="1226798370913698896">"انتخابگر کاربر"</string> + <string name="keyguard_accessibility_status" msgid="8008264603935930611">"وضعیت"</string> + <string name="keyguard_accessibility_camera" msgid="8904231194181114603">"دوربین"</string> + <string name="keygaurd_accessibility_media_controls" msgid="262209654292161806">"کنترلهای رسانه"</string> + <string name="keyguard_accessibility_widget_reorder_start" msgid="8736853615588828197">"مرتب سازی مجدد ابزارک آغاز شد."</string> + <string name="keyguard_accessibility_widget_reorder_end" msgid="7170190950870468320">"مرتبسازی مجدد ابزارک به پایان رسید."</string> + <string name="keyguard_accessibility_widget_deleted" msgid="4426204263929224434">"ابزارک <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> حذف شد."</string> + <string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"گسترده کردن منطقه بازگشایی شده."</string> + <string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"باز کردن قفل با کشیدن انگشت روی صفحه."</string> + <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"باز کردن قفل با الگو."</string> + <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"باز کردن قفل با چهره."</string> + <string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"باز کردن قفل با پین."</string> + <string name="keyguard_accessibility_password_unlock" msgid="7675777623912155089">"باز کردن قفل با گذرواژه."</string> + <string name="keyguard_accessibility_pattern_area" msgid="7679891324509597904">"ناحیه الگو."</string> + <string name="keyguard_accessibility_slide_area" msgid="6736064494019979544">"ناحیه کشیدن انگشت روی صفحه."</string> + <!-- no translation found for keyguard_accessibility_transport_prev_description (1337286538318543555) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_next_description (7073928300444909320) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_pause_description (8455979545295224302) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_play_description (8146417789511154044) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_stop_description (7656358482980912216) --> + <skip /> + <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> + <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string> + <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> + <string name="keyboardview_keycode_alt" msgid="4856868820040051939">"Alt"</string> + <string name="keyboardview_keycode_cancel" msgid="1203984017245783244">"لغو"</string> + <string name="keyboardview_keycode_delete" msgid="3337914833206635744">"Delete"</string> + <string name="keyboardview_keycode_done" msgid="1992571118466679775">"انجام شد"</string> + <string name="keyboardview_keycode_mode_change" msgid="4547387741906537519">"تغییر حالت"</string> + <string name="keyboardview_keycode_shift" msgid="2270748814315147690">"Shift"</string> + <string name="keyboardview_keycode_enter" msgid="2985864015076059467">"Enter"</string> + <string name="description_target_unlock" msgid="2228524900439801453">"بازکردن قفل"</string> + <string name="description_target_camera" msgid="969071997552486814">"دوربین"</string> + <string name="description_target_silent" msgid="893551287746522182">"ساکت"</string> + <string name="description_target_soundon" msgid="30052466675500172">"صدا روشن"</string> + <string name="description_target_search" msgid="3091587249776033139">"جستجو"</string> + <string name="description_direction_up" msgid="7169032478259485180">"لغزاندن به بالا برای <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_down" msgid="5087739728639014595">"لغزاندن به پایین برای <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_left" msgid="7207478719805562165">"لغزاندن به چپ برای <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_right" msgid="8034433242579600980">"لغزاندن به راست برای <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="user_switched" msgid="3768006783166984410">"کاربر کنونی <xliff:g id="NAME">%1$s</xliff:g>."</string> + <string name="kg_emergency_call_label" msgid="684946192523830531">"تماس اضطراری"</string> + <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"الگو را فراموش کردهاید"</string> + <string name="kg_wrong_pattern" msgid="1850806070801358830">"الگوی اشتباه"</string> + <string name="kg_wrong_password" msgid="2333281762128113157">"گذرواژه اشتباه"</string> + <string name="kg_wrong_pin" msgid="1131306510833563801">"پین اشتباه"</string> + <string name="kg_too_many_failed_attempts_countdown" msgid="6358110221603297548">"پس از <xliff:g id="NUMBER">%d</xliff:g> ثانیه دوباره امتحان کنید."</string> + <string name="kg_pattern_instructions" msgid="398978611683075868">"الگوی خود را رسم کنید"</string> + <string name="kg_sim_pin_instructions" msgid="2319508550934557331">"پین سیم کارت را وارد کنید"</string> + <string name="kg_pin_instructions" msgid="2377242233495111557">"پین را وارد کنید"</string> + <string name="kg_password_instructions" msgid="5753646556186936819">"گذرواژه را وارد کنید"</string> + <string name="kg_puk_enter_puk_hint" msgid="453227143861735537">"اکنون سیم کارت غیرفعال است. پین کد را برای ادامه وارد کنید. برای جزئیات با شرکت مخابراتی خود تماس بگیرید."</string> + <string name="kg_puk_enter_pin_hint" msgid="7871604527429602024">"پین کد دلخواه را وارد کنید"</string> + <string name="kg_enter_confirm_pin_hint" msgid="325676184762529976">"تأیید پین کد دلخواه"</string> + <string name="kg_sim_unlock_progress_dialog_message" msgid="8950398016976865762">"بازگشایی قفل سیم کارت..."</string> + <string name="kg_password_wrong_pin_code" msgid="1139324887413846912">"پین کد اشتباه است."</string> + <string name="kg_invalid_sim_pin_hint" msgid="8795159358110620001">"یک پین ۴ تا ۸ رقمی را تایپ کنید."</string> + <string name="kg_invalid_sim_puk_hint" msgid="7553388325654369575">"پین کد باید ۸ عدد یا بیشتر باشد."</string> + <string name="kg_invalid_puk" msgid="3638289409676051243">"پین کد صحیح را دوباره وارد کنید. تلاشهای مکرر بهطور دائم سیم کارت را غیرفعال خواهد کرد."</string> + <string name="kg_invalid_confirm_pin_hint" product="default" msgid="7003469261464593516">"پین کدها منطبق نیستند"</string> + <string name="kg_login_too_many_attempts" msgid="6486842094005698475">"تلاشهای زیادی برای کشیدن الگو صورت گرفته است"</string> + <string name="kg_login_instructions" msgid="1100551261265506448">"برای بازگشایی قفل، با حساب Google خود وارد سیستم شوید."</string> + <string name="kg_login_username_hint" msgid="5718534272070920364">"نام کاربری (ایمیل)"</string> + <string name="kg_login_password_hint" msgid="9057289103827298549">"گذرواژه"</string> + <string name="kg_login_submit_button" msgid="5355904582674054702">"ورود به سیستم"</string> + <string name="kg_login_invalid_input" msgid="5754664119319872197">"نام کاربری یا گذرواژه نامعتبر."</string> + <string name="kg_login_account_recovery_hint" msgid="5690709132841752974">"نام کاربری یا گذرواژه خود را فراموش کردید؟"\n"از "<b>"google.com/accounts/recovery"</b>" بازدید کنید."</string> + <string name="kg_login_checking_password" msgid="1052685197710252395">"درحال بررسی حساب..."</string> + <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="8276745642049502550">"پین خود را <xliff:g id="NUMBER_0">%d</xliff:g> بار اشتباه تایپ کردید. "\n\n"پس از <xliff:g id="NUMBER_1">%d</xliff:g> ثانیه دوباره امتحان کنید."</string> + <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="7813713389422226531">"گذرواژه خود را <xliff:g id="NUMBER_0">%d</xliff:g> بار اشتباه تایپ کردید. "\n\n"پس از <xliff:g id="NUMBER_1">%d</xliff:g> ثانیه دوباره امتحان کنید."</string> + <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="74089475965050805">"الگوی بازگشایی قفل خود را <xliff:g id="NUMBER_0">%d</xliff:g> بار اشتباه کشیدید. "\n\n"لطفاً پس از <xliff:g id="NUMBER_1">%d</xliff:g> ثانیه دوباره امتحان کنید."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="1575557200627128949">"شما به اشتباه <xliff:g id="NUMBER_0">%d</xliff:g> بار اقدام به باز کردن قفل رایانه لوحی کردهاید. پس از <xliff:g id="NUMBER_1">%d</xliff:g> تلاش ناموفق دیگر، رایانهٔ لوحی به پیشفرض کارخانه بازنشانی میشود و تمام دادههای کاربر از دست خواهد رفت."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="4051015943038199910">"شما به اشتباه <xliff:g id="NUMBER_0">%d</xliff:g> بار اقدام به باز کردن قفل تلفن کردهاید. پس از <xliff:g id="NUMBER_1">%d</xliff:g> تلاش ناموفق دیگر، تلفن به پیشفرض کارخانه بازنشانی میشود و تمام دادههای کاربر از دست خواهد رفت."</string> + <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2072996269148483637">"شما به اشتباه <xliff:g id="NUMBER">%d</xliff:g> بار اقدام به باز کردن قفل رایانه لوحی کردهاید. رایانه لوحی اکنون به پیشفرض کارخانه بازنشانی میشود."</string> + <string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"شما به اشتباه <xliff:g id="NUMBER">%d</xliff:g> بار اقدام به باز کردن قفل تلفن کردهاید. این تلفن اکنون به پیشفرض کارخانه بازنشانی میشود."</string> + <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"شما الگوی بازگشایی قفل خود را <xliff:g id="NUMBER_0">%d</xliff:g> بار اشتباه کشیدهاید. بعد از <xliff:g id="NUMBER_1">%d</xliff:g> تلاش ناموفق، از شما خواسته میشود که با استفاده از یک حساب ایمیل قفل رایانه لوحی خود را باز کنید."\n\n" لطفاً پس از <xliff:g id="NUMBER_2">%d</xliff:g> ثانیه دوباره امتحان کنید."</string> + <string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"شما الگوی بازگشایی قفل خود را <xliff:g id="NUMBER_0">%d</xliff:g> بار اشتباه کشیدهاید. پس از <xliff:g id="NUMBER_1">%d</xliff:g> تلاش ناموفق، از شما خواسته میشود که با استفاده از یک حساب ایمیل قفل تلفن خود را باز کنید."\n\n" لطفاً پس از <xliff:g id="NUMBER_2">%d</xliff:g> ثانیه دوباره امتحان کنید."</string> + <string name="kg_text_message_separator" product="default" msgid="4160700433287233771">" — "</string> + <string name="kg_reordering_delete_drop_target_text" msgid="7899202978204438708">"حذف"</string> + <!-- no translation found for keyguard_transport_prev_description (8229108430245669854) --> + <skip /> + <!-- no translation found for keyguard_transport_next_description (4299258300283778305) --> + <skip /> + <!-- no translation found for keyguard_transport_pause_description (5093073338238310224) --> + <skip /> + <!-- no translation found for keyguard_transport_play_description (2924628863741150956) --> + <skip /> + <!-- no translation found for keyguard_transport_stop_description (3084179324810575787) --> + <skip /> + <!-- no translation found for keyguard_carrier_default (8700650403054042153) --> + <skip /> +</resources> diff --git a/packages/Keyguard/res/values-fi/strings.xml b/packages/Keyguard/res/values-fi/strings.xml new file mode 100644 index 000000000000..15eac4b8d3c3 --- /dev/null +++ b/packages/Keyguard/res/values-fi/strings.xml @@ -0,0 +1,164 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* //device/apps/common/assets/res/any/strings.xml +** +** Copyright 2006, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="keyguard_password_enter_pin_code" msgid="3037685796058495017">"Anna PIN-koodi"</string> + <string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Anna PUK-koodi ja uusi PIN-koodi"</string> + <string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK-koodi"</string> + <string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Uusi PIN-koodi"</string> + <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Kosketa ja anna salasana"</font></string> + <string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Poista lukitus antamalla salasana"</string> + <string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Poista lukitus antamalla PIN-koodi"</string> + <string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"PIN-koodi väärin."</string> + <string name="keyguard_label_text" msgid="861796461028298424">"Poista lukitus painamalla Valikko-painiketta ja 0-näppäintä."</string> + <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Face Unlock -yrityksiä tehty suurin sallittu määrä."</string> + <!-- no translation found for keyguard_charged (3272223906073492454) --> + <skip /> + <!-- no translation found for keyguard_plugged_in (8117572000639998388) --> + <skip /> + <!-- no translation found for keyguard_low_battery (8143808018719173859) --> + <skip /> + <!-- no translation found for keyguard_instructions_when_pattern_disabled (1332288268600329841) --> + <skip /> + <!-- no translation found for keyguard_network_locked_message (9169717779058037168) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message_short (494980561304211931) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (1445849005909260039) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (3481110395508637643) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions (5210891509995942250) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions_long (5968985489463870358) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_message_short (8340813989586622356) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5892940909699723544) --> + <skip /> + <!-- no translation found for keyguard_sim_locked_message (6875773413306380902) --> + <skip /> + <!-- no translation found for keyguard_sim_puk_locked_message (3747232467471801633) --> + <skip /> + <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (7975221805033614426) --> + <skip /> + <string name="keyguard_accessibility_widget_changed" msgid="5678624624681400191">"%1$s. Widget %2$d/%3$d."</string> + <string name="keyguard_accessibility_add_widget" msgid="8273277058724924654">"Lisää widget."</string> + <string name="keyguard_accessibility_widget_empty_slot" msgid="1281505703307930757">"Tyhjä"</string> + <string name="keyguard_accessibility_unlock_area_expanded" msgid="2278106022311170299">"Lukituksen poiston alue laajennettu."</string> + <string name="keyguard_accessibility_unlock_area_collapsed" msgid="6366992066936076396">"Lukituksen poiston alue tiivistetty."</string> + <string name="keyguard_accessibility_widget" msgid="6527131039741808240">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g>-widget."</string> + <string name="keyguard_accessibility_user_selector" msgid="1226798370913698896">"Käyttäjävalitsin"</string> + <string name="keyguard_accessibility_status" msgid="8008264603935930611">"Tila"</string> + <string name="keyguard_accessibility_camera" msgid="8904231194181114603">"Kamera"</string> + <string name="keygaurd_accessibility_media_controls" msgid="262209654292161806">"Mediaohjaimet"</string> + <string name="keyguard_accessibility_widget_reorder_start" msgid="8736853615588828197">"Widgetien järjestely aloitettu."</string> + <string name="keyguard_accessibility_widget_reorder_end" msgid="7170190950870468320">"Widgetien järjestely päättyi."</string> + <string name="keyguard_accessibility_widget_deleted" msgid="4426204263929224434">"Widget <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> poistettu."</string> + <string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"Laajenna lukituksen poiston aluetta."</string> + <string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"Lukituksen poisto liu\'uttamalla."</string> + <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"Lukituksen poisto salasanalla."</string> + <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"Face Unlock"</string> + <string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"Lukituksen poisto PIN-koodilla."</string> + <string name="keyguard_accessibility_password_unlock" msgid="7675777623912155089">"Lukituksen poisto salasanalla."</string> + <string name="keyguard_accessibility_pattern_area" msgid="7679891324509597904">"Kuvioalue."</string> + <string name="keyguard_accessibility_slide_area" msgid="6736064494019979544">"Liu\'utusalue."</string> + <!-- no translation found for keyguard_accessibility_transport_prev_description (1337286538318543555) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_next_description (7073928300444909320) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_pause_description (8455979545295224302) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_play_description (8146417789511154044) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_stop_description (7656358482980912216) --> + <skip /> + <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> + <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string> + <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> + <string name="keyboardview_keycode_alt" msgid="4856868820040051939">"Alt"</string> + <string name="keyboardview_keycode_cancel" msgid="1203984017245783244">"Peruuta"</string> + <string name="keyboardview_keycode_delete" msgid="3337914833206635744">"Poista"</string> + <string name="keyboardview_keycode_done" msgid="1992571118466679775">"Valmis"</string> + <string name="keyboardview_keycode_mode_change" msgid="4547387741906537519">"Tilan muutos"</string> + <string name="keyboardview_keycode_shift" msgid="2270748814315147690">"Shift"</string> + <string name="keyboardview_keycode_enter" msgid="2985864015076059467">"Enter"</string> + <string name="description_target_unlock" msgid="2228524900439801453">"Poista lukitus"</string> + <string name="description_target_camera" msgid="969071997552486814">"Kamera"</string> + <string name="description_target_silent" msgid="893551287746522182">"Äänetön"</string> + <string name="description_target_soundon" msgid="30052466675500172">"Ääni käytössä"</string> + <string name="description_target_search" msgid="3091587249776033139">"Haku"</string> + <string name="description_direction_up" msgid="7169032478259485180">"Liu\'uta ylös ja <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_down" msgid="5087739728639014595">"Liu\'uta alas ja <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_left" msgid="7207478719805562165">"Liu\'uta vasemmalle ja <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_right" msgid="8034433242579600980">"Liu\'uta oikealle ja <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="user_switched" msgid="3768006783166984410">"Nykyinen käyttäjä: <xliff:g id="NAME">%1$s</xliff:g>."</string> + <string name="kg_emergency_call_label" msgid="684946192523830531">"Hätäpuhelu"</string> + <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Unohtunut kuvio"</string> + <string name="kg_wrong_pattern" msgid="1850806070801358830">"Väärä kuvio"</string> + <string name="kg_wrong_password" msgid="2333281762128113157">"Väärä salasana"</string> + <string name="kg_wrong_pin" msgid="1131306510833563801">"Väärä PIN-koodi"</string> + <string name="kg_too_many_failed_attempts_countdown" msgid="6358110221603297548">"Yritä uudelleen <xliff:g id="NUMBER">%d</xliff:g> sekunnin kuluttua."</string> + <string name="kg_pattern_instructions" msgid="398978611683075868">"Piirrä kuvio"</string> + <string name="kg_sim_pin_instructions" msgid="2319508550934557331">"Anna SIM-kortin PIN-koodi"</string> + <string name="kg_pin_instructions" msgid="2377242233495111557">"Anna PIN-koodi"</string> + <string name="kg_password_instructions" msgid="5753646556186936819">"Anna salasana"</string> + <string name="kg_puk_enter_puk_hint" msgid="453227143861735537">"SIM-kortti on nyt poistettu käytöstä. Jatka antamalla PUK-koodi. Saat lisätietoja ottamalla yhteyttä operaattoriin."</string> + <string name="kg_puk_enter_pin_hint" msgid="7871604527429602024">"Anna haluamasi PIN-koodi"</string> + <string name="kg_enter_confirm_pin_hint" msgid="325676184762529976">"Vahvista haluamasi PIN-koodi"</string> + <string name="kg_sim_unlock_progress_dialog_message" msgid="8950398016976865762">"SIM-kortin lukitusta poistetaan…"</string> + <string name="kg_password_wrong_pin_code" msgid="1139324887413846912">"Virheellinen PIN-koodi."</string> + <string name="kg_invalid_sim_pin_hint" msgid="8795159358110620001">"Anna 4–8-numeroinen PIN-koodi."</string> + <string name="kg_invalid_sim_puk_hint" msgid="7553388325654369575">"PUK-koodissa tulee olla vähintään 8 numeroa."</string> + <string name="kg_invalid_puk" msgid="3638289409676051243">"Anna uudelleen oikea PUK-koodi. Jos teet liian monta yritystä, SIM-kortti poistetaan käytöstä pysyvästi."</string> + <string name="kg_invalid_confirm_pin_hint" product="default" msgid="7003469261464593516">"PIN-koodit eivät täsmää"</string> + <string name="kg_login_too_many_attempts" msgid="6486842094005698475">"Liikaa kuvionpiirtoyrityksiä"</string> + <string name="kg_login_instructions" msgid="1100551261265506448">"Poista lukitus kirjautumalla sisään Google-tililläsi."</string> + <string name="kg_login_username_hint" msgid="5718534272070920364">"Käyttäjänimi (sähköposti)"</string> + <string name="kg_login_password_hint" msgid="9057289103827298549">"Salasana"</string> + <string name="kg_login_submit_button" msgid="5355904582674054702">"Kirjaudu sisään"</string> + <string name="kg_login_invalid_input" msgid="5754664119319872197">"Virheellinen käyttäjänimi tai salasana."</string> + <string name="kg_login_account_recovery_hint" msgid="5690709132841752974">"Unohditko käyttäjänimesi tai salasanasi?"\n"Käy osoitteessa "<b>"google.com/accounts/recovery"</b>"."</string> + <string name="kg_login_checking_password" msgid="1052685197710252395">"Tarkistetaan tiliä..."</string> + <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="8276745642049502550">"Olet kirjoittanut PIN-koodin väärin <xliff:g id="NUMBER_0">%d</xliff:g> kertaa. "\n\n"Yritä uudelleen <xliff:g id="NUMBER_1">%d</xliff:g> sekunnin kuluttua."</string> + <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="7813713389422226531">"Olet kirjoittanut salasanan väärin <xliff:g id="NUMBER_0">%d</xliff:g> kertaa. "\n\n"Yritä uudelleen <xliff:g id="NUMBER_1">%d</xliff:g> sekunnin kuluttua."</string> + <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="74089475965050805">"Olet piirtänyt lukituksenpoistokuvion väärin <xliff:g id="NUMBER_0">%d</xliff:g> kertaa. "\n\n"Yritä uudelleen <xliff:g id="NUMBER_1">%d</xliff:g> sekunnin kuluttua."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="1575557200627128949">"Tablet-laitteen lukituksen poisto epäonnistui <xliff:g id="NUMBER_0">%d</xliff:g> kertaa. Jos teet vielä <xliff:g id="NUMBER_1">%d</xliff:g> epäonnistunutta yritystä, tablet-laitteeseen palautetaan tehdasasetukset ja kaikki käyttäjätiedot häviävät."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="4051015943038199910">"Puhelimen lukituksen poisto epäonnistui <xliff:g id="NUMBER_0">%d</xliff:g> kertaa. Jos teet vielä <xliff:g id="NUMBER_1">%d</xliff:g> epäonnistunutta yritystä, puhelimeen palautetaan tehdasasetukset ja kaikki käyttäjätiedot häviävät."</string> + <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2072996269148483637">"Tablet-laitteen lukituksen poisto epäonnistui <xliff:g id="NUMBER">%d</xliff:g> kertaa. Laitteeseen palautetaan nyt tehdasasetukset."</string> + <string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"Puhelimen lukituksen poisto epäonnistui <xliff:g id="NUMBER">%d</xliff:g> kertaa. Puhelimeen palautetaan nyt tehdasasetukset."</string> + <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Piirsit lukituksenpoistokuvion väärin <xliff:g id="NUMBER_0">%d</xliff:g> kertaa. Jos piirrät kuvion väärin vielä <xliff:g id="NUMBER_1">%d</xliff:g> kertaa, sinua pyydetään poistamaan tablet-laitteesi lukitus sähköpostitilin avulla."\n\n" Yritä uudelleen <xliff:g id="NUMBER_2">%d</xliff:g> sekunnin kuluttua."</string> + <string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"Piirsit lukituksenpoistokuvion väärin <xliff:g id="NUMBER_0">%d</xliff:g> kertaa. Jos piirrät kuvion väärin vielä <xliff:g id="NUMBER_1">%d</xliff:g> kertaa, sinua pyydetään poistamaan puhelimesi lukitus sähköpostitilin avulla."\n\n" Yritä uudelleen <xliff:g id="NUMBER_2">%d</xliff:g> sekunnin kuluttua."</string> + <string name="kg_text_message_separator" product="default" msgid="4160700433287233771">" – "</string> + <string name="kg_reordering_delete_drop_target_text" msgid="7899202978204438708">"Poista"</string> + <!-- no translation found for keyguard_transport_prev_description (8229108430245669854) --> + <skip /> + <!-- no translation found for keyguard_transport_next_description (4299258300283778305) --> + <skip /> + <!-- no translation found for keyguard_transport_pause_description (5093073338238310224) --> + <skip /> + <!-- no translation found for keyguard_transport_play_description (2924628863741150956) --> + <skip /> + <!-- no translation found for keyguard_transport_stop_description (3084179324810575787) --> + <skip /> + <!-- no translation found for keyguard_carrier_default (8700650403054042153) --> + <skip /> +</resources> diff --git a/packages/Keyguard/res/values-fr/strings.xml b/packages/Keyguard/res/values-fr/strings.xml new file mode 100644 index 000000000000..219ab913a06b --- /dev/null +++ b/packages/Keyguard/res/values-fr/strings.xml @@ -0,0 +1,164 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* //device/apps/common/assets/res/any/strings.xml +** +** Copyright 2006, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="keyguard_password_enter_pin_code" msgid="3037685796058495017">"Saisissez le code PIN."</string> + <string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Saisissez la clé PUK et le nouveau code PIN."</string> + <string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"Code PUK"</string> + <string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Nouveau code PIN"</string> + <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Appuyez pour saisir mot passe"</font></string> + <string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Saisissez le mot de passe pour déverrouiller le clavier."</string> + <string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Saisissez le code PIN pour déverrouiller le clavier."</string> + <string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Le code PIN est erroné."</string> + <string name="keyguard_label_text" msgid="861796461028298424">"Pour déverrouiller le clavier, appuyez sur \"Menu\" puis sur 0."</string> + <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Nombre maximal autorisé de tentatives Face Unlock atteint."</string> + <!-- no translation found for keyguard_charged (3272223906073492454) --> + <skip /> + <!-- no translation found for keyguard_plugged_in (8117572000639998388) --> + <skip /> + <!-- no translation found for keyguard_low_battery (8143808018719173859) --> + <skip /> + <!-- no translation found for keyguard_instructions_when_pattern_disabled (1332288268600329841) --> + <skip /> + <!-- no translation found for keyguard_network_locked_message (9169717779058037168) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message_short (494980561304211931) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (1445849005909260039) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (3481110395508637643) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions (5210891509995942250) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions_long (5968985489463870358) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_message_short (8340813989586622356) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5892940909699723544) --> + <skip /> + <!-- no translation found for keyguard_sim_locked_message (6875773413306380902) --> + <skip /> + <!-- no translation found for keyguard_sim_puk_locked_message (3747232467471801633) --> + <skip /> + <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (7975221805033614426) --> + <skip /> + <string name="keyguard_accessibility_widget_changed" msgid="5678624624681400191">"%1$s. Widget %2$d sur %3$d."</string> + <string name="keyguard_accessibility_add_widget" msgid="8273277058724924654">"Ajouter un widget"</string> + <string name="keyguard_accessibility_widget_empty_slot" msgid="1281505703307930757">"Vide"</string> + <string name="keyguard_accessibility_unlock_area_expanded" msgid="2278106022311170299">"Zone de déverrouillage développée."</string> + <string name="keyguard_accessibility_unlock_area_collapsed" msgid="6366992066936076396">"Zone de déverrouillage réduite."</string> + <string name="keyguard_accessibility_widget" msgid="6527131039741808240">"Widget <xliff:g id="WIDGET_INDEX">%1$s</xliff:g>"</string> + <string name="keyguard_accessibility_user_selector" msgid="1226798370913698896">"Sélecteur d\'utilisateur"</string> + <string name="keyguard_accessibility_status" msgid="8008264603935930611">"État"</string> + <string name="keyguard_accessibility_camera" msgid="8904231194181114603">"Caméra"</string> + <string name="keygaurd_accessibility_media_controls" msgid="262209654292161806">"Commandes multimédias"</string> + <string name="keyguard_accessibility_widget_reorder_start" msgid="8736853615588828197">"Début de la réorganisation des widgets"</string> + <string name="keyguard_accessibility_widget_reorder_end" msgid="7170190950870468320">"Réorganisation des widgets terminée."</string> + <string name="keyguard_accessibility_widget_deleted" msgid="4426204263929224434">"Le widget <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> a été supprimé."</string> + <string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"Développer la zone de déverrouillage"</string> + <string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"Déverrouillage en faisant glisser votre doigt sur l\'écran"</string> + <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"Déverrouillage par schéma"</string> + <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"Déverrouillage par reconnaissance faciale"</string> + <string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"Déverrouillage par code PIN"</string> + <string name="keyguard_accessibility_password_unlock" msgid="7675777623912155089">"Déverrouillage par mot de passe"</string> + <string name="keyguard_accessibility_pattern_area" msgid="7679891324509597904">"Zone du schéma"</string> + <string name="keyguard_accessibility_slide_area" msgid="6736064494019979544">"Zone où faire glisser votre doigt sur l\'écran"</string> + <!-- no translation found for keyguard_accessibility_transport_prev_description (1337286538318543555) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_next_description (7073928300444909320) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_pause_description (8455979545295224302) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_play_description (8146417789511154044) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_stop_description (7656358482980912216) --> + <skip /> + <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> + <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string> + <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> + <string name="keyboardview_keycode_alt" msgid="4856868820040051939">"Alt"</string> + <string name="keyboardview_keycode_cancel" msgid="1203984017245783244">"Annuler"</string> + <string name="keyboardview_keycode_delete" msgid="3337914833206635744">"Supprimer"</string> + <string name="keyboardview_keycode_done" msgid="1992571118466679775">"Terminé"</string> + <string name="keyboardview_keycode_mode_change" msgid="4547387741906537519">"Changement de mode"</string> + <string name="keyboardview_keycode_shift" msgid="2270748814315147690">"Maj"</string> + <string name="keyboardview_keycode_enter" msgid="2985864015076059467">"Entrée"</string> + <string name="description_target_unlock" msgid="2228524900439801453">"Déverrouiller"</string> + <string name="description_target_camera" msgid="969071997552486814">"Appareil photo"</string> + <string name="description_target_silent" msgid="893551287746522182">"Mode silencieux"</string> + <string name="description_target_soundon" msgid="30052466675500172">"Son activé"</string> + <string name="description_target_search" msgid="3091587249776033139">"Rechercher"</string> + <string name="description_direction_up" msgid="7169032478259485180">"Faites glisser vers le haut pour <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_down" msgid="5087739728639014595">"Faites glisser vers le bas pour <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_left" msgid="7207478719805562165">"Faites glisser vers la gauche pour <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_right" msgid="8034433242579600980">"Faites glisser vers la droite pour <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="user_switched" msgid="3768006783166984410">"Utilisateur actuel : <xliff:g id="NAME">%1$s</xliff:g>"</string> + <string name="kg_emergency_call_label" msgid="684946192523830531">"Appel d\'urgence"</string> + <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"J\'ai oublié le schéma"</string> + <string name="kg_wrong_pattern" msgid="1850806070801358830">"Schéma incorrect."</string> + <string name="kg_wrong_password" msgid="2333281762128113157">"Mot de passe incorrect."</string> + <string name="kg_wrong_pin" msgid="1131306510833563801">"Code PIN incorrect."</string> + <string name="kg_too_many_failed_attempts_countdown" msgid="6358110221603297548">"Réessayez dans <xliff:g id="NUMBER">%d</xliff:g> secondes."</string> + <string name="kg_pattern_instructions" msgid="398978611683075868">"Dessinez votre schéma."</string> + <string name="kg_sim_pin_instructions" msgid="2319508550934557331">"Saisissez le code PIN de la carte SIM."</string> + <string name="kg_pin_instructions" msgid="2377242233495111557">"Saisissez le code PIN."</string> + <string name="kg_password_instructions" msgid="5753646556186936819">"Saisissez votre mot de passe."</string> + <string name="kg_puk_enter_puk_hint" msgid="453227143861735537">"La carte SIM est maintenant désactivée. Saisissez le code PUK pour continuer. Contactez votre opérateur pour en savoir plus."</string> + <string name="kg_puk_enter_pin_hint" msgid="7871604527429602024">"Saisir le code PIN souhaité"</string> + <string name="kg_enter_confirm_pin_hint" msgid="325676184762529976">"Confirmer le code PIN souhaité"</string> + <string name="kg_sim_unlock_progress_dialog_message" msgid="8950398016976865762">"Déblocage de la carte SIM en cours…"</string> + <string name="kg_password_wrong_pin_code" msgid="1139324887413846912">"Le code PIN est erroné."</string> + <string name="kg_invalid_sim_pin_hint" msgid="8795159358110620001">"Veuillez saisir un code PIN comprenant entre quatre et huit chiffres."</string> + <string name="kg_invalid_sim_puk_hint" msgid="7553388325654369575">"Le code PUK doit contenir au moins 8 chiffres."</string> + <string name="kg_invalid_puk" msgid="3638289409676051243">"Veuillez saisir de nouveau le code PUK correct. Des tentatives répétées désactivent définitivement la carte SIM."</string> + <string name="kg_invalid_confirm_pin_hint" product="default" msgid="7003469261464593516">"Les codes PIN ne correspondent pas."</string> + <string name="kg_login_too_many_attempts" msgid="6486842094005698475">"Trop de tentatives."</string> + <string name="kg_login_instructions" msgid="1100551261265506448">"Pour déverrouiller le téléphone, veuillez vous connecter avec votre compte Google."</string> + <string name="kg_login_username_hint" msgid="5718534272070920364">"Nom d\'utilisateur (e-mail)"</string> + <string name="kg_login_password_hint" msgid="9057289103827298549">"Mot de passe"</string> + <string name="kg_login_submit_button" msgid="5355904582674054702">"Connexion"</string> + <string name="kg_login_invalid_input" msgid="5754664119319872197">"Nom d\'utilisateur ou mot de passe non valide."</string> + <string name="kg_login_account_recovery_hint" msgid="5690709132841752974">"Vous avez oublié votre nom d\'utilisateur ou votre mot de passe ?"\n"Rendez-vous sur la page "<b>"google.com/accounts/recovery"</b>"."</string> + <string name="kg_login_checking_password" msgid="1052685197710252395">"Vérification du compte en cours…"</string> + <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="8276745642049502550">"Vous avez saisi un code PIN incorrect à <xliff:g id="NUMBER_0">%d</xliff:g> reprises. "\n\n"Veuillez réessayer dans <xliff:g id="NUMBER_1">%d</xliff:g> secondes."</string> + <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="7813713389422226531">"Vous avez saisi un mot de passe incorrect à <xliff:g id="NUMBER_0">%d</xliff:g> reprises. "\n\n"Veuillez réessayer dans <xliff:g id="NUMBER_1">%d</xliff:g> secondes."</string> + <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="74089475965050805">"Vous avez dessiné un schéma de déverrouillage incorrect à <xliff:g id="NUMBER_0">%d</xliff:g> reprises."\n\n"Veuillez réessayer dans <xliff:g id="NUMBER_1">%d</xliff:g> secondes."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="1575557200627128949">"Vous avez tenté de déverrouiller la tablette de façon incorrecte à <xliff:g id="NUMBER_0">%d</xliff:g> reprises. Si vous échouez encore <xliff:g id="NUMBER_1">%d</xliff:g> fois, sa configuration d\'usine sera rétablie, et toutes les données utilisateur seront perdues."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="4051015943038199910">"Vous avez tenté de déverrouiller le téléphone de façon incorrecte à <xliff:g id="NUMBER_0">%d</xliff:g> reprises. Si vous échouez encore <xliff:g id="NUMBER_1">%d</xliff:g> fois, sa configuration d\'usine sera rétablie, et toutes les données utilisateur seront perdues."</string> + <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2072996269148483637">"Vous avez tenté de déverrouiller la tablette de façon incorrecte à <xliff:g id="NUMBER">%d</xliff:g> reprises. Sa configuration d\'usine va être rétablie."</string> + <string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"Vous avez tenté de déverrouiller le téléphone de façon incorrecte à <xliff:g id="NUMBER">%d</xliff:g> reprises. Sa configuration d\'usine va être rétablie."</string> + <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Vous avez dessiné un schéma de déverrouillage incorrect à <xliff:g id="NUMBER_0">%d</xliff:g> reprises. Si vous échouez encore <xliff:g id="NUMBER_1">%d</xliff:g> fois, vous devrez déverrouiller votre tablette à l\'aide d\'un compte de messagerie électronique."\n\n" Veuillez réessayer dans <xliff:g id="NUMBER_2">%d</xliff:g> secondes."</string> + <string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"Vous avez dessiné un schéma de déverrouillage incorrect à <xliff:g id="NUMBER_0">%d</xliff:g> reprises. Si vous échouez encore <xliff:g id="NUMBER_1">%d</xliff:g> fois, vous devrez déverrouiller votre téléphone à l\'aide d\'un compte de messagerie électronique."\n\n" Veuillez réessayer dans <xliff:g id="NUMBER_2">%d</xliff:g> secondes."</string> + <string name="kg_text_message_separator" product="default" msgid="4160700433287233771">" — "</string> + <string name="kg_reordering_delete_drop_target_text" msgid="7899202978204438708">"Supprimer"</string> + <!-- no translation found for keyguard_transport_prev_description (8229108430245669854) --> + <skip /> + <!-- no translation found for keyguard_transport_next_description (4299258300283778305) --> + <skip /> + <!-- no translation found for keyguard_transport_pause_description (5093073338238310224) --> + <skip /> + <!-- no translation found for keyguard_transport_play_description (2924628863741150956) --> + <skip /> + <!-- no translation found for keyguard_transport_stop_description (3084179324810575787) --> + <skip /> + <!-- no translation found for keyguard_carrier_default (8700650403054042153) --> + <skip /> +</resources> diff --git a/packages/Keyguard/res/values-hi/strings.xml b/packages/Keyguard/res/values-hi/strings.xml new file mode 100644 index 000000000000..39378c7f1dd6 --- /dev/null +++ b/packages/Keyguard/res/values-hi/strings.xml @@ -0,0 +1,164 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* //device/apps/common/assets/res/any/strings.xml +** +** Copyright 2006, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="keyguard_password_enter_pin_code" msgid="3037685796058495017">"पिन कोड लिखें"</string> + <string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"PUK और नया पिन कोड लिखें"</string> + <string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK कोड"</string> + <string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"नया पिन कोड"</string> + <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"पासवर्ड लिखने के लिए स्पर्श करें"</font></string> + <string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"अनलॉक करने के लिए पासवर्ड लिखें"</string> + <string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"अनलॉक करने के लिए पिन लिखें"</string> + <string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"गलत पिन कोड."</string> + <string name="keyguard_label_text" msgid="861796461028298424">"अनलॉक करने के लिए, मेनू दबाएं और फिर 0 दबाएं."</string> + <string name="faceunlock_multiple_failures" msgid="754137583022792429">"फेस अनलॉक के अधिकतम प्रयासों की सीमा पार हो गई"</string> + <!-- no translation found for keyguard_charged (3272223906073492454) --> + <skip /> + <!-- no translation found for keyguard_plugged_in (8117572000639998388) --> + <skip /> + <!-- no translation found for keyguard_low_battery (8143808018719173859) --> + <skip /> + <!-- no translation found for keyguard_instructions_when_pattern_disabled (1332288268600329841) --> + <skip /> + <!-- no translation found for keyguard_network_locked_message (9169717779058037168) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message_short (494980561304211931) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (1445849005909260039) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (3481110395508637643) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions (5210891509995942250) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions_long (5968985489463870358) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_message_short (8340813989586622356) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5892940909699723544) --> + <skip /> + <!-- no translation found for keyguard_sim_locked_message (6875773413306380902) --> + <skip /> + <!-- no translation found for keyguard_sim_puk_locked_message (3747232467471801633) --> + <skip /> + <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (7975221805033614426) --> + <skip /> + <string name="keyguard_accessibility_widget_changed" msgid="5678624624681400191">"%1$s. %3$d विजेट में से %2$d."</string> + <string name="keyguard_accessibility_add_widget" msgid="8273277058724924654">"विजेट जोड़ें"</string> + <string name="keyguard_accessibility_widget_empty_slot" msgid="1281505703307930757">"रिक्त"</string> + <string name="keyguard_accessibility_unlock_area_expanded" msgid="2278106022311170299">"अनलॉक क्षेत्र को विस्तृत कर दिया गया."</string> + <string name="keyguard_accessibility_unlock_area_collapsed" msgid="6366992066936076396">"अनलॉक क्षेत्र को संक्षिप्त कर दिया गया."</string> + <string name="keyguard_accessibility_widget" msgid="6527131039741808240">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g> विजेट."</string> + <string name="keyguard_accessibility_user_selector" msgid="1226798370913698896">"उपयोगकर्ता चयनकर्ता"</string> + <string name="keyguard_accessibility_status" msgid="8008264603935930611">"स्थिति"</string> + <string name="keyguard_accessibility_camera" msgid="8904231194181114603">"कैमरा"</string> + <string name="keygaurd_accessibility_media_controls" msgid="262209654292161806">"मीडिया नियंत्रण"</string> + <string name="keyguard_accessibility_widget_reorder_start" msgid="8736853615588828197">"विजेट पुनः क्रमित करना प्रारंभ."</string> + <string name="keyguard_accessibility_widget_reorder_end" msgid="7170190950870468320">"विजेट पुनः क्रमित करना समाप्त."</string> + <string name="keyguard_accessibility_widget_deleted" msgid="4426204263929224434">"विजेट <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> को हटा दिया गया."</string> + <string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"अनलॉक क्षेत्र विस्तृत करें."</string> + <string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"स्लाइड अनलॉक."</string> + <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"प्रतिमान अनलॉक."</string> + <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"फेस अनलॉक."</string> + <string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"पिन अनलॉक."</string> + <string name="keyguard_accessibility_password_unlock" msgid="7675777623912155089">"पासवर्ड अनलॉक."</string> + <string name="keyguard_accessibility_pattern_area" msgid="7679891324509597904">"प्रतिमान क्षेत्र."</string> + <string name="keyguard_accessibility_slide_area" msgid="6736064494019979544">"स्लाइड क्षेत्र."</string> + <!-- no translation found for keyguard_accessibility_transport_prev_description (1337286538318543555) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_next_description (7073928300444909320) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_pause_description (8455979545295224302) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_play_description (8146417789511154044) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_stop_description (7656358482980912216) --> + <skip /> + <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> + <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string> + <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> + <string name="keyboardview_keycode_alt" msgid="4856868820040051939">"Alt"</string> + <string name="keyboardview_keycode_cancel" msgid="1203984017245783244">"रद्द करें"</string> + <string name="keyboardview_keycode_delete" msgid="3337914833206635744">"हटाएं"</string> + <string name="keyboardview_keycode_done" msgid="1992571118466679775">"पूर्ण"</string> + <string name="keyboardview_keycode_mode_change" msgid="4547387741906537519">"Mode change"</string> + <string name="keyboardview_keycode_shift" msgid="2270748814315147690">"Shift"</string> + <string name="keyboardview_keycode_enter" msgid="2985864015076059467">"Enter"</string> + <string name="description_target_unlock" msgid="2228524900439801453">"अनलॉक करें"</string> + <string name="description_target_camera" msgid="969071997552486814">"कैमरा"</string> + <string name="description_target_silent" msgid="893551287746522182">"मौन"</string> + <string name="description_target_soundon" msgid="30052466675500172">"ध्वनि चालू करें"</string> + <string name="description_target_search" msgid="3091587249776033139">"खोजें"</string> + <string name="description_direction_up" msgid="7169032478259485180">"<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> के लिए ऊपर स्लाइड करें."</string> + <string name="description_direction_down" msgid="5087739728639014595">"<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> के लिए नीचे स्लाइड करें."</string> + <string name="description_direction_left" msgid="7207478719805562165">"<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> के लिए बाएं स्लाइड करें."</string> + <string name="description_direction_right" msgid="8034433242579600980">"<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> के लिए दाएं स्लाइड करें."</string> + <string name="user_switched" msgid="3768006783166984410">"वर्तमान उपयोगकर्ता <xliff:g id="NAME">%1$s</xliff:g>."</string> + <string name="kg_emergency_call_label" msgid="684946192523830531">"आपातकालीन कॉल"</string> + <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"प्रतिमान भूल गए"</string> + <string name="kg_wrong_pattern" msgid="1850806070801358830">"गलत प्रतिमान"</string> + <string name="kg_wrong_password" msgid="2333281762128113157">"गलत पासवर्ड"</string> + <string name="kg_wrong_pin" msgid="1131306510833563801">"गलत PIN"</string> + <string name="kg_too_many_failed_attempts_countdown" msgid="6358110221603297548">"<xliff:g id="NUMBER">%d</xliff:g> सेकंड में पुन: प्रयास करें."</string> + <string name="kg_pattern_instructions" msgid="398978611683075868">"अपना प्रतिमान आरेखित करें"</string> + <string name="kg_sim_pin_instructions" msgid="2319508550934557331">"सिम PIN डालें"</string> + <string name="kg_pin_instructions" msgid="2377242233495111557">"PIN डालें"</string> + <string name="kg_password_instructions" msgid="5753646556186936819">"पासवर्ड डालें"</string> + <string name="kg_puk_enter_puk_hint" msgid="453227143861735537">"सिम अब अक्षम हो गई है. जारी रखने के लिए PUK कोड डालें. विवरण के लिए वाहक से संपर्क करें."</string> + <string name="kg_puk_enter_pin_hint" msgid="7871604527429602024">"इच्छित पिन कोड डालें"</string> + <string name="kg_enter_confirm_pin_hint" msgid="325676184762529976">"इच्छित पिन कोड की पुष्टि करें"</string> + <string name="kg_sim_unlock_progress_dialog_message" msgid="8950398016976865762">"SIM कार्ड अनलॉक कर रहा है…"</string> + <string name="kg_password_wrong_pin_code" msgid="1139324887413846912">"गलत PIN कोड."</string> + <string name="kg_invalid_sim_pin_hint" msgid="8795159358110620001">"ऐसा PIN लिखें, जो 4 से 8 अंकों का हो."</string> + <string name="kg_invalid_sim_puk_hint" msgid="7553388325654369575">"PUK कोड 8 या अधिक संख्या वाला होना चाहिए."</string> + <string name="kg_invalid_puk" msgid="3638289409676051243">"सही PUK कोड पुन: डालें. बार-बार प्रयास करने से सिम स्थायी रूप से अक्षम हो जाएगी."</string> + <string name="kg_invalid_confirm_pin_hint" product="default" msgid="7003469261464593516">"पिन कोड का मिलान नहीं होता"</string> + <string name="kg_login_too_many_attempts" msgid="6486842094005698475">"बहुत अधिक प्रतिमान प्रयास"</string> + <string name="kg_login_instructions" msgid="1100551261265506448">"अनलॉक करने के लिए, अपने Google खाते से साइन इन करें."</string> + <string name="kg_login_username_hint" msgid="5718534272070920364">"उपयोगकर्ता नाम (ईमेल)"</string> + <string name="kg_login_password_hint" msgid="9057289103827298549">"पासवर्ड"</string> + <string name="kg_login_submit_button" msgid="5355904582674054702">"साइन इन करें"</string> + <string name="kg_login_invalid_input" msgid="5754664119319872197">"अमान्य उपयोगकर्ता नाम या पासवर्ड."</string> + <string name="kg_login_account_recovery_hint" msgid="5690709132841752974">"अपना उपयोगकर्ता नाम या पासवर्ड भूल गए?"\n" "<b>"google.com/accounts/recovery"</b>" पर जाएं."</string> + <string name="kg_login_checking_password" msgid="1052685197710252395">"खाते की जांच की जा रही है…"</string> + <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="8276745642049502550">"आप अपना PIN <xliff:g id="NUMBER_0">%d</xliff:g> बार गलत तरीके से लिख चुके हैं. "\n\n" <xliff:g id="NUMBER_1">%d</xliff:g> सेकंड में पुन: प्रयास करें."</string> + <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="7813713389422226531">"आप अपना पासवर्ड <xliff:g id="NUMBER_0">%d</xliff:g> बार गलत तरीके से लिख चुके हैं. "\n\n" <xliff:g id="NUMBER_1">%d</xliff:g> सेकंड में पुन: प्रयास करें."</string> + <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="74089475965050805">"आपने अपना अनलॉक प्रतिमान <xliff:g id="NUMBER_0">%d</xliff:g> बार गलत तरीके से आरेखित किया है. "\n\n" <xliff:g id="NUMBER_1">%d</xliff:g> सेकंड में पुन: प्रयास करें."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="1575557200627128949">"आप टेबलेट को अनलॉक करने के लिए <xliff:g id="NUMBER_0">%d</xliff:g> बार गलत तरीके से प्रयास कर चुके हैं. <xliff:g id="NUMBER_1">%d</xliff:g> और असफल प्रयासों के बाद, टेबलेट फ़ैक्टरी डिफ़ॉल्ट पर रीसेट हो जाएगा और सभी उपयोगकर्ता डेटा खो जाएगा."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="4051015943038199910">"आप फ़ोन को अनलॉक करने के लिए <xliff:g id="NUMBER_0">%d</xliff:g> बार गलत तरीके से प्रयास कर चुके हैं. <xliff:g id="NUMBER_1">%d</xliff:g> और असफल प्रयासों के बाद, फ़ोन फ़ैक्टरी डिफ़ॉल्ट पर रीसेट हो जाएगा और सभी उपयोगकर्ता डेटा खो जाएगा."</string> + <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2072996269148483637">"आप टेबलेट को अनलॉक करने के लिए <xliff:g id="NUMBER">%d</xliff:g> बार गलत तरीके से प्रयास कर चुके हैं. टेबलेट अब फ़ैक्टरी डिफ़ॉल्ट पर रीसेट हो जाएगा."</string> + <string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"आप फ़ोन को अनलॉक करने के लिए <xliff:g id="NUMBER">%d</xliff:g> बार गलत तरीके से प्रयास कर चुके हैं. फ़ोन अब फ़ैक्टरी डिफ़ॉल्ट पर रीसेट हो जाएगा."</string> + <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"आपने अपने अनलॉक प्रतिमान को <xliff:g id="NUMBER_0">%d</xliff:g> बार गलत तरीके से आरेखित किया है. <xliff:g id="NUMBER_1">%d</xliff:g> और असफल प्रयासों के बाद, आपसे अपने टेबलेट को किसी ईमेल खाते के उपयोग से अनलॉक करने के लिए कहा जाएगा."\n\n" <xliff:g id="NUMBER_2">%d</xliff:g> सेकंड में पुन: प्रयास करें."</string> + <string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"आपने अपने अनलॉक प्रतिमान को <xliff:g id="NUMBER_0">%d</xliff:g> बार गलत तरीके से आरेखित किया है. <xliff:g id="NUMBER_1">%d</xliff:g> और असफल प्रयासों के बाद, आपसे अपने फ़ोन को किसी ईमेल खाते का उपयोग करके अनलॉक करने के लिए कहा जाएगा."\n\n" <xliff:g id="NUMBER_2">%d</xliff:g> सेकंड में पुन: प्रयास करें."</string> + <string name="kg_text_message_separator" product="default" msgid="4160700433287233771">" — "</string> + <string name="kg_reordering_delete_drop_target_text" msgid="7899202978204438708">"निकालें"</string> + <!-- no translation found for keyguard_transport_prev_description (8229108430245669854) --> + <skip /> + <!-- no translation found for keyguard_transport_next_description (4299258300283778305) --> + <skip /> + <!-- no translation found for keyguard_transport_pause_description (5093073338238310224) --> + <skip /> + <!-- no translation found for keyguard_transport_play_description (2924628863741150956) --> + <skip /> + <!-- no translation found for keyguard_transport_stop_description (3084179324810575787) --> + <skip /> + <!-- no translation found for keyguard_carrier_default (8700650403054042153) --> + <skip /> +</resources> diff --git a/packages/Keyguard/res/values-hr/strings.xml b/packages/Keyguard/res/values-hr/strings.xml new file mode 100644 index 000000000000..36b738a85f5e --- /dev/null +++ b/packages/Keyguard/res/values-hr/strings.xml @@ -0,0 +1,164 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* //device/apps/common/assets/res/any/strings.xml +** +** Copyright 2006, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="keyguard_password_enter_pin_code" msgid="3037685796058495017">"Unesite PIN kôd"</string> + <string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Unesite PUK i novi PIN kôd"</string> + <string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK kôd"</string> + <string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Novi PIN kôd"</string> + <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Dodirnite za tipkanje zaporke"</font></string> + <string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Unesite zaporku za otključavanje"</string> + <string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Unesite PIN za otključavanje"</string> + <string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Netočan PIN kôd."</string> + <string name="keyguard_label_text" msgid="861796461028298424">"Za otključavanje pritisnite Izbornik pa 0."</string> + <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Premašen je maksimalni broj Otključavanja licem"</string> + <!-- no translation found for keyguard_charged (3272223906073492454) --> + <skip /> + <!-- no translation found for keyguard_plugged_in (8117572000639998388) --> + <skip /> + <!-- no translation found for keyguard_low_battery (8143808018719173859) --> + <skip /> + <!-- no translation found for keyguard_instructions_when_pattern_disabled (1332288268600329841) --> + <skip /> + <!-- no translation found for keyguard_network_locked_message (9169717779058037168) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message_short (494980561304211931) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (1445849005909260039) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (3481110395508637643) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions (5210891509995942250) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions_long (5968985489463870358) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_message_short (8340813989586622356) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5892940909699723544) --> + <skip /> + <!-- no translation found for keyguard_sim_locked_message (6875773413306380902) --> + <skip /> + <!-- no translation found for keyguard_sim_puk_locked_message (3747232467471801633) --> + <skip /> + <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (7975221805033614426) --> + <skip /> + <string name="keyguard_accessibility_widget_changed" msgid="5678624624681400191">"%1$s. Widget %2$d od %3$d."</string> + <string name="keyguard_accessibility_add_widget" msgid="8273277058724924654">"Dodavanje widgeta."</string> + <string name="keyguard_accessibility_widget_empty_slot" msgid="1281505703307930757">"Prazno"</string> + <string name="keyguard_accessibility_unlock_area_expanded" msgid="2278106022311170299">"Područje za otključavanje prošireno je."</string> + <string name="keyguard_accessibility_unlock_area_collapsed" msgid="6366992066936076396">"Područje za otključavanje sažeto je."</string> + <string name="keyguard_accessibility_widget" msgid="6527131039741808240">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g> widget."</string> + <string name="keyguard_accessibility_user_selector" msgid="1226798370913698896">"Birač korisnika"</string> + <string name="keyguard_accessibility_status" msgid="8008264603935930611">"Status"</string> + <string name="keyguard_accessibility_camera" msgid="8904231194181114603">"Fotoaparat"</string> + <string name="keygaurd_accessibility_media_controls" msgid="262209654292161806">"Nadzor medija"</string> + <string name="keyguard_accessibility_widget_reorder_start" msgid="8736853615588828197">"Pokrenuta je promjena redoslijeda widgeta."</string> + <string name="keyguard_accessibility_widget_reorder_end" msgid="7170190950870468320">"Završena je promjena redoslijeda widgeta."</string> + <string name="keyguard_accessibility_widget_deleted" msgid="4426204263929224434">"Widget <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> izbrisan je."</string> + <string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"Proširivanje područja za otključavanje."</string> + <string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"Otključavanje klizanjem."</string> + <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"Uzorak za otključavanje."</string> + <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"Otključavanje licem."</string> + <string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"Otključavanje PIN-om."</string> + <string name="keyguard_accessibility_password_unlock" msgid="7675777623912155089">"Otključavanje zaporkom."</string> + <string name="keyguard_accessibility_pattern_area" msgid="7679891324509597904">"Područje uzorka."</string> + <string name="keyguard_accessibility_slide_area" msgid="6736064494019979544">"Područje klizanja."</string> + <!-- no translation found for keyguard_accessibility_transport_prev_description (1337286538318543555) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_next_description (7073928300444909320) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_pause_description (8455979545295224302) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_play_description (8146417789511154044) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_stop_description (7656358482980912216) --> + <skip /> + <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> + <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string> + <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> + <string name="keyboardview_keycode_alt" msgid="4856868820040051939">"Alt"</string> + <string name="keyboardview_keycode_cancel" msgid="1203984017245783244">"Odustani"</string> + <string name="keyboardview_keycode_delete" msgid="3337914833206635744">"Izbriši"</string> + <string name="keyboardview_keycode_done" msgid="1992571118466679775">"Gotovo"</string> + <string name="keyboardview_keycode_mode_change" msgid="4547387741906537519">"Promjena načina"</string> + <string name="keyboardview_keycode_shift" msgid="2270748814315147690">"Shift"</string> + <string name="keyboardview_keycode_enter" msgid="2985864015076059467">"Enter"</string> + <string name="description_target_unlock" msgid="2228524900439801453">"Otključaj"</string> + <string name="description_target_camera" msgid="969071997552486814">"Fotoaparat"</string> + <string name="description_target_silent" msgid="893551287746522182">"Bešumno"</string> + <string name="description_target_soundon" msgid="30052466675500172">"Zvuk je uključen"</string> + <string name="description_target_search" msgid="3091587249776033139">"Pretraživanje"</string> + <string name="description_direction_up" msgid="7169032478259485180">"Kliznite prema gore za <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_down" msgid="5087739728639014595">"Kliznite prema dolje za <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_left" msgid="7207478719805562165">"Kliznite lijevo za <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_right" msgid="8034433242579600980">"Kliznite desno za <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="user_switched" msgid="3768006783166984410">"Trenutačni korisnik <xliff:g id="NAME">%1$s</xliff:g>."</string> + <string name="kg_emergency_call_label" msgid="684946192523830531">"Hitan poziv"</string> + <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Zaboravili ste obrazac"</string> + <string name="kg_wrong_pattern" msgid="1850806070801358830">"Pogrešan obrazac"</string> + <string name="kg_wrong_password" msgid="2333281762128113157">"Pogrešna zaporka"</string> + <string name="kg_wrong_pin" msgid="1131306510833563801">"Pogrešan PIN"</string> + <string name="kg_too_many_failed_attempts_countdown" msgid="6358110221603297548">"Pokušajte ponovo za <xliff:g id="NUMBER">%d</xliff:g> s."</string> + <string name="kg_pattern_instructions" msgid="398978611683075868">"Iscrtajte svoj obrazac"</string> + <string name="kg_sim_pin_instructions" msgid="2319508550934557331">"Unesite PIN za SIM"</string> + <string name="kg_pin_instructions" msgid="2377242233495111557">"Unesite PIN"</string> + <string name="kg_password_instructions" msgid="5753646556186936819">"Unesite zaporku"</string> + <string name="kg_puk_enter_puk_hint" msgid="453227143861735537">"SIM je sad onemogućen. Unesite PUK kôd da biste nastavili. Kontaktirajte operatera za pojedinosti."</string> + <string name="kg_puk_enter_pin_hint" msgid="7871604527429602024">"Upišite željeni PIN kôd"</string> + <string name="kg_enter_confirm_pin_hint" msgid="325676184762529976">"Potvrdite željeni PIN kôd"</string> + <string name="kg_sim_unlock_progress_dialog_message" msgid="8950398016976865762">"Otključavanje SIM kartice…"</string> + <string name="kg_password_wrong_pin_code" msgid="1139324887413846912">"Netočan PIN kôd."</string> + <string name="kg_invalid_sim_pin_hint" msgid="8795159358110620001">"Unesite PIN koji ima od 4 do 8 brojeva."</string> + <string name="kg_invalid_sim_puk_hint" msgid="7553388325654369575">"PUK kôd treba imati 8 brojeva ili više."</string> + <string name="kg_invalid_puk" msgid="3638289409676051243">"Ponovo unesite ispravan PUK kôd. Ponovljeni pokušaji trajno će onemogućiti SIM."</string> + <string name="kg_invalid_confirm_pin_hint" product="default" msgid="7003469261464593516">"PIN kodovi nisu jednaki"</string> + <string name="kg_login_too_many_attempts" msgid="6486842094005698475">"Previše pokušaja iscrtavanja obrasca"</string> + <string name="kg_login_instructions" msgid="1100551261265506448">"Za otključavanje prijavite se Google računom."</string> + <string name="kg_login_username_hint" msgid="5718534272070920364">"Korisničko ime (e-pošta)"</string> + <string name="kg_login_password_hint" msgid="9057289103827298549">"Zaporka"</string> + <string name="kg_login_submit_button" msgid="5355904582674054702">"Prijava"</string> + <string name="kg_login_invalid_input" msgid="5754664119319872197">"Nevažeće korisničko ime ili zaporka."</string> + <string name="kg_login_account_recovery_hint" msgid="5690709132841752974">"Zaboravili ste korisničko ime ili zaporku?"\n"Posjetite "<b>"google.com/accounts/recovery"</b>"."</string> + <string name="kg_login_checking_password" msgid="1052685197710252395">"Provjera računa..."</string> + <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="8276745642049502550">"Netočno ste napisali PIN <xliff:g id="NUMBER_0">%d</xliff:g> puta. "\n\n"Pokušajte ponovo za <xliff:g id="NUMBER_1">%d</xliff:g> s."</string> + <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="7813713389422226531">"Netočno ste napisali zaporku <xliff:g id="NUMBER_0">%d</xliff:g> puta. "\n\n"Pokušajte ponovo za <xliff:g id="NUMBER_1">%d</xliff:g> s."</string> + <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="74089475965050805">"Netočno ste iscrtali obrazac za otključavanje <xliff:g id="NUMBER_0">%d</xliff:g> puta. "\n\n"Pokušajte ponovo za <xliff:g id="NUMBER_1">%d</xliff:g> s."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="1575557200627128949">"Netočno ste pokušali otključati tabletno računalo <xliff:g id="NUMBER_0">%d</xliff:g> puta. Ono će se vratiti na tvorničke postavke i svi korisnički podaci bit će izgubljeni nakon još ovoliko neuspjelih pokušaja: <xliff:g id="NUMBER_1">%d</xliff:g>."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="4051015943038199910">"Netočno ste pokušali otključati telefon <xliff:g id="NUMBER_0">%d</xliff:g> puta. On će se vratiti na tvorničke postavke i svi korisnički podaci bit će izgubljeni nakon još ovoliko neuspjelih pokušaja: <xliff:g id="NUMBER_1">%d</xliff:g>."</string> + <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2072996269148483637">"Netočno ste pokušali otključati tabletno računalo <xliff:g id="NUMBER">%d</xliff:g> puta. Sada će se vratiti na tvorničke postavke."</string> + <string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"Netočno ste pokušali otključati telefon <xliff:g id="NUMBER">%d</xliff:g> puta. Sada će se vratiti na tvorničke postavke."</string> + <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Netočno ste iscrtali obrazac za otključavanje <xliff:g id="NUMBER_0">%d</xliff:g> puta. Nakon još ovoliko neuspješnih pokušaja: <xliff:g id="NUMBER_1">%d</xliff:g> morat ćete otključati tabletno računalo pomoću računa e-pošte."\n\n" Pokušajte ponovo za <xliff:g id="NUMBER_2">%d</xliff:g> s."</string> + <string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"Netočno ste iscrtali obrazac za otključavanje <xliff:g id="NUMBER_0">%d</xliff:g> puta. Nakon još ovoliko neuspješnih pokušaja: <xliff:g id="NUMBER_1">%d</xliff:g> morat ćete otključati telefon pomoću računa e-pošte."\n\n" Pokušajte ponovo za <xliff:g id="NUMBER_2">%d</xliff:g> s."</string> + <string name="kg_text_message_separator" product="default" msgid="4160700433287233771">" – "</string> + <string name="kg_reordering_delete_drop_target_text" msgid="7899202978204438708">"Ukloni"</string> + <!-- no translation found for keyguard_transport_prev_description (8229108430245669854) --> + <skip /> + <!-- no translation found for keyguard_transport_next_description (4299258300283778305) --> + <skip /> + <!-- no translation found for keyguard_transport_pause_description (5093073338238310224) --> + <skip /> + <!-- no translation found for keyguard_transport_play_description (2924628863741150956) --> + <skip /> + <!-- no translation found for keyguard_transport_stop_description (3084179324810575787) --> + <skip /> + <!-- no translation found for keyguard_carrier_default (8700650403054042153) --> + <skip /> +</resources> diff --git a/packages/Keyguard/res/values-hu/strings.xml b/packages/Keyguard/res/values-hu/strings.xml new file mode 100644 index 000000000000..07bcb2525af4 --- /dev/null +++ b/packages/Keyguard/res/values-hu/strings.xml @@ -0,0 +1,164 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* //device/apps/common/assets/res/any/strings.xml +** +** Copyright 2006, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="keyguard_password_enter_pin_code" msgid="3037685796058495017">"Írja be a PIN kódot"</string> + <string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Írja be a PUK kódot, majd az új PIN kódot"</string> + <string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK kód"</string> + <string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Új PIN kód"</string> + <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Érintsen jelszó megadásához"</font></string> + <string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"A feloldáshoz írja be a jelszót"</string> + <string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Feloldáshoz írja be a PIN kódot"</string> + <string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Helytelen PIN kód."</string> + <string name="keyguard_label_text" msgid="861796461028298424">"A feloldáshoz nyomja meg a Menü, majd a 0 gombot."</string> + <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Elérte az arcalapú feloldási kísérletek maximális számát"</string> + <!-- no translation found for keyguard_charged (3272223906073492454) --> + <skip /> + <!-- no translation found for keyguard_plugged_in (8117572000639998388) --> + <skip /> + <!-- no translation found for keyguard_low_battery (8143808018719173859) --> + <skip /> + <!-- no translation found for keyguard_instructions_when_pattern_disabled (1332288268600329841) --> + <skip /> + <!-- no translation found for keyguard_network_locked_message (9169717779058037168) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message_short (494980561304211931) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (1445849005909260039) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (3481110395508637643) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions (5210891509995942250) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions_long (5968985489463870358) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_message_short (8340813989586622356) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5892940909699723544) --> + <skip /> + <!-- no translation found for keyguard_sim_locked_message (6875773413306380902) --> + <skip /> + <!-- no translation found for keyguard_sim_puk_locked_message (3747232467471801633) --> + <skip /> + <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (7975221805033614426) --> + <skip /> + <string name="keyguard_accessibility_widget_changed" msgid="5678624624681400191">"%1$s. Modul %3$d/%2$d"</string> + <string name="keyguard_accessibility_add_widget" msgid="8273277058724924654">"Modul hozzáadása."</string> + <string name="keyguard_accessibility_widget_empty_slot" msgid="1281505703307930757">"Üres"</string> + <string name="keyguard_accessibility_unlock_area_expanded" msgid="2278106022311170299">"Feloldási terület kiterjesztve."</string> + <string name="keyguard_accessibility_unlock_area_collapsed" msgid="6366992066936076396">"Feloldási terület összecsukva."</string> + <string name="keyguard_accessibility_widget" msgid="6527131039741808240">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g> modul."</string> + <string name="keyguard_accessibility_user_selector" msgid="1226798370913698896">"Felhasználóválasztó"</string> + <string name="keyguard_accessibility_status" msgid="8008264603935930611">"Állapot"</string> + <string name="keyguard_accessibility_camera" msgid="8904231194181114603">"Kamera"</string> + <string name="keygaurd_accessibility_media_controls" msgid="262209654292161806">"Médiaelemek vezérlője"</string> + <string name="keyguard_accessibility_widget_reorder_start" msgid="8736853615588828197">"A modulátrendezés elkezdődött."</string> + <string name="keyguard_accessibility_widget_reorder_end" msgid="7170190950870468320">"A modulátrendezés véget ért."</string> + <string name="keyguard_accessibility_widget_deleted" msgid="4426204263929224434">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g> modul törölve."</string> + <string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"A feloldási terület kiterjesztése."</string> + <string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"Feloldás csúsztatással"</string> + <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"Feloldás mintával"</string> + <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"Arcalapú feloldás"</string> + <string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"Feloldás PIN kóddal"</string> + <string name="keyguard_accessibility_password_unlock" msgid="7675777623912155089">"Feloldás jelszóval"</string> + <string name="keyguard_accessibility_pattern_area" msgid="7679891324509597904">"Mintaterület"</string> + <string name="keyguard_accessibility_slide_area" msgid="6736064494019979544">"Csúsztatási terület"</string> + <!-- no translation found for keyguard_accessibility_transport_prev_description (1337286538318543555) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_next_description (7073928300444909320) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_pause_description (8455979545295224302) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_play_description (8146417789511154044) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_stop_description (7656358482980912216) --> + <skip /> + <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> + <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string> + <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> + <string name="keyboardview_keycode_alt" msgid="4856868820040051939">"Alt"</string> + <string name="keyboardview_keycode_cancel" msgid="1203984017245783244">"Mégse"</string> + <string name="keyboardview_keycode_delete" msgid="3337914833206635744">"Delete"</string> + <string name="keyboardview_keycode_done" msgid="1992571118466679775">"Kész"</string> + <string name="keyboardview_keycode_mode_change" msgid="4547387741906537519">"Mód váltása"</string> + <string name="keyboardview_keycode_shift" msgid="2270748814315147690">"Shift"</string> + <string name="keyboardview_keycode_enter" msgid="2985864015076059467">"Enter"</string> + <string name="description_target_unlock" msgid="2228524900439801453">"Feloldás"</string> + <string name="description_target_camera" msgid="969071997552486814">"Kamera"</string> + <string name="description_target_silent" msgid="893551287746522182">"Némítás"</string> + <string name="description_target_soundon" msgid="30052466675500172">"Hang bekapcsolása"</string> + <string name="description_target_search" msgid="3091587249776033139">"Keresés"</string> + <string name="description_direction_up" msgid="7169032478259485180">"A(z) <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> művelethez csúsztassa felfelé."</string> + <string name="description_direction_down" msgid="5087739728639014595">"A(z) <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> művelethez csúsztassa lefelé."</string> + <string name="description_direction_left" msgid="7207478719805562165">"A(z) <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> művelethez csúsztassa balra."</string> + <string name="description_direction_right" msgid="8034433242579600980">"A(z) <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> művelethez csúsztassa jobbra."</string> + <string name="user_switched" msgid="3768006783166984410">"<xliff:g id="NAME">%1$s</xliff:g> az aktuális felhasználó."</string> + <string name="kg_emergency_call_label" msgid="684946192523830531">"Segélyhívás"</string> + <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Elfelejtett minta"</string> + <string name="kg_wrong_pattern" msgid="1850806070801358830">"Helytelen minta"</string> + <string name="kg_wrong_password" msgid="2333281762128113157">"Helytelen jelszó"</string> + <string name="kg_wrong_pin" msgid="1131306510833563801">"Helytelen PIN kód"</string> + <string name="kg_too_many_failed_attempts_countdown" msgid="6358110221603297548">"Próbálkozzon újra <xliff:g id="NUMBER">%d</xliff:g> másodperc múlva."</string> + <string name="kg_pattern_instructions" msgid="398978611683075868">"Rajzolja le a mintát"</string> + <string name="kg_sim_pin_instructions" msgid="2319508550934557331">"Adja meg a SIM kártya PIN kódját"</string> + <string name="kg_pin_instructions" msgid="2377242233495111557">"Adja meg a PIN kódot"</string> + <string name="kg_password_instructions" msgid="5753646556186936819">"Írja be a jelszót"</string> + <string name="kg_puk_enter_puk_hint" msgid="453227143861735537">"A SIM kártya le van tiltva. A folytatáshoz adja meg a PUK kódot. A részletekért vegye fel a kapcsolatot szolgáltatójával."</string> + <string name="kg_puk_enter_pin_hint" msgid="7871604527429602024">"Kívánt PIN kód megadása"</string> + <string name="kg_enter_confirm_pin_hint" msgid="325676184762529976">"Kívánt PIN kód megerősítése"</string> + <string name="kg_sim_unlock_progress_dialog_message" msgid="8950398016976865762">"SIM kártya feloldása..."</string> + <string name="kg_password_wrong_pin_code" msgid="1139324887413846912">"Helytelen PIN kód."</string> + <string name="kg_invalid_sim_pin_hint" msgid="8795159358110620001">"4–8 számjegyű PIN kódot írjon be."</string> + <string name="kg_invalid_sim_puk_hint" msgid="7553388325654369575">"A PUK kód legalább 8 számjegyből kell, hogy álljon."</string> + <string name="kg_invalid_puk" msgid="3638289409676051243">"Adja meg újra a helyes PUK kódot. Az ismételt próbálkozással véglegesen letiltja a SIM kártyát."</string> + <string name="kg_invalid_confirm_pin_hint" product="default" msgid="7003469261464593516">"A PIN kódok nem egyeznek."</string> + <string name="kg_login_too_many_attempts" msgid="6486842094005698475">"Túl sok mintarajzolási próbálkozás"</string> + <string name="kg_login_instructions" msgid="1100551261265506448">"A feloldáshoz jelentkezzen be Google Fiókjával."</string> + <string name="kg_login_username_hint" msgid="5718534272070920364">"Felhasználónév (e-mail cím)"</string> + <string name="kg_login_password_hint" msgid="9057289103827298549">"Jelszó"</string> + <string name="kg_login_submit_button" msgid="5355904582674054702">"Bejelentkezés"</string> + <string name="kg_login_invalid_input" msgid="5754664119319872197">"Érvénytelen felhasználónév vagy jelszó."</string> + <string name="kg_login_account_recovery_hint" msgid="5690709132841752974">"Elfelejtette a felhasználónevét vagy jelszavát?"\n"Keresse fel a "<b>"google.com/accounts/recovery"</b>" webhelyet."</string> + <string name="kg_login_checking_password" msgid="1052685197710252395">"Fiók ellenőrzése..."</string> + <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="8276745642049502550">"<xliff:g id="NUMBER_0">%d</xliff:g> alkalommal helytelenül adta meg PIN kódját. "\n\n"Próbálja újra <xliff:g id="NUMBER_1">%d</xliff:g> másodperc múlva."</string> + <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="7813713389422226531">"<xliff:g id="NUMBER_0">%d</xliff:g> alkalommal helytelenül adta meg a jelszót. "\n\n" Próbálja újra <xliff:g id="NUMBER_1">%d</xliff:g> másodperc múlva."</string> + <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="74089475965050805">"<xliff:g id="NUMBER_0">%d</xliff:g> alkalommal rosszul rajzolta le feloldási mintát. "\n\n"Próbálja újra <xliff:g id="NUMBER_1">%d</xliff:g> másodperc múlva."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="1575557200627128949">"A táblagépet <xliff:g id="NUMBER_0">%d</xliff:g> alkalommal próbálta meg sikertelenül feloldani. <xliff:g id="NUMBER_1">%d</xliff:g> további sikertelen próbálkozás után a rendszer visszaállítja a táblagép gyári alapértelmezett beállításait, és minden felhasználói adat elvész."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="4051015943038199910">"A telefont <xliff:g id="NUMBER_0">%d</xliff:g> alkalommal próbálta meg sikertelenül feloldani. <xliff:g id="NUMBER_1">%d</xliff:g> további sikertelen próbálkozás után a rendszer visszaállítja a telefon gyári alapértelmezett beállításait, és minden felhasználói adat elvész."</string> + <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2072996269148483637">"A táblagépet <xliff:g id="NUMBER">%d</xliff:g> alkalommal próbálta meg sikertelenül feloldani. A rendszer visszaállítja a táblagép gyári alapértelmezett beállításait."</string> + <string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"A telefont <xliff:g id="NUMBER">%d</xliff:g> alkalommal próbálta meg sikertelenül feloldani. A rendszer visszaállítja a telefon gyári alapértelmezett beállításait."</string> + <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"<xliff:g id="NUMBER_0">%d</xliff:g> alkalommal helytelenül rajzolta le a feloldási mintát. További <xliff:g id="NUMBER_1">%d</xliff:g> sikertelen kísérlet után egy e-mail fiók használatával kell feloldania a táblagépét."\n\n" Kérjük, próbálja újra <xliff:g id="NUMBER_2">%d</xliff:g> másodperc múlva."</string> + <string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"<xliff:g id="NUMBER_0">%d</xliff:g> alkalommal helytelenül rajzolta le a feloldási mintát. További <xliff:g id="NUMBER_1">%d</xliff:g> sikertelen kísérlet után egy e-mail fiók használatával kell feloldania a telefonját."\n\n" Kérjük, próbálja újra <xliff:g id="NUMBER_2">%d</xliff:g> másodperc múlva."</string> + <string name="kg_text_message_separator" product="default" msgid="4160700433287233771">" – "</string> + <string name="kg_reordering_delete_drop_target_text" msgid="7899202978204438708">"Eltávolítás"</string> + <!-- no translation found for keyguard_transport_prev_description (8229108430245669854) --> + <skip /> + <!-- no translation found for keyguard_transport_next_description (4299258300283778305) --> + <skip /> + <!-- no translation found for keyguard_transport_pause_description (5093073338238310224) --> + <skip /> + <!-- no translation found for keyguard_transport_play_description (2924628863741150956) --> + <skip /> + <!-- no translation found for keyguard_transport_stop_description (3084179324810575787) --> + <skip /> + <!-- no translation found for keyguard_carrier_default (8700650403054042153) --> + <skip /> +</resources> diff --git a/packages/Keyguard/res/values-in/strings.xml b/packages/Keyguard/res/values-in/strings.xml new file mode 100644 index 000000000000..108e390e9794 --- /dev/null +++ b/packages/Keyguard/res/values-in/strings.xml @@ -0,0 +1,164 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* //device/apps/common/assets/res/any/strings.xml +** +** Copyright 2006, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="keyguard_password_enter_pin_code" msgid="3037685796058495017">"Ketik kode PIN"</string> + <string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Ketik kode PUK dan PIN baru"</string> + <string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"Kode PUK"</string> + <string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Kode Pin baru"</string> + <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Sentuh untuk mengetikkan sandi"</font></string> + <string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Ketik sandi untuk membuka kunci"</string> + <string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Ketik PIN untuk membuka kunci"</string> + <string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Kode PIN salah."</string> + <string name="keyguard_label_text" msgid="861796461028298424">"Untuk membuka, tekan Menu lalu 0."</string> + <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Percobaan Face Unlock melebihi batas maksimum"</string> + <!-- no translation found for keyguard_charged (3272223906073492454) --> + <skip /> + <!-- no translation found for keyguard_plugged_in (8117572000639998388) --> + <skip /> + <!-- no translation found for keyguard_low_battery (8143808018719173859) --> + <skip /> + <!-- no translation found for keyguard_instructions_when_pattern_disabled (1332288268600329841) --> + <skip /> + <!-- no translation found for keyguard_network_locked_message (9169717779058037168) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message_short (494980561304211931) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (1445849005909260039) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (3481110395508637643) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions (5210891509995942250) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions_long (5968985489463870358) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_message_short (8340813989586622356) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5892940909699723544) --> + <skip /> + <!-- no translation found for keyguard_sim_locked_message (6875773413306380902) --> + <skip /> + <!-- no translation found for keyguard_sim_puk_locked_message (3747232467471801633) --> + <skip /> + <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (7975221805033614426) --> + <skip /> + <string name="keyguard_accessibility_widget_changed" msgid="5678624624681400191">"%1$s. Widget %2$d dari %3$d."</string> + <string name="keyguard_accessibility_add_widget" msgid="8273277058724924654">"Tambahkan widget."</string> + <string name="keyguard_accessibility_widget_empty_slot" msgid="1281505703307930757">"Kosong"</string> + <string name="keyguard_accessibility_unlock_area_expanded" msgid="2278106022311170299">"Area buka kunci diluaskan."</string> + <string name="keyguard_accessibility_unlock_area_collapsed" msgid="6366992066936076396">"Area buka kunci diciutkan."</string> + <string name="keyguard_accessibility_widget" msgid="6527131039741808240">"Widget <xliff:g id="WIDGET_INDEX">%1$s</xliff:g>."</string> + <string name="keyguard_accessibility_user_selector" msgid="1226798370913698896">"Pemilih pengguna"</string> + <string name="keyguard_accessibility_status" msgid="8008264603935930611">"Status"</string> + <string name="keyguard_accessibility_camera" msgid="8904231194181114603">"Kamera"</string> + <string name="keygaurd_accessibility_media_controls" msgid="262209654292161806">"Kontrol media"</string> + <string name="keyguard_accessibility_widget_reorder_start" msgid="8736853615588828197">"Pengurutan ulang widget dimulai."</string> + <string name="keyguard_accessibility_widget_reorder_end" msgid="7170190950870468320">"Pengurutan ulang widget berakhir."</string> + <string name="keyguard_accessibility_widget_deleted" msgid="4426204263929224434">"Widget <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> dihapus."</string> + <string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"Luaskan area buka kunci."</string> + <string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"Buka kunci dengan menggeser."</string> + <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"Buka kunci dengan pola."</string> + <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"Buka kunci dengan face unlock."</string> + <string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"Buka kunci dengan PIN."</string> + <string name="keyguard_accessibility_password_unlock" msgid="7675777623912155089">"Buka kunci dengan sandi."</string> + <string name="keyguard_accessibility_pattern_area" msgid="7679891324509597904">"Area pola."</string> + <string name="keyguard_accessibility_slide_area" msgid="6736064494019979544">"Area geser."</string> + <!-- no translation found for keyguard_accessibility_transport_prev_description (1337286538318543555) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_next_description (7073928300444909320) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_pause_description (8455979545295224302) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_play_description (8146417789511154044) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_stop_description (7656358482980912216) --> + <skip /> + <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> + <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string> + <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> + <string name="keyboardview_keycode_alt" msgid="4856868820040051939">"Alt"</string> + <string name="keyboardview_keycode_cancel" msgid="1203984017245783244">"Batal"</string> + <string name="keyboardview_keycode_delete" msgid="3337914833206635744">"Hapus"</string> + <string name="keyboardview_keycode_done" msgid="1992571118466679775">"Selesai"</string> + <string name="keyboardview_keycode_mode_change" msgid="4547387741906537519">"Pengubahan mode"</string> + <string name="keyboardview_keycode_shift" msgid="2270748814315147690">"Shift"</string> + <string name="keyboardview_keycode_enter" msgid="2985864015076059467">"Enter"</string> + <string name="description_target_unlock" msgid="2228524900439801453">"Membuka gembok"</string> + <string name="description_target_camera" msgid="969071997552486814">"Kamera"</string> + <string name="description_target_silent" msgid="893551287746522182">"Senyap"</string> + <string name="description_target_soundon" msgid="30052466675500172">"Suara hidup"</string> + <string name="description_target_search" msgid="3091587249776033139">"Telusuri"</string> + <string name="description_direction_up" msgid="7169032478259485180">"Geser ke atas untuk <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_down" msgid="5087739728639014595">"Geser ke bawah untuk <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_left" msgid="7207478719805562165">"Geser ke kiri untuk <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_right" msgid="8034433242579600980">"Geser ke kanan untuk <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="user_switched" msgid="3768006783166984410">"Pengguna saat ini <xliff:g id="NAME">%1$s</xliff:g>."</string> + <string name="kg_emergency_call_label" msgid="684946192523830531">"Panggilan darurat"</string> + <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Lupa Pola?"</string> + <string name="kg_wrong_pattern" msgid="1850806070801358830">"Pola Salah"</string> + <string name="kg_wrong_password" msgid="2333281762128113157">"Sandi Salah"</string> + <string name="kg_wrong_pin" msgid="1131306510833563801">"PIN Salah"</string> + <string name="kg_too_many_failed_attempts_countdown" msgid="6358110221603297548">"Coba lagi dalam <xliff:g id="NUMBER">%d</xliff:g> detik."</string> + <string name="kg_pattern_instructions" msgid="398978611683075868">"Gambar pola Anda"</string> + <string name="kg_sim_pin_instructions" msgid="2319508550934557331">"Masukkan PIN SIM"</string> + <string name="kg_pin_instructions" msgid="2377242233495111557">"Masukkan PIN"</string> + <string name="kg_password_instructions" msgid="5753646556186936819">"Masukkan Sandi"</string> + <string name="kg_puk_enter_puk_hint" msgid="453227143861735537">"SIM telah dinonaktifkan. Masukkan kode PUK untuk melanjutkan. Hubungi operator untuk keterangan selengkapnya."</string> + <string name="kg_puk_enter_pin_hint" msgid="7871604527429602024">"Masukkan kode PIN yang diinginkan"</string> + <string name="kg_enter_confirm_pin_hint" msgid="325676184762529976">"Konfirmasi kode PIN yang diinginkan"</string> + <string name="kg_sim_unlock_progress_dialog_message" msgid="8950398016976865762">"Membuka kunci kartu SIM…"</string> + <string name="kg_password_wrong_pin_code" msgid="1139324887413846912">"Kode PIN salah."</string> + <string name="kg_invalid_sim_pin_hint" msgid="8795159358110620001">"Ketik PIN yang terdiri dari 4 sampai 8 angka."</string> + <string name="kg_invalid_sim_puk_hint" msgid="7553388325654369575">"Kode PUK harus terdiri dari 8 angka atau lebih."</string> + <string name="kg_invalid_puk" msgid="3638289409676051243">"Masukkan kembali kode PUK yang benar. Jika berulang kali gagal, SIM akan dinonaktifkan secara permanen."</string> + <string name="kg_invalid_confirm_pin_hint" product="default" msgid="7003469261464593516">"Kode PIN tidak cocok"</string> + <string name="kg_login_too_many_attempts" msgid="6486842094005698475">"Terlalu banyak upaya pola"</string> + <string name="kg_login_instructions" msgid="1100551261265506448">"Untuk membuka kunci, masuk dengan akun Google Anda."</string> + <string name="kg_login_username_hint" msgid="5718534272070920364">"Nama pengguna (email)"</string> + <string name="kg_login_password_hint" msgid="9057289103827298549">"Sandi"</string> + <string name="kg_login_submit_button" msgid="5355904582674054702">"Masuk"</string> + <string name="kg_login_invalid_input" msgid="5754664119319872197">"Nama pengguna atau sandi tidak valid."</string> + <string name="kg_login_account_recovery_hint" msgid="5690709132841752974">"Lupa nama pengguna atau sandi Anda?"\n"Kunjungi "<b>"google.com/accounts/recovery"</b>"."</string> + <string name="kg_login_checking_password" msgid="1052685197710252395">"Memeriksa akun…"</string> + <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="8276745642049502550">"Anda telah <xliff:g id="NUMBER_0">%d</xliff:g> kali salah mengetik PIN. "\n\n"Coba lagi dalam <xliff:g id="NUMBER_1">%d</xliff:g> detik."</string> + <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="7813713389422226531">"Anda telah <xliff:g id="NUMBER_0">%d</xliff:g> kali salah mengetik sandi. "\n\n"Coba lagi dalam <xliff:g id="NUMBER_1">%d</xliff:g> detik."</string> + <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="74089475965050805">"Anda telah <xliff:g id="NUMBER_0">%d</xliff:g> kali salah menggambar pola pembuka kunci. "\n\n"Coba lagi dalam <xliff:g id="NUMBER_1">%d</xliff:g> detik."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="1575557200627128949">"Anda telah <xliff:g id="NUMBER_0">%d</xliff:g> kali gagal saat berusaha membuka kunci tablet. Setelah <xliff:g id="NUMBER_1">%d</xliff:g> lagi upaya gagal, tablet akan disetel ulang ke setelan default pabrik dan semua data pengguna akan hilang."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="4051015943038199910">"Anda telah <xliff:g id="NUMBER_0">%d</xliff:g> kali gagal saat berusaha membuka kunci ponsel. Setelah <xliff:g id="NUMBER_1">%d</xliff:g> lagi upaya gagal, ponsel akan disetel ulang ke setelan default pabrik dan semua data pengguna akan hilang."</string> + <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2072996269148483637">"Anda telah <xliff:g id="NUMBER">%d</xliff:g> kali gagal saat berusaha membuka kunci tablet. Kini tablet akan disetel ulang ke setelan default pabrik."</string> + <string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"Anda telah <xliff:g id="NUMBER">%d</xliff:g> kali gagal saat berusaha untuk membuka kunci ponsel. Kini ponsel akan disetel ulang ke setelan default pabrik."</string> + <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Anda telah <xliff:g id="NUMBER_0">%d</xliff:g> kali salah menggambar pola pembuka kunci. Setelah <xliff:g id="NUMBER_1">%d</xliff:g> lagi upaya gagal, Anda akan diminta membuka kunci tablet menggunakan akun email."\n\n"Coba lagi dalam <xliff:g id="NUMBER_2">%d</xliff:g> detik."</string> + <string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"Anda telah <xliff:g id="NUMBER_0">%d</xliff:g> kali salah menggambar pola pembuka kunci. Setelah <xliff:g id="NUMBER_1">%d</xliff:g> lagi upaya gagal, Anda akan diminta membuka kunci ponsel menggunakan akun email."\n\n"Coba lagi dalam <xliff:g id="NUMBER_2">%d</xliff:g> detik."</string> + <string name="kg_text_message_separator" product="default" msgid="4160700433287233771">" — "</string> + <string name="kg_reordering_delete_drop_target_text" msgid="7899202978204438708">"Hapus"</string> + <!-- no translation found for keyguard_transport_prev_description (8229108430245669854) --> + <skip /> + <!-- no translation found for keyguard_transport_next_description (4299258300283778305) --> + <skip /> + <!-- no translation found for keyguard_transport_pause_description (5093073338238310224) --> + <skip /> + <!-- no translation found for keyguard_transport_play_description (2924628863741150956) --> + <skip /> + <!-- no translation found for keyguard_transport_stop_description (3084179324810575787) --> + <skip /> + <!-- no translation found for keyguard_carrier_default (8700650403054042153) --> + <skip /> +</resources> diff --git a/packages/Keyguard/res/values-it/strings.xml b/packages/Keyguard/res/values-it/strings.xml new file mode 100644 index 000000000000..b066ba1329fe --- /dev/null +++ b/packages/Keyguard/res/values-it/strings.xml @@ -0,0 +1,164 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* //device/apps/common/assets/res/any/strings.xml +** +** Copyright 2006, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="keyguard_password_enter_pin_code" msgid="3037685796058495017">"Inserisci il codice PIN"</string> + <string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Inserisci il PUK e il nuovo codice PIN"</string> + <string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"Codice PUK"</string> + <string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Nuovo codice PIN"</string> + <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Tocca per inserire la password"</font></string> + <string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Inserisci password per sbloccare"</string> + <string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Inserisci PIN per sbloccare"</string> + <string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Codice PIN errato."</string> + <string name="keyguard_label_text" msgid="861796461028298424">"Per sbloccare, premi Menu, poi 0."</string> + <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Numero massimo di tentativi di Sblocco col sorriso superato"</string> + <!-- no translation found for keyguard_charged (3272223906073492454) --> + <skip /> + <!-- no translation found for keyguard_plugged_in (8117572000639998388) --> + <skip /> + <!-- no translation found for keyguard_low_battery (8143808018719173859) --> + <skip /> + <!-- no translation found for keyguard_instructions_when_pattern_disabled (1332288268600329841) --> + <skip /> + <!-- no translation found for keyguard_network_locked_message (9169717779058037168) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message_short (494980561304211931) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (1445849005909260039) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (3481110395508637643) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions (5210891509995942250) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions_long (5968985489463870358) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_message_short (8340813989586622356) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5892940909699723544) --> + <skip /> + <!-- no translation found for keyguard_sim_locked_message (6875773413306380902) --> + <skip /> + <!-- no translation found for keyguard_sim_puk_locked_message (3747232467471801633) --> + <skip /> + <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (7975221805033614426) --> + <skip /> + <string name="keyguard_accessibility_widget_changed" msgid="5678624624681400191">"%1$s. Widget %2$d di %3$d."</string> + <string name="keyguard_accessibility_add_widget" msgid="8273277058724924654">"Aggiungi widget."</string> + <string name="keyguard_accessibility_widget_empty_slot" msgid="1281505703307930757">"Vuoto"</string> + <string name="keyguard_accessibility_unlock_area_expanded" msgid="2278106022311170299">"Area di sblocco estesa."</string> + <string name="keyguard_accessibility_unlock_area_collapsed" msgid="6366992066936076396">"Area di sblocco compressa."</string> + <string name="keyguard_accessibility_widget" msgid="6527131039741808240">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g> widget."</string> + <string name="keyguard_accessibility_user_selector" msgid="1226798370913698896">"Selettore utente"</string> + <string name="keyguard_accessibility_status" msgid="8008264603935930611">"Stato"</string> + <string name="keyguard_accessibility_camera" msgid="8904231194181114603">"Fotocamera"</string> + <string name="keygaurd_accessibility_media_controls" msgid="262209654292161806">"Controlli media"</string> + <string name="keyguard_accessibility_widget_reorder_start" msgid="8736853615588828197">"Riordino dei widget iniziato."</string> + <string name="keyguard_accessibility_widget_reorder_end" msgid="7170190950870468320">"Riordino dei widget terminato."</string> + <string name="keyguard_accessibility_widget_deleted" msgid="4426204263929224434">"Widget <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> eliminato."</string> + <string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"Espandi area di sblocco."</string> + <string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"Sblocco con scorrimento."</string> + <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"Sblocco con sequenza."</string> + <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"Sblocco col sorriso."</string> + <string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"Sblocco con PIN."</string> + <string name="keyguard_accessibility_password_unlock" msgid="7675777623912155089">"Sblocco con password."</string> + <string name="keyguard_accessibility_pattern_area" msgid="7679891324509597904">"Area sequenza."</string> + <string name="keyguard_accessibility_slide_area" msgid="6736064494019979544">"Area di scorrimento."</string> + <!-- no translation found for keyguard_accessibility_transport_prev_description (1337286538318543555) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_next_description (7073928300444909320) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_pause_description (8455979545295224302) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_play_description (8146417789511154044) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_stop_description (7656358482980912216) --> + <skip /> + <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> + <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string> + <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> + <string name="keyboardview_keycode_alt" msgid="4856868820040051939">"Alt"</string> + <string name="keyboardview_keycode_cancel" msgid="1203984017245783244">"Annulla"</string> + <string name="keyboardview_keycode_delete" msgid="3337914833206635744">"Canc"</string> + <string name="keyboardview_keycode_done" msgid="1992571118466679775">"Fine"</string> + <string name="keyboardview_keycode_mode_change" msgid="4547387741906537519">"Cambio modalità"</string> + <string name="keyboardview_keycode_shift" msgid="2270748814315147690">"Maiuscolo"</string> + <string name="keyboardview_keycode_enter" msgid="2985864015076059467">"Invio"</string> + <string name="description_target_unlock" msgid="2228524900439801453">"Sblocca"</string> + <string name="description_target_camera" msgid="969071997552486814">"Fotocamera"</string> + <string name="description_target_silent" msgid="893551287746522182">"Silenzioso"</string> + <string name="description_target_soundon" msgid="30052466675500172">"Audio attivato"</string> + <string name="description_target_search" msgid="3091587249776033139">"Ricerca"</string> + <string name="description_direction_up" msgid="7169032478259485180">"Su per <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_down" msgid="5087739728639014595">"Giù per <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_left" msgid="7207478719805562165">"A sinistra per <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_right" msgid="8034433242579600980">"A destra per <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="user_switched" msgid="3768006783166984410">"Utente corrente <xliff:g id="NAME">%1$s</xliff:g>."</string> + <string name="kg_emergency_call_label" msgid="684946192523830531">"Chiamata di emergenza"</string> + <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Sequenza dimenticata"</string> + <string name="kg_wrong_pattern" msgid="1850806070801358830">"Sequenza sbagliata"</string> + <string name="kg_wrong_password" msgid="2333281762128113157">"Password sbagliata"</string> + <string name="kg_wrong_pin" msgid="1131306510833563801">"PIN errato"</string> + <string name="kg_too_many_failed_attempts_countdown" msgid="6358110221603297548">"Riprova fra <xliff:g id="NUMBER">%d</xliff:g> secondi."</string> + <string name="kg_pattern_instructions" msgid="398978611683075868">"Inserisci la sequenza"</string> + <string name="kg_sim_pin_instructions" msgid="2319508550934557331">"Inserisci il PIN della SIM"</string> + <string name="kg_pin_instructions" msgid="2377242233495111557">"Inserisci PIN"</string> + <string name="kg_password_instructions" msgid="5753646556186936819">"Inserisci la password"</string> + <string name="kg_puk_enter_puk_hint" msgid="453227143861735537">"La scheda SIM è disattivata. Inserisci il codice PUK per continuare. Contatta l\'operatore per avere informazioni dettagliate."</string> + <string name="kg_puk_enter_pin_hint" msgid="7871604527429602024">"Inserisci il codice PIN desiderato"</string> + <string name="kg_enter_confirm_pin_hint" msgid="325676184762529976">"Conferma il codice PIN desiderato"</string> + <string name="kg_sim_unlock_progress_dialog_message" msgid="8950398016976865762">"Sblocco scheda SIM..."</string> + <string name="kg_password_wrong_pin_code" msgid="1139324887413846912">"Codice PIN errato."</string> + <string name="kg_invalid_sim_pin_hint" msgid="8795159358110620001">"Il PIN deve essere di 4-8 numeri."</string> + <string name="kg_invalid_sim_puk_hint" msgid="7553388325654369575">"Il codice PUK dovrebbe avere almeno otto numeri."</string> + <string name="kg_invalid_puk" msgid="3638289409676051243">"Inserisci di nuovo il codice PUK corretto. Ripetuti tentativi comportano la disattivazione definitiva della scheda SIM."</string> + <string name="kg_invalid_confirm_pin_hint" product="default" msgid="7003469261464593516">"I codici PIN non corrispondono"</string> + <string name="kg_login_too_many_attempts" msgid="6486842094005698475">"Troppi tentativi di inserimento della sequenza"</string> + <string name="kg_login_instructions" msgid="1100551261265506448">"Per sbloccare, accedi con il tuo account Google."</string> + <string name="kg_login_username_hint" msgid="5718534272070920364">"Nome utente (email)"</string> + <string name="kg_login_password_hint" msgid="9057289103827298549">"Password"</string> + <string name="kg_login_submit_button" msgid="5355904582674054702">"Accedi"</string> + <string name="kg_login_invalid_input" msgid="5754664119319872197">"Nome utente o password non validi."</string> + <string name="kg_login_account_recovery_hint" msgid="5690709132841752974">"Hai dimenticato il nome utente o la password?"\n"Visita "<b>"google.com/accounts/recovery"</b>"."</string> + <string name="kg_login_checking_password" msgid="1052685197710252395">"Controllo account…"</string> + <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="8276745642049502550">"Hai digitato il tuo PIN <xliff:g id="NUMBER_0">%d</xliff:g> volte in modo errato. "\n\n"Riprova tra <xliff:g id="NUMBER_1">%d</xliff:g> secondi."</string> + <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="7813713389422226531">"Hai digitato la tua password <xliff:g id="NUMBER_0">%d</xliff:g> volte in modo errato. "\n\n"Riprova tra <xliff:g id="NUMBER_1">%d</xliff:g> secondi."</string> + <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="74089475965050805">"<xliff:g id="NUMBER_0">%d</xliff:g> tentativi errati di inserimento della sequenza di sblocco. "\n\n"Riprova tra <xliff:g id="NUMBER_1">%d</xliff:g> secondi."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="1575557200627128949">"<xliff:g id="NUMBER_0">%d</xliff:g> tentativi errati di sblocco del tablet. Dopo altri <xliff:g id="NUMBER_1">%d</xliff:g> tentativi falliti, il tablet verrà sottoposto a un ripristino dei dati di fabbrica e tutti i dati utente andranno persi."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="4051015943038199910">"<xliff:g id="NUMBER_0">%d</xliff:g> tentativi errati di sblocco del telefono. Dopo altri <xliff:g id="NUMBER_1">%d</xliff:g> tentativi falliti, il telefono verrà sottoposto a un ripristino dei dati di fabbrica e tutti i dati utente andranno persi."</string> + <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2072996269148483637">"<xliff:g id="NUMBER">%d</xliff:g> tentativi errati di sblocco del tablet. Il tablet verrà sottoposto a un ripristino dei dati di fabbrica."</string> + <string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"<xliff:g id="NUMBER">%d</xliff:g> tentativi errati di sblocco del telefono. Il telefono verrà sottoposto a un ripristino dei dati di fabbrica."</string> + <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"<xliff:g id="NUMBER_0">%d</xliff:g> tentativi errati di inserimento della sequenza di sblocco. Dopo altri <xliff:g id="NUMBER_1">%d</xliff:g> tentativi falliti, ti verrà chiesto di sbloccare il tablet con un account email."\n\n" Riprova tra <xliff:g id="NUMBER_2">%d</xliff:g> secondi."</string> + <string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"<xliff:g id="NUMBER_0">%d</xliff:g> tentativi errati di inserimento della sequenza di sblocco. Dopo altri <xliff:g id="NUMBER_1">%d</xliff:g> tentativi falliti, ti verrà chiesto di sbloccare il telefono con un account email."\n\n" Riprova tra <xliff:g id="NUMBER_2">%d</xliff:g> secondi."</string> + <string name="kg_text_message_separator" product="default" msgid="4160700433287233771">" – "</string> + <string name="kg_reordering_delete_drop_target_text" msgid="7899202978204438708">"Rimuovi"</string> + <!-- no translation found for keyguard_transport_prev_description (8229108430245669854) --> + <skip /> + <!-- no translation found for keyguard_transport_next_description (4299258300283778305) --> + <skip /> + <!-- no translation found for keyguard_transport_pause_description (5093073338238310224) --> + <skip /> + <!-- no translation found for keyguard_transport_play_description (2924628863741150956) --> + <skip /> + <!-- no translation found for keyguard_transport_stop_description (3084179324810575787) --> + <skip /> + <!-- no translation found for keyguard_carrier_default (8700650403054042153) --> + <skip /> +</resources> diff --git a/packages/Keyguard/res/values-iw/strings.xml b/packages/Keyguard/res/values-iw/strings.xml new file mode 100644 index 000000000000..956a48e2c0dd --- /dev/null +++ b/packages/Keyguard/res/values-iw/strings.xml @@ -0,0 +1,164 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* //device/apps/common/assets/res/any/strings.xml +** +** Copyright 2006, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="keyguard_password_enter_pin_code" msgid="3037685796058495017">"הקלד קוד PIN"</string> + <string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"הקלד את קוד ה-PUK וקוד ה-PIN החדש"</string> + <string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"קוד PUK"</string> + <string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"קוד PIN חדש"</string> + <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"גע כדי להקליד את הסיסמה"</font></string> + <string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"הקלד סיסמה לביטול הנעילה"</string> + <string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"הקלד קוד PIN לביטול הנעילה"</string> + <string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"קוד PIN שגוי"</string> + <string name="keyguard_label_text" msgid="861796461028298424">"כדי לבטל את הנעילה, לחץ על \'תפריט\' ולאחר מכן על 0."</string> + <string name="faceunlock_multiple_failures" msgid="754137583022792429">"חרגת ממספר הניסיונות המרבי של זיהוי פרצוף"</string> + <!-- no translation found for keyguard_charged (3272223906073492454) --> + <skip /> + <!-- no translation found for keyguard_plugged_in (8117572000639998388) --> + <skip /> + <!-- no translation found for keyguard_low_battery (8143808018719173859) --> + <skip /> + <!-- no translation found for keyguard_instructions_when_pattern_disabled (1332288268600329841) --> + <skip /> + <!-- no translation found for keyguard_network_locked_message (9169717779058037168) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message_short (494980561304211931) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (1445849005909260039) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (3481110395508637643) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions (5210891509995942250) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions_long (5968985489463870358) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_message_short (8340813989586622356) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5892940909699723544) --> + <skip /> + <!-- no translation found for keyguard_sim_locked_message (6875773413306380902) --> + <skip /> + <!-- no translation found for keyguard_sim_puk_locked_message (3747232467471801633) --> + <skip /> + <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (7975221805033614426) --> + <skip /> + <string name="keyguard_accessibility_widget_changed" msgid="5678624624681400191">"%1$s. Widget %2$d מתוך %3$d."</string> + <string name="keyguard_accessibility_add_widget" msgid="8273277058724924654">"הוסף Widget."</string> + <string name="keyguard_accessibility_widget_empty_slot" msgid="1281505703307930757">"ריק"</string> + <string name="keyguard_accessibility_unlock_area_expanded" msgid="2278106022311170299">"אזור ביטול הנעילה הורחב."</string> + <string name="keyguard_accessibility_unlock_area_collapsed" msgid="6366992066936076396">"אזור ביטול הנעילה כווץ."</string> + <string name="keyguard_accessibility_widget" msgid="6527131039741808240">"Widget <xliff:g id="WIDGET_INDEX">%1$s</xliff:g>."</string> + <string name="keyguard_accessibility_user_selector" msgid="1226798370913698896">"בוחר משתמשים"</string> + <string name="keyguard_accessibility_status" msgid="8008264603935930611">"סטטוס"</string> + <string name="keyguard_accessibility_camera" msgid="8904231194181114603">"מצלמה"</string> + <string name="keygaurd_accessibility_media_controls" msgid="262209654292161806">"פקדי מדיה"</string> + <string name="keyguard_accessibility_widget_reorder_start" msgid="8736853615588828197">"סידור מחדש של Widgets התחיל."</string> + <string name="keyguard_accessibility_widget_reorder_end" msgid="7170190950870468320">"סידור מחדש של Widgets הסתיים."</string> + <string name="keyguard_accessibility_widget_deleted" msgid="4426204263929224434">"Widget <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> נמחק."</string> + <string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"הרחב את אזור ביטול הנעילה."</string> + <string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"ביטול נעילה באמצעות הסטה."</string> + <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"ביטול נעילה באמצעות ציור קו."</string> + <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"ביטול נעילה באמצעות זיהוי פרצוף."</string> + <string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"ביטול נעילה באמצעות מספר PIN."</string> + <string name="keyguard_accessibility_password_unlock" msgid="7675777623912155089">"ביטול נעילה באמצעות סיסמה."</string> + <string name="keyguard_accessibility_pattern_area" msgid="7679891324509597904">"אזור ציור קו."</string> + <string name="keyguard_accessibility_slide_area" msgid="6736064494019979544">"אזור הסטה."</string> + <!-- no translation found for keyguard_accessibility_transport_prev_description (1337286538318543555) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_next_description (7073928300444909320) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_pause_description (8455979545295224302) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_play_description (8146417789511154044) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_stop_description (7656358482980912216) --> + <skip /> + <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> + <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"אבג"</string> + <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> + <string name="keyboardview_keycode_alt" msgid="4856868820040051939">"Alt"</string> + <string name="keyboardview_keycode_cancel" msgid="1203984017245783244">"ביטול"</string> + <string name="keyboardview_keycode_delete" msgid="3337914833206635744">"מחק"</string> + <string name="keyboardview_keycode_done" msgid="1992571118466679775">"סיום"</string> + <string name="keyboardview_keycode_mode_change" msgid="4547387741906537519">"שינוי מצב"</string> + <string name="keyboardview_keycode_shift" msgid="2270748814315147690">"Shift"</string> + <string name="keyboardview_keycode_enter" msgid="2985864015076059467">"Enter"</string> + <string name="description_target_unlock" msgid="2228524900439801453">"בטל נעילה"</string> + <string name="description_target_camera" msgid="969071997552486814">"מצלמה"</string> + <string name="description_target_silent" msgid="893551287746522182">"שקט"</string> + <string name="description_target_soundon" msgid="30052466675500172">"הקול פועל"</string> + <string name="description_target_search" msgid="3091587249776033139">"חיפוש"</string> + <string name="description_direction_up" msgid="7169032478259485180">"הסט למעלה כדי להציג <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_down" msgid="5087739728639014595">"הסט למטה כדי להציג <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_left" msgid="7207478719805562165">"הסט שמאלה כדי להציג <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_right" msgid="8034433242579600980">"הסט ימינה כדי להציג <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="user_switched" msgid="3768006783166984410">"המשתמש הנוכחי <xliff:g id="NAME">%1$s</xliff:g>."</string> + <string name="kg_emergency_call_label" msgid="684946192523830531">"שיחת חירום"</string> + <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"שכחת את הקו"</string> + <string name="kg_wrong_pattern" msgid="1850806070801358830">"קו ביטול נעילה שגוי"</string> + <string name="kg_wrong_password" msgid="2333281762128113157">"סיסמה שגויה"</string> + <string name="kg_wrong_pin" msgid="1131306510833563801">"מספר PIN שגוי"</string> + <string name="kg_too_many_failed_attempts_countdown" msgid="6358110221603297548">"נסה שוב בעוד <xliff:g id="NUMBER">%d</xliff:g> שניות."</string> + <string name="kg_pattern_instructions" msgid="398978611683075868">"שרטט את קו ביטול הנעילה"</string> + <string name="kg_sim_pin_instructions" msgid="2319508550934557331">"הזן מספר PIN ל-SIM"</string> + <string name="kg_pin_instructions" msgid="2377242233495111557">"הזן מספר PIN"</string> + <string name="kg_password_instructions" msgid="5753646556186936819">"הזן את הסיסמה"</string> + <string name="kg_puk_enter_puk_hint" msgid="453227143861735537">"כרטיס ה-SIM מושבת כעת. הזן קוד PUK כדי להמשיך. פנה אל הספק לפרטים."</string> + <string name="kg_puk_enter_pin_hint" msgid="7871604527429602024">"הזן את קוד ה-PIN הרצוי"</string> + <string name="kg_enter_confirm_pin_hint" msgid="325676184762529976">"אשר את קוד ה-PIN הרצוי"</string> + <string name="kg_sim_unlock_progress_dialog_message" msgid="8950398016976865762">"מבטל נעילה של כרטיס SIM…"</string> + <string name="kg_password_wrong_pin_code" msgid="1139324887413846912">"קוד PIN שגוי."</string> + <string name="kg_invalid_sim_pin_hint" msgid="8795159358110620001">"הקלד מספר PIN שאורכו 4 עד 8 ספרות."</string> + <string name="kg_invalid_sim_puk_hint" msgid="7553388325654369575">"קוד PUK צריך להיות בן 8 ספרות או יותר."</string> + <string name="kg_invalid_puk" msgid="3638289409676051243">"הזן מחדש את קוד PUK הנכון. ניסיונות חוזרים ישביתו לצמיתות את כרטיס ה-SIM."</string> + <string name="kg_invalid_confirm_pin_hint" product="default" msgid="7003469261464593516">"קודי ה-PIN אינם תואמים"</string> + <string name="kg_login_too_many_attempts" msgid="6486842094005698475">"ניסיונות רבים מדי לשרטוט קו ביטול נעילה."</string> + <string name="kg_login_instructions" msgid="1100551261265506448">"כדי לבטל את הנעילה, היכנס באמצעות חשבון Google שלך."</string> + <string name="kg_login_username_hint" msgid="5718534272070920364">"שם משתמש (דוא\"ל)"</string> + <string name="kg_login_password_hint" msgid="9057289103827298549">"סיסמה"</string> + <string name="kg_login_submit_button" msgid="5355904582674054702">"היכנס"</string> + <string name="kg_login_invalid_input" msgid="5754664119319872197">"שם משתמש או סיסמה לא חוקיים."</string> + <string name="kg_login_account_recovery_hint" msgid="5690709132841752974">"שכחת את שם המשתמש או הסיסמה?"\n"בקר בכתובת "<b>"google.com/accounts/recovery"</b></string> + <string name="kg_login_checking_password" msgid="1052685197710252395">"בודק חשבון…"</string> + <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="8276745642049502550">"הקלדת מספר PIN שגוי <xliff:g id="NUMBER_0">%d</xliff:g> פעמים. "\n\n"נסה שוב בעוד <xliff:g id="NUMBER_1">%d</xliff:g> שניות."</string> + <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="7813713389422226531">"הקלדת סיסמה שגויה <xliff:g id="NUMBER_0">%d</xliff:g> פעמים."\n\n"נסה שוב בעוד <xliff:g id="NUMBER_1">%d</xliff:g> שניות."</string> + <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="74089475965050805">"שרטטת את קו ביטול הנעילה באופן שגוי <xliff:g id="NUMBER_0">%d</xliff:g> פעמים. "\n\n"נסה שוב בעוד <xliff:g id="NUMBER_1">%d</xliff:g> שניות."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="1575557200627128949">"ביצעת <xliff:g id="NUMBER_0">%d</xliff:g> ניסיונות שגויים לביטול נעילת הטלפון. לאחר <xliff:g id="NUMBER_1">%d</xliff:g> ניסיונות כושלים נוספים, הטאבלט יעבור איפוס לברירת המחדל של היצרן וכל נתוני המשתמש יאבדו."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="4051015943038199910">"ביצעת <xliff:g id="NUMBER_0">%d</xliff:g> ניסיונות שגויים לביטול נעילת הטלפון. לאחר <xliff:g id="NUMBER_1">%d</xliff:g> ניסיונות כושלים נוספים, הטלפון יעבור איפוס לברירת המחדל של היצרן וכל נתוני המשתמש יאבדו."</string> + <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2072996269148483637">"ביצעת <xliff:g id="NUMBER">%d</xliff:g> ניסיונות שגויים לביטול נעילת הטאבלט. הטאבלט יעבור כעת איפוס לברירת המחדל של היצרן."</string> + <string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"ביצעת <xliff:g id="NUMBER">%d</xliff:g> ניסיונות שגויים לביטול נעילת הטלפון. הטלפון יעבור כעת איפוס לברירת המחדל של היצרן."</string> + <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"שרטטת את קו ביטול הנעילה באופן שגוי <xliff:g id="NUMBER_0">%d</xliff:g> פעמים. לאחר <xliff:g id="NUMBER_1">%d</xliff:g> ניסיונות כושלים נוספים, תתבקש לבטל את נעילת הטאבלט באמצעות חשבון דוא\"ל."\n\n"נסה שוב בעוד <xliff:g id="NUMBER_2">%d</xliff:g> שניות."</string> + <string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"שרטטת את קו ביטול הנעילה באופן שגוי <xliff:g id="NUMBER_0">%d</xliff:g> פעמים. לאחר <xliff:g id="NUMBER_1">%d</xliff:g> ניסיונות כושלים נוספים, תתבקש לבטל את נעילת הטלפון באמצעות חשבון דוא\"ל."\n\n"נסה שוב בעוד <xliff:g id="NUMBER_2">%d</xliff:g> שניות."</string> + <string name="kg_text_message_separator" product="default" msgid="4160700433287233771">" — "</string> + <string name="kg_reordering_delete_drop_target_text" msgid="7899202978204438708">"הסר"</string> + <!-- no translation found for keyguard_transport_prev_description (8229108430245669854) --> + <skip /> + <!-- no translation found for keyguard_transport_next_description (4299258300283778305) --> + <skip /> + <!-- no translation found for keyguard_transport_pause_description (5093073338238310224) --> + <skip /> + <!-- no translation found for keyguard_transport_play_description (2924628863741150956) --> + <skip /> + <!-- no translation found for keyguard_transport_stop_description (3084179324810575787) --> + <skip /> + <!-- no translation found for keyguard_carrier_default (8700650403054042153) --> + <skip /> +</resources> diff --git a/packages/Keyguard/res/values-ja/strings.xml b/packages/Keyguard/res/values-ja/strings.xml new file mode 100644 index 000000000000..b80b7afa9590 --- /dev/null +++ b/packages/Keyguard/res/values-ja/strings.xml @@ -0,0 +1,164 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* //device/apps/common/assets/res/any/strings.xml +** +** Copyright 2006, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="keyguard_password_enter_pin_code" msgid="3037685796058495017">"PINコードを入力"</string> + <string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"PUKと新しいPINコードを入力"</string> + <string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUKコード"</string> + <string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"新しいPINコード"</string> + <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"タップしてパスワードを入力"</font></string> + <string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"ロックを解除するにはパスワードを入力"</string> + <string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"ロックを解除するにはPINを入力"</string> + <string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"PINコードが正しくありません。"</string> + <string name="keyguard_label_text" msgid="861796461028298424">"MENU、0キーでロック解除"</string> + <string name="faceunlock_multiple_failures" msgid="754137583022792429">"フェイスアンロックの最大試行回数を超えました"</string> + <!-- no translation found for keyguard_charged (3272223906073492454) --> + <skip /> + <!-- no translation found for keyguard_plugged_in (8117572000639998388) --> + <skip /> + <!-- no translation found for keyguard_low_battery (8143808018719173859) --> + <skip /> + <!-- no translation found for keyguard_instructions_when_pattern_disabled (1332288268600329841) --> + <skip /> + <!-- no translation found for keyguard_network_locked_message (9169717779058037168) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message_short (494980561304211931) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (1445849005909260039) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (3481110395508637643) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions (5210891509995942250) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions_long (5968985489463870358) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_message_short (8340813989586622356) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5892940909699723544) --> + <skip /> + <!-- no translation found for keyguard_sim_locked_message (6875773413306380902) --> + <skip /> + <!-- no translation found for keyguard_sim_puk_locked_message (3747232467471801633) --> + <skip /> + <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (7975221805033614426) --> + <skip /> + <string name="keyguard_accessibility_widget_changed" msgid="5678624624681400191">"%1$s。ウィジェット%2$d/%3$d。"</string> + <string name="keyguard_accessibility_add_widget" msgid="8273277058724924654">"ウィジェットを追加します。"</string> + <string name="keyguard_accessibility_widget_empty_slot" msgid="1281505703307930757">"なし"</string> + <string name="keyguard_accessibility_unlock_area_expanded" msgid="2278106022311170299">"ロック解除エリアを拡大しました。"</string> + <string name="keyguard_accessibility_unlock_area_collapsed" msgid="6366992066936076396">"ロック解除エリアを縮小しました。"</string> + <string name="keyguard_accessibility_widget" msgid="6527131039741808240">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g>ウィジェットです。"</string> + <string name="keyguard_accessibility_user_selector" msgid="1226798370913698896">"ユーザー切り替え"</string> + <string name="keyguard_accessibility_status" msgid="8008264603935930611">"ステータス"</string> + <string name="keyguard_accessibility_camera" msgid="8904231194181114603">"カメラ"</string> + <string name="keygaurd_accessibility_media_controls" msgid="262209654292161806">"メディアコントロール"</string> + <string name="keyguard_accessibility_widget_reorder_start" msgid="8736853615588828197">"ウィジェットの並べ替えを開始しました。"</string> + <string name="keyguard_accessibility_widget_reorder_end" msgid="7170190950870468320">"ウィジェットの並べ替えを終了しました。"</string> + <string name="keyguard_accessibility_widget_deleted" msgid="4426204263929224434">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g>ウィジェットを削除しました。"</string> + <string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"ロック解除エリアを拡大します。"</string> + <string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"スライドロックを解除します。"</string> + <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"パターンロックを解除します。"</string> + <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"フェイスアンロックを行います。"</string> + <string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"PINロックを解除します。"</string> + <string name="keyguard_accessibility_password_unlock" msgid="7675777623912155089">"パスワードロックを解除します。"</string> + <string name="keyguard_accessibility_pattern_area" msgid="7679891324509597904">"パターンエリアです。"</string> + <string name="keyguard_accessibility_slide_area" msgid="6736064494019979544">"スライドエリアです。"</string> + <!-- no translation found for keyguard_accessibility_transport_prev_description (1337286538318543555) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_next_description (7073928300444909320) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_pause_description (8455979545295224302) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_play_description (8146417789511154044) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_stop_description (7656358482980912216) --> + <skip /> + <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> + <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string> + <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> + <string name="keyboardview_keycode_alt" msgid="4856868820040051939">"Alt"</string> + <string name="keyboardview_keycode_cancel" msgid="1203984017245783244">"キャンセル"</string> + <string name="keyboardview_keycode_delete" msgid="3337914833206635744">"削除"</string> + <string name="keyboardview_keycode_done" msgid="1992571118466679775">"完了"</string> + <string name="keyboardview_keycode_mode_change" msgid="4547387741906537519">"モードを変更"</string> + <string name="keyboardview_keycode_shift" msgid="2270748814315147690">"Shift"</string> + <string name="keyboardview_keycode_enter" msgid="2985864015076059467">"Enter"</string> + <string name="description_target_unlock" msgid="2228524900439801453">"ロックを解除"</string> + <string name="description_target_camera" msgid="969071997552486814">"カメラ"</string> + <string name="description_target_silent" msgid="893551287746522182">"マナーモード"</string> + <string name="description_target_soundon" msgid="30052466675500172">"サウンドON"</string> + <string name="description_target_search" msgid="3091587249776033139">"検索します"</string> + <string name="description_direction_up" msgid="7169032478259485180">"上にスライドして<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>を行います。"</string> + <string name="description_direction_down" msgid="5087739728639014595">"下にスライドして<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>を行います。"</string> + <string name="description_direction_left" msgid="7207478719805562165">"左にスライドして<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>を行います。"</string> + <string name="description_direction_right" msgid="8034433242579600980">"右にスライドして<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>を行います。"</string> + <string name="user_switched" msgid="3768006783166984410">"現在のユーザーは<xliff:g id="NAME">%1$s</xliff:g>です。"</string> + <string name="kg_emergency_call_label" msgid="684946192523830531">"緊急通報"</string> + <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"パターンを忘れた場合"</string> + <string name="kg_wrong_pattern" msgid="1850806070801358830">"パターンが正しくありません"</string> + <string name="kg_wrong_password" msgid="2333281762128113157">"パスワードが正しくありません"</string> + <string name="kg_wrong_pin" msgid="1131306510833563801">"PINが正しくありません"</string> + <string name="kg_too_many_failed_attempts_countdown" msgid="6358110221603297548">"<xliff:g id="NUMBER">%d</xliff:g>秒後にもう一度お試しください。"</string> + <string name="kg_pattern_instructions" msgid="398978611683075868">"パターンを入力"</string> + <string name="kg_sim_pin_instructions" msgid="2319508550934557331">"SIM PINを入力"</string> + <string name="kg_pin_instructions" msgid="2377242233495111557">"PINを入力"</string> + <string name="kg_password_instructions" msgid="5753646556186936819">"パスワードを入力"</string> + <string name="kg_puk_enter_puk_hint" msgid="453227143861735537">"SIMが無効になりました。続行するにはPUKコードを入力してください。詳しくは携帯通信会社にお問い合わせください。"</string> + <string name="kg_puk_enter_pin_hint" msgid="7871604527429602024">"希望のPINコードを入力してください"</string> + <string name="kg_enter_confirm_pin_hint" msgid="325676184762529976">"希望のPINコードを確認してください"</string> + <string name="kg_sim_unlock_progress_dialog_message" msgid="8950398016976865762">"SIMカードのロック解除中…"</string> + <string name="kg_password_wrong_pin_code" msgid="1139324887413846912">"PINコードが正しくありません。"</string> + <string name="kg_invalid_sim_pin_hint" msgid="8795159358110620001">"PINは4~8桁の数字で入力してください。"</string> + <string name="kg_invalid_sim_puk_hint" msgid="7553388325654369575">"PUKコードは8桁以上の番号です。"</string> + <string name="kg_invalid_puk" msgid="3638289409676051243">"正しいPUKコードを再入力してください。誤入力を繰り返すと、SIMが永久に無効になるおそれがあります。"</string> + <string name="kg_invalid_confirm_pin_hint" product="default" msgid="7003469261464593516">"PINコードが一致しません"</string> + <string name="kg_login_too_many_attempts" msgid="6486842094005698475">"パターンの入力を所定の回数以上間違えました。"</string> + <string name="kg_login_instructions" msgid="1100551261265506448">"ロックを解除するにはGoogleアカウントでログインしてください。"</string> + <string name="kg_login_username_hint" msgid="5718534272070920364">"ユーザー名(メール)"</string> + <string name="kg_login_password_hint" msgid="9057289103827298549">"パスワード"</string> + <string name="kg_login_submit_button" msgid="5355904582674054702">"ログイン"</string> + <string name="kg_login_invalid_input" msgid="5754664119319872197">"ユーザー名またはパスワードが無効です。"</string> + <string name="kg_login_account_recovery_hint" msgid="5690709132841752974">"ユーザー名またはパスワードを忘れた場合は"\n" "<b>"google.com/accounts/recovery"</b>" にアクセスしてください。"</string> + <string name="kg_login_checking_password" msgid="1052685197710252395">"アカウントをチェックしています…"</string> + <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="8276745642049502550">"PINの入力を<xliff:g id="NUMBER_0">%d</xliff:g>回間違えました。"\n\n"<xliff:g id="NUMBER_1">%d</xliff:g>秒後にもう一度お試しください。"</string> + <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="7813713389422226531">"パスワードの入力を<xliff:g id="NUMBER_0">%d</xliff:g>回間違えました。"\n\n"<xliff:g id="NUMBER_1">%d</xliff:g>秒後にもう一度お試しください。"</string> + <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="74089475965050805">"ロック解除パターンの入力を<xliff:g id="NUMBER_0">%d</xliff:g>回間違えました。"\n\n"<xliff:g id="NUMBER_1">%d</xliff:g>秒後にもう一度お試しください。"</string> + <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="1575557200627128949">"タブレットのロック解除に<xliff:g id="NUMBER_0">%d</xliff:g>回失敗しました。あと<xliff:g id="NUMBER_1">%d</xliff:g>回失敗すると、タブレットは出荷時設定にリセットされ、ユーザーのデータはすべて失われます。"</string> + <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="4051015943038199910">"携帯端末のロック解除に<xliff:g id="NUMBER_0">%d</xliff:g>回失敗しました。あと<xliff:g id="NUMBER_1">%d</xliff:g>回失敗すると、端末は出荷時設定にリセットされ、ユーザーのデータはすべて失われます。"</string> + <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2072996269148483637">"タブレットのロック解除を<xliff:g id="NUMBER">%d</xliff:g>回失敗しました。タブレットは出荷時設定にリセットされます。"</string> + <string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"携帯端末のロック解除を<xliff:g id="NUMBER">%d</xliff:g>回失敗しました。端末は出荷時設定にリセットされます。"</string> + <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"ロック解除パターンの入力を<xliff:g id="NUMBER_0">%d</xliff:g>回間違えました。あと<xliff:g id="NUMBER_1">%d</xliff:g>回間違えると、タブレットのロック解除にメールアカウントが必要になります。"\n\n"<xliff:g id="NUMBER_2">%d</xliff:g>秒後にもう一度お試しください。"</string> + <string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"ロック解除パターンの入力を<xliff:g id="NUMBER_0">%d</xliff:g>回間違えました。あと<xliff:g id="NUMBER_1">%d</xliff:g>回間違えると、携帯端末のロック解除にメールアカウントが必要になります。"\n\n"<xliff:g id="NUMBER_2">%d</xliff:g>秒後にもう一度お試しください。"</string> + <string name="kg_text_message_separator" product="default" msgid="4160700433287233771">" - "</string> + <string name="kg_reordering_delete_drop_target_text" msgid="7899202978204438708">"削除"</string> + <!-- no translation found for keyguard_transport_prev_description (8229108430245669854) --> + <skip /> + <!-- no translation found for keyguard_transport_next_description (4299258300283778305) --> + <skip /> + <!-- no translation found for keyguard_transport_pause_description (5093073338238310224) --> + <skip /> + <!-- no translation found for keyguard_transport_play_description (2924628863741150956) --> + <skip /> + <!-- no translation found for keyguard_transport_stop_description (3084179324810575787) --> + <skip /> + <!-- no translation found for keyguard_carrier_default (8700650403054042153) --> + <skip /> +</resources> diff --git a/packages/Keyguard/res/values-ko/strings.xml b/packages/Keyguard/res/values-ko/strings.xml new file mode 100644 index 000000000000..3f8b44162a47 --- /dev/null +++ b/packages/Keyguard/res/values-ko/strings.xml @@ -0,0 +1,164 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* //device/apps/common/assets/res/any/strings.xml +** +** Copyright 2006, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="keyguard_password_enter_pin_code" msgid="3037685796058495017">"PIN 코드 입력"</string> + <string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"PUK 및 새 PIN 코드 입력"</string> + <string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK 코드"</string> + <string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"새 PIN 코드"</string> + <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"비밀번호를 입력하려면 터치"</font></string> + <string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"잠금 해제하려면 비밀번호 입력"</string> + <string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"잠금을 해제하려면 PIN 입력"</string> + <string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"PIN 코드가 잘못되었습니다."</string> + <string name="keyguard_label_text" msgid="861796461028298424">"잠금해제하려면 메뉴를 누른 다음 0을 누릅니다."</string> + <string name="faceunlock_multiple_failures" msgid="754137583022792429">"얼굴 인식 잠금해제 최대 시도 횟수를 초과했습니다."</string> + <!-- no translation found for keyguard_charged (3272223906073492454) --> + <skip /> + <!-- no translation found for keyguard_plugged_in (8117572000639998388) --> + <skip /> + <!-- no translation found for keyguard_low_battery (8143808018719173859) --> + <skip /> + <!-- no translation found for keyguard_instructions_when_pattern_disabled (1332288268600329841) --> + <skip /> + <!-- no translation found for keyguard_network_locked_message (9169717779058037168) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message_short (494980561304211931) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (1445849005909260039) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (3481110395508637643) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions (5210891509995942250) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions_long (5968985489463870358) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_message_short (8340813989586622356) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5892940909699723544) --> + <skip /> + <!-- no translation found for keyguard_sim_locked_message (6875773413306380902) --> + <skip /> + <!-- no translation found for keyguard_sim_puk_locked_message (3747232467471801633) --> + <skip /> + <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (7975221805033614426) --> + <skip /> + <string name="keyguard_accessibility_widget_changed" msgid="5678624624681400191">"%1$s. %3$d의 위젯 %2$d."</string> + <string name="keyguard_accessibility_add_widget" msgid="8273277058724924654">"위젯 추가"</string> + <string name="keyguard_accessibility_widget_empty_slot" msgid="1281505703307930757">"비어 있음"</string> + <string name="keyguard_accessibility_unlock_area_expanded" msgid="2278106022311170299">"잠금 해제 영역 확장됨"</string> + <string name="keyguard_accessibility_unlock_area_collapsed" msgid="6366992066936076396">"잠금 해제 영역 축소됨"</string> + <string name="keyguard_accessibility_widget" msgid="6527131039741808240">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g> 위젯"</string> + <string name="keyguard_accessibility_user_selector" msgid="1226798370913698896">"사용자 선택기"</string> + <string name="keyguard_accessibility_status" msgid="8008264603935930611">"상태"</string> + <string name="keyguard_accessibility_camera" msgid="8904231194181114603">"카메라"</string> + <string name="keygaurd_accessibility_media_controls" msgid="262209654292161806">"미디어 조정"</string> + <string name="keyguard_accessibility_widget_reorder_start" msgid="8736853615588828197">"위젯 재정렬 시작됨"</string> + <string name="keyguard_accessibility_widget_reorder_end" msgid="7170190950870468320">"위젯 재정렬 완료됨"</string> + <string name="keyguard_accessibility_widget_deleted" msgid="4426204263929224434">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g> 위젯이 삭제됨"</string> + <string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"잠금 해제 영역 확장"</string> + <string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"슬라이드하여 잠금해제합니다."</string> + <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"패턴을 사용하여 잠금해제합니다."</string> + <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"얼굴 인식을 사용하여 잠금해제합니다."</string> + <string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"핀을 사용하여 잠금해제합니다."</string> + <string name="keyguard_accessibility_password_unlock" msgid="7675777623912155089">"비밀번호를 사용하여 잠금해제합니다."</string> + <string name="keyguard_accessibility_pattern_area" msgid="7679891324509597904">"패턴을 그리는 부분입니다."</string> + <string name="keyguard_accessibility_slide_area" msgid="6736064494019979544">"슬라이드하는 부분입니다."</string> + <!-- no translation found for keyguard_accessibility_transport_prev_description (1337286538318543555) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_next_description (7073928300444909320) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_pause_description (8455979545295224302) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_play_description (8146417789511154044) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_stop_description (7656358482980912216) --> + <skip /> + <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> + <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string> + <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> + <string name="keyboardview_keycode_alt" msgid="4856868820040051939">"Alt 키"</string> + <string name="keyboardview_keycode_cancel" msgid="1203984017245783244">"취소"</string> + <string name="keyboardview_keycode_delete" msgid="3337914833206635744">"Delete 키"</string> + <string name="keyboardview_keycode_done" msgid="1992571118466679775">"완료"</string> + <string name="keyboardview_keycode_mode_change" msgid="4547387741906537519">"모드 변경"</string> + <string name="keyboardview_keycode_shift" msgid="2270748814315147690">"Shift 키"</string> + <string name="keyboardview_keycode_enter" msgid="2985864015076059467">"Enter 키"</string> + <string name="description_target_unlock" msgid="2228524900439801453">"잠금 해제"</string> + <string name="description_target_camera" msgid="969071997552486814">"카메라"</string> + <string name="description_target_silent" msgid="893551287746522182">"무음"</string> + <string name="description_target_soundon" msgid="30052466675500172">"사운드 켜기"</string> + <string name="description_target_search" msgid="3091587249776033139">"검색"</string> + <string name="description_direction_up" msgid="7169032478259485180">"<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>하려면 위로 슬라이드"</string> + <string name="description_direction_down" msgid="5087739728639014595">"<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>하려면 아래로 슬라이드"</string> + <string name="description_direction_left" msgid="7207478719805562165">"<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>하려면 왼쪽으로 슬라이드"</string> + <string name="description_direction_right" msgid="8034433242579600980">"<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>하려면 오른쪽으로 슬라이드"</string> + <string name="user_switched" msgid="3768006783166984410">"현재 사용자는 <xliff:g id="NAME">%1$s</xliff:g>님입니다."</string> + <string name="kg_emergency_call_label" msgid="684946192523830531">"긴급 통화"</string> + <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"패턴을 잊음"</string> + <string name="kg_wrong_pattern" msgid="1850806070801358830">"잘못된 패턴"</string> + <string name="kg_wrong_password" msgid="2333281762128113157">"잘못된 비밀번호"</string> + <string name="kg_wrong_pin" msgid="1131306510833563801">"잘못된 PIN"</string> + <string name="kg_too_many_failed_attempts_countdown" msgid="6358110221603297548">"<xliff:g id="NUMBER">%d</xliff:g>초 후에 다시 시도해 주세요."</string> + <string name="kg_pattern_instructions" msgid="398978611683075868">"패턴 그리기"</string> + <string name="kg_sim_pin_instructions" msgid="2319508550934557331">"SIM PIN 입력"</string> + <string name="kg_pin_instructions" msgid="2377242233495111557">"PIN 입력"</string> + <string name="kg_password_instructions" msgid="5753646556186936819">"비밀번호 입력"</string> + <string name="kg_puk_enter_puk_hint" msgid="453227143861735537">"이제 SIM을 사용할 수 없습니다. 계속하려면 PUK 코드를 입력합니다. 자세한 내용은 이동통신사에 문의하세요."</string> + <string name="kg_puk_enter_pin_hint" msgid="7871604527429602024">"원하는 PIN 코드 입력"</string> + <string name="kg_enter_confirm_pin_hint" msgid="325676184762529976">"원하는 PIN 코드 확인"</string> + <string name="kg_sim_unlock_progress_dialog_message" msgid="8950398016976865762">"SIM 카드 잠금해제 중..."</string> + <string name="kg_password_wrong_pin_code" msgid="1139324887413846912">"PIN 코드가 잘못되었습니다."</string> + <string name="kg_invalid_sim_pin_hint" msgid="8795159358110620001">"4~8자리 숫자로 된 PIN을 입력하세요."</string> + <string name="kg_invalid_sim_puk_hint" msgid="7553388325654369575">"PUK 코드는 8자리 이상의 숫자여야 합니다."</string> + <string name="kg_invalid_puk" msgid="3638289409676051243">"올바른 PUK 코드를 다시 입력하세요. 입력을 반복해서 시도하면 SIM을 영구적으로 사용할 수 없게 됩니다."</string> + <string name="kg_invalid_confirm_pin_hint" product="default" msgid="7003469261464593516">"PIN 코드가 일치하지 않음"</string> + <string name="kg_login_too_many_attempts" msgid="6486842094005698475">"패턴 시도 횟수가 너무 많음"</string> + <string name="kg_login_instructions" msgid="1100551261265506448">"잠금해제하려면 Google 계정으로 로그인하세요."</string> + <string name="kg_login_username_hint" msgid="5718534272070920364">"사용자 이름(이메일)"</string> + <string name="kg_login_password_hint" msgid="9057289103827298549">"비밀번호"</string> + <string name="kg_login_submit_button" msgid="5355904582674054702">"로그인"</string> + <string name="kg_login_invalid_input" msgid="5754664119319872197">"사용자 이름 또는 비밀번호가 잘못되었습니다."</string> + <string name="kg_login_account_recovery_hint" msgid="5690709132841752974">"사용자 이름이나 비밀번호를 잊어버렸습니까?"\n<b>"google.com/accounts/recovery"</b>" 페이지를 방문하세요."</string> + <string name="kg_login_checking_password" msgid="1052685197710252395">"계정 확인 중…"</string> + <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="8276745642049502550">"PIN을 <xliff:g id="NUMBER_0">%d</xliff:g>회 잘못 입력했습니다. "\n\n"<xliff:g id="NUMBER_1">%d</xliff:g>초 후에 다시 시도해 주세요."</string> + <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="7813713389422226531">"비밀번호를 <xliff:g id="NUMBER_0">%d</xliff:g>회 잘못 입력했습니다. "\n\n"<xliff:g id="NUMBER_1">%d</xliff:g>초 후에 다시 시도해 주세요."</string> + <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="74089475965050805">"잠금해제 패턴을 <xliff:g id="NUMBER_0">%d</xliff:g>회 잘못 그렸습니다. "\n\n"<xliff:g id="NUMBER_1">%d</xliff:g>초 후에 다시 시도해 주세요."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="1575557200627128949">"태블릿을 잠금해제하려는 시도가 <xliff:g id="NUMBER_0">%d</xliff:g>회 잘못되었습니다. <xliff:g id="NUMBER_1">%d</xliff:g>회 더 실패하면 태블릿이 초기화되고 사용자 데이터가 모두 사라집니다."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="4051015943038199910">"휴대전화를 잠금해제하려는 시도가 <xliff:g id="NUMBER_0">%d</xliff:g>회 잘못되었습니다. <xliff:g id="NUMBER_1">%d</xliff:g>회 더 실패하면 휴대전화가 초기화되고 사용자 데이터가 모두 사라집니다."</string> + <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2072996269148483637">"태블릿을 잠금해제하려는 시도가 <xliff:g id="NUMBER">%d</xliff:g>회 잘못되었습니다. 태블릿이 초기화됩니다."</string> + <string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"휴대전화를 잠금해제하려는 시도가 <xliff:g id="NUMBER">%d</xliff:g>회 잘못되었습니다. 휴대전화가 초기화됩니다."</string> + <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"잠금해제 패턴을 <xliff:g id="NUMBER_0">%d</xliff:g>회 잘못 그렸습니다. <xliff:g id="NUMBER_1">%d</xliff:g>회 더 실패하면 이메일 계정을 사용하여 태블릿을 잠금해제해야 합니다."\n\n" <xliff:g id="NUMBER_2">%d</xliff:g>초 후에 다시 시도해 주세요."</string> + <string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"잠금해제 패턴을 <xliff:g id="NUMBER_0">%d</xliff:g>회 잘못 그렸습니다. <xliff:g id="NUMBER_1">%d</xliff:g>회 더 실패하면 이메일 계정을 사용하여 휴대전화를 잠금해제해야 합니다."\n\n" <xliff:g id="NUMBER_2">%d</xliff:g>초 후에 다시 시도해 주세요."</string> + <string name="kg_text_message_separator" product="default" msgid="4160700433287233771">" — "</string> + <string name="kg_reordering_delete_drop_target_text" msgid="7899202978204438708">"삭제"</string> + <!-- no translation found for keyguard_transport_prev_description (8229108430245669854) --> + <skip /> + <!-- no translation found for keyguard_transport_next_description (4299258300283778305) --> + <skip /> + <!-- no translation found for keyguard_transport_pause_description (5093073338238310224) --> + <skip /> + <!-- no translation found for keyguard_transport_play_description (2924628863741150956) --> + <skip /> + <!-- no translation found for keyguard_transport_stop_description (3084179324810575787) --> + <skip /> + <!-- no translation found for keyguard_carrier_default (8700650403054042153) --> + <skip /> +</resources> diff --git a/core/res/res/values-port/alias.xml b/packages/Keyguard/res/values-land/alias.xml index bf3eecb992ba..7aac5b4ab379 100644 --- a/core/res/res/values-port/alias.xml +++ b/packages/Keyguard/res/values-land/alias.xml @@ -19,5 +19,5 @@ --> <resources> <!-- Alias used to reference one of two possible layouts in keyguard. --> - <item type="layout" name="keyguard_eca">@android:layout/keyguard_emergency_carrier_area</item> + <item type="layout" name="keyguard_eca">@layout/keyguard_emergency_carrier_area_empty</item> </resources> diff --git a/packages/Keyguard/res/values-land/arrays.xml b/packages/Keyguard/res/values-land/arrays.xml new file mode 100644 index 000000000000..240b9e47696a --- /dev/null +++ b/packages/Keyguard/res/values-land/arrays.xml @@ -0,0 +1,72 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* //device/apps/common/assets/res/any/colors.xml +** +** Copyright 2006, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + + <!-- Resources for GlowPadView in LockScreen --> + <array name="lockscreen_targets_when_silent"> + <item>@null</item>" + <item>@drawable/ic_action_assist_generic</item> + <item>@drawable/ic_lockscreen_soundon</item> + <item>@drawable/ic_lockscreen_unlock</item> + </array> + + <array name="lockscreen_target_descriptions_when_silent"> + <item>@null</item> + <item>@string/description_target_search</item> + <item>@string/description_target_soundon</item> + <item>@string/description_target_unlock</item> + </array> + + <array name="lockscreen_direction_descriptions"> + <item>@null</item> + <item>@string/description_direction_up</item> + <item>@string/description_direction_left</item> + <item>@string/description_direction_down</item> + </array> + + <array name="lockscreen_targets_when_soundon"> + <item>@null</item> + <item>@drawable/ic_action_assist_generic</item> + <item>@drawable/ic_lockscreen_silent</item> + <item>@drawable/ic_lockscreen_unlock</item> + </array> + + <array name="lockscreen_target_descriptions_when_soundon"> + <item>@null</item> + <item>@string/description_target_search</item> + <item>@string/description_target_silent</item> + <item>@string/description_target_unlock</item> + </array> + + <array name="lockscreen_targets_with_camera"> + <item>@null</item> + <item>@drawable/ic_action_assist_generic</item> + <item>@drawable/ic_lockscreen_camera</item> + <item>@drawable/ic_lockscreen_unlock</item> + </array> + + <array name="lockscreen_target_descriptions_with_camera"> + <item>@null</item> + <item>@string/description_target_search</item> + <item>@string/description_target_camera</item> + <item>@string/description_target_unlock</item> + </array> + +</resources> diff --git a/packages/Keyguard/res/values-land/bools.xml b/packages/Keyguard/res/values-land/bools.xml new file mode 100644 index 000000000000..a1dd2e46fec6 --- /dev/null +++ b/packages/Keyguard/res/values-land/bools.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2012 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<resources> + <bool name="kg_enable_camera_default_widget">false</bool> + <bool name="kg_top_align_page_shrink_on_bouncer_visible">true</bool> + <bool name="kg_share_status_area">false</bool> + <bool name="kg_sim_puk_account_full_screen">false</bool> +</resources> diff --git a/packages/Keyguard/res/values-land/dimens.xml b/packages/Keyguard/res/values-land/dimens.xml new file mode 100644 index 000000000000..64e043cfb93f --- /dev/null +++ b/packages/Keyguard/res/values-land/dimens.xml @@ -0,0 +1,51 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 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. +*/ +--> + +<resources> + <!-- Default height of a key in the password keyboard for alpha --> + <dimen name="password_keyboard_key_height_alpha">47dip</dimen> + <!-- Default height of a key in the password keyboard for numeric --> + <dimen name="password_keyboard_key_height_numeric">50dip</dimen> + <!-- Default correction for the space key in the password keyboard --> + <dimen name="password_keyboard_spacebar_vertical_correction">2dip</dimen> + <dimen name="preference_widget_width">72dp</dimen> + + <!-- Size of clock font in LockScreen on Unsecure unlock screen. --> + <dimen name="keyguard_lockscreen_clock_font_size">70sp</dimen> + + <!-- Shift emergency button from the left edge by this amount. Used by landscape layout on + phones --> + <dimen name="kg_emergency_button_shift">30dp</dimen> + + <!-- Space reserved at the bottom of secure views (pin/pattern/password/SIM pin/SIM puk) --> + <dimen name="kg_secure_padding_height">0dp</dimen> + + <!-- Top padding for the widget pager --> + <dimen name="kg_widget_pager_top_padding">0dp</dimen> + + <!-- Bottom padding for the widget pager --> + <dimen name="kg_widget_pager_bottom_padding">0dp</dimen> + + <!-- If the height if keyguard drops below this threshold (most likely + due to the appearance of the IME), then drop the multiuser selector. + Landscape's layout allows this to be smaller than for portrait. --> + <dimen name="kg_squashed_layout_threshold">400dp</dimen> + +</resources> diff --git a/packages/Keyguard/res/values-land/integers.xml b/packages/Keyguard/res/values-land/integers.xml new file mode 100644 index 000000000000..020fd23cec81 --- /dev/null +++ b/packages/Keyguard/res/values-land/integers.xml @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** Copyright 2012, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> +<resources> + <!-- Gravity to make KeyguardSelectorView work in multiple orientations + 0x13 == "left|center_vertical" --> + <integer name="kg_selector_gravity">0x13</integer> + <integer name="kg_widget_region_weight">45</integer> + <integer name="kg_security_flipper_weight">55</integer> + <integer name="kg_glowpad_rotation_offset">-90</integer> +</resources> diff --git a/packages/Keyguard/res/values-large/dimens.xml b/packages/Keyguard/res/values-large/dimens.xml new file mode 100644 index 000000000000..8cd614dfe4c9 --- /dev/null +++ b/packages/Keyguard/res/values-large/dimens.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** Copyright 2011, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> +<resources> + <!-- Default height of a key in the password keyboard for alpha --> + <dimen name="password_keyboard_key_height_alpha">75dip</dimen> + <!-- Default height of a key in the password keyboard for numeric --> + <dimen name="password_keyboard_key_height_numeric">75dip</dimen> + <!-- keyboardHeight = key_height*4 + key_bottom_gap*3 --> + <dimen name="password_keyboard_height">48.0mm</dimen> + + <!-- Minimum width of the search view text entry area. --> + <dimen name="search_view_text_min_width">192dip</dimen> + + <item type="dimen" name="dialog_min_width_major">55%</item> + <item type="dimen" name="dialog_min_width_minor">80%</item> + + <!-- Preference UI dimensions for larger screens. --> + <dimen name="preference_widget_width">56dp</dimen> +</resources> diff --git a/packages/Keyguard/res/values-lt/strings.xml b/packages/Keyguard/res/values-lt/strings.xml new file mode 100644 index 000000000000..acaf0f7914b2 --- /dev/null +++ b/packages/Keyguard/res/values-lt/strings.xml @@ -0,0 +1,164 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* //device/apps/common/assets/res/any/strings.xml +** +** Copyright 2006, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="keyguard_password_enter_pin_code" msgid="3037685796058495017">"Įveskite PIN kodą"</string> + <string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Įveskite PUK ir naują PIN kodus"</string> + <string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK kodas"</string> + <string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Naujas PIN kodas"</string> + <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Palieskite, kad įves. slaptaž."</font></string> + <string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Jei norite atrakinti, įveskite slaptažodį"</string> + <string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Jei norite atrakinti, įveskite PIN kodą"</string> + <string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Neteisingas PIN kodas."</string> + <string name="keyguard_label_text" msgid="861796461028298424">"Jei norite atrakinti, paspauskite „Meniu“ ir 0."</string> + <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Viršijote maksimalų atrakinimo pagal veidą bandymų skaičių"</string> + <!-- no translation found for keyguard_charged (3272223906073492454) --> + <skip /> + <!-- no translation found for keyguard_plugged_in (8117572000639998388) --> + <skip /> + <!-- no translation found for keyguard_low_battery (8143808018719173859) --> + <skip /> + <!-- no translation found for keyguard_instructions_when_pattern_disabled (1332288268600329841) --> + <skip /> + <!-- no translation found for keyguard_network_locked_message (9169717779058037168) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message_short (494980561304211931) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (1445849005909260039) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (3481110395508637643) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions (5210891509995942250) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions_long (5968985489463870358) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_message_short (8340813989586622356) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5892940909699723544) --> + <skip /> + <!-- no translation found for keyguard_sim_locked_message (6875773413306380902) --> + <skip /> + <!-- no translation found for keyguard_sim_puk_locked_message (3747232467471801633) --> + <skip /> + <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (7975221805033614426) --> + <skip /> + <string name="keyguard_accessibility_widget_changed" msgid="5678624624681400191">"%1$s. %2$d valdiklis iš %3$d."</string> + <string name="keyguard_accessibility_add_widget" msgid="8273277058724924654">"Pridėti valdiklį."</string> + <string name="keyguard_accessibility_widget_empty_slot" msgid="1281505703307930757">"Tuščia"</string> + <string name="keyguard_accessibility_unlock_area_expanded" msgid="2278106022311170299">"Atrakinimo sritis išplėsta."</string> + <string name="keyguard_accessibility_unlock_area_collapsed" msgid="6366992066936076396">"Atrakinimo sritis sutraukta."</string> + <string name="keyguard_accessibility_widget" msgid="6527131039741808240">"Valdiklis <xliff:g id="WIDGET_INDEX">%1$s</xliff:g>."</string> + <string name="keyguard_accessibility_user_selector" msgid="1226798370913698896">"Naudotojo pasirinkimo valdiklis"</string> + <string name="keyguard_accessibility_status" msgid="8008264603935930611">"Būsena"</string> + <string name="keyguard_accessibility_camera" msgid="8904231194181114603">"Fotoaparatas"</string> + <string name="keygaurd_accessibility_media_controls" msgid="262209654292161806">"Medijos valdikliai"</string> + <string name="keyguard_accessibility_widget_reorder_start" msgid="8736853615588828197">"Valdiklių pertvarkymas pradėtas."</string> + <string name="keyguard_accessibility_widget_reorder_end" msgid="7170190950870468320">"Valdiklių pertvarkymas baigtas."</string> + <string name="keyguard_accessibility_widget_deleted" msgid="4426204263929224434">"Valdiklis <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> ištrintas."</string> + <string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"Išplėsti atrakinimo sritį."</string> + <string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"Atrakinimas slystant."</string> + <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"Atrakinimas pagal piešinį."</string> + <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"Atrakinimas pagal veidą."</string> + <string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"Atrakinimas įvedus PIN kodą."</string> + <string name="keyguard_accessibility_password_unlock" msgid="7675777623912155089">"Atrakinimas įvedus slaptažodį."</string> + <string name="keyguard_accessibility_pattern_area" msgid="7679891324509597904">"Atrakinimo pagal piešinį sritis."</string> + <string name="keyguard_accessibility_slide_area" msgid="6736064494019979544">"Slydimo sritis."</string> + <!-- no translation found for keyguard_accessibility_transport_prev_description (1337286538318543555) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_next_description (7073928300444909320) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_pause_description (8455979545295224302) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_play_description (8146417789511154044) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_stop_description (7656358482980912216) --> + <skip /> + <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> + <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string> + <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> + <string name="keyboardview_keycode_alt" msgid="4856868820040051939">"Alt"</string> + <string name="keyboardview_keycode_cancel" msgid="1203984017245783244">"Atšaukti"</string> + <string name="keyboardview_keycode_delete" msgid="3337914833206635744">"Ištrinti"</string> + <string name="keyboardview_keycode_done" msgid="1992571118466679775">"Atlikta"</string> + <string name="keyboardview_keycode_mode_change" msgid="4547387741906537519">"Režimo keitimas"</string> + <string name="keyboardview_keycode_shift" msgid="2270748814315147690">"Shift"</string> + <string name="keyboardview_keycode_enter" msgid="2985864015076059467">"Įvesti"</string> + <string name="description_target_unlock" msgid="2228524900439801453">"Atrakinti"</string> + <string name="description_target_camera" msgid="969071997552486814">"Vaizdo kamera"</string> + <string name="description_target_silent" msgid="893551287746522182">"Begarsis"</string> + <string name="description_target_soundon" msgid="30052466675500172">"Garsas įjungtas"</string> + <string name="description_target_search" msgid="3091587249776033139">"Paieška"</string> + <string name="description_direction_up" msgid="7169032478259485180">"Slyskite aukštyn link <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_down" msgid="5087739728639014595">"Slyskite žemyn link <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_left" msgid="7207478719805562165">"Slyskite į kairę link <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_right" msgid="8034433242579600980">"Slyskite į dešinę link <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="user_switched" msgid="3768006783166984410">"Dabartinis naudotojas: <xliff:g id="NAME">%1$s</xliff:g>."</string> + <string name="kg_emergency_call_label" msgid="684946192523830531">"Skambutis pagalbos numeriu"</string> + <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Pamiršau atrakinimo piešinį"</string> + <string name="kg_wrong_pattern" msgid="1850806070801358830">"Netinkamas atrakinimo piešinys"</string> + <string name="kg_wrong_password" msgid="2333281762128113157">"Netinkamas slaptažodis"</string> + <string name="kg_wrong_pin" msgid="1131306510833563801">"Netinkamas PIN kodas"</string> + <string name="kg_too_many_failed_attempts_countdown" msgid="6358110221603297548">"Bandyti dar kartą po <xliff:g id="NUMBER">%d</xliff:g> sek."</string> + <string name="kg_pattern_instructions" msgid="398978611683075868">"Nupieškite atrakinimo piešinį"</string> + <string name="kg_sim_pin_instructions" msgid="2319508550934557331">"Įveskite SIM PIN kodą"</string> + <string name="kg_pin_instructions" msgid="2377242233495111557">"Įveskite PIN kodą"</string> + <string name="kg_password_instructions" msgid="5753646556186936819">"Įveskite slaptažodį"</string> + <string name="kg_puk_enter_puk_hint" msgid="453227143861735537">"Dabar SIM neleidžiama. Jei norite tęsti, įveskite PUK kodą. Jei reikia išsamios informacijos, susisiekite su operatoriumi."</string> + <string name="kg_puk_enter_pin_hint" msgid="7871604527429602024">"Įveskite pageidaujamą PIN kodą"</string> + <string name="kg_enter_confirm_pin_hint" msgid="325676184762529976">"Patvirtinkite pageidaujamą PIN kodą"</string> + <string name="kg_sim_unlock_progress_dialog_message" msgid="8950398016976865762">"Atrakinama SIM kortelė…"</string> + <string name="kg_password_wrong_pin_code" msgid="1139324887413846912">"Netinkamas PIN kodas."</string> + <string name="kg_invalid_sim_pin_hint" msgid="8795159358110620001">"Įveskite PIN kodą, sudarytą iš 4–8 skaičių."</string> + <string name="kg_invalid_sim_puk_hint" msgid="7553388325654369575">"PUK kodas turėtų būti mažiausiai 8 skaitmenų."</string> + <string name="kg_invalid_puk" msgid="3638289409676051243">"Pakartotinai įveskite tinkamą PUK kodą. Pakartotinai bandant SIM bus neleidžiama visam laikui."</string> + <string name="kg_invalid_confirm_pin_hint" product="default" msgid="7003469261464593516">"PIN kodai neatitinka"</string> + <string name="kg_login_too_many_attempts" msgid="6486842094005698475">"Per daug atrakinimo piešinių bandymų"</string> + <string name="kg_login_instructions" msgid="1100551261265506448">"Jei norite atrakinti, prisijunkite naudodami „Google“ paskyrą."</string> + <string name="kg_login_username_hint" msgid="5718534272070920364">"Naudotojo vardas (el. paštas)"</string> + <string name="kg_login_password_hint" msgid="9057289103827298549">"Slaptažodis"</string> + <string name="kg_login_submit_button" msgid="5355904582674054702">"Prisijungti"</string> + <string name="kg_login_invalid_input" msgid="5754664119319872197">"Netinkamas naudotojo vardas ar slaptažodis."</string> + <string name="kg_login_account_recovery_hint" msgid="5690709132841752974">"Pamiršote naudotojo vardą ar slaptažodį?"\n"Apsilankykite šiuo adresu: "<b>"google.com/accounts/recovery"</b></string> + <string name="kg_login_checking_password" msgid="1052685197710252395">"Tikrinama paskyra…"</string> + <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="8276745642049502550">"PIN kodą netinkamai įvedėte <xliff:g id="NUMBER_0">%d</xliff:g> k. "\n\n"Bandykite dar kartą po <xliff:g id="NUMBER_1">%d</xliff:g> sek."</string> + <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="7813713389422226531">"Neteisingai įvedėte slaptažodį <xliff:g id="NUMBER_0">%d</xliff:g> k. "\n\n"Bandykite dar kartą po <xliff:g id="NUMBER_1">%d</xliff:g> sek."</string> + <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="74089475965050805">"Netinkamai nupiešėte atrakinimo piešinį <xliff:g id="NUMBER_0">%d</xliff:g> k. "\n\n"Bandykite dar kartą po <xliff:g id="NUMBER_1">%d</xliff:g> sek."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="1575557200627128949">"<xliff:g id="NUMBER_0">%d</xliff:g> k. bandėte netinkamai atrakinti planšetinį kompiuterį. Po dar <xliff:g id="NUMBER_1">%d</xliff:g> nesėkm. band. planšetiniame kompiuteryje bus iš naujo nustatyti numatytieji gamyklos nustatymai ir bus prarasti visi naudotojo duomenys."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="4051015943038199910">"<xliff:g id="NUMBER_0">%d</xliff:g> k. bandėte netinkamai atrakinti telefoną. Po dar <xliff:g id="NUMBER_1">%d</xliff:g> nesėkm. band. telefone bus iš naujo nustatyti numatytieji gamyklos nustatymai ir bus prarasti visi naudotojo duomenys."</string> + <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2072996269148483637">"<xliff:g id="NUMBER">%d</xliff:g> k. bandėte netinkamai atrakinti planšetinį kompiuterį. Planšetiniame kompiuteryje bus iš naujo nustatyti numatytieji gamyklos nustatymai."</string> + <string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"<xliff:g id="NUMBER">%d</xliff:g> k. bandėte netinkamai atrakinti telefoną. Telefone bus iš naujo nustatyti numatytieji gamyklos nustatymai."</string> + <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Netinkamai nupiešėte atrakinimo piešinį <xliff:g id="NUMBER_0">%d</xliff:g> k. Po dar <xliff:g id="NUMBER_1">%d</xliff:g> nesėkm. band. būsite paprašyti atrakinti planšetinį kompiuterį naudodami „Google“ prisijungimo duomenis."\n\n" Bandykite dar kartą po <xliff:g id="NUMBER_2">%d</xliff:g> sek."</string> + <string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"Netinkamai nupiešėte atrakinimo piešinį <xliff:g id="NUMBER_0">%d</xliff:g> k. Po dar <xliff:g id="NUMBER_1">%d</xliff:g> nesėkm. band. būsite paprašyti atrakinti telefoną naudodami „Google“ prisijungimo duomenis."\n\n" Bandykite dar kartą po <xliff:g id="NUMBER_2">%d</xliff:g> sek."</string> + <string name="kg_text_message_separator" product="default" msgid="4160700433287233771">" – "</string> + <string name="kg_reordering_delete_drop_target_text" msgid="7899202978204438708">"Pašalinti"</string> + <!-- no translation found for keyguard_transport_prev_description (8229108430245669854) --> + <skip /> + <!-- no translation found for keyguard_transport_next_description (4299258300283778305) --> + <skip /> + <!-- no translation found for keyguard_transport_pause_description (5093073338238310224) --> + <skip /> + <!-- no translation found for keyguard_transport_play_description (2924628863741150956) --> + <skip /> + <!-- no translation found for keyguard_transport_stop_description (3084179324810575787) --> + <skip /> + <!-- no translation found for keyguard_carrier_default (8700650403054042153) --> + <skip /> +</resources> diff --git a/packages/Keyguard/res/values-lv/strings.xml b/packages/Keyguard/res/values-lv/strings.xml new file mode 100644 index 000000000000..94cae47056a5 --- /dev/null +++ b/packages/Keyguard/res/values-lv/strings.xml @@ -0,0 +1,164 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* //device/apps/common/assets/res/any/strings.xml +** +** Copyright 2006, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="keyguard_password_enter_pin_code" msgid="3037685796058495017">"Ievadiet PIN kodu."</string> + <string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Ievadiet PUK kodu un jaunu PIN kodu."</string> + <string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK kods"</string> + <string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Jauns PIN kods"</string> + <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Pieskarieties, lai ievadītu paroli"</font>"."</string> + <string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Ievadiet paroli, lai atbloķētu."</string> + <string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Lai atbloķētu, ievadiet PIN."</string> + <string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"PIN kods nav pareizs."</string> + <string name="keyguard_label_text" msgid="861796461028298424">"Lai atbloķētu, nospiediet Izvēlne, pēc tam 0."</string> + <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Ir pārsniegts maksimālais Autorizācijas pēc sejas mēģinājumu skaits."</string> + <!-- no translation found for keyguard_charged (3272223906073492454) --> + <skip /> + <!-- no translation found for keyguard_plugged_in (8117572000639998388) --> + <skip /> + <!-- no translation found for keyguard_low_battery (8143808018719173859) --> + <skip /> + <!-- no translation found for keyguard_instructions_when_pattern_disabled (1332288268600329841) --> + <skip /> + <!-- no translation found for keyguard_network_locked_message (9169717779058037168) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message_short (494980561304211931) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (1445849005909260039) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (3481110395508637643) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions (5210891509995942250) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions_long (5968985489463870358) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_message_short (8340813989586622356) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5892940909699723544) --> + <skip /> + <!-- no translation found for keyguard_sim_locked_message (6875773413306380902) --> + <skip /> + <!-- no translation found for keyguard_sim_puk_locked_message (3747232467471801633) --> + <skip /> + <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (7975221805033614426) --> + <skip /> + <string name="keyguard_accessibility_widget_changed" msgid="5678624624681400191">"%1$s. %2$d. logrīks no %3$d."</string> + <string name="keyguard_accessibility_add_widget" msgid="8273277058724924654">"Pievienot logrīku."</string> + <string name="keyguard_accessibility_widget_empty_slot" msgid="1281505703307930757">"Tukšs"</string> + <string name="keyguard_accessibility_unlock_area_expanded" msgid="2278106022311170299">"Atbloķēšanas apgabals ir izvērsts."</string> + <string name="keyguard_accessibility_unlock_area_collapsed" msgid="6366992066936076396">"Atbloķēšanas apgabals ir sakļauts."</string> + <string name="keyguard_accessibility_widget" msgid="6527131039741808240">"Logrīks <xliff:g id="WIDGET_INDEX">%1$s</xliff:g>."</string> + <string name="keyguard_accessibility_user_selector" msgid="1226798370913698896">"Lietotāju atlasītājs"</string> + <string name="keyguard_accessibility_status" msgid="8008264603935930611">"Statuss"</string> + <string name="keyguard_accessibility_camera" msgid="8904231194181114603">"Kamera"</string> + <string name="keygaurd_accessibility_media_controls" msgid="262209654292161806">"Multivides vadīklas"</string> + <string name="keyguard_accessibility_widget_reorder_start" msgid="8736853615588828197">"Logrīku pārkārtošana ir sākta."</string> + <string name="keyguard_accessibility_widget_reorder_end" msgid="7170190950870468320">"Logrīku pārkārtošana ir pabeigta."</string> + <string name="keyguard_accessibility_widget_deleted" msgid="4426204263929224434">"Logrīks <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> ir izdzēsts."</string> + <string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"Izvērst atbloķēšanas apgabalu."</string> + <string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"Autorizācija, velkot ar pirkstu."</string> + <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"Autorizācija ar kombināciju."</string> + <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"Autorizācija pēc sejas."</string> + <string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"Autorizācija ar PIN kodu."</string> + <string name="keyguard_accessibility_password_unlock" msgid="7675777623912155089">"Autorizācija ar paroli."</string> + <string name="keyguard_accessibility_pattern_area" msgid="7679891324509597904">"Kombinācijas ievades apgabals."</string> + <string name="keyguard_accessibility_slide_area" msgid="6736064494019979544">"Apgabals, kur vilkt ar pirkstu."</string> + <!-- no translation found for keyguard_accessibility_transport_prev_description (1337286538318543555) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_next_description (7073928300444909320) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_pause_description (8455979545295224302) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_play_description (8146417789511154044) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_stop_description (7656358482980912216) --> + <skip /> + <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> + <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string> + <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> + <string name="keyboardview_keycode_alt" msgid="4856868820040051939">"Alternēšanas taustiņš"</string> + <string name="keyboardview_keycode_cancel" msgid="1203984017245783244">"Atcelt"</string> + <string name="keyboardview_keycode_delete" msgid="3337914833206635744">"Dzēšanas taustiņš"</string> + <string name="keyboardview_keycode_done" msgid="1992571118466679775">"Gatavs"</string> + <string name="keyboardview_keycode_mode_change" msgid="4547387741906537519">"Režīma maiņa"</string> + <string name="keyboardview_keycode_shift" msgid="2270748814315147690">"Pārslēgšanas taustiņš"</string> + <string name="keyboardview_keycode_enter" msgid="2985864015076059467">"Ievadīšanas taustiņš"</string> + <string name="description_target_unlock" msgid="2228524900439801453">"Atbloķēt"</string> + <string name="description_target_camera" msgid="969071997552486814">"Kamera"</string> + <string name="description_target_silent" msgid="893551287746522182">"Klusums"</string> + <string name="description_target_soundon" msgid="30052466675500172">"Skaņa ieslēgta"</string> + <string name="description_target_search" msgid="3091587249776033139">"Meklēt"</string> + <string name="description_direction_up" msgid="7169032478259485180">"Velciet uz augšu, lai veiktu šādu darbību: <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_down" msgid="5087739728639014595">"Velciet uz leju, lai veiktu šādu darbību: <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_left" msgid="7207478719805562165">"Velciet pa kreisi, lai veiktu šādu darbību: <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_right" msgid="8034433242579600980">"Velciet pa labi, lai veiktu šādu darbību: <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="user_switched" msgid="3768006783166984410">"Pašreizējais lietotājs: <xliff:g id="NAME">%1$s</xliff:g>."</string> + <string name="kg_emergency_call_label" msgid="684946192523830531">"Ārkārtas izsaukums"</string> + <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Aizmirsu kombināciju"</string> + <string name="kg_wrong_pattern" msgid="1850806070801358830">"Nepareiza kombinācija"</string> + <string name="kg_wrong_password" msgid="2333281762128113157">"Nepareiza parole"</string> + <string name="kg_wrong_pin" msgid="1131306510833563801">"Nepareizs PIN"</string> + <string name="kg_too_many_failed_attempts_countdown" msgid="6358110221603297548">"Mēģiniet vēlreiz pēc <xliff:g id="NUMBER">%d</xliff:g> sekundēm."</string> + <string name="kg_pattern_instructions" msgid="398978611683075868">"Norādiet savu kombināciju"</string> + <string name="kg_sim_pin_instructions" msgid="2319508550934557331">"Ievadiet SIM kartes PIN"</string> + <string name="kg_pin_instructions" msgid="2377242233495111557">"Ievadiet PIN"</string> + <string name="kg_password_instructions" msgid="5753646556186936819">"Ievadiet paroli"</string> + <string name="kg_puk_enter_puk_hint" msgid="453227143861735537">"SIM karte ir atspējota. Lai turpinātu, ievadiet PUK kodu. Lai iegūtu detalizētu informāciju, sazinieties ar mobilo sakaru operatoru."</string> + <string name="kg_puk_enter_pin_hint" msgid="7871604527429602024">"Ievadiet vēlamo PIN kodu."</string> + <string name="kg_enter_confirm_pin_hint" msgid="325676184762529976">"Apstipriniet vēlamo PIN."</string> + <string name="kg_sim_unlock_progress_dialog_message" msgid="8950398016976865762">"Notiek SIM kartes atbloķēšana..."</string> + <string name="kg_password_wrong_pin_code" msgid="1139324887413846912">"PIN kods nav pareizs."</string> + <string name="kg_invalid_sim_pin_hint" msgid="8795159358110620001">"Ievadiet PIN, kas sastāv no 4 līdz 8 cipariem."</string> + <string name="kg_invalid_sim_puk_hint" msgid="7553388325654369575">"PUK kodam ir jābūt vismaz 8 ciparus garam."</string> + <string name="kg_invalid_puk" msgid="3638289409676051243">"Atkārtoti ievadiet pareizo PUK kodu. Ja vairākas reizes ievadīsiet to nepareizi, SIM karte tiks neatgriezeniski atspējota."</string> + <string name="kg_invalid_confirm_pin_hint" product="default" msgid="7003469261464593516">"PIN kodi neatbilst."</string> + <string name="kg_login_too_many_attempts" msgid="6486842094005698475">"Pārāk daudz kombinācijas mēģinājumu"</string> + <string name="kg_login_instructions" msgid="1100551261265506448">"Lai atbloķētu, pierakstieties, izmantojot savu Google kontu."</string> + <string name="kg_login_username_hint" msgid="5718534272070920364">"Lietotājvārds (e-pasts)"</string> + <string name="kg_login_password_hint" msgid="9057289103827298549">"Parole"</string> + <string name="kg_login_submit_button" msgid="5355904582674054702">"Pierakstīties"</string> + <string name="kg_login_invalid_input" msgid="5754664119319872197">"Nederīgs lietotājvārds vai parole."</string> + <string name="kg_login_account_recovery_hint" msgid="5690709132841752974">"Vai aizmirsāt lietotājvārdu vai paroli?"\n"Apmeklējiet vietni "<b>"google.com/accounts/recovery"</b>"."</string> + <string name="kg_login_checking_password" msgid="1052685197710252395">"Notiek konta pārbaude…"</string> + <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="8276745642049502550">"Jūs nepareizi ievadījāt PIN <xliff:g id="NUMBER_0">%d</xliff:g> reizes."\n\n"Mēģiniet vēlreiz pēc <xliff:g id="NUMBER_1">%d</xliff:g> sekundēm."</string> + <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="7813713389422226531">"Jūs nepareizi ievadījāt paroli <xliff:g id="NUMBER_0">%d</xliff:g> reizes."\n\n"Mēģiniet vēlreiz pēc <xliff:g id="NUMBER_1">%d</xliff:g> sekundēm."</string> + <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="74089475965050805">"Jūs nepareizi norādījāt atbloķēšanas kombināciju <xliff:g id="NUMBER_0">%d</xliff:g> reizes."\n\n"Mēģiniet vēlreiz pēc <xliff:g id="NUMBER_1">%d</xliff:g> sekundēm."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="1575557200627128949">"Jūs nepareizi veicāt planšetdatora atbloķēšanu <xliff:g id="NUMBER_0">%d</xliff:g> reizes. Pēc vēl <xliff:g id="NUMBER_1">%d</xliff:g> neveiksmīgiem mēģinājumiem planšetdatorā tiks atiestatīti rūpnīcas noklusējuma iestatījumi un lietotāja dati tiks zaudēti."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="4051015943038199910">"Jūs nepareizi veicāt tālruņa atbloķēšanu <xliff:g id="NUMBER_0">%d</xliff:g> reizes. Pēc vēl <xliff:g id="NUMBER_1">%d</xliff:g> neveiksmīgiem mēģinājumiem tālrunī tiks atiestatīti rūpnīcas noklusējuma iestatījumi un lietotāja dati tiks zaudēti."</string> + <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2072996269148483637">"Jūs nepareizi veicāt planšetdatora atbloķēšanu <xliff:g id="NUMBER">%d</xliff:g> reizes. Planšetdatorā tiks atiestatīti rūpnīcas noklusējuma iestatījumi."</string> + <string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"Jūs nepareizi veicāt tālruņa atbloķēšanu <xliff:g id="NUMBER">%d</xliff:g> reizes. Tālrunī tiks atiestatīti rūpnīcas noklusējuma iestatījumi."</string> + <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Jūs nepareizi norādījāt atbloķēšanas kombināciju <xliff:g id="NUMBER_0">%d</xliff:g> reizes. Pēc vēl <xliff:g id="NUMBER_1">%d</xliff:g> neveiksmīgiem mēģinājumiem planšetdators būs jāatbloķē, izmantojot e-pasta kontu."\n\n"Mēģiniet vēlreiz pēc <xliff:g id="NUMBER_2">%d</xliff:g> sekundēm."</string> + <string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"Jūs nepareizi norādījāt atbloķēšanas kombināciju <xliff:g id="NUMBER_0">%d</xliff:g> reizes. Pēc vēl <xliff:g id="NUMBER_1">%d</xliff:g> neveiksmīgiem mēģinājumiem tālrunis būs jāatbloķē, izmantojot e-pasta kontu."\n\n"Mēģiniet vēlreiz pēc <xliff:g id="NUMBER_2">%d</xliff:g> sekundēm."</string> + <string name="kg_text_message_separator" product="default" msgid="4160700433287233771">" — "</string> + <string name="kg_reordering_delete_drop_target_text" msgid="7899202978204438708">"Noņemt"</string> + <!-- no translation found for keyguard_transport_prev_description (8229108430245669854) --> + <skip /> + <!-- no translation found for keyguard_transport_next_description (4299258300283778305) --> + <skip /> + <!-- no translation found for keyguard_transport_pause_description (5093073338238310224) --> + <skip /> + <!-- no translation found for keyguard_transport_play_description (2924628863741150956) --> + <skip /> + <!-- no translation found for keyguard_transport_stop_description (3084179324810575787) --> + <skip /> + <!-- no translation found for keyguard_carrier_default (8700650403054042153) --> + <skip /> +</resources> diff --git a/packages/Keyguard/res/values-ms/strings.xml b/packages/Keyguard/res/values-ms/strings.xml new file mode 100644 index 000000000000..99efc11bcf8f --- /dev/null +++ b/packages/Keyguard/res/values-ms/strings.xml @@ -0,0 +1,164 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* //device/apps/common/assets/res/any/strings.xml +** +** Copyright 2006, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="keyguard_password_enter_pin_code" msgid="3037685796058495017">"Taip kod PIN"</string> + <string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Taip PUK dan kod PIN baharu"</string> + <string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"Kod PUK"</string> + <string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Kod PIN Baharu"</string> + <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Sentuh untuk menaip kata laluan"</font></string> + <string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Taip kata laluan untuk membuka kunci"</string> + <string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Taip PIN untuk membuka kunci"</string> + <string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Kod PIN salah."</string> + <string name="keyguard_label_text" msgid="861796461028298424">"Untuk membuka kunci, tekan Menu, kemudian 0."</string> + <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Telah melepasi had cubaan Buka Kunci Wajah"</string> + <!-- no translation found for keyguard_charged (3272223906073492454) --> + <skip /> + <!-- no translation found for keyguard_plugged_in (8117572000639998388) --> + <skip /> + <!-- no translation found for keyguard_low_battery (8143808018719173859) --> + <skip /> + <!-- no translation found for keyguard_instructions_when_pattern_disabled (1332288268600329841) --> + <skip /> + <!-- no translation found for keyguard_network_locked_message (9169717779058037168) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message_short (494980561304211931) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (1445849005909260039) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (3481110395508637643) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions (5210891509995942250) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions_long (5968985489463870358) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_message_short (8340813989586622356) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5892940909699723544) --> + <skip /> + <!-- no translation found for keyguard_sim_locked_message (6875773413306380902) --> + <skip /> + <!-- no translation found for keyguard_sim_puk_locked_message (3747232467471801633) --> + <skip /> + <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (7975221805033614426) --> + <skip /> + <string name="keyguard_accessibility_widget_changed" msgid="5678624624681400191">"%1$s. Widget %2$d dari %3$d."</string> + <string name="keyguard_accessibility_add_widget" msgid="8273277058724924654">"Tambah widget."</string> + <string name="keyguard_accessibility_widget_empty_slot" msgid="1281505703307930757">"Kosong"</string> + <string name="keyguard_accessibility_unlock_area_expanded" msgid="2278106022311170299">"Bahagian buka kunci dikembangkan."</string> + <string name="keyguard_accessibility_unlock_area_collapsed" msgid="6366992066936076396">"Bahagian buka kunci diruntuhkan."</string> + <string name="keyguard_accessibility_widget" msgid="6527131039741808240">"Widget <xliff:g id="WIDGET_INDEX">%1$s</xliff:g>."</string> + <string name="keyguard_accessibility_user_selector" msgid="1226798370913698896">"Pemilih pengguna"</string> + <string name="keyguard_accessibility_status" msgid="8008264603935930611">"Status"</string> + <string name="keyguard_accessibility_camera" msgid="8904231194181114603">"Kamera"</string> + <string name="keygaurd_accessibility_media_controls" msgid="262209654292161806">"Kawalan media"</string> + <string name="keyguard_accessibility_widget_reorder_start" msgid="8736853615588828197">"Penyusunan semula widget dimulakan."</string> + <string name="keyguard_accessibility_widget_reorder_end" msgid="7170190950870468320">"Penyusunan semula widget tamat."</string> + <string name="keyguard_accessibility_widget_deleted" msgid="4426204263929224434">"Widget <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> dipadamkan."</string> + <string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"Kembangkan bahagian buka kunci."</string> + <string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"Buka kunci luncur."</string> + <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"Buka kunci corak."</string> + <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"Wajah Buka Kunci"</string> + <string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"Buka kunci pin."</string> + <string name="keyguard_accessibility_password_unlock" msgid="7675777623912155089">"Buka kunci kata laluan."</string> + <string name="keyguard_accessibility_pattern_area" msgid="7679891324509597904">"Kawasan corak."</string> + <string name="keyguard_accessibility_slide_area" msgid="6736064494019979544">"Kawasan luncur."</string> + <!-- no translation found for keyguard_accessibility_transport_prev_description (1337286538318543555) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_next_description (7073928300444909320) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_pause_description (8455979545295224302) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_play_description (8146417789511154044) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_stop_description (7656358482980912216) --> + <skip /> + <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> + <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string> + <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> + <string name="keyboardview_keycode_alt" msgid="4856868820040051939">"Alt"</string> + <string name="keyboardview_keycode_cancel" msgid="1203984017245783244">"Batal"</string> + <string name="keyboardview_keycode_delete" msgid="3337914833206635744">"Padam"</string> + <string name="keyboardview_keycode_done" msgid="1992571118466679775">"Selesai"</string> + <string name="keyboardview_keycode_mode_change" msgid="4547387741906537519">"Perubahan mod"</string> + <string name="keyboardview_keycode_shift" msgid="2270748814315147690">"Shift"</string> + <string name="keyboardview_keycode_enter" msgid="2985864015076059467">"Masuk"</string> + <string name="description_target_unlock" msgid="2228524900439801453">"Buka kunci"</string> + <string name="description_target_camera" msgid="969071997552486814">"Kamera"</string> + <string name="description_target_silent" msgid="893551287746522182">"Senyap"</string> + <string name="description_target_soundon" msgid="30052466675500172">"Bunyi dihidupkan"</string> + <string name="description_target_search" msgid="3091587249776033139">"Carian"</string> + <string name="description_direction_up" msgid="7169032478259485180">"Luncurkan ke atas untuk <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_down" msgid="5087739728639014595">"Luncurkan ke bawah untuk <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_left" msgid="7207478719805562165">"Luncurkan ke kiri untuk <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_right" msgid="8034433242579600980">"Luncurkan ke kanan untuk <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="user_switched" msgid="3768006783166984410">"Pengguna semasa <xliff:g id="NAME">%1$s</xliff:g>."</string> + <string name="kg_emergency_call_label" msgid="684946192523830531">"Panggilan kecemasan"</string> + <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Lupa Corak"</string> + <string name="kg_wrong_pattern" msgid="1850806070801358830">"Corak Salah"</string> + <string name="kg_wrong_password" msgid="2333281762128113157">"Kata Laluan Salah"</string> + <string name="kg_wrong_pin" msgid="1131306510833563801">"PIN salah"</string> + <string name="kg_too_many_failed_attempts_countdown" msgid="6358110221603297548">"Cuba lagi dalam <xliff:g id="NUMBER">%d</xliff:g> saat."</string> + <string name="kg_pattern_instructions" msgid="398978611683075868">"Lukiskan corak anda"</string> + <string name="kg_sim_pin_instructions" msgid="2319508550934557331">"Masukkan PIN SIM"</string> + <string name="kg_pin_instructions" msgid="2377242233495111557">"Masukkan PIN"</string> + <string name="kg_password_instructions" msgid="5753646556186936819">"Masukkan Kata Laluan"</string> + <string name="kg_puk_enter_puk_hint" msgid="453227143861735537">"Kini SIM dilumpuhkan. Masukkan kod PUK untuk meneruskan. Hubungi pembawa untuk butiran."</string> + <string name="kg_puk_enter_pin_hint" msgid="7871604527429602024">"Masukkan kod PIN yang diingini"</string> + <string name="kg_enter_confirm_pin_hint" msgid="325676184762529976">"Sahkan kod PIN yang diingini"</string> + <string name="kg_sim_unlock_progress_dialog_message" msgid="8950398016976865762">"Membuka kunci kad SIM..."</string> + <string name="kg_password_wrong_pin_code" msgid="1139324887413846912">"Kod PIN salah."</string> + <string name="kg_invalid_sim_pin_hint" msgid="8795159358110620001">"Taipkan PIN yang mengandungi 4 hingga 8 nombor."</string> + <string name="kg_invalid_sim_puk_hint" msgid="7553388325654369575">"Kod PUK mestilah 8 nombor atau lebih."</string> + <string name="kg_invalid_puk" msgid="3638289409676051243">"Masukkan semula kod PIN yang betul. Percubaan berulang akan melumpuhkan SIM secara kekal."</string> + <string name="kg_invalid_confirm_pin_hint" product="default" msgid="7003469261464593516">"Kod PIN tidak sepadan"</string> + <string name="kg_login_too_many_attempts" msgid="6486842094005698475">"Terlalu banyak percubaan melukis corak"</string> + <string name="kg_login_instructions" msgid="1100551261265506448">"Untuk membuka kunci, log masuk dengan akaun Google anda."</string> + <string name="kg_login_username_hint" msgid="5718534272070920364">"Nama Pengguna (E-mel)"</string> + <string name="kg_login_password_hint" msgid="9057289103827298549">"Kata laluan"</string> + <string name="kg_login_submit_button" msgid="5355904582674054702">"Log masuk"</string> + <string name="kg_login_invalid_input" msgid="5754664119319872197">"Nama pengguna atau kata laluan tidak sah."</string> + <string name="kg_login_account_recovery_hint" msgid="5690709132841752974">"Lupa nama pengguna atau kata laluan anda?"\n"Lawati"<b>"google.com/accounts/recovery"</b>"."</string> + <string name="kg_login_checking_password" msgid="1052685197710252395">"Menyemak akaun…"</string> + <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="8276745642049502550">"Anda telah menaip PIN anda secara salah sebanyak <xliff:g id="NUMBER_0">%d</xliff:g> kali. "\n\n"Cuba lagi dalam <xliff:g id="NUMBER_1">%d</xliff:g> saat."</string> + <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="7813713389422226531">"Anda telah menaip kata laluan anda secara salah sebanyak <xliff:g id="NUMBER_0">%d</xliff:g> kali. "\n\n"Cuba lagi dalam <xliff:g id="NUMBER_1">%d</xliff:g> saat."</string> + <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="74089475965050805">"Anda telah tersilap melukis corak buka kunci anda sebanyak <xliff:g id="NUMBER_0">%d</xliff:g> kali. "\n\n"Cuba lagi dalam <xliff:g id="NUMBER_1">%d</xliff:g> saat."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="1575557200627128949">"Anda telah mencuba untuk membuka kunci tablet dengan salah sebanyak <xliff:g id="NUMBER_0">%d</xliff:g> kali. Selepas <xliff:g id="NUMBER_1">%d</xliff:g> lagi percubaan yang tidak berjaya, tablet akan ditetapkan semula kepada tetapan lalai kilang dan semua data pengguna akan hilang."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="4051015943038199910">"Anda telah mencuba untuk membuka kunci telefon dengan salah sebanyak <xliff:g id="NUMBER_0">%d</xliff:g> kali. Selepas <xliff:g id="NUMBER_1">%d</xliff:g> lagi percubaan yang tidak berjaya, telefon akan ditetapkan semula kepada tetapan lalai kilang dan semua data pengguna akan hilang."</string> + <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2072996269148483637">"Anda telah mencuba untuk membuka kunci tablet secara salah sebanyak <xliff:g id="NUMBER">%d</xliff:g> kali. Tablet kini akan ditetapkan semula ke tetapan lalai kilang."</string> + <string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"Anda telah mencuba untuk membuka kunci telefon secara salah sebanyak <xliff:g id="NUMBER">%d</xliff:g> kali. Telefon kini akan ditetapkan semula ke tetapan lalai kilang."</string> + <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Anda telah tersilap melukis corak buka kunci sebanyak <xliff:g id="NUMBER_0">%d</xliff:g> kali. Selepas <xliff:g id="NUMBER_1">%d</xliff:g> lagi percubaan yang tidak berjaya, anda akan diminta membuka kunci tablet anda menggunakan log masuk Google anda."\n\n" Cuba lagi dalam <xliff:g id="NUMBER_2">%d</xliff:g> saat."</string> + <string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"Anda telah tersilap lukis corak buka kunci sebanyak <xliff:g id="NUMBER_0">%d</xliff:g> kali. Selepas <xliff:g id="NUMBER_1">%d</xliff:g> lagi percubaan yang tidak berjaya, anda akan diminta membuka kunci telefon anda menggunakan log masuk Google anda."\n\n" Cuba lagi dalam <xliff:g id="NUMBER_2">%d</xliff:g> saat."</string> + <string name="kg_text_message_separator" product="default" msgid="4160700433287233771">" — "</string> + <string name="kg_reordering_delete_drop_target_text" msgid="7899202978204438708">"Alih keluar"</string> + <!-- no translation found for keyguard_transport_prev_description (8229108430245669854) --> + <skip /> + <!-- no translation found for keyguard_transport_next_description (4299258300283778305) --> + <skip /> + <!-- no translation found for keyguard_transport_pause_description (5093073338238310224) --> + <skip /> + <!-- no translation found for keyguard_transport_play_description (2924628863741150956) --> + <skip /> + <!-- no translation found for keyguard_transport_stop_description (3084179324810575787) --> + <skip /> + <!-- no translation found for keyguard_carrier_default (8700650403054042153) --> + <skip /> +</resources> diff --git a/packages/Keyguard/res/values-nb/strings.xml b/packages/Keyguard/res/values-nb/strings.xml new file mode 100644 index 000000000000..b8e3be36abb1 --- /dev/null +++ b/packages/Keyguard/res/values-nb/strings.xml @@ -0,0 +1,164 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* //device/apps/common/assets/res/any/strings.xml +** +** Copyright 2006, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="keyguard_password_enter_pin_code" msgid="3037685796058495017">"Skriv inn PIN-kode"</string> + <string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Skriv inn PUK-kode og ny personlig kode"</string> + <string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK-kode"</string> + <string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Ny PIN-kode"</string> + <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Trykk for å skrive inn passord"</font></string> + <string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Skriv inn passord for å låse opp"</string> + <string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Skriv inn PIN-kode for å låse opp"</string> + <string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Feil personlig kode."</string> + <string name="keyguard_label_text" msgid="861796461028298424">"For å låse opp, trykk på menyknappen og deretter 0."</string> + <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Du har overskredet grensen for opplåsingsforsøk med Ansiktslås"</string> + <!-- no translation found for keyguard_charged (3272223906073492454) --> + <skip /> + <!-- no translation found for keyguard_plugged_in (8117572000639998388) --> + <skip /> + <!-- no translation found for keyguard_low_battery (8143808018719173859) --> + <skip /> + <!-- no translation found for keyguard_instructions_when_pattern_disabled (1332288268600329841) --> + <skip /> + <!-- no translation found for keyguard_network_locked_message (9169717779058037168) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message_short (494980561304211931) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (1445849005909260039) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (3481110395508637643) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions (5210891509995942250) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions_long (5968985489463870358) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_message_short (8340813989586622356) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5892940909699723544) --> + <skip /> + <!-- no translation found for keyguard_sim_locked_message (6875773413306380902) --> + <skip /> + <!-- no translation found for keyguard_sim_puk_locked_message (3747232467471801633) --> + <skip /> + <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (7975221805033614426) --> + <skip /> + <string name="keyguard_accessibility_widget_changed" msgid="5678624624681400191">"%1$s. Modul %2$d av %3$d."</string> + <string name="keyguard_accessibility_add_widget" msgid="8273277058724924654">"Legg til modul."</string> + <string name="keyguard_accessibility_widget_empty_slot" msgid="1281505703307930757">"Tom"</string> + <string name="keyguard_accessibility_unlock_area_expanded" msgid="2278106022311170299">"Opplåsingsfeltet vises."</string> + <string name="keyguard_accessibility_unlock_area_collapsed" msgid="6366992066936076396">"Opplåsingsfeltet skjules."</string> + <string name="keyguard_accessibility_widget" msgid="6527131039741808240">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g>-modul."</string> + <string name="keyguard_accessibility_user_selector" msgid="1226798370913698896">"Brukervelgeren"</string> + <string name="keyguard_accessibility_status" msgid="8008264603935930611">"Status"</string> + <string name="keyguard_accessibility_camera" msgid="8904231194181114603">"Kamera"</string> + <string name="keygaurd_accessibility_media_controls" msgid="262209654292161806">"Mediekontroll"</string> + <string name="keyguard_accessibility_widget_reorder_start" msgid="8736853615588828197">"Endring av modulplasseringen har startet."</string> + <string name="keyguard_accessibility_widget_reorder_end" msgid="7170190950870468320">"Endringen av modulplasseringen er ferdig."</string> + <string name="keyguard_accessibility_widget_deleted" msgid="4426204263929224434">"Modulen <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> ble slettet."</string> + <string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"Vis opplåsingsfeltet."</string> + <string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"Opplåsning ved å dra med fingeren."</string> + <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"Mønsteropplåsning."</string> + <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"Ansiktsopplåsning."</string> + <string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"PIN-opplåsning."</string> + <string name="keyguard_accessibility_password_unlock" msgid="7675777623912155089">"Passordopplåsning."</string> + <string name="keyguard_accessibility_pattern_area" msgid="7679891324509597904">"Mønsterområde."</string> + <string name="keyguard_accessibility_slide_area" msgid="6736064494019979544">"Dra-felt."</string> + <!-- no translation found for keyguard_accessibility_transport_prev_description (1337286538318543555) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_next_description (7073928300444909320) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_pause_description (8455979545295224302) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_play_description (8146417789511154044) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_stop_description (7656358482980912216) --> + <skip /> + <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> + <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string> + <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> + <string name="keyboardview_keycode_alt" msgid="4856868820040051939">"Alt"</string> + <string name="keyboardview_keycode_cancel" msgid="1203984017245783244">"Avbryt"</string> + <string name="keyboardview_keycode_delete" msgid="3337914833206635744">"Slett"</string> + <string name="keyboardview_keycode_done" msgid="1992571118466679775">"Ferdig"</string> + <string name="keyboardview_keycode_mode_change" msgid="4547387741906537519">"Modusendring"</string> + <string name="keyboardview_keycode_shift" msgid="2270748814315147690">"Shift"</string> + <string name="keyboardview_keycode_enter" msgid="2985864015076059467">"Enter"</string> + <string name="description_target_unlock" msgid="2228524900439801453">"Lås opp"</string> + <string name="description_target_camera" msgid="969071997552486814">"Kamera"</string> + <string name="description_target_silent" msgid="893551287746522182">"Stille"</string> + <string name="description_target_soundon" msgid="30052466675500172">"Lyd på"</string> + <string name="description_target_search" msgid="3091587249776033139">"Søk"</string> + <string name="description_direction_up" msgid="7169032478259485180">"Dra opp for å <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_down" msgid="5087739728639014595">"Dra ned for å <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_left" msgid="7207478719805562165">"Dra til venstre for å <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_right" msgid="8034433242579600980">"Dra til høyre for å <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="user_switched" msgid="3768006783166984410">"Gjeldende bruker: <xliff:g id="NAME">%1$s</xliff:g>."</string> + <string name="kg_emergency_call_label" msgid="684946192523830531">"Nødnummer"</string> + <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Har du glemt mønsteret?"</string> + <string name="kg_wrong_pattern" msgid="1850806070801358830">"Feil mønster"</string> + <string name="kg_wrong_password" msgid="2333281762128113157">"Feil passord"</string> + <string name="kg_wrong_pin" msgid="1131306510833563801">"Feil PIN-kode"</string> + <string name="kg_too_many_failed_attempts_countdown" msgid="6358110221603297548">"Prøv på nytt om <xliff:g id="NUMBER">%d</xliff:g> sekunder."</string> + <string name="kg_pattern_instructions" msgid="398978611683075868">"Tegn mønsteret ditt"</string> + <string name="kg_sim_pin_instructions" msgid="2319508550934557331">"Skriv inn PIN-koden for SIM-kortet"</string> + <string name="kg_pin_instructions" msgid="2377242233495111557">"Skriv inn PIN-koden"</string> + <string name="kg_password_instructions" msgid="5753646556186936819">"Skriv inn passordet"</string> + <string name="kg_puk_enter_puk_hint" msgid="453227143861735537">"SIM-kortet er nå deaktivert. Skriv inn PUK-koden for å fortsette. Ta kontakt med operatøren for mer informasjon."</string> + <string name="kg_puk_enter_pin_hint" msgid="7871604527429602024">"Tast inn ønsket PIN-kode"</string> + <string name="kg_enter_confirm_pin_hint" msgid="325676184762529976">"Bekreft ønsket PIN-kode"</string> + <string name="kg_sim_unlock_progress_dialog_message" msgid="8950398016976865762">"Låser opp SIM-kortet ..."</string> + <string name="kg_password_wrong_pin_code" msgid="1139324887413846912">"Feil PIN-kode."</string> + <string name="kg_invalid_sim_pin_hint" msgid="8795159358110620001">"Skriv inn en PIN-kode på fire til åtte sifre."</string> + <string name="kg_invalid_sim_puk_hint" msgid="7553388325654369575">"PUK-koden skal være på åtte eller flere siffer."</string> + <string name="kg_invalid_puk" msgid="3638289409676051243">"Skriv inn den korrekte PUK-koden på nytt. Gjentatte forsøk kommer til å deaktivere SIM-kortet."</string> + <string name="kg_invalid_confirm_pin_hint" product="default" msgid="7003469261464593516">"PIN-kodene stemmer ikke overens"</string> + <string name="kg_login_too_many_attempts" msgid="6486842094005698475">"For mange forsøk på tegning av mønster"</string> + <string name="kg_login_instructions" msgid="1100551261265506448">"Logg deg på med Google-kontoen din for å låse opp."</string> + <string name="kg_login_username_hint" msgid="5718534272070920364">"Brukernavn (e-postadresse)"</string> + <string name="kg_login_password_hint" msgid="9057289103827298549">"Passord"</string> + <string name="kg_login_submit_button" msgid="5355904582674054702">"Logg på"</string> + <string name="kg_login_invalid_input" msgid="5754664119319872197">"Ugyldig brukernavn eller passord."</string> + <string name="kg_login_account_recovery_hint" msgid="5690709132841752974">"Har du glemt brukernavnet eller passordet?"\n"Gå til "<b>"google.com/accounts/recovery"</b>"."</string> + <string name="kg_login_checking_password" msgid="1052685197710252395">"Sjekker kontoen ..."</string> + <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="8276745642049502550">"Du har oppgitt feil PIN-kode <xliff:g id="NUMBER_0">%d</xliff:g> ganger. "\n\n"Prøv på nytt om <xliff:g id="NUMBER_1">%d</xliff:g> sekunder."</string> + <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="7813713389422226531">"Du har tastet inn passordet ditt feil <xliff:g id="NUMBER_0">%d</xliff:g> ganger. "\n\n"Prøv på nytt om <xliff:g id="NUMBER_1">%d</xliff:g> sekunder."</string> + <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="74089475965050805">"Du har tegnet opplåsningsmønsteret ditt feil <xliff:g id="NUMBER_0">%d</xliff:g> ganger. "\n\n"Prøv på nytt om <xliff:g id="NUMBER_1">%d</xliff:g> sekunder."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="1575557200627128949">"Du har oppgitt feil opplåsningspassord for nettbrettet <xliff:g id="NUMBER_0">%d</xliff:g> ganger. Etter ytterligere <xliff:g id="NUMBER_1">%d</xliff:g> gale forsøk, tilbakestilles nettbrettet til fabrikkstandard og all data går tapt."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="4051015943038199910">"Du har oppgitt feil opplåsningspassord for telefonen <xliff:g id="NUMBER_0">%d</xliff:g> ganger. Etter ytterligere <xliff:g id="NUMBER_1">%d</xliff:g> gale forsøk, tilbakestilles telefonen til fabrikkstandard og all data går tapt."</string> + <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2072996269148483637">"Du har oppgitt feil opplåsningspassord for nettbrettet <xliff:g id="NUMBER">%d</xliff:g> ganger. Telefonen tilbakestilles nå til fabrikkstandard."</string> + <string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"Du har oppgitt feil opplåsningspassord for telefonen <xliff:g id="NUMBER">%d</xliff:g> ganger. Telefonen tilbakestilles nå til fabrikkstandard."</string> + <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Du har tegnet opplåsningsmønsteret feil <xliff:g id="NUMBER_0">%d</xliff:g> ganger. Etter ytterligere <xliff:g id="NUMBER_1">%d</xliff:g> gale forsøk, blir du bedt om å låse opp nettbrettet via en e-postkonto."\n\n" Prøv på nytt om <xliff:g id="NUMBER_2">%d</xliff:g> sekunder."</string> + <string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"Du har tegnet opplåsningsmønsteret feil <xliff:g id="NUMBER_0">%d</xliff:g> ganger. Etter ytterligere <xliff:g id="NUMBER_1">%d</xliff:g> gale forsøk, blir du bedt om å låse opp telefonen via en e-postkonto."\n\n" Prøv på nytt om <xliff:g id="NUMBER_2">%d</xliff:g> sekunder."</string> + <string name="kg_text_message_separator" product="default" msgid="4160700433287233771">" — "</string> + <string name="kg_reordering_delete_drop_target_text" msgid="7899202978204438708">"Fjern"</string> + <!-- no translation found for keyguard_transport_prev_description (8229108430245669854) --> + <skip /> + <!-- no translation found for keyguard_transport_next_description (4299258300283778305) --> + <skip /> + <!-- no translation found for keyguard_transport_pause_description (5093073338238310224) --> + <skip /> + <!-- no translation found for keyguard_transport_play_description (2924628863741150956) --> + <skip /> + <!-- no translation found for keyguard_transport_stop_description (3084179324810575787) --> + <skip /> + <!-- no translation found for keyguard_carrier_default (8700650403054042153) --> + <skip /> +</resources> diff --git a/packages/Keyguard/res/values-nl/strings.xml b/packages/Keyguard/res/values-nl/strings.xml new file mode 100644 index 000000000000..250e7c9cee68 --- /dev/null +++ b/packages/Keyguard/res/values-nl/strings.xml @@ -0,0 +1,164 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* //device/apps/common/assets/res/any/strings.xml +** +** Copyright 2006, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="keyguard_password_enter_pin_code" msgid="3037685796058495017">"Pincode typen"</string> + <string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Geef de PUK-code en de nieuwe pincode op"</string> + <string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK-code"</string> + <string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Nieuwe pincode"</string> + <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Raak aan om wachtwoord in te voeren"</font></string> + <string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Typ het wachtwoord om te ontgrendelen"</string> + <string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Typ pincode om te ontgrendelen"</string> + <string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Onjuiste pincode."</string> + <string name="keyguard_label_text" msgid="861796461028298424">"Druk op \'Menu\' en vervolgens op 0 om te ontgrendelen."</string> + <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Maximaal aantal pogingen voor Face Unlock overschreden"</string> + <!-- no translation found for keyguard_charged (3272223906073492454) --> + <skip /> + <!-- no translation found for keyguard_plugged_in (8117572000639998388) --> + <skip /> + <!-- no translation found for keyguard_low_battery (8143808018719173859) --> + <skip /> + <!-- no translation found for keyguard_instructions_when_pattern_disabled (1332288268600329841) --> + <skip /> + <!-- no translation found for keyguard_network_locked_message (9169717779058037168) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message_short (494980561304211931) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (1445849005909260039) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (3481110395508637643) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions (5210891509995942250) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions_long (5968985489463870358) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_message_short (8340813989586622356) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5892940909699723544) --> + <skip /> + <!-- no translation found for keyguard_sim_locked_message (6875773413306380902) --> + <skip /> + <!-- no translation found for keyguard_sim_puk_locked_message (3747232467471801633) --> + <skip /> + <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (7975221805033614426) --> + <skip /> + <string name="keyguard_accessibility_widget_changed" msgid="5678624624681400191">"%1$s. Widget %2$d van %3$d."</string> + <string name="keyguard_accessibility_add_widget" msgid="8273277058724924654">"Widget toevoegen."</string> + <string name="keyguard_accessibility_widget_empty_slot" msgid="1281505703307930757">"Leeg"</string> + <string name="keyguard_accessibility_unlock_area_expanded" msgid="2278106022311170299">"Ontgrendelingsgebied uitgevouwen."</string> + <string name="keyguard_accessibility_unlock_area_collapsed" msgid="6366992066936076396">"Ontgrendelingsgebied samengevouwen."</string> + <string name="keyguard_accessibility_widget" msgid="6527131039741808240">"Widget <xliff:g id="WIDGET_INDEX">%1$s</xliff:g>."</string> + <string name="keyguard_accessibility_user_selector" msgid="1226798370913698896">"Gebruikersselectie"</string> + <string name="keyguard_accessibility_status" msgid="8008264603935930611">"Status"</string> + <string name="keyguard_accessibility_camera" msgid="8904231194181114603">"Camera"</string> + <string name="keygaurd_accessibility_media_controls" msgid="262209654292161806">"Mediabediening"</string> + <string name="keyguard_accessibility_widget_reorder_start" msgid="8736853615588828197">"Opnieuw indelen van widget gestart."</string> + <string name="keyguard_accessibility_widget_reorder_end" msgid="7170190950870468320">"Opnieuw indelen van widget beëindigd."</string> + <string name="keyguard_accessibility_widget_deleted" msgid="4426204263929224434">"Widget <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> verwijderd."</string> + <string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"Ontgrendelingsgebied uitvouwen."</string> + <string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"Ontgrendeling via schuiven."</string> + <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"Ontgrendeling via patroon."</string> + <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"Ontgrendeling via gezichtsherkenning."</string> + <string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"Ontgrendeling via pincode."</string> + <string name="keyguard_accessibility_password_unlock" msgid="7675777623912155089">"Ontgrendeling via wachtwoord."</string> + <string name="keyguard_accessibility_pattern_area" msgid="7679891324509597904">"Tekengebied voor patroon."</string> + <string name="keyguard_accessibility_slide_area" msgid="6736064494019979544">"Schuifgebied."</string> + <!-- no translation found for keyguard_accessibility_transport_prev_description (1337286538318543555) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_next_description (7073928300444909320) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_pause_description (8455979545295224302) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_play_description (8146417789511154044) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_stop_description (7656358482980912216) --> + <skip /> + <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> + <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string> + <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"Alt"</string> + <string name="keyboardview_keycode_alt" msgid="4856868820040051939">"Alt"</string> + <string name="keyboardview_keycode_cancel" msgid="1203984017245783244">"Annuleren"</string> + <string name="keyboardview_keycode_delete" msgid="3337914833206635744">"Delete"</string> + <string name="keyboardview_keycode_done" msgid="1992571118466679775">"Gereed"</string> + <string name="keyboardview_keycode_mode_change" msgid="4547387741906537519">"Modus wijzigen"</string> + <string name="keyboardview_keycode_shift" msgid="2270748814315147690">"Shift"</string> + <string name="keyboardview_keycode_enter" msgid="2985864015076059467">"Enter"</string> + <string name="description_target_unlock" msgid="2228524900439801453">"Ontgrendelen"</string> + <string name="description_target_camera" msgid="969071997552486814">"Camera"</string> + <string name="description_target_silent" msgid="893551287746522182">"Stil"</string> + <string name="description_target_soundon" msgid="30052466675500172">"Geluid aan"</string> + <string name="description_target_search" msgid="3091587249776033139">"Zoeken"</string> + <string name="description_direction_up" msgid="7169032478259485180">"Veeg omhoog voor <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_down" msgid="5087739728639014595">"Veeg omlaag voor <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_left" msgid="7207478719805562165">"Veeg naar links voor <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_right" msgid="8034433242579600980">"Veeg naar rechts voor <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="user_switched" msgid="3768006783166984410">"Huidige gebruiker <xliff:g id="NAME">%1$s</xliff:g>."</string> + <string name="kg_emergency_call_label" msgid="684946192523830531">"Noodoproep"</string> + <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Patroon vergeten"</string> + <string name="kg_wrong_pattern" msgid="1850806070801358830">"Onjuist patroon"</string> + <string name="kg_wrong_password" msgid="2333281762128113157">"Onjuist wachtwoord"</string> + <string name="kg_wrong_pin" msgid="1131306510833563801">"Onjuiste pincode"</string> + <string name="kg_too_many_failed_attempts_countdown" msgid="6358110221603297548">"Probeer het over <xliff:g id="NUMBER">%d</xliff:g> seconden opnieuw."</string> + <string name="kg_pattern_instructions" msgid="398978611683075868">"Teken uw patroon"</string> + <string name="kg_sim_pin_instructions" msgid="2319508550934557331">"Geef de pincode van de simkaart op"</string> + <string name="kg_pin_instructions" msgid="2377242233495111557">"Pincode opgeven"</string> + <string name="kg_password_instructions" msgid="5753646556186936819">"Wachtwoord invoeren"</string> + <string name="kg_puk_enter_puk_hint" msgid="453227143861735537">"De simkaart is nu uitgeschakeld. Geef de PUK-code op om door te gaan. Neem contact op met de provider voor informatie."</string> + <string name="kg_puk_enter_pin_hint" msgid="7871604527429602024">"Gewenste pincode opgeven"</string> + <string name="kg_enter_confirm_pin_hint" msgid="325676184762529976">"Gewenste pincode bevestigen"</string> + <string name="kg_sim_unlock_progress_dialog_message" msgid="8950398016976865762">"Simkaart ontgrendelen..."</string> + <string name="kg_password_wrong_pin_code" msgid="1139324887413846912">"Onjuiste pincode."</string> + <string name="kg_invalid_sim_pin_hint" msgid="8795159358110620001">"Voer een pincode van 4 tot 8 cijfers in."</string> + <string name="kg_invalid_sim_puk_hint" msgid="7553388325654369575">"De PUK-code is minimaal acht nummers lang."</string> + <string name="kg_invalid_puk" msgid="3638289409676051243">"Geef de juiste PUK-code opnieuw op. Bij herhaalde pogingen wordt de simkaart permanent uitgeschakeld."</string> + <string name="kg_invalid_confirm_pin_hint" product="default" msgid="7003469261464593516">"Pincodes komen niet overeen"</string> + <string name="kg_login_too_many_attempts" msgid="6486842094005698475">"Te veel patroonpogingen"</string> + <string name="kg_login_instructions" msgid="1100551261265506448">"Als u wilt ontgrendelen, moet u zich aanmelden bij uw Google-account."</string> + <string name="kg_login_username_hint" msgid="5718534272070920364">"Gebruikersnaam (e-mail)"</string> + <string name="kg_login_password_hint" msgid="9057289103827298549">"Wachtwoord"</string> + <string name="kg_login_submit_button" msgid="5355904582674054702">"Aanmelden"</string> + <string name="kg_login_invalid_input" msgid="5754664119319872197">"Ongeldige gebruikersnaam of wachtwoord."</string> + <string name="kg_login_account_recovery_hint" msgid="5690709132841752974">"Bent u uw gebruikersnaam of wachtwoord vergeten?"\n"Ga naar "<b>"google.com/accounts/recovery"</b>"."</string> + <string name="kg_login_checking_password" msgid="1052685197710252395">"Account controleren…"</string> + <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="8276745642049502550">"U heeft uw pincode <xliff:g id="NUMBER_0">%d</xliff:g> keer onjuist getypt. "\n\n"Probeer het over <xliff:g id="NUMBER_1">%d</xliff:g> seconden opnieuw."</string> + <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="7813713389422226531">"U heeft uw wachtwoord <xliff:g id="NUMBER_0">%d</xliff:g> keer onjuist getypt. "\n\n"Probeer het over <xliff:g id="NUMBER_1">%d</xliff:g> seconden opnieuw."</string> + <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="74089475965050805">"U heeft uw ontgrendelingspatroon <xliff:g id="NUMBER_0">%d</xliff:g> keer onjuist getekend. "\n\n"Probeer het over <xliff:g id="NUMBER_1">%d</xliff:g> seconden opnieuw."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="1575557200627128949">"U heeft <xliff:g id="NUMBER_0">%d</xliff:g> keer geprobeerd de tablet op een onjuiste manier te ontgrendelen. Na nog eens <xliff:g id="NUMBER_1">%d</xliff:g> mislukte pogingen worden de fabrieksinstellingen hersteld op de tablet en gaan alle gebruikersgegevens verloren."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="4051015943038199910">"U heeft nu <xliff:g id="NUMBER_0">%d</xliff:g> keer geprobeerd de telefoon op een onjuiste manier te ontgrendelen. Na nog eens <xliff:g id="NUMBER_1">%d</xliff:g> mislukte pogingen worden de fabrieksinstellingen hersteld op de telefoon en gaan alle gebruikersgegevens verloren."</string> + <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2072996269148483637">"U heeft <xliff:g id="NUMBER">%d</xliff:g> keer geprobeerd de tablet op een onjuiste manier te ontgrendelen. De fabrieksinstellingen worden nu hersteld op de tablet."</string> + <string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"U heeft <xliff:g id="NUMBER">%d</xliff:g> keer geprobeerd de telefoon op een onjuiste manier te ontgrendelen. De fabrieksinstellingen worden nu hersteld op de telefoon."</string> + <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"U heeft uw ontgrendelingspatroon <xliff:g id="NUMBER_0">%d</xliff:g> keer onjuist getekend. Na nog eens <xliff:g id="NUMBER_1">%d</xliff:g> mislukte pogingen wordt u gevraagd uw tablet te ontgrendelen via een e-mailaccount."\n\n" Probeer het over <xliff:g id="NUMBER_2">%d</xliff:g> seconden opnieuw."</string> + <string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"U heeft uw ontgrendelingspatroon <xliff:g id="NUMBER_0">%d</xliff:g> keer onjuist getekend. Na nog eens <xliff:g id="NUMBER_1">%d</xliff:g> mislukte pogingen wordt u gevraagd uw telefoon te ontgrendelen via een e-mailaccount."\n\n" Probeer het over <xliff:g id="NUMBER_2">%d</xliff:g> seconden opnieuw."</string> + <string name="kg_text_message_separator" product="default" msgid="4160700433287233771">" — "</string> + <string name="kg_reordering_delete_drop_target_text" msgid="7899202978204438708">"Verwijderen"</string> + <!-- no translation found for keyguard_transport_prev_description (8229108430245669854) --> + <skip /> + <!-- no translation found for keyguard_transport_next_description (4299258300283778305) --> + <skip /> + <!-- no translation found for keyguard_transport_pause_description (5093073338238310224) --> + <skip /> + <!-- no translation found for keyguard_transport_play_description (2924628863741150956) --> + <skip /> + <!-- no translation found for keyguard_transport_stop_description (3084179324810575787) --> + <skip /> + <!-- no translation found for keyguard_carrier_default (8700650403054042153) --> + <skip /> +</resources> diff --git a/packages/Keyguard/res/values-pl/strings.xml b/packages/Keyguard/res/values-pl/strings.xml new file mode 100644 index 000000000000..6bb237a788df --- /dev/null +++ b/packages/Keyguard/res/values-pl/strings.xml @@ -0,0 +1,164 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* //device/apps/common/assets/res/any/strings.xml +** +** Copyright 2006, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="keyguard_password_enter_pin_code" msgid="3037685796058495017">"Wpisz kod PIN."</string> + <string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Wpisz kod PUK i nowy kod PIN."</string> + <string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"Kod PUK"</string> + <string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Nowy PIN"</string> + <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Dotknij, aby wpisać hasło."</font></string> + <string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Wpisz hasło, aby odblokować."</string> + <string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Wpisz kod PIN, aby odblokować."</string> + <string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Błędny kod PIN"</string> + <string name="keyguard_label_text" msgid="861796461028298424">"Aby odblokować, naciśnij Menu, a następnie 0."</string> + <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Przekroczono maksymalną liczbę prób rozpoznania twarzy."</string> + <!-- no translation found for keyguard_charged (3272223906073492454) --> + <skip /> + <!-- no translation found for keyguard_plugged_in (8117572000639998388) --> + <skip /> + <!-- no translation found for keyguard_low_battery (8143808018719173859) --> + <skip /> + <!-- no translation found for keyguard_instructions_when_pattern_disabled (1332288268600329841) --> + <skip /> + <!-- no translation found for keyguard_network_locked_message (9169717779058037168) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message_short (494980561304211931) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (1445849005909260039) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (3481110395508637643) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions (5210891509995942250) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions_long (5968985489463870358) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_message_short (8340813989586622356) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5892940909699723544) --> + <skip /> + <!-- no translation found for keyguard_sim_locked_message (6875773413306380902) --> + <skip /> + <!-- no translation found for keyguard_sim_puk_locked_message (3747232467471801633) --> + <skip /> + <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (7975221805033614426) --> + <skip /> + <string name="keyguard_accessibility_widget_changed" msgid="5678624624681400191">"%1$s. Widżet %2$d z %3$d."</string> + <string name="keyguard_accessibility_add_widget" msgid="8273277058724924654">"Dodaj widżet."</string> + <string name="keyguard_accessibility_widget_empty_slot" msgid="1281505703307930757">"Puste"</string> + <string name="keyguard_accessibility_unlock_area_expanded" msgid="2278106022311170299">"Rozwinięto obszar odblokowania."</string> + <string name="keyguard_accessibility_unlock_area_collapsed" msgid="6366992066936076396">"Zwinięto obszar odblokowania."</string> + <string name="keyguard_accessibility_widget" msgid="6527131039741808240">"Widżet <xliff:g id="WIDGET_INDEX">%1$s</xliff:g>."</string> + <string name="keyguard_accessibility_user_selector" msgid="1226798370913698896">"Wybór użytkownika"</string> + <string name="keyguard_accessibility_status" msgid="8008264603935930611">"Stan"</string> + <string name="keyguard_accessibility_camera" msgid="8904231194181114603">"Aparat"</string> + <string name="keygaurd_accessibility_media_controls" msgid="262209654292161806">"Elementy sterujące multimediów"</string> + <string name="keyguard_accessibility_widget_reorder_start" msgid="8736853615588828197">"Rozpoczęto zmienianie kolejności widżetów."</string> + <string name="keyguard_accessibility_widget_reorder_end" msgid="7170190950870468320">"Zakończono zmienianie kolejności widżetów."</string> + <string name="keyguard_accessibility_widget_deleted" msgid="4426204263929224434">"Usunięto widżet <xliff:g id="WIDGET_INDEX">%1$s</xliff:g>."</string> + <string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"Rozwiń obszar odblokowania."</string> + <string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"Odblokowanie przesunięciem."</string> + <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"Odblokowanie wzorem."</string> + <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"Rozpoznanie twarzy"</string> + <string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"Odblokowanie kodem PIN."</string> + <string name="keyguard_accessibility_password_unlock" msgid="7675777623912155089">"Odblokowanie hasłem."</string> + <string name="keyguard_accessibility_pattern_area" msgid="7679891324509597904">"Obszar wzoru."</string> + <string name="keyguard_accessibility_slide_area" msgid="6736064494019979544">"Obszar przesuwania."</string> + <!-- no translation found for keyguard_accessibility_transport_prev_description (1337286538318543555) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_next_description (7073928300444909320) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_pause_description (8455979545295224302) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_play_description (8146417789511154044) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_stop_description (7656358482980912216) --> + <skip /> + <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> + <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string> + <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> + <string name="keyboardview_keycode_alt" msgid="4856868820040051939">"Alt"</string> + <string name="keyboardview_keycode_cancel" msgid="1203984017245783244">"Anuluj"</string> + <string name="keyboardview_keycode_delete" msgid="3337914833206635744">"Delete"</string> + <string name="keyboardview_keycode_done" msgid="1992571118466679775">"Gotowe"</string> + <string name="keyboardview_keycode_mode_change" msgid="4547387741906537519">"Zmiana trybu"</string> + <string name="keyboardview_keycode_shift" msgid="2270748814315147690">"Shift"</string> + <string name="keyboardview_keycode_enter" msgid="2985864015076059467">"Enter"</string> + <string name="description_target_unlock" msgid="2228524900439801453">"Odblokuj"</string> + <string name="description_target_camera" msgid="969071997552486814">"Aparat"</string> + <string name="description_target_silent" msgid="893551287746522182">"Wyciszenie"</string> + <string name="description_target_soundon" msgid="30052466675500172">"Włącz dźwięk"</string> + <string name="description_target_search" msgid="3091587249776033139">"Szukaj"</string> + <string name="description_direction_up" msgid="7169032478259485180">"Przesuń w górę: <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_down" msgid="5087739728639014595">"Przesuń w dół: <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_left" msgid="7207478719805562165">"Przesuń w lewo: <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_right" msgid="8034433242579600980">"Przesuń w prawo: <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="user_switched" msgid="3768006783166984410">"Bieżący użytkownik: <xliff:g id="NAME">%1$s</xliff:g>."</string> + <string name="kg_emergency_call_label" msgid="684946192523830531">"Połączenie alarmowe"</string> + <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Nie pamiętam wzoru"</string> + <string name="kg_wrong_pattern" msgid="1850806070801358830">"Nieprawidłowy wzór"</string> + <string name="kg_wrong_password" msgid="2333281762128113157">"Nieprawidłowe hasło"</string> + <string name="kg_wrong_pin" msgid="1131306510833563801">"Nieprawidłowy PIN"</string> + <string name="kg_too_many_failed_attempts_countdown" msgid="6358110221603297548">"Spróbuj ponownie za <xliff:g id="NUMBER">%d</xliff:g> s."</string> + <string name="kg_pattern_instructions" msgid="398978611683075868">"Narysuj wzór"</string> + <string name="kg_sim_pin_instructions" msgid="2319508550934557331">"Podaj PIN karty SIM"</string> + <string name="kg_pin_instructions" msgid="2377242233495111557">"Podaj PIN"</string> + <string name="kg_password_instructions" msgid="5753646556186936819">"Wpisz hasło"</string> + <string name="kg_puk_enter_puk_hint" msgid="453227143861735537">"Karta SIM została wyłączona. Podaj kod PUK, by przejść dalej. Szczegóły uzyskasz od operatora."</string> + <string name="kg_puk_enter_pin_hint" msgid="7871604527429602024">"Podaj wybrany kod PIN"</string> + <string name="kg_enter_confirm_pin_hint" msgid="325676184762529976">"Potwierdź wybrany kod PIN"</string> + <string name="kg_sim_unlock_progress_dialog_message" msgid="8950398016976865762">"Odblokowuję kartę SIM…"</string> + <string name="kg_password_wrong_pin_code" msgid="1139324887413846912">"Nieprawidłowy PIN."</string> + <string name="kg_invalid_sim_pin_hint" msgid="8795159358110620001">"Wpisz PIN o długości od 4 do 8 cyfr."</string> + <string name="kg_invalid_sim_puk_hint" msgid="7553388325654369575">"Kod PUK musi mieć co najmniej 8 cyfr."</string> + <string name="kg_invalid_puk" msgid="3638289409676051243">"Ponownie podaj poprawny kod PUK. Nieudane próby spowodują trwałe wyłączenie karty SIM."</string> + <string name="kg_invalid_confirm_pin_hint" product="default" msgid="7003469261464593516">"Kody PIN nie pasują"</string> + <string name="kg_login_too_many_attempts" msgid="6486842094005698475">"Zbyt wiele prób narysowania wzoru"</string> + <string name="kg_login_instructions" msgid="1100551261265506448">"Aby odblokować, zaloguj się na konto Google."</string> + <string name="kg_login_username_hint" msgid="5718534272070920364">"Nazwa użytkownika (e-mail)"</string> + <string name="kg_login_password_hint" msgid="9057289103827298549">"Hasło"</string> + <string name="kg_login_submit_button" msgid="5355904582674054702">"Zaloguj się"</string> + <string name="kg_login_invalid_input" msgid="5754664119319872197">"Nieprawidłowa nazwa użytkownika lub hasło."</string> + <string name="kg_login_account_recovery_hint" msgid="5690709132841752974">"Nie pamiętasz nazwy użytkownika lub hasła?"\n"Wejdź na "<b>"google.com/accounts/recovery"</b>"."</string> + <string name="kg_login_checking_password" msgid="1052685197710252395">"Sprawdzam konto"</string> + <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="8276745642049502550">"Po raz <xliff:g id="NUMBER_0">%d</xliff:g> wpisałeś nieprawidłowy PIN. "\n\n"Spróbuj ponownie za <xliff:g id="NUMBER_1">%d</xliff:g> s."</string> + <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="7813713389422226531">"Po raz <xliff:g id="NUMBER_0">%d</xliff:g> wpisałeś nieprawidłowe hasło. "\n\n"Spróbuj ponownie za <xliff:g id="NUMBER_1">%d</xliff:g> s."</string> + <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="74089475965050805">"Po raz <xliff:g id="NUMBER_0">%d</xliff:g> narysowałeś nieprawidłowy wzór odblokowania. "\n\n"Spróbuj ponownie za <xliff:g id="NUMBER_1">%d</xliff:g> s."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="1575557200627128949">"Po raz <xliff:g id="NUMBER_0">%d</xliff:g> próbowałeś nieprawidłowo odblokować tablet. Po kolejnych <xliff:g id="NUMBER_1">%d</xliff:g> nieudanych próbach tablet zostanie zresetowany do ustawień fabrycznych, a wszystkie dane użytkownika zostaną utracone."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="4051015943038199910">"Po raz <xliff:g id="NUMBER_0">%d</xliff:g> próbowałeś nieprawidłowo odblokować telefon. Po kolejnych <xliff:g id="NUMBER_1">%d</xliff:g> nieudanych próbach telefon zostanie zresetowany do ustawień fabrycznych, a wszystkie dane użytkownika zostaną utracone."</string> + <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2072996269148483637">"Po raz <xliff:g id="NUMBER">%d</xliff:g> próbowałeś nieprawidłowo odblokować tablet. Tablet zostanie teraz zresetowany do ustawień fabrycznych."</string> + <string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"Po raz <xliff:g id="NUMBER">%d</xliff:g> próbowałeś nieprawidłowo odblokować telefon. Telefon zostanie teraz zresetowany do ustawień fabrycznych."</string> + <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Po raz <xliff:g id="NUMBER_0">%d</xliff:g> nieprawidłowo narysowałeś wzór odblokowania. Po kolejnych <xliff:g id="NUMBER_1">%d</xliff:g> nieudanych próbach konieczne będzie odblokowanie tabletu przy użyciu danych logowania na konto Google."\n\n" Spróbuj ponownie za <xliff:g id="NUMBER_2">%d</xliff:g> s."</string> + <string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"Po raz <xliff:g id="NUMBER_0">%d</xliff:g> nieprawidłowo narysowałeś wzór odblokowania. Po kolejnych <xliff:g id="NUMBER_1">%d</xliff:g> nieudanych próbach konieczne będzie odblokowanie telefonu przy użyciu danych logowania na konto Google."\n\n" Spróbuj ponownie za <xliff:g id="NUMBER_2">%d</xliff:g> s."</string> + <string name="kg_text_message_separator" product="default" msgid="4160700433287233771">" – "</string> + <string name="kg_reordering_delete_drop_target_text" msgid="7899202978204438708">"Usuń"</string> + <!-- no translation found for keyguard_transport_prev_description (8229108430245669854) --> + <skip /> + <!-- no translation found for keyguard_transport_next_description (4299258300283778305) --> + <skip /> + <!-- no translation found for keyguard_transport_pause_description (5093073338238310224) --> + <skip /> + <!-- no translation found for keyguard_transport_play_description (2924628863741150956) --> + <skip /> + <!-- no translation found for keyguard_transport_stop_description (3084179324810575787) --> + <skip /> + <!-- no translation found for keyguard_carrier_default (8700650403054042153) --> + <skip /> +</resources> diff --git a/core/res/res/values-sw600dp/alias.xml b/packages/Keyguard/res/values-port/alias.xml index bf3eecb992ba..c3ecbb9e4f63 100644 --- a/core/res/res/values-sw600dp/alias.xml +++ b/packages/Keyguard/res/values-port/alias.xml @@ -19,5 +19,5 @@ --> <resources> <!-- Alias used to reference one of two possible layouts in keyguard. --> - <item type="layout" name="keyguard_eca">@android:layout/keyguard_emergency_carrier_area</item> + <item type="layout" name="keyguard_eca">@layout/keyguard_emergency_carrier_area</item> </resources> diff --git a/packages/Keyguard/res/values-port/bools.xml b/packages/Keyguard/res/values-port/bools.xml new file mode 100644 index 000000000000..1e2a4f29ad4d --- /dev/null +++ b/packages/Keyguard/res/values-port/bools.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2012 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<resources> + <bool name="action_bar_embed_tabs">false</bool> + <bool name="kg_share_status_area">true</bool> + <bool name="kg_sim_puk_account_full_screen">true</bool> +</resources> diff --git a/packages/Keyguard/res/values-port/integers.xml b/packages/Keyguard/res/values-port/integers.xml new file mode 100644 index 000000000000..ef7e4da0cc26 --- /dev/null +++ b/packages/Keyguard/res/values-port/integers.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** Copyright 2012, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> +<resources> + <!-- Gravity to make KeyguardSelectorView work in multiple orientations + 0x31 == "top|center_horizontal" --> + <integer name="kg_selector_gravity">0x31</integer> +</resources>
\ No newline at end of file diff --git a/packages/Keyguard/res/values-pt-rPT/strings.xml b/packages/Keyguard/res/values-pt-rPT/strings.xml new file mode 100644 index 000000000000..300ce433b72a --- /dev/null +++ b/packages/Keyguard/res/values-pt-rPT/strings.xml @@ -0,0 +1,164 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* //device/apps/common/assets/res/any/strings.xml +** +** Copyright 2006, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="keyguard_password_enter_pin_code" msgid="3037685796058495017">"Escreva o código PIN"</string> + <string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Escreva o PUK e o novo código PIN"</string> + <string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"Código PUK"</string> + <string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Novo código PIN"</string> + <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Toque para escrever a palavra-passe"</font></string> + <string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Escreva a palavra-passe para desbloquear"</string> + <string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Escreva o PIN para desbloquear"</string> + <string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Código PIN incorreto."</string> + <string name="keyguard_label_text" msgid="861796461028298424">"Para desbloquear, prima Menu e, em seguida, 0."</string> + <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Excedido o n.º máximo de tentativas de Desbloqueio Através do Rosto"</string> + <!-- no translation found for keyguard_charged (3272223906073492454) --> + <skip /> + <!-- no translation found for keyguard_plugged_in (8117572000639998388) --> + <skip /> + <!-- no translation found for keyguard_low_battery (8143808018719173859) --> + <skip /> + <!-- no translation found for keyguard_instructions_when_pattern_disabled (1332288268600329841) --> + <skip /> + <!-- no translation found for keyguard_network_locked_message (9169717779058037168) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message_short (494980561304211931) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (1445849005909260039) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (3481110395508637643) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions (5210891509995942250) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions_long (5968985489463870358) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_message_short (8340813989586622356) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5892940909699723544) --> + <skip /> + <!-- no translation found for keyguard_sim_locked_message (6875773413306380902) --> + <skip /> + <!-- no translation found for keyguard_sim_puk_locked_message (3747232467471801633) --> + <skip /> + <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (7975221805033614426) --> + <skip /> + <string name="keyguard_accessibility_widget_changed" msgid="5678624624681400191">"%1$s. Widget %2$d de %3$d."</string> + <string name="keyguard_accessibility_add_widget" msgid="8273277058724924654">"Adicionar widget."</string> + <string name="keyguard_accessibility_widget_empty_slot" msgid="1281505703307930757">"Vazio"</string> + <string name="keyguard_accessibility_unlock_area_expanded" msgid="2278106022311170299">"Área de desbloqueio expandida."</string> + <string name="keyguard_accessibility_unlock_area_collapsed" msgid="6366992066936076396">"Área de desbloqueio minimizada."</string> + <string name="keyguard_accessibility_widget" msgid="6527131039741808240">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g> widget."</string> + <string name="keyguard_accessibility_user_selector" msgid="1226798370913698896">"Seletor de utilizadores"</string> + <string name="keyguard_accessibility_status" msgid="8008264603935930611">"Estado"</string> + <string name="keyguard_accessibility_camera" msgid="8904231194181114603">"Câmara"</string> + <string name="keygaurd_accessibility_media_controls" msgid="262209654292161806">"Controlos de multimédia"</string> + <string name="keyguard_accessibility_widget_reorder_start" msgid="8736853615588828197">"Reordenação de widgets iniciada."</string> + <string name="keyguard_accessibility_widget_reorder_end" msgid="7170190950870468320">"Reordenação de widgets concluída."</string> + <string name="keyguard_accessibility_widget_deleted" msgid="4426204263929224434">"Widget <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> eliminado."</string> + <string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"Expandir área de desbloqueio."</string> + <string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"Desbloqueio através de deslize."</string> + <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"Desbloqueio através de sequência."</string> + <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"Desbloqueio através do rosto."</string> + <string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"Desbloqueio através de PIN."</string> + <string name="keyguard_accessibility_password_unlock" msgid="7675777623912155089">"Desbloqueio através de palavra-passe."</string> + <string name="keyguard_accessibility_pattern_area" msgid="7679891324509597904">"Área da sequência."</string> + <string name="keyguard_accessibility_slide_area" msgid="6736064494019979544">"Área de deslize."</string> + <!-- no translation found for keyguard_accessibility_transport_prev_description (1337286538318543555) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_next_description (7073928300444909320) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_pause_description (8455979545295224302) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_play_description (8146417789511154044) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_stop_description (7656358482980912216) --> + <skip /> + <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> + <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string> + <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> + <string name="keyboardview_keycode_alt" msgid="4856868820040051939">"Alt"</string> + <string name="keyboardview_keycode_cancel" msgid="1203984017245783244">"Cancelar"</string> + <string name="keyboardview_keycode_delete" msgid="3337914833206635744">"Delete"</string> + <string name="keyboardview_keycode_done" msgid="1992571118466679775">"Concluído"</string> + <string name="keyboardview_keycode_mode_change" msgid="4547387741906537519">"Alteração do modo"</string> + <string name="keyboardview_keycode_shift" msgid="2270748814315147690">"Shift"</string> + <string name="keyboardview_keycode_enter" msgid="2985864015076059467">"Enter"</string> + <string name="description_target_unlock" msgid="2228524900439801453">"Desbloquear"</string> + <string name="description_target_camera" msgid="969071997552486814">"Câmara"</string> + <string name="description_target_silent" msgid="893551287746522182">"Silencioso"</string> + <string name="description_target_soundon" msgid="30052466675500172">"Som ativado"</string> + <string name="description_target_search" msgid="3091587249776033139">"Pesquisar"</string> + <string name="description_direction_up" msgid="7169032478259485180">"Deslize para cima para <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> ."</string> + <string name="description_direction_down" msgid="5087739728639014595">"Deslize para baixo para <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> ."</string> + <string name="description_direction_left" msgid="7207478719805562165">"Deslize para a esquerda para <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> ."</string> + <string name="description_direction_right" msgid="8034433242579600980">"Deslize para a direita para <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> ."</string> + <string name="user_switched" msgid="3768006783166984410">"<xliff:g id="NAME">%1$s</xliff:g> do utilizador atual."</string> + <string name="kg_emergency_call_label" msgid="684946192523830531">"Chamada de emergência"</string> + <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Esqueceu-se da Sequência"</string> + <string name="kg_wrong_pattern" msgid="1850806070801358830">"Sequência Incorreta"</string> + <string name="kg_wrong_password" msgid="2333281762128113157">"Palavra-passe Incorreta"</string> + <string name="kg_wrong_pin" msgid="1131306510833563801">"PIN Incorreto"</string> + <string name="kg_too_many_failed_attempts_countdown" msgid="6358110221603297548">"Tente novamente dentro de <xliff:g id="NUMBER">%d</xliff:g> segundos."</string> + <string name="kg_pattern_instructions" msgid="398978611683075868">"Desenhe a sua sequência"</string> + <string name="kg_sim_pin_instructions" msgid="2319508550934557331">"Introduzir PIN do cartão SIM"</string> + <string name="kg_pin_instructions" msgid="2377242233495111557">"Introduzir PIN"</string> + <string name="kg_password_instructions" msgid="5753646556186936819">"Introduzir Palavra-passe"</string> + <string name="kg_puk_enter_puk_hint" msgid="453227143861735537">"O SIM está agora desativado. Introduza o código PUK para continuar. Contacte o operador para obter detalhes."</string> + <string name="kg_puk_enter_pin_hint" msgid="7871604527429602024">"Introduza o código PIN pretendido"</string> + <string name="kg_enter_confirm_pin_hint" msgid="325676184762529976">"Confirme o código PIN pretendido"</string> + <string name="kg_sim_unlock_progress_dialog_message" msgid="8950398016976865762">"A desbloquear cartão SIM..."</string> + <string name="kg_password_wrong_pin_code" msgid="1139324887413846912">"Código PIN incorreto."</string> + <string name="kg_invalid_sim_pin_hint" msgid="8795159358110620001">"Introduza um PIN entre 4 e 8 números."</string> + <string name="kg_invalid_sim_puk_hint" msgid="7553388325654369575">"O código PUK deve ter 8 ou mais números."</string> + <string name="kg_invalid_puk" msgid="3638289409676051243">"Volte a introduzir o código PUK correto. Demasiadas tentativas consecutivas irão desativar permanentemente o SIM."</string> + <string name="kg_invalid_confirm_pin_hint" product="default" msgid="7003469261464593516">"Os códigos PIN não correspondem"</string> + <string name="kg_login_too_many_attempts" msgid="6486842094005698475">"Demasiadas tentativas para desenhar sequência"</string> + <string name="kg_login_instructions" msgid="1100551261265506448">"Para desbloquear, inicie sessão com a sua Conta do Google."</string> + <string name="kg_login_username_hint" msgid="5718534272070920364">"Nome de utilizador (email)"</string> + <string name="kg_login_password_hint" msgid="9057289103827298549">"Palavra-passe"</string> + <string name="kg_login_submit_button" msgid="5355904582674054702">"Iniciar sessão"</string> + <string name="kg_login_invalid_input" msgid="5754664119319872197">"Nome de utilizador ou palavra-passe inválidos."</string> + <string name="kg_login_account_recovery_hint" msgid="5690709132841752974">"Esqueceu-se do nome de utilizador ou da palavra-passe?"\n"Aceda a "<b>"google.com/accounts/recovery"</b>"."</string> + <string name="kg_login_checking_password" msgid="1052685197710252395">"A verificar a conta…"</string> + <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="8276745642049502550">"Escreveu o PIN incorretamente <xliff:g id="NUMBER_0">%d</xliff:g> vezes. "\n\n"Tente novamente dentro de <xliff:g id="NUMBER_1">%d</xliff:g> segundos."</string> + <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="7813713389422226531">"Escreveu a palavra-passe incorretamente <xliff:g id="NUMBER_0">%d</xliff:g> vezes. "\n\n"Tente novamente dentro de <xliff:g id="NUMBER_1">%d</xliff:g> segundos."</string> + <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="74089475965050805">"Desenhou a sua sequência de desbloqueio incorretamente <xliff:g id="NUMBER_0">%d</xliff:g> vezes. "\n\n"Tente novamente dentro de <xliff:g id="NUMBER_1">%d</xliff:g> segundos."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="1575557200627128949">"Tentou desbloquear o tablet <xliff:g id="NUMBER_0">%d</xliff:g> vezes de forma incorreta. Depois de mais <xliff:g id="NUMBER_1">%d</xliff:g> tentativas sem êxito, as definições de origem do telemóvel serão repostas e todos os dados do utilizador serão perdidos."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="4051015943038199910">"Tentou desbloquear o telemóvel <xliff:g id="NUMBER_0">%d</xliff:g> vezes de forma incorreta. Depois de mais <xliff:g id="NUMBER_1">%d</xliff:g> tentativas sem êxito, as definições de origem do telemóvel serão repostas e todos os dados do utilizador serão perdidos."</string> + <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2072996269148483637">"Tentou desbloquear o tablet <xliff:g id="NUMBER">%d</xliff:g> vezes de forma incorreta, pelo que será reposta a predefinição de fábrica."</string> + <string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"Tentou desbloquear o telemóvel <xliff:g id="NUMBER">%d</xliff:g> vezes de forma incorreta, pelo que será reposta a predefinição de fábrica."</string> + <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Desenhou a sequência de desbloqueio incorretamente <xliff:g id="NUMBER_0">%d</xliff:g> vezes. Depois de mais <xliff:g id="NUMBER_1">%d</xliff:g> tentativas sem sucesso, ser-lhe-á pedido para desbloquear o tablet através de uma conta de email."\n\n" Tente novamente dentro de <xliff:g id="NUMBER_2">%d</xliff:g> segundos."</string> + <string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"Desenhou a sequência de desbloqueio incorretamente <xliff:g id="NUMBER_0">%d</xliff:g> vezes. Depois de mais <xliff:g id="NUMBER_1">%d</xliff:g> tentativas sem sucesso, ser-lhe-á pedido para desbloquear o telemóvel através de uma conta de email."\n\n" Tente novamente dentro de <xliff:g id="NUMBER_2">%d</xliff:g> segundos."</string> + <string name="kg_text_message_separator" product="default" msgid="4160700433287233771">" - "</string> + <string name="kg_reordering_delete_drop_target_text" msgid="7899202978204438708">"Remover"</string> + <!-- no translation found for keyguard_transport_prev_description (8229108430245669854) --> + <skip /> + <!-- no translation found for keyguard_transport_next_description (4299258300283778305) --> + <skip /> + <!-- no translation found for keyguard_transport_pause_description (5093073338238310224) --> + <skip /> + <!-- no translation found for keyguard_transport_play_description (2924628863741150956) --> + <skip /> + <!-- no translation found for keyguard_transport_stop_description (3084179324810575787) --> + <skip /> + <!-- no translation found for keyguard_carrier_default (8700650403054042153) --> + <skip /> +</resources> diff --git a/packages/Keyguard/res/values-pt/strings.xml b/packages/Keyguard/res/values-pt/strings.xml new file mode 100644 index 000000000000..cf3d64c9439e --- /dev/null +++ b/packages/Keyguard/res/values-pt/strings.xml @@ -0,0 +1,164 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* //device/apps/common/assets/res/any/strings.xml +** +** Copyright 2006, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="keyguard_password_enter_pin_code" msgid="3037685796058495017">"Insira o código PIN"</string> + <string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Insira o PUK e o novo código PIN"</string> + <string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"Código PUK"</string> + <string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Novo código PIN"</string> + <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Toque para inserir a senha"</font></string> + <string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Digite a senha para desbloquear"</string> + <string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Insira o PIN para desbloquear"</string> + <string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Código PIN incorreto."</string> + <string name="keyguard_label_text" msgid="861796461028298424">"Para desbloquear, pressione Menu e, em seguida, 0."</string> + <string name="faceunlock_multiple_failures" msgid="754137583022792429">"O número máximo de tentativas de Desbloqueio por reconhecimento facial foi excedido"</string> + <!-- no translation found for keyguard_charged (3272223906073492454) --> + <skip /> + <!-- no translation found for keyguard_plugged_in (8117572000639998388) --> + <skip /> + <!-- no translation found for keyguard_low_battery (8143808018719173859) --> + <skip /> + <!-- no translation found for keyguard_instructions_when_pattern_disabled (1332288268600329841) --> + <skip /> + <!-- no translation found for keyguard_network_locked_message (9169717779058037168) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message_short (494980561304211931) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (1445849005909260039) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (3481110395508637643) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions (5210891509995942250) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions_long (5968985489463870358) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_message_short (8340813989586622356) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5892940909699723544) --> + <skip /> + <!-- no translation found for keyguard_sim_locked_message (6875773413306380902) --> + <skip /> + <!-- no translation found for keyguard_sim_puk_locked_message (3747232467471801633) --> + <skip /> + <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (7975221805033614426) --> + <skip /> + <string name="keyguard_accessibility_widget_changed" msgid="5678624624681400191">"%1$s. Widget %2$d de %3$d."</string> + <string name="keyguard_accessibility_add_widget" msgid="8273277058724924654">"Adicionar widget"</string> + <string name="keyguard_accessibility_widget_empty_slot" msgid="1281505703307930757">"Vazio"</string> + <string name="keyguard_accessibility_unlock_area_expanded" msgid="2278106022311170299">"Área de desbloqueio expandida."</string> + <string name="keyguard_accessibility_unlock_area_collapsed" msgid="6366992066936076396">"Área de desbloqueio recolhida."</string> + <string name="keyguard_accessibility_widget" msgid="6527131039741808240">"Widget de <xliff:g id="WIDGET_INDEX">%1$s</xliff:g>."</string> + <string name="keyguard_accessibility_user_selector" msgid="1226798370913698896">"Seletor de usuários"</string> + <string name="keyguard_accessibility_status" msgid="8008264603935930611">"Status"</string> + <string name="keyguard_accessibility_camera" msgid="8904231194181114603">"Câmera"</string> + <string name="keygaurd_accessibility_media_controls" msgid="262209654292161806">"Controles de mídia"</string> + <string name="keyguard_accessibility_widget_reorder_start" msgid="8736853615588828197">"Reordenação de widgets iniciada."</string> + <string name="keyguard_accessibility_widget_reorder_end" msgid="7170190950870468320">"Reordenação de widgets concluída."</string> + <string name="keyguard_accessibility_widget_deleted" msgid="4426204263929224434">"Widget <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> excluído."</string> + <string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"Expandir a área de desbloqueio."</string> + <string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"Desbloqueio com deslize."</string> + <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"Desbloqueio com padrão."</string> + <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"Desbloqueio facial."</string> + <string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"Desbloqueio com PIN."</string> + <string name="keyguard_accessibility_password_unlock" msgid="7675777623912155089">"Desbloqueio com senha."</string> + <string name="keyguard_accessibility_pattern_area" msgid="7679891324509597904">"Área do padrão."</string> + <string name="keyguard_accessibility_slide_area" msgid="6736064494019979544">"Área de deslize."</string> + <!-- no translation found for keyguard_accessibility_transport_prev_description (1337286538318543555) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_next_description (7073928300444909320) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_pause_description (8455979545295224302) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_play_description (8146417789511154044) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_stop_description (7656358482980912216) --> + <skip /> + <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> + <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string> + <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> + <string name="keyboardview_keycode_alt" msgid="4856868820040051939">"Alt"</string> + <string name="keyboardview_keycode_cancel" msgid="1203984017245783244">"Cancelar"</string> + <string name="keyboardview_keycode_delete" msgid="3337914833206635744">"Excluir"</string> + <string name="keyboardview_keycode_done" msgid="1992571118466679775">"Concluído"</string> + <string name="keyboardview_keycode_mode_change" msgid="4547387741906537519">"Alteração do modo"</string> + <string name="keyboardview_keycode_shift" msgid="2270748814315147690">"Shift"</string> + <string name="keyboardview_keycode_enter" msgid="2985864015076059467">"Enter"</string> + <string name="description_target_unlock" msgid="2228524900439801453">"Desbloquear"</string> + <string name="description_target_camera" msgid="969071997552486814">"Câmera"</string> + <string name="description_target_silent" msgid="893551287746522182">"Silencioso"</string> + <string name="description_target_soundon" msgid="30052466675500172">"Som ativado"</string> + <string name="description_target_search" msgid="3091587249776033139">"Pesquisar"</string> + <string name="description_direction_up" msgid="7169032478259485180">"Para <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>, deslize para cima."</string> + <string name="description_direction_down" msgid="5087739728639014595">"Para <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>, deslize para baixo."</string> + <string name="description_direction_left" msgid="7207478719805562165">"Para <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>, deslize para a esquerda."</string> + <string name="description_direction_right" msgid="8034433242579600980">"Para <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>, deslize para a direita."</string> + <string name="user_switched" msgid="3768006783166984410">"Usuário atual <xliff:g id="NAME">%1$s</xliff:g>."</string> + <string name="kg_emergency_call_label" msgid="684946192523830531">"Chamada de emergência"</string> + <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Esqueci o padrão"</string> + <string name="kg_wrong_pattern" msgid="1850806070801358830">"Padrão incorreto"</string> + <string name="kg_wrong_password" msgid="2333281762128113157">"Senha incorreta"</string> + <string name="kg_wrong_pin" msgid="1131306510833563801">"PIN incorreto"</string> + <string name="kg_too_many_failed_attempts_countdown" msgid="6358110221603297548">"Tente novamente em <xliff:g id="NUMBER">%d</xliff:g> segundos."</string> + <string name="kg_pattern_instructions" msgid="398978611683075868">"Desenhe seu padrão"</string> + <string name="kg_sim_pin_instructions" msgid="2319508550934557331">"Digite o PIN do cartão SIM"</string> + <string name="kg_pin_instructions" msgid="2377242233495111557">"Digite o PIN"</string> + <string name="kg_password_instructions" msgid="5753646556186936819">"Digite a senha"</string> + <string name="kg_puk_enter_puk_hint" msgid="453227143861735537">"O SIM foi desativado. Insira o código PUK para continuar. Entre em contato com a operadora para obter mais detalhes."</string> + <string name="kg_puk_enter_pin_hint" msgid="7871604527429602024">"Digite o código PIN desejado"</string> + <string name="kg_enter_confirm_pin_hint" msgid="325676184762529976">"Confirme o código PIN desejado"</string> + <string name="kg_sim_unlock_progress_dialog_message" msgid="8950398016976865762">"Desbloqueando o cartão SIM…"</string> + <string name="kg_password_wrong_pin_code" msgid="1139324887413846912">"Código PIN incorreto."</string> + <string name="kg_invalid_sim_pin_hint" msgid="8795159358110620001">"Digite um PIN com quatro a oito números."</string> + <string name="kg_invalid_sim_puk_hint" msgid="7553388325654369575">"O código PUK deve ter 8 números ou mais."</string> + <string name="kg_invalid_puk" msgid="3638289409676051243">"Introduza novamente o código PUK correto. Muitas tentativas malsucedidas desativarão permanentemente o SIM."</string> + <string name="kg_invalid_confirm_pin_hint" product="default" msgid="7003469261464593516">"Os códigos PIN não coincidem"</string> + <string name="kg_login_too_many_attempts" msgid="6486842094005698475">"Muitas tentativas de padrão"</string> + <string name="kg_login_instructions" msgid="1100551261265506448">"Para desbloquear, faça login usando sua Conta do Google."</string> + <string name="kg_login_username_hint" msgid="5718534272070920364">"Nome de usuário (e-mail)"</string> + <string name="kg_login_password_hint" msgid="9057289103827298549">"Senha"</string> + <string name="kg_login_submit_button" msgid="5355904582674054702">"Fazer login"</string> + <string name="kg_login_invalid_input" msgid="5754664119319872197">"Nome de usuário ou senha inválidos."</string> + <string name="kg_login_account_recovery_hint" msgid="5690709132841752974">"Esqueceu seu nome de usuário ou senha?"\n"Acesse "<b>"google.com.br/accounts/recovery"</b>"."</string> + <string name="kg_login_checking_password" msgid="1052685197710252395">"Verificando a conta..."</string> + <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="8276745642049502550">"Você digitou seu PIN incorretamente <xliff:g id="NUMBER_0">%d</xliff:g> vezes. "\n\n"Tente novamente em <xliff:g id="NUMBER_1">%d</xliff:g> segundos."</string> + <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="7813713389422226531">"Você digitou sua senha incorretamente <xliff:g id="NUMBER_0">%d</xliff:g> vezes. "\n\n"Tente novamente em <xliff:g id="NUMBER_1">%d</xliff:g> segundos."</string> + <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="74089475965050805">"Você desenhou sua sequência de desbloqueio incorretamente <xliff:g id="NUMBER_0">%d</xliff:g> vezes. "\n\n"Tente novamente em <xliff:g id="NUMBER_1">%d</xliff:g> segundos."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="1575557200627128949">"Você tentou desbloquear incorretamente o tablet <xliff:g id="NUMBER_0">%d</xliff:g> vezes. Após mais <xliff:g id="NUMBER_1">%d</xliff:g> tentativas malsucedidas, o tablet será redefinido para o padrão de fábrica e todos os dados do usuário serão perdidos."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="4051015943038199910">"Você tentou desbloquear incorretamente o telefone <xliff:g id="NUMBER_0">%d</xliff:g> vezes. Após mais <xliff:g id="NUMBER_1">%d</xliff:g> tentativas malsucedidas, o telefone será redefinido para o padrão de fábrica e todos os dados do usuário serão perdidos."</string> + <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2072996269148483637">"Você tentou desbloquear incorretamente o tablet <xliff:g id="NUMBER">%d</xliff:g> vezes. O tablet será redefinido para o padrão de fábrica."</string> + <string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"Você tentou desbloquear incorretamente o telefone <xliff:g id="NUMBER">%d</xliff:g> vezes. O telefone será redefinido para o padrão de fábrica."</string> + <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Você desenhou sua sequência de desbloqueio incorretamente <xliff:g id="NUMBER_0">%d</xliff:g> vezes. Se fizer mais <xliff:g id="NUMBER_1">%d</xliff:g> tentativas incorretas, será solicitado que você use o login do Google para desbloquear seu tablet."\n\n" Tente novamente em <xliff:g id="NUMBER_2">%d</xliff:g> segundos."</string> + <string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"Você desenhou sua sequência de desbloqueio incorretamente <xliff:g id="NUMBER_0">%d</xliff:g> vezes. Se fizer mais <xliff:g id="NUMBER_1">%d</xliff:g> tentativas incorretas, será solicitado que você use o login do Google para desbloquear."\n\n" Tente novamente em <xliff:g id="NUMBER_2">%d</xliff:g> segundos."</string> + <string name="kg_text_message_separator" product="default" msgid="4160700433287233771">" — "</string> + <string name="kg_reordering_delete_drop_target_text" msgid="7899202978204438708">"Remover"</string> + <!-- no translation found for keyguard_transport_prev_description (8229108430245669854) --> + <skip /> + <!-- no translation found for keyguard_transport_next_description (4299258300283778305) --> + <skip /> + <!-- no translation found for keyguard_transport_pause_description (5093073338238310224) --> + <skip /> + <!-- no translation found for keyguard_transport_play_description (2924628863741150956) --> + <skip /> + <!-- no translation found for keyguard_transport_stop_description (3084179324810575787) --> + <skip /> + <!-- no translation found for keyguard_carrier_default (8700650403054042153) --> + <skip /> +</resources> diff --git a/packages/Keyguard/res/values-rm/strings.xml b/packages/Keyguard/res/values-rm/strings.xml new file mode 100644 index 000000000000..8dda0554136e --- /dev/null +++ b/packages/Keyguard/res/values-rm/strings.xml @@ -0,0 +1,249 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* //device/apps/common/assets/res/any/strings.xml +** +** Copyright 2006, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- no translation found for keyguard_password_enter_pin_code (3037685796058495017) --> + <skip /> + <!-- no translation found for keyguard_password_enter_puk_code (4800725266925845333) --> + <skip /> + <!-- no translation found for keyguard_password_enter_puk_prompt (1341112146710087048) --> + <skip /> + <!-- no translation found for keyguard_password_enter_pin_prompt (8027680321614196258) --> + <skip /> + <!-- no translation found for keyguard_password_entry_touch_hint (7858547464982981384) --> + <skip /> + <!-- no translation found for keyguard_password_enter_password_code (1054721668279049780) --> + <skip /> + <!-- no translation found for keyguard_password_enter_pin_password_code (6391755146112503443) --> + <skip /> + <!-- no translation found for keyguard_password_wrong_pin_code (2422225591006134936) --> + <skip /> + <string name="keyguard_label_text" msgid="861796461028298424">"Smatgai per debloccar sin la tasta Menu e lura sin 0."</string> + <!-- no translation found for faceunlock_multiple_failures (754137583022792429) --> + <skip /> + <!-- no translation found for keyguard_charged (3272223906073492454) --> + <skip /> + <!-- no translation found for keyguard_plugged_in (8117572000639998388) --> + <skip /> + <!-- no translation found for keyguard_low_battery (8143808018719173859) --> + <skip /> + <!-- no translation found for keyguard_instructions_when_pattern_disabled (1332288268600329841) --> + <skip /> + <!-- no translation found for keyguard_network_locked_message (9169717779058037168) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message_short (494980561304211931) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (1445849005909260039) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (3481110395508637643) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions (5210891509995942250) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions_long (5968985489463870358) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_message_short (8340813989586622356) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5892940909699723544) --> + <skip /> + <!-- no translation found for keyguard_sim_locked_message (6875773413306380902) --> + <skip /> + <!-- no translation found for keyguard_sim_puk_locked_message (3747232467471801633) --> + <skip /> + <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (7975221805033614426) --> + <skip /> + <!-- no translation found for keyguard_accessibility_widget_changed (5678624624681400191) --> + <skip /> + <!-- no translation found for keyguard_accessibility_add_widget (8273277058724924654) --> + <skip /> + <!-- no translation found for keyguard_accessibility_widget_empty_slot (1281505703307930757) --> + <skip /> + <!-- no translation found for keyguard_accessibility_unlock_area_expanded (2278106022311170299) --> + <skip /> + <!-- no translation found for keyguard_accessibility_unlock_area_collapsed (6366992066936076396) --> + <skip /> + <!-- no translation found for keyguard_accessibility_widget (6527131039741808240) --> + <skip /> + <!-- no translation found for keyguard_accessibility_user_selector (1226798370913698896) --> + <skip /> + <!-- no translation found for keyguard_accessibility_status (8008264603935930611) --> + <skip /> + <!-- no translation found for keyguard_accessibility_camera (8904231194181114603) --> + <skip /> + <!-- no translation found for keygaurd_accessibility_media_controls (262209654292161806) --> + <skip /> + <!-- no translation found for keyguard_accessibility_widget_reorder_start (8736853615588828197) --> + <skip /> + <!-- no translation found for keyguard_accessibility_widget_reorder_end (7170190950870468320) --> + <skip /> + <!-- no translation found for keyguard_accessibility_widget_deleted (4426204263929224434) --> + <skip /> + <!-- no translation found for keyguard_accessibility_expand_lock_area (519859720934178024) --> + <skip /> + <!-- no translation found for keyguard_accessibility_slide_unlock (2959928478764697254) --> + <skip /> + <!-- no translation found for keyguard_accessibility_pattern_unlock (1490840706075246612) --> + <skip /> + <!-- no translation found for keyguard_accessibility_face_unlock (4817282543351718535) --> + <skip /> + <!-- no translation found for keyguard_accessibility_pin_unlock (2469687111784035046) --> + <skip /> + <!-- no translation found for keyguard_accessibility_password_unlock (7675777623912155089) --> + <skip /> + <!-- no translation found for keyguard_accessibility_pattern_area (7679891324509597904) --> + <skip /> + <!-- no translation found for keyguard_accessibility_slide_area (6736064494019979544) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_prev_description (1337286538318543555) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_next_description (7073928300444909320) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_pause_description (8455979545295224302) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_play_description (8146417789511154044) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_stop_description (7656358482980912216) --> + <skip /> + <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> + <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string> + <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> + <!-- no translation found for keyboardview_keycode_alt (4856868820040051939) --> + <skip /> + <!-- no translation found for keyboardview_keycode_cancel (1203984017245783244) --> + <skip /> + <!-- no translation found for keyboardview_keycode_delete (3337914833206635744) --> + <skip /> + <!-- no translation found for keyboardview_keycode_done (1992571118466679775) --> + <skip /> + <!-- no translation found for keyboardview_keycode_mode_change (4547387741906537519) --> + <skip /> + <!-- no translation found for keyboardview_keycode_shift (2270748814315147690) --> + <skip /> + <!-- no translation found for keyboardview_keycode_enter (2985864015076059467) --> + <skip /> + <!-- no translation found for description_target_unlock (2228524900439801453) --> + <skip /> + <!-- no translation found for description_target_camera (969071997552486814) --> + <skip /> + <!-- no translation found for description_target_silent (893551287746522182) --> + <skip /> + <!-- no translation found for description_target_soundon (30052466675500172) --> + <skip /> + <!-- no translation found for description_target_search (3091587249776033139) --> + <skip /> + <!-- no translation found for description_direction_up (7169032478259485180) --> + <skip /> + <!-- no translation found for description_direction_down (5087739728639014595) --> + <skip /> + <!-- no translation found for description_direction_left (7207478719805562165) --> + <skip /> + <!-- no translation found for description_direction_right (8034433242579600980) --> + <skip /> + <!-- no translation found for user_switched (3768006783166984410) --> + <skip /> + <!-- no translation found for kg_emergency_call_label (684946192523830531) --> + <skip /> + <!-- no translation found for kg_forgot_pattern_button_text (8852021467868220608) --> + <skip /> + <!-- no translation found for kg_wrong_pattern (1850806070801358830) --> + <skip /> + <!-- no translation found for kg_wrong_password (2333281762128113157) --> + <skip /> + <!-- no translation found for kg_wrong_pin (1131306510833563801) --> + <skip /> + <!-- no translation found for kg_too_many_failed_attempts_countdown (6358110221603297548) --> + <skip /> + <!-- no translation found for kg_pattern_instructions (398978611683075868) --> + <skip /> + <!-- no translation found for kg_sim_pin_instructions (2319508550934557331) --> + <skip /> + <!-- no translation found for kg_pin_instructions (2377242233495111557) --> + <skip /> + <!-- no translation found for kg_password_instructions (5753646556186936819) --> + <skip /> + <!-- no translation found for kg_puk_enter_puk_hint (453227143861735537) --> + <skip /> + <!-- no translation found for kg_puk_enter_pin_hint (7871604527429602024) --> + <skip /> + <!-- no translation found for kg_enter_confirm_pin_hint (325676184762529976) --> + <skip /> + <!-- no translation found for kg_sim_unlock_progress_dialog_message (8950398016976865762) --> + <skip /> + <!-- no translation found for kg_password_wrong_pin_code (1139324887413846912) --> + <skip /> + <!-- no translation found for kg_invalid_sim_pin_hint (8795159358110620001) --> + <skip /> + <!-- no translation found for kg_invalid_sim_puk_hint (7553388325654369575) --> + <skip /> + <!-- no translation found for kg_invalid_puk (3638289409676051243) --> + <skip /> + <!-- no translation found for kg_invalid_confirm_pin_hint (7003469261464593516) --> + <skip /> + <!-- no translation found for kg_login_too_many_attempts (6486842094005698475) --> + <skip /> + <!-- no translation found for kg_login_instructions (1100551261265506448) --> + <skip /> + <!-- no translation found for kg_login_username_hint (5718534272070920364) --> + <skip /> + <!-- no translation found for kg_login_password_hint (9057289103827298549) --> + <skip /> + <!-- no translation found for kg_login_submit_button (5355904582674054702) --> + <skip /> + <!-- no translation found for kg_login_invalid_input (5754664119319872197) --> + <skip /> + <!-- no translation found for kg_login_account_recovery_hint (5690709132841752974) --> + <skip /> + <!-- no translation found for kg_login_checking_password (1052685197710252395) --> + <skip /> + <!-- no translation found for kg_too_many_failed_pin_attempts_dialog_message (8276745642049502550) --> + <skip /> + <!-- no translation found for kg_too_many_failed_password_attempts_dialog_message (7813713389422226531) --> + <skip /> + <!-- no translation found for kg_too_many_failed_pattern_attempts_dialog_message (74089475965050805) --> + <skip /> + <!-- no translation found for kg_failed_attempts_almost_at_wipe (1575557200627128949) --> + <skip /> + <!-- no translation found for kg_failed_attempts_almost_at_wipe (4051015943038199910) --> + <skip /> + <!-- no translation found for kg_failed_attempts_now_wiping (2072996269148483637) --> + <skip /> + <!-- no translation found for kg_failed_attempts_now_wiping (4817627474419471518) --> + <skip /> + <!-- no translation found for kg_failed_attempts_almost_at_login (3253575572118914370) --> + <skip /> + <!-- no translation found for kg_failed_attempts_almost_at_login (1437638152015574839) --> + <skip /> + <!-- no translation found for kg_text_message_separator (4160700433287233771) --> + <skip /> + <!-- no translation found for kg_reordering_delete_drop_target_text (7899202978204438708) --> + <skip /> + <!-- no translation found for keyguard_transport_prev_description (8229108430245669854) --> + <skip /> + <!-- no translation found for keyguard_transport_next_description (4299258300283778305) --> + <skip /> + <!-- no translation found for keyguard_transport_pause_description (5093073338238310224) --> + <skip /> + <!-- no translation found for keyguard_transport_play_description (2924628863741150956) --> + <skip /> + <!-- no translation found for keyguard_transport_stop_description (3084179324810575787) --> + <skip /> + <!-- no translation found for keyguard_carrier_default (8700650403054042153) --> + <skip /> +</resources> diff --git a/packages/Keyguard/res/values-ro/strings.xml b/packages/Keyguard/res/values-ro/strings.xml new file mode 100644 index 000000000000..a251c2280a10 --- /dev/null +++ b/packages/Keyguard/res/values-ro/strings.xml @@ -0,0 +1,164 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* //device/apps/common/assets/res/any/strings.xml +** +** Copyright 2006, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="keyguard_password_enter_pin_code" msgid="3037685796058495017">"Introduceţi codul PIN"</string> + <string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Introduceţi codul PUK şi noul cod PIN"</string> + <string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"Codul PUK"</string> + <string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Noul cod PIN"</string> + <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Atingeţi şi introduceţi parola"</font></string> + <string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Introduceţi parola pentru a debloca"</string> + <string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Introduceţi codul PIN pentru a debloca"</string> + <string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Cod PIN incorect."</string> + <string name="keyguard_label_text" msgid="861796461028298424">"Pentru a debloca, apăsaţi Meniu, apoi 0."</string> + <string name="faceunlock_multiple_failures" msgid="754137583022792429">"S-a depăşit numărul maxim de încercări pentru Deblocare facială"</string> + <!-- no translation found for keyguard_charged (3272223906073492454) --> + <skip /> + <!-- no translation found for keyguard_plugged_in (8117572000639998388) --> + <skip /> + <!-- no translation found for keyguard_low_battery (8143808018719173859) --> + <skip /> + <!-- no translation found for keyguard_instructions_when_pattern_disabled (1332288268600329841) --> + <skip /> + <!-- no translation found for keyguard_network_locked_message (9169717779058037168) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message_short (494980561304211931) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (1445849005909260039) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (3481110395508637643) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions (5210891509995942250) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions_long (5968985489463870358) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_message_short (8340813989586622356) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5892940909699723544) --> + <skip /> + <!-- no translation found for keyguard_sim_locked_message (6875773413306380902) --> + <skip /> + <!-- no translation found for keyguard_sim_puk_locked_message (3747232467471801633) --> + <skip /> + <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (7975221805033614426) --> + <skip /> + <string name="keyguard_accessibility_widget_changed" msgid="5678624624681400191">"%1$s. Widget %2$d din %3$d."</string> + <string name="keyguard_accessibility_add_widget" msgid="8273277058724924654">"Adăugaţi un widget."</string> + <string name="keyguard_accessibility_widget_empty_slot" msgid="1281505703307930757">"Gol"</string> + <string name="keyguard_accessibility_unlock_area_expanded" msgid="2278106022311170299">"Zona de deblocare a fost extinsă."</string> + <string name="keyguard_accessibility_unlock_area_collapsed" msgid="6366992066936076396">"Zona de deblocare a fost restrânsă."</string> + <string name="keyguard_accessibility_widget" msgid="6527131039741808240">"Widget <xliff:g id="WIDGET_INDEX">%1$s</xliff:g>."</string> + <string name="keyguard_accessibility_user_selector" msgid="1226798370913698896">"Selector utilizator"</string> + <string name="keyguard_accessibility_status" msgid="8008264603935930611">"Stare"</string> + <string name="keyguard_accessibility_camera" msgid="8904231194181114603">"Cameră foto"</string> + <string name="keygaurd_accessibility_media_controls" msgid="262209654292161806">"Comenzi media"</string> + <string name="keyguard_accessibility_widget_reorder_start" msgid="8736853615588828197">"A început reordonarea widgeturilor."</string> + <string name="keyguard_accessibility_widget_reorder_end" msgid="7170190950870468320">"Reordonarea widgeturilor s-a încheiat."</string> + <string name="keyguard_accessibility_widget_deleted" msgid="4426204263929224434">"Widgetul <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> a fost eliminat."</string> + <string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"Extindeţi zona de deblocare."</string> + <string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"Deblocare prin glisare."</string> + <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"Deblocare cu model."</string> + <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"Deblocare facială."</string> + <string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"Deblocare cu PIN."</string> + <string name="keyguard_accessibility_password_unlock" msgid="7675777623912155089">"Deblocare cu parolă."</string> + <string name="keyguard_accessibility_pattern_area" msgid="7679891324509597904">"Zonă model."</string> + <string name="keyguard_accessibility_slide_area" msgid="6736064494019979544">"Zonă glisare."</string> + <!-- no translation found for keyguard_accessibility_transport_prev_description (1337286538318543555) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_next_description (7073928300444909320) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_pause_description (8455979545295224302) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_play_description (8146417789511154044) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_stop_description (7656358482980912216) --> + <skip /> + <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> + <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string> + <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> + <string name="keyboardview_keycode_alt" msgid="4856868820040051939">"Alt"</string> + <string name="keyboardview_keycode_cancel" msgid="1203984017245783244">"Anulaţi"</string> + <string name="keyboardview_keycode_delete" msgid="3337914833206635744">"Ştergeţi"</string> + <string name="keyboardview_keycode_done" msgid="1992571118466679775">"Terminat"</string> + <string name="keyboardview_keycode_mode_change" msgid="4547387741906537519">"Schimbarea modului"</string> + <string name="keyboardview_keycode_shift" msgid="2270748814315147690">"Shift"</string> + <string name="keyboardview_keycode_enter" msgid="2985864015076059467">"Enter"</string> + <string name="description_target_unlock" msgid="2228524900439801453">"Deblocaţi"</string> + <string name="description_target_camera" msgid="969071997552486814">"Cameră foto"</string> + <string name="description_target_silent" msgid="893551287746522182">"Silenţios"</string> + <string name="description_target_soundon" msgid="30052466675500172">"Sunet activat"</string> + <string name="description_target_search" msgid="3091587249776033139">"Căutaţi"</string> + <string name="description_direction_up" msgid="7169032478259485180">"Glisaţi în sus pentru <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_down" msgid="5087739728639014595">"Glisaţi în jos pentru <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_left" msgid="7207478719805562165">"Glisaţi spre stânga pentru <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_right" msgid="8034433242579600980">"Glisaţi spre dreapta pentru <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="user_switched" msgid="3768006783166984410">"Utilizator curent: <xliff:g id="NAME">%1$s</xliff:g>."</string> + <string name="kg_emergency_call_label" msgid="684946192523830531">"Apel de urgenţă"</string> + <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Model uitat"</string> + <string name="kg_wrong_pattern" msgid="1850806070801358830">"Model greşit"</string> + <string name="kg_wrong_password" msgid="2333281762128113157">"Parolă greşită"</string> + <string name="kg_wrong_pin" msgid="1131306510833563801">"Cod PIN greşit"</string> + <string name="kg_too_many_failed_attempts_countdown" msgid="6358110221603297548">"Încercaţi din nou peste <xliff:g id="NUMBER">%d</xliff:g> (de) secunde."</string> + <string name="kg_pattern_instructions" msgid="398978611683075868">"Desenaţi modelul"</string> + <string name="kg_sim_pin_instructions" msgid="2319508550934557331">"Introduceţi codul PIN al cardului SIM"</string> + <string name="kg_pin_instructions" msgid="2377242233495111557">"Introduceţi codul PIN"</string> + <string name="kg_password_instructions" msgid="5753646556186936819">"Introduceţi parola"</string> + <string name="kg_puk_enter_puk_hint" msgid="453227143861735537">"Cardul SIM este acum dezactivat. Introduceţi codul PUK pentru a continua. Contactaţi operatorul pentru mai multe detalii."</string> + <string name="kg_puk_enter_pin_hint" msgid="7871604527429602024">"Introduceţi codul PIN dorit"</string> + <string name="kg_enter_confirm_pin_hint" msgid="325676184762529976">"Confirmaţi codul PIN dorit"</string> + <string name="kg_sim_unlock_progress_dialog_message" msgid="8950398016976865762">"Se deblochează cardul SIM..."</string> + <string name="kg_password_wrong_pin_code" msgid="1139324887413846912">"Cod PIN incorect."</string> + <string name="kg_invalid_sim_pin_hint" msgid="8795159358110620001">"Introduceţi un cod PIN format din 4 până la 8 cifre."</string> + <string name="kg_invalid_sim_puk_hint" msgid="7553388325654369575">"Codul PUK trebuie să aibă minimum 8 cifre."</string> + <string name="kg_invalid_puk" msgid="3638289409676051243">"Reintroduceţi codul PUK corect. Încercările repetate vor dezactiva definitiv cardul SIM."</string> + <string name="kg_invalid_confirm_pin_hint" product="default" msgid="7003469261464593516">"Codurile PIN nu coincid"</string> + <string name="kg_login_too_many_attempts" msgid="6486842094005698475">"Prea multe încercări de desenare a modelului"</string> + <string name="kg_login_instructions" msgid="1100551261265506448">"Pentru a debloca, conectaţi-vă cu Contul dvs. Google."</string> + <string name="kg_login_username_hint" msgid="5718534272070920364">"Nume de utilizator (e-mail)"</string> + <string name="kg_login_password_hint" msgid="9057289103827298549">"Parolă"</string> + <string name="kg_login_submit_button" msgid="5355904582674054702">"Conectaţi-vă"</string> + <string name="kg_login_invalid_input" msgid="5754664119319872197">"Nume de utilizator sau parolă nevalide."</string> + <string name="kg_login_account_recovery_hint" msgid="5690709132841752974">"Aţi uitat numele de utilizator sau parola?"\n"Accesaţi "<b>"google.com/accounts/recovery"</b>"."</string> + <string name="kg_login_checking_password" msgid="1052685197710252395">"Se verifică contul…"</string> + <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="8276745642049502550">"Aţi introdus incorect codul PIN de <xliff:g id="NUMBER_0">%d</xliff:g> ori."\n\n"Încercaţi din nou peste <xliff:g id="NUMBER_1">%d</xliff:g> (de) secunde."</string> + <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="7813713389422226531">"Aţi introdus incorect parola de <xliff:g id="NUMBER_0">%d</xliff:g> ori. "\n\n"Încercaţi din nou peste <xliff:g id="NUMBER_1">%d</xliff:g> (de) secunde."</string> + <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="74089475965050805">"Aţi desenat incorect modelul pentru deblocare de <xliff:g id="NUMBER_0">%d</xliff:g> ori. "\n\n"Încercaţi din nou peste <xliff:g id="NUMBER_1">%d</xliff:g> (de) secunde."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="1575557200627128949">"Aţi efectuat <xliff:g id="NUMBER_0">%d</xliff:g> încercări incorecte de deblocare a tabletei. După încă <xliff:g id="NUMBER_1">%d</xliff:g> încercări nereuşite, aceasta va fi resetată la setările prestabilite din fabrică, iar toate datele de utilizator se vor pierde."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="4051015943038199910">"Aţi efectuat <xliff:g id="NUMBER_0">%d</xliff:g> încercări incorecte de deblocare a telefonului. După încă <xliff:g id="NUMBER_1">%d</xliff:g> încercări nereuşite, acesta va fi resetat la setările prestabilite din fabrică, iar toate datele de utilizator se vor pierde."</string> + <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2072996269148483637">"Aţi efectuat <xliff:g id="NUMBER">%d</xliff:g> încercări incorecte de deblocare a tabletei. Tableta va fi acum resetată la setările prestabilite din fabrică."</string> + <string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"Aţi efectuat <xliff:g id="NUMBER">%d</xliff:g> încercări incorecte de deblocare a telefonului. Telefonul va fi acum resetat la setările prestabilite din fabrică."</string> + <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Aţi desenat incorect modelul pentru deblocare de <xliff:g id="NUMBER_0">%d</xliff:g> ori. După încă <xliff:g id="NUMBER_1">%d</xliff:g> încercări nereuşite, vi se va solicita să deblocaţi tableta cu ajutorul unui cont de e-mail."\n\n" Încercaţi din nou peste <xliff:g id="NUMBER_2">%d</xliff:g> (de) secunde."</string> + <string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"Aţi desenat incorect modelul pentru deblocare de <xliff:g id="NUMBER_0">%d</xliff:g> ori. După încă <xliff:g id="NUMBER_1">%d</xliff:g> încercări nereuşite, vi se va solicita să deblocaţi telefonul cu ajutorul unui cont de e-mail."\n\n" Încercaţi din nou peste <xliff:g id="NUMBER_2">%d</xliff:g> (de) secunde."</string> + <string name="kg_text_message_separator" product="default" msgid="4160700433287233771">" — "</string> + <string name="kg_reordering_delete_drop_target_text" msgid="7899202978204438708">"Eliminaţi"</string> + <!-- no translation found for keyguard_transport_prev_description (8229108430245669854) --> + <skip /> + <!-- no translation found for keyguard_transport_next_description (4299258300283778305) --> + <skip /> + <!-- no translation found for keyguard_transport_pause_description (5093073338238310224) --> + <skip /> + <!-- no translation found for keyguard_transport_play_description (2924628863741150956) --> + <skip /> + <!-- no translation found for keyguard_transport_stop_description (3084179324810575787) --> + <skip /> + <!-- no translation found for keyguard_carrier_default (8700650403054042153) --> + <skip /> +</resources> diff --git a/packages/Keyguard/res/values-ru/strings.xml b/packages/Keyguard/res/values-ru/strings.xml new file mode 100644 index 000000000000..a050135d6eb2 --- /dev/null +++ b/packages/Keyguard/res/values-ru/strings.xml @@ -0,0 +1,164 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* //device/apps/common/assets/res/any/strings.xml +** +** Copyright 2006, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="keyguard_password_enter_pin_code" msgid="3037685796058495017">"Введите PIN-код"</string> + <string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Введите PUK-код и новый PIN-код"</string> + <string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK-код"</string> + <string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Новый PIN-код"</string> + <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Нажмите для ввода пароля"</font></string> + <string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Введите пароль"</string> + <string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Введите PIN-код"</string> + <string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Неверный PIN-код."</string> + <string name="keyguard_label_text" msgid="861796461028298424">"Для разблокировки нажмите \"Меню\", а затем 0."</string> + <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Все попытки войти с помощью Фейсконтроля использованы"</string> + <!-- no translation found for keyguard_charged (3272223906073492454) --> + <skip /> + <!-- no translation found for keyguard_plugged_in (8117572000639998388) --> + <skip /> + <!-- no translation found for keyguard_low_battery (8143808018719173859) --> + <skip /> + <!-- no translation found for keyguard_instructions_when_pattern_disabled (1332288268600329841) --> + <skip /> + <!-- no translation found for keyguard_network_locked_message (9169717779058037168) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message_short (494980561304211931) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (1445849005909260039) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (3481110395508637643) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions (5210891509995942250) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions_long (5968985489463870358) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_message_short (8340813989586622356) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5892940909699723544) --> + <skip /> + <!-- no translation found for keyguard_sim_locked_message (6875773413306380902) --> + <skip /> + <!-- no translation found for keyguard_sim_puk_locked_message (3747232467471801633) --> + <skip /> + <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (7975221805033614426) --> + <skip /> + <string name="keyguard_accessibility_widget_changed" msgid="5678624624681400191">"%1$s. Виджет %2$d из %3$d."</string> + <string name="keyguard_accessibility_add_widget" msgid="8273277058724924654">"Добавить виджет"</string> + <string name="keyguard_accessibility_widget_empty_slot" msgid="1281505703307930757">"Пусто"</string> + <string name="keyguard_accessibility_unlock_area_expanded" msgid="2278106022311170299">"Область разблокировки развернута"</string> + <string name="keyguard_accessibility_unlock_area_collapsed" msgid="6366992066936076396">"Область разблокировки свернута"</string> + <string name="keyguard_accessibility_widget" msgid="6527131039741808240">"Виджет \"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g>\""</string> + <string name="keyguard_accessibility_user_selector" msgid="1226798370913698896">"Выбор аккаунта"</string> + <string name="keyguard_accessibility_status" msgid="8008264603935930611">"Статус"</string> + <string name="keyguard_accessibility_camera" msgid="8904231194181114603">"Камера"</string> + <string name="keygaurd_accessibility_media_controls" msgid="262209654292161806">"Управление блокировкой"</string> + <string name="keyguard_accessibility_widget_reorder_start" msgid="8736853615588828197">"Начато переопределение порядка виджетов"</string> + <string name="keyguard_accessibility_widget_reorder_end" msgid="7170190950870468320">"Порядок виджетов определен"</string> + <string name="keyguard_accessibility_widget_deleted" msgid="4426204263929224434">"Виджет <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> удален"</string> + <string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"Развернуть области разблокировки"</string> + <string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"Прокрутка"</string> + <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"Графический ключ"</string> + <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"Фейсконтроль"</string> + <string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"PIN-код"</string> + <string name="keyguard_accessibility_password_unlock" msgid="7675777623912155089">"Пароль"</string> + <string name="keyguard_accessibility_pattern_area" msgid="7679891324509597904">"Область ввода графического ключа"</string> + <string name="keyguard_accessibility_slide_area" msgid="6736064494019979544">"Область слайдера"</string> + <!-- no translation found for keyguard_accessibility_transport_prev_description (1337286538318543555) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_next_description (7073928300444909320) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_pause_description (8455979545295224302) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_play_description (8146417789511154044) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_stop_description (7656358482980912216) --> + <skip /> + <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> + <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"АБВ"</string> + <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> + <string name="keyboardview_keycode_alt" msgid="4856868820040051939">"Клавиша ALT"</string> + <string name="keyboardview_keycode_cancel" msgid="1203984017245783244">"Отмена"</string> + <string name="keyboardview_keycode_delete" msgid="3337914833206635744">"Клавиша удаления"</string> + <string name="keyboardview_keycode_done" msgid="1992571118466679775">"Готово"</string> + <string name="keyboardview_keycode_mode_change" msgid="4547387741906537519">"Клавиша смены режима"</string> + <string name="keyboardview_keycode_shift" msgid="2270748814315147690">"Клавиша смены регистра"</string> + <string name="keyboardview_keycode_enter" msgid="2985864015076059467">"Клавиша ввода"</string> + <string name="description_target_unlock" msgid="2228524900439801453">"Разблокировать"</string> + <string name="description_target_camera" msgid="969071997552486814">"Камера"</string> + <string name="description_target_silent" msgid="893551287746522182">"Без звука"</string> + <string name="description_target_soundon" msgid="30052466675500172">"Включить звук"</string> + <string name="description_target_search" msgid="3091587249776033139">"Поиск"</string> + <string name="description_direction_up" msgid="7169032478259485180">"Проведите вверх, чтобы <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_down" msgid="5087739728639014595">"Проведите вниз, чтобы <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_left" msgid="7207478719805562165">"Проведите влево, чтобы <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_right" msgid="8034433242579600980">"Проведите вправо, чтобы <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="user_switched" msgid="3768006783166984410">"Выбран аккаунт пользователя <xliff:g id="NAME">%1$s</xliff:g>."</string> + <string name="kg_emergency_call_label" msgid="684946192523830531">"Экстренный вызов"</string> + <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Забыли графический ключ?"</string> + <string name="kg_wrong_pattern" msgid="1850806070801358830">"Неправильный графический ключ"</string> + <string name="kg_wrong_password" msgid="2333281762128113157">"Неправильный пароль"</string> + <string name="kg_wrong_pin" msgid="1131306510833563801">"Неправильный PIN-код"</string> + <string name="kg_too_many_failed_attempts_countdown" msgid="6358110221603297548">"Повторите попытку через <xliff:g id="NUMBER">%d</xliff:g> сек."</string> + <string name="kg_pattern_instructions" msgid="398978611683075868">"Введите графический ключ"</string> + <string name="kg_sim_pin_instructions" msgid="2319508550934557331">"Введите PIN-код SIM-карты"</string> + <string name="kg_pin_instructions" msgid="2377242233495111557">"Введите PIN"</string> + <string name="kg_password_instructions" msgid="5753646556186936819">"Введите пароль"</string> + <string name="kg_puk_enter_puk_hint" msgid="453227143861735537">"SIM-карта заблокирована. Чтобы продолжить, введите PUK-код. За подробной информацией обратитесь к своему оператору связи."</string> + <string name="kg_puk_enter_pin_hint" msgid="7871604527429602024">"Введите желаемый PIN-код"</string> + <string name="kg_enter_confirm_pin_hint" msgid="325676184762529976">"Введите PIN-код ещё раз"</string> + <string name="kg_sim_unlock_progress_dialog_message" msgid="8950398016976865762">"Разблокировка SIM-карты…"</string> + <string name="kg_password_wrong_pin_code" msgid="1139324887413846912">"Неверный PIN-код."</string> + <string name="kg_invalid_sim_pin_hint" msgid="8795159358110620001">"Введите PIN-код (от 4 до 8 цифр)."</string> + <string name="kg_invalid_sim_puk_hint" msgid="7553388325654369575">"PUK-код должен содержать не менее 8 символов."</string> + <string name="kg_invalid_puk" msgid="3638289409676051243">"Введите правильный PUK-код. После нескольких неудачных попыток SIM-карта будет заблокирована."</string> + <string name="kg_invalid_confirm_pin_hint" product="default" msgid="7003469261464593516">"PIN-коды не совпадают"</string> + <string name="kg_login_too_many_attempts" msgid="6486842094005698475">"Слишком много попыток ввода графического ключа"</string> + <string name="kg_login_instructions" msgid="1100551261265506448">"Чтобы разблокировать устройство, войдите в свой аккаунт Google."</string> + <string name="kg_login_username_hint" msgid="5718534272070920364">"Имя пользователя (эл. почта)"</string> + <string name="kg_login_password_hint" msgid="9057289103827298549">"Пароль"</string> + <string name="kg_login_submit_button" msgid="5355904582674054702">"Войти"</string> + <string name="kg_login_invalid_input" msgid="5754664119319872197">"Неверное имя пользователя или пароль."</string> + <string name="kg_login_account_recovery_hint" msgid="5690709132841752974">"Забыли имя пользователя или пароль?"\n"Перейдите на страницу "<b>"google.com/accounts/recovery"</b>"."</string> + <string name="kg_login_checking_password" msgid="1052685197710252395">"Проверка данных…"</string> + <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="8276745642049502550">"Вы <xliff:g id="NUMBER_0">%d</xliff:g> раз неверно указали PIN-код. "\n\n"Повтор через <xliff:g id="NUMBER_1">%d</xliff:g> сек."</string> + <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="7813713389422226531">"Вы <xliff:g id="NUMBER_0">%d</xliff:g> раз неверно указали пароль."\n\n"Повтор через <xliff:g id="NUMBER_1">%d</xliff:g> сек."</string> + <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="74089475965050805">"Вы <xliff:g id="NUMBER_0">%d</xliff:g> раз неверно указали графический ключ."\n\n"Повтор через <xliff:g id="NUMBER_1">%d</xliff:g> сек."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="1575557200627128949">"Вы <xliff:g id="NUMBER_0">%d</xliff:g> раз не смогли разблокировать планшетный ПК. После <xliff:g id="NUMBER_1">%d</xliff:g> неверных попыток будут восстановлены заводские настройки, что приведет к удалению всех пользовательских данных."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="4051015943038199910">"Вы <xliff:g id="NUMBER_0">%d</xliff:g> раз не смогли разблокировать телефон. После <xliff:g id="NUMBER_1">%d</xliff:g> неверных попыток будут восстановлены заводские настройки, что приведет к удалению всех пользовательских данных."</string> + <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2072996269148483637">"Вы <xliff:g id="NUMBER">%d</xliff:g> раз не смогли разблокировать планшетный ПК. Будут восстановлены заводские настройки."</string> + <string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"Вы <xliff:g id="NUMBER">%d</xliff:g> раз не смогли разблокировать телефон. Будут восстановлены заводские настройки."</string> + <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Вы <xliff:g id="NUMBER_0">%d</xliff:g> раз неверно указали графический ключ. После <xliff:g id="NUMBER_1">%d</xliff:g> неверных попыток для разблокировки планшетного ПК потребуется войти в аккаунт Google."\n\n"Повтор через <xliff:g id="NUMBER_2">%d</xliff:g> сек."</string> + <string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"Вы <xliff:g id="NUMBER_0">%d</xliff:g> раз неверно указали графический ключ. После <xliff:g id="NUMBER_1">%d</xliff:g> неверных попыток для разблокировки телефона потребуется войти в аккаунт Google."\n\n"Повтор через <xliff:g id="NUMBER_2">%d</xliff:g> сек."</string> + <string name="kg_text_message_separator" product="default" msgid="4160700433287233771">" – "</string> + <string name="kg_reordering_delete_drop_target_text" msgid="7899202978204438708">"Удалить"</string> + <!-- no translation found for keyguard_transport_prev_description (8229108430245669854) --> + <skip /> + <!-- no translation found for keyguard_transport_next_description (4299258300283778305) --> + <skip /> + <!-- no translation found for keyguard_transport_pause_description (5093073338238310224) --> + <skip /> + <!-- no translation found for keyguard_transport_play_description (2924628863741150956) --> + <skip /> + <!-- no translation found for keyguard_transport_stop_description (3084179324810575787) --> + <skip /> + <!-- no translation found for keyguard_carrier_default (8700650403054042153) --> + <skip /> +</resources> diff --git a/packages/Keyguard/res/values-sk/strings.xml b/packages/Keyguard/res/values-sk/strings.xml new file mode 100644 index 000000000000..988c3a462962 --- /dev/null +++ b/packages/Keyguard/res/values-sk/strings.xml @@ -0,0 +1,164 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* //device/apps/common/assets/res/any/strings.xml +** +** Copyright 2006, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="keyguard_password_enter_pin_code" msgid="3037685796058495017">"Zadajte kód PIN"</string> + <string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Zadajte kód PUK a nový kód PIN"</string> + <string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"Kód PUK"</string> + <string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Nový kód PIN"</string> + <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Dotknutím zadajte heslo"</font></string> + <string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Zadajte heslo na odomknutie"</string> + <string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Zadajte kód PIN na odomknutie"</string> + <string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Nesprávny kód PIN."</string> + <string name="keyguard_label_text" msgid="861796461028298424">"Ak chcete telefón odomknúť, stlačte Menu a následne 0."</string> + <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Prekročili ste maximálny povolený počet pokusov o odomknutie tvárou"</string> + <!-- no translation found for keyguard_charged (3272223906073492454) --> + <skip /> + <!-- no translation found for keyguard_plugged_in (8117572000639998388) --> + <skip /> + <!-- no translation found for keyguard_low_battery (8143808018719173859) --> + <skip /> + <!-- no translation found for keyguard_instructions_when_pattern_disabled (1332288268600329841) --> + <skip /> + <!-- no translation found for keyguard_network_locked_message (9169717779058037168) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message_short (494980561304211931) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (1445849005909260039) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (3481110395508637643) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions (5210891509995942250) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions_long (5968985489463870358) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_message_short (8340813989586622356) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5892940909699723544) --> + <skip /> + <!-- no translation found for keyguard_sim_locked_message (6875773413306380902) --> + <skip /> + <!-- no translation found for keyguard_sim_puk_locked_message (3747232467471801633) --> + <skip /> + <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (7975221805033614426) --> + <skip /> + <string name="keyguard_accessibility_widget_changed" msgid="5678624624681400191">"%1$s. Miniaplikácia %2$d z %3$d."</string> + <string name="keyguard_accessibility_add_widget" msgid="8273277058724924654">"Pridať miniaplikáciu."</string> + <string name="keyguard_accessibility_widget_empty_slot" msgid="1281505703307930757">"Prázdne"</string> + <string name="keyguard_accessibility_unlock_area_expanded" msgid="2278106022311170299">"Oblasť na odomknutie bola rozšírená."</string> + <string name="keyguard_accessibility_unlock_area_collapsed" msgid="6366992066936076396">"Oblasť na odomknutie bola zúžená."</string> + <string name="keyguard_accessibility_widget" msgid="6527131039741808240">"Miniaplikácia <xliff:g id="WIDGET_INDEX">%1$s</xliff:g>."</string> + <string name="keyguard_accessibility_user_selector" msgid="1226798370913698896">"Výber používateľa"</string> + <string name="keyguard_accessibility_status" msgid="8008264603935930611">"Stav"</string> + <string name="keyguard_accessibility_camera" msgid="8904231194181114603">"Fotoaparát"</string> + <string name="keygaurd_accessibility_media_controls" msgid="262209654292161806">"Ovládacie prvky médií"</string> + <string name="keyguard_accessibility_widget_reorder_start" msgid="8736853615588828197">"Zmena usporiadania miniaplikácií sa začala."</string> + <string name="keyguard_accessibility_widget_reorder_end" msgid="7170190950870468320">"Zmena usporiadania miniaplikácií sa skončila."</string> + <string name="keyguard_accessibility_widget_deleted" msgid="4426204263929224434">"Miniaplikácia <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> bola odstránená."</string> + <string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"Rozšíriť oblasť na odomknutie."</string> + <string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"Odomknutie prejdením prstom."</string> + <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"Odomknutie vzorom."</string> + <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"Odomknutie tvárou."</string> + <string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"Odomknutie kódom PIN."</string> + <string name="keyguard_accessibility_password_unlock" msgid="7675777623912155089">"Odomknutie heslom."</string> + <string name="keyguard_accessibility_pattern_area" msgid="7679891324509597904">"Oblasť na zadanie bezpečnostného vzoru."</string> + <string name="keyguard_accessibility_slide_area" msgid="6736064494019979544">"Oblasť na prejdenie prstom."</string> + <!-- no translation found for keyguard_accessibility_transport_prev_description (1337286538318543555) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_next_description (7073928300444909320) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_pause_description (8455979545295224302) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_play_description (8146417789511154044) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_stop_description (7656358482980912216) --> + <skip /> + <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> + <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string> + <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> + <string name="keyboardview_keycode_alt" msgid="4856868820040051939">"Alt"</string> + <string name="keyboardview_keycode_cancel" msgid="1203984017245783244">"Zrušiť"</string> + <string name="keyboardview_keycode_delete" msgid="3337914833206635744">"Odstrániť"</string> + <string name="keyboardview_keycode_done" msgid="1992571118466679775">"Hotovo"</string> + <string name="keyboardview_keycode_mode_change" msgid="4547387741906537519">"Zmena režimu"</string> + <string name="keyboardview_keycode_shift" msgid="2270748814315147690">"Shift"</string> + <string name="keyboardview_keycode_enter" msgid="2985864015076059467">"Enter"</string> + <string name="description_target_unlock" msgid="2228524900439801453">"Odomknúť"</string> + <string name="description_target_camera" msgid="969071997552486814">"Fotoaparát"</string> + <string name="description_target_silent" msgid="893551287746522182">"Tichý"</string> + <string name="description_target_soundon" msgid="30052466675500172">"Zapnúť zvuk"</string> + <string name="description_target_search" msgid="3091587249776033139">"Vyhľadávanie"</string> + <string name="description_direction_up" msgid="7169032478259485180">"Prejdite prstom nahor: <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_down" msgid="5087739728639014595">"Prejdite prstom nadol: <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_left" msgid="7207478719805562165">"Prejdite prstom doľava: <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_right" msgid="8034433242579600980">"Prejdite prstom doprava: <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="user_switched" msgid="3768006783166984410">"Aktuálny používateľ je <xliff:g id="NAME">%1$s</xliff:g>."</string> + <string name="kg_emergency_call_label" msgid="684946192523830531">"Tiesňové volanie"</string> + <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Nepamätám si vzor"</string> + <string name="kg_wrong_pattern" msgid="1850806070801358830">"Nesprávny vzor"</string> + <string name="kg_wrong_password" msgid="2333281762128113157">"Nesprávne heslo"</string> + <string name="kg_wrong_pin" msgid="1131306510833563801">"Nesprávny kód PIN"</string> + <string name="kg_too_many_failed_attempts_countdown" msgid="6358110221603297548">"Skúste to znova o <xliff:g id="NUMBER">%d</xliff:g> s."</string> + <string name="kg_pattern_instructions" msgid="398978611683075868">"Nakreslite svoj vzor"</string> + <string name="kg_sim_pin_instructions" msgid="2319508550934557331">"Zadajte kód PIN karty SIM"</string> + <string name="kg_pin_instructions" msgid="2377242233495111557">"Zadajte kód PIN"</string> + <string name="kg_password_instructions" msgid="5753646556186936819">"Zadajte heslo"</string> + <string name="kg_puk_enter_puk_hint" msgid="453227143861735537">"Karta SIM je teraz zakázaná. Ak chcete pokračovať, zadajte kód PUK. Podrobné informácie získate od operátora."</string> + <string name="kg_puk_enter_pin_hint" msgid="7871604527429602024">"Zadajte požadovaný kód PIN"</string> + <string name="kg_enter_confirm_pin_hint" msgid="325676184762529976">"Potvrďte požadovaný kód PIN"</string> + <string name="kg_sim_unlock_progress_dialog_message" msgid="8950398016976865762">"Prebieha odomykanie karty SIM..."</string> + <string name="kg_password_wrong_pin_code" msgid="1139324887413846912">"Nesprávny kód PIN."</string> + <string name="kg_invalid_sim_pin_hint" msgid="8795159358110620001">"Zadajte kód PIN s dĺžkou 4 až 8 číslic."</string> + <string name="kg_invalid_sim_puk_hint" msgid="7553388325654369575">"Kód PUK musí obsahovať 8 alebo viac číslic."</string> + <string name="kg_invalid_puk" msgid="3638289409676051243">"Znova zadajte správny kód PUK. Opakované pokusy zakážu kartu SIM natrvalo."</string> + <string name="kg_invalid_confirm_pin_hint" product="default" msgid="7003469261464593516">"Kódy PIN sa nezhodujú"</string> + <string name="kg_login_too_many_attempts" msgid="6486842094005698475">"Príliš veľa pokusov o nakreslenie vzoru"</string> + <string name="kg_login_instructions" msgid="1100551261265506448">"Ak chcete telefón odomknúť, prihláste sa pomocou svojho účtu Google."</string> + <string name="kg_login_username_hint" msgid="5718534272070920364">"Používateľské meno (e-mail)"</string> + <string name="kg_login_password_hint" msgid="9057289103827298549">"Heslo"</string> + <string name="kg_login_submit_button" msgid="5355904582674054702">"Prihlásiť sa"</string> + <string name="kg_login_invalid_input" msgid="5754664119319872197">"Neplatné používateľské meno alebo heslo."</string> + <string name="kg_login_account_recovery_hint" msgid="5690709132841752974">"Zabudli ste svoje používateľské meno alebo heslo?"\n" Navštívte stránky "<b>"google.com/accounts/recovery"</b>"."</string> + <string name="kg_login_checking_password" msgid="1052685197710252395">"Prebieha kontrola účtu..."</string> + <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="8276745642049502550">"<xliff:g id="NUMBER_0">%d</xliff:g>-krát ste zadali nesprávny kód PIN. "\n\n"Skúste to znova o <xliff:g id="NUMBER_1">%d</xliff:g> s."</string> + <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="7813713389422226531">"<xliff:g id="NUMBER_0">%d</xliff:g>-krát ste zadali nesprávne heslo. "\n\n"Skúste to znova o <xliff:g id="NUMBER_1">%d</xliff:g>."</string> + <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="74089475965050805">"<xliff:g id="NUMBER_0">%d</xliff:g>-krát ste použili nesprávny bezpečnostný vzor. "\n\n"Skúste to znova o <xliff:g id="NUMBER_1">%d</xliff:g> s."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="1575557200627128949">"Tablet ste sa pokúsili odomknúť nesprávnym spôsobom <xliff:g id="NUMBER_0">%d</xliff:g>-krát. Po <xliff:g id="NUMBER_1">%d</xliff:g> ďalších neúspešných pokusoch sa v tablete obnovia predvolené továrenské nastavenia a všetky používateľské údaje budú stratené."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="4051015943038199910">"Telefón ste sa pokúsili odomknúť nesprávnym spôsobom <xliff:g id="NUMBER_0">%d</xliff:g>-krát. Po <xliff:g id="NUMBER_1">%d</xliff:g> ďalších neúspešných pokusoch sa v telefóne obnovia predvolené továrenské nastavenia a všetky používateľské údaje budú stratené."</string> + <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2072996269148483637">"Tablet ste sa pokúsili odomknúť nesprávnym spôsobom <xliff:g id="NUMBER">%d</xliff:g>-krát. V tablete sa teraz obnovia predvolené továrenské nastavenia."</string> + <string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"Telefón ste sa pokúsili odomknúť nesprávnym spôsobom <xliff:g id="NUMBER">%d</xliff:g>-krát. V telefóne sa teraz obnovia predvolené továrenské nastavenia."</string> + <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"<xliff:g id="NUMBER_0">%d</xliff:g>-krát ste nesprávne nakreslili svoj bezpečnostný vzor. Po ďalších <xliff:g id="NUMBER_1">%d</xliff:g> neúspešných pokusoch sa zobrazí výzva na odomknutie tabletu pomocou e-mailového účtu."\n\n" Skúste to znova o <xliff:g id="NUMBER_2">%d</xliff:g> s."</string> + <string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"<xliff:g id="NUMBER_0">%d</xliff:g>-krát ste nesprávne nakreslili svoj bezpečnostný vzor. Po <xliff:g id="NUMBER_1">%d</xliff:g> ďalších neúspešných pokusoch sa zobrazí výzva na odomknutie telefónu pomocou e-mailového účtu."\n\n" Skúste to znova o <xliff:g id="NUMBER_2">%d</xliff:g> s."</string> + <string name="kg_text_message_separator" product="default" msgid="4160700433287233771">" — "</string> + <string name="kg_reordering_delete_drop_target_text" msgid="7899202978204438708">"Odstrániť"</string> + <!-- no translation found for keyguard_transport_prev_description (8229108430245669854) --> + <skip /> + <!-- no translation found for keyguard_transport_next_description (4299258300283778305) --> + <skip /> + <!-- no translation found for keyguard_transport_pause_description (5093073338238310224) --> + <skip /> + <!-- no translation found for keyguard_transport_play_description (2924628863741150956) --> + <skip /> + <!-- no translation found for keyguard_transport_stop_description (3084179324810575787) --> + <skip /> + <!-- no translation found for keyguard_carrier_default (8700650403054042153) --> + <skip /> +</resources> diff --git a/packages/Keyguard/res/values-sl/strings.xml b/packages/Keyguard/res/values-sl/strings.xml new file mode 100644 index 000000000000..6d1cc983f71d --- /dev/null +++ b/packages/Keyguard/res/values-sl/strings.xml @@ -0,0 +1,164 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* //device/apps/common/assets/res/any/strings.xml +** +** Copyright 2006, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="keyguard_password_enter_pin_code" msgid="3037685796058495017">"Vnesite kodo PIN"</string> + <string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Vnesite kodo PUK in novo kodo PIN"</string> + <string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"Koda PUK"</string> + <string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Nova koda PIN"</string> + <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Dotaknite se za vnos gesla"</font></string> + <string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Vnesite geslo za odklepanje"</string> + <string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Vnesite PIN za odklepanje"</string> + <string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Napačna koda PIN."</string> + <string name="keyguard_label_text" msgid="861796461028298424">"Če želite telefon odkleniti, pritisnite meni in nato 0."</string> + <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Presegli ste dovoljeno število poskusov odklepanja z obrazom"</string> + <!-- no translation found for keyguard_charged (3272223906073492454) --> + <skip /> + <!-- no translation found for keyguard_plugged_in (8117572000639998388) --> + <skip /> + <!-- no translation found for keyguard_low_battery (8143808018719173859) --> + <skip /> + <!-- no translation found for keyguard_instructions_when_pattern_disabled (1332288268600329841) --> + <skip /> + <!-- no translation found for keyguard_network_locked_message (9169717779058037168) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message_short (494980561304211931) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (1445849005909260039) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (3481110395508637643) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions (5210891509995942250) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions_long (5968985489463870358) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_message_short (8340813989586622356) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5892940909699723544) --> + <skip /> + <!-- no translation found for keyguard_sim_locked_message (6875773413306380902) --> + <skip /> + <!-- no translation found for keyguard_sim_puk_locked_message (3747232467471801633) --> + <skip /> + <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (7975221805033614426) --> + <skip /> + <string name="keyguard_accessibility_widget_changed" msgid="5678624624681400191">"%1$s. Pripomoček %2$d za %3$d."</string> + <string name="keyguard_accessibility_add_widget" msgid="8273277058724924654">"Dodajanje pripomočka."</string> + <string name="keyguard_accessibility_widget_empty_slot" msgid="1281505703307930757">"Prazno"</string> + <string name="keyguard_accessibility_unlock_area_expanded" msgid="2278106022311170299">"Območje odklepanja razširjeno."</string> + <string name="keyguard_accessibility_unlock_area_collapsed" msgid="6366992066936076396">"Območje odklepanja strnjeno."</string> + <string name="keyguard_accessibility_widget" msgid="6527131039741808240">"Pripomoček <xliff:g id="WIDGET_INDEX">%1$s</xliff:g>."</string> + <string name="keyguard_accessibility_user_selector" msgid="1226798370913698896">"Izbirnik uporabnika"</string> + <string name="keyguard_accessibility_status" msgid="8008264603935930611">"Stanje"</string> + <string name="keyguard_accessibility_camera" msgid="8904231194181114603">"Fotoaparat"</string> + <string name="keygaurd_accessibility_media_controls" msgid="262209654292161806">"Kontrolniki predstavnosti"</string> + <string name="keyguard_accessibility_widget_reorder_start" msgid="8736853615588828197">"Prerazporejanje pripomočkov začeto."</string> + <string name="keyguard_accessibility_widget_reorder_end" msgid="7170190950870468320">"Prerazporejanje pripomočkov končano."</string> + <string name="keyguard_accessibility_widget_deleted" msgid="4426204263929224434">"Pripomoček <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> izbrisan."</string> + <string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"Razširitev območja odklepanja."</string> + <string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"Odklepanje s podrsanjem."</string> + <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"Odklepanje z vzorcem."</string> + <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"Odklepanje z obrazom."</string> + <string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"Odklepanje s kodo PIN."</string> + <string name="keyguard_accessibility_password_unlock" msgid="7675777623912155089">"Odklepanje z geslom."</string> + <string name="keyguard_accessibility_pattern_area" msgid="7679891324509597904">"Območje vzorca."</string> + <string name="keyguard_accessibility_slide_area" msgid="6736064494019979544">"Območje podrsanja."</string> + <!-- no translation found for keyguard_accessibility_transport_prev_description (1337286538318543555) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_next_description (7073928300444909320) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_pause_description (8455979545295224302) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_play_description (8146417789511154044) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_stop_description (7656358482980912216) --> + <skip /> + <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> + <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string> + <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> + <string name="keyboardview_keycode_alt" msgid="4856868820040051939">"Tipka Alt"</string> + <string name="keyboardview_keycode_cancel" msgid="1203984017245783244">"Prekliči"</string> + <string name="keyboardview_keycode_delete" msgid="3337914833206635744">"Tipka Delete"</string> + <string name="keyboardview_keycode_done" msgid="1992571118466679775">"Končano"</string> + <string name="keyboardview_keycode_mode_change" msgid="4547387741906537519">"Sprememba načina"</string> + <string name="keyboardview_keycode_shift" msgid="2270748814315147690">"Tipka Shift"</string> + <string name="keyboardview_keycode_enter" msgid="2985864015076059467">"Tipka Enter"</string> + <string name="description_target_unlock" msgid="2228524900439801453">"Odkleni"</string> + <string name="description_target_camera" msgid="969071997552486814">"Fotoaparat"</string> + <string name="description_target_silent" msgid="893551287746522182">"Tiho"</string> + <string name="description_target_soundon" msgid="30052466675500172">"Vklopljen zvok"</string> + <string name="description_target_search" msgid="3091587249776033139">"Iskanje"</string> + <string name="description_direction_up" msgid="7169032478259485180">"Povlecite navzgor za <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_down" msgid="5087739728639014595">"Povlecite navzdol za <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_left" msgid="7207478719805562165">"Povlecite v levo za <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> ."</string> + <string name="description_direction_right" msgid="8034433242579600980">"Povlecite v desno za <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="user_switched" msgid="3768006783166984410">"Trenutni uporabnik <xliff:g id="NAME">%1$s</xliff:g>."</string> + <string name="kg_emergency_call_label" msgid="684946192523830531">"Klic v sili"</string> + <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Pozabljen vzorec"</string> + <string name="kg_wrong_pattern" msgid="1850806070801358830">"Napačen vzorec"</string> + <string name="kg_wrong_password" msgid="2333281762128113157">"Napačno geslo"</string> + <string name="kg_wrong_pin" msgid="1131306510833563801">"Napačen PIN"</string> + <string name="kg_too_many_failed_attempts_countdown" msgid="6358110221603297548">"Čez <xliff:g id="NUMBER">%d</xliff:g> sekund poskusite znova."</string> + <string name="kg_pattern_instructions" msgid="398978611683075868">"Narišite vzorec"</string> + <string name="kg_sim_pin_instructions" msgid="2319508550934557331">"Vnesite PIN za kartico SIM"</string> + <string name="kg_pin_instructions" msgid="2377242233495111557">"Vnesite PIN"</string> + <string name="kg_password_instructions" msgid="5753646556186936819">"Vnesite geslo"</string> + <string name="kg_puk_enter_puk_hint" msgid="453227143861735537">"Kartica SIM je onemogočena. Če želite nadaljevati, vnesite kodo PUK. Za dodatne informacije se obrnite na operaterja."</string> + <string name="kg_puk_enter_pin_hint" msgid="7871604527429602024">"Vnesite želeno kodo PIN"</string> + <string name="kg_enter_confirm_pin_hint" msgid="325676184762529976">"Potrdite želeno kodo PIN"</string> + <string name="kg_sim_unlock_progress_dialog_message" msgid="8950398016976865762">"Odklepanje kartice SIM ..."</string> + <string name="kg_password_wrong_pin_code" msgid="1139324887413846912">"Napačna koda PIN."</string> + <string name="kg_invalid_sim_pin_hint" msgid="8795159358110620001">"Vnesite PIN, ki vsebuje od štiri do osem številk."</string> + <string name="kg_invalid_sim_puk_hint" msgid="7553388325654369575">"Koda PUK mora vsebovati 8 ali več števk."</string> + <string name="kg_invalid_puk" msgid="3638289409676051243">"Vnovič vnesite pravilno kodo PUK. Večkratni poskusi bodo trajno onemogočili kartico SIM."</string> + <string name="kg_invalid_confirm_pin_hint" product="default" msgid="7003469261464593516">"Kodi PIN se ne ujemata"</string> + <string name="kg_login_too_many_attempts" msgid="6486842094005698475">"Preveč poskusov vzorca"</string> + <string name="kg_login_instructions" msgid="1100551261265506448">"Če želite odkleniti napravo, se prijavite z Google Računom."</string> + <string name="kg_login_username_hint" msgid="5718534272070920364">"Uporabniško ime (e-pošta)"</string> + <string name="kg_login_password_hint" msgid="9057289103827298549">"Geslo"</string> + <string name="kg_login_submit_button" msgid="5355904582674054702">"Prijava"</string> + <string name="kg_login_invalid_input" msgid="5754664119319872197">"Neveljavno uporabniško ime ali geslo."</string> + <string name="kg_login_account_recovery_hint" msgid="5690709132841752974">"Ali ste pozabili uporabniško ime ali geslo?"\n"Obiščite "<b>"google.com/accounts/recovery"</b>"."</string> + <string name="kg_login_checking_password" msgid="1052685197710252395">"Preverjanje računa ..."</string> + <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="8276745642049502550">"PIN ste <xliff:g id="NUMBER_0">%d</xliff:g>-krat vnesli napačno. "\n\n"Znova poskusite čez <xliff:g id="NUMBER_1">%d</xliff:g> s."</string> + <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="7813713389422226531">"Geslo ste <xliff:g id="NUMBER_0">%d</xliff:g>-krat vnesli napačno. "\n\n"Znova poskusite čez <xliff:g id="NUMBER_1">%d</xliff:g> s."</string> + <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="74089475965050805">"Vzorec za odklepanje ste nepravilno narisali <xliff:g id="NUMBER_0">%d</xliff:g>-krat. "\n\n"Poskusite znova čez <xliff:g id="NUMBER_1">%d</xliff:g> s."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="1575557200627128949">"Tablični računalnik ste poskusili <xliff:g id="NUMBER_0">%d</xliff:g>-krat napačno odkleniti. Če poskusite še <xliff:g id="NUMBER_1">%d</xliff:g>-krat in ne uspete, bo ponastavljen na privzete tovarniške nastavitve in vsi uporabniški podatki bodo izgubljeni."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="4051015943038199910">"Telefon ste poskusili <xliff:g id="NUMBER_0">%d</xliff:g>-krat napačno odkleniti. Če poskusite še <xliff:g id="NUMBER_1">%d</xliff:g>-krat in ne uspete, bo ponastavljen na privzete tovarniške nastavitve in vsi uporabniški podatki bodo izgubljeni."</string> + <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2072996269148483637">"Tablični računalnik ste poskusili <xliff:g id="NUMBER">%d</xliff:g>-krat napačno odkleniti, zato bo ponastavljen na privzete tovarniške nastavitve."</string> + <string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"Telefon ste poskusili <xliff:g id="NUMBER">%d</xliff:g>-krat napačno odkleniti, zato bo ponastavljen na privzete tovarniške nastavitve."</string> + <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Vzorec za odklepanje ste <xliff:g id="NUMBER_0">%d</xliff:g>-krat napačno vnesli. Po nadaljnjih <xliff:g id="NUMBER_1">%d</xliff:g> neuspešnih poskusih boste pozvani, da tablični računalnik odklenete z e-poštnim računom."\n\n"Poskusite znova čez <xliff:g id="NUMBER_2">%d</xliff:g> s."</string> + <string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"Vzorec za odklepanje ste <xliff:g id="NUMBER_0">%d</xliff:g>-krat napačno vnesli. Po nadaljnjih <xliff:g id="NUMBER_1">%d</xliff:g> neuspešnih poskusih boste pozvani, da odklenete telefon z Googlovimi podatki za prijavo."\n\n"Poskusite znova čez <xliff:g id="NUMBER_2">%d</xliff:g> s."</string> + <string name="kg_text_message_separator" product="default" msgid="4160700433287233771">" – "</string> + <string name="kg_reordering_delete_drop_target_text" msgid="7899202978204438708">"Odstrani"</string> + <!-- no translation found for keyguard_transport_prev_description (8229108430245669854) --> + <skip /> + <!-- no translation found for keyguard_transport_next_description (4299258300283778305) --> + <skip /> + <!-- no translation found for keyguard_transport_pause_description (5093073338238310224) --> + <skip /> + <!-- no translation found for keyguard_transport_play_description (2924628863741150956) --> + <skip /> + <!-- no translation found for keyguard_transport_stop_description (3084179324810575787) --> + <skip /> + <!-- no translation found for keyguard_carrier_default (8700650403054042153) --> + <skip /> +</resources> diff --git a/packages/Keyguard/res/values-sr/strings.xml b/packages/Keyguard/res/values-sr/strings.xml new file mode 100644 index 000000000000..12fda6d683d5 --- /dev/null +++ b/packages/Keyguard/res/values-sr/strings.xml @@ -0,0 +1,164 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* //device/apps/common/assets/res/any/strings.xml +** +** Copyright 2006, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="keyguard_password_enter_pin_code" msgid="3037685796058495017">"Унесите PIN кôд"</string> + <string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Унесите PUK и нови PIN кôд"</string> + <string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK кôд"</string> + <string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Нови PIN кôд"</string> + <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Додирните да бисте унели лозинку"</font></string> + <string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Откуцајте лозинку да бисте откључали"</string> + <string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Унесите PIN за откључавање"</string> + <string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"PIN кôд је нетачан."</string> + <string name="keyguard_label_text" msgid="861796461028298424">"Да бисте откључали, притисните „Мени“, а затим 0."</string> + <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Премашен је највећи дозвољени број покушаја Откључавања лицем"</string> + <!-- no translation found for keyguard_charged (3272223906073492454) --> + <skip /> + <!-- no translation found for keyguard_plugged_in (8117572000639998388) --> + <skip /> + <!-- no translation found for keyguard_low_battery (8143808018719173859) --> + <skip /> + <!-- no translation found for keyguard_instructions_when_pattern_disabled (1332288268600329841) --> + <skip /> + <!-- no translation found for keyguard_network_locked_message (9169717779058037168) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message_short (494980561304211931) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (1445849005909260039) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (3481110395508637643) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions (5210891509995942250) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions_long (5968985489463870358) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_message_short (8340813989586622356) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5892940909699723544) --> + <skip /> + <!-- no translation found for keyguard_sim_locked_message (6875773413306380902) --> + <skip /> + <!-- no translation found for keyguard_sim_puk_locked_message (3747232467471801633) --> + <skip /> + <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (7975221805033614426) --> + <skip /> + <string name="keyguard_accessibility_widget_changed" msgid="5678624624681400191">"%1$s. Виџет %2$d од %3$d."</string> + <string name="keyguard_accessibility_add_widget" msgid="8273277058724924654">"Додај виџет."</string> + <string name="keyguard_accessibility_widget_empty_slot" msgid="1281505703307930757">"Празно"</string> + <string name="keyguard_accessibility_unlock_area_expanded" msgid="2278106022311170299">"Област откључавања је проширена."</string> + <string name="keyguard_accessibility_unlock_area_collapsed" msgid="6366992066936076396">"Област откључавања је скупљена."</string> + <string name="keyguard_accessibility_widget" msgid="6527131039741808240">"Виџет <xliff:g id="WIDGET_INDEX">%1$s</xliff:g>."</string> + <string name="keyguard_accessibility_user_selector" msgid="1226798370913698896">"Избор корисника"</string> + <string name="keyguard_accessibility_status" msgid="8008264603935930611">"Статус"</string> + <string name="keyguard_accessibility_camera" msgid="8904231194181114603">"Камера"</string> + <string name="keygaurd_accessibility_media_controls" msgid="262209654292161806">"Контроле за медије"</string> + <string name="keyguard_accessibility_widget_reorder_start" msgid="8736853615588828197">"Започела је промена редоследа виџета."</string> + <string name="keyguard_accessibility_widget_reorder_end" msgid="7170190950870468320">"Промена редоследа виџета је завршена."</string> + <string name="keyguard_accessibility_widget_deleted" msgid="4426204263929224434">"Виџет <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> је избрисан."</string> + <string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"Прошири област откључавања."</string> + <string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"Откључавање превлачењем."</string> + <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"Откључавање шаблоном."</string> + <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"Откључавање лицем."</string> + <string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"Откључавање PIN-ом."</string> + <string name="keyguard_accessibility_password_unlock" msgid="7675777623912155089">"Откључавање лозинком."</string> + <string name="keyguard_accessibility_pattern_area" msgid="7679891324509597904">"Област шаблона."</string> + <string name="keyguard_accessibility_slide_area" msgid="6736064494019979544">"Област превлачења."</string> + <!-- no translation found for keyguard_accessibility_transport_prev_description (1337286538318543555) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_next_description (7073928300444909320) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_pause_description (8455979545295224302) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_play_description (8146417789511154044) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_stop_description (7656358482980912216) --> + <skip /> + <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> + <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string> + <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> + <string name="keyboardview_keycode_alt" msgid="4856868820040051939">"Alt"</string> + <string name="keyboardview_keycode_cancel" msgid="1203984017245783244">"Откажи"</string> + <string name="keyboardview_keycode_delete" msgid="3337914833206635744">"Избриши"</string> + <string name="keyboardview_keycode_done" msgid="1992571118466679775">"Готово"</string> + <string name="keyboardview_keycode_mode_change" msgid="4547387741906537519">"Промена режима"</string> + <string name="keyboardview_keycode_shift" msgid="2270748814315147690">"Shift"</string> + <string name="keyboardview_keycode_enter" msgid="2985864015076059467">"Enter"</string> + <string name="description_target_unlock" msgid="2228524900439801453">"Откључај"</string> + <string name="description_target_camera" msgid="969071997552486814">"Камера"</string> + <string name="description_target_silent" msgid="893551287746522182">"Нечујно"</string> + <string name="description_target_soundon" msgid="30052466675500172">"Укључи звук"</string> + <string name="description_target_search" msgid="3091587249776033139">"Претрага"</string> + <string name="description_direction_up" msgid="7169032478259485180">"Превуците нагоре за <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_down" msgid="5087739728639014595">"Превуците надоле за <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_left" msgid="7207478719805562165">"Превуците улево за <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_right" msgid="8034433242579600980">"Превуците удесно за <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="user_switched" msgid="3768006783166984410">"Актуелни корисник <xliff:g id="NAME">%1$s</xliff:g>."</string> + <string name="kg_emergency_call_label" msgid="684946192523830531">"Хитни позив"</string> + <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Заборављени шаблон"</string> + <string name="kg_wrong_pattern" msgid="1850806070801358830">"Погрешан шаблон"</string> + <string name="kg_wrong_password" msgid="2333281762128113157">"Погрешна лозинка"</string> + <string name="kg_wrong_pin" msgid="1131306510833563801">"Погрешан PIN"</string> + <string name="kg_too_many_failed_attempts_countdown" msgid="6358110221603297548">"Покушајте поново за <xliff:g id="NUMBER">%d</xliff:g> секунде(и)."</string> + <string name="kg_pattern_instructions" msgid="398978611683075868">"Нацртајте шаблон"</string> + <string name="kg_sim_pin_instructions" msgid="2319508550934557331">"Унесите PIN SIM картице"</string> + <string name="kg_pin_instructions" msgid="2377242233495111557">"Унесите PIN"</string> + <string name="kg_password_instructions" msgid="5753646556186936819">"Унесите лозинку"</string> + <string name="kg_puk_enter_puk_hint" msgid="453227143861735537">"SIM картица је сада онемогућена. Унесите PUK кôд да бисте наставили. За детаље контактирајте оператера."</string> + <string name="kg_puk_enter_pin_hint" msgid="7871604527429602024">"Унесите жељени PIN кôд"</string> + <string name="kg_enter_confirm_pin_hint" msgid="325676184762529976">"Потврдите жељени PIN кôд"</string> + <string name="kg_sim_unlock_progress_dialog_message" msgid="8950398016976865762">"Откључавање SIM картице…"</string> + <string name="kg_password_wrong_pin_code" msgid="1139324887413846912">"PIN кôд је нетачан."</string> + <string name="kg_invalid_sim_pin_hint" msgid="8795159358110620001">"Унесите PIN који има од 4 до 8 бројева."</string> + <string name="kg_invalid_sim_puk_hint" msgid="7553388325654369575">"PUK кôд треба да има 8 или више бројева."</string> + <string name="kg_invalid_puk" msgid="3638289409676051243">"Поново унесите исправни PUK кôд. Поновљени покушаји ће трајно онемогућити SIM."</string> + <string name="kg_invalid_confirm_pin_hint" product="default" msgid="7003469261464593516">"PIN кодови се не подударају"</string> + <string name="kg_login_too_many_attempts" msgid="6486842094005698475">"Превише покушаја уноса шаблона"</string> + <string name="kg_login_instructions" msgid="1100551261265506448">"Да бисте откључали, пријавите се помоћу Google налога."</string> + <string name="kg_login_username_hint" msgid="5718534272070920364">"Корисничко име (адреса е-поште)"</string> + <string name="kg_login_password_hint" msgid="9057289103827298549">"Лозинка"</string> + <string name="kg_login_submit_button" msgid="5355904582674054702">"Пријави ме"</string> + <string name="kg_login_invalid_input" msgid="5754664119319872197">"Неважеће корисничко име или лозинка."</string> + <string name="kg_login_account_recovery_hint" msgid="5690709132841752974">"Заборавили сте корисничко име или лозинку?"\n"Посетите адресу "<b>"google.com/accounts/recovery"</b>"."</string> + <string name="kg_login_checking_password" msgid="1052685197710252395">"Провера налога…"</string> + <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="8276745642049502550">"Унели сте PIN неисправно <xliff:g id="NUMBER_0">%d</xliff:g> пута. "\n\n"Покушајте поново за <xliff:g id="NUMBER_1">%d</xliff:g> секунде(и)."</string> + <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="7813713389422226531">"Унели сте лозинку неисправно <xliff:g id="NUMBER_0">%d</xliff:g> пута. "\n\n"Покушајте поново за <xliff:g id="NUMBER_1">%d</xliff:g> секунде(и)."</string> + <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="74089475965050805">"Нацртали сте шаблон за откључавање неисправно <xliff:g id="NUMBER_0">%d</xliff:g> пута. "\n\n"Покушајте поново за <xliff:g id="NUMBER_1">%d</xliff:g> секунде(и)."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="1575557200627128949">"Покушали сте да откључате таблет неисправно <xliff:g id="NUMBER_0">%d</xliff:g> пута. Након још <xliff:g id="NUMBER_1">%d</xliff:g> неуспешна(их) покушаја таблет ће бити враћен на подразумевана фабричка подешавања и сви кориснички подаци ће бити изгубљени."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="4051015943038199910">"Покушали сте да откључате телефон неисправно <xliff:g id="NUMBER_0">%d</xliff:g> пута. После још <xliff:g id="NUMBER_1">%d</xliff:g> неуспешна(их) покушаја телефон ће бити враћен на подразумевана фабричка подешавања и сви кориснички подаци ће бити изгубљени."</string> + <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2072996269148483637">"Покушали сте да откључате таблет неисправно <xliff:g id="NUMBER">%d</xliff:g> пута. Таблет ће сада бити враћен на подразумевана фабричка подешавања."</string> + <string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"Покушали сте да откључате телефон неисправно <xliff:g id="NUMBER">%d</xliff:g> пута. Телефон ће сада бити враћен на подразумевана фабричка подешавања."</string> + <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Нацртали сте шаблон за откључавање неисправно <xliff:g id="NUMBER_0">%d</xliff:g> пута. После још <xliff:g id="NUMBER_1">%d</xliff:g> неуспешна(их) покушаја, од вас ће бити затражено да откључате таблет помоћу налога е-поште."\n\n"Покушајте поново за <xliff:g id="NUMBER_2">%d</xliff:g> секунде(и)."</string> + <string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"Нацртали сте шаблон за откључавање неисправно <xliff:g id="NUMBER_0">%d</xliff:g> пута. После још <xliff:g id="NUMBER_1">%d</xliff:g> неуспешна(их) покушаја, од вас ће бити затражено да откључате телефон помоћу налога е-поште."\n\n"Покушајте поново за <xliff:g id="NUMBER_2">%d</xliff:g> секунде(и)."</string> + <string name="kg_text_message_separator" product="default" msgid="4160700433287233771">" – "</string> + <string name="kg_reordering_delete_drop_target_text" msgid="7899202978204438708">"Уклони"</string> + <!-- no translation found for keyguard_transport_prev_description (8229108430245669854) --> + <skip /> + <!-- no translation found for keyguard_transport_next_description (4299258300283778305) --> + <skip /> + <!-- no translation found for keyguard_transport_pause_description (5093073338238310224) --> + <skip /> + <!-- no translation found for keyguard_transport_play_description (2924628863741150956) --> + <skip /> + <!-- no translation found for keyguard_transport_stop_description (3084179324810575787) --> + <skip /> + <!-- no translation found for keyguard_carrier_default (8700650403054042153) --> + <skip /> +</resources> diff --git a/packages/Keyguard/res/values-sv/strings.xml b/packages/Keyguard/res/values-sv/strings.xml new file mode 100644 index 000000000000..fa1492cc5a64 --- /dev/null +++ b/packages/Keyguard/res/values-sv/strings.xml @@ -0,0 +1,164 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* //device/apps/common/assets/res/any/strings.xml +** +** Copyright 2006, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="keyguard_password_enter_pin_code" msgid="3037685796058495017">"Ange PIN-kod"</string> + <string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Ange PUK-koden och en ny PIN-kod"</string> + <string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK-kod"</string> + <string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Ny PIN-kod"</string> + <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Tryck om du vill ange lösenord"</font></string> + <string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Ange lösenord för att låsa upp"</string> + <string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Ange PIN-kod för att låsa upp"</string> + <string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Fel PIN-kod."</string> + <string name="keyguard_label_text" msgid="861796461028298424">"Tryck på Menu och sedan på 0 om du vill låsa upp."</string> + <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Du har försökt låsa upp med Ansiktslås för många gånger"</string> + <!-- no translation found for keyguard_charged (3272223906073492454) --> + <skip /> + <!-- no translation found for keyguard_plugged_in (8117572000639998388) --> + <skip /> + <!-- no translation found for keyguard_low_battery (8143808018719173859) --> + <skip /> + <!-- no translation found for keyguard_instructions_when_pattern_disabled (1332288268600329841) --> + <skip /> + <!-- no translation found for keyguard_network_locked_message (9169717779058037168) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message_short (494980561304211931) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (1445849005909260039) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (3481110395508637643) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions (5210891509995942250) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions_long (5968985489463870358) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_message_short (8340813989586622356) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5892940909699723544) --> + <skip /> + <!-- no translation found for keyguard_sim_locked_message (6875773413306380902) --> + <skip /> + <!-- no translation found for keyguard_sim_puk_locked_message (3747232467471801633) --> + <skip /> + <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (7975221805033614426) --> + <skip /> + <string name="keyguard_accessibility_widget_changed" msgid="5678624624681400191">"%1$s. Widget %2$d av %3$d."</string> + <string name="keyguard_accessibility_add_widget" msgid="8273277058724924654">"Lägg till en widget."</string> + <string name="keyguard_accessibility_widget_empty_slot" msgid="1281505703307930757">"Tom"</string> + <string name="keyguard_accessibility_unlock_area_expanded" msgid="2278106022311170299">"Expanderad upplåsningsyta."</string> + <string name="keyguard_accessibility_unlock_area_collapsed" msgid="6366992066936076396">"Komprimerad upplåsningsyta."</string> + <string name="keyguard_accessibility_widget" msgid="6527131039741808240">"Widget för <xliff:g id="WIDGET_INDEX">%1$s</xliff:g>."</string> + <string name="keyguard_accessibility_user_selector" msgid="1226798370913698896">"Användarväljare"</string> + <string name="keyguard_accessibility_status" msgid="8008264603935930611">"Status"</string> + <string name="keyguard_accessibility_camera" msgid="8904231194181114603">"Kamera"</string> + <string name="keygaurd_accessibility_media_controls" msgid="262209654292161806">"Mediereglage"</string> + <string name="keyguard_accessibility_widget_reorder_start" msgid="8736853615588828197">"Ändring av widgetarnas ordning har påbörjats."</string> + <string name="keyguard_accessibility_widget_reorder_end" msgid="7170190950870468320">"Ändring av widgetarnas ordning har avslutats."</string> + <string name="keyguard_accessibility_widget_deleted" msgid="4426204263929224434">"Widgeten <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> har tagits bort."</string> + <string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"Expandera upplåsningsytan."</string> + <string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"Lås upp genom att dra."</string> + <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"Lås upp med grafiskt lösenord."</string> + <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"Lås upp med Ansiktslås."</string> + <string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"Lås upp med PIN-kod."</string> + <string name="keyguard_accessibility_password_unlock" msgid="7675777623912155089">"Lås upp med lösenord."</string> + <string name="keyguard_accessibility_pattern_area" msgid="7679891324509597904">"Fält för grafiskt lösenord."</string> + <string name="keyguard_accessibility_slide_area" msgid="6736064494019979544">"Fält med dragreglage."</string> + <!-- no translation found for keyguard_accessibility_transport_prev_description (1337286538318543555) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_next_description (7073928300444909320) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_pause_description (8455979545295224302) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_play_description (8146417789511154044) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_stop_description (7656358482980912216) --> + <skip /> + <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> + <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string> + <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> + <string name="keyboardview_keycode_alt" msgid="4856868820040051939">"Alt"</string> + <string name="keyboardview_keycode_cancel" msgid="1203984017245783244">"Avbryt"</string> + <string name="keyboardview_keycode_delete" msgid="3337914833206635744">"Delete"</string> + <string name="keyboardview_keycode_done" msgid="1992571118466679775">"Klar"</string> + <string name="keyboardview_keycode_mode_change" msgid="4547387741906537519">"Funktionsändring"</string> + <string name="keyboardview_keycode_shift" msgid="2270748814315147690">"Skift"</string> + <string name="keyboardview_keycode_enter" msgid="2985864015076059467">"Retur"</string> + <string name="description_target_unlock" msgid="2228524900439801453">"Lås upp"</string> + <string name="description_target_camera" msgid="969071997552486814">"Kamera"</string> + <string name="description_target_silent" msgid="893551287746522182">"Tyst"</string> + <string name="description_target_soundon" msgid="30052466675500172">"Ljud på"</string> + <string name="description_target_search" msgid="3091587249776033139">"Sök"</string> + <string name="description_direction_up" msgid="7169032478259485180">"Dra uppåt för <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> ."</string> + <string name="description_direction_down" msgid="5087739728639014595">"Dra nedåt för <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_left" msgid="7207478719805562165">"Dra åt vänster för <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> ."</string> + <string name="description_direction_right" msgid="8034433242579600980">"Dra åt höger för <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> ."</string> + <string name="user_switched" msgid="3768006783166984410">"Nuvarande användare: <xliff:g id="NAME">%1$s</xliff:g>."</string> + <string name="kg_emergency_call_label" msgid="684946192523830531">"Nödsamtal"</string> + <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Har du glömt ditt grafiska lösenord?"</string> + <string name="kg_wrong_pattern" msgid="1850806070801358830">"Fel grafiskt lösenord"</string> + <string name="kg_wrong_password" msgid="2333281762128113157">"Fel lösenord"</string> + <string name="kg_wrong_pin" msgid="1131306510833563801">"Fel PIN-kod"</string> + <string name="kg_too_many_failed_attempts_countdown" msgid="6358110221603297548">"Försök igen om <xliff:g id="NUMBER">%d</xliff:g> sekunder."</string> + <string name="kg_pattern_instructions" msgid="398978611683075868">"Rita ditt grafiska lösenord"</string> + <string name="kg_sim_pin_instructions" msgid="2319508550934557331">"Ange PIN-kod för SIM-kortet"</string> + <string name="kg_pin_instructions" msgid="2377242233495111557">"Ange PIN-kod"</string> + <string name="kg_password_instructions" msgid="5753646556186936819">"Ange lösenord"</string> + <string name="kg_puk_enter_puk_hint" msgid="453227143861735537">"SIM-kortet är nu inaktiverat. Ange PUK-koden om du vill fortsätta. Kontakta operatören om du vill få mer information."</string> + <string name="kg_puk_enter_pin_hint" msgid="7871604527429602024">"Ange önskad PIN-kod"</string> + <string name="kg_enter_confirm_pin_hint" msgid="325676184762529976">"Bekräfta önskad PIN-kod"</string> + <string name="kg_sim_unlock_progress_dialog_message" msgid="8950398016976865762">"Låser upp SIM-kort …"</string> + <string name="kg_password_wrong_pin_code" msgid="1139324887413846912">"Fel PIN-kod."</string> + <string name="kg_invalid_sim_pin_hint" msgid="8795159358110620001">"Ange en PIN-kod med 4 till 8 siffror."</string> + <string name="kg_invalid_sim_puk_hint" msgid="7553388325654369575">"PUK-koden ska vara minst åtta siffror."</string> + <string name="kg_invalid_puk" msgid="3638289409676051243">"Ange rätt PUK-kod igen. Om försöken upprepas inaktiveras SIM-kortet permanent."</string> + <string name="kg_invalid_confirm_pin_hint" product="default" msgid="7003469261464593516">"PIN-koderna stämmer inte överens"</string> + <string name="kg_login_too_many_attempts" msgid="6486842094005698475">"För många försök med grafiskt lösenord"</string> + <string name="kg_login_instructions" msgid="1100551261265506448">"Logga in med ditt Google-konto om du vill låsa upp."</string> + <string name="kg_login_username_hint" msgid="5718534272070920364">"Användarnamn (e-post)"</string> + <string name="kg_login_password_hint" msgid="9057289103827298549">"Lösenord"</string> + <string name="kg_login_submit_button" msgid="5355904582674054702">"Logga in"</string> + <string name="kg_login_invalid_input" msgid="5754664119319872197">"Ogiltigt användarnamn eller lösenord."</string> + <string name="kg_login_account_recovery_hint" msgid="5690709132841752974">"Har du glömt ditt användarnamn eller lösenord?"\n"Besök "<b>"google.com/accounts/recovery"</b>"."</string> + <string name="kg_login_checking_password" msgid="1052685197710252395">"Kontot kontrolleras …"</string> + <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="8276745642049502550">"Du har angett fel lösenord <xliff:g id="NUMBER_0">%d</xliff:g> gånger. "\n\n"Försök igen om <xliff:g id="NUMBER_1">%d</xliff:g> sekunder."</string> + <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="7813713389422226531">"Du har angett fel lösenord <xliff:g id="NUMBER_0">%d</xliff:g> gånger. "\n\n"Försök igen om <xliff:g id="NUMBER_1">%d</xliff:g> sekunder."</string> + <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="74089475965050805">"Du har ritat ditt grafiska lösenord fel <xliff:g id="NUMBER_0">%d</xliff:g> gånger. "\n\n"Försök igen om <xliff:g id="NUMBER_1">%d</xliff:g> sekunder."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="1575557200627128949">"Du har försökt låsa upp mobilen på fel sätt <xliff:g id="NUMBER_0">%d</xliff:g> gånger. Efter ytterligare <xliff:g id="NUMBER_1">%d</xliff:g> misslyckade försök återställs surfplattan till fabriksinställningarna. Du förlorar då alla användardata."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="4051015943038199910">"Du har försökt låsa upp mobilen på fel sätt <xliff:g id="NUMBER_0">%d</xliff:g> gånger. Efter ytterligare <xliff:g id="NUMBER_1">%d</xliff:g> misslyckade försök återställs mobilen till fabriksinställningarna. Du förlorar då alla användardata."</string> + <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2072996269148483637">"Du har försökt låsa upp surfplattan på fel sätt <xliff:g id="NUMBER">%d</xliff:g> gånger. Surfplattan återställs nu till fabriksinställningarna."</string> + <string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"Du har försökt låsa upp mobilen på fel sätt <xliff:g id="NUMBER">%d</xliff:g> gånger. Mobilen återställs nu till fabriksinställningarna."</string> + <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Du har ritat ditt grafiska lösenord fel <xliff:g id="NUMBER_0">%d</xliff:g> gånger. Efter ytterligare <xliff:g id="NUMBER_1">%d</xliff:g> försök ombeds du låsa upp surfplattan med ett e-postkonto."\n\n" Försök igen om <xliff:g id="NUMBER_2">%d</xliff:g> sekunder."</string> + <string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"Du har ritat ditt grafiska lösenord fel <xliff:g id="NUMBER_0">%d</xliff:g> gånger. Efter ytterligare <xliff:g id="NUMBER_1">%d</xliff:g> försök ombeds du låsa upp mobilen med hjälp av ett e-postkonto."\n\n" Försök igen om <xliff:g id="NUMBER_2">%d</xliff:g> sekunder."</string> + <string name="kg_text_message_separator" product="default" msgid="4160700433287233771">" – "</string> + <string name="kg_reordering_delete_drop_target_text" msgid="7899202978204438708">"Ta bort"</string> + <!-- no translation found for keyguard_transport_prev_description (8229108430245669854) --> + <skip /> + <!-- no translation found for keyguard_transport_next_description (4299258300283778305) --> + <skip /> + <!-- no translation found for keyguard_transport_pause_description (5093073338238310224) --> + <skip /> + <!-- no translation found for keyguard_transport_play_description (2924628863741150956) --> + <skip /> + <!-- no translation found for keyguard_transport_stop_description (3084179324810575787) --> + <skip /> + <!-- no translation found for keyguard_carrier_default (8700650403054042153) --> + <skip /> +</resources> diff --git a/packages/Keyguard/res/values-sw/strings.xml b/packages/Keyguard/res/values-sw/strings.xml new file mode 100644 index 000000000000..a8131cd9b221 --- /dev/null +++ b/packages/Keyguard/res/values-sw/strings.xml @@ -0,0 +1,164 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* //device/apps/common/assets/res/any/strings.xml +** +** Copyright 2006, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="keyguard_password_enter_pin_code" msgid="3037685796058495017">"Ingiza msimbo wa PIN"</string> + <string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Ingiza PUK na msimbo mpya wa PIN"</string> + <string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"Msimbo wa PUK"</string> + <string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Msimbo mpya wa PIN"</string> + <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Gusa kuingiza nenosiri "</font></string> + <string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Charaza nenosiri ili kufungua"</string> + <string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Ingiza PIN ili kufungua"</string> + <string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Msimbo wa PIN usio sahihi."</string> + <string name="keyguard_label_text" msgid="861796461028298424">"Ili kufungua, bofya Menyu kisha 0."</string> + <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Majaribio ya Juu ya Kufungua Uso yamezidishwa"</string> + <!-- no translation found for keyguard_charged (3272223906073492454) --> + <skip /> + <!-- no translation found for keyguard_plugged_in (8117572000639998388) --> + <skip /> + <!-- no translation found for keyguard_low_battery (8143808018719173859) --> + <skip /> + <!-- no translation found for keyguard_instructions_when_pattern_disabled (1332288268600329841) --> + <skip /> + <!-- no translation found for keyguard_network_locked_message (9169717779058037168) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message_short (494980561304211931) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (1445849005909260039) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (3481110395508637643) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions (5210891509995942250) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions_long (5968985489463870358) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_message_short (8340813989586622356) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5892940909699723544) --> + <skip /> + <!-- no translation found for keyguard_sim_locked_message (6875773413306380902) --> + <skip /> + <!-- no translation found for keyguard_sim_puk_locked_message (3747232467471801633) --> + <skip /> + <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (7975221805033614426) --> + <skip /> + <string name="keyguard_accessibility_widget_changed" msgid="5678624624681400191">"%1$s. Wiji %2$d ya %3$d."</string> + <string name="keyguard_accessibility_add_widget" msgid="8273277058724924654">"Ongeza wiji"</string> + <string name="keyguard_accessibility_widget_empty_slot" msgid="1281505703307930757">"Tupu"</string> + <string name="keyguard_accessibility_unlock_area_expanded" msgid="2278106022311170299">"Eneo la kufungua limepanuliwa."</string> + <string name="keyguard_accessibility_unlock_area_collapsed" msgid="6366992066936076396">"Eneo la kufungua limekunjwa."</string> + <string name="keyguard_accessibility_widget" msgid="6527131039741808240">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g> ya wiji."</string> + <string name="keyguard_accessibility_user_selector" msgid="1226798370913698896">"Kiteuzi cha mtumiaji"</string> + <string name="keyguard_accessibility_status" msgid="8008264603935930611">"Hali"</string> + <string name="keyguard_accessibility_camera" msgid="8904231194181114603">"Kamera"</string> + <string name="keygaurd_accessibility_media_controls" msgid="262209654292161806">"Vidhibiti vya media"</string> + <string name="keyguard_accessibility_widget_reorder_start" msgid="8736853615588828197">"Upangaji upya wa wiji umeanza."</string> + <string name="keyguard_accessibility_widget_reorder_end" msgid="7170190950870468320">"Upangaji upya wa wiji umekamilika."</string> + <string name="keyguard_accessibility_widget_deleted" msgid="4426204263929224434">"Wiji <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> imefutwa."</string> + <string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"Panua eneo la kufungua."</string> + <string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"Kufungua slaidi."</string> + <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"Kufungua kwa ruwaza."</string> + <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"Kufungua kwa uso."</string> + <string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"Kufungua kwa PIN."</string> + <string name="keyguard_accessibility_password_unlock" msgid="7675777623912155089">"Kufungua kwa nenosiri."</string> + <string name="keyguard_accessibility_pattern_area" msgid="7679891324509597904">"Eneo la ruwaza."</string> + <string name="keyguard_accessibility_slide_area" msgid="6736064494019979544">"Eneo la slaidi."</string> + <!-- no translation found for keyguard_accessibility_transport_prev_description (1337286538318543555) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_next_description (7073928300444909320) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_pause_description (8455979545295224302) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_play_description (8146417789511154044) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_stop_description (7656358482980912216) --> + <skip /> + <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> + <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string> + <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> + <string name="keyboardview_keycode_alt" msgid="4856868820040051939">"Alt"</string> + <string name="keyboardview_keycode_cancel" msgid="1203984017245783244">"Ghairi"</string> + <string name="keyboardview_keycode_delete" msgid="3337914833206635744">"Futa"</string> + <string name="keyboardview_keycode_done" msgid="1992571118466679775">"Imefanyika"</string> + <string name="keyboardview_keycode_mode_change" msgid="4547387741906537519">"Modi ya mabadiliko"</string> + <string name="keyboardview_keycode_shift" msgid="2270748814315147690">"Songa"</string> + <string name="keyboardview_keycode_enter" msgid="2985864015076059467">"Ingiza"</string> + <string name="description_target_unlock" msgid="2228524900439801453">"Fungua"</string> + <string name="description_target_camera" msgid="969071997552486814">"Kamera"</string> + <string name="description_target_silent" msgid="893551287746522182">"Kimya"</string> + <string name="description_target_soundon" msgid="30052466675500172">"Sauti imewashwa"</string> + <string name="description_target_search" msgid="3091587249776033139">"Tafuta"</string> + <string name="description_direction_up" msgid="7169032478259485180">"Sogeza juu kwa <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> ."</string> + <string name="description_direction_down" msgid="5087739728639014595">"Sogeza chini kwa <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_left" msgid="7207478719805562165">"Sogeza kushoto kwa <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> ."</string> + <string name="description_direction_right" msgid="8034433242579600980">"Sogeza kulika kwa <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> ."</string> + <string name="user_switched" msgid="3768006783166984410">"Mtumiaji wa sasa <xliff:g id="NAME">%1$s</xliff:g>."</string> + <string name="kg_emergency_call_label" msgid="684946192523830531">"Simu ya dharura"</string> + <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Umesahau Ruwaza"</string> + <string name="kg_wrong_pattern" msgid="1850806070801358830">"Ruwaza Isiyo sahihi"</string> + <string name="kg_wrong_password" msgid="2333281762128113157">"Nenosiri Lisilo sahihi"</string> + <string name="kg_wrong_pin" msgid="1131306510833563801">"PIN isiyo sahihi"</string> + <string name="kg_too_many_failed_attempts_countdown" msgid="6358110221603297548">"Jaribu tena baada ya sekunde <xliff:g id="NUMBER">%d</xliff:g>."</string> + <string name="kg_pattern_instructions" msgid="398978611683075868">"Chora ruwaza yako"</string> + <string name="kg_sim_pin_instructions" msgid="2319508550934557331">"Ingiza PIN ya SIM"</string> + <string name="kg_pin_instructions" msgid="2377242233495111557">"Ingiza PIN"</string> + <string name="kg_password_instructions" msgid="5753646556186936819">"Ingiza Nenosiri"</string> + <string name="kg_puk_enter_puk_hint" msgid="453227143861735537">"SIM sasa imelemazwa. Ingiza msimbo wa PUK ili kuendelea. Wasiliana na mtoa huduma kwa maelezo."</string> + <string name="kg_puk_enter_pin_hint" msgid="7871604527429602024">"Ingiza msimbo wa PIN unaopendelewa"</string> + <string name="kg_enter_confirm_pin_hint" msgid="325676184762529976">"Thibitisha msimbo wa PIN unaopendelewa"</string> + <string name="kg_sim_unlock_progress_dialog_message" msgid="8950398016976865762">"Inafungua kadi ya SIM..."</string> + <string name="kg_password_wrong_pin_code" msgid="1139324887413846912">"Msimbo wa PIN usio sahihi."</string> + <string name="kg_invalid_sim_pin_hint" msgid="8795159358110620001">"Charaza PIN iliyo na tarakimu kati ya 4 na 8."</string> + <string name="kg_invalid_sim_puk_hint" msgid="7553388325654369575">"Msimbo wa PUK unafaa kuwa na nambari 8 au zaidi."</string> + <string name="kg_invalid_puk" msgid="3638289409676051243">"Ingiza upya msimbo sahihi wa PUK. Majaribio yanayorudiwa yatalemaza SIM kabisa."</string> + <string name="kg_invalid_confirm_pin_hint" product="default" msgid="7003469261464593516">"Misimbo ya PIN haifanani"</string> + <string name="kg_login_too_many_attempts" msgid="6486842094005698475">"Majaribio mengi mno ya mchoro"</string> + <string name="kg_login_instructions" msgid="1100551261265506448">"Ili kufungua, ingia kwa Akaunti yako ya Google."</string> + <string name="kg_login_username_hint" msgid="5718534272070920364">"Jina la mtumiaji (barua pepe)"</string> + <string name="kg_login_password_hint" msgid="9057289103827298549">"Nenosiri"</string> + <string name="kg_login_submit_button" msgid="5355904582674054702">"Ingia"</string> + <string name="kg_login_invalid_input" msgid="5754664119319872197">"Jina la mtumiaji au nenosiri batili."</string> + <string name="kg_login_account_recovery_hint" msgid="5690709132841752974">"Je, umesahau jina lako la mtumiaji au nenosiri?"\n"Tembela "<b>"Bgoogle.com/accounts/recovery"</b>"."</string> + <string name="kg_login_checking_password" msgid="1052685197710252395">"Inakagua akaunti…"</string> + <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="8276745642049502550">"Umeingiza nenosiri lako kwa makosa mara <xliff:g id="NUMBER_0">%d</xliff:g>. "\n\n" Jaribu tena baada ya sekunde <xliff:g id="NUMBER_1">%d</xliff:g>."</string> + <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="7813713389422226531">"Umeingiza nenosiri lako kwa makosa mara <xliff:g id="NUMBER_0">%d</xliff:g>. "\n\n" Jaribu tena baada ya sekunde <xliff:g id="NUMBER_1">%d</xliff:g>."</string> + <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="74089475965050805">"Umechora ruwaza yako ya kufunga kwa makosa mara <xliff:g id="NUMBER_0">%d</xliff:g>. "\n\n" Jaribu tena baada ya sekunde <xliff:g id="NUMBER_1">%d</xliff:g>."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="1575557200627128949">"Umejaribu kufungua kompyuta ndogo kwa njia isiyo sahihi mara <xliff:g id="NUMBER_0">%d</xliff:g>. Baada ya majaribio <xliff:g id="NUMBER_1">%d</xliff:g> zaidi yasiyofaulu, kompyuta ndogo itarejeshwa katika mfumo chaguo-msingi ilivyotoka kiwandani data yote ya mtumiaji itapotea."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="4051015943038199910">"Umejaribu kufungua simu kwa njia isiyo sahihi mara <xliff:g id="NUMBER_0">%d</xliff:g>. Baada ya majaribio <xliff:g id="NUMBER_1">%d</xliff:g> zaidi yasiyofaulu, simu itarejeshwa katika mfumo chaguo-msingi ilivyotoka kiwandani na data yote ya mtumiaji itapotea."</string> + <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2072996269148483637">"Umejaribu kufungua kompyuta ndogo kwa njia isiyo sahihi mara <xliff:g id="NUMBER">%d</xliff:g>. Sasa kompyuta ndogo itarejeshwa katika mfumo chaguo-msingi ilivyotoka kiwandani."</string> + <string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"Umejaribu kufungua simu kwa njia isiyo sahihi mara <xliff:g id="NUMBER">%d</xliff:g>. Sasa simu itarejeshwa katika mfumo chaguo-msingi ilivyotoka kiwandani."</string> + <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Umekosea katika kuweka mchoro wako wa kufungua mara <xliff:g id="NUMBER_0">%d</xliff:g>. Baada ya majaribio <xliff:g id="NUMBER_1">%d</xliff:g> bila kufaulu, utaombwa kufungua kompyuta yako ndogo kwa kutumia akaunti yako ya barua pepe."\n\n" Jaribu tena baada ya sekunde <xliff:g id="NUMBER_2">%d</xliff:g>."</string> + <string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"Umekosea kuchora mchoro wako wa kufungua mara <xliff:g id="NUMBER_0">%d</xliff:g>. Baada ya majaribio <xliff:g id="NUMBER_1">%d</xliff:g> yasiyofaulu, utaombwa kufungua simu yako kwa kutumia akaunti ya barua pepe."\n\n" Jaribu tena baada ya sekunde <xliff:g id="NUMBER_2">%d</xliff:g>."</string> + <string name="kg_text_message_separator" product="default" msgid="4160700433287233771">" — "</string> + <string name="kg_reordering_delete_drop_target_text" msgid="7899202978204438708">"Ondoa"</string> + <!-- no translation found for keyguard_transport_prev_description (8229108430245669854) --> + <skip /> + <!-- no translation found for keyguard_transport_next_description (4299258300283778305) --> + <skip /> + <!-- no translation found for keyguard_transport_pause_description (5093073338238310224) --> + <skip /> + <!-- no translation found for keyguard_transport_play_description (2924628863741150956) --> + <skip /> + <!-- no translation found for keyguard_transport_stop_description (3084179324810575787) --> + <skip /> + <!-- no translation found for keyguard_carrier_default (8700650403054042153) --> + <skip /> +</resources> diff --git a/packages/Keyguard/res/values-sw380dp-land/dimens.xml b/packages/Keyguard/res/values-sw380dp-land/dimens.xml new file mode 100644 index 000000000000..20eb1be0bb34 --- /dev/null +++ b/packages/Keyguard/res/values-sw380dp-land/dimens.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* //device/apps/common/assets/res/any/dimens.xml +** +** Copyright 2012, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> +<resources> + <!-- Top margin for the clock view --> + <dimen name="kg_clock_top_margin">48dp</dimen> +</resources> diff --git a/packages/Keyguard/res/values-sw380dp/dimens.xml b/packages/Keyguard/res/values-sw380dp/dimens.xml new file mode 100644 index 000000000000..fc0e85d26bae --- /dev/null +++ b/packages/Keyguard/res/values-sw380dp/dimens.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +** +** Copyright 2012, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License") +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<resources> + <!-- Width of the sliding KeyguardSecurityContainer (includes 2x keyguard_security_view_margin) --> + <dimen name="keyguard_security_width">340dp</dimen> +</resources>
\ No newline at end of file diff --git a/packages/Keyguard/res/values-sw600dp-land/arrays.xml b/packages/Keyguard/res/values-sw600dp-land/arrays.xml new file mode 100644 index 000000000000..55502164a751 --- /dev/null +++ b/packages/Keyguard/res/values-sw600dp-land/arrays.xml @@ -0,0 +1,72 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* //device/apps/common/assets/res/any/colors.xml +** +** Copyright 2006, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + + <!-- Resources for GlowPadView in LockScreen --> + <array name="lockscreen_targets_when_silent"> + <item>@drawable/ic_lockscreen_unlock</item> + <item>@null</item> + <item>@drawable/ic_lockscreen_soundon</item> + <item>@null</item> + </array> + + <array name="lockscreen_target_descriptions_when_silent"> + <item>@string/description_target_unlock</item> + <item>@null</item> + <item>@string/description_target_soundon</item> + <item>@null</item> + </array> + + <array name="lockscreen_direction_descriptions"> + <item>@string/description_direction_right</item> + <item>@null</item> + <item>@string/description_direction_left</item> + <item>@null</item> + </array> + + <array name="lockscreen_targets_when_soundon"> + <item>@drawable/ic_lockscreen_unlock</item> + <item>@null</item> + <item>@drawable/ic_lockscreen_silent</item> + <item>@null</item> + </array> + + <array name="lockscreen_target_descriptions_when_soundon"> + <item>@string/description_target_unlock</item> + <item>@null</item> + <item>@string/description_target_silent</item> + <item>@null</item> + </array> + + <array name="lockscreen_targets_with_camera"> + <item>@drawable/ic_lockscreen_unlock</item> + <item>@drawable/ic_action_assist_generic</item> + <item>@drawable/ic_lockscreen_camera</item> + <item>@null</item> + </array> + + <array name="lockscreen_target_descriptions_with_camera"> + <item>@string/description_target_unlock</item> + <item>@string/description_target_search</item> + <item>@string/description_target_camera</item> + <item>@null</item> + </array> + +</resources> diff --git a/core/res/res/layout-land/keyguard_glow_pad_container.xml b/packages/Keyguard/res/values-sw600dp-land/dimens.xml index f8364f1ee411..5507e5fcaa81 100644 --- a/core/res/res/layout-land/keyguard_glow_pad_container.xml +++ b/packages/Keyguard/res/values-sw600dp-land/dimens.xml @@ -1,9 +1,10 @@ <?xml version="1.0" encoding="utf-8"?> <!-- +/* //device/apps/common/assets/res/any/dimens.xml ** -** Copyright 2012, The Android Open Source Project +** Copyright 2006, The Android Open Source Project ** -** Licensed under the Apache License, Version 2.0 (the "License") +** 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 ** @@ -16,10 +17,10 @@ ** limitations under the License. */ --> +<resources> + <!-- Top margin for the clock view --> + <dimen name="kg_clock_top_margin">85dp</dimen> -<merge xmlns:android="http://schemas.android.com/apk/res/android"> - <include layout="@layout/keyguard_glow_pad_view" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_gravity="center" /> -</merge>
\ No newline at end of file + <!-- Size of margin on the right of keyguard's status view --> + <dimen name="kg_status_line_font_right_margin">16dp</dimen> +</resources>
\ No newline at end of file diff --git a/packages/Keyguard/res/values-sw600dp-land/integers.xml b/packages/Keyguard/res/values-sw600dp-land/integers.xml new file mode 100644 index 000000000000..b724c9099d87 --- /dev/null +++ b/packages/Keyguard/res/values-sw600dp-land/integers.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** Copyright 2012, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> +<resources> + <integer name="kg_widget_region_weight">50</integer> + <integer name="kg_security_flipper_weight">50</integer> + <integer name="kg_glowpad_rotation_offset">0</integer> +</resources> diff --git a/core/res/res/layout-sw600dp/keyguard_navigation.xml b/packages/Keyguard/res/values-sw600dp-port/integers.xml index 2e6fa37d9ee1..65b854a5ec13 100644 --- a/core/res/res/layout-sw600dp/keyguard_navigation.xml +++ b/packages/Keyguard/res/values-sw600dp-port/integers.xml @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="utf-8"?> <!-- -** +/* ** Copyright 2012, The Android Open Source Project ** -** Licensed under the Apache License, Version 2.0 (the "License") +** 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 ** @@ -16,6 +16,7 @@ ** limitations under the License. */ --> -<merge xmlns:android="http://schemas.android.com/apk/res/android"> - <include layout="@layout/default_navigation" /> -</merge> +<resources> + <integer name="kg_widget_region_weight">46</integer> + <integer name="kg_security_flipper_weight">54</integer> +</resources>
\ No newline at end of file diff --git a/core/res/res/values-land/alias.xml b/packages/Keyguard/res/values-sw600dp/alias.xml index eac5ece14521..c3ecbb9e4f63 100644 --- a/core/res/res/values-land/alias.xml +++ b/packages/Keyguard/res/values-sw600dp/alias.xml @@ -19,5 +19,5 @@ --> <resources> <!-- Alias used to reference one of two possible layouts in keyguard. --> - <item type="layout" name="keyguard_eca">@android:layout/keyguard_emergency_carrier_area_empty</item> + <item type="layout" name="keyguard_eca">@layout/keyguard_emergency_carrier_area</item> </resources> diff --git a/packages/Keyguard/res/values-sw600dp/bools.xml b/packages/Keyguard/res/values-sw600dp/bools.xml new file mode 100644 index 000000000000..ddc48c575381 --- /dev/null +++ b/packages/Keyguard/res/values-sw600dp/bools.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2011 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<resources> + <bool name="target_honeycomb_needs_options_menu">false</bool> + <bool name="show_ongoing_ime_switcher">true</bool> + <bool name="kg_share_status_area">false</bool> + <bool name="kg_sim_puk_account_full_screen">false</bool> + <bool name="kg_show_ime_at_screen_on">false</bool> + <!-- No camera for you, tablet user --> + <bool name="kg_enable_camera_default_widget">false</bool> + <bool name="kg_center_small_widgets_vertically">true</bool> + <bool name="kg_top_align_page_shrink_on_bouncer_visible">false</bool> +</resources> diff --git a/packages/Keyguard/res/values-sw600dp/dimens.xml b/packages/Keyguard/res/values-sw600dp/dimens.xml new file mode 100644 index 000000000000..c0e3937d474f --- /dev/null +++ b/packages/Keyguard/res/values-sw600dp/dimens.xml @@ -0,0 +1,71 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* //device/apps/common/assets/res/any/dimens.xml +** +** Copyright 2006, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> +<resources> + <!-- Size of clock font in LockScreen. --> + <dimen name="keyguard_pattern_unlock_clock_font_size">112sp</dimen> + + <!-- Size of lockscreen outerring on unsecure unlock LockScreen --> + <dimen name="keyguard_lockscreen_outerring_diameter">364dp</dimen> + + <!-- Height of FaceUnlock view in keyguard --> + <dimen name="face_unlock_height">430dip</dimen> + + <!-- target placement radius for GlowPadView. Should be 1/2 of outerring diameter. --> + <dimen name="glowpadview_target_placement_radius">182dip</dimen> + + <!-- Size of status line font in LockScreen. --> + <dimen name="keyguard_pattern_unlock_status_line_font_size">14sp</dimen> + + <!-- Keyguard dimensions --> + <!-- Size of the clock font in keyguard's status view --> + <dimen name="kg_status_clock_font_size">141dp</dimen> + + <!-- Size of the date font in keyguard's status view --> + <dimen name="kg_status_date_font_size">25.5dp</dimen> + + <!-- Size of the generic status lines keyguard's status view --> + <dimen name="kg_status_line_font_size">16sp</dimen> + + <!-- Top margin for the clock view --> + <dimen name="kg_clock_top_margin">0dp</dimen> + + <!-- Size of margin on the right of keyguard's status view --> + <dimen name="kg_status_line_font_right_margin">50dp</dimen> + + <!-- Horizontal padding for the widget pager --> + <dimen name="kg_widget_pager_horizontal_padding">24dp</dimen> + + <!-- Top padding for the widget pager --> + <dimen name="kg_widget_pager_top_padding">0dp</dimen> + + <!-- Bottom padding for the widget pager --> + <dimen name="kg_widget_pager_bottom_padding">0dp</dimen> + + <!-- Top margin for the runway lights. We add a negative margin in large + devices to account for the widget pager padding --> + <dimen name="kg_runway_lights_top_margin">-10dp</dimen> + + <!-- Margin around the various security views --> + <dimen name="keyguard_security_view_margin">12dp</dimen> + + <!-- Margin around the various security views --> + <dimen name="keyguard_muliuser_selector_margin">12dp</dimen> + +</resources> diff --git a/core/res/res/layout/keyguard_sim_puk_pin_account_navigation.xml b/packages/Keyguard/res/values-sw600dp/integers.xml index 2e6fa37d9ee1..de9829c2cf95 100644 --- a/core/res/res/layout/keyguard_sim_puk_pin_account_navigation.xml +++ b/packages/Keyguard/res/values-sw600dp/integers.xml @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="utf-8"?> <!-- -** +/* ** Copyright 2012, The Android Open Source Project ** -** Licensed under the Apache License, Version 2.0 (the "License") +** 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 ** @@ -16,6 +16,6 @@ ** limitations under the License. */ --> -<merge xmlns:android="http://schemas.android.com/apk/res/android"> - <include layout="@layout/default_navigation" /> -</merge> +<resources> + <integer name="kg_carousel_angle">60</integer> +</resources> diff --git a/packages/Keyguard/res/values-sw720dp-land/dimens.xml b/packages/Keyguard/res/values-sw720dp-land/dimens.xml new file mode 100644 index 000000000000..14726ab3eb52 --- /dev/null +++ b/packages/Keyguard/res/values-sw720dp-land/dimens.xml @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* //device/apps/common/assets/res/any/dimens.xml +** +** Copyright 2012, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> +<resources> + <!-- Top margin for the clock view --> + <dimen name="kg_clock_top_margin">174dp</dimen> + + <!-- Size of margin on the right of keyguard's status view --> + <dimen name="kg_status_line_font_right_margin">16dp</dimen> + + <!-- Horizontal padding for the widget pager --> + <dimen name="kg_widget_pager_horizontal_padding">32dp</dimen> +</resources> diff --git a/core/res/res/layout-sw600dp/keyguard_sim_puk_pin_navigation.xml b/packages/Keyguard/res/values-sw720dp-port/integers.xml index 2e6fa37d9ee1..5f85f717a465 100644 --- a/core/res/res/layout-sw600dp/keyguard_sim_puk_pin_navigation.xml +++ b/packages/Keyguard/res/values-sw720dp-port/integers.xml @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="utf-8"?> <!-- -** +/* ** Copyright 2012, The Android Open Source Project ** -** Licensed under the Apache License, Version 2.0 (the "License") +** 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 ** @@ -16,6 +16,7 @@ ** limitations under the License. */ --> -<merge xmlns:android="http://schemas.android.com/apk/res/android"> - <include layout="@layout/default_navigation" /> -</merge> +<resources> + <integer name="kg_widget_region_weight">48</integer> + <integer name="kg_security_flipper_weight">52</integer> +</resources>
\ No newline at end of file diff --git a/packages/Keyguard/res/values-sw720dp/dimens.xml b/packages/Keyguard/res/values-sw720dp/dimens.xml new file mode 100644 index 000000000000..b29ac2299f8d --- /dev/null +++ b/packages/Keyguard/res/values-sw720dp/dimens.xml @@ -0,0 +1,66 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +** +** Copyright 2012, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> +<resources> + <!-- Keyguard dimensions --> + <!-- Size of the clock font in keyguard's status view --> + <dimen name="kg_status_clock_font_size">188dp</dimen> + + <!-- Size of the date font in keyguard's status view --> + <dimen name="kg_status_date_font_size">34dp</dimen> + + <!-- Size of the generic status lines keyguard's status view --> + <dimen name="kg_status_line_font_size">19sp</dimen> + + <!-- Top margin for the clock view --> + <dimen name="kg_clock_top_margin">0dp</dimen> + + <!-- Size of margin on the right of keyguard's status view --> + <dimen name="kg_status_line_font_right_margin">32dp</dimen> + + <!-- Horizontal padding for the widget pager --> + <dimen name="kg_widget_pager_horizontal_padding">80dp</dimen> + + <!-- Top padding for the widget pager --> + <dimen name="kg_widget_pager_top_padding">0dp</dimen> + + <!-- Bottom padding for the widget pager --> + <dimen name="kg_widget_pager_bottom_padding">0dp</dimen> + + <!-- Top margin for the runway lights. We add a negative margin in large + devices to account for the widget pager padding --> + <dimen name="kg_runway_lights_top_margin">-30dp</dimen> + + <!-- Margin around the various security views --> + <dimen name="keyguard_muliuser_selector_margin">24dp</dimen> + + <!-- Stroke width of the frame for the circular avatars. --> + <dimen name="keyguard_avatar_frame_stroke_width">3dp</dimen> + + <!-- Size of the avator on the multiuser lockscreen. --> + <dimen name="keyguard_avatar_size">88dp</dimen> + + <!-- Size of the text under the avator on the multiuser lockscreen. --> + <dimen name="keyguard_avatar_name_size">12sp</dimen> + + <!-- Width of the sliding KeyguardSecurityContainer (includes 2x keyguard_security_view_margin) --> + <dimen name="keyguard_security_width">420dp</dimen> + + <!-- Height of the sliding KeyguardSecurityContainer (includes 2x keyguard_security_view_margin) --> + <dimen name="keyguard_security_height">420dp</dimen> +</resources> diff --git a/packages/Keyguard/res/values-th/strings.xml b/packages/Keyguard/res/values-th/strings.xml new file mode 100644 index 000000000000..536867339993 --- /dev/null +++ b/packages/Keyguard/res/values-th/strings.xml @@ -0,0 +1,164 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* //device/apps/common/assets/res/any/strings.xml +** +** Copyright 2006, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="keyguard_password_enter_pin_code" msgid="3037685796058495017">"พิมพ์รหัส PIN"</string> + <string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"พิมพ์ PUK และรหัส PIN ใหม่"</string> + <string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"รหัส PUK"</string> + <string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"รหัส PIN ใหม่"</string> + <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"แตะเพื่อพิมพ์รหัสผ่าน"</font></string> + <string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"พิมพ์รหัสผ่านเพื่อปลดล็อก"</string> + <string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"พิมพ์ PIN เพื่อปลดล็อก"</string> + <string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"รหัส PIN ไม่ถูกต้อง"</string> + <string name="keyguard_label_text" msgid="861796461028298424">"หากต้องการปลดล็อก กด เมนู ตามด้วย 0"</string> + <string name="faceunlock_multiple_failures" msgid="754137583022792429">"มีความพยายามที่จะใช้ Face Unlock เกินขีดจำกัด"</string> + <!-- no translation found for keyguard_charged (3272223906073492454) --> + <skip /> + <!-- no translation found for keyguard_plugged_in (8117572000639998388) --> + <skip /> + <!-- no translation found for keyguard_low_battery (8143808018719173859) --> + <skip /> + <!-- no translation found for keyguard_instructions_when_pattern_disabled (1332288268600329841) --> + <skip /> + <!-- no translation found for keyguard_network_locked_message (9169717779058037168) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message_short (494980561304211931) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (1445849005909260039) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (3481110395508637643) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions (5210891509995942250) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions_long (5968985489463870358) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_message_short (8340813989586622356) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5892940909699723544) --> + <skip /> + <!-- no translation found for keyguard_sim_locked_message (6875773413306380902) --> + <skip /> + <!-- no translation found for keyguard_sim_puk_locked_message (3747232467471801633) --> + <skip /> + <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (7975221805033614426) --> + <skip /> + <string name="keyguard_accessibility_widget_changed" msgid="5678624624681400191">"%1$s วิดเจ็ต %2$d ของ %3$d"</string> + <string name="keyguard_accessibility_add_widget" msgid="8273277058724924654">"เพิ่มวิดเจ็ต"</string> + <string name="keyguard_accessibility_widget_empty_slot" msgid="1281505703307930757">"ว่าง"</string> + <string name="keyguard_accessibility_unlock_area_expanded" msgid="2278106022311170299">"ขยายพื้นที่ปลดล็อกแล้ว"</string> + <string name="keyguard_accessibility_unlock_area_collapsed" msgid="6366992066936076396">"ยุบพื้นที่ปลดล็อกแล้ว"</string> + <string name="keyguard_accessibility_widget" msgid="6527131039741808240">"วิดเจ็ต <xliff:g id="WIDGET_INDEX">%1$s</xliff:g>"</string> + <string name="keyguard_accessibility_user_selector" msgid="1226798370913698896">"ตัวเลือกผู้ใช้"</string> + <string name="keyguard_accessibility_status" msgid="8008264603935930611">"สถานะ"</string> + <string name="keyguard_accessibility_camera" msgid="8904231194181114603">"กล้องถ่ายรูป"</string> + <string name="keygaurd_accessibility_media_controls" msgid="262209654292161806">"การควบคุมสื่อ"</string> + <string name="keyguard_accessibility_widget_reorder_start" msgid="8736853615588828197">"เริ่มเรียงลำดับวิดเจ็ตใหม่"</string> + <string name="keyguard_accessibility_widget_reorder_end" msgid="7170190950870468320">"เรียงลำดับวิดเจ็ตใหม่เสร็จแล้ว"</string> + <string name="keyguard_accessibility_widget_deleted" msgid="4426204263929224434">"ลบวิดเจ็ต <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> แล้ว"</string> + <string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"ขยายพื้นที่ปลดล็อก"</string> + <string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"การปลดล็อกด้วยการเลื่อน"</string> + <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"การปลดล็อกด้วยรูปแบบ"</string> + <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"การปลดล็อกด้วยใบหน้า"</string> + <string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"การปลดล็อกด้วย PIN"</string> + <string name="keyguard_accessibility_password_unlock" msgid="7675777623912155089">"การปลดล็อกด้วยรหัสผ่าน"</string> + <string name="keyguard_accessibility_pattern_area" msgid="7679891324509597904">"พื้นที่สำหรับรูปแบบ"</string> + <string name="keyguard_accessibility_slide_area" msgid="6736064494019979544">"พื้นที่สำหรับการเลื่อน"</string> + <!-- no translation found for keyguard_accessibility_transport_prev_description (1337286538318543555) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_next_description (7073928300444909320) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_pause_description (8455979545295224302) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_play_description (8146417789511154044) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_stop_description (7656358482980912216) --> + <skip /> + <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> + <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string> + <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> + <string name="keyboardview_keycode_alt" msgid="4856868820040051939">"Alt"</string> + <string name="keyboardview_keycode_cancel" msgid="1203984017245783244">"ยกเลิก"</string> + <string name="keyboardview_keycode_delete" msgid="3337914833206635744">"ลบ"</string> + <string name="keyboardview_keycode_done" msgid="1992571118466679775">"เสร็จสิ้น"</string> + <string name="keyboardview_keycode_mode_change" msgid="4547387741906537519">"เปลี่ยนโหมด"</string> + <string name="keyboardview_keycode_shift" msgid="2270748814315147690">"Shift"</string> + <string name="keyboardview_keycode_enter" msgid="2985864015076059467">"ป้อน"</string> + <string name="description_target_unlock" msgid="2228524900439801453">"ปลดล็อก"</string> + <string name="description_target_camera" msgid="969071997552486814">"กล้อง"</string> + <string name="description_target_silent" msgid="893551287746522182">"ปิดเสียง"</string> + <string name="description_target_soundon" msgid="30052466675500172">"เปิดเสียง"</string> + <string name="description_target_search" msgid="3091587249776033139">"ค้นหา"</string> + <string name="description_direction_up" msgid="7169032478259485180">"เลื่อนขึ้นเพื่อ <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>"</string> + <string name="description_direction_down" msgid="5087739728639014595">"เลื่อนลงเพื่อ <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>"</string> + <string name="description_direction_left" msgid="7207478719805562165">"เลื่อนไปทางซ้ายเพื่อ <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>"</string> + <string name="description_direction_right" msgid="8034433242579600980">"เลื่อนไปทางขวาเพื่อ <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>"</string> + <string name="user_switched" msgid="3768006783166984410">"ผู้ใช้ปัจจุบัน <xliff:g id="NAME">%1$s</xliff:g>"</string> + <string name="kg_emergency_call_label" msgid="684946192523830531">"หมายเลขฉุกเฉิน"</string> + <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"ลืมรูปแบบใช่หรือไม่"</string> + <string name="kg_wrong_pattern" msgid="1850806070801358830">"รูปแบบไม่ถูกต้อง"</string> + <string name="kg_wrong_password" msgid="2333281762128113157">"รหัสผ่านไม่ถูกต้อง"</string> + <string name="kg_wrong_pin" msgid="1131306510833563801">"PIN ไม่ถูกต้อง"</string> + <string name="kg_too_many_failed_attempts_countdown" msgid="6358110221603297548">"ลองอีกครั้งในอีก <xliff:g id="NUMBER">%d</xliff:g> วินาที"</string> + <string name="kg_pattern_instructions" msgid="398978611683075868">"วาดรูปแบบของคุณ"</string> + <string name="kg_sim_pin_instructions" msgid="2319508550934557331">"ป้อน PIN ของซิม"</string> + <string name="kg_pin_instructions" msgid="2377242233495111557">"ป้อน PIN"</string> + <string name="kg_password_instructions" msgid="5753646556186936819">"ป้อนรหัสผ่าน"</string> + <string name="kg_puk_enter_puk_hint" msgid="453227143861735537">"ซิมการ์ดถูกปิดใช้งานแล้วในตอนนี้ ป้อนรหัส PUK เพื่อดำเนินการต่อ โปรดติดต่อผู้ให้บริการสำหรับรายละเอียด"</string> + <string name="kg_puk_enter_pin_hint" msgid="7871604527429602024">"ป้อนรหัส PIN ที่ต้องการ"</string> + <string name="kg_enter_confirm_pin_hint" msgid="325676184762529976">"ยืนยันรหัส PIN ที่ต้องการ"</string> + <string name="kg_sim_unlock_progress_dialog_message" msgid="8950398016976865762">"กำลังปลดล็อกซิมการ์ด…"</string> + <string name="kg_password_wrong_pin_code" msgid="1139324887413846912">"รหัส PIN ไม่ถูกต้อง"</string> + <string name="kg_invalid_sim_pin_hint" msgid="8795159358110620001">"พิมพ์ PIN ซึ่งเป็นเลข 4 ถึง 8 หลัก"</string> + <string name="kg_invalid_sim_puk_hint" msgid="7553388325654369575">"รหัส PUK ต้องเป็นตัวเลขอย่างน้อย 8 หลัก"</string> + <string name="kg_invalid_puk" msgid="3638289409676051243">"ใส่รหัส PUK ที่ถูกต้องอีกครั้ง การพยายามซ้ำหลายครั้งจะทำให้ซิมการ์ดถูกปิดใช้งานอย่างถาวร"</string> + <string name="kg_invalid_confirm_pin_hint" product="default" msgid="7003469261464593516">"รหัส PIN ไม่ตรง"</string> + <string name="kg_login_too_many_attempts" msgid="6486842094005698475">"ลองหลายรูปแบบมากเกินไป"</string> + <string name="kg_login_instructions" msgid="1100551261265506448">"หากต้องการปลดล็อก ให้ลงชื่อเข้าใช้ด้วยบัญชี Google ของคุณ"</string> + <string name="kg_login_username_hint" msgid="5718534272070920364">"ชื่อผู้ใช้ (อีเมล)"</string> + <string name="kg_login_password_hint" msgid="9057289103827298549">"รหัสผ่าน"</string> + <string name="kg_login_submit_button" msgid="5355904582674054702">"ลงชื่อเข้าใช้"</string> + <string name="kg_login_invalid_input" msgid="5754664119319872197">"ชื่อผู้ใช้หรือรหัสผ่านไม่ถูกต้อง"</string> + <string name="kg_login_account_recovery_hint" msgid="5690709132841752974">"หากลืมชื่อผู้ใช้หรือรหัสผ่าน"\n"โปรดไปที่ "<b>"google.com/accounts/recovery"</b></string> + <string name="kg_login_checking_password" msgid="1052685197710252395">"กำลังตรวจสอบบัญชี…"</string> + <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="8276745642049502550">"คุณพิมพ์ PIN ไม่ถูกต้องไป <xliff:g id="NUMBER_0">%d</xliff:g> ครั้งแล้ว "\n\n"โปรดลองอีกครั้งใน <xliff:g id="NUMBER_1">%d</xliff:g> วินาที"</string> + <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="7813713389422226531">"คุณพิมพ์รหัสผ่านไม่ถูกต้องไป <xliff:g id="NUMBER_0">%d</xliff:g> ครั้งแล้ว "\n\n"โปรดลองอีกครั้งใน <xliff:g id="NUMBER_1">%d</xliff:g> วินาที"</string> + <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="74089475965050805">"คุณวาดรูปแบบการปลดล็อกไม่ถูกต้องไป <xliff:g id="NUMBER_0">%d</xliff:g> ครั้งแล้ว "\n\n"โปรดลองอีกครั้งใน <xliff:g id="NUMBER_1">%d</xliff:g> วินาที"</string> + <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="1575557200627128949">"คุณพยายามปลดล็อกแท็บเล็ตอย่างไม่ถูกต้อง <xliff:g id="NUMBER_0">%d</xliff:g> ครั้งแล้ว หากพยายามแล้วไม่สำเร็จอีก <xliff:g id="NUMBER_1">%d</xliff:g> ครั้ง แท็บเล็ตจะถูกรีเซ็ตเป็นค่าเริ่มต้นจากโรงงานและข้อมูลผู้ใช้ทั้งหมดจะหายไป"</string> + <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="4051015943038199910">"คุณพยายามปลดล็อกโทรศัพท์อย่างไม่ถูกต้อง <xliff:g id="NUMBER_0">%d</xliff:g> ครั้งแล้ว หากพยายามแล้วไม่สำเร็จอีก <xliff:g id="NUMBER_1">%d</xliff:g> ครั้ง โทรศัพท์จะถูกรีเซ็ตเป็นค่าเริ่มต้นจากโรงงานและข้อมูลผู้ใช้ทั้งหมดจะหายไป"</string> + <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2072996269148483637">"คุณพยายามปลดล็อกแท็บเล็ตอย่างไม่ถูกต้อง <xliff:g id="NUMBER">%d</xliff:g> ครั้งแล้ว ขณะนี้แท็บเล็ตจะถูกรีเซ็ตเป็นค่าเริ่มต้นจากโรงงาน"</string> + <string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"คุณพยายามปลดล็อกโทรศัพท์อย่างไม่ถูกต้อง <xliff:g id="NUMBER">%d</xliff:g> ครั้งแล้ว ขณะนี้โทรศัพท์จะถูกรีเซ็ตเป็นค่าเริ่มต้นจากโรงงาน"</string> + <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"คุณวาดรูปแบบการปลดล็อกไม่ถูกต้อง <xliff:g id="NUMBER_0">%d</xliff:g> ครั้งแล้ว หากทำไม่สำเร็จอีก <xliff:g id="NUMBER_1">%d</xliff:g> ครั้ง ระบบจะขอให้คุณปลดล็อกแท็บเล็ตโดยใช้บัญชีอีเมล"\n\n" โปรดลองอีกครั้งใน <xliff:g id="NUMBER_2">%d</xliff:g> วินาที"</string> + <string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"คุณวาดรูปแบบการปลดล็อกไม่ถูกต้อง <xliff:g id="NUMBER_0">%d</xliff:g> ครั้งแล้ว หากทำไม่สำเร็จอีก <xliff:g id="NUMBER_1">%d</xliff:g> ครั้ง ระบบจะขอให้คุณปลดล็อกโทรศัพท์โดยใช้ับัญชีอีเมล"\n\n" โปรดลองอีกครั้งในอีก <xliff:g id="NUMBER_2">%d</xliff:g> วินาที"</string> + <string name="kg_text_message_separator" product="default" msgid="4160700433287233771">" — "</string> + <string name="kg_reordering_delete_drop_target_text" msgid="7899202978204438708">"นำออก"</string> + <!-- no translation found for keyguard_transport_prev_description (8229108430245669854) --> + <skip /> + <!-- no translation found for keyguard_transport_next_description (4299258300283778305) --> + <skip /> + <!-- no translation found for keyguard_transport_pause_description (5093073338238310224) --> + <skip /> + <!-- no translation found for keyguard_transport_play_description (2924628863741150956) --> + <skip /> + <!-- no translation found for keyguard_transport_stop_description (3084179324810575787) --> + <skip /> + <!-- no translation found for keyguard_carrier_default (8700650403054042153) --> + <skip /> +</resources> diff --git a/packages/Keyguard/res/values-tl/strings.xml b/packages/Keyguard/res/values-tl/strings.xml new file mode 100644 index 000000000000..02f31c9213f4 --- /dev/null +++ b/packages/Keyguard/res/values-tl/strings.xml @@ -0,0 +1,164 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* //device/apps/common/assets/res/any/strings.xml +** +** Copyright 2006, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="keyguard_password_enter_pin_code" msgid="3037685796058495017">"I-type ang PIN code"</string> + <string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"I-type ang PUK at bagong PIN code"</string> + <string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK code"</string> + <string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Bagong PIN code"</string> + <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Pindutin upang i-type password"</font></string> + <string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"I-type ang password upang i-unlock"</string> + <string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"I-type ang PIN upang i-unlock"</string> + <string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Maling PIN code."</string> + <string name="keyguard_label_text" msgid="861796461028298424">"Upang i-unlock, pindutin ang Menu pagkatapos ay 0."</string> + <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Nalagpasan na ang maximum na mga pagtatangka sa Face Unlock"</string> + <!-- no translation found for keyguard_charged (3272223906073492454) --> + <skip /> + <!-- no translation found for keyguard_plugged_in (8117572000639998388) --> + <skip /> + <!-- no translation found for keyguard_low_battery (8143808018719173859) --> + <skip /> + <!-- no translation found for keyguard_instructions_when_pattern_disabled (1332288268600329841) --> + <skip /> + <!-- no translation found for keyguard_network_locked_message (9169717779058037168) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message_short (494980561304211931) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (1445849005909260039) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (3481110395508637643) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions (5210891509995942250) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions_long (5968985489463870358) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_message_short (8340813989586622356) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5892940909699723544) --> + <skip /> + <!-- no translation found for keyguard_sim_locked_message (6875773413306380902) --> + <skip /> + <!-- no translation found for keyguard_sim_puk_locked_message (3747232467471801633) --> + <skip /> + <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (7975221805033614426) --> + <skip /> + <string name="keyguard_accessibility_widget_changed" msgid="5678624624681400191">"%1$s. Widget %2$d ng %3$d."</string> + <string name="keyguard_accessibility_add_widget" msgid="8273277058724924654">"Magdagdag ng widget."</string> + <string name="keyguard_accessibility_widget_empty_slot" msgid="1281505703307930757">"Walang laman"</string> + <string name="keyguard_accessibility_unlock_area_expanded" msgid="2278106022311170299">"Pinalaki ang bahagi ng pag-unlock."</string> + <string name="keyguard_accessibility_unlock_area_collapsed" msgid="6366992066936076396">"Pinaliit ang bahagi ng pag-unlock."</string> + <string name="keyguard_accessibility_widget" msgid="6527131039741808240">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g> widget."</string> + <string name="keyguard_accessibility_user_selector" msgid="1226798370913698896">"Tagapili ng user"</string> + <string name="keyguard_accessibility_status" msgid="8008264603935930611">"Katayuan"</string> + <string name="keyguard_accessibility_camera" msgid="8904231194181114603">"Camera"</string> + <string name="keygaurd_accessibility_media_controls" msgid="262209654292161806">"Mga kontrol ng media"</string> + <string name="keyguard_accessibility_widget_reorder_start" msgid="8736853615588828197">"Nagsimula na ang pagbabago ng ayos ng widget."</string> + <string name="keyguard_accessibility_widget_reorder_end" msgid="7170190950870468320">"Natapos na ang pagbabago ng ayos ng widget."</string> + <string name="keyguard_accessibility_widget_deleted" msgid="4426204263929224434">"Tinanggal ang widget na <xliff:g id="WIDGET_INDEX">%1$s</xliff:g>."</string> + <string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"Palakihin ang bahagi ng pag-unlock."</string> + <string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"Pag-unlock ng slide."</string> + <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"Pag-unlock ng pattern."</string> + <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"Face unlock."</string> + <string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"Pag-unlock ng pin."</string> + <string name="keyguard_accessibility_password_unlock" msgid="7675777623912155089">"Pag-unlock ng password."</string> + <string name="keyguard_accessibility_pattern_area" msgid="7679891324509597904">"Bahagi ng pattern."</string> + <string name="keyguard_accessibility_slide_area" msgid="6736064494019979544">"Bahagi ng slide."</string> + <!-- no translation found for keyguard_accessibility_transport_prev_description (1337286538318543555) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_next_description (7073928300444909320) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_pause_description (8455979545295224302) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_play_description (8146417789511154044) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_stop_description (7656358482980912216) --> + <skip /> + <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> + <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string> + <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> + <string name="keyboardview_keycode_alt" msgid="4856868820040051939">"Alt"</string> + <string name="keyboardview_keycode_cancel" msgid="1203984017245783244">"Kanselahin"</string> + <string name="keyboardview_keycode_delete" msgid="3337914833206635744">"Tanggalin"</string> + <string name="keyboardview_keycode_done" msgid="1992571118466679775">"Tapos na"</string> + <string name="keyboardview_keycode_mode_change" msgid="4547387741906537519">"Pagbabago ng Mode"</string> + <string name="keyboardview_keycode_shift" msgid="2270748814315147690">"Shift"</string> + <string name="keyboardview_keycode_enter" msgid="2985864015076059467">"Enter"</string> + <string name="description_target_unlock" msgid="2228524900439801453">"I-unlock"</string> + <string name="description_target_camera" msgid="969071997552486814">"Camera"</string> + <string name="description_target_silent" msgid="893551287746522182">"Tahimik"</string> + <string name="description_target_soundon" msgid="30052466675500172">"I-on ang tunog"</string> + <string name="description_target_search" msgid="3091587249776033139">"Maghanap"</string> + <string name="description_direction_up" msgid="7169032478259485180">"Mag-slide pataas para sa <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_down" msgid="5087739728639014595">"Mag-slide pababa para sa <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_left" msgid="7207478719805562165">"Mag-slide pakaliwa para sa <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_right" msgid="8034433242579600980">"Mag-slide pakanan para sa <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="user_switched" msgid="3768006783166984410">"Kasalukuyang user <xliff:g id="NAME">%1$s</xliff:g>."</string> + <string name="kg_emergency_call_label" msgid="684946192523830531">"Emergency na tawag"</string> + <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Nakalimutan ang Pattern"</string> + <string name="kg_wrong_pattern" msgid="1850806070801358830">"Maling Pattern"</string> + <string name="kg_wrong_password" msgid="2333281762128113157">"Maling Password"</string> + <string name="kg_wrong_pin" msgid="1131306510833563801">"Maling PIN"</string> + <string name="kg_too_many_failed_attempts_countdown" msgid="6358110221603297548">"Subukang muli sa loob ng <xliff:g id="NUMBER">%d</xliff:g> (na) segundo."</string> + <string name="kg_pattern_instructions" msgid="398978611683075868">"Iguhit ang iyong pattern"</string> + <string name="kg_sim_pin_instructions" msgid="2319508550934557331">"Ilagay ang SIM PIN"</string> + <string name="kg_pin_instructions" msgid="2377242233495111557">"Ilagay ang PIN"</string> + <string name="kg_password_instructions" msgid="5753646556186936819">"Ilagay ang Password"</string> + <string name="kg_puk_enter_puk_hint" msgid="453227143861735537">"Hindi na pinagana ang SIM ngayon. Maglagay ng PUK code upang magpatuloy. Makipag-ugnay sa carrier para sa mga detalye."</string> + <string name="kg_puk_enter_pin_hint" msgid="7871604527429602024">"Ilagay ang ninanais na PIN code"</string> + <string name="kg_enter_confirm_pin_hint" msgid="325676184762529976">"Kumpirmahin ang ninanais na PIN code"</string> + <string name="kg_sim_unlock_progress_dialog_message" msgid="8950398016976865762">"Ina-unlock ang SIM card…"</string> + <string name="kg_password_wrong_pin_code" msgid="1139324887413846912">"Hindi tamang PIN code."</string> + <string name="kg_invalid_sim_pin_hint" msgid="8795159358110620001">"Mag-type ng PIN na 4 hanggang 8 numero."</string> + <string name="kg_invalid_sim_puk_hint" msgid="7553388325654369575">"Dapat ay 8 numero o higit pa ang PUK code."</string> + <string name="kg_invalid_puk" msgid="3638289409676051243">"Muling ilagay ang tamang PUK code. Permanenteng hindi pagaganahin ang SIM ng mga paulit-ulit na pagtatangka."</string> + <string name="kg_invalid_confirm_pin_hint" product="default" msgid="7003469261464593516">"Hindi tumutugma ang mga PIN code"</string> + <string name="kg_login_too_many_attempts" msgid="6486842094005698475">"Masyadong maraming pagtatangka sa pattern"</string> + <string name="kg_login_instructions" msgid="1100551261265506448">"Upang i-unlock, mag-sign in gamit ang iyong Google account."</string> + <string name="kg_login_username_hint" msgid="5718534272070920364">"Username (email)"</string> + <string name="kg_login_password_hint" msgid="9057289103827298549">"Password"</string> + <string name="kg_login_submit_button" msgid="5355904582674054702">"Mag-sign in"</string> + <string name="kg_login_invalid_input" msgid="5754664119319872197">"Di-wastong username o password."</string> + <string name="kg_login_account_recovery_hint" msgid="5690709132841752974">"Nakalimutan ang iyong username o password?"\n"Bisitahin ang "<b>"google.com/accounts/recovery"</b>"."</string> + <string name="kg_login_checking_password" msgid="1052685197710252395">"Tinitingnan ang account…"</string> + <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="8276745642049502550">"Na-type mo nang hindi tama ang iyong PIN nang <xliff:g id="NUMBER_0">%d</xliff:g> (na) beses. "\n\n"Subukang muli sa loob ng <xliff:g id="NUMBER_1">%d</xliff:g> (na) segundo."</string> + <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="7813713389422226531">"Na-type mo nang hindi tama ang iyong password nang <xliff:g id="NUMBER_0">%d</xliff:g> (na) beses. "\n\n"Subukang muli sa loob ng <xliff:g id="NUMBER_1">%d</xliff:g> (na) segundo."</string> + <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="74089475965050805">"Naguhit mo nang hindi tama ang iyong pattern sa pag-unlock nang <xliff:g id="NUMBER_0">%d</xliff:g> (na) beses. "\n\n"Subukang muli sa loob ng <xliff:g id="NUMBER_1">%d</xliff:g> (na) segundo."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="1575557200627128949">"Tinangka mo sa hindi tamang paraan na i-unlock ang tabelt nang <xliff:g id="NUMBER_0">%d</xliff:g> (na) beses. Pagkatapos ng <xliff:g id="NUMBER_1">%d</xliff:g> pang hindi matagumpay na pagtatangka, ire-reset ang tablet sa factory default at mawawala ang lahat ng data ng user."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="4051015943038199910">"Tinangka mo sa hindi tamang paraan na i-unlock ang telepono nang <xliff:g id="NUMBER_0">%d</xliff:g> (na) beses. Pagkatapos ng <xliff:g id="NUMBER_1">%d</xliff:g> pang hindi matagumpay na pagtatangka, ire-reset ang telepono sa factory default at mawawala ang lahat ng data ng user."</string> + <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2072996269148483637">"Tinangka mo sa hindi tamang paraan na i-unlock ang tablet nang <xliff:g id="NUMBER">%d</xliff:g> (na) beses. Ire-reset na ngayon ang tablet sa factory default."</string> + <string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"Tinangka mo sa hindi tamang paraan na i-unlock ang telepono nang <xliff:g id="NUMBER">%d</xliff:g> (na) beses. Ire-reset na ngayon ang telepono sa factory default."</string> + <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Naguhit mo nang hindi tama ang iyong pattern sa pag-unlock nang <xliff:g id="NUMBER_0">%d</xliff:g> (na) beses. Pagkatapos ng <xliff:g id="NUMBER_1">%d</xliff:g> pang hindi matagumpay na pagtatangka, hihilingin sa iyong i-unlock ang tablet mo gamit ang isang email account."\n\n" Subukang muli sa loob ng <xliff:g id="NUMBER_2">%d</xliff:g> (na) segundo."</string> + <string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"Naguhit mo nang hindi tama ang iyong pattern sa pag-unlock nang <xliff:g id="NUMBER_0">%d</xliff:g> (na) beses. Pagkatapos ng <xliff:g id="NUMBER_1">%d</xliff:g> pang hindi matagumpay na pagtatangka, hihilingin sa iyong i-unlock ang telepono mo gamit ang isang email account."\n\n" Subukang muli sa loob ng <xliff:g id="NUMBER_2">%d</xliff:g> (na) segundo."</string> + <string name="kg_text_message_separator" product="default" msgid="4160700433287233771">" — "</string> + <string name="kg_reordering_delete_drop_target_text" msgid="7899202978204438708">"Alisin"</string> + <!-- no translation found for keyguard_transport_prev_description (8229108430245669854) --> + <skip /> + <!-- no translation found for keyguard_transport_next_description (4299258300283778305) --> + <skip /> + <!-- no translation found for keyguard_transport_pause_description (5093073338238310224) --> + <skip /> + <!-- no translation found for keyguard_transport_play_description (2924628863741150956) --> + <skip /> + <!-- no translation found for keyguard_transport_stop_description (3084179324810575787) --> + <skip /> + <!-- no translation found for keyguard_carrier_default (8700650403054042153) --> + <skip /> +</resources> diff --git a/packages/Keyguard/res/values-tr/strings.xml b/packages/Keyguard/res/values-tr/strings.xml new file mode 100644 index 000000000000..5ccca519dffd --- /dev/null +++ b/packages/Keyguard/res/values-tr/strings.xml @@ -0,0 +1,164 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* //device/apps/common/assets/res/any/strings.xml +** +** Copyright 2006, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="keyguard_password_enter_pin_code" msgid="3037685796058495017">"PIN kodunu yazın"</string> + <string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"PUK ve yeni PIN kodunu yazın"</string> + <string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK kodu"</string> + <string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Yeni PIN kodu"</string> + <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Şifre yazmak için dokunun"</font></string> + <string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Kilidi açmak için şifreyi yazın"</string> + <string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Kilidi açmak için PIN kodunu yazın"</string> + <string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Yanlış PIN kodu."</string> + <string name="keyguard_label_text" msgid="861796461028298424">"Kilidi açmak için önce Menü\'ye, sonra 0\'a basın."</string> + <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Yüz Tanıma Kilidi için maksimum deneme sayısı aşıldı"</string> + <!-- no translation found for keyguard_charged (3272223906073492454) --> + <skip /> + <!-- no translation found for keyguard_plugged_in (8117572000639998388) --> + <skip /> + <!-- no translation found for keyguard_low_battery (8143808018719173859) --> + <skip /> + <!-- no translation found for keyguard_instructions_when_pattern_disabled (1332288268600329841) --> + <skip /> + <!-- no translation found for keyguard_network_locked_message (9169717779058037168) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message_short (494980561304211931) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (1445849005909260039) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (3481110395508637643) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions (5210891509995942250) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions_long (5968985489463870358) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_message_short (8340813989586622356) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5892940909699723544) --> + <skip /> + <!-- no translation found for keyguard_sim_locked_message (6875773413306380902) --> + <skip /> + <!-- no translation found for keyguard_sim_puk_locked_message (3747232467471801633) --> + <skip /> + <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (7975221805033614426) --> + <skip /> + <string name="keyguard_accessibility_widget_changed" msgid="5678624624681400191">"%1$s. Widget %2$d / %3$d."</string> + <string name="keyguard_accessibility_add_widget" msgid="8273277058724924654">"Widget ekleyin."</string> + <string name="keyguard_accessibility_widget_empty_slot" msgid="1281505703307930757">"Boş"</string> + <string name="keyguard_accessibility_unlock_area_expanded" msgid="2278106022311170299">"Kilit açma alanı genişletildi."</string> + <string name="keyguard_accessibility_unlock_area_collapsed" msgid="6366992066936076396">"Kilit açma alanı daraltıldı."</string> + <string name="keyguard_accessibility_widget" msgid="6527131039741808240">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g> widget\'ı."</string> + <string name="keyguard_accessibility_user_selector" msgid="1226798370913698896">"Kullanıcı seçici"</string> + <string name="keyguard_accessibility_status" msgid="8008264603935930611">"Durum"</string> + <string name="keyguard_accessibility_camera" msgid="8904231194181114603">"Kamera"</string> + <string name="keygaurd_accessibility_media_controls" msgid="262209654292161806">"Medya denetimleri"</string> + <string name="keyguard_accessibility_widget_reorder_start" msgid="8736853615588828197">"Widget\'ları yeniden sıralama işlemi başladı."</string> + <string name="keyguard_accessibility_widget_reorder_end" msgid="7170190950870468320">"Widget\'ları yeniden sıralama işlemi bitti."</string> + <string name="keyguard_accessibility_widget_deleted" msgid="4426204263929224434">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g> widget\'ı silindi."</string> + <string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"Kilit açma alanını genişletin."</string> + <string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"Kaydırarak kilit açma."</string> + <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"Desenle kilit açma."</string> + <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"Yüzle kilit açma."</string> + <string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"Pin koduyla kilit açma."</string> + <string name="keyguard_accessibility_password_unlock" msgid="7675777623912155089">"Şifreyle kilit açma."</string> + <string name="keyguard_accessibility_pattern_area" msgid="7679891324509597904">"Desen alanı."</string> + <string name="keyguard_accessibility_slide_area" msgid="6736064494019979544">"Kaydırma alanı."</string> + <!-- no translation found for keyguard_accessibility_transport_prev_description (1337286538318543555) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_next_description (7073928300444909320) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_pause_description (8455979545295224302) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_play_description (8146417789511154044) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_stop_description (7656358482980912216) --> + <skip /> + <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> + <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string> + <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> + <string name="keyboardview_keycode_alt" msgid="4856868820040051939">"Alt"</string> + <string name="keyboardview_keycode_cancel" msgid="1203984017245783244">"İptal"</string> + <string name="keyboardview_keycode_delete" msgid="3337914833206635744">"Sil"</string> + <string name="keyboardview_keycode_done" msgid="1992571118466679775">"Bitti"</string> + <string name="keyboardview_keycode_mode_change" msgid="4547387741906537519">"Mod değiştirme"</string> + <string name="keyboardview_keycode_shift" msgid="2270748814315147690">"ÜstKrkt"</string> + <string name="keyboardview_keycode_enter" msgid="2985864015076059467">"Giriş"</string> + <string name="description_target_unlock" msgid="2228524900439801453">"Kilidi aç"</string> + <string name="description_target_camera" msgid="969071997552486814">"Kamera"</string> + <string name="description_target_silent" msgid="893551287746522182">"Sessiz"</string> + <string name="description_target_soundon" msgid="30052466675500172">"Ses açık"</string> + <string name="description_target_search" msgid="3091587249776033139">"Ara"</string> + <string name="description_direction_up" msgid="7169032478259485180">"<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> için yukarı kaydırın."</string> + <string name="description_direction_down" msgid="5087739728639014595">"<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> için aşağı kaydırın."</string> + <string name="description_direction_left" msgid="7207478719805562165">"<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> için sola kaydırın."</string> + <string name="description_direction_right" msgid="8034433242579600980">"<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> için sağa kaydırın."</string> + <string name="user_switched" msgid="3768006783166984410">"Geçerli kullanıcı: <xliff:g id="NAME">%1$s</xliff:g>."</string> + <string name="kg_emergency_call_label" msgid="684946192523830531">"Acil durum çağrısı"</string> + <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Deseni Unuttunuz mu?"</string> + <string name="kg_wrong_pattern" msgid="1850806070801358830">"Yanlış Desen"</string> + <string name="kg_wrong_password" msgid="2333281762128113157">"Yanlış Şifre"</string> + <string name="kg_wrong_pin" msgid="1131306510833563801">"Yanlış PIN"</string> + <string name="kg_too_many_failed_attempts_countdown" msgid="6358110221603297548">"<xliff:g id="NUMBER">%d</xliff:g> saniye içinde yeniden deneyin."</string> + <string name="kg_pattern_instructions" msgid="398978611683075868">"Deseninizi çizin"</string> + <string name="kg_sim_pin_instructions" msgid="2319508550934557331">"SIM PIN kodunu girin"</string> + <string name="kg_pin_instructions" msgid="2377242233495111557">"PIN\'i girin"</string> + <string name="kg_password_instructions" msgid="5753646556186936819">"Şifreyi Girin"</string> + <string name="kg_puk_enter_puk_hint" msgid="453227143861735537">"SIM kart artık devre dışı bırakıldı. Devam etmek için PUK kodunu girin. Ayrıntılı bilgi için operatörle bağlantı kurun."</string> + <string name="kg_puk_enter_pin_hint" msgid="7871604527429602024">"İstenen PIN kodunu girin"</string> + <string name="kg_enter_confirm_pin_hint" msgid="325676184762529976">"İstenen PIN kodunu onaylayın"</string> + <string name="kg_sim_unlock_progress_dialog_message" msgid="8950398016976865762">"SIM kart kilidi açılıyor…"</string> + <string name="kg_password_wrong_pin_code" msgid="1139324887413846912">"Yanlış PIN kodu."</string> + <string name="kg_invalid_sim_pin_hint" msgid="8795159358110620001">"4-8 rakamdan oluşan bir PIN girin."</string> + <string name="kg_invalid_sim_puk_hint" msgid="7553388325654369575">"PUK kodu 8 veya daha çok basamaklı bir sayı olmalıdır."</string> + <string name="kg_invalid_puk" msgid="3638289409676051243">"Doğru PUK kodunu tekrar girin. Çok sayıda deneme yapılırsa SIM kart kalıcı olarak devre dışı bırakılır."</string> + <string name="kg_invalid_confirm_pin_hint" product="default" msgid="7003469261464593516">"PIN kodları eşleşmiyor"</string> + <string name="kg_login_too_many_attempts" msgid="6486842094005698475">"Çok fazla sayıda desen denemesi yapıldı"</string> + <string name="kg_login_instructions" msgid="1100551261265506448">"Kilidi açmak için Google hesabınızla oturum açın."</string> + <string name="kg_login_username_hint" msgid="5718534272070920364">"Kullanıcı adı (e-posta)"</string> + <string name="kg_login_password_hint" msgid="9057289103827298549">"Şifre"</string> + <string name="kg_login_submit_button" msgid="5355904582674054702">"Oturum aç"</string> + <string name="kg_login_invalid_input" msgid="5754664119319872197">"Geçersiz kullanıcı adı veya şifre."</string> + <string name="kg_login_account_recovery_hint" msgid="5690709132841752974">"Kullanıcı adınızı veya şifrenizi mi unuttunuz?"\n<b>"google.com/accounts/recovery"</b>" adresini ziyaret edin."</string> + <string name="kg_login_checking_password" msgid="1052685197710252395">"Hesap denetleniyor…"</string> + <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="8276745642049502550">"PIN kodunuzu <xliff:g id="NUMBER_0">%d</xliff:g> kez yanlış girdiniz. "\n\n"<xliff:g id="NUMBER_1">%d</xliff:g> saniye içinde tekrar deneyin."</string> + <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="7813713389422226531">"Şifrenizi <xliff:g id="NUMBER_0">%d</xliff:g> kez yanlış yazdınız. "\n\n"<xliff:g id="NUMBER_1">%d</xliff:g> saniye içinde tekrar deneyin."</string> + <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="74089475965050805">"Kilit açma deseninizi <xliff:g id="NUMBER_0">%d</xliff:g> kez yanlış çizdiniz. "\n\n"<xliff:g id="NUMBER_1">%d</xliff:g> saniye içinde tekrar deneyin."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="1575557200627128949">"Tablet kilidini <xliff:g id="NUMBER_0">%d</xliff:g> defa yanlış bir şekilde açmaya çalıştınız. <xliff:g id="NUMBER_1">%d</xliff:g> defa daha başarısız deneme yapılırsa, tablet fabrika varsayılan değerine sıfırlanır ve tüm kullanıcı verileri kaybedilir."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="4051015943038199910">"Telefonun kilidini <xliff:g id="NUMBER_0">%d</xliff:g> defa yanlış bir şekilde açmaya çalıştınız. <xliff:g id="NUMBER_1">%d</xliff:g> defa daha başarısız deneme yapılırsa, telefon fabrika varsayılan değerine sıfırlanır ve tüm kullanıcı verileri kaybedilir."</string> + <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2072996269148483637">"Tablet kilidini <xliff:g id="NUMBER">%d</xliff:g> defa yanlış bir şekilde açmaya çalıştınız. Tablet şimdi fabrika varsayılanına sıfırlanacak."</string> + <string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"Telefon kilidini <xliff:g id="NUMBER">%d</xliff:g> defa yanlış bir şekilde açmaya çalıştınız. Telefon şimdi fabrika varsayılanına sıfırlanacak."</string> + <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Kilit açma deseninizi <xliff:g id="NUMBER_0">%d</xliff:g> kez yanlış çizdiniz. <xliff:g id="NUMBER_1">%d</xliff:g> başarısız denemeden sonra, tabletinizi bir e-posta hesabı kullanarak açmanız istenir."\n\n" <xliff:g id="NUMBER_2">%d</xliff:g> saniye içinde tekrar deneyin."</string> + <string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"Kilit açma deseninizi <xliff:g id="NUMBER_0">%d</xliff:g> kez yanlış çizdiniz. <xliff:g id="NUMBER_1">%d</xliff:g> başarısız denemeden sonra telefonunuzu bir e-posta hesabı kullanarak açmanız istenir."\n\n" <xliff:g id="NUMBER_2">%d</xliff:g> saniye içinde tekrar deneyin."</string> + <string name="kg_text_message_separator" product="default" msgid="4160700433287233771">" — "</string> + <string name="kg_reordering_delete_drop_target_text" msgid="7899202978204438708">"Kaldır"</string> + <!-- no translation found for keyguard_transport_prev_description (8229108430245669854) --> + <skip /> + <!-- no translation found for keyguard_transport_next_description (4299258300283778305) --> + <skip /> + <!-- no translation found for keyguard_transport_pause_description (5093073338238310224) --> + <skip /> + <!-- no translation found for keyguard_transport_play_description (2924628863741150956) --> + <skip /> + <!-- no translation found for keyguard_transport_stop_description (3084179324810575787) --> + <skip /> + <!-- no translation found for keyguard_carrier_default (8700650403054042153) --> + <skip /> +</resources> diff --git a/packages/Keyguard/res/values-uk/strings.xml b/packages/Keyguard/res/values-uk/strings.xml new file mode 100644 index 000000000000..af5c14ab1bb9 --- /dev/null +++ b/packages/Keyguard/res/values-uk/strings.xml @@ -0,0 +1,164 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* //device/apps/common/assets/res/any/strings.xml +** +** Copyright 2006, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="keyguard_password_enter_pin_code" msgid="3037685796058495017">"Введіть PIN-код"</string> + <string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Введіть PUK-код і новий PIN-код"</string> + <string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK-код"</string> + <string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Новий PIN-код"</string> + <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Торкніться, щоб ввести пароль"</font></string> + <string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Введіть пароль, щоб розблокувати"</string> + <string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Введіть PIN-код, щоб розблокувати"</string> + <string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Неправильний PIN-код."</string> + <string name="keyguard_label_text" msgid="861796461028298424">"Щоб розбл., натисн. меню та 0."</string> + <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Перевищено максимальну кількість спроб розблокування за допомогою функції \"Фейсконтроль\""</string> + <!-- no translation found for keyguard_charged (3272223906073492454) --> + <skip /> + <!-- no translation found for keyguard_plugged_in (8117572000639998388) --> + <skip /> + <!-- no translation found for keyguard_low_battery (8143808018719173859) --> + <skip /> + <!-- no translation found for keyguard_instructions_when_pattern_disabled (1332288268600329841) --> + <skip /> + <!-- no translation found for keyguard_network_locked_message (9169717779058037168) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message_short (494980561304211931) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (1445849005909260039) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (3481110395508637643) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions (5210891509995942250) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions_long (5968985489463870358) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_message_short (8340813989586622356) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5892940909699723544) --> + <skip /> + <!-- no translation found for keyguard_sim_locked_message (6875773413306380902) --> + <skip /> + <!-- no translation found for keyguard_sim_puk_locked_message (3747232467471801633) --> + <skip /> + <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (7975221805033614426) --> + <skip /> + <string name="keyguard_accessibility_widget_changed" msgid="5678624624681400191">"%1$s. Віджет %2$d з %3$d."</string> + <string name="keyguard_accessibility_add_widget" msgid="8273277058724924654">"Додати віджет."</string> + <string name="keyguard_accessibility_widget_empty_slot" msgid="1281505703307930757">"Порожня область"</string> + <string name="keyguard_accessibility_unlock_area_expanded" msgid="2278106022311170299">"Область розблокування розгорнуто."</string> + <string name="keyguard_accessibility_unlock_area_collapsed" msgid="6366992066936076396">"Область розблокування згорнуто."</string> + <string name="keyguard_accessibility_widget" msgid="6527131039741808240">"Віджет <xliff:g id="WIDGET_INDEX">%1$s</xliff:g>."</string> + <string name="keyguard_accessibility_user_selector" msgid="1226798370913698896">"Вибір користувача"</string> + <string name="keyguard_accessibility_status" msgid="8008264603935930611">"Статус"</string> + <string name="keyguard_accessibility_camera" msgid="8904231194181114603">"Камера"</string> + <string name="keygaurd_accessibility_media_controls" msgid="262209654292161806">"Елементи керування носієм"</string> + <string name="keyguard_accessibility_widget_reorder_start" msgid="8736853615588828197">"Змінення порядку віджетів розпочато."</string> + <string name="keyguard_accessibility_widget_reorder_end" msgid="7170190950870468320">"Змінення порядку віджетів закінчено."</string> + <string name="keyguard_accessibility_widget_deleted" msgid="4426204263929224434">"Віджет <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> видалено."</string> + <string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"Розгорнути область розблокування."</string> + <string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"Розблокування повзунком."</string> + <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"Розблокування ключем."</string> + <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"Фейсконтроль"</string> + <string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"Розблокування PIN-кодом."</string> + <string name="keyguard_accessibility_password_unlock" msgid="7675777623912155089">"Розблокування паролем."</string> + <string name="keyguard_accessibility_pattern_area" msgid="7679891324509597904">"Область ключа."</string> + <string name="keyguard_accessibility_slide_area" msgid="6736064494019979544">"Область повзунка."</string> + <!-- no translation found for keyguard_accessibility_transport_prev_description (1337286538318543555) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_next_description (7073928300444909320) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_pause_description (8455979545295224302) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_play_description (8146417789511154044) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_stop_description (7656358482980912216) --> + <skip /> + <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> + <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string> + <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> + <string name="keyboardview_keycode_alt" msgid="4856868820040051939">"Alt"</string> + <string name="keyboardview_keycode_cancel" msgid="1203984017245783244">"Скасувати"</string> + <string name="keyboardview_keycode_delete" msgid="3337914833206635744">"Delete"</string> + <string name="keyboardview_keycode_done" msgid="1992571118466679775">"Готово"</string> + <string name="keyboardview_keycode_mode_change" msgid="4547387741906537519">"Зміна режиму"</string> + <string name="keyboardview_keycode_shift" msgid="2270748814315147690">"Shift"</string> + <string name="keyboardview_keycode_enter" msgid="2985864015076059467">"Enter"</string> + <string name="description_target_unlock" msgid="2228524900439801453">"Розблокувати"</string> + <string name="description_target_camera" msgid="969071997552486814">"Камера"</string> + <string name="description_target_silent" msgid="893551287746522182">"Без звуку"</string> + <string name="description_target_soundon" msgid="30052466675500172">"Увімкнути звук"</string> + <string name="description_target_search" msgid="3091587249776033139">"Пошук"</string> + <string name="description_direction_up" msgid="7169032478259485180">"Проведіть пальцем угору, щоб <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_down" msgid="5087739728639014595">"Проведіть пальцем униз, щоб <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_left" msgid="7207478719805562165">"Проведіть пальцем ліворуч, щоб <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_right" msgid="8034433242579600980">"Проведіть пальцем праворуч, щоб <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="user_switched" msgid="3768006783166984410">"Поточний користувач: <xliff:g id="NAME">%1$s</xliff:g>."</string> + <string name="kg_emergency_call_label" msgid="684946192523830531">"Екстрений виклик"</string> + <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Не пам’ятаю ключ"</string> + <string name="kg_wrong_pattern" msgid="1850806070801358830">"Неправильний ключ"</string> + <string name="kg_wrong_password" msgid="2333281762128113157">"Неправильний пароль"</string> + <string name="kg_wrong_pin" msgid="1131306510833563801">"Неправильний PIN-код"</string> + <string name="kg_too_many_failed_attempts_countdown" msgid="6358110221603297548">"Повторіть спробу через <xliff:g id="NUMBER">%d</xliff:g> с."</string> + <string name="kg_pattern_instructions" msgid="398978611683075868">"Намалюйте ключ"</string> + <string name="kg_sim_pin_instructions" msgid="2319508550934557331">"Введіть PIN-код SIM-карти"</string> + <string name="kg_pin_instructions" msgid="2377242233495111557">"Введіть PIN-код"</string> + <string name="kg_password_instructions" msgid="5753646556186936819">"Введіть пароль"</string> + <string name="kg_puk_enter_puk_hint" msgid="453227143861735537">"Зараз SIM-карту вимкнено. Введіть PUK-код, щоб продовжити. Зв’яжіться з оператором, щоб дізнатися більше."</string> + <string name="kg_puk_enter_pin_hint" msgid="7871604527429602024">"Введіть потрібний PIN-код"</string> + <string name="kg_enter_confirm_pin_hint" msgid="325676184762529976">"Підтвердьте потрібний PIN-код"</string> + <string name="kg_sim_unlock_progress_dialog_message" msgid="8950398016976865762">"Розблокування SIM-карти…"</string> + <string name="kg_password_wrong_pin_code" msgid="1139324887413846912">"Неправильний PIN-код."</string> + <string name="kg_invalid_sim_pin_hint" msgid="8795159358110620001">"Введіть PIN-код із 4–8 цифр."</string> + <string name="kg_invalid_sim_puk_hint" msgid="7553388325654369575">"PUK-код має складатися зі щонайменше 8 цифр."</string> + <string name="kg_invalid_puk" msgid="3638289409676051243">"Повторно введіть правильний PUK-код. Численні спроби назавжди вимкнуть SIM-карту."</string> + <string name="kg_invalid_confirm_pin_hint" product="default" msgid="7003469261464593516">"PIN-коди не збігаються"</string> + <string name="kg_login_too_many_attempts" msgid="6486842094005698475">"Забагато спроб намалювати ключ"</string> + <string name="kg_login_instructions" msgid="1100551261265506448">"Щоб розблокувати, увійдіть, використовуючи дані облікового запису Google."</string> + <string name="kg_login_username_hint" msgid="5718534272070920364">"Ім’я користувача (електронна адреса)"</string> + <string name="kg_login_password_hint" msgid="9057289103827298549">"Пароль"</string> + <string name="kg_login_submit_button" msgid="5355904582674054702">"Увійти"</string> + <string name="kg_login_invalid_input" msgid="5754664119319872197">"Недійсне ім’я користувача чи пароль."</string> + <string name="kg_login_account_recovery_hint" msgid="5690709132841752974">"Не пам’ятаєте ім’я користувача чи пароль?"\n"Відвідайте сторінку "<b>"google.com/accounts/recovery"</b>"."</string> + <string name="kg_login_checking_password" msgid="1052685197710252395">"Перевірка облікового запису…"</string> + <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="8276745642049502550">"PIN-код неправильно введено стільки разів: <xliff:g id="NUMBER_0">%d</xliff:g>. "\n\n"Повторіть спробу через <xliff:g id="NUMBER_1">%d</xliff:g> с."</string> + <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="7813713389422226531">"Пароль неправильно введено стільки разів: <xliff:g id="NUMBER_0">%d</xliff:g>. "\n\n"Повторіть спробу через <xliff:g id="NUMBER_1">%d</xliff:g> с."</string> + <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="74089475965050805">"Ключ розблокування неправильно намальовано стільки разів: <xliff:g id="NUMBER_0">%d</xliff:g>. "\n\n"Повторіть спробу через <xliff:g id="NUMBER_1">%d</xliff:g> с."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="1575557200627128949">"Кількість невдалих спроб розблокувати планшетний ПК: <xliff:g id="NUMBER_0">%d</xliff:g>. У вас є ще стільки спроб: <xliff:g id="NUMBER_1">%d</xliff:g>. У разі невдачі налаштування планшетного ПК буде змінено на заводські за умовчанням, а всі дані користувача – втрачено."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="4051015943038199910">"Кількість невдалих спроб розблокувати телефон: <xliff:g id="NUMBER_0">%d</xliff:g>. У вас є ще стільки спроб: <xliff:g id="NUMBER_1">%d</xliff:g>. У разі невдачі налаштування телефону буде змінено на заводські за умовчанням, а всі дані користувача – втрачено."</string> + <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2072996269148483637">"Кількість невдалих спроб розблокувати планшетний ПК: <xliff:g id="NUMBER">%d</xliff:g>. Налаштування планшетного ПК буде змінено на заводські за умовчанням."</string> + <string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"Кількість невдалих спроб розблокувати телефон: <xliff:g id="NUMBER">%d</xliff:g>. Налаштування телефону буде змінено на заводські за умовчанням."</string> + <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Ключ розблокування неправильно намальовано стільки разів: <xliff:g id="NUMBER_0">%d</xliff:g>. У вас є ще стільки спроб: <xliff:g id="NUMBER_1">%d</xliff:g>. У разі невдачі з’явиться запит розблокувати планшетний ПК за допомогою облікового запису електронної пошти."\n\n" Повторіть спробу через <xliff:g id="NUMBER_2">%d</xliff:g> сек."</string> + <string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"Ключ розблокування неправильно намальовано стільки разів: <xliff:g id="NUMBER_0">%d</xliff:g>. У вас є ще стільки спроб: <xliff:g id="NUMBER_1">%d</xliff:g>. У разі невдачі з’явиться запит розблокувати телефон за допомогою облікового запису електронної пошти."\n\n" Повторіть спробу через <xliff:g id="NUMBER_2">%d</xliff:g> сек."</string> + <string name="kg_text_message_separator" product="default" msgid="4160700433287233771">" – "</string> + <string name="kg_reordering_delete_drop_target_text" msgid="7899202978204438708">"Вилучити"</string> + <!-- no translation found for keyguard_transport_prev_description (8229108430245669854) --> + <skip /> + <!-- no translation found for keyguard_transport_next_description (4299258300283778305) --> + <skip /> + <!-- no translation found for keyguard_transport_pause_description (5093073338238310224) --> + <skip /> + <!-- no translation found for keyguard_transport_play_description (2924628863741150956) --> + <skip /> + <!-- no translation found for keyguard_transport_stop_description (3084179324810575787) --> + <skip /> + <!-- no translation found for keyguard_carrier_default (8700650403054042153) --> + <skip /> +</resources> diff --git a/packages/Keyguard/res/values-vi/strings.xml b/packages/Keyguard/res/values-vi/strings.xml new file mode 100644 index 000000000000..e512b925318d --- /dev/null +++ b/packages/Keyguard/res/values-vi/strings.xml @@ -0,0 +1,164 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* //device/apps/common/assets/res/any/strings.xml +** +** Copyright 2006, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="keyguard_password_enter_pin_code" msgid="3037685796058495017">"Nhập mã PIN"</string> + <string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Nhập PUK và mã PIN mới"</string> + <string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"Mã PUK"</string> + <string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Mã PIN mới"</string> + <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Chạm để nhập mật khẩu"</font></string> + <string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Nhập mật khẩu để mở khóa"</string> + <string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Nhập mã PIN để mở khóa"</string> + <string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Mã PIN không chính xác."</string> + <string name="keyguard_label_text" msgid="861796461028298424">"Để mở khóa, hãy nhấn vào Trình đơn sau đó nhấn 0."</string> + <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Đã vượt quá số lần Mở khóa bằng khuôn mặt tối đa"</string> + <!-- no translation found for keyguard_charged (3272223906073492454) --> + <skip /> + <!-- no translation found for keyguard_plugged_in (8117572000639998388) --> + <skip /> + <!-- no translation found for keyguard_low_battery (8143808018719173859) --> + <skip /> + <!-- no translation found for keyguard_instructions_when_pattern_disabled (1332288268600329841) --> + <skip /> + <!-- no translation found for keyguard_network_locked_message (9169717779058037168) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message_short (494980561304211931) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (1445849005909260039) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (3481110395508637643) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions (5210891509995942250) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions_long (5968985489463870358) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_message_short (8340813989586622356) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5892940909699723544) --> + <skip /> + <!-- no translation found for keyguard_sim_locked_message (6875773413306380902) --> + <skip /> + <!-- no translation found for keyguard_sim_puk_locked_message (3747232467471801633) --> + <skip /> + <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (7975221805033614426) --> + <skip /> + <string name="keyguard_accessibility_widget_changed" msgid="5678624624681400191">"%1$s. Tiện ích %2$d trong số %3$d."</string> + <string name="keyguard_accessibility_add_widget" msgid="8273277058724924654">"Thêm tiện ích."</string> + <string name="keyguard_accessibility_widget_empty_slot" msgid="1281505703307930757">"Trống"</string> + <string name="keyguard_accessibility_unlock_area_expanded" msgid="2278106022311170299">"Đã mở rộng vùng khóa."</string> + <string name="keyguard_accessibility_unlock_area_collapsed" msgid="6366992066936076396">"Đã thu gọn vùng khóa."</string> + <string name="keyguard_accessibility_widget" msgid="6527131039741808240">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g> tiện ích."</string> + <string name="keyguard_accessibility_user_selector" msgid="1226798370913698896">"Bộ chọn người dùng"</string> + <string name="keyguard_accessibility_status" msgid="8008264603935930611">"Trạng thái"</string> + <string name="keyguard_accessibility_camera" msgid="8904231194181114603">"Máy ảnh"</string> + <string name="keygaurd_accessibility_media_controls" msgid="262209654292161806">"Điều khiển phương tiện"</string> + <string name="keyguard_accessibility_widget_reorder_start" msgid="8736853615588828197">"Đã bắt đầu xắp xếp lại tiện ích."</string> + <string name="keyguard_accessibility_widget_reorder_end" msgid="7170190950870468320">"Đã kết thúc sắp xếp lại tiện ích."</string> + <string name="keyguard_accessibility_widget_deleted" msgid="4426204263929224434">"Đã xóa tiện ích <xliff:g id="WIDGET_INDEX">%1$s</xliff:g>."</string> + <string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"Mở rộng vùng khóa."</string> + <string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"Mở khóa bằng cách trượt."</string> + <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"Mở khóa bằng hình."</string> + <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"Mở khóa bằng khuôn mặt."</string> + <string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"Mở khóa bằng mã pin."</string> + <string name="keyguard_accessibility_password_unlock" msgid="7675777623912155089">"Mở khóa bằng mật khẩu."</string> + <string name="keyguard_accessibility_pattern_area" msgid="7679891324509597904">"Khu vực hình."</string> + <string name="keyguard_accessibility_slide_area" msgid="6736064494019979544">"Khu vực trượt."</string> + <!-- no translation found for keyguard_accessibility_transport_prev_description (1337286538318543555) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_next_description (7073928300444909320) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_pause_description (8455979545295224302) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_play_description (8146417789511154044) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_stop_description (7656358482980912216) --> + <skip /> + <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> + <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string> + <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> + <string name="keyboardview_keycode_alt" msgid="4856868820040051939">"Alt"</string> + <string name="keyboardview_keycode_cancel" msgid="1203984017245783244">"Hủy"</string> + <string name="keyboardview_keycode_delete" msgid="3337914833206635744">"Xóa"</string> + <string name="keyboardview_keycode_done" msgid="1992571118466679775">"Xong"</string> + <string name="keyboardview_keycode_mode_change" msgid="4547387741906537519">"Thay đổi chế độ"</string> + <string name="keyboardview_keycode_shift" msgid="2270748814315147690">"Shift"</string> + <string name="keyboardview_keycode_enter" msgid="2985864015076059467">"Enter"</string> + <string name="description_target_unlock" msgid="2228524900439801453">"Mở khóa"</string> + <string name="description_target_camera" msgid="969071997552486814">"Máy ảnh"</string> + <string name="description_target_silent" msgid="893551287746522182">"Im lặng"</string> + <string name="description_target_soundon" msgid="30052466675500172">"Bật âm thanh"</string> + <string name="description_target_search" msgid="3091587249776033139">"Tìm kiếm"</string> + <string name="description_direction_up" msgid="7169032478259485180">"Trượt lên để <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_down" msgid="5087739728639014595">"Trượt xuống để <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_left" msgid="7207478719805562165">"Trượt sang trái để <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_right" msgid="8034433242579600980">"Trượt sang phải để <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="user_switched" msgid="3768006783166984410">"Người dùng hiện tại <xliff:g id="NAME">%1$s</xliff:g>."</string> + <string name="kg_emergency_call_label" msgid="684946192523830531">"Cuộc gọi khẩn cấp"</string> + <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Đã quên hình"</string> + <string name="kg_wrong_pattern" msgid="1850806070801358830">"Hình sai"</string> + <string name="kg_wrong_password" msgid="2333281762128113157">"Mật khẩu sai"</string> + <string name="kg_wrong_pin" msgid="1131306510833563801">"PIN sai"</string> + <string name="kg_too_many_failed_attempts_countdown" msgid="6358110221603297548">"Hãy thử lại sau <xliff:g id="NUMBER">%d</xliff:g> giây."</string> + <string name="kg_pattern_instructions" msgid="398978611683075868">"Vẽ hình của bạn"</string> + <string name="kg_sim_pin_instructions" msgid="2319508550934557331">"Nhập PIN của SIM"</string> + <string name="kg_pin_instructions" msgid="2377242233495111557">"Nhập PIN"</string> + <string name="kg_password_instructions" msgid="5753646556186936819">"Nhập mật khẩu"</string> + <string name="kg_puk_enter_puk_hint" msgid="453227143861735537">"SIM hiện bị vô hiệu hóa. Nhập mã PUK để tiếp tục. Liên hệ với nhà cung cấp dịch vụ để biết chi tiết."</string> + <string name="kg_puk_enter_pin_hint" msgid="7871604527429602024">"Nhập mã PIN mong muốn"</string> + <string name="kg_enter_confirm_pin_hint" msgid="325676184762529976">"Xác nhận mã PIN mong muốn"</string> + <string name="kg_sim_unlock_progress_dialog_message" msgid="8950398016976865762">"Đang mở khóa thẻ SIM…"</string> + <string name="kg_password_wrong_pin_code" msgid="1139324887413846912">"Mã PIN không chính xác."</string> + <string name="kg_invalid_sim_pin_hint" msgid="8795159358110620001">"Nhập mã PIN có từ 4 đến 8 số."</string> + <string name="kg_invalid_sim_puk_hint" msgid="7553388325654369575">"Mã PUK phải có từ 8 số trở lên."</string> + <string name="kg_invalid_puk" msgid="3638289409676051243">"Hãy nhập lại mã PUK chính xác. Nhiều lần lặp lại sẽ vô hiệu hóa vĩnh viễn thẻ SIM."</string> + <string name="kg_invalid_confirm_pin_hint" product="default" msgid="7003469261464593516">"Mã PIN không khớp"</string> + <string name="kg_login_too_many_attempts" msgid="6486842094005698475">"Quá nhiều lần nhập hình"</string> + <string name="kg_login_instructions" msgid="1100551261265506448">"Để mở khóa, hãy đăng nhập bằng tài khoản Google của bạn."</string> + <string name="kg_login_username_hint" msgid="5718534272070920364">"Tên người dùng (email)"</string> + <string name="kg_login_password_hint" msgid="9057289103827298549">"Mật khẩu"</string> + <string name="kg_login_submit_button" msgid="5355904582674054702">"Đăng nhập"</string> + <string name="kg_login_invalid_input" msgid="5754664119319872197">"Tên người dùng hoặc mật khẩu không hợp lệ."</string> + <string name="kg_login_account_recovery_hint" msgid="5690709132841752974">"Bạn quên tên người dùng hoặc mật khẩu?"\n"Hãy truy cập "<b>"google.com/accounts/recovery"</b>"."</string> + <string name="kg_login_checking_password" msgid="1052685197710252395">"Đang kiểm tra tài khoản…"</string> + <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="8276745642049502550">"Bạn đã <xliff:g id="NUMBER_0">%d</xliff:g> lần nhập sai mã PIN của mình. Hãy "\n\n"thử lại sau <xliff:g id="NUMBER_1">%d</xliff:g> giây."</string> + <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="7813713389422226531">"Bạn đã <xliff:g id="NUMBER_0">%d</xliff:g> lần nhập sai mật khẩu của mình. Hãy "\n\n"thử lại sau <xliff:g id="NUMBER_1">%d</xliff:g> giây."</string> + <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="74089475965050805">"Bạn đã <xliff:g id="NUMBER_0">%d</xliff:g> lần vẽ không chính xác hình mở khóa của mình. Hãy "\n\n"thử lại sau <xliff:g id="NUMBER_1">%d</xliff:g> giây."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="1575557200627128949">"Bạn đã <xliff:g id="NUMBER_0">%d</xliff:g> lần mở khóa máy tính bảng không đúng cách. Sau <xliff:g id="NUMBER_1">%d</xliff:g> lần mở khóa không thành công nữa, máy tính bảng sẽ được đặt lại về mặc định ban đầu và tất cả dữ liệu người dùng sẽ bị mất."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="4051015943038199910">"Bạn đã <xliff:g id="NUMBER_0">%d</xliff:g> lần mở khóa điện thoại không đúng cách. Sau <xliff:g id="NUMBER_1">%d</xliff:g> lần mở khóa không thành công nữa, điện thoại sẽ được đặt lại về mặc định ban đầu và tất cả dữ liệu người dùng sẽ bị mất."</string> + <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2072996269148483637">"Bạn đã <xliff:g id="NUMBER">%d</xliff:g> lần mở khóa máy tính bảng không đúng cách. Bây giờ, máy tính bảng sẽ được đặt lại về mặc định ban đầu."</string> + <string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"Bạn đã <xliff:g id="NUMBER">%d</xliff:g> lần mở khóa điện thoại không đúng cách. Bây giờ, điện thoại sẽ được đặt lại về mặc định ban đầu."</string> + <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Bạn đã <xliff:g id="NUMBER_0">%d</xliff:g> lần vẽ không chính xác hình mở khóa của mình. Sau <xliff:g id="NUMBER_1">%d</xliff:g> lần thử không thành công nữa, bạn sẽ được yêu cầu mở khóa máy tính bảng bằng tài khoản email."\n\n" Vui lòng thử lại sau <xliff:g id="NUMBER_2">%d</xliff:g> giây."</string> + <string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"Bạn đã <xliff:g id="NUMBER_0">%d</xliff:g> lần vẽ không chính xác hình mở khóa của mình. Sau <xliff:g id="NUMBER_1">%d</xliff:g> lần thử không thành công nữa, bạn sẽ được yêu cầu mở khóa điện thoại bằng tài khoản email."\n\n" Vui lòng thử lại sau <xliff:g id="NUMBER_2">%d</xliff:g> giây."</string> + <string name="kg_text_message_separator" product="default" msgid="4160700433287233771">" — "</string> + <string name="kg_reordering_delete_drop_target_text" msgid="7899202978204438708">"Xóa"</string> + <!-- no translation found for keyguard_transport_prev_description (8229108430245669854) --> + <skip /> + <!-- no translation found for keyguard_transport_next_description (4299258300283778305) --> + <skip /> + <!-- no translation found for keyguard_transport_pause_description (5093073338238310224) --> + <skip /> + <!-- no translation found for keyguard_transport_play_description (2924628863741150956) --> + <skip /> + <!-- no translation found for keyguard_transport_stop_description (3084179324810575787) --> + <skip /> + <!-- no translation found for keyguard_carrier_default (8700650403054042153) --> + <skip /> +</resources> diff --git a/packages/Keyguard/res/values-xlarge/dimens.xml b/packages/Keyguard/res/values-xlarge/dimens.xml new file mode 100644 index 000000000000..b8cf287848ed --- /dev/null +++ b/packages/Keyguard/res/values-xlarge/dimens.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* //device/apps/common/assets/res/any/dimens.xml +** +** Copyright 2006, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> +<resources> + <!-- Default height of a key in the password keyboard for alpha --> + <dimen name="password_keyboard_key_height_alpha">75dip</dimen> + <!-- Default height of a key in the password keyboard for numeric --> + <dimen name="password_keyboard_key_height_numeric">75dip</dimen> + <!-- keyboardHeight = key_height*4 + key_bottom_gap*3 --> + <dimen name="password_keyboard_height">48.0mm</dimen> +</resources> diff --git a/packages/Keyguard/res/values-zh-rCN/strings.xml b/packages/Keyguard/res/values-zh-rCN/strings.xml new file mode 100644 index 000000000000..814da041459e --- /dev/null +++ b/packages/Keyguard/res/values-zh-rCN/strings.xml @@ -0,0 +1,164 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* //device/apps/common/assets/res/any/strings.xml +** +** Copyright 2006, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="keyguard_password_enter_pin_code" msgid="3037685796058495017">"输入 PIN 码"</string> + <string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"请输入 PUK 码和新的 PIN 码"</string> + <string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK 码"</string> + <string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"新的 PIN 码"</string> + <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"触摸可输入密码"</font></string> + <string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"输入密码以解锁"</string> + <string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"输入 PIN 进行解锁"</string> + <string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"PIN 码有误。"</string> + <string name="keyguard_label_text" msgid="861796461028298424">"要解锁,请先按 MENU 再按 0。"</string> + <string name="faceunlock_multiple_failures" msgid="754137583022792429">"已超过“人脸解锁”尝试次数上限"</string> + <!-- no translation found for keyguard_charged (3272223906073492454) --> + <skip /> + <!-- no translation found for keyguard_plugged_in (8117572000639998388) --> + <skip /> + <!-- no translation found for keyguard_low_battery (8143808018719173859) --> + <skip /> + <!-- no translation found for keyguard_instructions_when_pattern_disabled (1332288268600329841) --> + <skip /> + <!-- no translation found for keyguard_network_locked_message (9169717779058037168) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message_short (494980561304211931) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (1445849005909260039) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (3481110395508637643) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions (5210891509995942250) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions_long (5968985489463870358) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_message_short (8340813989586622356) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5892940909699723544) --> + <skip /> + <!-- no translation found for keyguard_sim_locked_message (6875773413306380902) --> + <skip /> + <!-- no translation found for keyguard_sim_puk_locked_message (3747232467471801633) --> + <skip /> + <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (7975221805033614426) --> + <skip /> + <string name="keyguard_accessibility_widget_changed" msgid="5678624624681400191">"%1$s。%3$d的小部件%2$d。"</string> + <string name="keyguard_accessibility_add_widget" msgid="8273277058724924654">"添加小部件。"</string> + <string name="keyguard_accessibility_widget_empty_slot" msgid="1281505703307930757">"空白"</string> + <string name="keyguard_accessibility_unlock_area_expanded" msgid="2278106022311170299">"已展开解锁区域。"</string> + <string name="keyguard_accessibility_unlock_area_collapsed" msgid="6366992066936076396">"已折叠解锁区域。"</string> + <string name="keyguard_accessibility_widget" msgid="6527131039741808240">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g>小部件。"</string> + <string name="keyguard_accessibility_user_selector" msgid="1226798370913698896">"用户选择器"</string> + <string name="keyguard_accessibility_status" msgid="8008264603935930611">"状态"</string> + <string name="keyguard_accessibility_camera" msgid="8904231194181114603">"相机"</string> + <string name="keygaurd_accessibility_media_controls" msgid="262209654292161806">"媒体控制"</string> + <string name="keyguard_accessibility_widget_reorder_start" msgid="8736853615588828197">"已开始将小部件重新排序。"</string> + <string name="keyguard_accessibility_widget_reorder_end" msgid="7170190950870468320">"已完成小部件重新排序。"</string> + <string name="keyguard_accessibility_widget_deleted" msgid="4426204263929224434">"已删除小部件<xliff:g id="WIDGET_INDEX">%1$s</xliff:g>。"</string> + <string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"展开解锁区域。"</string> + <string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"滑动解锁。"</string> + <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"图案解锁。"</string> + <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"人脸解锁。"</string> + <string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"PIN 解锁。"</string> + <string name="keyguard_accessibility_password_unlock" msgid="7675777623912155089">"密码解锁。"</string> + <string name="keyguard_accessibility_pattern_area" msgid="7679891324509597904">"图案区域。"</string> + <string name="keyguard_accessibility_slide_area" msgid="6736064494019979544">"滑动区域。"</string> + <!-- no translation found for keyguard_accessibility_transport_prev_description (1337286538318543555) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_next_description (7073928300444909320) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_pause_description (8455979545295224302) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_play_description (8146417789511154044) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_stop_description (7656358482980912216) --> + <skip /> + <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> + <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string> + <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> + <string name="keyboardview_keycode_alt" msgid="4856868820040051939">"Alt"</string> + <string name="keyboardview_keycode_cancel" msgid="1203984017245783244">"取消"</string> + <string name="keyboardview_keycode_delete" msgid="3337914833206635744">"Delete"</string> + <string name="keyboardview_keycode_done" msgid="1992571118466679775">"完成"</string> + <string name="keyboardview_keycode_mode_change" msgid="4547387741906537519">"模式更改"</string> + <string name="keyboardview_keycode_shift" msgid="2270748814315147690">"Shift"</string> + <string name="keyboardview_keycode_enter" msgid="2985864015076059467">"Enter"</string> + <string name="description_target_unlock" msgid="2228524900439801453">"解锁"</string> + <string name="description_target_camera" msgid="969071997552486814">"相机"</string> + <string name="description_target_silent" msgid="893551287746522182">"静音"</string> + <string name="description_target_soundon" msgid="30052466675500172">"打开声音"</string> + <string name="description_target_search" msgid="3091587249776033139">"搜索"</string> + <string name="description_direction_up" msgid="7169032478259485180">"向上滑动以<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>。"</string> + <string name="description_direction_down" msgid="5087739728639014595">"向下滑动以<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>。"</string> + <string name="description_direction_left" msgid="7207478719805562165">"向左滑动以<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>。"</string> + <string name="description_direction_right" msgid="8034433242579600980">"向右滑动以<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>。"</string> + <string name="user_switched" msgid="3768006783166984410">"当前用户是<xliff:g id="NAME">%1$s</xliff:g>。"</string> + <string name="kg_emergency_call_label" msgid="684946192523830531">"紧急呼救"</string> + <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"忘记了图案"</string> + <string name="kg_wrong_pattern" msgid="1850806070801358830">"图案错误"</string> + <string name="kg_wrong_password" msgid="2333281762128113157">"密码错误"</string> + <string name="kg_wrong_pin" msgid="1131306510833563801">"PIN 有误"</string> + <string name="kg_too_many_failed_attempts_countdown" msgid="6358110221603297548">"请在 <xliff:g id="NUMBER">%d</xliff:g> 秒后重试。"</string> + <string name="kg_pattern_instructions" msgid="398978611683075868">"绘制您的图案"</string> + <string name="kg_sim_pin_instructions" msgid="2319508550934557331">"输入 SIM PIN"</string> + <string name="kg_pin_instructions" msgid="2377242233495111557">"输入 PIN"</string> + <string name="kg_password_instructions" msgid="5753646556186936819">"输入密码"</string> + <string name="kg_puk_enter_puk_hint" msgid="453227143861735537">"SIM 卡已被停用,需要输入 PUK 码才能继续使用。有关详情,请联系您的运营商。"</string> + <string name="kg_puk_enter_pin_hint" msgid="7871604527429602024">"请输入所需 PIN 码"</string> + <string name="kg_enter_confirm_pin_hint" msgid="325676184762529976">"请确认所需 PIN 码"</string> + <string name="kg_sim_unlock_progress_dialog_message" msgid="8950398016976865762">"正在解锁 SIM 卡..."</string> + <string name="kg_password_wrong_pin_code" msgid="1139324887413846912">"PIN 码有误。"</string> + <string name="kg_invalid_sim_pin_hint" msgid="8795159358110620001">"请输入 4 至 8 位数的 PIN。"</string> + <string name="kg_invalid_sim_puk_hint" msgid="7553388325654369575">"PUK 码应至少包含 8 位数字。"</string> + <string name="kg_invalid_puk" msgid="3638289409676051243">"请重新输入正确的 PUK 码。如果尝试错误次数过多,SIM 卡将永久停用。"</string> + <string name="kg_invalid_confirm_pin_hint" product="default" msgid="7003469261464593516">"PIN 码不匹配"</string> + <string name="kg_login_too_many_attempts" msgid="6486842094005698475">"图案尝试次数过多"</string> + <string name="kg_login_instructions" msgid="1100551261265506448">"要解锁,请登录您的 Google 帐户。"</string> + <string name="kg_login_username_hint" msgid="5718534272070920364">"用户名(电子邮件地址)"</string> + <string name="kg_login_password_hint" msgid="9057289103827298549">"密码"</string> + <string name="kg_login_submit_button" msgid="5355904582674054702">"登录"</string> + <string name="kg_login_invalid_input" msgid="5754664119319872197">"用户名或密码无效。"</string> + <string name="kg_login_account_recovery_hint" msgid="5690709132841752974">"忘记了用户名或密码?"\n"请访问 "<b>"google.com/accounts/recovery"</b>"。"</string> + <string name="kg_login_checking_password" msgid="1052685197710252395">"正在检查帐户…"</string> + <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="8276745642049502550">"您已经 <xliff:g id="NUMBER_0">%d</xliff:g> 次错误地输入了 PIN。"\n\n"请在 <xliff:g id="NUMBER_1">%d</xliff:g> 秒后重试。"</string> + <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="7813713389422226531">"您已经 <xliff:g id="NUMBER_0">%d</xliff:g> 次错误地输入了密码。"\n\n"请在 <xliff:g id="NUMBER_1">%d</xliff:g> 秒后重试。"</string> + <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="74089475965050805">"您已经 <xliff:g id="NUMBER_0">%d</xliff:g> 次错误地绘制了解锁图案。"\n\n"请在 <xliff:g id="NUMBER_1">%d</xliff:g> 秒后重试。"</string> + <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="1575557200627128949">"您已经 <xliff:g id="NUMBER_0">%d</xliff:g> 次错误地尝试解锁平板电脑。如果再尝试 <xliff:g id="NUMBER_1">%d</xliff:g> 次后仍不成功,平板电脑就会重置为出厂默认设置,而且所有用户数据都会丢失。"</string> + <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="4051015943038199910">"您已经 <xliff:g id="NUMBER_0">%d</xliff:g> 次错误地尝试解锁手机。如果再尝试 <xliff:g id="NUMBER_1">%d</xliff:g> 次后仍不成功,手机就会重置为出厂默认设置,而且所有用户数据都会丢失。"</string> + <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2072996269148483637">"您已经 <xliff:g id="NUMBER">%d</xliff:g> 次错误地尝试解锁平板电脑。平板电脑现在将重置为出厂默认设置。"</string> + <string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"您已经 <xliff:g id="NUMBER">%d</xliff:g> 次错误地尝试解锁手机。手机现在将重置为出厂默认设置。"</string> + <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"您已经 <xliff:g id="NUMBER_0">%d</xliff:g> 次错误地绘制了解锁图案。如果再尝试 <xliff:g id="NUMBER_1">%d</xliff:g> 次后仍不成功,系统就会要求您使用自己的电子邮件帐户解锁平板电脑。"\n\n"请在 <xliff:g id="NUMBER_2">%d</xliff:g> 秒后重试。"</string> + <string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"您已经 <xliff:g id="NUMBER_0">%d</xliff:g> 次错误地绘制了解锁图案。如果再尝试 <xliff:g id="NUMBER_1">%d</xliff:g> 次后仍不成功,系统就会要求您使用自己的电子邮件帐户解锁手机。"\n\n"请在 <xliff:g id="NUMBER_2">%d</xliff:g> 秒后重试。"</string> + <string name="kg_text_message_separator" product="default" msgid="4160700433287233771">" — "</string> + <string name="kg_reordering_delete_drop_target_text" msgid="7899202978204438708">"删除"</string> + <!-- no translation found for keyguard_transport_prev_description (8229108430245669854) --> + <skip /> + <!-- no translation found for keyguard_transport_next_description (4299258300283778305) --> + <skip /> + <!-- no translation found for keyguard_transport_pause_description (5093073338238310224) --> + <skip /> + <!-- no translation found for keyguard_transport_play_description (2924628863741150956) --> + <skip /> + <!-- no translation found for keyguard_transport_stop_description (3084179324810575787) --> + <skip /> + <!-- no translation found for keyguard_carrier_default (8700650403054042153) --> + <skip /> +</resources> diff --git a/packages/Keyguard/res/values-zh-rTW/strings.xml b/packages/Keyguard/res/values-zh-rTW/strings.xml new file mode 100644 index 000000000000..b17aa4536fd2 --- /dev/null +++ b/packages/Keyguard/res/values-zh-rTW/strings.xml @@ -0,0 +1,164 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* //device/apps/common/assets/res/any/strings.xml +** +** Copyright 2006, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="keyguard_password_enter_pin_code" msgid="3037685796058495017">"輸入 PIN 碼"</string> + <string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"輸入 PUK 碼和新 PIN 碼"</string> + <string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK 碼"</string> + <string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"新 PIN 碼"</string> + <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"輕觸即可輸入密碼"</font></string> + <string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"輸入密碼即可解鎖"</string> + <string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"輸入 PIN 即可解鎖"</string> + <string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"PIN 碼不正確。"</string> + <string name="keyguard_label_text" msgid="861796461028298424">"如要解鎖,請按 Menu 鍵,然後按 0。"</string> + <string name="faceunlock_multiple_failures" msgid="754137583022792429">"已超過人臉解鎖嘗試次數上限"</string> + <!-- no translation found for keyguard_charged (3272223906073492454) --> + <skip /> + <!-- no translation found for keyguard_plugged_in (8117572000639998388) --> + <skip /> + <!-- no translation found for keyguard_low_battery (8143808018719173859) --> + <skip /> + <!-- no translation found for keyguard_instructions_when_pattern_disabled (1332288268600329841) --> + <skip /> + <!-- no translation found for keyguard_network_locked_message (9169717779058037168) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message_short (494980561304211931) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (1445849005909260039) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (3481110395508637643) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions (5210891509995942250) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions_long (5968985489463870358) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_message_short (8340813989586622356) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5892940909699723544) --> + <skip /> + <!-- no translation found for keyguard_sim_locked_message (6875773413306380902) --> + <skip /> + <!-- no translation found for keyguard_sim_puk_locked_message (3747232467471801633) --> + <skip /> + <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (7975221805033614426) --> + <skip /> + <string name="keyguard_accessibility_widget_changed" msgid="5678624624681400191">"%1$s。第 %2$d 個小工具,共 %3$d 個。"</string> + <string name="keyguard_accessibility_add_widget" msgid="8273277058724924654">"新增小工具。"</string> + <string name="keyguard_accessibility_widget_empty_slot" msgid="1281505703307930757">"空白"</string> + <string name="keyguard_accessibility_unlock_area_expanded" msgid="2278106022311170299">"解鎖區域已展開。"</string> + <string name="keyguard_accessibility_unlock_area_collapsed" msgid="6366992066936076396">"解鎖區域已收合。"</string> + <string name="keyguard_accessibility_widget" msgid="6527131039741808240">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g>小工具。"</string> + <string name="keyguard_accessibility_user_selector" msgid="1226798370913698896">"使用者選取工具"</string> + <string name="keyguard_accessibility_status" msgid="8008264603935930611">"狀態"</string> + <string name="keyguard_accessibility_camera" msgid="8904231194181114603">"相機"</string> + <string name="keygaurd_accessibility_media_controls" msgid="262209654292161806">"媒體控制項"</string> + <string name="keyguard_accessibility_widget_reorder_start" msgid="8736853615588828197">"已開始將小工具重新排序。"</string> + <string name="keyguard_accessibility_widget_reorder_end" msgid="7170190950870468320">"小工具重新排序已完成。"</string> + <string name="keyguard_accessibility_widget_deleted" msgid="4426204263929224434">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g>小工具已刪除。"</string> + <string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"展開解鎖區域。"</string> + <string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"滑動解鎖。"</string> + <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"圖形解鎖。"</string> + <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"人臉解鎖。"</string> + <string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"PIN 解鎖。"</string> + <string name="keyguard_accessibility_password_unlock" msgid="7675777623912155089">"密碼解鎖。"</string> + <string name="keyguard_accessibility_pattern_area" msgid="7679891324509597904">"圖形區域。"</string> + <string name="keyguard_accessibility_slide_area" msgid="6736064494019979544">"滑動區域。"</string> + <!-- no translation found for keyguard_accessibility_transport_prev_description (1337286538318543555) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_next_description (7073928300444909320) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_pause_description (8455979545295224302) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_play_description (8146417789511154044) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_stop_description (7656358482980912216) --> + <skip /> + <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> + <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string> + <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> + <string name="keyboardview_keycode_alt" msgid="4856868820040051939">"Alt 鍵"</string> + <string name="keyboardview_keycode_cancel" msgid="1203984017245783244">"取消"</string> + <string name="keyboardview_keycode_delete" msgid="3337914833206635744">"Delete 鍵"</string> + <string name="keyboardview_keycode_done" msgid="1992571118466679775">"完成"</string> + <string name="keyboardview_keycode_mode_change" msgid="4547387741906537519">"模式變更"</string> + <string name="keyboardview_keycode_shift" msgid="2270748814315147690">"Shift 鍵"</string> + <string name="keyboardview_keycode_enter" msgid="2985864015076059467">"Enter 鍵"</string> + <string name="description_target_unlock" msgid="2228524900439801453">"解除鎖定"</string> + <string name="description_target_camera" msgid="969071997552486814">"相機"</string> + <string name="description_target_silent" msgid="893551287746522182">"靜音"</string> + <string name="description_target_soundon" msgid="30052466675500172">"開啟音效"</string> + <string name="description_target_search" msgid="3091587249776033139">"搜尋"</string> + <string name="description_direction_up" msgid="7169032478259485180">"向上滑動即可<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>。"</string> + <string name="description_direction_down" msgid="5087739728639014595">"向下滑動即可<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>。"</string> + <string name="description_direction_left" msgid="7207478719805562165">"向左滑動即可<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>。"</string> + <string name="description_direction_right" msgid="8034433242579600980">"向右滑動即可<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>。"</string> + <string name="user_switched" msgid="3768006783166984410">"目前的使用者是 <xliff:g id="NAME">%1$s</xliff:g>。"</string> + <string name="kg_emergency_call_label" msgid="684946192523830531">"緊急電話"</string> + <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"忘記圖形"</string> + <string name="kg_wrong_pattern" msgid="1850806070801358830">"圖形錯誤"</string> + <string name="kg_wrong_password" msgid="2333281762128113157">"密碼錯誤"</string> + <string name="kg_wrong_pin" msgid="1131306510833563801">"PIN 錯誤"</string> + <string name="kg_too_many_failed_attempts_countdown" msgid="6358110221603297548">"請在 <xliff:g id="NUMBER">%d</xliff:g> 秒後再試一次。"</string> + <string name="kg_pattern_instructions" msgid="398978611683075868">"畫出圖形"</string> + <string name="kg_sim_pin_instructions" msgid="2319508550934557331">"輸入 SIM PIN"</string> + <string name="kg_pin_instructions" msgid="2377242233495111557">"輸入 PIN"</string> + <string name="kg_password_instructions" msgid="5753646556186936819">"輸入密碼"</string> + <string name="kg_puk_enter_puk_hint" msgid="453227143861735537">"SIM 卡已遭停用,必須輸入 PUK 碼才能繼續使用。詳情請洽您的行動通訊業者。"</string> + <string name="kg_puk_enter_pin_hint" msgid="7871604527429602024">"輸入所需的 PIN 碼"</string> + <string name="kg_enter_confirm_pin_hint" msgid="325676184762529976">"確認所需的 PIN 碼"</string> + <string name="kg_sim_unlock_progress_dialog_message" msgid="8950398016976865762">"正在解除 SIM 卡鎖定..."</string> + <string name="kg_password_wrong_pin_code" msgid="1139324887413846912">"PIN 碼不正確。"</string> + <string name="kg_invalid_sim_pin_hint" msgid="8795159358110620001">"請輸入 4 到 8 碼的 PIN。"</string> + <string name="kg_invalid_sim_puk_hint" msgid="7553388325654369575">"PUK 碼至少必須為 8 碼。"</string> + <string name="kg_invalid_puk" msgid="3638289409676051243">"重新輸入正確的 PUK 碼。如果錯誤次數過多,SIM 卡將會永久停用。"</string> + <string name="kg_invalid_confirm_pin_hint" product="default" msgid="7003469261464593516">"PIN 碼不符"</string> + <string name="kg_login_too_many_attempts" msgid="6486842094005698475">"圖形嘗試次數過多"</string> + <string name="kg_login_instructions" msgid="1100551261265506448">"如要解除鎖定,請使用 Google 帳戶登入。"</string> + <string name="kg_login_username_hint" msgid="5718534272070920364">"使用者名稱 (電子郵件)"</string> + <string name="kg_login_password_hint" msgid="9057289103827298549">"密碼"</string> + <string name="kg_login_submit_button" msgid="5355904582674054702">"登入"</string> + <string name="kg_login_invalid_input" msgid="5754664119319872197">"使用者名稱或密碼無效。"</string> + <string name="kg_login_account_recovery_hint" msgid="5690709132841752974">"忘了使用者名稱或密碼?"\n"請前往 "<b>"google.com/accounts/recovery"</b>"。"</string> + <string name="kg_login_checking_password" msgid="1052685197710252395">"正在檢查帳戶…"</string> + <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="8276745642049502550">"您的 PIN 已輸錯 <xliff:g id="NUMBER_0">%d</xliff:g> 次。"\n\n"請在 <xliff:g id="NUMBER_1">%d</xliff:g> 秒後再試一次。"</string> + <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="7813713389422226531">"您的密碼已輸錯 <xliff:g id="NUMBER_0">%d</xliff:g> 次。"\n\n"請在 <xliff:g id="NUMBER_1">%d</xliff:g> 秒後再試一次。"</string> + <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="74089475965050805">"您的解鎖圖形已畫錯 <xliff:g id="NUMBER_0">%d</xliff:g> 次。"\n\n"請在 <xliff:g id="NUMBER_1">%d</xliff:g> 秒後再試一次。"</string> + <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="1575557200627128949">"您嘗試解除這個平板電腦的鎖定已失敗 <xliff:g id="NUMBER_0">%d</xliff:g> 次,目前還剩 <xliff:g id="NUMBER_1">%d</xliff:g> 次機會。如果失敗次數超過限制,平板電腦將恢復原廠設定,所有使用者資料都會遺失。"</string> + <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="4051015943038199910">"您嘗試解除這支手機的鎖定已失敗 <xliff:g id="NUMBER_0">%d</xliff:g> 次,目前還剩 <xliff:g id="NUMBER_1">%d</xliff:g> 次機會。如果失敗次數超過限制,手機將恢復原廠設定,所有使用者資料都會遺失。"</string> + <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2072996269148483637">"您嘗試解除這個平板電腦的鎖定已失敗 <xliff:g id="NUMBER">%d</xliff:g> 次,平板電腦現在將恢復原廠設定。"</string> + <string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"您嘗試解除這支手機的鎖定已失敗 <xliff:g id="NUMBER">%d</xliff:g> 次,手機現在將恢復原廠設定。"</string> + <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"您的解鎖圖形已畫錯 <xliff:g id="NUMBER_0">%d</xliff:g> 次,如果再嘗試 <xliff:g id="NUMBER_1">%d</xliff:g> 次仍未成功,系統就會要求您透過電子郵件帳戶解除平板電腦的鎖定狀態。"\n\n"請在 <xliff:g id="NUMBER_2">%d</xliff:g> 秒後再試一次。"</string> + <string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"您的解鎖圖形已畫錯 <xliff:g id="NUMBER_0">%d</xliff:g> 次,如果再嘗試 <xliff:g id="NUMBER_1">%d</xliff:g> 次仍未成功,系統就會要求您透過電子郵件帳戶解除手機的鎖定狀態。"\n\n"請在 <xliff:g id="NUMBER_2">%d</xliff:g> 秒後再試一次。"</string> + <string name="kg_text_message_separator" product="default" msgid="4160700433287233771">" — "</string> + <string name="kg_reordering_delete_drop_target_text" msgid="7899202978204438708">"移除"</string> + <!-- no translation found for keyguard_transport_prev_description (8229108430245669854) --> + <skip /> + <!-- no translation found for keyguard_transport_next_description (4299258300283778305) --> + <skip /> + <!-- no translation found for keyguard_transport_pause_description (5093073338238310224) --> + <skip /> + <!-- no translation found for keyguard_transport_play_description (2924628863741150956) --> + <skip /> + <!-- no translation found for keyguard_transport_stop_description (3084179324810575787) --> + <skip /> + <!-- no translation found for keyguard_carrier_default (8700650403054042153) --> + <skip /> +</resources> diff --git a/packages/Keyguard/res/values-zu/strings.xml b/packages/Keyguard/res/values-zu/strings.xml new file mode 100644 index 000000000000..89ce09049419 --- /dev/null +++ b/packages/Keyguard/res/values-zu/strings.xml @@ -0,0 +1,164 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* //device/apps/common/assets/res/any/strings.xml +** +** Copyright 2006, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="keyguard_password_enter_pin_code" msgid="3037685796058495017">"Faka ikhodi ye-PIN"</string> + <string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Faka i-PUK nephinikhodi entsha"</string> + <string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"Ikhodi le-PUK"</string> + <string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Iphinikhodi entsha"</string> + <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"Thinta ukubhala iphasiwedi"</font></string> + <string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Bhala iphasiwedi ukuze kuvuleke"</string> + <string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Faka i-PIN ukuvula"</string> + <string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Ikhodi ye-PIN engalungile!"</string> + <string name="keyguard_label_text" msgid="861796461028298424">"Ukuvula, chofoza Menyu bese 0."</string> + <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Ukuzama Kokuvula Ubuso Okuningi kudluliwe"</string> + <!-- no translation found for keyguard_charged (3272223906073492454) --> + <skip /> + <!-- no translation found for keyguard_plugged_in (8117572000639998388) --> + <skip /> + <!-- no translation found for keyguard_low_battery (8143808018719173859) --> + <skip /> + <!-- no translation found for keyguard_instructions_when_pattern_disabled (1332288268600329841) --> + <skip /> + <!-- no translation found for keyguard_network_locked_message (9169717779058037168) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message_short (494980561304211931) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (1445849005909260039) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_message (3481110395508637643) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions (5210891509995942250) --> + <skip /> + <!-- no translation found for keyguard_missing_sim_instructions_long (5968985489463870358) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_message_short (8340813989586622356) --> + <skip /> + <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5892940909699723544) --> + <skip /> + <!-- no translation found for keyguard_sim_locked_message (6875773413306380902) --> + <skip /> + <!-- no translation found for keyguard_sim_puk_locked_message (3747232467471801633) --> + <skip /> + <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (7975221805033614426) --> + <skip /> + <string name="keyguard_accessibility_widget_changed" msgid="5678624624681400191">"%1$s. iwijethi %2$d ye-%3$d."</string> + <string name="keyguard_accessibility_add_widget" msgid="8273277058724924654">"Engeza iwijethi."</string> + <string name="keyguard_accessibility_widget_empty_slot" msgid="1281505703307930757">"Akunalutho"</string> + <string name="keyguard_accessibility_unlock_area_expanded" msgid="2278106022311170299">"Indawo yokuvula inwetshisiwe."</string> + <string name="keyguard_accessibility_unlock_area_collapsed" msgid="6366992066936076396">"Indawo yokuvula inciphisiwe."</string> + <string name="keyguard_accessibility_widget" msgid="6527131039741808240">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g> iwijethi."</string> + <string name="keyguard_accessibility_user_selector" msgid="1226798370913698896">"Isikhethi somsebenzisi"</string> + <string name="keyguard_accessibility_status" msgid="8008264603935930611">"Isimo"</string> + <string name="keyguard_accessibility_camera" msgid="8904231194181114603">"Ikhamera"</string> + <string name="keygaurd_accessibility_media_controls" msgid="262209654292161806">"Izilawuli zemidiya"</string> + <string name="keyguard_accessibility_widget_reorder_start" msgid="8736853615588828197">"Ukuhlelwa kabusha kwewijethi kuqalile"</string> + <string name="keyguard_accessibility_widget_reorder_end" msgid="7170190950870468320">"Ukuhlelwa kabusha kwewijethi kuphelile."</string> + <string name="keyguard_accessibility_widget_deleted" msgid="4426204263929224434">"Iwijethi <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> isusiwe."</string> + <string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"Nwebisa indawo yokuvula."</string> + <string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"Ukuvula ngokuslayida."</string> + <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"Ukuvula ngephethini."</string> + <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"Vula ngobuso"</string> + <string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"Ukuvula ngephinikhodi."</string> + <string name="keyguard_accessibility_password_unlock" msgid="7675777623912155089">"Ukuvula ngephasiwedi."</string> + <string name="keyguard_accessibility_pattern_area" msgid="7679891324509597904">"Indawo yephethini."</string> + <string name="keyguard_accessibility_slide_area" msgid="6736064494019979544">"Indawo yokushelelisa."</string> + <!-- no translation found for keyguard_accessibility_transport_prev_description (1337286538318543555) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_next_description (7073928300444909320) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_pause_description (8455979545295224302) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_play_description (8146417789511154044) --> + <skip /> + <!-- no translation found for keyguard_accessibility_transport_stop_description (7656358482980912216) --> + <skip /> + <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> + <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string> + <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> + <string name="keyboardview_keycode_alt" msgid="4856868820040051939">"i-ALT"</string> + <string name="keyboardview_keycode_cancel" msgid="1203984017245783244">"Khansela"</string> + <string name="keyboardview_keycode_delete" msgid="3337914833206635744">"Susa"</string> + <string name="keyboardview_keycode_done" msgid="1992571118466679775">"Kwenziwe"</string> + <string name="keyboardview_keycode_mode_change" msgid="4547387741906537519">"Ukushintsha kwendlela esetshenziswayo"</string> + <string name="keyboardview_keycode_shift" msgid="2270748814315147690">"Beka kwenye indawo"</string> + <string name="keyboardview_keycode_enter" msgid="2985864015076059467">"Faka"</string> + <string name="description_target_unlock" msgid="2228524900439801453">"Vula"</string> + <string name="description_target_camera" msgid="969071997552486814">"Ikhamera"</string> + <string name="description_target_silent" msgid="893551287746522182">"Thulile"</string> + <string name="description_target_soundon" msgid="30052466675500172">"Umsindo uvuliwe"</string> + <string name="description_target_search" msgid="3091587249776033139">"Sesha"</string> + <string name="description_direction_up" msgid="7169032478259485180">"Shelelisela ngenhla ku-<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_down" msgid="5087739728639014595">"Shelelisela ngezansi ku-<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_left" msgid="7207478719805562165">"Shelelisela ngakwesokunxele ku-<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="description_direction_right" msgid="8034433242579600980">"Shelelisela ngakwesokudla ku-<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string> + <string name="user_switched" msgid="3768006783166984410">"Umsebenzisi wamanje <xliff:g id="NAME">%1$s</xliff:g>."</string> + <string name="kg_emergency_call_label" msgid="684946192523830531">"Ucingo lwezimo eziphuthumayo"</string> + <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Ukhohlwe iphethini?"</string> + <string name="kg_wrong_pattern" msgid="1850806070801358830">"Iphatheni engalungile"</string> + <string name="kg_wrong_password" msgid="2333281762128113157">"Iphasiwedi engalungile"</string> + <string name="kg_wrong_pin" msgid="1131306510833563801">"Iphinikhodi engalungile"</string> + <string name="kg_too_many_failed_attempts_countdown" msgid="6358110221603297548">"Zama futhi emasekhondini angu-<xliff:g id="NUMBER">%d</xliff:g>."</string> + <string name="kg_pattern_instructions" msgid="398978611683075868">"Dweba iphethini"</string> + <string name="kg_sim_pin_instructions" msgid="2319508550934557331">"Faka iphinikhodi ye-SIM"</string> + <string name="kg_pin_instructions" msgid="2377242233495111557">"Faka iphinikhodi"</string> + <string name="kg_password_instructions" msgid="5753646556186936819">"Faka iphasiwedi"</string> + <string name="kg_puk_enter_puk_hint" msgid="453227143861735537">"I-SIM manje ikhutshaziwe. Faka ikhodi ye-PUK ukuze uqhubeke. Xhumana nenkampani yenethiwekhi ngemininingwane."</string> + <string name="kg_puk_enter_pin_hint" msgid="7871604527429602024">"Faka iphinikhodi oyithandayo"</string> + <string name="kg_enter_confirm_pin_hint" msgid="325676184762529976">"Qiniseka iphinikhodi oyithandayo"</string> + <string name="kg_sim_unlock_progress_dialog_message" msgid="8950398016976865762">"Ivula ikhadi le-SIM..."</string> + <string name="kg_password_wrong_pin_code" msgid="1139324887413846912">"Iphinikhodi engalungile."</string> + <string name="kg_invalid_sim_pin_hint" msgid="8795159358110620001">"Thayipha iphinikhodi enezinombolo ezingu-4 kuya kwezingu-8."</string> + <string name="kg_invalid_sim_puk_hint" msgid="7553388325654369575">"Ikhodi ye-PUK kufanele ibe yizinombolo ezingu-8 noma eziningi."</string> + <string name="kg_invalid_puk" msgid="3638289409676051243">"Faka kabusha ikhodi ye-PUK elungile. Imizamo ephindiwe izokhubaza unaphakade i-SIM."</string> + <string name="kg_invalid_confirm_pin_hint" product="default" msgid="7003469261464593516">"Iphinikhodi ayifani"</string> + <string name="kg_login_too_many_attempts" msgid="6486842094005698475">"Kunemizamo eminingi kakhulu yephathini"</string> + <string name="kg_login_instructions" msgid="1100551261265506448">"Ukuvula, ngena ngemvume kwi-akhawunti ye-Google"</string> + <string name="kg_login_username_hint" msgid="5718534272070920364">"Igama lomsebenzisi (i-imeyli)"</string> + <string name="kg_login_password_hint" msgid="9057289103827298549">"Iphasiwedi"</string> + <string name="kg_login_submit_button" msgid="5355904582674054702">"Ngena ngemvume"</string> + <string name="kg_login_invalid_input" msgid="5754664119319872197">"Igama lomsebezisi elingalungile noma iphasiwedi."</string> + <string name="kg_login_account_recovery_hint" msgid="5690709132841752974">"Ukhohlwe igama lomsebenzisi noma iphasiwedi?"\n"Vakashela"<b>"google.com/accounts/recovery"</b></string> + <string name="kg_login_checking_password" msgid="1052685197710252395">"Ukuhlola i-akhawunti…"</string> + <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="8276745642049502550">"Ubhale iphinikhodi ykho ngendlela engafanele izikhathi ezingu-<xliff:g id="NUMBER_0">%d</xliff:g>. "\n\n"Zama futhi emasekhondini angu-<xliff:g id="NUMBER_1">%d</xliff:g>."</string> + <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="7813713389422226531">"Ubhale iphasiwedi yakho ngendlela engafanele <xliff:g id="NUMBER_0">%d</xliff:g> izikhathi. "\n\n"Zama futhi emasekhondini angu-<xliff:g id="NUMBER_1">%d</xliff:g>."</string> + <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="74089475965050805">"Udwebe iphathini yakho yokuvula ngendlela engafanele-<xliff:g id="NUMBER_0">%d</xliff:g>. "\n\n" Zama futhi emasekhondini angu-<xliff:g id="NUMBER_1">%d</xliff:g>"</string> + <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="1575557200627128949">"Uzame ngokusebenzisa indlela engafanele ukuvula ithebhulethi izikhathi ezingu-<xliff:g id="NUMBER_0">%d</xliff:g>. Ngemuva kokuzama ngaphandle kwempumelelo okungu-<xliff:g id="NUMBER_1">%d</xliff:g>, ithebhulethi izobuyiselwa kwizimiso zasembonini futhi yonke imininingwane yomsebenzisi izolahleka."</string> + <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="4051015943038199910">"Uzame ngokusebenzisa indlela engafanele ukuvula ifoni izikhathi ezingu-<xliff:g id="NUMBER_0">%d</xliff:g>. Ngemuva kokuzama ngaphandle kwempumelelo okungu-<xliff:g id="NUMBER_1">%d</xliff:g>, ifoni izobuyiselwa kwizimiso zasembonini futhi yonke imininingwane yomsebenzisi izolahleka."</string> + <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2072996269148483637">"Uzame ukuvula ngendlela engafanele ifoni izikhathi ezingu-<xliff:g id="NUMBER">%d</xliff:g>. Ithebhulethi manje isizosethwa kabusha ibe yizimiso ezizenzakalelayo."</string> + <string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"Uzame ukuvula ngendlela engafanele ifoni izikhathi ezingu-<xliff:g id="NUMBER">%d</xliff:g>. Ifoni manje isizosethwa kabusha ibe yizimiso ezizenzakalelayo."</string> + <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Udwebe ngokungalungile iphathini yakho yokuvula izikhathi ezingu-<xliff:g id="NUMBER_0">%d</xliff:g>. Emva <xliff:g id="NUMBER_1">%d</xliff:g> kweminye imizamo engaphumelelanga, uzocelwa ukuvula ithebhulethi yakho usebenzisa ukungena ngemvume kwi-Google."\n\n" Sicela uzame futhi kwengu-<xliff:g id="NUMBER_2">%d</xliff:g> imizuzwana."</string> + <string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"Ukulayisha ungenisa iphathini yakho yokuvula ngendlela engalungile izikhathi ezi-<xliff:g id="NUMBER_0">%d</xliff:g> Emva kweminye imizamo engu-<xliff:g id="NUMBER_1">%d</xliff:g>, uzocelwa ukuvula ifoni yakho usebenzisa ukungena ngemvume ku-Google"\n\n" Zame futhi emumva kwengu- <xliff:g id="NUMBER_2">%d</xliff:g> imizuzwana."</string> + <string name="kg_text_message_separator" product="default" msgid="4160700433287233771">" — "</string> + <string name="kg_reordering_delete_drop_target_text" msgid="7899202978204438708">"Susa"</string> + <!-- no translation found for keyguard_transport_prev_description (8229108430245669854) --> + <skip /> + <!-- no translation found for keyguard_transport_next_description (4299258300283778305) --> + <skip /> + <!-- no translation found for keyguard_transport_pause_description (5093073338238310224) --> + <skip /> + <!-- no translation found for keyguard_transport_play_description (2924628863741150956) --> + <skip /> + <!-- no translation found for keyguard_transport_stop_description (3084179324810575787) --> + <skip /> + <!-- no translation found for keyguard_carrier_default (8700650403054042153) --> + <skip /> +</resources> diff --git a/packages/Keyguard/res/values/activitystrings.xml b/packages/Keyguard/res/values/activitystrings.xml new file mode 100644 index 000000000000..5af9deabe5d1 --- /dev/null +++ b/packages/Keyguard/res/values/activitystrings.xml @@ -0,0 +1,34 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* //device/apps/common/assets/res/any/strings.xml +** +** Copyright 2006, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="app_name">KeyguardTestActivity</string> + <string name="secure_app_name">UnifiedCamera</string> + <string name="none_menu_item">No security</string> + <string name="pin_menu_item">PIN</string> + <string name="password_menu_item">Password</string> + <string name="pattern_menu_item">Pattern</string> + <string name="sim_pin_menu_item">SIM PIN</string> + <string name="sim_puk_menu_item">SIM PUK</string> + <string name="add_widget_item">Choose widget...</string> + <string name="on_screen_turned_off">onScreenTurnedOff</string> + <string name="on_screen_turned_on">onScreenTurnedOn</string> + <string name="do_keyguard">doKeyguard</string> + <string name="verify_unlock">verifyUnlock</string> +</resources> diff --git a/packages/Keyguard/res/values/alias.xml b/packages/Keyguard/res/values/alias.xml new file mode 100644 index 000000000000..47291b2ecae1 --- /dev/null +++ b/packages/Keyguard/res/values/alias.xml @@ -0,0 +1,52 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* //device/apps/common/assets/res/any/colors.xml +** +** Copyright 2013, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> +<resources> + + <!-- Alias used to reference framework color for transparency. --> + <item type="color" name="transparent">@android:color/transparent</item> + + <!-- Alias used to reference framework drawable in keyguard. --> + <item type="drawable" name="stat_sys_warning">@android:drawable/stat_sys_warning</item> + + <!-- Alias used to reference framework drawable in keyguard. --> + <item type="drawable" name="ic_media_pause">@android:drawable/ic_media_pause</item> + + <!-- Alias used to reference framework drawable in keyguard. --> + <item type="drawable" name="ic_media_stop">@*android:drawable/ic_media_stop</item> + + <!-- Alias used to reference framework drawable in keyguard. --> + <item type="drawable" name="ic_contact_picture">@*android:drawable/ic_contact_picture</item> + + <!-- Alias used to reference framework drawable in keyguard. --> + <item type="drawable" name="ic_lock_idle_alarm">@*android:drawable/ic_lock_idle_alarm</item> + + <!-- Alias used to reference framework "OK" string in keyguard. --> + <item type="string" name="ok">@*android:string/ok</item> + + <!-- Alias used to reference framework "OK" string in keyguard. --> + <item type="string" name="system_ui_date_pattern">@*android:string/system_ui_date_pattern</item> + + <!-- Alias used to reference framework configuration for screen rotation. --> + <item type="bool" name="config_enableLockScreenRotation">@*android:bool/config_enableLockScreenRotation</item> + + <!-- Alias used to reference framework activity duration. --> + <item type="integer" name="config_activityDefaultDur">@*android:integer/config_activityDefaultDur</item> + +</resources>
\ No newline at end of file diff --git a/packages/Keyguard/res/values/arrays.xml b/packages/Keyguard/res/values/arrays.xml new file mode 100644 index 000000000000..550f80c34adb --- /dev/null +++ b/packages/Keyguard/res/values/arrays.xml @@ -0,0 +1,93 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* //device/apps/common/assets/res/any/colors.xml +** +** Copyright 2006, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + + <!-- Resources for GlowPadView in LockScreen --> + <array name="lockscreen_targets_when_silent"> + <item>@drawable/ic_lockscreen_unlock</item> + <item>@drawable/ic_action_assist_generic</item> + <item>@drawable/ic_lockscreen_soundon</item> + <item>@null</item> + </array> + + <array name="lockscreen_target_descriptions_when_silent"> + <item>@string/description_target_unlock</item> + <item>@string/description_target_search</item> + <item>@string/description_target_soundon</item> + <item>@null</item> + </array> + + <array name="lockscreen_direction_descriptions"> + <item>@string/description_direction_right</item> + <item>@string/description_direction_up</item> + <item>@string/description_direction_left</item> + <item>@null</item> + </array> + + <array name="lockscreen_targets_when_soundon"> + <item>@drawable/ic_lockscreen_unlock</item> + <item>@drawable/ic_action_assist_generic</item> + <item>@drawable/ic_lockscreen_silent</item> + <item>@null</item> + </array> + + <array name="lockscreen_target_descriptions_when_soundon"> + <item>@string/description_target_unlock</item> + <item>@string/description_target_search</item> + <item>@string/description_target_silent</item> + <item>@null</item> + </array> + + <array name="lockscreen_targets_with_camera"> + <item>@drawable/ic_lockscreen_unlock</item> + <item>@drawable/ic_action_assist_generic</item> + <item>@drawable/ic_lockscreen_camera</item> + <item>@null</item> + </array> + + <array name="lockscreen_target_descriptions_with_camera"> + <item>@string/description_target_unlock</item> + <item>@string/description_target_search</item> + <item>@string/description_target_camera</item> + <item>@null</item> + </array> + + <array name="lockscreen_targets_unlock_only"> + <item>@drawable/ic_lockscreen_unlock</item> + </array> + + <array name="lockscreen_target_descriptions_unlock_only"> + <item>@string/description_target_unlock</item> + </array> + + <!-- list of 3- or 4-letter mnemonics for a 10-key numeric keypad --> + <string-array translatable="false" name="lockscreen_num_pad_klondike"> + <item></item><!-- 0 --> + <item></item><!-- 1 --> + <item>ABC</item><!-- 2 --> + <item>DEF</item><!-- 3 --> + <item>GHI</item><!-- 4 --> + <item>JKL</item><!-- 5 --> + <item>MNO</item><!-- 6 --> + <item>PQRS</item><!-- 7 --> + <item>TUV</item><!-- 8 --> + <item>WXYZ</item><!-- 9 --> + </string-array> +</resources> diff --git a/packages/Keyguard/res/values/attrs.xml b/packages/Keyguard/res/values/attrs.xml new file mode 100644 index 000000000000..e045dd206648 --- /dev/null +++ b/packages/Keyguard/res/values/attrs.xml @@ -0,0 +1,136 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2006 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. +--> + +<!-- Formatting note: terminate all comments with a period, to avoid breaking + the documentation output. To suppress comment lines from the documentation + output, insert an eat-comment element after the comment lines. +--> + +<resources> + <!-- Standard gravity constant that a child supplies to its parent. + Defines how the child view should be positioned, on both the X and Y axes, within its enclosing layout. --> + <attr name="layout_gravity"> + <!-- Push object to the top of its container, not changing its size. --> + <flag name="top" value="0x30" /> + <!-- Push object to the bottom of its container, not changing its size. --> + <flag name="bottom" value="0x50" /> + <!-- Push object to the left of its container, not changing its size. --> + <flag name="left" value="0x03" /> + <!-- Push object to the right of its container, not changing its size. --> + <flag name="right" value="0x05" /> + <!-- Place object in the vertical center of its container, not changing its size. --> + <flag name="center_vertical" value="0x10" /> + <!-- Grow the vertical size of the object if needed so it completely fills its container. --> + <flag name="fill_vertical" value="0x70" /> + <!-- Place object in the horizontal center of its container, not changing its size. --> + <flag name="center_horizontal" value="0x01" /> + <!-- Grow the horizontal size of the object if needed so it completely fills its container. --> + <flag name="fill_horizontal" value="0x07" /> + <!-- Place the object in the center of its container in both the vertical and horizontal axis, not changing its size. --> + <flag name="center" value="0x11" /> + <!-- Grow the horizontal and vertical size of the object if needed so it completely fills its container. --> + <flag name="fill" value="0x77" /> + <!-- Additional option that can be set to have the top and/or bottom edges of + the child clipped to its container's bounds. + The clip will be based on the vertical gravity: a top gravity will clip the bottom + edge, a bottom gravity will clip the top edge, and neither will clip both edges. --> + <flag name="clip_vertical" value="0x80" /> + <!-- Additional option that can be set to have the left and/or right edges of + the child clipped to its container's bounds. + The clip will be based on the horizontal gravity: a left gravity will clip the right + edge, a right gravity will clip the left edge, and neither will clip both edges. --> + <flag name="clip_horizontal" value="0x08" /> + <!-- Push object to the beginning of its container, not changing its size. --> + <flag name="start" value="0x00800003" /> + <!-- Push object to the end of its container, not changing its size. --> + <flag name="end" value="0x00800005" /> + </attr> + + + <!-- PagedView specific attributes. These attributes are used to customize + a PagedView view in XML files. --> + <declare-styleable name="PagedView"> + <!-- The space between adjacent pages of the PagedView. --> + <attr name="pageSpacing" format="dimension" /> + <!-- The padding for the scroll indicator area --> + <attr name="scrollIndicatorPaddingLeft" format="dimension" /> + <attr name="scrollIndicatorPaddingRight" format="dimension" /> + </declare-styleable> + + <declare-styleable name="KeyguardGlowStripView"> + <attr name="dotSize" format="dimension" /> + <attr name="numDots" format="integer" /> + <attr name="glowDot" format="reference" /> + <attr name="leftToRight" format="boolean" /> + </declare-styleable> + + <!-- Some child types have special behavior. --> + <attr name="layout_childType"> + <!-- No special behavior. Layout will proceed as normal. --> + <enum name="none" value="0" /> + <!-- Widget container. + This will be resized in response to certain events. --> + <enum name="widget" value="1" /> + <!-- Security challenge container. + This will be dismissed/shown in response to certain events, + possibly obscuring widget elements. --> + <enum name="challenge" value="2" /> + <!-- User switcher. + This will consume space from the total layout area. --> + <enum name="userSwitcher" value="3" /> + <!-- Scrim. This will block access to child views that + come before it in the child list in bouncer mode. --> + <enum name="scrim" value="4" /> + <!-- The home for widgets. All widgets will be descendents of this. --> + <enum name="widgets" value="5" /> + <!-- This is a handle that is used for expanding the + security challenge container when it is collapsed. --> + <enum name="expandChallengeHandle" value="6" /> + <!-- Delete drop target. This will be the drop target to delete pages. --> + <enum name="pageDeleteDropTarget" value="7" /> + </attr> + + <declare-styleable name="SlidingChallengeLayout_Layout"> + <attr name="layout_childType" /> + <attr name="layout_maxHeight" format="dimension" /> + </declare-styleable> + + <declare-styleable name="MultiPaneChallengeLayout"> + <!-- Influences how layout_centerWithinArea behaves --> + <attr name="android:orientation" /> + </declare-styleable> + + <declare-styleable name="MultiPaneChallengeLayout_Layout"> + <!-- Percentage of the screen this child should consume or center within. + If 0/default, the view will be measured by standard rules + as if this were a FrameLayout. --> + <attr name="layout_centerWithinArea" format="float" /> + <attr name="layout_childType" /> + <attr name="layout_gravity" /> + <attr name="layout_maxWidth" format="dimension" /> + <attr name="layout_maxHeight" /> + </declare-styleable> + + <declare-styleable name="KeyguardSecurityViewFlipper_Layout"> + <attr name="layout_maxWidth" /> + <attr name="layout_maxHeight" /> + </declare-styleable> + + <declare-styleable name="NumPadKey"> + <attr name="digit" format="integer" /> + <attr name="textView" format="reference" /> + </declare-styleable> +</resources> diff --git a/packages/Keyguard/res/values/bools.xml b/packages/Keyguard/res/values/bools.xml new file mode 100644 index 000000000000..a9f69e5f29e3 --- /dev/null +++ b/packages/Keyguard/res/values/bools.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2011 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<resources> + <bool name="kg_enable_camera_default_widget">true</bool> + <bool name="kg_center_small_widgets_vertically">false</bool> + <bool name="kg_top_align_page_shrink_on_bouncer_visible">true</bool> + <bool name="kg_show_ime_at_screen_on">true</bool> +</resources> diff --git a/packages/Keyguard/res/values/colors.xml b/packages/Keyguard/res/values/colors.xml new file mode 100644 index 000000000000..0c56a43301ca --- /dev/null +++ b/packages/Keyguard/res/values/colors.xml @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2012 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<resources> + <!-- Keyguard colors --> + <color name="keyguard_avatar_frame_color">#ffffffff</color> + <color name="keyguard_avatar_frame_shadow_color">#80000000</color> + <color name="keyguard_avatar_nick_color">#ffffffff</color> + <color name="keyguard_avatar_frame_pressed_color">#ff35b5e5</color> + <color name="kg_widget_pager_gradient">#ffffffff</color> + + <!-- FaceLock --> + <color name="facelock_spotlight_mask">#CC000000</color> +</resources> diff --git a/core/res/res/layout/keyguard_multi_user_selector_widget.xml b/packages/Keyguard/res/values/config.xml index fc126fec9a1c..de17c4b5df33 100644 --- a/core/res/res/layout/keyguard_multi_user_selector_widget.xml +++ b/packages/Keyguard/res/values/config.xml @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="utf-8"?> <!-- -** +/* ** Copyright 2009, The Android Open Source Project ** -** Licensed under the Apache License, Version 2.0 (the "License") +** 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 ** @@ -17,10 +17,16 @@ */ --> -<!-- This is a view that shows general status information in Keyguard. --> -<com.android.internal.policy.impl.keyguard.KeyguardWidgetFrame - xmlns:android="http://schemas.android.com/apk/res/android" - android:id="@+id/keyguard_multi_user_selector" - android:layout_width="match_parent" - android:layout_height="match_parent"> -</com.android.internal.policy.impl.keyguard.KeyguardWidgetFrame>
\ No newline at end of file +<!-- These resources are around just to allow their values to be customized --> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + + <!-- Package name for default keyguard appwidget [DO NOT TRANSLATE] --> + <string name="widget_default_package_name"></string> + + <!-- Class name for default keyguard appwidget [DO NOT TRANSLATE] --> + <string name="widget_default_class_name"></string> + + <!-- Allow the menu hard key to be disabled in LockScreen on some devices [DO NOT TRANSLATE] --> + <bool name="config_disableMenuKeyInLockScreen">false</bool> + +</resources> diff --git a/packages/Keyguard/res/values/dimens.xml b/packages/Keyguard/res/values/dimens.xml new file mode 100644 index 000000000000..fde63c4d7e5f --- /dev/null +++ b/packages/Keyguard/res/values/dimens.xml @@ -0,0 +1,167 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* //device/apps/common/assets/res/any/dimens.xml +** +** Copyright 2006, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> +<resources> + <!-- Default height of a key in the password keyboard for alpha (used by keyguard) --> + <dimen name="password_keyboard_key_height_alpha">56dip</dimen> + <!-- Default height of a key in the password keyboard for numeric (used by keyguard) --> + <dimen name="password_keyboard_key_height_numeric">56dip</dimen> + <!-- Default correction for the space key in the password keyboard (used by keyguard) --> + <dimen name="password_keyboard_spacebar_vertical_correction">4dip</dimen> + <!-- Default horizontal gap between keys in the password keyboard (used by keyguard) --> + <dimen name="password_keyboard_horizontalGap">3dip</dimen> + <!-- Default vertical gap between keys in the password keyboard (used by keyguard) --> + <dimen name="password_keyboard_verticalGap">9dip</dimen> + + <!-- Size of lockscreen outerring on unsecure unlock LockScreen --> + <dimen name="keyguard_lockscreen_outerring_diameter">270dp</dimen> + + <!-- Default target placement radius for GlowPadView. Should be 1/2 of outerring diameter. --> + <dimen name="glowpadview_target_placement_radius">135dip</dimen> + + <!-- Default glow radius for GlowPadView --> + <dimen name="glowpadview_glow_radius">75dip</dimen> + + <!-- Default distance beyond which GlowPadView snaps to the matching target --> + <dimen name="glowpadview_snap_margin">40dip</dimen> + + <!-- Default distance from each snap target that GlowPadView considers a "hit" --> + <dimen name="glowpadview_inner_radius">15dip</dimen> + + <!-- Size of clock font in LockScreen on Unsecure unlock screen. --> + <dimen name="keyguard_lockscreen_clock_font_size">80dip</dimen> + + <!-- Size of status line font on Unsecure unlock LockScreen. --> + <dimen name="keyguard_lockscreen_status_line_font_size">14dip</dimen> + + <!-- Size of right margin on Unsecure unlock LockScreen --> + <dimen name="keyguard_lockscreen_status_line_font_right_margin">42dip</dimen> + + <!-- Size of top margin on Clock font to edge on unlock LockScreen --> + <dimen name="keyguard_lockscreen_status_line_clockfont_top_margin">22dip</dimen> + + <!-- Size of top margin on Clock font to edge on unlock LockScreen --> + <dimen name="keyguard_lockscreen_status_line_clockfont_bottom_margin">12dip</dimen> + + <!-- Padding on left margin of PIN text entry field to center it when del button is showing --> + <dimen name="keyguard_lockscreen_pin_margin_left">40dip</dimen> + + <!-- Height of FaceUnlock view in keyguard --> + <dimen name="face_unlock_height">330dip</dimen> + + <!-- Keyguard dimensions --> + <!-- TEMP --> + <dimen name="kg_security_panel_height">600dp</dimen> + + <!-- Height of security view in keyguard. --> + <dimen name="kg_security_view_height">480dp</dimen> + + <!-- Width of widget view in keyguard. --> + <dimen name="kg_widget_view_width">0dp</dimen> + + <!-- Height of widget view in keyguard. --> + <dimen name="kg_widget_view_height">0dp</dimen> + + <!-- Size of the clock font in keyguard's status view --> + <dimen name="kg_status_clock_font_size">75dp</dimen> + + <!-- Size of the date font in keyguard's status view --> + <dimen name="kg_status_date_font_size">15dp</dimen> + + <!-- Size of the generic status lines keyguard's status view --> + <dimen name="kg_status_line_font_size">13dp</dimen> + + <!-- Size of margin on the right of keyguard's status view --> + <dimen name="kg_status_line_font_right_margin">16dp</dimen> + + <!-- Top margin for the clock view --> + <dimen name="kg_clock_top_margin">-16dp</dimen> + + <!-- Horizontal gap between keys in PIN and SIM PIN numeric keyboards in keyguard --> + <dimen name="kg_key_horizontal_gap">0dp</dimen> + + <!-- Horizontal gap between keys in PIN and SIM PIN numeric keyboards in keyguard --> + <dimen name="kg_key_vertical_gap">0dp</dimen> + + <!-- Horizontal gap between keys in PIN and SIM PIN numeric keyboards in keyguard --> + <dimen name="kg_pin_key_height">60dp</dimen> + + <!-- Space reserved at the bottom of secure views (pin/pattern/password/SIM pin/SIM puk) --> + <dimen name="kg_secure_padding_height">46dp</dimen> + + <!-- The height of the runway lights strip --> + <dimen name="kg_runway_lights_height">7dp</dimen> + + <!-- The height of the runway lights strip --> + <dimen name="kg_runway_lights_vertical_padding">2dp</dimen> + + <!-- Horizontal padding for the widget pager --> + <dimen name="kg_widget_pager_horizontal_padding">16dp</dimen> + + <!-- Top padding for the widget pager --> + <dimen name="kg_widget_pager_top_padding">0dp</dimen> + + <!-- Bottom padding for the widget pager --> + <dimen name="kg_widget_pager_bottom_padding">64dp</dimen> + + <!-- Top margin for the runway lights. We add a negative margin in large + devices to account for the widget pager padding --> + <dimen name="kg_runway_lights_top_margin">0dp</dimen> + + <!-- Touch slop for the global toggle accessibility gesture --> + <dimen name="accessibility_touch_slop">80dip</dimen> + + <!-- Width of the sliding KeyguardSecurityContainer (includes 2x keyguard_security_view_margin) --> + <dimen name="keyguard_security_width">320dp</dimen> + + <!-- Height of the sliding KeyguardSecurityContainer (includes 2x keyguard_security_view_margin) --> + <dimen name="keyguard_security_height">400dp</dimen> + + <!-- Margin around the various security views --> + <dimen name="keyguard_security_view_margin">8dp</dimen> + + <!-- Margin around the various security views --> + <dimen name="keyguard_muliuser_selector_margin">8dp</dimen> + + <!-- Stroke width of the frame for the circular avatars. --> + <dimen name="keyguard_avatar_frame_stroke_width">2dp</dimen> + + <!-- Shadow radius under the frame for the circular avatars. --> + <dimen name="keyguard_avatar_frame_shadow_radius">1dp</dimen> + + <!-- Size of the avator on hte multiuser lockscreen. --> + <dimen name="keyguard_avatar_size">66dp</dimen> + + <!-- Size of the text under the avator on the multiuser lockscreen. --> + <dimen name="keyguard_avatar_name_size">10sp</dimen> + + <!-- Size of the region along the edge of the screen that will accept + swipes to scroll the widget area. --> + <dimen name="kg_edge_swipe_region_size">24dp</dimen> + + <!-- If the height if keyguard drops below this threshold (most likely + due to the appearance of the IME), then drop the multiuser selector. --> + <dimen name="kg_squashed_layout_threshold">600dp</dimen> + + <!-- The height of widgets which do not support vertical resizing. This is only + used on tablets; on phones, this size is determined by the space left by the + security mode. --> + <dimen name="kg_small_widget_height">160dp</dimen> + +</resources> diff --git a/packages/Keyguard/res/values/integers.xml b/packages/Keyguard/res/values/integers.xml new file mode 100644 index 000000000000..053fc851ca31 --- /dev/null +++ b/packages/Keyguard/res/values/integers.xml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** Copyright 2012, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> +<resources> + <integer name="kg_carousel_angle">75</integer> + <integer name="kg_security_flip_duration">100</integer> + <integer name="kg_security_fade_duration">100</integer> + <integer name="kg_glowpad_rotation_offset">0</integer> +</resources> diff --git a/packages/Keyguard/res/values/strings.xml b/packages/Keyguard/res/values/strings.xml new file mode 100644 index 000000000000..5cf05f8ed9fb --- /dev/null +++ b/packages/Keyguard/res/values/strings.xml @@ -0,0 +1,327 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* //device/apps/common/assets/res/any/strings.xml +** +** Copyright 2006, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Instructions telling the user to enter their SIM PIN to unlock the keyguard. + Displayed in one line in a large font. --> + <string name="keyguard_password_enter_pin_code">Type PIN code</string> + + <!-- Instructions telling the user to enter their SIM PUK to unlock the keyguard. + Displayed in one line in a large font. --> + <string name="keyguard_password_enter_puk_code">Type PUK and new PIN code</string> + + <!-- Prompt to enter SIM PUK in Edit Text Box in unlock screen --> + <string name="keyguard_password_enter_puk_prompt">PUK code</string> + <!-- Prompt to enter New SIM PIN in Edit Text Box in unlock screen --> + <string name="keyguard_password_enter_pin_prompt">New PIN code</string> + + <!-- Displayed as hint in passwordEntry EditText on PasswordUnlockScreen [CHAR LIMIT=30]--> + <string name="keyguard_password_entry_touch_hint"><font size="17">Touch to type password</font></string> + + <!-- Instructions telling the user to enter their text password to unlock the keyguard. + Displayed in one line in a large font. --> + <string name="keyguard_password_enter_password_code">Type password to unlock</string> + + <!-- Instructions telling the user to enter their PIN password to unlock the keyguard. + Displayed in one line in a large font. --> + <string name="keyguard_password_enter_pin_password_code">Type PIN to unlock</string> + + <!-- Instructions telling the user that they entered the wrong pin while trying + to unlock the keyguard. Displayed in one line in a large font. --> + <string name="keyguard_password_wrong_pin_code">Incorrect PIN code.</string> + + <!-- Instructions telling the user how to unlock the phone. --> + <string name="keyguard_label_text">To unlock, press Menu then 0.</string> + + <!-- Shown when face unlock failed multiple times so we're just using the backup --> + <string name="faceunlock_multiple_failures">Maximum Face Unlock attempts exceeded</string> + + <!-- When the lock screen is showing, the phone is plugged in and the battery is fully + charged, say that it is charged. --> + <string name="keyguard_charged">Charged</string> + + <!-- When the lock screen is showing and the phone plugged in, and the battery + is not fully charged, show the current charge %. --> + <string name="keyguard_plugged_in">Charging, <xliff:g id="number">%d</xliff:g><xliff:g id="percent">%%</xliff:g></string> + + <!-- When the lock screen is showing and the battery is low, warn user to plug + in the phone soon. --> + <string name="keyguard_low_battery">Connect your charger.</string> + + <!-- On the keyguard screen, when pattern lock is disabled, only tell them to press menu to unlock. This is shown in small font at the bottom. --> + <string name="keyguard_instructions_when_pattern_disabled">Press Menu to unlock.</string> + + <!-- SIM messages --><skip /> + <!-- When the user inserts a sim card from an unsupported network, it becomes network locked --> + <string name="keyguard_network_locked_message">Network locked</string> + <!-- Shown when there is no SIM card. --> + <string name="keyguard_missing_sim_message_short">No SIM card</string> + <!-- Shown when there is no SIM card. --> + <string name="keyguard_missing_sim_message" product="tablet">No SIM card in tablet.</string> + <!-- Shown when there is no SIM card. --> + <string name="keyguard_missing_sim_message" product="default">No SIM card in phone.</string> + <!-- Shown to ask the user to insert a SIM card. --> + <string name="keyguard_missing_sim_instructions">Insert a SIM card.</string> + <!-- Shown to ask the user to insert a SIM card when sim is missing or not readable. --> + <string name="keyguard_missing_sim_instructions_long">The SIM card is missing or not readable. Insert a SIM card.</string> + <!-- Shown when SIM card is permanently disabled. --> + <string name="keyguard_permanent_disabled_sim_message_short">Unusable SIM card.</string> + <!-- Shown to inform the user to SIM card is permanently disabled. --> + <string name="keyguard_permanent_disabled_sim_instructions">Your SIM card has been permanently disabled.\n + Contact your wireless service provider for another SIM card.</string> + <!-- Shown to tell the user that their SIM is locked and they must unlock it. --> + <string name="keyguard_sim_locked_message">SIM card is locked.</string> + <!-- When the user enters a wrong sim pin too many times, it becomes PUK locked (Pin Unlock Kode) --> + <string name="keyguard_sim_puk_locked_message">SIM card is PUK-locked.</string> + <!-- For the unlock screen, When the user enters a sim unlock code, it takes a little while to check + whether it is valid, and to unlock the sim if it is valid. we display a + progress dialog in the meantime. this is the emssage. --> + <string name="keyguard_sim_unlock_progress_dialog_message">Unlocking SIM card\u2026</string> + + + <!-- Accessibility description sent when user changes the current lock screen widget. [CHAR_LIMIT=none] --> + <string name="keyguard_accessibility_widget_changed">%1$s. Widget %2$d of %3$d.</string> + <!-- Accessibility description of the add widget button. [CHAR_LIMIT=none] --> + <string name="keyguard_accessibility_add_widget">Add widget.</string> + <!-- Accessibility description of the empty sidget slot (place holder for a new widget). [CHAR_LIMIT=none] --> + <string name="keyguard_accessibility_widget_empty_slot">Empty</string> + <!-- Accessibility description of the event of expanding an unlock area. [CHAR_LIMIT=none] --> + <string name="keyguard_accessibility_unlock_area_expanded">Unlock area expanded.</string> + <!-- Accessibility description of the event of collapsing an unlock area. [CHAR_LIMIT=none] --> + <string name="keyguard_accessibility_unlock_area_collapsed">Unlock area collapsed.</string> + <!-- Accessibility description of a lock screen widget. [CHAR_LIMIT=none] --> + <string name="keyguard_accessibility_widget"><xliff:g id="widget_index">%1$s</xliff:g> widget.</string> + <!-- Accessibility description of the lock screen user selector widget. [CHAR_LIMIT=none] --> + <string name="keyguard_accessibility_user_selector">User selector</string> + <!-- Accessibility description of the lock screen status widget. [CHAR_LIMIT=none] --> + <string name="keyguard_accessibility_status">Status</string> + <!-- Accessibility description of the camera widget. [CHAR_LIMIT=none] --> + <string name="keyguard_accessibility_camera">Camera</string> + <!-- Accessibility description of the lock media control widget. [CHAR_LIMIT=none] --> + <string name="keygaurd_accessibility_media_controls">Media controls</string> + <!-- Accessibility description of widget reordering start. [CHAR_LIMIT=none] --> + <string name="keyguard_accessibility_widget_reorder_start">Widget reordering started.</string> + <!-- Accessibility description of widget reordering end. [CHAR_LIMIT=none] --> + <string name="keyguard_accessibility_widget_reorder_end">Widget reordering ended.</string> + <!-- Accessibility description of the a widget deletion event. [CHAR_LIMIT=none] --> + <string name="keyguard_accessibility_widget_deleted">Widget <xliff:g id="widget_index">%1$s</xliff:g> deleted.</string> + <!-- Accessibility description of the button to expand the lock area. [CHAR_LIMIT=none] --> + <string name="keyguard_accessibility_expand_lock_area">Expand unlock area.</string> + <!-- Accessibility description of the slide unlock. [CHAR_LIMIT=none] --> + <string name="keyguard_accessibility_slide_unlock">Slide unlock.</string> + <!-- Accessibility description of the pattern unlock. [CHAR_LIMIT=none] --> + <string name="keyguard_accessibility_pattern_unlock">Pattern unlock.</string> + <!-- Accessibility description of the face unlock. [CHAR_LIMIT=none] --> + <string name="keyguard_accessibility_face_unlock">Face unlock.</string> + <!-- Accessibility description of the pin lock. [CHAR_LIMIT=none] --> + <string name="keyguard_accessibility_pin_unlock">Pin unlock.</string> + <!-- Accessibility description of the password lock. [CHAR_LIMIT=none] --> + <string name="keyguard_accessibility_password_unlock">Password unlock.</string> + <!-- Accessibility description of the unlock pattern area. [CHAR_LIMIT=none] --> + <string name="keyguard_accessibility_pattern_area">Pattern area.</string> + <!-- Accessibility description of the unlock slide area. [CHAR_LIMIT=none] --> + <string name="keyguard_accessibility_slide_area">Slide area.</string> + + <!-- Shown on transport control of lockscreen. Pressing button goes to previous track. --> + <string name="keyguard_accessibility_transport_prev_description">Previous track button</string> + <!-- Shown on transport control of lockscreen. Pressing button goes to next track. --> + <string name="keyguard_accessibility_transport_next_description">Next track button</string> + <!-- Shown on transport control of lockscreen. Pressing button pauses playback --> + <string name="keyguard_accessibility_transport_pause_description">Pause button</string> + <!-- Shown on transport control of lockscreen. Pressing button pauses playback --> + <string name="keyguard_accessibility_transport_play_description">Play button</string> + <!-- Shown on transport control of lockscreen. Pressing button pauses playback --> + <string name="keyguard_accessibility_transport_stop_description">Stop button</string> + + <!-- Password keyboard strings. Used by LockScreen and Settings --><skip /> + <!-- Label for "switch to symbols" key. Must be short to fit on key! --> + <string name="password_keyboard_label_symbol_key">\?123</string> + <!-- Label for "switch to alphabetic" key. Must be short to fit on key! --> + <string name="password_keyboard_label_alpha_key">ABC</string> + <!-- Label for ALT modifier key. Must be short to fit on key! --> + <string name="password_keyboard_label_alt_key">ALT</string> + + <!-- KeyboardView - accessibility support --><skip /> + <!-- Description of the Alt button in a KeyboardView. [CHAR LIMIT=NONE] --> + <string name="keyboardview_keycode_alt">Alt</string> + <!-- Description of the Cancel button in a KeyboardView. [CHAR LIMIT=NONE] --> + <string name="keyboardview_keycode_cancel">Cancel</string> + <!-- Description of the Delete button in a KeyboardView. [CHAR LIMIT=NONE] --> + <string name="keyboardview_keycode_delete">Delete</string> + <!-- Description of the Done button in a KeyboardView. [CHAR LIMIT=NONE] --> + <string name="keyboardview_keycode_done">Done</string> + <!-- Description of the Mode change button in a KeyboardView. [CHAR LIMIT=NONE] --> + <string name="keyboardview_keycode_mode_change">Mode change</string> + <!-- Description of the Shift button in a KeyboardView. [CHAR LIMIT=NONE] --> + <string name="keyboardview_keycode_shift">Shift</string> + <!-- Description of the Enter button in a KeyboardView. [CHAR LIMIT=NONE] --> + <string name="keyboardview_keycode_enter">Enter</string> + + <!-- Description of the unlock target in the Slide unlock screen. [CHAR LIMIT=NONE] --> + <string name="description_target_unlock">Unlock</string> + <!-- Description of the camera target in the Slide unlock screen. [CHAR LIMIT=NONE] --> + <string name="description_target_camera">Camera</string> + <!-- Description of the silent target in the Slide unlock screen. [CHAR LIMIT=NONE] --> + <string name="description_target_silent">Silent</string> + <!-- Description of the sound on target in the Slide unlock screen. [CHAR LIMIT=NONE] --> + <string name="description_target_soundon">Sound on</string> + <!-- Description of the unlock target in the Slide unlock screen. [CHAR LIMIT=NONE] --> + <string name="description_target_search">Search</string> + + <!-- Description of the up direction in which one can to slide the handle in the Slide unlock screen. [CHAR LIMIT=NONE] --> + <string name="description_direction_up">Slide up for <xliff:g id="target_description" example="Unlock">%s</xliff:g>.</string> + <!-- Description of the down direction in which one can to slide the handle in the Slide unlock screen. [CHAR LIMIT=NONE] --> + <string name="description_direction_down">Slide down for <xliff:g id="target_description" example="Unlock">%s</xliff:g>.</string> + <!-- Description of the left direction in which one can to slide the handle in the Slide unlock screen. [CHAR LIMIT=NONE] --> + <string name="description_direction_left">"Slide left for <xliff:g id="target_description" example="Unlock">%s</xliff:g>.</string> + <!-- Description of the right direction in which one can to slide the handle in the Slide unlock screen. [CHAR LIMIT=NONE] --> + <string name="description_direction_right">Slide right for <xliff:g id="target_description" example="Unlock">%s</xliff:g>.</string> + + <!-- Text spoken when the current user is switched if accessibility is enabled. [CHAR LIMIT=none] --> + <string name="user_switched">Current user <xliff:g id="name" example="Bob">%1$s</xliff:g>.</string> + + <!-- Label shown on emergency call button in keyguard --> + <string name="kg_emergency_call_label">Emergency call</string> + <!-- Message shown in pattern unlock after some number of unsuccessful attempts --> + <string name="kg_forgot_pattern_button_text">Forgot Pattern</string> + <!-- Message shown when user enters wrong pattern --> + <string name="kg_wrong_pattern">Wrong Pattern</string> + <!-- Message shown when user enters wrong password --> + <string name="kg_wrong_password">Wrong Password</string> + <!-- Message shown when user enters wrong PIN --> + <string name="kg_wrong_pin">Wrong PIN</string> + <!-- Countdown message shown after too many failed unlock attempts --> + <string name="kg_too_many_failed_attempts_countdown">Try again in <xliff:g id="number">%d</xliff:g> seconds.</string> + <!-- Instructions for using the pattern unlock screen --> + <string name="kg_pattern_instructions">Draw your pattern</string> + <!-- Instructions for using the SIM PIN unlock screen --> + <string name="kg_sim_pin_instructions">Enter SIM PIN</string> + <!-- Instructions for using the PIN unlock screen --> + <string name="kg_pin_instructions">Enter PIN</string> + <!-- Instructions for using the password unlock screen --> + <string name="kg_password_instructions">Enter Password</string> + <!-- Hint shown in the PUK screen that asks the user to enter the PUK code given to them by their provider --> + <string name="kg_puk_enter_puk_hint">SIM is now disabled. Enter PUK code to continue. Contact carrier for details.</string> + <!-- Hint shown in the PUK unlock screen PIN TextView --> + <string name="kg_puk_enter_pin_hint">Enter desired PIN code</string> + <!-- Message shown when the user needs to confirm the PIN they just entered in the PUK screen --> + <string name="kg_enter_confirm_pin_hint">Confirm desired PIN code</string> + <!-- Message shown in dialog while the device is unlocking the SIM card --> + <string name="kg_sim_unlock_progress_dialog_message">Unlocking SIM card\u2026</string> + <!-- Message shown when the user enters the wrong PIN code --> + <string name="kg_password_wrong_pin_code">Incorrect PIN code.</string> + <!-- Message shown when the user enters an invalid SIM pin password in PUK screen --> + <string name="kg_invalid_sim_pin_hint">Type a PIN that is 4 to 8 numbers.</string> + <!-- Message shown when the user enters an invalid PUK code in the PUK screen --> + <string name="kg_invalid_sim_puk_hint">PUK code should be 8 numbers or more.</string> + <!-- Message shown when the user enters an invalid PUK code --> + <string name="kg_invalid_puk">Re-enter the correct PUK code. Repeated attempts will permanently disable the SIM.</string> + <!-- String shown in PUK screen when PIN codes don't match --> + <string name="kg_invalid_confirm_pin_hint" product="default">PIN codes does not match</string> + <!-- Message shown when the user exceeds the maximum number of pattern attempts --> + <string name="kg_login_too_many_attempts">Too many pattern attempts</string> + <!-- Instructions show in account unlock screen allowing user to enter their email password --> + <string name="kg_login_instructions">To unlock, sign in with your Google account.</string> + <!-- Hint shown in TextView in account unlock screen of keyguard --> + <string name="kg_login_username_hint">Username (email)</string> + <!-- Hint shown in TextView in account unlock screen of keyguard --> + <string name="kg_login_password_hint">Password</string> + <!-- Label shown on sign in button on account unlock screen of keyguard --> + <string name="kg_login_submit_button">Sign in</string> + <!-- Message shown when the user enters an invalid username/password combination in account unlock screen of keyguard --> + <string name="kg_login_invalid_input">Invalid username or password.</string> + <!-- Hint text shown when user has too many failed password attempts in account unlock screen of keyguard --> + <string name="kg_login_account_recovery_hint">Forgot your username or password\?\nVisit <b>google.com/accounts/recovery</b>.</string> + <!-- Message shown while device checks username/password in account unlock screen of keyguard --> + <string name="kg_login_checking_password">Checking account\u2026</string> + <!-- Message shown in dialog when max number of attempts are reached for PIN screen of keyguard --> + <string name="kg_too_many_failed_pin_attempts_dialog_message"> + You have incorrectly typed your PIN <xliff:g id="number">%d</xliff:g> times. + \n\nTry again in <xliff:g id="number">%d</xliff:g> seconds. + </string> + <!-- Message shown in dialog when max number of attempts are reached for password screen of keyguard --> + <string name="kg_too_many_failed_password_attempts_dialog_message"> + You have incorrectly typed your password <xliff:g id="number">%d</xliff:g> times. + \n\nTry again in <xliff:g id="number">%d</xliff:g> seconds. + </string> + <string name="kg_too_many_failed_pattern_attempts_dialog_message"> + You have incorrectly drawn your unlock pattern <xliff:g id="number">%d</xliff:g> times. + \n\nTry again in <xliff:g id="number">%d</xliff:g> seconds. + </string> + <!-- Message shown when user is almost at the limit of password attempts where the device will be wiped. --> + <string name="kg_failed_attempts_almost_at_wipe" product="tablet"> + You have incorrectly attempted to unlock the tablet <xliff:g id="number">%d</xliff:g> times. + After <xliff:g id="number">%d</xliff:g> more unsuccessful attempts, + the tablet will be reset to factory default and all user data will be lost. + </string> + <!-- Message shown when user is almost at the limit of password attempts where the device will be wiped. --> + <string name="kg_failed_attempts_almost_at_wipe" product="default"> + You have incorrectly attempted to unlock the phone <xliff:g id="number">%d</xliff:g> times. + After <xliff:g id="number">%d</xliff:g> more unsuccessful attempts, + the phone will be reset to factory default and all user data will be lost. + </string> + <!-- Message shown in dialog when user has exceeded the maximum attempts and the device will now be wiped --> + <string name="kg_failed_attempts_now_wiping" product="tablet"> + You have incorrectly attempted to unlock the tablet <xliff:g id="number">%d</xliff:g> times. + The tablet will now be reset to factory default. + </string> + <!-- Message shown in dialog when user has exceeded the maximum attempts and the device will now be wiped --> + <string name="kg_failed_attempts_now_wiping" product="default"> + You have incorrectly attempted to unlock the phone <xliff:g id="number">%d</xliff:g> times. + The phone will now be reset to factory default. + </string> + <!-- Message shown in dialog when user is almost at the limit where they will be + locked out and may have to enter an alternate username/password to unlock the phone --> + <string name="kg_failed_attempts_almost_at_login" product="tablet"> + You have incorrectly drawn your unlock pattern <xliff:g id="number">%d</xliff:g> times. + After <xliff:g id="number">%d</xliff:g> more unsuccessful attempts, + you will be asked to unlock your tablet using an email account.\n\n + Try again in <xliff:g id="number">%d</xliff:g> seconds. + </string> + <!-- Message shown in dialog when user is almost at the limit where they will be + locked out and may have to enter an alternate username/password to unlock the phone --> + <string name="kg_failed_attempts_almost_at_login" product="default"> + You have incorrectly drawn your unlock pattern <xliff:g id="number">%d</xliff:g> times. + After <xliff:g id="number">%d</xliff:g> more unsuccessful attempts, + you will be asked to unlock your phone using an email account.\n\n + Try again in <xliff:g id="number">%d</xliff:g> seconds. + </string> + <!-- Sequence of characters used to separate message strings in keyguard. Typically just em-dash + with spaces on either side. [CHAR LIMIT=3] --> + <string name="kg_text_message_separator" product="default">" \u2014 "</string> + <!-- The delete-widget drop target button text --> + <string name="kg_reordering_delete_drop_target_text">Remove</string> + + <!-- Transport control strings --> + <!-- Shown on transport control of lockscreen. Pressing button goes to previous track. --> + <string name="keyguard_transport_prev_description">Previous track button</string> + <!-- Shown on transport control of lockscreen. Pressing button goes to next track. --> + <string name="keyguard_transport_next_description">Next track button</string> + <!-- Shown on transport control of lockscreen. Pressing button pauses playback --> + <string name="keyguard_transport_pause_description">Pause button</string> + <!-- Shown on transport control of lockscreen. Pressing button pauses playback --> + <string name="keyguard_transport_play_description">Play button</string> + <!-- Shown on transport control of lockscreen. Pressing button pauses playback --> + <string name="keyguard_transport_stop_description">Stop button</string> + + <!-- On the keyguard screen, it shows the carrier the phone is connected to. + This is displayed if the phone is not connected to a carrier.--> + <string name="keyguard_carrier_default">No service.</string> + +</resources> diff --git a/packages/Keyguard/res/values/styles.xml b/packages/Keyguard/res/values/styles.xml new file mode 100644 index 000000000000..16a3f3f070b4 --- /dev/null +++ b/packages/Keyguard/res/values/styles.xml @@ -0,0 +1,55 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +** +** Copyright 2012, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License") +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<resources> + <!-- Keyguard PIN pad styles --> + <style name="Widget.Button.NumPadKey" + parent="@android:style/Widget.Button"> + <item name="android:singleLine">true</item> + <item name="android:padding">6dip</item> + <item name="android:gravity">left|center_vertical</item> + <item name="android:background">?android:attr/selectableItemBackground</item> + <item name="android:textSize">34dp</item> + <item name="android:fontFamily">sans-serif</item> + <item name="android:textStyle">normal</item> + <item name="android:textColor">#ffffff</item> + <item name="android:paddingBottom">10dp</item> + <item name="android:paddingLeft">20dp</item> + </style> + <style name="TextAppearance.NumPadKey" + parent="@android:style/TextAppearance"> + <item name="android:textSize">34dp</item> + <item name="android:fontFamily">sans-serif</item> + <item name="android:textStyle">normal</item> + <item name="android:textColor">#ffffff</item> + </style> + <style name="TextAppearance.NumPadKey.Klondike"> + <item name="android:textSize">20dp</item> + <item name="android:fontFamily">sans-serif-condensed</item> + <item name="android:textStyle">normal</item> + <item name="android:textColor">#80ffffff</item> + </style> + + <!-- Standard animations for a non-full-screen window or activity. --> + <style name="Animation.LockScreen" parent="@android:style/Animation"> + <item name="android:windowEnterAnimation">@anim/lock_screen_enter</item> + <item name="android:windowExitAnimation">@anim/lock_screen_exit</item> + </style> + +</resources> diff --git a/packages/Keyguard/scripts/copy_profile_icons.sh b/packages/Keyguard/scripts/copy_profile_icons.sh new file mode 100755 index 000000000000..541610102e57 --- /dev/null +++ b/packages/Keyguard/scripts/copy_profile_icons.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +for user in `adb $* shell ls /data/system/users | grep -v xml` +do + user=${user/$'\r'/} + adb shell mkdir /data/user/${user}/users + for photo in `adb $* shell ls /data/system/users | grep -v xml` + do + photo=${photo/$'\r'/} + adb shell mkdir /data/user/${user}/users/${photo} + adb pull /data/system/users/${photo}/photo.png + adb push photo.png /data/user/${user}/users/${photo} + done +done diff --git a/packages/Keyguard/scripts/new_merge.py b/packages/Keyguard/scripts/new_merge.py new file mode 100755 index 000000000000..70fafecc7a18 --- /dev/null +++ b/packages/Keyguard/scripts/new_merge.py @@ -0,0 +1,165 @@ +#!/usr/bin/env python + +import os +import sys +import difflib +import filecmp +import tempfile +from optparse import OptionParser +from subprocess import call +from subprocess import Popen +from subprocess import PIPE + +def which(program): + def executable(path): + return os.path.isfile(path) and os.access(path, os.X_OK) + + path, file = os.path.split(program) + if path and executable(program): + return program + else: + for path in os.environ["PATH"].split(os.pathsep): + exe = os.path.join(path, program) + if executable(exe): + return exe + return "" + +DIFF_TOOLS=["meld", "kdiff3", "xdiff", "diffmerge.sh", "diff"] + +PROTO_SRC="./src/com/android/keyguard/" +PROTO_RES="./res/" + +TEMP_FILE1="/tmp/tempFile1.txt" +TEMP_FILE2="/tmp/tempFile2.txt" + +FW_SRC="../../../../frameworks/base/policy/src/com/android/internal/policy/impl/keyguard/" +FW_RES="../../../../frameworks/base/core/res/res/" + +FW_PKG="com.android.internal.policy.impl.keyguard" +PROTO_PKG="com.android.keyguard" + +FW_RES_IMPORT="import com.android.internal.R;" + +# Find a differ +DIFF_TOOL="" +if ("DIFF_TOOL" in os.environ and len(os.environ["DIFF_TOOL"]) > 0): + DIFF_TOOL=which(os.environ["DIFF_TOOL"]) +if len(DIFF_TOOL) == 0: + for differ in DIFF_TOOLS: + DIFF_TOOL=which(differ) + if len(DIFF_TOOL) > 0: + break + +print "Using differ", DIFF_TOOL + +#Anything file which contains any string in this list as a substring will be ommitted +IGNORE=["LockHotnessActivity.java", "unified_lock_activity.xml", "optionmenu.xml"] +WATCH=[] + +def dirCompare(sourceDir, destDir, ext, run_in_reverse): + sourceFiles = getFileList(sourceDir, ext) + destFiles = getFileList(destDir, ext) + for file in sourceFiles: + print file + destFile = destDir + file + sourceFile = sourceDir + file + if (file in destFiles): + if run_in_reverse: + prepareFileForCompare(sourceFile, TEMP_FILE1, FW_RES_IMPORT, FW_PKG, PROTO_PKG) + prepareFileForCompare(destFile, TEMP_FILE2, FW_RES_IMPORT,) + else: + prepareFileForCompare(destFile, TEMP_FILE1, FW_RES_IMPORT, FW_PKG, PROTO_PKG) + prepareFileForCompare(sourceFile, TEMP_FILE2, FW_RES_IMPORT,) + if (filecmp.cmp(TEMP_FILE1, TEMP_FILE2)): + print "File %s is the same in proto and framework" %(file) + else: + print "Running diff for: %s" %(file) + diff(sourceFile, destFile) + else: + print "File %s does not exist in framework" %(file) + if not run_in_reverse: + diff(sourceFile, destFile) + +def main(argv): + run_in_reverse = False + if len(argv) > 1: + if argv[1] == '--help' or argv[1] == '-h': + print ('Usage: %s [<commit>]' % argv[0]) + print ('\tdiff to framework, ' + + 'optionally restricting to files in <commit>') + sys.exit(0) + elif argv[1] == '--reverse': + print "Running in reverse" + run_in_reverse = True + else: + print ("**** Pulling file list from: %s" % argv[1]) + pipe = Popen(['git', 'diff', '--name-only', argv[1]], stdout=PIPE).stdout + for line in iter(pipe.readline,''): + path = line.rstrip() + file = path[path.rfind('/') + 1:] + print '**** watching: %s' % file + WATCH.append(file); + pipe.close() + + if run_in_reverse: + #dirCompare(FW_RES, PROTO_RES, ".xml", run_in_reverse) + print ("**** Source files:") + dirCompare(FW_SRC, PROTO_SRC, ".java", run_in_reverse) + else: + #dirCompare(PROTO_RES, FW_RES, ".xml", run_in_reverse) + print ("**** Source files:") + dirCompare(PROTO_SRC, FW_SRC, ".java", run_in_reverse) + + if (os.path.exists(TEMP_FILE1)): + os.remove(TEMP_FILE1) + + if (os.path.exists(TEMP_FILE2)): + os.remove(TEMP_FILE2) + +def getFileList(rootdir, extension): + fileList = [] + + for root, subFolders, files in os.walk(rootdir): + for file in files: + f = os.path.join(root,file) + if (os.path.splitext(f)[1] == extension and (not inIgnore(f))): + fileList.append(f[len(rootdir):]) + return fileList + + +def prepareFileForCompare(inFile, outFile, skip="", replace="", withText=""): + # Delete the outfile, so we're starting with a new file + if (os.path.exists(outFile)): + os.remove(outFile) + + fin = open(inFile) + fout = open(outFile, "w") + for line in fin: + # Ignore any lines containing the ignore string ("import com.android.internal.R;) and + # ignore any lines containing only whitespace. + if (line.find(skip) < 0 and len(line.strip(' \t\n\r')) > 0): + # For comparison, for framework files, we replace the fw package with the + # proto package, since these aren't relevant. + if len(replace) > 0: + fout.write(line.replace(replace, withText)) + else: + fout.write(line) + fin.close() + fout.close() + +def diff(file1, file2): + call([DIFF_TOOL, file1, file2]) + +def inIgnore(file): + for ignore in IGNORE: + if file.find(ignore) >= 0: + return True + if len(WATCH) > 0: + for watch in WATCH: + if file.find(watch) >= 0: + return False + return True + return False + +if __name__=="__main__": + main(sys.argv) diff --git a/policy/src/com/android/internal/policy/impl/keyguard/BiometricSensorUnlock.java b/packages/Keyguard/src/com/android/keyguard/BiometricSensorUnlock.java index e65a716f6ea9..230ef81a2653 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/BiometricSensorUnlock.java +++ b/packages/Keyguard/src/com/android/keyguard/BiometricSensorUnlock.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.internal.policy.impl.keyguard; +package com.android.keyguard; import android.view.View; diff --git a/policy/src/com/android/internal/policy/impl/keyguard/CameraWidgetFrame.java b/packages/Keyguard/src/com/android/keyguard/CameraWidgetFrame.java index 762711d1b745..146c0922434c 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/CameraWidgetFrame.java +++ b/packages/Keyguard/src/com/android/keyguard/CameraWidgetFrame.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.internal.policy.impl.keyguard; +package com.android.keyguard; import android.content.Context; import android.content.pm.PackageManager.NameNotFoundException; @@ -33,8 +33,7 @@ import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.ImageView.ScaleType; -import com.android.internal.R; -import com.android.internal.policy.impl.keyguard.KeyguardActivityLauncher.CameraWidgetInfo; +import com.android.keyguard.KeyguardActivityLauncher.CameraWidgetInfo; public class CameraWidgetFrame extends KeyguardWidgetFrame implements View.OnClickListener { private static final String TAG = CameraWidgetFrame.class.getSimpleName(); @@ -204,7 +203,7 @@ public class CameraWidgetFrame extends KeyguardWidgetFrame implements View.OnCli private static View inflateGenericWidgetView(Context context) { if (DEBUG) Log.d(TAG, "inflateGenericWidgetView"); ImageView iv = new ImageView(context); - iv.setImageResource(com.android.internal.R.drawable.ic_lockscreen_camera); + iv.setImageResource(R.drawable.ic_lockscreen_camera); iv.setScaleType(ScaleType.CENTER); iv.setBackgroundColor(Color.argb(127, 0, 0, 0)); return iv; @@ -423,7 +422,7 @@ public class CameraWidgetFrame extends KeyguardWidgetFrame implements View.OnCli if (!(lp instanceof WindowManager.LayoutParams)) return; WindowManager.LayoutParams wlp = (WindowManager.LayoutParams) lp; - int newWindowAnimations = isEnabled ? com.android.internal.R.style.Animation_LockScreen : 0; + int newWindowAnimations = isEnabled ? R.style.Animation_LockScreen : 0; if (newWindowAnimations != wlp.windowAnimations) { if (DEBUG) Log.d(TAG, "setting windowAnimations to: " + newWindowAnimations + " at " + SystemClock.uptimeMillis()); diff --git a/policy/src/com/android/internal/policy/impl/keyguard/CarrierText.java b/packages/Keyguard/src/com/android/keyguard/CarrierText.java index a38e86db39a6..9f0a042f040b 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/CarrierText.java +++ b/packages/Keyguard/src/com/android/keyguard/CarrierText.java @@ -14,14 +14,13 @@ * limitations under the License. */ -package com.android.internal.policy.impl.keyguard; +package com.android.keyguard; import android.content.Context; import android.text.TextUtils; import android.util.AttributeSet; import android.widget.TextView; -import com.android.internal.R; import com.android.internal.telephony.IccCardConstants; import com.android.internal.telephony.IccCardConstants.State; import com.android.internal.widget.LockPatternUtils; @@ -124,7 +123,7 @@ public class CarrierText extends TextView { case NetworkLocked: carrierText = makeCarrierStringOnEmergencyCapable( - mContext.getText(R.string.lockscreen_network_locked_message), plmn); + mContext.getText(R.string.keyguard_network_locked_message), plmn); break; case SimMissing: @@ -133,30 +132,30 @@ public class CarrierText extends TextView { // has some connectivity. Otherwise, it should be null or empty and just show // "No SIM card" carrierText = makeCarrierStringOnEmergencyCapable( - getContext().getText(R.string.lockscreen_missing_sim_message_short), + getContext().getText(R.string.keyguard_missing_sim_message_short), plmn); break; case SimPermDisabled: carrierText = getContext().getText( - R.string.lockscreen_permanent_disabled_sim_message_short); + R.string.keyguard_permanent_disabled_sim_message_short); break; case SimMissingLocked: carrierText = makeCarrierStringOnEmergencyCapable( - getContext().getText(R.string.lockscreen_missing_sim_message_short), + getContext().getText(R.string.keyguard_missing_sim_message_short), plmn); break; case SimLocked: carrierText = makeCarrierStringOnEmergencyCapable( - getContext().getText(R.string.lockscreen_sim_locked_message), + getContext().getText(R.string.keyguard_sim_locked_message), plmn); break; case SimPukLocked: carrierText = makeCarrierStringOnEmergencyCapable( - getContext().getText(R.string.lockscreen_sim_puk_locked_message), + getContext().getText(R.string.keyguard_sim_puk_locked_message), plmn); break; } @@ -232,19 +231,19 @@ public class CarrierText extends TextView { StatusMode status = getStatusForIccState(simState); switch (status) { case NetworkLocked: - carrierHelpTextId = R.string.lockscreen_instructions_when_pattern_disabled; + carrierHelpTextId = R.string.keyguard_instructions_when_pattern_disabled; break; case SimMissing: - carrierHelpTextId = R.string.lockscreen_missing_sim_instructions_long; + carrierHelpTextId = R.string.keyguard_missing_sim_instructions_long; break; case SimPermDisabled: - carrierHelpTextId = R.string.lockscreen_permanent_disabled_sim_instructions; + carrierHelpTextId = R.string.keyguard_permanent_disabled_sim_instructions; break; case SimMissingLocked: - carrierHelpTextId = R.string.lockscreen_missing_sim_instructions; + carrierHelpTextId = R.string.keyguard_missing_sim_instructions; break; case Normal: diff --git a/policy/src/com/android/internal/policy/impl/keyguard/ChallengeLayout.java b/packages/Keyguard/src/com/android/keyguard/ChallengeLayout.java index 8ece559f01dc..677f1f19fdd4 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/ChallengeLayout.java +++ b/packages/Keyguard/src/com/android/keyguard/ChallengeLayout.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.internal.policy.impl.keyguard; +package com.android.keyguard; /** * Interface implemented by ViewGroup-derived layouts that implement diff --git a/policy/src/com/android/internal/policy/impl/keyguard/CheckLongPressHelper.java b/packages/Keyguard/src/com/android/keyguard/CheckLongPressHelper.java index 4825e23ec9c9..52e7cd547efc 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/CheckLongPressHelper.java +++ b/packages/Keyguard/src/com/android/keyguard/CheckLongPressHelper.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.internal.policy.impl.keyguard; +package com.android.keyguard; import android.view.MotionEvent; import android.view.View; diff --git a/policy/src/com/android/internal/policy/impl/keyguard/ClockView.java b/packages/Keyguard/src/com/android/keyguard/ClockView.java index 6c701c7dca01..c2930cbe3e38 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/ClockView.java +++ b/packages/Keyguard/src/com/android/keyguard/ClockView.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.internal.policy.impl.keyguard; +package com.android.keyguard; import android.content.BroadcastReceiver; import android.content.Context; @@ -34,7 +34,6 @@ import android.widget.TextView; import java.lang.ref.WeakReference; import java.text.DateFormatSymbols; import java.util.Calendar; -import com.android.internal.R; /** * Displays the time diff --git a/policy/src/com/android/internal/policy/impl/keyguard/EmergencyButton.java b/packages/Keyguard/src/com/android/keyguard/EmergencyButton.java index cd7324c79cfa..3871cea2eed1 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/EmergencyButton.java +++ b/packages/Keyguard/src/com/android/keyguard/EmergencyButton.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.internal.policy.impl.keyguard; +package com.android.keyguard; import android.content.Context; import android.content.Intent; diff --git a/policy/src/com/android/internal/policy/impl/keyguard/FaceUnlock.java b/packages/Keyguard/src/com/android/keyguard/FaceUnlock.java index e58eb5b9ba8c..689366bcb42b 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/FaceUnlock.java +++ b/packages/Keyguard/src/com/android/keyguard/FaceUnlock.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.internal.policy.impl.keyguard; +package com.android.keyguard; import com.android.internal.policy.IFaceLockCallback; import com.android.internal.policy.IFaceLockInterface; diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardAbsKeyInputView.java b/packages/Keyguard/src/com/android/keyguard/KeyguardAbsKeyInputView.java index cc520dc856b2..fb2eeda1a7ae 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardAbsKeyInputView.java +++ b/packages/Keyguard/src/com/android/keyguard/KeyguardAbsKeyInputView.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.internal.policy.impl.keyguard; +package com.android.keyguard; import android.content.Context; import android.graphics.Rect; @@ -32,7 +32,6 @@ import android.widget.LinearLayout; import android.widget.TextView; import android.widget.TextView.OnEditorActionListener; -import com.android.internal.R; import com.android.internal.widget.LockPatternUtils; /** diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardAccountView.java b/packages/Keyguard/src/com/android/keyguard/KeyguardAccountView.java index e0e7128c4c5a..6b8be694b97d 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardAccountView.java +++ b/packages/Keyguard/src/com/android/keyguard/KeyguardAccountView.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.android.internal.policy.impl.keyguard; +package com.android.keyguard; import android.accounts.Account; import android.accounts.AccountManager; @@ -41,7 +41,6 @@ import android.widget.EditText; import android.widget.LinearLayout; import com.android.internal.widget.LockPatternUtils; -import com.android.internal.R; import java.io.IOException; diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardActivityLauncher.java b/packages/Keyguard/src/com/android/keyguard/KeyguardActivityLauncher.java index 6539db359553..9a1aa5b79564 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardActivityLauncher.java +++ b/packages/Keyguard/src/com/android/keyguard/KeyguardActivityLauncher.java @@ -14,7 +14,9 @@ * limitations under the License. */ -package com.android.internal.policy.impl.keyguard; +package com.android.keyguard; + +import com.android.internal.widget.LockPatternUtils; import android.app.ActivityManagerNative; import android.app.ActivityOptions; @@ -35,8 +37,7 @@ import android.provider.MediaStore; import android.util.Log; import android.view.WindowManager; -import com.android.internal.policy.impl.keyguard.KeyguardHostView.OnDismissAction; -import com.android.internal.widget.LockPatternUtils; +import com.android.keyguard.KeyguardHostView.OnDismissAction; import java.util.List; diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardCircleFramedDrawable.java b/packages/Keyguard/src/com/android/keyguard/KeyguardCircleFramedDrawable.java index 79b66f4818bb..ed3faeac9092 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardCircleFramedDrawable.java +++ b/packages/Keyguard/src/com/android/keyguard/KeyguardCircleFramedDrawable.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.internal.policy.impl.keyguard; +package com.android.keyguard; import android.graphics.Bitmap; import android.graphics.Canvas; diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardFaceUnlockView.java b/packages/Keyguard/src/com/android/keyguard/KeyguardFaceUnlockView.java index 4df434c7895c..041f7f2c9535 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardFaceUnlockView.java +++ b/packages/Keyguard/src/com/android/keyguard/KeyguardFaceUnlockView.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.android.internal.policy.impl.keyguard; +package com.android.keyguard; import android.content.Context; import android.graphics.drawable.Drawable; @@ -25,8 +25,6 @@ import android.view.View; import android.widget.ImageButton; import android.widget.LinearLayout; -import com.android.internal.R; - import com.android.internal.widget.LockPatternUtils; public class KeyguardFaceUnlockView extends LinearLayout implements KeyguardSecurityView { diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardGlowStripView.java b/packages/Keyguard/src/com/android/keyguard/KeyguardGlowStripView.java index e1c95f082885..98a44a6ca6d0 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardGlowStripView.java +++ b/packages/Keyguard/src/com/android/keyguard/KeyguardGlowStripView.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.android.internal.policy.impl.keyguard; +package com.android.keyguard; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; @@ -29,8 +29,6 @@ import android.view.animation.Interpolator; import android.view.animation.LinearInterpolator; import android.widget.LinearLayout; -import com.android.internal.R; - /** * A layout which animates a strip of horizontal, pulsing dots on request. This is used * to indicate the presence of pages to the left / right. diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardHostView.java b/packages/Keyguard/src/com/android/keyguard/KeyguardHostView.java index 06f06b52639a..e2bc54bfe01c 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardHostView.java +++ b/packages/Keyguard/src/com/android/keyguard/KeyguardHostView.java @@ -14,7 +14,10 @@ * limitations under the License. */ -package com.android.internal.policy.impl.keyguard; +package com.android.keyguard; + +import com.android.internal.widget.LockPatternUtils; +import com.android.keyguard.KeyguardSecurityModel.SecurityMode; import android.app.Activity; import android.app.ActivityManager; @@ -53,10 +56,6 @@ import android.view.WindowManager; import android.view.animation.AnimationUtils; import android.widget.RemoteViews.OnClickHandler; -import com.android.internal.R; -import com.android.internal.policy.impl.keyguard.KeyguardSecurityModel.SecurityMode; -import com.android.internal.widget.LockPatternUtils; - import java.io.File; import java.util.List; @@ -141,6 +140,16 @@ public class KeyguardHostView extends KeyguardViewBase { // In other words, mUserId should never change - hence it's marked final. mUserId = mLockPatternUtils.getCurrentUser(); + DevicePolicyManager dpm = + (DevicePolicyManager) mContext.getSystemService(Context.DEVICE_POLICY_SERVICE); + if (dpm != null) { + mDisabledFeatures = getDisabledFeatures(dpm); + mCameraDisabled = dpm.getCameraDisabled(null); + } + + mSafeModeEnabled = LockPatternUtils.isSafeModeEnabled(); + + // These need to be created with the user context... Context userContext = null; try { final String packageName = "system"; @@ -153,29 +162,13 @@ public class KeyguardHostView extends KeyguardViewBase { userContext = context; } - // These need to be created with the user context... mAppWidgetHost = new AppWidgetHost(userContext, APPWIDGET_HOST_ID, mOnClickHandler, Looper.myLooper()); - mAppWidgetManager = AppWidgetManager.getInstance(userContext); cleanupAppWidgetIds(); - mSecurityModel = new KeyguardSecurityModel(context); - - mViewStateManager = new KeyguardViewStateManager(this); - - DevicePolicyManager dpm = - (DevicePolicyManager) mContext.getSystemService(Context.DEVICE_POLICY_SERVICE); - if (dpm != null) { - mDisabledFeatures = getDisabledFeatures(dpm); - mCameraDisabled = dpm.getCameraDisabled(null); - } - - mSafeModeEnabled = LockPatternUtils.isSafeModeEnabled(); - - cleanupAppWidgetIds(); + mAppWidgetManager = AppWidgetManager.getInstance(userContext); - mAppWidgetManager = AppWidgetManager.getInstance(mContext); mSecurityModel = new KeyguardSecurityModel(context); mViewStateManager = new KeyguardViewStateManager(this); @@ -512,7 +505,7 @@ public class KeyguardHostView extends KeyguardViewBase { final AlertDialog dialog = new AlertDialog.Builder(mContext) .setTitle(title) .setMessage(message) - .setNeutralButton(com.android.internal.R.string.ok, null) + .setNeutralButton(R.string.ok, null) .create(); if (!(mContext instanceof Activity)) { dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG); @@ -863,8 +856,7 @@ public class KeyguardHostView extends KeyguardViewBase { KeyguardSecurityView newView = getSecurityView(securityMode); // Enter full screen mode if we're in SIM or Account screen - boolean fullScreenEnabled = getResources().getBoolean( - com.android.internal.R.bool.kg_sim_puk_account_full_screen); + boolean fullScreenEnabled = getResources().getBoolean(R.bool.kg_sim_puk_account_full_screen); boolean isSimOrAccount = securityMode == SecurityMode.SimPin || securityMode == SecurityMode.SimPuk || securityMode == SecurityMode.Account; @@ -1551,19 +1543,12 @@ public class KeyguardHostView extends KeyguardViewBase { private static final String ENABLE_MENU_KEY_FILE = "/data/local/enable_menu_key"; private boolean shouldEnableMenuKey() { final Resources res = getResources(); - final boolean configDisabled = res.getBoolean( - com.android.internal.R.bool.config_disableMenuKeyInLockScreen); + final boolean configDisabled = res.getBoolean(R.bool.config_disableMenuKeyInLockScreen); final boolean isTestHarness = ActivityManager.isRunningInTestHarness(); final boolean fileOverride = (new File(ENABLE_MENU_KEY_FILE)).exists(); return !configDisabled || isTestHarness || fileOverride; } - - - public void goToUserSwitcher() { - mAppWidgetContainer.setCurrentPage(getWidgetPosition(R.id.keyguard_multi_user_selector)); - } - public void goToWidget(int appWidgetId) { mAppWidgetToShow = appWidgetId; mSwitchPageRunnable.run(); diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardLinearLayout.java b/packages/Keyguard/src/com/android/keyguard/KeyguardLinearLayout.java index 0fc54cdfbcaf..343fdcb4761c 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardLinearLayout.java +++ b/packages/Keyguard/src/com/android/keyguard/KeyguardLinearLayout.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.android.internal.policy.impl.keyguard; +package com.android.keyguard; import android.content.Context; import android.util.AttributeSet; diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardMessageArea.java b/packages/Keyguard/src/com/android/keyguard/KeyguardMessageArea.java index 77359ff51ec2..194162a2bde5 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardMessageArea.java +++ b/packages/Keyguard/src/com/android/keyguard/KeyguardMessageArea.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.internal.policy.impl.keyguard; +package com.android.keyguard; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; @@ -35,9 +35,6 @@ import android.widget.TextView; import libcore.util.MutableInt; import java.lang.ref.WeakReference; - -import com.android.internal.R; - /*** * Manages a number of views inside of the given layout. See below for a list of widgets. */ @@ -242,13 +239,12 @@ class KeyguardMessageArea extends TextView { if (mCharging) { // Charging, charged or waiting to charge. string = getContext().getString(mBatteryCharged - ? com.android.internal.R.string.lockscreen_charged - : com.android.internal.R.string.lockscreen_plugged_in, mBatteryLevel); + ? R.string.keyguard_charged + : R.string.keyguard_plugged_in, mBatteryLevel); icon.value = CHARGING_ICON; } else if (mBatteryIsLow) { // Battery is low - string = getContext().getString( - com.android.internal.R.string.lockscreen_low_battery); + string = getContext().getString(R.string.keyguard_low_battery); icon.value = BATTERY_LOW_ICON; } } diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardMultiUserAvatar.java b/packages/Keyguard/src/com/android/keyguard/KeyguardMultiUserAvatar.java index 9d1f0419910d..7ef5b2688676 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardMultiUserAvatar.java +++ b/packages/Keyguard/src/com/android/keyguard/KeyguardMultiUserAvatar.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.internal.policy.impl.keyguard; +package com.android.keyguard; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; @@ -26,6 +26,7 @@ import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Color; +import android.os.UserManager; import android.util.AttributeSet; import android.util.Log; import android.view.LayoutInflater; @@ -34,8 +35,6 @@ import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.TextView; -import com.android.internal.R; - class KeyguardMultiUserAvatar extends FrameLayout { private static final String TAG = KeyguardMultiUserAvatar.class.getSimpleName(); private static final boolean DEBUG = KeyguardHostView.DEBUG; @@ -70,6 +69,7 @@ class KeyguardMultiUserAvatar extends FrameLayout { private KeyguardMultiUserSelectorView mUserSelector; private KeyguardCircleFramedDrawable mFramed; private boolean mPressLock; + private UserManager mUserManager; public static KeyguardMultiUserAvatar fromXml(int resId, Context context, KeyguardMultiUserSelectorView userSelector, UserInfo info) { @@ -104,6 +104,7 @@ class KeyguardMultiUserAvatar extends FrameLayout { mActiveScale = ACTIVE_SCALE; mActiveAlpha = ACTIVE_ALPHA; mInactiveAlpha = INACTIVE_ALPHA; + mUserManager = (UserManager) mContext.getSystemService(Context.USER_SERVICE); mTouched = false; @@ -111,9 +112,6 @@ class KeyguardMultiUserAvatar extends FrameLayout { } protected String rewriteIconPath(String path) { - if (!this.getClass().getName().contains("internal")) { - return path.replace("system", "data"); - } return path; } @@ -124,16 +122,12 @@ class KeyguardMultiUserAvatar extends FrameLayout { mUserImage = (ImageView) findViewById(R.id.keyguard_user_avatar); mUserName = (TextView) findViewById(R.id.keyguard_user_name); - Bitmap icon = null; - try { - icon = BitmapFactory.decodeFile(rewriteIconPath(user.iconPath)); - } catch (Exception e) { - if (DEBUG) Log.d(TAG, "failed to open profile icon " + user.iconPath, e); - } + Bitmap icon = mUserManager.getUserIcon(user.id); if (icon == null) { + if (DEBUG) Log.w(TAG, "Couldn't get user icon for user id " + user.id); icon = BitmapFactory.decodeResource(mContext.getResources(), - com.android.internal.R.drawable.ic_contact_picture); + R.drawable.ic_contact_picture); } mFramed = new KeyguardCircleFramedDrawable(icon, (int) mIconSize, mFrameColor, mStroke, diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardMultiUserSelectorView.java b/packages/Keyguard/src/com/android/keyguard/KeyguardMultiUserSelectorView.java index f9ea5bb8d45a..7975d8e2493e 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardMultiUserSelectorView.java +++ b/packages/Keyguard/src/com/android/keyguard/KeyguardMultiUserSelectorView.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.internal.policy.impl.keyguard; +package com.android.keyguard; import android.app.ActivityManagerNative; import android.content.Context; @@ -27,8 +27,6 @@ import android.view.View; import android.view.ViewGroup; import android.widget.FrameLayout; -import com.android.internal.R; - import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -154,15 +152,11 @@ public class KeyguardMultiUserSelectorView extends FrameLayout implements View.O @Override public void run() { mActiveUserAvatar = avatar; - if (this.getClass().getName().contains("internal")) { - try { - ActivityManagerNative.getDefault() - .switchUser(avatar.getUserInfo().id); - } catch (RemoteException re) { - Log.e(TAG, "Couldn't switch user " + re); - } - } else { - setAllClickable(true); + try { + ActivityManagerNative.getDefault() + .switchUser(avatar.getUserInfo().id); + } catch (RemoteException re) { + Log.e(TAG, "Couldn't switch user " + re); } } }); diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardPINView.java b/packages/Keyguard/src/com/android/keyguard/KeyguardPINView.java index fa803525a1e9..3d1c3f3918f7 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardPINView.java +++ b/packages/Keyguard/src/com/android/keyguard/KeyguardPINView.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.internal.policy.impl.keyguard; +package com.android.keyguard; import android.content.Context; import android.text.Editable; @@ -25,8 +25,6 @@ import android.util.AttributeSet; import android.view.View; import android.widget.TextView.OnEditorActionListener; -import com.android.internal.R; - /** * Displays a PIN pad for unlocking. */ diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardPasswordView.java b/packages/Keyguard/src/com/android/keyguard/KeyguardPasswordView.java index d52c993c82d2..4e3568b25a3f 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardPasswordView.java +++ b/packages/Keyguard/src/com/android/keyguard/KeyguardPasswordView.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.internal.policy.impl.keyguard; +package com.android.keyguard; import android.app.admin.DevicePolicyManager; import android.content.Context; @@ -31,7 +31,6 @@ import android.view.inputmethod.InputMethodManager; import android.view.inputmethod.InputMethodSubtype; import android.widget.TextView.OnEditorActionListener; -import com.android.internal.R; import com.android.internal.widget.PasswordEntryKeyboardHelper; import com.android.internal.widget.PasswordEntryKeyboardView; diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardPatternView.java b/packages/Keyguard/src/com/android/keyguard/KeyguardPatternView.java index e114b78bac2a..e7f12599e7ab 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardPatternView.java +++ b/packages/Keyguard/src/com/android/keyguard/KeyguardPatternView.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.android.internal.policy.impl.keyguard; +package com.android.keyguard; import android.accounts.Account; import android.accounts.AccountManager; @@ -37,7 +37,6 @@ import android.widget.LinearLayout; import com.android.internal.widget.LockPatternUtils; import com.android.internal.widget.LockPatternView; -import com.android.internal.R; import java.io.IOException; import java.util.List; diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardSecurityCallback.java b/packages/Keyguard/src/com/android/keyguard/KeyguardSecurityCallback.java index 7e6c108908ea..4f139addb9a2 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardSecurityCallback.java +++ b/packages/Keyguard/src/com/android/keyguard/KeyguardSecurityCallback.java @@ -13,9 +13,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.android.internal.policy.impl.keyguard; +package com.android.keyguard; -import com.android.internal.policy.impl.keyguard.KeyguardHostView.OnDismissAction; +import com.android.keyguard.KeyguardHostView.OnDismissAction; public interface KeyguardSecurityCallback { diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardSecurityContainer.java b/packages/Keyguard/src/com/android/keyguard/KeyguardSecurityContainer.java index 375a96abc333..9d03c6a97942 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardSecurityContainer.java +++ b/packages/Keyguard/src/com/android/keyguard/KeyguardSecurityContainer.java @@ -1,12 +1,10 @@ -package com.android.internal.policy.impl.keyguard; +package com.android.keyguard; import android.content.Context; import android.util.AttributeSet; import android.view.View; import android.widget.FrameLayout; -import com.android.internal.R; - public class KeyguardSecurityContainer extends FrameLayout { public KeyguardSecurityContainer(Context context, AttributeSet attrs) { this(context, attrs, 0); diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardSecurityModel.java b/packages/Keyguard/src/com/android/keyguard/KeyguardSecurityModel.java index 7a69586a91fa..4129e33fb07b 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardSecurityModel.java +++ b/packages/Keyguard/src/com/android/keyguard/KeyguardSecurityModel.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.android.internal.policy.impl.keyguard; +package com.android.keyguard; import android.app.admin.DevicePolicyManager; import android.content.Context; diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardSecurityView.java b/packages/Keyguard/src/com/android/keyguard/KeyguardSecurityView.java index a3ac39c1b2f0..dfeacf301de5 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardSecurityView.java +++ b/packages/Keyguard/src/com/android/keyguard/KeyguardSecurityView.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.android.internal.policy.impl.keyguard; +package com.android.keyguard; import com.android.internal.widget.LockPatternUtils; diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardSecurityViewFlipper.java b/packages/Keyguard/src/com/android/keyguard/KeyguardSecurityViewFlipper.java index aa31b0062af4..70a0e44fb342 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardSecurityViewFlipper.java +++ b/packages/Keyguard/src/com/android/keyguard/KeyguardSecurityViewFlipper.java @@ -14,10 +14,7 @@ * limitations under the License. */ -package com.android.internal.policy.impl.keyguard; - -import com.android.internal.R; -import com.android.internal.widget.LockPatternUtils; +package com.android.keyguard; import android.content.Context; import android.content.res.TypedArray; @@ -32,6 +29,8 @@ import android.view.WindowManager; import android.widget.FrameLayout; import android.widget.ViewFlipper; +import com.android.internal.widget.LockPatternUtils; + /** * Subclass of the current view flipper that allows us to overload dispatchTouchEvent() so * we can emulate {@link WindowManager.LayoutParams#FLAG_SLIPPERY} within a view hierarchy. diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardSecurityViewHelper.java b/packages/Keyguard/src/com/android/keyguard/KeyguardSecurityViewHelper.java index 3d59f8d919a4..67a6f525ae87 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardSecurityViewHelper.java +++ b/packages/Keyguard/src/com/android/keyguard/KeyguardSecurityViewHelper.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.internal.policy.impl.keyguard; +package com.android.keyguard; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardSelectorView.java b/packages/Keyguard/src/com/android/keyguard/KeyguardSelectorView.java index 68590422fd00..4d891beacec5 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardSelectorView.java +++ b/packages/Keyguard/src/com/android/keyguard/KeyguardSelectorView.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.android.internal.policy.impl.keyguard; +package com.android.keyguard; import android.animation.ObjectAnimator; import android.app.SearchManager; @@ -34,7 +34,6 @@ import com.android.internal.telephony.IccCardConstants.State; import com.android.internal.widget.LockPatternUtils; import com.android.internal.widget.multiwaveview.GlowPadView; import com.android.internal.widget.multiwaveview.GlowPadView.OnTriggerListener; -import com.android.internal.R; public class KeyguardSelectorView extends LinearLayout implements KeyguardSecurityView { private static final boolean DEBUG = KeyguardHostView.DEBUG; @@ -58,7 +57,7 @@ public class KeyguardSelectorView extends LinearLayout implements KeyguardSecuri public void onTrigger(View v, int target) { final int resId = mGlowPadView.getResourceIdForTarget(target); switch (resId) { - case com.android.internal.R.drawable.ic_action_assist_generic: + case R.drawable.ic_action_assist_generic: Intent assistIntent = ((SearchManager) mContext.getSystemService(Context.SEARCH_SERVICE)) .getAssistIntent(mContext, true, UserHandle.USER_CURRENT); @@ -70,13 +69,13 @@ public class KeyguardSelectorView extends LinearLayout implements KeyguardSecuri mCallback.userActivity(0); break; - case com.android.internal.R.drawable.ic_lockscreen_camera: + case R.drawable.ic_lockscreen_camera: mActivityLauncher.launchCamera(null, null); mCallback.userActivity(0); break; - case com.android.internal.R.drawable.ic_lockscreen_unlock_phantom: - case com.android.internal.R.drawable.ic_lockscreen_unlock: + case R.drawable.ic_lockscreen_unlock_phantom: + case R.drawable.ic_lockscreen_unlock: mCallback.userActivity(0); mCallback.dismiss(false); break; @@ -179,9 +178,9 @@ public class KeyguardSelectorView extends LinearLayout implements KeyguardSecuri final KeyguardUpdateMonitor monitor = KeyguardUpdateMonitor.getInstance(getContext()); boolean disabledBySimState = monitor.isSimLocked(); boolean cameraTargetPresent = - isTargetPresent(com.android.internal.R.drawable.ic_lockscreen_camera); + isTargetPresent(R.drawable.ic_lockscreen_camera); boolean searchTargetPresent = - isTargetPresent(com.android.internal.R.drawable.ic_action_assist_generic); + isTargetPresent(R.drawable.ic_action_assist_generic); if (cameraDisabledByAdmin) { Log.v(TAG, "Camera disabled by Device Policy"); @@ -214,21 +213,17 @@ public class KeyguardSelectorView extends LinearLayout implements KeyguardSecuri // DON'T USE IT! ComponentName component = intent.getComponent(); boolean replaced = mGlowPadView.replaceTargetDrawablesIfPresent(component, - ASSIST_ICON_METADATA_NAME + "_google", - com.android.internal.R.drawable.ic_action_assist_generic); + ASSIST_ICON_METADATA_NAME + "_google", R.drawable.ic_action_assist_generic); if (!replaced && !mGlowPadView.replaceTargetDrawablesIfPresent(component, - ASSIST_ICON_METADATA_NAME, - com.android.internal.R.drawable.ic_action_assist_generic)) { + ASSIST_ICON_METADATA_NAME, R.drawable.ic_action_assist_generic)) { Slog.w(TAG, "Couldn't grab icon from package " + component); } } } - mGlowPadView.setEnableTarget(com.android.internal.R.drawable - .ic_lockscreen_camera, !mCameraDisabled); - mGlowPadView.setEnableTarget(com.android.internal.R.drawable - .ic_action_assist_generic, !mSearchDisabled); + mGlowPadView.setEnableTarget(R.drawable.ic_lockscreen_camera, !mCameraDisabled); + mGlowPadView.setEnableTarget(R.drawable.ic_action_assist_generic, !mSearchDisabled); } void doTransition(View view, float to) { diff --git a/packages/Keyguard/src/com/android/keyguard/KeyguardService.java b/packages/Keyguard/src/com/android/keyguard/KeyguardService.java new file mode 100644 index 000000000000..9fa4790d1db5 --- /dev/null +++ b/packages/Keyguard/src/com/android/keyguard/KeyguardService.java @@ -0,0 +1,120 @@ +/* + * Copyright (C) 2013 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.keyguard; + +import java.io.FileDescriptor; +import java.io.PrintWriter; + +import android.app.Service; +import android.content.Intent; +import android.os.Bundle; +import android.os.IBinder; +import android.util.Log; + +import com.android.internal.policy.IKeyguardService; +import com.android.internal.policy.IKeyguardExitCallback; +import com.android.internal.policy.IKeyguardShowCallback; +import com.android.internal.widget.LockPatternUtils; + +public class KeyguardService extends Service { + static final String TAG = "KeyguardService"; + private KeyguardViewMediator mKeyguardViewMediator; + + @Override + public void onCreate() { + if (mKeyguardViewMediator == null) { + mKeyguardViewMediator = new KeyguardViewMediator( + KeyguardService.this, new LockPatternUtils(KeyguardService.this)); + } + Log.v(TAG, "onCreate()"); + } + + @Override + public IBinder onBind(Intent intent) { + return mBinder; + } + + @Override + protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) { + // TODO + } + + private final IKeyguardService.Stub mBinder = new IKeyguardService.Stub() { + public boolean isShowing() { + return mKeyguardViewMediator.isShowing(); + } + public boolean isSecure() { + return mKeyguardViewMediator.isSecure(); + } + public boolean isShowingAndNotHidden() { + return mKeyguardViewMediator.isShowingAndNotHidden(); + } + public boolean isInputRestricted() { + return mKeyguardViewMediator.isInputRestricted(); + } + public void verifyUnlock(IKeyguardExitCallback callback) { + mKeyguardViewMediator.verifyUnlock(callback); + } + public void keyguardDone(boolean authenticated, boolean wakeup) { + mKeyguardViewMediator.keyguardDone(authenticated, wakeup); + } + public void setHidden(boolean isHidden) { + mKeyguardViewMediator.setHidden(isHidden); + } + public void dismiss() { + mKeyguardViewMediator.dismiss(); + } + public void onWakeKeyWhenKeyguardShowing(int keyCode) { + mKeyguardViewMediator.onWakeKeyWhenKeyguardShowing(keyCode); + } + public void onWakeMotionWhenKeyguardShowing() { + mKeyguardViewMediator.onWakeMotionWhenKeyguardShowing(); + } + public void onDreamingStarted() { + mKeyguardViewMediator.onDreamingStarted(); + } + public void onDreamingStopped() { + mKeyguardViewMediator.onDreamingStopped(); + } + public void onScreenTurnedOff(int reason) { + mKeyguardViewMediator.onScreenTurnedOff(reason); + } + public void onScreenTurnedOn(IKeyguardShowCallback callback) { + mKeyguardViewMediator.onScreenTurnedOn(callback); + } + public void setKeyguardEnabled(boolean enabled) { + mKeyguardViewMediator.setKeyguardEnabled(enabled); + } + public boolean isDismissable() { + return mKeyguardViewMediator.isDismissable(); + } + public void onSystemReady() { + mKeyguardViewMediator.onSystemReady(); + } + public void doKeyguardTimeout(Bundle options) { + mKeyguardViewMediator.doKeyguardTimeout(options); + } + public void setCurrentUser(int userId) { + mKeyguardViewMediator.setCurrentUser(userId); + } + public void showAssistant() { + mKeyguardViewMediator.showAssistant(); + } + }; + +} + diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardSimPinView.java b/packages/Keyguard/src/com/android/keyguard/KeyguardSimPinView.java index ab364ee2dc9b..865a7c4cd96d 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardSimPinView.java +++ b/packages/Keyguard/src/com/android/keyguard/KeyguardSimPinView.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.internal.policy.impl.keyguard; +package com.android.keyguard; import com.android.internal.telephony.ITelephony; @@ -33,8 +33,6 @@ import android.view.View; import android.view.WindowManager; import android.widget.TextView.OnEditorActionListener; -import com.android.internal.R; - /** * Displays a PIN pad for unlocking. */ diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardSimPukView.java b/packages/Keyguard/src/com/android/keyguard/KeyguardSimPukView.java index e5b4b7308a67..7424fab9873d 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardSimPukView.java +++ b/packages/Keyguard/src/com/android/keyguard/KeyguardSimPukView.java @@ -13,12 +13,15 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.android.internal.policy.impl.keyguard; +package com.android.keyguard; + +import com.android.internal.telephony.ITelephony; + +import android.content.Context; import android.app.Activity; import android.app.Dialog; import android.app.ProgressDialog; -import android.content.Context; import android.os.RemoteException; import android.os.ServiceManager; import android.text.Editable; @@ -30,10 +33,6 @@ import android.view.View; import android.view.WindowManager; import android.widget.TextView.OnEditorActionListener; -import com.android.internal.telephony.ITelephony; - -import com.android.internal.R; - /** * Displays a PIN pad for entering a PUK (Pin Unlock Kode) provided by a carrier. */ @@ -72,8 +71,7 @@ public class KeyguardSimPukView extends KeyguardAbsKeyInputView } else if (state == CONFIRM_PIN) { if (confirmPin()) { state = DONE; - msg = - com.android.internal.R.string.lockscreen_sim_unlock_progress_dialog_message; + msg = R.string.keyguard_sim_unlock_progress_dialog_message; updateSim(); } else { state = ENTER_PIN; // try again? diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardStatusView.java b/packages/Keyguard/src/com/android/keyguard/KeyguardStatusView.java index d938cecf1a90..29f76f309420 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardStatusView.java +++ b/packages/Keyguard/src/com/android/keyguard/KeyguardStatusView.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.internal.policy.impl.keyguard; +package com.android.keyguard; import android.content.Context; import android.content.res.Resources; @@ -26,7 +26,6 @@ import android.view.View; import android.widget.GridLayout; import android.widget.TextView; -import com.android.internal.R; import com.android.internal.widget.LockPatternUtils; import java.text.SimpleDateFormat; @@ -40,7 +39,7 @@ public class KeyguardStatusView extends GridLayout { private static final String TAG = "KeyguardStatusView"; public static final int LOCK_ICON = 0; // R.drawable.ic_lock_idle_lock; - public static final int ALARM_ICON = com.android.internal.R.drawable.ic_lock_idle_alarm; + public static final int ALARM_ICON = R.drawable.ic_lock_idle_alarm; public static final int CHARGING_ICON = 0; //R.drawable.ic_lock_idle_charging; public static final int BATTERY_LOW_ICON = 0; //R.drawable.ic_lock_idle_low_battery; @@ -84,8 +83,7 @@ public class KeyguardStatusView extends GridLayout { super.onFinishInflate(); Resources res = getContext().getResources(); final Locale locale = Locale.getDefault(); - final String datePattern = - res.getString(com.android.internal.R.string.system_ui_date_pattern); + final String datePattern = res.getString(R.string.system_ui_date_pattern); final String bestFormat = ICU.getBestDateTimePattern(datePattern, locale.toString()); mDateFormat = new SimpleDateFormat(bestFormat, locale); mDateView = (TextView) findViewById(R.id.date); diff --git a/packages/Keyguard/src/com/android/keyguard/KeyguardStatusViewManager.java b/packages/Keyguard/src/com/android/keyguard/KeyguardStatusViewManager.java new file mode 100644 index 000000000000..e69de29bb2d1 --- /dev/null +++ b/packages/Keyguard/src/com/android/keyguard/KeyguardStatusViewManager.java diff --git a/packages/Keyguard/src/com/android/keyguard/KeyguardTestActivity.java b/packages/Keyguard/src/com/android/keyguard/KeyguardTestActivity.java new file mode 100644 index 000000000000..0ff00e363dc6 --- /dev/null +++ b/packages/Keyguard/src/com/android/keyguard/KeyguardTestActivity.java @@ -0,0 +1,356 @@ +/* + * Copyright (C) 2012 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.keyguard; + +import com.android.internal.policy.IKeyguardShowCallback; +import com.android.internal.policy.IKeyguardExitCallback; +import com.android.internal.policy.IKeyguardService; + +import android.app.Activity; +import android.app.AlertDialog; +import android.app.admin.DevicePolicyManager; +import android.content.ComponentName; +import android.content.Context; +import android.content.Intent; +import android.content.ServiceConnection; +import android.os.Bundle; +import android.os.IBinder; +import android.os.RemoteException; +import android.os.SystemClock; +import android.provider.Settings; +import android.util.Log; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; +import android.view.View; +import android.view.View.OnClickListener; +import android.view.WindowManagerPolicy; + +import com.android.internal.widget.LockPatternUtils; +import com.android.internal.widget.LockPatternView.Cell; + +import java.util.List; + +public class KeyguardTestActivity extends Activity implements OnClickListener { + private static final String KEYGUARD_PACKAGE = "com.android.keyguard"; + private static final String KEYGUARD_CLASS = "com.android.keyguard.KeyguardService"; + private static final String TAG = "LockScreenTestActivity"; + private static final int MODE_NONE = 0; + private static final int MODE_PIN = 1; + private static final int MODE_PASSWORD = 2; + private static final int MODE_PATTERN = 3; + private static final int MODE_SIM_PIN = 4; + private static final int MODE_SIM_PUK = 5; + private static final String SECURITY_MODE = "security_mode"; + + IKeyguardService mService = null; + + KeyguardShowCallback mKeyguardShowCallback = new KeyguardShowCallback(); + KeyguardExitCallback mKeyguardExitCallback = new KeyguardExitCallback(); + + RemoteServiceConnection mConnection; + private boolean mSentSystemReady; + + class KeyguardShowCallback extends IKeyguardShowCallback.Stub { + + @Override + public void onShown(IBinder windowToken) throws RemoteException { + Log.v(TAG, "Keyguard is shown, windowToken = " + windowToken); + } + } + + class KeyguardExitCallback extends IKeyguardExitCallback.Stub { + + @Override + public void onKeyguardExitResult(boolean success) throws RemoteException { + new AlertDialog.Builder(KeyguardTestActivity.this) + .setMessage("Result: " + success) + .setPositiveButton("OK", null) + .show(); + } + + }; + + private class RemoteServiceConnection implements ServiceConnection { + public void onServiceConnected(ComponentName className, IBinder service) { + Log.v(TAG, "onServiceConnected()"); + mService = IKeyguardService.Stub.asInterface(service); + try { + mService.asBinder().linkToDeath(new IBinder.DeathRecipient() { + @Override + public void binderDied() { + new AlertDialog.Builder(KeyguardTestActivity.this) + .setMessage("Oops! Keygued died") + .setPositiveButton("OK", null) + .show(); + } + }, 0); + } catch (RemoteException e) { + Log.w(TAG, "Couldn't linkToDeath"); + e.printStackTrace(); + } +// try { +// mService.onSystemReady(); +// } catch (RemoteException e) { +// Log.v(TAG, "Remote service died trying to call onSystemReady"); +// e.printStackTrace(); +// } + } + + public void onServiceDisconnected(ComponentName className) { + Log.v(TAG, "onServiceDisconnected()"); + mService = null; + } + }; + + private void bindService() { + if (mConnection == null) { + mConnection = new RemoteServiceConnection(); + Intent intent = new Intent(); + intent.setClassName(KEYGUARD_PACKAGE, KEYGUARD_CLASS); + Log.v(TAG, "BINDING SERVICE: " + KEYGUARD_CLASS); + if (!bindService(intent, mConnection, Context.BIND_AUTO_CREATE)) { + Log.v(TAG, "FAILED TO BIND TO KEYGUARD!"); + } + } else { + Log.v(TAG, "Service already bound"); + } + } + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.keyguard_test_activity); + final int[] buttons = { + R.id.on_screen_turned_off, R.id.on_screen_turned_on, + R.id.do_keyguard, R.id.verify_unlock + }; + for (int i = 0; i < buttons.length; i++) { + findViewById(buttons[i]).setOnClickListener(this); + } + Log.v(TAG, "Binding service..."); + bindService(); + } + + @Override + protected void onSaveInstanceState(Bundle outState) { + super.onSaveInstanceState(outState); + outState.putInt(SECURITY_MODE, mSecurityMode); + } + + @Override + protected void onRestoreInstanceState(Bundle savedInstanceState) { + super.onRestoreInstanceState(savedInstanceState); + setMode(savedInstanceState.getInt(SECURITY_MODE)); + } + + @Override + public boolean onCreateOptionsMenu(Menu menu) { + MenuInflater inflater = getMenuInflater(); + inflater.inflate(R.menu.optionmenu, menu); + return true; + } + + private void setMode(int mode) { + mTestSimPin = false; + mTestSimPuk = false; + mLockPasswordEnabled = false; + mLockPatternEnabled = false; + switch(mode) { + case MODE_NONE: + mSecurityModeMock = DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED; + break; + case MODE_PIN: + mSecurityModeMock = DevicePolicyManager.PASSWORD_QUALITY_NUMERIC; + mLockPasswordEnabled = true; + break; + case MODE_PASSWORD: + mSecurityModeMock = DevicePolicyManager.PASSWORD_QUALITY_ALPHABETIC; + mLockPasswordEnabled = true; + break; + case MODE_PATTERN: + mSecurityModeMock = DevicePolicyManager.PASSWORD_QUALITY_SOMETHING; + mLockPatternEnabled = true; + break; + case MODE_SIM_PIN: + mTestSimPin = true; + break; + case MODE_SIM_PUK: + mTestSimPuk = true; + break; + } + mSecurityMode = mode; + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + // Handle item selection + switch (item.getItemId()) { + case R.id.none_menu_item: + setMode(MODE_NONE); + break; + case R.id.pin_menu_item: + setMode(MODE_PIN); + break; + case R.id.password_menu_item: + setMode(MODE_PASSWORD); + break; + case R.id.pattern_menu_item: + setMode(MODE_PATTERN); + break; + case R.id.sim_pin_menu_item: + setMode(MODE_SIM_PIN); + break; + case R.id.sim_puk_menu_item: + setMode(MODE_SIM_PUK); + break; + case R.id.add_widget_item: + startWidgetPicker(); + break; + default: + return super.onOptionsItemSelected(item); + } + try { + mService.doKeyguardTimeout(null); + } catch (RemoteException e) { + Log.e(TAG, "Remote service died"); + e.printStackTrace(); + } + return true; + } + + private void startWidgetPicker() { + startActivity(new Intent(Settings.ACTION_SECURITY_SETTINGS)); + } + + @Override + public void onClick(View v) { + try { + switch (v.getId()) { + case R.id.on_screen_turned_on: + mService.onScreenTurnedOn(mKeyguardShowCallback); + break; + case R.id.on_screen_turned_off: + mService.onScreenTurnedOff(WindowManagerPolicy.OFF_BECAUSE_OF_USER); + break; + case R.id.do_keyguard: + if (!mSentSystemReady) { + mSentSystemReady = true; + mService.onSystemReady(); + } + mService.doKeyguardTimeout(null); + break; + case R.id.verify_unlock: + mService.verifyUnlock(mKeyguardExitCallback); + break; + } + } catch (RemoteException e) { + Log.e(TAG, "Remote service died"); + e.printStackTrace(); + } + } + + @Override + protected void onPause() { + super.onPause(); + try { + if (mService != null) { + mService.setHidden(true); + } + } catch (RemoteException e) { + Log.e(TAG, "Remote service died"); + e.printStackTrace(); + } + } + + protected void onResume() { + super.onResume(); + try { + if (mService != null) { + mService.setHidden(false); + } + } catch (RemoteException e) { + Log.e(TAG, "Remote service died"); + e.printStackTrace(); + } + } + + public int mSecurityModeMock; + private boolean mTestSimPin; + private boolean mTestSimPuk; + private boolean mLockPasswordEnabled; + public boolean mLockPatternEnabled; + private int mSecurityMode; + + class LockPatternUtilsMock extends LockPatternUtils { + private long mDeadline; + public LockPatternUtilsMock(Context context) { + super(context); + } + + @Override + public boolean checkPattern(List<Cell> pattern) { + return pattern.size() > 4; + } + + @Override + public boolean checkPassword(String password) { + return password.length() > 4; + } + @Override + public long setLockoutAttemptDeadline() { + final long deadline = SystemClock.elapsedRealtime() + FAILED_ATTEMPT_TIMEOUT_MS; + mDeadline = deadline; + return deadline; + } + @Override + public boolean isLockScreenDisabled() { + return false; + } + @Override + public long getLockoutAttemptDeadline() { + return mDeadline; + } + @Override + public void reportFailedPasswordAttempt() { + // Ignored + } + @Override + public void reportSuccessfulPasswordAttempt() { + // Ignored + } + @Override + public boolean isLockPatternEnabled() { + return mLockPatternEnabled; + } + + @Override + public boolean isLockPasswordEnabled() { + return mLockPasswordEnabled; + } + + @Override + public int getKeyguardStoredPasswordQuality() { + return mSecurityModeMock; + } + + public boolean isSecure() { + return mLockPatternEnabled || mLockPasswordEnabled || mTestSimPin || mTestSimPuk; + } + + } +} diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardTransportControlView.java b/packages/Keyguard/src/com/android/keyguard/KeyguardTransportControlView.java index ffa88d554b62..07be2cc335a0 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardTransportControlView.java +++ b/packages/Keyguard/src/com/android/keyguard/KeyguardTransportControlView.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.internal.policy.impl.keyguard; +package com.android.keyguard; import android.app.PendingIntent; import android.app.PendingIntent.CanceledException; @@ -44,8 +44,6 @@ import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.TextView; -import com.android.internal.R; - import java.lang.ref.WeakReference; /** * This is the widget responsible for showing music controls in keyguard. @@ -356,26 +354,26 @@ public class KeyguardTransportControlView extends FrameLayout implements OnClick final int imageDescId; switch (state) { case RemoteControlClient.PLAYSTATE_ERROR: - imageResId = com.android.internal.R.drawable.stat_sys_warning; + imageResId = R.drawable.stat_sys_warning; // TODO use more specific image description string for warning, but here the "play" // message is still valid because this button triggers a play command. - imageDescId = com.android.internal.R.string.lockscreen_transport_play_description; + imageDescId = R.string.keyguard_transport_play_description; break; case RemoteControlClient.PLAYSTATE_PLAYING: - imageResId = com.android.internal.R.drawable.ic_media_pause; - imageDescId = com.android.internal.R.string.lockscreen_transport_pause_description; + imageResId = R.drawable.ic_media_pause; + imageDescId = R.string.keyguard_transport_pause_description; break; case RemoteControlClient.PLAYSTATE_BUFFERING: - imageResId = com.android.internal.R.drawable.ic_media_stop; - imageDescId = com.android.internal.R.string.lockscreen_transport_stop_description; + imageResId = R.drawable.ic_media_stop; + imageDescId = R.string.keyguard_transport_stop_description; break; case RemoteControlClient.PLAYSTATE_PAUSED: default: - imageResId = com.android.internal.R.drawable.ic_media_play; - imageDescId = com.android.internal.R.string.lockscreen_transport_play_description; + imageResId = R.drawable.ic_media_play; + imageDescId = R.string.keyguard_transport_play_description; break; } mBtnPlay.setImageResource(imageResId); diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardUpdateMonitor.java b/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java index c9bffbe41278..ff0dee7441c7 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardUpdateMonitor.java +++ b/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.internal.policy.impl.keyguard; +package com.android.keyguard; import android.app.ActivityManagerNative; import android.app.IUserSwitchObserver; @@ -37,7 +37,6 @@ import android.os.Handler; import android.os.IRemoteCallback; import android.os.Message; import android.os.RemoteException; -import android.os.UserHandle; import android.provider.Settings; import com.android.internal.telephony.IccCardConstants; @@ -45,7 +44,6 @@ import com.android.internal.telephony.TelephonyIntents; import android.telephony.TelephonyManager; import android.util.Log; -import com.android.internal.R; import com.google.android.collect.Lists; import java.lang.ref.WeakReference; @@ -466,7 +464,7 @@ public class KeyguardUpdateMonitor { } /** - * We need to store this state in the KeyguardUpdateMonitor since this class will not be + * We need to store this state in the KeyguardUpdateMonitor since this class will not be * destroyed. */ public boolean hasBootCompleted() { @@ -675,7 +673,7 @@ public class KeyguardUpdateMonitor { * @return The default plmn (no service) */ private CharSequence getDefaultPlmn() { - return mContext.getResources().getText(R.string.lockscreen_carrier_default); + return mContext.getResources().getText(R.string.keyguard_carrier_default); } /** diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardUpdateMonitorCallback.java b/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitorCallback.java index 2126f063e630..12ffcc3b6847 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardUpdateMonitorCallback.java +++ b/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitorCallback.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.android.internal.policy.impl.keyguard; +package com.android.keyguard; import android.app.admin.DevicePolicyManager; import android.media.AudioManager; diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardViewBase.java b/packages/Keyguard/src/com/android/keyguard/KeyguardViewBase.java index 6fcacd3c418b..200fb3cc17a4 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardViewBase.java +++ b/packages/Keyguard/src/com/android/keyguard/KeyguardViewBase.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.internal.policy.impl.keyguard; +package com.android.keyguard; import android.app.Activity; import android.content.Context; @@ -260,5 +260,4 @@ public abstract class KeyguardViewBase extends FrameLayout { KeyguardViewMediator.ViewMediatorCallback viewMediatorCallback) { mViewMediatorCallback = viewMediatorCallback; } - } diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardViewManager.java b/packages/Keyguard/src/com/android/keyguard/KeyguardViewManager.java index 8562f0c20a5c..ef3fa6e347db 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardViewManager.java +++ b/packages/Keyguard/src/com/android/keyguard/KeyguardViewManager.java @@ -14,7 +14,10 @@ * limitations under the License. */ -package com.android.internal.policy.impl.keyguard; +package com.android.keyguard; + +import com.android.internal.policy.IKeyguardShowCallback; +import com.android.internal.widget.LockPatternUtils; import android.app.Activity; import android.app.ActivityManager; @@ -28,6 +31,7 @@ import android.graphics.Rect; import android.os.Bundle; import android.os.IBinder; import android.os.Parcelable; +import android.os.RemoteException; import android.os.SystemProperties; import android.util.Log; import android.util.Slog; @@ -40,9 +44,6 @@ import android.view.ViewManager; import android.view.WindowManager; import android.widget.FrameLayout; -import com.android.internal.R; -import com.android.internal.widget.LockPatternUtils; - /** * Manages creating, showing, hiding and resetting the keyguard. Calls back * via {@link KeyguardViewMediator.ViewMediatorCallback} to poke @@ -119,7 +120,7 @@ public class KeyguardViewManager { private boolean shouldEnableScreenRotation() { Resources res = mContext.getResources(); return SystemProperties.getBoolean("lockscreen.rot_override",false) - || res.getBoolean(com.android.internal.R.bool.config_enableLockScreenRotation); + || res.getBoolean(R.bool.config_enableLockScreenRotation); } class ViewManagerHost extends FrameLayout { @@ -194,12 +195,11 @@ public class KeyguardViewManager { } final int stretch = ViewGroup.LayoutParams.MATCH_PARENT; - final int type = isActivity ? WindowManager.LayoutParams.TYPE_APPLICATION - : WindowManager.LayoutParams.TYPE_KEYGUARD; + final int type = WindowManager.LayoutParams.TYPE_KEYGUARD; WindowManager.LayoutParams lp = new WindowManager.LayoutParams( stretch, stretch, type, flags, PixelFormat.TRANSLUCENT); lp.softInputMode = WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE; - lp.windowAnimations = com.android.internal.R.style.Animation_LockScreen; + lp.windowAnimations = R.style.Animation_LockScreen; if (ActivityManager.isHighEndGfx()) { lp.flags |= WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED; lp.privateFlags |= @@ -331,8 +331,7 @@ public class KeyguardViewManager { } } - public synchronized void onScreenTurnedOn( - final KeyguardViewManager.ShowListener showListener) { + public synchronized void onScreenTurnedOn(final IKeyguardShowCallback callback) { if (DEBUG) Log.d(TAG, "onScreenTurnedOn()"); mScreenOn = true; if (mKeyguardView != null) { @@ -340,26 +339,38 @@ public class KeyguardViewManager { // Caller should wait for this window to be shown before turning // on the screen. - if (showListener != null) { + if (callback != null) { if (mKeyguardHost.getVisibility() == View.VISIBLE) { // Keyguard may be in the process of being shown, but not yet // updated with the window manager... give it a chance to do so. mKeyguardHost.post(new Runnable() { @Override public void run() { + IBinder token = null; if (mKeyguardHost.getVisibility() == View.VISIBLE) { - showListener.onShown(mKeyguardHost.getWindowToken()); - } else { - showListener.onShown(null); + token = mKeyguardHost.getWindowToken(); + } + try { + callback.onShown(token); + } catch (RemoteException e) { + Slog.w(TAG, "Exception calling onShown():", e); } } }); } else { - showListener.onShown(null); + try { + callback.onShown(null); + } catch (RemoteException e) { + Slog.w(TAG, "Exception calling onShown():", e); + } } } - } else if (showListener != null) { - showListener.onShown(null); + } else if (callback != null) { + try { + callback.onShown(null); + } catch (RemoteException e) { + Slog.w(TAG, "Exception calling onShown():", e); + } } } diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardViewMediator.java b/packages/Keyguard/src/com/android/keyguard/KeyguardViewMediator.java index 8e10528f594c..01467815b287 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardViewMediator.java +++ b/packages/Keyguard/src/com/android/keyguard/KeyguardViewMediator.java @@ -14,8 +14,10 @@ * limitations under the License. */ -package com.android.internal.policy.impl.keyguard; +package com.android.keyguard; +import com.android.internal.policy.IKeyguardExitCallback; +import com.android.internal.policy.IKeyguardShowCallback; import static android.provider.Settings.System.SCREEN_OFF_TIMEOUT; import android.app.Activity; @@ -45,6 +47,7 @@ import android.provider.Settings; import android.telephony.TelephonyManager; import android.util.EventLog; import android.util.Log; +import android.util.Slog; import android.view.KeyEvent; import android.view.WindowManager; import android.view.WindowManagerPolicy; @@ -219,7 +222,7 @@ public class KeyguardViewMediator { * how we'll ultimately let them know whether it was successful. We use this * var being non-null as an indicator that there is an in progress request. */ - private WindowManagerPolicy.OnKeyguardExitResult mExitSecureCallback; + private IKeyguardExitCallback mExitSecureCallback; // the properties of the keyguard @@ -233,7 +236,9 @@ public class KeyguardViewMediator { /** * we send this intent when the keyguard is dismissed. */ - private Intent mUserPresentIntent; + private static final Intent USER_PRESENT_INTENT = new Intent(Intent.ACTION_USER_PRESENT) + .addFlags(Intent.FLAG_RECEIVER_REPLACE_PENDING + | Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT); /** * {@link #setKeyguardEnabled} waits on this condition when it reenables @@ -347,7 +352,7 @@ public class KeyguardViewMediator { // flicker while turning back on the screen and disabling the keyguard again). if (DEBUG) Log.d(TAG, "screen is off and call ended, let's make sure the " + "keyguard is showing"); - doKeyguardLocked(); + doKeyguardLocked(null); } } }; @@ -377,7 +382,7 @@ public class KeyguardViewMediator { if (DEBUG) Log.d(TAG, "ICC_ABSENT isn't showing," + " we need to show the keyguard since the " + "device isn't provisioned yet."); - doKeyguardLocked(); + doKeyguardLocked(null); } else { resetStateLocked(null); } @@ -390,7 +395,7 @@ public class KeyguardViewMediator { if (!isShowing()) { if (DEBUG) Log.d(TAG, "INTENT_VALUE_ICC_LOCKED and keygaurd isn't " + "showing; need to show keyguard so user can enter sim pin"); - doKeyguardLocked(); + doKeyguardLocked(null); } else { resetStateLocked(null); } @@ -401,7 +406,7 @@ public class KeyguardViewMediator { if (!isShowing()) { if (DEBUG) Log.d(TAG, "PERM_DISABLED and " + "keygaurd isn't showing."); - doKeyguardLocked(); + doKeyguardLocked(null); } else { if (DEBUG) Log.d(TAG, "PERM_DISABLED, resetStateLocked to" + "show permanently disabled message in lockscreen."); @@ -462,7 +467,7 @@ public class KeyguardViewMediator { mPM.wakeUp(SystemClock.uptimeMillis()); } - public void userActivity() { + private void userActivity() { userActivity(AWAKE_INTERVAL_DEFAULT_MS); } @@ -502,10 +507,6 @@ public class KeyguardViewMediator { mKeyguardViewManager = new KeyguardViewManager(context, wm, mViewMediatorCallback, mLockPatternUtils); - mUserPresentIntent = new Intent(Intent.ACTION_USER_PRESENT); - mUserPresentIntent.addFlags(Intent.FLAG_RECEIVER_REPLACE_PENDING - | Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT); - final ContentResolver cr = mContext.getContentResolver(); mShowLockIcon = (Settings.System.getInt(cr, "show_status_bar_lock", 0) == 1); @@ -558,7 +559,7 @@ public class KeyguardViewMediator { mUpdateMonitor.setAlternateUnlockEnabled(true); } - doKeyguardLocked(); + doKeyguardLocked(null); } // Most services aren't available until the system reaches the ready state, so we // send it here when the device first boots. @@ -586,7 +587,11 @@ public class KeyguardViewMediator { if (mExitSecureCallback != null) { if (DEBUG) Log.d(TAG, "pending exit secure callback cancelled"); - mExitSecureCallback.onKeyguardExitResult(false); + try { + mExitSecureCallback.onKeyguardExitResult(false); + } catch (RemoteException e) { + Slog.w(TAG, "Failed to call onKeyguardExitResult(false)", e); + } mExitSecureCallback = null; if (!mExternallyEnabled) { hideLocked(); @@ -600,7 +605,7 @@ public class KeyguardViewMediator { } else if (why == WindowManagerPolicy.OFF_BECAUSE_OF_PROX_SENSOR) { // Do not enable the keyguard if the prox sensor forced the screen off. } else { - doKeyguardLocked(); + doKeyguardLocked(null); } } } @@ -638,7 +643,7 @@ public class KeyguardViewMediator { if (timeout <= 0) { // Lock now mSuppressNextLockSound = true; - doKeyguardLocked(); + doKeyguardLocked(null); } else { // Lock in the future long when = SystemClock.elapsedRealtime() + timeout; @@ -659,13 +664,13 @@ public class KeyguardViewMediator { /** * Let's us know the screen was turned on. */ - public void onScreenTurnedOn(KeyguardViewManager.ShowListener showListener) { + public void onScreenTurnedOn(IKeyguardShowCallback callback) { synchronized (this) { mScreenOn = true; cancelDoKeyguardLaterLocked(); if (DEBUG) Log.d(TAG, "onScreenTurnedOn, seq = " + mDelayedShowingSequence); - if (showListener != null) { - notifyScreenOnLocked(showListener); + if (callback != null) { + notifyScreenOnLocked(callback); } } maybeSendUserPresentBroadcast(); @@ -736,7 +741,11 @@ public class KeyguardViewMediator { if (mExitSecureCallback != null) { if (DEBUG) Log.d(TAG, "onKeyguardExitResult(false), resetting"); - mExitSecureCallback.onKeyguardExitResult(false); + try { + mExitSecureCallback.onKeyguardExitResult(false); + } catch (RemoteException e) { + Slog.w(TAG, "Failed to call onKeyguardExitResult(false)", e); + } mExitSecureCallback = null; resetStateLocked(null); } else { @@ -764,22 +773,34 @@ public class KeyguardViewMediator { /** * @see android.app.KeyguardManager#exitKeyguardSecurely */ - public void verifyUnlock(WindowManagerPolicy.OnKeyguardExitResult callback) { + public void verifyUnlock(IKeyguardExitCallback callback) { synchronized (this) { if (DEBUG) Log.d(TAG, "verifyUnlock"); if (!mUpdateMonitor.isDeviceProvisioned()) { // don't allow this api when the device isn't provisioned if (DEBUG) Log.d(TAG, "ignoring because device isn't provisioned"); - callback.onKeyguardExitResult(false); + try { + callback.onKeyguardExitResult(false); + } catch (RemoteException e) { + Slog.w(TAG, "Failed to call onKeyguardExitResult(false)", e); + } } else if (mExternallyEnabled) { // this only applies when the user has externally disabled the // keyguard. this is unexpected and means the user is not // using the api properly. Log.w(TAG, "verifyUnlock called when not externally disabled"); - callback.onKeyguardExitResult(false); + try { + callback.onKeyguardExitResult(false); + } catch (RemoteException e) { + Slog.w(TAG, "Failed to call onKeyguardExitResult(false)", e); + } } else if (mExitSecureCallback != null) { // already in progress with someone else - callback.onKeyguardExitResult(false); + try { + callback.onKeyguardExitResult(false); + } catch (RemoteException e) { + Slog.w(TAG, "Failed to call onKeyguardExitResult(false)", e); + } } else { mExitSecureCallback = callback; verifyUnlockLocked(); @@ -844,10 +865,6 @@ public class KeyguardViewMediator { return mShowing || mNeedToReshowWhenReenabled || !mUpdateMonitor.isDeviceProvisioned(); } - private void doKeyguardLocked() { - doKeyguardLocked(null); - } - /** * Enable the keyguard if the settings are appropriate. */ @@ -945,9 +962,9 @@ public class KeyguardViewMediator { * @see #onScreenTurnedOn() * @see #handleNotifyScreenOn */ - private void notifyScreenOnLocked(KeyguardViewManager.ShowListener showListener) { + private void notifyScreenOnLocked(IKeyguardShowCallback result) { if (DEBUG) Log.d(TAG, "notifyScreenOnLocked"); - Message msg = mHandler.obtainMessage(NOTIFY_SCREEN_ON, showListener); + Message msg = mHandler.obtainMessage(NOTIFY_SCREEN_ON, result); mHandler.sendMessage(msg); } @@ -956,7 +973,7 @@ public class KeyguardViewMediator { * its state accordingly and then poke the wake lock when it is ready. * @param keyCode The wake key. * @see #handleWakeWhenReady - * @see #onWakeKeyWhenKeyguardShowingTq(int) + * @see #onWakeKeyWhenKeyguardShowing(int) */ private void wakeWhenReady(int keyCode) { if (DBG_WAKE) Log.d(TAG, "wakeWhenReady(" + keyCode + ")"); @@ -1020,7 +1037,7 @@ public class KeyguardViewMediator { if (mDelayedShowingSequence == sequence) { // Don't play lockscreen SFX if the screen went off due to timeout. mSuppressNextLockSound = true; - doKeyguardLocked(); + doKeyguardLocked(null); } } } @@ -1038,7 +1055,7 @@ public class KeyguardViewMediator { * * @param keyCode The keycode of the key that woke the device */ - public void onWakeKeyWhenKeyguardShowingTq(int keyCode) { + public void onWakeKeyWhenKeyguardShowing(int keyCode) { if (DEBUG) Log.d(TAG, "onWakeKeyWhenKeyguardShowing(" + keyCode + ")"); // give the keyguard view manager a chance to adjust the state of the @@ -1057,7 +1074,7 @@ public class KeyguardViewMediator { * Be sure not to take any action that takes a long time; any significant * action should be posted to a handler. */ - public void onWakeMotionWhenKeyguardShowingTq() { + public void onWakeMotionWhenKeyguardShowing() { if (DEBUG) Log.d(TAG, "onWakeMotionWhenKeyguardShowing()"); // give the keyguard view manager a chance to adjust the state of the @@ -1080,7 +1097,12 @@ public class KeyguardViewMediator { } if (mExitSecureCallback != null) { - mExitSecureCallback.onKeyguardExitResult(authenticated); + try { + mExitSecureCallback.onKeyguardExitResult(authenticated); + } catch (RemoteException e) { + Slog.w(TAG, "Failed to call onKeyguardExitResult(" + authenticated + ")", e); + } + mExitSecureCallback = null; if (authenticated) { @@ -1120,7 +1142,7 @@ public class KeyguardViewMediator { handleNotifyScreenOff(); return; case NOTIFY_SCREEN_ON: - handleNotifyScreenOn((KeyguardViewManager.ShowListener)msg.obj); + handleNotifyScreenOn((IKeyguardShowCallback) msg.obj); return; case WAKE_WHEN_READY: handleWakeWhenReady(msg.arg1); @@ -1164,10 +1186,8 @@ public class KeyguardViewMediator { } private void sendUserPresentBroadcast() { - if (!(mContext instanceof Activity)) { - final UserHandle currentUser = new UserHandle(mLockPatternUtils.getCurrentUser()); - mContext.sendBroadcastAsUser(mUserPresentIntent, currentUser); - } + final UserHandle currentUser = new UserHandle(mLockPatternUtils.getCurrentUser()); + mContext.sendBroadcastAsUser(USER_PRESENT_INTENT, currentUser); } /** @@ -1176,7 +1196,7 @@ public class KeyguardViewMediator { */ private void handleKeyguardDoneDrawing() { synchronized(this) { - if (false) Log.d(TAG, "handleKeyguardDoneDrawing"); + if (DEBUG) Log.d(TAG, "handleKeyguardDoneDrawing"); if (mWaitingUntilKeyguardVisible) { if (DEBUG) Log.d(TAG, "handleKeyguardDoneDrawing: notifying mWaitingUntilKeyguardVisible"); mWaitingUntilKeyguardVisible = false; @@ -1232,8 +1252,12 @@ public class KeyguardViewMediator { */ private void handleShow(Bundle options) { synchronized (KeyguardViewMediator.this) { - if (DEBUG) Log.d(TAG, "handleShow"); - if (!mSystemReady) return; + if (!mSystemReady) { + if (DEBUG) Log.d(TAG, "ignoring handleShow because system is not ready."); + return; + } else { + if (DEBUG) Log.d(TAG, "handleShow"); + } mKeyguardViewManager.show(options); mShowing = true; @@ -1406,10 +1430,10 @@ public class KeyguardViewMediator { * Handle message sent by {@link #notifyScreenOnLocked()} * @see #NOTIFY_SCREEN_ON */ - private void handleNotifyScreenOn(KeyguardViewManager.ShowListener showListener) { + private void handleNotifyScreenOn(IKeyguardShowCallback callback) { synchronized (KeyguardViewMediator.this) { if (DEBUG) Log.d(TAG, "handleNotifyScreenOn"); - mKeyguardViewManager.onScreenTurnedOn(showListener); + mKeyguardViewManager.onScreenTurnedOn(callback); } } diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardViewStateManager.java b/packages/Keyguard/src/com/android/keyguard/KeyguardViewStateManager.java index 0a166e17058d..880fddd77218 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardViewStateManager.java +++ b/packages/Keyguard/src/com/android/keyguard/KeyguardViewStateManager.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.android.internal.policy.impl.keyguard; +package com.android.keyguard; import android.appwidget.AppWidgetManager; import android.os.Handler; diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardWidgetCarousel.java b/packages/Keyguard/src/com/android/keyguard/KeyguardWidgetCarousel.java index 257fd2748b14..98b31b79ae78 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardWidgetCarousel.java +++ b/packages/Keyguard/src/com/android/keyguard/KeyguardWidgetCarousel.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.android.internal.policy.impl.keyguard; +package com.android.keyguard; import android.animation.Animator; import android.animation.AnimatorSet; @@ -26,8 +26,6 @@ import android.view.animation.AccelerateInterpolator; import android.view.animation.DecelerateInterpolator; import android.view.animation.Interpolator; -import com.android.internal.R; - import java.util.ArrayList; public class KeyguardWidgetCarousel extends KeyguardWidgetPager { diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardWidgetFrame.java b/packages/Keyguard/src/com/android/keyguard/KeyguardWidgetFrame.java index babb9cb8de19..81f6221e024b 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardWidgetFrame.java +++ b/packages/Keyguard/src/com/android/keyguard/KeyguardWidgetFrame.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.internal.policy.impl.keyguard; +package com.android.keyguard; import android.animation.Animator; import android.animation.ObjectAnimator; @@ -37,8 +37,6 @@ import android.view.MotionEvent; import android.view.View; import android.widget.FrameLayout; -import com.android.internal.R; - public class KeyguardWidgetFrame extends FrameLayout { private final static PorterDuffXfermode sAddBlendMode = new PorterDuffXfermode(PorterDuff.Mode.ADD); @@ -114,9 +112,9 @@ public class KeyguardWidgetFrame extends FrameLayout { // This will be overriden on phones based on the current security mode, however on tablets // we need to specify a height. mSmallWidgetHeight = - res.getDimensionPixelSize(com.android.internal.R.dimen.kg_small_widget_height); + res.getDimensionPixelSize(R.dimen.kg_small_widget_height); mBackgroundDrawable = res.getDrawable(R.drawable.kg_widget_bg_padded); - mGradientColor = res.getColor(com.android.internal.R.color.kg_widget_pager_gradient); + mGradientColor = res.getColor(R.color.kg_widget_pager_gradient); mGradientPaint.setXfermode(sAddBlendMode); } diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardWidgetPager.java b/packages/Keyguard/src/com/android/keyguard/KeyguardWidgetPager.java index ad5e25706ba8..0d92e1178da8 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardWidgetPager.java +++ b/packages/Keyguard/src/com/android/keyguard/KeyguardWidgetPager.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.android.internal.policy.impl.keyguard; +package com.android.keyguard; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; @@ -350,7 +350,7 @@ public class KeyguardWidgetPager extends PagedView implements PagedView.PageSwit View content = (widget == frame) ? frame.getContent() : widget; if (content != null) { String contentDescription = mContext.getString( - com.android.internal.R.string.keyguard_accessibility_widget, + R.string.keyguard_accessibility_widget, content.getContentDescription()); frame.setContentDescription(contentDescription); } @@ -846,7 +846,7 @@ public class KeyguardWidgetPager extends PagedView implements PagedView.PageSwit setCurrentPage(mCurrentPage + 1); mAddWidgetView = null; } else if (mAddWidgetView == null && !enabled) { - View addWidget = findViewById(com.android.internal.R.id.keyguard_add_widget); + View addWidget = findViewById(R.id.keyguard_add_widget); if (addWidget != null) { mAddWidgetView = addWidget; removeView(addWidget); @@ -856,7 +856,7 @@ public class KeyguardWidgetPager extends PagedView implements PagedView.PageSwit boolean isAddPage(int pageIndex) { View v = getChildAt(pageIndex); - return v != null && v.getId() == com.android.internal.R.id.keyguard_add_widget; + return v != null && v.getId() == R.id.keyguard_add_widget; } boolean isCameraPage(int pageIndex) { diff --git a/policy/src/com/android/internal/policy/impl/keyguard/LiftToActivateListener.java b/packages/Keyguard/src/com/android/keyguard/LiftToActivateListener.java index 818108c67f22..e59602b1cfff 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/LiftToActivateListener.java +++ b/packages/Keyguard/src/com/android/keyguard/LiftToActivateListener.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.internal.policy.impl.keyguard; +package com.android.keyguard; import android.content.Context; import android.view.MotionEvent; diff --git a/policy/src/com/android/internal/policy/impl/keyguard/MultiPaneChallengeLayout.java b/packages/Keyguard/src/com/android/keyguard/MultiPaneChallengeLayout.java index 0ca46c32cddf..8fd39c00a7fe 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/MultiPaneChallengeLayout.java +++ b/packages/Keyguard/src/com/android/keyguard/MultiPaneChallengeLayout.java @@ -14,9 +14,7 @@ * limitations under the License. */ -package com.android.internal.policy.impl.keyguard; - -import com.android.internal.R; +package com.android.keyguard; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; @@ -72,7 +70,7 @@ public class MultiPaneChallengeLayout extends ViewGroup implements ChallengeLayo final TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.MultiPaneChallengeLayout, defStyleAttr, 0); - mOrientation = a.getInt(R.styleable.MultiPaneChallengeLayout_orientation, + mOrientation = a.getInt(R.styleable.MultiPaneChallengeLayout_android_orientation, HORIZONTAL); a.recycle(); diff --git a/policy/src/com/android/internal/policy/impl/keyguard/NumPadKey.java b/packages/Keyguard/src/com/android/keyguard/NumPadKey.java index a0038bc92fda..532670f6a5d0 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/NumPadKey.java +++ b/packages/Keyguard/src/com/android/keyguard/NumPadKey.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.internal.policy.impl.keyguard; +package com.android.keyguard; import android.content.Context; import android.content.res.TypedArray; @@ -26,7 +26,6 @@ import android.view.View; import android.widget.Button; import android.widget.TextView; -import com.android.internal.R; import com.android.internal.widget.LockPatternUtils; public class NumPadKey extends Button { diff --git a/policy/src/com/android/internal/policy/impl/keyguard/ObscureSpeechDelegate.java b/packages/Keyguard/src/com/android/keyguard/ObscureSpeechDelegate.java index af043abbf11c..573122aa9aff 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/ObscureSpeechDelegate.java +++ b/packages/Keyguard/src/com/android/keyguard/ObscureSpeechDelegate.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.internal.policy.impl.keyguard; +package com.android.keyguard; import android.content.ContentResolver; import android.content.Context; diff --git a/policy/src/com/android/internal/policy/impl/keyguard/PagedView.java b/packages/Keyguard/src/com/android/keyguard/PagedView.java index 539ec1adeb24..5c2413a0db4a 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/PagedView.java +++ b/packages/Keyguard/src/com/android/keyguard/PagedView.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.internal.policy.impl.keyguard; +package com.android.keyguard; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; @@ -53,8 +53,6 @@ import android.view.animation.Interpolator; import android.view.animation.LinearInterpolator; import android.widget.Scroller; -import com.android.internal.R; - import java.util.ArrayList; /** diff --git a/policy/src/com/android/internal/policy/impl/keyguard/SecurityMessageDisplay.java b/packages/Keyguard/src/com/android/keyguard/SecurityMessageDisplay.java index 7760279d2398..e2f91e37c432 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/SecurityMessageDisplay.java +++ b/packages/Keyguard/src/com/android/keyguard/SecurityMessageDisplay.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.internal.policy.impl.keyguard; +package com.android.keyguard; public interface SecurityMessageDisplay { public void setMessage(CharSequence msg, boolean important); diff --git a/policy/src/com/android/internal/policy/impl/keyguard/SlidingChallengeLayout.java b/packages/Keyguard/src/com/android/keyguard/SlidingChallengeLayout.java index 073225f90f1e..05b35a12e8fa 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/SlidingChallengeLayout.java +++ b/packages/Keyguard/src/com/android/keyguard/SlidingChallengeLayout.java @@ -14,9 +14,7 @@ * limitations under the License. */ -package com.android.internal.policy.impl.keyguard; - -import com.android.internal.R; +package com.android.keyguard; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; diff --git a/packages/SystemUI/AndroidManifest.xml b/packages/SystemUI/AndroidManifest.xml index 66080f304c71..4bb44af8779a 100644 --- a/packages/SystemUI/AndroidManifest.xml +++ b/packages/SystemUI/AndroidManifest.xml @@ -1,6 +1,7 @@ <manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:androidprv="http://schemas.android.com/apk/prv/res/android" package="com.android.systemui" + android:sharedUserId="android.uid.systemui" coreApp="true"> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> @@ -71,6 +72,7 @@ android:hardwareAccelerated="true" android:label="@string/app_label" android:icon="@*android:drawable/platlogo" + android:process="com.android.systemui" android:supportsRtl="true"> <!-- Broadcast receiver that gets the broadcast at boot time and starts diff --git a/packages/SystemUI/res/values-ar/strings.xml b/packages/SystemUI/res/values-ar/strings.xml index c40e26d233f8..48edc732c133 100644 --- a/packages/SystemUI/res/values-ar/strings.xml +++ b/packages/SystemUI/res/values-ar/strings.xml @@ -189,7 +189,7 @@ <string name="quick_settings_location_label" msgid="3292451598267467545">"الموقع المستخدم"</string> <string name="quick_settings_media_device_label" msgid="1302906836372603762">"جهاز الوسائط"</string> <string name="quick_settings_rssi_label" msgid="7725671335550695589">"RSSI"</string> - <string name="quick_settings_rssi_emergency_only" msgid="2713774041672886750">"مكالمات الطوارئ فقط"</string> + <string name="quick_settings_rssi_emergency_only" msgid="2713774041672886750">"مكالمات طوارئ فقط"</string> <string name="quick_settings_settings_label" msgid="5326556592578065401">"الإعدادات"</string> <string name="quick_settings_time_label" msgid="4635969182239736408">"الوقت"</string> <string name="quick_settings_user_label" msgid="5238995632130897840">"أنا"</string> diff --git a/packages/SystemUI/res/values-ca/strings.xml b/packages/SystemUI/res/values-ca/strings.xml index 8c2dd8e23edf..580bfe746c00 100644 --- a/packages/SystemUI/res/values-ca/strings.xml +++ b/packages/SystemUI/res/values-ca/strings.xml @@ -147,7 +147,7 @@ <string name="accessibility_ringer_silent" msgid="9061243307939135383">"Mode silenci."</string> <string name="accessibility_recents_item_dismissed" msgid="6803574935084867070">"S\'ha omès <xliff:g id="APP">%s</xliff:g>."</string> <string name="accessibility_notification_dismissed" msgid="854211387186306927">"Notificació omesa."</string> - <string name="accessibility_desc_notification_shade" msgid="4690274844447504208">"Capa de notificació."</string> + <string name="accessibility_desc_notification_shade" msgid="4690274844447504208">"Àrea de notificacions"</string> <string name="accessibility_desc_quick_settings" msgid="6186378411582437046">"Configuració ràpida."</string> <string name="accessibility_desc_recent_apps" msgid="9014032916410590027">"Aplicacions recents."</string> <string name="accessibility_quick_settings_user" msgid="1104846699869476855">"Usuari <xliff:g id="USER">%s</xliff:g>."</string> diff --git a/packages/SystemUI/res/values-es-rUS/strings.xml b/packages/SystemUI/res/values-es-rUS/strings.xml index d619de11e82f..0789b29cb4a2 100644 --- a/packages/SystemUI/res/values-es-rUS/strings.xml +++ b/packages/SystemUI/res/values-es-rUS/strings.xml @@ -133,7 +133,7 @@ <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string> <string name="accessibility_no_sim" msgid="8274017118472455155">"No hay tarjeta SIM."</string> <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Conexión mediante Bluetooth"</string> - <string name="accessibility_airplane_mode" msgid="834748999790763092">"Modo de avión"</string> + <string name="accessibility_airplane_mode" msgid="834748999790763092">"Modo avión"</string> <!-- String.format failed for translation --> <!-- no translation found for accessibility_battery_level (7451474187113371965) --> <skip /> @@ -154,7 +154,7 @@ <string name="accessibility_quick_settings_wifi" msgid="6099781031669728709">"<xliff:g id="SIGNAL">%1$s</xliff:g>. <xliff:g id="NETWORK">%2$s</xliff:g>"</string> <string name="accessibility_quick_settings_mobile" msgid="4876806564086241341">"Móvil <xliff:g id="SIGNAL">%1$s</xliff:g>. <xliff:g id="TYPE">%2$s</xliff:g>. <xliff:g id="NETWORK">%3$s</xliff:g>."</string> <string name="accessibility_quick_settings_battery" msgid="1480931583381408972">"Batería <xliff:g id="STATE">%s</xliff:g>"</string> - <string name="accessibility_quick_settings_airplane" msgid="4196876722090224753">"Modo de avión <xliff:g id="STATE">%s</xliff:g>"</string> + <string name="accessibility_quick_settings_airplane" msgid="4196876722090224753">"Modo avión <xliff:g id="STATE">%s</xliff:g>"</string> <string name="accessibility_quick_settings_bluetooth" msgid="5749054971341882340">"Bluetooth <xliff:g id="STATE">%s</xliff:g>"</string> <string name="accessibility_quick_settings_alarm" msgid="3959908972897295660">"Alarma: <xliff:g id="TIME">%s</xliff:g>"</string> <string name="data_usage_disabled_dialog_3g_title" msgid="5257833881698644687">"Datos de 2G-3G inhabilitados"</string> diff --git a/packages/SystemUI/res/values-pl/strings.xml b/packages/SystemUI/res/values-pl/strings.xml index c454bb1bb15d..fff1aa043d30 100644 --- a/packages/SystemUI/res/values-pl/strings.xml +++ b/packages/SystemUI/res/values-pl/strings.xml @@ -157,14 +157,14 @@ <string name="accessibility_quick_settings_alarm" msgid="3959908972897295660">"Alarm ustawiony na <xliff:g id="TIME">%s</xliff:g>."</string> <string name="data_usage_disabled_dialog_3g_title" msgid="5257833881698644687">"Wyłączono transmisję danych 2G/3G"</string> <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"Wyłączono transmisję danych 4G"</string> - <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"Wyłączono komórkową transmisję danych"</string> + <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"Transmisja danych została wyłączona"</string> <string name="data_usage_disabled_dialog_title" msgid="2086815304858964954">"Wyłączono transmisję danych"</string> - <string name="data_usage_disabled_dialog" msgid="3853117269051806280">"Osiągnięto określony limit wykorzystania transmisji danych."\n\n"Jeśli ponownie włączysz przesyłanie danych, operator może naliczyć opłaty."</string> + <string name="data_usage_disabled_dialog" msgid="3853117269051806280">"Ustawiony limit transmisji danych został osiągnięty."\n\n"Jeśli ponownie włączysz przesyłanie danych, operator może naliczyć dodatkowe opłaty."</string> <string name="data_usage_disabled_dialog_enable" msgid="7729772039208664606">"Włącz transmisję danych"</string> <string name="status_bar_settings_signal_meter_disconnected" msgid="1940231521274147771">"Brak internetu"</string> <string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi: połączono"</string> <string name="gps_notification_searching_text" msgid="8574247005642736060">"Wyszukiwanie sygnału GPS"</string> - <string name="gps_notification_found_text" msgid="4619274244146446464">"Lokalizacja ustawiona według GPS"</string> + <string name="gps_notification_found_text" msgid="4619274244146446464">"Lokalizacja z GPSa"</string> <string name="accessibility_clear_all" msgid="5235938559247164925">"Usuń wszystkie powiadomienia."</string> <string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"O aplikacji"</string> <string name="close_universe" msgid="3736513750241754348">"Zamknij"</string> diff --git a/packages/SystemUI/res/values-ru/strings.xml b/packages/SystemUI/res/values-ru/strings.xml index ccf4fd48b5d8..3d0ddd4205fb 100644 --- a/packages/SystemUI/res/values-ru/strings.xml +++ b/packages/SystemUI/res/values-ru/strings.xml @@ -77,7 +77,7 @@ <string name="use_ptp_button_title" msgid="7517127540301625751">"Установить как камеру (PTP)"</string> <string name="installer_cd_button_title" msgid="2312667578562201583">"Установить приложение"</string> <string name="accessibility_back" msgid="567011538994429120">"Назад"</string> - <string name="accessibility_home" msgid="8217216074895377641">"Главная страница"</string> + <string name="accessibility_home" msgid="8217216074895377641">"Домой"</string> <string name="accessibility_menu" msgid="316839303324695949">"Меню"</string> <string name="accessibility_recent" msgid="8571350598987952883">"Недавние приложения"</string> <string name="accessibility_ime_switch_button" msgid="5032926134740456424">"Кнопка переключения способа ввода."</string> @@ -118,8 +118,8 @@ <string name="accessibility_two_bars" msgid="6437363648385206679">"два деления"</string> <string name="accessibility_three_bars" msgid="2648241415119396648">"три деления"</string> <string name="accessibility_signal_full" msgid="9122922886519676839">"надежный сигнал"</string> - <string name="accessibility_desc_on" msgid="2385254693624345265">"ВКЛ"</string> - <string name="accessibility_desc_off" msgid="6475508157786853157">"ВЫКЛ"</string> + <string name="accessibility_desc_on" msgid="2385254693624345265">"Вкл."</string> + <string name="accessibility_desc_off" msgid="6475508157786853157">"Выкл."</string> <string name="accessibility_desc_connected" msgid="8366256693719499665">"Подключено"</string> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_1x" msgid="994133468120244018">"1 X"</string> diff --git a/packages/SystemUI/res/values-sv/strings.xml b/packages/SystemUI/res/values-sv/strings.xml index 91214d192a4e..a58c9a015893 100644 --- a/packages/SystemUI/res/values-sv/strings.xml +++ b/packages/SystemUI/res/values-sv/strings.xml @@ -181,7 +181,7 @@ <string name="quick_settings_battery_charged_label" msgid="8865413079414246081">"Laddat"</string> <string name="quick_settings_bluetooth_label" msgid="6304190285170721401">"Bluetooth"</string> <string name="quick_settings_bluetooth_multiple_devices_label" msgid="3912245565613684735">"Bluetooth (<xliff:g id="NUMBER">%d</xliff:g> enheter)"</string> - <string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"Bluetooth inaktivt"</string> + <string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"Bluetooth av"</string> <string name="quick_settings_brightness_label" msgid="6968372297018755815">"Ljusstyrka"</string> <string name="quick_settings_rotation_unlocked_label" msgid="336054930362580584">"Rotera automatiskt"</string> <string name="quick_settings_rotation_locked_label" msgid="8058646447242565486">"Rotationen har låsts"</string> @@ -196,9 +196,9 @@ <string name="quick_settings_wifi_label" msgid="9135344704899546041">"Wi-Fi"</string> <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Ej ansluten"</string> <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Inget nätverk"</string> - <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi är inaktiverat"</string> - <string name="quick_settings_wifi_display_label" msgid="6893592964463624333">"Wi-Fi visas"</string> - <string name="quick_settings_wifi_display_no_connection_label" msgid="2355298740765736918">"Trådlös visning"</string> + <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi av"</string> + <string name="quick_settings_wifi_display_label" msgid="6893592964463624333">"Trådlös skärm"</string> + <string name="quick_settings_wifi_display_no_connection_label" msgid="2355298740765736918">"Trådlös skärm"</string> <string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Ljusstyrka"</string> <string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"AUTO"</string> <string name="status_bar_help_title" msgid="1199237744086469217">"Meddelanden visas här"</string> diff --git a/packages/SystemUI/res/values-uk/strings.xml b/packages/SystemUI/res/values-uk/strings.xml index 7750e7706492..f43eabe47e06 100644 --- a/packages/SystemUI/res/values-uk/strings.xml +++ b/packages/SystemUI/res/values-uk/strings.xml @@ -35,10 +35,10 @@ <string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"Поточні"</string> <string name="status_bar_latest_events_title" msgid="6594767438577593172">"Сповіщення"</string> <string name="battery_low_title" msgid="2783104807551211639">"Підключіть зарядний пристрій"</string> - <string name="battery_low_subtitle" msgid="1752040062087829196">"Батарея виснажується."</string> + <string name="battery_low_subtitle" msgid="1752040062087829196">"Акумулятор розряджається."</string> <string name="battery_low_percent_format" msgid="1077244949318261761">"Залишилося <xliff:g id="NUMBER">%d%%</xliff:g>"</string> <string name="invalid_charger" msgid="4549105996740522523">"Заряджання USB не підтримується."\n"Використовуйте лише наданий у комплекті зарядний пристрій."</string> - <string name="battery_low_why" msgid="7279169609518386372">"Викор. батареї"</string> + <string name="battery_low_why" msgid="7279169609518386372">"Використання акумулятора"</string> <string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Налаштування"</string> <string name="status_bar_settings_wifi_button" msgid="1733928151698311923">"Wi-Fi"</string> <string name="status_bar_settings_airplane" msgid="4879879698500955300">"Режим польоту"</string> @@ -85,11 +85,11 @@ <string name="accessibility_compatibility_zoom_example" msgid="4220687294564945780">"Збільшення екрана."</string> <string name="accessibility_bluetooth_connected" msgid="2707027633242983370">"Bluetooth під’єднано."</string> <string name="accessibility_bluetooth_disconnected" msgid="7416648669976870175">"Bluetooth від’єднано."</string> - <string name="accessibility_no_battery" msgid="358343022352820946">"Немає заряду батареї."</string> - <string name="accessibility_battery_one_bar" msgid="7774887721891057523">"Одна смужка заряду батареї."</string> - <string name="accessibility_battery_two_bars" msgid="8500650438735009973">"Дві смужки заряду батареї."</string> - <string name="accessibility_battery_three_bars" msgid="2302983330865040446">"Три смужки заряду батареї."</string> - <string name="accessibility_battery_full" msgid="8909122401720158582">"Повний заряд батареї"</string> + <string name="accessibility_no_battery" msgid="358343022352820946">"Акумулятор розряджений."</string> + <string name="accessibility_battery_one_bar" msgid="7774887721891057523">"Заряд акумулятора: одна смужка."</string> + <string name="accessibility_battery_two_bars" msgid="8500650438735009973">"Заряд акумулятора: дві смужки."</string> + <string name="accessibility_battery_three_bars" msgid="2302983330865040446">"Заряд акумулятора: три смужки."</string> + <string name="accessibility_battery_full" msgid="8909122401720158582">"Акумулятор заряджений."</string> <string name="accessibility_no_phone" msgid="4894708937052611281">"Немає сигналу телефону."</string> <string name="accessibility_phone_one_bar" msgid="687699278132664115">"Одна смужка сигналу телефону."</string> <string name="accessibility_phone_two_bars" msgid="8384905382804815201">"Дві смужки сигналу телефону."</string> @@ -134,7 +134,7 @@ <string name="accessibility_no_sim" msgid="8274017118472455155">"Немає SIM-карти."</string> <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Прив’язка Bluetooth."</string> <string name="accessibility_airplane_mode" msgid="834748999790763092">"Режим польоту."</string> - <string name="accessibility_battery_level" msgid="7451474187113371965">"Відсотків батареї: <xliff:g id="NUMBER">%d</xliff:g>."</string> + <string name="accessibility_battery_level" msgid="7451474187113371965">"Заряд акумулятора: <xliff:g id="NUMBER">%d</xliff:g>."</string> <string name="accessibility_settings_button" msgid="799583911231893380">"Налаштування системи."</string> <string name="accessibility_notifications_button" msgid="4498000369779421892">"Сповіщення."</string> <string name="accessibility_remove_notification" msgid="3603099514902182350">"Очистити сповіщення."</string> diff --git a/packages/SystemUI/src/com/android/systemui/SystemUIService.java b/packages/SystemUI/src/com/android/systemui/SystemUIService.java index 1f3e942ae21a..e1aed82295b0 100644 --- a/packages/SystemUI/src/com/android/systemui/SystemUIService.java +++ b/packages/SystemUI/src/com/android/systemui/SystemUIService.java @@ -20,19 +20,13 @@ import java.io.FileDescriptor; import java.io.PrintWriter; import android.app.Service; -import android.content.BroadcastReceiver; -import android.content.Context; import android.content.Intent; -import android.content.pm.PackageManager; import android.content.res.Configuration; -import android.os.Binder; import android.os.IBinder; import android.os.RemoteException; -import android.os.ServiceManager; import android.util.Slog; import android.view.IWindowManager; import android.view.WindowManagerGlobal; -import android.view.accessibility.AccessibilityManager; public class SystemUIService extends Service { static final String TAG = "SystemUIService"; @@ -69,10 +63,6 @@ public class SystemUIService extends Service { @Override public void onCreate() { - // Tell the accessibility layer that this process will - // run as the current user, i.e. run across users. - AccessibilityManager.createAsSharedAcrossUsers(this); - // Pick status bar or system bar. IWindowManager wm = WindowManagerGlobal.getWindowManagerService(); try { diff --git a/policy/src/com/android/internal/policy/impl/KeyguardServiceWrapper.java b/policy/src/com/android/internal/policy/impl/KeyguardServiceWrapper.java new file mode 100644 index 000000000000..e649125ffa52 --- /dev/null +++ b/policy/src/com/android/internal/policy/impl/KeyguardServiceWrapper.java @@ -0,0 +1,211 @@ +/* + * Copyright (C) 2013 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.internal.policy.impl; + +import android.os.Bundle; +import android.os.IBinder; +import android.os.RemoteException; +import android.util.Slog; + +import com.android.internal.policy.IKeyguardShowCallback; +import com.android.internal.policy.IKeyguardExitCallback; +import com.android.internal.policy.IKeyguardService; + +/** + * A wrapper class for KeyguardService. It implements IKeyguardService to ensure the interface + * remains consistent. + * + */ +public class KeyguardServiceWrapper implements IKeyguardService { + private IKeyguardService mService; + private String TAG = "KeyguardServiceWrapper"; + + public KeyguardServiceWrapper(IKeyguardService service) { + mService = service; + } + + public boolean isShowing() { + try { + return mService.isShowing(); + } catch (RemoteException e) { + Slog.w(TAG , "Remote Exception", e); + } + return false; + } + + public boolean isSecure() { + try { + return mService.isSecure(); + } catch (RemoteException e) { + Slog.w(TAG , "Remote Exception", e); + } + return false; // TODO cache state + } + + public boolean isShowingAndNotHidden() { + try { + return mService.isShowingAndNotHidden(); + } catch (RemoteException e) { + Slog.w(TAG , "Remote Exception", e); + } + return false; // TODO cache state + } + + public boolean isInputRestricted() { + try { + return mService.isInputRestricted(); + } catch (RemoteException e) { + Slog.w(TAG , "Remote Exception", e); + } + return false; // TODO cache state + } + + public boolean isDismissable() { + try { + return mService.isDismissable(); + } catch (RemoteException e) { + Slog.w(TAG , "Remote Exception", e); + } + return true; // TODO cache state + } + + public void verifyUnlock(IKeyguardExitCallback callback) { + try { + mService.verifyUnlock(callback); + } catch (RemoteException e) { + Slog.w(TAG , "Remote Exception", e); + } + } + + public void keyguardDone(boolean authenticated, boolean wakeup) { + try { + mService.keyguardDone(authenticated, wakeup); + } catch (RemoteException e) { + Slog.w(TAG , "Remote Exception", e); + } + } + + public void setHidden(boolean isHidden) { + try { + mService.setHidden(isHidden); + } catch (RemoteException e) { + Slog.w(TAG , "Remote Exception", e); + } + } + + public void dismiss() { + try { + mService.dismiss(); + } catch (RemoteException e) { + Slog.w(TAG , "Remote Exception", e); + } + } + + public void onWakeKeyWhenKeyguardShowing(int keyCode) { + try { + mService.onWakeKeyWhenKeyguardShowing(keyCode); + } catch (RemoteException e) { + Slog.w(TAG , "Remote Exception", e); + } + } + + public void onWakeMotionWhenKeyguardShowing() { + try { + mService.onWakeMotionWhenKeyguardShowing(); + } catch (RemoteException e) { + Slog.w(TAG , "Remote Exception", e); + } + } + + public void onDreamingStarted() { + try { + mService.onDreamingStarted(); + } catch (RemoteException e) { + Slog.w(TAG , "Remote Exception", e); + } + } + + public void onDreamingStopped() { + try { + mService.onDreamingStopped(); + } catch (RemoteException e) { + Slog.w(TAG , "Remote Exception", e); + } + } + + public void onScreenTurnedOff(int reason) { + try { + mService.onScreenTurnedOff(reason); + } catch (RemoteException e) { + Slog.w(TAG , "Remote Exception", e); + } + } + + public void onScreenTurnedOn(IKeyguardShowCallback result) { + try { + mService.onScreenTurnedOn(result); + } catch (RemoteException e) { + Slog.w(TAG , "Remote Exception", e); + } + } + + public void setKeyguardEnabled(boolean enabled) { + try { + mService.setKeyguardEnabled(enabled); + } catch (RemoteException e) { + Slog.w(TAG , "Remote Exception", e); + } + } + + public void onSystemReady() { + try { + mService.onSystemReady(); + } catch (RemoteException e) { + Slog.w(TAG , "Remote Exception", e); + } + } + + public void doKeyguardTimeout(Bundle options) { + try { + mService.doKeyguardTimeout(options); + } catch (RemoteException e) { + Slog.w(TAG , "Remote Exception", e); + } + } + + public void setCurrentUser(int userId) { + try { + mService.setCurrentUser(userId); + } catch (RemoteException e) { + Slog.w(TAG , "Remote Exception", e); + } + } + + public void showAssistant() { + try { + mService.showAssistant(); + } catch (RemoteException e) { + Slog.w(TAG , "Remote Exception", e); + } + } + + @Override + public IBinder asBinder() { + return mService.asBinder(); + } + +}
\ No newline at end of file diff --git a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java index bb053251bca2..46f0fd257c64 100644 --- a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java +++ b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java @@ -85,13 +85,13 @@ import android.view.WindowManager; import android.view.WindowManagerGlobal; import android.view.WindowManagerPolicy; import android.view.accessibility.AccessibilityEvent; +import android.view.accessibility.AccessibilityManager; import android.view.animation.Animation; import android.view.animation.AnimationUtils; import com.android.internal.R; import com.android.internal.policy.PolicyManager; -import com.android.internal.policy.impl.keyguard.KeyguardViewManager; -import com.android.internal.policy.impl.keyguard.KeyguardViewMediator; +import com.android.internal.policy.impl.keyguard.KeyguardServiceDelegate; import com.android.internal.statusbar.IStatusBarService; import com.android.internal.telephony.ITelephony; import com.android.internal.widget.PointerLocationView; @@ -151,6 +151,11 @@ public class PhoneWindowManager implements WindowManagerPolicy { static final int SYSTEM_UI_CHANGING_LAYOUT = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_FULLSCREEN; + /** + * Keyguard stuff + */ + private WindowState mKeyguardScrim; + /* Table of Application Launch keys. Maps from key codes to intent categories. * * These are special keys that are used to launch particular kinds of applications, @@ -222,7 +227,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { int[] mNavigationBarWidthForRotation = new int[4]; WindowState mKeyguard = null; - KeyguardViewMediator mKeyguardMediator; + KeyguardServiceDelegate mKeyguardDelegate; GlobalActions mGlobalActions; volatile boolean mPowerKeyHandled; // accessed from input reader and handler thread boolean mPendingPowerKeyUpCanceled; @@ -436,6 +441,9 @@ public class PhoneWindowManager implements WindowManagerPolicy { private boolean mPowerKeyTriggered; private long mPowerKeyTime; + /* The number of steps between min and max brightness */ + private static final int BRIGHTNESS_STEPS = 10; + SettingsObserver mSettingsObserver; ShortcutManager mShortcutManager; PowerManager.WakeLock mBroadcastWakeLock; @@ -656,7 +664,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { } private long getScreenshotChordLongPressDelay() { - if (mKeyguardMediator.isShowing()) { + if (mKeyguardDelegate.isShowing()) { // Double the time it takes to take a screenshot from the keyguard return (long) (KEYGUARD_SCREENSHOT_CHORD_DELAY_MULTIPLIER * ViewConfiguration.getGlobalActionKeyTimeout()); @@ -719,7 +727,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { if (keyguardShowing) { // since it took two seconds of long press to bring this up, // poke the wake lock so they have some time to see the dialog. - mKeyguardMediator.userActivity(); + mPowerManager.userActivity(SystemClock.uptimeMillis(), false); } } @@ -813,10 +821,6 @@ public class PhoneWindowManager implements WindowManagerPolicy { mWindowManager = windowManager; mWindowManagerFuncs = windowManagerFuncs; mHeadless = "1".equals(SystemProperties.get("ro.config.headless", "0")); - if (!mHeadless) { - // don't create KeyguardViewMediator if headless - mKeyguardMediator = new KeyguardViewMediator(context, null); - } mHandler = new PolicyHandler(); mOrientationListener = new MyOrientationListener(mContext, mHandler); try { @@ -1228,6 +1232,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { case TYPE_DISPLAY_OVERLAY: case TYPE_HIDDEN_NAV_CONSUMER: case TYPE_KEYGUARD: + case TYPE_KEYGUARD_SCRIM: case TYPE_KEYGUARD_DIALOG: case TYPE_MAGNIFICATION_OVERLAY: case TYPE_NAVIGATION_BAR: @@ -1344,54 +1349,57 @@ public class PhoneWindowManager implements WindowManagerPolicy { case TYPE_INPUT_METHOD_DIALOG: // on-screen keyboards and other such input method user interfaces go here. return 11; + case TYPE_KEYGUARD_SCRIM: + // the safety window that shows behind keyguard while keyguard is starting + return 12; case TYPE_KEYGUARD: // the keyguard; nothing on top of these can take focus, since they are // responsible for power management when displayed. - return 12; - case TYPE_KEYGUARD_DIALOG: return 13; - case TYPE_STATUS_BAR_SUB_PANEL: + case TYPE_KEYGUARD_DIALOG: return 14; - case TYPE_STATUS_BAR: + case TYPE_STATUS_BAR_SUB_PANEL: return 15; - case TYPE_STATUS_BAR_PANEL: + case TYPE_STATUS_BAR: return 16; + case TYPE_STATUS_BAR_PANEL: + return 17; case TYPE_VOLUME_OVERLAY: // the on-screen volume indicator and controller shown when the user // changes the device volume - return 17; + return 18; case TYPE_SYSTEM_OVERLAY: // the on-screen volume indicator and controller shown when the user // changes the device volume - return 18; + return 19; case TYPE_NAVIGATION_BAR: // the navigation bar, if available, shows atop most things - return 19; + return 20; case TYPE_NAVIGATION_BAR_PANEL: // some panels (e.g. search) need to show on top of the navigation bar - return 20; + return 21; case TYPE_SYSTEM_ERROR: // system-level error dialogs - return 21; + return 22; case TYPE_MAGNIFICATION_OVERLAY: // used to highlight the magnified portion of a display - return 22; + return 23; case TYPE_DISPLAY_OVERLAY: // used to simulate secondary display devices - return 23; + return 24; case TYPE_DRAG: // the drag layer: input for drag-and-drop is associated with this window, // which sits above all other focusable windows - return 24; - case TYPE_SECURE_SYSTEM_OVERLAY: return 25; - case TYPE_BOOT_PROGRESS: + case TYPE_SECURE_SYSTEM_OVERLAY: return 26; + case TYPE_BOOT_PROGRESS: + return 27; case TYPE_POINTER: // the (mouse) pointer layer - return 27; - case TYPE_HIDDEN_NAV_CONSUMER: return 28; + case TYPE_HIDDEN_NAV_CONSUMER: + return 29; } Log.e(TAG, "Unknown window type: " + type); return 2; @@ -1482,6 +1490,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { case TYPE_DREAM: case TYPE_UNIVERSE_BACKGROUND: case TYPE_KEYGUARD: + case TYPE_KEYGUARD_SCRIM: return false; default: return true; @@ -1677,7 +1686,15 @@ public class PhoneWindowManager implements WindowManagerPolicy { return WindowManagerGlobal.ADD_MULTIPLE_SINGLETON; } mKeyguard = win; + hideKeyguardScrim(); + break; + case TYPE_KEYGUARD_SCRIM: + if (mKeyguardScrim != null) { + return WindowManagerGlobal.ADD_MULTIPLE_SINGLETON; + } + mKeyguardScrim = win; break; + } return WindowManagerGlobal.ADD_OKAY; } @@ -1687,12 +1704,25 @@ public class PhoneWindowManager implements WindowManagerPolicy { if (mStatusBar == win) { mStatusBar = null; } else if (mKeyguard == win) { + Log.v(TAG, "Removing keyguard window (Did it crash?)"); mKeyguard = null; - } else if (mNavigationBar == win) { + showKeyguardScrimLw(); + } else if (mKeyguardScrim == win) { + Log.v(TAG, "Removing keyguard scrim"); + mKeyguardScrim = null; + } if (mNavigationBar == win) { mNavigationBar = null; } } + private void showKeyguardScrimLw() { + Log.v(TAG, "*** SHOWING KEYGUARD SCRIM ***"); + } + + private void hideKeyguardScrim() { + Log.v(TAG, "*** HIDING KEYGUARD SCRIM ***"); + } + static final boolean PRINT_ANIM = false; /** {@inheritDoc} */ @@ -1916,6 +1946,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { if (attrs != null) { final int type = attrs.type; if (type == WindowManager.LayoutParams.TYPE_KEYGUARD + || type == WindowManager.LayoutParams.TYPE_KEYGUARD_SCRIM || type == WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG) { // the "app" is keyguard, so give it the key return 0; @@ -2034,6 +2065,43 @@ public class PhoneWindowManager implements WindowManagerPolicy { mHandler.post(mScreenshotRunnable); } return -1; + } else if (keyCode == KeyEvent.KEYCODE_BRIGHTNESS_UP + || keyCode == KeyEvent.KEYCODE_BRIGHTNESS_DOWN) { + if (down) { + int direction = keyCode == KeyEvent.KEYCODE_BRIGHTNESS_UP ? 1 : -1; + + // Disable autobrightness if it's on + int auto = Settings.System.getIntForUser( + mContext.getContentResolver(), + Settings.System.SCREEN_BRIGHTNESS_MODE, + Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL, + UserHandle.USER_CURRENT_OR_SELF); + if (auto != 0) { + Settings.System.putIntForUser(mContext.getContentResolver(), + Settings.System.SCREEN_BRIGHTNESS_MODE, + Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL, + UserHandle.USER_CURRENT_OR_SELF); + } + + int min = mPowerManager.getMinimumScreenBrightnessSetting(); + int max = mPowerManager.getMaximumScreenBrightnessSetting(); + int step = (max - min + BRIGHTNESS_STEPS - 1) / BRIGHTNESS_STEPS * direction; + int brightness = Settings.System.getIntForUser(mContext.getContentResolver(), + Settings.System.SCREEN_BRIGHTNESS, + mPowerManager.getDefaultScreenBrightnessSetting(), + UserHandle.USER_CURRENT_OR_SELF); + brightness += step; + // Make sure we don't go beyond the limits. + brightness = Math.min(max, brightness); + brightness = Math.max(min, brightness); + + Settings.System.putIntForUser(mContext.getContentResolver(), + Settings.System.SCREEN_BRIGHTNESS, brightness, + UserHandle.USER_CURRENT_OR_SELF); + Intent intent = new Intent(Intent.ACTION_SHOW_BRIGHTNESS_DIALOG); + mContext.sendBroadcastAsUser(intent, UserHandle.CURRENT_OR_SELF); + } + return -1; } // Shortcuts are invoked through Search+key, so intercept those here @@ -2272,12 +2340,12 @@ public class PhoneWindowManager implements WindowManagerPolicy { * given the situation with the keyguard. */ void launchHomeFromHotKey() { - if (mKeyguardMediator != null && mKeyguardMediator.isShowingAndNotHidden()) { + if (mKeyguardDelegate != null && mKeyguardDelegate.isShowingAndNotHidden()) { // don't launch home if keyguard showing - } else if (!mHideLockScreen && mKeyguardMediator.isInputRestricted()) { + } else if (!mHideLockScreen && mKeyguardDelegate.isInputRestricted()) { // when in keyguard restricted mode, must first verify unlock // before launching home - mKeyguardMediator.verifyUnlock(new OnKeyguardExitResult() { + mKeyguardDelegate.verifyUnlock(new OnKeyguardExitResult() { public void onKeyguardExitResult(boolean success) { if (success) { try { @@ -3259,17 +3327,17 @@ public class PhoneWindowManager implements WindowManagerPolicy { if (mKeyguard != null) { if (localLOGV) Log.v(TAG, "finishPostLayoutPolicyLw: mHideKeyguard=" + mHideLockScreen); - if (mDismissKeyguard != DISMISS_KEYGUARD_NONE && !mKeyguardMediator.isSecure()) { + if (mDismissKeyguard != DISMISS_KEYGUARD_NONE && !mKeyguardDelegate.isSecure()) { if (mKeyguard.hideLw(true)) { changes |= FINISH_LAYOUT_REDO_LAYOUT | FINISH_LAYOUT_REDO_CONFIG | FINISH_LAYOUT_REDO_WALLPAPER; } - if (mKeyguardMediator.isShowing()) { + if (mKeyguardDelegate.isShowing()) { mHandler.post(new Runnable() { @Override public void run() { - mKeyguardMediator.keyguardDone(false, false); + mKeyguardDelegate.keyguardDone(false, false); } }); } @@ -3279,7 +3347,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { | FINISH_LAYOUT_REDO_CONFIG | FINISH_LAYOUT_REDO_WALLPAPER; } - mKeyguardMediator.setHidden(true); + mKeyguardDelegate.setHidden(true); } else if (mDismissKeyguard != DISMISS_KEYGUARD_NONE) { // This is the case of keyguard isSecure() and not mHideLockScreen. if (mDismissKeyguard == DISMISS_KEYGUARD_START) { @@ -3289,11 +3357,11 @@ public class PhoneWindowManager implements WindowManagerPolicy { | FINISH_LAYOUT_REDO_CONFIG | FINISH_LAYOUT_REDO_WALLPAPER; } - mKeyguardMediator.setHidden(false); + mKeyguardDelegate.setHidden(false); mHandler.post(new Runnable() { @Override public void run() { - mKeyguardMediator.dismiss(); + mKeyguardDelegate.dismiss(); } }); } @@ -3304,7 +3372,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { | FINISH_LAYOUT_REDO_CONFIG | FINISH_LAYOUT_REDO_WALLPAPER; } - mKeyguardMediator.setHidden(false); + mKeyguardDelegate.setHidden(false); } } @@ -3355,7 +3423,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { if (lidOpen) { if (keyguardIsShowingTq()) { - mKeyguardMediator.onWakeKeyWhenKeyguardShowingTq(KeyEvent.KEYCODE_POWER); + mKeyguardDelegate.onWakeKeyWhenKeyguardShowingTq(KeyEvent.KEYCODE_POWER); } else { mPowerManager.wakeUp(SystemClock.uptimeMillis()); } @@ -3535,10 +3603,10 @@ public class PhoneWindowManager implements WindowManagerPolicy { // the same as if it were open and in front. // This will prevent any keys other than the power button from waking the screen // when the keyguard is hidden by another activity. - final boolean keyguardActive = (mKeyguardMediator == null ? false : + final boolean keyguardActive = (mKeyguardDelegate == null ? false : (isScreenOn ? - mKeyguardMediator.isShowingAndNotHidden() : - mKeyguardMediator.isShowing())); + mKeyguardDelegate.isShowingAndNotHidden() : + mKeyguardDelegate.isShowing())); if (keyCode == KeyEvent.KEYCODE_POWER) { policyFlags |= WindowManagerPolicy.FLAG_WAKE; @@ -3577,7 +3645,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { if (down && isWakeKey && isWakeKeyWhenScreenOff(keyCode)) { if (keyguardActive) { // If the keyguard is showing, let it wake the device when ready. - mKeyguardMediator.onWakeKeyWhenKeyguardShowingTq(keyCode); + mKeyguardDelegate.onWakeKeyWhenKeyguardShowingTq(keyCode); } else { // Otherwise, wake the device ourselves. result |= ACTION_WAKE_UP; @@ -3841,9 +3909,9 @@ public class PhoneWindowManager implements WindowManagerPolicy { final boolean isWakeMotion = (policyFlags & (WindowManagerPolicy.FLAG_WAKE | WindowManagerPolicy.FLAG_WAKE_DROPPED)) != 0; if (isWakeMotion) { - if (mKeyguardMediator != null && mKeyguardMediator.isShowing()) { + if (mKeyguardDelegate != null && mKeyguardDelegate.isShowing()) { // If the keyguard is showing, let it decide what to do with the wake motion. - mKeyguardMediator.onWakeMotionWhenKeyguardShowingTq(); + mKeyguardDelegate.onWakeMotionWhenKeyguardShowing(); } else { // Otherwise, wake the device ourselves. result |= ACTION_WAKE_UP; @@ -3926,12 +3994,12 @@ public class PhoneWindowManager implements WindowManagerPolicy { @Override public void onReceive(Context context, Intent intent) { if (Intent.ACTION_DREAMING_STARTED.equals(intent.getAction())) { - if (mKeyguardMediator != null) { - mKeyguardMediator.onDreamingStarted(); + if (mKeyguardDelegate != null) { + mKeyguardDelegate.onDreamingStarted(); } } else if (Intent.ACTION_DREAMING_STOPPED.equals(intent.getAction())) { - if (mKeyguardMediator != null) { - mKeyguardMediator.onDreamingStopped(); + if (mKeyguardDelegate != null) { + mKeyguardDelegate.onDreamingStopped(); } } } @@ -3965,8 +4033,8 @@ public class PhoneWindowManager implements WindowManagerPolicy { mScreenOnEarly = false; mScreenOnFully = false; } - if (mKeyguardMediator != null) { - mKeyguardMediator.onScreenTurnedOff(why); + if (mKeyguardDelegate != null) { + mKeyguardDelegate.onScreenTurnedOff(why); } synchronized (mLock) { updateOrientationListenerLp(); @@ -3993,9 +4061,9 @@ public class PhoneWindowManager implements WindowManagerPolicy { } private void waitForKeyguard(final ScreenOnListener screenOnListener) { - if (mKeyguardMediator != null) { + if (mKeyguardDelegate != null) { if (screenOnListener != null) { - mKeyguardMediator.onScreenTurnedOn(new KeyguardViewManager.ShowListener() { + mKeyguardDelegate.onScreenTurnedOn(new KeyguardServiceDelegate.ShowListener() { @Override public void onShown(IBinder windowToken) { waitForKeyguardWindowDrawn(windowToken, screenOnListener); @@ -4003,10 +4071,10 @@ public class PhoneWindowManager implements WindowManagerPolicy { }); return; } else { - mKeyguardMediator.onScreenTurnedOn(null); + mKeyguardDelegate.onScreenTurnedOn(null); } } else { - Slog.i(TAG, "No keyguard mediator!"); + Slog.i(TAG, "No keyguard interface!"); } finishScreenTurningOn(screenOnListener); } @@ -4061,21 +4129,21 @@ public class PhoneWindowManager implements WindowManagerPolicy { /** {@inheritDoc} */ public void enableKeyguard(boolean enabled) { - if (mKeyguardMediator != null) { - mKeyguardMediator.setKeyguardEnabled(enabled); + if (mKeyguardDelegate != null) { + mKeyguardDelegate.setKeyguardEnabled(enabled); } } /** {@inheritDoc} */ public void exitKeyguardSecurely(OnKeyguardExitResult callback) { - if (mKeyguardMediator != null) { - mKeyguardMediator.verifyUnlock(callback); + if (mKeyguardDelegate != null) { + mKeyguardDelegate.verifyUnlock(callback); } } private boolean keyguardIsShowingTq() { - if (mKeyguardMediator == null) return false; - return mKeyguardMediator.isShowingAndNotHidden(); + if (mKeyguardDelegate == null) return false; + return mKeyguardDelegate.isShowingAndNotHidden(); } @@ -4086,26 +4154,26 @@ public class PhoneWindowManager implements WindowManagerPolicy { /** {@inheritDoc} */ public boolean isKeyguardSecure() { - if (mKeyguardMediator == null) return false; - return mKeyguardMediator.isSecure(); + if (mKeyguardDelegate == null) return false; + return mKeyguardDelegate.isSecure(); } /** {@inheritDoc} */ public boolean inKeyguardRestrictedKeyInputMode() { - if (mKeyguardMediator == null) return false; - return mKeyguardMediator.isInputRestricted(); + if (mKeyguardDelegate == null) return false; + return mKeyguardDelegate.isInputRestricted(); } public void dismissKeyguardLw() { - if (mKeyguardMediator.isShowing()) { + if (mKeyguardDelegate != null && mKeyguardDelegate.isShowing()) { mHandler.post(new Runnable() { public void run() { - if (mKeyguardMediator.isDismissable()) { + if (mKeyguardDelegate.isDismissable()) { // Can we just finish the keyguard straight away? - mKeyguardMediator.keyguardDone(false, true); + mKeyguardDelegate.keyguardDone(false, true); } else { // ask the keyguard to prompt the user to authenticate if necessary - mKeyguardMediator.dismiss(); + mKeyguardDelegate.dismiss(); } } }); @@ -4346,9 +4414,9 @@ public class PhoneWindowManager implements WindowManagerPolicy { /** {@inheritDoc} */ public void systemReady() { - if (mKeyguardMediator != null) { - // tell the keyguard - mKeyguardMediator.onSystemReady(); + if (!mHeadless) { + mKeyguardDelegate = new KeyguardServiceDelegate(mContext, null); + mKeyguardDelegate.onSystemReady(); } synchronized (mLock) { updateOrientationListenerLp(); @@ -4460,8 +4528,8 @@ public class PhoneWindowManager implements WindowManagerPolicy { public void run() { synchronized (this) { if (localLOGV) Log.v(TAG, "mScreenLockTimeout activating keyguard"); - if (mKeyguardMediator != null) { - mKeyguardMediator.doKeyguardTimeout(options); + if (mKeyguardDelegate != null) { + mKeyguardDelegate.doKeyguardTimeout(options); } mLockScreenTimerActive = false; options = null; @@ -4489,7 +4557,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { private void updateLockScreenTimeout() { synchronized (mScreenLockTimeout) { boolean enable = (mAllowLockscreenWhenOn && mScreenOnEarly && - mKeyguardMediator != null && mKeyguardMediator.isSecure()); + mKeyguardDelegate != null && mKeyguardDelegate.isSecure()); if (mLockScreenTimerActive != enable) { if (enable) { if (localLOGV) Log.v(TAG, "setting lockscreen timer"); @@ -4613,7 +4681,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { } final boolean hapticsDisabled = Settings.System.getIntForUser(mContext.getContentResolver(), Settings.System.HAPTIC_FEEDBACK_ENABLED, 0, UserHandle.USER_CURRENT) == 0; - if (!always && (hapticsDisabled || mKeyguardMediator.isShowingAndNotHidden())) { + if (!always && (hapticsDisabled || mKeyguardDelegate.isShowingAndNotHidden())) { return false; } long[] pattern = null; @@ -4661,9 +4729,9 @@ public class PhoneWindowManager implements WindowManagerPolicy { @Override public void keepScreenOnStoppedLw() { - if (mKeyguardMediator != null && !mKeyguardMediator.isShowingAndNotHidden()) { + if (mKeyguardDelegate != null && !mKeyguardDelegate.isShowingAndNotHidden()) { long curTime = SystemClock.uptimeMillis(); - mPowerManager.userActivity(curTime, false); + mPowerManager.userActivity(SystemClock.uptimeMillis(), false); } } @@ -4729,8 +4797,8 @@ public class PhoneWindowManager implements WindowManagerPolicy { @Override public void setCurrentUserLw(int newUserId) { - if (mKeyguardMediator != null) { - mKeyguardMediator.setCurrentUser(newUserId); + if (mKeyguardDelegate != null) { + mKeyguardDelegate.setCurrentUser(newUserId); } if (mStatusBarService != null) { try { @@ -4744,7 +4812,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { @Override public void showAssistant() { - mKeyguardMediator.showAssistant(); + mKeyguardDelegate.showAssistant(); } @Override diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardServiceDelegate.java b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardServiceDelegate.java new file mode 100644 index 000000000000..bf18b99d26bd --- /dev/null +++ b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardServiceDelegate.java @@ -0,0 +1,260 @@ +package com.android.internal.policy.impl.keyguard; + +import android.content.ComponentName; +import android.content.Context; +import android.content.Intent; +import android.content.ServiceConnection; +import android.os.Bundle; +import android.os.IBinder; +import android.os.RemoteException; +import android.os.UserHandle; +import android.util.Log; +import android.util.Slog; +import android.view.WindowManagerPolicy.OnKeyguardExitResult; + +import com.android.internal.policy.IKeyguardExitCallback; +import com.android.internal.policy.IKeyguardShowCallback; +import com.android.internal.policy.IKeyguardService; +import com.android.internal.widget.LockPatternUtils; +import com.android.internal.policy.impl.KeyguardServiceWrapper; + +/** + * A local class that keeps a cache of keyguard state that can be restored in the event + * keyguard crashes. It currently also allows runtime-selectable + * local or remote instances of keyguard. + */ +public class KeyguardServiceDelegate { + private static final String KEYGUARD_PACKAGE = "com.android.keyguard"; + private static final String KEYGUARD_CLASS = "com.android.keyguard.KeyguardService"; + private static final String TAG = "KeyguardServiceDelegate"; + private static final boolean DEBUG = true; + protected KeyguardServiceWrapper mKeyguardService; + private KeyguardState mKeyguardState = new KeyguardState(); + + /* package */ static final class KeyguardState { + boolean showing; + boolean showingAndNotHidden; + boolean inputRestricted; + boolean hidden; + boolean secure; + boolean dreaming; + boolean systemIsReady; + public boolean enabled; + public boolean dismissable; + public int offReason; + public int currentUser; + public boolean screenIsOn; + }; + + public interface ShowListener { + public void onShown(IBinder windowToken); + } + + // A delegate class to map a particular invocation with a ShowListener object. + private final class KeyguardShowDelegate extends IKeyguardShowCallback.Stub { + private ShowListener mShowListener; + + KeyguardShowDelegate(ShowListener showListener) { + mShowListener = showListener; + } + + @Override + public void onShown(IBinder windowToken) throws RemoteException { + if (DEBUG) Log.v(TAG, "**** SHOWN CALLED ****"); + if (mShowListener != null) { + mShowListener.onShown(windowToken); + } + } + }; + + // A delegate class to map a particular invocation with an OnKeyguardExitResult object. + private final class KeyguardExitDelegate extends IKeyguardExitCallback.Stub { + private OnKeyguardExitResult mOnKeyguardExitResult; + + KeyguardExitDelegate(OnKeyguardExitResult onKeyguardExitResult) { + mOnKeyguardExitResult = onKeyguardExitResult; + } + + @Override + public void onKeyguardExitResult(boolean success) throws RemoteException { + if (DEBUG) Log.v(TAG, "**** onKeyguardExitResult(" + success +") CALLED ****"); + if (mOnKeyguardExitResult != null) { + mOnKeyguardExitResult.onKeyguardExitResult(success); + } + } + }; + + public KeyguardServiceDelegate(Context context, LockPatternUtils lockPatternUtils) { + Intent intent = new Intent(); + intent.setClassName(KEYGUARD_PACKAGE, KEYGUARD_CLASS); + if (!context.bindServiceAsUser(intent, mKeyguardConnection, + Context.BIND_AUTO_CREATE, UserHandle.OWNER)) { + if (DEBUG) Log.v(TAG, "*** Keyguard: can't bind to " + KEYGUARD_CLASS); + } else { + if (DEBUG) Log.v(TAG, "*** Keyguard started"); + } + } + + private final ServiceConnection mKeyguardConnection = new ServiceConnection() { + @Override + public void onServiceConnected(ComponentName name, IBinder service) { + if (DEBUG) Log.v(TAG, "*** Keyguard connected (yay!)"); + mKeyguardService = new KeyguardServiceWrapper( + IKeyguardService.Stub.asInterface(service)); + if (mKeyguardState.systemIsReady) { + mKeyguardService.onSystemReady(); + } + } + + @Override + public void onServiceDisconnected(ComponentName name) { + if (DEBUG) Log.v(TAG, "*** Keyguard disconnected (boo!)"); + mKeyguardService = null; + } + + }; + + public boolean isShowing() { + if (mKeyguardService != null) { + mKeyguardState.showing = mKeyguardService.isShowing(); + } + return mKeyguardState.showing; + } + + public boolean isShowingAndNotHidden() { + if (mKeyguardService != null) { + mKeyguardState.showingAndNotHidden = mKeyguardService.isShowingAndNotHidden(); + } + return mKeyguardState.showingAndNotHidden; + } + + public boolean isInputRestricted() { + if (mKeyguardService != null) { + mKeyguardState.inputRestricted = mKeyguardService.isInputRestricted(); + } + return mKeyguardState.inputRestricted; + } + + public void verifyUnlock(final OnKeyguardExitResult onKeyguardExitResult) { + if (mKeyguardService != null) { + mKeyguardService.verifyUnlock(new KeyguardExitDelegate(onKeyguardExitResult)); + } + } + + public void keyguardDone(boolean authenticated, boolean wakeup) { + if (mKeyguardService != null) { + mKeyguardService.keyguardDone(authenticated, wakeup); + } + } + + public void setHidden(boolean isHidden) { + if (mKeyguardService != null) { + mKeyguardService.setHidden(isHidden); + } + mKeyguardState.hidden = isHidden; + } + + public void dismiss() { + if (mKeyguardService != null) { + mKeyguardService.dismiss(); + } + } + + public boolean isSecure() { + if (mKeyguardService != null) { + mKeyguardState.secure = mKeyguardService.isSecure(); + } + return mKeyguardState.secure; + } + + public void onWakeKeyWhenKeyguardShowingTq(int keycodePower) { + if (mKeyguardService != null) { + mKeyguardService.onWakeKeyWhenKeyguardShowing(keycodePower); + } + } + + public void onWakeMotionWhenKeyguardShowing() { + if (mKeyguardService != null) { + mKeyguardService.onWakeMotionWhenKeyguardShowing(); + } + } + + public void onDreamingStarted() { + if (mKeyguardService != null) { + mKeyguardService.onDreamingStarted(); + } + mKeyguardState.dreaming = true; + } + + public void onDreamingStopped() { + if (mKeyguardService != null) { + mKeyguardService.onDreamingStopped(); + } + mKeyguardState.dreaming = false; + } + + public void onScreenTurnedOn(final ShowListener showListener) { + if (mKeyguardService != null) { + if (DEBUG) Log.v(TAG, "onScreenTurnedOn(showListener = " + showListener + ")"); + mKeyguardService.onScreenTurnedOn(new KeyguardShowDelegate(showListener)); + } else { + // try again when we establish a connection + Slog.w(TAG, "onScreenTurnedOn(): no keyguard service!"); + // This shouldn't happen, but if it does, invoke the listener immediately + // to avoid a dark screen... + showListener.onShown(null); + } + mKeyguardState.screenIsOn = true; + } + + public void onScreenTurnedOff(int why) { + if (mKeyguardService != null) { + mKeyguardService.onScreenTurnedOff(why); + } + mKeyguardState.offReason = why; + mKeyguardState.screenIsOn = false; + } + + public void setKeyguardEnabled(boolean enabled) { + if (mKeyguardService != null) { + mKeyguardService.setKeyguardEnabled(enabled); + } + mKeyguardState.enabled = enabled; + } + + public boolean isDismissable() { + if (mKeyguardService != null) { + mKeyguardState.dismissable = mKeyguardService.isDismissable(); + } + return mKeyguardState.dismissable; + } + + public void onSystemReady() { + if (mKeyguardService != null) { + mKeyguardService.onSystemReady(); + } else { + if (DEBUG) Log.v(TAG, "onSystemReady() called before keyguard service was ready"); + mKeyguardState.systemIsReady = true; + } + } + + public void doKeyguardTimeout(Bundle options) { + if (mKeyguardService != null) { + mKeyguardService.doKeyguardTimeout(options); + } + } + + public void showAssistant() { + if (mKeyguardService != null) { + mKeyguardService.showAssistant(); + } + } + + public void setCurrentUser(int newUserId) { + if (mKeyguardService != null) { + mKeyguardService.setCurrentUser(newUserId); + } + mKeyguardState.currentUser = newUserId; + } + +} diff --git a/services/java/com/android/server/InputMethodManagerService.java b/services/java/com/android/server/InputMethodManagerService.java index 6ba5cffcaa66..18a2b2b9aa5d 100644 --- a/services/java/com/android/server/InputMethodManagerService.java +++ b/services/java/com/android/server/InputMethodManagerService.java @@ -785,10 +785,15 @@ public class InputMethodManagerService extends IInputMethodManager.Stub mFileManager = new InputMethodFileManager(mMethodMap, newUserId); final String defaultImiId = mSettings.getSelectedInputMethod(); final boolean needsToResetDefaultIme = TextUtils.isEmpty(defaultImiId); + // For secondary users, the list of enabled IMEs may not have been updated since the + // callbacks to PackageMonitor are ignored for the secondary user. Here, defaultImiId may + // not be empty even if the IME has been uninstalled by the primary user. + // Even in such cases, IMMS works fine because it will find the most applicable + // IME for that user. if (DEBUG) { Slog.d(TAG, "Switch user: " + newUserId + " current ime = " + defaultImiId); } - resetAllInternalStateLocked(false /* updateOnlyWhenLocaleChanged */, + resetAllInternalStateLocked(false /* updateOnlyWhenLocaleChanged */, needsToResetDefaultIme); } diff --git a/services/java/com/android/server/LockSettingsService.java b/services/java/com/android/server/LockSettingsService.java index e20a21ff7982..f8e9ff790934 100644 --- a/services/java/com/android/server/LockSettingsService.java +++ b/services/java/com/android/server/LockSettingsService.java @@ -49,6 +49,7 @@ import java.util.Arrays; */ public class LockSettingsService extends ILockSettings.Stub { + private static final String PERMISSION = "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE"; private final DatabaseHelper mOpenHelper; private static final String TAG = "LockSettingsService"; @@ -99,29 +100,12 @@ public class LockSettingsService extends ILockSettings.Stub { } } - private static final void checkWritePermission(int userId) { - final int callingUid = Binder.getCallingUid(); - if (UserHandle.getAppId(callingUid) != android.os.Process.SYSTEM_UID) { - throw new SecurityException("uid=" + callingUid - + " not authorized to write lock settings"); - } + private final void checkWritePermission(int userId) { + mContext.checkCallingOrSelfPermission(PERMISSION); } - private static final void checkPasswordReadPermission(int userId) { - final int callingUid = Binder.getCallingUid(); - if (UserHandle.getAppId(callingUid) != android.os.Process.SYSTEM_UID) { - throw new SecurityException("uid=" + callingUid - + " not authorized to read lock password"); - } - } - - private static final void checkReadPermission(int userId) { - final int callingUid = Binder.getCallingUid(); - if (UserHandle.getAppId(callingUid) != android.os.Process.SYSTEM_UID - && UserHandle.getUserId(callingUid) != userId) { - throw new SecurityException("uid=" + callingUid - + " not authorized to read settings of user " + userId); - } + private final void checkPasswordReadPermission(int userId) { + mContext.checkCallingOrSelfPermission(PERMISSION); } @Override diff --git a/services/java/com/android/server/SystemServer.java b/services/java/com/android/server/SystemServer.java index 4631395aecec..46f9015b0f4d 100644 --- a/services/java/com/android/server/SystemServer.java +++ b/services/java/com/android/server/SystemServer.java @@ -725,7 +725,7 @@ class ServerThread extends Thread { } catch (Throwable e) { reportWtf("starting CertBlacklister", e); } - + if (context.getResources().getBoolean( com.android.internal.R.bool.config_dreamsSupported)) { try { @@ -862,7 +862,9 @@ class ServerThread extends Thread { public void run() { Slog.i(TAG, "Making services ready"); - if (!headless) startSystemUi(contextF); + if (!headless) { + startSystemUi(contextF); + } try { if (mountServiceF != null) mountServiceF.systemReady(); } catch (Throwable e) { diff --git a/services/java/com/android/server/accounts/AccountManagerService.java b/services/java/com/android/server/accounts/AccountManagerService.java index 49295f56b3e2..037e2d327816 100644 --- a/services/java/com/android/server/accounts/AccountManagerService.java +++ b/services/java/com/android/server/accounts/AccountManagerService.java @@ -1469,7 +1469,10 @@ public class AccountManagerService int userId) { // Only allow the system process to read accounts of other users if (userId != UserHandle.getCallingUserId() - && Binder.getCallingUid() != android.os.Process.myUid()) { + && Binder.getCallingUid() != android.os.Process.myUid() + && mContext.checkCallingOrSelfPermission( + android.Manifest.permission.INTERACT_ACROSS_USERS_FULL) + != PackageManager.PERMISSION_GRANTED) { throw new SecurityException("User " + UserHandle.getCallingUserId() + " trying to confirm account credentials for " + userId); } @@ -1727,7 +1730,10 @@ public class AccountManagerService public Account[] getAccountsAsUser(String type, int userId) { // Only allow the system process to read accounts of other users if (userId != UserHandle.getCallingUserId() - && Binder.getCallingUid() != android.os.Process.myUid()) { + && Binder.getCallingUid() != android.os.Process.myUid() + && mContext.checkCallingOrSelfPermission( + android.Manifest.permission.INTERACT_ACROSS_USERS_FULL) + != PackageManager.PERMISSION_GRANTED) { throw new SecurityException("User " + UserHandle.getCallingUserId() + " trying to get account for " + userId); } diff --git a/services/java/com/android/server/am/ActivityManagerService.java b/services/java/com/android/server/am/ActivityManagerService.java index d8bcf2cd4494..d1b5071c48c8 100644 --- a/services/java/com/android/server/am/ActivityManagerService.java +++ b/services/java/com/android/server/am/ActivityManagerService.java @@ -37,6 +37,7 @@ import dalvik.system.Zygote; import android.app.Activity; import android.app.ActivityManager; +import android.app.ActivityManager.RunningTaskInfo; import android.app.ActivityManagerNative; import android.app.ActivityOptions; import android.app.ActivityThread; @@ -196,7 +197,7 @@ public final class ActivityManagerService extends ActivityManagerNative static final boolean DEBUG_POWER_QUICK = DEBUG_POWER || false; static final boolean DEBUG_MU = localLOGV || false; static final boolean DEBUG_IMMERSIVE = localLOGV || false; - static final boolean VALIDATE_TOKENS = false; + static final boolean VALIDATE_TOKENS = true; static final boolean SHOW_ACTIVITY_START_TIME = true; // Control over CPU and battery monitoring. @@ -328,7 +329,7 @@ public final class ActivityManagerService extends ActivityManagerNative /** * List of intents that were used to start the most recent tasks. */ - final ArrayList<TaskRecord> mRecentTasks = new ArrayList<TaskRecord>(); + private final ArrayList<TaskRecord> mRecentTasks = new ArrayList<TaskRecord>(); public class PendingActivityExtras extends Binder implements Runnable { public final ActivityRecord activity; @@ -596,13 +597,8 @@ public final class ActivityManagerService extends ActivityManagerNative * List of PendingThumbnailsRecord objects of clients who are still * waiting to receive all of the thumbnails for a task. */ - final ArrayList mPendingThumbnails = new ArrayList(); - - /** - * List of HistoryRecord objects that have been finished and must - * still report back to a pending thumbnail receiver. - */ - final ArrayList mCancelledThumbnails = new ArrayList(); + final ArrayList<PendingThumbnailsRecord> mPendingThumbnails = + new ArrayList<PendingThumbnailsRecord>(); final ProviderMap mProviderMap; @@ -2842,11 +2838,8 @@ public final class ActivityManagerService extends ActivityManagerNative for (int i=0; i<activities.size(); i++) { ActivityRecord r = activities.get(i); if (!r.finishing) { - int index = mMainStack.indexOfTokenLocked(r.appToken); - if (index >= 0) { - mMainStack.finishActivityLocked(r, index, Activity.RESULT_CANCELED, - null, "finish-heavy", true); - } + mMainStack.finishActivityLocked(r, Activity.RESULT_CANCELED, + null, "finish-heavy", true); } } @@ -2932,22 +2925,13 @@ public final class ActivityManagerService extends ActivityManagerNative } } + @Override public boolean willActivityBeVisible(IBinder token) { synchronized(this) { - int i; - for (i=mMainStack.mHistory.size()-1; i>=0; i--) { - ActivityRecord r = (ActivityRecord)mMainStack.mHistory.get(i); - if (r.appToken == token) { - return true; - } - if (r.fullscreen && !r.finishing) { - return false; - } - } - return true; + return mMainStack.willActivityBeVisibleLocked(token); } } - + public void overridePendingTransition(IBinder token, String packageName, int enterAnim, int exitAnim) { synchronized(this) { @@ -3717,13 +3701,7 @@ public final class ActivityManagerService extends ActivityManagerNative } mWindowManager.closeSystemDialogs(reason); - for (int i=mMainStack.mHistory.size()-1; i>=0; i--) { - ActivityRecord r = (ActivityRecord)mMainStack.mHistory.get(i); - if ((r.info.flags&ActivityInfo.FLAG_FINISH_ON_CLOSE_SYSTEM_DIALOGS) != 0) { - r.stack.finishActivityLocked(r, i, - Activity.RESULT_CANCELED, null, "close-sys", true); - } - } + mMainStack.closeSystemDialogsLocked(); broadcastIntentLocked(null, null, intent, null, null, 0, null, null, null, AppOpsManager.OP_NONE, false, false, -1, @@ -3930,37 +3908,12 @@ public final class ActivityManagerService extends ActivityManagerNative boolean didSomething = killPackageProcessesLocked(name, appId, userId, -100, callerWillRestart, true, doit, evenPersistent, name == null ? ("force stop user " + userId) : ("force stop " + name)); - - TaskRecord lastTask = null; - for (i=0; i<mMainStack.mHistory.size(); i++) { - ActivityRecord r = (ActivityRecord)mMainStack.mHistory.get(i); - final boolean samePackage = r.packageName.equals(name) - || (name == null && r.userId == userId); - if ((userId == UserHandle.USER_ALL || r.userId == userId) - && (samePackage || r.task == lastTask) - && (r.app == null || evenPersistent || !r.app.persistent)) { - if (!doit) { - if (r.finishing) { - // If this activity is just finishing, then it is not - // interesting as far as something to stop. - continue; - } - return true; - } - didSomething = true; - Slog.i(TAG, " Force finishing activity " + r); - if (samePackage) { - if (r.app != null) { - r.app.removed = true; - } - r.app = null; - } - lastTask = r.task; - if (r.stack.finishActivityLocked(r, i, Activity.RESULT_CANCELED, - null, "force-stop", true)) { - i--; - } + + if (mMainStack.forceStopPackageLocked(name, doit, evenPersistent, userId)) { + if (!doit) { + return true; } + didSomething = true; } if (mServices.forceStopLocked(name, userId, evenPersistent, doit)) { @@ -5670,12 +5623,12 @@ public final class ActivityManagerService extends ActivityManagerNative // TASK MANAGEMENT // ========================================================= - public List getTasks(int maxNum, int flags, + @Override + public List<RunningTaskInfo> getTasks(int maxNum, int flags, IThumbnailReceiver receiver) { - ArrayList list = new ArrayList(); + ArrayList<RunningTaskInfo> list = new ArrayList<RunningTaskInfo>(); - PendingThumbnailsRecord pending = null; - IApplicationThread topThumbnail = null; + PendingThumbnailsRecord pending = new PendingThumbnailsRecord(receiver); ActivityRecord topRecord = null; synchronized(this) { @@ -5701,88 +5654,19 @@ public final class ActivityManagerService extends ActivityManagerNative throw new SecurityException(msg); } - int pos = mMainStack.mHistory.size()-1; - ActivityRecord next = - pos >= 0 ? (ActivityRecord)mMainStack.mHistory.get(pos) : null; - ActivityRecord top = null; - TaskRecord curTask = null; - int numActivities = 0; - int numRunning = 0; - while (pos >= 0 && maxNum > 0) { - final ActivityRecord r = next; - pos--; - next = pos >= 0 ? (ActivityRecord)mMainStack.mHistory.get(pos) : null; - - // Initialize state for next task if needed. - if (top == null || - (top.state == ActivityState.INITIALIZING - && top.task == r.task)) { - top = r; - curTask = r.task; - numActivities = numRunning = 0; - } - - // Add 'r' into the current task. - numActivities++; - if (r.app != null && r.app.thread != null) { - numRunning++; - } - - if (localLOGV) Slog.v( - TAG, r.intent.getComponent().flattenToShortString() - + ": task=" + r.task); - - // If the next one is a different task, generate a new - // TaskInfo entry for what we have. - if (next == null || next.task != curTask) { - ActivityManager.RunningTaskInfo ci - = new ActivityManager.RunningTaskInfo(); - ci.id = curTask.taskId; - ci.baseActivity = r.intent.getComponent(); - ci.topActivity = top.intent.getComponent(); - if (top.thumbHolder != null) { - ci.description = top.thumbHolder.lastDescription; - } - ci.numActivities = numActivities; - ci.numRunning = numRunning; - //System.out.println( - // "#" + maxNum + ": " + " descr=" + ci.description); - if (ci.thumbnail == null && receiver != null) { - if (localLOGV) Slog.v( - TAG, "State=" + top.state + "Idle=" + top.idle - + " app=" + top.app - + " thr=" + (top.app != null ? top.app.thread : null)); - if (top.state == ActivityState.RESUMED - || top.state == ActivityState.PAUSING) { - if (top.idle && top.app != null - && top.app.thread != null) { - topRecord = top; - topThumbnail = top.app.thread; - } else { - top.thumbnailNeeded = true; - } - } - if (pending == null) { - pending = new PendingThumbnailsRecord(receiver); - } - pending.pendingRecords.add(top); - } - list.add(ci); - maxNum--; - top = null; - } - } + topRecord = mMainStack.getTasksLocked(maxNum, receiver, pending, list); - if (pending != null) { + if (!pending.pendingRecords.isEmpty()) { mPendingThumbnails.add(pending); } } if (localLOGV) Slog.v(TAG, "We have pending thumbnails: " + pending); - if (topThumbnail != null) { + if (topRecord != null) { if (localLOGV) Slog.v(TAG, "Requesting top thumbnail"); try { + IApplicationThread topThumbnail = topRecord.app.thread; topThumbnail.requestThumbnail(topRecord.appToken); } catch (Exception e) { Slog.w(TAG, "Exception thrown when requesting thumbnail", e); @@ -6017,43 +5901,6 @@ public final class ActivityManagerService extends ActivityManagerNative return false; } - private final int findAffinityTaskTopLocked(int startIndex, String affinity) { - int j; - TaskRecord startTask = ((ActivityRecord)mMainStack.mHistory.get(startIndex)).task; - TaskRecord jt = startTask; - - // First look backwards - for (j=startIndex-1; j>=0; j--) { - ActivityRecord r = (ActivityRecord)mMainStack.mHistory.get(j); - if (r.task != jt) { - jt = r.task; - if (affinity.equals(jt.affinity)) { - return j; - } - } - } - - // Now look forwards - final int N = mMainStack.mHistory.size(); - jt = startTask; - for (j=startIndex+1; j<N; j++) { - ActivityRecord r = (ActivityRecord)mMainStack.mHistory.get(j); - if (r.task != jt) { - if (affinity.equals(jt.affinity)) { - return j; - } - jt = r.task; - } - } - - // Might it be at the top? - if (affinity.equals(((ActivityRecord)mMainStack.mHistory.get(N-1)).task.affinity)) { - return N-1; - } - - return -1; - } - /** * TODO: Add mController hook */ @@ -6082,20 +5929,8 @@ public final class ActivityManagerService extends ActivityManagerNative mMainStack.moveTaskToFrontLocked(tr, null, options); return; } - for (int i=mMainStack.mHistory.size()-1; i>=0; i--) { - ActivityRecord hr = (ActivityRecord)mMainStack.mHistory.get(i); - if (hr.task.taskId == task) { - if ((flags&ActivityManager.MOVE_TASK_NO_USER_ACTION) == 0) { - mMainStack.mUserLeaving = true; - } - if ((flags&ActivityManager.MOVE_TASK_WITH_HOME) != 0) { - // Caller wants the home activity moved with it. To accomplish this, - // we'll just move the home task to the top first. - mMainStack.moveHomeToFrontLocked(); - } - mMainStack.moveTaskToFrontLocked(hr.task, null, options); - return; - } + if (mMainStack.findTaskToMoveToFrontLocked(task, flags, options)) { + return; } } finally { Binder.restoreCallingIdentity(origId); @@ -6135,7 +5970,7 @@ public final class ActivityManagerService extends ActivityManagerNative enforceNotIsolatedCaller("moveActivityTaskToBack"); synchronized(this) { final long origId = Binder.clearCallingIdentity(); - int taskId = getTaskForActivityLocked(token, !nonRoot); + int taskId = mMainStack.getTaskForActivityLocked(token, !nonRoot); if (taskId >= 0) { return mMainStack.moveTaskToBackLocked(taskId, null); } @@ -6165,25 +6000,8 @@ public final class ActivityManagerService extends ActivityManagerNative public int getTaskForActivity(IBinder token, boolean onlyRoot) { synchronized(this) { - return getTaskForActivityLocked(token, onlyRoot); - } - } - - int getTaskForActivityLocked(IBinder token, boolean onlyRoot) { - final int N = mMainStack.mHistory.size(); - TaskRecord lastTask = null; - for (int i=0; i<N; i++) { - ActivityRecord r = (ActivityRecord)mMainStack.mHistory.get(i); - if (r.appToken == token) { - if (!onlyRoot || lastTask != r.task) { - return r.task.taskId; - } - return -1; - } - lastTask = r.task; + return mMainStack.getTaskForActivityLocked(token, onlyRoot); } - - return -1; } // ========================================================= @@ -7091,13 +6909,10 @@ public final class ActivityManagerService extends ActivityManagerNative "unhandledBack()"); synchronized(this) { - int count = mMainStack.mHistory.size(); - if (DEBUG_SWITCH) Slog.d( - TAG, "Performing unhandledBack(): stack size = " + count); - if (count > 1) { - final long origId = Binder.clearCallingIdentity(); - mMainStack.finishActivityLocked((ActivityRecord)mMainStack.mHistory.get(count-1), - count-1, Activity.RESULT_CANCELED, null, "unhandled-back", true); + final long origId = Binder.clearCallingIdentity(); + try { + mMainStack.unhandledBackLocked(); + } finally { Binder.restoreCallingIdentity(origId); } } @@ -8192,15 +8007,7 @@ public final class ActivityManagerService extends ActivityManagerNative + " has crashed too many times: killing!"); EventLog.writeEvent(EventLogTags.AM_PROCESS_CRASHED_TOO_MUCH, app.userId, app.info.processName, app.uid); - for (int i=mMainStack.mHistory.size()-1; i>=0; i--) { - ActivityRecord r = (ActivityRecord)mMainStack.mHistory.get(i); - if (r.app == app) { - Slog.w(TAG, " Force finishing activity " - + r.intent.getComponent().flattenToShortString()); - r.stack.finishActivityLocked(r, i, Activity.RESULT_CANCELED, - null, "crashed", false); - } - } + mMainStack.handleAppCrashLocked(app); if (!app.persistent) { // We don't want to start this process again until the user // explicitly does so... but for persistent process, we really @@ -8225,33 +8032,7 @@ public final class ActivityManagerService extends ActivityManagerNative } mMainStack.resumeTopActivityLocked(null); } else { - ActivityRecord r = mMainStack.topRunningActivityLocked(null); - if (r != null && r.app == app) { - // If the top running activity is from this crashing - // process, then terminate it to avoid getting in a loop. - Slog.w(TAG, " Force finishing activity " - + r.intent.getComponent().flattenToShortString()); - int index = mMainStack.indexOfActivityLocked(r); - r.stack.finishActivityLocked(r, index, - Activity.RESULT_CANCELED, null, "crashed", false); - // Also terminate any activities below it that aren't yet - // stopped, to avoid a situation where one will get - // re-start our crashing activity once it gets resumed again. - index--; - if (index >= 0) { - r = (ActivityRecord)mMainStack.mHistory.get(index); - if (r.state == ActivityState.RESUMED - || r.state == ActivityState.PAUSING - || r.state == ActivityState.PAUSED) { - if (!r.isHomeActivity || mHomeProcess != r.app) { - Slog.w(TAG, " Force finishing activity " - + r.intent.getComponent().flattenToShortString()); - r.stack.finishActivityLocked(r, index, - Activity.RESULT_CANCELED, null, "crashed", false); - } - } - } - } + mMainStack.finishTopRunningActivityLocked(app); } // Bump up the crash count of any services currently running in the proc. @@ -9270,8 +9051,7 @@ public final class ActivityManagerService extends ActivityManagerNative int opti, boolean dumpAll, boolean dumpClient, String dumpPackage) { pw.println("ACTIVITY MANAGER ACTIVITIES (dumpsys activity activities)"); pw.println(" Main stack:"); - dumpHistoryList(fd, pw, mMainStack.mHistory, " ", "Hist", true, !dumpAll, dumpClient, - dumpPackage); + mMainStack.dumpActivitiesLocked(fd, pw, dumpAll, dumpClient, dumpPackage); pw.println(" "); pw.println(" Running activities (most recent first):"); dumpHistoryList(fd, pw, mMainStack.mLRUActivities, " ", "Run", false, !dumpAll, false, @@ -9801,32 +9581,10 @@ public final class ActivityManagerService extends ActivityManagerNative */ protected boolean dumpActivity(FileDescriptor fd, PrintWriter pw, String name, String[] args, int opti, boolean dumpAll) { - ArrayList<ActivityRecord> activities = new ArrayList<ActivityRecord>(); - - if ("all".equals(name)) { - synchronized (this) { - for (ActivityRecord r1 : (ArrayList<ActivityRecord>)mMainStack.mHistory) { - activities.add(r1); - } - } - } else if ("top".equals(name)) { - synchronized (this) { - final int N = mMainStack.mHistory.size(); - if (N > 0) { - activities.add((ActivityRecord)mMainStack.mHistory.get(N-1)); - } - } - } else { - ItemMatcher matcher = new ItemMatcher(); - matcher.build(name); - - synchronized (this) { - for (ActivityRecord r1 : (ArrayList<ActivityRecord>)mMainStack.mHistory) { - if (matcher.match(r1, r1.intent.getComponent())) { - activities.add(r1); - } - } - } + ArrayList<ActivityRecord> activities; + + synchronized (this) { + activities = mMainStack.getDumpActivitiesLocked(name); } if (activities.size() <= 0) { @@ -10078,7 +9836,7 @@ public final class ActivityManagerService extends ActivityManagerNative return needSep; } - private static final void dumpHistoryList(FileDescriptor fd, PrintWriter pw, List list, + static final void dumpHistoryList(FileDescriptor fd, PrintWriter pw, List list, String prefix, String label, boolean complete, boolean brief, boolean client, String dumpPackage) { TaskRecord lastTask = null; @@ -12616,95 +12374,14 @@ public final class ActivityManagerService extends ActivityManagerNative public boolean navigateUpTo(IBinder token, Intent destIntent, int resultCode, Intent resultData) { - ComponentName dest = destIntent.getComponent(); synchronized (this) { ActivityRecord srec = ActivityRecord.forToken(token); if (srec == null) { return false; } - ArrayList<ActivityRecord> history = srec.stack.mHistory; - final int start = history.indexOf(srec); - if (start < 0) { - // Current activity is not in history stack; do nothing. - return false; - } - int finishTo = start - 1; - ActivityRecord parent = null; - boolean foundParentInTask = false; - if (dest != null) { - TaskRecord tr = srec.task; - for (int i = start - 1; i >= 0; i--) { - ActivityRecord r = history.get(i); - if (tr != r.task) { - // Couldn't find parent in the same task; stop at the one above this. - // (Root of current task; in-app "home" behavior) - // Always at least finish the current activity. - finishTo = Math.min(start - 1, i + 1); - parent = history.get(finishTo); - break; - } else if (r.info.packageName.equals(dest.getPackageName()) && - r.info.name.equals(dest.getClassName())) { - finishTo = i; - parent = r; - foundParentInTask = true; - break; - } - } - } - - if (mController != null) { - ActivityRecord next = mMainStack.topRunningActivityLocked(token, 0); - if (next != null) { - // ask watcher if this is allowed - boolean resumeOK = true; - try { - resumeOK = mController.activityResuming(next.packageName); - } catch (RemoteException e) { - mController = null; - } - - if (!resumeOK) { - return false; - } - } - } - final long origId = Binder.clearCallingIdentity(); - for (int i = start; i > finishTo; i--) { - ActivityRecord r = history.get(i); - mMainStack.requestFinishActivityLocked(r.appToken, resultCode, resultData, - "navigate-up", true); - // Only return the supplied result for the first activity finished - resultCode = Activity.RESULT_CANCELED; - resultData = null; - } - - if (parent != null && foundParentInTask) { - final int parentLaunchMode = parent.info.launchMode; - final int destIntentFlags = destIntent.getFlags(); - if (parentLaunchMode == ActivityInfo.LAUNCH_SINGLE_INSTANCE || - parentLaunchMode == ActivityInfo.LAUNCH_SINGLE_TASK || - parentLaunchMode == ActivityInfo.LAUNCH_SINGLE_TOP || - (destIntentFlags & Intent.FLAG_ACTIVITY_CLEAR_TOP) != 0) { - parent.deliverNewIntentLocked(srec.info.applicationInfo.uid, destIntent); - } else { - try { - ActivityInfo aInfo = AppGlobals.getPackageManager().getActivityInfo( - destIntent.getComponent(), 0, srec.userId); - int res = mMainStack.startActivityLocked(srec.app.thread, destIntent, - null, aInfo, parent.appToken, null, - 0, -1, parent.launchedFromUid, parent.launchedFromPackage, - 0, null, true, null); - foundParentInTask = res == ActivityManager.START_SUCCESS; - } catch (RemoteException e) { - foundParentInTask = false; - } - mMainStack.requestFinishActivityLocked(parent.appToken, resultCode, - resultData, "navigate-up", true); - } - } - Binder.restoreCallingIdentity(origId); - return foundParentInTask; + ActivityStack stack = srec.stack; + return stack.navigateUpToLocked(srec, destIntent, resultCode, resultData); } } diff --git a/services/java/com/android/server/am/ActivityRecord.java b/services/java/com/android/server/am/ActivityRecord.java index 054d213f3f28..d134c1362928 100644 --- a/services/java/com/android/server/am/ActivityRecord.java +++ b/services/java/com/android/server/am/ActivityRecord.java @@ -22,6 +22,7 @@ import com.android.server.am.ActivityStack.ActivityState; import android.app.Activity; import android.app.ActivityOptions; +import android.app.ResultInfo; import android.content.ComponentName; import android.content.Intent; import android.content.pm.ActivityInfo; @@ -95,9 +96,9 @@ final class ActivityRecord { ActivityRecord resultTo; // who started this entry, so will get our reply final String resultWho; // additional identifier for use by resultTo. final int requestCode; // code given by requester (resultTo) - ArrayList results; // pending ActivityResult objs we have received + ArrayList<ResultInfo> results; // pending ActivityResult objs we have received HashSet<WeakReference<PendingIntentRecord>> pendingResults; // all pending intents for this act - ArrayList newIntents; // any pending new intents for single-top mode + ArrayList<Intent> newIntents; // any pending new intents for single-top mode ActivityOptions pendingOptions; // most recently given options HashSet<ConnectionRecord> connections; // All ConnectionRecord we hold UriPermissionOwner uriPermissions; // current special URI access perms. @@ -504,6 +505,7 @@ final class ActivityRecord { inHistory = false; if (task != null && !finishing) { task.numActivities--; + task = null; } clearOptionsLocked(); } @@ -538,7 +540,7 @@ final class ActivityRecord { ActivityResult r = new ActivityResult(from, resultWho, requestCode, resultCode, resultData); if (results == null) { - results = new ArrayList(); + results = new ArrayList<ResultInfo>(); } results.add(r); } @@ -910,10 +912,11 @@ final class ActivityRecord { } } } - + + @Override public String toString() { if (stringName != null) { - return stringName; + return stringName + " t" + task.taskId + (finishing ? " f}" : "}"); } StringBuilder sb = new StringBuilder(128); sb.append("ActivityRecord{"); @@ -922,7 +925,7 @@ final class ActivityRecord { sb.append(userId); sb.append(' '); sb.append(intent.getComponent().flattenToShortString()); - sb.append('}'); - return stringName = sb.toString(); + stringName = sb.toString(); + return toString(); } } diff --git a/services/java/com/android/server/am/ActivityStack.java b/services/java/com/android/server/am/ActivityStack.java index 526b24f052b3..21fe0e8ea102 100644 --- a/services/java/com/android/server/am/ActivityStack.java +++ b/services/java/com/android/server/am/ActivityStack.java @@ -21,18 +21,24 @@ import static android.content.pm.PackageManager.PERMISSION_GRANTED; import com.android.internal.app.HeavyWeightSwitcherActivity; import com.android.internal.os.BatteryStatsImpl; +import com.android.internal.util.Objects; +import com.android.server.am.ActivityManagerService.ItemMatcher; import com.android.server.am.ActivityManagerService.PendingActivityLaunch; import com.android.server.wm.AppTransition; +import com.android.server.wm.TaskGroup; import android.app.Activity; import android.app.ActivityManager; import android.app.ActivityOptions; import android.app.AppGlobals; +import android.app.IActivityController; import android.app.IActivityManager; +import android.app.IThumbnailReceiver; import android.app.IThumbnailRetriever; import android.app.IApplicationThread; import android.app.PendingIntent; import android.app.ResultInfo; +import android.app.ActivityManager.RunningTaskInfo; import android.app.IActivityManager.WaitResult; import android.content.ComponentName; import android.content.Context; @@ -61,9 +67,12 @@ import android.os.UserHandle; import android.util.EventLog; import android.util.Log; import android.util.Slog; +import android.util.SparseArray; import android.view.Display; +import java.io.FileDescriptor; import java.io.IOException; +import java.io.PrintWriter; import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.Iterator; @@ -84,14 +93,14 @@ final class ActivityStack { static final boolean DEBUG_CONFIGURATION = ActivityManagerService.DEBUG_CONFIGURATION; static final boolean DEBUG_TASKS = ActivityManagerService.DEBUG_TASKS; static final boolean DEBUG_CLEANUP = ActivityManagerService.DEBUG_CLEANUP; - + static final boolean DEBUG_STATES = false; static final boolean DEBUG_ADD_REMOVE = false; static final boolean DEBUG_SAVED_STATE = false; static final boolean DEBUG_APP = false; static final boolean VALIDATE_TOKENS = ActivityManagerService.VALIDATE_TOKENS; - + // How long we wait until giving up on the last activity telling us it // is idle. static final int IDLE_TIMEOUT = 10*1000; @@ -118,19 +127,19 @@ final class ActivityStack { // How long we wait until giving up on an activity telling us it has // finished destroying itself. static final int DESTROY_TIMEOUT = 10*1000; - + // How long until we reset a task when the user returns to it. Currently // disabled. static final long ACTIVITY_INACTIVE_RESET_TIME = 0; - + // How long between activity launches that we consider safe to not warn // the user about an unexpected activity being launched on top. static final long START_WARN_TIME = 5*1000; - + // Set to false to disable the preview that is shown while a new activity // is being started. static final boolean SHOW_APP_STARTING_PREVIEW = true; - + enum ActivityState { INITIALIZING, RESUMED, @@ -145,19 +154,24 @@ final class ActivityStack { final ActivityManagerService mService; final boolean mMainStack; - + final Context mContext; - + /** * The back history of all previous (and possibly still - * running) activities. It contains HistoryRecord objects. + * running) activities. It contains #TaskRecord objects. + */ + private ArrayList<TaskRecord> mTaskHistory = new ArrayList<TaskRecord>(); + + /** + * Mapping from taskId to TaskRecord */ - final ArrayList<ActivityRecord> mHistory = new ArrayList<ActivityRecord>(); + private SparseArray<TaskRecord> mTaskIdToTaskRecord = new SparseArray<TaskRecord>(); /** * Used for validating app tokens with window manager. */ - final ArrayList<IBinder> mValidateAppTokens = new ArrayList<IBinder>(); + final ArrayList<TaskGroup> mValidateAppTokens = new ArrayList<TaskGroup>(); /** * List of running activities, sorted by recent usage. @@ -202,13 +216,13 @@ final class ActivityStack { */ final ArrayList<ActivityRecord> mFinishingActivities = new ArrayList<ActivityRecord>(); - + /** * List of people waiting to find out about the next launched activity. */ final ArrayList<IActivityManager.WaitResult> mWaitingActivityLaunched = new ArrayList<IActivityManager.WaitResult>(); - + /** * List of people waiting to find out about the next visible activity. */ @@ -250,14 +264,14 @@ final class ActivityStack { * Current activity that is resumed, or null if there is none. */ ActivityRecord mResumedActivity = null; - + /** * This is the last activity that has been started. It is only used to * identify when multiple activities are started at once so that the user * can be warned they may not be in the activity they think they are. */ ActivityRecord mLastStartedActivity = null; - + /** * Set when we know we are going to be calling updateConfiguration() * soon, so want to skip intermediate config checks. @@ -269,9 +283,9 @@ final class ActivityStack { * newly launched activity is being brought in front of us. */ boolean mUserLeaving = false; - + long mInitialStartTime = 0; - + /** * Set when we have taken too long waiting to go to sleep. */ @@ -289,6 +303,12 @@ final class ActivityStack { private ActivityRecord mLastScreenshotActivity = null; private Bitmap mLastScreenshotBitmap = null; + /** + * List of ActivityRecord objects that have been finished and must + * still report back to a pending thumbnail receiver. + */ + private final ArrayList<ActivityRecord> mCancelledThumbnails = new ArrayList<ActivityRecord>(); + int mThumbnailWidth = -1; int mThumbnailHeight = -1; @@ -426,6 +446,14 @@ final class ActivityStack { } } + private int numActivities() { + int count = 0; + for (int taskNdx = mTaskHistory.size() - 1; taskNdx >= 0; --taskNdx) { + count += mTaskHistory.get(taskNdx).mActivities.size(); + } + return count; + } + ActivityStack(ActivityManagerService service, Context context, boolean mainStack, Looper looper) { mHandler = new ActivityStackHandler(looper); mService = service; @@ -444,25 +472,29 @@ final class ActivityStack { } final ActivityRecord topRunningActivityLocked(ActivityRecord notTop) { - int i = mHistory.size()-1; - while (i >= 0) { - ActivityRecord r = mHistory.get(i); - if (!r.finishing && r != notTop && okToShow(r)) { - return r; + for (int taskNdx = mTaskHistory.size() - 1; taskNdx >= 0; --taskNdx) { + final TaskRecord task = mTaskHistory.get(taskNdx); + final ArrayList<ActivityRecord> activities = task.mActivities; + for (int activityNdx = activities.size() - 1; activityNdx >= 0; --activityNdx) { + ActivityRecord r = activities.get(activityNdx); + if (!r.finishing && r != notTop && okToShow(r)) { + return r; + } } - i--; } return null; } final ActivityRecord topRunningNonDelayedActivityLocked(ActivityRecord notTop) { - int i = mHistory.size()-1; - while (i >= 0) { - ActivityRecord r = mHistory.get(i); - if (!r.finishing && !r.delayedResume && r != notTop && okToShow(r)) { - return r; + for (int taskNdx = mTaskHistory.size() - 1; taskNdx >= 0; --taskNdx) { + final TaskRecord task = mTaskHistory.get(taskNdx); + final ArrayList<ActivityRecord> activities = task.mActivities; + for (int activityNdx = activities.size() - 1; activityNdx >= 0; --activityNdx) { + ActivityRecord r = activities.get(activityNdx); + if (!r.finishing && !r.delayedResume && r != notTop && okToShow(r)) { + return r; + } } - i--; } return null; } @@ -470,42 +502,54 @@ final class ActivityStack { /** * This is a simplified version of topRunningActivityLocked that provides a number of * optional skip-over modes. It is intended for use with the ActivityController hook only. - * + * * @param token If non-null, any history records matching this token will be skipped. * @param taskId If non-zero, we'll attempt to skip over records with the same task ID. - * + * * @return Returns the HistoryRecord of the next activity on the stack. */ final ActivityRecord topRunningActivityLocked(IBinder token, int taskId) { - int i = mHistory.size()-1; - while (i >= 0) { - ActivityRecord r = mHistory.get(i); - // Note: the taskId check depends on real taskId fields being non-zero - if (!r.finishing && (token != r.appToken) && (taskId != r.task.taskId) - && okToShow(r)) { - return r; + for (int taskNdx = mTaskHistory.size() - 1; taskNdx >= 0; --taskNdx) { + TaskRecord task = mTaskHistory.get(taskNdx); + if (task.taskId == taskId) { + continue; + } + ArrayList<ActivityRecord> activities = task.mActivities; + for (int i = activities.size() - 1; i >= 0; --i) { + final ActivityRecord r = activities.get(i); + // Note: the taskId check depends on real taskId fields being non-zero + if (!r.finishing && (token != r.appToken) && okToShow(r)) { + return r; + } } - i--; } return null; } - final int indexOfTokenLocked(IBinder token) { - return mHistory.indexOf(ActivityRecord.forToken(token)); - } - - final int indexOfActivityLocked(ActivityRecord r) { - return mHistory.indexOf(r); - } - final ActivityRecord isInStackLocked(IBinder token) { - ActivityRecord r = ActivityRecord.forToken(token); - if (mHistory.contains(r)) { - return r; + final ActivityRecord r = ActivityRecord.forToken(token); + if (r != null) { + final TaskRecord task = r.task; + if (mTaskHistory.contains(task) && task.mActivities.contains(r)) { + return r; + } } return null; } + int getTaskForActivityLocked(IBinder token, boolean onlyRoot) { + final ActivityRecord r = ActivityRecord.forToken(token); + if (r == null) { + return -1; + } + final TaskRecord task = r.task; + switch (task.mActivities.indexOf(r)) { + case -1: return -1; + case 0: return task.taskId; + default: return onlyRoot ? -1 : task.taskId; + } + } + private final boolean updateLRUListLocked(ActivityRecord r) { final boolean hadit = mLRUActivities.remove(r); mLRUActivities.add(r); @@ -521,37 +565,35 @@ final class ActivityStack { if (info.targetActivity != null) { cls = new ComponentName(info.packageName, info.targetActivity); } + final int userId = UserHandle.getUserId(info.applicationInfo.uid); - TaskRecord cp = null; + for (int taskNdx = mTaskHistory.size() - 1; taskNdx >= 0; --taskNdx) { + final TaskRecord task = mTaskHistory.get(taskNdx); + final ActivityRecord r = task.getTopActivity(); + if (r == null || r.finishing || r.userId != userId || + r.launchMode == ActivityInfo.LAUNCH_SINGLE_INSTANCE) { + continue; + } - final int userId = UserHandle.getUserId(info.applicationInfo.uid); - final int N = mHistory.size(); - for (int i=(N-1); i>=0; i--) { - ActivityRecord r = mHistory.get(i); - if (!r.finishing && r.task != cp && r.userId == userId - && r.launchMode != ActivityInfo.LAUNCH_SINGLE_INSTANCE) { - cp = r.task; - //Slog.i(TAG, "Comparing existing cls=" + r.task.intent.getComponent().flattenToShortString() - // + "/aff=" + r.task.affinity + " to new cls=" - // + intent.getComponent().flattenToShortString() + "/aff=" + taskAffinity); - if (r.task.affinity != null) { - if (r.task.affinity.equals(info.taskAffinity)) { - //Slog.i(TAG, "Found matching affinity!"); - return r; - } - } else if (r.task.intent != null - && r.task.intent.getComponent().equals(cls)) { - //Slog.i(TAG, "Found matching class!"); - //dump(); - //Slog.i(TAG, "For Intent " + intent + " bringing to top: " + r.intent); - return r; - } else if (r.task.affinityIntent != null - && r.task.affinityIntent.getComponent().equals(cls)) { - //Slog.i(TAG, "Found matching class!"); - //dump(); - //Slog.i(TAG, "For Intent " + intent + " bringing to top: " + r.intent); + //Slog.i(TAG, "Comparing existing cls=" + r.task.intent.getComponent().flattenToShortString() + // + "/aff=" + r.task.affinity + " to new cls=" + // + intent.getComponent().flattenToShortString() + "/aff=" + taskAffinity); + if (task.affinity != null) { + if (task.affinity.equals(info.taskAffinity)) { + //Slog.i(TAG, "Found matching affinity!"); return r; } + } else if (task.intent != null && task.intent.getComponent().equals(cls)) { + //Slog.i(TAG, "Found matching class!"); + //dump(); + //Slog.i(TAG, "For Intent " + intent + " bringing to top: " + r.intent); + return r; + } else if (task.affinityIntent != null + && task.affinityIntent.getComponent().equals(cls)) { + //Slog.i(TAG, "Found matching class!"); + //dump(); + //Slog.i(TAG, "For Intent " + intent + " bringing to top: " + r.intent); + return r; } } @@ -570,11 +612,11 @@ final class ActivityStack { } final int userId = UserHandle.getUserId(info.applicationInfo.uid); - final int N = mHistory.size(); - for (int i=(N-1); i>=0; i--) { - ActivityRecord r = mHistory.get(i); - if (!r.finishing) { - if (r.intent.getComponent().equals(cls) && r.userId == userId) { + for (int taskNdx = mTaskHistory.size() - 1; taskNdx >= 0; --taskNdx) { + final ArrayList<ActivityRecord> activities = mTaskHistory.get(taskNdx).mActivities; + for (int activityNdx = activities.size() - 1; activityNdx >= 0; --activityNdx) { + ActivityRecord r = activities.get(activityNdx); + if (!r.finishing && r.intent.getComponent().equals(cls) && r.userId == userId) { //Slog.i(TAG, "Found matching class!"); //dump(); //Slog.i(TAG, "For Intent " + intent + " bringing to top: " + r.intent); @@ -598,33 +640,31 @@ final class ActivityStack { * @return whether there are any activities for the specified user. */ final boolean switchUserLocked(int userId, UserStartedState uss) { - mCurrentUser = userId; + if (VALIDATE_TOKENS) { + validateAppTokensLocked(); + } mStartingUsers.add(uss); + if (mCurrentUser == userId) { + return true; + } + mCurrentUser = userId; - // Only one activity? Nothing to do... - if (mHistory.size() < 2) - return false; - + // Move userId's tasks to the top. boolean haveActivities = false; - // Check if the top activity is from the new user. - ActivityRecord top = mHistory.get(mHistory.size() - 1); - if (top.userId == userId) return true; - // Otherwise, move the user's activities to the top. - int N = mHistory.size(); - int i = 0; - while (i < N) { - ActivityRecord r = mHistory.get(i); - if (r.userId == userId) { - ActivityRecord moveToTop = mHistory.remove(i); - mHistory.add(moveToTop); - // No need to check the top one now - N--; + TaskRecord task = null; + int index = mTaskHistory.size(); + for (int i = 0; i < index; ++i) { + task = mTaskHistory.get(i); + if (task.userId == userId) { haveActivities = true; - } else { - i++; + mTaskHistory.remove(i); + mTaskHistory.add(task); + --index; } } - // Transition from the old top to the new top + + // task is now the original topmost TaskRecord. Transition from the old top to the new top. + ActivityRecord top = task != null ? task.getTopActivity() : null; resumeTopActivityLocked(top); return haveActivities; } @@ -709,7 +749,13 @@ final class ActivityStack { try { profileFd = profileFd.dup(); } catch (IOException e) { - profileFd = null; + if (profileFd != null) { + try { + profileFd.close(); + } catch (IOException o) { + } + profileFd = null; + } } } app.thread.scheduleLaunchActivity(new Intent(r.intent), r.appToken, @@ -718,7 +764,7 @@ final class ActivityStack { r.compat, r.icicle, results, newIntents, !andResume, mService.isNextTransitionForward(), profileFile, profileFd, profileAutoStop); - + if ((app.info.flags&ApplicationInfo.FLAG_CANT_SAVE_STATE) != 0) { // This may be a heavy-weight process! Note that the package // manager will ensure that only activity can run in the main @@ -738,7 +784,7 @@ final class ActivityStack { mService.mHandler.sendMessage(msg); } } - + } catch (RemoteException e) { if (r.launchFailed) { // This is the second time we failed -- finish activity @@ -797,7 +843,7 @@ final class ActivityStack { if (mMainStack) { mService.startSetupActivityLocked(); } - + return true; } @@ -815,7 +861,7 @@ final class ActivityStack { } else if (mInitialStartTime == 0) { mInitialStartTime = SystemClock.uptimeMillis(); } - + if (app != null && app.thread != null) { try { app.addPackage(r.info.packageName); @@ -833,7 +879,7 @@ final class ActivityStack { mService.startProcessLocked(r.processName, r.info.applicationInfo, true, 0, "activity", r.intent.getComponent(), false, false); } - + void stopIfSleepingLocked() { if (mService.isSleeping()) { if (!mGoingToSleep.isHeld()) { @@ -857,9 +903,11 @@ final class ActivityStack { mGoingToSleep.release(); } // Ensure activities are no longer sleeping. - for (int i=mHistory.size()-1; i>=0; i--) { - ActivityRecord r = mHistory.get(i); - r.setSleeping(false); + for (int taskNdx = mTaskHistory.size() - 1; taskNdx >= 0; --taskNdx) { + final ArrayList<ActivityRecord> activities = mTaskHistory.get(taskNdx).mActivities; + for (int activityNdx = activities.size() - 1; activityNdx >= 0; --activityNdx) { + activities.get(activityNdx).setSleeping(false); + } } mGoingToSleepActivities.clear(); } @@ -901,10 +949,13 @@ final class ActivityStack { // Make sure any stopped but visible activities are now sleeping. // This ensures that the activity's onStop() is called. - for (int i=mHistory.size()-1; i>=0; i--) { - ActivityRecord r = mHistory.get(i); - if (r.state == ActivityState.STOPPING || r.state == ActivityState.STOPPED) { - r.setSleeping(true); + for (int taskNdx = mTaskHistory.size() - 1; taskNdx >= 0; --taskNdx) { + final ArrayList<ActivityRecord> activities = mTaskHistory.get(taskNdx).mActivities; + for (int activityNdx = activities.size() - 1; activityNdx >= 0; --activityNdx) { + final ActivityRecord r = activities.get(activityNdx); + if (r.state == ActivityState.STOPPING || r.state == ActivityState.STOPPED) { + r.setSleeping(true); + } } } @@ -930,7 +981,7 @@ final class ActivityStack { if (who.noDisplay) { return null; } - + Resources res = mService.mContext.getResources(); int w = mThumbnailWidth; int h = mThumbnailHeight; @@ -979,7 +1030,7 @@ final class ActivityStack { prev.updateThumbnail(screenshotActivities(prev), null); mService.updateCpuStats(); - + if (prev.app != null && prev.app.thread != null) { if (DEBUG_PAUSE) Slog.v(TAG, "Enqueueing pending pause: " + prev); try { @@ -1042,12 +1093,9 @@ final class ActivityStack { } final void activityResumed(IBinder token) { - ActivityRecord r = null; - synchronized (mService) { - int index = indexOfTokenLocked(token); - if (index >= 0) { - r = mHistory.get(index); + final ActivityRecord r = isInStackLocked(token); + if (r != null) { if (DEBUG_SAVED_STATE) Slog.i(TAG, "Resumed activity; dropping state of: " + r); r.icicle = null; r.haveState = false; @@ -1059,12 +1107,9 @@ final class ActivityStack { if (DEBUG_PAUSE) Slog.v( TAG, "Activity paused: token=" + token + ", timeout=" + timeout); - ActivityRecord r = null; - synchronized (mService) { - int index = indexOfTokenLocked(token); - if (index >= 0) { - r = mHistory.get(index); + final ActivityRecord r = isInStackLocked(token); + if (r != null) { mHandler.removeMessages(PAUSE_TIMEOUT_MSG, r); if (mPausingActivity == r) { if (DEBUG_STATES) Slog.v(TAG, "Moving to PAUSED: " + r @@ -1073,7 +1118,7 @@ final class ActivityStack { completePauseLocked(); } else { EventLog.writeEvent(EventLogTags.AM_FAILED_TO_PAUSE, - r.userId, System.identityHashCode(r), r.shortComponentName, + r.userId, System.identityHashCode(r), r.shortComponentName, mPausingActivity != null ? mPausingActivity.shortComponentName : "(none)"); } @@ -1132,7 +1177,7 @@ final class ActivityStack { private final void completePauseLocked() { ActivityRecord prev = mPausingActivity; if (DEBUG_PAUSE) Slog.v(TAG, "Complete pause: " + prev); - + if (prev != null) { if (prev.finishing) { if (DEBUG_PAUSE) Slog.v(TAG, "Executing finish of activity: " + prev); @@ -1186,7 +1231,7 @@ final class ActivityStack { resumeTopActivityLocked(null); } } - + if (prev != null) { prev.resumeKeyDispatchingLocked(); } @@ -1274,106 +1319,95 @@ final class ActivityStack { // If the top activity is not fullscreen, then we need to // make sure any activities under it are now visible. - final int count = mHistory.size(); - int i = count-1; - while (mHistory.get(i) != top) { - i--; - } - ActivityRecord r; + boolean aboveTop = true; boolean behindFullscreen = false; - for (; i>=0; i--) { - r = mHistory.get(i); - if (DEBUG_VISBILITY) Slog.v( - TAG, "Make visible? " + r + " finishing=" + r.finishing - + " state=" + r.state); - if (r.finishing) { - continue; - } - - final boolean doThisProcess = onlyThisProcess == null - || onlyThisProcess.equals(r.processName); - - // First: if this is not the current activity being started, make - // sure it matches the current configuration. - if (r != starting && doThisProcess) { - ensureActivityConfigurationLocked(r, 0); - } - - if (r.app == null || r.app.thread == null) { - if (onlyThisProcess == null - || onlyThisProcess.equals(r.processName)) { - // This activity needs to be visible, but isn't even - // running... get it started, but don't resume it - // at this point. + for (int taskNdx = mTaskHistory.size() - 1; taskNdx >= 0; --taskNdx) { + final ArrayList<ActivityRecord> activities = mTaskHistory.get(taskNdx).mActivities; + for (int activityNdx = activities.size() - 1; activityNdx >= 0; --activityNdx) { + final ActivityRecord r = activities.get(activityNdx); + if (r.finishing) { + continue; + } + if (aboveTop && r != top) { + continue; + } + aboveTop = false; + if (!behindFullscreen) { if (DEBUG_VISBILITY) Slog.v( - TAG, "Start and freeze screen for " + r); - if (r != starting) { - r.startFreezingScreenLocked(r.app, configChanges); - } - if (!r.visible) { - if (DEBUG_VISBILITY) Slog.v( - TAG, "Starting and making visible: " + r); - mService.mWindowManager.setAppVisibility(r.appToken, true); - } - if (r != starting) { - startSpecificActivityLocked(r, false, false); + TAG, "Make visible? " + r + " finishing=" + r.finishing + + " state=" + r.state); + + final boolean doThisProcess = onlyThisProcess == null + || onlyThisProcess.equals(r.processName); + + // First: if this is not the current activity being started, make + // sure it matches the current configuration. + if (r != starting && doThisProcess) { + ensureActivityConfigurationLocked(r, 0); } - } - } else if (r.visible) { - // If this activity is already visible, then there is nothing - // else to do here. - if (DEBUG_VISBILITY) Slog.v( - TAG, "Skipping: already visible at " + r); - r.stopFreezingScreenLocked(false); - - } else if (onlyThisProcess == null) { - // This activity is not currently visible, but is running. - // Tell it to become visible. - r.visible = true; - if (r.state != ActivityState.RESUMED && r != starting) { - // If this activity is paused, tell it - // to now show its window. - if (DEBUG_VISBILITY) Slog.v( - TAG, "Making visible and scheduling visibility: " + r); - try { - mService.mWindowManager.setAppVisibility(r.appToken, true); - r.sleeping = false; - r.app.pendingUiClean = true; - r.app.thread.scheduleWindowVisibility(r.appToken, true); + if (r.app == null || r.app.thread == null) { + if (onlyThisProcess == null + || onlyThisProcess.equals(r.processName)) { + // This activity needs to be visible, but isn't even + // running... get it started, but don't resume it + // at this point. + if (DEBUG_VISBILITY) Slog.v( + TAG, "Start and freeze screen for " + r); + if (r != starting) { + r.startFreezingScreenLocked(r.app, configChanges); + } + if (!r.visible) { + if (DEBUG_VISBILITY) Slog.v( + TAG, "Starting and making visible: " + r); + mService.mWindowManager.setAppVisibility(r.appToken, true); + } + if (r != starting) { + startSpecificActivityLocked(r, false, false); + } + } + + } else if (r.visible) { + // If this activity is already visible, then there is nothing + // else to do here. + if (DEBUG_VISBILITY) Slog.v( + TAG, "Skipping: already visible at " + r); r.stopFreezingScreenLocked(false); - } catch (Exception e) { - // Just skip on any failure; we'll make it - // visible when it next restarts. - Slog.w(TAG, "Exception thrown making visibile: " - + r.intent.getComponent(), e); + + } else if (onlyThisProcess == null) { + // This activity is not currently visible, but is running. + // Tell it to become visible. + r.visible = true; + if (r.state != ActivityState.RESUMED && r != starting) { + // If this activity is paused, tell it + // to now show its window. + if (DEBUG_VISBILITY) Slog.v( + TAG, "Making visible and scheduling visibility: " + r); + try { + mService.mWindowManager.setAppVisibility(r.appToken, true); + r.sleeping = false; + r.app.pendingUiClean = true; + r.app.thread.scheduleWindowVisibility(r.appToken, true); + r.stopFreezingScreenLocked(false); + } catch (Exception e) { + // Just skip on any failure; we'll make it + // visible when it next restarts. + Slog.w(TAG, "Exception thrown making visibile: " + + r.intent.getComponent(), e); + } + } } - } - } - // Aggregate current change flags. - configChanges |= r.configChangeFlags; + // Aggregate current change flags. + configChanges |= r.configChangeFlags; - if (r.fullscreen) { - // At this point, nothing else needs to be shown - if (DEBUG_VISBILITY) Slog.v( - TAG, "Stopping: fullscreen at " + r); - behindFullscreen = true; - i--; - break; - } - } - - // Now for any activities that aren't visible to the user, make - // sure they no longer are keeping the screen frozen. - while (i >= 0) { - r = mHistory.get(i); - if (DEBUG_VISBILITY) Slog.v( - TAG, "Make invisible? " + r + " finishing=" + r.finishing - + " state=" + r.state - + " behindFullscreen=" + behindFullscreen); - if (!r.finishing) { - if (behindFullscreen) { + if (r.fullscreen) { + // At this point, nothing else needs to be shown + if (DEBUG_VISBILITY) Slog.v( + TAG, "Stopping: fullscreen at " + r); + behindFullscreen = true; + } + } else { if (r.visible) { if (DEBUG_VISBILITY) Slog.v( TAG, "Making invisible: " + r); @@ -1397,13 +1431,8 @@ final class ActivityStack { if (DEBUG_VISBILITY) Slog.v( TAG, "Already invisible: " + r); } - } else if (r.fullscreen) { - if (DEBUG_VISBILITY) Slog.v( - TAG, "Now behindFullscreen: " + r); - behindFullscreen = true; } } - i--; } } @@ -1417,7 +1446,7 @@ final class ActivityStack { ensureActivitiesVisibleLocked(r, starting, null, configChanges); } } - + /** * Ensure that the top activity in the stack is resumed. * @@ -1450,7 +1479,7 @@ final class ActivityStack { } next.delayedResume = false; - + // If the top activity is the resumed one, nothing to do. if (mResumedActivity == next && next.state == ActivityState.RESUMED) { // Make sure we have executed any pending transitions, since there @@ -1532,7 +1561,7 @@ final class ActivityStack { mLastStartedActivity = next; } } - + // We need to start pausing the current activity so the top one // can be resumed... if (mResumedActivity != null) { @@ -1641,7 +1670,7 @@ final class ActivityStack { mService.mWindowManager.setAppWillBeHidden(prev.appToken); mService.mWindowManager.setAppVisibility(prev.appToken, false); } - } else if (mHistory.size() > 1) { + } else if (numActivities() > 1) { if (DEBUG_TRANSITION) Slog.v(TAG, "Prepare open transition: no previous"); if (mNoAnimActivities.contains(next)) { @@ -1672,7 +1701,7 @@ final class ActivityStack { ActivityState lastState = next.state; mService.updateCpuStats(); - + if (DEBUG_STATES) Slog.v(TAG, "Moving to RESUMED: " + next + " (in existing)"); next.state = ActivityState.RESUMED; mResumedActivity = next; @@ -1719,10 +1748,10 @@ final class ActivityStack { mNoAnimActivities.clear(); return true; } - + try { // Deliver all pending results. - ArrayList a = next.results; + ArrayList<ResultInfo> a = next.results; if (a != null) { final int N = a.size(); if (!next.finishing && N > 0) { @@ -1740,13 +1769,13 @@ final class ActivityStack { EventLog.writeEvent(EventLogTags.AM_RESUME_ACTIVITY, next.userId, System.identityHashCode(next), next.task.taskId, next.shortComponentName); - + next.sleeping = false; showAskCompatModeDialogLocked(next); next.app.pendingUiClean = true; next.app.thread.scheduleResumeActivity(next.appToken, mService.isNextTransitionForward()); - + checkReadyForSleepLocked(); } catch (Exception e) { @@ -1810,36 +1839,37 @@ final class ActivityStack { return true; } + private final void startActivityLocked(ActivityRecord r, boolean newTask, boolean doResume, boolean keepCurTransition, Bundle options) { - final int NH = mHistory.size(); - - int addPos = -1; - + TaskRecord task = null; + final int taskId = r.task.taskId; + if (mTaskIdToTaskRecord.indexOfKey(taskId) < 0 || newTask) { + // Last activity in task had been removed or ActivityManagerService is reusing task. + // Insert or replace. + mTaskIdToTaskRecord.put(taskId, r.task); + // Might not even be in. + mTaskHistory.remove(r.task); + // Now put task at top. + mTaskHistory.add(r.task); + mService.mWindowManager.moveTaskToTop(r.task.taskId); + } if (!newTask) { // If starting in an existing task, find where that is... boolean startIt = true; - for (int i = NH-1; i >= 0; i--) { - ActivityRecord p = mHistory.get(i); - if (p.finishing) { - continue; - } - if (p.task == r.task) { + for (int taskNdx = mTaskHistory.size() - 1; taskNdx >= 0; --taskNdx) { + task = mTaskHistory.get(taskNdx); + if (task == r.task) { // Here it is! Now, if this is not yet visible to the // user, then just add it without starting; it will // get started when the user navigates back to it. - addPos = i+1; if (!startIt) { - if (DEBUG_ADD_REMOVE) { - RuntimeException here = new RuntimeException("here"); - here.fillInStackTrace(); - Slog.i(TAG, "Adding activity " + r + " to stack at " + addPos, - here); - } - mHistory.add(addPos, r); + if (DEBUG_ADD_REMOVE) Slog.i(TAG, "Adding activity " + r + " to task " + + task, new RuntimeException("here").fillInStackTrace()); + task.addActivityToTop(r); r.putInHistory(); - mService.mWindowManager.addAppToken(addPos, r.appToken, r.task.taskId, - r.info.screenOrientation, r.fullscreen, + mService.mWindowManager.addAppToken(task.mActivities.indexOf(r), + r.appToken, r.task.taskId, r.info.screenOrientation, r.fullscreen, (r.info.flags & ActivityInfo.FLAG_SHOW_ON_LOCK_SCREEN) != 0); if (VALIDATE_TOKENS) { validateAppTokensLocked(); @@ -1848,8 +1878,7 @@ final class ActivityStack { return; } break; - } - if (p.fullscreen) { + } else if (task.numFullscreen > 0) { startIt = false; } } @@ -1857,28 +1886,26 @@ final class ActivityStack { // Place a new activity at top of stack, so it is next to interact // with the user. - if (addPos < 0) { - addPos = NH; - } - + // If we are not placing the new activity frontmost, we do not want // to deliver the onUserLeaving callback to the actual frontmost // activity - if (addPos < NH) { + if (task == r.task && mTaskHistory.indexOf(task) != (mTaskHistory.size() - 1)) { mUserLeaving = false; - if (DEBUG_USER_LEAVING) Slog.v(TAG, "startActivity() behind front, mUserLeaving=false"); + if (DEBUG_USER_LEAVING) Slog.v(TAG, + "startActivity() behind front, mUserLeaving=false"); } - + + task = r.task; + // Slot the activity into the history stack and proceed - if (DEBUG_ADD_REMOVE) { - RuntimeException here = new RuntimeException("here"); - here.fillInStackTrace(); - Slog.i(TAG, "Adding activity " + r + " to stack at " + addPos, here); - } - mHistory.add(addPos, r); + if (DEBUG_ADD_REMOVE) Slog.i(TAG, "Adding activity " + r + " to stack to task " + task, + new RuntimeException("here").fillInStackTrace()); + task.addActivityToTop(r); + r.putInHistory(); r.frontOfTask = newTask; - if (NH > 0) { + if (numActivities() > 1) { // We want to show the starting preview window if we are // switching to a new task, or the next activity's process is // not currently running. @@ -1903,8 +1930,8 @@ final class ActivityStack { mNoAnimActivities.remove(r); } r.updateOptionsLocked(options); - mService.mWindowManager.addAppToken( - addPos, r.appToken, r.task.taskId, r.info.screenOrientation, r.fullscreen, + mService.mWindowManager.addAppToken(task.mActivities.indexOf(r), + r.appToken, r.task.taskId, r.info.screenOrientation, r.fullscreen, (r.info.flags & ActivityInfo.FLAG_SHOW_ON_LOCK_SCREEN) != 0); boolean doShow = true; if (newTask) { @@ -1942,8 +1969,8 @@ final class ActivityStack { } else { // If this is the first activity, don't do any fancy animations, // because there is nothing for it to animate on top of. - mService.mWindowManager.addAppToken(addPos, r.appToken, r.task.taskId, - r.info.screenOrientation, r.fullscreen, + mService.mWindowManager.addAppToken(task.mActivities.indexOf(r), r.appToken, + r.task.taskId, r.info.screenOrientation, r.fullscreen, (r.info.flags & ActivityInfo.FLAG_SHOW_ON_LOCK_SCREEN) != 0); ActivityOptions.abort(options); } @@ -1958,9 +1985,22 @@ final class ActivityStack { final void validateAppTokensLocked() { mValidateAppTokens.clear(); - mValidateAppTokens.ensureCapacity(mHistory.size()); - for (int i=0; i<mHistory.size(); i++) { - mValidateAppTokens.add(mHistory.get(i).appToken); + mValidateAppTokens.ensureCapacity(numActivities()); + final int numTasks = mTaskHistory.size(); + for (int taskNdx = 0; taskNdx < numTasks; ++taskNdx) { + TaskRecord task = mTaskHistory.get(taskNdx); + final ArrayList<ActivityRecord> activities = task.mActivities; + if (activities.size() == 0) { + continue; + } + TaskGroup group = new TaskGroup(); + group.taskId = task.taskId; + mValidateAppTokens.add(group); + final int numActivities = activities.size(); + for (int activityNdx = 0; activityNdx < numActivities; ++activityNdx) { + final ActivityRecord r = activities.get(activityNdx); + group.tokens.add(r.appToken); + } } mService.mWindowManager.validateAppTokens(mValidateAppTokens); } @@ -1969,216 +2009,196 @@ final class ActivityStack { * Perform a reset of the given task, if needed as part of launching it. * Returns the new HistoryRecord at the top of the task. */ - private final ActivityRecord resetTaskIfNeededLocked(ActivityRecord taskTop, - ActivityRecord newActivity) { - boolean forceReset = (newActivity.info.flags - &ActivityInfo.FLAG_CLEAR_TASK_ON_LAUNCH) != 0; - if (ACTIVITY_INACTIVE_RESET_TIME > 0 - && taskTop.task.getInactiveDuration() > ACTIVITY_INACTIVE_RESET_TIME) { - if ((newActivity.info.flags - &ActivityInfo.FLAG_ALWAYS_RETAIN_TASK_STATE) == 0) { - forceReset = true; - } - } - - final TaskRecord task = taskTop.task; - - // We are going to move through the history list so that we can look - // at each activity 'target' with 'below' either the interesting - // activity immediately below it in the stack or null. - ActivityRecord target = null; - int targetI = 0; - int taskTopI = -1; - int replyChainEnd = -1; - int lastReparentPos = -1; + /** + * Helper method for #resetTaskIfNeededLocked. + * We are inside of the task being reset... we'll either finish this activity, push it out + * for another task, or leave it as-is. + * @param task The task containing the Activity (taskTop) that might be reset. + * @param forceReset + * @return An ActivityOptions that needs to be processed. + */ + private final ActivityOptions resetTargetTaskIfNeededLocked(TaskRecord task, + boolean forceReset) { ActivityOptions topOptions = null; + + int replyChainEnd = -1; boolean canMoveOptions = true; - for (int i=mHistory.size()-1; i>=-1; i--) { - ActivityRecord below = i >= 0 ? mHistory.get(i) : null; - - if (below != null && below.finishing) { - continue; - } - // Don't check any lower in the stack if we're crossing a user boundary. - if (below != null && below.userId != taskTop.userId) { - break; - } - if (target == null) { - target = below; - targetI = i; - // If we were in the middle of a reply chain before this - // task, it doesn't appear like the root of the chain wants - // anything interesting, so drop it. - replyChainEnd = -1; - continue; - } - + + // We only do this for activities that are not the root of the task (since if we finish + // the root, we may no longer have the task!). + final ArrayList<ActivityRecord> activities = task.mActivities; + final int numActivities = activities.size(); + for (int i = numActivities - 1; i > 0; --i ) { + ActivityRecord target = activities.get(i); + final int flags = target.info.flags; - final boolean finishOnTaskLaunch = - (flags&ActivityInfo.FLAG_FINISH_ON_TASK_LAUNCH) != 0; + (flags & ActivityInfo.FLAG_FINISH_ON_TASK_LAUNCH) != 0; final boolean allowTaskReparenting = - (flags&ActivityInfo.FLAG_ALLOW_TASK_REPARENTING) != 0; - - if (target.task == task) { - // We are inside of the task being reset... we'll either - // finish this activity, push it out for another task, - // or leave it as-is. We only do this - // for activities that are not the root of the task (since - // if we finish the root, we may no longer have the task!). - if (taskTopI < 0) { - taskTopI = targetI; + (flags & ActivityInfo.FLAG_ALLOW_TASK_REPARENTING) != 0; + final boolean clearWhenTaskReset = + (target.intent.getFlags() & Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET) != 0; + + if (!finishOnTaskLaunch + && !clearWhenTaskReset + && target.resultTo != null) { + // If this activity is sending a reply to a previous + // activity, we can't do anything with it now until + // we reach the start of the reply chain. + // XXX note that we are assuming the result is always + // to the previous activity, which is almost always + // the case but we really shouldn't count on. + if (replyChainEnd < 0) { + replyChainEnd = i; } - if (below != null && below.task == task) { - final boolean clearWhenTaskReset = - (target.intent.getFlags() - &Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET) != 0; - if (!finishOnTaskLaunch && !clearWhenTaskReset && target.resultTo != null) { - // If this activity is sending a reply to a previous - // activity, we can't do anything with it now until - // we reach the start of the reply chain. - // XXX note that we are assuming the result is always - // to the previous activity, which is almost always - // the case but we really shouldn't count on. - if (replyChainEnd < 0) { - replyChainEnd = targetI; - } - } else if (!finishOnTaskLaunch && !clearWhenTaskReset && allowTaskReparenting - && target.taskAffinity != null - && !target.taskAffinity.equals(task.affinity)) { - // If this activity has an affinity for another - // task, then we need to move it out of here. We will - // move it as far out of the way as possible, to the - // bottom of the activity stack. This also keeps it - // correctly ordered with any activities we previously - // moved. - ActivityRecord p = mHistory.get(0); - if (target.taskAffinity != null - && target.taskAffinity.equals(p.task.affinity)) { - // If the activity currently at the bottom has the - // same task affinity as the one we are moving, - // then merge it into the same task. - target.setTask(p.task, p.thumbHolder, false); - if (DEBUG_TASKS) Slog.v(TAG, "Start pushing activity " + target - + " out to bottom task " + p.task); - } else { - mService.mCurTask++; - if (mService.mCurTask <= 0) { - mService.mCurTask = 1; - } - target.setTask(new TaskRecord(mService.mCurTask, target.info, null), - null, false); - target.task.affinityIntent = target.intent; - if (DEBUG_TASKS) Slog.v(TAG, "Start pushing activity " + target - + " out to new task " + target.task); - } - mService.mWindowManager.setAppGroupId(target.appToken, task.taskId); - if (replyChainEnd < 0) { - replyChainEnd = targetI; - } - int dstPos = 0; - ThumbnailHolder curThumbHolder = target.thumbHolder; - boolean gotOptions = !canMoveOptions; - for (int srcPos=targetI; srcPos<=replyChainEnd; srcPos++) { - p = mHistory.get(srcPos); - if (p.finishing) { - continue; - } - if (DEBUG_TASKS) Slog.v(TAG, "Pushing next activity " + p - + " out to target's task " + target.task); - p.setTask(target.task, curThumbHolder, false); - curThumbHolder = p.thumbHolder; - canMoveOptions = false; - if (!gotOptions && topOptions == null) { - topOptions = p.takeOptionsLocked(); - if (topOptions != null) { - gotOptions = true; - } - } - if (DEBUG_ADD_REMOVE) { - RuntimeException here = new RuntimeException("here"); - here.fillInStackTrace(); - Slog.i(TAG, "Removing and adding activity " + p + " to stack at " - + dstPos, here); - } - mHistory.remove(srcPos); - mHistory.add(dstPos, p); - mService.mWindowManager.moveAppToken(dstPos, p.appToken); - mService.mWindowManager.setAppGroupId(p.appToken, p.task.taskId); - dstPos++; - if (VALIDATE_TOKENS) { - validateAppTokensLocked(); - } - i++; - } - if (taskTop == p) { - taskTop = below; - } - if (taskTopI == replyChainEnd) { - taskTopI = -1; - } - replyChainEnd = -1; - } else if (forceReset || finishOnTaskLaunch - || clearWhenTaskReset) { - // If the activity should just be removed -- either - // because it asks for it, or the task should be - // cleared -- then finish it and anything that is - // part of its reply chain. - if (clearWhenTaskReset) { - // In this case, we want to finish this activity - // and everything above it, so be sneaky and pretend - // like these are all in the reply chain. - replyChainEnd = targetI+1; - while (replyChainEnd < mHistory.size() && - (mHistory.get( - replyChainEnd)).task == task) { - replyChainEnd++; - } - replyChainEnd--; - } else if (replyChainEnd < 0) { - replyChainEnd = targetI; - } - ActivityRecord p = null; - boolean gotOptions = !canMoveOptions; - for (int srcPos=targetI; srcPos<=replyChainEnd; srcPos++) { - p = mHistory.get(srcPos); - if (p.finishing) { - continue; - } - canMoveOptions = false; - if (!gotOptions && topOptions == null) { - topOptions = p.takeOptionsLocked(); - if (topOptions != null) { - gotOptions = true; - } - } - if (finishActivityLocked(p, srcPos, - Activity.RESULT_CANCELED, null, "reset", false)) { - replyChainEnd--; - srcPos--; - } - } - if (taskTop == p) { - taskTop = below; + } else if (!finishOnTaskLaunch + && !clearWhenTaskReset + && allowTaskReparenting + && target.taskAffinity != null + && !target.taskAffinity.equals(task.affinity)) { + // If this activity has an affinity for another + // task, then we need to move it out of here. We will + // move it as far out of the way as possible, to the + // bottom of the activity stack. This also keeps it + // correctly ordered with any activities we previously + // moved. + TaskRecord bottomTask = mTaskHistory.get(0); + ActivityRecord p = bottomTask.mActivities.get(0); + if (target.taskAffinity != null + && target.taskAffinity.equals(p.task.affinity)) { + // If the activity currently at the bottom has the + // same task affinity as the one we are moving, + // then merge it into the same task. + setTask(target, p.task, p.thumbHolder, false); + if (DEBUG_TASKS) Slog.v(TAG, "Start pushing activity " + target + + " out to bottom task " + p.task); + } else { + do { + mService.mCurTask++; + if (mService.mCurTask <= 0) { + mService.mCurTask = 1; } - if (taskTopI == replyChainEnd) { - taskTopI = -1; + } while (mTaskIdToTaskRecord.get(mService.mCurTask) != null); + setTask(target, createTaskRecord(mService.mCurTask, target.info, null, false), + null, false); + target.task.affinityIntent = target.intent; + if (DEBUG_TASKS) Slog.v(TAG, "Start pushing activity " + target + + " out to new task " + target.task); + } + + final TaskRecord targetTask = target.task; + final int targetTaskId = targetTask.taskId; + mService.mWindowManager.setAppGroupId(target.appToken, targetTaskId); + + ThumbnailHolder curThumbHolder = target.thumbHolder; + boolean gotOptions = !canMoveOptions; + + final int start = replyChainEnd < 0 ? i : replyChainEnd; + for (int srcPos = start; srcPos >= i; --srcPos) { + p = activities.get(srcPos); + if (p.finishing) { + continue; + } + + curThumbHolder = p.thumbHolder; + canMoveOptions = false; + if (!gotOptions && topOptions == null) { + topOptions = p.takeOptionsLocked(); + if (topOptions != null) { + gotOptions = true; } - replyChainEnd = -1; - } else { - // If we were in the middle of a chain, well the - // activity that started it all doesn't want anything - // special, so leave it all as-is. - replyChainEnd = -1; } + if (DEBUG_ADD_REMOVE) Slog.i(TAG, "Removing activity " + p + " from task=" + + task + " adding to task=" + targetTask, + new RuntimeException("here").fillInStackTrace()); + if (DEBUG_TASKS) Slog.v(TAG, "Pushing next activity " + p + + " out to target's task " + target.task); + setTask(p, targetTask, curThumbHolder, false); + targetTask.addActivityAtBottom(p); + + mService.mWindowManager.setAppGroupId(p.appToken, targetTaskId); + } + + mService.mWindowManager.moveTaskToBottom(targetTaskId); + if (VALIDATE_TOKENS) { + validateAppTokensLocked(); + } + + replyChainEnd = -1; + } else if (forceReset || finishOnTaskLaunch || clearWhenTaskReset) { + // If the activity should just be removed -- either + // because it asks for it, or the task should be + // cleared -- then finish it and anything that is + // part of its reply chain. + int end; + if (clearWhenTaskReset) { + // In this case, we want to finish this activity + // and everything above it, so be sneaky and pretend + // like these are all in the reply chain. + end = numActivities - 1; + } else if (replyChainEnd < 0) { + end = i; } else { - // Reached the bottom of the task -- any reply chain - // should be left as-is. - replyChainEnd = -1; + end = replyChainEnd; } + ActivityRecord p = null; + boolean gotOptions = !canMoveOptions; + for (int srcPos = i; srcPos <= end; srcPos++) { + p = activities.get(srcPos); + if (p.finishing) { + continue; + } + canMoveOptions = false; + if (!gotOptions && topOptions == null) { + topOptions = p.takeOptionsLocked(); + if (topOptions != null) { + gotOptions = true; + } + } + if (DEBUG_TASKS) Slog.w(TAG, + "resetTaskIntendedTask: calling finishActivity on " + p); + if (finishActivityLocked(p, Activity.RESULT_CANCELED, null, "reset", false)) { + end--; + srcPos--; + } + } + replyChainEnd = -1; + } else { + // If we were in the middle of a chain, well the + // activity that started it all doesn't want anything + // special, so leave it all as-is. + replyChainEnd = -1; + } + } + + return topOptions; + } + + /** + * Helper method for #resetTaskIfNeededLocked. Processes all of the activities in a given + * TaskRecord looking for an affinity with the task of resetTaskIfNeededLocked.taskTop. + * @param affinityTask The task we are looking for an affinity to. + * @param task Task that resetTaskIfNeededLocked.taskTop belongs to. + * @param topTaskIsHigher True if #task has already been processed by resetTaskIfNeededLocked. + * @param forceReset Flag passed in to resetTaskIfNeededLocked. + */ + private final int resetAffinityTaskIfNeededLocked(TaskRecord affinityTask, TaskRecord task, + boolean topTaskIsHigher, boolean forceReset, int taskInsertionPoint) { + int replyChainEnd = -1; + final int taskId = task.taskId; + final String taskAffinity = task.affinity; + + final ArrayList<ActivityRecord> activities = affinityTask.mActivities; + final int numActivities = activities.size(); + // Do not operate on the root Activity. + for (int i = numActivities - 1; i > 0; --i) { + ActivityRecord target = activities.get(i); - } else if (target.resultTo != null && (below == null - || below.task == target.task)) { + final int flags = target.info.flags; + boolean finishOnTaskLaunch = (flags & ActivityInfo.FLAG_FINISH_ON_TASK_LAUNCH) != 0; + boolean allowTaskReparenting = (flags & ActivityInfo.FLAG_ALLOW_TASK_REPARENTING) != 0; + + if (target.resultTo != null) { // If this activity is sending a reply to a previous // activity, we can't do anything with it now until // we reach the start of the reply chain. @@ -2186,14 +2206,13 @@ final class ActivityStack { // to the previous activity, which is almost always // the case but we really shouldn't count on. if (replyChainEnd < 0) { - replyChainEnd = targetI; + replyChainEnd = i; } - - } else if (taskTopI >= 0 && allowTaskReparenting - && task.affinity != null - && task.affinity.equals(target.taskAffinity)) { - // We are inside of another task... if this activity has - // an affinity for our task, then either remove it if we are + } else if (topTaskIsHigher + && allowTaskReparenting + && taskAffinity != null + && taskAffinity.equals(target.taskAffinity)) { + // This activity has an affinity for our task. Either remove it if we are // clearing or move it over to our task. Note that // we currently punt on the case where we are resetting a // task that is not at the top but who has activities above @@ -2204,93 +2223,104 @@ final class ActivityStack { // someone starts an activity in a new task from an activity // in a task that is not currently on top.) if (forceReset || finishOnTaskLaunch) { - if (replyChainEnd < 0) { - replyChainEnd = targetI; - } - ActivityRecord p = null; - if (DEBUG_TASKS) Slog.v(TAG, "Finishing task at index " - + targetI + " to " + replyChainEnd); - for (int srcPos=targetI; srcPos<=replyChainEnd; srcPos++) { - p = mHistory.get(srcPos); + final int start = replyChainEnd >= 0 ? replyChainEnd : i; + if (DEBUG_TASKS) Slog.v(TAG, "Finishing task at index " + start + " to " + i); + for (int srcPos = start; srcPos >= i; --srcPos) { + final ActivityRecord p = activities.get(srcPos); if (p.finishing) { continue; } - if (finishActivityLocked(p, srcPos, - Activity.RESULT_CANCELED, null, "reset", false)) { - taskTopI--; - lastReparentPos--; - replyChainEnd--; - srcPos--; - } + finishActivityLocked(p, Activity.RESULT_CANCELED, null, "reset", false); } - replyChainEnd = -1; } else { - if (replyChainEnd < 0) { - replyChainEnd = targetI; + if (taskInsertionPoint < 0) { + taskInsertionPoint = task.mActivities.size(); + } - if (DEBUG_TASKS) Slog.v(TAG, "Reparenting task at index " - + targetI + " to " + replyChainEnd); - for (int srcPos=replyChainEnd; srcPos>=targetI; srcPos--) { - ActivityRecord p = mHistory.get(srcPos); - if (p.finishing) { - continue; - } - if (lastReparentPos < 0) { - lastReparentPos = taskTopI; - taskTop = p; - } else { - lastReparentPos--; - } - if (DEBUG_ADD_REMOVE) { - RuntimeException here = new RuntimeException("here"); - here.fillInStackTrace(); - Slog.i(TAG, "Removing and adding activity " + p + " to stack at " - + lastReparentPos, here); - } - mHistory.remove(srcPos); - p.setTask(task, null, false); - mHistory.add(lastReparentPos, p); - if (DEBUG_TASKS) Slog.v(TAG, "Pulling activity " + p - + " from " + srcPos + " to " + lastReparentPos + + final int start = replyChainEnd >= 0 ? replyChainEnd : i; + if (DEBUG_TASKS) Slog.v(TAG, "Reparenting from task=" + affinityTask + ":" + + start + "-" + i + " to task=" + task + ":" + taskInsertionPoint); + for (int srcPos = start; srcPos >= i; --srcPos) { + final ActivityRecord p = activities.get(srcPos); + setTask(p, task, null, false); + task.addActivityAtIndex(taskInsertionPoint, p); + + if (DEBUG_ADD_REMOVE) Slog.i(TAG, "Removing and adding activity " + p + + " to stack at " + task, + new RuntimeException("here").fillInStackTrace()); + if (DEBUG_TASKS) Slog.v(TAG, "Pulling activity " + p + " from " + srcPos + " in to resetting task " + task); - mService.mWindowManager.moveAppToken(lastReparentPos, p.appToken); - mService.mWindowManager.setAppGroupId(p.appToken, p.task.taskId); - if (VALIDATE_TOKENS) { - validateAppTokensLocked(); - } + mService.mWindowManager.setAppGroupId(p.appToken, taskId); + } + mService.mWindowManager.moveTaskToTop(taskId); + if (VALIDATE_TOKENS) { + validateAppTokensLocked(); } - replyChainEnd = -1; - + // Now we've moved it in to place... but what if this is // a singleTop activity and we have put it on top of another // instance of the same activity? Then we drop the instance // below so it remains singleTop. if (target.info.launchMode == ActivityInfo.LAUNCH_SINGLE_TOP) { - for (int j=lastReparentPos-1; j>=0; j--) { - ActivityRecord p = mHistory.get(j); - if (p.finishing) { - continue; - } + ArrayList<ActivityRecord> taskActivities = task.mActivities; + boolean found = false; + int targetNdx = taskActivities.indexOf(target); + if (targetNdx > 0) { + ActivityRecord p = taskActivities.get(targetNdx - 1); if (p.intent.getComponent().equals(target.intent.getComponent())) { - if (finishActivityLocked(p, j, - Activity.RESULT_CANCELED, null, "replace", false)) { - taskTopI--; - lastReparentPos--; - } + finishActivityLocked(p, Activity.RESULT_CANCELED, null, "replace", + false); } } } } - } else if (below != null && below.task != target.task) { - // We hit the botton of a task; the reply chain can't - // pass through it. replyChainEnd = -1; } - - target = below; - targetI = i; } + return taskInsertionPoint; + } + + private final ActivityRecord resetTaskIfNeededLocked(ActivityRecord taskTop, + ActivityRecord newActivity) { + boolean forceReset = + (newActivity.info.flags & ActivityInfo.FLAG_CLEAR_TASK_ON_LAUNCH) != 0; + if (ACTIVITY_INACTIVE_RESET_TIME > 0 + && taskTop.task.getInactiveDuration() > ACTIVITY_INACTIVE_RESET_TIME) { + if ((newActivity.info.flags & ActivityInfo.FLAG_ALWAYS_RETAIN_TASK_STATE) == 0) { + forceReset = true; + } + } + + final TaskRecord task = taskTop.task; + + /** False until we evaluate the TaskRecord associated with taskTop. Switches to true + * for remaining tasks. Used for later tasks to reparent to task. */ + boolean taskFound = false; + + /** If ActivityOptions are moved out and need to be aborted or moved to taskTop. */ + ActivityOptions topOptions = null; + + // Preserve the location for reparenting in the new task. + int reparentInsertionPoint = -1; + + for (int i = mTaskHistory.size() - 1; i >= 0; --i) { + final TaskRecord targetTask = mTaskHistory.get(i); + + if (targetTask == task) { + topOptions = resetTargetTaskIfNeededLocked(task, forceReset); + taskFound = true; + } else { + reparentInsertionPoint = resetAffinityTaskIfNeededLocked(targetTask, task, + taskFound, forceReset, reparentInsertionPoint); + } + } + + int taskNdx = mTaskHistory.indexOf(task); + do { + taskTop = mTaskHistory.get(taskNdx--).getTopActivity(); + } while (taskTop == null && taskNdx >= 0); if (topOptions != null) { // If we got some ActivityOptions from an activity on top that @@ -2304,7 +2334,7 @@ final class ActivityStack { return taskTop; } - + /** * Perform clear operation as requested by * {@link Intent#FLAG_ACTIVITY_CLEAR_TOP}: search from the top of the @@ -2316,39 +2346,22 @@ final class ActivityStack { * @return Returns the old activity that should be continued to be used, * or null if none was found. */ - private final ActivityRecord performClearTaskLocked(int taskId, + private final ActivityRecord performClearTaskLocked(TaskRecord task, ActivityRecord newR, int launchFlags) { - int i = mHistory.size(); - - // First find the requested task. - while (i > 0) { - i--; - ActivityRecord r = mHistory.get(i); - if (r.task.taskId == taskId) { - i++; - break; - } - } - - // Now clear it. - while (i > 0) { - i--; - ActivityRecord r = mHistory.get(i); + + final ArrayList<ActivityRecord> activities = task.mActivities; + int numActivities = activities.size(); + for (int activityNdx = numActivities - 1; activityNdx >= 0; --activityNdx) { + ActivityRecord r = activities.get(activityNdx); if (r.finishing) { continue; } - if (r.task.taskId != taskId) { - return null; - } if (r.realActivity.equals(newR.realActivity)) { // Here it is! Now finish everything in front... ActivityRecord ret = r; - while (i < (mHistory.size()-1)) { - i++; - r = mHistory.get(i); - if (r.task.taskId != taskId) { - break; - } + + for (++activityNdx; activityNdx < numActivities; ++activityNdx) { + r = activities.get(activityNdx); if (r.finishing) { continue; } @@ -2356,27 +2369,26 @@ final class ActivityStack { if (opts != null) { ret.updateOptionsLocked(opts); } - if (finishActivityLocked(r, i, Activity.RESULT_CANCELED, - null, "clear", false)) { - i--; + if (finishActivityLocked(r, Activity.RESULT_CANCELED, null, "clear", false)) { + --activityNdx; + --numActivities; } } - + // Finally, if this is a normal launch mode (that is, not // expecting onNewIntent()), then we will finish the current // instance of the activity so a new fresh one can be started. if (ret.launchMode == ActivityInfo.LAUNCH_MULTIPLE - && (launchFlags&Intent.FLAG_ACTIVITY_SINGLE_TOP) == 0) { + && (launchFlags & Intent.FLAG_ACTIVITY_SINGLE_TOP) == 0) { if (!ret.finishing) { - int index = indexOfTokenLocked(ret.appToken); - if (index >= 0) { - finishActivityLocked(ret, index, Activity.RESULT_CANCELED, - null, "clear", false); + if (activities.contains(ret)) { + finishActivityLocked(ret, Activity.RESULT_CANCELED, null, + "clear", false); } return null; } } - + return ret; } } @@ -2388,20 +2400,17 @@ final class ActivityStack { * Completely remove all activities associated with an existing * task starting at a specified index. */ - private final void performClearTaskAtIndexLocked(int taskId, int i) { - while (i < mHistory.size()) { - ActivityRecord r = mHistory.get(i); - if (r.task.taskId != taskId) { - // Whoops hit the end. - return; - } + private final void performClearTaskAtIndexLocked(TaskRecord task, int activityNdx) { + final ArrayList<ActivityRecord> activities = task.mActivities; + int numActivities = activities.size(); + for ( ; activityNdx < numActivities; ++activityNdx) { + final ActivityRecord r = activities.get(activityNdx); if (r.finishing) { - i++; continue; } - if (!finishActivityLocked(r, i, Activity.RESULT_CANCELED, - null, "clear", false)) { - i++; + if (finishActivityLocked(r, Activity.RESULT_CANCELED, null, "clear", false)) { + --activityNdx; + --numActivities; } } } @@ -2409,75 +2418,42 @@ final class ActivityStack { /** * Completely remove all activities associated with an existing task. */ - private final void performClearTaskLocked(int taskId) { - int i = mHistory.size(); - - // First find the requested task. - while (i > 0) { - i--; - ActivityRecord r = mHistory.get(i); - if (r.task.taskId == taskId) { - i++; - break; - } - } - - // Now find the start and clear it. - while (i > 0) { - i--; - ActivityRecord r = mHistory.get(i); - if (r.finishing) { - continue; - } - if (r.task.taskId != taskId) { - // We hit the bottom. Now finish it all... - performClearTaskAtIndexLocked(taskId, i+1); - return; - } - } + private final void performClearTaskLocked(TaskRecord task) { + performClearTaskAtIndexLocked(task, 0); } /** * Find the activity in the history stack within the given task. Returns * the index within the history at which it's found, or < 0 if not found. */ - private final int findActivityInHistoryLocked(ActivityRecord r, int task) { - int i = mHistory.size(); - while (i > 0) { - i--; - ActivityRecord candidate = mHistory.get(i); + private final ActivityRecord findActivityInHistoryLocked(ActivityRecord r, TaskRecord task) { + final ComponentName realActivity = r.realActivity; + ArrayList<ActivityRecord> activities = task.mActivities; + for (int activityNdx = activities.size() - 1; activityNdx >= 0; --activityNdx) { + ActivityRecord candidate = activities.get(activityNdx); if (candidate.finishing) { continue; } - if (candidate.task.taskId != task) { - break; - } - if (candidate.realActivity.equals(r.realActivity)) { - return i; + if (candidate.realActivity.equals(realActivity)) { + return candidate; } } - - return -1; + return null; } /** * Reorder the history stack so that the activity at the given index is * brought to the front. */ - private final ActivityRecord moveActivityToFrontLocked(int where) { - ActivityRecord newTop = mHistory.remove(where); - int top = mHistory.size(); - ActivityRecord oldTop = mHistory.get(top-1); - if (DEBUG_ADD_REMOVE) { - RuntimeException here = new RuntimeException("here"); - here.fillInStackTrace(); - Slog.i(TAG, "Removing and adding activity " + newTop + " to stack at " - + top, here); - } - mHistory.add(top, newTop); - oldTop.frontOfTask = false; + private final void moveActivityToFrontLocked(ActivityRecord newTop) { + if (DEBUG_ADD_REMOVE) Slog.i(TAG, "Removing and adding activity " + newTop + + " to stack at top", new RuntimeException("here").fillInStackTrace()); + + final TaskRecord task = newTop.task; + task.getTopActivity().frontOfTask = false; + task.mActivities.remove(newTop); + task.mActivities.add(newTop); newTop.frontOfTask = true; - return newTop; } final int startActivityLocked(IApplicationThread caller, @@ -2485,7 +2461,6 @@ final class ActivityStack { String resultWho, int requestCode, int callingPid, int callingUid, String callingPackage, int startFlags, Bundle options, boolean componentSpecified, ActivityRecord[] outActivity) { - int err = ActivityManager.START_SUCCESS; ProcessRecord callerApp = null; @@ -2511,11 +2486,10 @@ final class ActivityStack { ActivityRecord sourceRecord = null; ActivityRecord resultRecord = null; if (resultTo != null) { - int index = indexOfTokenLocked(resultTo); + sourceRecord = isInStackLocked(resultTo); if (DEBUG_RESULTS) Slog.v( - TAG, "Will send result to " + resultTo + " (index " + index + ")"); - if (index >= 0) { - sourceRecord = mHistory.get(index); + TAG, "Will send result to " + resultTo + " " + sourceRecord); + if (sourceRecord != null) { if (requestCode >= 0 && !sourceRecord.finishing) { resultRecord = sourceRecord; } @@ -2821,7 +2795,7 @@ final class ActivityStack { // existing task with its new activity. Well that should // not be too hard... reuseTask = taskTop.task; - performClearTaskLocked(taskTop.task.taskId); + performClearTaskLocked(taskTop.task); reuseTask.setIntent(r.intent, r.info); } else if ((launchFlags&Intent.FLAG_ACTIVITY_CLEAR_TOP) != 0 || r.launchMode == ActivityInfo.LAUNCH_SINGLE_TASK @@ -2830,8 +2804,7 @@ final class ActivityStack { // from the task up to the one being started. In most // cases this means we are resetting the task to its // initial state. - ActivityRecord top = performClearTaskLocked( - taskTop.task.taskId, r, launchFlags); + ActivityRecord top = performClearTaskLocked(taskTop.task, r, launchFlags); if (top != null) { if (top.frontOfTask) { // Activity aliases may mean we use different @@ -2967,11 +2940,11 @@ final class ActivityStack { if (mService.mCurTask <= 0) { mService.mCurTask = 1; } - r.setTask(new TaskRecord(mService.mCurTask, r.info, intent), null, true); + setTask(r, createTaskRecord(mService.mCurTask, r.info, intent, true), null, true); if (DEBUG_TASKS) Slog.v(TAG, "Starting new activity " + r + " in new task " + r.task); } else { - r.setTask(reuseTask, reuseTask, true); + setTask(r, reuseTask, reuseTask, true); } newTask = true; if (!movedHome) { @@ -2984,8 +2957,7 @@ final class ActivityStack { // In this case, we are adding the activity to an existing // task, but the caller has asked to clear that task if the // activity is already running. - ActivityRecord top = performClearTaskLocked( - sourceRecord.task.taskId, r, launchFlags); + ActivityRecord top = performClearTaskLocked(sourceRecord.task, r, launchFlags); keepCurTransition = true; if (top != null) { logStartActivity(EventLogTags.AM_NEW_INTENT, r, top.task); @@ -3003,9 +2975,9 @@ final class ActivityStack { // In this case, we are launching an activity in our own task // that may already be running somewhere in the history, and // we want to shuffle it to the front of the stack if so. - int where = findActivityInHistoryLocked(r, sourceRecord.task.taskId); - if (where >= 0) { - ActivityRecord top = moveActivityToFrontLocked(where); + final ActivityRecord top = findActivityInHistoryLocked(r, sourceRecord.task); + if (top != null) { + moveActivityToFrontLocked(top); logStartActivity(EventLogTags.AM_NEW_INTENT, r, top.task); top.updateOptionsLocked(options); top.deliverNewIntentLocked(callingUid, r.intent); @@ -3018,7 +2990,7 @@ final class ActivityStack { // An existing activity is starting this new activity, so we want // to keep the new one in the same task as the one that is starting // it. - r.setTask(sourceRecord.task, sourceRecord.thumbHolder, false); + setTask(r, sourceRecord.task, sourceRecord.thumbHolder, false); if (DEBUG_TASKS) Slog.v(TAG, "Starting new activity " + r + " in existing task " + r.task); @@ -3026,12 +2998,19 @@ final class ActivityStack { // This not being started from an existing activity, and not part // of a new task... just put it in the top task, though these days // this case should never happen. - final int N = mHistory.size(); - ActivityRecord prev = - N > 0 ? mHistory.get(N-1) : null; - r.setTask(prev != null + ActivityRecord prev = null; + // Iterate to find the first non-empty task stack. Note that this code can + // go away once we stop storing tasks with empty mActivities lists. + for (int taskNdx = mTaskHistory.size() - 1; taskNdx >= 0; --taskNdx) { + ArrayList<ActivityRecord> activities = mTaskHistory.get(taskNdx).mActivities; + for (int activityNdx = activities.size() - 1; activityNdx >= 0; --activityNdx) { + prev = activities.get(activityNdx); + break; + } + } + setTask(r, prev != null ? prev.task - : new TaskRecord(mService.mCurTask, r.info, intent), null, true); + : createTaskRecord(mService.mCurTask, r.info, intent, true), null, true); if (DEBUG_TASKS) Slog.v(TAG, "Starting new activity " + r + " in new guessed " + r.task); } @@ -3523,8 +3502,7 @@ final class ActivityStack { } // Get the activity record. - int index = indexOfActivityLocked(r); - if (index >= 0) { + if (isInStackLocked(token) != null) { res = r; if (fromTimeout) { @@ -3579,9 +3557,9 @@ final class ActivityStack { finishes = new ArrayList<ActivityRecord>(mFinishingActivities); mFinishingActivities.clear(); } - if ((NT=mService.mCancelledThumbnails.size()) > 0) { - thumbnails = new ArrayList<ActivityRecord>(mService.mCancelledThumbnails); - mService.mCancelledThumbnails.clear(); + if ((NT=mCancelledThumbnails.size()) > 0) { + thumbnails = new ArrayList<ActivityRecord>(mCancelledThumbnails); + mCancelledThumbnails.clear(); } if (mMainStack) { @@ -3609,7 +3587,7 @@ final class ActivityStack { // Stop any activities that are scheduled to do so but have been // waiting for the next one to start. for (i=0; i<NS; i++) { - ActivityRecord r = (ActivityRecord)stops.get(i); + ActivityRecord r = stops.get(i); synchronized (mService) { if (r.finishing) { finishCurrentActivityLocked(r, FINISH_IMMEDIATELY, false); @@ -3622,7 +3600,7 @@ final class ActivityStack { // Finish any activities that are scheduled to do so but have been // waiting for the next one to start. for (i=0; i<NF; i++) { - ActivityRecord r = (ActivityRecord)finishes.get(i); + ActivityRecord r = finishes.get(i); synchronized (mService) { activityRemoved = destroyActivityLocked(r, true, false, "finish-idle"); } @@ -3630,7 +3608,7 @@ final class ActivityStack { // Report back to any thumbnail receivers. for (i=0; i<NT; i++) { - ActivityRecord r = (ActivityRecord)thumbnails.get(i); + ActivityRecord r = thumbnails.get(i); mService.sendPendingThumbnail(r, null, null, null, true); } @@ -3663,17 +3641,16 @@ final class ActivityStack { */ final boolean requestFinishActivityLocked(IBinder token, int resultCode, Intent resultData, String reason, boolean oomAdj) { - int index = indexOfTokenLocked(token); + ActivityRecord r = isInStackLocked(token); if (DEBUG_RESULTS || DEBUG_STATES) Slog.v( - TAG, "Finishing activity @" + index + ": token=" + token + TAG, "Finishing activity token=" + token + " r=" + ", result=" + resultCode + ", data=" + resultData + ", reason=" + reason); - if (index < 0) { + if (r == null) { return false; } - ActivityRecord r = mHistory.get(index); - finishActivityLocked(r, index, resultCode, resultData, reason, oomAdj); + finishActivityLocked(r, resultCode, resultData, reason, oomAdj); return true; } @@ -3683,43 +3660,78 @@ final class ActivityStack { return; } - int i; - for (i=mHistory.size()-1; i>=0; i--) { - ActivityRecord r = (ActivityRecord)mHistory.get(i); - if (r.resultTo == self && r.requestCode == requestCode) { - if ((r.resultWho == null && resultWho == null) || - (r.resultWho != null && r.resultWho.equals(resultWho))) { - finishActivityLocked(r, i, - Activity.RESULT_CANCELED, null, "request-sub", false); + for (int taskNdx = mTaskHistory.size() - 1; taskNdx >= 0; --taskNdx) { + ArrayList<ActivityRecord> activities = mTaskHistory.get(taskNdx).mActivities; + for (int activityNdx = activities.size() - 1; activityNdx >= 0; --activityNdx) { + ActivityRecord r = activities.get(activityNdx); + if (r.resultTo == self && r.requestCode == requestCode) { + if ((r.resultWho == null && resultWho == null) || + (r.resultWho != null && r.resultWho.equals(resultWho))) { + finishActivityLocked(r, Activity.RESULT_CANCELED, null, "request-sub", + false); + } } } } mService.updateOomAdjLocked(); } + final void finishTopRunningActivityLocked(ProcessRecord app) { + ActivityRecord r = topRunningActivityLocked(null); + if (r != null && r.app == app) { + // If the top running activity is from this crashing + // process, then terminate it to avoid getting in a loop. + Slog.w(TAG, " Force finishing activity " + + r.intent.getComponent().flattenToShortString()); + int taskNdx = mTaskHistory.indexOf(r.task); + int activityNdx = r.task.mActivities.indexOf(r); + r.stack.finishActivityLocked(r, Activity.RESULT_CANCELED, + null, "crashed", false); + // Also terminate any activities below it that aren't yet + // stopped, to avoid a situation where one will get + // re-start our crashing activity once it gets resumed again. + --activityNdx; + if (activityNdx < 0) { + do { + --taskNdx; + if (taskNdx < 0) { + break; + } + activityNdx = mTaskHistory.get(taskNdx).mActivities.size() - 1; + } while (activityNdx < 0); + } + if (activityNdx >= 0) { + r = mTaskHistory.get(taskNdx).mActivities.get(activityNdx); + if (r.state == ActivityState.RESUMED + || r.state == ActivityState.PAUSING + || r.state == ActivityState.PAUSED) { + if (!r.isHomeActivity || mService.mHomeProcess != r.app) { + Slog.w(TAG, " Force finishing activity " + + r.intent.getComponent().flattenToShortString()); + r.stack.finishActivityLocked(r, Activity.RESULT_CANCELED, + null, "crashed", false); + } + } + } + } + } + final boolean finishActivityAffinityLocked(IBinder token) { - int index = indexOfTokenLocked(token); + ActivityRecord r = isInStackLocked(token); if (DEBUG_RESULTS) Slog.v( - TAG, "Finishing activity affinity @" + index + ": token=" + token); - if (index < 0) { + TAG, "Finishing activity affinity token=" + token + " r=" + r); + if (r == null) { return false; } - ActivityRecord r = mHistory.get(index); - while (index >= 0) { - ActivityRecord cur = mHistory.get(index); - if (cur.task != r.task) { - break; - } - if (cur.taskAffinity == null && r.taskAffinity != null) { - break; - } - if (cur.taskAffinity != null && !cur.taskAffinity.equals(r.taskAffinity)) { + ArrayList<ActivityRecord> activities = r.task.mActivities; + for (int index = activities.indexOf(r); index >= 0; --index) { + ActivityRecord cur = activities.get(index); + if (!Objects.equal(cur.taskAffinity, r.taskAffinity)) { break; } - finishActivityLocked(cur, index, Activity.RESULT_CANCELED, null, - "request-affinity", true); - index--; + finishActivityLocked(cur, Activity.RESULT_CANCELED, null, "request-affinity", + true); } return true; } @@ -3755,17 +3767,17 @@ final class ActivityStack { * @return Returns true if this activity has been removed from the history * list, or false if it is still in the list and will be removed later. */ - final boolean finishActivityLocked(ActivityRecord r, int index, - int resultCode, Intent resultData, String reason, boolean oomAdj) { - return finishActivityLocked(r, index, resultCode, resultData, reason, false, oomAdj); + final boolean finishActivityLocked(ActivityRecord r, int resultCode, + Intent resultData, String reason, boolean oomAdj) { + return finishActivityLocked(r, resultCode, resultData, reason, false, oomAdj); } /** * @return Returns true if this activity has been removed from the history * list, or false if it is still in the list and will be removed later. */ - final boolean finishActivityLocked(ActivityRecord r, int index, int resultCode, - Intent resultData, String reason, boolean immediate, boolean oomAdj) { + final boolean finishActivityLocked(ActivityRecord r, int resultCode, Intent resultData, + String reason, boolean immediate, boolean oomAdj) { if (r.finishing) { Slog.w(TAG, "Duplicate finish request for " + r); return false; @@ -3775,19 +3787,19 @@ final class ActivityStack { EventLog.writeEvent(EventLogTags.AM_FINISH_ACTIVITY, r.userId, System.identityHashCode(r), r.task.taskId, r.shortComponentName, reason); - if (index < (mHistory.size()-1)) { - ActivityRecord next = mHistory.get(index+1); - if (next.task == r.task) { - if (r.frontOfTask) { - // The next activity is now the front of the task. - next.frontOfTask = true; - } - if ((r.intent.getFlags()&Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET) != 0) { - // If the caller asked that this activity (and all above it) - // be cleared when the task is reset, don't lose that information, - // but propagate it up to the next activity. - next.intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET); - } + final ArrayList<ActivityRecord> activities = r.task.mActivities; + final int index = activities.indexOf(r); + if (index < (activities.size() - 1)) { + ActivityRecord next = activities.get(index+1); + if (r.frontOfTask) { + // The next activity is now the front of the task. + next.frontOfTask = true; + } + if ((r.intent.getFlags()&Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET) != 0) { + // If the caller asked that this activity (and all above it) + // be cleared when the task is reset, don't lose that information, + // but propagate it up to the next activity. + next.intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET); } } @@ -3804,21 +3816,19 @@ final class ActivityStack { // There are clients waiting to receive thumbnails so, in case // this is an activity that someone is waiting for, add it // to the pending list so we can correctly update the clients. - mService.mCancelledThumbnails.add(r); + mCancelledThumbnails.add(r); } if (immediate) { - return finishCurrentActivityLocked(r, index, - FINISH_IMMEDIATELY, oomAdj) == null; + return finishCurrentActivityLocked(r, FINISH_IMMEDIATELY, oomAdj) == null; } else if (mResumedActivity == r) { - boolean endTask = index <= 0 - || (mHistory.get(index-1)).task != r.task; + boolean endTask = index <= 0; if (DEBUG_TRANSITION) Slog.v(TAG, "Prepare close transition: finishing " + r); mService.mWindowManager.prepareAppTransition(endTask ? AppTransition.TRANSIT_TASK_CLOSE : AppTransition.TRANSIT_ACTIVITY_CLOSE, false); - + // Tell window manager to prepare for this one to be removed. mService.mWindowManager.setAppVisibility(r.appToken, false); @@ -3832,8 +3842,7 @@ final class ActivityStack { // If the activity is PAUSING, we will complete the finish once // it is done pausing; else we can just directly finish it here. if (DEBUG_PAUSE) Slog.v(TAG, "Finish not pausing: " + r); - return finishCurrentActivityLocked(r, index, - FINISH_AFTER_PAUSE, oomAdj) == null; + return finishCurrentActivityLocked(r, FINISH_AFTER_PAUSE, oomAdj) == null; } else { if (DEBUG_PAUSE) Slog.v(TAG, "Finish waiting for pause of: " + r); } @@ -3845,18 +3854,9 @@ final class ActivityStack { private static final int FINISH_AFTER_PAUSE = 1; private static final int FINISH_AFTER_VISIBLE = 2; - private final ActivityRecord finishCurrentActivityLocked(ActivityRecord r, - int mode, boolean oomAdj) { - final int index = indexOfActivityLocked(r); - if (index < 0) { - return null; - } - - return finishCurrentActivityLocked(r, index, mode, oomAdj); - } private final ActivityRecord finishCurrentActivityLocked(ActivityRecord r, - int index, int mode, boolean oomAdj) { + int mode, boolean oomAdj) { // First things first: if this activity is currently visible, // and the resumed activity is not yet visible, then hold off on // finishing until the resumed one becomes visible. @@ -3903,16 +3903,94 @@ final class ActivityStack { resumeTopActivityLocked(null); } return activityRemoved ? null : r; - } else { - // Need to go through the full pause cycle to get this - // activity into the stopped state and then finish it. - if (localLOGV) Slog.v(TAG, "Enqueueing pending finish: " + r); - mFinishingActivities.add(r); - resumeTopActivityLocked(null); } + + // Need to go through the full pause cycle to get this + // activity into the stopped state and then finish it. + if (localLOGV) Slog.v(TAG, "Enqueueing pending finish: " + r); + mFinishingActivities.add(r); + resumeTopActivityLocked(null); return r; } + final boolean navigateUpToLocked(ActivityRecord srec, Intent destIntent, int resultCode, + Intent resultData) { + final TaskRecord task = srec.task; + final ArrayList<ActivityRecord> activities = task.mActivities; + final int start = activities.indexOf(srec); + if (!mTaskHistory.contains(task) || (start < 0)) { + return false; + } + int finishTo = start - 1; + ActivityRecord parent = finishTo < 0 ? null : activities.get(finishTo); + boolean foundParentInTask = false; + final ComponentName dest = destIntent.getComponent(); + if (start > 0 && dest != null) { + for (int i = finishTo; i >= 0; i--) { + ActivityRecord r = activities.get(i); + if (r.info.packageName.equals(dest.getPackageName()) && + r.info.name.equals(dest.getClassName())) { + finishTo = i; + parent = r; + foundParentInTask = true; + break; + } + } + } + + IActivityController controller = mService.mController; + if (controller != null) { + ActivityRecord next = topRunningActivityLocked(srec.appToken, 0); + if (next != null) { + // ask watcher if this is allowed + boolean resumeOK = true; + try { + resumeOK = controller.activityResuming(next.packageName); + } catch (RemoteException e) { + mService.mController = null; + } + + if (!resumeOK) { + return false; + } + } + } + final long origId = Binder.clearCallingIdentity(); + for (int i = start; i > finishTo; i--) { + ActivityRecord r = activities.get(i); + requestFinishActivityLocked(r.appToken, resultCode, resultData, "navigate-up", true); + // Only return the supplied result for the first activity finished + resultCode = Activity.RESULT_CANCELED; + resultData = null; + } + + if (parent != null && foundParentInTask) { + final int parentLaunchMode = parent.info.launchMode; + final int destIntentFlags = destIntent.getFlags(); + if (parentLaunchMode == ActivityInfo.LAUNCH_SINGLE_INSTANCE || + parentLaunchMode == ActivityInfo.LAUNCH_SINGLE_TASK || + parentLaunchMode == ActivityInfo.LAUNCH_SINGLE_TOP || + (destIntentFlags & Intent.FLAG_ACTIVITY_CLEAR_TOP) != 0) { + parent.deliverNewIntentLocked(srec.info.applicationInfo.uid, destIntent); + } else { + try { + ActivityInfo aInfo = AppGlobals.getPackageManager().getActivityInfo( + destIntent.getComponent(), 0, srec.userId); + int res = startActivityLocked(srec.app.thread, destIntent, + null, aInfo, parent.appToken, null, + 0, -1, parent.launchedFromUid, parent.launchedFromPackage, + 0, null, true, null); + foundParentInTask = res == ActivityManager.START_SUCCESS; + } catch (RemoteException e) { + foundParentInTask = false; + } + requestFinishActivityLocked(parent.appToken, resultCode, + resultData, "navigate-up", true); + } + } + Binder.restoreCallingIdentity(origId); + return foundParentInTask; + } /** * Perform the common clean-up of an activity record. This is called both * as part of destroyActivityLocked() (when destroying the client-side @@ -3964,7 +4042,7 @@ final class ActivityStack { // There are clients waiting to receive thumbnails so, in case // this is an activity that someone is waiting for, add it // to the pending list so we can correctly update the clients. - mService.mCancelledThumbnails.add(r); + mCancelledThumbnails.add(r); } // Get rid of any pending idle timeouts. @@ -3987,11 +4065,12 @@ final class ActivityStack { here.fillInStackTrace(); Slog.i(TAG, "Removing activity " + r + " from stack"); } - mHistory.remove(r); + if (r.task != null) { + removeActivity(r); + } r.takeFromHistory(); removeTimeoutsForActivityLocked(r); - if (DEBUG_STATES) Slog.v(TAG, "Moving to DESTROYED: " + r - + " (removed from history)"); + if (DEBUG_STATES) Slog.v(TAG, "Moving to DESTROYED: " + r + " (removed from history)"); r.state = ActivityState.DESTROYED; if (DEBUG_APP) Slog.v(TAG, "Clearing app during remove for activity " + r); r.app = null; @@ -4027,31 +4106,34 @@ final class ActivityStack { final void destroyActivitiesLocked(ProcessRecord owner, boolean oomAdj, String reason) { boolean lastIsOpaque = false; boolean activityRemoved = false; - for (int i=mHistory.size()-1; i>=0; i--) { - ActivityRecord r = mHistory.get(i); - if (r.finishing) { - continue; - } - if (r.fullscreen) { - lastIsOpaque = true; - } - if (owner != null && r.app != owner) { - continue; - } - if (!lastIsOpaque) { - continue; - } - // We can destroy this one if we have its icicle saved and - // it is not in the process of pausing/stopping/finishing. - if (r.app != null && r != mResumedActivity && r != mPausingActivity - && r.haveState && !r.visible && r.stopped - && r.state != ActivityState.DESTROYING - && r.state != ActivityState.DESTROYED) { - if (DEBUG_SWITCH) Slog.v(TAG, "Destroying " + r + " in state " + r.state - + " resumed=" + mResumedActivity - + " pausing=" + mPausingActivity); - if (destroyActivityLocked(r, true, oomAdj, reason)) { - activityRemoved = true; + for (int taskNdx = mTaskHistory.size() - 1; taskNdx >= 0; --taskNdx) { + final ArrayList<ActivityRecord> activities = mTaskHistory.get(taskNdx).mActivities; + for (int activityNdx = activities.size() - 1; activityNdx >= 0; --activityNdx) { + final ActivityRecord r = activities.get(activityNdx); + if (r.finishing) { + continue; + } + if (r.fullscreen) { + lastIsOpaque = true; + } + if (owner != null && r.app != owner) { + continue; + } + if (!lastIsOpaque) { + continue; + } + // We can destroy this one if we have its icicle saved and + // it is not in the process of pausing/stopping/finishing. + if (r.app != null && r != mResumedActivity && r != mPausingActivity + && r.haveState && !r.visible && r.stopped + && r.state != ActivityState.DESTROYING + && r.state != ActivityState.DESTROYED) { + if (DEBUG_SWITCH) Slog.v(TAG, "Destroying " + r + " in state " + r.state + + " resumed=" + mResumedActivity + + " pausing=" + mPausingActivity); + if (destroyActivityLocked(r, true, oomAdj, reason)) { + activityRemoved = true; + } } } } @@ -4171,8 +4253,7 @@ final class ActivityStack { mHandler.removeMessages(DESTROY_TIMEOUT_MSG, r); } - int index = indexOfActivityLocked(r); - if (index >= 0) { + if (isInStackLocked(token) != null) { if (r.state == ActivityState.DESTROYING) { cleanUpActivityLocked(r, true, false); removeActivityFromHistoryLocked(r); @@ -4185,15 +4266,15 @@ final class ActivityStack { } } - private void removeHistoryRecordsForAppLocked(ArrayList list, ProcessRecord app, - String listName) { + private void removeHistoryRecordsForAppLocked(ArrayList<ActivityRecord> list, + ProcessRecord app, String listName) { int i = list.size(); if (DEBUG_CLEANUP) Slog.v( TAG, "Removing app " + app + " from list " + listName + " with " + i + " entries"); while (i > 0) { i--; - ActivityRecord r = (ActivityRecord)list.get(i); + ActivityRecord r = list.get(i); if (DEBUG_CLEANUP) Slog.v(TAG, "Record #" + i + " " + r); if (r.app == app) { if (DEBUG_CLEANUP) Slog.v(TAG, "---> REMOVING this entry!"); @@ -4214,90 +4295,93 @@ final class ActivityStack { boolean hasVisibleActivities = false; // Clean out the history list. - int i = mHistory.size(); + int i = numActivities(); if (DEBUG_CLEANUP) Slog.v( TAG, "Removing app " + app + " from history with " + i + " entries"); - while (i > 0) { - i--; - ActivityRecord r = (ActivityRecord)mHistory.get(i); - if (DEBUG_CLEANUP) Slog.v( - TAG, "Record #" + i + " " + r + ": app=" + r.app); - if (r.app == app) { - boolean remove; - if ((!r.haveState && !r.stateNotNeeded) || r.finishing) { - // Don't currently have state for the activity, or - // it is finishing -- always remove it. - remove = true; - } else if (r.launchCount > 2 && - r.lastLaunchTime > (SystemClock.uptimeMillis()-60000)) { - // We have launched this activity too many times since it was - // able to run, so give up and remove it. - remove = true; - } else { - // The process may be gone, but the activity lives on! - remove = false; - } - if (remove) { - if (ActivityStack.DEBUG_ADD_REMOVE || DEBUG_CLEANUP) { - RuntimeException here = new RuntimeException("here"); - here.fillInStackTrace(); - Slog.i(TAG, "Removing activity " + r + " from stack at " + i - + ": haveState=" + r.haveState - + " stateNotNeeded=" + r.stateNotNeeded - + " finishing=" + r.finishing - + " state=" + r.state, here); - } - if (!r.finishing) { - Slog.w(TAG, "Force removing " + r + ": app died, no saved state"); - EventLog.writeEvent(EventLogTags.AM_FINISH_ACTIVITY, - r.userId, System.identityHashCode(r), - r.task.taskId, r.shortComponentName, - "proc died without state saved"); + for (int taskNdx = mTaskHistory.size() - 1; taskNdx >= 0; --taskNdx) { + final ArrayList<ActivityRecord> activities = mTaskHistory.get(taskNdx).mActivities; + for (int activityNdx = activities.size() - 1; activityNdx >= 0; --activityNdx) { + final ActivityRecord r = activities.get(activityNdx); + --i; + if (DEBUG_CLEANUP) Slog.v( + TAG, "Record #" + i + " " + r + ": app=" + r.app); + if (r.app == app) { + boolean remove; + if ((!r.haveState && !r.stateNotNeeded) || r.finishing) { + // Don't currently have state for the activity, or + // it is finishing -- always remove it. + remove = true; + } else if (r.launchCount > 2 && + r.lastLaunchTime > (SystemClock.uptimeMillis()-60000)) { + // We have launched this activity too many times since it was + // able to run, so give up and remove it. + remove = true; + } else { + // The process may be gone, but the activity lives on! + remove = false; } - removeActivityFromHistoryLocked(r); + if (remove) { + if (ActivityStack.DEBUG_ADD_REMOVE || DEBUG_CLEANUP) { + RuntimeException here = new RuntimeException("here"); + here.fillInStackTrace(); + Slog.i(TAG, "Removing activity " + r + " from stack at " + i + + ": haveState=" + r.haveState + + " stateNotNeeded=" + r.stateNotNeeded + + " finishing=" + r.finishing + + " state=" + r.state, here); + } + if (!r.finishing) { + Slog.w(TAG, "Force removing " + r + ": app died, no saved state"); + EventLog.writeEvent(EventLogTags.AM_FINISH_ACTIVITY, + r.userId, System.identityHashCode(r), + r.task.taskId, r.shortComponentName, + "proc died without state saved"); + } + removeActivityFromHistoryLocked(r); - } else { - // We have the current state for this activity, so - // it can be restarted later when needed. - if (localLOGV) Slog.v( - TAG, "Keeping entry, setting app to null"); - if (r.visible) { - hasVisibleActivities = true; - } - if (DEBUG_APP) Slog.v(TAG, "Clearing app during removeHistory for activity " - + r); - r.app = null; - r.nowVisible = false; - if (!r.haveState) { - if (ActivityStack.DEBUG_SAVED_STATE) Slog.i(TAG, - "App died, clearing saved state of " + r); - r.icicle = null; + } else { + // We have the current state for this activity, so + // it can be restarted later when needed. + if (localLOGV) Slog.v( + TAG, "Keeping entry, setting app to null"); + if (r.visible) { + hasVisibleActivities = true; + } + if (DEBUG_APP) Slog.v(TAG, "Clearing app during removeHistory for activity " + + r); + r.app = null; + r.nowVisible = false; + if (!r.haveState) { + if (ActivityStack.DEBUG_SAVED_STATE) Slog.i(TAG, + "App died, clearing saved state of " + r); + r.icicle = null; + } } - } - r.stack.cleanUpActivityLocked(r, true, true); + r.stack.cleanUpActivityLocked(r, true, true); + } } } return hasVisibleActivities; } - + /** * Move the current home activity's task (if one exists) to the front * of the stack. */ final void moveHomeToFrontLocked() { - TaskRecord homeTask = null; - for (int i=mHistory.size()-1; i>=0; i--) { - ActivityRecord hr = mHistory.get(i); - if (hr.isHomeActivity) { - homeTask = hr.task; - break; + for (int taskNdx = mTaskHistory.size() - 1; taskNdx >= 0; --taskNdx) { + final TaskRecord task = mTaskHistory.get(taskNdx); + final ArrayList<ActivityRecord> activities = task.mActivities; + for (int activityNdx = activities.size() - 1; activityNdx >= 0; --activityNdx) { + final ActivityRecord r = activities.get(activityNdx); + if (r.isHomeActivity) { + moveTaskToFrontLocked(task, null, null); + return; + } } } - if (homeTask != null) { - moveTaskToFrontLocked(homeTask, null, null); - } } final void updateTransitLocked(int transit, Bundle options) { @@ -4312,13 +4396,29 @@ final class ActivityStack { mService.mWindowManager.prepareAppTransition(transit, false); } + final boolean findTaskToMoveToFrontLocked(int taskId, int flags, Bundle options) { + final TaskRecord task = mTaskIdToTaskRecord.get(taskId); + if (mTaskHistory.contains(task)) { + if ((flags & ActivityManager.MOVE_TASK_NO_USER_ACTION) == 0) { + mUserLeaving = true; + } + if ((flags & ActivityManager.MOVE_TASK_WITH_HOME) != 0) { + // Caller wants the home activity moved with it. To accomplish this, + // we'll just move the home task to the top first. + moveHomeToFrontLocked(); + } + moveTaskToFrontLocked(task, null, options); + return true; + } + return false; + } + final void moveTaskToFrontLocked(TaskRecord tr, ActivityRecord reason, Bundle options) { if (DEBUG_SWITCH) Slog.v(TAG, "moveTaskToFront: " + tr); - final int task = tr.taskId; - int top = mHistory.size()-1; - - if (top < 0 || (mHistory.get(top)).task.taskId == task) { + final int numTasks = mTaskHistory.size(); + final int index = mTaskHistory.indexOf(tr); + if (numTasks == 0 || index < 0 || index == numTasks - 1) { // nothing to do! if (reason != null && (reason.intent.getFlags()&Intent.FLAG_ACTIVITY_NO_ANIMATION) != 0) { @@ -4329,40 +4429,15 @@ final class ActivityStack { return; } - ArrayList<IBinder> moved = new ArrayList<IBinder>(); - - // Applying the affinities may have removed entries from the history, - // so get the size again. - top = mHistory.size()-1; - int pos = top; - // Shift all activities with this task up to the top // of the stack, keeping them in the same internal order. - while (pos >= 0) { - ActivityRecord r = mHistory.get(pos); - if (localLOGV) Slog.v( - TAG, "At " + pos + " ckp " + r.task + ": " + r); - if (r.task.taskId == task) { - if (localLOGV) Slog.v(TAG, "Removing and adding at " + top); - if (DEBUG_ADD_REMOVE) { - RuntimeException here = new RuntimeException("here"); - here.fillInStackTrace(); - Slog.i(TAG, "Removing and adding activity " + r + " to stack at " + top, here); - } - mHistory.remove(pos); - mHistory.add(top, r); - moved.add(0, r.appToken); - top--; - } - pos--; - } + mTaskHistory.remove(tr); + mTaskHistory.add(tr); - if (DEBUG_TRANSITION) Slog.v(TAG, - "Prepare to front transition: task=" + tr); + if (DEBUG_TRANSITION) Slog.v(TAG, "Prepare to front transition: task=" + tr); if (reason != null && (reason.intent.getFlags()&Intent.FLAG_ACTIVITY_NO_ANIMATION) != 0) { - mService.mWindowManager.prepareAppTransition( - AppTransition.TRANSIT_NONE, false); + mService.mWindowManager.prepareAppTransition(AppTransition.TRANSIT_NONE, false); ActivityRecord r = topRunningActivityLocked(null); if (r != null) { mNoAnimActivities.add(r); @@ -4371,18 +4446,15 @@ final class ActivityStack { } else { updateTransitLocked(AppTransition.TRANSIT_TASK_TO_FRONT, options); } - - mService.mWindowManager.moveAppTokensToTop(moved); - if (VALIDATE_TOKENS) { - validateAppTokensLocked(); - } - finishTaskMoveLocked(task); - EventLog.writeEvent(EventLogTags.AM_TASK_TO_FRONT, tr.userId, task); - } + mService.mWindowManager.moveTaskToTop(tr.taskId); - private final void finishTaskMoveLocked(int task) { resumeTopActivityLocked(null); + EventLog.writeEvent(EventLogTags.AM_TASK_TO_FRONT, tr.userId, tr.taskId); + + if (VALIDATE_TOKENS) { + validateAppTokensLocked(); + } } /** @@ -4398,7 +4470,7 @@ final class ActivityStack { */ final boolean moveTaskToBackLocked(int task, ActivityRecord reason) { Slog.i(TAG, "moveTaskToBack: " + task); - + // If we have a watcher, preflight the move before committing to it. First check // for *other* available tasks, but if none are available, then try again allowing the // current task to be selected. @@ -4421,41 +4493,16 @@ final class ActivityStack { } } - ArrayList<IBinder> moved = new ArrayList<IBinder>(); - if (DEBUG_TRANSITION) Slog.v(TAG, "Prepare to back transition: task=" + task); - - final int N = mHistory.size(); - int bottom = 0; - int pos = 0; - // Shift all activities with this task down to the bottom - // of the stack, keeping them in the same internal order. - while (pos < N) { - ActivityRecord r = mHistory.get(pos); - if (localLOGV) Slog.v( - TAG, "At " + pos + " ckp " + r.task + ": " + r); - if (r.task.taskId == task) { - if (localLOGV) Slog.v(TAG, "Removing and adding at " + (N-1)); - if (DEBUG_ADD_REMOVE) { - RuntimeException here = new RuntimeException("here"); - here.fillInStackTrace(); - Slog.i(TAG, "Removing and adding activity " + r + " to stack at " - + bottom, here); - } - mHistory.remove(pos); - mHistory.add(bottom, r); - moved.add(r.appToken); - bottom++; - } - pos++; - } + final TaskRecord tr = mTaskIdToTaskRecord.get(task); + mTaskHistory.remove(tr); + mTaskHistory.add(0, tr); if (reason != null && (reason.intent.getFlags()&Intent.FLAG_ACTIVITY_NO_ANIMATION) != 0) { - mService.mWindowManager.prepareAppTransition( - AppTransition.TRANSIT_NONE, false); + mService.mWindowManager.prepareAppTransition(AppTransition.TRANSIT_NONE, false); ActivityRecord r = topRunningActivityLocked(null); if (r != null) { mNoAnimActivities.add(r); @@ -4464,17 +4511,18 @@ final class ActivityStack { mService.mWindowManager.prepareAppTransition( AppTransition.TRANSIT_TASK_TO_BACK, false); } - mService.mWindowManager.moveAppTokensToBottom(moved); + mService.mWindowManager.moveTaskToBottom(task); + if (VALIDATE_TOKENS) { validateAppTokensLocked(); } - finishTaskMoveLocked(task); + resumeTopActivityLocked(null); return true; } public ActivityManager.TaskThumbnails getTaskThumbnailsLocked(TaskRecord tr) { - TaskAccessInfo info = getTaskAccessInfoLocked(tr.taskId, true); + TaskAccessInfo info = getTaskAccessInfoLocked(tr, true); ActivityRecord resumed = mResumedActivity; if (resumed != null && resumed.thumbHolder == tr) { info.mainThumbnail = resumed.stack.screenshotActivities(resumed); @@ -4494,17 +4542,17 @@ final class ActivityStack { } // Return the information about the task, to figure out the top // thumbnail to return. - TaskAccessInfo info = getTaskAccessInfoLocked(tr.taskId, true); + TaskAccessInfo info = getTaskAccessInfoLocked(tr, true); if (info.numSubThumbbails <= 0) { return info.mainThumbnail != null ? info.mainThumbnail : tr.lastThumbnail; - } else { - return info.subtasks.get(info.numSubThumbbails-1).holder.lastThumbnail; } + return info.subtasks.get(info.numSubThumbbails-1).holder.lastThumbnail; } public ActivityRecord removeTaskActivitiesLocked(int taskId, int subTaskIndex, boolean taskRequired) { - TaskAccessInfo info = getTaskAccessInfoLocked(taskId, false); + final TaskRecord task = mTaskIdToTaskRecord.get(taskId); + TaskAccessInfo info = getTaskAccessInfoLocked(task, false); if (info.root == null) { if (taskRequired) { Slog.w(TAG, "removeTaskLocked: unknown taskId " + taskId); @@ -4514,7 +4562,7 @@ final class ActivityStack { if (subTaskIndex < 0) { // Just remove the entire task. - performClearTaskAtIndexLocked(taskId, info.rootIndex); + performClearTaskAtIndexLocked(task, info.rootIndex); return info.root; } @@ -4527,19 +4575,20 @@ final class ActivityStack { // Remove all of this task's activities starting at the sub task. TaskAccessInfo.SubTask subtask = info.subtasks.get(subTaskIndex); - performClearTaskAtIndexLocked(taskId, subtask.index); + performClearTaskAtIndexLocked(task, subtask.index); return subtask.activity; } - public TaskAccessInfo getTaskAccessInfoLocked(int taskId, boolean inclThumbs) { + public TaskAccessInfo getTaskAccessInfoLocked(TaskRecord task, boolean inclThumbs) { final TaskAccessInfo thumbs = new TaskAccessInfo(); // How many different sub-thumbnails? - final int NA = mHistory.size(); + final ArrayList<ActivityRecord> activities = task.mActivities; + final int NA = activities.size(); int j = 0; ThumbnailHolder holder = null; while (j < NA) { - ActivityRecord ar = mHistory.get(j); - if (!ar.finishing && ar.task.taskId == taskId) { + ActivityRecord ar = activities.get(j); + if (!ar.finishing) { thumbs.root = ar; thumbs.rootIndex = j; holder = ar.thumbHolder; @@ -4559,14 +4608,11 @@ final class ActivityStack { ArrayList<TaskAccessInfo.SubTask> subtasks = new ArrayList<TaskAccessInfo.SubTask>(); thumbs.subtasks = subtasks; while (j < NA) { - ActivityRecord ar = mHistory.get(j); + ActivityRecord ar = activities.get(j); j++; if (ar.finishing) { continue; } - if (ar.task.taskId != taskId) { - break; - } if (ar.thumbHolder != holder && holder != null) { thumbs.numSubThumbbails++; holder = ar.thumbHolder; @@ -4579,6 +4625,7 @@ final class ActivityStack { } if (thumbs.numSubThumbbails > 0) { thumbs.retriever = new IThumbnailRetriever.Stub() { + @Override public Bitmap getThumbnail(int index) { if (index < 0 || index >= thumbs.subtasks.size()) { return null; @@ -4777,4 +4824,260 @@ final class ActivityStack { public void dismissKeyguardOnNextActivityLocked() { mDismissKeyguardOnNextActivity = true; } + + boolean willActivityBeVisibleLocked(IBinder token) { + for (int taskNdx = mTaskHistory.size() - 1; taskNdx >= 0; --taskNdx) { + final ArrayList<ActivityRecord> activities = mTaskHistory.get(taskNdx).mActivities; + for (int activityNdx = activities.size() - 1; activityNdx >= 0; --activityNdx) { + final ActivityRecord r = activities.get(activityNdx); + if (r.appToken == token) { + return true; + } + if (r.fullscreen && !r.finishing) { + return false; + } + } + } + return true; + } + + void closeSystemDialogsLocked() { + for (int taskNdx = mTaskHistory.size() - 1; taskNdx >= 0; --taskNdx) { + final ArrayList<ActivityRecord> activities = mTaskHistory.get(taskNdx).mActivities; + for (int activityNdx = activities.size() - 1; activityNdx >= 0; --activityNdx) { + final ActivityRecord r = activities.get(activityNdx); + if ((r.info.flags&ActivityInfo.FLAG_FINISH_ON_CLOSE_SYSTEM_DIALOGS) != 0) { + r.stack.finishActivityLocked(r, Activity.RESULT_CANCELED, + null, "close-sys", true); + } + } + } + } + + boolean forceStopPackageLocked(String name, boolean doit, boolean evenPersistent, int userId) { + boolean didSomething = false; + TaskRecord lastTask = null; + for (int taskNdx = mTaskHistory.size() - 1; taskNdx >= 0; --taskNdx) { + final ArrayList<ActivityRecord> activities = mTaskHistory.get(taskNdx).mActivities; + int numActivities = activities.size(); + for (int activityNdx = 0; activityNdx < numActivities; ++activityNdx) { + ActivityRecord r = activities.get(activityNdx); + final boolean samePackage = r.packageName.equals(name) + || (name == null && r.userId == userId); + if ((userId == UserHandle.USER_ALL || r.userId == userId) + && (samePackage || r.task == lastTask) + && (r.app == null || evenPersistent || !r.app.persistent)) { + if (!doit) { + if (r.finishing) { + // If this activity is just finishing, then it is not + // interesting as far as something to stop. + continue; + } + return true; + } + didSomething = true; + Slog.i(TAG, " Force finishing activity " + r); + if (samePackage) { + if (r.app != null) { + r.app.removed = true; + } + r.app = null; + } + lastTask = r.task; + r.stack.finishActivityLocked(r, Activity.RESULT_CANCELED, null, "force-stop", + true); + } + } + } + return didSomething; + } + + ActivityRecord getTasksLocked(int maxNum, IThumbnailReceiver receiver, + PendingThumbnailsRecord pending, List<RunningTaskInfo> list) { + ActivityRecord topRecord = null; + for (int taskNdx = mTaskHistory.size() - 1; maxNum > 0 && taskNdx >= 0; + --maxNum, --taskNdx) { + final TaskRecord task = mTaskHistory.get(taskNdx); + ActivityRecord r = null; + ActivityRecord top = null; + int numActivities = 0; + int numRunning = 0; + final ArrayList<ActivityRecord> activities = task.mActivities; + for (int activityNdx = activities.size() - 1; activityNdx >= 0; --activityNdx) { + r = activities.get(activityNdx); + + // Initialize state for next task if needed. + if (top == null || (top.state == ActivityState.INITIALIZING)) { + top = r; + numActivities = numRunning = 0; + } + + // Add 'r' into the current task. + numActivities++; + if (r.app != null && r.app.thread != null) { + numRunning++; + } + + if (localLOGV) Slog.v( + TAG, r.intent.getComponent().flattenToShortString() + + ": task=" + r.task); + } + + RunningTaskInfo ci = new RunningTaskInfo(); + ci.id = task.taskId; + ci.baseActivity = r.intent.getComponent(); + ci.topActivity = top.intent.getComponent(); + if (top.thumbHolder != null) { + ci.description = top.thumbHolder.lastDescription; + } + ci.numActivities = numActivities; + ci.numRunning = numRunning; + //System.out.println( + // "#" + maxNum + ": " + " descr=" + ci.description); + if (receiver != null) { + if (localLOGV) Slog.v( + TAG, "State=" + top.state + "Idle=" + top.idle + + " app=" + top.app + + " thr=" + (top.app != null ? top.app.thread : null)); + if (top.state == ActivityState.RESUMED || top.state == ActivityState.PAUSING) { + if (top.idle && top.app != null && top.app.thread != null) { + topRecord = top; + } else { + top.thumbnailNeeded = true; + } + } + pending.pendingRecords.add(top); + } + list.add(ci); + } + return topRecord; + } + + public void unhandledBackLocked() { + final int top = mTaskHistory.size() - 1; + if (DEBUG_SWITCH) Slog.d( + TAG, "Performing unhandledBack(): top activity at " + top); + if (top >= 0) { + final ArrayList<ActivityRecord> activities = mTaskHistory.get(top).mActivities; + int activityTop = activities.size() - 1; + if (activityTop > 0) { + finishActivityLocked(activities.get(activityTop), Activity.RESULT_CANCELED, null, + "unhandled-back", true); + } + } + } + + void handleAppCrashLocked(ProcessRecord app) { + for (int taskNdx = mTaskHistory.size() - 1; taskNdx >= 0; --taskNdx) { + final ArrayList<ActivityRecord> activities = mTaskHistory.get(taskNdx).mActivities; + for (int activityNdx = activities.size() - 1; activityNdx >= 0; --activityNdx) { + final ActivityRecord r = activities.get(activityNdx); + if (r.app == app) { + Slog.w(TAG, " Force finishing activity " + + r.intent.getComponent().flattenToShortString()); + r.stack.finishActivityLocked(r, Activity.RESULT_CANCELED, null, "crashed", + false); + } + } + } + } + + void dumpActivitiesLocked(FileDescriptor fd, PrintWriter pw, boolean dumpAll, + boolean dumpClient, String dumpPackage) { + for (int taskNdx = mTaskHistory.size() - 1; taskNdx >= 0; --taskNdx) { + final TaskRecord task = mTaskHistory.get(taskNdx); + pw.print(" Task "); pw.print(taskNdx); pw.print(": id #"); pw.println(task.taskId); + ActivityManagerService.dumpHistoryList(fd, pw, mTaskHistory.get(taskNdx).mActivities, + " ", "Hist", true, !dumpAll, dumpClient, dumpPackage); + } + } + + ArrayList<ActivityRecord> getDumpActivitiesLocked(String name) { + ArrayList<ActivityRecord> activities = new ArrayList<ActivityRecord>(); + + if ("all".equals(name)) { + for (int taskNdx = mTaskHistory.size() - 1; taskNdx >= 0; --taskNdx) { + activities.addAll(mTaskHistory.get(taskNdx).mActivities); + } + } else if ("top".equals(name)) { + final int top = mTaskHistory.size() - 1; + if (top >= 0) { + final ArrayList<ActivityRecord> list = mTaskHistory.get(top).mActivities; + int listTop = list.size() - 1; + if (listTop >= 0) { + activities.add(list.get(listTop)); + } + } + } else { + ItemMatcher matcher = new ItemMatcher(); + matcher.build(name); + + for (int taskNdx = mTaskHistory.size() - 1; taskNdx >= 0; --taskNdx) { + for (ActivityRecord r1 : mTaskHistory.get(taskNdx).mActivities) { + if (matcher.match(r1, r1.intent.getComponent())) { + activities.add(r1); + } + } + } + } + + return activities; + } + + ActivityRecord restartPackage(String packageName) { + ActivityRecord starting = topRunningActivityLocked(null); + + // All activities that came from the package must be + // restarted as if there was a config change. + for (int taskNdx = mTaskHistory.size() - 1; taskNdx >= 0; --taskNdx) { + final ArrayList<ActivityRecord> activities = mTaskHistory.get(taskNdx).mActivities; + for (int activityNdx = activities.size() - 1; activityNdx >= 0; --activityNdx) { + final ActivityRecord a = activities.get(activityNdx); + if (a.info.packageName.equals(packageName)) { + a.forceNewConfig = true; + if (starting != null && a == starting && a.visible) { + a.startFreezingScreenLocked(starting.app, + ActivityInfo.CONFIG_SCREEN_LAYOUT); + } + } + } + } + + return starting; + } + + private void removeActivity(ActivityRecord r) { + final TaskRecord task = r.task; + if (task.removeActivity(r)) { + if (DEBUG_ADD_REMOVE) Slog.i(TAG, "removeActivity: Removing from history, task=" + + task); + mTaskHistory.remove(task); + mTaskIdToTaskRecord.delete(task.taskId); + } + } + + private void setTask(ActivityRecord r, TaskRecord newTask, ThumbnailHolder newThumbHolder, + boolean isRoot) { + if (r.task != null) { + removeActivity(r); + } + r.setTask(newTask, newThumbHolder, isRoot); + } + + private TaskRecord createTaskRecord(int taskId, ActivityInfo info, Intent intent, + boolean toTop) { + TaskRecord oldTask = mTaskIdToTaskRecord.get(taskId); + if (oldTask != null) { + Slog.w(TAG, "createTaskRecord: Reusing taskId=" + taskId + " without removing"); + mTaskHistory.remove(oldTask); + } + TaskRecord task = new TaskRecord(taskId, info, intent); + mTaskIdToTaskRecord.put(taskId, task); + if (toTop) { + mTaskHistory.add(task); + } else { + mTaskHistory.add(0, task); + } + return task; + } } diff --git a/services/java/com/android/server/am/CompatModePackages.java b/services/java/com/android/server/am/CompatModePackages.java index 3a6492e2957b..863bdad42177 100644 --- a/services/java/com/android/server/am/CompatModePackages.java +++ b/services/java/com/android/server/am/CompatModePackages.java @@ -295,20 +295,8 @@ public class CompatModePackages { Message msg = mHandler.obtainMessage(MSG_WRITE); mHandler.sendMessageDelayed(msg, 10000); - ActivityRecord starting = mService.mMainStack.topRunningActivityLocked(null); - - // All activities that came from the package must be - // restarted as if there was a config change. - for (int i=mService.mMainStack.mHistory.size()-1; i>=0; i--) { - ActivityRecord a = (ActivityRecord)mService.mMainStack.mHistory.get(i); - if (a.info.packageName.equals(packageName)) { - a.forceNewConfig = true; - if (starting != null && a == starting && a.visible) { - a.startFreezingScreenLocked(starting.app, - ActivityInfo.CONFIG_SCREEN_LAYOUT); - } - } - } + + ActivityRecord starting = mService.mMainStack.restartPackage(packageName); // Tell all processes that loaded this package about the change. for (int i=mService.mLruProcesses.size()-1; i>=0; i--) { diff --git a/services/java/com/android/server/am/PendingThumbnailsRecord.java b/services/java/com/android/server/am/PendingThumbnailsRecord.java index ed478c9741c8..c4607916bb39 100644 --- a/services/java/com/android/server/am/PendingThumbnailsRecord.java +++ b/services/java/com/android/server/am/PendingThumbnailsRecord.java @@ -27,13 +27,13 @@ import java.util.HashSet; class PendingThumbnailsRecord { final IThumbnailReceiver receiver; // who is waiting. - HashSet pendingRecords; // HistoryRecord objects we still wait for. + final HashSet<ActivityRecord> pendingRecords; // HistoryRecord objects we still wait for. boolean finished; // Is pendingRecords empty? PendingThumbnailsRecord(IThumbnailReceiver _receiver) { receiver = _receiver; - pendingRecords = new HashSet(); + pendingRecords = new HashSet<ActivityRecord>(); finished = false; } } diff --git a/services/java/com/android/server/am/TaskRecord.java b/services/java/com/android/server/am/TaskRecord.java index 1bae9ca53adf..4c3b5903e95e 100644 --- a/services/java/com/android/server/am/TaskRecord.java +++ b/services/java/com/android/server/am/TaskRecord.java @@ -23,6 +23,7 @@ import android.os.UserHandle; import android.util.Slog; import java.io.PrintWriter; +import java.util.ArrayList; class TaskRecord extends ThumbnailHolder { final int taskId; // Unique identifier for this task. @@ -39,7 +40,11 @@ class TaskRecord extends ThumbnailHolder { String stringName; // caching of toString() result. int userId; // user for which this task was created - + + int numFullscreen; // Number of fullscreen activities. + + final ArrayList<ActivityRecord> mActivities = new ArrayList<ActivityRecord>(); + TaskRecord(int _taskId, ActivityInfo info, Intent _intent) { taskId = _taskId; affinity = info.taskAffinity; @@ -104,12 +109,53 @@ class TaskRecord extends ThumbnailHolder { userId = UserHandle.getUserId(info.applicationInfo.uid); } } - + + ActivityRecord getTopActivity() { + for (int i = mActivities.size() - 1; i >= 0; --i) { + final ActivityRecord r = mActivities.get(i); + if (r.finishing) { + continue; + } + return r; + } + return null; + } + + void addActivityAtBottom(ActivityRecord r) { + addActivityAtIndex(0, r); + } + + void addActivityToTop(ActivityRecord r) { + if (!mActivities.remove(r) && r.fullscreen) { + // Was not previously in list. + numFullscreen++; + } + mActivities.add(r); + } + + void addActivityAtIndex(int index, ActivityRecord r) { + if (!mActivities.remove(r) && r.fullscreen) { + // Was not previously in list. + numFullscreen++; + } + mActivities.add(index, r); + } + + /** @return true if this was the last activity in the task */ + boolean removeActivity(ActivityRecord r) { + if (mActivities.remove(r) && r.fullscreen) { + // Was previously in list. + numFullscreen--; + } + return mActivities.size() == 0; + } + void dump(PrintWriter pw, String prefix) { if (numActivities != 0 || rootWasReset || userId != 0) { pw.print(prefix); pw.print("numActivities="); pw.print(numActivities); pw.print(" rootWasReset="); pw.print(rootWasReset); - pw.print(" userId="); pw.println(userId); + pw.print(" userId="); pw.print(userId); + pw.print(" numFullscreen="); pw.println(numFullscreen); } if (affinity != null) { pw.print(prefix); pw.print("affinity="); pw.println(affinity); @@ -136,6 +182,7 @@ class TaskRecord extends ThumbnailHolder { pw.print(prefix); pw.print("realActivity="); pw.println(realActivity.flattenToShortString()); } + pw.print(prefix); pw.print("Activities="); pw.println(mActivities); if (!askedCompatMode) { pw.print(prefix); pw.print("askedCompatMode="); pw.println(askedCompatMode); } @@ -146,6 +193,7 @@ class TaskRecord extends ThumbnailHolder { pw.print((getInactiveDuration()/1000)); pw.println("s)"); } + @Override public String toString() { if (stringName != null) { return stringName; @@ -156,19 +204,21 @@ class TaskRecord extends ThumbnailHolder { sb.append(" #"); sb.append(taskId); if (affinity != null) { - sb.append(" A "); + sb.append(" A="); sb.append(affinity); } else if (intent != null) { - sb.append(" I "); + sb.append(" I="); sb.append(intent.getComponent().flattenToShortString()); } else if (affinityIntent != null) { - sb.append(" aI "); + sb.append(" aI="); sb.append(affinityIntent.getComponent().flattenToShortString()); } else { sb.append(" ??"); } - sb.append(" U "); + sb.append(" U="); sb.append(userId); + sb.append(" sz="); + sb.append(mActivities.size()); sb.append('}'); return stringName = sb.toString(); } diff --git a/services/java/com/android/server/pm/KeySetManager.java b/services/java/com/android/server/pm/KeySetManager.java new file mode 100644 index 000000000000..afb7d4b969e9 --- /dev/null +++ b/services/java/com/android/server/pm/KeySetManager.java @@ -0,0 +1,540 @@ +/* + * Copyright (C) 2013 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.server.pm; + +import android.content.pm.KeySet; +import android.content.pm.PackageParser; +import android.os.Binder; +import android.util.Base64; +import android.util.Log; +import android.util.LongSparseArray; + +import java.io.IOException; +import java.io.PrintWriter; +import java.security.PublicKey; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +import org.xmlpull.v1.XmlPullParser; +import org.xmlpull.v1.XmlPullParserException; +import org.xmlpull.v1.XmlSerializer; + +/* + * Manages system-wide KeySet state. + */ +public class KeySetManager { + + static final String TAG = "KeySetManager"; + + private static final long KEYSET_NOT_FOUND = -1; + private static final long PUBLIC_KEY_NOT_FOUND = -1; + + private final Object mLockObject = new Object(); + + private final LongSparseArray<KeySet> mKeySets; + + private final LongSparseArray<PublicKey> mPublicKeys; + + private final LongSparseArray<Set<Long>> mKeySetMapping; + + private final Map<String, PackageSetting> mPackages; + + private static long lastIssuedKeySetId = 0; + + private static long lastIssuedKeyId = 0; + + public KeySetManager(Map<String, PackageSetting> packages) { + mKeySets = new LongSparseArray<KeySet>(); + mPublicKeys = new LongSparseArray<PublicKey>(); + mKeySetMapping = new LongSparseArray<Set<Long>>(); + mPackages = packages; + } + + /* + * Determine if a package is signed by the given KeySet. + * + * Returns false if the package was not signed by all the + * keys in the KeySet. + * + * Returns true if the package was signed by at least the + * keys in the given KeySet. + * + * Note that this can return true for multiple KeySets. + */ + public boolean packageIsSignedBy(String packageName, KeySet ks) { + synchronized (mLockObject) { + PackageSetting pkg = mPackages.get(packageName); + if (pkg == null) { + throw new NullPointerException("Invalid package name"); + } + if (pkg.keySetData == null) { + throw new NullPointerException("Package has no KeySet data"); + } + long id = getIdByKeySetLocked(ks); + return pkg.keySetData.packageIsSignedBy(id); + } + } + + /* + * This informs the system that the given package has defined a KeySet + * in its manifest that a) contains the given keys and b) is named + * alias by that package. + */ + public void addDefinedKeySetToPackage(String packageName, + Set<PublicKey> keys, String alias) { + if ((packageName == null) || (keys == null) || (alias == null)) { + Log.e(TAG, "Got null argument for a defined keyset, ignoring!"); + return; + } + synchronized (mLockObject) { + KeySet ks = addKeySetLocked(keys); + PackageSetting pkg = mPackages.get(packageName); + if (pkg == null) { + throw new NullPointerException("Unknown package"); + } + long id = getIdByKeySetLocked(ks); + pkg.keySetData.addDefinedKeySet(id, alias); + } + } + + /* + * Similar to the above, this informs the system that the given package + * was signed by the provided KeySet. + */ + public void addSigningKeySetToPackage(String packageName, + Set<PublicKey> signingKeys) { + if ((packageName == null) || (signingKeys == null)) { + Log.e(TAG, "Got null argument for a signing keyset, ignoring!"); + return; + } + synchronized (mLockObject) { + // add the signing KeySet + KeySet ks = addKeySetLocked(signingKeys); + long id = getIdByKeySetLocked(ks); + Set<Long> publicKeyIds = mKeySetMapping.get(id); + if (publicKeyIds == null) { + throw new NullPointerException("Got invalid KeySet id"); + } + + // attach it to the package + PackageSetting pkg = mPackages.get(packageName); + if (pkg == null) { + throw new NullPointerException("No such package!"); + } + pkg.keySetData.addSigningKeySet(id); + + // for each KeySet the package defines which is a subset of + // the one above, add the KeySet id to the package's signing KeySets + for (Long keySetID : pkg.keySetData.getDefinedKeySets()) { + Set<Long> definedKeys = mKeySetMapping.get(keySetID); + if (publicKeyIds.contains(definedKeys)) { + pkg.keySetData.addSigningKeySet(keySetID); + } + } + } + } + + /* + * Fetches the stable identifier associated with the given KeySet. + * + * Returns KEYSET_NOT_FOUND if the KeySet... wasn't found. + */ + public long getIdByKeySet(KeySet ks) { + synchronized (mLockObject) { + return getIdByKeySetLocked(ks); + } + } + + private long getIdByKeySetLocked(KeySet ks) { + for (int keySetIndex = 0; keySetIndex < mKeySets.size(); keySetIndex++) { + KeySet value = mKeySets.valueAt(keySetIndex); + if (ks.equals(value)) { + return mKeySets.keyAt(keySetIndex); + } + } + return KEYSET_NOT_FOUND; + } + + /* + * Fetches the KeySet corresponding to the given stable identifier. + * + * Returns KEYSET_NOT_FOUND if the identifier doesn't identify a KeySet. + */ + public KeySet getKeySetById(long id) { + synchronized (mLockObject) { + return mKeySets.get(id); + } + } + + /* + * Fetches the KeySet that a given package refers to by the provided alias. + * + * If the package isn't known to us, throws an IllegalArgumentException. + * Returns null if the alias isn't known to us. + */ + public KeySet getKeySetByAliasAndPackageName(String packageName, String alias) { + synchronized (mLockObject) { + PackageSetting p = mPackages.get(packageName); + if (p == null) { + throw new NullPointerException("Unknown package"); + } + if (p.keySetData == null) { + throw new IllegalArgumentException("Package has no keySet data"); + } + long keySetId = p.keySetData.getAliases().get(alias); + return mKeySets.get(keySetId); + } + } + + /* + * Fetches all the known KeySets that signed the given package. + * + * If the package is unknown to us, throws an IllegalArgumentException. + */ + public Set<KeySet> getSigningKeySetsByPackageName(String packageName) { + synchronized (mLockObject) { + Set<KeySet> signingKeySets = new HashSet<KeySet>(); + PackageSetting p = mPackages.get(packageName); + if (p == null) { + throw new NullPointerException("Unknown package"); + } + if (p.keySetData == null) { + throw new IllegalArgumentException("Package has no keySet data"); + } + for (long l : p.keySetData.getSigningKeySets()) { + signingKeySets.add(mKeySets.get(l)); + } + return signingKeySets; + } + } + + /* + * Creates a new KeySet corresponding to the given keys. + * + * If the PublicKeys aren't known to the system, this adds them. Otherwise, + * they're deduped. + * + * If the KeySet isn't known to the system, this adds that and creates the + * mapping to the PublicKeys. If it is known, then it's deduped. + * + * Throws if the provided set is null. + */ + private KeySet addKeySetLocked(Set<PublicKey> keys) { + if (keys == null) { + throw new NullPointerException("Provided keys cannot be null"); + } + // add each of the keys in the provided set + Set<Long> addedKeyIds = new HashSet<Long>(keys.size()); + for (PublicKey k : keys) { + long id = addPublicKeyLocked(k); + addedKeyIds.add(id); + } + + // check to see if the resulting keyset is new + long existingKeySetId = getIdFromKeyIdsLocked(addedKeyIds); + if (existingKeySetId != KEYSET_NOT_FOUND) { + return mKeySets.get(existingKeySetId); + } + + // create the KeySet object + KeySet ks = new KeySet(new Binder()); + // get the first unoccupied slot in mKeySets + long id = getFreeKeySetIDLocked(); + // add the KeySet object to it + mKeySets.put(id, ks); + // add the stable key ids to the mapping + mKeySetMapping.put(id, addedKeyIds); + // go home + return ks; + } + + /* + * Adds the given PublicKey to the system, deduping as it goes. + */ + private long addPublicKeyLocked(PublicKey key) { + // check if the public key is new + long existingKeyId = getIdForPublicKeyLocked(key); + if (existingKeyId != PUBLIC_KEY_NOT_FOUND) { + return existingKeyId; + } + // if it's new find the first unoccupied slot in the public keys + long id = getFreePublicKeyIdLocked(); + // add the public key to it + mPublicKeys.put(id, key); + // return the stable identifier + return id; + } + + /* + * Finds the stable identifier for a KeySet based on a set of PublicKey stable IDs. + * + * Returns KEYSET_NOT_FOUND if there isn't one. + */ + private long getIdFromKeyIdsLocked(Set<Long> publicKeyIds) { + for (int keyMapIndex = 0; keyMapIndex < mKeySetMapping.size(); keyMapIndex++) { + Set<Long> value = mKeySetMapping.valueAt(keyMapIndex); + if (value.equals(publicKeyIds)) { + return mKeySetMapping.keyAt(keyMapIndex); + } + } + return KEYSET_NOT_FOUND; + } + + /* + * Finds the stable identifier for a PublicKey or PUBLIC_KEY_NOT_FOUND. + */ + private long getIdForPublicKeyLocked(PublicKey k) { + String encodedPublicKey = new String(k.getEncoded()); + for (int publicKeyIndex = 0; publicKeyIndex < mPublicKeys.size(); publicKeyIndex++) { + PublicKey value = mPublicKeys.valueAt(publicKeyIndex); + String encodedExistingKey = new String(value.getEncoded()); + if (encodedPublicKey.equals(encodedExistingKey)) { + return mPublicKeys.keyAt(publicKeyIndex); + } + } + return PUBLIC_KEY_NOT_FOUND; + } + + /* + * Gets an unused stable identifier for a KeySet. + */ + private long getFreeKeySetIDLocked() { + lastIssuedKeySetId += 1; + return lastIssuedKeySetId; + } + + /* + * Same as above, but for public keys. + */ + private long getFreePublicKeyIdLocked() { + lastIssuedKeyId += 1; + return lastIssuedKeyId; + } + + public void removeAppKeySetData(String packageName) { + Log.e(TAG, "Removing application " + packageName); + synchronized (mLockObject) { + // Get the package's known keys and KeySets + Set<Long> deletableKeySets = getKnownKeySetsByPackageName(packageName); + Set<Long> deletableKeys = new HashSet<Long>(); + for (Long ks : deletableKeySets) { + deletableKeys.addAll(mKeySetMapping.get(ks)); + } + + // Now remove the keys and KeySets known to any other package + for (String pkgName : mPackages.keySet()) { + if (pkgName.equals(packageName)) { + continue; + } + Set<Long> knownKeySets = getKnownKeySetsByPackageName(pkgName); + deletableKeySets.removeAll(knownKeySets); + Set<Long> knownKeys = new HashSet<Long>(); + for (Long ks : knownKeySets) { + deletableKeys.removeAll(mKeySetMapping.get(ks)); + } + } + + // The remaining keys and KeySets are not known to any other + // application and so can be safely deleted. + for (Long ks : deletableKeySets) { + mKeySets.delete(ks); + mKeySetMapping.delete(ks); + } + for (Long keyId : deletableKeys) { + mPublicKeys.delete(keyId); + } + } + } + + private Set<Long> getKnownKeySetsByPackageName(String packageName) { + PackageSetting p = mPackages.get(packageName); + if (p == null) { + throw new NullPointerException("Unknown package"); + } + if (p.keySetData == null) { + throw new IllegalArgumentException("Package has no keySet data"); + } + Set<Long> knownKeySets = new HashSet<Long>(); + for (Long ks : p.keySetData.getSigningKeySets()) { + knownKeySets.add(ks); + } + for (Long ks : p.keySetData.getDefinedKeySets()) { + knownKeySets.add(ks); + } + return knownKeySets; + } + + public String encodePublicKey(PublicKey k) throws IOException { + return new String(Base64.encode(k.getEncoded(), 0)); + } + + public void dump(PrintWriter pw) { + synchronized (mLockObject) { + pw.println(" Dumping KeySetManager"); + for (Map.Entry<String, PackageSetting> e : mPackages.entrySet()) { + String packageName = e.getKey(); + PackageSetting pkg = e.getValue(); + pw.print(" ["); pw.print(packageName); pw.println("]"); + if (pkg.keySetData != null) { + pw.print(" Defined KeySets:"); + for (long keySetId : pkg.keySetData.getDefinedKeySets()) { + pw.print(" "); pw.print(Long.toString(keySetId)); + } + pw.println(""); + pw.print(" Signing KeySets:"); + for (long keySetId : pkg.keySetData.getSigningKeySets()) { + pw.print(" "); pw.print(Long.toString(keySetId)); + } + pw.println(""); + } + } + } + } + + void writeKeySetManagerLPr(XmlSerializer serializer) throws IOException { + serializer.startTag(null, "keyset-settings"); + writePublicKeysLPr(serializer); + writeKeySetsLPr(serializer); + serializer.startTag(null, "lastIssuedKeyId"); + serializer.attribute(null, "value", Long.toString(lastIssuedKeyId)); + serializer.endTag(null, "lastIssuedKeyId"); + serializer.startTag(null, "lastIssuedKeySetId"); + serializer.attribute(null, "value", Long.toString(lastIssuedKeySetId)); + serializer.endTag(null, "lastIssuedKeySetId"); + serializer.endTag(null, "keyset-settings"); + } + + void writePublicKeysLPr(XmlSerializer serializer) throws IOException { + serializer.startTag(null, "keys"); + for (int pKeyIndex = 0; pKeyIndex < mPublicKeys.size(); pKeyIndex++) { + long id = mPublicKeys.keyAt(pKeyIndex); + PublicKey key = mPublicKeys.valueAt(pKeyIndex); + String encodedKey = encodePublicKey(key); + serializer.startTag(null, "public-key"); + serializer.attribute(null, "identifier", Long.toString(id)); + serializer.attribute(null, "value", encodedKey); + serializer.endTag(null, "public-key"); + } + serializer.endTag(null, "keys"); + } + + void writeKeySetsLPr(XmlSerializer serializer) throws IOException { + serializer.startTag(null, "keysets"); + for (int keySetIndex = 0; keySetIndex < mKeySetMapping.size(); keySetIndex++) { + long id = mKeySetMapping.keyAt(keySetIndex); + Set<Long> keys = mKeySetMapping.valueAt(keySetIndex); + serializer.startTag(null, "keyset"); + serializer.attribute(null, "identifier", Long.toString(id)); + for (long keyId : keys) { + serializer.startTag(null, "key-id"); + serializer.attribute(null, "identifier", Long.toString(keyId)); + serializer.endTag(null, "key-id"); + } + serializer.endTag(null, "keyset"); + } + serializer.endTag(null, "keysets"); + } + + void readKeySetsLPw(XmlPullParser parser) + throws XmlPullParserException, IOException { + int type; + long currentKeySetId = 0; + while ((type = parser.next()) != XmlPullParser.END_DOCUMENT) { + if (type == XmlPullParser.END_TAG || type == XmlPullParser.TEXT) { + continue; + } + final String tagName = parser.getName(); + if (tagName.equals("keys")) { + readKeysLPw(parser); + } else if (tagName.equals("keysets")) { + readKeySetListLPw(parser); + } else { + PackageManagerService.reportSettingsProblem(Log.WARN, + "Could not read KeySets for KeySetManager!"); + } + } + } + + void readKeysLPw(XmlPullParser parser) + throws XmlPullParserException, IOException { + int outerDepth = parser.getDepth(); + int type; + while ((type = parser.next()) != XmlPullParser.END_DOCUMENT + && (type != XmlPullParser.END_TAG || parser.getDepth() > outerDepth)) { + if (type == XmlPullParser.END_TAG || type == XmlPullParser.TEXT) { + continue; + } + final String tagName = parser.getName(); + if (tagName.equals("public-key")) { + readPublicKeyLPw(parser); + } else if (tagName.equals("lastIssuedKeyId")) { + lastIssuedKeyId = Long.parseLong(parser.getAttributeValue(null, "value")); + } else if (tagName.equals("lastIssuedKeySetId")) { + lastIssuedKeySetId = Long.parseLong(parser.getAttributeValue(null, "value")); + } else { + PackageManagerService.reportSettingsProblem(Log.WARN, + "Could not read keys for KeySetManager!"); + } + } + } + + void readKeySetListLPw(XmlPullParser parser) + throws XmlPullParserException, IOException { + int outerDepth = parser.getDepth(); + int type; + long currentKeySetId = 0; + while ((type = parser.next()) != XmlPullParser.END_DOCUMENT + && (type != XmlPullParser.END_TAG || parser.getDepth() > outerDepth)) { + if (type == XmlPullParser.END_TAG || type == XmlPullParser.TEXT) { + continue; + } + final String tagName = parser.getName(); + if (tagName.equals("keyset")) { + currentKeySetId = readIdentifierLPw(parser); + mKeySets.put(currentKeySetId, new KeySet(new Binder())); + mKeySetMapping.put(currentKeySetId, new HashSet<Long>()); + } else if (tagName.equals("key-id")) { + long id = readIdentifierLPw(parser); + mKeySetMapping.get(currentKeySetId).add(id); + } else { + PackageManagerService.reportSettingsProblem(Log.WARN, + "Could not read KeySets for KeySetManager!"); + } + } + } + + long readIdentifierLPw(XmlPullParser parser) + throws XmlPullParserException { + return Long.parseLong(parser.getAttributeValue(null, "identifier")); + } + + void readPublicKeyLPw(XmlPullParser parser) + throws XmlPullParserException { + String encodedID = parser.getAttributeValue(null, "identifier"); + long identifier = Long.parseLong(encodedID); + String encodedPublicKey = parser.getAttributeValue(null, "value"); + PublicKey pub = PackageParser.parsePublicKey(encodedPublicKey); + if (pub == null) { + PackageManagerService.reportSettingsProblem(Log.WARN, + "Could not read public key for KeySetManager!"); + } else { + mPublicKeys.put(identifier, pub); + } + } +}
\ No newline at end of file diff --git a/services/java/com/android/server/pm/PackageKeySetData.java b/services/java/com/android/server/pm/PackageKeySetData.java new file mode 100644 index 000000000000..01ba5ba0aa86 --- /dev/null +++ b/services/java/com/android/server/pm/PackageKeySetData.java @@ -0,0 +1,91 @@ +/* + * Copyright (C) 2013 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.server.pm; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +public class PackageKeySetData { + + private long[] mSigningKeySets; + + private long[] mDefinedKeySets; + + private final Map<String, Long> mKeySetAliases; + + PackageKeySetData() { + mSigningKeySets = new long[0]; + mDefinedKeySets = new long[0]; + mKeySetAliases = new HashMap<String, Long>(); + } + + PackageKeySetData(PackageKeySetData original) { + mSigningKeySets = original.getSigningKeySets().clone(); + mDefinedKeySets = original.getDefinedKeySets().clone(); + mKeySetAliases = new HashMap<String, Long>(); + mKeySetAliases.putAll(original.getAliases()); + } + + public void addSigningKeySet(long ks) { + // deduplicate + for (long knownKeySet : mSigningKeySets) { + if (ks == knownKeySet) { + return; + } + } + int end = mSigningKeySets.length; + mSigningKeySets = Arrays.copyOf(mSigningKeySets, end + 1); + mSigningKeySets[end] = ks; + } + + public void addDefinedKeySet(long ks, String alias) { + // deduplicate + for (long knownKeySet : mDefinedKeySets) { + if (ks == knownKeySet) { + return; + } + } + int end = mDefinedKeySets.length; + mDefinedKeySets = Arrays.copyOf(mDefinedKeySets, end + 1); + mDefinedKeySets[end] = ks; + mKeySetAliases.put(alias, ks); + } + + public boolean packageIsSignedBy(long ks) { + for (long signingKeySet : mSigningKeySets) { + if (ks == signingKeySet) { + return true; + } + } + return false; + } + + public long[] getSigningKeySets() { + return mSigningKeySets; + } + + public long[] getDefinedKeySets() { + return mDefinedKeySets; + } + + public Map<String, Long> getAliases() { + return mKeySetAliases; + } +}
\ No newline at end of file diff --git a/services/java/com/android/server/pm/PackageManagerService.java b/services/java/com/android/server/pm/PackageManagerService.java index 51f001f655a7..b4987cbaeeca 100644 --- a/services/java/com/android/server/pm/PackageManagerService.java +++ b/services/java/com/android/server/pm/PackageManagerService.java @@ -70,6 +70,7 @@ import android.content.pm.IPackageManager; import android.content.pm.IPackageMoveObserver; import android.content.pm.IPackageStatsObserver; import android.content.pm.InstrumentationInfo; +import android.content.pm.KeySet; import android.content.pm.PackageCleanItem; import android.content.pm.PackageInfo; import android.content.pm.PackageInfoLite; @@ -113,10 +114,12 @@ import android.os.UserHandle; import android.os.UserManager; import android.os.Environment.UserEnvironment; import android.security.SystemKeyStore; +import android.util.Base64; import android.util.DisplayMetrics; import android.util.EventLog; import android.util.Log; import android.util.LogPrinter; +import android.util.LongSparseArray; import android.util.Slog; import android.util.SparseArray; import android.util.Xml; @@ -1022,6 +1025,7 @@ public class PackageManagerService extends IPackageManager.Stub { mRestoredSettings = mSettings.readLPw(this, sUserManager.getUsers(false), mSdkVersion, mOnlyCore); + long startTime = SystemClock.uptimeMillis(); EventLog.writeEvent(EventLogTags.BOOT_PROGRESS_PMS_SYSTEM_SCAN_START, @@ -3255,10 +3259,12 @@ public class PackageManagerService extends IPackageManager.Stub { pp.setOnlyCoreApps(mOnlyCore); final PackageParser.Package pkg = pp.parsePackage(scanFile, scanPath, mMetrics, parseFlags); + if (pkg == null) { mLastScanError = pp.getParseError(); return null; } + PackageSetting ps = null; PackageSetting updatedPkg; // reader @@ -3401,6 +3407,7 @@ public class PackageManagerService extends IPackageManager.Stub { } else { resPath = pkg.mScanPath; } + codePath = pkg.mScanPath; // Set application objects path explicitly. setApplicationInfoPaths(pkg, codePath, resPath); @@ -4223,6 +4230,24 @@ public class PackageManagerService extends IPackageManager.Stub { } } + // Add the package's KeySets to the global KeySetManager + KeySetManager ksm = mSettings.mKeySetManager; + try { + ksm.addSigningKeySetToPackage(pkg.packageName, pkg.mSigningKeys); + if (pkg.mKeySetMapping != null) { + for (Map.Entry<String, Set<PublicKey>> entry : pkg.mKeySetMapping.entrySet()) { + if (entry.getValue() != null) { + ksm.addDefinedKeySetToPackage(pkg.packageName, + entry.getValue(), entry.getKey()); + } + } + } + } catch (NullPointerException e) { + Slog.e(TAG, "Could not add KeySet to " + pkg.packageName, e); + } catch (IllegalArgumentException e) { + Slog.e(TAG, "Could not add KeySet to malformed package" + pkg.packageName, e); + } + int N = pkg.providers.size(); StringBuilder r = null; int i; @@ -8430,7 +8455,9 @@ public class PackageManagerService extends IPackageManager.Stub { removePackageDataLI(ps, outInfo, flags, writeSettings); return true; } + boolean ret = false; + mSettings.mKeySetManager.removeAppKeySetData(packageName); if (isSystemApp(ps)) { Log.i(TAG, "Removing system package:" + ps.name); // When an updated system application is deleted we delete the existing resources as well and @@ -8443,6 +8470,7 @@ public class PackageManagerService extends IPackageManager.Stub { ret = deleteInstalledPackageLI(ps, deleteCodeAndResources, flags, outInfo, writeSettings); } + return ret; } @@ -9244,6 +9272,8 @@ public class PackageManagerService extends IPackageManager.Stub { public static final int DUMP_PREFERRED_XML = 1 << 10; + public static final int DUMP_KEYSETS = 1 << 11; + public static final int OPTION_SHOW_FILTERS = 1 << 0; private int mTypes; @@ -9341,6 +9371,7 @@ public class PackageManagerService extends IPackageManager.Stub { pw.println(" m[essages]: print collected runtime messages"); pw.println(" v[erifiers]: print package verifier info"); pw.println(" <package.name>: info about given package"); + pw.println(" k[eysets]: print known keysets"); return; } else if ("-f".equals(opt)) { dumpState.setOptionEnabled(DumpState.OPTION_SHOW_FILTERS); @@ -9382,6 +9413,8 @@ public class PackageManagerService extends IPackageManager.Stub { dumpState.setDump(DumpState.DUMP_MESSAGES); } else if ("v".equals(cmd) || "verifiers".equals(cmd)) { dumpState.setDump(DumpState.DUMP_VERIFIERS); + } else if ("k".equals(cmd) || "keysets".equals(cmd)) { + dumpState.setDump(DumpState.DUMP_KEYSETS); } } @@ -9517,7 +9550,14 @@ public class PackageManagerService extends IPackageManager.Stub { } } } - + + if (dumpState.isDumping(DumpState.DUMP_KEYSETS)) { + if (dumpState.onTitlePrinted()) { + pw.println(" "); + } + mSettings.mKeySetManager.dump(pw); + } + if (dumpState.isDumping(DumpState.DUMP_PACKAGES)) { mSettings.dumpPackagesLPr(pw, packageName, dumpState); } diff --git a/services/java/com/android/server/pm/PackageSettingBase.java b/services/java/com/android/server/pm/PackageSettingBase.java index ae1b2134907e..2a723b4b234e 100644 --- a/services/java/com/android/server/pm/PackageSettingBase.java +++ b/services/java/com/android/server/pm/PackageSettingBase.java @@ -65,6 +65,8 @@ class PackageSettingBase extends GrantedPermissions { boolean permissionsFixed; boolean haveGids; + PackageKeySetData keySetData = new PackageKeySetData(); + private static final PackageUserState DEFAULT_USER_STATE = new PackageUserState(); // Whether this package is currently stopped, thus can not be @@ -120,6 +122,9 @@ class PackageSettingBase extends GrantedPermissions { origPackage = base.origPackage; installerPackageName = base.installerPackageName; + + keySetData = new PackageKeySetData(base.keySetData); + } void init(File codePath, File resourcePath, String nativeLibraryPathString, @@ -170,6 +175,7 @@ class PackageSettingBase extends GrantedPermissions { userState.put(base.userState.keyAt(i), base.userState.valueAt(i)); } installStatus = base.installStatus; + keySetData = base.keySetData; } private PackageUserState modifyUserState(int userId) { diff --git a/services/java/com/android/server/pm/Settings.java b/services/java/com/android/server/pm/Settings.java index 13f514b26073..b3f87ff4fc41 100644 --- a/services/java/com/android/server/pm/Settings.java +++ b/services/java/com/android/server/pm/Settings.java @@ -44,6 +44,7 @@ import android.content.Context; import android.content.Intent; import android.content.pm.ApplicationInfo; import android.content.pm.ComponentInfo; +import android.content.pm.KeySet; import android.content.pm.PackageCleanItem; import android.content.pm.PackageManager; import android.content.pm.PackageParser; @@ -58,6 +59,7 @@ import android.os.FileUtils; import android.os.Process; import android.os.UserHandle; import android.util.Log; +import android.util.LongSparseArray; import android.util.Slog; import android.util.SparseArray; import android.util.Xml; @@ -68,6 +70,7 @@ import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.PrintWriter; +import java.security.PublicKey; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays; @@ -177,6 +180,9 @@ final class Settings { private final Context mContext; private final File mSystemDir; + + public final KeySetManager mKeySetManager = new KeySetManager(mPackages); + Settings(Context context) { this(context, Environment.getDataDirectory()); } @@ -1325,6 +1331,8 @@ final class Settings { } } + mKeySetManager.writeKeySetManagerLPr(serializer); + serializer.endTag(null, "packages"); serializer.endDocument(); @@ -1512,9 +1520,31 @@ final class Settings { serializer.endTag(null, "perms"); } + writeSigningKeySetsLPr(serializer, pkg.keySetData); + writeKeySetAliasesLPr(serializer, pkg.keySetData); + serializer.endTag(null, "package"); } + void writeSigningKeySetsLPr(XmlSerializer serializer, + PackageKeySetData data) throws IOException { + for (long id : data.getSigningKeySets()) { + serializer.startTag(null, "signing-keyset"); + serializer.attribute(null, "identifier", Long.toString(id)); + serializer.endTag(null, "signing-keyset"); + } + } + + void writeKeySetAliasesLPr(XmlSerializer serializer, + PackageKeySetData data) throws IOException { + for (Map.Entry<String, Long> e: data.getAliases().entrySet()) { + serializer.startTag(null, "defined-keyset"); + serializer.attribute(null, "alias", e.getKey()); + serializer.attribute(null, "identifier", Long.toString(e.getValue())); + serializer.endTag(null, "defined-keyset"); + } + } + void writePermissionLPr(XmlSerializer serializer, BasePermission bp) throws XmlPullParserException, java.io.IOException { if (bp.type != BasePermission.TYPE_BUILTIN && bp.sourcePackage != null) { @@ -1692,6 +1722,8 @@ final class Settings { } else if (TAG_READ_EXTERNAL_STORAGE.equals(tagName)) { final String enforcement = parser.getAttributeValue(null, ATTR_ENFORCEMENT); mReadExternalStorageEnforced = "1".equals(enforcement); + } else if (tagName.equals("keyset-settings")) { + mKeySetManager.readKeySetsLPw(parser); } else { Slog.w(PackageManagerService.TAG, "Unknown element under <packages>: " + parser.getName()); @@ -2287,12 +2319,22 @@ final class Settings { } else if (tagName.equals("perms")) { readGrantedPermissionsLPw(parser, packageSetting.grantedPermissions); packageSetting.permissionsFixed = true; + } else if (tagName.equals("signing-keyset")) { + long id = Long.parseLong(parser.getAttributeValue(null, "identifier")); + packageSetting.keySetData.addSigningKeySet(id); + Slog.e(TAG, "Adding signing keyset " + Long.toString(id) + " to " + name); + } else if (tagName.equals("defined-keyset")) { + long id = Long.parseLong(parser.getAttributeValue(null, "identifier")); + String alias = parser.getAttributeValue(null, "alias"); + packageSetting.keySetData.addDefinedKeySet(id, alias); } else { PackageManagerService.reportSettingsProblem(Log.WARN, "Unknown element under <package>: " + parser.getName()); XmlUtils.skipCurrentTag(parser); } } + + } else { XmlUtils.skipCurrentTag(parser); } diff --git a/services/java/com/android/server/wm/AppWindowToken.java b/services/java/com/android/server/wm/AppWindowToken.java index fbb501397163..8cc1d0211132 100644 --- a/services/java/com/android/server/wm/AppWindowToken.java +++ b/services/java/com/android/server/wm/AppWindowToken.java @@ -30,6 +30,10 @@ import android.view.View; import android.view.WindowManager; import java.io.PrintWriter; +import java.util.ArrayList; + +class AppTokenList extends ArrayList<AppWindowToken> { +} /** * Version of WindowToken that is specifically for a particular application (or diff --git a/services/java/com/android/server/wm/DisplayContent.java b/services/java/com/android/server/wm/DisplayContent.java index 59e4b0e6f730..33b7a5d390fc 100644 --- a/services/java/com/android/server/wm/DisplayContent.java +++ b/services/java/com/android/server/wm/DisplayContent.java @@ -16,6 +16,7 @@ package com.android.server.wm; +import android.util.SparseArray; import android.view.Display; import android.view.DisplayInfo; @@ -33,6 +34,7 @@ class DisplayContentList extends ArrayList<DisplayContent> { * WindowManagerService.mWindowMap. */ class DisplayContent { +// private final static String TAG = "DisplayContent"; /** Unique identifier of this stack. */ private final int mDisplayId; @@ -67,6 +69,24 @@ class DisplayContent { final boolean isDefaultDisplay; /** + * Window tokens that are in the process of exiting, but still + * on screen for animations. + */ + final ArrayList<WindowToken> mExitingTokens = new ArrayList<WindowToken>(); + + /** + * Application tokens that are in the process of exiting, but still + * on screen for animations. + */ + final AppTokenList mExitingAppTokens = new AppTokenList(); + + /** + * Sorted most recent at top, oldest at [0]. + */ + ArrayList<TaskList> mTaskLists = new ArrayList<TaskList>(); + SparseArray<TaskList> mTaskIdToTaskList = new SparseArray<TaskList>(); + + /** * @param display May not be null. */ DisplayContent(Display display) { @@ -96,6 +116,65 @@ class DisplayContent { mDisplay.getDisplayInfo(mDisplayInfo); } + /** + * Find the location to insert a new AppWindowToken into the window-ordered app token list. + * @param addPos The location the token was inserted into in mAppTokens. + * @param wtoken The token to insert. + */ + void addAppToken(final int addPos, final AppWindowToken wtoken) { + TaskList task = mTaskIdToTaskList.get(wtoken.groupId); + if (task == null) { + task = new TaskList(wtoken, this); + mTaskIdToTaskList.put(wtoken.groupId, task); + mTaskLists.add(task); + } else { + task.mAppTokens.add(addPos, wtoken); + } + } + + void removeAppToken(final AppWindowToken wtoken) { + final int taskId = wtoken.groupId; + final TaskList task = mTaskIdToTaskList.get(taskId); + if (task != null) { + AppTokenList appTokens = task.mAppTokens; + appTokens.remove(wtoken); + if (appTokens.size() == 0) { + mTaskLists.remove(task); + mTaskIdToTaskList.delete(taskId); + } + } + } + + void setAppTaskId(AppWindowToken wtoken, int newTaskId) { + final int taskId = wtoken.groupId; + TaskList task = mTaskIdToTaskList.get(taskId); + if (task != null) { + AppTokenList appTokens = task.mAppTokens; + appTokens.remove(wtoken); + if (appTokens.size() == 0) { + mTaskIdToTaskList.delete(taskId); + } + } + + task = mTaskIdToTaskList.get(newTaskId); + if (task == null) { + task = new TaskList(wtoken, this); + mTaskIdToTaskList.put(newTaskId, task); + } else { + task.mAppTokens.add(wtoken); + } + + wtoken.groupId = newTaskId; + } + + int numTokens() { + int count = 0; + for (int taskNdx = mTaskLists.size() - 1; taskNdx >= 0; --taskNdx) { + count += mTaskLists.get(taskNdx).mAppTokens.size(); + } + return count; + } + public void dump(String prefix, PrintWriter pw) { pw.print(prefix); pw.print("Display: mDisplayId="); pw.println(mDisplayId); final String subPrefix = " " + prefix; @@ -119,7 +198,53 @@ class DisplayContent { pw.print("x"); pw.print(mDisplayInfo.smallestNominalAppHeight); pw.print("-"); pw.print(mDisplayInfo.largestNominalAppWidth); pw.print("x"); pw.println(mDisplayInfo.largestNominalAppHeight); - pw.print(subPrefix); pw.print("layoutNeeded="); pw.print(layoutNeeded); + pw.print(subPrefix); pw.print("layoutNeeded="); pw.println(layoutNeeded); + int ndx = numTokens(); + if (ndx > 0) { + pw.println(); + pw.println(" Application tokens in Z order:"); + for (int taskNdx = mTaskLists.size() - 1; taskNdx >= 0; --taskNdx) { + AppTokenList tokens = mTaskLists.get(taskNdx).mAppTokens; + for (int tokenNdx = tokens.size() - 1; tokenNdx >= 0; --tokenNdx) { + final AppWindowToken wtoken = tokens.get(tokenNdx); + pw.print(" App #"); pw.print(ndx--); + pw.print(' '); pw.print(wtoken); pw.println(":"); + wtoken.dump(pw, " "); + } + } + } + if (mExitingTokens.size() > 0) { + pw.println(); + pw.println(" Exiting tokens:"); + for (int i=mExitingTokens.size()-1; i>=0; i--) { + WindowToken token = mExitingTokens.get(i); + pw.print(" Exiting #"); pw.print(i); + pw.print(' '); pw.print(token); + pw.println(':'); + token.dump(pw, " "); + } + } + if (mExitingAppTokens.size() > 0) { + pw.println(); + pw.println(" Exiting application tokens:"); + for (int i=mExitingAppTokens.size()-1; i>=0; i--) { + WindowToken token = mExitingAppTokens.get(i); + pw.print(" Exiting App #"); pw.print(i); + pw.print(' '); pw.print(token); + pw.println(':'); + token.dump(pw, " "); + } + } + if (mTaskIdToTaskList.size() > 0) { + pw.println(); + for (int i = 0; i < mTaskIdToTaskList.size(); ++i) { + pw.print(" TaskList #"); pw.print(i); + pw.print(" taskId="); pw.println(mTaskIdToTaskList.keyAt(i)); + pw.print(" mAppTokens="); + pw.println(mTaskIdToTaskList.valueAt(i).mAppTokens); + pw.println(); + } + } pw.println(); } } diff --git a/services/java/com/android/server/wm/TaskGroup.java b/services/java/com/android/server/wm/TaskGroup.java new file mode 100644 index 000000000000..1f1dd5832d55 --- /dev/null +++ b/services/java/com/android/server/wm/TaskGroup.java @@ -0,0 +1,31 @@ +/* + * Copyright (C) 2013 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.server.wm; + +import android.view.IApplicationToken; + +import java.util.ArrayList; + +public class TaskGroup { + public int taskId = -1; + public ArrayList<IApplicationToken> tokens = new ArrayList<IApplicationToken>(); + + @Override + public String toString() { + return "id=" + taskId + " tokens=" + tokens; + } +} diff --git a/services/java/com/android/server/wm/TaskList.java b/services/java/com/android/server/wm/TaskList.java new file mode 100644 index 000000000000..67dfa4f333b4 --- /dev/null +++ b/services/java/com/android/server/wm/TaskList.java @@ -0,0 +1,35 @@ +/* + * Copyright (C) 2013 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.server.wm; + +class TaskList { +// private final String TAG = "TaskGroup"; + DisplayContent mDisplayContent; + final AppTokenList mAppTokens = new AppTokenList(); + final int taskId; + + TaskList(AppWindowToken wtoken, DisplayContent displayContent) { + taskId = wtoken.groupId; + mAppTokens.add(wtoken); + mDisplayContent = displayContent; + } + + @Override + public String toString() { + return "id=" + taskId + " appTokens=" + mAppTokens; + } +} diff --git a/services/java/com/android/server/wm/WindowAnimator.java b/services/java/com/android/server/wm/WindowAnimator.java index 3964782baced..aa819411b2c9 100644 --- a/services/java/com/android/server/wm/WindowAnimator.java +++ b/services/java/com/android/server/wm/WindowAnimator.java @@ -21,7 +21,6 @@ import android.util.SparseIntArray; import android.util.TimeUtils; import android.util.TypedValue; import android.view.Display; -import android.view.Surface; import android.view.SurfaceControl; import android.view.WindowManagerPolicy; import android.view.animation.Animation; @@ -172,28 +171,34 @@ public class WindowAnimator { } } - private void updateAppWindowsLocked() { + private void updateAppWindowsLocked(int displayId) { int i; - final ArrayList<AppWindowToken> appTokens = mService.mAnimatingAppTokens; - final int NAT = appTokens.size(); - for (i=0; i<NAT; i++) { - final AppWindowAnimator appAnimator = appTokens.get(i).mAppAnimator; - final boolean wasAnimating = appAnimator.animation != null - && appAnimator.animation != AppWindowAnimator.sDummyAnimation; - if (appAnimator.stepAnimationLocked(mCurrentTime)) { - mAnimating = true; - } else if (wasAnimating) { - // stopped animating, do one more pass through the layout - setAppLayoutChanges(appAnimator, WindowManagerPolicy.FINISH_LAYOUT_REDO_WALLPAPER, - "appToken " + appAnimator.mAppToken + " done"); - if (WindowManagerService.DEBUG_ANIM) Slog.v(TAG, - "updateWindowsApps...: done animating " + appAnimator.mAppToken); + final DisplayContent displayContent = mService.getDisplayContentLocked(displayId); + final ArrayList<TaskList> tasks = displayContent.mTaskLists; + final int numTasks = tasks.size(); + for (int taskNdx = 0; taskNdx < numTasks; ++taskNdx) { + final AppTokenList tokens = tasks.get(taskNdx).mAppTokens; + final int numTokens = tokens.size(); + for (int tokenNdx = 0; tokenNdx < numTokens; ++tokenNdx) { + final AppWindowAnimator appAnimator = tokens.get(tokenNdx).mAppAnimator; + final boolean wasAnimating = appAnimator.animation != null + && appAnimator.animation != AppWindowAnimator.sDummyAnimation; + if (appAnimator.stepAnimationLocked(mCurrentTime)) { + mAnimating = true; + } else if (wasAnimating) { + // stopped animating, do one more pass through the layout + setAppLayoutChanges(appAnimator, WindowManagerPolicy.FINISH_LAYOUT_REDO_WALLPAPER, + "appToken " + appAnimator.mAppToken + " done"); + if (WindowManagerService.DEBUG_ANIM) Slog.v(TAG, + "updateWindowsApps...: done animating " + appAnimator.mAppToken); + } } } - final int NEAT = mService.mExitingAppTokens.size(); + final AppTokenList exitingAppTokens = displayContent.mExitingAppTokens; + final int NEAT = exitingAppTokens.size(); for (i=0; i<NEAT; i++) { - final AppWindowAnimator appAnimator = mService.mExitingAppTokens.get(i).mAppAnimator; + final AppWindowAnimator appAnimator = exitingAppTokens.get(i).mAppAnimator; final boolean wasAnimating = appAnimator.animation != null && appAnimator.animation != AppWindowAnimator.sDummyAnimation; if (appAnimator.stepAnimationLocked(mCurrentTime)) { @@ -454,39 +459,43 @@ public class WindowAnimator { /** See if any windows have been drawn, so they (and others associated with them) can now be * shown. */ - private void testTokenMayBeDrawnLocked() { + private void testTokenMayBeDrawnLocked(int displayId) { // See if any windows have been drawn, so they (and others // associated with them) can now be shown. - final ArrayList<AppWindowToken> appTokens = mService.mAnimatingAppTokens; - final int NT = appTokens.size(); - for (int i=0; i<NT; i++) { - AppWindowToken wtoken = appTokens.get(i); - AppWindowAnimator appAnimator = wtoken.mAppAnimator; - final boolean allDrawn = wtoken.allDrawn; - if (allDrawn != appAnimator.allDrawn) { - appAnimator.allDrawn = allDrawn; - if (allDrawn) { - // The token has now changed state to having all - // windows shown... what to do, what to do? - if (appAnimator.freezingScreen) { - appAnimator.showAllWindowsLocked(); - mService.unsetAppFreezingScreenLocked(wtoken, false, true); - if (WindowManagerService.DEBUG_ORIENTATION) Slog.i(TAG, - "Setting mOrientationChangeComplete=true because wtoken " - + wtoken + " numInteresting=" + wtoken.numInterestingWindows - + " numDrawn=" + wtoken.numDrawnWindows); - // This will set mOrientationChangeComplete and cause a pass through layout. - setAppLayoutChanges(appAnimator, - WindowManagerPolicy.FINISH_LAYOUT_REDO_WALLPAPER, - "testTokenMayBeDrawnLocked: freezingScreen"); - } else { - setAppLayoutChanges(appAnimator, - WindowManagerPolicy.FINISH_LAYOUT_REDO_ANIM, - "testTokenMayBeDrawnLocked"); - - // We can now show all of the drawn windows! - if (!mService.mOpeningApps.contains(wtoken)) { - mAnimating |= appAnimator.showAllWindowsLocked(); + final ArrayList<TaskList> tasks = mService.getDisplayContentLocked(displayId).mTaskLists; + final int numTasks = tasks.size(); + for (int taskNdx = 0; taskNdx < numTasks; ++taskNdx) { + final AppTokenList tokens = tasks.get(taskNdx).mAppTokens; + final int numTokens = tokens.size(); + for (int tokenNdx = 0; tokenNdx < numTokens; ++tokenNdx) { + final AppWindowToken wtoken = tokens.get(tokenNdx); + AppWindowAnimator appAnimator = wtoken.mAppAnimator; + final boolean allDrawn = wtoken.allDrawn; + if (allDrawn != appAnimator.allDrawn) { + appAnimator.allDrawn = allDrawn; + if (allDrawn) { + // The token has now changed state to having all + // windows shown... what to do, what to do? + if (appAnimator.freezingScreen) { + appAnimator.showAllWindowsLocked(); + mService.unsetAppFreezingScreenLocked(wtoken, false, true); + if (WindowManagerService.DEBUG_ORIENTATION) Slog.i(TAG, + "Setting mOrientationChangeComplete=true because wtoken " + + wtoken + " numInteresting=" + wtoken.numInterestingWindows + + " numDrawn=" + wtoken.numDrawnWindows); + // This will set mOrientationChangeComplete and cause a pass through layout. + setAppLayoutChanges(appAnimator, + WindowManagerPolicy.FINISH_LAYOUT_REDO_WALLPAPER, + "testTokenMayBeDrawnLocked: freezingScreen"); + } else { + setAppLayoutChanges(appAnimator, + WindowManagerPolicy.FINISH_LAYOUT_REDO_ANIM, + "testTokenMayBeDrawnLocked"); + + // We can now show all of the drawn windows! + if (!mService.mOpeningApps.contains(wtoken)) { + mAnimating |= appAnimator.showAllWindowsLocked(); + } } } } @@ -530,11 +539,10 @@ public class WindowAnimator { SurfaceControl.openTransaction(); SurfaceControl.setAnimationTransaction(); try { - updateAppWindowsLocked(); - final int numDisplays = mDisplayContentsAnimators.size(); for (int i = 0; i < numDisplays; i++) { final int displayId = mDisplayContentsAnimators.keyAt(i); + updateAppWindowsLocked(displayId); DisplayContentsAnimator displayAnimator = mDisplayContentsAnimators.valueAt(i); final ScreenRotationAnimation screenRotationAnimation = @@ -560,10 +568,11 @@ public class WindowAnimator { } } - testTokenMayBeDrawnLocked(); - for (int i = 0; i < numDisplays; i++) { final int displayId = mDisplayContentsAnimators.keyAt(i); + + testTokenMayBeDrawnLocked(displayId); + DisplayContentsAnimator displayAnimator = mDisplayContentsAnimators.valueAt(i); final ScreenRotationAnimation screenRotationAnimation = diff --git a/services/java/com/android/server/wm/WindowManagerService.java b/services/java/com/android/server/wm/WindowManagerService.java index cfefadd53432..203804668d02 100644 --- a/services/java/com/android/server/wm/WindowManagerService.java +++ b/services/java/com/android/server/wm/WindowManagerService.java @@ -182,7 +182,7 @@ public class WindowManagerService extends IWindowManager.Stub static final boolean DEBUG_INPUT_METHOD = false; static final boolean DEBUG_VISIBILITY = false; static final boolean DEBUG_WINDOW_MOVEMENT = false; - static final boolean DEBUG_TOKEN_MOVEMENT = false; + static final boolean DEBUG_TOKEN_MOVEMENT = true; static final boolean DEBUG_ORIENTATION = false; static final boolean DEBUG_APP_ORIENTATION = false; static final boolean DEBUG_CONFIGURATION = false; @@ -198,6 +198,7 @@ public class WindowManagerService extends IWindowManager.Stub static final boolean DEBUG_LAYOUT_REPEATS = true; static final boolean DEBUG_SURFACE_TRACE = false; static final boolean DEBUG_WINDOW_TRACE = false; + static final boolean DEBUG_TASK_MOVEMENT = false; static final boolean SHOW_SURFACE_ALLOC = false; static final boolean SHOW_TRANSACTIONS = false; static final boolean SHOW_LIGHT_TRANSACTIONS = false || SHOW_TRANSACTIONS; @@ -207,6 +208,9 @@ public class WindowManagerService extends IWindowManager.Stub static final boolean PROFILE_ORIENTATION = false; static final boolean localLOGV = DEBUG; + final static boolean REVERSE_ITERATOR = true; + final static boolean FORWARD_ITERATOR = false; + /** How much to multiply the policy's type layer, to reserve room * for multiple windows of the same type and Z-ordering adjustment * with TYPE_LAYER_OFFSET. */ @@ -333,34 +337,7 @@ public class WindowManagerService extends IWindowManager.Stub /** * Mapping from a token IBinder to a WindowToken object. */ - final HashMap<IBinder, WindowToken> mTokenMap = - new HashMap<IBinder, WindowToken>(); - - /** - * Window tokens that are in the process of exiting, but still - * on screen for animations. - */ - final ArrayList<WindowToken> mExitingTokens = new ArrayList<WindowToken>(); - - /** - * List controlling the ordering of windows in different applications which must - * be kept in sync with ActivityManager. - */ - final ArrayList<AppWindowToken> mAppTokens = new ArrayList<AppWindowToken>(); - - /** - * AppWindowTokens in the Z order they were in at the start of an animation. Between - * animations this list is maintained in the exact order of mAppTokens. If tokens - * are added to mAppTokens during an animation an attempt is made to insert them at the same - * logical location in this list. Note that this list is always in sync with mWindows. - */ - ArrayList<AppWindowToken> mAnimatingAppTokens = new ArrayList<AppWindowToken>(); - - /** - * Application tokens that are in the process of exiting, but still - * on screen for animations. - */ - final ArrayList<AppWindowToken> mExitingAppTokens = new ArrayList<AppWindowToken>(); + final HashMap<IBinder, WindowToken> mTokenMap = new HashMap<IBinder, WindowToken>(); /** * List of window tokens that have finished starting their application, @@ -445,8 +422,12 @@ public class WindowManagerService extends IWindowManager.Stub String mLastANRState; - /** All DisplayDontents in the world, kept here */ + /** All DisplayContents in the world, kept here */ private SparseArray<DisplayContent> mDisplayContents = new SparseArray<DisplayContent>(); + private SparseArray<DisplayContent> mTaskIdToDisplayContents = + new SparseArray<DisplayContent>(); + + private final AllWindowsIterator mTmpWindowsIterator = new AllWindowsIterator(); int mRotation = 0; int mForcedAppOrientation = ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED; @@ -852,10 +833,14 @@ public class WindowManagerService extends IWindowManager.Stub private void placeWindowBefore(WindowState pos, WindowState window) { final WindowList windows = pos.getWindowList(); - final int i = windows.indexOf(pos); + int i = windows.indexOf(pos); if (DEBUG_FOCUS || DEBUG_WINDOW_MOVEMENT || DEBUG_ADD_REMOVE) Slog.v( TAG, "Adding window " + window + " at " + i + " of " + windows.size() + " (before " + pos + ")"); + if (i < 0) { + Slog.w(TAG, "placeWindowBefore: Unable to find " + pos + " in " + windows); + i = 0; + } windows.add(i, window); mWindowsChanged = true; } @@ -920,7 +905,6 @@ public class WindowManagerService extends IWindowManager.Stub final WindowList windows = win.getWindowList(); final int N = windows.size(); final WindowState attached = win.mAttachedWindow; - int i; WindowList tokenWindowList = getTokenWindowsOnDisplay(token, displayContent); if (attached == null) { int tokenWindowsPos = 0; @@ -970,21 +954,37 @@ public class WindowManagerService extends IWindowManager.Stub + client.asBinder() + " (token=" + token + ")"); // Figure out where the window should go, based on the // order of applications. - final int NA = mAnimatingAppTokens.size(); WindowState pos = null; - for (i=NA-1; i>=0; i--) { - AppWindowToken t = mAnimatingAppTokens.get(i); - if (t == token) { - i--; - break; - } - // We haven't reached the token yet; if this token - // is not going to the bottom and has windows on this display, we can - // use it as an anchor for when we do reach the token. - tokenWindowList = getTokenWindowsOnDisplay(t, win.mDisplayContent); - if (!t.sendingToBottom && tokenWindowList.size() > 0) { - pos = tokenWindowList.get(0); + final ArrayList<TaskList> tasks = displayContent.mTaskLists; + int taskNdx; + int tokenNdx = -1; + for (taskNdx = tasks.size() - 1; taskNdx >= 0; --taskNdx) { + AppTokenList tokens = tasks.get(taskNdx).mAppTokens; + for (tokenNdx = tokens.size() - 1; tokenNdx >= 0; --tokenNdx) { + final AppWindowToken t = tokens.get(tokenNdx); + if (t == token) { + --tokenNdx; + if (tokenNdx < 0) { + --taskNdx; + if (taskNdx >= 0) { + tokenNdx = tasks.get(taskNdx).mAppTokens.size() - 1; + } + } + break; + } + + // We haven't reached the token yet; if this token + // is not going to the bottom and has windows on this display, we can + // use it as an anchor for when we do reach the token. + tokenWindowList = getTokenWindowsOnDisplay(t, win.mDisplayContent); + if (!t.sendingToBottom && tokenWindowList.size() > 0) { + pos = tokenWindowList.get(0); + } + } + if (tokenNdx >= 0) { + // early exit + break; } } // We now know the index into the apps. If we found @@ -1008,15 +1008,21 @@ public class WindowManagerService extends IWindowManager.Stub } else { // Continue looking down until we find the first // token that has windows on this display. - while (i >= 0) { - AppWindowToken t = mAnimatingAppTokens.get(i); - tokenWindowList = getTokenWindowsOnDisplay(t, win.mDisplayContent); - final int NW = tokenWindowList.size(); - if (NW > 0) { - pos = tokenWindowList.get(NW-1); + for ( ; taskNdx >= 0; --taskNdx) { + AppTokenList tokens = tasks.get(taskNdx).mAppTokens; + for ( ; tokenNdx >= 0; --tokenNdx) { + final AppWindowToken t = tokens.get(tokenNdx); + tokenWindowList = getTokenWindowsOnDisplay(t, displayContent); + final int NW = tokenWindowList.size(); + if (NW > 0) { + pos = tokenWindowList.get(NW-1); + break; + } + } + if (tokenNdx >= 0) { + // found break; } - i--; } if (pos != null) { // Move in front of any windows attached to this @@ -1035,7 +1041,8 @@ public class WindowManagerService extends IWindowManager.Stub } else { // Just search for the start of this layer. final int myLayer = win.mBaseLayer; - for (i=0; i<N; i++) { + int i; + for (i = 0; i < N; i++) { WindowState w = windows.get(i); if (w.mBaseLayer > myLayer) { break; @@ -1053,7 +1060,8 @@ public class WindowManagerService extends IWindowManager.Stub } else { // Figure out where window should go, based on layer. final int myLayer = win.mBaseLayer; - for (i=N-1; i>=0; i--) { + int i; + for (i = N - 1; i >= 0; i--) { if (windows.get(i).mBaseLayer <= myLayer) { break; } @@ -1078,7 +1086,8 @@ public class WindowManagerService extends IWindowManager.Stub final int sublayer = win.mSubLayer; int largestSublayer = Integer.MIN_VALUE; WindowState windowWithLargestSublayer = null; - for (i=0; i<NA; i++) { + int i; + for (i = 0; i < NA; i++) { WindowState w = tokenWindowList.get(i); final int wSublayer = w.mSubLayer; if (wSublayer >= largestSublayer) { @@ -2483,22 +2492,15 @@ public class WindowManagerService extends IWindowManager.Stub public void updateAppOpsState() { synchronized(mWindowMap) { - boolean changed = false; - for (int i=0; i<mDisplayContents.size(); i++) { - DisplayContent display = mDisplayContents.valueAt(i); - WindowList windows = display.getWindowList(); - for (int j=0; j<windows.size(); j++) { - final WindowState win = windows.get(j); - if (win.mAppOp != AppOpsManager.OP_NONE) { - changed |= win.setAppOpVisibilityLw(mAppOps.checkOpNoThrow(win.mAppOp, - win.getOwningUid(), - win.getOwningPackage()) == AppOpsManager.MODE_ALLOWED); - } + mTmpWindowsIterator.reset(FORWARD_ITERATOR); + while (mTmpWindowsIterator.hasNext()) { + final WindowState win = mTmpWindowsIterator.next(); + if (win.mAppOp != AppOpsManager.OP_NONE) { + final int mode = mAppOps.checkOpNoThrow(win.mAppOp, win.getOwningUid(), + win.getOwningPackage()); + win.setAppOpVisibilityLw(mode == AppOpsManager.MODE_ALLOWED); } } - if (changed) { - scheduleAnimationLocked(); - } } } @@ -3145,32 +3147,63 @@ public class WindowManagerService extends IWindowManager.Stub // Application Window Tokens // ------------------------------------------------------------- - public void validateAppTokens(List<IBinder> tokens) { - int v = tokens.size()-1; - int m = mAppTokens.size()-1; - while (v >= 0 && m >= 0) { - AppWindowToken atoken = mAppTokens.get(m); - if (atoken.removed) { - m--; - continue; + public void validateAppTokens(List<TaskGroup> tasks) { + synchronized (mWindowMap) { + int t = tasks.size() - 1; + if (t < 0) { + Slog.w(TAG, "validateAppTokens: empty task list"); + return; } - if (tokens.get(v) != atoken.token) { - Slog.w(TAG, "Tokens out of sync: external is " + tokens.get(v) - + " @ " + v + ", internal is " + atoken.token + " @ " + m); + + TaskGroup task = tasks.get(0); + int taskId = task.taskId; + DisplayContent displayContent = mTaskIdToDisplayContents.get(taskId); + if (displayContent == null) { + Slog.w(TAG, "validateAppTokens: no Display for taskId=" + taskId); + return; } - v--; - m--; - } - while (v >= 0) { - Slog.w(TAG, "External token not found: " + tokens.get(v) + " @ " + v); - v--; - } - while (m >= 0) { - AppWindowToken atoken = mAppTokens.get(m); - if (!atoken.removed) { - Slog.w(TAG, "Invalid internal atoken: " + atoken.token + " @ " + m); + + final ArrayList<TaskList> localTasks = displayContent.mTaskLists; + int taskNdx; + for (taskNdx = localTasks.size() - 1; taskNdx >= 0 && t >= 0; --taskNdx, --t) { + AppTokenList localTokens = localTasks.get(taskNdx).mAppTokens; + task = tasks.get(t); + List<IApplicationToken> tokens = task.tokens; + + DisplayContent lastDisplayContent = displayContent; + displayContent = mTaskIdToDisplayContents.get(taskId); + if (displayContent != lastDisplayContent) { + Slog.w(TAG, "validateAppTokens: displayContent changed in TaskGroup list!"); + return; + } + + int tokenNdx; + int v; + for (tokenNdx = localTokens.size() - 1, v = task.tokens.size() - 1; + tokenNdx >= 0 && v >= 0; ) { + final AppWindowToken atoken = localTokens.get(tokenNdx); + if (atoken.removed) { + --tokenNdx; + continue; + } + if (tokens.get(v) != atoken.token) { + break; + } + --tokenNdx; + v--; + } + + if (tokenNdx >= 0 || v >= 0) { + break; + } + } + + if (taskNdx >= 0 || t >= 0) { + Slog.w(TAG, "validateAppTokens: Mismatch! ActivityManager=" + tasks); + Slog.w(TAG, "validateAppTokens: Mismatch! WindowManager=" + + displayContent.mTaskLists); + Slog.w(TAG, "validateAppTokens: Mismatch! Callers=" + Debug.getCallers(4)); } - m--; } } @@ -3234,6 +3267,7 @@ public class WindowManagerService extends IWindowManager.Stub final long origId = Binder.clearCallingIdentity(); synchronized(mWindowMap) { + DisplayContent displayContent = null; WindowToken wtoken = mTokenMap.remove(token); if (wtoken != null) { boolean delayed = false; @@ -3243,6 +3277,7 @@ public class WindowManagerService extends IWindowManager.Stub for (int i=0; i<N; i++) { WindowState win = wtoken.windows.get(i); + displayContent = win.mDisplayContent; if (win.mWinAnimator.isAnimating()) { delayed = true; @@ -3252,13 +3287,12 @@ public class WindowManagerService extends IWindowManager.Stub win.mWinAnimator.applyAnimationLocked(WindowManagerPolicy.TRANSIT_EXIT, false); //TODO (multidisplay): Magnification is supported only for the default - if (mDisplayMagnifier != null - && win.getDisplayId() == Display.DEFAULT_DISPLAY) { + if (mDisplayMagnifier != null && win.isDefaultDisplay()) { mDisplayMagnifier.onWindowTransitionLocked(win, WindowManagerPolicy.TRANSIT_EXIT); } changed = true; - win.mDisplayContent.layoutNeeded = true; + displayContent.layoutNeeded = true; } } @@ -3271,7 +3305,7 @@ public class WindowManagerService extends IWindowManager.Stub } if (delayed) { - mExitingTokens.add(wtoken); + displayContent.mExitingTokens.add(wtoken); } else if (wtoken.windowType == TYPE_WALLPAPER) { mWallpaperTokens.remove(wtoken); } @@ -3285,27 +3319,9 @@ public class WindowManagerService extends IWindowManager.Stub Binder.restoreCallingIdentity(origId); } - /** - * Find the location to insert a new AppWindowToken into the window-ordered app token list. - * Note that mAppTokens.size() == mAnimatingAppTokens.size() + 1. - * @param addPos The location the token was inserted into in mAppTokens. - * @param atoken The token to insert. - */ - private void addAppTokenToAnimating(final int addPos, final AppWindowToken atoken) { - if (addPos == 0 || addPos == mAnimatingAppTokens.size()) { - // It was inserted into the beginning or end of mAppTokens. Honor that. - mAnimatingAppTokens.add(addPos, atoken); - return; - } - // Find the item immediately above the mAppTokens insertion point and put the token - // immediately below that one in mAnimatingAppTokens. - final AppWindowToken aboveAnchor = mAppTokens.get(addPos + 1); - mAnimatingAppTokens.add(mAnimatingAppTokens.indexOf(aboveAnchor), atoken); - } - @Override public void addAppToken(int addPos, IApplicationToken token, - int groupId, int requestedOrientation, boolean fullscreen, boolean showWhenLocked) { + int taskId, int requestedOrientation, boolean fullscreen, boolean showWhenLocked) { if (!checkCallingPermission(android.Manifest.permission.MANAGE_APP_TOKENS, "addAppToken()")) { throw new SecurityException("Requires MANAGE_APP_TOKENS permission"); @@ -3333,15 +3349,21 @@ public class WindowManagerService extends IWindowManager.Stub } atoken = new AppWindowToken(this, token); atoken.inputDispatchingTimeoutNanos = inputDispatchingTimeoutNanos; - atoken.groupId = groupId; + atoken.groupId = taskId; atoken.appFullscreen = fullscreen; atoken.showWhenLocked = showWhenLocked; atoken.requestedOrientation = requestedOrientation; if (DEBUG_TOKEN_MOVEMENT || DEBUG_ADD_REMOVE) Slog.v(TAG, "addAppToken: " + atoken + " at " + addPos); - mAppTokens.add(addPos, atoken); - addAppTokenToAnimating(addPos, atoken); + + DisplayContent displayContent = mTaskIdToDisplayContents.get(taskId); + if (displayContent == null) { + displayContent = getDefaultDisplayContentLocked(); + mTaskIdToDisplayContents.put(taskId, displayContent); + } + displayContent.addAppToken(addPos, atoken); mTokenMap.put(token.asBinder(), atoken); + mTaskIdToDisplayContents.put(taskId, displayContent); // Application tokens start out hidden. atoken.hidden = true; @@ -3359,12 +3381,17 @@ public class WindowManagerService extends IWindowManager.Stub } synchronized(mWindowMap) { - AppWindowToken atoken = findAppWindowToken(token); + final AppWindowToken atoken = findAppWindowToken(token); if (atoken == null) { Slog.w(TAG, "Attempted to set group id of non-existing app token: " + token); return; } - atoken.groupId = groupId; + DisplayContent displayContent = mTaskIdToDisplayContents.get(atoken.groupId); + if (displayContent == null) { + Slog.w(TAG, "setAppGroupId: No DisplayContent for taskId=" + atoken.groupId); + displayContent = getDefaultDisplayContentLocked(); + } + displayContent.setAppTaskId(atoken, groupId); } } @@ -3410,67 +3437,73 @@ public class WindowManagerService extends IWindowManager.Stub boolean findingBehind = false; boolean haveGroup = false; boolean lastFullscreen = false; - for (int pos = mAppTokens.size() - 1; pos >= 0; pos--) { - AppWindowToken atoken = mAppTokens.get(pos); - - if (DEBUG_APP_ORIENTATION) Slog.v(TAG, "Checking app orientation: " + atoken); - - // if we're about to tear down this window and not seek for - // the behind activity, don't use it for orientation - if (!findingBehind - && (!atoken.hidden && atoken.hiddenRequested)) { - if (DEBUG_ORIENTATION) Slog.v(TAG, "Skipping " + atoken - + " -- going to hide"); - continue; - } - - if (haveGroup == true && curGroup != atoken.groupId) { - // If we have hit a new application group, and the bottom - // of the previous group didn't explicitly say to use - // the orientation behind it, and the last app was - // full screen, then we'll stick with the - // user's orientation. - if (lastOrientation != ActivityInfo.SCREEN_ORIENTATION_BEHIND - && lastFullscreen) { + // TODO: Multi window. + DisplayContent displayContent = getDefaultDisplayContentLocked(); + final ArrayList<TaskList> tasks = displayContent.mTaskLists; + for (int taskNdx = tasks.size() - 1; taskNdx >= 0; --taskNdx) { + AppTokenList tokens = tasks.get(taskNdx).mAppTokens; + for (int tokenNdx = tokens.size() - 1; tokenNdx >= 0; --tokenNdx) { + final AppWindowToken atoken = tokens.get(tokenNdx); + + if (DEBUG_APP_ORIENTATION) Slog.v(TAG, "Checking app orientation: " + atoken); + + // if we're about to tear down this window and not seek for + // the behind activity, don't use it for orientation + if (!findingBehind + && (!atoken.hidden && atoken.hiddenRequested)) { + if (DEBUG_ORIENTATION) Slog.v(TAG, "Skipping " + atoken + + " -- going to hide"); + continue; + } + + if (haveGroup == true && curGroup != atoken.groupId) { + // If we have hit a new application group, and the bottom + // of the previous group didn't explicitly say to use + // the orientation behind it, and the last app was + // full screen, then we'll stick with the + // user's orientation. + if (lastOrientation != ActivityInfo.SCREEN_ORIENTATION_BEHIND + && lastFullscreen) { + if (DEBUG_ORIENTATION) Slog.v(TAG, "Done at " + atoken + + " -- end of group, return " + lastOrientation); + return lastOrientation; + } + } + + // We ignore any hidden applications on the top. + if (atoken.hiddenRequested || atoken.willBeHidden) { + if (DEBUG_ORIENTATION) Slog.v(TAG, "Skipping " + atoken + + " -- hidden on top"); + continue; + } + + if (!haveGroup) { + haveGroup = true; + curGroup = atoken.groupId; + lastOrientation = atoken.requestedOrientation; + } + + int or = atoken.requestedOrientation; + // If this application is fullscreen, and didn't explicitly say + // to use the orientation behind it, then just take whatever + // orientation it has and ignores whatever is under it. + lastFullscreen = atoken.appFullscreen; + if (lastFullscreen + && or != ActivityInfo.SCREEN_ORIENTATION_BEHIND) { if (DEBUG_ORIENTATION) Slog.v(TAG, "Done at " + atoken - + " -- end of group, return " + lastOrientation); - return lastOrientation; + + " -- full screen, return " + or); + return or; } + // If this application has requested an explicit orientation, + // then use it. + if (or != ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED + && or != ActivityInfo.SCREEN_ORIENTATION_BEHIND) { + if (DEBUG_ORIENTATION) Slog.v(TAG, "Done at " + atoken + + " -- explicitly set, return " + or); + return or; + } + findingBehind |= (or == ActivityInfo.SCREEN_ORIENTATION_BEHIND); } - - // We ignore any hidden applications on the top. - if (atoken.hiddenRequested || atoken.willBeHidden) { - if (DEBUG_ORIENTATION) Slog.v(TAG, "Skipping " + atoken - + " -- hidden on top"); - continue; - } - - if (!haveGroup) { - haveGroup = true; - curGroup = atoken.groupId; - lastOrientation = atoken.requestedOrientation; - } - - int or = atoken.requestedOrientation; - // If this application is fullscreen, and didn't explicitly say - // to use the orientation behind it, then just take whatever - // orientation it has and ignores whatever is under it. - lastFullscreen = atoken.appFullscreen; - if (lastFullscreen - && or != ActivityInfo.SCREEN_ORIENTATION_BEHIND) { - if (DEBUG_ORIENTATION) Slog.v(TAG, "Done at " + atoken - + " -- full screen, return " + or); - return or; - } - // If this application has requested an explicit orientation, - // then use it. - if (or != ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED - && or != ActivityInfo.SCREEN_ORIENTATION_BEHIND) { - if (DEBUG_ORIENTATION) Slog.v(TAG, "Done at " + atoken - + " -- explicitly set, return " + or); - return or; - } - findingBehind |= (or == ActivityInfo.SCREEN_ORIENTATION_BEHIND); } if (DEBUG_ORIENTATION) Slog.v(TAG, "No app is requesting an orientation"); return ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED; @@ -4326,11 +4359,12 @@ public class WindowManagerService extends IWindowManager.Stub TAG, "Removing app " + wtoken + " delayed=" + delayed + " animation=" + wtoken.mAppAnimator.animation + " animating=" + wtoken.mAppAnimator.animating); + DisplayContent displayContent = mTaskIdToDisplayContents.get(wtoken.groupId); if (delayed) { // set the token aside because it has an active animation to be finished if (DEBUG_ADD_REMOVE || DEBUG_TOKEN_MOVEMENT) Slog.v(TAG, "removeAppToken make exiting: " + wtoken); - mExitingAppTokens.add(wtoken); + displayContent.mExitingAppTokens.add(wtoken); } else { // Make sure there is no animation running on this token, // so any windows associated with it will be removed as @@ -4340,8 +4374,7 @@ public class WindowManagerService extends IWindowManager.Stub } if (DEBUG_ADD_REMOVE || DEBUG_TOKEN_MOVEMENT) Slog.v(TAG, "removeAppToken: " + wtoken); - mAppTokens.remove(wtoken); - mAnimatingAppTokens.remove(wtoken); + displayContent.removeAppToken(wtoken); wtoken.removed = true; if (wtoken.startingData != null) { startingToken = wtoken; @@ -4393,78 +4426,85 @@ public class WindowManagerService extends IWindowManager.Stub } void dumpAppTokensLocked() { - for (int i=mAppTokens.size()-1; i>=0; i--) { - Slog.v(TAG, " #" + i + ": " + mAppTokens.get(i).token); - } - } - - void dumpAnimatingAppTokensLocked() { - for (int i=mAnimatingAppTokens.size()-1; i>=0; i--) { - Slog.v(TAG, " #" + i + ": " + mAnimatingAppTokens.get(i).token); + DisplayContentsIterator iterator = new DisplayContentsIterator(); + while (iterator.hasNext()) { + DisplayContent displayContent = iterator.next(); + Slog.v(TAG, " Display " + displayContent.getDisplayId()); + final ArrayList<TaskList> tasks = displayContent.mTaskLists; + int i = displayContent.numTokens(); + for (int taskNdx = tasks.size() - 1; taskNdx >= 0; --taskNdx) { + AppTokenList tokens = tasks.get(taskNdx).mAppTokens; + for (int tokenNdx = tokens.size() - 1; tokenNdx >= 0; --tokenNdx) { + final AppWindowToken wtoken = tokens.get(tokenNdx); + Slog.v(TAG, " #" + --i + ": " + wtoken.token); + } + } } } void dumpWindowsLocked() { int i = 0; - final AllWindowsIterator iterator = new AllWindowsIterator(REVERSE_ITERATOR); - while (iterator.hasNext()) { - final WindowState w = iterator.next(); + mTmpWindowsIterator.reset(REVERSE_ITERATOR); + while (mTmpWindowsIterator.hasNext()) { + final WindowState w = mTmpWindowsIterator.next(); Slog.v(TAG, " #" + i++ + ": " + w); } } - private int findWindowOffsetLocked(WindowList windows, int tokenPos) { - final int NW = windows.size(); - - if (tokenPos >= mAnimatingAppTokens.size()) { - int i = NW; - while (i > 0) { - i--; - WindowState win = windows.get(i); - if (win.getAppToken() != null) { - return i+1; - } - } + private int findAppWindowInsertionPointLocked(AppWindowToken target) { + final int taskId = target.groupId; + DisplayContent displayContent = mTaskIdToDisplayContents.get(taskId); + if (displayContent == null) { + Slog.w(TAG, "findTopAppWindowLocked: no DisplayContent for " + target); + return 0; } + final WindowList windows = displayContent.getWindowList(); + final int NW = windows.size(); - while (tokenPos > 0) { - // Find the first app token below the new position that has - // a window displayed. - final AppWindowToken wtoken = mAppTokens.get(tokenPos-1); - if (DEBUG_REORDER) Slog.v(TAG, "Looking for lower windows @ " - + tokenPos + " -- " + wtoken.token); - if (wtoken.sendingToBottom) { - if (DEBUG_REORDER) Slog.v(TAG, - "Skipping token -- currently sending to bottom"); - tokenPos--; + boolean found = false; + final ArrayList<TaskList> tasks = displayContent.mTaskLists; + for (int taskNdx = tasks.size() - 1; taskNdx >= 0; --taskNdx) { + final TaskList task = tasks.get(taskNdx); + if (!found && task.taskId != taskId) { continue; } - int i = wtoken.windows.size(); - while (i > 0) { - i--; - WindowState win = wtoken.windows.get(i); - int j = win.mChildWindows.size(); - while (j > 0) { - j--; - WindowState cwin = win.mChildWindows.get(j); - if (cwin.mSubLayer >= 0) { - for (int pos=NW-1; pos>=0; pos--) { - if (windows.get(pos) == cwin) { - if (DEBUG_REORDER) Slog.v(TAG, - "Found child win @" + (pos+1)); - return pos+1; + AppTokenList tokens = task.mAppTokens; + for (int tokenNdx = tokens.size() - 1; tokenNdx >= 0; --tokenNdx) { + final AppWindowToken wtoken = tokens.get(tokenNdx); + if (!found && wtoken == target) { + found = true; + } + if (found) { + // Find the first app token below the new position that has + // a window displayed. + if (DEBUG_REORDER) Slog.v(TAG, "Looking for lower windows in " + wtoken.token); + if (wtoken.sendingToBottom) { + if (DEBUG_REORDER) Slog.v(TAG, "Skipping token -- currently sending to bottom"); + continue; + } + for (int i = wtoken.windows.size() - 1; i >= 0; --i) { + WindowState win = wtoken.windows.get(i); + for (int j = win.mChildWindows.size() - 1; j >= 0; --j) { + WindowState cwin = win.mChildWindows.get(j); + if (cwin.mSubLayer >= 0) { + for (int pos = NW - 1; pos >= 0; pos--) { + if (windows.get(pos) == cwin) { + if (DEBUG_REORDER) Slog.v(TAG, + "Found child win @" + (pos + 1)); + return pos + 1; + } + } + } + } + for (int pos = NW - 1; pos >= 0; pos--) { + if (windows.get(pos) == win) { + if (DEBUG_REORDER) Slog.v(TAG, "Found win @" + (pos + 1)); + return pos + 1; } } - } - } - for (int pos=NW-1; pos>=0; pos--) { - if (windows.get(pos) == win) { - if (DEBUG_REORDER) Slog.v(TAG, "Found win @" + (pos+1)); - return pos+1; } } } - tokenPos--; } return 0; @@ -4513,198 +4553,104 @@ public class WindowManagerService extends IWindowManager.Stub return index; } - @Override - public void moveAppToken(int index, IBinder token) { - if (!checkCallingPermission(android.Manifest.permission.MANAGE_APP_TOKENS, - "moveAppToken()")) { - throw new SecurityException("Requires MANAGE_APP_TOKENS permission"); - } - - synchronized(mWindowMap) { - if (DEBUG_REORDER) Slog.v(TAG, "Initial app tokens:"); - if (DEBUG_REORDER) dumpAppTokensLocked(); - final AppWindowToken wtoken = findAppWindowToken(token); - final int oldIndex = mAppTokens.indexOf(wtoken); - if (DEBUG_TOKEN_MOVEMENT || DEBUG_REORDER) Slog.v(TAG, - "Start moving token " + wtoken + " initially at " - + oldIndex); - if (oldIndex > index && mAppTransition.isTransitionSet()) { - // animation towards back has not started, copy old list for duration of animation. - mAnimatingAppTokens.clear(); - mAnimatingAppTokens.addAll(mAppTokens); - } - if (wtoken == null || !mAppTokens.remove(wtoken)) { - Slog.w(TAG, "Attempting to reorder token that doesn't exist: " - + token + " (" + wtoken + ")"); - return; - } - mAppTokens.add(index, wtoken); - if (DEBUG_REORDER) Slog.v(TAG, "Moved " + token + " to " + index + ":"); - else if (DEBUG_TOKEN_MOVEMENT) Slog.v(TAG, "Moved " + token + " to " + index); - if (DEBUG_REORDER) dumpAppTokensLocked(); - if (!mAppTransition.isTransitionSet()) { - // Not animating, bring animating app list in line with mAppTokens. - mAnimatingAppTokens.clear(); - mAnimatingAppTokens.addAll(mAppTokens); - - // Bring window ordering, window focus and input window in line with new app token - final long origId = Binder.clearCallingIdentity(); - if (DEBUG_REORDER) Slog.v(TAG, "Removing windows in " + token + ":"); - if (DEBUG_REORDER) dumpWindowsLocked(); - if (tmpRemoveAppWindowsLocked(wtoken)) { - if (DEBUG_REORDER) Slog.v(TAG, "Adding windows back in:"); - if (DEBUG_REORDER) dumpWindowsLocked(); - DisplayContentsIterator iterator = new DisplayContentsIterator(); - while(iterator.hasNext()) { - final DisplayContent displayContent = iterator.next(); - final WindowList windows = displayContent.getWindowList(); - final int pos = findWindowOffsetLocked(windows, index); - final int newPos = reAddAppWindowsLocked(displayContent, pos, wtoken); - if (pos != newPos) { - displayContent.layoutNeeded = true; - } - } - if (DEBUG_REORDER) Slog.v(TAG, "Final window list:"); - if (DEBUG_REORDER) dumpWindowsLocked(); - updateFocusedWindowLocked(UPDATE_FOCUS_WILL_PLACE_SURFACES, - false /*updateInputWindows*/); - mInputMonitor.setUpdateInputWindowsNeededLw(); - performLayoutAndPlaceSurfacesLocked(); - mInputMonitor.updateInputWindowsLw(false /*force*/); - } - Binder.restoreCallingIdentity(origId); - } + private void moveTaskWindowsLocked(int taskId) { + DisplayContent displayContent = mTaskIdToDisplayContents.get(taskId); + if (displayContent == null) { + Slog.w(TAG, "moveTaskWindowsLocked: can't find DisplayContent for taskId=" + taskId); + return; } - } - private void removeAppTokensLocked(List<IBinder> tokens) { - // XXX This should be done more efficiently! - // (take advantage of the fact that both lists should be - // ordered in the same way.) - int N = tokens.size(); - for (int i=0; i<N; i++) { - IBinder token = tokens.get(i); - final AppWindowToken wtoken = findAppWindowToken(token); - if (DEBUG_REORDER || DEBUG_TOKEN_MOVEMENT) Slog.v(TAG, - "Temporarily removing " + wtoken + " from " + mAppTokens.indexOf(wtoken)); - if (!mAppTokens.remove(wtoken)) { - Slog.w(TAG, "Attempting to reorder token that doesn't exist: " - + token + " (" + wtoken + ")"); - i--; - N--; - } + TaskList taskList = displayContent.mTaskIdToTaskList.get(taskId); + if (taskList == null) { + Slog.w(TAG, "moveTaskWindowsLocked: can't find TaskList for taskId=" + taskId); + return; } - } - private void moveAppWindowsLocked(List<IBinder> tokens, int tokenPos) { // First remove all of the windows from the list. - final int N = tokens.size(); - int i; - for (i=0; i<N; i++) { - WindowToken token = mTokenMap.get(tokens.get(i)); - if (token != null) { - tmpRemoveAppWindowsLocked(token); - } + for (AppWindowToken wtoken : taskList.mAppTokens) { + tmpRemoveAppWindowsLocked(wtoken); } // And now add them back at the correct place. - DisplayContentsIterator iterator = new DisplayContentsIterator(); - while (iterator.hasNext()) { - final DisplayContent displayContent = iterator.next(); - final WindowList windows = displayContent.getWindowList(); - // Where to start adding? - int pos = findWindowOffsetLocked(windows, tokenPos); - for (i=0; i<N; i++) { - WindowToken token = mTokenMap.get(tokens.get(i)); - if (token != null) { - final int newPos = reAddAppWindowsLocked(displayContent, pos, token); - if (newPos != pos) { - displayContent.layoutNeeded = true; - } - pos = newPos; + // Where to start adding? + int pos = findAppWindowInsertionPointLocked(taskList.mAppTokens.get(0)); + for (AppWindowToken wtoken : taskList.mAppTokens) { + if (wtoken != null) { + final int newPos = reAddAppWindowsLocked(displayContent, pos, wtoken); + if (newPos != pos) { + displayContent.layoutNeeded = true; } - } - if (!updateFocusedWindowLocked(UPDATE_FOCUS_WILL_PLACE_SURFACES, - false /*updateInputWindows*/)) { - assignLayersLocked(windows); + pos = newPos; } } + if (!updateFocusedWindowLocked(UPDATE_FOCUS_WILL_PLACE_SURFACES, + false /*updateInputWindows*/)) { + assignLayersLocked(displayContent.getWindowList()); + } + updateFocusedWindowLocked(UPDATE_FOCUS_WILL_PLACE_SURFACES, + false /*updateInputWindows*/); mInputMonitor.setUpdateInputWindowsNeededLw(); - - // Note that the above updateFocusedWindowLocked used to sit here. - performLayoutAndPlaceSurfacesLocked(); mInputMonitor.updateInputWindowsLw(false /*force*/); //dump(); } - @Override - public void moveAppTokensToTop(List<IBinder> tokens) { - if (!checkCallingPermission(android.Manifest.permission.MANAGE_APP_TOKENS, - "moveAppTokensToTop()")) { - throw new SecurityException("Requires MANAGE_APP_TOKENS permission"); - } - + public void moveTaskToTop(int taskId) { final long origId = Binder.clearCallingIdentity(); - synchronized(mWindowMap) { - removeAppTokensLocked(tokens); - final int N = tokens.size(); - for (int i=0; i<N; i++) { - AppWindowToken wt = findAppWindowToken(tokens.get(i)); - if (wt != null) { - if (DEBUG_TOKEN_MOVEMENT || DEBUG_REORDER) Slog.v(TAG, - "Adding next to top: " + wt); - mAppTokens.add(wt); - if (mAppTransition.isTransitionSet()) { - wt.sendingToBottom = false; - } + try { + synchronized(mWindowMap) { + DisplayContent displayContent = mTaskIdToDisplayContents.get(taskId); + if (displayContent == null) { + Slog.e(TAG, "moveTaskToTop: taskId=" + taskId + + " not found in mTaskIdToDisplayContents"); + return; } - } + TaskList taskList = displayContent.mTaskIdToTaskList.get(taskId); + if (taskList == null) { + Slog.e(TAG, "moveTaskToTop: taskId=" + taskId + + " not found in mTaskIdToTaskLists"); + return; + } + if (!displayContent.mTaskLists.remove(taskList)) { + Slog.e(TAG, "moveTaskToTop: taskId=" + taskId + " not found in mTaskLists"); + } + displayContent.mTaskLists.add(taskList); - mAnimatingAppTokens.clear(); - mAnimatingAppTokens.addAll(mAppTokens); - moveAppWindowsLocked(tokens, mAppTokens.size()); + moveTaskWindowsLocked(taskId); + } + } finally { + Binder.restoreCallingIdentity(origId); } - Binder.restoreCallingIdentity(origId); } - @Override - public void moveAppTokensToBottom(List<IBinder> tokens) { - if (!checkCallingPermission(android.Manifest.permission.MANAGE_APP_TOKENS, - "moveAppTokensToBottom()")) { - throw new SecurityException("Requires MANAGE_APP_TOKENS permission"); - } - + public void moveTaskToBottom(int taskId) { final long origId = Binder.clearCallingIdentity(); - synchronized(mWindowMap) { - final int N = tokens.size(); - if (N > 0) { - // animating towards back, hang onto old list for duration of animation. - mAnimatingAppTokens.clear(); - mAnimatingAppTokens.addAll(mAppTokens); - } - removeAppTokensLocked(tokens); - int pos = 0; - for (int i=0; i<N; i++) { - AppWindowToken wt = findAppWindowToken(tokens.get(i)); - if (wt != null) { - if (DEBUG_TOKEN_MOVEMENT) Slog.v(TAG, - "Adding next to bottom: " + wt + " at " + pos); - mAppTokens.add(pos, wt); - if (mAppTransition.isTransitionSet()) { - wt.sendingToBottom = true; - } - pos++; + try { + synchronized(mWindowMap) { + DisplayContent displayContent = mTaskIdToDisplayContents.get(taskId); + if (displayContent == null) { + Slog.e(TAG, "moveTaskToBottom: taskId=" + taskId + + " not found in mTaskIdToDisplayContents"); + return; } - } + TaskList taskList = displayContent.mTaskIdToTaskList.get(taskId); + if (taskList == null) { + Slog.e(TAG, "moveTaskToTopBottom: taskId=" + taskId + + " not found in mTaskIdToTaskLists"); + return; + } + if (!displayContent.mTaskLists.remove(taskList)) { + Slog.e(TAG, "moveTaskToBottom: taskId=" + taskId + " not found in mTaskLists"); + } + displayContent.mTaskLists.add(0, taskList); - mAnimatingAppTokens.clear(); - mAnimatingAppTokens.addAll(mAppTokens); - moveAppWindowsLocked(tokens, 0); + moveTaskWindowsLocked(taskId); + } + } finally { + Binder.restoreCallingIdentity(origId); } - Binder.restoreCallingIdentity(origId); } // ------------------------------------------------------------- @@ -4825,9 +4771,9 @@ public class WindowManagerService extends IWindowManager.Stub @Override public void closeSystemDialogs(String reason) { synchronized(mWindowMap) { - final AllWindowsIterator iterator = new AllWindowsIterator(); - while (iterator.hasNext()) { - final WindowState w = iterator.next(); + mTmpWindowsIterator.reset(FORWARD_ITERATOR); + while (mTmpWindowsIterator.hasNext()) { + final WindowState w = mTmpWindowsIterator.next(); if (w.mHasSurface) { try { w.mClient.closeSystemDialogs(reason); @@ -5221,9 +5167,9 @@ public class WindowManagerService extends IWindowManager.Stub // the background..) if (on) { boolean isVisible = false; - final AllWindowsIterator iterator = new AllWindowsIterator(); - while (iterator.hasNext()) { - final WindowState ws = iterator.next(); + mTmpWindowsIterator.reset(FORWARD_ITERATOR); + while (mTmpWindowsIterator.hasNext()) { + final WindowState ws = mTmpWindowsIterator.next(); if (ws.mSession.mPid == pid && ws.isVisibleLw()) { isVisible = true; break; @@ -6118,9 +6064,9 @@ public class WindowManagerService extends IWindowManager.Stub } synchronized (mWindowMap) { - final AllWindowsIterator iterator = new AllWindowsIterator(); - while (iterator.hasNext()) { - final WindowState w = iterator.next(); + mTmpWindowsIterator.reset(FORWARD_ITERATOR); + while (mTmpWindowsIterator.hasNext()) { + final WindowState w = mTmpWindowsIterator.next(); if (System.identityHashCode(w) == hashCode) { return w; } @@ -6669,10 +6615,10 @@ public class WindowManagerService extends IWindowManager.Stub // TODO(multidisplay): Call isScreenOn for each display. private void sendScreenStatusToClientsLocked() { final boolean on = mPowerManager.isScreenOn(); - final AllWindowsIterator iterator = new AllWindowsIterator(); - while (iterator.hasNext()) { + mTmpWindowsIterator.reset(FORWARD_ITERATOR); + while (mTmpWindowsIterator.hasNext()) { try { - iterator.next().mClient.dispatchScreenState(on); + mTmpWindowsIterator.next().mClient.dispatchScreenState(on); } catch (RemoteException e) { // Ignored } @@ -6956,8 +6902,6 @@ public class WindowManagerService extends IWindowManager.Stub if (mAppTransition.isTransitionSet()) { if (DEBUG_APP_TRANSITIONS) Slog.v(TAG, "*** APP TRANSITION TIMEOUT"); mAppTransition.setTimeout(); - mAnimatingAppTokens.clear(); - mAnimatingAppTokens.addAll(mAppTokens); performLayoutAndPlaceSurfacesLocked(); } } @@ -7002,13 +6946,16 @@ public class WindowManagerService extends IWindowManager.Stub case APP_FREEZE_TIMEOUT: { synchronized (mWindowMap) { Slog.w(TAG, "App freeze timeout expired."); - int i = mAppTokens.size(); - while (i > 0) { - i--; - AppWindowToken tok = mAppTokens.get(i); - if (tok.mAppAnimator.freezingScreen) { - Slog.w(TAG, "Force clearing freeze: " + tok); - unsetAppFreezingScreenLocked(tok, true, true); + DisplayContent displayContent = getDefaultDisplayContentLocked(); + final ArrayList<TaskList> tasks = displayContent.mTaskLists; + for (int taskNdx = tasks.size() - 1; taskNdx >= 0; --taskNdx) { + AppTokenList tokens = tasks.get(taskNdx).mAppTokens; + for (int tokenNdx = tokens.size() - 1; tokenNdx >= 0; --tokenNdx) { + AppWindowToken tok = tokens.get(tokenNdx); + if (tok.mAppAnimator.freezingScreen) { + Slog.w(TAG, "Force clearing freeze: " + tok); + unsetAppFreezingScreenLocked(tok, true, true); + } } } } @@ -7404,6 +7351,7 @@ public class WindowManagerService extends IWindowManager.Stub performLayoutAndPlaceSurfacesLocked(); } + @Override public void setOverscan(int displayId, int left, int top, int right, int bottom) { if (mContext.checkCallingOrSelfPermission( android.Manifest.permission.WRITE_SECURE_SETTINGS) != @@ -7522,15 +7470,22 @@ public class WindowManagerService extends IWindowManager.Stub // in the main app list, but still have windows shown. We put them // in the back because now that the animation is over we no longer // will care about them. - int NT = mExitingAppTokens.size(); + AppTokenList exitingAppTokens = displayContent.mExitingAppTokens; + int NT = exitingAppTokens.size(); for (int j=0; j<NT; j++) { - i = reAddAppWindowsLocked(displayContent, i, mExitingAppTokens.get(j)); + i = reAddAppWindowsLocked(displayContent, i, exitingAppTokens.get(j)); } // And add in the still active app tokens in Z order. - NT = mAnimatingAppTokens.size(); - for (int j=0; j<NT; j++) { - i = reAddAppWindowsLocked(displayContent, i, mAnimatingAppTokens.get(j)); + final ArrayList<TaskList> tasks = displayContent.mTaskLists; + final int numTasks = tasks.size(); + for (int taskNdx = 0; taskNdx < numTasks; ++taskNdx) { + final AppTokenList tokens = tasks.get(taskNdx).mAppTokens; + final int numTokens = tokens.size(); + for (int tokenNdx = 0; tokenNdx < numTokens; ++tokenNdx) { + final AppWindowToken wtoken = tokens.get(tokenNdx); + i = reAddAppWindowsLocked(displayContent, i, wtoken); + } } i -= lastBelow; @@ -7550,7 +7505,7 @@ public class WindowManagerService extends IWindowManager.Stub } } Slog.w(TAG, "Current app token list:"); - dumpAnimatingAppTokensLocked(); + dumpAppTokensLocked(); Slog.w(TAG, "Final window list:"); dumpWindowsLocked(); } @@ -8200,11 +8155,17 @@ public class WindowManagerService extends IWindowManager.Stub mAppTransition.setIdle(); // Restore window app tokens to the ActivityManager views - for (int i = mAnimatingAppTokens.size() - 1; i >= 0; i--) { - mAnimatingAppTokens.get(i).sendingToBottom = false; + final DisplayContent displayContent = getDefaultDisplayContentLocked(); + final ArrayList<TaskList> tasks = displayContent.mTaskLists; + final int numTasks = tasks.size(); + for (int taskNdx = 0; taskNdx < numTasks; ++taskNdx) { + final AppTokenList tokens = tasks.get(taskNdx).mAppTokens; + final int numTokens = tokens.size(); + for (int tokenNdx = 0; tokenNdx < numTokens; ++tokenNdx) { + final AppWindowToken wtoken = tokens.get(tokenNdx); + wtoken.sendingToBottom = false; + } } - mAnimatingAppTokens.clear(); - mAnimatingAppTokens.addAll(mAppTokens); rebuildAppWindowListLocked(); changes |= PhoneWindowManager.FINISH_LAYOUT_REDO_LAYOUT; @@ -8361,21 +8322,25 @@ public class WindowManagerService extends IWindowManager.Stub } } - private void updateAllDrawnLocked() { + private void updateAllDrawnLocked(DisplayContent displayContent) { // See if any windows have been drawn, so they (and others // associated with them) can now be shown. - final ArrayList<AppWindowToken> appTokens = mAnimatingAppTokens; - final int NT = appTokens.size(); - for (int i=0; i<NT; i++) { - AppWindowToken wtoken = appTokens.get(i); - if (!wtoken.allDrawn) { - int numInteresting = wtoken.numInterestingWindows; - if (numInteresting > 0 && wtoken.numDrawnWindows >= numInteresting) { - if (WindowManagerService.DEBUG_VISIBILITY) Slog.v(TAG, - "allDrawn: " + wtoken - + " interesting=" + numInteresting - + " drawn=" + wtoken.numDrawnWindows); - wtoken.allDrawn = true; + final ArrayList<TaskList> tasks = displayContent.mTaskLists; + final int numTasks = tasks.size(); + for (int taskNdx = 0; taskNdx < numTasks; ++taskNdx) { + final AppTokenList tokens = tasks.get(taskNdx).mAppTokens; + final int numTokens = tokens.size(); + for (int tokenNdx = 0; tokenNdx < numTokens; ++tokenNdx) { + final AppWindowToken wtoken = tokens.get(tokenNdx); + if (!wtoken.allDrawn) { + int numInteresting = wtoken.numInterestingWindows; + if (numInteresting > 0 && wtoken.numDrawnWindows >= numInteresting) { + if (WindowManagerService.DEBUG_VISIBILITY) Slog.v(TAG, + "allDrawn: " + wtoken + + " interesting=" + numInteresting + + " drawn=" + wtoken.numDrawnWindows); + wtoken.allDrawn = true; + } } } } @@ -8399,13 +8364,17 @@ public class WindowManagerService extends IWindowManager.Stub } // Initialize state of exiting tokens. - for (i=mExitingTokens.size()-1; i>=0; i--) { - mExitingTokens.get(i).hasVisible = false; - } + DisplayContentsIterator iterator = new DisplayContentsIterator(); + while (iterator.hasNext()) { + final DisplayContent displayContent = iterator.next(); + for (i=displayContent.mExitingTokens.size()-1; i>=0; i--) { + displayContent.mExitingTokens.get(i).hasVisible = false; + } - // Initialize state of exiting applications. - for (i=mExitingAppTokens.size()-1; i>=0; i--) { - mExitingAppTokens.get(i).hasVisible = false; + // Initialize state of exiting applications. + for (i=displayContent.mExitingAppTokens.size()-1; i>=0; i--) { + displayContent.mExitingAppTokens.get(i).hasVisible = false; + } } mInnerFields.mHoldScreen = null; @@ -8434,10 +8403,10 @@ public class WindowManagerService extends IWindowManager.Stub } boolean focusDisplayed = false; - boolean updateAllDrawn = false; - DisplayContentsIterator iterator = new DisplayContentsIterator(); + iterator = new DisplayContentsIterator(); while (iterator.hasNext()) { + boolean updateAllDrawn = false; final DisplayContent displayContent = iterator.next(); WindowList windows = displayContent.getWindowList(); DisplayInfo displayInfo = displayContent.getDisplayInfo(); @@ -8681,10 +8650,10 @@ public class WindowManagerService extends IWindowManager.Stub if (!mInnerFields.mDimming && mAnimator.isDimmingLocked(displayId)) { stopDimmingLocked(displayId); } - } - if (updateAllDrawn) { - updateAllDrawnLocked(); + if (updateAllDrawn) { + updateAllDrawnLocked(displayContent); + } } if (focusDisplayed) { @@ -8831,30 +8800,35 @@ public class WindowManagerService extends IWindowManager.Stub } // Time to remove any exiting tokens? - for (i=mExitingTokens.size()-1; i>=0; i--) { - WindowToken token = mExitingTokens.get(i); - if (!token.hasVisible) { - mExitingTokens.remove(i); - if (token.windowType == TYPE_WALLPAPER) { - mWallpaperTokens.remove(token); + iterator = new DisplayContentsIterator(); + while (iterator.hasNext()) { + final DisplayContent displayContent = iterator.next(); + ArrayList<WindowToken> exitingTokens = displayContent.mExitingTokens; + for (i = exitingTokens.size() - 1; i >= 0; i--) { + WindowToken token = exitingTokens.get(i); + if (!token.hasVisible) { + exitingTokens.remove(i); + if (token.windowType == TYPE_WALLPAPER) { + mWallpaperTokens.remove(token); + } } } - } - // Time to remove any exiting applications? - for (i=mExitingAppTokens.size()-1; i>=0; i--) { - AppWindowToken token = mExitingAppTokens.get(i); - if (!token.hasVisible && !mClosingApps.contains(token)) { - // Make sure there is no animation running on this token, - // so any windows associated with it will be removed as - // soon as their animations are complete - token.mAppAnimator.clearAnimation(); - token.mAppAnimator.animating = false; - if (DEBUG_ADD_REMOVE || DEBUG_TOKEN_MOVEMENT) Slog.v(TAG, - "performLayout: App token exiting now removed" + token); - mAppTokens.remove(token); - mAnimatingAppTokens.remove(token); - mExitingAppTokens.remove(i); + // Time to remove any exiting applications? + AppTokenList exitingAppTokens = displayContent.mExitingAppTokens; + for (i = exitingAppTokens.size() - 1; i >= 0; i--) { + AppWindowToken token = exitingAppTokens.get(i); + if (!token.hasVisible && !mClosingApps.contains(token)) { + // Make sure there is no animation running on this token, + // so any windows associated with it will be removed as + // soon as their animations are complete + token.mAppAnimator.clearAnimation(); + token.mAppAnimator.animating = false; + if (DEBUG_ADD_REMOVE || DEBUG_TOKEN_MOVEMENT) Slog.v(TAG, + "performLayout: App token exiting now removed" + token); + displayContent.removeAppToken(token); + exitingAppTokens.remove(i); + } } } @@ -8874,7 +8848,7 @@ public class WindowManagerService extends IWindowManager.Stub defaultDisplay.layoutNeeded = true; } - DisplayContentsIterator iterator = new DisplayContentsIterator(); + iterator = new DisplayContentsIterator(); while (iterator.hasNext()) { DisplayContent displayContent = iterator.next(); if (displayContent.pendingLayoutChanges != 0) { @@ -9125,10 +9099,10 @@ public class WindowManagerService extends IWindowManager.Stub // window list to make sure we haven't left any dangling surfaces // around. - AllWindowsIterator iterator = new AllWindowsIterator(); + mTmpWindowsIterator.reset(FORWARD_ITERATOR); Slog.i(TAG, "Out of memory for surface! Looking for leaks..."); - while (iterator.hasNext()) { - WindowState ws = iterator.next(); + while (mTmpWindowsIterator.hasNext()) { + WindowState ws = mTmpWindowsIterator.next(); WindowStateAnimator wsa = ws.mWinAnimator; if (wsa.mSurfaceControl != null) { if (!mSessions.contains(wsa.mSession)) { @@ -9161,9 +9135,9 @@ public class WindowManagerService extends IWindowManager.Stub if (!leakedSurface) { Slog.w(TAG, "No leaked surfaces; killing applicatons!"); SparseIntArray pidCandidates = new SparseIntArray(); - iterator = new AllWindowsIterator(); - while (iterator.hasNext()) { - WindowState ws = iterator.next(); + mTmpWindowsIterator.reset(FORWARD_ITERATOR); + while (mTmpWindowsIterator.hasNext()) { + WindowState ws = mTmpWindowsIterator.next(); if (mForceRemoves.contains(ws)) { continue; } @@ -9289,8 +9263,19 @@ public class WindowManagerService extends IWindowManager.Stub } private WindowState findFocusedWindowLocked(DisplayContent displayContent) { - int nextAppIndex = mAppTokens.size()-1; - WindowToken nextApp = nextAppIndex >= 0 ? mAppTokens.get(nextAppIndex) : null; + final ArrayList<TaskList> tasks = displayContent.mTaskLists; + int taskNdx = tasks.size() - 1; + AppTokenList tokens = taskNdx >= 0 ? tasks.get(taskNdx).mAppTokens : null; + int tokenNdx = tokens != null ? tokens.size() - 1 : -1; + WindowToken nextApp = tokenNdx >= 0 ? tokens.get(tokenNdx) : null; + --tokenNdx; + if (tokenNdx < 0) { + --taskNdx; + if (taskNdx >= 0) { + tokens = tasks.get(taskNdx).mAppTokens; + tokenNdx = tokens.size() - 1; + } + } final WindowList windows = displayContent.getWindowList(); for (int i = windows.size() - 1; i >= 0; i--) { @@ -9316,18 +9301,25 @@ public class WindowManagerService extends IWindowManager.Stub // through the app tokens until we find its app. if (thisApp != null && nextApp != null && thisApp != nextApp && win.mAttrs.type != TYPE_APPLICATION_STARTING) { - int origAppIndex = nextAppIndex; - while (nextAppIndex > 0) { - if (nextApp == mFocusedApp) { - // Whoops, we are below the focused app... no focus - // for you! - if (localLOGV || DEBUG_FOCUS) Slog.v( - TAG, "Reached focused app: " + mFocusedApp); - return null; - } - nextAppIndex--; - nextApp = mAppTokens.get(nextAppIndex); - if (nextApp == thisApp) { + final WindowToken origAppToken = nextApp; + final int origTaskNdx = taskNdx; + final int origTokenNdx = tokenNdx; + for ( ; taskNdx >= 0; --taskNdx) { + tokens = tasks.get(taskNdx).mAppTokens; + for ( ; tokenNdx >= 0; --tokenNdx) { + if (nextApp == mFocusedApp) { + // Whoops, we are below the focused app... no focus + // for you! + if (localLOGV || DEBUG_FOCUS) Slog.v( + TAG, "Reached focused app: " + mFocusedApp); + return null; + } + nextApp = tokens.get(tokenNdx); + if (nextApp == thisApp) { + break; + } + } + if (thisApp == nextApp) { break; } } @@ -9335,8 +9327,10 @@ public class WindowManagerService extends IWindowManager.Stub // Uh oh, the app token doesn't exist! This shouldn't // happen, but if it does we can get totally hosed... // so restart at the original app. - nextAppIndex = origAppIndex; - nextApp = mAppTokens.get(nextAppIndex); + nextApp = origAppToken; + // return indices to same place. + taskNdx = origTaskNdx; + tokenNdx = origTokenNdx; } } @@ -9706,15 +9700,6 @@ public class WindowManagerService extends IWindowManager.Stub } } } - if (mAppTokens.size() > 0) { - pw.println(); - pw.println(" Application tokens in Z order:"); - for (int i=mAppTokens.size()-1; i>=0; i--) { - pw.print(" App #"); pw.print(i); - pw.print(' '); pw.print(mAppTokens.get(i)); pw.println(":"); - mAppTokens.get(i).dump(pw, " "); - } - } if (mFinishedStarting.size() > 0) { pw.println(); pw.println(" Finishing start of application tokens:"); @@ -9730,51 +9715,6 @@ public class WindowManagerService extends IWindowManager.Stub } } } - if (mExitingTokens.size() > 0) { - pw.println(); - pw.println(" Exiting tokens:"); - for (int i=mExitingTokens.size()-1; i>=0; i--) { - WindowToken token = mExitingTokens.get(i); - pw.print(" Exiting #"); pw.print(i); - pw.print(' '); pw.print(token); - if (dumpAll) { - pw.println(':'); - token.dump(pw, " "); - } else { - pw.println(); - } - } - } - if (mExitingAppTokens.size() > 0) { - pw.println(); - pw.println(" Exiting application tokens:"); - for (int i=mExitingAppTokens.size()-1; i>=0; i--) { - WindowToken token = mExitingAppTokens.get(i); - pw.print(" Exiting App #"); pw.print(i); - pw.print(' '); pw.print(token); - if (dumpAll) { - pw.println(':'); - token.dump(pw, " "); - } else { - pw.println(); - } - } - } - if (mAppTransition.isRunning() && mAnimatingAppTokens.size() > 0) { - pw.println(); - pw.println(" Application tokens during animation:"); - for (int i=mAnimatingAppTokens.size()-1; i>=0; i--) { - WindowToken token = mAnimatingAppTokens.get(i); - pw.print(" App moving to bottom #"); pw.print(i); - pw.print(' '); pw.print(token); - if (dumpAll) { - pw.println(':'); - token.dump(pw, " "); - } else { - pw.println(); - } - } - } if (mOpeningApps.size() > 0 || mClosingApps.size() > 0) { pw.println(); if (mOpeningApps.size() > 0) { @@ -9819,9 +9759,9 @@ public class WindowManagerService extends IWindowManager.Stub void dumpWindowsNoHeaderLocked(PrintWriter pw, boolean dumpAll, ArrayList<WindowState> windows) { int j = 0; - final AllWindowsIterator iterator = new AllWindowsIterator(REVERSE_ITERATOR); - while (iterator.hasNext()) { - final WindowState w = iterator.next(); + mTmpWindowsIterator.reset(REVERSE_ITERATOR); + while (mTmpWindowsIterator.hasNext()) { + final WindowState w = mTmpWindowsIterator.next(); if (windows == null || windows.contains(w)) { pw.print(" Window #"); pw.print(j++); pw.print(' '); pw.print(w); pw.println(":"); @@ -10007,9 +9947,9 @@ public class WindowManagerService extends IWindowManager.Stub WindowList windows = new WindowList(); if ("visible".equals(name)) { synchronized(mWindowMap) { - final AllWindowsIterator iterator = new AllWindowsIterator(REVERSE_ITERATOR); - while (iterator.hasNext()) { - final WindowState w = iterator.next(); + mTmpWindowsIterator.reset(REVERSE_ITERATOR); + while (mTmpWindowsIterator.hasNext()) { + final WindowState w = mTmpWindowsIterator.next(); if (w.mWinAnimator.mSurfaceShown) { windows.add(w); } @@ -10024,9 +9964,9 @@ public class WindowManagerService extends IWindowManager.Stub } catch (RuntimeException e) { } synchronized(mWindowMap) { - final AllWindowsIterator iterator = new AllWindowsIterator(REVERSE_ITERATOR); - while (iterator.hasNext()) { - final WindowState w = iterator.next(); + mTmpWindowsIterator.reset(REVERSE_ITERATOR); + while (mTmpWindowsIterator.hasNext()) { + final WindowState w = mTmpWindowsIterator.next(); if (name != null) { if (w.mAttrs.getTitle().toString().contains(name)) { windows.add(w); @@ -10279,6 +10219,10 @@ public class WindowManagerService extends IWindowManager.Stub class DisplayContentsIterator implements Iterator<DisplayContent> { private int cur; + void reset() { + cur = 0; + } + @Override public boolean hasNext() { return cur < mDisplayContents.size(); @@ -10298,7 +10242,6 @@ public class WindowManagerService extends IWindowManager.Stub } } - final static boolean REVERSE_ITERATOR = true; class AllWindowsIterator implements Iterator<WindowState> { private DisplayContent mDisplayContent; private DisplayContentsIterator mDisplayContentsIterator; @@ -10307,19 +10250,33 @@ public class WindowManagerService extends IWindowManager.Stub private boolean mReverse; AllWindowsIterator() { - mDisplayContentsIterator = new DisplayContentsIterator(); - mDisplayContent = mDisplayContentsIterator.next(); - mWindowList = mDisplayContent.getWindowList(); + this(false); } AllWindowsIterator(boolean reverse) { - this(); + mDisplayContentsIterator = new DisplayContentsIterator(); + reset(reverse); + } + + void reset(boolean reverse) { mReverse = reverse; - mWindowListIndex = reverse ? mWindowList.size() - 1 : 0; + mDisplayContentsIterator.reset(); + if (mDisplayContentsIterator.hasNext()) { + mDisplayContent = mDisplayContentsIterator.next(); + mWindowList = mDisplayContent.getWindowList(); + mWindowListIndex = reverse ? mWindowList.size() - 1 : 0; + } else { + mDisplayContent = null; + mWindowList = null; + mWindowListIndex = 0; + } } @Override public boolean hasNext() { + if (mDisplayContent == null) { + return false; + } if (mReverse) { return mWindowListIndex >= 0; } diff --git a/services/java/com/android/server/wm/WindowState.java b/services/java/com/android/server/wm/WindowState.java index 506fcecfa51b..ca6d2cab044b 100644 --- a/services/java/com/android/server/wm/WindowState.java +++ b/services/java/com/android/server/wm/WindowState.java @@ -55,6 +55,12 @@ import java.io.PrintWriter; import java.util.ArrayList; class WindowList extends ArrayList<WindowState> { + WindowList() { + super(); + } + WindowList(WindowList windows) { + super(windows); + } } /** @@ -1109,7 +1115,7 @@ final class WindowState implements WindowManagerPolicy.WindowState { return true; } - public boolean setAppOpVisibilityLw(boolean state) { + public void setAppOpVisibilityLw(boolean state) { if (mAppOpVisibility != state) { mAppOpVisibility = state; if (state) { @@ -1119,13 +1125,11 @@ final class WindowState implements WindowManagerPolicy.WindowState { // ops modifies they should only be hidden by policy due to the // lock screen, and the user won't be changing this if locked. // Plus it will quickly be fixed the next time we do a layout. - showLw(true, false); + showLw(true, true); } else { - hideLw(true, false); + hideLw(true, true); } - return true; } - return false; } @Override diff --git a/services/java/com/android/server/wm/WindowToken.java b/services/java/com/android/server/wm/WindowToken.java index bd0ace89e49d..22671234c538 100644 --- a/services/java/com/android/server/wm/WindowToken.java +++ b/services/java/com/android/server/wm/WindowToken.java @@ -19,7 +19,6 @@ package com.android.server.wm; import android.os.IBinder; import java.io.PrintWriter; -import java.util.ArrayList; /** * Container of a set of related windows in the window manager. Often this diff --git a/tests/permission/src/com/android/framework/permission/tests/WindowManagerPermissionTests.java b/tests/permission/src/com/android/framework/permission/tests/WindowManagerPermissionTests.java index 746ac0622300..03871f63db20 100644 --- a/tests/permission/src/com/android/framework/permission/tests/WindowManagerPermissionTests.java +++ b/tests/permission/src/com/android/framework/permission/tests/WindowManagerPermissionTests.java @@ -222,37 +222,7 @@ public class WindowManagerPermissionTests extends TestCase { } catch (RemoteException e) { fail("Unexpected remote exception"); } - - try { - mWm.moveAppToken(0, null); - fail("IWindowManager.moveAppToken did not throw SecurityException as" - + " expected"); - } catch (SecurityException e) { - // expected - } catch (RemoteException e) { - fail("Unexpected remote exception"); - } - - try { - mWm.moveAppTokensToTop(null); - fail("IWindowManager.moveAppTokensToTop did not throw SecurityException as" - + " expected"); - } catch (SecurityException e) { - // expected - } catch (RemoteException e) { - fail("Unexpected remote exception"); - } - - try { - mWm.moveAppTokensToBottom(null); - fail("IWindowManager.moveAppTokensToBottom did not throw SecurityException as" - + " expected"); - } catch (SecurityException e) { - // expected - } catch (RemoteException e) { - fail("Unexpected remote exception"); - } - } + } @SmallTest public void testDISABLE_KEYGUARD() { diff --git a/tools/layoutlib/bridge/src/android/view/IWindowManagerImpl.java b/tools/layoutlib/bridge/src/android/view/IWindowManagerImpl.java index 59ae1a1d4817..278413e4395e 100644 --- a/tools/layoutlib/bridge/src/android/view/IWindowManagerImpl.java +++ b/tools/layoutlib/bridge/src/android/view/IWindowManagerImpl.java @@ -210,24 +210,6 @@ public class IWindowManagerImpl implements IWindowManager { } @Override - public void moveAppToken(int arg0, IBinder arg1) throws RemoteException { - // TODO Auto-generated method stub - - } - - @Override - public void moveAppTokensToBottom(List<IBinder> arg0) throws RemoteException { - // TODO Auto-generated method stub - - } - - @Override - public void moveAppTokensToTop(List<IBinder> arg0) throws RemoteException { - // TODO Auto-generated method stub - - } - - @Override public IWindowSession openSession(IInputMethodClient arg0, IInputContext arg1) throws RemoteException { // TODO Auto-generated method stub |