diff options
196 files changed, 2384 insertions, 769 deletions
diff --git a/api/current.txt b/api/current.txt index 548433e762d5..9251d394408e 100644 --- a/api/current.txt +++ b/api/current.txt @@ -7255,6 +7255,7 @@ package android.content.pm { method public abstract java.util.List<android.content.pm.InstrumentationInfo> queryInstrumentation(java.lang.String, int); method public abstract java.util.List<android.content.pm.ResolveInfo> queryIntentActivities(android.content.Intent, int); method public abstract java.util.List<android.content.pm.ResolveInfo> queryIntentActivityOptions(android.content.ComponentName, android.content.Intent[], android.content.Intent, int); + method public abstract java.util.List<android.content.pm.ResolveInfo> queryIntentContentProviders(android.content.Intent, int); method public abstract java.util.List<android.content.pm.ResolveInfo> queryIntentServices(android.content.Intent, int); method public abstract java.util.List<android.content.pm.PermissionInfo> queryPermissionsByGroup(java.lang.String, int) throws android.content.pm.PackageManager.NameNotFoundException; method public abstract deprecated void removePackageFromPreferred(java.lang.String); @@ -7420,6 +7421,7 @@ package android.content.pm { ctor public ProviderInfo(); ctor public ProviderInfo(android.content.pm.ProviderInfo); method public int describeContents(); + method public void dump(android.util.Printer, java.lang.String); field public static final android.os.Parcelable.Creator CREATOR; field public static final int FLAG_SINGLE_USER = 1073741824; // 0x40000000 field public java.lang.String authority; @@ -7453,6 +7455,7 @@ package android.content.pm { field public java.lang.CharSequence nonLocalizedLabel; field public int preferredOrder; field public int priority; + field public android.content.pm.ProviderInfo providerInfo; field public java.lang.String resolvePackageName; field public android.content.pm.ServiceInfo serviceInfo; field public int specificIndex; @@ -20982,6 +20985,7 @@ package android.provider { field public static final java.lang.String EXTRA_ERROR = "error"; field public static final java.lang.String EXTRA_INFO = "info"; field public static final java.lang.String EXTRA_LOADING = "loading"; + field public static final java.lang.String PROVIDER_INTERFACE = "android.content.action.DOCUMENTS_PROVIDER"; } public static final class DocumentsContract.Document { @@ -24477,6 +24481,7 @@ package android.test.mock { method public java.util.List<android.content.pm.InstrumentationInfo> queryInstrumentation(java.lang.String, int); method public java.util.List<android.content.pm.ResolveInfo> queryIntentActivities(android.content.Intent, int); method public java.util.List<android.content.pm.ResolveInfo> queryIntentActivityOptions(android.content.ComponentName, android.content.Intent[], android.content.Intent, int); + method public java.util.List<android.content.pm.ResolveInfo> queryIntentContentProviders(android.content.Intent, int); method public java.util.List<android.content.pm.ResolveInfo> queryIntentServices(android.content.Intent, int); method public java.util.List<android.content.pm.PermissionInfo> queryPermissionsByGroup(java.lang.String, int) throws android.content.pm.PackageManager.NameNotFoundException; method public void removePackageFromPreferred(java.lang.String); diff --git a/core/java/android/app/ApplicationPackageManager.java b/core/java/android/app/ApplicationPackageManager.java index 55c66726c387..b505d4f8e878 100644 --- a/core/java/android/app/ApplicationPackageManager.java +++ b/core/java/android/app/ApplicationPackageManager.java @@ -585,6 +585,22 @@ final class ApplicationPackageManager extends PackageManager { } @Override + public List<ResolveInfo> queryIntentContentProvidersAsUser( + Intent intent, int flags, int userId) { + try { + return mPM.queryIntentContentProviders(intent, + intent.resolveTypeIfNeeded(mContext.getContentResolver()), flags, userId); + } catch (RemoteException e) { + throw new RuntimeException("Package manager has died", e); + } + } + + @Override + public List<ResolveInfo> queryIntentContentProviders(Intent intent, int flags) { + return queryIntentContentProvidersAsUser(intent, flags, mContext.getUserId()); + } + + @Override public ProviderInfo resolveContentProvider(String name, int flags) { try { diff --git a/core/java/android/content/pm/IPackageManager.aidl b/core/java/android/content/pm/IPackageManager.aidl index acd4ffa1a7fc..267fb2af2dd1 100644 --- a/core/java/android/content/pm/IPackageManager.aidl +++ b/core/java/android/content/pm/IPackageManager.aidl @@ -123,6 +123,9 @@ interface IPackageManager { List<ResolveInfo> queryIntentServices(in Intent intent, String resolvedType, int flags, int userId); + List<ResolveInfo> queryIntentContentProviders(in Intent intent, + String resolvedType, int flags, int userId); + /** * This implements getInstalledPackages via a "last returned row" * mechanism that is not exposed in the API. This is to get around the IPC diff --git a/core/java/android/content/pm/PackageManager.java b/core/java/android/content/pm/PackageManager.java index b63db8a8856c..8b8c58b87076 100644 --- a/core/java/android/content/pm/PackageManager.java +++ b/core/java/android/content/pm/PackageManager.java @@ -2210,6 +2210,24 @@ public abstract class PackageManager { public abstract List<ResolveInfo> queryIntentServicesAsUser(Intent intent, int flags, int userId); + /** {@hide} */ + public abstract List<ResolveInfo> queryIntentContentProvidersAsUser( + Intent intent, int flags, int userId); + + /** + * Retrieve all providers that can match the given intent. + * + * @param intent An intent containing all of the desired specification + * (action, data, type, category, and/or component). + * @param flags Additional option flags. + * @return A List<ResolveInfo> containing one entry for each matching + * ProviderInfo. These are ordered from best to worst match. If + * there are no matching providers, an empty list is returned. + * @see #GET_INTENT_FILTERS + * @see #GET_RESOLVED_FILTER + */ + public abstract List<ResolveInfo> queryIntentContentProviders(Intent intent, int flags); + /** * Find a single content provider by its base path name. * diff --git a/core/java/android/content/pm/PackageParser.java b/core/java/android/content/pm/PackageParser.java index b489ee9e2988..17d13e500e8e 100644 --- a/core/java/android/content/pm/PackageParser.java +++ b/core/java/android/content/pm/PackageParser.java @@ -2819,7 +2819,14 @@ public class PackageParser { continue; } - if (parser.getName().equals("meta-data")) { + if (parser.getName().equals("intent-filter")) { + ProviderIntentInfo intent = new ProviderIntentInfo(outInfo); + if (!parseIntent(res, parser, attrs, true, intent, outError)) { + return false; + } + outInfo.intents.add(intent); + + } else if (parser.getName().equals("meta-data")) { if ((outInfo.metaData=parseMetaData(res, parser, attrs, outInfo.metaData, outError)) == null) { return false; @@ -3982,7 +3989,7 @@ public class PackageParser { return si; } - public final static class Provider extends Component { + public final static class Provider extends Component<ProviderIntentInfo> { public final ProviderInfo info; public boolean syncable; @@ -4116,6 +4123,24 @@ public class PackageParser { } } + public static final class ProviderIntentInfo extends IntentInfo { + public final Provider provider; + + public ProviderIntentInfo(Provider provider) { + this.provider = provider; + } + + public String toString() { + StringBuilder sb = new StringBuilder(128); + sb.append("ProviderIntentInfo{"); + sb.append(Integer.toHexString(System.identityHashCode(this))); + sb.append(' '); + provider.appendComponentShortName(sb); + sb.append('}'); + return sb.toString(); + } + } + /** * @hide */ diff --git a/core/java/android/content/pm/ProviderInfo.java b/core/java/android/content/pm/ProviderInfo.java index a53417620cc0..f6ea058b526f 100644 --- a/core/java/android/content/pm/ProviderInfo.java +++ b/core/java/android/content/pm/ProviderInfo.java @@ -19,6 +19,7 @@ package android.content.pm; import android.os.Parcel; import android.os.Parcelable; import android.os.PatternMatcher; +import android.util.Printer; /** * Holds information about a specific @@ -112,7 +113,13 @@ public final class ProviderInfo extends ComponentInfo flags = orig.flags; isSyncable = orig.isSyncable; } - + + public void dump(Printer pw, String prefix) { + super.dumpFront(pw, prefix); + pw.println(prefix + "authority=" + authority); + pw.println(prefix + "flags=0x" + Integer.toHexString(flags)); + } + public int describeContents() { return 0; } diff --git a/core/java/android/content/pm/ResolveInfo.java b/core/java/android/content/pm/ResolveInfo.java index e360e4063f7a..1ff41c022186 100644 --- a/core/java/android/content/pm/ResolveInfo.java +++ b/core/java/android/content/pm/ResolveInfo.java @@ -23,6 +23,7 @@ import android.os.Parcel; import android.os.Parcelable; import android.text.TextUtils; import android.util.Printer; +import android.util.Slog; import java.text.Collator; import java.util.Comparator; @@ -34,20 +35,30 @@ import java.util.Comparator; * <intent> tags. */ public class ResolveInfo implements Parcelable { + private static final String TAG = "ResolveInfo"; + /** - * The activity or broadcast receiver that corresponds to this resolution match, - * if this resolution is for an activity or broadcast receiver. One and only one of this and - * serviceInfo must be non-null. + * The activity or broadcast receiver that corresponds to this resolution + * match, if this resolution is for an activity or broadcast receiver. + * Exactly one of {@link #activityInfo}, {@link #serviceInfo}, or + * {@link #providerInfo} will be non-null. */ public ActivityInfo activityInfo; /** - * The service that corresponds to this resolution match, if this - * resolution is for a service. One and only one of this and - * activityInfo must be non-null. + * The service that corresponds to this resolution match, if this resolution + * is for a service. Exactly one of {@link #activityInfo}, + * {@link #serviceInfo}, or {@link #providerInfo} will be non-null. */ public ServiceInfo serviceInfo; - + + /** + * The provider that corresponds to this resolution match, if this + * resolution is for a provider. Exactly one of {@link #activityInfo}, + * {@link #serviceInfo}, or {@link #providerInfo} will be non-null. + */ + public ProviderInfo providerInfo; + /** * The IntentFilter that was matched for this ResolveInfo. */ @@ -120,6 +131,13 @@ public class ResolveInfo implements Parcelable { */ public boolean system; + private ComponentInfo getComponentInfo() { + if (activityInfo != null) return activityInfo; + if (serviceInfo != null) return serviceInfo; + if (providerInfo != null) return providerInfo; + throw new IllegalStateException("Missing ComponentInfo!"); + } + /** * Retrieve the current textual label associated with this resolution. This * will call back on the given PackageManager to load the label from @@ -142,7 +160,7 @@ public class ResolveInfo implements Parcelable { return label.toString().trim(); } } - ComponentInfo ci = activityInfo != null ? activityInfo : serviceInfo; + ComponentInfo ci = getComponentInfo(); ApplicationInfo ai = ci.applicationInfo; if (labelRes != 0) { label = pm.getText(ci.packageName, labelRes, ai); @@ -176,7 +194,7 @@ public class ResolveInfo implements Parcelable { return dr; } } - ComponentInfo ci = activityInfo != null ? activityInfo : serviceInfo; + ComponentInfo ci = getComponentInfo(); ApplicationInfo ai = ci.applicationInfo; if (icon != 0) { dr = pm.getDrawable(ci.packageName, icon, ai); @@ -196,8 +214,8 @@ public class ResolveInfo implements Parcelable { */ public final int getIconResource() { if (icon != 0) return icon; - if (activityInfo != null) return activityInfo.getIconResource(); - if (serviceInfo != null) return serviceInfo.getIconResource(); + final ComponentInfo ci = getComponentInfo(); + if (ci != null) return ci.getIconResource(); return 0; } @@ -225,6 +243,9 @@ public class ResolveInfo implements Parcelable { } else if (serviceInfo != null) { pw.println(prefix + "ServiceInfo:"); serviceInfo.dump(pw, prefix + " "); + } else if (providerInfo != null) { + pw.println(prefix + "ProviderInfo:"); + providerInfo.dump(pw, prefix + " "); } } @@ -234,6 +255,7 @@ public class ResolveInfo implements Parcelable { public ResolveInfo(ResolveInfo orig) { activityInfo = orig.activityInfo; serviceInfo = orig.serviceInfo; + providerInfo = orig.providerInfo; filter = orig.filter; priority = orig.priority; preferredOrder = orig.preferredOrder; @@ -247,7 +269,7 @@ public class ResolveInfo implements Parcelable { } public String toString() { - ComponentInfo ci = activityInfo != null ? activityInfo : serviceInfo; + final ComponentInfo ci = getComponentInfo(); StringBuilder sb = new StringBuilder(128); sb.append("ResolveInfo{"); sb.append(Integer.toHexString(System.identityHashCode(this))); @@ -278,6 +300,9 @@ public class ResolveInfo implements Parcelable { } else if (serviceInfo != null) { dest.writeInt(2); serviceInfo.writeToParcel(dest, parcelableFlags); + } else if (providerInfo != null) { + dest.writeInt(3); + providerInfo.writeToParcel(dest, parcelableFlags); } else { dest.writeInt(0); } @@ -309,18 +334,21 @@ public class ResolveInfo implements Parcelable { }; private ResolveInfo(Parcel source) { + activityInfo = null; + serviceInfo = null; + providerInfo = null; switch (source.readInt()) { case 1: activityInfo = ActivityInfo.CREATOR.createFromParcel(source); - serviceInfo = null; break; case 2: serviceInfo = ServiceInfo.CREATOR.createFromParcel(source); - activityInfo = null; + break; + case 3: + providerInfo = ProviderInfo.CREATOR.createFromParcel(source); break; default: - activityInfo = null; - serviceInfo = null; + Slog.w(TAG, "Missing ComponentInfo!"); break; } if (source.readInt() != 0) { diff --git a/core/java/android/hardware/camera2/CameraCharacteristics.java b/core/java/android/hardware/camera2/CameraCharacteristics.java index 85fa7d6885e0..4fe2c4d3669b 100644 --- a/core/java/android/hardware/camera2/CameraCharacteristics.java +++ b/core/java/android/hardware/camera2/CameraCharacteristics.java @@ -487,6 +487,12 @@ public final class CameraCharacteristics extends CameraMetadata { * Gain factor from electrons to raw units when * ISO=100 * </p> + * + * <b>Optional</b> - This value may be null on some devices. + * + * <b>{@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL}</b> - + * Present on all devices that report being FULL level hardware devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL HARDWARE_LEVEL} key. */ public static final Key<Rational> SENSOR_BASE_GAIN_FACTOR = new Key<Rational>("android.sensor.baseGainFactor", Rational.class); @@ -502,6 +508,12 @@ public final class CameraCharacteristics extends CameraMetadata { * values above this, it can be a mix of analog and * digital * </p> + * + * <b>Optional</b> - This value may be null on some devices. + * + * <b>{@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL}</b> - + * Present on all devices that report being FULL level hardware devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL HARDWARE_LEVEL} key. */ public static final Key<Integer> SENSOR_MAX_ANALOG_SENSITIVITY = new Key<Integer>("android.sensor.maxAnalogSensitivity", int.class); diff --git a/core/java/android/hardware/camera2/CameraDevice.java b/core/java/android/hardware/camera2/CameraDevice.java index a9a72b074df8..7095e4d498ab 100644 --- a/core/java/android/hardware/camera2/CameraDevice.java +++ b/core/java/android/hardware/camera2/CameraDevice.java @@ -197,26 +197,33 @@ public interface CameraDevice extends AutoCloseable { * if the format is user-visible, it must be one of android.scaler.availableFormats; * and the size must be one of android.scaler.available[Processed|Jpeg]Sizes).</p> * - * <p>To change the output, the camera device must be idle. The device is considered - * to be idle once all in-flight and pending capture requests have been processed, - * and all output image buffers from the captures have been sent to their destination - * Surfaces.</p> - * - * <p>To reach an idle state without cancelling any submitted captures, first - * stop any repeating request/burst with {@link #stopRepeating}, and then - * wait for the {@link StateListener#onIdle} callback to be - * called. To idle as fast as possible, use {@link #flush} and wait for the - * idle callback.</p> + * <p>When this method is called with valid Surfaces, the device will transition to the {@link + * StateListener#onBusy busy state}. Once configuration is complete, the device will transition + * into the {@link StateListener#onIdle idle state}. Capture requests using the newly-configured + * Surfaces may then be submitted with {@link #capture}, {@link #captureBurst}, {@link + * #setRepeatingRequest}, or {@link #setRepeatingBurst}.</p> + * + * <p>If this method is called while the camera device is still actively processing previously + * submitted captures, then the following sequence of events occurs: The device transitions to + * the busy state and calls the {@link StateListener#onBusy} callback. Second, if a repeating + * request is set it is cleared. Third, the device finishes up all in-flight and pending + * requests. Finally, once the device is idle, it then reconfigures its outputs, and calls the + * {@link StateListener#onIdle} method once it is again ready to accept capture + * requests. Therefore, no submitted work is discarded. To idle as fast as possible, use {@link + * #flush} and wait for the idle callback before calling configureOutputs. This will discard + * work, but reaches the new configuration sooner.</p> * * <p>Using larger resolution outputs, or more outputs, can result in slower * output rate from the device.</p> * - * <p>Configuring the outputs with an empty or null list will transition - * the camera into an {@link StateListener#onUnconfigured unconfigured state}. - * </p> + * <p>Configuring the outputs with an empty or null list will transition the camera into an + * {@link StateListener#onUnconfigured unconfigured state} instead of the {@link + * StateListener#onIdle idle state}. </p> * * <p>Calling configureOutputs with the same arguments as the last call to - * configureOutputs has no effect.</p> + * configureOutputs has no effect, and the {@link StateListener#onBusy busy} + * and {@link StateListener#onIdle idle} state transitions will happen + * immediately.</p> * * @param outputs The new set of Surfaces that should be made available as * targets for captured image data. @@ -228,7 +235,10 @@ public interface CameraDevice extends AutoCloseable { * @throws IllegalStateException if the camera device is not idle, or * if the camera device has been closed * + * @see StateListener#onBusy * @see StateListener#onIdle + * @see StateListener#onActive + * @see StateListener#onUnconfigured * @see #stopRepeating * @see #flush */ @@ -516,31 +526,6 @@ public interface CameraDevice extends AutoCloseable { public void waitUntilIdle() throws CameraAccessException; /** - * Set the listener object to call when an asynchronous device event occurs, - * such as errors or idle notifications. - * - * <p>The events reported here are device-wide; notifications about - * individual capture requests or capture results are reported through - * {@link CaptureListener}.</p> - * - * <p>If the camera device is idle when the listener is set, then the - * {@link StateListener#onIdle} method will be immediately called, - * even if the device has never been active before. - * </p> - * - * @param listener the CameraDeviceListener to send device-level event - * notifications to. Setting this to null will stop notifications. - * @param handler the handler on which the listener should be invoked, or - * {@code null} to use the current thread's {@link android.os.Looper looper}. - * - * @throws IllegalArgumentException if handler is null, the listener is - * not null, and the calling thread has no looper - * - * @hide - */ - public void setDeviceListener(StateListener listener, Handler handler); - - /** * Flush all captures currently pending and in-progress as fast as * possible. * @@ -577,13 +562,24 @@ public interface CameraDevice extends AutoCloseable { public void flush() throws CameraAccessException; /** - * Close the connection to this camera device. After this call, all calls to + * Close the connection to this camera device. + * + * <p>After this call, all calls to * the camera device interface will throw a {@link IllegalStateException}, - * except for calls to close(). + * except for calls to close(). Once the device has fully shut down, the + * {@link StateListener#onClosed} callback will be called, and the camera is + * free to be re-opened.</p> + * + * <p>After this call, besides the final {@link StateListener#onClosed} call, no calls to the + * device's {@link StateListener} will occur, and any remaining submitted capture requests will + * not fire their {@link CaptureListener} callbacks.</p> + * + * <p>To shut down as fast as possible, call the {@link #flush} method and then {@link #close} + * once the flush completes. This will discard some capture requests, but results in faster + * shutdown.</p> */ @Override public void close(); - // TODO: We should decide on the behavior of in-flight requests should be on close. /** * <p>A listener for tracking the progress of a {@link CaptureRequest} @@ -713,6 +709,9 @@ public interface CameraDevice extends AutoCloseable { * A listener for notifications about the state of a camera * device. * + * <p>A listener must be provided to the {@link CameraManager#openCamera} + * method to open a camera device.</p> + * * <p>These events include notifications about the device becoming idle ( * allowing for {@link #configureOutputs} to be called), about device * disconnection, and about unexpected device errors.</p> @@ -722,7 +721,7 @@ public interface CameraDevice extends AutoCloseable { * the {@link #capture}, {@link #captureBurst}, {@link * #setRepeatingRequest}, or {@link #setRepeatingBurst} methods. * - * @see #setDeviceListener + * @see CameraManager#openCamera */ public static abstract class StateListener { /** diff --git a/core/java/android/hardware/camera2/CameraManager.java b/core/java/android/hardware/camera2/CameraManager.java index f5ee367c70ca..65b6c7a09443 100644 --- a/core/java/android/hardware/camera2/CameraManager.java +++ b/core/java/android/hardware/camera2/CameraManager.java @@ -197,6 +197,8 @@ public final class CameraManager { * {@link #openCamera}. * * @param cameraId The unique identifier of the camera device to open + * @param listener The listener for the camera. Must not be null. + * @param handler The handler to call the listener on. Must not be null. * * @throws CameraAccessException if the camera is disabled by device policy, * or too many camera devices are already open, or the cameraId does not match @@ -204,11 +206,14 @@ public final class CameraManager { * * @throws SecurityException if the application does not have permission to * access the camera + * @throws IllegalArgumentException if listener or handler is null. * * @see #getCameraIdList * @see android.app.admin.DevicePolicyManager#setCameraDisabled */ - private CameraDevice openCamera(String cameraId) throws CameraAccessException { + private void openCameraDeviceUserAsync(String cameraId, + CameraDevice.StateListener listener, Handler handler) + throws CameraAccessException { try { synchronized (mLock) { @@ -216,7 +221,10 @@ public final class CameraManager { ICameraDeviceUser cameraUser; android.hardware.camera2.impl.CameraDevice device = - new android.hardware.camera2.impl.CameraDevice(cameraId); + new android.hardware.camera2.impl.CameraDevice( + cameraId, + listener, + handler); BinderHolder holder = new BinderHolder(); mCameraService.connectDevice(device.getCallbacks(), @@ -225,10 +233,9 @@ public final class CameraManager { cameraUser = ICameraDeviceUser.Stub.asInterface(holder.getBinder()); // TODO: factor out listener to be non-nested, then move setter to constructor + // For now, calling setRemoteDevice will fire initial + // onOpened/onUnconfigured callbacks. device.setRemoteDevice(cameraUser); - - return device; - } } catch (NumberFormatException e) { @@ -238,7 +245,6 @@ public final class CameraManager { throw e.asChecked(); } catch (RemoteException e) { // impossible - return null; } } @@ -303,16 +309,7 @@ public final class CameraManager { } } - final CameraDevice camera = openCamera(cameraId); - camera.setDeviceListener(listener, handler); - - // TODO: make truly async in the camera service - handler.post(new Runnable() { - @Override - public void run() { - listener.onOpened(camera); - } - }); + openCameraDeviceUserAsync(cameraId, listener, handler); } /** diff --git a/core/java/android/hardware/camera2/CaptureResult.java b/core/java/android/hardware/camera2/CaptureResult.java index c9626f1b074e..dbd0457e525f 100644 --- a/core/java/android/hardware/camera2/CaptureResult.java +++ b/core/java/android/hardware/camera2/CaptureResult.java @@ -60,11 +60,6 @@ public final class CaptureResult extends CameraMetadata { @Override public <T> T get(Key<T> key) { - if (key == STATISTICS_FACES) { // Don't throw IllegalArgumentException - // TODO: Implement android.statistics.faces - return null; - } - return mResults.get(key); } @@ -727,6 +722,12 @@ public final class CaptureResult extends CameraMetadata { * The thermal diode being queried should be inside the sensor PCB, or * somewhere close to it. * </p> + * + * <b>Optional</b> - This value may be null on some devices. + * + * <b>{@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL}</b> - + * Present on all devices that report being FULL level hardware devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL HARDWARE_LEVEL} key. */ public static final Key<Float> SENSOR_TEMPERATURE = new Key<Float>("android.sensor.temperature", float.class); diff --git a/core/java/android/hardware/camera2/Face.java b/core/java/android/hardware/camera2/Face.java index ef068ca7ec61..ded8839dc15c 100644 --- a/core/java/android/hardware/camera2/Face.java +++ b/core/java/android/hardware/camera2/Face.java @@ -58,6 +58,9 @@ public final class Face { * Create a new face with all fields set. * * <p>The id, leftEyePosition, rightEyePosition, and mouthPosition are considered optional. + * They are only required when the {@link CaptureResult} reports that the value of key + * {@link CaptureResult#STATISTICS_FACE_DETECT_MODE} is + * {@link CameraMetadata#STATISTICS_FACE_DETECT_MODE_FULL}. * If the id is {@value #ID_UNSUPPORTED} then the leftEyePosition, rightEyePosition, and * mouthPositions are guaranteed to be {@code null}. Otherwise, each of leftEyePosition, * rightEyePosition, and mouthPosition may be independently null or not-null.</p> @@ -107,7 +110,11 @@ public final class Face { * <p>The id, leftEyePosition, rightEyePosition, and mouthPosition are considered optional. * If the id is {@value #ID_UNSUPPORTED} then the leftEyePosition, rightEyePosition, and * mouthPositions are guaranteed to be {@code null}. Otherwise, each of leftEyePosition, - * rightEyePosition, and mouthPosition may be independently null or not-null.</p> + * rightEyePosition, and mouthPosition may be independently null or not-null. When devices + * report the value of key {@link CaptureResult#STATISTICS_FACE_DETECT_MODE} as + * {@link CameraMetadata#STATISTICS_FACE_DETECT_MODE_SIMPLE} in {@link CaptureResult}, + * the face id of each face is expected to be {@value #ID_UNSUPPORTED}, the leftEyePosition, + * rightEyePosition, and mouthPositions are expected to be {@code null} for each face.</p> * * @param bounds Bounds of the face. * @param score Confidence level between {@value #SCORE_MIN}-{@value #SCORE_MAX}. @@ -168,7 +175,10 @@ public final class Face { * <p>This is an optional field, may not be supported on all devices. * If the id is {@value #ID_UNSUPPORTED} then the leftEyePosition, rightEyePosition, and * mouthPositions are guaranteed to be {@code null}. Otherwise, each of leftEyePosition, - * rightEyePosition, and mouthPosition may be independently null or not-null.</p> + * rightEyePosition, and mouthPosition may be independently null or not-null. When devices + * report the value of key {@link CaptureResult#STATISTICS_FACE_DETECT_MODE} as + * {@link CameraMetadata#STATISTICS_FACE_DETECT_MODE_SIMPLE} in {@link CaptureResult}, + * the face id of each face is expected to be {@value #ID_UNSUPPORTED}.</p> * * <p>This value will either be {@value #ID_UNSUPPORTED} or * otherwise greater than {@code 0}.</p> @@ -219,7 +229,7 @@ public final class Face { * field, may not be supported on all devices. If not * supported, the value will always be set to null. * This value will always be null only if {@link #getId()} returns - * {@value #ID_UNSUPPORTED}.</p> them are. + * {@value #ID_UNSUPPORTED}.</p> * </p> * * @return The mouth position, or {@code null} if unknown. diff --git a/core/java/android/hardware/camera2/impl/CameraDevice.java b/core/java/android/hardware/camera2/impl/CameraDevice.java index 463063c1fb2a..c5d099921306 100644 --- a/core/java/android/hardware/camera2/impl/CameraDevice.java +++ b/core/java/android/hardware/camera2/impl/CameraDevice.java @@ -55,8 +55,10 @@ public class CameraDevice implements android.hardware.camera2.CameraDevice { private final Object mLock = new Object(); private final CameraDeviceCallbacks mCallbacks = new CameraDeviceCallbacks(); - private StateListener mDeviceListener; - private Handler mDeviceHandler; + private final StateListener mDeviceListener; + private final Handler mDeviceHandler; + + private boolean mIdle = true; private final SparseArray<CaptureListenerHolder> mCaptureListenerMap = new SparseArray<CaptureListenerHolder>(); @@ -67,8 +69,72 @@ public class CameraDevice implements android.hardware.camera2.CameraDevice { private final String mCameraId; - public CameraDevice(String cameraId) { + // Runnables for all state transitions, except error, which needs the + // error code argument + + private final Runnable mCallOnOpened = new Runnable() { + public void run() { + if (!CameraDevice.this.isClosed()) { + mDeviceListener.onOpened(CameraDevice.this); + } + } + }; + + private final Runnable mCallOnUnconfigured = new Runnable() { + public void run() { + if (!CameraDevice.this.isClosed()) { + mDeviceListener.onUnconfigured(CameraDevice.this); + } + } + }; + + private final Runnable mCallOnActive = new Runnable() { + public void run() { + if (!CameraDevice.this.isClosed()) { + mDeviceListener.onActive(CameraDevice.this); + } + } + }; + + private final Runnable mCallOnBusy = new Runnable() { + public void run() { + if (!CameraDevice.this.isClosed()) { + mDeviceListener.onBusy(CameraDevice.this); + } + } + }; + + private final Runnable mCallOnClosed = new Runnable() { + public void run() { + if (!CameraDevice.this.isClosed()) { + mDeviceListener.onClosed(CameraDevice.this); + } + } + }; + + private final Runnable mCallOnIdle = new Runnable() { + public void run() { + if (!CameraDevice.this.isClosed()) { + mDeviceListener.onIdle(CameraDevice.this); + } + } + }; + + private final Runnable mCallOnDisconnected = new Runnable() { + public void run() { + if (!CameraDevice.this.isClosed()) { + mDeviceListener.onDisconnected(CameraDevice.this); + } + } + }; + + public CameraDevice(String cameraId, StateListener listener, Handler handler) { + if (cameraId == null || listener == null || handler == null) { + throw new IllegalArgumentException("Null argument given"); + } mCameraId = cameraId; + mDeviceListener = listener; + mDeviceHandler = handler; TAG = String.format("CameraDevice-%s-JV", mCameraId); DEBUG = Log.isLoggable(TAG, Log.DEBUG); } @@ -79,7 +145,12 @@ public class CameraDevice implements android.hardware.camera2.CameraDevice { public void setRemoteDevice(ICameraDeviceUser remoteDevice) { // TODO: Move from decorator to direct binder-mediated exceptions - mRemoteDevice = CameraBinderDecorator.newInstance(remoteDevice); + synchronized(mLock) { + mRemoteDevice = CameraBinderDecorator.newInstance(remoteDevice); + + mDeviceHandler.post(mCallOnOpened); + mDeviceHandler.post(mCallOnUnconfigured); + } } @Override @@ -89,7 +160,13 @@ public class CameraDevice implements android.hardware.camera2.CameraDevice { @Override public void configureOutputs(List<Surface> outputs) throws CameraAccessException { + // Treat a null input the same an empty list + if (outputs == null) { + outputs = new ArrayList<Surface>(); + } synchronized (mLock) { + checkIfCameraClosed(); + HashSet<Surface> addSet = new HashSet<Surface>(outputs); // Streams to create List<Integer> deleteList = new ArrayList<Integer>(); // Streams to delete @@ -105,9 +182,13 @@ public class CameraDevice implements android.hardware.camera2.CameraDevice { } } + mDeviceHandler.post(mCallOnBusy); + stopRepeating(); + try { - // TODO: mRemoteDevice.beginConfigure + mRemoteDevice.waitUntilIdle(); + // TODO: mRemoteDevice.beginConfigure // Delete all streams first (to free up HW resources) for (Integer streamId : deleteList) { mRemoteDevice.deleteStream(streamId); @@ -126,7 +207,7 @@ public class CameraDevice implements android.hardware.camera2.CameraDevice { } catch (CameraRuntimeException e) { if (e.getReason() == CAMERA_IN_USE) { throw new IllegalStateException("The camera is currently busy." + - " You must call waitUntilIdle before trying to reconfigure."); + " You must wait until the previous operation completes."); } throw e.asChecked(); @@ -134,6 +215,12 @@ public class CameraDevice implements android.hardware.camera2.CameraDevice { // impossible return; } + + if (outputs.size() > 0) { + mDeviceHandler.post(mCallOnIdle); + } else { + mDeviceHandler.post(mCallOnUnconfigured); + } } } @@ -141,6 +228,7 @@ public class CameraDevice implements android.hardware.camera2.CameraDevice { public CaptureRequest.Builder createCaptureRequest(int templateType) throws CameraAccessException { synchronized (mLock) { + checkIfCameraClosed(); CameraMetadataNative templatedRequest = new CameraMetadataNative(); @@ -188,7 +276,7 @@ public class CameraDevice implements android.hardware.camera2.CameraDevice { } synchronized (mLock) { - + checkIfCameraClosed(); int requestId; try { @@ -208,6 +296,11 @@ public class CameraDevice implements android.hardware.camera2.CameraDevice { mRepeatingRequestIdStack.add(requestId); } + if (mIdle) { + mDeviceHandler.post(mCallOnActive); + } + mIdle = false; + return requestId; } } @@ -233,7 +326,7 @@ public class CameraDevice implements android.hardware.camera2.CameraDevice { public void stopRepeating() throws CameraAccessException { synchronized (mLock) { - + checkIfCameraClosed(); while (!mRepeatingRequestIdStack.isEmpty()) { int requestId = mRepeatingRequestIdStack.pop(); @@ -270,20 +363,11 @@ public class CameraDevice implements android.hardware.camera2.CameraDevice { } @Override - public void setDeviceListener(StateListener listener, Handler handler) { - synchronized (mLock) { - if (listener != null) { - handler = checkHandler(handler); - } - - mDeviceListener = listener; - mDeviceHandler = handler; - } - } - - @Override public void flush() throws CameraAccessException { synchronized (mLock) { + checkIfCameraClosed(); + + mDeviceHandler.post(mCallOnBusy); try { mRemoteDevice.flush(); } catch (CameraRuntimeException e) { @@ -297,9 +381,6 @@ public class CameraDevice implements android.hardware.camera2.CameraDevice { @Override public void close() { - - // TODO: every method should throw IllegalStateException after close has been called - synchronized (mLock) { try { @@ -312,8 +393,11 @@ public class CameraDevice implements android.hardware.camera2.CameraDevice { // impossible } - mRemoteDevice = null; + if (mRemoteDevice != null) { + mDeviceHandler.post(mCallOnClosed); + } + mRemoteDevice = null; } } @@ -399,49 +483,44 @@ public class CameraDevice implements android.hardware.camera2.CameraDevice { @Override public void onCameraError(final int errorCode) { - synchronized (mLock) { - if (CameraDevice.this.mDeviceListener == null) return; - final StateListener listener = CameraDevice.this.mDeviceListener; - Runnable r = null; + Runnable r = null; + if (isClosed()) return; + + synchronized(mLock) { switch (errorCode) { case ERROR_CAMERA_DISCONNECTED: - r = new Runnable() { - public void run() { - listener.onDisconnected(CameraDevice.this); - } - }; + r = mCallOnDisconnected; break; + default: + Log.e(TAG, "Unknown error from camera device: " + errorCode); + // no break case ERROR_CAMERA_DEVICE: case ERROR_CAMERA_SERVICE: r = new Runnable() { public void run() { - listener.onError(CameraDevice.this, errorCode); + if (!CameraDevice.this.isClosed()) { + mDeviceListener.onError(CameraDevice.this, errorCode); + } } }; break; - default: - Log.e(TAG, "Unknown error from camera device: " + errorCode); - } - if (r != null) { - CameraDevice.this.mDeviceHandler.post(r); } + CameraDevice.this.mDeviceHandler.post(r); } } @Override public void onCameraIdle() { + if (isClosed()) return; + if (DEBUG) { Log.d(TAG, "Camera now idle"); } synchronized (mLock) { - if (CameraDevice.this.mDeviceListener == null) return; - final StateListener listener = CameraDevice.this.mDeviceListener; - Runnable r = new Runnable() { - public void run() { - listener.onIdle(CameraDevice.this); - } - }; - CameraDevice.this.mDeviceHandler.post(r); + if (!CameraDevice.this.mIdle) { + CameraDevice.this.mDeviceHandler.post(mCallOnIdle); + } + CameraDevice.this.mIdle = true; } } @@ -461,14 +540,18 @@ public class CameraDevice implements android.hardware.camera2.CameraDevice { return; } + if (isClosed()) return; + // Dispatch capture start notice holder.getHandler().post( new Runnable() { public void run() { - holder.getListener().onCaptureStarted( - CameraDevice.this, - holder.getRequest(), - timestamp); + if (!CameraDevice.this.isClosed()) { + holder.getListener().onCaptureStarted( + CameraDevice.this, + holder.getRequest(), + timestamp); + } } }); } @@ -503,6 +586,8 @@ public class CameraDevice implements android.hardware.camera2.CameraDevice { return; } + if (isClosed()) return; + final CaptureRequest request = holder.getRequest(); final CaptureResult resultAsCapture = new CaptureResult(result, request, requestId); @@ -510,10 +595,12 @@ public class CameraDevice implements android.hardware.camera2.CameraDevice { new Runnable() { @Override public void run() { - holder.getListener().onCaptureCompleted( - CameraDevice.this, - request, - resultAsCapture); + if (!CameraDevice.this.isClosed()){ + holder.getListener().onCaptureCompleted( + CameraDevice.this, + request, + resultAsCapture); + } } }); } @@ -541,4 +628,10 @@ public class CameraDevice implements android.hardware.camera2.CameraDevice { throw new IllegalStateException("CameraDevice was already closed"); } } + + private boolean isClosed() { + synchronized(mLock) { + return (mRemoteDevice == null); + } + } } diff --git a/core/java/android/hardware/camera2/impl/CameraMetadataNative.java b/core/java/android/hardware/camera2/impl/CameraMetadataNative.java index 89ffd936b40a..adccbc57c5c7 100644 --- a/core/java/android/hardware/camera2/impl/CameraMetadataNative.java +++ b/core/java/android/hardware/camera2/impl/CameraMetadataNative.java @@ -16,7 +16,13 @@ package android.hardware.camera2.impl; +import android.graphics.ImageFormat; +import android.graphics.Point; +import android.graphics.Rect; +import android.hardware.camera2.CameraCharacteristics; import android.hardware.camera2.CameraMetadata; +import android.hardware.camera2.CaptureResult; +import android.hardware.camera2.Face; import android.hardware.camera2.Rational; import android.os.Parcelable; import android.os.Parcel; @@ -36,6 +42,8 @@ public class CameraMetadataNative extends CameraMetadata implements Parcelable { private static final String TAG = "CameraMetadataJV"; private static final boolean VERBOSE = Log.isLoggable(TAG, Log.VERBOSE); + // this should be in sync with HAL_PIXEL_FORMAT_BLOB defined in graphics.h + private static final int NATIVE_JPEG_FORMAT = 0x21; public CameraMetadataNative() { super(); @@ -84,16 +92,21 @@ public class CameraMetadataNative extends CameraMetadata implements Parcelable { @SuppressWarnings("unchecked") @Override public <T> T get(Key<T> key) { - int tag = key.getTag(); - byte[] values = readValues(tag); - if (values == null) { + + if (key == CaptureResult.STATISTICS_FACES) { + /** + * FIXME: Workaround for HAL bug that's missing FACE_DETECT_MODE + */ + Log.w(TAG, "Expected non-null android.statistics.faceDetectMode"); return null; } - int nativeType = getNativeType(tag); + T value = getOverride(key); + if (value != null) { + return value; + } - ByteBuffer buffer = ByteBuffer.wrap(values).order(ByteOrder.nativeOrder()); - return unpackSingle(buffer, key.getType(), nativeType); + return getBase(key); } public void readFromParcel(Parcel in) { @@ -110,24 +123,11 @@ public class CameraMetadataNative extends CameraMetadata implements Parcelable { * type to the key. */ public <T> void set(Key<T> key, T value) { - int tag = key.getTag(); - - if (value == null) { - writeValues(tag, null); + if (setOverride(key, value)) { return; } - int nativeType = getNativeType(tag); - - int size = packSingle(value, null, key.getType(), nativeType, /* sizeOnly */true); - - // TODO: Optimization. Cache the byte[] and reuse if the size is big enough. - byte[] values = new byte[size]; - - ByteBuffer buffer = ByteBuffer.wrap(values).order(ByteOrder.nativeOrder()); - packSingle(value, buffer, key.getType(), nativeType, /*sizeOnly*/false); - - writeValues(tag, values); + setBase(key, value); } // Keep up-to-date with camera_metadata.h @@ -435,6 +435,157 @@ public class CameraMetadataNative extends CameraMetadata implements Parcelable { return (T) array; } + private <T> T getBase(Key<T> key) { + int tag = key.getTag(); + byte[] values = readValues(tag); + if (values == null) { + return null; + } + + int nativeType = getNativeType(tag); + + ByteBuffer buffer = ByteBuffer.wrap(values).order(ByteOrder.nativeOrder()); + return unpackSingle(buffer, key.getType(), nativeType); + } + + // Need overwrite some metadata that has different definitions between native + // and managed sides. + @SuppressWarnings("unchecked") + private <T> T getOverride(Key<T> key) { + if (key == CameraCharacteristics.SCALER_AVAILABLE_FORMATS) { + return (T) getAvailableFormats(); + } else if (key == CaptureResult.STATISTICS_FACES) { + return (T) getFaces(); + } + + // For other keys, get() falls back to getBase() + return null; + } + + private int[] getAvailableFormats() { + int[] availableFormats = getBase(CameraCharacteristics.SCALER_AVAILABLE_FORMATS); + for (int i = 0; i < availableFormats.length; i++) { + // JPEG has different value between native and managed side, need override. + if (availableFormats[i] == NATIVE_JPEG_FORMAT) { + availableFormats[i] = ImageFormat.JPEG; + } + } + return availableFormats; + } + + private Face[] getFaces() { + final int FACE_LANDMARK_SIZE = 6; + + Integer faceDetectMode = getBase(CaptureResult.STATISTICS_FACE_DETECT_MODE); + if (faceDetectMode == null) { + throw new AssertionError("Expect non-null face detect mode"); + } + + if (faceDetectMode == CaptureResult.STATISTICS_FACE_DETECT_MODE_OFF) { + return new Face[0]; + } + if (faceDetectMode != CaptureResult.STATISTICS_FACE_DETECT_MODE_SIMPLE && + faceDetectMode != CaptureResult.STATISTICS_FACE_DETECT_MODE_FULL) { + throw new AssertionError("Unknown face detect mode: " + faceDetectMode); + } + + // Face scores and rectangles are required by SIMPLE and FULL mode. + byte[] faceScores = getBase(CaptureResult.STATISTICS_FACE_SCORES); + Rect[] faceRectangles = getBase(CaptureResult.STATISTICS_FACE_RECTANGLES); + if (faceScores == null || faceRectangles == null) { + throw new AssertionError("Expect face scores and rectangles to be non-null"); + } else if (faceScores.length != faceRectangles.length) { + throw new AssertionError( + String.format("Face score size(%d) doesn match face rectangle size(%d)!", + faceScores.length, faceRectangles.length)); + } + + // Face id and landmarks are only required by FULL mode. + int[] faceIds = getBase(CaptureResult.STATISTICS_FACE_IDS); + int[] faceLandmarks = getBase(CaptureResult.STATISTICS_FACE_LANDMARKS); + int numFaces = faceScores.length; + if (faceDetectMode == CaptureResult.STATISTICS_FACE_DETECT_MODE_FULL) { + if (faceIds == null || faceLandmarks == null) { + throw new AssertionError("Expect face ids and landmarks to be non-null for " + + "FULL mode"); + } else if (faceIds.length != numFaces || + faceLandmarks.length != numFaces * FACE_LANDMARK_SIZE) { + throw new AssertionError( + String.format("Face id size(%d), or face landmark size(%d) don't match " + + "face number(%d)!", + faceIds.length, faceLandmarks.length * FACE_LANDMARK_SIZE, + numFaces)); + } + } + + Face[] faces = new Face[numFaces]; + if (faceDetectMode == CaptureResult.STATISTICS_FACE_DETECT_MODE_SIMPLE) { + for (int i = 0; i < numFaces; i++) { + faces[i] = new Face(faceRectangles[i], faceScores[i]); + } + } else { + // CaptureResult.STATISTICS_FACE_DETECT_MODE_FULL + for (int i = 0; i < numFaces; i++) { + Point leftEye = new Point(faceLandmarks[i*6], faceLandmarks[i*6+1]); + Point rightEye = new Point(faceLandmarks[i*6+2], faceLandmarks[i*6+3]); + Point mouth = new Point(faceLandmarks[i*6+4], faceLandmarks[i*6+5]); + faces[i] = new Face(faceRectangles[i], faceScores[i], faceIds[i], + leftEye, rightEye, mouth); + } + } + return faces; + } + + private <T> void setBase(Key<T> key, T value) { + int tag = key.getTag(); + + if (value == null) { + writeValues(tag, null); + return; + } + + int nativeType = getNativeType(tag); + + int size = packSingle(value, null, key.getType(), nativeType, /* sizeOnly */true); + + // TODO: Optimization. Cache the byte[] and reuse if the size is big enough. + byte[] values = new byte[size]; + + ByteBuffer buffer = ByteBuffer.wrap(values).order(ByteOrder.nativeOrder()); + packSingle(value, buffer, key.getType(), nativeType, /*sizeOnly*/false); + + writeValues(tag, values); + } + + // Set the camera metadata override. + private <T> boolean setOverride(Key<T> key, T value) { + if (key == CameraCharacteristics.SCALER_AVAILABLE_FORMATS) { + return setAvailableFormats((int[]) value); + } + + // For other keys, set() falls back to setBase(). + return false; + } + + private boolean setAvailableFormats(int[] value) { + int[] availableFormat = value; + if (value == null) { + // Let setBase() to handle the null value case. + return false; + } + + int[] newValues = new int[availableFormat.length]; + for (int i = 0; i < availableFormat.length; i++) { + newValues[i] = availableFormat[i]; + if (availableFormat[i] == ImageFormat.JPEG) { + newValues[i] = NATIVE_JPEG_FORMAT; + } + } + + setBase(CameraCharacteristics.SCALER_AVAILABLE_FORMATS, newValues); + return true; + } + private long mMetadataPtr; // native CameraMetadata* private native long nativeAllocate(); @@ -538,7 +689,7 @@ public class CameraMetadataNative extends CameraMetadata implements Parcelable { * @hide */ public byte[] readValues(int tag) { - // TODO: Optimization. Native code returns a ByteBuffer instead. + // TODO: Optimization. Native code returns a ByteBuffer instead. return nativeReadValues(tag); } diff --git a/core/java/android/print/PrintAttributes.java b/core/java/android/print/PrintAttributes.java index ec979b3a2d4d..e1a9cb7592e5 100644 --- a/core/java/android/print/PrintAttributes.java +++ b/core/java/android/print/PrintAttributes.java @@ -282,7 +282,7 @@ public final class PrintAttributes implements Parcelable { */ public static final MediaSize UNKNOWN_PORTRAIT = new MediaSize("UNKNOWN_PORTRAIT", "android", - R.string.mediasize_unknown_portrait, Integer.MAX_VALUE, 1); + R.string.mediasize_unknown_portrait, 1, Integer.MAX_VALUE); /** * Unknown media size in landscape mode. @@ -293,7 +293,7 @@ public final class PrintAttributes implements Parcelable { */ public static final MediaSize UNKNOWN_LANDSCAPE = new MediaSize("UNKNOWN_LANDSCAPE", "android", - R.string.mediasize_unknown_landscape, 1, Integer.MAX_VALUE); + R.string.mediasize_unknown_landscape, Integer.MAX_VALUE, 1); // ISO sizes diff --git a/core/java/android/provider/DocumentsContract.java b/core/java/android/provider/DocumentsContract.java index 631a8d41c064..1c14c38f840b 100644 --- a/core/java/android/provider/DocumentsContract.java +++ b/core/java/android/provider/DocumentsContract.java @@ -70,8 +70,14 @@ public final class DocumentsContract { } /** {@hide} */ + @Deprecated public static final String META_DATA_DOCUMENT_PROVIDER = "android.content.DOCUMENT_PROVIDER"; + /** + * Intent action used to identify {@link DocumentsProvider} instances. + */ + public static final String PROVIDER_INTERFACE = "android.content.action.DOCUMENTS_PROVIDER"; + /** {@hide} */ public static final String ACTION_MANAGE_ROOT = "android.provider.action.MANAGE_ROOT"; /** {@hide} */ diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java index 989e2871b797..50777fd34245 100644 --- a/core/java/android/provider/Settings.java +++ b/core/java/android/provider/Settings.java @@ -2441,9 +2441,7 @@ public final class Settings { SCREEN_BRIGHTNESS_MODE, SCREEN_AUTO_BRIGHTNESS_ADJ, VIBRATE_INPUT_DEVICES, - MODE_RINGER, // moved to global MODE_RINGER_STREAMS_AFFECTED, - MUTE_STREAMS_AFFECTED, VOLUME_VOICE, VOLUME_SYSTEM, VOLUME_RING, @@ -5940,7 +5938,6 @@ public final class Settings { public static final String[] SETTINGS_TO_BACKUP = { BUGREPORT_IN_POWER_MENU, STAY_ON_WHILE_PLUGGED_IN, - MODE_RINGER, AUTO_TIME, AUTO_TIME_ZONE, POWER_SOUNDS_ENABLED, diff --git a/core/java/android/widget/ImageView.java b/core/java/android/widget/ImageView.java index 3e53b91bd0b0..9e35a236fdec 100644 --- a/core/java/android/widget/ImageView.java +++ b/core/java/android/widget/ImageView.java @@ -27,6 +27,7 @@ import android.graphics.Matrix; import android.graphics.PorterDuff; import android.graphics.PorterDuffColorFilter; import android.graphics.RectF; +import android.graphics.Xfermode; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.net.Uri; @@ -73,6 +74,7 @@ public class ImageView extends View { // these are applied to the drawable private ColorFilter mColorFilter; + private Xfermode mXfermode; private int mAlpha = 255; private int mViewAlphaScale = 256; private boolean mColorMod = false; @@ -1125,6 +1127,18 @@ public class ImageView extends View { } /** + * @hide Candidate for future API inclusion + */ + public final void setXfermode(Xfermode mode) { + if (mXfermode != mode) { + mXfermode = mode; + mColorMod = true; + applyColorMod(); + invalidate(); + } + } + + /** * Returns the active color filter for this ImageView. * * @return the active color filter for this ImageView @@ -1200,6 +1214,7 @@ public class ImageView extends View { if (mDrawable != null && mColorMod) { mDrawable = mDrawable.mutate(); mDrawable.setColorFilter(mColorFilter); + mDrawable.setXfermode(mXfermode); mDrawable.setAlpha(mAlpha * mViewAlphaScale >> 8); } } diff --git a/core/res/res/values-mn-rMN/strings.xml b/core/res/res/values-mn-rMN/strings.xml index 995b4af8e413..4a3990458903 100644 --- a/core/res/res/values-mn-rMN/strings.xml +++ b/core/res/res/values-mn-rMN/strings.xml @@ -609,7 +609,7 @@ <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"Блютүүт тохиргоонд хандах"</string> <string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Апп нь дотоод блютүүт таблетын тохиргоог харах боломжтой ба хос болох төхөөрөмжтэй холболтыг зөвшөөрөх болон хийх боломжтой"</string> <string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Апп нь утасны дотоод блютүүтыг тохируулах боломжтой ба гадаад төхөөрөмжийг олох болон хос үүсгэх боломжтой."</string> - <string name="permlab_bluetoothPriv" msgid="4009494246009513828">"Аппликешнд Блютүүт хоallow Bluetooth pairing by Application"</string> + <string name="permlab_bluetoothPriv" msgid="4009494246009513828">"Аппликешнд bluetooth хослол хийхийг зөвшөөрнө"</string> <string name="permdesc_bluetoothPriv" product="tablet" msgid="8045735193417468857">"Апп-д хэрэглэгчтэй харьцахгүйгээр зайны төхөөрөмжүүдтэй хослох боломж олгоно."</string> <string name="permdesc_bluetoothPriv" product="default" msgid="8045735193417468857">"Апп-д хэрэглэгчтэй харьцахгүйгээр зайны төхөөрөмжүүдтэй хослох боломж олгоно."</string> <string name="permlab_accessWimaxState" msgid="4195907010610205703">"WiMAX-д холбогдох болон салах"</string> diff --git a/graphics/java/android/graphics/Path.java b/graphics/java/android/graphics/Path.java index ef858eb0c0bf..5b04a9132612 100644 --- a/graphics/java/android/graphics/Path.java +++ b/graphics/java/android/graphics/Path.java @@ -78,7 +78,11 @@ public class Path { mLastDirection = null; if (rects != null) rects.setEmpty(); } + // We promised not to change this, so preserve it around the native + // call, which does now reset fill type. + final FillType fillType = getFillType(); native_reset(mNativePath); + setFillType(fillType); } /** diff --git a/graphics/java/android/graphics/drawable/BitmapDrawable.java b/graphics/java/android/graphics/drawable/BitmapDrawable.java index 5ceab36674df..98e3386e7f15 100644 --- a/graphics/java/android/graphics/drawable/BitmapDrawable.java +++ b/graphics/java/android/graphics/drawable/BitmapDrawable.java @@ -28,6 +28,7 @@ import android.graphics.Paint; import android.graphics.PixelFormat; import android.graphics.Rect; import android.graphics.Shader; +import android.graphics.Xfermode; import android.util.AttributeSet; import android.util.DisplayMetrics; import android.util.LayoutDirection; @@ -531,6 +532,14 @@ public class BitmapDrawable extends Drawable { } /** + * @hide Candidate for future API inclusion + */ + public void setXfermode(Xfermode xfermode) { + mBitmapState.mPaint.setXfermode(xfermode); + invalidateSelf(); + } + + /** * A mutable BitmapDrawable still shares its Bitmap with any other Drawable * that comes from the same resource. * diff --git a/graphics/java/android/graphics/drawable/Drawable.java b/graphics/java/android/graphics/drawable/Drawable.java index 8135716d41e5..8a3d940c63e7 100644 --- a/graphics/java/android/graphics/drawable/Drawable.java +++ b/graphics/java/android/graphics/drawable/Drawable.java @@ -17,6 +17,7 @@ package android.graphics.drawable; import android.graphics.Insets; +import android.graphics.Xfermode; import android.os.Trace; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; @@ -428,6 +429,15 @@ public abstract class Drawable { public abstract void setColorFilter(ColorFilter cf); /** + * @hide Consider for future API inclusion + */ + public void setXfermode(Xfermode mode) { + // Base implementation drops it on the floor for compatibility. Whee! + // TODO: For this to be included in the API proper, all framework drawables need impls. + // For right now only BitmapDrawable has it. + } + + /** * Specify a color and porterduff mode to be the colorfilter for this * drawable. */ diff --git a/graphics/tests/graphicstests/src/android/graphics/PathTest.java b/graphics/tests/graphicstests/src/android/graphics/PathTest.java new file mode 100644 index 000000000000..96200bc099f9 --- /dev/null +++ b/graphics/tests/graphicstests/src/android/graphics/PathTest.java @@ -0,0 +1,37 @@ +/* + * Copyright (C) 2013 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.graphics; + +import android.test.suitebuilder.annotation.SmallTest; +import junit.framework.TestCase; + + +public class PathTest extends TestCase { + + @SmallTest + public void testResetPreservesFillType() throws Exception { + Path path = new Path(); + + final Path.FillType defaultFillType = path.getFillType(); + final Path.FillType fillType = Path.FillType.INVERSE_EVEN_ODD; + assertFalse(fillType.equals(defaultFillType)); // Sanity check for the test itself. + + path.setFillType(fillType); + path.reset(); + assertEquals(path.getFillType(), fillType); + } +} diff --git a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/unit/CameraMetadataTest.java b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/unit/CameraMetadataTest.java index 874e0780f968..3f17aa9b4649 100644 --- a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/unit/CameraMetadataTest.java +++ b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/unit/CameraMetadataTest.java @@ -18,9 +18,11 @@ package com.android.mediaframeworktest.unit; import android.os.Parcel; import android.test.suitebuilder.annotation.SmallTest; -import android.graphics.ImageFormat; +import android.graphics.Point; import android.graphics.Rect; -import android.hardware.camera2.CameraMetadata; +import android.hardware.camera2.CameraCharacteristics; +import android.hardware.camera2.CaptureResult; +import android.hardware.camera2.Face; import android.hardware.camera2.Rational; import android.hardware.camera2.Size; import android.hardware.camera2.impl.CameraMetadataNative; @@ -30,9 +32,6 @@ import static android.hardware.camera2.impl.CameraMetadataNative.*; import java.lang.reflect.Array; import java.nio.ByteBuffer; import java.nio.ByteOrder; -import java.nio.IntBuffer; - -import static org.junit.Assert.assertArrayEquals; /** * <pre> @@ -57,6 +56,7 @@ public class CameraMetadataTest extends junit.framework.TestCase { // Tags static final int ANDROID_COLOR_CORRECTION_MODE = ANDROID_COLOR_CORRECTION_START; static final int ANDROID_COLOR_CORRECTION_TRANSFORM = ANDROID_COLOR_CORRECTION_START + 1; + static final int ANDROID_COLOR_CORRECTION_GAINS = ANDROID_COLOR_CORRECTION_START + 2; static final int ANDROID_CONTROL_AE_ANTIBANDING_MODE = ANDROID_CONTROL_START; static final int ANDROID_CONTROL_AE_EXPOSURE_COMPENSATION = ANDROID_CONTROL_START + 1; @@ -131,7 +131,8 @@ public class CameraMetadataTest extends junit.framework.TestCase { @SmallTest public void testGetTypeFromTag() { assertEquals(TYPE_BYTE, CameraMetadataNative.getNativeType(ANDROID_COLOR_CORRECTION_MODE)); - assertEquals(TYPE_FLOAT, CameraMetadataNative.getNativeType(ANDROID_COLOR_CORRECTION_TRANSFORM)); + assertEquals(TYPE_RATIONAL, CameraMetadataNative.getNativeType(ANDROID_COLOR_CORRECTION_TRANSFORM)); + assertEquals(TYPE_FLOAT, CameraMetadataNative.getNativeType(ANDROID_COLOR_CORRECTION_GAINS)); assertEquals(TYPE_BYTE, CameraMetadataNative.getNativeType(ANDROID_CONTROL_AE_ANTIBANDING_MODE)); assertEquals(TYPE_INT32, CameraMetadataNative.getNativeType(ANDROID_CONTROL_AE_EXPOSURE_COMPENSATION)); @@ -187,30 +188,30 @@ public class CameraMetadataTest extends junit.framework.TestCase { assertEquals(false, mMetadata.isEmpty()); // - // android.colorCorrection.transform (3x3 matrix) + // android.colorCorrection.colorCorrectionGains (float x 4 array) // - final float[] transformMatrix = new float[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; - byte[] transformMatrixAsByteArray = new byte[transformMatrix.length * 4]; - ByteBuffer transformMatrixByteBuffer = - ByteBuffer.wrap(transformMatrixAsByteArray).order(ByteOrder.nativeOrder()); - for (float f : transformMatrix) - transformMatrixByteBuffer.putFloat(f); + final float[] colorCorrectionGains = new float[] { 1.0f, 2.0f, 3.0f, 4.0f}; + byte[] colorCorrectionGainsAsByteArray = new byte[colorCorrectionGains.length * 4]; + ByteBuffer colorCorrectionGainsByteBuffer = + ByteBuffer.wrap(colorCorrectionGainsAsByteArray).order(ByteOrder.nativeOrder()); + for (float f : colorCorrectionGains) + colorCorrectionGainsByteBuffer.putFloat(f); // Read - assertNull(mMetadata.readValues(ANDROID_COLOR_CORRECTION_TRANSFORM)); - mMetadata.writeValues(ANDROID_COLOR_CORRECTION_TRANSFORM, transformMatrixAsByteArray); + assertNull(mMetadata.readValues(ANDROID_COLOR_CORRECTION_GAINS)); + mMetadata.writeValues(ANDROID_COLOR_CORRECTION_GAINS, colorCorrectionGainsAsByteArray); // Write - assertArrayEquals(transformMatrixAsByteArray, - mMetadata.readValues(ANDROID_COLOR_CORRECTION_TRANSFORM)); + assertArrayEquals(colorCorrectionGainsAsByteArray, + mMetadata.readValues(ANDROID_COLOR_CORRECTION_GAINS)); assertEquals(2, mMetadata.getEntryCount()); assertEquals(false, mMetadata.isEmpty()); // Erase - mMetadata.writeValues(ANDROID_COLOR_CORRECTION_TRANSFORM, null); - assertNull(mMetadata.readValues(ANDROID_COLOR_CORRECTION_TRANSFORM)); + mMetadata.writeValues(ANDROID_COLOR_CORRECTION_GAINS, null); + assertNull(mMetadata.readValues(ANDROID_COLOR_CORRECTION_GAINS)); assertEquals(1, mMetadata.getEntryCount()); } @@ -279,7 +280,7 @@ public class CameraMetadataTest extends junit.framework.TestCase { @SmallTest public void testReadWritePrimitiveArray() { // int32 (n) - checkKeyGetAndSetArray("android.sensor.info.availableSensitivities", int[].class, + checkKeyGetAndSetArray("android.sensor.info.sensitivityRange", int[].class, new int[] { 0xC0FFEE, 0xDEADF00D }); @@ -379,7 +380,9 @@ public class CameraMetadataTest extends junit.framework.TestCase { new AvailableFormat[] { AvailableFormat.RAW_SENSOR, AvailableFormat.YV12, - AvailableFormat.IMPLEMENTATION_DEFINED + AvailableFormat.IMPLEMENTATION_DEFINED, + AvailableFormat.YCbCr_420_888, + AvailableFormat.BLOB }); } @@ -431,12 +434,13 @@ public class CameraMetadataTest extends junit.framework.TestCase { AvailableFormat.RAW_SENSOR, AvailableFormat.YV12, AvailableFormat.IMPLEMENTATION_DEFINED, - AvailableFormat.YCbCr_420_888 + AvailableFormat.YCbCr_420_888, + AvailableFormat.BLOB }); - Key<AeAntibandingMode> availableFormatsKey = - new Key<AeAntibandingMode>("android.scaler.availableFormats", - AeAntibandingMode.class); + Key<AvailableFormat[]> availableFormatsKey = + new Key<AvailableFormat[]>("android.scaler.availableFormats", + AvailableFormat[].class); byte[] availableFormatValues = mMetadata.readValues(CameraMetadataNative .getTag(availableFormatsKey.getName())); @@ -444,7 +448,8 @@ public class CameraMetadataTest extends junit.framework.TestCase { 0x20, 0x32315659, 0x22, - 0x23 + 0x23, + 0x21 }; ByteBuffer bf = ByteBuffer.wrap(availableFormatValues).order(ByteOrder.nativeOrder()); @@ -523,4 +528,115 @@ public class CameraMetadataTest extends junit.framework.TestCase { <T> void compareGeneric(T expected, T actual) { assertEquals(expected, actual); } + + @SmallTest + public void testReadWriteOverride() { + // + // android.scaler.availableFormats (int x n array) + // + int[] availableFormats = new int[] { + 0x20, // RAW_SENSOR + 0x32315659, // YV12 + 0x11, // YCrCb_420_SP + 0x100, // ImageFormat.JPEG + 0x22, // IMPLEMENTATION_DEFINED + 0x23, // YCbCr_420_888 + }; + int[] expectedIntValues = new int[] { + 0x20, // RAW_SENSOR + 0x32315659, // YV12 + 0x11, // YCrCb_420_SP + 0x21, // BLOB + 0x22, // IMPLEMENTATION_DEFINED + 0x23, // YCbCr_420_888 + }; + int availableFormatTag = CameraMetadataNative.getTag("android.scaler.availableFormats"); + + // Write + mMetadata.set(CameraCharacteristics.SCALER_AVAILABLE_FORMATS, availableFormats); + + byte[] availableFormatValues = mMetadata.readValues(availableFormatTag); + + ByteBuffer bf = ByteBuffer.wrap(availableFormatValues).order(ByteOrder.nativeOrder()); + + assertEquals(expectedIntValues.length * 4, availableFormatValues.length); + for (int i = 0; i < expectedIntValues.length; ++i) { + assertEquals(expectedIntValues[i], bf.getInt()); + } + // Read + byte[] availableFormatsAsByteArray = new byte[expectedIntValues.length * 4]; + ByteBuffer availableFormatsByteBuffer = + ByteBuffer.wrap(availableFormatsAsByteArray).order(ByteOrder.nativeOrder()); + for (int value : expectedIntValues) { + availableFormatsByteBuffer.putInt(value); + } + mMetadata.writeValues(availableFormatTag, availableFormatsAsByteArray); + + int[] resultFormats = mMetadata.get(CameraCharacteristics.SCALER_AVAILABLE_FORMATS); + assertNotNull("result available formats shouldn't be null", resultFormats); + assertArrayEquals(availableFormats, resultFormats); + + // + // android.statistics.faces (Face x n array) + // + int[] expectedFaceIds = new int[] {1, 2, 3, 4, 5}; + byte[] expectedFaceScores = new byte[] {10, 20, 30, 40, 50}; + int numFaces = expectedFaceIds.length; + Rect[] expectedRects = new Rect[numFaces]; + for (int i = 0; i < numFaces; i++) { + expectedRects[i] = new Rect(i*4 + 1, i * 4 + 2, i * 4 + 3, i * 4 + 4); + } + int[] expectedFaceLM = new int[] { + 1, 2, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, + }; + Point[] expectedFaceLMPoints = new Point[numFaces * 3]; + for (int i = 0; i < numFaces; i++) { + expectedFaceLMPoints[i*3] = new Point(expectedFaceLM[i*6], expectedFaceLM[i*6+1]); + expectedFaceLMPoints[i*3+1] = new Point(expectedFaceLM[i*6+2], expectedFaceLM[i*6+3]); + expectedFaceLMPoints[i*3+2] = new Point(expectedFaceLM[i*6+4], expectedFaceLM[i*6+5]); + } + + /** + * Read - FACE_DETECT_MODE == FULL + */ + mMetadata.set(CaptureResult.STATISTICS_FACE_DETECT_MODE, + CaptureResult.STATISTICS_FACE_DETECT_MODE_FULL); + mMetadata.set(CaptureResult.STATISTICS_FACE_IDS, expectedFaceIds); + mMetadata.set(CaptureResult.STATISTICS_FACE_SCORES, expectedFaceScores); + mMetadata.set(CaptureResult.STATISTICS_FACE_RECTANGLES, expectedRects); + mMetadata.set(CaptureResult.STATISTICS_FACE_LANDMARKS, expectedFaceLM); + Face[] resultFaces = mMetadata.get(CaptureResult.STATISTICS_FACES); + assertEquals(numFaces, resultFaces.length); + for (int i = 0; i < numFaces; i++) { + assertEquals(expectedFaceIds[i], resultFaces[i].getId()); + assertEquals(expectedFaceScores[i], resultFaces[i].getScore()); + assertEquals(expectedRects[i], resultFaces[i].getBounds()); + assertEquals(expectedFaceLMPoints[i*3], resultFaces[i].getLeftEyePosition()); + assertEquals(expectedFaceLMPoints[i*3+1], resultFaces[i].getRightEyePosition()); + assertEquals(expectedFaceLMPoints[i*3+2], resultFaces[i].getMouthPosition()); + } + + /** + * Read - FACE_DETECT_MODE == SIMPLE + */ + mMetadata.set(CaptureResult.STATISTICS_FACE_DETECT_MODE, + CaptureResult.STATISTICS_FACE_DETECT_MODE_SIMPLE); + mMetadata.set(CaptureResult.STATISTICS_FACE_SCORES, expectedFaceScores); + mMetadata.set(CaptureResult.STATISTICS_FACE_RECTANGLES, expectedRects); + Face[] resultSimpleFaces = mMetadata.get(CaptureResult.STATISTICS_FACES); + assertEquals(numFaces, resultSimpleFaces.length); + for (int i = 0; i < numFaces; i++) { + assertEquals(Face.ID_UNSUPPORTED, resultSimpleFaces[i].getId()); + assertEquals(expectedFaceScores[i], resultSimpleFaces[i].getScore()); + assertEquals(expectedRects[i], resultSimpleFaces[i].getBounds()); + assertNull(resultSimpleFaces[i].getLeftEyePosition()); + assertNull(resultSimpleFaces[i].getRightEyePosition()); + assertNull(resultSimpleFaces[i].getMouthPosition()); + } + + } } diff --git a/packages/DocumentsUI/res/layout-sw720dp-land/item_doc_list.xml b/packages/DocumentsUI/res/layout-sw720dp-land/item_doc_list.xml index 851061fe9b51..adbb9da4323f 100644 --- a/packages/DocumentsUI/res/layout-sw720dp-land/item_doc_list.xml +++ b/packages/DocumentsUI/res/layout-sw720dp-land/item_doc_list.xml @@ -64,7 +64,7 @@ android:layout_weight="0.5" android:layout_marginEnd="12dp" android:singleLine="true" - android:ellipsize="marquee" + android:ellipsize="middle" android:textAlignment="viewStart" style="@style/TextAppearance.Medium" /> @@ -83,7 +83,7 @@ android:layout_weight="0.25" android:layout_marginEnd="12dp" android:singleLine="true" - android:ellipsize="marquee" + android:ellipsize="end" android:textAlignment="viewStart" style="@style/TextAppearance.Small" /> @@ -95,7 +95,7 @@ android:layout_marginEnd="12dp" android:minWidth="70dp" android:singleLine="true" - android:ellipsize="marquee" + android:ellipsize="end" android:textAlignment="viewEnd" style="@style/TextAppearance.Small" /> @@ -107,7 +107,7 @@ android:layout_marginEnd="12dp" android:minWidth="70dp" android:singleLine="true" - android:ellipsize="marquee" + android:ellipsize="end" android:textAlignment="viewEnd" style="@style/TextAppearance.Small" /> diff --git a/packages/DocumentsUI/res/layout/item_doc_grid.xml b/packages/DocumentsUI/res/layout/item_doc_grid.xml index bb5dce1306d7..3aef1cd3bca5 100644 --- a/packages/DocumentsUI/res/layout/item_doc_grid.xml +++ b/packages/DocumentsUI/res/layout/item_doc_grid.xml @@ -67,7 +67,7 @@ android:layout_height="wrap_content" android:layout_weight="1" android:singleLine="true" - android:ellipsize="marquee" + android:ellipsize="middle" android:textAlignment="viewStart" style="@style/TextAppearance.Medium" /> @@ -97,7 +97,7 @@ android:layout_height="wrap_content" android:layout_weight="0.5" android:singleLine="true" - android:ellipsize="marquee" + android:ellipsize="end" android:textAlignment="viewStart" style="@style/TextAppearance.Small" /> @@ -108,7 +108,7 @@ android:layout_weight="0.5" android:layout_marginStart="8dp" android:singleLine="true" - android:ellipsize="marquee" + android:ellipsize="end" android:textAlignment="viewStart" style="@style/TextAppearance.Small" /> diff --git a/packages/DocumentsUI/res/layout/item_doc_list.xml b/packages/DocumentsUI/res/layout/item_doc_list.xml index 9ba46ac454e6..e3a0dddea66c 100644 --- a/packages/DocumentsUI/res/layout/item_doc_list.xml +++ b/packages/DocumentsUI/res/layout/item_doc_list.xml @@ -68,7 +68,7 @@ android:layout_height="wrap_content" android:layout_weight="1" android:singleLine="true" - android:ellipsize="marquee" + android:ellipsize="middle" android:textAlignment="viewStart" style="@style/TextAppearance.Medium" /> @@ -95,7 +95,7 @@ android:layout_width="90dp" android:layout_height="wrap_content" android:singleLine="true" - android:ellipsize="marquee" + android:ellipsize="end" android:textAlignment="viewStart" style="@style/TextAppearance.Small" /> @@ -105,7 +105,7 @@ android:layout_height="wrap_content" android:layout_marginStart="8dp" android:singleLine="true" - android:ellipsize="marquee" + android:ellipsize="end" android:textAlignment="viewStart" style="@style/TextAppearance.Small" /> @@ -116,7 +116,7 @@ android:layout_weight="1" android:layout_marginStart="8dp" android:singleLine="true" - android:ellipsize="marquee" + android:ellipsize="end" android:textAlignment="viewStart" style="@style/TextAppearance.Small" /> diff --git a/packages/DocumentsUI/res/layout/item_root.xml b/packages/DocumentsUI/res/layout/item_root.xml index 9b52d85ca45e..f17c261f7339 100644 --- a/packages/DocumentsUI/res/layout/item_root.xml +++ b/packages/DocumentsUI/res/layout/item_root.xml @@ -43,7 +43,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:singleLine="true" - android:ellipsize="marquee" + android:ellipsize="end" android:textAlignment="viewStart" style="@style/TextAppearance.Medium" /> @@ -52,7 +52,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:singleLine="true" - android:ellipsize="marquee" + android:ellipsize="end" android:textAlignment="viewStart" style="@style/TextAppearance.Small" /> diff --git a/packages/DocumentsUI/res/layout/item_title.xml b/packages/DocumentsUI/res/layout/item_title.xml index 58016f1fe962..6e96fb534997 100644 --- a/packages/DocumentsUI/res/layout/item_title.xml +++ b/packages/DocumentsUI/res/layout/item_title.xml @@ -38,7 +38,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:singleLine="true" - android:ellipsize="marquee" + android:ellipsize="middle" android:textAlignment="viewStart" style="@style/TextAppearance.Medium" /> diff --git a/packages/DocumentsUI/res/values-ms-rMY/strings.xml b/packages/DocumentsUI/res/values-ms-rMY/strings.xml index 1efa2e14cd7c..7e09c57b1f86 100644 --- a/packages/DocumentsUI/res/values-ms-rMY/strings.xml +++ b/packages/DocumentsUI/res/values-ms-rMY/strings.xml @@ -37,7 +37,7 @@ <string name="drawer_close" msgid="7602734368552123318">"Sembunyikan akar"</string> <string name="save_error" msgid="6167009778003223664">"Gagal menyimpan dokumen"</string> <string name="create_error" msgid="3735649141335444215">"Gagal membuat folder"</string> - <string name="query_error" msgid="1222448261663503501">"Gagal menanyakan dokumen."</string> + <string name="query_error" msgid="1222448261663503501">"Gagal menanyakan dokumen"</string> <string name="root_recent" msgid="4470053704320518133">"Terbaharu"</string> <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> kosong"</string> <string name="root_type_service" msgid="2178854894416775409">"Perkhidmatan storan"</string> diff --git a/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java b/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java index 4d410d53ee96..1f3901c7bd24 100644 --- a/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java +++ b/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java @@ -295,6 +295,11 @@ public class DirectoryFragment extends Fragment { updateDisplayState(); + // When launched into empty recents, show drawer + if (mType == TYPE_RECENT_OPEN && mAdapter.isEmpty() && !state.stackTouched) { + ((DocumentsActivity) context).setRootsDrawerOpen(true); + } + // Restore any previous instance state final SparseArray<Parcelable> container = state.dirState.remove(mStateKey); if (container != null && !getArguments().getBoolean(EXTRA_IGNORE_STATE, false)) { diff --git a/packages/DocumentsUI/src/com/android/documentsui/RecentsCreateFragment.java b/packages/DocumentsUI/src/com/android/documentsui/RecentsCreateFragment.java index 39541731eda5..05766f5409d4 100644 --- a/packages/DocumentsUI/src/com/android/documentsui/RecentsCreateFragment.java +++ b/packages/DocumentsUI/src/com/android/documentsui/RecentsCreateFragment.java @@ -109,6 +109,11 @@ public class RecentsCreateFragment extends Fragment { public void onLoadFinished( Loader<List<DocumentStack>> loader, List<DocumentStack> data) { mAdapter.swapStacks(data); + + // When launched into empty recents, show drawer + if (mAdapter.isEmpty() && !state.stackTouched) { + ((DocumentsActivity) context).setRootsDrawerOpen(true); + } } @Override diff --git a/packages/DocumentsUI/src/com/android/documentsui/RootsCache.java b/packages/DocumentsUI/src/com/android/documentsui/RootsCache.java index bad0a9605a1b..eb5676509840 100644 --- a/packages/DocumentsUI/src/com/android/documentsui/RootsCache.java +++ b/packages/DocumentsUI/src/com/android/documentsui/RootsCache.java @@ -21,9 +21,11 @@ import static com.android.documentsui.DocumentsActivity.TAG; import android.content.ContentProviderClient; import android.content.ContentResolver; import android.content.Context; +import android.content.Intent; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.content.pm.ProviderInfo; +import android.content.pm.ResolveInfo; import android.database.ContentObserver; import android.database.Cursor; import android.net.Uri; @@ -158,6 +160,9 @@ public class RootsCache { private class UpdateTask extends AsyncTask<Void, Void, Void> { private final String mFilterPackage; + private final Multimap<String, RootInfo> mTaskRoots = ArrayListMultimap.create(); + private final HashSet<String> mTaskStoppedAuthorities = Sets.newHashSet(); + /** * Update all roots. */ @@ -177,54 +182,64 @@ public class RootsCache { protected Void doInBackground(Void... params) { final long start = SystemClock.elapsedRealtime(); - final Multimap<String, RootInfo> roots = ArrayListMultimap.create(); - final HashSet<String> stoppedAuthorities = Sets.newHashSet(); - - roots.put(mRecentsRoot.authority, mRecentsRoot); + mTaskRoots.put(mRecentsRoot.authority, mRecentsRoot); final ContentResolver resolver = mContext.getContentResolver(); final PackageManager pm = mContext.getPackageManager(); - final List<ProviderInfo> providers = pm.queryContentProviders( + + // Pick up provider with action string + final Intent intent = new Intent(DocumentsContract.PROVIDER_INTERFACE); + final List<ResolveInfo> providers = pm.queryIntentContentProviders(intent, 0); + for (ResolveInfo info : providers) { + handleDocumentsProvider(info.providerInfo); + } + + // Pick up legacy providers + final List<ProviderInfo> legacyProviders = pm.queryContentProviders( null, -1, PackageManager.GET_META_DATA); - for (ProviderInfo info : providers) { + for (ProviderInfo info : legacyProviders) { if (info.metaData != null && info.metaData.containsKey( DocumentsContract.META_DATA_DOCUMENT_PROVIDER)) { - // Ignore stopped packages for now; we might query them - // later during UI interaction. - if ((info.applicationInfo.flags & ApplicationInfo.FLAG_STOPPED) != 0) { - if (LOGD) Log.d(TAG, "Ignoring stopped authority " + info.authority); - stoppedAuthorities.add(info.authority); - continue; - } - - // Try using cached roots if filtering - boolean cacheHit = false; - if (mFilterPackage != null && !mFilterPackage.equals(info.packageName)) { - synchronized (mLock) { - if (roots.putAll(info.authority, mRoots.get(info.authority))) { - if (LOGD) Log.d(TAG, "Used cached roots for " + info.authority); - cacheHit = true; - } - } - } - - // Cache miss, or loading everything - if (!cacheHit) { - roots.putAll( - info.authority, loadRootsForAuthority(resolver, info.authority)); - } + handleDocumentsProvider(info); } } final long delta = SystemClock.elapsedRealtime() - start; - Log.d(TAG, "Update found " + roots.size() + " roots in " + delta + "ms"); + Log.d(TAG, "Update found " + mTaskRoots.size() + " roots in " + delta + "ms"); synchronized (mLock) { - mStoppedAuthorities = stoppedAuthorities; - mRoots = roots; + mRoots = mTaskRoots; + mStoppedAuthorities = mTaskStoppedAuthorities; } mFirstLoad.countDown(); return null; } + + private void handleDocumentsProvider(ProviderInfo info) { + // Ignore stopped packages for now; we might query them + // later during UI interaction. + if ((info.applicationInfo.flags & ApplicationInfo.FLAG_STOPPED) != 0) { + if (LOGD) Log.d(TAG, "Ignoring stopped authority " + info.authority); + mTaskStoppedAuthorities.add(info.authority); + return; + } + + // Try using cached roots if filtering + boolean cacheHit = false; + if (mFilterPackage != null && !mFilterPackage.equals(info.packageName)) { + synchronized (mLock) { + if (mTaskRoots.putAll(info.authority, mRoots.get(info.authority))) { + if (LOGD) Log.d(TAG, "Used cached roots for " + info.authority); + cacheHit = true; + } + } + } + + // Cache miss, or loading everything + if (!cacheHit) { + mTaskRoots.putAll(info.authority, + loadRootsForAuthority(mContext.getContentResolver(), info.authority)); + } + } } /** diff --git a/packages/DocumentsUI/src/com/android/documentsui/RootsFragment.java b/packages/DocumentsUI/src/com/android/documentsui/RootsFragment.java index 2fb12bb29233..fdbc3abf6187 100644 --- a/packages/DocumentsUI/src/com/android/documentsui/RootsFragment.java +++ b/packages/DocumentsUI/src/com/android/documentsui/RootsFragment.java @@ -142,9 +142,12 @@ public class RootsFragment extends Fragment { final RootInfo root = ((DocumentsActivity) getActivity()).getCurrentRoot(); for (int i = 0; i < mAdapter.getCount(); i++) { final Object item = mAdapter.getItem(i); - if (Objects.equal(item, root)) { - mList.setItemChecked(i, true); - return; + if (item instanceof RootItem) { + final RootInfo testRoot = ((RootItem) item).root; + if (Objects.equal(testRoot, root)) { + mList.setItemChecked(i, true); + return; + } } } } diff --git a/packages/ExternalStorageProvider/AndroidManifest.xml b/packages/ExternalStorageProvider/AndroidManifest.xml index 7094efc375b6..99a42600cc5a 100644 --- a/packages/ExternalStorageProvider/AndroidManifest.xml +++ b/packages/ExternalStorageProvider/AndroidManifest.xml @@ -11,9 +11,9 @@ android:grantUriPermissions="true" android:exported="true" android:permission="android.permission.MANAGE_DOCUMENTS"> - <meta-data - android:name="android.content.DOCUMENT_PROVIDER" - android:value="true" /> + <intent-filter> + <action android:name="android.content.action.DOCUMENTS_PROVIDER" /> + </intent-filter> </provider> <!-- TODO: find a better place for tests to live --> @@ -24,9 +24,9 @@ android:exported="true" android:permission="android.permission.MANAGE_DOCUMENTS" android:enabled="false"> - <meta-data - android:name="android.content.DOCUMENT_PROVIDER" - android:value="true" /> + <intent-filter> + <action android:name="android.content.action.DOCUMENTS_PROVIDER" /> + </intent-filter> </provider> </application> </manifest> diff --git a/packages/Keyguard/res/drawable-hdpi/progress_bg_holo_light.9.png b/packages/Keyguard/res/drawable-hdpi/progress_bg_holo_light.9.png Binary files differnew file mode 100644 index 000000000000..2d79280c7d55 --- /dev/null +++ b/packages/Keyguard/res/drawable-hdpi/progress_bg_holo_light.9.png diff --git a/packages/Keyguard/res/drawable-hdpi/progress_primary_holo_light.9.png b/packages/Keyguard/res/drawable-hdpi/progress_primary_holo_light.9.png Binary files differnew file mode 100644 index 000000000000..543cb852769b --- /dev/null +++ b/packages/Keyguard/res/drawable-hdpi/progress_primary_holo_light.9.png diff --git a/packages/Keyguard/res/drawable-hdpi/progress_secondary_holo_light.9.png b/packages/Keyguard/res/drawable-hdpi/progress_secondary_holo_light.9.png Binary files differnew file mode 100644 index 000000000000..449705852693 --- /dev/null +++ b/packages/Keyguard/res/drawable-hdpi/progress_secondary_holo_light.9.png diff --git a/packages/Keyguard/res/drawable-hdpi/scrubber_control_disabled_holo.png b/packages/Keyguard/res/drawable-hdpi/scrubber_control_disabled_holo.png Binary files differnew file mode 100644 index 000000000000..ba778995f9ea --- /dev/null +++ b/packages/Keyguard/res/drawable-hdpi/scrubber_control_disabled_holo.png diff --git a/packages/Keyguard/res/drawable-hdpi/scrubber_control_focused_holo.png b/packages/Keyguard/res/drawable-hdpi/scrubber_control_focused_holo.png Binary files differnew file mode 100644 index 000000000000..539ee2253558 --- /dev/null +++ b/packages/Keyguard/res/drawable-hdpi/scrubber_control_focused_holo.png diff --git a/packages/Keyguard/res/drawable-hdpi/scrubber_control_normal_holo.png b/packages/Keyguard/res/drawable-hdpi/scrubber_control_normal_holo.png Binary files differnew file mode 100644 index 000000000000..9a4ea2f481eb --- /dev/null +++ b/packages/Keyguard/res/drawable-hdpi/scrubber_control_normal_holo.png diff --git a/packages/Keyguard/res/drawable-hdpi/scrubber_control_pressed_holo.png b/packages/Keyguard/res/drawable-hdpi/scrubber_control_pressed_holo.png Binary files differnew file mode 100644 index 000000000000..e6b11ded6d66 --- /dev/null +++ b/packages/Keyguard/res/drawable-hdpi/scrubber_control_pressed_holo.png diff --git a/packages/Keyguard/res/drawable-hdpi/scrubber_primary_holo.9.png b/packages/Keyguard/res/drawable-hdpi/scrubber_primary_holo.9.png Binary files differnew file mode 100644 index 000000000000..822e8d113d0e --- /dev/null +++ b/packages/Keyguard/res/drawable-hdpi/scrubber_primary_holo.9.png diff --git a/packages/Keyguard/res/drawable-hdpi/scrubber_secondary_holo.9.png b/packages/Keyguard/res/drawable-hdpi/scrubber_secondary_holo.9.png Binary files differnew file mode 100644 index 000000000000..be4253ec0497 --- /dev/null +++ b/packages/Keyguard/res/drawable-hdpi/scrubber_secondary_holo.9.png diff --git a/packages/Keyguard/res/drawable-hdpi/scrubber_track_holo_light.9.png b/packages/Keyguard/res/drawable-hdpi/scrubber_track_holo_light.9.png Binary files differnew file mode 100644 index 000000000000..2334e143c1d8 --- /dev/null +++ b/packages/Keyguard/res/drawable-hdpi/scrubber_track_holo_light.9.png diff --git a/packages/Keyguard/res/drawable-mdpi/progress_bg_holo_light.9.png b/packages/Keyguard/res/drawable-mdpi/progress_bg_holo_light.9.png Binary files differnew file mode 100644 index 000000000000..ff404337beb1 --- /dev/null +++ b/packages/Keyguard/res/drawable-mdpi/progress_bg_holo_light.9.png diff --git a/packages/Keyguard/res/drawable-mdpi/progress_primary_holo_light.9.png b/packages/Keyguard/res/drawable-mdpi/progress_primary_holo_light.9.png Binary files differnew file mode 100644 index 000000000000..d5f874df2860 --- /dev/null +++ b/packages/Keyguard/res/drawable-mdpi/progress_primary_holo_light.9.png diff --git a/packages/Keyguard/res/drawable-mdpi/progress_secondary_holo_light.9.png b/packages/Keyguard/res/drawable-mdpi/progress_secondary_holo_light.9.png Binary files differnew file mode 100644 index 000000000000..f027007e0e54 --- /dev/null +++ b/packages/Keyguard/res/drawable-mdpi/progress_secondary_holo_light.9.png diff --git a/packages/Keyguard/res/drawable-mdpi/scrubber_control_disabled_holo.png b/packages/Keyguard/res/drawable-mdpi/scrubber_control_disabled_holo.png Binary files differnew file mode 100644 index 000000000000..981facd14221 --- /dev/null +++ b/packages/Keyguard/res/drawable-mdpi/scrubber_control_disabled_holo.png diff --git a/packages/Keyguard/res/drawable-mdpi/scrubber_control_focused_holo.png b/packages/Keyguard/res/drawable-mdpi/scrubber_control_focused_holo.png Binary files differnew file mode 100644 index 000000000000..d432f42c952b --- /dev/null +++ b/packages/Keyguard/res/drawable-mdpi/scrubber_control_focused_holo.png diff --git a/packages/Keyguard/res/drawable-mdpi/scrubber_control_normal_holo.png b/packages/Keyguard/res/drawable-mdpi/scrubber_control_normal_holo.png Binary files differnew file mode 100644 index 000000000000..7bb749ed8f9b --- /dev/null +++ b/packages/Keyguard/res/drawable-mdpi/scrubber_control_normal_holo.png diff --git a/packages/Keyguard/res/drawable-mdpi/scrubber_control_pressed_holo.png b/packages/Keyguard/res/drawable-mdpi/scrubber_control_pressed_holo.png Binary files differnew file mode 100644 index 000000000000..43d826e7f111 --- /dev/null +++ b/packages/Keyguard/res/drawable-mdpi/scrubber_control_pressed_holo.png diff --git a/packages/Keyguard/res/drawable-mdpi/scrubber_primary_holo.9.png b/packages/Keyguard/res/drawable-mdpi/scrubber_primary_holo.9.png Binary files differnew file mode 100644 index 000000000000..98ac4287f697 --- /dev/null +++ b/packages/Keyguard/res/drawable-mdpi/scrubber_primary_holo.9.png diff --git a/packages/Keyguard/res/drawable-mdpi/scrubber_secondary_holo.9.png b/packages/Keyguard/res/drawable-mdpi/scrubber_secondary_holo.9.png Binary files differnew file mode 100644 index 000000000000..d8b563bc9c26 --- /dev/null +++ b/packages/Keyguard/res/drawable-mdpi/scrubber_secondary_holo.9.png diff --git a/packages/Keyguard/res/drawable-mdpi/scrubber_track_holo_light.9.png b/packages/Keyguard/res/drawable-mdpi/scrubber_track_holo_light.9.png Binary files differnew file mode 100644 index 000000000000..47c5dd95117a --- /dev/null +++ b/packages/Keyguard/res/drawable-mdpi/scrubber_track_holo_light.9.png diff --git a/packages/Keyguard/res/drawable-xhdpi/progress_bg_holo_light.9.png b/packages/Keyguard/res/drawable-xhdpi/progress_bg_holo_light.9.png Binary files differnew file mode 100644 index 000000000000..dff09393606a --- /dev/null +++ b/packages/Keyguard/res/drawable-xhdpi/progress_bg_holo_light.9.png diff --git a/packages/Keyguard/res/drawable-xhdpi/progress_primary_holo_light.9.png b/packages/Keyguard/res/drawable-xhdpi/progress_primary_holo_light.9.png Binary files differnew file mode 100644 index 000000000000..60b81984cf88 --- /dev/null +++ b/packages/Keyguard/res/drawable-xhdpi/progress_primary_holo_light.9.png diff --git a/packages/Keyguard/res/drawable-xhdpi/progress_secondary_holo_light.9.png b/packages/Keyguard/res/drawable-xhdpi/progress_secondary_holo_light.9.png Binary files differnew file mode 100644 index 000000000000..11b31be3083d --- /dev/null +++ b/packages/Keyguard/res/drawable-xhdpi/progress_secondary_holo_light.9.png diff --git a/packages/Keyguard/res/drawable-xhdpi/scrubber_control_disabled_holo.png b/packages/Keyguard/res/drawable-xhdpi/scrubber_control_disabled_holo.png Binary files differnew file mode 100644 index 000000000000..ffe913d0c287 --- /dev/null +++ b/packages/Keyguard/res/drawable-xhdpi/scrubber_control_disabled_holo.png diff --git a/packages/Keyguard/res/drawable-xhdpi/scrubber_control_focused_holo.png b/packages/Keyguard/res/drawable-xhdpi/scrubber_control_focused_holo.png Binary files differnew file mode 100644 index 000000000000..2fccb8f0c5f9 --- /dev/null +++ b/packages/Keyguard/res/drawable-xhdpi/scrubber_control_focused_holo.png diff --git a/packages/Keyguard/res/drawable-xhdpi/scrubber_control_normal_holo.png b/packages/Keyguard/res/drawable-xhdpi/scrubber_control_normal_holo.png Binary files differnew file mode 100644 index 000000000000..a63850143408 --- /dev/null +++ b/packages/Keyguard/res/drawable-xhdpi/scrubber_control_normal_holo.png diff --git a/packages/Keyguard/res/drawable-xhdpi/scrubber_control_pressed_holo.png b/packages/Keyguard/res/drawable-xhdpi/scrubber_control_pressed_holo.png Binary files differnew file mode 100644 index 000000000000..f0e65ea1e968 --- /dev/null +++ b/packages/Keyguard/res/drawable-xhdpi/scrubber_control_pressed_holo.png diff --git a/packages/Keyguard/res/drawable-xhdpi/scrubber_primary_holo.9.png b/packages/Keyguard/res/drawable-xhdpi/scrubber_primary_holo.9.png Binary files differnew file mode 100644 index 000000000000..04f6ae326a60 --- /dev/null +++ b/packages/Keyguard/res/drawable-xhdpi/scrubber_primary_holo.9.png diff --git a/packages/Keyguard/res/drawable-xhdpi/scrubber_secondary_holo.9.png b/packages/Keyguard/res/drawable-xhdpi/scrubber_secondary_holo.9.png Binary files differnew file mode 100644 index 000000000000..7fef98dd7911 --- /dev/null +++ b/packages/Keyguard/res/drawable-xhdpi/scrubber_secondary_holo.9.png diff --git a/packages/Keyguard/res/drawable-xhdpi/scrubber_track_holo_light.9.png b/packages/Keyguard/res/drawable-xhdpi/scrubber_track_holo_light.9.png Binary files differnew file mode 100644 index 000000000000..a7121697a3e9 --- /dev/null +++ b/packages/Keyguard/res/drawable-xhdpi/scrubber_track_holo_light.9.png diff --git a/packages/Keyguard/res/drawable-xxhdpi/kg_add_widget_pressed.png b/packages/Keyguard/res/drawable-xxhdpi/kg_add_widget_pressed.png Binary files differnew file mode 100644 index 000000000000..0c0838b0773a --- /dev/null +++ b/packages/Keyguard/res/drawable-xxhdpi/kg_add_widget_pressed.png diff --git a/packages/Keyguard/res/drawable-xxhdpi/progress_bg_holo_light.9.png b/packages/Keyguard/res/drawable-xxhdpi/progress_bg_holo_light.9.png Binary files differnew file mode 100644 index 000000000000..60a8e22f892a --- /dev/null +++ b/packages/Keyguard/res/drawable-xxhdpi/progress_bg_holo_light.9.png diff --git a/packages/Keyguard/res/drawable-xxhdpi/progress_primary_holo_light.9.png b/packages/Keyguard/res/drawable-xxhdpi/progress_primary_holo_light.9.png Binary files differnew file mode 100644 index 000000000000..18384d39f326 --- /dev/null +++ b/packages/Keyguard/res/drawable-xxhdpi/progress_primary_holo_light.9.png diff --git a/packages/Keyguard/res/drawable-xxhdpi/progress_secondary_holo_light.9.png b/packages/Keyguard/res/drawable-xxhdpi/progress_secondary_holo_light.9.png Binary files differnew file mode 100644 index 000000000000..82eb6155c178 --- /dev/null +++ b/packages/Keyguard/res/drawable-xxhdpi/progress_secondary_holo_light.9.png diff --git a/packages/Keyguard/res/drawable-xxhdpi/scrubber_control_disabled_holo.png b/packages/Keyguard/res/drawable-xxhdpi/scrubber_control_disabled_holo.png Binary files differnew file mode 100644 index 000000000000..d1ac7ae17be6 --- /dev/null +++ b/packages/Keyguard/res/drawable-xxhdpi/scrubber_control_disabled_holo.png diff --git a/packages/Keyguard/res/drawable-xxhdpi/scrubber_control_focused_holo.png b/packages/Keyguard/res/drawable-xxhdpi/scrubber_control_focused_holo.png Binary files differnew file mode 100644 index 000000000000..58a2976f51fe --- /dev/null +++ b/packages/Keyguard/res/drawable-xxhdpi/scrubber_control_focused_holo.png diff --git a/packages/Keyguard/res/drawable-xxhdpi/scrubber_control_normal_holo.png b/packages/Keyguard/res/drawable-xxhdpi/scrubber_control_normal_holo.png Binary files differnew file mode 100644 index 000000000000..6f696fd80e94 --- /dev/null +++ b/packages/Keyguard/res/drawable-xxhdpi/scrubber_control_normal_holo.png diff --git a/packages/Keyguard/res/drawable-xxhdpi/scrubber_control_pressed_holo.png b/packages/Keyguard/res/drawable-xxhdpi/scrubber_control_pressed_holo.png Binary files differnew file mode 100644 index 000000000000..faae4e37340e --- /dev/null +++ b/packages/Keyguard/res/drawable-xxhdpi/scrubber_control_pressed_holo.png diff --git a/packages/Keyguard/res/drawable-xxhdpi/scrubber_primary_holo.9.png b/packages/Keyguard/res/drawable-xxhdpi/scrubber_primary_holo.9.png Binary files differnew file mode 100644 index 000000000000..82c2b7eeb889 --- /dev/null +++ b/packages/Keyguard/res/drawable-xxhdpi/scrubber_primary_holo.9.png diff --git a/packages/Keyguard/res/drawable-xxhdpi/scrubber_secondary_holo.9.png b/packages/Keyguard/res/drawable-xxhdpi/scrubber_secondary_holo.9.png Binary files differnew file mode 100644 index 000000000000..800d95e54d27 --- /dev/null +++ b/packages/Keyguard/res/drawable-xxhdpi/scrubber_secondary_holo.9.png diff --git a/packages/Keyguard/res/drawable-xxhdpi/scrubber_track_holo_light.9.png b/packages/Keyguard/res/drawable-xxhdpi/scrubber_track_holo_light.9.png Binary files differnew file mode 100644 index 000000000000..9991f7fc0834 --- /dev/null +++ b/packages/Keyguard/res/drawable-xxhdpi/scrubber_track_holo_light.9.png diff --git a/packages/PrintSpooler/res/values-zh-rCN/arrays.xml b/packages/Keyguard/res/drawable/scrubber_control_selector_holo.xml index 4fc75dbcbeb2..d09b1a516664 100644 --- a/packages/PrintSpooler/res/values-zh-rCN/arrays.xml +++ b/packages/Keyguard/res/drawable/scrubber_control_selector_holo.xml @@ -13,25 +13,10 @@ See the License for the specific language governing permissions and limitations under the License. --> -<resources> - <string-array name="pdf_printer_media_sizes" translatable="false"> - <item>ROC_8K</item> - <item>ROC_16K</item> - <item>PRC_1</item> - <item>PRC_2</item> - <item>PRC_3</item> - <item>PRC_4</item> - <item>PRC_5</item> - <item>PRC_6</item> - <item>PRC_7</item> - <item>PRC_8</item> - <item>PRC_9</item> - <item>PRC_10</item> - <item>PRC_16K</item> - <item>OM_PA_KAI</item> - <item>OM_DAI_PA_KAI</item> - <item>OM_JUURO_KU_KAI</item> - </string-array> - -</resources> +<selector xmlns:android="http://schemas.android.com/apk/res/android"> + <item android:state_enabled="false" android:drawable="@drawable/scrubber_control_disabled_holo" /> + <item android:state_pressed="true" android:drawable="@drawable/scrubber_control_pressed_holo" /> + <item android:state_selected="true" android:drawable="@drawable/scrubber_control_focused_holo" /> + <item android:drawable="@drawable/scrubber_control_normal_holo" /> +</selector> diff --git a/packages/Keyguard/res/drawable/scrubber_progress_horizontal_holo_light.xml b/packages/Keyguard/res/drawable/scrubber_progress_horizontal_holo_light.xml new file mode 100644 index 000000000000..f07c7420054c --- /dev/null +++ b/packages/Keyguard/res/drawable/scrubber_progress_horizontal_holo_light.xml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- 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. +--> + +<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> + <item android:id="@android:id/background" + android:drawable="@drawable/scrubber_track_holo_light" /> + <item android:id="@android:id/secondaryProgress"> + <scale android:scaleWidth="100%" + android:drawable="@drawable/scrubber_secondary_holo" /> + </item> + <item android:id="@android:id/progress"> + <scale android:scaleWidth="100%" + android:drawable="@drawable/scrubber_primary_holo" /> + </item> +</layer-list> diff --git a/packages/Keyguard/res/layout/keyguard_transport_control_view.xml b/packages/Keyguard/res/layout/keyguard_transport_control_view.xml index 81c742504948..a0b59a7dfb0c 100644 --- a/packages/Keyguard/res/layout/keyguard_transport_control_view.xml +++ b/packages/Keyguard/res/layout/keyguard_transport_control_view.xml @@ -75,7 +75,8 @@ <SeekBar android:id="@+id/transient_seek_bar" android:layout_width="match_parent" - android:layout_height="wrap_content" /> + android:layout_height="wrap_content" + style="@style/Widget.TransportControl.SeekBar" /> <TextView android:id="@+id/transient_seek_time_elapsed" android:layout_width="wrap_content" diff --git a/packages/Keyguard/res/values-ar/strings.xml b/packages/Keyguard/res/values-ar/strings.xml index 57125bdb9690..fa778b3293b2 100644 --- a/packages/Keyguard/res/values-ar/strings.xml +++ b/packages/Keyguard/res/values-ar/strings.xml @@ -71,12 +71,9 @@ <string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"زر الإيقاف المؤقت"</string> <string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"زر التشغيل"</string> <string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"زر الإيقاف"</string> - <!-- no translation found for keyguard_accessibility_transport_thumbs_up_description (4535938129663903194) --> - <skip /> - <!-- no translation found for keyguard_accessibility_transport_thumbs_down_description (8101433677192177861) --> - <skip /> - <!-- no translation found for keyguard_accessibility_transport_heart_description (2336943232474689887) --> - <skip /> + <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"رائعة"</string> + <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"معارضة"</string> + <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"قلب"</string> <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"إلغاء القفل للمتابعة"</string> <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"تم إلغاء التشغيل"</string> <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"أسقط <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> للحذف."</string> diff --git a/packages/Keyguard/res/values-bg/strings.xml b/packages/Keyguard/res/values-bg/strings.xml index 23478c71bd85..468570f3f483 100644 --- a/packages/Keyguard/res/values-bg/strings.xml +++ b/packages/Keyguard/res/values-bg/strings.xml @@ -71,12 +71,9 @@ <string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"Бутон за пауза"</string> <string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"Бутон за пускане"</string> <string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"Бутон за спиране"</string> - <!-- no translation found for keyguard_accessibility_transport_thumbs_up_description (4535938129663903194) --> - <skip /> - <!-- no translation found for keyguard_accessibility_transport_thumbs_down_description (8101433677192177861) --> - <skip /> - <!-- no translation found for keyguard_accessibility_transport_heart_description (2336943232474689887) --> - <skip /> + <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"Харесва ми"</string> + <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"Не ми харесва"</string> + <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"Сърце"</string> <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"Отключете, за да продължите"</string> <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"Стартирането е анулирано"</string> <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"Пуснете <xliff:g id="WIDGET_INDEX">%1$s</xliff:g>, за да изтриете."</string> diff --git a/packages/Keyguard/res/values-cs/strings.xml b/packages/Keyguard/res/values-cs/strings.xml index 8349703a10a7..b4598cbb3045 100644 --- a/packages/Keyguard/res/values-cs/strings.xml +++ b/packages/Keyguard/res/values-cs/strings.xml @@ -71,12 +71,9 @@ <string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"Tlačítko Pozastavit"</string> <string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"Tlačítko Přehrát"</string> <string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"Tlačítko Zastavit"</string> - <!-- no translation found for keyguard_accessibility_transport_thumbs_up_description (4535938129663903194) --> - <skip /> - <!-- no translation found for keyguard_accessibility_transport_thumbs_down_description (8101433677192177861) --> - <skip /> - <!-- no translation found for keyguard_accessibility_transport_heart_description (2336943232474689887) --> - <skip /> + <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"Líbí se mi"</string> + <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"Nelíbí se mi"</string> + <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"Srdíčko"</string> <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"Pokračujte odemknutím"</string> <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"Spuštění zrušeno"</string> <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"Uvolněním dotyku widget <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> vymažete."</string> diff --git a/packages/Keyguard/res/values-da/strings.xml b/packages/Keyguard/res/values-da/strings.xml index 7f94f63afa85..0cff37cf642f 100644 --- a/packages/Keyguard/res/values-da/strings.xml +++ b/packages/Keyguard/res/values-da/strings.xml @@ -71,12 +71,9 @@ <string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"Pause-knap"</string> <string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"Afspil-knap"</string> <string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"Stop-knap"</string> - <!-- no translation found for keyguard_accessibility_transport_thumbs_up_description (4535938129663903194) --> - <skip /> - <!-- no translation found for keyguard_accessibility_transport_thumbs_down_description (8101433677192177861) --> - <skip /> - <!-- no translation found for keyguard_accessibility_transport_heart_description (2336943232474689887) --> - <skip /> + <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"Synes om"</string> + <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"Synes ikke om"</string> + <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"Hjerte"</string> <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"Lås op for at gå videre"</string> <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"Starten blev annulleret"</string> <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"Slip <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> for at slette."</string> diff --git a/packages/Keyguard/res/values-en-rGB/strings.xml b/packages/Keyguard/res/values-en-rGB/strings.xml index 3ab8ff5b2530..892bab73e1f8 100644 --- a/packages/Keyguard/res/values-en-rGB/strings.xml +++ b/packages/Keyguard/res/values-en-rGB/strings.xml @@ -71,12 +71,9 @@ <string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"Pause button"</string> <string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"Play button"</string> <string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"Stop button"</string> - <!-- no translation found for keyguard_accessibility_transport_thumbs_up_description (4535938129663903194) --> - <skip /> - <!-- no translation found for keyguard_accessibility_transport_thumbs_down_description (8101433677192177861) --> - <skip /> - <!-- no translation found for keyguard_accessibility_transport_heart_description (2336943232474689887) --> - <skip /> + <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"Thumbs up"</string> + <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"Thumbs down"</string> + <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"Heart"</string> <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"Unlock to continue"</string> <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"Launch cancelled"</string> <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"Drop <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> to delete."</string> diff --git a/packages/Keyguard/res/values-en-rIN/strings.xml b/packages/Keyguard/res/values-en-rIN/strings.xml index 3ab8ff5b2530..892bab73e1f8 100644 --- a/packages/Keyguard/res/values-en-rIN/strings.xml +++ b/packages/Keyguard/res/values-en-rIN/strings.xml @@ -71,12 +71,9 @@ <string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"Pause button"</string> <string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"Play button"</string> <string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"Stop button"</string> - <!-- no translation found for keyguard_accessibility_transport_thumbs_up_description (4535938129663903194) --> - <skip /> - <!-- no translation found for keyguard_accessibility_transport_thumbs_down_description (8101433677192177861) --> - <skip /> - <!-- no translation found for keyguard_accessibility_transport_heart_description (2336943232474689887) --> - <skip /> + <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"Thumbs up"</string> + <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"Thumbs down"</string> + <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"Heart"</string> <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"Unlock to continue"</string> <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"Launch cancelled"</string> <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"Drop <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> to delete."</string> diff --git a/packages/Keyguard/res/values-es-rUS/strings.xml b/packages/Keyguard/res/values-es-rUS/strings.xml index bafd66d9517b..2278efd5a4ab 100644 --- a/packages/Keyguard/res/values-es-rUS/strings.xml +++ b/packages/Keyguard/res/values-es-rUS/strings.xml @@ -71,12 +71,9 @@ <string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"Botón de pausa"</string> <string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"Botón de reproducción"</string> <string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"Botón de detención"</string> - <!-- no translation found for keyguard_accessibility_transport_thumbs_up_description (4535938129663903194) --> - <skip /> - <!-- no translation found for keyguard_accessibility_transport_thumbs_down_description (8101433677192177861) --> - <skip /> - <!-- no translation found for keyguard_accessibility_transport_heart_description (2336943232474689887) --> - <skip /> + <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"Votos a favor"</string> + <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"Votos en contra"</string> + <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"Corazón"</string> <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"Desbloquea para continuar."</string> <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"Se canceló el inicio."</string> <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"Suelta <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> para eliminarlo."</string> diff --git a/packages/Keyguard/res/values-fa/strings.xml b/packages/Keyguard/res/values-fa/strings.xml index e0eb1e1b4891..4b0bce5bb290 100644 --- a/packages/Keyguard/res/values-fa/strings.xml +++ b/packages/Keyguard/res/values-fa/strings.xml @@ -71,12 +71,9 @@ <string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"دکمه توقف موقت"</string> <string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"دکمه پخش"</string> <string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"دکمه توقف"</string> - <!-- no translation found for keyguard_accessibility_transport_thumbs_up_description (4535938129663903194) --> - <skip /> - <!-- no translation found for keyguard_accessibility_transport_thumbs_down_description (8101433677192177861) --> - <skip /> - <!-- no translation found for keyguard_accessibility_transport_heart_description (2336943232474689887) --> - <skip /> + <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"رأی موافق"</string> + <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"رأی مخالف"</string> + <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"قلب"</string> <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"برای ادامه قفل را باز کنید"</string> <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"راهاندازی لغو شد"</string> <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"جهت حذف، <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> را بکشید."</string> diff --git a/packages/Keyguard/res/values-fi/strings.xml b/packages/Keyguard/res/values-fi/strings.xml index a719610522a5..68d8227543b5 100644 --- a/packages/Keyguard/res/values-fi/strings.xml +++ b/packages/Keyguard/res/values-fi/strings.xml @@ -71,12 +71,9 @@ <string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"Tauko-painike"</string> <string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"Toista-painike"</string> <string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"Keskeytä-painike"</string> - <!-- no translation found for keyguard_accessibility_transport_thumbs_up_description (4535938129663903194) --> - <skip /> - <!-- no translation found for keyguard_accessibility_transport_thumbs_down_description (8101433677192177861) --> - <skip /> - <!-- no translation found for keyguard_accessibility_transport_heart_description (2336943232474689887) --> - <skip /> + <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"Tykkään"</string> + <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"En tykkää"</string> + <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"Sydän"</string> <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"Jatka poistamalla lukitus"</string> <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"Käynnistys peruutettu"</string> <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"Poista <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> pudottamalla."</string> diff --git a/packages/Keyguard/res/values-fr-rCA/strings.xml b/packages/Keyguard/res/values-fr-rCA/strings.xml index 1251f4bff41f..8d07cfd442ab 100644 --- a/packages/Keyguard/res/values-fr-rCA/strings.xml +++ b/packages/Keyguard/res/values-fr-rCA/strings.xml @@ -71,12 +71,9 @@ <string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"Bouton de pause"</string> <string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"Bouton de lecture"</string> <string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"Bouton d\'arrêt"</string> - <!-- no translation found for keyguard_accessibility_transport_thumbs_up_description (4535938129663903194) --> - <skip /> - <!-- no translation found for keyguard_accessibility_transport_thumbs_down_description (8101433677192177861) --> - <skip /> - <!-- no translation found for keyguard_accessibility_transport_heart_description (2336943232474689887) --> - <skip /> + <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"J\'aime"</string> + <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"Je n\'aime pas"</string> + <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"Cœur"</string> <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"Déverrouiller pour continuer"</string> <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"Lancement annulé"</string> <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"Déposez <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> pour supprimer."</string> diff --git a/packages/Keyguard/res/values-fr/strings.xml b/packages/Keyguard/res/values-fr/strings.xml index cb78f8d5a2b8..37fb8fbe103a 100644 --- a/packages/Keyguard/res/values-fr/strings.xml +++ b/packages/Keyguard/res/values-fr/strings.xml @@ -71,12 +71,9 @@ <string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"Bouton de pause"</string> <string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"Bouton de lecture"</string> <string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"Bouton d\'arrêt"</string> - <!-- no translation found for keyguard_accessibility_transport_thumbs_up_description (4535938129663903194) --> - <skip /> - <!-- no translation found for keyguard_accessibility_transport_thumbs_down_description (8101433677192177861) --> - <skip /> - <!-- no translation found for keyguard_accessibility_transport_heart_description (2336943232474689887) --> - <skip /> + <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"J\'aime"</string> + <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"Je n\'aime pas"</string> + <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"Cœur"</string> <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"Déverrouillez l\'appareil pour continuer."</string> <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"Lancement annulé."</string> <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"Relâchez le widget \"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g>\" pour le supprimer."</string> diff --git a/packages/Keyguard/res/values-hi/strings.xml b/packages/Keyguard/res/values-hi/strings.xml index 304f14f8f1ff..058a2f77a0ed 100644 --- a/packages/Keyguard/res/values-hi/strings.xml +++ b/packages/Keyguard/res/values-hi/strings.xml @@ -71,12 +71,9 @@ <string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"पॉज़ करें बटन"</string> <string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"चलाएं बटन"</string> <string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"रोकें बटन"</string> - <!-- no translation found for keyguard_accessibility_transport_thumbs_up_description (4535938129663903194) --> - <skip /> - <!-- no translation found for keyguard_accessibility_transport_thumbs_down_description (8101433677192177861) --> - <skip /> - <!-- no translation found for keyguard_accessibility_transport_heart_description (2336943232474689887) --> - <skip /> + <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"पसंद"</string> + <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"नापसंद"</string> + <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"दिल"</string> <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"जारी रखने के लिए अनलॉक करें"</string> <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"लॉन्च रद्द कर दिया गया"</string> <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"हटाने के लिए <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> खींचें."</string> diff --git a/packages/Keyguard/res/values-hr/strings.xml b/packages/Keyguard/res/values-hr/strings.xml index 073c4caa5d92..99270a918ccf 100644 --- a/packages/Keyguard/res/values-hr/strings.xml +++ b/packages/Keyguard/res/values-hr/strings.xml @@ -71,12 +71,9 @@ <string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"Gumb Pauza"</string> <string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"Gumb Reprodukcija"</string> <string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"Gumb Zaustavi"</string> - <!-- no translation found for keyguard_accessibility_transport_thumbs_up_description (4535938129663903194) --> - <skip /> - <!-- no translation found for keyguard_accessibility_transport_thumbs_down_description (8101433677192177861) --> - <skip /> - <!-- no translation found for keyguard_accessibility_transport_heart_description (2336943232474689887) --> - <skip /> + <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"Palac gore"</string> + <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"Palac dolje"</string> + <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"Srce"</string> <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"Otključajte za nastavak"</string> <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"Pokretanje je otkazano"</string> <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"Ispustite widget <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> da biste ga izbrisali."</string> diff --git a/packages/Keyguard/res/values-hy-rAM/strings.xml b/packages/Keyguard/res/values-hy-rAM/strings.xml index db22282310d2..2c10d39d1da3 100644 --- a/packages/Keyguard/res/values-hy-rAM/strings.xml +++ b/packages/Keyguard/res/values-hy-rAM/strings.xml @@ -71,12 +71,9 @@ <string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"Դադարի կոճակ"</string> <string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"Նվագարկման կոճակ"</string> <string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"Կանգի կոճակ"</string> - <!-- no translation found for keyguard_accessibility_transport_thumbs_up_description (4535938129663903194) --> - <skip /> - <!-- no translation found for keyguard_accessibility_transport_thumbs_down_description (8101433677192177861) --> - <skip /> - <!-- no translation found for keyguard_accessibility_transport_heart_description (2336943232474689887) --> - <skip /> + <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"Լավն է"</string> + <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"Լավը չէ"</string> + <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"Սիրտ"</string> <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"Շարունակելու համար ապակողպեք"</string> <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"Գործարկումը չեղարկվեց"</string> <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g> վիջեթը ջնջելու համար բաց թողեք այն այստեղ:"</string> diff --git a/packages/Keyguard/res/values-in/strings.xml b/packages/Keyguard/res/values-in/strings.xml index 380c34e3e7ef..3b2de3d206c1 100644 --- a/packages/Keyguard/res/values-in/strings.xml +++ b/packages/Keyguard/res/values-in/strings.xml @@ -71,12 +71,9 @@ <string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"Tombol jeda"</string> <string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"Tombol putar"</string> <string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"Tombol hentikan"</string> - <!-- no translation found for keyguard_accessibility_transport_thumbs_up_description (4535938129663903194) --> - <skip /> - <!-- no translation found for keyguard_accessibility_transport_thumbs_down_description (8101433677192177861) --> - <skip /> - <!-- no translation found for keyguard_accessibility_transport_heart_description (2336943232474689887) --> - <skip /> + <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"Bagus"</string> + <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"Jelek"</string> + <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"Hati"</string> <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"Buka kunci untuk melanjutkan"</string> <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"Peluncuran dibatalkan"</string> <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"Jatuhkan <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> untuk menghapus."</string> diff --git a/packages/Keyguard/res/values-ja/strings.xml b/packages/Keyguard/res/values-ja/strings.xml index 1b19110b80ce..c7e0447386a6 100644 --- a/packages/Keyguard/res/values-ja/strings.xml +++ b/packages/Keyguard/res/values-ja/strings.xml @@ -71,12 +71,9 @@ <string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"一時停止ボタン"</string> <string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"再生ボタン"</string> <string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"停止ボタン"</string> - <!-- no translation found for keyguard_accessibility_transport_thumbs_up_description (4535938129663903194) --> - <skip /> - <!-- no translation found for keyguard_accessibility_transport_thumbs_down_description (8101433677192177861) --> - <skip /> - <!-- no translation found for keyguard_accessibility_transport_heart_description (2336943232474689887) --> - <skip /> + <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"グッド"</string> + <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"イマイチ"</string> + <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"ハート"</string> <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"続行するにはロックを解除してください"</string> <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"起動をキャンセルしました"</string> <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"削除するには<xliff:g id="WIDGET_INDEX">%1$s</xliff:g>をドロップしてください。"</string> diff --git a/packages/Keyguard/res/values-ka-rGE/strings.xml b/packages/Keyguard/res/values-ka-rGE/strings.xml index f1fabba337b8..f643178025f1 100644 --- a/packages/Keyguard/res/values-ka-rGE/strings.xml +++ b/packages/Keyguard/res/values-ka-rGE/strings.xml @@ -71,12 +71,9 @@ <string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"პაუზის ღილაკი"</string> <string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"დაკვრის ღილაკი"</string> <string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"Stop ღილაკი"</string> - <!-- no translation found for keyguard_accessibility_transport_thumbs_up_description (4535938129663903194) --> - <skip /> - <!-- no translation found for keyguard_accessibility_transport_thumbs_down_description (8101433677192177861) --> - <skip /> - <!-- no translation found for keyguard_accessibility_transport_heart_description (2336943232474689887) --> - <skip /> + <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"ზევით აწეული ცერი"</string> + <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"ქვევით დახრილი ცერი"</string> + <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"გული"</string> <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"განბლოკეთ გასაგრძელებლად"</string> <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"გამოძახება გაუქმდა"</string> <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"ჩააგდეთ <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> წასაშლელად."</string> diff --git a/packages/Keyguard/res/values-km-rKH/strings.xml b/packages/Keyguard/res/values-km-rKH/strings.xml index c88279ba908c..75cebac66243 100644 --- a/packages/Keyguard/res/values-km-rKH/strings.xml +++ b/packages/Keyguard/res/values-km-rKH/strings.xml @@ -71,12 +71,9 @@ <string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"ប៊ូតុងផ្អាក"</string> <string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"ប៊ូតុងចាក់"</string> <string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"ប៊ូតុងបញ្ឈប់"</string> - <!-- no translation found for keyguard_accessibility_transport_thumbs_up_description (4535938129663903194) --> - <skip /> - <!-- no translation found for keyguard_accessibility_transport_thumbs_down_description (8101433677192177861) --> - <skip /> - <!-- no translation found for keyguard_accessibility_transport_heart_description (2336943232474689887) --> - <skip /> + <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"មេដៃឡើង"</string> + <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"មេដៃចុះ"</string> + <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"បេះដូង"</string> <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"ដោះសោ ដើម្បីបន្ត"</string> <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"បានបោះបង់ការចាប់ផ្ដើម"</string> <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"ទម្លាក់ <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> ដើម្បីលុប។"</string> diff --git a/packages/Keyguard/res/values-ko/strings.xml b/packages/Keyguard/res/values-ko/strings.xml index e01a2e19a5e3..a1b50962cf0c 100644 --- a/packages/Keyguard/res/values-ko/strings.xml +++ b/packages/Keyguard/res/values-ko/strings.xml @@ -71,12 +71,9 @@ <string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"일시중지 버튼"</string> <string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"재생 버튼"</string> <string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"중지 버튼"</string> - <!-- no translation found for keyguard_accessibility_transport_thumbs_up_description (4535938129663903194) --> - <skip /> - <!-- no translation found for keyguard_accessibility_transport_thumbs_down_description (8101433677192177861) --> - <skip /> - <!-- no translation found for keyguard_accessibility_transport_heart_description (2336943232474689887) --> - <skip /> + <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"좋아요"</string> + <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"싫어요"</string> + <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"하트"</string> <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"계속하려면 잠금해제합니다."</string> <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"실행 취소됨"</string> <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"삭제하려면 <xliff:g id="WIDGET_INDEX">%1$s</xliff:g>을(를) 드롭합니다."</string> diff --git a/packages/Keyguard/res/values-lo-rLA/strings.xml b/packages/Keyguard/res/values-lo-rLA/strings.xml index 94d27770fc40..a9ba8ba9eb79 100644 --- a/packages/Keyguard/res/values-lo-rLA/strings.xml +++ b/packages/Keyguard/res/values-lo-rLA/strings.xml @@ -71,12 +71,9 @@ <string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"ປຸ່ມຢຸດຊົ່ວຄາວ"</string> <string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"ປຸ່ມຫຼິ້ນ"</string> <string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"ປຸ່ມຢຸດ"</string> - <!-- no translation found for keyguard_accessibility_transport_thumbs_up_description (4535938129663903194) --> - <skip /> - <!-- no translation found for keyguard_accessibility_transport_thumbs_down_description (8101433677192177861) --> - <skip /> - <!-- no translation found for keyguard_accessibility_transport_heart_description (2336943232474689887) --> - <skip /> + <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"ເລື່ອນນິ້ວໂປ້ຂຶ້ນ"</string> + <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"ເລື່ອນນິ້ວໂປ້ລົງ"</string> + <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"ຫົວໃຈ"</string> <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"ປົດລັອກເພື່ອດຳເນີນການຕໍ່"</string> <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"ການເປີດໃຊ້ຖືກຍົກເລີກ"</string> <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"ວາງ <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> ເພື່ອລຶບ."</string> diff --git a/packages/Keyguard/res/values-mn-rMN/strings.xml b/packages/Keyguard/res/values-mn-rMN/strings.xml index 82a9e5815a92..e4c07eb428a0 100644 --- a/packages/Keyguard/res/values-mn-rMN/strings.xml +++ b/packages/Keyguard/res/values-mn-rMN/strings.xml @@ -71,12 +71,9 @@ <string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"Түр зогсоох товч"</string> <string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"Тоглуулах товч"</string> <string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"Зогсоох товч"</string> - <!-- no translation found for keyguard_accessibility_transport_thumbs_up_description (4535938129663903194) --> - <skip /> - <!-- no translation found for keyguard_accessibility_transport_thumbs_down_description (8101433677192177861) --> - <skip /> - <!-- no translation found for keyguard_accessibility_transport_heart_description (2336943232474689887) --> - <skip /> + <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"Сайн"</string> + <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"Онцгүй"</string> + <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"Зүрх"</string> <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"Үргэлжлүүлэхийн тулд түгжээг тайлна уу"</string> <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"Эхлүүлэхийг цуцалсан"</string> <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"Устгахын тулд <xliff:g id="WIDGET_INDEX">%1$s</xliff:g>-г тавина уу."</string> diff --git a/packages/Keyguard/res/values-ms-rMY/strings.xml b/packages/Keyguard/res/values-ms-rMY/strings.xml index 75213fe90c84..17ec2e6197e3 100644 --- a/packages/Keyguard/res/values-ms-rMY/strings.xml +++ b/packages/Keyguard/res/values-ms-rMY/strings.xml @@ -71,12 +71,9 @@ <string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"Butang jeda"</string> <string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"Butang main"</string> <string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"Butang berhenti"</string> - <!-- no translation found for keyguard_accessibility_transport_thumbs_up_description (4535938129663903194) --> - <skip /> - <!-- no translation found for keyguard_accessibility_transport_thumbs_down_description (8101433677192177861) --> - <skip /> - <!-- no translation found for keyguard_accessibility_transport_heart_description (2336943232474689887) --> - <skip /> + <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"Menyukai"</string> + <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"Tidak diterima"</string> + <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"Jantung"</string> <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"Buka kunci untuk meneruskan"</string> <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"Pelancaran dibatalkan"</string> <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"Jatuhkan <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> untuk memadam."</string> diff --git a/packages/Keyguard/res/values-pt/strings.xml b/packages/Keyguard/res/values-pt/strings.xml index bf66a993ffb7..3c668a024e68 100644 --- a/packages/Keyguard/res/values-pt/strings.xml +++ b/packages/Keyguard/res/values-pt/strings.xml @@ -71,12 +71,9 @@ <string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"Botão \"Pausar\""</string> <string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"Botão \"Reproduzir\""</string> <string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"Botão \"Parar\""</string> - <!-- no translation found for keyguard_accessibility_transport_thumbs_up_description (4535938129663903194) --> - <skip /> - <!-- no translation found for keyguard_accessibility_transport_thumbs_down_description (8101433677192177861) --> - <skip /> - <!-- no translation found for keyguard_accessibility_transport_heart_description (2336943232474689887) --> - <skip /> + <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"Gostei"</string> + <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"Não gostei"</string> + <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"Coração"</string> <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"Desbloqueie para continuar"</string> <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"Inicialização cancelada"</string> <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"Solte <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> para excluir."</string> diff --git a/packages/Keyguard/res/values-ro/strings.xml b/packages/Keyguard/res/values-ro/strings.xml index 194861ac6769..cebf0df9f451 100644 --- a/packages/Keyguard/res/values-ro/strings.xml +++ b/packages/Keyguard/res/values-ro/strings.xml @@ -71,12 +71,9 @@ <string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"Butonul Întrerupeți"</string> <string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"Butonul Redați"</string> <string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"Butonul Opriți"</string> - <!-- no translation found for keyguard_accessibility_transport_thumbs_up_description (4535938129663903194) --> - <skip /> - <!-- no translation found for keyguard_accessibility_transport_thumbs_down_description (8101433677192177861) --> - <skip /> - <!-- no translation found for keyguard_accessibility_transport_heart_description (2336943232474689887) --> - <skip /> + <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"Vot pozitiv"</string> + <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"Vot negativ"</string> + <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"Inimă"</string> <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"Deblocați pentru a continua"</string> <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"Lansare anulată"</string> <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"Eliberați <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> pentru a șterge."</string> diff --git a/packages/Keyguard/res/values-ru/strings.xml b/packages/Keyguard/res/values-ru/strings.xml index 2d57be61639b..d8a457df90a1 100644 --- a/packages/Keyguard/res/values-ru/strings.xml +++ b/packages/Keyguard/res/values-ru/strings.xml @@ -71,12 +71,9 @@ <string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"Кнопка паузы"</string> <string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"Кнопка воспроизведения"</string> <string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"Кнопка выключения"</string> - <!-- no translation found for keyguard_accessibility_transport_thumbs_up_description (4535938129663903194) --> - <skip /> - <!-- no translation found for keyguard_accessibility_transport_thumbs_down_description (8101433677192177861) --> - <skip /> - <!-- no translation found for keyguard_accessibility_transport_heart_description (2336943232474689887) --> - <skip /> + <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"Нравится"</string> + <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"Не нравится"</string> + <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"Рейтинг"</string> <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"Разблокируйте экран, чтобы продолжить."</string> <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"Запуск отменен."</string> <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"Отпустите виджет \"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g>\", чтобы удалить его."</string> diff --git a/packages/Keyguard/res/values-sk/strings.xml b/packages/Keyguard/res/values-sk/strings.xml index 8711cb9b0831..bd3f058b3803 100644 --- a/packages/Keyguard/res/values-sk/strings.xml +++ b/packages/Keyguard/res/values-sk/strings.xml @@ -71,12 +71,9 @@ <string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"Tlačidlo Pozastaviť"</string> <string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"Tlačidlo Prehrať"</string> <string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"Tlačidlo Zastaviť"</string> - <!-- no translation found for keyguard_accessibility_transport_thumbs_up_description (4535938129663903194) --> - <skip /> - <!-- no translation found for keyguard_accessibility_transport_thumbs_down_description (8101433677192177861) --> - <skip /> - <!-- no translation found for keyguard_accessibility_transport_heart_description (2336943232474689887) --> - <skip /> + <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"Páči sa mi"</string> + <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"Nepáči sa mi"</string> + <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"Srdce"</string> <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"Odomknite zariadenie a pokračujte"</string> <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"Spustenie bolo zrušené"</string> <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"Uvoľnením dotyku miniaplikáciu <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> odstránite."</string> diff --git a/packages/Keyguard/res/values-sl/strings.xml b/packages/Keyguard/res/values-sl/strings.xml index d7759a86a92b..7e7d89331589 100644 --- a/packages/Keyguard/res/values-sl/strings.xml +++ b/packages/Keyguard/res/values-sl/strings.xml @@ -71,12 +71,9 @@ <string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"Gumb za začasno ustavitev"</string> <string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"Gumb za predvajanje"</string> <string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"Gumb za ustavitev"</string> - <!-- no translation found for keyguard_accessibility_transport_thumbs_up_description (4535938129663903194) --> - <skip /> - <!-- no translation found for keyguard_accessibility_transport_thumbs_down_description (8101433677192177861) --> - <skip /> - <!-- no translation found for keyguard_accessibility_transport_heart_description (2336943232474689887) --> - <skip /> + <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"Všeč mi je"</string> + <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"Ni mi všeč"</string> + <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"Srce"</string> <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"Za nadaljevanje odklenite"</string> <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"Zagon je preklican"</string> <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"Izpustite pripomoček <xliff:g id="WIDGET_INDEX">%1$s</xliff:g>, da ga izbrišete."</string> diff --git a/packages/Keyguard/res/values-sr/strings.xml b/packages/Keyguard/res/values-sr/strings.xml index 19bc74eaf3d6..c5cc39cc888f 100644 --- a/packages/Keyguard/res/values-sr/strings.xml +++ b/packages/Keyguard/res/values-sr/strings.xml @@ -71,12 +71,9 @@ <string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"Дугме за паузу"</string> <string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"Дугме за репродукцију"</string> <string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"Дугме за заустављање"</string> - <!-- no translation found for keyguard_accessibility_transport_thumbs_up_description (4535938129663903194) --> - <skip /> - <!-- no translation found for keyguard_accessibility_transport_thumbs_down_description (8101433677192177861) --> - <skip /> - <!-- no translation found for keyguard_accessibility_transport_heart_description (2336943232474689887) --> - <skip /> + <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"Свиђа ми се"</string> + <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"Не свиђа ми се"</string> + <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"Срце"</string> <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"Откључајте да бисте наставили"</string> <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"Покретање је отказано"</string> <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"Отпустите виџет <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> да бисте га избрисали."</string> diff --git a/packages/Keyguard/res/values-sv/strings.xml b/packages/Keyguard/res/values-sv/strings.xml index 834758826f50..dd82711dffaa 100644 --- a/packages/Keyguard/res/values-sv/strings.xml +++ b/packages/Keyguard/res/values-sv/strings.xml @@ -71,12 +71,9 @@ <string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"Pausknappen"</string> <string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"Uppspelningsknappen"</string> <string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"Stoppknappen"</string> - <!-- no translation found for keyguard_accessibility_transport_thumbs_up_description (4535938129663903194) --> - <skip /> - <!-- no translation found for keyguard_accessibility_transport_thumbs_down_description (8101433677192177861) --> - <skip /> - <!-- no translation found for keyguard_accessibility_transport_heart_description (2336943232474689887) --> - <skip /> + <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"Gillar"</string> + <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"Tummen ned"</string> + <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"Hjärta"</string> <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"Lås upp om du vill fortsätta"</string> <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"Lanseringen har avbrutits"</string> <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"Ta bort genom att släppa <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> här."</string> diff --git a/packages/Keyguard/res/values-sw/strings.xml b/packages/Keyguard/res/values-sw/strings.xml index aea2e216768a..5e2b163dc344 100644 --- a/packages/Keyguard/res/values-sw/strings.xml +++ b/packages/Keyguard/res/values-sw/strings.xml @@ -71,12 +71,9 @@ <string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"Kitufe cha kusitisha"</string> <string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"Kitufe cha kucheza"</string> <string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"Kitufe cha kusitisha"</string> - <!-- no translation found for keyguard_accessibility_transport_thumbs_up_description (4535938129663903194) --> - <skip /> - <!-- no translation found for keyguard_accessibility_transport_thumbs_down_description (8101433677192177861) --> - <skip /> - <!-- no translation found for keyguard_accessibility_transport_heart_description (2336943232474689887) --> - <skip /> + <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"Bomba"</string> + <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"Si bomba"</string> + <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"Moyo"</string> <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"Fungua ili uendelee"</string> <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"Uzinduzi umeghairiwa"</string> <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"Dondosha <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> ili ufute."</string> diff --git a/packages/Keyguard/res/values-th/strings.xml b/packages/Keyguard/res/values-th/strings.xml index 8d80977ce043..3f2c74760ceb 100644 --- a/packages/Keyguard/res/values-th/strings.xml +++ b/packages/Keyguard/res/values-th/strings.xml @@ -71,12 +71,9 @@ <string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"ปุ่มหยุดชั่วคราว"</string> <string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"ปุ่มเล่น"</string> <string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"ปุ่มหยุด"</string> - <!-- no translation found for keyguard_accessibility_transport_thumbs_up_description (4535938129663903194) --> - <skip /> - <!-- no translation found for keyguard_accessibility_transport_thumbs_down_description (8101433677192177861) --> - <skip /> - <!-- no translation found for keyguard_accessibility_transport_heart_description (2336943232474689887) --> - <skip /> + <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"สุดยอด"</string> + <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"ไม่ชอบ"</string> + <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"หัวใจ"</string> <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"ปลดล็อกเพื่อดำเนินการต่อ"</string> <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"ยกเลิกการเปิดใช้งานแล้ว"</string> <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"ลาก <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> เพื่อลบ"</string> diff --git a/packages/Keyguard/res/values-tl/strings.xml b/packages/Keyguard/res/values-tl/strings.xml index 67d26cb8aa53..3a33c9f92df4 100644 --- a/packages/Keyguard/res/values-tl/strings.xml +++ b/packages/Keyguard/res/values-tl/strings.xml @@ -71,12 +71,9 @@ <string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"Button na I-pause"</string> <string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"Button na I-play"</string> <string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"Button na Ihinto"</string> - <!-- no translation found for keyguard_accessibility_transport_thumbs_up_description (4535938129663903194) --> - <skip /> - <!-- no translation found for keyguard_accessibility_transport_thumbs_down_description (8101433677192177861) --> - <skip /> - <!-- no translation found for keyguard_accessibility_transport_heart_description (2336943232474689887) --> - <skip /> + <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"Thumbs up"</string> + <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"Thumbs down"</string> + <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"Heart"</string> <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"I-unlock upang magpatuloy"</string> <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"Nakansela ang paglunsad"</string> <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"I-drop ang <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> upang tanggalin."</string> diff --git a/packages/Keyguard/res/values-tr/strings.xml b/packages/Keyguard/res/values-tr/strings.xml index 71356dc732ff..d9c950f70801 100644 --- a/packages/Keyguard/res/values-tr/strings.xml +++ b/packages/Keyguard/res/values-tr/strings.xml @@ -71,12 +71,9 @@ <string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"Duraklat düğmesi"</string> <string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"Oynat düğmesi"</string> <string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"Durdur düğmesi"</string> - <!-- no translation found for keyguard_accessibility_transport_thumbs_up_description (4535938129663903194) --> - <skip /> - <!-- no translation found for keyguard_accessibility_transport_thumbs_down_description (8101433677192177861) --> - <skip /> - <!-- no translation found for keyguard_accessibility_transport_heart_description (2336943232474689887) --> - <skip /> + <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"Beğen"</string> + <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"Beğenme"</string> + <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"Kalp"</string> <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"Devam etmek için kilidini açın"</string> <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"Başlatma iptal edildi"</string> <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"Silmek için <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> widget\'ını bırakın."</string> diff --git a/packages/Keyguard/res/values-uk/strings.xml b/packages/Keyguard/res/values-uk/strings.xml index 3c004ce03905..01bf6878a2ab 100644 --- a/packages/Keyguard/res/values-uk/strings.xml +++ b/packages/Keyguard/res/values-uk/strings.xml @@ -73,7 +73,7 @@ <string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"Кнопка \"Зупинити\""</string> <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"Подобається"</string> <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"Не подобається"</string> - <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"Серце"</string> + <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"Рейтинг"</string> <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"Розблокуйте, щоб продовжити"</string> <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"Запуск скасовано"</string> <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"Відпустіть <xliff:g id="WIDGET_INDEX">%1$s</xliff:g>, щоб видалити."</string> diff --git a/packages/Keyguard/res/values-vi/strings.xml b/packages/Keyguard/res/values-vi/strings.xml index d5e52d719d8c..6ae8312bffa7 100644 --- a/packages/Keyguard/res/values-vi/strings.xml +++ b/packages/Keyguard/res/values-vi/strings.xml @@ -71,12 +71,9 @@ <string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"Nút tạm dừng"</string> <string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"Nút phát"</string> <string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"Nút dừng"</string> - <!-- no translation found for keyguard_accessibility_transport_thumbs_up_description (4535938129663903194) --> - <skip /> - <!-- no translation found for keyguard_accessibility_transport_thumbs_down_description (8101433677192177861) --> - <skip /> - <!-- no translation found for keyguard_accessibility_transport_heart_description (2336943232474689887) --> - <skip /> + <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"Bài hát được đánh dấu thích"</string> + <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"Bài hát được đánh dấu không thích"</string> + <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"Trái tim"</string> <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"Mở khóa để tiếp tục"</string> <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"Quá trình khởi chạy bị hủy"</string> <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"Thả <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> để xóa."</string> diff --git a/packages/Keyguard/res/values-zh-rCN/strings.xml b/packages/Keyguard/res/values-zh-rCN/strings.xml index a62ffac7f9e7..06d71fff0043 100644 --- a/packages/Keyguard/res/values-zh-rCN/strings.xml +++ b/packages/Keyguard/res/values-zh-rCN/strings.xml @@ -71,12 +71,9 @@ <string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"暂停按钮"</string> <string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"播放按钮"</string> <string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"停止按钮"</string> - <!-- no translation found for keyguard_accessibility_transport_thumbs_up_description (4535938129663903194) --> - <skip /> - <!-- no translation found for keyguard_accessibility_transport_thumbs_down_description (8101433677192177861) --> - <skip /> - <!-- no translation found for keyguard_accessibility_transport_heart_description (2336943232474689887) --> - <skip /> + <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"我喜欢"</string> + <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"不喜欢"</string> + <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"爱心"</string> <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"解锁即可继续"</string> <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"启动已取消"</string> <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"放下<xliff:g id="WIDGET_INDEX">%1$s</xliff:g>即可将其删除。"</string> diff --git a/packages/Keyguard/res/values-zh-rHK/strings.xml b/packages/Keyguard/res/values-zh-rHK/strings.xml index b4238e168026..724357f914a0 100644 --- a/packages/Keyguard/res/values-zh-rHK/strings.xml +++ b/packages/Keyguard/res/values-zh-rHK/strings.xml @@ -71,12 +71,9 @@ <string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"[暫停] 按鈕"</string> <string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"[播放] 按鈕"</string> <string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"[停止] 按鈕"</string> - <!-- no translation found for keyguard_accessibility_transport_thumbs_up_description (4535938129663903194) --> - <skip /> - <!-- no translation found for keyguard_accessibility_transport_thumbs_down_description (8101433677192177861) --> - <skip /> - <!-- no translation found for keyguard_accessibility_transport_heart_description (2336943232474689887) --> - <skip /> + <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"喜歡"</string> + <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"不喜歡"</string> + <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"心形"</string> <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"請解鎖以繼續"</string> <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"已取消啟動"</string> <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"拖放「<xliff:g id="WIDGET_INDEX">%1$s</xliff:g>」即可刪除。"</string> diff --git a/packages/Keyguard/res/values-zh-rTW/strings.xml b/packages/Keyguard/res/values-zh-rTW/strings.xml index 01702f893d18..f3f172497260 100644 --- a/packages/Keyguard/res/values-zh-rTW/strings.xml +++ b/packages/Keyguard/res/values-zh-rTW/strings.xml @@ -71,12 +71,9 @@ <string name="keyguard_accessibility_transport_pause_description" msgid="8455979545295224302">"[暫停] 按鈕"</string> <string name="keyguard_accessibility_transport_play_description" msgid="8146417789511154044">"[播放] 按鈕"</string> <string name="keyguard_accessibility_transport_stop_description" msgid="7656358482980912216">"[停止] 按鈕"</string> - <!-- no translation found for keyguard_accessibility_transport_thumbs_up_description (4535938129663903194) --> - <skip /> - <!-- no translation found for keyguard_accessibility_transport_thumbs_down_description (8101433677192177861) --> - <skip /> - <!-- no translation found for keyguard_accessibility_transport_heart_description (2336943232474689887) --> - <skip /> + <string name="keyguard_accessibility_transport_thumbs_up_description" msgid="4535938129663903194">"喜歡"</string> + <string name="keyguard_accessibility_transport_thumbs_down_description" msgid="8101433677192177861">"不喜歡"</string> + <string name="keyguard_accessibility_transport_heart_description" msgid="2336943232474689887">"愛心"</string> <string name="keyguard_accessibility_show_bouncer" msgid="5425837272418176176">"先解鎖才能繼續操作"</string> <string name="keyguard_accessibility_hide_bouncer" msgid="7896992171878309358">"已取消啟動"</string> <string name="keyguard_accessibility_delete_widget_start" msgid="4096550552634391451">"拖放「<xliff:g id="WIDGET_INDEX">%1$s</xliff:g>」即可將其刪除。"</string> diff --git a/packages/Keyguard/res/values/styles.xml b/packages/Keyguard/res/values/styles.xml index 44f560fe2c87..9fd8f31b2d3b 100644 --- a/packages/Keyguard/res/values/styles.xml +++ b/packages/Keyguard/res/values/styles.xml @@ -68,4 +68,18 @@ <item name="android:textSize">@dimen/widget_big_font_size</item> </style> + <style name="Widget.TransportControl.SeekBar" parent="@android:style/Widget.Holo.SeekBar"> + <item name="android:indeterminateOnly">false</item> + <item name="android:progressDrawable">@drawable/scrubber_progress_horizontal_holo_light</item> + <item name="android:indeterminateDrawable">@drawable/scrubber_progress_horizontal_holo_light</item> + <item name="android:minHeight">13dip</item> + <item name="android:maxHeight">13dip</item> + <item name="android:thumb">@drawable/scrubber_control_selector_holo</item> + <item name="android:thumbOffset">16dip</item> + <item name="android:focusable">true</item> + <item name="android:paddingStart">16dip</item> + <item name="android:paddingEnd">16dip</item> + <item name="android:mirrorForRtl">true</item> + </style> + </resources> diff --git a/packages/Keyguard/src/com/android/keyguard/CarrierText.java b/packages/Keyguard/src/com/android/keyguard/CarrierText.java index 03b09b131524..c33f17477b46 100644 --- a/packages/Keyguard/src/com/android/keyguard/CarrierText.java +++ b/packages/Keyguard/src/com/android/keyguard/CarrierText.java @@ -47,6 +47,14 @@ public class CarrierText extends TextView { mSimState = simState; updateCarrierText(mSimState, mPlmn, mSpn); } + + public void onScreenTurnedOff(int why) { + setSelected(false); + }; + + public void onScreenTurnedOn() { + setSelected(true); + }; }; /** * The status of this lock screen. Primarily used for widgets on LockScreen. @@ -79,7 +87,8 @@ public class CarrierText extends TextView { protected void onFinishInflate() { super.onFinishInflate(); mSeparator = getResources().getString(R.string.kg_text_message_separator); - setSelected(true); // Allow marquee to work. + final boolean screenOn = KeyguardUpdateMonitor.getInstance(mContext).isScreenOn(); + setSelected(screenOn); // Allow marquee to work. } @Override diff --git a/packages/Keyguard/src/com/android/keyguard/KeyguardMessageArea.java b/packages/Keyguard/src/com/android/keyguard/KeyguardMessageArea.java index ad59c0267ce7..69075ec3d03a 100644 --- a/packages/Keyguard/src/com/android/keyguard/KeyguardMessageArea.java +++ b/packages/Keyguard/src/com/android/keyguard/KeyguardMessageArea.java @@ -163,6 +163,12 @@ class KeyguardMessageArea extends TextView { mBatteryIsLow = status.isBatteryLow(); update(); } + public void onScreenTurnedOff(int why) { + setSelected(false); + }; + public void onScreenTurnedOn() { + setSelected(true); + }; }; public KeyguardMessageArea(Context context) { @@ -174,9 +180,6 @@ class KeyguardMessageArea extends TextView { mLockPatternUtils = new LockPatternUtils(context); - // This is required to ensure marquee works - setSelected(true); - // Registering this callback immediately updates the battery state, among other things. mUpdateMonitor = KeyguardUpdateMonitor.getInstance(getContext()); mUpdateMonitor.registerCallback(mInfoCallback); @@ -187,6 +190,12 @@ class KeyguardMessageArea extends TextView { update(); } + @Override + protected void onFinishInflate() { + final boolean screenOn = KeyguardUpdateMonitor.getInstance(mContext).isScreenOn(); + setSelected(screenOn); // This is required to ensure marquee works + } + public void securityMessageChanged() { setAlpha(1f); mShowingMessage = true; diff --git a/packages/Keyguard/src/com/android/keyguard/KeyguardStatusView.java b/packages/Keyguard/src/com/android/keyguard/KeyguardStatusView.java index ffb619bda4da..3e42c14b2f69 100644 --- a/packages/Keyguard/src/com/android/keyguard/KeyguardStatusView.java +++ b/packages/Keyguard/src/com/android/keyguard/KeyguardStatusView.java @@ -21,6 +21,7 @@ import android.content.res.Resources; import android.graphics.Typeface; import android.text.TextUtils; import android.util.AttributeSet; +import android.util.Log; import android.util.Slog; import android.view.View; import android.widget.GridLayout; @@ -56,6 +57,14 @@ public class KeyguardStatusView extends GridLayout { refresh(); } }; + + public void onScreenTurnedOn() { + setEnableMarquee(true); + }; + + public void onScreenTurnedOff(int why) { + setEnableMarquee(false); + }; }; public KeyguardStatusView(Context context) { @@ -70,22 +79,18 @@ public class KeyguardStatusView extends GridLayout { super(context, attrs, defStyle); } + private void setEnableMarquee(boolean enabled) { + if (DEBUG) Log.v(TAG, (enabled ? "Enable" : "Disable") + " transport text marquee"); + if (mAlarmStatusView != null) mAlarmStatusView.setSelected(enabled); + } + @Override protected void onFinishInflate() { super.onFinishInflate(); - mAlarmStatusView = (TextView) findViewById(R.id.alarm_status); mLockPatternUtils = new LockPatternUtils(getContext()); - - // Required to get Marquee to work. - final View marqueeViews[] = { mAlarmStatusView }; - for (int i = 0; i < marqueeViews.length; i++) { - View v = marqueeViews[i]; - if (v == null) { - throw new RuntimeException("Can't find widget at index " + i); - } - v.setSelected(true); - } + final boolean screenOn = KeyguardUpdateMonitor.getInstance(mContext).isScreenOn(); + setEnableMarquee(screenOn); refresh(); } diff --git a/packages/Keyguard/src/com/android/keyguard/KeyguardTransportControlView.java b/packages/Keyguard/src/com/android/keyguard/KeyguardTransportControlView.java index 6d7b743058f4..ca4892dee32f 100644 --- a/packages/Keyguard/src/com/android/keyguard/KeyguardTransportControlView.java +++ b/packages/Keyguard/src/com/android/keyguard/KeyguardTransportControlView.java @@ -22,6 +22,8 @@ import android.content.res.Configuration; import android.graphics.Bitmap; import android.graphics.ColorMatrix; import android.graphics.ColorMatrixColorFilter; +import android.graphics.PorterDuff; +import android.graphics.PorterDuffXfermode; import android.graphics.drawable.Drawable; import android.media.AudioManager; import android.media.MediaMetadataEditor; @@ -198,6 +200,16 @@ public class KeyguardTransportControlView extends FrameLayout { KeyguardHostView.TransportControlCallback mTransportControlCallback; + private final KeyguardUpdateMonitorCallback mUpdateMonitor + = new KeyguardUpdateMonitorCallback() { + public void onScreenTurnedOff(int why) { + setEnableMarquee(false); + }; + public void onScreenTurnedOn() { + setEnableMarquee(true); + }; + }; + public KeyguardTransportControlView(Context context, AttributeSet attrs) { super(context, attrs); if (DEBUG) Log.v(TAG, "Create TCV " + this); @@ -250,6 +262,12 @@ public class KeyguardTransportControlView extends FrameLayout { mTransportControlCallback = transportControlCallback; } + private void setEnableMarquee(boolean enabled) { + if (DEBUG) Log.v(TAG, (enabled ? "Enable" : "Disable") + " transport text marquee"); + if (mTrackTitle != null) mTrackTitle.setSelected(enabled); + if (mTrackArtistAlbum != null) mTrackTitle.setSelected(enabled); + } + @Override public void onFinishInflate() { super.onFinishInflate(); @@ -257,9 +275,7 @@ public class KeyguardTransportControlView extends FrameLayout { mMetadataContainer = (ViewGroup) findViewById(R.id.metadata_container); mBadge = (ImageView) findViewById(R.id.badge); mTrackTitle = (TextView) findViewById(R.id.title); - mTrackTitle.setSelected(true); // enable marquee mTrackArtistAlbum = (TextView) findViewById(R.id.artist_album); - mTrackArtistAlbum.setSelected(true); mTransientSeek = findViewById(R.id.transient_seek); mTransientSeekBar = (SeekBar) findViewById(R.id.transient_seek_bar); mTransientSeekBar.setOnSeekBarChangeListener(mOnSeekBarChangeListener); @@ -273,6 +289,8 @@ public class KeyguardTransportControlView extends FrameLayout { view.setOnClickListener(mTransportCommandListener); view.setOnLongClickListener(mTransportShowSeekBarListener); } + final boolean screenOn = KeyguardUpdateMonitor.getInstance(mContext).isScreenOn(); + setEnableMarquee(screenOn); } @Override @@ -285,6 +303,7 @@ public class KeyguardTransportControlView extends FrameLayout { } if (DEBUG) Log.v(TAG, "Registering TCV " + this); mAudioManager.registerRemoteController(mRemoteController); + KeyguardUpdateMonitor.getInstance(mContext).registerCallback(mUpdateMonitor); } @Override @@ -301,6 +320,7 @@ public class KeyguardTransportControlView extends FrameLayout { super.onDetachedFromWindow(); if (DEBUG) Log.v(TAG, "Unregistering TCV " + this); mAudioManager.unregisterRemoteController(mRemoteController); + KeyguardUpdateMonitor.getInstance(mContext).removeCallback(mUpdateMonitor); mUserSeeking = false; } @@ -310,6 +330,7 @@ public class KeyguardTransportControlView extends FrameLayout { final ColorMatrix cm = new ColorMatrix(); cm.setSaturation(0); mBadge.setColorFilter(new ColorMatrixColorFilter(cm)); + mBadge.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SCREEN)); mBadge.setImageAlpha(0xef); } diff --git a/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java b/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java index 76deb77656c8..45cd3d4bcd2a 100644 --- a/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java +++ b/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java @@ -92,7 +92,8 @@ public class KeyguardUpdateMonitor { protected static final int MSG_SET_PLAYBACK_STATE = 316; protected static final int MSG_USER_INFO_CHANGED = 317; protected static final int MSG_REPORT_EMERGENCY_CALL_ACTION = 318; - + private static final int MSG_SCREEN_TURNED_ON = 319; + private static final int MSG_SCREEN_TURNED_OFF = 320; private static KeyguardUpdateMonitor sInstance; @@ -127,6 +128,8 @@ public class KeyguardUpdateMonitor { private boolean mSwitchingUser; + private boolean mScreenOn; + private final Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { @@ -185,6 +188,12 @@ public class KeyguardUpdateMonitor { case MSG_REPORT_EMERGENCY_CALL_ACTION: handleReportEmergencyCallAction(); break; + case MSG_SCREEN_TURNED_OFF: + handleScreenTurnedOff(msg.arg1); + break; + case MSG_SCREEN_TURNED_ON: + handleScreenTurnedOn(); + break; } } }; @@ -411,6 +420,26 @@ public class KeyguardUpdateMonitor { return sInstance; } + protected void handleScreenTurnedOn() { + final int count = mCallbacks.size(); + for (int i = 0; i < count; i++) { + KeyguardUpdateMonitorCallback cb = mCallbacks.get(i).get(); + if (cb != null) { + cb.onScreenTurnedOn(); + } + } + } + + protected void handleScreenTurnedOff(int arg1) { + final int count = mCallbacks.size(); + for (int i = 0; i < count; i++) { + KeyguardUpdateMonitorCallback cb = mCallbacks.get(i).get(); + if (cb != null) { + cb.onScreenTurnedOff(arg1); + } + } + } + /** * IMPORTANT: Must be called from UI thread. */ @@ -1041,4 +1070,24 @@ public class KeyguardUpdateMonitor { public DisplayClientState getCachedDisplayClientState() { return mDisplayClientState; } + + // TODO: use these callbacks elsewhere in place of the existing notifyScreen*() + // (KeyguardViewMediator, KeyguardHostView) + public void dispatchScreenTurnedOn() { + synchronized (this) { + mScreenOn = true; + } + mHandler.sendEmptyMessage(MSG_SCREEN_TURNED_ON); + } + + public void dispatchScreenTurndOff(int why) { + synchronized(this) { + mScreenOn = false; + } + mHandler.sendMessage(mHandler.obtainMessage(MSG_SCREEN_TURNED_OFF, why, 0)); + } + + public boolean isScreenOn() { + return mScreenOn; + } } diff --git a/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitorCallback.java b/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitorCallback.java index e6dddab148f8..76f963733c98 100644 --- a/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitorCallback.java +++ b/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitorCallback.java @@ -19,6 +19,7 @@ import android.app.PendingIntent; import android.app.admin.DevicePolicyManager; import android.graphics.Bitmap; import android.media.AudioManager; +import android.view.WindowManagerPolicy; import com.android.internal.telephony.IccCardConstants; @@ -137,7 +138,23 @@ class KeyguardUpdateMonitorCallback { */ void onEmergencyCallAction() { } + /** + * Called when the transport background changes. + * @param bitmap + */ public void onSetBackground(Bitmap bitmap) { - // THIS SPACE FOR RENT } + + /** + * Called when the screen turns on + */ + public void onScreenTurnedOn() { } + + /** + * Called when the screen turns off + * @param why {@link WindowManagerPolicy#OFF_BECAUSE_OF_USER}, + * {@link WindowManagerPolicy#OFF_BECAUSE_OF_TIMEOUT} or + * {@link WindowManagerPolicy#OFF_BECAUSE_OF_PROX_SENSOR}. + */ + public void onScreenTurnedOff(int why) { } } diff --git a/packages/Keyguard/src/com/android/keyguard/KeyguardViewMediator.java b/packages/Keyguard/src/com/android/keyguard/KeyguardViewMediator.java index dc28bd09a84e..a37a3a440a7f 100644 --- a/packages/Keyguard/src/com/android/keyguard/KeyguardViewMediator.java +++ b/packages/Keyguard/src/com/android/keyguard/KeyguardViewMediator.java @@ -599,6 +599,7 @@ public class KeyguardViewMediator { doKeyguardLocked(null); } } + KeyguardUpdateMonitor.getInstance(mContext).dispatchScreenTurndOff(why); } private void doKeyguardLaterLocked() { @@ -664,6 +665,7 @@ public class KeyguardViewMediator { notifyScreenOnLocked(callback); } } + KeyguardUpdateMonitor.getInstance(mContext).dispatchScreenTurnedOn(); maybeSendUserPresentBroadcast(); } diff --git a/packages/PrintSpooler/res/values-af/strings.xml b/packages/PrintSpooler/res/values-af/strings.xml index 133dcfa2b88e..f307f2a69cdb 100644 --- a/packages/PrintSpooler/res/values-af/strings.xml +++ b/packages/PrintSpooler/res/values-af/strings.xml @@ -29,15 +29,26 @@ <string name="print_preview" msgid="8010217796057763343">"Drukvoorskou"</string> <string name="install_for_print_preview" msgid="6366303997385509332">"Installeer PDF-bekyker vir voorskou"</string> <string name="printing_app_crashed" msgid="854477616686566398">"Drukkerprogram het omgeval"</string> - <string name="page_count_unknown" msgid="7412881437770983864">"onbeskikbaar"</string> + <string name="page_count_unknown" msgid="6058852665954511124">"Bladsye"</string> <string name="generating_print_job" msgid="3119608742651698916">"Genereer uitdruktaak"</string> <string name="save_as_pdf" msgid="5718454119847596853">"Stoor as PDF"</string> <string name="all_printers" msgid="5018829726861876202">"Alle drukkers…"</string> + <!-- no translation found for print_dialog (32628687461331979) --> + <skip /> <string name="search" msgid="5421724265322228497">"Deursoek"</string> <string name="all_printers_label" msgid="3178848870161526399">"Alle drukkers"</string> <string name="add_print_service_label" msgid="5356702546188981940">"Voeg diens by"</string> + <!-- no translation found for print_search_box_shown_utterance (7967404953901376090) --> + <skip /> + <!-- no translation found for print_search_box_hidden_utterance (5727755169343113351) --> + <skip /> + <!-- no translation found for print_add_printer (1088656468360653455) --> + <skip /> + <!-- no translation found for print_search_result_count_utterance:one (4484953260685964252) --> + <!-- no translation found for print_search_result_count_utterance:other (6533817036607128241) --> <string name="choose_print_service" msgid="3740309762324459694">"Kies drukdiens"</string> - <!-- no translation found for print_searching_for_printers (6550424555079932867) --> + <string name="print_searching_for_printers" msgid="6550424555079932867">"Soek tans vir drukkers"</string> + <!-- no translation found for print_no_printers (4869403323900054866) --> <skip /> <string name="printing_notification_title_template" msgid="295903957762447362">"Druk tans <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Kanselleer tans <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-am/strings.xml b/packages/PrintSpooler/res/values-am/strings.xml index 1542bab31a57..49928750e4f2 100644 --- a/packages/PrintSpooler/res/values-am/strings.xml +++ b/packages/PrintSpooler/res/values-am/strings.xml @@ -29,16 +29,29 @@ <string name="print_preview" msgid="8010217796057763343">"የህትመት ቅድመ እይታ"</string> <string name="install_for_print_preview" msgid="6366303997385509332">"ለቅድመ-እይታ የፒ ዲ ኤፍ መመልከቻ ይጫኑ"</string> <string name="printing_app_crashed" msgid="854477616686566398">"የአታሚ መተግበሪያ ተበላሽቷል"</string> - <string name="page_count_unknown" msgid="7412881437770983864">"አይገኝም"</string> + <!-- no translation found for page_count_unknown (6058852665954511124) --> + <skip /> <string name="generating_print_job" msgid="3119608742651698916">"የህትመት ስራን በማመንጨት ላይ"</string> <string name="save_as_pdf" msgid="5718454119847596853">"እንደ ፒ ዲ ኤፍ አስቀምጥ"</string> <string name="all_printers" msgid="5018829726861876202">"ሁሉም አታሚዎች…"</string> + <!-- no translation found for print_dialog (32628687461331979) --> + <skip /> <string name="search" msgid="5421724265322228497">"ፍለጋ"</string> <string name="all_printers_label" msgid="3178848870161526399">"ሁሉም አታሚዎች"</string> <string name="add_print_service_label" msgid="5356702546188981940">"አገልግሎት አክል"</string> + <!-- no translation found for print_search_box_shown_utterance (7967404953901376090) --> + <skip /> + <!-- no translation found for print_search_box_hidden_utterance (5727755169343113351) --> + <skip /> + <!-- no translation found for print_add_printer (1088656468360653455) --> + <skip /> + <!-- no translation found for print_search_result_count_utterance:one (4484953260685964252) --> + <!-- no translation found for print_search_result_count_utterance:other (6533817036607128241) --> <string name="choose_print_service" msgid="3740309762324459694">"የህትመት አገልግሎት ይምረጡ"</string> <!-- no translation found for print_searching_for_printers (6550424555079932867) --> <skip /> + <!-- no translation found for print_no_printers (4869403323900054866) --> + <skip /> <string name="printing_notification_title_template" msgid="295903957762447362">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>ን በማተም ላይ"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>ን በመተው ላይ"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"የአታሚ ስህተት <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-ar/strings.xml b/packages/PrintSpooler/res/values-ar/strings.xml index 042cda830a3f..03f62b8dfba2 100644 --- a/packages/PrintSpooler/res/values-ar/strings.xml +++ b/packages/PrintSpooler/res/values-ar/strings.xml @@ -29,16 +29,29 @@ <string name="print_preview" msgid="8010217796057763343">"معاينة قبل الطباعة"</string> <string name="install_for_print_preview" msgid="6366303997385509332">"تثبيت برنامج عرض PDF للمعاينة"</string> <string name="printing_app_crashed" msgid="854477616686566398">"تعطّل تطبيق الطباعة"</string> - <string name="page_count_unknown" msgid="7412881437770983864">"غير متوفر"</string> + <!-- no translation found for page_count_unknown (6058852665954511124) --> + <skip /> <string name="generating_print_job" msgid="3119608742651698916">"جارٍ إنشاء مهمة الطباعة"</string> <string name="save_as_pdf" msgid="5718454119847596853">"حفظ بتنسيق PDF"</string> <string name="all_printers" msgid="5018829726861876202">"جميع الطابعات…"</string> + <!-- no translation found for print_dialog (32628687461331979) --> + <skip /> <string name="search" msgid="5421724265322228497">"بحث"</string> <string name="all_printers_label" msgid="3178848870161526399">"جميع الطابعات"</string> <string name="add_print_service_label" msgid="5356702546188981940">"إضافة خدمة"</string> + <!-- no translation found for print_search_box_shown_utterance (7967404953901376090) --> + <skip /> + <!-- no translation found for print_search_box_hidden_utterance (5727755169343113351) --> + <skip /> + <!-- no translation found for print_add_printer (1088656468360653455) --> + <skip /> + <!-- no translation found for print_search_result_count_utterance:one (4484953260685964252) --> + <!-- no translation found for print_search_result_count_utterance:other (6533817036607128241) --> <string name="choose_print_service" msgid="3740309762324459694">"اختر خدمة طباعة"</string> <!-- no translation found for print_searching_for_printers (6550424555079932867) --> <skip /> + <!-- no translation found for print_no_printers (4869403323900054866) --> + <skip /> <string name="printing_notification_title_template" msgid="295903957762447362">"جارٍ طباعة <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"جارٍ إلغاء <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"خطا في الطابعة <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-bg/strings.xml b/packages/PrintSpooler/res/values-bg/strings.xml index c28cbf18f723..a4e8f5341050 100644 --- a/packages/PrintSpooler/res/values-bg/strings.xml +++ b/packages/PrintSpooler/res/values-bg/strings.xml @@ -29,16 +29,29 @@ <string name="print_preview" msgid="8010217796057763343">"Визуализация за печат"</string> <string name="install_for_print_preview" msgid="6366303997385509332">"Инсталиране на визуализатор на PDF"</string> <string name="printing_app_crashed" msgid="854477616686566398">"Получи се срив в приложението за отпечатване"</string> - <string name="page_count_unknown" msgid="7412881437770983864">"няма информация"</string> + <!-- no translation found for page_count_unknown (6058852665954511124) --> + <skip /> <string name="generating_print_job" msgid="3119608742651698916">"Заданието за печат се генерира"</string> <string name="save_as_pdf" msgid="5718454119847596853">"Запазване като PDF"</string> <string name="all_printers" msgid="5018829726861876202">"Всички принтери…"</string> + <!-- no translation found for print_dialog (32628687461331979) --> + <skip /> <string name="search" msgid="5421724265322228497">"Търсене"</string> <string name="all_printers_label" msgid="3178848870161526399">"Всички принтери"</string> <string name="add_print_service_label" msgid="5356702546188981940">"Добавяне на услуга"</string> + <!-- no translation found for print_search_box_shown_utterance (7967404953901376090) --> + <skip /> + <!-- no translation found for print_search_box_hidden_utterance (5727755169343113351) --> + <skip /> + <!-- no translation found for print_add_printer (1088656468360653455) --> + <skip /> + <!-- no translation found for print_search_result_count_utterance:one (4484953260685964252) --> + <!-- no translation found for print_search_result_count_utterance:other (6533817036607128241) --> <string name="choose_print_service" msgid="3740309762324459694">"Избиране на услуга за отпечатване"</string> <!-- no translation found for print_searching_for_printers (6550424555079932867) --> <skip /> + <!-- no translation found for print_no_printers (4869403323900054866) --> + <skip /> <string name="printing_notification_title_template" msgid="295903957762447362">"„<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>“ се отпечатва"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"„<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>“ се анулира"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"Грешка в принтера при „<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>“"</string> diff --git a/packages/PrintSpooler/res/values-ca/strings.xml b/packages/PrintSpooler/res/values-ca/strings.xml index 43859662932e..d7cc2134ecbf 100644 --- a/packages/PrintSpooler/res/values-ca/strings.xml +++ b/packages/PrintSpooler/res/values-ca/strings.xml @@ -29,16 +29,29 @@ <string name="print_preview" msgid="8010217796057763343">"Visualització prèvia impressió"</string> <string name="install_for_print_preview" msgid="6366303997385509332">"Instal·la un lector de PDF per a visualitz. prèvia"</string> <string name="printing_app_crashed" msgid="854477616686566398">"L\'aplicació d\'impressió ha fallat"</string> - <string name="page_count_unknown" msgid="7412881437770983864">"no disponible"</string> + <!-- no translation found for page_count_unknown (6058852665954511124) --> + <skip /> <string name="generating_print_job" msgid="3119608742651698916">"Generant tasca impressió"</string> <string name="save_as_pdf" msgid="5718454119847596853">"Desa com a PDF"</string> <string name="all_printers" msgid="5018829726861876202">"Totes les impressores…"</string> + <!-- no translation found for print_dialog (32628687461331979) --> + <skip /> <string name="search" msgid="5421724265322228497">"Cerca"</string> <string name="all_printers_label" msgid="3178848870161526399">"Totes les impressores"</string> <string name="add_print_service_label" msgid="5356702546188981940">"Afegeix un servei"</string> + <!-- no translation found for print_search_box_shown_utterance (7967404953901376090) --> + <skip /> + <!-- no translation found for print_search_box_hidden_utterance (5727755169343113351) --> + <skip /> + <!-- no translation found for print_add_printer (1088656468360653455) --> + <skip /> + <!-- no translation found for print_search_result_count_utterance:one (4484953260685964252) --> + <!-- no translation found for print_search_result_count_utterance:other (6533817036607128241) --> <string name="choose_print_service" msgid="3740309762324459694">"Selecció del servei d\'impressió"</string> <!-- no translation found for print_searching_for_printers (6550424555079932867) --> <skip /> + <!-- no translation found for print_no_printers (4869403323900054866) --> + <skip /> <string name="printing_notification_title_template" msgid="295903957762447362">"S\'està imprimint <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"S\'està cancel·lant <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"Error d\'impressora <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-cs/strings.xml b/packages/PrintSpooler/res/values-cs/strings.xml index 402c4671df1d..f435215e1610 100644 --- a/packages/PrintSpooler/res/values-cs/strings.xml +++ b/packages/PrintSpooler/res/values-cs/strings.xml @@ -29,15 +29,26 @@ <string name="print_preview" msgid="8010217796057763343">"Náhled tisku"</string> <string name="install_for_print_preview" msgid="6366303997385509332">"Nainstalovat prohlížeč PDF (umožní náhled)"</string> <string name="printing_app_crashed" msgid="854477616686566398">"Aplikace tisku selhala"</string> - <string name="page_count_unknown" msgid="7412881437770983864">"nedostupné"</string> + <string name="page_count_unknown" msgid="6058852665954511124">"Stránky"</string> <string name="generating_print_job" msgid="3119608742651698916">"Generování úlohy tisku"</string> <string name="save_as_pdf" msgid="5718454119847596853">"Uložit ve formátu PDF"</string> <string name="all_printers" msgid="5018829726861876202">"Všechny tiskárny…"</string> + <!-- no translation found for print_dialog (32628687461331979) --> + <skip /> <string name="search" msgid="5421724265322228497">"Hledat"</string> <string name="all_printers_label" msgid="3178848870161526399">"Všechny tiskárny"</string> <string name="add_print_service_label" msgid="5356702546188981940">"Přidat službu"</string> + <!-- no translation found for print_search_box_shown_utterance (7967404953901376090) --> + <skip /> + <!-- no translation found for print_search_box_hidden_utterance (5727755169343113351) --> + <skip /> + <!-- no translation found for print_add_printer (1088656468360653455) --> + <skip /> + <!-- no translation found for print_search_result_count_utterance:one (4484953260685964252) --> + <!-- no translation found for print_search_result_count_utterance:other (6533817036607128241) --> <string name="choose_print_service" msgid="3740309762324459694">"Zvolte službu tisku"</string> - <!-- no translation found for print_searching_for_printers (6550424555079932867) --> + <string name="print_searching_for_printers" msgid="6550424555079932867">"Vyhledávání tiskáren"</string> + <!-- no translation found for print_no_printers (4869403323900054866) --> <skip /> <string name="printing_notification_title_template" msgid="295903957762447362">"Tisk úlohy <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Rušení úlohy <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-da/strings.xml b/packages/PrintSpooler/res/values-da/strings.xml index 872158b899ab..c0dcee4d5c6c 100644 --- a/packages/PrintSpooler/res/values-da/strings.xml +++ b/packages/PrintSpooler/res/values-da/strings.xml @@ -29,16 +29,29 @@ <string name="print_preview" msgid="8010217796057763343">"Vis udskrift"</string> <string name="install_for_print_preview" msgid="6366303997385509332">"Installer et PDF-visningsprog. for at se eksempel"</string> <string name="printing_app_crashed" msgid="854477616686566398">"Udskrivningsapp gik ned"</string> - <string name="page_count_unknown" msgid="7412881437770983864">"utilgængelig"</string> + <!-- no translation found for page_count_unknown (6058852665954511124) --> + <skip /> <string name="generating_print_job" msgid="3119608742651698916">"Udskriften generes"</string> <string name="save_as_pdf" msgid="5718454119847596853">"Gem som PDF"</string> <string name="all_printers" msgid="5018829726861876202">"Alle printere..."</string> + <!-- no translation found for print_dialog (32628687461331979) --> + <skip /> <string name="search" msgid="5421724265322228497">"Søg"</string> <string name="all_printers_label" msgid="3178848870161526399">"Alle printere"</string> <string name="add_print_service_label" msgid="5356702546188981940">"Tilføj tjeneste"</string> + <!-- no translation found for print_search_box_shown_utterance (7967404953901376090) --> + <skip /> + <!-- no translation found for print_search_box_hidden_utterance (5727755169343113351) --> + <skip /> + <!-- no translation found for print_add_printer (1088656468360653455) --> + <skip /> + <!-- no translation found for print_search_result_count_utterance:one (4484953260685964252) --> + <!-- no translation found for print_search_result_count_utterance:other (6533817036607128241) --> <string name="choose_print_service" msgid="3740309762324459694">"Vælg udskriftstjeneste"</string> <!-- no translation found for print_searching_for_printers (6550424555079932867) --> <skip /> + <!-- no translation found for print_no_printers (4869403323900054866) --> + <skip /> <string name="printing_notification_title_template" msgid="295903957762447362">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> udskrives"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> annulleres"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"Udskriften <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> mislykkedes"</string> diff --git a/packages/PrintSpooler/res/values-de/strings.xml b/packages/PrintSpooler/res/values-de/strings.xml index 4e478bebf78c..97c8c0ed3574 100644 --- a/packages/PrintSpooler/res/values-de/strings.xml +++ b/packages/PrintSpooler/res/values-de/strings.xml @@ -29,15 +29,26 @@ <string name="print_preview" msgid="8010217796057763343">"Vorschau drucken"</string> <string name="install_for_print_preview" msgid="6366303997385509332">"PDF-Viewer für Vorschau installieren"</string> <string name="printing_app_crashed" msgid="854477616686566398">"Druck-App abgestürzt"</string> - <string name="page_count_unknown" msgid="7412881437770983864">"nicht verfügbar"</string> + <string name="page_count_unknown" msgid="6058852665954511124">"Seiten"</string> <string name="generating_print_job" msgid="3119608742651698916">"Druckauftrag wird generiert..."</string> <string name="save_as_pdf" msgid="5718454119847596853">"Als PDF speichern"</string> <string name="all_printers" msgid="5018829726861876202">"Alle Drucker…"</string> + <!-- no translation found for print_dialog (32628687461331979) --> + <skip /> <string name="search" msgid="5421724265322228497">"Suchen"</string> <string name="all_printers_label" msgid="3178848870161526399">"Alle Drucker"</string> <string name="add_print_service_label" msgid="5356702546188981940">"Dienst hinzufügen"</string> + <!-- no translation found for print_search_box_shown_utterance (7967404953901376090) --> + <skip /> + <!-- no translation found for print_search_box_hidden_utterance (5727755169343113351) --> + <skip /> + <!-- no translation found for print_add_printer (1088656468360653455) --> + <skip /> + <!-- no translation found for print_search_result_count_utterance:one (4484953260685964252) --> + <!-- no translation found for print_search_result_count_utterance:other (6533817036607128241) --> <string name="choose_print_service" msgid="3740309762324459694">"Druckdienst auswählen"</string> - <!-- no translation found for print_searching_for_printers (6550424555079932867) --> + <string name="print_searching_for_printers" msgid="6550424555079932867">"Suche nach Druckern…"</string> + <!-- no translation found for print_no_printers (4869403323900054866) --> <skip /> <string name="printing_notification_title_template" msgid="295903957762447362">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> wird gedruckt..."</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> wird abgebrochen..."</string> diff --git a/packages/PrintSpooler/res/values-el/strings.xml b/packages/PrintSpooler/res/values-el/strings.xml index 174ead31f9b4..6bdf19d44d42 100644 --- a/packages/PrintSpooler/res/values-el/strings.xml +++ b/packages/PrintSpooler/res/values-el/strings.xml @@ -29,16 +29,29 @@ <string name="print_preview" msgid="8010217796057763343">"Προεπισκόπηση εκτύπωσης"</string> <string name="install_for_print_preview" msgid="6366303997385509332">"Εγκαταστήστε το PDF viewer για προεπισκόπηση"</string> <string name="printing_app_crashed" msgid="854477616686566398">"Διακοπή λειτουργίας εφαρμογής εκτύπωσης"</string> - <string name="page_count_unknown" msgid="7412881437770983864">"μη διαθέσιμο"</string> + <!-- no translation found for page_count_unknown (6058852665954511124) --> + <skip /> <string name="generating_print_job" msgid="3119608742651698916">"Δημιουργία εργασίας εκτύπωσης"</string> <string name="save_as_pdf" msgid="5718454119847596853">"Αποθήκευση ως PDF"</string> <string name="all_printers" msgid="5018829726861876202">"Όλοι οι εκτυπωτές…"</string> + <!-- no translation found for print_dialog (32628687461331979) --> + <skip /> <string name="search" msgid="5421724265322228497">"Αναζήτηση"</string> <string name="all_printers_label" msgid="3178848870161526399">"Όλοι οι εκτυπωτές"</string> <string name="add_print_service_label" msgid="5356702546188981940">"Προσθήκη υπηρεσίας"</string> + <!-- no translation found for print_search_box_shown_utterance (7967404953901376090) --> + <skip /> + <!-- no translation found for print_search_box_hidden_utterance (5727755169343113351) --> + <skip /> + <!-- no translation found for print_add_printer (1088656468360653455) --> + <skip /> + <!-- no translation found for print_search_result_count_utterance:one (4484953260685964252) --> + <!-- no translation found for print_search_result_count_utterance:other (6533817036607128241) --> <string name="choose_print_service" msgid="3740309762324459694">"Επιλέξτε υπηρεσία εκτύπωσης"</string> <!-- no translation found for print_searching_for_printers (6550424555079932867) --> <skip /> + <!-- no translation found for print_no_printers (4869403323900054866) --> + <skip /> <string name="printing_notification_title_template" msgid="295903957762447362">"Εκτύπωση <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Ακύρωση <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"Σφάλμα εκτυπωτή <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-en-rGB/strings.xml b/packages/PrintSpooler/res/values-en-rGB/strings.xml index 43bba2488a98..77f275d4ade1 100644 --- a/packages/PrintSpooler/res/values-en-rGB/strings.xml +++ b/packages/PrintSpooler/res/values-en-rGB/strings.xml @@ -29,15 +29,26 @@ <string name="print_preview" msgid="8010217796057763343">"Print preview"</string> <string name="install_for_print_preview" msgid="6366303997385509332">"Install PDF viewer for preview"</string> <string name="printing_app_crashed" msgid="854477616686566398">"Printing app crashed"</string> - <string name="page_count_unknown" msgid="7412881437770983864">"unavailable"</string> + <string name="page_count_unknown" msgid="6058852665954511124">"Pages"</string> <string name="generating_print_job" msgid="3119608742651698916">"Generating print job"</string> <string name="save_as_pdf" msgid="5718454119847596853">"Save as PDF"</string> <string name="all_printers" msgid="5018829726861876202">"All printers…"</string> + <!-- no translation found for print_dialog (32628687461331979) --> + <skip /> <string name="search" msgid="5421724265322228497">"Search"</string> <string name="all_printers_label" msgid="3178848870161526399">"All printers"</string> <string name="add_print_service_label" msgid="5356702546188981940">"Add service"</string> + <!-- no translation found for print_search_box_shown_utterance (7967404953901376090) --> + <skip /> + <!-- no translation found for print_search_box_hidden_utterance (5727755169343113351) --> + <skip /> + <!-- no translation found for print_add_printer (1088656468360653455) --> + <skip /> + <!-- no translation found for print_search_result_count_utterance:one (4484953260685964252) --> + <!-- no translation found for print_search_result_count_utterance:other (6533817036607128241) --> <string name="choose_print_service" msgid="3740309762324459694">"Choose print service"</string> - <!-- no translation found for print_searching_for_printers (6550424555079932867) --> + <string name="print_searching_for_printers" msgid="6550424555079932867">"Searching for printers"</string> + <!-- no translation found for print_no_printers (4869403323900054866) --> <skip /> <string name="printing_notification_title_template" msgid="295903957762447362">"Printing <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Cancelling <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-en-rIN/strings.xml b/packages/PrintSpooler/res/values-en-rIN/strings.xml index 43bba2488a98..77f275d4ade1 100644 --- a/packages/PrintSpooler/res/values-en-rIN/strings.xml +++ b/packages/PrintSpooler/res/values-en-rIN/strings.xml @@ -29,15 +29,26 @@ <string name="print_preview" msgid="8010217796057763343">"Print preview"</string> <string name="install_for_print_preview" msgid="6366303997385509332">"Install PDF viewer for preview"</string> <string name="printing_app_crashed" msgid="854477616686566398">"Printing app crashed"</string> - <string name="page_count_unknown" msgid="7412881437770983864">"unavailable"</string> + <string name="page_count_unknown" msgid="6058852665954511124">"Pages"</string> <string name="generating_print_job" msgid="3119608742651698916">"Generating print job"</string> <string name="save_as_pdf" msgid="5718454119847596853">"Save as PDF"</string> <string name="all_printers" msgid="5018829726861876202">"All printers…"</string> + <!-- no translation found for print_dialog (32628687461331979) --> + <skip /> <string name="search" msgid="5421724265322228497">"Search"</string> <string name="all_printers_label" msgid="3178848870161526399">"All printers"</string> <string name="add_print_service_label" msgid="5356702546188981940">"Add service"</string> + <!-- no translation found for print_search_box_shown_utterance (7967404953901376090) --> + <skip /> + <!-- no translation found for print_search_box_hidden_utterance (5727755169343113351) --> + <skip /> + <!-- no translation found for print_add_printer (1088656468360653455) --> + <skip /> + <!-- no translation found for print_search_result_count_utterance:one (4484953260685964252) --> + <!-- no translation found for print_search_result_count_utterance:other (6533817036607128241) --> <string name="choose_print_service" msgid="3740309762324459694">"Choose print service"</string> - <!-- no translation found for print_searching_for_printers (6550424555079932867) --> + <string name="print_searching_for_printers" msgid="6550424555079932867">"Searching for printers"</string> + <!-- no translation found for print_no_printers (4869403323900054866) --> <skip /> <string name="printing_notification_title_template" msgid="295903957762447362">"Printing <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Cancelling <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-es-rUS/strings.xml b/packages/PrintSpooler/res/values-es-rUS/strings.xml index b2bb4025141c..c3cc9cbf2486 100644 --- a/packages/PrintSpooler/res/values-es-rUS/strings.xml +++ b/packages/PrintSpooler/res/values-es-rUS/strings.xml @@ -29,16 +29,29 @@ <string name="print_preview" msgid="8010217796057763343">"Vista previa de impresión"</string> <string name="install_for_print_preview" msgid="6366303997385509332">"Instalar visualizador de PDF para vista previa"</string> <string name="printing_app_crashed" msgid="854477616686566398">"La aplicación de impresión falló"</string> - <string name="page_count_unknown" msgid="7412881437770983864">"no disponible"</string> + <!-- no translation found for page_count_unknown (6058852665954511124) --> + <skip /> <string name="generating_print_job" msgid="3119608742651698916">"Generando trabajo de impresión"</string> <string name="save_as_pdf" msgid="5718454119847596853">"Guardar como PDF"</string> <string name="all_printers" msgid="5018829726861876202">"Todas las impresoras…"</string> + <!-- no translation found for print_dialog (32628687461331979) --> + <skip /> <string name="search" msgid="5421724265322228497">"Buscar"</string> <string name="all_printers_label" msgid="3178848870161526399">"Todas las impresoras"</string> <string name="add_print_service_label" msgid="5356702546188981940">"Agregar servicio"</string> + <!-- no translation found for print_search_box_shown_utterance (7967404953901376090) --> + <skip /> + <!-- no translation found for print_search_box_hidden_utterance (5727755169343113351) --> + <skip /> + <!-- no translation found for print_add_printer (1088656468360653455) --> + <skip /> + <!-- no translation found for print_search_result_count_utterance:one (4484953260685964252) --> + <!-- no translation found for print_search_result_count_utterance:other (6533817036607128241) --> <string name="choose_print_service" msgid="3740309762324459694">"Elegir servicio de impresión"</string> <!-- no translation found for print_searching_for_printers (6550424555079932867) --> <skip /> + <!-- no translation found for print_no_printers (4869403323900054866) --> + <skip /> <string name="printing_notification_title_template" msgid="295903957762447362">"Imprimiendo <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Cancelando <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"Error de impresora <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-es/strings.xml b/packages/PrintSpooler/res/values-es/strings.xml index 40140610dafd..4cd820f35eab 100644 --- a/packages/PrintSpooler/res/values-es/strings.xml +++ b/packages/PrintSpooler/res/values-es/strings.xml @@ -29,15 +29,26 @@ <string name="print_preview" msgid="8010217796057763343">"Vista previa de impresión"</string> <string name="install_for_print_preview" msgid="6366303997385509332">"Instalar visor PDF para obtener vista previa"</string> <string name="printing_app_crashed" msgid="854477616686566398">"Error de aplicación de impresión"</string> - <string name="page_count_unknown" msgid="7412881437770983864">"no disponible"</string> + <string name="page_count_unknown" msgid="6058852665954511124">"Páginas"</string> <string name="generating_print_job" msgid="3119608742651698916">"Generando trabajo de impresión"</string> <string name="save_as_pdf" msgid="5718454119847596853">"Guardar como PDF"</string> <string name="all_printers" msgid="5018829726861876202">"Todas las impresoras…"</string> + <!-- no translation found for print_dialog (32628687461331979) --> + <skip /> <string name="search" msgid="5421724265322228497">"Buscar"</string> <string name="all_printers_label" msgid="3178848870161526399">"Todas las impresoras"</string> <string name="add_print_service_label" msgid="5356702546188981940">"Añadir servicio"</string> + <!-- no translation found for print_search_box_shown_utterance (7967404953901376090) --> + <skip /> + <!-- no translation found for print_search_box_hidden_utterance (5727755169343113351) --> + <skip /> + <!-- no translation found for print_add_printer (1088656468360653455) --> + <skip /> + <!-- no translation found for print_search_result_count_utterance:one (4484953260685964252) --> + <!-- no translation found for print_search_result_count_utterance:other (6533817036607128241) --> <string name="choose_print_service" msgid="3740309762324459694">"Seleccionar servicio de impresión"</string> - <!-- no translation found for print_searching_for_printers (6550424555079932867) --> + <string name="print_searching_for_printers" msgid="6550424555079932867">"Buscando impresoras"</string> + <!-- no translation found for print_no_printers (4869403323900054866) --> <skip /> <string name="printing_notification_title_template" msgid="295903957762447362">"Imprimiendo <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Cancelando <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-et-rEE/strings.xml b/packages/PrintSpooler/res/values-et-rEE/strings.xml index f87c9fa39214..b2e579fbd731 100644 --- a/packages/PrintSpooler/res/values-et-rEE/strings.xml +++ b/packages/PrintSpooler/res/values-et-rEE/strings.xml @@ -29,15 +29,26 @@ <string name="print_preview" msgid="8010217796057763343">"Prindi eelvaade"</string> <string name="install_for_print_preview" msgid="6366303997385509332">"PDF-vaaturi installimine eelvaate kuvamiseks"</string> <string name="printing_app_crashed" msgid="854477616686566398">"Printimisrakendus jooksis kokku"</string> - <string name="page_count_unknown" msgid="7412881437770983864">"pole teada"</string> + <string name="page_count_unknown" msgid="6058852665954511124">"Lehed"</string> <string name="generating_print_job" msgid="3119608742651698916">"Prinditöö loomine"</string> <string name="save_as_pdf" msgid="5718454119847596853">"Salvesta PDF-ina"</string> <string name="all_printers" msgid="5018829726861876202">"Kõik printerid …"</string> + <!-- no translation found for print_dialog (32628687461331979) --> + <skip /> <string name="search" msgid="5421724265322228497">"Otsing"</string> <string name="all_printers_label" msgid="3178848870161526399">"Kõik printerid"</string> <string name="add_print_service_label" msgid="5356702546188981940">"Lisa teenus"</string> + <!-- no translation found for print_search_box_shown_utterance (7967404953901376090) --> + <skip /> + <!-- no translation found for print_search_box_hidden_utterance (5727755169343113351) --> + <skip /> + <!-- no translation found for print_add_printer (1088656468360653455) --> + <skip /> + <!-- no translation found for print_search_result_count_utterance:one (4484953260685964252) --> + <!-- no translation found for print_search_result_count_utterance:other (6533817036607128241) --> <string name="choose_print_service" msgid="3740309762324459694">"Prinditeenuse valimine"</string> - <!-- no translation found for print_searching_for_printers (6550424555079932867) --> + <string name="print_searching_for_printers" msgid="6550424555079932867">"Printerite otsimine"</string> + <!-- no translation found for print_no_printers (4869403323900054866) --> <skip /> <string name="printing_notification_title_template" msgid="295903957762447362">"Prinditöö <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> printimine"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Prinditöö <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> tühistamine"</string> diff --git a/packages/PrintSpooler/res/values-fa/strings.xml b/packages/PrintSpooler/res/values-fa/strings.xml index 3bc377f22d31..1846398f7565 100644 --- a/packages/PrintSpooler/res/values-fa/strings.xml +++ b/packages/PrintSpooler/res/values-fa/strings.xml @@ -29,16 +29,29 @@ <string name="print_preview" msgid="8010217796057763343">"پیشنمایش چاپ"</string> <string name="install_for_print_preview" msgid="6366303997385509332">"نصب نمایشگر PDF برای پیشنمایش"</string> <string name="printing_app_crashed" msgid="854477616686566398">"برنامه چاپ خراب شد"</string> - <string name="page_count_unknown" msgid="7412881437770983864">"در دسترس نیست"</string> + <!-- no translation found for page_count_unknown (6058852665954511124) --> + <skip /> <string name="generating_print_job" msgid="3119608742651698916">"در حال ایجاد کار چاپ"</string> <string name="save_as_pdf" msgid="5718454119847596853">"ذخیره بهعنوان PDF"</string> <string name="all_printers" msgid="5018829726861876202">"همه چاپگرها..."</string> + <!-- no translation found for print_dialog (32628687461331979) --> + <skip /> <string name="search" msgid="5421724265322228497">"جستجو"</string> <string name="all_printers_label" msgid="3178848870161526399">"همه چاپگرها"</string> <string name="add_print_service_label" msgid="5356702546188981940">"افزودن سرویس"</string> + <!-- no translation found for print_search_box_shown_utterance (7967404953901376090) --> + <skip /> + <!-- no translation found for print_search_box_hidden_utterance (5727755169343113351) --> + <skip /> + <!-- no translation found for print_add_printer (1088656468360653455) --> + <skip /> + <!-- no translation found for print_search_result_count_utterance:one (4484953260685964252) --> + <!-- no translation found for print_search_result_count_utterance:other (6533817036607128241) --> <string name="choose_print_service" msgid="3740309762324459694">"انتخاب سرویس چاپ"</string> <!-- no translation found for print_searching_for_printers (6550424555079932867) --> <skip /> + <!-- no translation found for print_no_printers (4869403323900054866) --> + <skip /> <string name="printing_notification_title_template" msgid="295903957762447362">"در حال چاپ <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"در حال لغو <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"خطای چاپگر <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-fi/strings.xml b/packages/PrintSpooler/res/values-fi/strings.xml index ff79f5c43581..d6324a6345db 100644 --- a/packages/PrintSpooler/res/values-fi/strings.xml +++ b/packages/PrintSpooler/res/values-fi/strings.xml @@ -29,15 +29,26 @@ <string name="print_preview" msgid="8010217796057763343">"Tulostuksen esikatselu"</string> <string name="install_for_print_preview" msgid="6366303997385509332">"Asenna PDF-katseluohjelma esikatselua varten"</string> <string name="printing_app_crashed" msgid="854477616686566398">"Tulostussovellus kaatui"</string> - <string name="page_count_unknown" msgid="7412881437770983864">"ei käytettävissä"</string> + <string name="page_count_unknown" msgid="6058852665954511124">"Sivut"</string> <string name="generating_print_job" msgid="3119608742651698916">"Luodaan tulostustyö"</string> <string name="save_as_pdf" msgid="5718454119847596853">"Tallenna PDF"</string> <string name="all_printers" msgid="5018829726861876202">"Kaikki tulostimet…"</string> + <!-- no translation found for print_dialog (32628687461331979) --> + <skip /> <string name="search" msgid="5421724265322228497">"Haku"</string> <string name="all_printers_label" msgid="3178848870161526399">"Kaikki tulostimet"</string> <string name="add_print_service_label" msgid="5356702546188981940">"Lisää palvelu"</string> + <!-- no translation found for print_search_box_shown_utterance (7967404953901376090) --> + <skip /> + <!-- no translation found for print_search_box_hidden_utterance (5727755169343113351) --> + <skip /> + <!-- no translation found for print_add_printer (1088656468360653455) --> + <skip /> + <!-- no translation found for print_search_result_count_utterance:one (4484953260685964252) --> + <!-- no translation found for print_search_result_count_utterance:other (6533817036607128241) --> <string name="choose_print_service" msgid="3740309762324459694">"Valitse tulostuspalvelu"</string> - <!-- no translation found for print_searching_for_printers (6550424555079932867) --> + <string name="print_searching_for_printers" msgid="6550424555079932867">"Etsitään tulostimia"</string> + <!-- no translation found for print_no_printers (4869403323900054866) --> <skip /> <string name="printing_notification_title_template" msgid="295903957762447362">"Tulostetaan <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Peruutetaan työ <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-fr-rCA/strings.xml b/packages/PrintSpooler/res/values-fr-rCA/strings.xml index aa02b631a270..06b3096933e4 100644 --- a/packages/PrintSpooler/res/values-fr-rCA/strings.xml +++ b/packages/PrintSpooler/res/values-fr-rCA/strings.xml @@ -29,16 +29,29 @@ <string name="print_preview" msgid="8010217796057763343">"Aperçu avant impression"</string> <string name="install_for_print_preview" msgid="6366303997385509332">"Installer un lecteur PDF pour voir l\'aperçu"</string> <string name="printing_app_crashed" msgid="854477616686566398">"L\'application à l\'origine de l\'impression a planté"</string> - <string name="page_count_unknown" msgid="7412881437770983864">"non offert"</string> + <!-- no translation found for page_count_unknown (6058852665954511124) --> + <skip /> <string name="generating_print_job" msgid="3119608742651698916">"Génération tâche impression…"</string> <string name="save_as_pdf" msgid="5718454119847596853">"Enregistrer en format PDF"</string> <string name="all_printers" msgid="5018829726861876202">"Toutes les imprimantes…"</string> + <!-- no translation found for print_dialog (32628687461331979) --> + <skip /> <string name="search" msgid="5421724265322228497">"Rechercher"</string> <string name="all_printers_label" msgid="3178848870161526399">"Toutes les imprimantes"</string> <string name="add_print_service_label" msgid="5356702546188981940">"Ajouter le service"</string> + <!-- no translation found for print_search_box_shown_utterance (7967404953901376090) --> + <skip /> + <!-- no translation found for print_search_box_hidden_utterance (5727755169343113351) --> + <skip /> + <!-- no translation found for print_add_printer (1088656468360653455) --> + <skip /> + <!-- no translation found for print_search_result_count_utterance:one (4484953260685964252) --> + <!-- no translation found for print_search_result_count_utterance:other (6533817036607128241) --> <string name="choose_print_service" msgid="3740309762324459694">"Sélectionner le service d\'impression"</string> <!-- no translation found for print_searching_for_printers (6550424555079932867) --> <skip /> + <!-- no translation found for print_no_printers (4869403323900054866) --> + <skip /> <string name="printing_notification_title_template" msgid="295903957762447362">"Impression de <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> en cours…"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Annulation de « <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> »…"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"Erreur impression : « <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> »"</string> diff --git a/packages/PrintSpooler/res/values-fr/strings.xml b/packages/PrintSpooler/res/values-fr/strings.xml index cc5aeef322c4..38d7cf6aa118 100644 --- a/packages/PrintSpooler/res/values-fr/strings.xml +++ b/packages/PrintSpooler/res/values-fr/strings.xml @@ -29,15 +29,26 @@ <string name="print_preview" msgid="8010217796057763343">"Aperçu avant impression"</string> <string name="install_for_print_preview" msgid="6366303997385509332">"Installer un lecteur PDF pour afficher l\'aperçu"</string> <string name="printing_app_crashed" msgid="854477616686566398">"L\'application à l\'origine de l\'impression a planté"</string> - <string name="page_count_unknown" msgid="7412881437770983864">"non disponible"</string> + <string name="page_count_unknown" msgid="6058852665954511124">"Pages"</string> <string name="generating_print_job" msgid="3119608742651698916">"Génération tâche impression…"</string> <string name="save_as_pdf" msgid="5718454119847596853">"Enregistrer au format .PDF"</string> <string name="all_printers" msgid="5018829726861876202">"Toutes les imprimantes…"</string> + <!-- no translation found for print_dialog (32628687461331979) --> + <skip /> <string name="search" msgid="5421724265322228497">"Rechercher"</string> <string name="all_printers_label" msgid="3178848870161526399">"Toutes les imprimantes"</string> <string name="add_print_service_label" msgid="5356702546188981940">"Ajouter un service"</string> + <!-- no translation found for print_search_box_shown_utterance (7967404953901376090) --> + <skip /> + <!-- no translation found for print_search_box_hidden_utterance (5727755169343113351) --> + <skip /> + <!-- no translation found for print_add_printer (1088656468360653455) --> + <skip /> + <!-- no translation found for print_search_result_count_utterance:one (4484953260685964252) --> + <!-- no translation found for print_search_result_count_utterance:other (6533817036607128241) --> <string name="choose_print_service" msgid="3740309762324459694">"Sélectionner le service d\'impression"</string> - <!-- no translation found for print_searching_for_printers (6550424555079932867) --> + <string name="print_searching_for_printers" msgid="6550424555079932867">"Recherche d\'imprimantes en cours"</string> + <!-- no translation found for print_no_printers (4869403323900054866) --> <skip /> <string name="printing_notification_title_template" msgid="295903957762447362">"Impression de \"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>\" en cours…"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Annulation de \"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>\" en cours…"</string> diff --git a/packages/PrintSpooler/res/values-hi/strings.xml b/packages/PrintSpooler/res/values-hi/strings.xml index a80177ff54e4..36c8039fb366 100644 --- a/packages/PrintSpooler/res/values-hi/strings.xml +++ b/packages/PrintSpooler/res/values-hi/strings.xml @@ -29,15 +29,26 @@ <string name="print_preview" msgid="8010217796057763343">"प्रिंट पूर्वावलोकन"</string> <string name="install_for_print_preview" msgid="6366303997385509332">"पूर्वावलोकन के लिए PDF व्यूअर इंस्टॉल करें"</string> <string name="printing_app_crashed" msgid="854477616686566398">"प्रिंटिंग एप्लिकेशन क्रैश हो गया"</string> - <string name="page_count_unknown" msgid="7412881437770983864">"अनुपलब्ध"</string> + <string name="page_count_unknown" msgid="6058852665954511124">"पृष्ठ"</string> <string name="generating_print_job" msgid="3119608742651698916">"प्रिंट कार्य जनरेट हो रहा है"</string> <string name="save_as_pdf" msgid="5718454119847596853">"PDF के रूप में सहेजें"</string> <string name="all_printers" msgid="5018829726861876202">"सभी प्रिंटर..."</string> + <!-- no translation found for print_dialog (32628687461331979) --> + <skip /> <string name="search" msgid="5421724265322228497">"खोजें"</string> <string name="all_printers_label" msgid="3178848870161526399">"सभी प्रिंटर"</string> <string name="add_print_service_label" msgid="5356702546188981940">"सेवा जोड़ें"</string> + <!-- no translation found for print_search_box_shown_utterance (7967404953901376090) --> + <skip /> + <!-- no translation found for print_search_box_hidden_utterance (5727755169343113351) --> + <skip /> + <!-- no translation found for print_add_printer (1088656468360653455) --> + <skip /> + <!-- no translation found for print_search_result_count_utterance:one (4484953260685964252) --> + <!-- no translation found for print_search_result_count_utterance:other (6533817036607128241) --> <string name="choose_print_service" msgid="3740309762324459694">"प्रिंट सेवा चुनें"</string> - <!-- no translation found for print_searching_for_printers (6550424555079932867) --> + <string name="print_searching_for_printers" msgid="6550424555079932867">"प्रिंटर खोज रहा है"</string> + <!-- no translation found for print_no_printers (4869403323900054866) --> <skip /> <string name="printing_notification_title_template" msgid="295903957762447362">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> प्रिंट हो रहा है"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> रद्द हो रहा है"</string> diff --git a/packages/PrintSpooler/res/values-hr/strings.xml b/packages/PrintSpooler/res/values-hr/strings.xml index 0aa184adb63d..ff22dfba3039 100644 --- a/packages/PrintSpooler/res/values-hr/strings.xml +++ b/packages/PrintSpooler/res/values-hr/strings.xml @@ -29,16 +29,29 @@ <string name="print_preview" msgid="8010217796057763343">"Pregled ispisa"</string> <string name="install_for_print_preview" msgid="6366303997385509332">"Instaliraj PDF preglednik za pregled"</string> <string name="printing_app_crashed" msgid="854477616686566398">"Srušila se aplikacija za ispis"</string> - <string name="page_count_unknown" msgid="7412881437770983864">"nedostupno"</string> + <!-- no translation found for page_count_unknown (6058852665954511124) --> + <skip /> <string name="generating_print_job" msgid="3119608742651698916">"Generiranje zadatka ispisa"</string> <string name="save_as_pdf" msgid="5718454119847596853">"Spremi kao PDF"</string> <string name="all_printers" msgid="5018829726861876202">"Svi pisači…"</string> + <!-- no translation found for print_dialog (32628687461331979) --> + <skip /> <string name="search" msgid="5421724265322228497">"Pretraživanje"</string> <string name="all_printers_label" msgid="3178848870161526399">"Svi pisači"</string> <string name="add_print_service_label" msgid="5356702546188981940">"Dodaj uslugu"</string> + <!-- no translation found for print_search_box_shown_utterance (7967404953901376090) --> + <skip /> + <!-- no translation found for print_search_box_hidden_utterance (5727755169343113351) --> + <skip /> + <!-- no translation found for print_add_printer (1088656468360653455) --> + <skip /> + <!-- no translation found for print_search_result_count_utterance:one (4484953260685964252) --> + <!-- no translation found for print_search_result_count_utterance:other (6533817036607128241) --> <string name="choose_print_service" msgid="3740309762324459694">"Odaberite uslugu ispisa"</string> <!-- no translation found for print_searching_for_printers (6550424555079932867) --> <skip /> + <!-- no translation found for print_no_printers (4869403323900054866) --> + <skip /> <string name="printing_notification_title_template" msgid="295903957762447362">"Ispisivanje <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Otkazivanje zadatka <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"Pogreška pisača <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-hu/strings.xml b/packages/PrintSpooler/res/values-hu/strings.xml index d7c7d3345b2a..5dcedd871372 100644 --- a/packages/PrintSpooler/res/values-hu/strings.xml +++ b/packages/PrintSpooler/res/values-hu/strings.xml @@ -29,15 +29,26 @@ <string name="print_preview" msgid="8010217796057763343">"Előnézet nyomtatása"</string> <string name="install_for_print_preview" msgid="6366303997385509332">"Az előnézethez telepítse a PDF-megtekintőt."</string> <string name="printing_app_crashed" msgid="854477616686566398">"A nyomtatási alkalmazás összeomlott."</string> - <string name="page_count_unknown" msgid="7412881437770983864">"nem érhető el"</string> + <string name="page_count_unknown" msgid="6058852665954511124">"Oldalak"</string> <string name="generating_print_job" msgid="3119608742651698916">"Nyomtatási feladat létrehozása"</string> <string name="save_as_pdf" msgid="5718454119847596853">"Mentés PDF-ként"</string> <string name="all_printers" msgid="5018829726861876202">"Az összes nyomtató…"</string> + <!-- no translation found for print_dialog (32628687461331979) --> + <skip /> <string name="search" msgid="5421724265322228497">"Keresés"</string> <string name="all_printers_label" msgid="3178848870161526399">"Az összes nyomtató"</string> <string name="add_print_service_label" msgid="5356702546188981940">"Szolgáltatás hozzáadása"</string> + <!-- no translation found for print_search_box_shown_utterance (7967404953901376090) --> + <skip /> + <!-- no translation found for print_search_box_hidden_utterance (5727755169343113351) --> + <skip /> + <!-- no translation found for print_add_printer (1088656468360653455) --> + <skip /> + <!-- no translation found for print_search_result_count_utterance:one (4484953260685964252) --> + <!-- no translation found for print_search_result_count_utterance:other (6533817036607128241) --> <string name="choose_print_service" msgid="3740309762324459694">"Nyomtatási szolgáltatás kiválasztása"</string> - <!-- no translation found for print_searching_for_printers (6550424555079932867) --> + <string name="print_searching_for_printers" msgid="6550424555079932867">"Nyomtatók keresése"</string> + <!-- no translation found for print_no_printers (4869403323900054866) --> <skip /> <string name="printing_notification_title_template" msgid="295903957762447362">"A(z) <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> nyomtatása"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"A(z) <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> törlése"</string> diff --git a/packages/PrintSpooler/res/values-hy-rAM/strings.xml b/packages/PrintSpooler/res/values-hy-rAM/strings.xml index 3575f6faaa8e..8e547f88e284 100644 --- a/packages/PrintSpooler/res/values-hy-rAM/strings.xml +++ b/packages/PrintSpooler/res/values-hy-rAM/strings.xml @@ -29,15 +29,26 @@ <string name="print_preview" msgid="8010217796057763343">"Տպելու նախադիտում"</string> <string name="install_for_print_preview" msgid="6366303997385509332">"Նախադիտման համար տեղադրեք PDF դիտարկիչ"</string> <string name="printing_app_crashed" msgid="854477616686566398">"Տպելու ծրագիրը վթարի է ենթարկվել"</string> - <string name="page_count_unknown" msgid="7412881437770983864">"անհասանելի է"</string> + <string name="page_count_unknown" msgid="6058852665954511124">"Էջեր"</string> <string name="generating_print_job" msgid="3119608742651698916">"Ձևավորվում է տպելու աշխատանքը"</string> <string name="save_as_pdf" msgid="5718454119847596853">"Պահել որպես PDF"</string> <string name="all_printers" msgid="5018829726861876202">"Բոլոր տպիչները..."</string> + <!-- no translation found for print_dialog (32628687461331979) --> + <skip /> <string name="search" msgid="5421724265322228497">"Որոնել"</string> <string name="all_printers_label" msgid="3178848870161526399">"Բոլոր տպիչները"</string> <string name="add_print_service_label" msgid="5356702546188981940">"Ավելացնել ծառայություն"</string> + <!-- no translation found for print_search_box_shown_utterance (7967404953901376090) --> + <skip /> + <!-- no translation found for print_search_box_hidden_utterance (5727755169343113351) --> + <skip /> + <!-- no translation found for print_add_printer (1088656468360653455) --> + <skip /> + <!-- no translation found for print_search_result_count_utterance:one (4484953260685964252) --> + <!-- no translation found for print_search_result_count_utterance:other (6533817036607128241) --> <string name="choose_print_service" msgid="3740309762324459694">"Ընտրեք տպելու ծառայությունը"</string> - <!-- no translation found for print_searching_for_printers (6550424555079932867) --> + <string name="print_searching_for_printers" msgid="6550424555079932867">"Տպիչների որոնում"</string> + <!-- no translation found for print_no_printers (4869403323900054866) --> <skip /> <string name="printing_notification_title_template" msgid="295903957762447362">"Տպվում է՝ <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>-ը չեղարկվում է"</string> diff --git a/packages/PrintSpooler/res/values-in/strings.xml b/packages/PrintSpooler/res/values-in/strings.xml index 6bda2b790396..507f09efa233 100644 --- a/packages/PrintSpooler/res/values-in/strings.xml +++ b/packages/PrintSpooler/res/values-in/strings.xml @@ -29,15 +29,26 @@ <string name="print_preview" msgid="8010217796057763343">"Pratinjau cetak"</string> <string name="install_for_print_preview" msgid="6366303997385509332">"Pasang penampil PDF untuk pratinjau"</string> <string name="printing_app_crashed" msgid="854477616686566398">"Aplikasi pencetakan mogok"</string> - <string name="page_count_unknown" msgid="7412881437770983864">"tidak tersedia"</string> + <string name="page_count_unknown" msgid="6058852665954511124">"Laman"</string> <string name="generating_print_job" msgid="3119608742651698916">"Membuat tugas pencetakan"</string> <string name="save_as_pdf" msgid="5718454119847596853">"Simpan sebagai PDF"</string> <string name="all_printers" msgid="5018829726861876202">"Semua printer…"</string> + <!-- no translation found for print_dialog (32628687461331979) --> + <skip /> <string name="search" msgid="5421724265322228497">"Cari"</string> <string name="all_printers_label" msgid="3178848870161526399">"Semua printer"</string> <string name="add_print_service_label" msgid="5356702546188981940">"Tambahkan layanan"</string> + <!-- no translation found for print_search_box_shown_utterance (7967404953901376090) --> + <skip /> + <!-- no translation found for print_search_box_hidden_utterance (5727755169343113351) --> + <skip /> + <!-- no translation found for print_add_printer (1088656468360653455) --> + <skip /> + <!-- no translation found for print_search_result_count_utterance:one (4484953260685964252) --> + <!-- no translation found for print_search_result_count_utterance:other (6533817036607128241) --> <string name="choose_print_service" msgid="3740309762324459694">"Pilih layanan cetak"</string> - <!-- no translation found for print_searching_for_printers (6550424555079932867) --> + <string name="print_searching_for_printers" msgid="6550424555079932867">"Mencari printer"</string> + <!-- no translation found for print_no_printers (4869403323900054866) --> <skip /> <string name="printing_notification_title_template" msgid="295903957762447362">"Mencetak <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Membatalkan <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-it/strings.xml b/packages/PrintSpooler/res/values-it/strings.xml index 71667dddd1a6..4bb7c5b144c6 100644 --- a/packages/PrintSpooler/res/values-it/strings.xml +++ b/packages/PrintSpooler/res/values-it/strings.xml @@ -29,15 +29,26 @@ <string name="print_preview" msgid="8010217796057763343">"Anteprima di stampa"</string> <string name="install_for_print_preview" msgid="6366303997385509332">"Installa visualizzatore PDF per anteprima"</string> <string name="printing_app_crashed" msgid="854477616686566398">"Arresto anomalo dell\'app di stampa"</string> - <string name="page_count_unknown" msgid="7412881437770983864">"non disponibile"</string> + <string name="page_count_unknown" msgid="6058852665954511124">"Pagine"</string> <string name="generating_print_job" msgid="3119608742651698916">"Generazione processo di stampa"</string> <string name="save_as_pdf" msgid="5718454119847596853">"Salva in PDF"</string> <string name="all_printers" msgid="5018829726861876202">"Tutte le stampanti…"</string> + <!-- no translation found for print_dialog (32628687461331979) --> + <skip /> <string name="search" msgid="5421724265322228497">"Cerca"</string> <string name="all_printers_label" msgid="3178848870161526399">"Tutte le stampanti"</string> <string name="add_print_service_label" msgid="5356702546188981940">"Aggiungi servizio"</string> + <!-- no translation found for print_search_box_shown_utterance (7967404953901376090) --> + <skip /> + <!-- no translation found for print_search_box_hidden_utterance (5727755169343113351) --> + <skip /> + <!-- no translation found for print_add_printer (1088656468360653455) --> + <skip /> + <!-- no translation found for print_search_result_count_utterance:one (4484953260685964252) --> + <!-- no translation found for print_search_result_count_utterance:other (6533817036607128241) --> <string name="choose_print_service" msgid="3740309762324459694">"Scegli servizio di stampa"</string> - <!-- no translation found for print_searching_for_printers (6550424555079932867) --> + <string name="print_searching_for_printers" msgid="6550424555079932867">"Ricerca di stampanti"</string> + <!-- no translation found for print_no_printers (4869403323900054866) --> <skip /> <string name="printing_notification_title_template" msgid="295903957762447362">"Stampa di <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Annullamento di <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-iw/strings.xml b/packages/PrintSpooler/res/values-iw/strings.xml index 337a4a340f15..75213396ef55 100644 --- a/packages/PrintSpooler/res/values-iw/strings.xml +++ b/packages/PrintSpooler/res/values-iw/strings.xml @@ -29,15 +29,26 @@ <string name="print_preview" msgid="8010217796057763343">"תצוגה מקדימה של הדפסה"</string> <string name="install_for_print_preview" msgid="6366303997385509332">"התקן מציג PDF ליצירת תצוגה מקדימה"</string> <string name="printing_app_crashed" msgid="854477616686566398">"אפליקציית ההדפסה קרסה"</string> - <string name="page_count_unknown" msgid="7412881437770983864">"לא זמין"</string> + <string name="page_count_unknown" msgid="6058852665954511124">"עמודים"</string> <string name="generating_print_job" msgid="3119608742651698916">"יוצר עבודת הדפסה"</string> <string name="save_as_pdf" msgid="5718454119847596853">"שמור כ-PDF"</string> <string name="all_printers" msgid="5018829726861876202">"כל המדפסות…"</string> + <!-- no translation found for print_dialog (32628687461331979) --> + <skip /> <string name="search" msgid="5421724265322228497">"חפש"</string> <string name="all_printers_label" msgid="3178848870161526399">"כל המדפסות"</string> <string name="add_print_service_label" msgid="5356702546188981940">"הוסף שירות"</string> + <!-- no translation found for print_search_box_shown_utterance (7967404953901376090) --> + <skip /> + <!-- no translation found for print_search_box_hidden_utterance (5727755169343113351) --> + <skip /> + <!-- no translation found for print_add_printer (1088656468360653455) --> + <skip /> + <!-- no translation found for print_search_result_count_utterance:one (4484953260685964252) --> + <!-- no translation found for print_search_result_count_utterance:other (6533817036607128241) --> <string name="choose_print_service" msgid="3740309762324459694">"בחר שירות הדפסה"</string> - <!-- no translation found for print_searching_for_printers (6550424555079932867) --> + <string name="print_searching_for_printers" msgid="6550424555079932867">"מחפש מדפסות"</string> + <!-- no translation found for print_no_printers (4869403323900054866) --> <skip /> <string name="printing_notification_title_template" msgid="295903957762447362">"מדפיס את <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"מבטל את <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-ja/arrays.xml b/packages/PrintSpooler/res/values-ja/arrays.xml deleted file mode 100644 index 57088c84296e..000000000000 --- a/packages/PrintSpooler/res/values-ja/arrays.xml +++ /dev/null @@ -1,42 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- 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. ---> -<resources> - - <string-array name="pdf_printer_media_sizes" translatable="false"> - <item>JIS_B10</item> - <item>JIS_B9</item> - <item>JIS_B8</item> - <item>JIS_B7</item> - <item>JIS_b6</item> - <item>JIS_b5</item> - <item>JIS_b4</item> - <item>JIS_b3</item> - <item>JIS_b2</item> - <item>JIS_b1</item> - <item>JIS_b0</item> - <item>JIS_EXEC</item> - <item>JPN_CHOU4</item> - <item>JPN_CHOU3</item> - <item>JPN_CHOU2</item> - <item>JPN_HAGAKI</item> - <item>JPN_OUFUKU</item> - <item>JPN_KAHU</item> - <item>JPN_KAKU2</item> - <item>JPN_YOU4</item> - - </string-array> - -</resources> diff --git a/packages/PrintSpooler/res/values-ja/strings.xml b/packages/PrintSpooler/res/values-ja/strings.xml index bf281342b446..755604973920 100644 --- a/packages/PrintSpooler/res/values-ja/strings.xml +++ b/packages/PrintSpooler/res/values-ja/strings.xml @@ -29,15 +29,26 @@ <string name="print_preview" msgid="8010217796057763343">"印刷プレビュー"</string> <string name="install_for_print_preview" msgid="6366303997385509332">"プレビュー用PDFビューアをインストール"</string> <string name="printing_app_crashed" msgid="854477616686566398">"印刷アプリでの障害発生"</string> - <string name="page_count_unknown" msgid="7412881437770983864">"不明"</string> + <string name="page_count_unknown" msgid="6058852665954511124">"ページ数"</string> <string name="generating_print_job" msgid="3119608742651698916">"印刷ジョブを生成しています"</string> <string name="save_as_pdf" msgid="5718454119847596853">"PDF形式で保存"</string> <string name="all_printers" msgid="5018829726861876202">"すべてのプリンタ…"</string> + <!-- no translation found for print_dialog (32628687461331979) --> + <skip /> <string name="search" msgid="5421724265322228497">"検索"</string> <string name="all_printers_label" msgid="3178848870161526399">"すべてのプリンタ"</string> <string name="add_print_service_label" msgid="5356702546188981940">"サービスを追加"</string> + <!-- no translation found for print_search_box_shown_utterance (7967404953901376090) --> + <skip /> + <!-- no translation found for print_search_box_hidden_utterance (5727755169343113351) --> + <skip /> + <!-- no translation found for print_add_printer (1088656468360653455) --> + <skip /> + <!-- no translation found for print_search_result_count_utterance:one (4484953260685964252) --> + <!-- no translation found for print_search_result_count_utterance:other (6533817036607128241) --> <string name="choose_print_service" msgid="3740309762324459694">"印刷サービスの選択"</string> - <!-- no translation found for print_searching_for_printers (6550424555079932867) --> + <string name="print_searching_for_printers" msgid="6550424555079932867">"プリンタの検索中"</string> + <!-- no translation found for print_no_printers (4869403323900054866) --> <skip /> <string name="printing_notification_title_template" msgid="295903957762447362">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>を印刷しています"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>をキャンセルしています"</string> diff --git a/packages/PrintSpooler/res/values-ka-rGE/strings.xml b/packages/PrintSpooler/res/values-ka-rGE/strings.xml index 93d36e00a8d7..25abd071019e 100644 --- a/packages/PrintSpooler/res/values-ka-rGE/strings.xml +++ b/packages/PrintSpooler/res/values-ka-rGE/strings.xml @@ -29,16 +29,29 @@ <string name="print_preview" msgid="8010217796057763343">"ნახვა ამობეჭდვამდე"</string> <string name="install_for_print_preview" msgid="6366303997385509332">"გადახედვისთვის დააყენეთ PDF მნახველი"</string> <string name="printing_app_crashed" msgid="854477616686566398">"ბეჭდვის აპი ავარიულად გაითიშა"</string> - <string name="page_count_unknown" msgid="7412881437770983864">"მიუწვდომელი"</string> + <!-- no translation found for page_count_unknown (6058852665954511124) --> + <skip /> <string name="generating_print_job" msgid="3119608742651698916">"მიმდინარეობის ბეჭდვის დავალების შექმნა"</string> <string name="save_as_pdf" msgid="5718454119847596853">"PDF-ად შენახვა"</string> <string name="all_printers" msgid="5018829726861876202">"ყველა პრინტერი…"</string> + <!-- no translation found for print_dialog (32628687461331979) --> + <skip /> <string name="search" msgid="5421724265322228497">"ძიება"</string> <string name="all_printers_label" msgid="3178848870161526399">"ყველა პრინტერი"</string> <string name="add_print_service_label" msgid="5356702546188981940">"სერვისის დამატება"</string> + <!-- no translation found for print_search_box_shown_utterance (7967404953901376090) --> + <skip /> + <!-- no translation found for print_search_box_hidden_utterance (5727755169343113351) --> + <skip /> + <!-- no translation found for print_add_printer (1088656468360653455) --> + <skip /> + <!-- no translation found for print_search_result_count_utterance:one (4484953260685964252) --> + <!-- no translation found for print_search_result_count_utterance:other (6533817036607128241) --> <string name="choose_print_service" msgid="3740309762324459694">"აირჩიეთ ბეჭდვის სერვისი"</string> <!-- no translation found for print_searching_for_printers (6550424555079932867) --> <skip /> + <!-- no translation found for print_no_printers (4869403323900054866) --> + <skip /> <string name="printing_notification_title_template" msgid="295903957762447362">"იბეჭდება <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"მიმდინარეობს <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>-ის გაუქმება"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"ბეჭდვის შეცდომა <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-km-rKH/strings.xml b/packages/PrintSpooler/res/values-km-rKH/strings.xml index 805ddf928b5c..9125e282af07 100644 --- a/packages/PrintSpooler/res/values-km-rKH/strings.xml +++ b/packages/PrintSpooler/res/values-km-rKH/strings.xml @@ -29,15 +29,26 @@ <string name="print_preview" msgid="8010217796057763343">"មើលមុនបោះពុម្ព"</string> <string name="install_for_print_preview" msgid="6366303997385509332">"ដំឡើងកម្មវិធីមើល PDF សម្រាប់ការមើលជាមុន"</string> <string name="printing_app_crashed" msgid="854477616686566398">"កម្មវិធីបោះពុម្ពគាំង"</string> - <string name="page_count_unknown" msgid="7412881437770983864">"មិនមាន"</string> + <string name="page_count_unknown" msgid="6058852665954511124">"ទំព័រ"</string> <string name="generating_print_job" msgid="3119608742651698916">"បង្កើតការងារបោះពុម្ព"</string> <string name="save_as_pdf" msgid="5718454119847596853">"រក្សាទុកជា PDF"</string> <string name="all_printers" msgid="5018829726861876202">"ម៉ាស៊ីនបោះពុម្ពទាំងអស់ ..."</string> + <!-- no translation found for print_dialog (32628687461331979) --> + <skip /> <string name="search" msgid="5421724265322228497">"ស្វែងរក"</string> <string name="all_printers_label" msgid="3178848870161526399">"ម៉ាស៊ីនបោះពុម្ពទាំងអស់"</string> <string name="add_print_service_label" msgid="5356702546188981940">"បន្ថែមសេវាកម្ម"</string> + <!-- no translation found for print_search_box_shown_utterance (7967404953901376090) --> + <skip /> + <!-- no translation found for print_search_box_hidden_utterance (5727755169343113351) --> + <skip /> + <!-- no translation found for print_add_printer (1088656468360653455) --> + <skip /> + <!-- no translation found for print_search_result_count_utterance:one (4484953260685964252) --> + <!-- no translation found for print_search_result_count_utterance:other (6533817036607128241) --> <string name="choose_print_service" msgid="3740309762324459694">"ជ្រើសសេវាបោះពុម្ព"</string> - <!-- no translation found for print_searching_for_printers (6550424555079932867) --> + <string name="print_searching_for_printers" msgid="6550424555079932867">"ស្វែងរកម៉ាស៊ីនបោះពុម្ព"</string> + <!-- no translation found for print_no_printers (4869403323900054866) --> <skip /> <string name="printing_notification_title_template" msgid="295903957762447362">"កំពុងបោះពុម្ព <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"ការបោះបង់ <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-ko/strings.xml b/packages/PrintSpooler/res/values-ko/strings.xml index 16bfbbbd6890..0aef672efe0d 100644 --- a/packages/PrintSpooler/res/values-ko/strings.xml +++ b/packages/PrintSpooler/res/values-ko/strings.xml @@ -29,15 +29,26 @@ <string name="print_preview" msgid="8010217796057763343">"인쇄 미리보기"</string> <string name="install_for_print_preview" msgid="6366303997385509332">"미리보기용 PDF 뷰어 설치"</string> <string name="printing_app_crashed" msgid="854477616686566398">"인쇄 앱에 오류 발생"</string> - <string name="page_count_unknown" msgid="7412881437770983864">"사용할 수 없음"</string> + <string name="page_count_unknown" msgid="6058852665954511124">"페이지"</string> <string name="generating_print_job" msgid="3119608742651698916">"인쇄 작업 생성 중"</string> <string name="save_as_pdf" msgid="5718454119847596853">"PDF로 저장"</string> <string name="all_printers" msgid="5018829726861876202">"모든 프린터…"</string> + <!-- no translation found for print_dialog (32628687461331979) --> + <skip /> <string name="search" msgid="5421724265322228497">"검색"</string> <string name="all_printers_label" msgid="3178848870161526399">"모든 프린터"</string> <string name="add_print_service_label" msgid="5356702546188981940">"서비스 추가"</string> + <!-- no translation found for print_search_box_shown_utterance (7967404953901376090) --> + <skip /> + <!-- no translation found for print_search_box_hidden_utterance (5727755169343113351) --> + <skip /> + <!-- no translation found for print_add_printer (1088656468360653455) --> + <skip /> + <!-- no translation found for print_search_result_count_utterance:one (4484953260685964252) --> + <!-- no translation found for print_search_result_count_utterance:other (6533817036607128241) --> <string name="choose_print_service" msgid="3740309762324459694">"인쇄 서비스 선택"</string> - <!-- no translation found for print_searching_for_printers (6550424555079932867) --> + <string name="print_searching_for_printers" msgid="6550424555079932867">"프린터 검색 중"</string> + <!-- no translation found for print_no_printers (4869403323900054866) --> <skip /> <string name="printing_notification_title_template" msgid="295903957762447362">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> 인쇄 중"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> 취소 중"</string> diff --git a/packages/PrintSpooler/res/values-lo-rLA/strings.xml b/packages/PrintSpooler/res/values-lo-rLA/strings.xml index be81102e479c..cbbe9b6e8a2e 100644 --- a/packages/PrintSpooler/res/values-lo-rLA/strings.xml +++ b/packages/PrintSpooler/res/values-lo-rLA/strings.xml @@ -29,15 +29,26 @@ <string name="print_preview" msgid="8010217796057763343">"ເບິ່ງກ່ອນພິມ"</string> <string name="install_for_print_preview" msgid="6366303997385509332">"ຕິດຕັ້ງໂປຼແກຼມເບິ່ງ PDF ເພື່ອເບິ່ງຕົວຢ່າງ"</string> <string name="printing_app_crashed" msgid="854477616686566398">"ແອັບຯພິມລົ້ມເຫລວ"</string> - <string name="page_count_unknown" msgid="7412881437770983864">"ບໍ່ມີຂໍ້ມູນ"</string> + <string name="page_count_unknown" msgid="6058852665954511124">"ໜ້າ"</string> <string name="generating_print_job" msgid="3119608742651698916">"ກຳລັງສ້າງວຽກພິມ"</string> <string name="save_as_pdf" msgid="5718454119847596853">"ບັນທຶກເປັນ PDF"</string> <string name="all_printers" msgid="5018829726861876202">"ທຸກເຄື່ອງພິມ..."</string> + <!-- no translation found for print_dialog (32628687461331979) --> + <skip /> <string name="search" msgid="5421724265322228497">"ຊອກຫາ"</string> <string name="all_printers_label" msgid="3178848870161526399">"ທຸກເຄື່ອງພິມ"</string> <string name="add_print_service_label" msgid="5356702546188981940">"ເພີ່ມບໍລິການ"</string> + <!-- no translation found for print_search_box_shown_utterance (7967404953901376090) --> + <skip /> + <!-- no translation found for print_search_box_hidden_utterance (5727755169343113351) --> + <skip /> + <!-- no translation found for print_add_printer (1088656468360653455) --> + <skip /> + <!-- no translation found for print_search_result_count_utterance:one (4484953260685964252) --> + <!-- no translation found for print_search_result_count_utterance:other (6533817036607128241) --> <string name="choose_print_service" msgid="3740309762324459694">"ເລືອກບໍລິການການພິມ"</string> - <!-- no translation found for print_searching_for_printers (6550424555079932867) --> + <string name="print_searching_for_printers" msgid="6550424555079932867">"ກຳລັງຊອກຫາເຄື່ອງພິມ"</string> + <!-- no translation found for print_no_printers (4869403323900054866) --> <skip /> <string name="printing_notification_title_template" msgid="295903957762447362">"ກຳລັງພິມ <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"ກຳລັງຍົກເລີກ <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-lt/strings.xml b/packages/PrintSpooler/res/values-lt/strings.xml index 06d79ee6c0bc..624854fde6b7 100644 --- a/packages/PrintSpooler/res/values-lt/strings.xml +++ b/packages/PrintSpooler/res/values-lt/strings.xml @@ -29,16 +29,29 @@ <string name="print_preview" msgid="8010217796057763343">"Spaudinio peržiūra"</string> <string name="install_for_print_preview" msgid="6366303997385509332">"Įdiegti PDF peržiūros priemonę"</string> <string name="printing_app_crashed" msgid="854477616686566398">"Spausdinimo programa užstrigo"</string> - <string name="page_count_unknown" msgid="7412881437770983864">"nežinoma"</string> + <!-- no translation found for page_count_unknown (6058852665954511124) --> + <skip /> <string name="generating_print_job" msgid="3119608742651698916">"Generuojama spausd. užduotis"</string> <string name="save_as_pdf" msgid="5718454119847596853">"Išsaugoti kaip PDF"</string> <string name="all_printers" msgid="5018829726861876202">"Visi spausdintuvai…"</string> + <!-- no translation found for print_dialog (32628687461331979) --> + <skip /> <string name="search" msgid="5421724265322228497">"Ieškoti"</string> <string name="all_printers_label" msgid="3178848870161526399">"Visi spausdintuvai"</string> <string name="add_print_service_label" msgid="5356702546188981940">"Pridėti paslaugą"</string> + <!-- no translation found for print_search_box_shown_utterance (7967404953901376090) --> + <skip /> + <!-- no translation found for print_search_box_hidden_utterance (5727755169343113351) --> + <skip /> + <!-- no translation found for print_add_printer (1088656468360653455) --> + <skip /> + <!-- no translation found for print_search_result_count_utterance:one (4484953260685964252) --> + <!-- no translation found for print_search_result_count_utterance:other (6533817036607128241) --> <string name="choose_print_service" msgid="3740309762324459694">"Pasirinkite spausdinimo paslaugą"</string> <!-- no translation found for print_searching_for_printers (6550424555079932867) --> <skip /> + <!-- no translation found for print_no_printers (4869403323900054866) --> + <skip /> <string name="printing_notification_title_template" msgid="295903957762447362">"Spausdinama: <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Atšaukiama: <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"Spausdintuvo klaida: <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-lv/strings.xml b/packages/PrintSpooler/res/values-lv/strings.xml index b5ef76ef8127..a7066fc550d9 100644 --- a/packages/PrintSpooler/res/values-lv/strings.xml +++ b/packages/PrintSpooler/res/values-lv/strings.xml @@ -29,16 +29,29 @@ <string name="print_preview" msgid="8010217796057763343">"Drukas priekšskatījums"</string> <string name="install_for_print_preview" msgid="6366303997385509332">"Instalēt PDF skatītāju priekšskatīšanai"</string> <string name="printing_app_crashed" msgid="854477616686566398">"Drukas lietotne avarēja"</string> - <string name="page_count_unknown" msgid="7412881437770983864">"Nav zināms"</string> + <!-- no translation found for page_count_unknown (6058852665954511124) --> + <skip /> <string name="generating_print_job" msgid="3119608742651698916">"Ģenerē drukas darbu…"</string> <string name="save_as_pdf" msgid="5718454119847596853">"Saglabāt kā PDF"</string> <string name="all_printers" msgid="5018829726861876202">"Visi printeri…"</string> + <!-- no translation found for print_dialog (32628687461331979) --> + <skip /> <string name="search" msgid="5421724265322228497">"Meklēt"</string> <string name="all_printers_label" msgid="3178848870161526399">"Visi printeri"</string> <string name="add_print_service_label" msgid="5356702546188981940">"Pievienot pakalpojumu"</string> + <!-- no translation found for print_search_box_shown_utterance (7967404953901376090) --> + <skip /> + <!-- no translation found for print_search_box_hidden_utterance (5727755169343113351) --> + <skip /> + <!-- no translation found for print_add_printer (1088656468360653455) --> + <skip /> + <!-- no translation found for print_search_result_count_utterance:one (4484953260685964252) --> + <!-- no translation found for print_search_result_count_utterance:other (6533817036607128241) --> <string name="choose_print_service" msgid="3740309762324459694">"Izvēlieties drukāšanas pakalpojumu"</string> <!-- no translation found for print_searching_for_printers (6550424555079932867) --> <skip /> + <!-- no translation found for print_no_printers (4869403323900054866) --> + <skip /> <string name="printing_notification_title_template" msgid="295903957762447362">"Notiek darba <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> drukāšana…"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Pārtrauc drukas darbu <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>…"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"Printera kļūda ar darbu <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-mn-rMN/strings.xml b/packages/PrintSpooler/res/values-mn-rMN/strings.xml index 5f16746cd58e..58dea51436fd 100644 --- a/packages/PrintSpooler/res/values-mn-rMN/strings.xml +++ b/packages/PrintSpooler/res/values-mn-rMN/strings.xml @@ -29,15 +29,26 @@ <string name="print_preview" msgid="8010217796057763343">"Хэвлэхээр урьдчилан харах"</string> <string name="install_for_print_preview" msgid="6366303997385509332">"Урьдчилан харахын тулд PDF харагчийг суулгах"</string> <string name="printing_app_crashed" msgid="854477616686566398">"Хэвлэгч апп гацсан"</string> - <string name="page_count_unknown" msgid="7412881437770983864">"Байхгүй"</string> + <string name="page_count_unknown" msgid="6058852665954511124">"Хуудас"</string> <string name="generating_print_job" msgid="3119608742651698916">"Хэвлэх ажил үүсгэж байна"</string> <string name="save_as_pdf" msgid="5718454119847596853">"PDF болгож хадгалах"</string> <string name="all_printers" msgid="5018829726861876202">"Бүх принтерүүд…"</string> + <!-- no translation found for print_dialog (32628687461331979) --> + <skip /> <string name="search" msgid="5421724265322228497">"Хайх"</string> <string name="all_printers_label" msgid="3178848870161526399">"Бүх принтерүүд"</string> <string name="add_print_service_label" msgid="5356702546188981940">"Үйлчилгээ нэмэх"</string> + <!-- no translation found for print_search_box_shown_utterance (7967404953901376090) --> + <skip /> + <!-- no translation found for print_search_box_hidden_utterance (5727755169343113351) --> + <skip /> + <!-- no translation found for print_add_printer (1088656468360653455) --> + <skip /> + <!-- no translation found for print_search_result_count_utterance:one (4484953260685964252) --> + <!-- no translation found for print_search_result_count_utterance:other (6533817036607128241) --> <string name="choose_print_service" msgid="3740309762324459694">"Хэвлэх үйлчилгээг сонгох"</string> - <!-- no translation found for print_searching_for_printers (6550424555079932867) --> + <string name="print_searching_for_printers" msgid="6550424555079932867">"Принтер хайж байна"</string> + <!-- no translation found for print_no_printers (4869403323900054866) --> <skip /> <string name="printing_notification_title_template" msgid="295903957762447362">"Хэвлэж байна <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Цуцлаж байна <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-ms-rMY/strings.xml b/packages/PrintSpooler/res/values-ms-rMY/strings.xml index 8893e0912da5..90fa63a0e71f 100644 --- a/packages/PrintSpooler/res/values-ms-rMY/strings.xml +++ b/packages/PrintSpooler/res/values-ms-rMY/strings.xml @@ -29,15 +29,26 @@ <string name="print_preview" msgid="8010217796057763343">"Pratonton cetak"</string> <string name="install_for_print_preview" msgid="6366303997385509332">"Pasang pemapar PDF untuk pratonton"</string> <string name="printing_app_crashed" msgid="854477616686566398">"Apl percetakan ranap"</string> - <string name="page_count_unknown" msgid="7412881437770983864">"tidak tersedia"</string> + <string name="page_count_unknown" msgid="6058852665954511124">"Halaman"</string> <string name="generating_print_job" msgid="3119608742651698916">"Menjana kerja cetak"</string> <string name="save_as_pdf" msgid="5718454119847596853">"Simpan sebagai PDF"</string> <string name="all_printers" msgid="5018829726861876202">"Semua pencetak..."</string> + <!-- no translation found for print_dialog (32628687461331979) --> + <skip /> <string name="search" msgid="5421724265322228497">"Cari"</string> <string name="all_printers_label" msgid="3178848870161526399">"Semua pencetak"</string> <string name="add_print_service_label" msgid="5356702546188981940">"Tambahkan perkhidmatan"</string> + <!-- no translation found for print_search_box_shown_utterance (7967404953901376090) --> + <skip /> + <!-- no translation found for print_search_box_hidden_utterance (5727755169343113351) --> + <skip /> + <!-- no translation found for print_add_printer (1088656468360653455) --> + <skip /> + <!-- no translation found for print_search_result_count_utterance:one (4484953260685964252) --> + <!-- no translation found for print_search_result_count_utterance:other (6533817036607128241) --> <string name="choose_print_service" msgid="3740309762324459694">"Pilih perkhidmatan cetak"</string> - <!-- no translation found for print_searching_for_printers (6550424555079932867) --> + <string name="print_searching_for_printers" msgid="6550424555079932867">"Mencari pencetak"</string> + <!-- no translation found for print_no_printers (4869403323900054866) --> <skip /> <string name="printing_notification_title_template" msgid="295903957762447362">"Mencetak <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Membatalkan <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-nb/strings.xml b/packages/PrintSpooler/res/values-nb/strings.xml index 002068c289ac..44e17acb36a9 100644 --- a/packages/PrintSpooler/res/values-nb/strings.xml +++ b/packages/PrintSpooler/res/values-nb/strings.xml @@ -29,16 +29,29 @@ <string name="print_preview" msgid="8010217796057763343">"Utskriftsforhåndsvisning"</string> <string name="install_for_print_preview" msgid="6366303997385509332">"Installer PDF-leser for forhåndsvisning"</string> <string name="printing_app_crashed" msgid="854477616686566398">"Utskriftsappen krasjet"</string> - <string name="page_count_unknown" msgid="7412881437770983864">"ikke tilgjengelig"</string> + <!-- no translation found for page_count_unknown (6058852665954511124) --> + <skip /> <string name="generating_print_job" msgid="3119608742651698916">"Genererer utskriftsjobb"</string> <string name="save_as_pdf" msgid="5718454119847596853">"Lagre som PDF"</string> <string name="all_printers" msgid="5018829726861876202">"Alle skrivere"</string> + <!-- no translation found for print_dialog (32628687461331979) --> + <skip /> <string name="search" msgid="5421724265322228497">"Søk"</string> <string name="all_printers_label" msgid="3178848870161526399">"Alle skrivere"</string> <string name="add_print_service_label" msgid="5356702546188981940">"Legg til tjeneste"</string> + <!-- no translation found for print_search_box_shown_utterance (7967404953901376090) --> + <skip /> + <!-- no translation found for print_search_box_hidden_utterance (5727755169343113351) --> + <skip /> + <!-- no translation found for print_add_printer (1088656468360653455) --> + <skip /> + <!-- no translation found for print_search_result_count_utterance:one (4484953260685964252) --> + <!-- no translation found for print_search_result_count_utterance:other (6533817036607128241) --> <string name="choose_print_service" msgid="3740309762324459694">"Velg utskriftstjeneste"</string> <!-- no translation found for print_searching_for_printers (6550424555079932867) --> <skip /> + <!-- no translation found for print_no_printers (4869403323900054866) --> + <skip /> <string name="printing_notification_title_template" msgid="295903957762447362">"Skriver ut <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Avbryter <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"Skriverfeil <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-nl/strings.xml b/packages/PrintSpooler/res/values-nl/strings.xml index f16922e661a6..9c074df6a6db 100644 --- a/packages/PrintSpooler/res/values-nl/strings.xml +++ b/packages/PrintSpooler/res/values-nl/strings.xml @@ -29,16 +29,29 @@ <string name="print_preview" msgid="8010217796057763343">"Afdrukvoorbeeld"</string> <string name="install_for_print_preview" msgid="6366303997385509332">"Pdf-viewer installeren voor voorbeeld"</string> <string name="printing_app_crashed" msgid="854477616686566398">"Afdruk-app gecrasht"</string> - <string name="page_count_unknown" msgid="7412881437770983864">"niet beschikbaar"</string> + <!-- no translation found for page_count_unknown (6058852665954511124) --> + <skip /> <string name="generating_print_job" msgid="3119608742651698916">"Afdruktaak genereren"</string> <string name="save_as_pdf" msgid="5718454119847596853">"Opslaan als pdf"</string> <string name="all_printers" msgid="5018829726861876202">"Alle printers…"</string> + <!-- no translation found for print_dialog (32628687461331979) --> + <skip /> <string name="search" msgid="5421724265322228497">"Zoeken"</string> <string name="all_printers_label" msgid="3178848870161526399">"Alle printers"</string> <string name="add_print_service_label" msgid="5356702546188981940">"Service toevoegen"</string> + <!-- no translation found for print_search_box_shown_utterance (7967404953901376090) --> + <skip /> + <!-- no translation found for print_search_box_hidden_utterance (5727755169343113351) --> + <skip /> + <!-- no translation found for print_add_printer (1088656468360653455) --> + <skip /> + <!-- no translation found for print_search_result_count_utterance:one (4484953260685964252) --> + <!-- no translation found for print_search_result_count_utterance:other (6533817036607128241) --> <string name="choose_print_service" msgid="3740309762324459694">"Afdrukservice kiezen"</string> <!-- no translation found for print_searching_for_printers (6550424555079932867) --> <skip /> + <!-- no translation found for print_no_printers (4869403323900054866) --> + <skip /> <string name="printing_notification_title_template" msgid="295903957762447362">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> afdrukken"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> annuleren"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"Printerfout <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-pl/strings.xml b/packages/PrintSpooler/res/values-pl/strings.xml index d5db22e58127..bcd57b2794a8 100644 --- a/packages/PrintSpooler/res/values-pl/strings.xml +++ b/packages/PrintSpooler/res/values-pl/strings.xml @@ -29,16 +29,29 @@ <string name="print_preview" msgid="8010217796057763343">"Podgląd wydruku"</string> <string name="install_for_print_preview" msgid="6366303997385509332">"Zainstaluj przeglądarkę PDF, by zobaczyć podgląd"</string> <string name="printing_app_crashed" msgid="854477616686566398">"Aplikacja drukująca uległa awarii"</string> - <string name="page_count_unknown" msgid="7412881437770983864">"brak informacji"</string> + <!-- no translation found for page_count_unknown (6058852665954511124) --> + <skip /> <string name="generating_print_job" msgid="3119608742651698916">"Generowanie zadania wydruku"</string> <string name="save_as_pdf" msgid="5718454119847596853">"Zapisz jako PDF"</string> <string name="all_printers" msgid="5018829726861876202">"Wszystkie drukarki…"</string> + <!-- no translation found for print_dialog (32628687461331979) --> + <skip /> <string name="search" msgid="5421724265322228497">"Szukaj"</string> <string name="all_printers_label" msgid="3178848870161526399">"Wszystkie drukarki"</string> <string name="add_print_service_label" msgid="5356702546188981940">"Dodaj usługę"</string> + <!-- no translation found for print_search_box_shown_utterance (7967404953901376090) --> + <skip /> + <!-- no translation found for print_search_box_hidden_utterance (5727755169343113351) --> + <skip /> + <!-- no translation found for print_add_printer (1088656468360653455) --> + <skip /> + <!-- no translation found for print_search_result_count_utterance:one (4484953260685964252) --> + <!-- no translation found for print_search_result_count_utterance:other (6533817036607128241) --> <string name="choose_print_service" msgid="3740309762324459694">"Wybierz usługę drukowania"</string> <!-- no translation found for print_searching_for_printers (6550424555079932867) --> <skip /> + <!-- no translation found for print_no_printers (4869403323900054866) --> + <skip /> <string name="printing_notification_title_template" msgid="295903957762447362">"Drukowanie: <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Anulowanie: <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"Błąd drukarki: <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-pt-rPT/strings.xml b/packages/PrintSpooler/res/values-pt-rPT/strings.xml index a4cb98dc4f38..bc7a67721430 100644 --- a/packages/PrintSpooler/res/values-pt-rPT/strings.xml +++ b/packages/PrintSpooler/res/values-pt-rPT/strings.xml @@ -29,16 +29,29 @@ <string name="print_preview" msgid="8010217796057763343">"Pré-visualização de impressão"</string> <string name="install_for_print_preview" msgid="6366303997385509332">"Instalar o leitor de PDF para pré-visualização"</string> <string name="printing_app_crashed" msgid="854477616686566398">"A aplicação de impressão bloqueou"</string> - <string name="page_count_unknown" msgid="7412881437770983864">"indisponível"</string> + <!-- no translation found for page_count_unknown (6058852665954511124) --> + <skip /> <string name="generating_print_job" msgid="3119608742651698916">"A gerar tarefa de impressão"</string> <string name="save_as_pdf" msgid="5718454119847596853">"Guardar como PDF"</string> <string name="all_printers" msgid="5018829726861876202">"Todas as impressoras..."</string> + <!-- no translation found for print_dialog (32628687461331979) --> + <skip /> <string name="search" msgid="5421724265322228497">"Pesquisar"</string> <string name="all_printers_label" msgid="3178848870161526399">"Todas as impressoras"</string> <string name="add_print_service_label" msgid="5356702546188981940">"Adicionar serviço"</string> + <!-- no translation found for print_search_box_shown_utterance (7967404953901376090) --> + <skip /> + <!-- no translation found for print_search_box_hidden_utterance (5727755169343113351) --> + <skip /> + <!-- no translation found for print_add_printer (1088656468360653455) --> + <skip /> + <!-- no translation found for print_search_result_count_utterance:one (4484953260685964252) --> + <!-- no translation found for print_search_result_count_utterance:other (6533817036607128241) --> <string name="choose_print_service" msgid="3740309762324459694">"Escolher o serviço de impressão"</string> <!-- no translation found for print_searching_for_printers (6550424555079932867) --> <skip /> + <!-- no translation found for print_no_printers (4869403323900054866) --> + <skip /> <string name="printing_notification_title_template" msgid="295903957762447362">"A imprimir <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"A cancelar <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"Erro da impressora <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-pt/strings.xml b/packages/PrintSpooler/res/values-pt/strings.xml index 230e827251bb..6c63502256e5 100644 --- a/packages/PrintSpooler/res/values-pt/strings.xml +++ b/packages/PrintSpooler/res/values-pt/strings.xml @@ -29,15 +29,26 @@ <string name="print_preview" msgid="8010217796057763343">"Visualização de impressão"</string> <string name="install_for_print_preview" msgid="6366303997385509332">"Instalar o visualizador de PDF"</string> <string name="printing_app_crashed" msgid="854477616686566398">"O aplicativo de impressão falhou"</string> - <string name="page_count_unknown" msgid="7412881437770983864">"indisponível"</string> + <string name="page_count_unknown" msgid="6058852665954511124">"Páginas"</string> <string name="generating_print_job" msgid="3119608742651698916">"Gerando trabalho de impressão"</string> <string name="save_as_pdf" msgid="5718454119847596853">"Salvar como PDF"</string> <string name="all_printers" msgid="5018829726861876202">"Todas as impressoras…"</string> + <!-- no translation found for print_dialog (32628687461331979) --> + <skip /> <string name="search" msgid="5421724265322228497">"Pesquisar"</string> <string name="all_printers_label" msgid="3178848870161526399">"Todas as impressoras"</string> <string name="add_print_service_label" msgid="5356702546188981940">"Adicionar serviço"</string> + <!-- no translation found for print_search_box_shown_utterance (7967404953901376090) --> + <skip /> + <!-- no translation found for print_search_box_hidden_utterance (5727755169343113351) --> + <skip /> + <!-- no translation found for print_add_printer (1088656468360653455) --> + <skip /> + <!-- no translation found for print_search_result_count_utterance:one (4484953260685964252) --> + <!-- no translation found for print_search_result_count_utterance:other (6533817036607128241) --> <string name="choose_print_service" msgid="3740309762324459694">"Selecione o serviço de impressão"</string> - <!-- no translation found for print_searching_for_printers (6550424555079932867) --> + <string name="print_searching_for_printers" msgid="6550424555079932867">"Procurando impressoras"</string> + <!-- no translation found for print_no_printers (4869403323900054866) --> <skip /> <string name="printing_notification_title_template" msgid="295903957762447362">"Imprimindo <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Cancelando <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-ro/strings.xml b/packages/PrintSpooler/res/values-ro/strings.xml index 37fd6b3ce0eb..d194d65c2456 100644 --- a/packages/PrintSpooler/res/values-ro/strings.xml +++ b/packages/PrintSpooler/res/values-ro/strings.xml @@ -29,16 +29,29 @@ <string name="print_preview" msgid="8010217796057763343">"Previzualizați printarea"</string> <string name="install_for_print_preview" msgid="6366303997385509332">"Instalați PDF viewer pentru previzualizare"</string> <string name="printing_app_crashed" msgid="854477616686566398">"Aplicația de printare s-a blocat"</string> - <string name="page_count_unknown" msgid="7412881437770983864">"indisponibil"</string> + <!-- no translation found for page_count_unknown (6058852665954511124) --> + <skip /> <string name="generating_print_job" msgid="3119608742651698916">"Se generează sarcină printare"</string> <string name="save_as_pdf" msgid="5718454119847596853">"Salvați ca PDF"</string> <string name="all_printers" msgid="5018829726861876202">"Toate imprimantele..."</string> + <!-- no translation found for print_dialog (32628687461331979) --> + <skip /> <string name="search" msgid="5421724265322228497">"Căutați"</string> <string name="all_printers_label" msgid="3178848870161526399">"Toate imprimantele"</string> <string name="add_print_service_label" msgid="5356702546188981940">"Adăugați un serviciu"</string> + <!-- no translation found for print_search_box_shown_utterance (7967404953901376090) --> + <skip /> + <!-- no translation found for print_search_box_hidden_utterance (5727755169343113351) --> + <skip /> + <!-- no translation found for print_add_printer (1088656468360653455) --> + <skip /> + <!-- no translation found for print_search_result_count_utterance:one (4484953260685964252) --> + <!-- no translation found for print_search_result_count_utterance:other (6533817036607128241) --> <string name="choose_print_service" msgid="3740309762324459694">"Alegeți serviciul de printare"</string> <!-- no translation found for print_searching_for_printers (6550424555079932867) --> <skip /> + <!-- no translation found for print_no_printers (4869403323900054866) --> + <skip /> <string name="printing_notification_title_template" msgid="295903957762447362">"Se printează <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Se anulează <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"Eroare de printare: <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-ru/strings.xml b/packages/PrintSpooler/res/values-ru/strings.xml index 0271587da8ba..bbf66fb2edf2 100644 --- a/packages/PrintSpooler/res/values-ru/strings.xml +++ b/packages/PrintSpooler/res/values-ru/strings.xml @@ -29,16 +29,29 @@ <string name="print_preview" msgid="8010217796057763343">"Предварительный просмотр"</string> <string name="install_for_print_preview" msgid="6366303997385509332">"Установить средство просмотра PDF"</string> <string name="printing_app_crashed" msgid="854477616686566398">"Сбой приложения печати"</string> - <string name="page_count_unknown" msgid="7412881437770983864">"неизвестно"</string> + <!-- no translation found for page_count_unknown (6058852665954511124) --> + <skip /> <string name="generating_print_job" msgid="3119608742651698916">"Создание задания печати…"</string> <string name="save_as_pdf" msgid="5718454119847596853">"Сохранить как PDF-файл"</string> <string name="all_printers" msgid="5018829726861876202">"Все принтеры"</string> + <!-- no translation found for print_dialog (32628687461331979) --> + <skip /> <string name="search" msgid="5421724265322228497">"Поиск"</string> <string name="all_printers_label" msgid="3178848870161526399">"Все принтеры"</string> <string name="add_print_service_label" msgid="5356702546188981940">"Добавить службу печати"</string> + <!-- no translation found for print_search_box_shown_utterance (7967404953901376090) --> + <skip /> + <!-- no translation found for print_search_box_hidden_utterance (5727755169343113351) --> + <skip /> + <!-- no translation found for print_add_printer (1088656468360653455) --> + <skip /> + <!-- no translation found for print_search_result_count_utterance:one (4484953260685964252) --> + <!-- no translation found for print_search_result_count_utterance:other (6533817036607128241) --> <string name="choose_print_service" msgid="3740309762324459694">"Выберите службу печати"</string> <!-- no translation found for print_searching_for_printers (6550424555079932867) --> <skip /> + <!-- no translation found for print_no_printers (4869403323900054866) --> + <skip /> <string name="printing_notification_title_template" msgid="295903957762447362">"Печать задания \"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>\"…"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Отмена задания <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>…"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"Ошибка задания \"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>\""</string> diff --git a/packages/PrintSpooler/res/values-sk/strings.xml b/packages/PrintSpooler/res/values-sk/strings.xml index 01e6d03039e9..81361ad881c1 100644 --- a/packages/PrintSpooler/res/values-sk/strings.xml +++ b/packages/PrintSpooler/res/values-sk/strings.xml @@ -29,16 +29,29 @@ <string name="print_preview" msgid="8010217796057763343">"Ukážka pred tlačou"</string> <string name="install_for_print_preview" msgid="6366303997385509332">"Inštalovať zobrazovač PDF na zobrazenie ukážky"</string> <string name="printing_app_crashed" msgid="854477616686566398">"Aplikácia pre tlač zlyhala"</string> - <string name="page_count_unknown" msgid="7412881437770983864">"nie je k dispozícii"</string> + <!-- no translation found for page_count_unknown (6058852665954511124) --> + <skip /> <string name="generating_print_job" msgid="3119608742651698916">"Generuje sa tlačová úloha"</string> <string name="save_as_pdf" msgid="5718454119847596853">"Uložiť ako PDF"</string> <string name="all_printers" msgid="5018829726861876202">"Všetky tlačiarne..."</string> + <!-- no translation found for print_dialog (32628687461331979) --> + <skip /> <string name="search" msgid="5421724265322228497">"VYHĽADÁVANIE"</string> <string name="all_printers_label" msgid="3178848870161526399">"Všetky tlačiarne"</string> <string name="add_print_service_label" msgid="5356702546188981940">"Pridať službu"</string> + <!-- no translation found for print_search_box_shown_utterance (7967404953901376090) --> + <skip /> + <!-- no translation found for print_search_box_hidden_utterance (5727755169343113351) --> + <skip /> + <!-- no translation found for print_add_printer (1088656468360653455) --> + <skip /> + <!-- no translation found for print_search_result_count_utterance:one (4484953260685964252) --> + <!-- no translation found for print_search_result_count_utterance:other (6533817036607128241) --> <string name="choose_print_service" msgid="3740309762324459694">"Výber tlačovej služby"</string> <!-- no translation found for print_searching_for_printers (6550424555079932867) --> <skip /> + <!-- no translation found for print_no_printers (4869403323900054866) --> + <skip /> <string name="printing_notification_title_template" msgid="295903957762447362">"Prebieha tlač úlohy <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Prebieha zrušenie úlohy <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"Chyba tlačiarne – úloha <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-sl/strings.xml b/packages/PrintSpooler/res/values-sl/strings.xml index 61f3dc0b930b..08868319f861 100644 --- a/packages/PrintSpooler/res/values-sl/strings.xml +++ b/packages/PrintSpooler/res/values-sl/strings.xml @@ -29,15 +29,26 @@ <string name="print_preview" msgid="8010217796057763343">"Predogled tiskanja"</string> <string name="install_for_print_preview" msgid="6366303997385509332">"Za predogled namestite pregledovalnik za PDF-je"</string> <string name="printing_app_crashed" msgid="854477616686566398">"Aplikacija za tiskanje se je zrušila"</string> - <string name="page_count_unknown" msgid="7412881437770983864">"ni na voljo"</string> + <string name="page_count_unknown" msgid="6058852665954511124">"Št. strani:"</string> <string name="generating_print_job" msgid="3119608742651698916">"Ustvarjanje zahteve za tisk"</string> <string name="save_as_pdf" msgid="5718454119847596853">"Shrani kot PDF"</string> <string name="all_printers" msgid="5018829726861876202">"Vsi tiskalniki …"</string> + <!-- no translation found for print_dialog (32628687461331979) --> + <skip /> <string name="search" msgid="5421724265322228497">"Iskanje"</string> <string name="all_printers_label" msgid="3178848870161526399">"Vsi tiskalniki"</string> <string name="add_print_service_label" msgid="5356702546188981940">"Dodaj storitev"</string> + <!-- no translation found for print_search_box_shown_utterance (7967404953901376090) --> + <skip /> + <!-- no translation found for print_search_box_hidden_utterance (5727755169343113351) --> + <skip /> + <!-- no translation found for print_add_printer (1088656468360653455) --> + <skip /> + <!-- no translation found for print_search_result_count_utterance:one (4484953260685964252) --> + <!-- no translation found for print_search_result_count_utterance:other (6533817036607128241) --> <string name="choose_print_service" msgid="3740309762324459694">"Izberite tiskalno storitev"</string> - <!-- no translation found for print_searching_for_printers (6550424555079932867) --> + <string name="print_searching_for_printers" msgid="6550424555079932867">"Iskanje tiskalnikov"</string> + <!-- no translation found for print_no_printers (4869403323900054866) --> <skip /> <string name="printing_notification_title_template" msgid="295903957762447362">"Tiskanje: <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Preklic: <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-sr/strings.xml b/packages/PrintSpooler/res/values-sr/strings.xml index 757871f8dbb6..93ca41fe027b 100644 --- a/packages/PrintSpooler/res/values-sr/strings.xml +++ b/packages/PrintSpooler/res/values-sr/strings.xml @@ -29,16 +29,29 @@ <string name="print_preview" msgid="8010217796057763343">"Преглед пре штампања"</string> <string name="install_for_print_preview" msgid="6366303997385509332">"Инсталирај PDF приказивач за преглед"</string> <string name="printing_app_crashed" msgid="854477616686566398">"Апликација за штампање је отказала"</string> - <string name="page_count_unknown" msgid="7412881437770983864">"недоступно"</string> + <!-- no translation found for page_count_unknown (6058852665954511124) --> + <skip /> <string name="generating_print_job" msgid="3119608742651698916">"Генерисање задатка за штампање"</string> <string name="save_as_pdf" msgid="5718454119847596853">"Сачувај као PDF"</string> <string name="all_printers" msgid="5018829726861876202">"Сви штампачи…"</string> + <!-- no translation found for print_dialog (32628687461331979) --> + <skip /> <string name="search" msgid="5421724265322228497">"Претражи"</string> <string name="all_printers_label" msgid="3178848870161526399">"Сви штампачи"</string> <string name="add_print_service_label" msgid="5356702546188981940">"Додај услугу"</string> + <!-- no translation found for print_search_box_shown_utterance (7967404953901376090) --> + <skip /> + <!-- no translation found for print_search_box_hidden_utterance (5727755169343113351) --> + <skip /> + <!-- no translation found for print_add_printer (1088656468360653455) --> + <skip /> + <!-- no translation found for print_search_result_count_utterance:one (4484953260685964252) --> + <!-- no translation found for print_search_result_count_utterance:other (6533817036607128241) --> <string name="choose_print_service" msgid="3740309762324459694">"Изаберите услугу штампања"</string> <!-- no translation found for print_searching_for_printers (6550424555079932867) --> <skip /> + <!-- no translation found for print_no_printers (4869403323900054866) --> + <skip /> <string name="printing_notification_title_template" msgid="295903957762447362">"Штампа се <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Отказује се <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"Грешка штампача <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-sv/strings.xml b/packages/PrintSpooler/res/values-sv/strings.xml index 7c2898477fe5..000f88ea4bd4 100644 --- a/packages/PrintSpooler/res/values-sv/strings.xml +++ b/packages/PrintSpooler/res/values-sv/strings.xml @@ -29,16 +29,29 @@ <string name="print_preview" msgid="8010217796057763343">"Förhandsgranskning"</string> <string name="install_for_print_preview" msgid="6366303997385509332">"Installera PDF-läsare för förhandsgranskning"</string> <string name="printing_app_crashed" msgid="854477616686566398">"Utskriftsappen kraschade"</string> - <string name="page_count_unknown" msgid="7412881437770983864">"otillgängligt"</string> + <!-- no translation found for page_count_unknown (6058852665954511124) --> + <skip /> <string name="generating_print_job" msgid="3119608742651698916">"Genererar utskriftsjobb"</string> <string name="save_as_pdf" msgid="5718454119847596853">"Spara som PDF"</string> <string name="all_printers" msgid="5018829726861876202">"Alla skrivare ..."</string> + <!-- no translation found for print_dialog (32628687461331979) --> + <skip /> <string name="search" msgid="5421724265322228497">"Sök"</string> <string name="all_printers_label" msgid="3178848870161526399">"Alla skrivare"</string> <string name="add_print_service_label" msgid="5356702546188981940">"Lägg till tjänst"</string> + <!-- no translation found for print_search_box_shown_utterance (7967404953901376090) --> + <skip /> + <!-- no translation found for print_search_box_hidden_utterance (5727755169343113351) --> + <skip /> + <!-- no translation found for print_add_printer (1088656468360653455) --> + <skip /> + <!-- no translation found for print_search_result_count_utterance:one (4484953260685964252) --> + <!-- no translation found for print_search_result_count_utterance:other (6533817036607128241) --> <string name="choose_print_service" msgid="3740309762324459694">"Välj utskriftstjänst"</string> <!-- no translation found for print_searching_for_printers (6550424555079932867) --> <skip /> + <!-- no translation found for print_no_printers (4869403323900054866) --> + <skip /> <string name="printing_notification_title_template" msgid="295903957762447362">"Skriver ut <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Avbryter <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"Skrivarfel för <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-sw/strings.xml b/packages/PrintSpooler/res/values-sw/strings.xml index 13ccf462d5d9..7e655eed525b 100644 --- a/packages/PrintSpooler/res/values-sw/strings.xml +++ b/packages/PrintSpooler/res/values-sw/strings.xml @@ -29,16 +29,29 @@ <string name="print_preview" msgid="8010217796057763343">"Chungulia kwanza kabla ya kuchapisha"</string> <string name="install_for_print_preview" msgid="6366303997385509332">"Sakinisha kitazamaji cha PDF kwa onyesho la kuchungulia"</string> <string name="printing_app_crashed" msgid="854477616686566398">"Programu ya kuchapisha imeacha kufanya kazi"</string> - <string name="page_count_unknown" msgid="7412881437770983864">"haipatikani"</string> + <!-- no translation found for page_count_unknown (6058852665954511124) --> + <skip /> <string name="generating_print_job" msgid="3119608742651698916">"Inazanzisha kazi ya kuchapisha"</string> <string name="save_as_pdf" msgid="5718454119847596853">"Hifadhi kama PDF"</string> <string name="all_printers" msgid="5018829726861876202">"Printa zote..."</string> + <!-- no translation found for print_dialog (32628687461331979) --> + <skip /> <string name="search" msgid="5421724265322228497">"Tafuta"</string> <string name="all_printers_label" msgid="3178848870161526399">"Printa zote"</string> <string name="add_print_service_label" msgid="5356702546188981940">"Ongeza huduma"</string> + <!-- no translation found for print_search_box_shown_utterance (7967404953901376090) --> + <skip /> + <!-- no translation found for print_search_box_hidden_utterance (5727755169343113351) --> + <skip /> + <!-- no translation found for print_add_printer (1088656468360653455) --> + <skip /> + <!-- no translation found for print_search_result_count_utterance:one (4484953260685964252) --> + <!-- no translation found for print_search_result_count_utterance:other (6533817036607128241) --> <string name="choose_print_service" msgid="3740309762324459694">"Chagua huduma ya printa"</string> <!-- no translation found for print_searching_for_printers (6550424555079932867) --> <skip /> + <!-- no translation found for print_no_printers (4869403323900054866) --> + <skip /> <string name="printing_notification_title_template" msgid="295903957762447362">"Inachapisha <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Inaghairi <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"Hitilafu ya kuchapisha <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-th/strings.xml b/packages/PrintSpooler/res/values-th/strings.xml index fee7c11e9b84..9f6e2262f2a5 100644 --- a/packages/PrintSpooler/res/values-th/strings.xml +++ b/packages/PrintSpooler/res/values-th/strings.xml @@ -29,15 +29,26 @@ <string name="print_preview" msgid="8010217796057763343">"ตัวอย่างก่อนพิมพ์"</string> <string name="install_for_print_preview" msgid="6366303997385509332">"ติดตั้งโปรแกรมดู PDF เพื่อดูหน้าตัวอย่าง"</string> <string name="printing_app_crashed" msgid="854477616686566398">"แอปการพิมพ์ขัดข้อง"</string> - <string name="page_count_unknown" msgid="7412881437770983864">"ไม่มีข้อมูล"</string> + <string name="page_count_unknown" msgid="6058852665954511124">"หน้า"</string> <string name="generating_print_job" msgid="3119608742651698916">"กำลังสร้างงานพิมพ์"</string> <string name="save_as_pdf" msgid="5718454119847596853">"บันทึกเป็น PDF"</string> <string name="all_printers" msgid="5018829726861876202">"เครื่องพิมพ์ทั้งหมด…"</string> + <!-- no translation found for print_dialog (32628687461331979) --> + <skip /> <string name="search" msgid="5421724265322228497">"ค้นหา"</string> <string name="all_printers_label" msgid="3178848870161526399">"เครื่องพิมพ์ทั้งหมด"</string> <string name="add_print_service_label" msgid="5356702546188981940">"เพิ่มบริการ"</string> + <!-- no translation found for print_search_box_shown_utterance (7967404953901376090) --> + <skip /> + <!-- no translation found for print_search_box_hidden_utterance (5727755169343113351) --> + <skip /> + <!-- no translation found for print_add_printer (1088656468360653455) --> + <skip /> + <!-- no translation found for print_search_result_count_utterance:one (4484953260685964252) --> + <!-- no translation found for print_search_result_count_utterance:other (6533817036607128241) --> <string name="choose_print_service" msgid="3740309762324459694">"เลือกบริการพิมพ์"</string> - <!-- no translation found for print_searching_for_printers (6550424555079932867) --> + <string name="print_searching_for_printers" msgid="6550424555079932867">"กำลังค้นหาเครื่องพิมพ์"</string> + <!-- no translation found for print_no_printers (4869403323900054866) --> <skip /> <string name="printing_notification_title_template" msgid="295903957762447362">"กำลังพิมพ์ <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"กำลังยกเลิก <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-tl/strings.xml b/packages/PrintSpooler/res/values-tl/strings.xml index 68f74cd52bd0..2dc3c39d0549 100644 --- a/packages/PrintSpooler/res/values-tl/strings.xml +++ b/packages/PrintSpooler/res/values-tl/strings.xml @@ -29,15 +29,26 @@ <string name="print_preview" msgid="8010217796057763343">"Preview sa pag-print"</string> <string name="install_for_print_preview" msgid="6366303997385509332">"Mag-install ng PDF viewer para sa pag-preview"</string> <string name="printing_app_crashed" msgid="854477616686566398">"Nag-crash ang app sa pag-print"</string> - <string name="page_count_unknown" msgid="7412881437770983864">"hindi available"</string> + <string name="page_count_unknown" msgid="6058852665954511124">"Mga Pahina"</string> <string name="generating_print_job" msgid="3119608742651698916">"Gumagawa ng pag-print"</string> <string name="save_as_pdf" msgid="5718454119847596853">"I-save bilang PDF"</string> <string name="all_printers" msgid="5018829726861876202">"Lahat ng printer…"</string> + <!-- no translation found for print_dialog (32628687461331979) --> + <skip /> <string name="search" msgid="5421724265322228497">"Hanapin"</string> <string name="all_printers_label" msgid="3178848870161526399">"Lahat ng printer"</string> <string name="add_print_service_label" msgid="5356702546188981940">"Magdagdag ng serbisyo"</string> + <!-- no translation found for print_search_box_shown_utterance (7967404953901376090) --> + <skip /> + <!-- no translation found for print_search_box_hidden_utterance (5727755169343113351) --> + <skip /> + <!-- no translation found for print_add_printer (1088656468360653455) --> + <skip /> + <!-- no translation found for print_search_result_count_utterance:one (4484953260685964252) --> + <!-- no translation found for print_search_result_count_utterance:other (6533817036607128241) --> <string name="choose_print_service" msgid="3740309762324459694">"Pumili ng serbisyo ng pag-print"</string> - <!-- no translation found for print_searching_for_printers (6550424555079932867) --> + <string name="print_searching_for_printers" msgid="6550424555079932867">"Naghahanap ng mga printer"</string> + <!-- no translation found for print_no_printers (4869403323900054866) --> <skip /> <string name="printing_notification_title_template" msgid="295903957762447362">"Pini-print ang <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Kinakansela ang <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-tr/strings.xml b/packages/PrintSpooler/res/values-tr/strings.xml index 5cd5f892750d..bfc80af68fc6 100644 --- a/packages/PrintSpooler/res/values-tr/strings.xml +++ b/packages/PrintSpooler/res/values-tr/strings.xml @@ -29,16 +29,29 @@ <string name="print_preview" msgid="8010217796057763343">"Yazdırmayı önizle"</string> <string name="install_for_print_preview" msgid="6366303997385509332">"Önizlemek için PDF görüntüleyici yükleyin"</string> <string name="printing_app_crashed" msgid="854477616686566398">"Yazdırma uygulaması kilitlendi"</string> - <string name="page_count_unknown" msgid="7412881437770983864">"bilinmiyor"</string> + <!-- no translation found for page_count_unknown (6058852665954511124) --> + <skip /> <string name="generating_print_job" msgid="3119608742651698916">"Yazdırma işi oluşturuluyor"</string> <string name="save_as_pdf" msgid="5718454119847596853">"PDF olarak kaydet"</string> <string name="all_printers" msgid="5018829726861876202">"Tüm yazıcılar…"</string> + <!-- no translation found for print_dialog (32628687461331979) --> + <skip /> <string name="search" msgid="5421724265322228497">"Ara"</string> <string name="all_printers_label" msgid="3178848870161526399">"Tüm yazıcılar"</string> <string name="add_print_service_label" msgid="5356702546188981940">"Hizmet ekle"</string> + <!-- no translation found for print_search_box_shown_utterance (7967404953901376090) --> + <skip /> + <!-- no translation found for print_search_box_hidden_utterance (5727755169343113351) --> + <skip /> + <!-- no translation found for print_add_printer (1088656468360653455) --> + <skip /> + <!-- no translation found for print_search_result_count_utterance:one (4484953260685964252) --> + <!-- no translation found for print_search_result_count_utterance:other (6533817036607128241) --> <string name="choose_print_service" msgid="3740309762324459694">"Yazdırma hizmetini seçin"</string> <!-- no translation found for print_searching_for_printers (6550424555079932867) --> <skip /> + <!-- no translation found for print_no_printers (4869403323900054866) --> + <skip /> <string name="printing_notification_title_template" msgid="295903957762447362">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> yazdırılıyor"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> iptal ediliyor"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"Yazıcı hatası: <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-uk/strings.xml b/packages/PrintSpooler/res/values-uk/strings.xml index d3bed82c717c..bd8c375d7f5d 100644 --- a/packages/PrintSpooler/res/values-uk/strings.xml +++ b/packages/PrintSpooler/res/values-uk/strings.xml @@ -29,15 +29,26 @@ <string name="print_preview" msgid="8010217796057763343">"Версія для друку"</string> <string name="install_for_print_preview" msgid="6366303997385509332">"Установити засіб перегляду PDF"</string> <string name="printing_app_crashed" msgid="854477616686566398">"Програма друку аварійно завершила роботу"</string> - <string name="page_count_unknown" msgid="7412881437770983864">"недоступно"</string> + <string name="page_count_unknown" msgid="6058852665954511124">"Сторінки"</string> <string name="generating_print_job" msgid="3119608742651698916">"Створюється завдання друку"</string> <string name="save_as_pdf" msgid="5718454119847596853">"Зберегти як PDF"</string> <string name="all_printers" msgid="5018829726861876202">"Усі принтери…"</string> + <!-- no translation found for print_dialog (32628687461331979) --> + <skip /> <string name="search" msgid="5421724265322228497">"Пошук"</string> <string name="all_printers_label" msgid="3178848870161526399">"Усі принтери"</string> <string name="add_print_service_label" msgid="5356702546188981940">"Додати службу"</string> + <!-- no translation found for print_search_box_shown_utterance (7967404953901376090) --> + <skip /> + <!-- no translation found for print_search_box_hidden_utterance (5727755169343113351) --> + <skip /> + <!-- no translation found for print_add_printer (1088656468360653455) --> + <skip /> + <!-- no translation found for print_search_result_count_utterance:one (4484953260685964252) --> + <!-- no translation found for print_search_result_count_utterance:other (6533817036607128241) --> <string name="choose_print_service" msgid="3740309762324459694">"Вибрати службу друку"</string> - <!-- no translation found for print_searching_for_printers (6550424555079932867) --> + <string name="print_searching_for_printers" msgid="6550424555079932867">"Пошук принтерів"</string> + <!-- no translation found for print_no_printers (4869403323900054866) --> <skip /> <string name="printing_notification_title_template" msgid="295903957762447362">"Завдання \"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>\" друкується"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Завдання \"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>\" скасовується"</string> diff --git a/packages/PrintSpooler/res/values-vi/strings.xml b/packages/PrintSpooler/res/values-vi/strings.xml index 3fd60136afcd..6546f0eebf4f 100644 --- a/packages/PrintSpooler/res/values-vi/strings.xml +++ b/packages/PrintSpooler/res/values-vi/strings.xml @@ -29,15 +29,26 @@ <string name="print_preview" msgid="8010217796057763343">"Xem trước bản in"</string> <string name="install_for_print_preview" msgid="6366303997385509332">"Cài đặt trình xem PDF để xem trước"</string> <string name="printing_app_crashed" msgid="854477616686566398">"Ứng dụng in gặp lỗi"</string> - <string name="page_count_unknown" msgid="7412881437770983864">"không có sẵn"</string> + <string name="page_count_unknown" msgid="6058852665954511124">"Trang"</string> <string name="generating_print_job" msgid="3119608742651698916">"Đang tạo lệnh in"</string> <string name="save_as_pdf" msgid="5718454119847596853">"Lưu dưới dạng PDF"</string> <string name="all_printers" msgid="5018829726861876202">"Tất cả máy in…"</string> + <!-- no translation found for print_dialog (32628687461331979) --> + <skip /> <string name="search" msgid="5421724265322228497">"Tìm kiếm"</string> <string name="all_printers_label" msgid="3178848870161526399">"Tất cả máy in"</string> <string name="add_print_service_label" msgid="5356702546188981940">"Thêm dịch vụ"</string> + <!-- no translation found for print_search_box_shown_utterance (7967404953901376090) --> + <skip /> + <!-- no translation found for print_search_box_hidden_utterance (5727755169343113351) --> + <skip /> + <!-- no translation found for print_add_printer (1088656468360653455) --> + <skip /> + <!-- no translation found for print_search_result_count_utterance:one (4484953260685964252) --> + <!-- no translation found for print_search_result_count_utterance:other (6533817036607128241) --> <string name="choose_print_service" msgid="3740309762324459694">"Chọn dịch vụ in"</string> - <!-- no translation found for print_searching_for_printers (6550424555079932867) --> + <string name="print_searching_for_printers" msgid="6550424555079932867">"Đang tìm kiếm máy in"</string> + <!-- no translation found for print_no_printers (4869403323900054866) --> <skip /> <string name="printing_notification_title_template" msgid="295903957762447362">"In <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Hủy <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-zh-rCN/strings.xml b/packages/PrintSpooler/res/values-zh-rCN/strings.xml index 2dfaa1e82943..0e9b45709f49 100644 --- a/packages/PrintSpooler/res/values-zh-rCN/strings.xml +++ b/packages/PrintSpooler/res/values-zh-rCN/strings.xml @@ -29,16 +29,29 @@ <string name="print_preview" msgid="8010217796057763343">"打印预览"</string> <string name="install_for_print_preview" msgid="6366303997385509332">"安装 PDF 查看器以便预览"</string> <string name="printing_app_crashed" msgid="854477616686566398">"打印应用崩溃了"</string> - <string name="page_count_unknown" msgid="7412881437770983864">"未知"</string> + <!-- no translation found for page_count_unknown (6058852665954511124) --> + <skip /> <string name="generating_print_job" msgid="3119608742651698916">"正在生成打印作业"</string> <string name="save_as_pdf" msgid="5718454119847596853">"保存为 PDF"</string> <string name="all_printers" msgid="5018829726861876202">"所有打印机…"</string> + <!-- no translation found for print_dialog (32628687461331979) --> + <skip /> <string name="search" msgid="5421724265322228497">"搜索"</string> <string name="all_printers_label" msgid="3178848870161526399">"所有打印机"</string> <string name="add_print_service_label" msgid="5356702546188981940">"添加服务"</string> + <!-- no translation found for print_search_box_shown_utterance (7967404953901376090) --> + <skip /> + <!-- no translation found for print_search_box_hidden_utterance (5727755169343113351) --> + <skip /> + <!-- no translation found for print_add_printer (1088656468360653455) --> + <skip /> + <!-- no translation found for print_search_result_count_utterance:one (4484953260685964252) --> + <!-- no translation found for print_search_result_count_utterance:other (6533817036607128241) --> <string name="choose_print_service" msgid="3740309762324459694">"选择打印服务"</string> <!-- no translation found for print_searching_for_printers (6550424555079932867) --> <skip /> + <!-- no translation found for print_no_printers (4869403323900054866) --> + <skip /> <string name="printing_notification_title_template" msgid="295903957762447362">"正在打印“<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>”"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"正在取消打印“<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>”"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"打印机在打印“<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>”时出错"</string> diff --git a/packages/PrintSpooler/res/values-zh-rHK/strings.xml b/packages/PrintSpooler/res/values-zh-rHK/strings.xml index 99f17e487052..71215c8ffdae 100644 --- a/packages/PrintSpooler/res/values-zh-rHK/strings.xml +++ b/packages/PrintSpooler/res/values-zh-rHK/strings.xml @@ -29,16 +29,29 @@ <string name="print_preview" msgid="8010217796057763343">"預覽列印"</string> <string name="install_for_print_preview" msgid="6366303997385509332">"安裝預覽所需的 PDF 檢視器"</string> <string name="printing_app_crashed" msgid="854477616686566398">"列印應用程式當機了"</string> - <string name="page_count_unknown" msgid="7412881437770983864">"頁數不明"</string> + <!-- no translation found for page_count_unknown (6058852665954511124) --> + <skip /> <string name="generating_print_job" msgid="3119608742651698916">"正在產生列印工作"</string> <string name="save_as_pdf" msgid="5718454119847596853">"儲存為 PDF"</string> <string name="all_printers" msgid="5018829726861876202">"所有打印機…"</string> + <!-- no translation found for print_dialog (32628687461331979) --> + <skip /> <string name="search" msgid="5421724265322228497">"搜尋"</string> <string name="all_printers_label" msgid="3178848870161526399">"所有打印機"</string> <string name="add_print_service_label" msgid="5356702546188981940">"新增服務"</string> + <!-- no translation found for print_search_box_shown_utterance (7967404953901376090) --> + <skip /> + <!-- no translation found for print_search_box_hidden_utterance (5727755169343113351) --> + <skip /> + <!-- no translation found for print_add_printer (1088656468360653455) --> + <skip /> + <!-- no translation found for print_search_result_count_utterance:one (4484953260685964252) --> + <!-- no translation found for print_search_result_count_utterance:other (6533817036607128241) --> <string name="choose_print_service" msgid="3740309762324459694">"選擇列印服務"</string> <!-- no translation found for print_searching_for_printers (6550424555079932867) --> <skip /> + <!-- no translation found for print_no_printers (4869403323900054866) --> + <skip /> <string name="printing_notification_title_template" msgid="295903957762447362">"正在列印 <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"正在取消 <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"打印機錯誤:<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-zh-rTW/strings.xml b/packages/PrintSpooler/res/values-zh-rTW/strings.xml index 4e7110b7d665..66ceb417654c 100644 --- a/packages/PrintSpooler/res/values-zh-rTW/strings.xml +++ b/packages/PrintSpooler/res/values-zh-rTW/strings.xml @@ -29,16 +29,29 @@ <string name="print_preview" msgid="8010217796057763343">"列印預覽"</string> <string name="install_for_print_preview" msgid="6366303997385509332">"安裝預覽所需的 PDF 檢視器"</string> <string name="printing_app_crashed" msgid="854477616686566398">"列印應用程式當機了"</string> - <string name="page_count_unknown" msgid="7412881437770983864">"不明"</string> + <!-- no translation found for page_count_unknown (6058852665954511124) --> + <skip /> <string name="generating_print_job" msgid="3119608742651698916">"正在產生列印工作"</string> <string name="save_as_pdf" msgid="5718454119847596853">"儲存為 PDF"</string> <string name="all_printers" msgid="5018829726861876202">"所有印表機…"</string> + <!-- no translation found for print_dialog (32628687461331979) --> + <skip /> <string name="search" msgid="5421724265322228497">"搜尋"</string> <string name="all_printers_label" msgid="3178848870161526399">"所有印表機"</string> <string name="add_print_service_label" msgid="5356702546188981940">"新增服務"</string> + <!-- no translation found for print_search_box_shown_utterance (7967404953901376090) --> + <skip /> + <!-- no translation found for print_search_box_hidden_utterance (5727755169343113351) --> + <skip /> + <!-- no translation found for print_add_printer (1088656468360653455) --> + <skip /> + <!-- no translation found for print_search_result_count_utterance:one (4484953260685964252) --> + <!-- no translation found for print_search_result_count_utterance:other (6533817036607128241) --> <string name="choose_print_service" msgid="3740309762324459694">"選擇列印服務"</string> <!-- no translation found for print_searching_for_printers (6550424555079932867) --> <skip /> + <!-- no translation found for print_no_printers (4869403323900054866) --> + <skip /> <string name="printing_notification_title_template" msgid="295903957762447362">"正在列印 <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"正在取消 <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"印表機發生錯誤:<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/PrintSpooler/res/values-zu/strings.xml b/packages/PrintSpooler/res/values-zu/strings.xml index b5278fbf9d7c..e1cb758fda7b 100644 --- a/packages/PrintSpooler/res/values-zu/strings.xml +++ b/packages/PrintSpooler/res/values-zu/strings.xml @@ -29,16 +29,29 @@ <string name="print_preview" msgid="8010217796057763343">"Ukubuka kuqala kokuphrinta"</string> <string name="install_for_print_preview" msgid="6366303997385509332">"Faka isibukeli se-PDF ukuze uhlole kuqala"</string> <string name="printing_app_crashed" msgid="854477616686566398">"Ukuphrinta uhlelo lokusebenza kukhubazekile"</string> - <string name="page_count_unknown" msgid="7412881437770983864">"ayitholakali"</string> + <!-- no translation found for page_count_unknown (6058852665954511124) --> + <skip /> <string name="generating_print_job" msgid="3119608742651698916">"Ikhiqiza umsebenzi wokuphrinta"</string> <string name="save_as_pdf" msgid="5718454119847596853">"Londoloza njenge-PDF"</string> <string name="all_printers" msgid="5018829726861876202">"Wonke amaphrinta…"</string> + <!-- no translation found for print_dialog (32628687461331979) --> + <skip /> <string name="search" msgid="5421724265322228497">"Sesha"</string> <string name="all_printers_label" msgid="3178848870161526399">"Wonke amaphrinta"</string> <string name="add_print_service_label" msgid="5356702546188981940">"Engeza isevisi"</string> + <!-- no translation found for print_search_box_shown_utterance (7967404953901376090) --> + <skip /> + <!-- no translation found for print_search_box_hidden_utterance (5727755169343113351) --> + <skip /> + <!-- no translation found for print_add_printer (1088656468360653455) --> + <skip /> + <!-- no translation found for print_search_result_count_utterance:one (4484953260685964252) --> + <!-- no translation found for print_search_result_count_utterance:other (6533817036607128241) --> <string name="choose_print_service" msgid="3740309762324459694">"Khetha isevisi yephrinta"</string> <!-- no translation found for print_searching_for_printers (6550424555079932867) --> <skip /> + <!-- no translation found for print_no_printers (4869403323900054866) --> + <skip /> <string name="printing_notification_title_template" msgid="295903957762447362">"Iphrinta i-<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Ikhansela i-<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"Iphutha lephrinta ye-<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java index 09f1695aa30a..01c27f21a623 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java @@ -514,9 +514,13 @@ public class NetworkController extends BroadcastReceiver implements DemoMode { private final void updateTelephonySignalStrength() { if (!hasService()) { if (CHATTY) Log.d(TAG, "updateTelephonySignalStrength: !hasService()"); - mPhoneSignalIconId = R.drawable.stat_sys_signal_null; + if (!mSimState.iccCardExist()) { + mPhoneSignalIconId = R.drawable.stat_sys_no_sim; + } else { + mPhoneSignalIconId = R.drawable.stat_sys_signal_null; + } + mDataSignalIconId = mPhoneSignalIconId; mQSPhoneSignalIconId = R.drawable.ic_qs_signal_no_signal; - mDataSignalIconId = R.drawable.stat_sys_signal_null; } else { if (mSignalStrength == null) { if (CHATTY) Log.d(TAG, "updateTelephonySignalStrength: mSignalStrength == null"); diff --git a/packages/WallpaperCropper/res/layout/wallpaper_cropper.xml b/packages/WallpaperCropper/res/layout/wallpaper_cropper.xml index 6dc7e351acad..97d700169be2 100644 --- a/packages/WallpaperCropper/res/layout/wallpaper_cropper.xml +++ b/packages/WallpaperCropper/res/layout/wallpaper_cropper.xml @@ -19,7 +19,7 @@ --> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:id="@+id/wallpaper_cropper" + android:id="@+id/wallpaper_root" android:layout_width="match_parent" android:layout_height="match_parent"> <com.android.wallpapercropper.CropView diff --git a/packages/PrintSpooler/res/values-be/arrays.xml b/packages/WallpaperCropper/res/values-sw600dp/config.xml index d40278c3973d..62342dcc2f35 100644 --- a/packages/PrintSpooler/res/values-be/arrays.xml +++ b/packages/WallpaperCropper/res/values-sw600dp/config.xml @@ -14,20 +14,5 @@ limitations under the License. --> <resources> - - <string-array name="pdf_printer_media_sizes" translatable="false"> - <item>NA_LETTER</item> - <item>NA_GOVT_LETTER</item> - <item>NA_LEGAL</item> - <item>NA_JUNIOR_LEGAL</item> - <item>NA_LEDGER</item> - <item>NA_TABLOID</item> - <item>NA_INDEX_3X5</item> - <item>NA_INDEX_4X6</item> - <item>NA_INDEX_5X8</item> - <item>NA_MONARCH</item> - <item>NA_QUARTO</item> - <item>NA_FOOLSCAP</item> - </string-array> - + <bool name="allow_rotation">true</bool> </resources> diff --git a/packages/PrintSpooler/res/values-es-rUS/arrays.xml b/packages/WallpaperCropper/res/values/config.xml index d40278c3973d..1b2419073502 100644 --- a/packages/PrintSpooler/res/values-es-rUS/arrays.xml +++ b/packages/WallpaperCropper/res/values/config.xml @@ -14,20 +14,5 @@ limitations under the License. --> <resources> - - <string-array name="pdf_printer_media_sizes" translatable="false"> - <item>NA_LETTER</item> - <item>NA_GOVT_LETTER</item> - <item>NA_LEGAL</item> - <item>NA_JUNIOR_LEGAL</item> - <item>NA_LEDGER</item> - <item>NA_TABLOID</item> - <item>NA_INDEX_3X5</item> - <item>NA_INDEX_4X6</item> - <item>NA_INDEX_5X8</item> - <item>NA_MONARCH</item> - <item>NA_QUARTO</item> - <item>NA_FOOLSCAP</item> - </string-array> - + <bool name="allow_rotation">false</bool> </resources> diff --git a/packages/WallpaperCropper/src/com/android/wallpapercropper/CropView.java b/packages/WallpaperCropper/src/com/android/wallpapercropper/CropView.java index ecebd64227ba..b4e715ca24d5 100644 --- a/packages/WallpaperCropper/src/com/android/wallpapercropper/CropView.java +++ b/packages/WallpaperCropper/src/com/android/wallpapercropper/CropView.java @@ -22,8 +22,8 @@ import android.graphics.RectF; import android.util.AttributeSet; import android.view.MotionEvent; import android.view.ScaleGestureDetector; -import android.view.ViewConfiguration; import android.view.ScaleGestureDetector.OnScaleGestureListener; +import android.view.ViewConfiguration; import android.view.ViewTreeObserver; import android.view.ViewTreeObserver.OnGlobalLayoutListener; @@ -44,6 +44,7 @@ public class CropView extends TiledImageView implements OnScaleGestureListener { public interface TouchCallback { void onTouchDown(); void onTap(); + void onTouchUp(); } public CropView(Context context) { @@ -140,12 +141,12 @@ public class CropView extends TiledImageView implements OnScaleGestureListener { public void onScaleEnd(ScaleGestureDetector detector) { } - public void moveToUpperLeft() { + public void moveToLeft() { if (getWidth() == 0 || getHeight() == 0) { final ViewTreeObserver observer = getViewTreeObserver(); observer.addOnGlobalLayoutListener(new OnGlobalLayoutListener() { public void onGlobalLayout() { - moveToUpperLeft(); + moveToLeft(); getViewTreeObserver().removeOnGlobalLayoutListener(this); } }); @@ -154,7 +155,6 @@ public class CropView extends TiledImageView implements OnScaleGestureListener { getEdgesHelper(edges); final float scale = mRenderer.scale; mRenderer.centerX += Math.ceil(edges.left / scale); - mRenderer.centerY += Math.ceil(edges.top / scale); } public void setTouchEnabled(boolean enabled) { @@ -197,11 +197,13 @@ public class CropView extends TiledImageView implements OnScaleGestureListener { float squaredDist = (mFirstX - x) * (mFirstX - x) + (mFirstY - y) * (mFirstY - y); float slop = config.getScaledTouchSlop() * config.getScaledTouchSlop(); long now = System.currentTimeMillis(); - // only do this if it's a small movement - if (mTouchCallback != null && - squaredDist < slop && + if (mTouchCallback != null) { + // only do this if it's a small movement + if (squaredDist < slop && now < mTouchDownTime + ViewConfiguration.getTapTimeout()) { - mTouchCallback.onTap(); + mTouchCallback.onTap(); + } + mTouchCallback.onTouchUp(); } } diff --git a/packages/WallpaperCropper/src/com/android/wallpapercropper/TranslucentDecor.java b/packages/WallpaperCropper/src/com/android/wallpapercropper/TranslucentDecor.java new file mode 100644 index 000000000000..9ce7331cf87f --- /dev/null +++ b/packages/WallpaperCropper/src/com/android/wallpapercropper/TranslucentDecor.java @@ -0,0 +1,82 @@ +/* + * 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. + */ +/* Copied from Launcher3 */ +package com.android.wallpapercropper; + +import android.app.Activity; +import android.view.View; +import android.view.Window; +import android.view.WindowManager; + +public class TranslucentDecor { + private static final int SYSTEM_UI_FLAG_TRANSPARENT_STATUS = 0x00001000; + private static final int SYSTEM_UI_FLAG_TRANSPARENT_NAVIGATION = 0x00002000; + + // Replace with SDK constants when available. + public static final int FLAG_TRANSLUCENT_STATUS = 0x04000000; + public static final int FLAG_TRANSLUCENT_NAVIGATION = 0x08000000; + + // Behave properly on early K builds. + public static final boolean SYSUI_SUPPORTED = !hasSystemUiFlag("ALLOW_TRANSIENT") && + hasSystemUiFlag("TRANSPARENT_STATUS") && + hasSystemUiFlag("TRANSPARENT_NAVIGATION"); + + public static final boolean WM_SUPPORTED = + hasWindowManagerFlag("TRANSLUCENT_STATUS") && + hasWindowManagerFlag("TRANSLUCENT_NAVIGATION"); + + private final View mTarget; + + public TranslucentDecor(View target) { + mTarget = target; + } + + public void requestTranslucentDecor(boolean translucent) { + int sysui = View.SYSTEM_UI_FLAG_LAYOUT_STABLE + | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN + | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION; + if (WM_SUPPORTED && mTarget.getContext() instanceof Activity) { + Window w = ((Activity) mTarget.getContext()).getWindow(); + int wmFlags = FLAG_TRANSLUCENT_STATUS | FLAG_TRANSLUCENT_NAVIGATION; + if (translucent) { + w.addFlags(wmFlags); + } else { + w.clearFlags(wmFlags); + } + } else if (SYSUI_SUPPORTED) { // Remove when droidfood platform is updated + if (translucent) { + sysui |= SYSTEM_UI_FLAG_TRANSPARENT_STATUS | SYSTEM_UI_FLAG_TRANSPARENT_NAVIGATION; + } + } + mTarget.setSystemUiVisibility(sysui); + } + + private static boolean hasWindowManagerFlag(String name) { + try { + return WindowManager.LayoutParams.class.getField("FLAG_" + name) != null; + } catch (NoSuchFieldException e) { + return false; + } + } + + private static boolean hasSystemUiFlag(String name) { + try { + return View.class.getField("SYSTEM_UI_FLAG_" + name) != null; + } catch (NoSuchFieldException e) { + return false; + } + } +} diff --git a/packages/WallpaperCropper/src/com/android/wallpapercropper/WallpaperCropActivity.java b/packages/WallpaperCropper/src/com/android/wallpapercropper/WallpaperCropActivity.java index af486521de91..48fbcc53e5f2 100644 --- a/packages/WallpaperCropper/src/com/android/wallpapercropper/WallpaperCropActivity.java +++ b/packages/WallpaperCropper/src/com/android/wallpapercropper/WallpaperCropActivity.java @@ -75,6 +75,9 @@ public class WallpaperCropActivity extends Activity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); init(); + if (!enableRotation()) { + setRequestedOrientation(Configuration.ORIENTATION_PORTRAIT); + } } protected void init() { @@ -99,6 +102,12 @@ public class WallpaperCropActivity extends Activity { cropImageAndSetWallpaper(imageUri, null, finishActivityWhenDone); } }); + TranslucentDecor transparentDecor = new TranslucentDecor(findViewById(R.id.wallpaper_root)); + transparentDecor.requestTranslucentDecor(true); + } + + public boolean enableRotation() { + return getResources().getBoolean(R.bool.allow_rotation); } public static String getSharedPreferencesKey() { @@ -162,7 +171,6 @@ public class WallpaperCropActivity extends Activity { } protected void setWallpaper(String filePath, final boolean finishActivityWhenDone) { - BitmapCropTask cropTask = new BitmapCropTask(this, filePath, null, 0, 0, true, false, null); final Point bounds = cropTask.getImageBounds(); @@ -200,7 +208,7 @@ public class WallpaperCropActivity extends Activity { } } }; - BitmapCropTask cropTask = new BitmapCropTask(res, resId, + BitmapCropTask cropTask = new BitmapCropTask(this, res, resId, crop, outSize.x, outSize.y, true, false, onEndCrop); cropTask.execute(); @@ -213,9 +221,11 @@ public class WallpaperCropActivity extends Activity { protected void cropImageAndSetWallpaper(Uri uri, OnBitmapCroppedHandler onBitmapCroppedHandler, final boolean finishActivityWhenDone) { - // Get the crop + // Get the crop Point inSize = mCropView.getSourceDimensions(); + boolean ltr = mCropView.getLayoutDirection() == View.LAYOUT_DIRECTION_LTR; + Point minDims = new Point(); Point maxDims = new Point(); Display d = getWindowManager().getDefaultDisplay(); @@ -226,12 +236,12 @@ public class WallpaperCropActivity extends Activity { int maxDim = Math.max(maxDims.x, maxDims.y); final int minDim = Math.min(minDims.x, minDims.y); - int defaultWidth; + int defaultWallpaperWidth; if (isScreenLarge(getResources())) { - defaultWidth = (int) (maxDim * + defaultWallpaperWidth = (int) (maxDim * wallpaperTravelToScreenWidthRatio(maxDim, minDim)); } else { - defaultWidth = Math.max((int) + defaultWallpaperWidth = Math.max((int) (minDim * WALLPAPER_SCREENS_SPAN), maxDim); } @@ -256,12 +266,17 @@ public class WallpaperCropActivity extends Activity { // ADJUST CROP WIDTH // Extend the crop all the way to the right, for parallax - float extraSpaceToRight = inSize.x - cropRect.right; + // (or all the way to the left, in RTL) + float extraSpace = ltr ? inSize.x - cropRect.right : cropRect.left; // Cap the amount of extra width - float maxExtraSpace = defaultWidth / cropScale - cropRect.width(); - extraSpaceToRight = Math.min(extraSpaceToRight, maxExtraSpace); + float maxExtraSpace = defaultWallpaperWidth / cropScale - cropRect.width(); + extraSpace = Math.min(extraSpace, maxExtraSpace); - cropRect.right += extraSpaceToRight; + if (ltr) { + cropRect.right += extraSpace; + } else { + cropRect.left -= extraSpace; + } // ADJUST CROP HEIGHT if (isPortrait) { @@ -287,7 +302,7 @@ public class WallpaperCropActivity extends Activity { } } }; - BitmapCropTask cropTask = new BitmapCropTask(uri, + BitmapCropTask cropTask = new BitmapCropTask(this, uri, cropRect, outWidth, outHeight, true, false, onEndCrop); if (onBitmapCroppedHandler != null) { cropTask.setOnBitmapCropped(onBitmapCroppedHandler); @@ -299,7 +314,7 @@ public class WallpaperCropActivity extends Activity { public void onBitmapCropped(byte[] imageBytes); } - protected class BitmapCropTask extends AsyncTask<Void, Void, Boolean> { + protected static class BitmapCropTask extends AsyncTask<Void, Void, Boolean> { Uri mInUri = null; Context mContext; String mInFilePath; @@ -309,7 +324,6 @@ public class WallpaperCropActivity extends Activity { RectF mCropBounds = null; int mOutWidth, mOutHeight; int mRotation = 0; // for now - protected final WallpaperManager mWPManager; String mOutputFormat = "jpg"; // for now boolean mSetWallpaper; boolean mSaveCroppedBitmap; @@ -324,7 +338,6 @@ public class WallpaperCropActivity extends Activity { boolean setWallpaper, boolean saveCroppedBitmap, Runnable onEndRunnable) { mContext = c; mInFilePath = filePath; - mWPManager = WallpaperManager.getInstance(getApplicationContext()); init(cropBounds, outWidth, outHeight, setWallpaper, saveCroppedBitmap, onEndRunnable); } @@ -332,24 +345,23 @@ public class WallpaperCropActivity extends Activity { RectF cropBounds, int outWidth, int outHeight, boolean setWallpaper, boolean saveCroppedBitmap, Runnable onEndRunnable) { mInImageBytes = imageBytes; - mWPManager = WallpaperManager.getInstance(getApplicationContext()); init(cropBounds, outWidth, outHeight, setWallpaper, saveCroppedBitmap, onEndRunnable); } - public BitmapCropTask(Uri inUri, + public BitmapCropTask(Context c, Uri inUri, RectF cropBounds, int outWidth, int outHeight, boolean setWallpaper, boolean saveCroppedBitmap, Runnable onEndRunnable) { + mContext = c; mInUri = inUri; - mWPManager = WallpaperManager.getInstance(getApplicationContext()); init(cropBounds, outWidth, outHeight, setWallpaper, saveCroppedBitmap, onEndRunnable); } - public BitmapCropTask(Resources res, int inResId, + public BitmapCropTask(Context c, Resources res, int inResId, RectF cropBounds, int outWidth, int outHeight, boolean setWallpaper, boolean saveCroppedBitmap, Runnable onEndRunnable) { + mContext = c; mInResId = inResId; mResources = res; - mWPManager = WallpaperManager.getInstance(getApplicationContext()); init(cropBounds, outWidth, outHeight, setWallpaper, saveCroppedBitmap, onEndRunnable); } @@ -385,7 +397,7 @@ public class WallpaperCropActivity extends Activity { try { if (mInUri != null) { mInStream = new BufferedInputStream( - getContentResolver().openInputStream(mInUri)); + mContext.getContentResolver().openInputStream(mInUri)); } else if (mInFilePath != null) { mInStream = mContext.openFileInput(mInFilePath); } else if (mInImageBytes != null) { @@ -426,16 +438,17 @@ public class WallpaperCropActivity extends Activity { regenerateInputStream(); - if (mNoCrop && mInStream != null) { + WallpaperManager wallpaperManager = null; + if (mSetWallpaper) { + wallpaperManager = WallpaperManager.getInstance(mContext.getApplicationContext()); + } + if (mSetWallpaper && mNoCrop && mInStream != null) { try { - mWPManager.setStream(mInStream); + wallpaperManager.setStream(mInStream); } catch (IOException e) { Log.w(LOGTAG, "cannot write stream to wallpaper", e); failure = true; } - if (mOnEndRunnable != null) { - mOnEndRunnable.run(); - } return !failure; } if (mInStream != null) { @@ -509,7 +522,9 @@ public class WallpaperCropActivity extends Activity { (int) returnRect.height(), Bitmap.Config.ARGB_8888); if (tmp != null) { Canvas c = new Canvas(tmp); - c.drawBitmap(crop, m, new Paint()); + Paint p = new Paint(); + p.setFilterBitmap(true); + c.drawBitmap(crop, m, p); crop = tmp; } } else if (mRotation > 0) { @@ -534,26 +549,18 @@ public class WallpaperCropActivity extends Activity { ByteArrayOutputStream tmpOut = new ByteArrayOutputStream(2048); if (crop.compress(cf, DEFAULT_COMPRESS_QUALITY, tmpOut)) { // If we need to set to the wallpaper, set it - if (mSetWallpaper && mWPManager != null) { - if (mWPManager == null) { - Log.w(LOGTAG, "no wallpaper manager"); - failure = true; - } else { - try { - byte[] outByteArray = tmpOut.toByteArray(); - mWPManager.setStream(new ByteArrayInputStream(outByteArray)); - if (mOnBitmapCroppedHandler != null) { - mOnBitmapCroppedHandler.onBitmapCropped(outByteArray); - } - } catch (IOException e) { - Log.w(LOGTAG, "cannot write stream to wallpaper", e); - failure = true; + if (mSetWallpaper && wallpaperManager != null) { + try { + byte[] outByteArray = tmpOut.toByteArray(); + wallpaperManager.setStream(new ByteArrayInputStream(outByteArray)); + if (mOnBitmapCroppedHandler != null) { + mOnBitmapCroppedHandler.onBitmapCropped(outByteArray); } + } catch (IOException e) { + Log.w(LOGTAG, "cannot write stream to wallpaper", e); + failure = true; } } - if (mOnEndRunnable != null) { - mOnEndRunnable.run(); - } } else { Log.w(LOGTAG, "cannot compress bitmap"); failure = true; @@ -569,8 +576,9 @@ public class WallpaperCropActivity extends Activity { @Override protected void onPostExecute(Boolean result) { - setResult(Activity.RESULT_OK); - finish(); + if (mOnEndRunnable != null) { + mOnEndRunnable.run(); + } } } diff --git a/services/java/com/android/server/am/ActiveServices.java b/services/java/com/android/server/am/ActiveServices.java index 27ca7a05d9c4..b69a0c8185b6 100644 --- a/services/java/com/android/server/am/ActiveServices.java +++ b/services/java/com/android/server/am/ActiveServices.java @@ -25,6 +25,7 @@ import java.util.Iterator; import java.util.List; import android.os.Handler; +import android.os.Looper; import android.util.ArrayMap; import com.android.internal.app.ProcessStats; import com.android.internal.os.BatteryStatsImpl; @@ -166,7 +167,8 @@ public final class ActiveServices { static final int MSG_BG_START_TIMEOUT = 1; - ServiceMap(int userId) { + ServiceMap(Looper looper, int userId) { + super(looper); mUserId = userId; } @@ -255,7 +257,7 @@ public final class ActiveServices { private ServiceMap getServiceMap(int callingUser) { ServiceMap smap = mServiceMap.get(callingUser); if (smap == null) { - smap = new ServiceMap(callingUser); + smap = new ServiceMap(mAm.mHandler.getLooper(), callingUser); mServiceMap.put(callingUser, smap); } return smap; @@ -2417,7 +2419,11 @@ public final class ActiveServices { int[] users = mAm.getUsersLocked(); if ("all".equals(name)) { for (int user : users) { - ArrayMap<ComponentName, ServiceRecord> alls = getServices(user); + ServiceMap smap = mServiceMap.get(user); + if (smap == null) { + continue; + } + ArrayMap<ComponentName, ServiceRecord> alls = smap.mServicesByName; for (int i=0; i<alls.size(); i++) { ServiceRecord r1 = alls.valueAt(i); services.add(r1); @@ -2438,7 +2444,11 @@ public final class ActiveServices { } for (int user : users) { - ArrayMap<ComponentName, ServiceRecord> alls = getServices(user); + ServiceMap smap = mServiceMap.get(user); + if (smap == null) { + continue; + } + ArrayMap<ComponentName, ServiceRecord> alls = smap.mServicesByName; for (int i=0; i<alls.size(); i++) { ServiceRecord r1 = alls.valueAt(i); if (componentName != null) { diff --git a/services/java/com/android/server/am/ActivityManagerService.java b/services/java/com/android/server/am/ActivityManagerService.java index fe91b6c52331..1987d049f0c8 100644 --- a/services/java/com/android/server/am/ActivityManagerService.java +++ b/services/java/com/android/server/am/ActivityManagerService.java @@ -226,7 +226,7 @@ public final class ActivityManagerService extends ActivityManagerNative static final boolean DEBUG_RESULTS = localLOGV || false; static final boolean DEBUG_SERVICE = localLOGV || false; static final boolean DEBUG_SERVICE_EXECUTING = localLOGV || false; - static final boolean DEBUG_STACK = localLOGV || false; + static final boolean DEBUG_STACK = localLOGV || true; static final boolean DEBUG_SWITCH = localLOGV || false; static final boolean DEBUG_TASKS = localLOGV || false; static final boolean DEBUG_THUMBNAILS = localLOGV || false; diff --git a/services/java/com/android/server/pm/PackageManagerService.java b/services/java/com/android/server/pm/PackageManagerService.java index e84f90ec4b5c..fb6e9edcbb6c 100755 --- a/services/java/com/android/server/pm/PackageManagerService.java +++ b/services/java/com/android/server/pm/PackageManagerService.java @@ -383,13 +383,12 @@ public class PackageManagerService extends IPackageManager.Stub { // All available services, for your resolving pleasure. final ServiceIntentResolver mServices = new ServiceIntentResolver(); - // Keys are String (provider class name), values are Provider. - final HashMap<ComponentName, PackageParser.Provider> mProvidersByComponent = - new HashMap<ComponentName, PackageParser.Provider>(); + // All available providers, for your resolving pleasure. + final ProviderIntentResolver mProviders = new ProviderIntentResolver(); // Mapping from provider base names (first directory in content URI codePath) // to the provider information. - final HashMap<String, PackageParser.Provider> mProviders = + final HashMap<String, PackageParser.Provider> mProvidersByAuthority = new HashMap<String, PackageParser.Provider>(); // Mapping from instrumentation class names to info about them. @@ -2095,7 +2094,7 @@ public class PackageManagerService extends IPackageManager.Stub { if (!sUserManager.exists(userId)) return null; enforceCrossUserPermission(Binder.getCallingUid(), userId, false, "get provider info"); synchronized (mPackages) { - PackageParser.Provider p = mProvidersByComponent.get(component); + PackageParser.Provider p = mProviders.mProviders.get(component); if (DEBUG_PACKAGE_INFO) Log.v( TAG, "getProviderInfo " + component + ": " + p); if (p != null && mSettings.isEnabledLPr(p.info, flags, userId)) { @@ -3121,6 +3120,43 @@ public class PackageManagerService extends IPackageManager.Stub { } @Override + public List<ResolveInfo> queryIntentContentProviders( + Intent intent, String resolvedType, int flags, int userId) { + if (!sUserManager.exists(userId)) return Collections.emptyList(); + ComponentName comp = intent.getComponent(); + if (comp == null) { + if (intent.getSelector() != null) { + intent = intent.getSelector(); + comp = intent.getComponent(); + } + } + if (comp != null) { + final List<ResolveInfo> list = new ArrayList<ResolveInfo>(1); + final ProviderInfo pi = getProviderInfo(comp, flags, userId); + if (pi != null) { + final ResolveInfo ri = new ResolveInfo(); + ri.providerInfo = pi; + list.add(ri); + } + return list; + } + + // reader + synchronized (mPackages) { + String pkgName = intent.getPackage(); + if (pkgName == null) { + return mProviders.queryIntent(intent, resolvedType, flags, userId); + } + final PackageParser.Package pkg = mPackages.get(pkgName); + if (pkg != null) { + return mProviders.queryIntentForPackage( + intent, resolvedType, flags, pkg.providers, userId); + } + return null; + } + } + + @Override public ParceledListSlice<PackageInfo> getInstalledPackages(int flags, int userId) { final boolean listUninstalled = (flags & PackageManager.GET_UNINSTALLED_PACKAGES) != 0; @@ -3293,7 +3329,7 @@ public class PackageManagerService extends IPackageManager.Stub { if (!sUserManager.exists(userId)) return null; // reader synchronized (mPackages) { - final PackageParser.Provider provider = mProviders.get(name); + final PackageParser.Provider provider = mProvidersByAuthority.get(name); PackageSetting ps = provider != null ? mSettings.mPackages.get(provider.owner.packageName) : null; @@ -3314,8 +3350,8 @@ public class PackageManagerService extends IPackageManager.Stub { public void querySyncProviders(List<String> outNames, List<ProviderInfo> outInfo) { // reader synchronized (mPackages) { - final Iterator<Map.Entry<String, PackageParser.Provider>> i = mProviders.entrySet() - .iterator(); + final Iterator<Map.Entry<String, PackageParser.Provider>> i = mProvidersByAuthority + .entrySet().iterator(); final int userId = UserHandle.getCallingUserId(); while (i.hasNext()) { Map.Entry<String, PackageParser.Provider> entry = i.next(); @@ -3341,7 +3377,7 @@ public class PackageManagerService extends IPackageManager.Stub { ArrayList<ProviderInfo> finalList = null; // reader synchronized (mPackages) { - final Iterator<PackageParser.Provider> i = mProvidersByComponent.values().iterator(); + final Iterator<PackageParser.Provider> i = mProviders.mProviders.values().iterator(); final int userId = processName != null ? UserHandle.getUserId(uid) : UserHandle.getCallingUserId(); while (i.hasNext()) { @@ -4313,8 +4349,8 @@ public class PackageManagerService extends IPackageManager.Stub { if (p.info.authority != null) { String names[] = p.info.authority.split(";"); for (int j = 0; j < names.length; j++) { - if (mProviders.containsKey(names[j])) { - PackageParser.Provider other = mProviders.get(names[j]); + if (mProvidersByAuthority.containsKey(names[j])) { + PackageParser.Provider other = mProvidersByAuthority.get(names[j]); Slog.w(TAG, "Can't install because provider name " + names[j] + " (in package " + pkg.applicationInfo.packageName + ") is already used by " @@ -4745,8 +4781,7 @@ public class PackageManagerService extends IPackageManager.Stub { PackageParser.Provider p = pkg.providers.get(i); p.info.processName = fixProcessName(pkg.applicationInfo.processName, p.info.processName, pkg.applicationInfo.uid); - mProvidersByComponent.put(new ComponentName(p.info.packageName, - p.info.name), p); + mProviders.addProvider(p); p.syncable = p.info.isSyncable; if (p.info.authority != null) { String names[] = p.info.authority.split(";"); @@ -4763,8 +4798,8 @@ public class PackageManagerService extends IPackageManager.Stub { p = new PackageParser.Provider(p); p.syncable = false; } - if (!mProviders.containsKey(names[j])) { - mProviders.put(names[j], p); + if (!mProvidersByAuthority.containsKey(names[j])) { + mProvidersByAuthority.put(names[j], p); if (p.info.authority == null) { p.info.authority = names[j]; } else { @@ -4777,7 +4812,7 @@ public class PackageManagerService extends IPackageManager.Stub { + p.info.isSyncable); } } else { - PackageParser.Provider other = mProviders.get(names[j]); + PackageParser.Provider other = mProvidersByAuthority.get(names[j]); Slog.w(TAG, "Skipping provider name " + names[j] + " (in package " + pkg.applicationInfo.packageName + "): name already used by " @@ -5108,8 +5143,7 @@ public class PackageManagerService extends IPackageManager.Stub { int i; for (i=0; i<N; i++) { PackageParser.Provider p = pkg.providers.get(i); - mProvidersByComponent.remove(new ComponentName(p.info.packageName, - p.info.name)); + mProviders.removeProvider(p); if (p.info.authority == null) { /* There was another ContentProvider with this authority when @@ -5120,8 +5154,8 @@ public class PackageManagerService extends IPackageManager.Stub { } String names[] = p.info.authority.split(";"); for (int j = 0; j < names.length; j++) { - if (mProviders.get(names[j]) == p) { - mProviders.remove(names[j]); + if (mProvidersByAuthority.get(names[j]) == p) { + mProvidersByAuthority.remove(names[j]); if (DEBUG_REMOVE) { if (chatty) Log.d(TAG, "Unregistered content provider: " + names[j] @@ -5962,6 +5996,195 @@ public class PackageManagerService extends IPackageManager.Stub { private int mFlags; }; + private final class ProviderIntentResolver + extends IntentResolver<PackageParser.ProviderIntentInfo, ResolveInfo> { + public List<ResolveInfo> queryIntent(Intent intent, String resolvedType, + boolean defaultOnly, int userId) { + mFlags = defaultOnly ? PackageManager.MATCH_DEFAULT_ONLY : 0; + return super.queryIntent(intent, resolvedType, defaultOnly, userId); + } + + public List<ResolveInfo> queryIntent(Intent intent, String resolvedType, int flags, + int userId) { + if (!sUserManager.exists(userId)) + return null; + mFlags = flags; + return super.queryIntent(intent, resolvedType, + (flags & PackageManager.MATCH_DEFAULT_ONLY) != 0, userId); + } + + public List<ResolveInfo> queryIntentForPackage(Intent intent, String resolvedType, + int flags, ArrayList<PackageParser.Provider> packageProviders, int userId) { + if (!sUserManager.exists(userId)) + return null; + if (packageProviders == null) { + return null; + } + mFlags = flags; + final boolean defaultOnly = (flags & PackageManager.MATCH_DEFAULT_ONLY) != 0; + final int N = packageProviders.size(); + ArrayList<PackageParser.ProviderIntentInfo[]> listCut = + new ArrayList<PackageParser.ProviderIntentInfo[]>(N); + + ArrayList<PackageParser.ProviderIntentInfo> intentFilters; + for (int i = 0; i < N; ++i) { + intentFilters = packageProviders.get(i).intents; + if (intentFilters != null && intentFilters.size() > 0) { + PackageParser.ProviderIntentInfo[] array = + new PackageParser.ProviderIntentInfo[intentFilters.size()]; + intentFilters.toArray(array); + listCut.add(array); + } + } + return super.queryIntentFromList(intent, resolvedType, defaultOnly, listCut, userId); + } + + public final void addProvider(PackageParser.Provider p) { + mProviders.put(p.getComponentName(), p); + if (DEBUG_SHOW_INFO) { + Log.v(TAG, " " + + (p.info.nonLocalizedLabel != null + ? p.info.nonLocalizedLabel : p.info.name) + ":"); + Log.v(TAG, " Class=" + p.info.name); + } + final int NI = p.intents.size(); + int j; + for (j = 0; j < NI; j++) { + PackageParser.ProviderIntentInfo intent = p.intents.get(j); + if (DEBUG_SHOW_INFO) { + Log.v(TAG, " IntentFilter:"); + intent.dump(new LogPrinter(Log.VERBOSE, TAG), " "); + } + if (!intent.debugCheck()) { + Log.w(TAG, "==> For Provider " + p.info.name); + } + addFilter(intent); + } + } + + public final void removeProvider(PackageParser.Provider p) { + mProviders.remove(p.getComponentName()); + if (DEBUG_SHOW_INFO) { + Log.v(TAG, " " + (p.info.nonLocalizedLabel != null + ? p.info.nonLocalizedLabel : p.info.name) + ":"); + Log.v(TAG, " Class=" + p.info.name); + } + final int NI = p.intents.size(); + int j; + for (j = 0; j < NI; j++) { + PackageParser.ProviderIntentInfo intent = p.intents.get(j); + if (DEBUG_SHOW_INFO) { + Log.v(TAG, " IntentFilter:"); + intent.dump(new LogPrinter(Log.VERBOSE, TAG), " "); + } + removeFilter(intent); + } + } + + @Override + protected boolean allowFilterResult( + PackageParser.ProviderIntentInfo filter, List<ResolveInfo> dest) { + ProviderInfo filterPi = filter.provider.info; + for (int i = dest.size() - 1; i >= 0; i--) { + ProviderInfo destPi = dest.get(i).providerInfo; + if (destPi.name == filterPi.name + && destPi.packageName == filterPi.packageName) { + return false; + } + } + return true; + } + + @Override + protected PackageParser.ProviderIntentInfo[] newArray(int size) { + return new PackageParser.ProviderIntentInfo[size]; + } + + @Override + protected boolean isFilterStopped(PackageParser.ProviderIntentInfo filter, int userId) { + if (!sUserManager.exists(userId)) + return true; + PackageParser.Package p = filter.provider.owner; + if (p != null) { + PackageSetting ps = (PackageSetting) p.mExtras; + if (ps != null) { + // System apps are never considered stopped for purposes of + // filtering, because there may be no way for the user to + // actually re-launch them. + return (ps.pkgFlags & ApplicationInfo.FLAG_SYSTEM) == 0 + && ps.getStopped(userId); + } + } + return false; + } + + @Override + protected boolean isPackageForFilter(String packageName, + PackageParser.ProviderIntentInfo info) { + return packageName.equals(info.provider.owner.packageName); + } + + @Override + protected ResolveInfo newResult(PackageParser.ProviderIntentInfo filter, + int match, int userId) { + if (!sUserManager.exists(userId)) + return null; + final PackageParser.ProviderIntentInfo info = filter; + if (!mSettings.isEnabledLPr(info.provider.info, mFlags, userId)) { + return null; + } + final PackageParser.Provider provider = info.provider; + if (mSafeMode && (provider.info.applicationInfo.flags + & ApplicationInfo.FLAG_SYSTEM) == 0) { + return null; + } + PackageSetting ps = (PackageSetting) provider.owner.mExtras; + if (ps == null) { + return null; + } + ProviderInfo pi = PackageParser.generateProviderInfo(provider, mFlags, + ps.readUserState(userId), userId); + if (pi == null) { + return null; + } + final ResolveInfo res = new ResolveInfo(); + res.providerInfo = pi; + if ((mFlags & PackageManager.GET_RESOLVED_FILTER) != 0) { + res.filter = filter; + } + res.priority = info.getPriority(); + res.preferredOrder = provider.owner.mPreferredOrder; + res.match = match; + res.isDefault = info.hasDefault; + res.labelRes = info.labelRes; + res.nonLocalizedLabel = info.nonLocalizedLabel; + res.icon = info.icon; + res.system = isSystemApp(res.providerInfo.applicationInfo); + return res; + } + + @Override + protected void sortResults(List<ResolveInfo> results) { + Collections.sort(results, mResolvePrioritySorter); + } + + @Override + protected void dumpFilter(PrintWriter out, String prefix, + PackageParser.ProviderIntentInfo filter) { + out.print(prefix); + out.print( + Integer.toHexString(System.identityHashCode(filter.provider))); + out.print(' '); + filter.provider.printComponentShortName(out); + out.print(" filter "); + out.println(Integer.toHexString(System.identityHashCode(filter))); + } + + private final HashMap<ComponentName, PackageParser.Provider> mProviders + = new HashMap<ComponentName, PackageParser.Provider>(); + private int mFlags; + }; + private static final Comparator<ResolveInfo> mResolvePrioritySorter = new Comparator<ResolveInfo>() { public int compare(ResolveInfo r1, ResolveInfo r2) { @@ -10454,6 +10677,11 @@ public class PackageManagerService extends IPackageManager.Stub { dumpState.isOptionEnabled(DumpState.OPTION_SHOW_FILTERS))) { dumpState.setTitlePrinted(true); } + if (mProviders.dump(pw, dumpState.getTitlePrinted() ? "\nProvider Resolver Table:" + : "Provider Resolver Table:", " ", packageName, + dumpState.isOptionEnabled(DumpState.OPTION_SHOW_FILTERS))) { + dumpState.setTitlePrinted(true); + } } if (dumpState.isDumping(DumpState.DUMP_PREFERRED)) { @@ -10498,7 +10726,7 @@ public class PackageManagerService extends IPackageManager.Stub { if (dumpState.isDumping(DumpState.DUMP_PROVIDERS)) { boolean printedSomething = false; - for (PackageParser.Provider p : mProvidersByComponent.values()) { + for (PackageParser.Provider p : mProviders.mProviders.values()) { if (packageName != null && !packageName.equals(p.info.packageName)) { continue; } @@ -10512,7 +10740,8 @@ public class PackageManagerService extends IPackageManager.Stub { pw.print(" "); pw.println(p.toString()); } printedSomething = false; - for (Map.Entry<String, PackageParser.Provider> entry : mProviders.entrySet()) { + for (Map.Entry<String, PackageParser.Provider> entry : + mProvidersByAuthority.entrySet()) { PackageParser.Provider p = entry.getValue(); if (packageName != null && !packageName.equals(p.info.packageName)) { continue; diff --git a/services/java/com/android/server/wm/DisplayContent.java b/services/java/com/android/server/wm/DisplayContent.java index 2798104a99ac..afa4f78b51de 100644 --- a/services/java/com/android/server/wm/DisplayContent.java +++ b/services/java/com/android/server/wm/DisplayContent.java @@ -24,6 +24,7 @@ import static com.android.server.wm.WindowManagerService.TAG; import android.app.ActivityManager.StackBoxInfo; import android.graphics.Rect; import android.graphics.Region; +import android.os.Debug; import android.util.Slog; import android.view.Display; import android.view.DisplayInfo; @@ -322,7 +323,8 @@ class DisplayContent { * @return true if a change was made, false otherwise. */ boolean moveHomeStackBox(boolean toTop) { - if (DEBUG_STACK) Slog.d(TAG, "moveHomeStackBox: toTop=" + toTop); + if (DEBUG_STACK) Slog.d(TAG, "moveHomeStackBox: toTop=" + toTop + " Callers=" + + Debug.getCallers(4)); switch (mStackBoxes.size()) { case 0: throw new RuntimeException("moveHomeStackBox: No home StackBox!"); case 1: return false; // Only the home StackBox exists. diff --git a/services/java/com/android/server/wm/FocusedStackFrame.java b/services/java/com/android/server/wm/FocusedStackFrame.java index 365b277c9525..cc48b867f6df 100644 --- a/services/java/com/android/server/wm/FocusedStackFrame.java +++ b/services/java/com/android/server/wm/FocusedStackFrame.java @@ -63,7 +63,7 @@ class FocusedStackFrame { } private void draw(Rect bounds, int color) { - if (DEBUG_STACK) Slog.i(TAG, "draw: bounds=" + bounds.toShortString() + + if (false && DEBUG_STACK) Slog.i(TAG, "draw: bounds=" + bounds.toShortString() + " color=" + Integer.toHexString(color)); mTmpDrawRect.set(bounds); Canvas c = null; @@ -100,7 +100,7 @@ class FocusedStackFrame { } private void positionSurface(Rect bounds) { - if (DEBUG_STACK) Slog.i(TAG, "positionSurface: bounds=" + bounds.toShortString()); + if (false && DEBUG_STACK) Slog.i(TAG, "positionSurface: bounds=" + bounds.toShortString()); mSurfaceControl.setSize(bounds.width(), bounds.height()); mSurfaceControl.setPosition(bounds.left, bounds.top); } @@ -108,7 +108,7 @@ class FocusedStackFrame { // Note: caller responsible for being inside // Surface.openTransaction() / closeTransaction() public void setVisibility(boolean on) { - if (DEBUG_STACK) Slog.i(TAG, "setVisibility: on=" + on + + if (false && DEBUG_STACK) Slog.i(TAG, "setVisibility: on=" + on + " mLastBounds=" + mLastBounds.toShortString() + " mBounds=" + mBounds.toShortString()); if (mSurfaceControl == null) { @@ -132,7 +132,7 @@ class FocusedStackFrame { } public void setBounds(Rect bounds) { - if (DEBUG_STACK) Slog.i(TAG, "setBounds: bounds=" + bounds); + if (false && DEBUG_STACK) Slog.i(TAG, "setBounds: bounds=" + bounds); mBounds.set(bounds); } diff --git a/services/java/com/android/server/wm/WindowManagerService.java b/services/java/com/android/server/wm/WindowManagerService.java index 9bbaf603d313..0e0d098c883e 100644 --- a/services/java/com/android/server/wm/WindowManagerService.java +++ b/services/java/com/android/server/wm/WindowManagerService.java @@ -187,7 +187,7 @@ public class WindowManagerService extends IWindowManager.Stub static final boolean DEBUG_SURFACE_TRACE = false; static final boolean DEBUG_WINDOW_TRACE = false; static final boolean DEBUG_TASK_MOVEMENT = false; - static final boolean DEBUG_STACK = false; + static final boolean DEBUG_STACK = true; static final boolean SHOW_SURFACE_ALLOC = false; static final boolean SHOW_TRANSACTIONS = false; static final boolean SHOW_LIGHT_TRANSACTIONS = false || SHOW_TRANSACTIONS; @@ -2367,10 +2367,10 @@ public class WindowManagerService extends IWindowManager.Stub } if (localLOGV || DEBUG_FOCUS || DEBUG_FOCUS_LIGHT && win==mCurrentFocus) Slog.v( - TAG, "Remove " + win + " client=" - + Integer.toHexString(System.identityHashCode(win.mClient.asBinder())) - + ", surface=" + win.mWinAnimator.mSurfaceControl, - new RuntimeException("here").fillInStackTrace()); + TAG, "Remove " + win + " client=" + + Integer.toHexString(System.identityHashCode(win.mClient.asBinder())) + + ", surface=" + win.mWinAnimator.mSurfaceControl + " Callers=" + + Debug.getCallers(4)); final long origId = Binder.clearCallingIdentity(); diff --git a/test-runner/src/android/test/mock/MockPackageManager.java b/test-runner/src/android/test/mock/MockPackageManager.java index 5f944f6107f5..661bd41632bc 100644 --- a/test-runner/src/android/test/mock/MockPackageManager.java +++ b/test-runner/src/android/test/mock/MockPackageManager.java @@ -282,6 +282,18 @@ public class MockPackageManager extends PackageManager { throw new UnsupportedOperationException(); } + /** @hide */ + @Override + public List<ResolveInfo> queryIntentContentProvidersAsUser( + Intent intent, int flags, int userId) { + throw new UnsupportedOperationException(); + } + + @Override + public List<ResolveInfo> queryIntentContentProviders(Intent intent, int flags) { + throw new UnsupportedOperationException(); + } + @Override public ProviderInfo resolveContentProvider(String name, int flags) { throw new UnsupportedOperationException(); diff --git a/tools/aapt/ResourceTable.cpp b/tools/aapt/ResourceTable.cpp index 52ebaf0f7775..f2e525481399 100644 --- a/tools/aapt/ResourceTable.cpp +++ b/tools/aapt/ResourceTable.cpp @@ -636,6 +636,30 @@ bool isInProductList(const String16& needle, const String16& haystack) { return false; } +/* + * A simple container that holds a resource type and name. It is ordered first by type then + * by name. + */ +struct type_ident_pair_t { + String16 type; + String16 ident; + + type_ident_pair_t() { }; + type_ident_pair_t(const String16& t, const String16& i) : type(t), ident(i) { } + type_ident_pair_t(const type_ident_pair_t& o) : type(o.type), ident(o.ident) { } + inline bool operator < (const type_ident_pair_t& o) const { + int cmp = compare_type(type, o.type); + if (cmp < 0) { + return true; + } else if (cmp > 0) { + return false; + } else { + return strictly_order_type(ident, o.ident); + } + } +}; + + status_t parseAndAddEntry(Bundle* bundle, const sp<AaptFile>& in, ResXMLTree* block, @@ -650,6 +674,7 @@ status_t parseAndAddEntry(Bundle* bundle, const String16& product, bool pseudolocalize, const bool overwrite, + KeyedVector<type_ident_pair_t, bool>* skippedResourceNames, ResourceTable* outTable) { status_t err; @@ -684,6 +709,13 @@ status_t parseAndAddEntry(Bundle* bundle, if (bundleProduct[0] == '\0') { if (strcmp16(String16("default").string(), product.string()) != 0) { + /* + * This string has a product other than 'default'. Do not add it, + * but record it so that if we do not see the same string with + * product 'default' or no product, then report an error. + */ + skippedResourceNames->replaceValueFor( + type_ident_pair_t(curType, ident), true); return NO_ERROR; } } else { @@ -797,6 +829,11 @@ status_t compileResourceFile(Bundle* bundle, DefaultKeyedVector<String16, uint32_t> nextPublicId(0); + // Stores the resource names that were skipped. Typically this happens when + // AAPT is invoked without a product specified and a resource has no + // 'default' product attribute. + KeyedVector<type_ident_pair_t, bool> skippedResourceNames; + ResXMLTree::event_code_t code; do { code = block.next(); @@ -1544,7 +1581,7 @@ status_t compileResourceFile(Bundle* bundle, err = parseAndAddEntry(bundle, in, &block, curParams, myPackage, curType, ident, *curTag, curIsStyled, curFormat, curIsFormatted, - product, false, overwrite, outTable); + product, false, overwrite, &skippedResourceNames, outTable); if (err < NO_ERROR) { // Why err < NO_ERROR instead of err != NO_ERROR? hasErrors = localHasErrors = true; @@ -1557,7 +1594,7 @@ status_t compileResourceFile(Bundle* bundle, err = parseAndAddEntry(bundle, in, &block, pseudoParams, myPackage, curType, ident, *curTag, curIsStyled, curFormat, curIsFormatted, product, - true, overwrite, outTable); + true, overwrite, &skippedResourceNames, outTable); if (err != NO_ERROR) { hasErrors = localHasErrors = true; } @@ -1596,6 +1633,30 @@ status_t compileResourceFile(Bundle* bundle, } } + // For every resource defined, there must be exist one variant with a product attribute + // set to 'default' (or no product attribute at all). + // We check to see that for every resource that was ignored because of a mismatched + // product attribute, some product variant of that resource was processed. + for (size_t i = 0; i < skippedResourceNames.size(); i++) { + if (skippedResourceNames[i]) { + const type_ident_pair_t& p = skippedResourceNames.keyAt(i); + if (!outTable->hasBagOrEntry(myPackage, p.type, p.ident)) { + const char* bundleProduct = + (bundle->getProduct() == NULL) ? "" : bundle->getProduct(); + fprintf(stderr, "In resource file %s: %s\n", + in->getPrintableSource().string(), + curParams.toString().string()); + + fprintf(stderr, "\t%s '%s' does not match product %s.\n" + "\tYou may have forgotten to include a 'default' product variant" + " of the resource.\n", + String8(p.type).string(), String8(p.ident).string(), + bundleProduct[0] == 0 ? "default" : bundleProduct); + return UNKNOWN_ERROR; + } + } + } + return hasErrors ? UNKNOWN_ERROR : NO_ERROR; } @@ -2483,8 +2544,8 @@ status_t ResourceTable::addSymbols(const sp<AaptSymbols>& outSymbols) { String16 comment(c->getComment()); typeSymbols->appendComment(String8(c->getName()), comment, c->getPos()); - //printf("Type symbol %s comment: %s\n", String8(e->getName()).string(), - // String8(comment).string()); + //printf("Type symbol [%08x] %s comment: %s\n", rid, + // String8(c->getName()).string(), String8(comment).string()); comment = c->getTypeComment(); typeSymbols->appendTypeComment(String8(c->getName()), comment); } else { |