diff options
author | Xin Li <delphij@google.com> | 2020-10-19 10:08:16 -0700 |
---|---|---|
committer | Xin Li <delphij@google.com> | 2020-10-19 10:08:16 -0700 |
commit | 6922a97ee2173a257cc6c3006e51eb437f9686de (patch) | |
tree | 6a5704cda0d8a8ab1734702a62b2258543e2acd4 | |
parent | b3230cd639be832c1650e419d5b91aef9f94a324 (diff) | |
parent | 35a2a4c3fdae3d6827ffbc3480365e2ac0ed081b (diff) |
Merge redfin/bramble support.
Bug: 171218636
Merged-In: I25b60e5225247a335cdc0dcd751de47374cdcfbb
Change-Id: Ibc9bb80173f3ba92f91973e047a7451587b67235
509 files changed, 7495 insertions, 1702 deletions
diff --git a/Android.bp b/Android.bp index 8e17f5524a38..1d80153fb8cd 100644 --- a/Android.bp +++ b/Android.bp @@ -449,7 +449,7 @@ java_library { "apex_aidl_interface-java", "suspend_control_aidl_interface-java", "framework-protos", - "game-driver-protos", + "updatable-driver-protos", "android.hidl.base-V1.0-java", "android.hardware.cas-V1.0-java", "android.hardware.cas-V1.1-java", diff --git a/core/java/android/companion/BluetoothDeviceFilter.java b/core/java/android/companion/BluetoothDeviceFilter.java index 2649fbee4246..cf9eeca0d739 100644 --- a/core/java/android/companion/BluetoothDeviceFilter.java +++ b/core/java/android/companion/BluetoothDeviceFilter.java @@ -142,6 +142,16 @@ public final class BluetoothDeviceFilter implements DeviceFilter<BluetoothDevice } @Override + public String toString() { + return "BluetoothDeviceFilter{" + + "mNamePattern=" + mNamePattern + + ", mAddress='" + mAddress + '\'' + + ", mServiceUuids=" + mServiceUuids + + ", mServiceUuidMasks=" + mServiceUuidMasks + + '}'; + } + + @Override public int describeContents() { return 0; } diff --git a/core/java/android/content/pm/PermissionInfo.java b/core/java/android/content/pm/PermissionInfo.java index 652d24108a19..04e15c20b2f4 100644 --- a/core/java/android/content/pm/PermissionInfo.java +++ b/core/java/android/content/pm/PermissionInfo.java @@ -525,6 +525,9 @@ public class PermissionInfo extends PackageItemInfo implements Parcelable { if ((level & PermissionInfo.PROTECTION_FLAG_APP_PREDICTOR) != 0) { protLevel += "|appPredictor"; } + if ((level & PermissionInfo.PROTECTION_FLAG_COMPANION) != 0) { + protLevel += "|companion"; + } if ((level & PermissionInfo.PROTECTION_FLAG_RETAIL_DEMO) != 0) { protLevel += "|retailDemo"; } diff --git a/core/java/android/hardware/camera2/CameraDevice.java b/core/java/android/hardware/camera2/CameraDevice.java index 15625cdeb8f4..decf05396c1f 100644 --- a/core/java/android/hardware/camera2/CameraDevice.java +++ b/core/java/android/hardware/camera2/CameraDevice.java @@ -683,6 +683,8 @@ public abstract class CameraDevice implements AutoCloseable { *<p>BACKWARD_COMPATIBLE devices capable of streaming concurrently with other devices as described by * {@link android.hardware.camera2.CameraManager#getConcurrentCameraIds} have the * following guaranteed streams (when streaming concurrently with other devices)</p> + * <p> Note: The sizes mentioned for these concurrent streams are the maximum sizes guaranteed + * to be supported. Sizes smaller than these, obtained by {@link StreamConfigurationMap#getOutputSizes} for a particular format, are supported as well. </p> * * <table> * <tr><th colspan="5">Concurrent stream guaranteed configurations</th></tr> @@ -696,7 +698,7 @@ public abstract class CameraDevice implements AutoCloseable { * </table><br> * </p> * - * <p> Devices which are not backwards-compatible, support a mandatory single stream of size sVGA with image format {@code DEPTH16} during concurrent operation. + * <p> Devices which are not backwards-compatible, support a mandatory single stream of size sVGA with image format {@code DEPTH16} during concurrent operation. </p> * * <p> For guaranteed concurrent stream configurations:</p> * <p> sVGA refers to the camera device's maximum resolution for that format from {@link StreamConfigurationMap#getOutputSizes} or diff --git a/core/java/android/hardware/display/DisplayManagerInternal.java b/core/java/android/hardware/display/DisplayManagerInternal.java index ad9bf0745779..8d6e937488e4 100644 --- a/core/java/android/hardware/display/DisplayManagerInternal.java +++ b/core/java/android/hardware/display/DisplayManagerInternal.java @@ -260,6 +260,13 @@ public abstract class DisplayManagerInternal { int displayId, long maxFrames, long timestamp); /** + * Temporarily ignore proximity-sensor-based display behavior until there is a change + * to the proximity sensor state. This allows the display to turn back on even if something + * is obstructing the proximity sensor. + */ + public abstract void ignoreProximitySensorUntilChanged(); + + /** * Describes the requested power state of the display. * * This object is intended to describe the general characteristics of the diff --git a/core/java/android/os/GraphicsEnvironment.java b/core/java/android/os/GraphicsEnvironment.java index df58a6c636f5..a6b869d19867 100644 --- a/core/java/android/os/GraphicsEnvironment.java +++ b/core/java/android/os/GraphicsEnvironment.java @@ -78,7 +78,7 @@ public class GraphicsEnvironment { private static final String ACTION_ANGLE_FOR_ANDROID_TOAST_MESSAGE = "android.app.action.ANGLE_FOR_ANDROID_TOAST_MESSAGE"; private static final String INTENT_KEY_A4A_TOAST_MESSAGE = "A4A Toast Message"; - private static final String GAME_DRIVER_WHITELIST_ALL = "*"; + private static final String GAME_DRIVER_ALLOWLIST_ALL = "*"; private static final String GAME_DRIVER_SPHAL_LIBRARIES_FILENAME = "sphal_libraries.txt"; private static final int VULKAN_1_0 = 0x00400000; private static final int VULKAN_1_1 = 0x00401000; @@ -142,19 +142,19 @@ public class GraphicsEnvironment { + "set to: '" + devOptIn + "'"); } - // We only want to use ANGLE if the app is whitelisted or the developer has + // We only want to use ANGLE if the app is allowlisted or the developer has // explicitly chosen something other than default driver. - // The whitelist will be generated by the ANGLE APK at both boot time and + // The allowlist will be generated by the ANGLE APK at both boot time and // ANGLE update time. It will only include apps mentioned in the rules file. - final boolean whitelisted = checkAngleWhitelist(context, coreSettings, packageName); + final boolean allowlisted = checkAngleAllowlist(context, coreSettings, packageName); final boolean requested = devOptIn.equals(sDriverMap.get(OpenGlDriverChoice.ANGLE)); - final boolean useAngle = (whitelisted || requested); + final boolean useAngle = (allowlisted || requested); if (!useAngle) { return false; } - if (whitelisted) { - Log.v(TAG, "ANGLE whitelist includes " + packageName); + if (allowlisted) { + Log.v(TAG, "ANGLE allowlist includes " + packageName); } if (requested) { Log.v(TAG, "ANGLE developer option for " + packageName + ": " + devOptIn); @@ -564,17 +564,17 @@ public class GraphicsEnvironment { } /** - * Pull ANGLE whitelist from GlobalSettings and compare against current package + * Pull ANGLE allowlist from GlobalSettings and compare against current package */ - private static boolean checkAngleWhitelist(Context context, Bundle bundle, String packageName) { + private static boolean checkAngleAllowlist(Context context, Bundle bundle, String packageName) { final ContentResolver contentResolver = context.getContentResolver(); - final List<String> angleWhitelist = + final List<String> angleAllowlist = getGlobalSettingsString(contentResolver, bundle, - Settings.Global.GLOBAL_SETTINGS_ANGLE_WHITELIST); + Settings.Global.GLOBAL_SETTINGS_ANGLE_ALLOWLIST); - if (DEBUG) Log.v(TAG, "ANGLE whitelist: " + angleWhitelist); + if (DEBUG) Log.v(TAG, "ANGLE allowlist: " + angleAllowlist); - return angleWhitelist.contains(packageName); + return angleAllowlist.contains(packageName); } /** @@ -584,7 +584,7 @@ public class GraphicsEnvironment { * @param bundle * @param packageName * @return true: ANGLE setup successfully - * false: ANGLE not setup (not on whitelist, ANGLE not present, etc.) + * false: ANGLE not setup (not on allowlist, ANGLE not present, etc.) */ public boolean setupAngle(Context context, Bundle bundle, PackageManager pm, String packageName) { @@ -750,8 +750,8 @@ public class GraphicsEnvironment { // 2. GAME_DRIVER_OPT_OUT_APPS // 3. GAME_DRIVER_PRERELEASE_OPT_IN_APPS // 4. GAME_DRIVER_OPT_IN_APPS - // 5. GAME_DRIVER_BLACKLIST - // 6. GAME_DRIVER_WHITELIST + // 5. GAME_DRIVER_DENYLIST + // 6. GAME_DRIVER_ALLOWLIST switch (coreSettings.getInt(Settings.Global.GAME_DRIVER_ALL_APPS, 0)) { case GAME_DRIVER_GLOBAL_OPT_IN_OFF: if (DEBUG) Log.v(TAG, "Game Driver is turned off on this device."); @@ -790,21 +790,21 @@ public class GraphicsEnvironment { final boolean isOptIn = getGlobalSettingsString(null, coreSettings, Settings.Global.GAME_DRIVER_OPT_IN_APPS) .contains(appPackageName); - final List<String> whitelist = - getGlobalSettingsString(null, coreSettings, Settings.Global.GAME_DRIVER_WHITELIST); - if (!isOptIn && whitelist.indexOf(GAME_DRIVER_WHITELIST_ALL) != 0 - && !whitelist.contains(appPackageName)) { - if (DEBUG) Log.v(TAG, "App is not on the whitelist for Game Driver."); + final List<String> allowlist = + getGlobalSettingsString(null, coreSettings, Settings.Global.GAME_DRIVER_ALLOWLIST); + if (!isOptIn && allowlist.indexOf(GAME_DRIVER_ALLOWLIST_ALL) != 0 + && !allowlist.contains(appPackageName)) { + if (DEBUG) Log.v(TAG, "App is not on the allowlist for Game Driver."); return null; } - // If the application is not opted-in, then check whether it's on the blacklist, - // terminate early if it's on the blacklist and fallback to system driver. + // If the application is not opted-in, then check whether it's on the denylist, + // terminate early if it's on the denylist and fallback to system driver. if (!isOptIn && getGlobalSettingsString( - null, coreSettings, Settings.Global.GAME_DRIVER_BLACKLIST) + null, coreSettings, Settings.Global.GAME_DRIVER_DENYLIST) .contains(appPackageName)) { - if (DEBUG) Log.v(TAG, "App is on the blacklist for Game Driver."); + if (DEBUG) Log.v(TAG, "App is on the denylist for Game Driver."); return null; } diff --git a/core/java/android/os/PowerManagerInternal.java b/core/java/android/os/PowerManagerInternal.java index 653a5594f495..f9e146a9dbdc 100644 --- a/core/java/android/os/PowerManagerInternal.java +++ b/core/java/android/os/PowerManagerInternal.java @@ -17,6 +17,7 @@ package android.os; import android.view.Display; +import android.view.KeyEvent; import java.util.function.Consumer; @@ -319,4 +320,7 @@ public abstract class PowerManagerInternal { /** Returns information about the last wakeup event. */ public abstract PowerManager.WakeData getLastWakeup(); + + /** Allows power button to intercept a power key button press. */ + public abstract boolean interceptPowerKeyDown(KeyEvent event); } diff --git a/core/java/android/os/ZygoteProcess.java b/core/java/android/os/ZygoteProcess.java index 77e724beb712..9e332e9b0456 100644 --- a/core/java/android/os/ZygoteProcess.java +++ b/core/java/android/os/ZygoteProcess.java @@ -922,13 +922,13 @@ public class ZygoteProcess { } /** - * Push hidden API denylisting exemptions into the zygote process(es). + * Push hidden API deny-listing exemptions into the zygote process(es). * * <p>The list of exemptions will take affect for all new processes forked from the zygote after * this call. * * @param exemptions List of hidden API exemption prefixes. Any matching members are treated as - * allowlisted/public APIs (i.e. allowed, no logging of usage). + * allowed/public APIs (i.e. allowed, no logging of usage). */ public boolean setApiDenylistExemptions(List<String> exemptions) { synchronized (mLock) { diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java index d9aae25065f6..0dd4375d6cc6 100755 --- a/core/java/android/provider/Settings.java +++ b/core/java/android/provider/Settings.java @@ -10770,17 +10770,6 @@ public final class Settings { public static final String MODE_RINGER = "mode_ringer"; /** - * Specifies whether Enhanced Connectivity is enabled or not. This setting allows the - * Connectivity Thermal Power Manager to actively help the device to save power in 5G - * scenarios - * Type: int 1 is enabled, 0 is disabled - * - * @hide - */ - public static final String ENHANCED_CONNECTIVITY_ENABLED = - "enhanced_connectivity_enable"; - - /** * Overlay display devices setting. * The associated value is a specially formatted string that describes the * size and density of simulated secondary display devices. @@ -12279,8 +12268,8 @@ public final class Settings { * List of package names that should check ANGLE rules * @hide */ - public static final String GLOBAL_SETTINGS_ANGLE_WHITELIST = - "angle_whitelist"; + public static final String GLOBAL_SETTINGS_ANGLE_ALLOWLIST = + "angle_allowlist"; /** * Show the "ANGLE In Use" dialog box to the user when ANGLE is the OpenGL driver. @@ -12322,24 +12311,24 @@ public final class Settings { public static final String GAME_DRIVER_OPT_OUT_APPS = "game_driver_opt_out_apps"; /** - * Apps on the blacklist that are forbidden to use Game Driver. + * Apps on the denylist that are forbidden to use Game Driver. * @hide */ - public static final String GAME_DRIVER_BLACKLIST = "game_driver_blacklist"; + public static final String GAME_DRIVER_DENYLIST = "game_driver_denylist"; /** - * List of blacklists, each blacklist is a blacklist for a specific version of Game Driver. + * List of denylists, each denylist is a denylist for a specific version of Game Driver. * @hide */ - public static final String GAME_DRIVER_BLACKLISTS = "game_driver_blacklists"; + public static final String GAME_DRIVER_DENYLISTS = "game_driver_denylists"; /** - * Apps on the whitelist that are allowed to use Game Driver. + * Apps on the allowlist that are allowed to use Game Driver. * The string is a list of application package names, seperated by comma. * i.e. <apk1>,<apk2>,...,<apkN> * @hide */ - public static final String GAME_DRIVER_WHITELIST = "game_driver_whitelist"; + public static final String GAME_DRIVER_ALLOWLIST = "game_driver_allowlist"; /** * List of libraries in sphal accessible by Game Driver diff --git a/core/java/android/service/wallpaper/IWallpaperEngine.aidl b/core/java/android/service/wallpaper/IWallpaperEngine.aidl index 84b6869bf620..90392e65794a 100644 --- a/core/java/android/service/wallpaper/IWallpaperEngine.aidl +++ b/core/java/android/service/wallpaper/IWallpaperEngine.aidl @@ -38,4 +38,5 @@ oneway interface IWallpaperEngine { @UnsupportedAppUsage void destroy(); void setZoomOut(float scale); + void scalePreview(in Rect positionInWindow); } diff --git a/core/java/android/service/wallpaper/WallpaperService.java b/core/java/android/service/wallpaper/WallpaperService.java index 0d420c5936ae..e083417644e3 100644 --- a/core/java/android/service/wallpaper/WallpaperService.java +++ b/core/java/android/service/wallpaper/WallpaperService.java @@ -16,6 +16,11 @@ package android.service.wallpaper; +import static android.graphics.Matrix.MSCALE_X; +import static android.graphics.Matrix.MSCALE_Y; +import static android.graphics.Matrix.MSKEW_X; +import static android.graphics.Matrix.MSKEW_Y; + import android.annotation.FloatRange; import android.annotation.Nullable; import android.annotation.SdkConstant; @@ -31,6 +36,7 @@ import android.content.Intent; import android.content.res.TypedArray; import android.graphics.Bitmap; import android.graphics.Canvas; +import android.graphics.Matrix; import android.graphics.PixelFormat; import android.graphics.Point; import android.graphics.Rect; @@ -123,7 +129,8 @@ public abstract class WallpaperService extends Service { private static final int MSG_WINDOW_MOVED = 10035; private static final int MSG_TOUCH_EVENT = 10040; private static final int MSG_REQUEST_WALLPAPER_COLORS = 10050; - private static final int MSG_SCALE = 10100; + private static final int MSG_ZOOM = 10100; + private static final int MSG_SCALE_PREVIEW = 10110; private static final int NOTIFY_COLORS_RATE_LIMIT_MS = 1000; @@ -178,6 +185,7 @@ public abstract class WallpaperService extends Service { WindowManager.LayoutParams.PRIVATE_FLAG_WANTS_OFFSET_NOTIFICATIONS; int mCurWindowFlags = mWindowFlags; int mCurWindowPrivateFlags = mWindowPrivateFlags; + Rect mPreviewSurfacePosition; final Rect mVisibleInsets = new Rect(); final Rect mWinFrame = new Rect(); final Rect mContentInsets = new Rect(); @@ -194,6 +202,8 @@ public abstract class WallpaperService extends Service { final InsetsSourceControl[] mTempControls = new InsetsSourceControl[0]; final MergedConfiguration mMergedConfiguration = new MergedConfiguration(); private final Point mSurfaceSize = new Point(); + private final Matrix mTmpMatrix = new Matrix(); + private final float[] mTmpValues = new float[9]; final WindowManager.LayoutParams mLayout = new WindowManager.LayoutParams(); @@ -366,7 +376,7 @@ public abstract class WallpaperService extends Service { Message msg = mCaller.obtainMessage(MSG_WALLPAPER_OFFSETS); mCaller.sendMessage(msg); } - Message msg = mCaller.obtainMessageI(MSG_SCALE, Float.floatToIntBits(zoom)); + Message msg = mCaller.obtainMessageI(MSG_ZOOM, Float.floatToIntBits(zoom)); mCaller.sendMessage(msg); } } @@ -747,6 +757,8 @@ public abstract class WallpaperService extends Service { out.println(mMergedConfiguration.getMergedConfiguration()); out.print(prefix); out.print("mLayout="); out.println(mLayout); out.print(prefix); out.print("mZoom="); out.println(mZoom); + out.print(prefix); out.print("mPreviewSurfacePosition="); + out.println(mPreviewSurfacePosition); synchronized (mLock) { out.print(prefix); out.print("mPendingXOffset="); out.print(mPendingXOffset); out.print(" mPendingXOffset="); out.println(mPendingXOffset); @@ -908,7 +920,6 @@ public abstract class WallpaperService extends Service { mInsetsState, mTempControls, mSurfaceSize, mTmpSurfaceControl); if (mSurfaceControl.isValid()) { mSurfaceHolder.mSurface.copyFrom(mSurfaceControl); - mSurfaceControl.release(); } if (DEBUG) Log.v(TAG, "New surface: " + mSurfaceHolder.mSurface @@ -1063,6 +1074,7 @@ public abstract class WallpaperService extends Service { if (redrawNeeded) { mSession.finishDrawing(mWindow, null /* postDrawTransaction */); } + reposition(); mIWallpaperEngine.reportShown(); } } catch (RemoteException ex) { @@ -1073,6 +1085,39 @@ public abstract class WallpaperService extends Service { } } + private void scalePreview(Rect position) { + if (isPreview() && mPreviewSurfacePosition == null && position != null + || mPreviewSurfacePosition != null + && !mPreviewSurfacePosition.equals(position)) { + mPreviewSurfacePosition = position; + if (mSurfaceControl.isValid()) { + reposition(); + } else { + updateSurface(false, false, false); + } + } + } + + private void reposition() { + if (mPreviewSurfacePosition == null) { + return; + } + if (DEBUG) { + Log.i(TAG, "reposition: rect: " + mPreviewSurfacePosition); + } + + mTmpMatrix.setTranslate(mPreviewSurfacePosition.left, mPreviewSurfacePosition.top); + mTmpMatrix.postScale(((float) mPreviewSurfacePosition.width()) / mCurWidth, + ((float) mPreviewSurfacePosition.height()) / mCurHeight); + mTmpMatrix.getValues(mTmpValues); + SurfaceControl.Transaction t = new SurfaceControl.Transaction(); + t.setPosition(mSurfaceControl, mPreviewSurfacePosition.left, + mPreviewSurfacePosition.top); + t.setMatrix(mSurfaceControl, mTmpValues[MSCALE_X], mTmpValues[MSKEW_Y], + mTmpValues[MSKEW_X], mTmpValues[MSCALE_Y]); + t.apply(); + } + void attach(IWallpaperEngineWrapper wrapper) { if (DEBUG) Log.v(TAG, "attach: " + this + " wrapper=" + wrapper); if (mDestroyed) { @@ -1415,7 +1460,7 @@ public abstract class WallpaperService extends Service { } public void setZoomOut(float scale) { - Message msg = mCaller.obtainMessageI(MSG_SCALE, Float.floatToIntBits(scale)); + Message msg = mCaller.obtainMessageI(MSG_ZOOM, Float.floatToIntBits(scale)); mCaller.sendMessage(msg); } @@ -1445,6 +1490,11 @@ public abstract class WallpaperService extends Service { mDetached.set(true); } + public void scalePreview(Rect position) { + Message msg = mCaller.obtainMessageO(MSG_SCALE_PREVIEW, position); + mCaller.sendMessage(msg); + } + private void doDetachEngine() { mActiveEngines.remove(mEngine); mEngine.detach(); @@ -1491,9 +1541,12 @@ public abstract class WallpaperService extends Service { case MSG_UPDATE_SURFACE: mEngine.updateSurface(true, false, false); break; - case MSG_SCALE: + case MSG_ZOOM: mEngine.setZoom(Float.intBitsToFloat(message.arg1)); break; + case MSG_SCALE_PREVIEW: + mEngine.scalePreview((Rect) message.obj); + break; case MSG_VISIBILITY_CHANGED: if (DEBUG) Log.v(TAG, "Visibility change in " + mEngine + ": " + message.arg1); diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java index 7453f21d379b..bcf3b49c6644 100644 --- a/core/java/android/view/ViewRootImpl.java +++ b/core/java/android/view/ViewRootImpl.java @@ -1824,19 +1824,13 @@ public final class ViewRootImpl implements ViewParent, /** * Called after window layout to update the bounds surface. If the surface insets have changed * or the surface has resized, update the bounds surface. - * - * @param shouldReparent Whether it should reparent the bounds layer to the main SurfaceControl. */ - private void updateBoundsLayer(boolean shouldReparent) { + private void updateBoundsLayer() { if (mBoundsLayer != null) { setBoundsLayerCrop(); - mTransaction.deferTransactionUntil(mBoundsLayer, getRenderSurfaceControl(), - mSurface.getNextFrameNumber()); - - if (shouldReparent) { - mTransaction.reparent(mBoundsLayer, getRenderSurfaceControl()); - } - mTransaction.apply(); + mTransaction.deferTransactionUntil(mBoundsLayer, + getRenderSurfaceControl(), mSurface.getNextFrameNumber()) + .apply(); } } @@ -2919,16 +2913,7 @@ public final class ViewRootImpl implements ViewParent, } if (surfaceSizeChanged || surfaceReplaced || surfaceCreated || windowAttributesChanged) { - // If the surface has been replaced, there's a chance the bounds layer is not parented - // to the new layer. When updating bounds layer, also reparent to the main VRI - // SurfaceControl to ensure it's correctly placed in the hierarchy. - // - // This needs to be done on the client side since WMS won't reparent the children to the - // new surface if it thinks the app is closing. WMS gets the signal that the app is - // stopping, but on the client side it doesn't get stopped since it's restarted quick - // enough. WMS doesn't want to keep around old children since they will leak when the - // client creates new children. - updateBoundsLayer(surfaceReplaced); + updateBoundsLayer(); } final boolean didLayout = layoutRequested && (!mStopped || mReportNextDraw); diff --git a/core/java/android/view/accessibility/AccessibilityNodeInfo.java b/core/java/android/view/accessibility/AccessibilityNodeInfo.java index 214da380ccda..8bc7f3c91d8c 100644 --- a/core/java/android/view/accessibility/AccessibilityNodeInfo.java +++ b/core/java/android/view/accessibility/AccessibilityNodeInfo.java @@ -1768,7 +1768,7 @@ public class AccessibilityNodeInfo implements Parcelable { * <strong>Note:</strong> The primary usage of this API is for UI test automation * and in order to report the fully qualified view id if an {@link AccessibilityNodeInfo} * the client has to set the {@link AccessibilityServiceInfo#FLAG_REPORT_VIEW_IDS} - * flag when configuring his {@link android.accessibilityservice.AccessibilityService}. + * flag when configuring the {@link android.accessibilityservice.AccessibilityService}. * </p> * <p> * <strong>Note:</strong> If this view hierarchy has a {@link SurfaceView} embedding another @@ -3206,7 +3206,7 @@ public class AccessibilityNodeInfo implements Parcelable { * <strong>Note:</strong> The primary usage of this API is for UI test automation * and in order to report the source view id of an {@link AccessibilityNodeInfo} the * client has to set the {@link AccessibilityServiceInfo#FLAG_REPORT_VIEW_IDS} - * flag when configuring his {@link android.accessibilityservice.AccessibilityService}. + * flag when configuring the {@link android.accessibilityservice.AccessibilityService}. * </p> * @return The id resource name. diff --git a/core/java/android/view/inputmethod/InlineSuggestionsRequest.java b/core/java/android/view/inputmethod/InlineSuggestionsRequest.java index cce109074d82..6300320f5eb5 100644 --- a/core/java/android/view/inputmethod/InlineSuggestionsRequest.java +++ b/core/java/android/view/inputmethod/InlineSuggestionsRequest.java @@ -47,6 +47,9 @@ public final class InlineSuggestionsRequest implements Parcelable { /** * Max number of suggestions expected from the response. It must be a positive value. * Defaults to {@code SUGGESTION_COUNT_UNLIMITED} if not set. + * + * <p>In practice, it is recommended that the max suggestion count does not exceed <b>5</b> + * for performance reasons.</p> */ private final int mMaxSuggestionCount; @@ -67,6 +70,9 @@ public final class InlineSuggestionsRequest implements Parcelable { /** * The IME provided locales for the request. If non-empty, the inline suggestions should * return languages from the supported locales. If not provided, it'll default to system locale. + * + * <p>Note for Autofill Providers: It is <b>recommended</b> for the returned inline suggestions + * to have one locale to guarantee consistent UI rendering.</p> */ private @NonNull LocaleList mSupportedLocales; @@ -227,6 +233,9 @@ public final class InlineSuggestionsRequest implements Parcelable { /** * Max number of suggestions expected from the response. It must be a positive value. * Defaults to {@code SUGGESTION_COUNT_UNLIMITED} if not set. + * + * <p>In practice, it is recommended that the max suggestion count does not exceed <b>5</b> + * for performance reasons.</p> */ @DataClass.Generated.Member public int getMaxSuggestionCount() { @@ -256,6 +265,9 @@ public final class InlineSuggestionsRequest implements Parcelable { /** * The IME provided locales for the request. If non-empty, the inline suggestions should * return languages from the supported locales. If not provided, it'll default to system locale. + * + * <p>Note for Autofill Providers: It is <b>recommended</b> for the returned inline suggestions + * to have one locale to guarantee consistent UI rendering.</p> */ @DataClass.Generated.Member public @NonNull LocaleList getSupportedLocales() { @@ -458,6 +470,9 @@ public final class InlineSuggestionsRequest implements Parcelable { /** * Max number of suggestions expected from the response. It must be a positive value. * Defaults to {@code SUGGESTION_COUNT_UNLIMITED} if not set. + * + * <p>In practice, it is recommended that the max suggestion count does not exceed <b>5</b> + * for performance reasons.</p> */ @DataClass.Generated.Member public @NonNull Builder setMaxSuggestionCount(int value) { @@ -508,6 +523,9 @@ public final class InlineSuggestionsRequest implements Parcelable { /** * The IME provided locales for the request. If non-empty, the inline suggestions should * return languages from the supported locales. If not provided, it'll default to system locale. + * + * <p>Note for Autofill Providers: It is <b>recommended</b> for the returned inline suggestions + * to have one locale to guarantee consistent UI rendering.</p> */ @DataClass.Generated.Member public @NonNull Builder setSupportedLocales(@NonNull LocaleList value) { @@ -604,7 +622,7 @@ public final class InlineSuggestionsRequest implements Parcelable { } @DataClass.Generated( - time = 1588109685838L, + time = 1595457701315L, codegenVersion = "1.0.15", sourceFile = "frameworks/base/core/java/android/view/inputmethod/InlineSuggestionsRequest.java", inputSignatures = "public static final int SUGGESTION_COUNT_UNLIMITED\nprivate final int mMaxSuggestionCount\nprivate final @android.annotation.NonNull java.util.List<android.widget.inline.InlinePresentationSpec> mInlinePresentationSpecs\nprivate @android.annotation.NonNull java.lang.String mHostPackageName\nprivate @android.annotation.NonNull android.os.LocaleList mSupportedLocales\nprivate @android.annotation.NonNull android.os.Bundle mExtras\nprivate @android.annotation.Nullable android.os.IBinder mHostInputToken\nprivate int mHostDisplayId\npublic void setHostInputToken(android.os.IBinder)\nprivate boolean extrasEquals(android.os.Bundle)\nprivate void parcelHostInputToken(android.os.Parcel,int)\nprivate @android.annotation.Nullable android.os.IBinder unparcelHostInputToken(android.os.Parcel)\npublic void setHostDisplayId(int)\nprivate void onConstructed()\npublic void filterContentTypes()\nprivate static int defaultMaxSuggestionCount()\nprivate static java.lang.String defaultHostPackageName()\nprivate static android.os.LocaleList defaultSupportedLocales()\nprivate static @android.annotation.Nullable android.os.IBinder defaultHostInputToken()\nprivate static @android.annotation.Nullable int defaultHostDisplayId()\nprivate static @android.annotation.NonNull android.os.Bundle defaultExtras()\nclass InlineSuggestionsRequest extends java.lang.Object implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genEqualsHashCode=true, genToString=true, genBuilder=true)\nabstract android.view.inputmethod.InlineSuggestionsRequest.Builder setInlinePresentationSpecs(java.util.List<android.widget.inline.InlinePresentationSpec>)\nabstract android.view.inputmethod.InlineSuggestionsRequest.Builder setHostPackageName(java.lang.String)\nabstract android.view.inputmethod.InlineSuggestionsRequest.Builder setHostInputToken(android.os.IBinder)\nabstract android.view.inputmethod.InlineSuggestionsRequest.Builder setHostDisplayId(int)\nclass BaseBuilder extends java.lang.Object implements []") diff --git a/core/java/android/view/inputmethod/InlineSuggestionsResponse.java b/core/java/android/view/inputmethod/InlineSuggestionsResponse.java index be833df61ec4..b393c67d7876 100644 --- a/core/java/android/view/inputmethod/InlineSuggestionsResponse.java +++ b/core/java/android/view/inputmethod/InlineSuggestionsResponse.java @@ -32,7 +32,18 @@ import java.util.List; */ @DataClass(genEqualsHashCode = true, genToString = true, genHiddenConstructor = true) public final class InlineSuggestionsResponse implements Parcelable { - private final @NonNull List<InlineSuggestion> mInlineSuggestions; + /** + * List of {@link InlineSuggestion}s returned as a part of this response. + * + * <p>When the host app requests to inflate this <b>ordered</b> list of inline suggestions by + * calling {@link InlineSuggestion#inflate}, it is the host's responsibility to track the + * order of the inflated {@link android.view.View}s. These views are to be added in + * order to the view hierarchy, because the inflation calls will return asynchronously.</p> + * + * <p>The inflation ordering does not apply to the pinned icon.</p> + */ + @NonNull + private final List<InlineSuggestion> mInlineSuggestions; /** * Creates a new {@link InlineSuggestionsResponse}, for testing purpose. @@ -48,7 +59,7 @@ public final class InlineSuggestionsResponse implements Parcelable { - // Code below generated by codegen v1.0.14. + // Code below generated by codegen v1.0.15. // // DO NOT MODIFY! // CHECKSTYLE:OFF Generated code @@ -64,6 +75,15 @@ public final class InlineSuggestionsResponse implements Parcelable { /** * Creates a new InlineSuggestionsResponse. * + * @param inlineSuggestions + * List of {@link InlineSuggestion}s returned as a part of this response. + * + * <p>When the host app requests to inflate this <b>ordered</b> list of inline suggestions by + * calling {@link InlineSuggestion#inflate}, it is the host's responsibility to track the + * order of the inflated {@link android.view.View}s. These views are to be added in + * order to the view hierarchy, because the inflation calls will return asynchronously.</p> + * + * <p>The inflation ordering does not apply to the pinned icon.</p> * @hide */ @DataClass.Generated.Member @@ -76,6 +96,16 @@ public final class InlineSuggestionsResponse implements Parcelable { // onConstructed(); // You can define this method to get a callback } + /** + * List of {@link InlineSuggestion}s returned as a part of this response. + * + * <p>When the host app requests to inflate this <b>ordered</b> list of inline suggestions by + * calling {@link InlineSuggestion#inflate}, it is the host's responsibility to track the + * order of the inflated {@link android.view.View}s. These views are to be added in + * order to the view hierarchy, because the inflation calls will return asynchronously.</p> + * + * <p>The inflation ordering does not apply to the pinned icon.</p> + */ @DataClass.Generated.Member public @NonNull List<InlineSuggestion> getInlineSuggestions() { return mInlineSuggestions; @@ -164,8 +194,8 @@ public final class InlineSuggestionsResponse implements Parcelable { }; @DataClass.Generated( - time = 1578972149519L, - codegenVersion = "1.0.14", + time = 1595891876037L, + codegenVersion = "1.0.15", sourceFile = "frameworks/base/core/java/android/view/inputmethod/InlineSuggestionsResponse.java", inputSignatures = "private final @android.annotation.NonNull java.util.List<android.view.inputmethod.InlineSuggestion> mInlineSuggestions\npublic static @android.annotation.TestApi @android.annotation.NonNull android.view.inputmethod.InlineSuggestionsResponse newInlineSuggestionsResponse(java.util.List<android.view.inputmethod.InlineSuggestion>)\nclass InlineSuggestionsResponse extends java.lang.Object implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genEqualsHashCode=true, genToString=true, genHiddenConstructor=true)") @Deprecated diff --git a/core/java/com/android/internal/os/ZygoteInit.java b/core/java/com/android/internal/os/ZygoteInit.java index ef72cee90611..cb9df448db30 100644 --- a/core/java/com/android/internal/os/ZygoteInit.java +++ b/core/java/com/android/internal/os/ZygoteInit.java @@ -600,6 +600,9 @@ public class ZygoteInit { VMRuntime.registerAppInfo(profilePath, codePaths); } + /** + * Sets the list of classes/methods for the hidden API + */ public static void setApiDenylistExemptions(String[] exemptions) { VMRuntime.getRuntime().setHiddenApiExemptions(exemptions); } diff --git a/core/java/com/android/internal/policy/GestureNavigationSettingsObserver.java b/core/java/com/android/internal/policy/GestureNavigationSettingsObserver.java index 0e703fa686e0..205c5fd735ea 100644 --- a/core/java/com/android/internal/policy/GestureNavigationSettingsObserver.java +++ b/core/java/com/android/internal/policy/GestureNavigationSettingsObserver.java @@ -103,8 +103,11 @@ public class GestureNavigationSettingsObserver extends ContentObserver { final DisplayMetrics dm = userRes.getDisplayMetrics(); final float defaultInset = userRes.getDimension( com.android.internal.R.dimen.config_backGestureInset) / dm.density; - final float backGestureInset = DeviceConfig.getFloat(DeviceConfig.NAMESPACE_SYSTEMUI, - BACK_GESTURE_EDGE_WIDTH, defaultInset); + // Only apply the back gesture config if there is an existing inset + final float backGestureInset = defaultInset > 0 + ? DeviceConfig.getFloat(DeviceConfig.NAMESPACE_SYSTEMUI, + BACK_GESTURE_EDGE_WIDTH, defaultInset) + : defaultInset; final float inset = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, backGestureInset, dm); final float scale = Settings.Secure.getFloatForUser( diff --git a/core/jni/android_net_NetUtils.cpp b/core/jni/android_net_NetUtils.cpp index 7d6135bda9c6..8d4c4e5311f8 100644 --- a/core/jni/android_net_NetUtils.cpp +++ b/core/jni/android_net_NetUtils.cpp @@ -95,12 +95,11 @@ static void android_net_utils_detachBPFFilter(JNIEnv *env, jobject clazz, jobjec { int optval_ignored = 0; int fd = jniGetFDFromFileDescriptor(env, javaFd); - if (setsockopt( - fd, SOL_SOCKET, SO_DETACH_FILTER, &optval_ignored, sizeof(optval_ignored)) != 0) { + if (setsockopt(fd, SOL_SOCKET, SO_DETACH_FILTER, &optval_ignored, sizeof(optval_ignored)) != + 0) { jniThrowExceptionFmt(env, "java/net/SocketException", "setsockopt(SO_DETACH_FILTER): %s", strerror(errno)); } - } static jboolean android_net_utils_bindProcessToNetwork(JNIEnv *env, jobject thiz, jint netId) diff --git a/core/proto/android/providers/settings/global.proto b/core/proto/android/providers/settings/global.proto index 9bbe0caa9e98..a80bb4013854 100644 --- a/core/proto/android/providers/settings/global.proto +++ b/core/proto/android/providers/settings/global.proto @@ -445,14 +445,14 @@ message GlobalSettingsProto { // i.e. <pkg1>,<pkg2>,...,<pkgN> optional SettingProto game_driver_opt_out_apps = 10; // Game Driver - List of Apps that are forbidden to use Game Driver - optional SettingProto game_driver_blacklist = 11; + optional SettingProto game_driver_denylist = 11; // Game Driver - List of Apps that are allowed to use Game Driver - optional SettingProto game_driver_whitelist = 12; + optional SettingProto game_driver_allowlist = 12; // ANGLE - List of Apps that can check ANGLE rules - optional SettingProto angle_whitelist = 13; - // Game Driver - List of blacklists, each blacklist is a blacklist for + optional SettingProto angle_allowlist = 13; + // Game Driver - List of denylists, each denylist is a denylist for // a specific Game Driver version - optional SettingProto game_driver_blacklists = 14; + optional SettingProto game_driver_denylists = 14; // ANGLE - Show a dialog box when ANGLE is selected for the currently running PKG optional SettingProto show_angle_in_use_dialog = 15; // Game Driver - List of libraries in sphal accessible by Game Driver diff --git a/core/res/res/values-am/strings.xml b/core/res/res/values-am/strings.xml index 5eb271e754a6..54a002db3c2f 100644 --- a/core/res/res/values-am/strings.xml +++ b/core/res/res/values-am/strings.xml @@ -1216,7 +1216,7 @@ <string name="dump_heap_ready_text" msgid="5849618132123045516">"የ<xliff:g id="PROC">%1$s</xliff:g> ሂደት ተራጋፊ ክምር ለማጋራት ለእርስዎ ይገኛል። ይጠንቀቁ፦ ይህ ተራጋፊ ክምር ሂደቱ ሊደርስባቸው የሚችለው ማንኛውም የግል መረጃ ሊኖረው ይችላል፣ ይህ እርስዎ የተየቧቸውን ነገሮች ሊያካትት ይችላል።"</string> <string name="sendText" msgid="493003724401350724">"ለፅሁፍ ድርጊት ምረጥ"</string> <string name="volume_ringtone" msgid="134784084629229029">"የስልክ ጥሪ ድምፅ"</string> - <string name="volume_music" msgid="7727274216734955095">" ማህደረ መረጃ ክፍልፍል"</string> + <string name="volume_music" msgid="7727274216734955095">"የማህደረ መረጃ ድምጽ መጠን"</string> <string name="volume_music_hint_playing_through_bluetooth" msgid="2614142915948898228">"በብሉቱዝ በኩል ማጫወት"</string> <string name="volume_music_hint_silent_ringtone_selected" msgid="1514829655029062233">"የፀጥታ የስልክ የደውል ድምፅ ተዘጋጅቷል"</string> <string name="volume_call" msgid="7625321655265747433">"የጥሪ ላይ ድም ፅ መጨመሪያ/መቀነሻ"</string> @@ -1227,7 +1227,7 @@ <string name="volume_icon_description_bluetooth" msgid="7540388479345558400">"የብሉቱዝ ድምፅ መጠን"</string> <string name="volume_icon_description_ringer" msgid="2187800636867423459">"የስልክ ጥሪ ድምፅ መጠን"</string> <string name="volume_icon_description_incall" msgid="4491255105381227919">"የስልክ ጥሪ ድምፅ መጠን"</string> - <string name="volume_icon_description_media" msgid="4997633254078171233">"የማህደረ መረጃ ክፍልፍል"</string> + <string name="volume_icon_description_media" msgid="4997633254078171233">"የማህደረ መረጃ ድምጽ መጠን"</string> <string name="volume_icon_description_notification" msgid="579091344110747279">"የማሳወቂያ ክፍልፍል"</string> <string name="ringtone_default" msgid="9118299121288174597">"ነባሪ የስልክ ላይ ጥሪ"</string> <string name="ringtone_default_with_actual" msgid="2709686194556159773">"ነባሪ (<xliff:g id="ACTUAL_RINGTONE">%1$s</xliff:g>)"</string> diff --git a/core/res/res/values-ar/strings.xml b/core/res/res/values-ar/strings.xml index a1478cf27f69..7564ae779471 100644 --- a/core/res/res/values-ar/strings.xml +++ b/core/res/res/values-ar/strings.xml @@ -270,9 +270,9 @@ <string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"وضع صامت"</string> <string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"الصوت متوقف"</string> <string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"الصوت قيد التفعيل"</string> - <string name="global_actions_toggle_airplane_mode" msgid="6911684460146916206">"وضع الطائرة"</string> - <string name="global_actions_airplane_mode_on_status" msgid="5508025516695361936">"وضع الطائرة قيد التفعيل"</string> - <string name="global_actions_airplane_mode_off_status" msgid="8522219771500505475">"وضع الطائرة متوقف"</string> + <string name="global_actions_toggle_airplane_mode" msgid="6911684460146916206">"وضع الطيران"</string> + <string name="global_actions_airplane_mode_on_status" msgid="5508025516695361936">"وضع الطيران قيد التفعيل"</string> + <string name="global_actions_airplane_mode_off_status" msgid="8522219771500505475">"وضع الطيران متوقف"</string> <string name="global_action_settings" msgid="4671878836947494217">"الإعدادات"</string> <string name="global_action_assist" msgid="2517047220311505805">"مساعدة"</string> <string name="global_action_voice_assist" msgid="6655788068555086695">"المساعد الصوتي"</string> @@ -398,7 +398,7 @@ <string name="permlab_getPackageSize" msgid="375391550792886641">"قياس مساحة تخزين التطبيق"</string> <string name="permdesc_getPackageSize" msgid="742743530909966782">"للسماح للتطبيق باسترداد شفرته وبياناته وأحجام ذاكرات التخزين المؤقت"</string> <string name="permlab_writeSettings" msgid="8057285063719277394">"تعديل إعدادات النظام"</string> - <string name="permdesc_writeSettings" msgid="8293047411196067188">"للسماح للتطبيق بتعديل بيانات إعدادات النظام. يمكن أن تتلف التطبيقات الضارة تهيئة نظامك."</string> + <string name="permdesc_writeSettings" msgid="8293047411196067188">"للسماح للتطبيق بتعديل بيانات إعدادات النظام. يمكن أن تتلف التطبيقات الضارة إعداد نظامك."</string> <string name="permlab_receiveBootCompleted" msgid="6643339400247325379">"العمل عند بدء التشغيل"</string> <string name="permdesc_receiveBootCompleted" product="tablet" msgid="5565659082718177484">"للسماح للتطبيق ببدء تشغيل نفسه عقب انتهاء النظام من التشغيل. قد يؤدي ذلك إلى استغراق المزيد من الوقت عند بدء الجهاز اللوحي والسماح للتطبيق بإبطاء الأداء الإجمالي للجهاز اللوحي من خلال تشغيله دائمًا."</string> <string name="permdesc_receiveBootCompleted" product="tv" msgid="4900842256047614307">"للسماح بتشغيل التطبيق تلقائيًا بعد الانتهاء من بدء تشغيل النظام. وقد يؤدي ذلك إلى إطالة فترة بدء تشغيل جهاز Android TV، بالإضافة إلى أنه يسمح للتطبيق بإبطاء أداء الجهاز بشكل عام لأنه يتم تشغيله بشكل دائم."</string> @@ -507,7 +507,7 @@ <string name="permlab_accessWifiState" msgid="5552488500317911052">"عرض اتصالات Wi-Fi"</string> <string name="permdesc_accessWifiState" msgid="6913641669259483363">"للسماح للتطبيق بعرض معلومات حول شبكات Wi-Fi، كعرض معلومات حول ما إذا تم تفعيل Wi-Fi واسم أجهزة Wi-Fi المتصلة."</string> <string name="permlab_changeWifiState" msgid="7947824109713181554">"التوصيل والفصل من Wi-Fi"</string> - <string name="permdesc_changeWifiState" msgid="7170350070554505384">"للسماح للتطبيق بالاتصال بنقاط الوصول إلى Wi-Fi وقطع الاتصال بها، وإجراء تغييرات على تهيئة الجهاز لشبكات Wi-Fi."</string> + <string name="permdesc_changeWifiState" msgid="7170350070554505384">"للسماح للتطبيق بالاتصال بنقاط الوصول إلى Wi-Fi وقطع الاتصال بها، وإجراء تغييرات على إعداد الجهاز لشبكات Wi-Fi."</string> <string name="permlab_changeWifiMulticastState" msgid="285626875870754696">"السماح باستقبال بث Wi-Fi متعدد"</string> <string name="permdesc_changeWifiMulticastState" product="tablet" msgid="191079868596433554">"للسماح للتطبيق بتلقي الحزم التي يتم إرسالها إلى جميع الأجهزة على شبكة Wi-Fi باستخدام عناوين بث متعدد، وليس باستخدام جهازك اللوحي فقط. ويؤدي ذلك إلى استخدام قدر أكبر من الطاقة يفوق وضع البث غير المتعدد."</string> <string name="permdesc_changeWifiMulticastState" product="tv" msgid="1336952358450652595">"للسماح للتطبيق بتلقّي الحِزم التي يتم إرسالها إلى جميع الأجهزة على شبكة Wi-Fi باستخدام عناوين بث متعدد، وليس باستخدام جهاز Android TV فقط. ويؤدي ذلك إلى استخدام قدر أكبر من الطاقة يفوق ما يتم استهلاكه في وضع البث غير المتعدد."</string> @@ -523,9 +523,9 @@ <string name="permdesc_changeWimaxState" product="tv" msgid="5373274458799425276">"للسماح للتطبيق بتوصيل جهاز Android TV بشبكات WiMAX وقطع اتصاله بها."</string> <string name="permdesc_changeWimaxState" product="default" msgid="1551666203780202101">"للسماح للتطبيق بتوصيل الهاتف بشبكات WiMAX وقطع اتصاله بها."</string> <string name="permlab_bluetooth" msgid="586333280736937209">"الاتصال بأجهزة بلوتوث"</string> - <string name="permdesc_bluetooth" product="tablet" msgid="3053222571491402635">"للسماح للتطبيق بعرض تهيئة البلوتوث على الجهاز اللوحي وإجراء اتصالات وقبولها مع الأجهزة المقترنة."</string> + <string name="permdesc_bluetooth" product="tablet" msgid="3053222571491402635">"للسماح للتطبيق بعرض إعداد البلوتوث على الجهاز اللوحي وإجراء اتصالات وقبولها مع الأجهزة المقترنة."</string> <string name="permdesc_bluetooth" product="tv" msgid="8851534496561034998">"للسماح للتطبيق بعرض بيانات ضبط البلوتوث على جهاز Android TV وإجراء اتصالات مع الأجهزة المقترنة وقبولها."</string> - <string name="permdesc_bluetooth" product="default" msgid="2779606714091276746">"للسماح للتطبيق بعرض تهيئة البلوتوث على الهاتف وإجراء اتصالات وقبولها مع الأجهزة المقترنة."</string> + <string name="permdesc_bluetooth" product="default" msgid="2779606714091276746">"للسماح للتطبيق بعرض إعداد البلوتوث على الهاتف وإجراء اتصالات وقبولها مع الأجهزة المقترنة."</string> <string name="permlab_preferredPaymentInfo" msgid="5274423844767445054">"معلومات الخدمات المدفوعة باستخدام الاتصال قصير المدى NFC المفضّل"</string> <string name="permdesc_preferredPaymentInfo" msgid="8583552469807294967">"يسمح هذا الإذن للتطبيق بالحصول على معلومات الخدمات المدفوعة باستخدام الاتصال قصير المدى NFC المفضّل، مثلاً المساعدات المسجّلة ووجهة المسار."</string> <string name="permlab_nfc" msgid="1904455246837674977">"التحكم في اتصال الحقل القريب"</string> @@ -661,8 +661,8 @@ <string name="permdesc_bindConditionProviderService" msgid="6106018791256120258">"للسماح للمالك بالربط بواجهة المستوى العلوي لخدمة موفر الحالة. لن تكون هناك حاجة إلى هذا الإعداد مطلقًا مع التطبيقات العادية."</string> <string name="permlab_bindDreamService" msgid="4776175992848982706">"الالتزام بخدمة dream"</string> <string name="permdesc_bindDreamService" msgid="9129615743300572973">"للسماح للمالك بالالتزام بواجهة المستوى العلوي لخدمة dream. لن تكون هناك حاجة إليه مطلقًا مع التطبيقات العادية."</string> - <string name="permlab_invokeCarrierSetup" msgid="5098810760209818140">"استدعاء تطبيق التهيئة الذي يوفره مشغل شبكة الجوال"</string> - <string name="permdesc_invokeCarrierSetup" msgid="4790845896063237887">"للسماح للمالك باستدعاء تطبيق التهيئة الذي يوفره مشغل شبكة الجوال. لن تكون هناك حاجة إليه مطلقًا مع التطبيقات العادية."</string> + <string name="permlab_invokeCarrierSetup" msgid="5098810760209818140">"استدعاء تطبيق الإعداد الذي يوفره مشغل شبكة الجوال"</string> + <string name="permdesc_invokeCarrierSetup" msgid="4790845896063237887">"للسماح للمالك باستدعاء تطبيق الإعداد الذي يوفره مشغل شبكة الجوال. لن تكون هناك حاجة إليه مطلقًا مع التطبيقات العادية."</string> <string name="permlab_accessNetworkConditions" msgid="1270732533356286514">"الاستماع إلى ملاحظات حول أحوال الشبكة"</string> <string name="permdesc_accessNetworkConditions" msgid="2959269186741956109">"للسماح للتطبيق بالاستماع إلى ملاحظات حول أحوال الشبكة. لا حاجة إلى هذا مع التطبيقات العادية."</string> <string name="permlab_setInputCalibration" msgid="932069700285223434">"تغيير معايرة أجهزة الإدخال"</string> @@ -678,7 +678,7 @@ <string name="permlab_bindCarrierServices" msgid="2395596978626237474">"الالتزام بخدمات مشغل شبكة الجوال"</string> <string name="permdesc_bindCarrierServices" msgid="9185614481967262900">"للسماح للمالك بالالتزام بخدمات مشغل شبكة الجوال. لن تكون هناك حاجة إليه مطلقًا مع التطبيقات العادية."</string> <string name="permlab_access_notification_policy" msgid="5524112842876975537">"الوصول إلى إعداد \"عدم الإزعاج\""</string> - <string name="permdesc_access_notification_policy" msgid="8538374112403845013">"للسماح للتطبيق بقراءة تهيئة \"عدم الإزعاج\" وكتابتها."</string> + <string name="permdesc_access_notification_policy" msgid="8538374112403845013">"للسماح للتطبيق بقراءة إعداد \"عدم الإزعاج\" وكتابتها."</string> <string name="permlab_startViewPermissionUsage" msgid="1504564328641112341">"بدء استخدام إذن العرض"</string> <string name="permdesc_startViewPermissionUsage" msgid="2820325605959586538">"للسماح للمالك ببدء استخدام الإذن لأحد التطبيقات. ولن تكون هناك حاجة إليه مطلقًا مع التطبيقات العادية."</string> <string name="policylab_limitPassword" msgid="4851829918814422199">"تعيين قواعد كلمة المرور"</string> @@ -1169,7 +1169,7 @@ <string name="Midnight" msgid="8176019203622191377">"منتصف الليل"</string> <string name="elapsed_time_short_format_mm_ss" msgid="8689459651807876423">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string> <string name="elapsed_time_short_format_h_mm_ss" msgid="2302144714803345056">"<xliff:g id="HOURS">%1$d</xliff:g>:<xliff:g id="MINUTES">%2$02d</xliff:g>:<xliff:g id="SECONDS">%3$02d</xliff:g>"</string> - <string name="selectAll" msgid="1532369154488982046">"اختيار الكل"</string> + <string name="selectAll" msgid="1532369154488982046">"تحديد الكل"</string> <string name="cut" msgid="2561199725874745819">"قص"</string> <string name="copy" msgid="5472512047143665218">"نسخ"</string> <string name="failed_to_copy_to_clipboard" msgid="725919885138539875">"تعذّر النسخ في الحافظة"</string> @@ -1298,7 +1298,7 @@ <string name="volume_ringtone" msgid="134784084629229029">"مستوى صوت الرنين"</string> <string name="volume_music" msgid="7727274216734955095">"مستوى صوت الوسائط"</string> <string name="volume_music_hint_playing_through_bluetooth" msgid="2614142915948898228">"تشغيل من خلال البلوتوث"</string> - <string name="volume_music_hint_silent_ringtone_selected" msgid="1514829655029062233">"تم تعيين نغمة الرنين الصامتة"</string> + <string name="volume_music_hint_silent_ringtone_selected" msgid="1514829655029062233">"تم ضبط نغمة الرنين الصامتة"</string> <string name="volume_call" msgid="7625321655265747433">"مستوى صوت المكالمات الواردة"</string> <string name="volume_bluetooth_call" msgid="2930204618610115061">"مستوى صوت المكالمة الواردة بالبلوتوث"</string> <string name="volume_alarm" msgid="4486241060751798448">"مستوى صوت المنبّه"</string> @@ -1462,7 +1462,7 @@ <string name="ext_media_status_unmountable" msgid="7043574843541087748">"تالف"</string> <string name="ext_media_status_unsupported" msgid="5460509911660539317">"غير متوافق"</string> <string name="ext_media_status_ejecting" msgid="7532403368044013797">"جارٍ إنهاء التحميل…"</string> - <string name="ext_media_status_formatting" msgid="774148701503179906">"جارٍ التهيئة…"</string> + <string name="ext_media_status_formatting" msgid="774148701503179906">"تجري التهيئة..."</string> <string name="ext_media_status_missing" msgid="6520746443048867314">"لم يتم الإدخال"</string> <string name="activity_list_empty" msgid="4219430010716034252">"لم يتم العثور على أي أنشطة متطابقة."</string> <string name="permlab_route_media_output" msgid="8048124531439513118">"توجيه إخراج الوسائط"</string> @@ -2155,7 +2155,7 @@ <string name="mime_type_spreadsheet_ext" msgid="8720173181137254414">"جدول بيانات: <xliff:g id="EXTENSION">%1$s</xliff:g>"</string> <string name="mime_type_presentation" msgid="1145384236788242075">"عرض تقديمي"</string> <string name="mime_type_presentation_ext" msgid="8761049335564371468">"عرض تقديمي: <xliff:g id="EXTENSION">%1$s</xliff:g>"</string> - <string name="bluetooth_airplane_mode_toast" msgid="2066399056595768554">"سيظل البلوتوث مفعَّلاً أثناء استخدام \"وضع الطائرة\"."</string> + <string name="bluetooth_airplane_mode_toast" msgid="2066399056595768554">"سيظل البلوتوث مفعَّلاً أثناء استخدام \"وضع الطيران\"."</string> <string name="car_loading_profile" msgid="8219978381196748070">"جارٍ التحميل"</string> <plurals name="file_count" formatted="false" msgid="7063513834724389247"> <item quantity="zero"><xliff:g id="FILE_NAME_2">%s</xliff:g> و<xliff:g id="COUNT_3">%d</xliff:g> ملف</item> diff --git a/core/res/res/values-az/strings.xml b/core/res/res/values-az/strings.xml index 3fb5131ba763..f1b9743ea99e 100644 --- a/core/res/res/values-az/strings.xml +++ b/core/res/res/values-az/strings.xml @@ -701,7 +701,7 @@ <string name="policylab_disableKeyguardFeatures" msgid="5071855750149949741">"Bəzi ekran kilidi funksiyalarını deaktiv edin"</string> <string name="policydesc_disableKeyguardFeatures" msgid="6641673177041195957">"Bəzi ekran funksiyaları istifadəsinin qarşısını alın."</string> <string-array name="phoneTypes"> - <item msgid="8996339953292723951">"Əsas səhifə"</item> + <item msgid="8996339953292723951">"Ev"</item> <item msgid="7740243458912727194">"Mobil"</item> <item msgid="8526146065496663766">"İş"</item> <item msgid="8150904584178569699">"İş Faksı"</item> @@ -711,19 +711,19 @@ <item msgid="6216981255272016212">"Şəxsi"</item> </string-array> <string-array name="emailAddressTypes"> - <item msgid="7786349763648997741">"Ana səhifə"</item> + <item msgid="7786349763648997741">"Ev"</item> <item msgid="435564470865989199">"İş"</item> <item msgid="4199433197875490373">"Digər"</item> <item msgid="3233938986670468328">"Fərdi"</item> </string-array> <string-array name="postalAddressTypes"> - <item msgid="3861463339764243038">"Əsas səhifə"</item> + <item msgid="3861463339764243038">"Ev"</item> <item msgid="5472578890164979109">"İş"</item> <item msgid="5718921296646594739">"Digər"</item> <item msgid="5523122236731783179">"Düzənləyin"</item> </string-array> <string-array name="imAddressTypes"> - <item msgid="588088543406993772">"Əsas səhifə"</item> + <item msgid="588088543406993772">"Ev"</item> <item msgid="5503060422020476757">"İş"</item> <item msgid="2530391194653760297">"Digər"</item> <item msgid="7640927178025203330">"Fərdi"</item> @@ -769,16 +769,16 @@ <string name="eventTypeAnniversary" msgid="4684702412407916888">"İldönümü"</string> <string name="eventTypeOther" msgid="530671238533887997">"Digər"</string> <string name="emailTypeCustom" msgid="1809435350482181786">"Fərdi"</string> - <string name="emailTypeHome" msgid="1597116303154775999">"Əsas səhifə"</string> + <string name="emailTypeHome" msgid="1597116303154775999">"Şəxsi"</string> <string name="emailTypeWork" msgid="2020095414401882111">"İş"</string> <string name="emailTypeOther" msgid="5131130857030897465">"Digər"</string> <string name="emailTypeMobile" msgid="787155077375364230">"Mobil"</string> <string name="postalTypeCustom" msgid="5645590470242939129">"Fərdi"</string> - <string name="postalTypeHome" msgid="7562272480949727912">"Əsas səhifə"</string> + <string name="postalTypeHome" msgid="7562272480949727912">"Ev"</string> <string name="postalTypeWork" msgid="8553425424652012826">"İş"</string> <string name="postalTypeOther" msgid="7094245413678857420">"Digər"</string> <string name="imTypeCustom" msgid="5653384545085765570">"Fərdi"</string> - <string name="imTypeHome" msgid="6996507981044278216">"Ana səhifə"</string> + <string name="imTypeHome" msgid="6996507981044278216">"Ev"</string> <string name="imTypeWork" msgid="2099668940169903123">"İş"</string> <string name="imTypeOther" msgid="8068447383276219810">"Digər"</string> <string name="imProtocolCustom" msgid="4437878287653764692">"Şəxsi"</string> @@ -810,7 +810,7 @@ <string name="relationTypeSister" msgid="3721676005094140671">"Bacı"</string> <string name="relationTypeSpouse" msgid="6916682664436031703">"Həyat yoldaşı"</string> <string name="sipAddressTypeCustom" msgid="6283889809842649336">"Fərdi"</string> - <string name="sipAddressTypeHome" msgid="5918441930656878367">"Əsas səhifə"</string> + <string name="sipAddressTypeHome" msgid="5918441930656878367">"Ev"</string> <string name="sipAddressTypeWork" msgid="7873967986701216770">"İş"</string> <string name="sipAddressTypeOther" msgid="6317012577345187275">"Digər"</string> <string name="quick_contacts_not_available" msgid="1262709196045052223">"Bu kontakta baxmaq üçün heç bir tətbiq tapılmadı."</string> diff --git a/core/res/res/values-b+sr+Latn/strings.xml b/core/res/res/values-b+sr+Latn/strings.xml index ecbe6d0ed2ab..239fff1f240f 100644 --- a/core/res/res/values-b+sr+Latn/strings.xml +++ b/core/res/res/values-b+sr+Latn/strings.xml @@ -241,7 +241,7 @@ <string name="global_action_power_off" msgid="4404936470711393203">"Isključi"</string> <string name="global_action_power_options" msgid="1185286119330160073">"Napajanje"</string> <string name="global_action_restart" msgid="4678451019561687074">"Restartuj"</string> - <string name="global_action_emergency" msgid="1387617624177105088">"Hitni poziv"</string> + <string name="global_action_emergency" msgid="1387617624177105088">"Hitan poziv"</string> <string name="global_action_bug_report" msgid="5127867163044170003">"Izveštaj o grešci"</string> <string name="global_action_logout" msgid="6093581310002476511">"Završi sesiju"</string> <string name="global_action_screenshot" msgid="2610053466156478564">"Snimak ekrana"</string> @@ -1815,7 +1815,7 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Ažurirao je administrator"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Izbrisao je administrator"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"Potvrdi"</string> - <string name="battery_saver_description_with_learn_more" msgid="5997766757551917769">"Da bi se produžilo trajanje baterije, Ušteda baterije:\n\n•uključuje tamnu temu\n•isključuje ili ograničava aktivnosti u pozadini, neke vizuelne efekte i druge funkcije, na primer, „Ok Google“\n\n"<annotation id="url">"Saznajte više"</annotation></string> + <string name="battery_saver_description_with_learn_more" msgid="5997766757551917769">"Da bi se produžilo trajanje baterije, Ušteda baterije:\n\n•uključuje tamnu temu\n•isključuje ili ograničava aktivnosti u pozadini, neke vizuelne efekte i druge funkcije, na primer „Ok Google“\n\n"<annotation id="url">"Saznajte više"</annotation></string> <string name="battery_saver_description" msgid="8587408568232177204">"Da bi se produžilo trajanje baterije, Ušteda baterije:\n\n•uključuje tamnu temu\n•isključuje ili ograničava aktivnosti u pozadini, neke vizuelne efekte i druge funkcije, na primer, „Ok Google“"</string> <string name="data_saver_description" msgid="4995164271550590517">"Da bi se smanjila potrošnja podataka, Ušteda podataka sprečava neke aplikacije da šalju ili primaju podatke u pozadini. Aplikacija koju trenutno koristite može da pristupa podacima, ali će to činiti ređe. Na primer, slike se neće prikazivati dok ih ne dodirnete."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Želite da uključite Uštedu podataka?"</string> diff --git a/core/res/res/values-be/strings.xml b/core/res/res/values-be/strings.xml index e5427e94a5cf..ddee07c8d5ee 100644 --- a/core/res/res/values-be/strings.xml +++ b/core/res/res/values-be/strings.xml @@ -98,9 +98,9 @@ <string name="notification_channel_wfc" msgid="9048240466765169038">"Wi-Fi-тэлефанія"</string> <string name="notification_channel_sim" msgid="5098802350325677490">"Статус SIM-карты"</string> <string name="notification_channel_sim_high_prio" msgid="642361929452850928">"Стан SIM-карты з высокім прыярытэтам"</string> - <string name="peerTtyModeFull" msgid="337553730440832160">"Аднарангавая прылада запытала рэжым TTY FULL"</string> - <string name="peerTtyModeHco" msgid="5626377160840915617">"Аднарангавая прылада запытала рэжым TTY НСО"</string> - <string name="peerTtyModeVco" msgid="572208600818270944">"Аднарангавая прылада запытала рэжым TTY VCO"</string> + <string name="peerTtyModeFull" msgid="337553730440832160">"Аднарангавая прылада запытала рэжым поўнафункцыянальнага TTY"</string> + <string name="peerTtyModeHco" msgid="5626377160840915617">"Аднарангавая прылада запытала рэжым TTY з магчымасцю чуць суразмоўніка"</string> + <string name="peerTtyModeVco" msgid="572208600818270944">"Аднарангавая прылада запытала рэжым TTY з магчымасцю чуць суразмоўніка"</string> <string name="peerTtyModeOff" msgid="2420380956369226583">"Аднарангавая прылада запытала рэжым TTY OFF"</string> <string name="serviceClassVoice" msgid="2065556932043454987">"Голас"</string> <string name="serviceClassData" msgid="4148080018967300248">"Дадзеныя"</string> @@ -717,10 +717,10 @@ <item msgid="6216981255272016212">"Асаблівы"</item> </string-array> <string-array name="emailAddressTypes"> - <item msgid="7786349763648997741">"Хатні"</item> - <item msgid="435564470865989199">"Працоўны"</item> - <item msgid="4199433197875490373">"Іншы"</item> - <item msgid="3233938986670468328">"Карыстальніцкі"</item> + <item msgid="7786349763648997741">"Асабістая"</item> + <item msgid="435564470865989199">"Працоўная"</item> + <item msgid="4199433197875490373">"Іншая"</item> + <item msgid="3233938986670468328">"Карыстальніцкая"</item> </string-array> <string-array name="postalAddressTypes"> <item msgid="3861463339764243038">"На Галоўную старонку"</item> @@ -770,14 +770,14 @@ <string name="phoneTypeWorkPager" msgid="3748332310638505234">"Працоўны пэйджар"</string> <string name="phoneTypeAssistant" msgid="757550783842231039">"Асістэнт"</string> <string name="phoneTypeMms" msgid="1799747455131365989">"MMS"</string> - <string name="eventTypeCustom" msgid="3257367158986466481">"Карыстальніцкі"</string> + <string name="eventTypeCustom" msgid="3257367158986466481">"Карыстальніцкае"</string> <string name="eventTypeBirthday" msgid="7770026752793912283">"Дзень нараджэння"</string> <string name="eventTypeAnniversary" msgid="4684702412407916888">"Гадавіна"</string> <string name="eventTypeOther" msgid="530671238533887997">"Іншае"</string> - <string name="emailTypeCustom" msgid="1809435350482181786">"Карыстальніцкі"</string> + <string name="emailTypeCustom" msgid="1809435350482181786">"Карыстальніцкая"</string> <string name="emailTypeHome" msgid="1597116303154775999">"Хатні"</string> - <string name="emailTypeWork" msgid="2020095414401882111">"Працоўны"</string> - <string name="emailTypeOther" msgid="5131130857030897465">"Іншы"</string> + <string name="emailTypeWork" msgid="2020095414401882111">"Працоўная"</string> + <string name="emailTypeOther" msgid="5131130857030897465">"Іншая"</string> <string name="emailTypeMobile" msgid="787155077375364230">"Мабільны"</string> <string name="postalTypeCustom" msgid="5645590470242939129">"Карыстальніцкі"</string> <string name="postalTypeHome" msgid="7562272480949727912">"Хатні"</string> @@ -800,19 +800,19 @@ <string name="orgTypeWork" msgid="8684458700669564172">"Працоўная"</string> <string name="orgTypeOther" msgid="5450675258408005553">"Іншая"</string> <string name="orgTypeCustom" msgid="1126322047677329218">"Карыстальніцкі"</string> - <string name="relationTypeCustom" msgid="282938315217441351">"Карыстальніцкі"</string> + <string name="relationTypeCustom" msgid="282938315217441351">"Карыстальніцкае"</string> <string name="relationTypeAssistant" msgid="4057605157116589315">"Памочнік"</string> <string name="relationTypeBrother" msgid="7141662427379247820">"Брат"</string> <string name="relationTypeChild" msgid="9076258911292693601">"Дзіця"</string> - <string name="relationTypeDomesticPartner" msgid="7825306887697559238">"Унутраны Партнёр"</string> + <string name="relationTypeDomesticPartner" msgid="7825306887697559238">"Сужыцель/сужыцелька"</string> <string name="relationTypeFather" msgid="3856225062864790596">"Бацька"</string> <string name="relationTypeFriend" msgid="3192092625893980574">"Сябар/сяброўка"</string> <string name="relationTypeManager" msgid="2272860813153171857">"Кіраўнік"</string> <string name="relationTypeMother" msgid="2331762740982699460">"Маці"</string> - <string name="relationTypeParent" msgid="4177920938333039882">"Бацька"</string> + <string name="relationTypeParent" msgid="4177920938333039882">"Бацька/маці"</string> <string name="relationTypePartner" msgid="4018017075116766194">"Партнёр"</string> - <string name="relationTypeReferredBy" msgid="5285082289602849400">"Запрошаны"</string> - <string name="relationTypeRelative" msgid="3396498519818009134">"Адносны"</string> + <string name="relationTypeReferredBy" msgid="5285082289602849400">"Рэкамендацыя"</string> + <string name="relationTypeRelative" msgid="3396498519818009134">"Радня"</string> <string name="relationTypeSister" msgid="3721676005094140671">"Сястра"</string> <string name="relationTypeSpouse" msgid="6916682664436031703">"Муж/жонка"</string> <string name="sipAddressTypeCustom" msgid="6283889809842649336">"Карыстальніцкі"</string> @@ -967,7 +967,7 @@ <string name="permlab_addVoicemail" msgid="4770245808840814471">"дадаць галасавое паведамленне"</string> <string name="permdesc_addVoicemail" msgid="5470312139820074324">"Дазваляе прыкладанням дадаваць паведамленні ў вашу скрыню галасавой пошты."</string> <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"змяніць дазволы геапазіцыянавання для браўзэра"</string> - <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"Дазваляе прыкладанням змяняць дазволы геалакацыі браўзэра. Шкоднасныя прыкладанні могуць выкарыстоўваць гэта, каб дазваляць адпраўку інфармацыі аб месцазнаходжанні выпадковым вэб-сайтам."</string> + <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"Дазваляе праграме змяняць дазволы геалакацыі браўзера. Шкодныя праграмы могуць выкарыстоўваць гэта, каб адпраўляць даныя аб месцазнаходжанні на любыя вэб-сайты."</string> <string name="save_password_message" msgid="2146409467245462965">"Вы хочаце, каб браўзэр запомніў гэты пароль?"</string> <string name="save_password_notnow" msgid="2878327088951240061">"Не зараз"</string> <string name="save_password_remember" msgid="6490888932657708341">"Запомніць"</string> @@ -1342,8 +1342,8 @@ <string name="usb_tether_notification_title" msgid="8828527870612663771">"Рэжым USB-мадэма"</string> <string name="usb_midi_notification_title" msgid="7404506788950595557">"MIDI праз USB"</string> <string name="usb_accessory_notification_title" msgid="1385394660861956980">"USB-прылада падключана"</string> - <string name="usb_notification_message" msgid="4715163067192110676">"Дакраніцеся, каб атрымаць іншыя параметры."</string> - <string name="usb_power_notification_message" msgid="7284765627437897702">"Зарадка падключанай прылады. Націсніце, каб убачыць іншыя параметры."</string> + <string name="usb_notification_message" msgid="4715163067192110676">"Дакраніцеся, каб убачыць іншыя параметры."</string> + <string name="usb_power_notification_message" msgid="7284765627437897702">"Падключаная прылада зараджаецца. Дакраніцеся, каб убачыць іншыя параметры."</string> <string name="usb_unsupported_audio_accessory_title" msgid="2335775548086533065">"Выяўлены аксесуар аналагавага аўдыя"</string> <string name="usb_unsupported_audio_accessory_message" msgid="1300168007129796621">"Далучаная прылада не сумяшчальная з гэтым тэлефонам. Націсніце, каб даведацца больш."</string> <string name="adb_active_notification_title" msgid="408390247354560331">"Адладка па USB падключана"</string> @@ -1542,7 +1542,7 @@ <string name="activitychooserview_choose_application_error" msgid="6937782107559241734">"Не атрымалася запусціць <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string> <string name="shareactionprovider_share_with" msgid="2753089758467748982">"Апублікаваць з дапамогай"</string> <string name="shareactionprovider_share_with_application" msgid="4902832247173666973">"Адправiць з дапамогай прыкладання <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string> - <string name="content_description_sliding_handle" msgid="982510275422590757">"Ручка для перасоўвання. Націсніце і ўтрымлівайце."</string> + <string name="content_description_sliding_handle" msgid="982510275422590757">"Маркер для перасоўвання. Дакраніцеся і ўтрымлівайце."</string> <string name="description_target_unlock_tablet" msgid="7431571180065859551">"Прагартайце, каб разблакаваць."</string> <string name="action_bar_home_description" msgid="1501655419158631974">"Перайсці да пачатковай старонкі"</string> <string name="action_bar_up_description" msgid="6611579697195026932">"Перайсці ўверх"</string> diff --git a/core/res/res/values-bs/strings.xml b/core/res/res/values-bs/strings.xml index 745a82d4ebe6..079eb56a4377 100644 --- a/core/res/res/values-bs/strings.xml +++ b/core/res/res/values-bs/strings.xml @@ -590,7 +590,7 @@ <string name="face_acquired_not_detected" msgid="2945945257956443257">"Postavite lice direktno ispred telefona"</string> <string name="face_acquired_too_much_motion" msgid="8199691445085189528">"Previše pokreta. Držite telefon mirno."</string> <string name="face_acquired_recalibrate" msgid="8724013080976469746">"Ponovo registrirajte lice."</string> - <string name="face_acquired_too_different" msgid="4699657338753282542">"Nije više moguće prepoznati lice. Pokušajte opet."</string> + <string name="face_acquired_too_different" msgid="4699657338753282542">"Više nije moguće prepoznati lice. Pokušajte opet."</string> <string name="face_acquired_too_similar" msgid="7684650785108399370">"Previše slično, promijenite položaj."</string> <string name="face_acquired_pan_too_extreme" msgid="7822191262299152527">"Malo manje zakrenite glavu."</string> <string name="face_acquired_tilt_too_extreme" msgid="8119978324129248059">"Malo manje zakrenite glavu."</string> @@ -970,7 +970,7 @@ <string name="save_password_remember" msgid="6490888932657708341">"Zapamti"</string> <string name="save_password_never" msgid="6776808375903410659">"Nikad"</string> <string name="open_permission_deny" msgid="5136793905306987251">"Nemate odobrenje za otvaranje ove stranice."</string> - <string name="text_copied" msgid="2531420577879738860">"Tekst kopiran u međuspremnik."</string> + <string name="text_copied" msgid="2531420577879738860">"Tekst kopiran u međumemoriju."</string> <string name="copied" msgid="4675902854553014676">"Kopirano"</string> <string name="more_item_label" msgid="7419249600215749115">"Više"</string> <string name="prepend_shortcut_label" msgid="1743716737502867951">"Meni+"</string> diff --git a/core/res/res/values-ca/strings.xml b/core/res/res/values-ca/strings.xml index a3ac03ea3857..97bb9c167724 100644 --- a/core/res/res/values-ca/strings.xml +++ b/core/res/res/values-ca/strings.xml @@ -988,8 +988,8 @@ <string name="searchview_description_submit" msgid="6771060386117334686">"Envia la consulta"</string> <string name="searchview_description_voice" msgid="42360159504884679">"Cerca per veu"</string> <string name="enable_explore_by_touch_warning_title" msgid="5095399706284943314">"Vols activar l\'exploració tàctil?"</string> - <string name="enable_explore_by_touch_warning_message" product="tablet" msgid="1037295476738940824">"<xliff:g id="ACCESSIBILITY_SERVICE_NAME">%1$s</xliff:g> vol activar l\'exploració tàctil. Quan l\'exploració tàctil està activada, pots escoltar o veure les descripcions del contingut seleccionat o utilitzar gestos per interactuar amb la tauleta."</string> - <string name="enable_explore_by_touch_warning_message" product="default" msgid="4312979647356179250">"<xliff:g id="ACCESSIBILITY_SERVICE_NAME">%1$s</xliff:g> vol activar l\'exploració tàctil. Quan l\'exploració per tàctil està activada, pots escoltar o veure les descripcions del contingut seleccionat o utilitzar gestos per interactuar amb el telèfon."</string> + <string name="enable_explore_by_touch_warning_message" product="tablet" msgid="1037295476738940824">"<xliff:g id="ACCESSIBILITY_SERVICE_NAME">%1$s</xliff:g> vol activar l\'exploració tàctil. Quan l\'exploració tàctil està activada, pots escoltar o veure les descripcions del contingut seleccionat o utilitzar gestos per interaccionar amb la tauleta."</string> + <string name="enable_explore_by_touch_warning_message" product="default" msgid="4312979647356179250">"<xliff:g id="ACCESSIBILITY_SERVICE_NAME">%1$s</xliff:g> vol activar l\'exploració tàctil. Quan l\'exploració per tàctil està activada, pots escoltar o veure les descripcions del contingut seleccionat o utilitzar gestos per interaccionar amb el telèfon."</string> <string name="oneMonthDurationPast" msgid="4538030857114635777">"Fa 1 mes"</string> <string name="beforeOneMonthDurationPast" msgid="8315149541372065392">"Fa més d\'1 mes"</string> <plurals name="last_num_days" formatted="false" msgid="687443109145393632"> @@ -1221,7 +1221,7 @@ <string name="volume_music_hint_silent_ringtone_selected" msgid="1514829655029062233">"S\'ha establert el so de silenci"</string> <string name="volume_call" msgid="7625321655265747433">"Volum en trucada"</string> <string name="volume_bluetooth_call" msgid="2930204618610115061">"Volum en trucada per Bluetooth"</string> - <string name="volume_alarm" msgid="4486241060751798448">"Volum de l\'alarma"</string> + <string name="volume_alarm" msgid="4486241060751798448">"Volum d\'alarma"</string> <string name="volume_notification" msgid="6864412249031660057">"Volum de notificacions"</string> <string name="volume_unknown" msgid="4041914008166576293">"Volum"</string> <string name="volume_icon_description_bluetooth" msgid="7540388479345558400">"Volum del Bluetooth"</string> diff --git a/core/res/res/values-de/strings.xml b/core/res/res/values-de/strings.xml index c4d944fe176b..3ccd566e5d8d 100644 --- a/core/res/res/values-de/strings.xml +++ b/core/res/res/values-de/strings.xml @@ -1792,8 +1792,8 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Von deinem Administrator aktualisiert"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Von deinem Administrator gelöscht"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string> - <string name="battery_saver_description_with_learn_more" msgid="5997766757551917769">"Der Energiesparmodus sorgt für eine längere Akkulaufzeit:\n\n• Das dunkle Design wird aktiviert\n• Hintergrundaktivitäten, einige optische Effekte und weitere Funktionen wie \"Ok Google\" werden abgeschaltet oder eingeschränkt\n\n"<annotation id="url">"Weitere Informationen"</annotation></string> - <string name="battery_saver_description" msgid="8587408568232177204">"Der Energiesparmodus sorgt für eine längere Akkulaufzeit:\n\n• Das dunkle Design wird aktiviert\n• Hintergrundaktivitäten, einige optische Effekte und weitere Funktionen wie \"Ok Google\" werden abgeschaltet oder eingeschränkt"</string> + <string name="battery_saver_description_with_learn_more" msgid="5997766757551917769">"Der Stromsparmodus sorgt für eine längere Akkulaufzeit:\n\n• Das dunkle Design wird aktiviert\n• Hintergrundaktivitäten, einige optische Effekte und weitere Funktionen wie \"Ok Google\" werden abgeschaltet oder eingeschränkt\n\n"<annotation id="url">"Weitere Informationen"</annotation></string> + <string name="battery_saver_description" msgid="8587408568232177204">"Der Stromsparmodus sorgt für eine längere Akkulaufzeit:\n\n• Das dunkle Design wird aktiviert\n• Hintergrundaktivitäten, einige optische Effekte und weitere Funktionen wie \"Ok Google\" werden abgeschaltet oder eingeschränkt"</string> <string name="data_saver_description" msgid="4995164271550590517">"Der Datensparmodus verhindert zum einen, dass manche Apps im Hintergrund Daten senden oder empfangen, sodass weniger Daten verbraucht werden. Zum anderen werden die Datenzugriffe der gerade aktiven App eingeschränkt, was z. B. dazu führen kann, dass Bilder erst angetippt werden müssen, bevor sie sichtbar werden."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Datensparmodus aktivieren?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Aktivieren"</string> @@ -1999,9 +1999,9 @@ <string name="notification_appops_overlay_active" msgid="5571732753262836481">"wird über anderen Apps auf dem Bildschirm angezeigt"</string> <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Infomitteilung zum Ablaufmodus"</string> <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"Dein Akku könnte vor der gewöhnlichen Ladezeit leer sein"</string> - <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"Energiesparmodus aktiviert, um die Akkulaufzeit zu verlängern"</string> - <string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"Energiesparmodus"</string> - <string name="battery_saver_off_notification_title" msgid="7637255960468032515">"Energiesparmodus deaktiviert"</string> + <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"Stromsparmodus aktiviert, um die Akkulaufzeit zu verlängern"</string> + <string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"Stromsparmodus"</string> + <string name="battery_saver_off_notification_title" msgid="7637255960468032515">"Stromsparmodus deaktiviert"</string> <string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"Das Smartphone ist ausreichend geladen. Es sind keine Funktionen mehr beschränkt."</string> <string name="battery_saver_charged_notification_summary" product="tablet" msgid="4426317048139996888">"Das Tablet ist ausreichend geladen. Es sind keine Funktionen mehr beschränkt."</string> <string name="battery_saver_charged_notification_summary" product="device" msgid="1031562417867646649">"Das Gerät ist ausreichend geladen. Es sind keine Funktionen mehr beschränkt."</string> diff --git a/core/res/res/values-en-rCA/strings.xml b/core/res/res/values-en-rCA/strings.xml index 4d3ca94b9c91..1cf59047aba9 100644 --- a/core/res/res/values-en-rCA/strings.xml +++ b/core/res/res/values-en-rCA/strings.xml @@ -1120,8 +1120,8 @@ <string name="loading" msgid="3138021523725055037">"Loading…"</string> <string name="capital_on" msgid="2770685323900821829">"ON"</string> <string name="capital_off" msgid="7443704171014626777">"OFF"</string> - <string name="checked" msgid="9179896827054513119">"ticked"</string> - <string name="not_checked" msgid="7972320087569023342">"not ticked"</string> + <string name="checked" msgid="9179896827054513119">"checked"</string> + <string name="not_checked" msgid="7972320087569023342">"not checked"</string> <string name="whichApplication" msgid="5432266899591255759">"Complete action using"</string> <string name="whichApplicationNamed" msgid="6969946041713975681">"Complete action using %1$s"</string> <string name="whichApplicationLabel" msgid="7852182961472531728">"Complete action"</string> @@ -2023,7 +2023,7 @@ <string name="mime_type_spreadsheet_ext" msgid="8720173181137254414">"<xliff:g id="EXTENSION">%1$s</xliff:g> spreadsheet"</string> <string name="mime_type_presentation" msgid="1145384236788242075">"Presentation"</string> <string name="mime_type_presentation_ext" msgid="8761049335564371468">"<xliff:g id="EXTENSION">%1$s</xliff:g> presentation"</string> - <string name="bluetooth_airplane_mode_toast" msgid="2066399056595768554">"Bluetooth will stay on during aeroplane mode"</string> + <string name="bluetooth_airplane_mode_toast" msgid="2066399056595768554">"Bluetooth will stay on in Airplane mode"</string> <string name="car_loading_profile" msgid="8219978381196748070">"Loading"</string> <plurals name="file_count" formatted="false" msgid="7063513834724389247"> <item quantity="other"><xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g> files</item> diff --git a/core/res/res/values-es-rUS/strings.xml b/core/res/res/values-es-rUS/strings.xml index 5d35a6bfa528..1a51067cd513 100644 --- a/core/res/res/values-es-rUS/strings.xml +++ b/core/res/res/values-es-rUS/strings.xml @@ -421,7 +421,7 @@ <string name="permdesc_writeCalendar" product="default" msgid="5416380074475634233">"Esta app puede agregar, quitar o cambiar eventos del calendario en tu teléfono. Puede enviar mensajes que parecen proceder de propietarios del calendario o cambiar eventos sin notificarlos."</string> <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"acceder a comandos adicionales del proveedor del lugar"</string> <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Permite que la aplicación acceda a comandos adicionales del proveedor de ubicación. Esto puede permitirle a la aplicación interferir con el funcionamiento del GPS o de otras fuentes de ubicación."</string> - <string name="permlab_accessFineLocation" msgid="6426318438195622966">"acceder a la ubicación exacta solo en primer plano"</string> + <string name="permlab_accessFineLocation" msgid="6426318438195622966">"acceder a la ubicación precisa solo en primer plano"</string> <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Mientras la usas, esta app puede obtener tu ubicación exacta mediante los Servicios de ubicación, siempre y cuando el dispositivo los tenga activados. Es posible que esto aumente el uso de batería."</string> <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"acceder a la ubicación aproximada solo en primer plano"</string> <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Mientras la usas, esta app puede obtener tu ubicación aproximada mediante los Servicios de ubicación, siempre y cuando el dispositivo los tenga activados."</string> diff --git a/core/res/res/values-es/strings.xml b/core/res/res/values-es/strings.xml index 5e245de3376e..fea419fe08b7 100644 --- a/core/res/res/values-es/strings.xml +++ b/core/res/res/values-es/strings.xml @@ -325,7 +325,7 @@ <string name="capability_desc_canControlMagnification" msgid="2206586716709254805">"Controla el posicionamiento y el nivel de zoom de la pantalla."</string> <string name="capability_title_canPerformGestures" msgid="9106545062106728987">"Realizar gestos"</string> <string name="capability_desc_canPerformGestures" msgid="6619457251067929726">"Puedes tocar y pellizcar la pantalla, deslizar el dedo y hacer otros gestos."</string> - <string name="capability_title_canCaptureFingerprintGestures" msgid="1189053104594608091">"Gestos de huellas digitales"</string> + <string name="capability_title_canCaptureFingerprintGestures" msgid="1189053104594608091">"Gestos de huella digital"</string> <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"Puede capturar los gestos realizados en el sensor de huellas digitales del dispositivo."</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"Hacer captura"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"Puede hacer capturas de la pantalla."</string> diff --git a/core/res/res/values-fa/strings.xml b/core/res/res/values-fa/strings.xml index b5574aed8b6f..39bf1d6e88b6 100644 --- a/core/res/res/values-fa/strings.xml +++ b/core/res/res/values-fa/strings.xml @@ -1264,7 +1264,7 @@ <string name="sms_control_title" msgid="4748684259903148341">"درحال ارسال پیامکها"</string> <string name="sms_control_message" msgid="6574313876316388239">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> درحال ارسال تعداد زیادی پیامک است. آیا اجازه میدهید این برنامه همچنان پیامک ارسال کند؟"</string> <string name="sms_control_yes" msgid="4858845109269524622">"مجاز است"</string> - <string name="sms_control_no" msgid="4845717880040355570">"اجازه ندارد"</string> + <string name="sms_control_no" msgid="4845717880040355570">"مجاز نبودن"</string> <string name="sms_short_code_confirm_message" msgid="1385416688897538724">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> مایل است پیامی به <b><xliff:g id="DEST_ADDRESS">%2$s</xliff:g></b> ارسال کند."</string> <string name="sms_short_code_details" msgid="2723725738333388351">"این مورد "<b>"شاید هزینهای"</b>" را به حساب دستگاه همراهتان بگذارد."</string> <string name="sms_premium_short_code_details" msgid="1400296309866638111"><b>"این مورد هزینهای را به حساب دستگاه همراهتان میگذارد."</b></string> @@ -1410,7 +1410,7 @@ <string name="grant_credentials_permission_message_footer" msgid="1886710210516246461">"میخواهید به این درخواست اجازه دهید؟"</string> <string name="grant_permissions_header_text" msgid="3420736827804657201">"درخواست دسترسی"</string> <string name="allow" msgid="6195617008611933762">"ارزیابیشده"</string> - <string name="deny" msgid="6632259981847676572">"اجازه ندارد"</string> + <string name="deny" msgid="6632259981847676572">"مجاز نبودن"</string> <string name="permission_request_notification_title" msgid="1810025922441048273">"مجوز درخواست شد"</string> <string name="permission_request_notification_with_subtitle" msgid="3743417870360129298">"مجوز\nبرای حساب <xliff:g id="ACCOUNT">%s</xliff:g> درخواست شد."</string> <string name="forward_intent_to_owner" msgid="4620359037192871015">"شما از این برنامه در خارج از نمایه کاریتان استفاده میکنید"</string> @@ -1639,7 +1639,7 @@ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"مشاهده و انجام کنشها"</string> <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"این عملکرد میتواند با برنامه یا حسگری سختافزاری تعاملاتتان را ردیابی کند و ازطرف شما با برنامهها تعامل داشته باشد."</string> <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"مجاز"</string> - <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"رد کردن"</string> + <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"مجاز نبودن"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"برای استفاده از ویژگی، روی آن ضربه بزنید:"</string> <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"انتخاب ویژگیهای موردنظر برای استفاده با دکمه دسترسپذیری"</string> <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"انتخاب ویژگیهای موردنظر برای استفاده با میانبر کلید میزان صدا"</string> @@ -1654,11 +1654,11 @@ <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"کلیدهای میزان صدا پایین نگه داشته شد. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> خاموش شد."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"برای استفاده از <xliff:g id="SERVICE_NAME">%1$s</xliff:g>، هر دو کلید صدا را فشار دهید و سه ثانیه نگه دارید"</string> <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"ویژگی را انتخاب کنید که هنگام ضربه زدن روی دکمه دسترسپذیری استفاده میشود:"</string> - <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"ویژگی را برای استفاده با اشاره دسترسپذیری انتخاب کنید (با دو انگشت صفحه را از پایین تند به بالا بکشید):"</string> - <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"ویزگی را برای استفاده با اشاره دسترسپذیری انتخاب کنید (با سه انگشت صفحه را از پایین تند به بالا بکشید):"</string> + <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"ویژگی را برای استفاده با اشاره دسترسپذیری انتخاب کنید (با دو انگشت صفحه را از پایین تند بهبالا بکشید):"</string> + <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"ویزگی را برای استفاده با اشاره دسترسپذیری انتخاب کنید (با سه انگشت صفحه را از پایین تند بهبالا بکشید):"</string> <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"برای جابهجایی بین ویژگیها، دکمه دسترسپذیری را لمس کنید و نگه دارید."</string> - <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"برای جابهجایی بین ویژگیها، با دو انگشت صفحه را تند به بالا بکشید و نگه دارید."</string> - <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"برای جابهجایی بین ویژگیها، با سه انگشت صفحه را تند به بالا بکشید و نگه دارید."</string> + <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"برای جابهجایی بین ویژگیها، با دو انگشت صفحه را تند بهبالا بکشید و نگه دارید."</string> + <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"برای جابهجایی بین ویژگیها، با سه انگشت صفحه را تند بهبالا بکشید و نگه دارید."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"درشتنمایی"</string> <string name="user_switched" msgid="7249833311585228097">"کاربر کنونی <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"در حالت تغییر به <xliff:g id="NAME">%1$s</xliff:g>…"</string> diff --git a/core/res/res/values-fi/strings.xml b/core/res/res/values-fi/strings.xml index bba11bcd4245..aee67394769b 100644 --- a/core/res/res/values-fi/strings.xml +++ b/core/res/res/values-fi/strings.xml @@ -302,7 +302,7 @@ <string name="permgrouplab_sms" msgid="795737735126084874">"Tekstiviestit"</string> <string name="permgroupdesc_sms" msgid="5726462398070064542">"lähettää ja tarkastella tekstiviestejä"</string> <string name="permgrouplab_storage" msgid="1938416135375282333">"Tiedostot ja media"</string> - <string name="permgroupdesc_storage" msgid="6351503740613026600">"käyttää laitteellesi tallennettuja valokuvia, mediatiedostoja ja muita tiedostoja"</string> + <string name="permgroupdesc_storage" msgid="6351503740613026600">"käyttää laitteellesi tallennettuja kuvia, mediatiedostoja ja muita tiedostoja"</string> <string name="permgrouplab_microphone" msgid="2480597427667420076">"Mikrofoni"</string> <string name="permgroupdesc_microphone" msgid="1047786732792487722">"tallentaa ääntä"</string> <string name="permgrouplab_activityRecognition" msgid="3324466667921775766">"Liikkuminen"</string> @@ -1914,7 +1914,7 @@ <string name="app_category_game" msgid="4534216074910244790">"Pelit"</string> <string name="app_category_audio" msgid="8296029904794676222">"Musiikki ja ääni"</string> <string name="app_category_video" msgid="2590183854839565814">"Elokuvat ja videot"</string> - <string name="app_category_image" msgid="7307840291864213007">"Kuvat ja valokuvat"</string> + <string name="app_category_image" msgid="7307840291864213007">"Kuvat ja kuvat"</string> <string name="app_category_social" msgid="2278269325488344054">"Some ja viestintä"</string> <string name="app_category_news" msgid="1172762719574964544">"Uutiset ja lehdet"</string> <string name="app_category_maps" msgid="6395725487922533156">"Kartat ja navigointi"</string> diff --git a/core/res/res/values-fr/strings.xml b/core/res/res/values-fr/strings.xml index 1032da246d89..d4978c355f51 100644 --- a/core/res/res/values-fr/strings.xml +++ b/core/res/res/values-fr/strings.xml @@ -325,7 +325,7 @@ <string name="capability_desc_canControlMagnification" msgid="2206586716709254805">"Contrôle le niveau de zoom et le positionnement de l\'écran."</string> <string name="capability_title_canPerformGestures" msgid="9106545062106728987">"Effectuer des gestes"</string> <string name="capability_desc_canPerformGestures" msgid="6619457251067929726">"Permet d\'appuyer sur l\'écran, de le balayer, de le pincer et d\'effectuer d\'autres gestes."</string> - <string name="capability_title_canCaptureFingerprintGestures" msgid="1189053104594608091">"Gestes avec l\'empreinte digitale"</string> + <string name="capability_title_canCaptureFingerprintGestures" msgid="1189053104594608091">"Gestes d\'empreinte digitale"</string> <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"Peut enregistrer des gestes effectués sur le lecteur d\'empreinte digitale de l\'appareil."</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"Prendre une capture d\'écran"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"Peut prendre des captures d\'écran."</string> diff --git a/core/res/res/values-gl/strings.xml b/core/res/res/values-gl/strings.xml index 1732d0846961..e4ac0215f1dd 100644 --- a/core/res/res/values-gl/strings.xml +++ b/core/res/res/values-gl/strings.xml @@ -849,7 +849,7 @@ <string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"Pausar"</string> <string name="lockscreen_transport_play_description" msgid="106868788691652733">"Reproducir"</string> <string name="lockscreen_transport_stop_description" msgid="1449552232598355348">"Deter"</string> - <string name="lockscreen_transport_rew_description" msgid="7680106856221622779">"Rebobinar"</string> + <string name="lockscreen_transport_rew_description" msgid="7680106856221622779">"Retroceder"</string> <string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"Avance rápido"</string> <string name="emergency_calls_only" msgid="3057351206678279851">"Só chamadas de emerxencia"</string> <string name="lockscreen_network_locked_message" msgid="2814046965899249635">"Bloqueada pola rede"</string> diff --git a/core/res/res/values-gu/strings.xml b/core/res/res/values-gu/strings.xml index dfe5d8262d65..6700f54ecd63 100644 --- a/core/res/res/values-gu/strings.xml +++ b/core/res/res/values-gu/strings.xml @@ -1135,7 +1135,7 @@ <string name="whichGiveAccessToApplicationLabel" msgid="7805857277166106236">"ઍક્સેસ આપો"</string> <string name="whichEditApplication" msgid="6191568491456092812">"આનાથી સંપાદિત કરો"</string> <string name="whichEditApplicationNamed" msgid="8096494987978521514">"%1$s સાથે સંપાદિત કરો"</string> - <string name="whichEditApplicationLabel" msgid="1463288652070140285">"સંપાદિત કરો"</string> + <string name="whichEditApplicationLabel" msgid="1463288652070140285">"ફેરફાર કરો"</string> <string name="whichSendApplication" msgid="4143847974460792029">"શેર કરો"</string> <string name="whichSendApplicationNamed" msgid="4470386782693183461">"%1$s સાથે શેર કરો"</string> <string name="whichSendApplicationLabel" msgid="7467813004769188515">"શેર કરો"</string> @@ -1221,7 +1221,7 @@ <string name="volume_music_hint_silent_ringtone_selected" msgid="1514829655029062233">"સાઇલેન્ટ રિંગટોન સેટ કરી"</string> <string name="volume_call" msgid="7625321655265747433">"ઇન-કૉલ વૉલ્યૂમ"</string> <string name="volume_bluetooth_call" msgid="2930204618610115061">"બ્લૂટૂથ ઇન-કૉલ વૉલ્યૂમ"</string> - <string name="volume_alarm" msgid="4486241060751798448">"એલાર્મ વૉલ્યૂમ"</string> + <string name="volume_alarm" msgid="4486241060751798448">"અલાર્મ વૉલ્યૂમ"</string> <string name="volume_notification" msgid="6864412249031660057">"સૂચના વૉલ્યૂમ"</string> <string name="volume_unknown" msgid="4041914008166576293">"વૉલ્યૂમ"</string> <string name="volume_icon_description_bluetooth" msgid="7540388479345558400">"બ્લૂટૂથ વૉલ્યૂમ"</string> @@ -1513,7 +1513,7 @@ <string name="storage_usb_drive" msgid="448030813201444573">"USB ડ્રાઇવ"</string> <string name="storage_usb_drive_label" msgid="6631740655876540521">"<xliff:g id="MANUFACTURER">%s</xliff:g> USB ડ્રાઇવ"</string> <string name="storage_usb" msgid="2391213347883616886">"USB સ્ટોરેજ"</string> - <string name="extract_edit_menu_button" msgid="63954536535863040">"સંપાદિત કરો"</string> + <string name="extract_edit_menu_button" msgid="63954536535863040">"ફેરફાર કરો"</string> <string name="data_usage_warning_title" msgid="9034893717078325845">"ડેટા ચેતવણી"</string> <string name="data_usage_warning_body" msgid="1669325367188029454">"તમે <xliff:g id="APP">%s</xliff:g> ડેટા વાપર્યો છે"</string> <string name="data_usage_mobile_limit_title" msgid="3911447354393775241">"મોબાઇલ ડેટાની મર્યાદા આવી ગઈ"</string> diff --git a/core/res/res/values-hi/strings.xml b/core/res/res/values-hi/strings.xml index 52c2be09bbce..5ac57706d816 100644 --- a/core/res/res/values-hi/strings.xml +++ b/core/res/res/values-hi/strings.xml @@ -1548,7 +1548,7 @@ <string name="launchBrowserDefault" msgid="6328349989932924119">"ब्राउज़र लॉन्च करें?"</string> <string name="SetupCallDefault" msgid="5581740063237175247">"कॉल स्वीकार करें?"</string> <string name="activity_resolver_use_always" msgid="5575222334666843269">"हमेशा"</string> - <string name="activity_resolver_use_once" msgid="948462794469672658">"केवल एक बार"</string> + <string name="activity_resolver_use_once" msgid="948462794469672658">"सिर्फ़ एक बार"</string> <string name="activity_resolver_work_profiles_support" msgid="4071345609235361269">"%1$s वर्क प्रोफ़ाइल का समर्थन नहीं करता"</string> <string name="default_audio_route_name" product="tablet" msgid="367936735632195517">"टैबलेट"</string> <string name="default_audio_route_name" product="tv" msgid="4908971385068087367">"टीवी"</string> diff --git a/core/res/res/values-hu/strings.xml b/core/res/res/values-hu/strings.xml index 6b442137da18..a2b04e33b0cd 100644 --- a/core/res/res/values-hu/strings.xml +++ b/core/res/res/values-hu/strings.xml @@ -307,7 +307,7 @@ <string name="permgroupdesc_microphone" msgid="1047786732792487722">"hanganyag rögzítése"</string> <string name="permgrouplab_activityRecognition" msgid="3324466667921775766">"Testmozgás"</string> <string name="permgroupdesc_activityRecognition" msgid="4725624819457670704">"hozzáférés a testmozgási adatokhoz"</string> - <string name="permgrouplab_camera" msgid="9090413408963547706">"Fényképezőgép"</string> + <string name="permgrouplab_camera" msgid="9090413408963547706">"Kamera"</string> <string name="permgroupdesc_camera" msgid="7585150538459320326">"fotók és videók készítése"</string> <string name="permgrouplab_calllog" msgid="7926834372073550288">"Hívásnaplók"</string> <string name="permgroupdesc_calllog" msgid="2026996642917801803">"hívásnapló olvasása és írása"</string> @@ -1900,8 +1900,8 @@ <string name="profile_encrypted_message" msgid="1128512616293157802">"A feloldáshoz koppintson rá"</string> <string name="usb_mtp_launch_notification_title" msgid="774319638256707227">"Csatlakoztatva a(z) <xliff:g id="PRODUCT_NAME">%1$s</xliff:g> eszközhöz"</string> <string name="usb_mtp_launch_notification_description" msgid="6942535713629852684">"Koppintson ide a fájlok megtekintéséhez"</string> - <string name="pin_target" msgid="8036028973110156895">"Rögzítés"</string> - <string name="pin_specific_target" msgid="7824671240625957415">"<xliff:g id="LABEL">%1$s</xliff:g> rögzítése"</string> + <string name="pin_target" msgid="8036028973110156895">"Kitűzés"</string> + <string name="pin_specific_target" msgid="7824671240625957415">"<xliff:g id="LABEL">%1$s</xliff:g> kitűzése"</string> <string name="unpin_target" msgid="3963318576590204447">"Feloldás"</string> <string name="unpin_specific_target" msgid="3859828252160908146">"<xliff:g id="LABEL">%1$s</xliff:g> rögzítésének feloldása"</string> <string name="app_info" msgid="6113278084877079851">"Alkalmazásinformáció"</string> diff --git a/core/res/res/values-hy/strings.xml b/core/res/res/values-hy/strings.xml index 11df647fa175..e94e658a8142 100644 --- a/core/res/res/values-hy/strings.xml +++ b/core/res/res/values-hy/strings.xml @@ -48,7 +48,7 @@ <string name="invalidPin" msgid="7542498253319440408">"Մուտքագրեք PIN, որը 4-ից 8 թիվ է:"</string> <string name="invalidPuk" msgid="8831151490931907083">"Մուտքագրեք PUK, որն 8 կամ ավել թիվ ունի:"</string> <string name="needPuk" msgid="7321876090152422918">"Ձեր SIM քարտը PUK-ով կողպված է: Մուտքագրեք PUK կոդը այն ապակողպելու համար:"</string> - <string name="needPuk2" msgid="7032612093451537186">"Մուտքագրեք PUK2-ը` SIM քարտն արգելահանելու համար:"</string> + <string name="needPuk2" msgid="7032612093451537186">"Մուտքագրեք PUK2-ը՝ SIM քարտն արգելահանելու համար:"</string> <string name="enablePin" msgid="2543771964137091212">"Ձախողվեց: Միացրեք SIM/RUIM կողպումը:"</string> <plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584"> <item quantity="one">Մնաց <xliff:g id="NUMBER_1">%d</xliff:g> փորձ, որից հետո SIM քարտն արգելափակվելու է:</item> @@ -409,7 +409,7 @@ <string name="permdesc_writeCallLog" product="tablet" msgid="2657525794731690397">"Թույլ է տալիս հավելվածին փոփոխել ձեր պլանշետի զանգերի մատյանը, այդ թվում` մուտքային և ելքային զանգերի մասին տվյալները: Վնասարար հավելվածները կարող են սա օգտագործել` ձեր զանգերի մատյանը ջնջելու կամ փոփոխելու համար:"</string> <string name="permdesc_writeCallLog" product="tv" msgid="3934939195095317432">"Թույլ է տալիս հավելվածին փոփոխել Android TV սարքի զանգերի մատյանը, այդ թվում՝ մուտքային և ելքային զանգերի մասին տվյալները: Վնասարար հավելվածները կարող են սա օգտագործել՝ ձեր զանգերի մատյանը ջնջելու կամ փոփոխելու համար:"</string> <string name="permdesc_writeCallLog" product="default" msgid="5903033505665134802">"Թույլ է տալիս հավելվածին փոփոխել ձեր հեռախոսի զանգերի մատյանը, այդ թվում` մուտքային և ելքային զանգերի մասին տվյալները: Վնասարար հավելվածները կարող են սա օգտագործել` ձեր զանգերի մատյանը ջնջելու կամ փոփոխելու համար:"</string> - <string name="permlab_bodySensors" msgid="3411035315357380862">"օգտագործել մարմնի սենսորները (օրինակ` սրտի կծկումների հաճախականության չափիչ)"</string> + <string name="permlab_bodySensors" msgid="3411035315357380862">"օգտագործել մարմնի սենսորները (օրինակ՝ սրտի կծկումների հաճախականության չափիչ)"</string> <string name="permdesc_bodySensors" product="default" msgid="2365357960407973997">"Հավելվածին թույլ է տալիս մուտք ունենալ սենսորների տվյալներին, որոնք վերահսկում են ձեր ֆիզիկական վիճակը, օրինակ՝ ձեր սրտի զարկերը:"</string> <string name="permlab_readCalendar" msgid="6408654259475396200">"Կարդալ օրացույցի միջոցառումները և տվյալները"</string> <string name="permdesc_readCalendar" product="tablet" msgid="515452384059803326">"Այս հավելվածը կարող է կարդալ օրացույցի՝ ձեր պլանշետում պահված բոլոր միջոցառումները, ինչպես նաև հրապարակել կամ պահել ձեր օրացույցի տվյալները:"</string> @@ -428,7 +428,7 @@ <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"տեղադրության մասին տվյալների հասանելիություն ֆոնային ռեժիմում"</string> <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Այս հավելվածը ցանկացած ժամանակ կարող է տեսնել տեղադրության տվյալները, նույնիսկ երբ այն ակտիվ չէ։"</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"փոխել ձեր աուդիո կարգավորումները"</string> - <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Թույլ է տալիս հավելվածին փոփոխել ձայնանյութի գլոբալ կարգավորումները, ինչպես օրինակ` ձայնը և թե որ խոսափողն է օգտագործված արտածման համար:"</string> + <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Թույլ է տալիս հավելվածին փոփոխել ձայնանյութի գլոբալ կարգավորումները, ինչպես օրինակ՝ ձայնը և թե որ խոսափողն է օգտագործված արտածման համար:"</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"ձայնագրել աուդիո ֆայլ"</string> <string name="permdesc_recordAudio" msgid="3976213377904701093">"Այս հավելվածը ցանկացած պահի կարող է ձայնագրել խոսափողի օգնությամբ:"</string> <string name="permlab_sim_communication" msgid="176788115994050692">"ուղարկել հրամաններ SIM քարտին"</string> @@ -493,7 +493,7 @@ <string name="permlab_changeTetherState" msgid="9079611809931863861">"փոխել միացված կապը"</string> <string name="permdesc_changeTetherState" msgid="3025129606422533085">"Թույլ է տալիս հավելվածին փոխել կապված ցանցի միացման կարգավիճակը:"</string> <string name="permlab_accessWifiState" msgid="5552488500317911052">"դիտել Wi-Fi կապերը"</string> - <string name="permdesc_accessWifiState" msgid="6913641669259483363">"Թույլ է տալիս հավելվածին տեսնել Wi-Fi ցանցի տեղեկություններ, ինչպես օրինակ` արդյոք Wi-Fi-ը միացված է, թե` ոչ, և միացված Wi-Fi սարքի անունը:"</string> + <string name="permdesc_accessWifiState" msgid="6913641669259483363">"Թույլ է տալիս հավելվածին տեսնել Wi-Fi ցանցի տեղեկություններ, ինչպես օրինակ՝ արդյոք Wi-Fi-ը միացված է, թե` ոչ, և միացված Wi-Fi սարքի անունը:"</string> <string name="permlab_changeWifiState" msgid="7947824109713181554">"միանալ Wi-Fi-ին և անջատվել դրանից"</string> <string name="permdesc_changeWifiState" msgid="7170350070554505384">"Թույլ է տալիս հավելվածին միանալ Wi-Fi մուտքի կետերին և անջատվել այդ կետերից, ինչպես նաև կատարել սարքի կարգավորման փոփոխություններ Wi-Fi ցանցերի համար:"</string> <string name="permlab_changeWifiMulticastState" msgid="285626875870754696">"թույլատրել Բազմասփյուռ Wi-Fi-ի ընդունումը"</string> @@ -612,7 +612,7 @@ </string-array> <string name="face_icon_content_description" msgid="465030547475916280">"Դեմքի պատկերակ"</string> <string name="permlab_readSyncSettings" msgid="6250532864893156277">"կարդալ համաժամացման կարգավորումները"</string> - <string name="permdesc_readSyncSettings" msgid="1325658466358779298">"Թույլ է տալիս հավելվածին կարդալ համաժամացման կարգավորումները հաշվի համար: Օրինակ` այն կարող է որոշել, արդյոք Մարդիկ հավելվածը համաժամացված է հաշվի հետ:"</string> + <string name="permdesc_readSyncSettings" msgid="1325658466358779298">"Թույլ է տալիս հավելվածին կարդալ համաժամացման կարգավորումները հաշվի համար: Օրինակ՝ այն կարող է որոշել, արդյոք Մարդիկ հավելվածը համաժամացված է հաշվի հետ:"</string> <string name="permlab_writeSyncSettings" msgid="6583154300780427399">"համաժամացումը փոխարկել միացվածի և անջատվածի"</string> <string name="permdesc_writeSyncSettings" msgid="6029151549667182687">"Թույլ է տալիս հավելվածին փոփոխել համաժամացման կարգավորումները հաշվի համար: Օրինակ, այն կարող է օգտագործվել` միացնելու Մարդիկ հավելվածի համաժամացումը հաշվի հետ:"</string> <string name="permlab_readSyncStats" msgid="3747407238320105332">"կարդալ համաժամացման վիճակագրությունը"</string> @@ -873,7 +873,7 @@ <string name="lockscreen_forgot_pattern_button_text" msgid="8362442730606839031">"Մոռացե՞լ եք սխեման:"</string> <string name="lockscreen_glogin_forgot_pattern" msgid="9218940117797602518">"Հաշվի ապակողպում"</string> <string name="lockscreen_glogin_too_many_attempts" msgid="3775904917743034195">"Չափից շատ սխեմայի փորձեր"</string> - <string name="lockscreen_glogin_instructions" msgid="4695162942525531700">"Ապակողպելու համար` մուտք գործեք ձեր Google հաշվով:"</string> + <string name="lockscreen_glogin_instructions" msgid="4695162942525531700">"Ապակողպելու համար՝ մուտք գործեք ձեր Google հաշվով:"</string> <string name="lockscreen_glogin_username_hint" msgid="6916101478673157045">"Օգտանուն (էլփոստ)"</string> <string name="lockscreen_glogin_password_hint" msgid="3031027901286812848">"Գաղտնաբառ"</string> <string name="lockscreen_glogin_submit_button" msgid="3590556636347843733">"Մուտք գործել"</string> @@ -1404,7 +1404,7 @@ <string name="ime_action_done" msgid="6299921014822891569">"Պատրաստ է"</string> <string name="ime_action_previous" msgid="6548799326860401611">"Նախորդ"</string> <string name="ime_action_default" msgid="8265027027659800121">"Կատարել"</string> - <string name="dial_number_using" msgid="6060769078933953531">"Հավաքել հեռախոսահամարը`\nօգտագործելով <xliff:g id="NUMBER">%s</xliff:g>-ը"</string> + <string name="dial_number_using" msgid="6060769078933953531">"Հավաքել հեռախոսահամարը՝\nօգտագործելով <xliff:g id="NUMBER">%s</xliff:g>-ը"</string> <string name="create_contact_using" msgid="6200708808003692594">"Ստեղծել կոնտակտ`\nօգտագործելով <xliff:g id="NUMBER">%s</xliff:g>-ը"</string> <string name="grant_credentials_permission_message_header" msgid="5365733888842570481">"Հետևյալ մեկ կամ մի քանի հավելվածներին թույլտվություն է անհրաժեշտ՝ այժմ և հետագայում ձեր հաշվի տվյալներն օգտագործելու համար։"</string> <string name="grant_credentials_permission_message_footer" msgid="1886710210516246461">"Թույլատրե՞լ"</string> @@ -1474,7 +1474,7 @@ <string name="number_picker_increment_button" msgid="7621013714795186298">"Ավելացնել"</string> <string name="number_picker_decrement_button" msgid="5116948444762708204">"Նվազեցնել"</string> <string name="number_picker_increment_scroll_mode" msgid="8403893549806805985">"<xliff:g id="VALUE">%s</xliff:g> հպեք և պահեք:"</string> - <string name="number_picker_increment_scroll_action" msgid="8310191318914268271">"Սահեցրեք վերև` ավելացնելու համար, և ներքև` նվազեցնելու համար:"</string> + <string name="number_picker_increment_scroll_action" msgid="8310191318914268271">"Սահեցրեք վերև՝ ավելացնելու համար, և ներքև՝ նվազեցնելու համար:"</string> <string name="time_picker_increment_minute_button" msgid="7195870222945784300">"Աճեցնել րոպեն"</string> <string name="time_picker_decrement_minute_button" msgid="230925389943411490">"Նվազեցնել րոպեն"</string> <string name="time_picker_increment_hour_button" msgid="3063572723197178242">"Աճեցնել ժամը"</string> @@ -1598,7 +1598,7 @@ <string name="kg_invalid_puk" msgid="4809502818518963344">"Վերամուտքագրեք ճիշտ PUK ծածկագիրը: Կրկնվող փորձերը ընդմիշտ կկասեցնեն SIM քարտը:"</string> <string name="kg_invalid_confirm_pin_hint" product="default" msgid="4705368340409816254">"PIN ծածկագրերը չեն համընկնում"</string> <string name="kg_login_too_many_attempts" msgid="699292728290654121">"Չափից շատ սխեմայի փորձեր"</string> - <string name="kg_login_instructions" msgid="3619844310339066827">"Ապակողպելու համար` մուտք գործեք ձեր Google հաշվով:"</string> + <string name="kg_login_instructions" msgid="3619844310339066827">"Ապակողպելու համար՝ մուտք գործեք ձեր Google հաշվով:"</string> <string name="kg_login_username_hint" msgid="1765453775467133251">"Օգտանուն (էլփոստ)"</string> <string name="kg_login_password_hint" msgid="3330530727273164402">"Գաղտնաբառը"</string> <string name="kg_login_submit_button" msgid="893611277617096870">"Մուտք գործել"</string> @@ -1979,7 +1979,7 @@ <string name="shortcut_restore_signature_mismatch" msgid="579345304221605479">"Չհաջողվեց վերականգնել դյուրանցումը, քանի որ հավելվածների ստորագրությունները տարբեր են"</string> <string name="shortcut_restore_unknown_issue" msgid="2478146134395982154">"Չհաջողվեց վերականգնել դյուրանցումը"</string> <string name="shortcut_disabled_reason_unknown" msgid="753074793553599166">"Դյուրանցումն անջատված է"</string> - <string name="harmful_app_warning_uninstall" msgid="6472912975664191772">"ՀԵՌԱՑՆԵԼ"</string> + <string name="harmful_app_warning_uninstall" msgid="6472912975664191772">"ԱՊԱՏԵՂԱԴՐԵԼ"</string> <string name="harmful_app_warning_open_anyway" msgid="5963657791740211807">"ԲԱՑԵԼ"</string> <string name="harmful_app_warning_title" msgid="8794823880881113856">"Հայտնաբերվել է վնասաբեր հավելված"</string> <string name="slices_permission_request" msgid="3677129866636153406">"<xliff:g id="APP_0">%1$s</xliff:g> հավելվածն ուզում է ցուցադրել հատվածներ <xliff:g id="APP_2">%2$s</xliff:g> հավելվածից"</string> diff --git a/core/res/res/values-in/strings.xml b/core/res/res/values-in/strings.xml index d74b3fe3e013..a36831965738 100644 --- a/core/res/res/values-in/strings.xml +++ b/core/res/res/values-in/strings.xml @@ -1231,7 +1231,7 @@ <string name="volume_icon_description_notification" msgid="579091344110747279">"Volume pemberitahuan"</string> <string name="ringtone_default" msgid="9118299121288174597">"Nada dering default"</string> <string name="ringtone_default_with_actual" msgid="2709686194556159773">"Default (<xliff:g id="ACTUAL_RINGTONE">%1$s</xliff:g>)"</string> - <string name="ringtone_silent" msgid="397111123930141876">"Tidak Ada"</string> + <string name="ringtone_silent" msgid="397111123930141876">"Tidak ada"</string> <string name="ringtone_picker_title" msgid="667342618626068253">"Nada dering"</string> <string name="ringtone_picker_title_alarm" msgid="7438934548339024767">"Suara alarm"</string> <string name="ringtone_picker_title_notification" msgid="6387191794719608122">"Suara notifikasi"</string> diff --git a/core/res/res/values-kk/strings.xml b/core/res/res/values-kk/strings.xml index c55946e88ae9..aa60234fbc7a 100644 --- a/core/res/res/values-kk/strings.xml +++ b/core/res/res/values-kk/strings.xml @@ -1792,8 +1792,8 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Әкімші жаңартқан"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Әкімші жойған"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"Жарайды"</string> - <string name="battery_saver_description_with_learn_more" msgid="5997766757551917769">"Батарея жұмысының ұзақтығын арттыру үшін Battery Saver:\n\n•қараңғы тақырыпты іске қосады;\n•фондық әрекеттерді, кейбір көрнекі әсерлерді және \"Ok Google\" сияқты басқа да функцияларды өшіреді немесе шектейді.\n\n"<annotation id="url">"Толығырақ"</annotation></string> - <string name="battery_saver_description" msgid="8587408568232177204">"Батарея жұмысының ұзақтығын арттыру үшін Battery Saver:\n\n•қараңғы тақырыпты іске қосады;\n•фондық әрекеттерді, кейбір көрнекі әсерлерді және \"Ok Google\" сияқты басқа да функцияларды өшіреді немесе шектейді."</string> + <string name="battery_saver_description_with_learn_more" msgid="5997766757551917769">"Батарея жұмысының ұзақтығын арттыру үшін Батареяны үнемдеу режимі:\n\n•қараңғы тақырыпты іске қосады;\n•фондық әрекеттерді, кейбір көрнекі әсерлерді және \"Ok Google\" сияқты басқа да функцияларды өшіреді немесе шектейді.\n\n"<annotation id="url">"Толығырақ"</annotation></string> + <string name="battery_saver_description" msgid="8587408568232177204">"Батарея жұмысының ұзақтығын арттыру үшін Батареяны үнемдеу режимі:\n\n•қараңғы тақырыпты іске қосады;\n•фондық әрекеттерді, кейбір көрнекі әсерлерді және \"Ok Google\" сияқты басқа да функцияларды өшіреді немесе шектейді."</string> <string name="data_saver_description" msgid="4995164271550590517">"Дерек шығынын азайту үшін Data Saver функциясы кейбір қолданбаларға деректерді фондық режимде жіберуге және алуға жол бермейді. Ашық тұрған қолданба деректерді пайдаланады, бірақ шектеулі шамада (мысалы, кескіндер оларды түрткенге дейін көрсетілмейді)."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Data Saver функциясын қосу керек пе?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Қосу"</string> @@ -1912,7 +1912,7 @@ <string name="conference_call" msgid="5731633152336490471">"Конференциялық қоңырау"</string> <string name="tooltip_popup_title" msgid="7863719020269945722">"Қалқыма сөзкөмек"</string> <string name="app_category_game" msgid="4534216074910244790">"Ойындар"</string> - <string name="app_category_audio" msgid="8296029904794676222">"Музыка және аудиомазмұн"</string> + <string name="app_category_audio" msgid="8296029904794676222">"Музыка және аудио"</string> <string name="app_category_video" msgid="2590183854839565814">"Фильм және бейне"</string> <string name="app_category_image" msgid="7307840291864213007">"Суреттер және кескіндер"</string> <string name="app_category_social" msgid="2278269325488344054">"Әлеуметтік қолданба мен байланыс"</string> @@ -2000,7 +2000,7 @@ <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Режим туралы хабарландыру"</string> <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"Батарея заряды азаюы мүмкін"</string> <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"Батарея ұзаққа жетуі үшін, Battery Saver іске қосылды"</string> - <string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"Battery Saver"</string> + <string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"Батареяны үнемдеу режимі"</string> <string name="battery_saver_off_notification_title" msgid="7637255960468032515">"Battery Saver өшірілді"</string> <string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"Телефонның заряды жеткілікті. Функцияларға енді шектеу қойылмайды."</string> <string name="battery_saver_charged_notification_summary" product="tablet" msgid="4426317048139996888">"Планшеттің заряды жеткілікті. Функцияларға енді шектеу қойылмайды."</string> diff --git a/core/res/res/values-km/strings.xml b/core/res/res/values-km/strings.xml index 28629fd3bd65..af1db0b3e820 100644 --- a/core/res/res/values-km/strings.xml +++ b/core/res/res/values-km/strings.xml @@ -2000,7 +2000,7 @@ <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"ការជូនដំណឹងព័ត៌មានរបស់មុខងារទម្លាប់"</string> <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"ថ្មអាចនឹងអស់ មុនពេលសាកថ្មធម្មតា"</string> <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"បានបើកដំណើរការកម្មវិធីសន្សំថ្ម ដើម្បីបង្កើនកម្រិតថាមពលថ្ម"</string> - <string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"កម្មវិធីសន្សំថ្ម"</string> + <string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"មុខងារសន្សំថ្ម"</string> <string name="battery_saver_off_notification_title" msgid="7637255960468032515">"កម្មវិធីសន្សំថ្មត្រូវបានបិទ"</string> <string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"ទូរសព្ទមានកម្រិតថ្មគ្រប់គ្រាន់។ មុខងារផ្សេងៗមិនត្រូវបានរឹតបន្តឹងទៀតទេ។"</string> <string name="battery_saver_charged_notification_summary" product="tablet" msgid="4426317048139996888">"ថេប្លេតមានកម្រិតថ្មគ្រប់គ្រាន់។ មុខងារផ្សេងៗមិនត្រូវបានរឹតបន្តឹងទៀតទេ។"</string> diff --git a/core/res/res/values-ky/strings.xml b/core/res/res/values-ky/strings.xml index bd85908dad1a..2350ec8277bf 100644 --- a/core/res/res/values-ky/strings.xml +++ b/core/res/res/values-ky/strings.xml @@ -1108,7 +1108,7 @@ <string name="inputMethod" msgid="1784759500516314751">"Киргизүү ыкмасы"</string> <string name="editTextMenuTitle" msgid="857666911134482176">"Текст боюнча иштер"</string> <string name="low_internal_storage_view_title" msgid="9024241779284783414">"Сактагычта орун калбай баратат"</string> - <string name="low_internal_storage_view_text" msgid="8172166728369697835">"Системанын кээ бир функциялары иштебеши мүмкүн"</string> + <string name="low_internal_storage_view_text" msgid="8172166728369697835">"Айрым функциялар иштебеши мүмкүн"</string> <string name="low_internal_storage_view_text_no_boot" msgid="7368968163411251788">"Тутумда сактагыч жетишсиз. 250МБ бош орун бар экенин текшерип туруп, өчүрүп күйгүзүңүз."</string> <string name="app_running_notification_title" msgid="8985999749231486569">"<xliff:g id="APP_NAME">%1$s</xliff:g> иштөөдө"</string> <string name="app_running_notification_text" msgid="5120815883400228566">"Көбүрөөк маалымат үчүн же колдонмону токтотуш үчүн таптап коюңуз."</string> @@ -1317,7 +1317,7 @@ <string name="console_running_notification_title" msgid="6087888939261635904">"Сериялык консоль иштетилди"</string> <string name="console_running_notification_message" msgid="7892751888125174039">"Майнаптуулугуна таасири тиет. Аны өчүрүү үчүн операциялык тутумду жүктөгүчтү текшериңиз."</string> <string name="usb_contaminant_detected_title" msgid="4359048603069159678">"USB портунда суюктук же урандылар бар"</string> - <string name="usb_contaminant_detected_message" msgid="7346100585390795743">"USB порт автоматтык түрдө өчүрүлдү. Кененирээк маалымат алуу үчүн, таптап коюңуз."</string> + <string name="usb_contaminant_detected_message" msgid="7346100585390795743">"USB порт автоматтык түрдө өчтү. Кененирээк маалымат алуу үчүн, таптап коюңуз."</string> <string name="usb_contaminant_not_detected_title" msgid="2651167729563264053">"USB портун колдонууга болот"</string> <string name="usb_contaminant_not_detected_message" msgid="892863190942660462">"Телефон суюктук менен урандыларды аныктаган жок."</string> <string name="taking_remote_bugreport_notification_title" msgid="1582531382166919850">"Мүчүлүштүк тууралуу кабар алынууда…"</string> diff --git a/core/res/res/values-mk/strings.xml b/core/res/res/values-mk/strings.xml index 643cafdbcb20..793cde7e8f8b 100644 --- a/core/res/res/values-mk/strings.xml +++ b/core/res/res/values-mk/strings.xml @@ -985,7 +985,7 @@ <string name="searchview_description_search" msgid="1045552007537359343">"Пребарај"</string> <string name="searchview_description_query" msgid="7430242366971716338">"Пребарај барање"</string> <string name="searchview_description_clear" msgid="1989371719192982900">"Исчисти барање"</string> - <string name="searchview_description_submit" msgid="6771060386117334686">"Поднеси барање"</string> + <string name="searchview_description_submit" msgid="6771060386117334686">"Испрати барање"</string> <string name="searchview_description_voice" msgid="42360159504884679">"Гласовно пребарување"</string> <string name="enable_explore_by_touch_warning_title" msgid="5095399706284943314">"Овозможи „Истражувај со допир“?"</string> <string name="enable_explore_by_touch_warning_message" product="tablet" msgid="1037295476738940824">"<xliff:g id="ACCESSIBILITY_SERVICE_NAME">%1$s</xliff:g> сака да овозможи „Истражувај со допир“. Кога е вклучено „Истражувај со допир“, може да се слушнат или да се видат описи на она што е под вашиот прст или да се прават движења за комуницирање со таблетот."</string> @@ -1436,7 +1436,7 @@ <string name="upload_file" msgid="8651942222301634271">"Избери датотека"</string> <string name="no_file_chosen" msgid="4146295695162318057">"Не е избрана датотека"</string> <string name="reset" msgid="3865826612628171429">"Ресетирај"</string> - <string name="submit" msgid="862795280643405865">"Поднеси"</string> + <string name="submit" msgid="862795280643405865">"Испрати"</string> <string name="car_mode_disable_notification_title" msgid="8450693275833142896">"Апликацијата за возење работи"</string> <string name="car_mode_disable_notification_message" msgid="8954550232288567515">"Допрете за да излезете од апликацијата за возење."</string> <string name="back_button_label" msgid="4078224038025043387">"Назад"</string> diff --git a/core/res/res/values-ml/strings.xml b/core/res/res/values-ml/strings.xml index f05ee8a414e6..1b036045160c 100644 --- a/core/res/res/values-ml/strings.xml +++ b/core/res/res/values-ml/strings.xml @@ -325,7 +325,7 @@ <string name="capability_desc_canControlMagnification" msgid="2206586716709254805">"ഡിസ്പ്ലേയുടെ സൂം നിലയും പൊസിഷനിംഗും നിയന്ത്രിക്കുക."</string> <string name="capability_title_canPerformGestures" msgid="9106545062106728987">"ജെസ്റ്ററുകൾ നിർവഹിക്കുക"</string> <string name="capability_desc_canPerformGestures" msgid="6619457251067929726">"ടാപ്പുചെയ്യാനോ സ്വൈപ്പുചെയ്യാനോ പിഞ്ചുചെയ്യാനോ മറ്റ് ജെസ്റ്ററുകൾ നിർവഹിക്കാനോ കഴിയും."</string> - <string name="capability_title_canCaptureFingerprintGestures" msgid="1189053104594608091">"ഫിംഗർപ്രിന്റ് ജെസ്റ്ററുകൾ"</string> + <string name="capability_title_canCaptureFingerprintGestures" msgid="1189053104594608091">"ഫിംഗർപ്രിന്റ് ജെസ്ച്ചറുകൾ"</string> <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"ഉപകരണത്തിന്റെ ഫിംഗർപ്രിന്റ് സെൻസറിൽ ചെയ്ത ജെസ്റ്ററുകൾ ക്യാപ്ചർ ചെയ്യാനാകും."</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"സ്ക്രീന്ഷോട്ട് എടുക്കുക"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"ഡിസ്പ്ലേയുടെ സ്ക്രീൻഷോട്ട് എടുക്കാൻ കഴിയും."</string> @@ -1547,7 +1547,7 @@ <string name="sending" msgid="206925243621664438">"അയയ്ക്കുന്നു…"</string> <string name="launchBrowserDefault" msgid="6328349989932924119">"ബ്രൗസർ സമാരംഭിക്കണോ?"</string> <string name="SetupCallDefault" msgid="5581740063237175247">"കോൾ സ്വീകരിക്കണോ?"</string> - <string name="activity_resolver_use_always" msgid="5575222334666843269">"എല്ലായ്പ്പോഴും"</string> + <string name="activity_resolver_use_always" msgid="5575222334666843269">"എല്ലായ്പ്പോഴും"</string> <string name="activity_resolver_use_once" msgid="948462794469672658">"ഒരിക്കൽ മാത്രം"</string> <string name="activity_resolver_work_profiles_support" msgid="4071345609235361269">"%1$s, ഔദ്യോഗിക പ്രൊഫൈലിനെ പിന്തുണയ്ക്കുന്നില്ല"</string> <string name="default_audio_route_name" product="tablet" msgid="367936735632195517">"ടാബ്ലെറ്റ്"</string> diff --git a/core/res/res/values-my/strings.xml b/core/res/res/values-my/strings.xml index 8a0dd91a7370..b9bf08fa6d7e 100644 --- a/core/res/res/values-my/strings.xml +++ b/core/res/res/values-my/strings.xml @@ -1093,7 +1093,7 @@ <string name="cut" msgid="2561199725874745819">"ဖြတ်ရန်"</string> <string name="copy" msgid="5472512047143665218">"ကူးရန်"</string> <string name="failed_to_copy_to_clipboard" msgid="725919885138539875">"ကလစ်ဘုတ်သို့ မိတ္တူကူးခြင်း မအောင်မြင်ပါ"</string> - <string name="paste" msgid="461843306215520225">"Paste"</string> + <string name="paste" msgid="461843306215520225">"ကူးထည့်ရန်"</string> <string name="paste_as_plain_text" msgid="7664800665823182587">"စာသားအတိုင်း ကူးထည့်ပါ"</string> <string name="replace" msgid="7842675434546657444">"အစားထိုခြင်း"</string> <string name="delete" msgid="1514113991712129054">"ဖျက်ရန်"</string> diff --git a/core/res/res/values-nb/strings.xml b/core/res/res/values-nb/strings.xml index 1d15398f8539..5099d4f4de03 100644 --- a/core/res/res/values-nb/strings.xml +++ b/core/res/res/values-nb/strings.xml @@ -1091,7 +1091,7 @@ <string name="elapsed_time_short_format_h_mm_ss" msgid="2302144714803345056">"<xliff:g id="HOURS">%1$d</xliff:g>:<xliff:g id="MINUTES">%2$02d</xliff:g>:<xliff:g id="SECONDS">%3$02d</xliff:g>"</string> <string name="selectAll" msgid="1532369154488982046">"Merk alt"</string> <string name="cut" msgid="2561199725874745819">"Klipp ut"</string> - <string name="copy" msgid="5472512047143665218">"Kopier"</string> + <string name="copy" msgid="5472512047143665218">"Kopiér"</string> <string name="failed_to_copy_to_clipboard" msgid="725919885138539875">"Kunne ikke kopiere til utklippstavlen"</string> <string name="paste" msgid="461843306215520225">"Lim inn"</string> <string name="paste_as_plain_text" msgid="7664800665823182587">"Lim inn som ren tekst"</string> diff --git a/core/res/res/values-nl/strings.xml b/core/res/res/values-nl/strings.xml index c2c0e1f4c00e..e6b00396af22 100644 --- a/core/res/res/values-nl/strings.xml +++ b/core/res/res/values-nl/strings.xml @@ -711,7 +711,7 @@ <item msgid="6216981255272016212">"Aangepast"</item> </string-array> <string-array name="emailAddressTypes"> - <item msgid="7786349763648997741">"Thuis"</item> + <item msgid="7786349763648997741">"Privé"</item> <item msgid="435564470865989199">"Werk"</item> <item msgid="4199433197875490373">"Overig"</item> <item msgid="3233938986670468328">"Aangepast"</item> @@ -769,7 +769,7 @@ <string name="eventTypeAnniversary" msgid="4684702412407916888">"Jubileum"</string> <string name="eventTypeOther" msgid="530671238533887997">"Overig"</string> <string name="emailTypeCustom" msgid="1809435350482181786">"Aangepast"</string> - <string name="emailTypeHome" msgid="1597116303154775999">"Thuis"</string> + <string name="emailTypeHome" msgid="1597116303154775999">"Privé"</string> <string name="emailTypeWork" msgid="2020095414401882111">"Werk"</string> <string name="emailTypeOther" msgid="5131130857030897465">"Overig"</string> <string name="emailTypeMobile" msgid="787155077375364230">"Mobiel"</string> @@ -931,9 +931,9 @@ <string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nWeet u zeker dat u deze pagina wilt verlaten?"</string> <string name="save_password_label" msgid="9161712335355510035">"Bevestigen"</string> <string name="double_tap_toast" msgid="7065519579174882778">"Tip: dubbeltik om in en uit te zoomen."</string> - <string name="autofill_this_form" msgid="3187132440451621492">"Autom. aanvullen"</string> - <string name="setup_autofill" msgid="5431369130866618567">"Autom. aanvullen instellen"</string> - <string name="autofill_window_title" msgid="4379134104008111961">"Automatisch aanvullen met <xliff:g id="SERVICENAME">%1$s</xliff:g>"</string> + <string name="autofill_this_form" msgid="3187132440451621492">"Autom. invullen"</string> + <string name="setup_autofill" msgid="5431369130866618567">"Autom. invullen instellen"</string> + <string name="autofill_window_title" msgid="4379134104008111961">"Automatisch invullen met <xliff:g id="SERVICENAME">%1$s</xliff:g>"</string> <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string> <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string> <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string> @@ -1101,7 +1101,7 @@ <string name="selectTextMode" msgid="3225108910999318778">"Tekst selecteren"</string> <string name="undo" msgid="3175318090002654673">"Ongedaan maken"</string> <string name="redo" msgid="7231448494008532233">"Opnieuw"</string> - <string name="autofill" msgid="511224882647795296">"Automatisch aanvullen"</string> + <string name="autofill" msgid="511224882647795296">"Automatisch invullen"</string> <string name="textSelectionCABTitle" msgid="5151441579532476940">"Tekstselectie"</string> <string name="addToDictionary" msgid="8041821113480950096">"Toevoegen aan woordenboek"</string> <string name="deleteText" msgid="4200807474529938112">"Verwijderen"</string> @@ -1276,7 +1276,7 @@ <string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"Nooit toestaan"</string> <string name="sim_removed_title" msgid="5387212933992546283">"Simkaart verwijderd"</string> <string name="sim_removed_message" msgid="9051174064474904617">"Het mobiele netwerk is niet beschikbaar totdat u het apparaat opnieuw start met een geldige simkaart."</string> - <string name="sim_done_button" msgid="6464250841528410598">"Gereed"</string> + <string name="sim_done_button" msgid="6464250841528410598">"Klaar"</string> <string name="sim_added_title" msgid="7930779986759414595">"Simkaart aangesloten"</string> <string name="sim_added_message" msgid="6602906609509958680">"Start je apparaat opnieuw voor toegang tot het mobiele netwerk."</string> <string name="sim_restart_button" msgid="8481803851341190038">"Opnieuw starten"</string> @@ -1289,7 +1289,7 @@ <string name="time_picker_dialog_title" msgid="9053376764985220821">"Tijd instellen"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"Datum instellen"</string> <string name="date_time_set" msgid="4603445265164486816">"Instellen"</string> - <string name="date_time_done" msgid="8363155889402873463">"Gereed"</string> + <string name="date_time_done" msgid="8363155889402873463">"Klaar"</string> <string name="perms_new_perm_prefix" msgid="6984556020395757087"><font size="12" fgcolor="#ff33b5e5">"NIEUW: "</font></string> <string name="perms_description_app" msgid="2747752389870161996">"Geleverd door <xliff:g id="APP_NAME">%1$s</xliff:g>."</string> <string name="no_permissions" msgid="5729199278862516390">"Geen rechten nodig"</string> @@ -1376,7 +1376,7 @@ <string name="ext_media_status_removed" msgid="241223931135751691">"Verwijderd"</string> <string name="ext_media_status_unmounted" msgid="8145812017295835941">"Uitgeworpen"</string> <string name="ext_media_status_checking" msgid="159013362442090347">"Controleren…"</string> - <string name="ext_media_status_mounted" msgid="3459448555811203459">"Gereed"</string> + <string name="ext_media_status_mounted" msgid="3459448555811203459">"Klaar"</string> <string name="ext_media_status_mounted_ro" msgid="1974809199760086956">"Alleen lezen"</string> <string name="ext_media_status_bad_removal" msgid="508448566481406245">"Onveilig verwijderd"</string> <string name="ext_media_status_unmountable" msgid="7043574843541087748">"Beschadigd"</string> @@ -1401,7 +1401,7 @@ <string name="ime_action_search" msgid="4501435960587287668">"Zoeken"</string> <string name="ime_action_send" msgid="8456843745664334138">"Verzenden"</string> <string name="ime_action_next" msgid="4169702997635728543">"Volgende"</string> - <string name="ime_action_done" msgid="6299921014822891569">"Gereed"</string> + <string name="ime_action_done" msgid="6299921014822891569">"Klaar"</string> <string name="ime_action_previous" msgid="6548799326860401611">"Vorige"</string> <string name="ime_action_default" msgid="8265027027659800121">"Uitvoeren"</string> <string name="dial_number_using" msgid="6060769078933953531">"Nummer bellen\nmet <xliff:g id="NUMBER">%s</xliff:g>"</string> @@ -1448,7 +1448,7 @@ <item quantity="other"><xliff:g id="INDEX">%d</xliff:g> van <xliff:g id="TOTAL">%d</xliff:g></item> <item quantity="one">1 overeenkomst</item> </plurals> - <string name="action_mode_done" msgid="2536182504764803222">"Gereed"</string> + <string name="action_mode_done" msgid="2536182504764803222">"Klaar"</string> <string name="progress_erasing" msgid="6891435992721028004">"Gedeelde opslag wissen…"</string> <string name="share" msgid="4157615043345227321">"Delen"</string> <string name="find" msgid="5015737188624767706">"Vinden"</string> @@ -1492,7 +1492,7 @@ <string name="keyboardview_keycode_alt" msgid="8997420058584292385">"Alt"</string> <string name="keyboardview_keycode_cancel" msgid="2134624484115716975">"Annuleren"</string> <string name="keyboardview_keycode_delete" msgid="2661117313730098650">"Delete"</string> - <string name="keyboardview_keycode_done" msgid="2524518019001653851">"Gereed"</string> + <string name="keyboardview_keycode_done" msgid="2524518019001653851">"Klaar"</string> <string name="keyboardview_keycode_mode_change" msgid="2743735349997999020">"Modus wijzigen"</string> <string name="keyboardview_keycode_shift" msgid="3026509237043975573">"Shift"</string> <string name="keyboardview_keycode_enter" msgid="168054869339091055">"Enter"</string> @@ -1645,7 +1645,7 @@ <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"Functies kiezen voor gebruik met de sneltoets via de volumeknop"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> is uitgeschakeld"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Snelkoppelingen bewerken"</string> - <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Gereed"</string> + <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Klaar"</string> <string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Sneltoets uitschakelen"</string> <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Sneltoets gebruiken"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Kleurinversie"</string> @@ -1774,7 +1774,7 @@ <string name="immersive_cling_title" msgid="2307034298721541791">"Volledig scherm wordt weergegeven"</string> <string name="immersive_cling_description" msgid="7092737175345204832">"Swipe omlaag vanaf de bovenkant van het scherm om af te sluiten."</string> <string name="immersive_cling_positive" msgid="7047498036346489883">"Ik snap het"</string> - <string name="done_label" msgid="7283767013231718521">"Gereed"</string> + <string name="done_label" msgid="7283767013231718521">"Klaar"</string> <string name="hour_picker_description" msgid="5153757582093524635">"Ronde schuifregelaar voor uren"</string> <string name="minute_picker_description" msgid="9029797023621927294">"Ronde schuifregelaar voor minuten"</string> <string name="select_hours" msgid="5982889657313147347">"Uren selecteren"</string> @@ -1928,13 +1928,13 @@ <string name="time_picker_prompt_label" msgid="303588544656363889">"Typ een tijd"</string> <string name="time_picker_text_input_mode_description" msgid="4761160667516611576">"Schakel naar de tekstinvoermodus om de tijd in te voeren."</string> <string name="time_picker_radial_mode_description" msgid="1222342577115016953">"Schakel naar de klokmodus om de tijd in te voeren."</string> - <string name="autofill_picker_accessibility_title" msgid="4425806874792196599">"Opties voor automatisch aanvullen"</string> - <string name="autofill_save_accessibility_title" msgid="1523225776218450005">"Opslaan voor Automatisch aanvullen"</string> + <string name="autofill_picker_accessibility_title" msgid="4425806874792196599">"Opties voor automatisch invullen"</string> + <string name="autofill_save_accessibility_title" msgid="1523225776218450005">"Opslaan voor Automatisch invullen"</string> <string name="autofill_error_cannot_autofill" msgid="6528827648643138596">"Content kan niet automatisch worden aangevuld"</string> - <string name="autofill_picker_no_suggestions" msgid="1076022650427481509">"Geen suggesties van Automatisch aanvullen"</string> + <string name="autofill_picker_no_suggestions" msgid="1076022650427481509">"Geen suggesties van Automatisch invullen"</string> <plurals name="autofill_picker_some_suggestions" formatted="false" msgid="6651883186966959978"> - <item quantity="other"><xliff:g id="COUNT">%1$s</xliff:g> suggesties van Automatisch aanvullen</item> - <item quantity="one">Eén suggestie van Automatisch aanvullen</item> + <item quantity="other"><xliff:g id="COUNT">%1$s</xliff:g> suggesties van Automatisch invullen</item> + <item quantity="one">Eén suggestie van Automatisch invullen</item> </plurals> <string name="autofill_save_title" msgid="7719802414283739775">"Opslaan in "<b>"<xliff:g id="LABEL">%1$s</xliff:g>"</b>"?"</string> <string name="autofill_save_title_with_type" msgid="3002460014579799605">"<xliff:g id="TYPE">%1$s</xliff:g> opslaan in "<b>"<xliff:g id="LABEL">%2$s</xliff:g>"</b>"?"</string> diff --git a/core/res/res/values-pa/strings.xml b/core/res/res/values-pa/strings.xml index 9faa33785f1f..2627b53791f5 100644 --- a/core/res/res/values-pa/strings.xml +++ b/core/res/res/values-pa/strings.xml @@ -896,7 +896,7 @@ <string name="keyguard_accessibility_unlock_area_collapsed" msgid="4729922043778400434">"ਅਣਲਾਕ ਖੇਤਰ ਨਸ਼ਟ ਕੀਤਾ।"</string> <string name="keyguard_accessibility_widget" msgid="6776892679715699875">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g> ਵਿਜੇਟ।"</string> <string name="keyguard_accessibility_user_selector" msgid="1466067610235696600">"ਉਪਭੋਗਤਾ ਚੋਣਕਾਰ"</string> - <string name="keyguard_accessibility_status" msgid="6792745049712397237">"ਅਵਸਥਾ"</string> + <string name="keyguard_accessibility_status" msgid="6792745049712397237">"ਸਥਿਤੀ"</string> <string name="keyguard_accessibility_camera" msgid="7862557559464986528">"ਕੈਮਰਾ"</string> <string name="keygaurd_accessibility_media_controls" msgid="2267379779900620614">"ਮੀਡੀਆ ਨਿਯੰਤਰਣ"</string> <string name="keyguard_accessibility_widget_reorder_start" msgid="7066213328912939191">"ਵਿਜੇਟ ਨੂੰ ਪੁਨਰ ਤਰਤੀਬ ਦੇਣਾ ਸ਼ੁਰੂ ਹੋਇਆ।"</string> diff --git a/core/res/res/values-ru/strings.xml b/core/res/res/values-ru/strings.xml index 6d348d0eb7a1..fa5b001539b3 100644 --- a/core/res/res/values-ru/strings.xml +++ b/core/res/res/values-ru/strings.xml @@ -1312,7 +1312,7 @@ <string name="sms_short_code_confirm_deny" msgid="1356917469323768230">"Отмена"</string> <string name="sms_short_code_remember_choice" msgid="1374526438647744862">"Запомнить выбор"</string> <string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"Это можно изменить позже в разделе настроек \"Приложения\"."</string> - <string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"Всегда разрешать"</string> + <string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"Разрешать всегда"</string> <string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"Не разрешать"</string> <string name="sim_removed_title" msgid="5387212933992546283">"SIM-карта удалена"</string> <string name="sim_removed_message" msgid="9051174064474904617">"Пока вы не вставите действующую SIM-карту, мобильная сеть будет недоступна."</string> diff --git a/core/res/res/values-sr/strings.xml b/core/res/res/values-sr/strings.xml index d0e5182a0463..651efc4eb2c1 100644 --- a/core/res/res/values-sr/strings.xml +++ b/core/res/res/values-sr/strings.xml @@ -241,7 +241,7 @@ <string name="global_action_power_off" msgid="4404936470711393203">"Искључи"</string> <string name="global_action_power_options" msgid="1185286119330160073">"Напајање"</string> <string name="global_action_restart" msgid="4678451019561687074">"Рестартуј"</string> - <string name="global_action_emergency" msgid="1387617624177105088">"Хитни позив"</string> + <string name="global_action_emergency" msgid="1387617624177105088">"Хитан позив"</string> <string name="global_action_bug_report" msgid="5127867163044170003">"Извештај о грешци"</string> <string name="global_action_logout" msgid="6093581310002476511">"Заврши сесију"</string> <string name="global_action_screenshot" msgid="2610053466156478564">"Снимак екрана"</string> @@ -1815,7 +1815,7 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Ажурирао је администратор"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Избрисао је администратор"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"Потврди"</string> - <string name="battery_saver_description_with_learn_more" msgid="5997766757551917769">"Да би се продужило трајање батерије, Уштеда батерије:\n\n•укључује тамну тему\n•искључује или ограничава активности у позадини, неке визуелне ефекте и друге функције, на пример, „Ок Google“\n\n"<annotation id="url">"Сазнајте више"</annotation></string> + <string name="battery_saver_description_with_learn_more" msgid="5997766757551917769">"Да би се продужило трајање батерије, Уштеда батерије:\n\n•укључује тамну тему\n•искључује или ограничава активности у позадини, неке визуелне ефекте и друге функције, на пример „Ок Google“\n\n"<annotation id="url">"Сазнајте више"</annotation></string> <string name="battery_saver_description" msgid="8587408568232177204">"Да би се продужило трајање батерије, Уштеда батерије:\n\n•укључује тамну тему\n•искључује или ограничава активности у позадини, неке визуелне ефекте и друге функције, на пример, „Ок Google“"</string> <string name="data_saver_description" msgid="4995164271550590517">"Да би се смањила потрошња података, Уштеда података спречава неке апликације да шаљу или примају податке у позадини. Апликација коју тренутно користите може да приступа подацима, али ће то чинити ређе. На пример, слике се неће приказивати док их не додирнете."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Желите да укључите Уштеду података?"</string> diff --git a/core/res/res/values-sv/strings.xml b/core/res/res/values-sv/strings.xml index 3c5a1e92db7b..206ea8d300d1 100644 --- a/core/res/res/values-sv/strings.xml +++ b/core/res/res/values-sv/strings.xml @@ -1829,7 +1829,7 @@ <item quantity="other">I %d tim</item> <item quantity="one">I en 1 tim</item> </plurals> - <string name="zen_mode_until" msgid="2250286190237669079">"Till kl. <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> + <string name="zen_mode_until" msgid="2250286190237669079">"Till <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"Till <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> (nästa alarm)"</string> <string name="zen_mode_forever" msgid="740585666364912448">"Tills du stänger av"</string> <string name="zen_mode_forever_dnd" msgid="3423201955704180067">"Tills du inaktiverar Stör ej"</string> diff --git a/core/res/res/values-sw/strings.xml b/core/res/res/values-sw/strings.xml index 7a5cdcffbefa..2476a2d722ba 100644 --- a/core/res/res/values-sw/strings.xml +++ b/core/res/res/values-sw/strings.xml @@ -303,7 +303,7 @@ <string name="permgroupdesc_sms" msgid="5726462398070064542">"itume na iangalie SMS"</string> <string name="permgrouplab_storage" msgid="1938416135375282333">"Faili na maudhui"</string> <string name="permgroupdesc_storage" msgid="6351503740613026600">"ifikie picha, maudhui na faili kwenye kifaa chako"</string> - <string name="permgrouplab_microphone" msgid="2480597427667420076">"Kipokea sauti"</string> + <string name="permgrouplab_microphone" msgid="2480597427667420076">"Maikrofoni"</string> <string name="permgroupdesc_microphone" msgid="1047786732792487722">"irekodi sauti"</string> <string name="permgrouplab_activityRecognition" msgid="3324466667921775766">"Shughuli za kimwili"</string> <string name="permgroupdesc_activityRecognition" msgid="4725624819457670704">"ifikie shughuli zako za kimwili"</string> diff --git a/core/res/res/values-th/strings.xml b/core/res/res/values-th/strings.xml index 000ad10827a4..d4e0672fa4d2 100644 --- a/core/res/res/values-th/strings.xml +++ b/core/res/res/values-th/strings.xml @@ -2029,7 +2029,7 @@ <item quantity="other"><xliff:g id="FILE_NAME_2">%s</xliff:g> และอีก <xliff:g id="COUNT_3">%d</xliff:g> ไฟล์</item> <item quantity="one"><xliff:g id="FILE_NAME_0">%s</xliff:g> และอีก <xliff:g id="COUNT_1">%d</xliff:g> ไฟล์</item> </plurals> - <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"ไม่มีบุคคลที่แนะนำให้แชร์ด้วย"</string> + <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"ไม่พบใครที่แนะนำให้แชร์ด้วย"</string> <string name="chooser_all_apps_button_label" msgid="3230427756238666328">"รายชื่อแอป"</string> <string name="usb_device_resolve_prompt_warn" msgid="325871329788064199">"แอปนี้ไม่ได้รับอนุญาตให้บันทึกเสียงแต่จะบันทึกเสียงผ่านอุปกรณ์ USB นี้ได้"</string> <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"หน้าแรก"</string> diff --git a/core/res/res/values-uk/strings.xml b/core/res/res/values-uk/strings.xml index 2ac900bc3e9c..09b670b86216 100644 --- a/core/res/res/values-uk/strings.xml +++ b/core/res/res/values-uk/strings.xml @@ -1130,7 +1130,7 @@ <string name="elapsed_time_short_format_mm_ss" msgid="8689459651807876423">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string> <string name="elapsed_time_short_format_h_mm_ss" msgid="2302144714803345056">"<xliff:g id="HOURS">%1$d</xliff:g>:<xliff:g id="MINUTES">%2$02d</xliff:g>:<xliff:g id="SECONDS">%3$02d</xliff:g>"</string> <string name="selectAll" msgid="1532369154488982046">"Вибрати все"</string> - <string name="cut" msgid="2561199725874745819">"Виріз."</string> + <string name="cut" msgid="2561199725874745819">"Вирізати"</string> <string name="copy" msgid="5472512047143665218">"Копіювати"</string> <string name="failed_to_copy_to_clipboard" msgid="725919885138539875">"Не вдалося скопіювати в буфер обміну"</string> <string name="paste" msgid="461843306215520225">"Вставити"</string> @@ -1856,7 +1856,7 @@ <item quantity="other">Протягом %1$d хв (до <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item> </plurals> <plurals name="zen_mode_duration_hours_summary" formatted="false" msgid="7725354244196466758"> - <item quantity="one">%1$d годину (до <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item> + <item quantity="one">%1$d година (до <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item> <item quantity="few">%1$d години (до <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item> <item quantity="many">%1$d годин (до <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item> <item quantity="other">%1$d години (до <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item> diff --git a/core/res/res/values-uz/strings.xml b/core/res/res/values-uz/strings.xml index a3a59e31db57..44c217c0a1fb 100644 --- a/core/res/res/values-uz/strings.xml +++ b/core/res/res/values-uz/strings.xml @@ -1792,8 +1792,8 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Administrator tomonidan yangilangan"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Administrator tomonidan o‘chirilgan"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string> - <string name="battery_saver_description_with_learn_more" msgid="5997766757551917769">"Batareya quvvatini uzaytirish uchun Quvvat tejash funksiyasi:\n\n•Tungi mavzuni yoqadi\n•Fondagi harakatlar, vizual effektlar va “Hey Google” kabi boshqa funksiyalarni faolsizlantiradi\n\n"<annotation id="url">"Batafsil"</annotation></string> - <string name="battery_saver_description" msgid="8587408568232177204">"Batareya quvvatini uzaytirish uchun Quvvat tejash funksiyasi:\n\n•Tungi mavzuni yoqadi\n•Fondagi harakatlar, vizual effektlar va “Hey Google” kabi boshqa funksiyalarni faolsizlantiradi"</string> + <string name="battery_saver_description_with_learn_more" msgid="5997766757551917769">"Batareya quvvatini uzaytirish uchun Quvvat tejash funksiyasi:\n\n•Tungi mavzuni yoqadi\n•Fondagi harakatlar, vizual effektlar va “Ok Google” kabi boshqa funksiyalarni faolsizlantiradi\n\n"<annotation id="url">"Batafsil"</annotation></string> + <string name="battery_saver_description" msgid="8587408568232177204">"Batareya quvvatini uzaytirish uchun Quvvat tejash funksiyasi:\n\n•Tungi mavzuni yoqadi\n•Fondagi harakatlar, vizual effektlar va “Ok Google” kabi boshqa funksiyalarni faolsizlantiradi"</string> <string name="data_saver_description" msgid="4995164271550590517">"Trafik tejash rejimida ayrim ilovalar uchun orqa fonda internetdan foydalanish imkoniyati cheklanadi. Siz ishlatayotgan ilova zaruratga qarab internet-trafik sarflashi mumkin, biroq cheklangan miqdorda. Masalan, rasmlar ustiga bosmaguningizcha ular yuklanmaydi."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Trafik tejash yoqilsinmi?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Yoqish"</string> diff --git a/core/res/res/values-vi/strings.xml b/core/res/res/values-vi/strings.xml index 9c99bddf18af..1a0ec2a1c763 100644 --- a/core/res/res/values-vi/strings.xml +++ b/core/res/res/values-vi/strings.xml @@ -536,7 +536,7 @@ <string name="permdesc_imagesWrite" msgid="5195054463269193317">"Cho phép ứng dụng này sửa đổi bộ sưu tập ảnh của bạn."</string> <string name="permlab_mediaLocation" msgid="7368098373378598066">"đọc vị trí từ bộ sưu tập phương tiện"</string> <string name="permdesc_mediaLocation" msgid="597912899423578138">"Cho phép ứng dụng này đọc vị trí từ bộ sưu tập phương tiện của bạn."</string> - <string name="biometric_dialog_default_title" msgid="55026799173208210">"Xác minh đó là bạn"</string> + <string name="biometric_dialog_default_title" msgid="55026799173208210">"Xác minh danh tính của bạn"</string> <string name="biometric_error_hw_unavailable" msgid="2494077380540615216">"Không có phần cứng sinh trắc học"</string> <string name="biometric_error_user_canceled" msgid="6732303949695293730">"Đã hủy xác thực"</string> <string name="biometric_not_recognized" msgid="5106687642694635888">"Không nhận dạng được"</string> diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml index 2284dc8db0ef..781bb2ad1857 100644 --- a/core/res/res/values/config.xml +++ b/core/res/res/values/config.xml @@ -2107,7 +2107,7 @@ effectively and terminate the dream. Use -1 to disable this safety feature. --> <integer name="config_dreamsBatteryLevelDrainCutoff">5</integer> <!-- Limit of how long the device can remain unlocked due to attention checking. --> - <integer name="config_attentionMaximumExtension">330000</integer> <!-- 5 minutes and 30 sec.--> + <integer name="config_attentionMaximumExtension">900000</integer> <!-- 15 minutes. --> <!-- ComponentName of a dream to show whenever the system would otherwise have gone to sleep. When the PowerManager is asked to go to sleep, it will instead @@ -4387,4 +4387,7 @@ <bool name="config_pdp_reject_enable_retry">false</bool> <!-- pdp data reject retry delay in ms --> <integer name="config_pdp_reject_retry_delay_ms">-1</integer> + + <!-- Component names of the services which will keep critical code path warm --> + <string-array name="config_keep_warming_services" translatable="false" /> </resources> diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml index 51faf20df6b5..4b303a382ded 100644 --- a/core/res/res/values/strings.xml +++ b/core/res/res/values/strings.xml @@ -4835,10 +4835,10 @@ <string name="confirm_battery_saver">OK</string> <!-- [CHAR_LIMIT=NONE] Battery saver: Feature description, with a "learn more" link. --> - <string name="battery_saver_description_with_learn_more">To extend battery life, Battery Saver:\n\n\u2022Turns on Dark theme\n\u2022Turns off or restricts background activity, some visual effects, and other features like \u201cHey Google\u201d\n\n<annotation id="url">Learn more</annotation></string> + <string name="battery_saver_description_with_learn_more">To extend battery life, Battery Saver:\n\n\u2022 Turns on Dark theme\n\u2022 Turns off or restricts background activity, some visual effects, and other features like \u201cHey Google\u201d\n\n<annotation id="url">Learn more</annotation></string> <!-- [CHAR_LIMIT=NONE] Battery saver: Feature description, without a "learn more" link. --> - <string name="battery_saver_description">To extend battery life, Battery Saver:\n\n\u2022Turns on Dark theme\n\u2022Turns off or restricts background activity, some visual effects, and other features like \u201cHey Google\u201d</string> + <string name="battery_saver_description">To extend battery life, Battery Saver:\n\n\u2022 Turns on Dark theme\n\u2022 Turns off or restricts background activity, some visual effects, and other features like \u201cHey Google\u201d</string> <!-- [CHAR_LIMIT=NONE] Data saver: Feature description --> <string name="data_saver_description">To help reduce data usage, Data Saver prevents some apps from sending or receiving data in the background. An app you’re currently using can access data, but may do so less frequently. This may mean, for example, that images don’t display until you tap them.</string> diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index 90667791ac8a..c51dca17411e 100644 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -4053,4 +4053,6 @@ <java-symbol type="string" name="config_pdp_reject_multi_conn_to_same_pdn_not_allowed" /> <java-symbol type="array" name="config_notificationMsgPkgsAllowedAsConvos" /> + + <java-symbol type="array" name="config_keep_warming_services" /> </resources> diff --git a/core/res/res/values/themes.xml b/core/res/res/values/themes.xml index 6e2995de0fe1..47a0e7d071f8 100644 --- a/core/res/res/values/themes.xml +++ b/core/res/res/values/themes.xml @@ -887,7 +887,7 @@ please see themes_device_defaults.xml. </style> <!-- @hide Special theme for the default system Activity-based Alert dialogs. --> - <style name="Theme.Dialog.Confirmation" parent="Theme.DeviceDefault.Light.Dialog.Alert" /> + <style name="Theme.Dialog.Confirmation" parent="Theme.DeviceDefault.Dialog.Alert.DayNight" /> <!-- Theme for a window that looks like a toast. --> <style name="Theme.Toast" parent="Theme.DeviceDefault.Dialog"> diff --git a/data/etc/privapp-permissions-platform.xml b/data/etc/privapp-permissions-platform.xml index 0a9e50eb92dd..419398df20eb 100644 --- a/data/etc/privapp-permissions-platform.xml +++ b/data/etc/privapp-permissions-platform.xml @@ -160,6 +160,7 @@ applications that come with the platform <permission name="android.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS"/> <permission name="android.permission.CONTROL_INCALL_EXPERIENCE"/> <permission name="android.permission.DUMP"/> + <permission name="android.permission.HANDLE_CAR_MODE_CHANGES"/> <permission name="android.permission.INTERACT_ACROSS_USERS"/> <permission name="android.permission.LOCAL_MAC_ADDRESS"/> <permission name="android.permission.MANAGE_USERS"/> diff --git a/framework-jarjar-rules.txt b/framework-jarjar-rules.txt index d8af726ffa72..70dedb8179b0 100644 --- a/framework-jarjar-rules.txt +++ b/framework-jarjar-rules.txt @@ -1,2 +1,6 @@ rule android.hidl.** android.internal.hidl.@1 rule android.net.wifi.WifiAnnotations* android.internal.wifi.WifiAnnotations@1 + +# Hide media mainline module implementation classes to avoid collisions with +# app-bundled ExoPlayer classes. +rule com.google.android.exoplayer2.** android.media.internal.exo.@1 diff --git a/graphics/proto/Android.bp b/graphics/proto/Android.bp index ddced597759f..ea79b731a365 100644 --- a/graphics/proto/Android.bp +++ b/graphics/proto/Android.bp @@ -1,10 +1,10 @@ java_library_static { - name: "game-driver-protos", + name: "updatable-driver-protos", host_supported: true, proto: { type: "lite", }, - srcs: ["game_driver.proto"], + srcs: ["updatable_driver.proto"], jarjar_rules: "jarjar-rules.txt", - sdk_version: "28", + sdk_version: "30", } diff --git a/graphics/proto/game_driver.proto b/graphics/proto/updatable_driver.proto index fd7ffccac24c..cbc9424854d1 100644 --- a/graphics/proto/game_driver.proto +++ b/graphics/proto/updatable_driver.proto @@ -16,16 +16,16 @@ syntax = "proto2"; -package android.gamedriver; +package android.updatabledriver; -option java_package = "android.gamedriver"; -option java_outer_classname = "GameDriverProto"; +option java_package = "android.updatabledriver"; +option java_outer_classname = "UpdatableDriverProto"; -message Blacklist { +message Denylist { optional int64 version_code = 1; repeated string package_names = 2; } -message Blacklists { - repeated Blacklist blacklists = 1; +message Denylists { + repeated Denylist denylists = 1; } diff --git a/libs/hwui/JankTracker.cpp b/libs/hwui/JankTracker.cpp index d25fc4b0b03e..b2c39c90071a 100644 --- a/libs/hwui/JankTracker.cpp +++ b/libs/hwui/JankTracker.cpp @@ -139,6 +139,9 @@ void JankTracker::finishFrame(const FrameInfo& frame) { (*mGlobalData)->reportJank(); } + if (mSwapDeadline < 0) { + mSwapDeadline = frame[FrameInfoIndex::IntendedVsync] + mFrameInterval; + } bool isTripleBuffered = (mSwapDeadline - frame[FrameInfoIndex::IntendedVsync]) > (mFrameInterval * 0.1); mSwapDeadline = std::max(mSwapDeadline + mFrameInterval, diff --git a/libs/hwui/JankTracker.h b/libs/hwui/JankTracker.h index 4460266276f9..b3fbbfe98669 100644 --- a/libs/hwui/JankTracker.h +++ b/libs/hwui/JankTracker.h @@ -75,7 +75,7 @@ private: std::array<int64_t, NUM_BUCKETS> mThresholds; int64_t mFrameInterval; - nsecs_t mSwapDeadline; + nsecs_t mSwapDeadline = -1; // The amount of time we will erase from the total duration to account // for SF vsync offsets with HWC2 blocking dequeueBuffers. // (Vsync + mDequeueBlockTolerance) is the point at which we expect diff --git a/media/jni/audioeffect/Visualizer.cpp b/media/jni/audioeffect/Visualizer.cpp index f419904afa69..a74ae5307a36 100644 --- a/media/jni/audioeffect/Visualizer.cpp +++ b/media/jni/audioeffect/Visualizer.cpp @@ -51,10 +51,11 @@ status_t Visualizer::set(int32_t priority, void* user, audio_session_t sessionId, audio_io_handle_t io, - const AudioDeviceTypeAddr& device) + const AudioDeviceTypeAddr& device, + bool probe) { status_t status = AudioEffect::set( - SL_IID_VISUALIZATION, nullptr, priority, cbf, user, sessionId, io, device); + SL_IID_VISUALIZATION, nullptr, priority, cbf, user, sessionId, io, device, probe); if (status == NO_ERROR || status == ALREADY_EXISTS) { initCaptureSize(); } diff --git a/media/jni/audioeffect/Visualizer.h b/media/jni/audioeffect/Visualizer.h index b943b96053f9..8b6a62f25638 100644 --- a/media/jni/audioeffect/Visualizer.h +++ b/media/jni/audioeffect/Visualizer.h @@ -78,7 +78,8 @@ public: void* user = NULL, audio_session_t sessionId = AUDIO_SESSION_OUTPUT_MIX, audio_io_handle_t io = AUDIO_IO_HANDLE_NONE, - const AudioDeviceTypeAddr& device = {}); + const AudioDeviceTypeAddr& device = {}, + bool probe = false); // Declared 'final' because we call this in ~Visualizer(). status_t setEnabled(bool enabled) final; diff --git a/packages/CarSystemUI/src/com/android/systemui/CarSystemUIModule.java b/packages/CarSystemUI/src/com/android/systemui/CarSystemUIModule.java index fe2be1df44be..59d6ed67b552 100644 --- a/packages/CarSystemUI/src/com/android/systemui/CarSystemUIModule.java +++ b/packages/CarSystemUI/src/com/android/systemui/CarSystemUIModule.java @@ -43,6 +43,7 @@ import com.android.systemui.plugins.qs.QSFactory; import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.power.EnhancedEstimates; import com.android.systemui.power.EnhancedEstimatesImpl; +import com.android.systemui.qs.dagger.QSModule; import com.android.systemui.qs.tileimpl.QSFactoryImpl; import com.android.systemui.recents.Recents; import com.android.systemui.recents.RecentsImplementation; @@ -74,7 +75,7 @@ import dagger.Binds; import dagger.Module; import dagger.Provides; -@Module(includes = {DividerModule.class}) +@Module(includes = {DividerModule.class, QSModule.class}) public abstract class CarSystemUIModule { @Singleton diff --git a/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/DeviceDiscoveryService.java b/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/DeviceDiscoveryService.java index 7aa997e39307..a62c287ece41 100644 --- a/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/DeviceDiscoveryService.java +++ b/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/DeviceDiscoveryService.java @@ -259,18 +259,19 @@ public class DeviceDiscoveryService extends Service { private void onDeviceFound(@Nullable DeviceFilterPair device) { if (device == null) return; - if (mDevicesFound.contains(device)) { - return; - } - - if (DEBUG) Log.i(LOG_TAG, "Found device " + device); - Handler.getMain().sendMessage(obtainMessage( DeviceDiscoveryService::onDeviceFoundMainThread, this, device)); } @MainThread void onDeviceFoundMainThread(@NonNull DeviceFilterPair device) { + if (mDevicesFound.contains(device)) { + Log.i(LOG_TAG, "Skipping device " + device + " - already among found devices"); + return; + } + + Log.i(LOG_TAG, "Found device " + device); + if (mDevicesFound.isEmpty()) { onReadyToShowUI(); } @@ -432,10 +433,10 @@ public class DeviceDiscoveryService extends Service { @Override public String toString() { - return "DeviceFilterPair{" + - "device=" + device + - ", filter=" + filter + - '}'; + return "DeviceFilterPair{" + + "device=" + device + " " + getDisplayName() + + ", filter=" + filter + + '}'; } } diff --git a/packages/DynamicSystemInstallationService/res/values-nl/strings.xml b/packages/DynamicSystemInstallationService/res/values-nl/strings.xml index 47eeb839c6dc..2b9fa414dcc5 100644 --- a/packages/DynamicSystemInstallationService/res/values-nl/strings.xml +++ b/packages/DynamicSystemInstallationService/res/values-nl/strings.xml @@ -2,7 +2,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="keyguard_description" msgid="8582605799129954556">"Geef je wachtwoord op en ga door naar \'Dynamische systeemupdates\'"</string> - <string name="notification_install_completed" msgid="6252047868415172643">"Dynamisch systeem is gereed. Start je apparaat opnieuw op om het te gebruiken."</string> + <string name="notification_install_completed" msgid="6252047868415172643">"Dynamisch systeem is klaar. Start je apparaat opnieuw op om het te gebruiken."</string> <string name="notification_install_inprogress" msgid="7383334330065065017">"Installatie wordt uitgevoerd"</string> <string name="notification_install_failed" msgid="4066039210317521404">"Installatie mislukt"</string> <string name="notification_image_validation_failed" msgid="2720357826403917016">"Valideren van afbeelding mislukt. Installatie afbreken."</string> diff --git a/packages/InputDevices/res/values-af/strings.xml b/packages/InputDevices/res/values-af/strings.xml index 79b45ff5ed28..eb89ee56345a 100644 --- a/packages/InputDevices/res/values-af/strings.xml +++ b/packages/InputDevices/res/values-af/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Fins"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Kroaties"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"Tsjeggies"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Tsjeggiese QWERTY-styl"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Estnies"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Hongaars"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Yslands"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"Aserbeidjaans"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"Pools"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Belarussies"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Mongools"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Georgies"</string> </resources> diff --git a/packages/InputDevices/res/values-am/strings.xml b/packages/InputDevices/res/values-am/strings.xml index ab1c592e0644..2970bfe722d8 100644 --- a/packages/InputDevices/res/values-am/strings.xml +++ b/packages/InputDevices/res/values-am/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"ፊኒሽ"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"ክሮሽያ"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"ቼክ"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"የቼክኛ QWERTY ቅጥ"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"ኤስቶኒያ"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"ሀንጋሪ"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"አይስላንድ"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"አዘርባይጃንኛ"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"ፖላንድኛ"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"ቤላሩስኛ"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"ሞንጎሊያኛ"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"ጂዮርጂያኛ"</string> </resources> diff --git a/packages/InputDevices/res/values-ar/strings.xml b/packages/InputDevices/res/values-ar/strings.xml index 79689f1562e7..7f7e51ce30a3 100644 --- a/packages/InputDevices/res/values-ar/strings.xml +++ b/packages/InputDevices/res/values-ar/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"الفنلندية"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"الكرواتية"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"التشيكية"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"لوحة المفاتيح التشيكية بنمط QWERTY"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"الإستونية"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"المجرية"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"الأيسلندية"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"الأذربيجانية"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"البولندية"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"البيلاروسية"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"المنغولية"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"الجورجية"</string> </resources> diff --git a/packages/InputDevices/res/values-as/strings.xml b/packages/InputDevices/res/values-as/strings.xml index 6e889f7bb8eb..48c6302eb129 100644 --- a/packages/InputDevices/res/values-as/strings.xml +++ b/packages/InputDevices/res/values-as/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"ফিনিশ্ব"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"ক্ৰ\'ৱেশ্বিয়ান"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"চ্চেক"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Czech QWERTY কীব’ৰ্ড"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"ইষ্ট\'নিয়া"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"হাংগেৰিয়ান"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"আইচলেণ্ডিক"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"আজাৰবাইজানী"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"পোলিশ্ব"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"বেলাৰুছিয়ান"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Mongolian"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Georgian"</string> </resources> diff --git a/packages/InputDevices/res/values-az/strings.xml b/packages/InputDevices/res/values-az/strings.xml index 6a5534267f07..d85e988ca056 100644 --- a/packages/InputDevices/res/values-az/strings.xml +++ b/packages/InputDevices/res/values-az/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Fin"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Xorvat"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"Çex"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Çex QWERTY üslubu"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Eston"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Macar"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"İslandiyalı"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"Azəri"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"Polyak"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Belarus dili"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Monqol"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Gürcü"</string> </resources> diff --git a/packages/InputDevices/res/values-b+sr+Latn/strings.xml b/packages/InputDevices/res/values-b+sr+Latn/strings.xml index 361c33f79728..226e8ee4c687 100644 --- a/packages/InputDevices/res/values-b+sr+Latn/strings.xml +++ b/packages/InputDevices/res/values-b+sr+Latn/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"finska"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"hrvatska"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"češka"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Stil češke QWERTY tastature"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"estonska"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"mađarska"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"islandska"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"azerbejdžanska"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"poljski"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"beloruski"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"mongolska"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"gruzijska"</string> </resources> diff --git a/packages/InputDevices/res/values-be/strings.xml b/packages/InputDevices/res/values-be/strings.xml index cfc102542bc9..d180eec5de34 100644 --- a/packages/InputDevices/res/values-be/strings.xml +++ b/packages/InputDevices/res/values-be/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Фінская"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Харвацкая"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"Чэшская"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Чэшская раскладка клавіятуры QWERTY"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Эстонская"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Венгерская"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Ісландская"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"Азербайджанская"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"Польская"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Беларуская"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Мангольская"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Грузінская"</string> </resources> diff --git a/packages/InputDevices/res/values-bg/strings.xml b/packages/InputDevices/res/values-bg/strings.xml index e55ad825e0c7..a1edb21d4b5a 100644 --- a/packages/InputDevices/res/values-bg/strings.xml +++ b/packages/InputDevices/res/values-bg/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"финландски"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"хърватски"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"чешки"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Чешки стил за QWERTY"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"естонски"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"унгарски"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"исландски"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"азербайджански"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"Полски"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"беларуски"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"монголски"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"грузински"</string> </resources> diff --git a/packages/InputDevices/res/values-bn/strings.xml b/packages/InputDevices/res/values-bn/strings.xml index 9f65c284379a..10029f42c020 100644 --- a/packages/InputDevices/res/values-bn/strings.xml +++ b/packages/InputDevices/res/values-bn/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"ফিনিশ"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"ক্রোয়েশিয়"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"চেক"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"চেক QWERTY স্টাইল"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"এস্তোনীয়"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"হাঙ্গেরিয়"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"আইসল্যান্ডিক"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"আজারবাইজানি"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"পোলিশ"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"বেলারুশীয়"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"মঙ্গোলিয়ান"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"জর্জিয়ান"</string> </resources> diff --git a/packages/InputDevices/res/values-bs/strings.xml b/packages/InputDevices/res/values-bs/strings.xml index b60a52bd146f..436a3b02eb54 100644 --- a/packages/InputDevices/res/values-bs/strings.xml +++ b/packages/InputDevices/res/values-bs/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"finski"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"hrvatski"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"češki"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Češka QWERTY tastatura"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"estonski"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"mađarski"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"islandski"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"azerbejdžanski"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"poljski"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"bjeloruska"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"mongolski"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"gruzijski"</string> </resources> diff --git a/packages/InputDevices/res/values-ca/strings.xml b/packages/InputDevices/res/values-ca/strings.xml index 5718abdddd5d..1f089e18d5cb 100644 --- a/packages/InputDevices/res/values-ca/strings.xml +++ b/packages/InputDevices/res/values-ca/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Finès"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Croat"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"Txec"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Estil QWERTY txec"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Estonià"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Hongarès"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Islandès"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"Àzeri"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"Polonès"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Bielorús"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Mongol"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Georgià"</string> </resources> diff --git a/packages/InputDevices/res/values-cs/strings.xml b/packages/InputDevices/res/values-cs/strings.xml index 786366e02bcc..b36861a99cc0 100644 --- a/packages/InputDevices/res/values-cs/strings.xml +++ b/packages/InputDevices/res/values-cs/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"finské"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"chorvatské"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"české"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Český styl QWERTY"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"estonské"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"maďarské"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"islandské"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"ázerbájdžánština"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"polština"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"běloruština"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"mongolština"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"gruzínština"</string> </resources> diff --git a/packages/InputDevices/res/values-da/strings.xml b/packages/InputDevices/res/values-da/strings.xml index 15cd185aa7bc..7e446fd44bc4 100644 --- a/packages/InputDevices/res/values-da/strings.xml +++ b/packages/InputDevices/res/values-da/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Finsk"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Kroatisk"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"Tjekkisk"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Tjekkisk – QWERTY-layout"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Estisk"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Ungarsk"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Islandsk"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"Aserbajdsjansk"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"Polsk"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Hviderussisk"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Mongolsk"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Georgisk"</string> </resources> diff --git a/packages/InputDevices/res/values-de/strings.xml b/packages/InputDevices/res/values-de/strings.xml index 5463a531fffa..c8a7ab1f34fe 100644 --- a/packages/InputDevices/res/values-de/strings.xml +++ b/packages/InputDevices/res/values-de/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Finnisch"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Kroatisch"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"Tschechisch"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"QWERTY-Tastatur, tschechisch"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Estnisch"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Ungarisch"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Isländisch"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"Aserbaidschanisch"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"Polnisch"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Weißrussisch"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Mongolisch"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Georgisch"</string> </resources> diff --git a/packages/InputDevices/res/values-el/strings.xml b/packages/InputDevices/res/values-el/strings.xml index c2d5166d4603..ff7cd022cee7 100644 --- a/packages/InputDevices/res/values-el/strings.xml +++ b/packages/InputDevices/res/values-el/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Φινλανδικά"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Κροατικά"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"Τσεχικά"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Τσεχικό πληκτρολόγιο στιλ QWERTY"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Εσθονικά"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Ουγγρικά"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Ισλανδικά"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"Αζερμπαϊτζανικά"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"Πολωνικά"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Λευκορωσικά"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Μογγολικά"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Γεωργιανά"</string> </resources> diff --git a/packages/InputDevices/res/values-en-rAU/strings.xml b/packages/InputDevices/res/values-en-rAU/strings.xml index ee3f04e29dd2..02a8e6d4138f 100644 --- a/packages/InputDevices/res/values-en-rAU/strings.xml +++ b/packages/InputDevices/res/values-en-rAU/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Finnish"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Croatian"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"Czech"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Czech QWERTY style"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Estonian"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Hungarian"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Icelandic"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"Azerbaijani"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"Polish"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Belarusian"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Mongolian"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Georgian"</string> </resources> diff --git a/packages/InputDevices/res/values-en-rCA/strings.xml b/packages/InputDevices/res/values-en-rCA/strings.xml index ee3f04e29dd2..02a8e6d4138f 100644 --- a/packages/InputDevices/res/values-en-rCA/strings.xml +++ b/packages/InputDevices/res/values-en-rCA/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Finnish"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Croatian"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"Czech"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Czech QWERTY style"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Estonian"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Hungarian"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Icelandic"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"Azerbaijani"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"Polish"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Belarusian"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Mongolian"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Georgian"</string> </resources> diff --git a/packages/InputDevices/res/values-en-rGB/strings.xml b/packages/InputDevices/res/values-en-rGB/strings.xml index ee3f04e29dd2..02a8e6d4138f 100644 --- a/packages/InputDevices/res/values-en-rGB/strings.xml +++ b/packages/InputDevices/res/values-en-rGB/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Finnish"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Croatian"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"Czech"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Czech QWERTY style"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Estonian"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Hungarian"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Icelandic"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"Azerbaijani"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"Polish"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Belarusian"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Mongolian"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Georgian"</string> </resources> diff --git a/packages/InputDevices/res/values-en-rIN/strings.xml b/packages/InputDevices/res/values-en-rIN/strings.xml index ee3f04e29dd2..02a8e6d4138f 100644 --- a/packages/InputDevices/res/values-en-rIN/strings.xml +++ b/packages/InputDevices/res/values-en-rIN/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Finnish"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Croatian"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"Czech"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Czech QWERTY style"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Estonian"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Hungarian"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Icelandic"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"Azerbaijani"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"Polish"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Belarusian"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Mongolian"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Georgian"</string> </resources> diff --git a/packages/InputDevices/res/values-en-rXC/strings.xml b/packages/InputDevices/res/values-en-rXC/strings.xml index a0efb25fa51e..a8d342f04258 100644 --- a/packages/InputDevices/res/values-en-rXC/strings.xml +++ b/packages/InputDevices/res/values-en-rXC/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Finnish"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Croatian"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"Czech"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Czech QWERTY style"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Estonian"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Hungarian"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Icelandic"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"Azerbaijani"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"Polish"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Belarusian"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Mongolian"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Georgian"</string> </resources> diff --git a/packages/InputDevices/res/values-es-rUS/strings.xml b/packages/InputDevices/res/values-es-rUS/strings.xml index b2529553288f..9090cb7b02b2 100644 --- a/packages/InputDevices/res/values-es-rUS/strings.xml +++ b/packages/InputDevices/res/values-es-rUS/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Finlandés"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Croata"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"Checo"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"QWERTY estilo checo"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Estonio"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Húngaro"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Islandés"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"Azerí"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"Polaco"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Bielorruso"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Mongol"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Georgiano"</string> </resources> diff --git a/packages/InputDevices/res/values-es/strings.xml b/packages/InputDevices/res/values-es/strings.xml index bba2062d2d7e..66ea65557538 100644 --- a/packages/InputDevices/res/values-es/strings.xml +++ b/packages/InputDevices/res/values-es/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Finlandés"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Croata"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"Checo"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Estilo QWERTY checo"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Estonio"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Húngaro"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Islandés"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"Azerí"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"Polaco"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Bielorruso"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Mongol"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Georgiano"</string> </resources> diff --git a/packages/InputDevices/res/values-et/strings.xml b/packages/InputDevices/res/values-et/strings.xml index 140f1af046dd..9674a0d1d616 100644 --- a/packages/InputDevices/res/values-et/strings.xml +++ b/packages/InputDevices/res/values-et/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Soome"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Horvaatia"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"Tšehhi"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Tšehhi QWERTY-stiil"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Eesti"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Ungari"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Islandi"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"aserbaidžaani"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"Poola"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"valgevene"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"mongoli"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"gruusia"</string> </resources> diff --git a/packages/InputDevices/res/values-eu/strings.xml b/packages/InputDevices/res/values-eu/strings.xml index 58962094bfbf..357b6184648f 100644 --- a/packages/InputDevices/res/values-eu/strings.xml +++ b/packages/InputDevices/res/values-eu/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Finlandiarra"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Kroaziarra"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"Txekiarra"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"QWERTY estilo txekiarra"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Estoniarra"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Hungariarra"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Islandiarra"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"Azerbaijandarra"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"Poloniarra"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Bielorrusiera"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Mongoliera"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Georgiera"</string> </resources> diff --git a/packages/InputDevices/res/values-fa/strings.xml b/packages/InputDevices/res/values-fa/strings.xml index cc86e04dd501..5395d27c2cef 100644 --- a/packages/InputDevices/res/values-fa/strings.xml +++ b/packages/InputDevices/res/values-fa/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"فنلاندی"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"کرواسی"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"چک"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"سبک QWERTY چک"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"استونیایی"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"مجارستانی"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"ایسلندی"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"آذربایجانی"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"لهستانی"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"بلاروسی"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"مغولی"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"گرجستانی"</string> </resources> diff --git a/packages/InputDevices/res/values-fi/strings.xml b/packages/InputDevices/res/values-fi/strings.xml index 8e2ef4550a6f..4488a131b1a0 100644 --- a/packages/InputDevices/res/values-fi/strings.xml +++ b/packages/InputDevices/res/values-fi/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"suomi"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"kroaatti"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"tšekki"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"tšekki (QWERTY-tyyli)"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"viro"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"unkari"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"islanti"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"azeri"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"puola"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"valkovenäjä"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"mongoli"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"georgia"</string> </resources> diff --git a/packages/InputDevices/res/values-fr-rCA/strings.xml b/packages/InputDevices/res/values-fr-rCA/strings.xml index 199fefc74a7c..e714e8380800 100644 --- a/packages/InputDevices/res/values-fr-rCA/strings.xml +++ b/packages/InputDevices/res/values-fr-rCA/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Finnois"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Croate"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"Tchèque"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Clavier QWERTY tchèque"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Estonien"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Hongrois"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Islandais"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"Azerbaïdjanais"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"Polonais"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Biélorusse"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Mongol"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Géorgien"</string> </resources> diff --git a/packages/InputDevices/res/values-fr/strings.xml b/packages/InputDevices/res/values-fr/strings.xml index c5f53168215b..0a022f192ea2 100644 --- a/packages/InputDevices/res/values-fr/strings.xml +++ b/packages/InputDevices/res/values-fr/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Finnois"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Croate"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"Tchèque"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Clavier QWERTY tchèque"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Estonien"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Hongrois"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Islandais"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"Azéri"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"Polonais"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Biélorusse"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Mongol"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Géorgien"</string> </resources> diff --git a/packages/InputDevices/res/values-gl/strings.xml b/packages/InputDevices/res/values-gl/strings.xml index c841ec5af8a1..0c86f816fa85 100644 --- a/packages/InputDevices/res/values-gl/strings.xml +++ b/packages/InputDevices/res/values-gl/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Finés"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Croata"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"Checo"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Estilo QWERTY checo"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Estoniano"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Húngaro"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Islandés"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"Acerbaixano"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"Polaco"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Belaruso"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Mongol"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Xeorxiano"</string> </resources> diff --git a/packages/InputDevices/res/values-gu/strings.xml b/packages/InputDevices/res/values-gu/strings.xml index df6f960d88a5..8648389db862 100644 --- a/packages/InputDevices/res/values-gu/strings.xml +++ b/packages/InputDevices/res/values-gu/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"ફિનિશ"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"ક્રોએશિયન"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"ચેક"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"ચેક QWERTY શૈલી"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"એસ્ટોનિયન"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"હંગેરિયન"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"આઇસલેન્ડિક"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"અઝરબૈજાની"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"પોલિશ"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"બેલારુશિયન"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"મોંગોલિયન"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"જ્યોર્જિઅન"</string> </resources> diff --git a/packages/InputDevices/res/values-hi/strings.xml b/packages/InputDevices/res/values-hi/strings.xml index 3076f370a5b0..6e674edbedc1 100644 --- a/packages/InputDevices/res/values-hi/strings.xml +++ b/packages/InputDevices/res/values-hi/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"फ़िनिश"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"क्रोएशियन"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"चेक"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"चेक QWERTY स्टाइल"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"एस्टोनियाई"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"हंगेरियाई"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"आइसलैंडिक"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"अज़रबैजानी"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"पोलिश"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"बेलारूसी"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"मंगोलियन"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"जॉर्जियन कीबोर्ड का लेआउट"</string> </resources> diff --git a/packages/InputDevices/res/values-hr/strings.xml b/packages/InputDevices/res/values-hr/strings.xml index 2ade42dddf57..cd2dcc183058 100644 --- a/packages/InputDevices/res/values-hr/strings.xml +++ b/packages/InputDevices/res/values-hr/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"finska"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"hrvatska"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"češka"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Češka QWERTY tipkovnica"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"estonska"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"mađarska"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"islandska"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"azerbajdžanski"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"poljski"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"bjeloruski"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Mongolski"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Gruzijska"</string> </resources> diff --git a/packages/InputDevices/res/values-hu/strings.xml b/packages/InputDevices/res/values-hu/strings.xml index 219bdb3b3cc1..1c7a89a06059 100644 --- a/packages/InputDevices/res/values-hu/strings.xml +++ b/packages/InputDevices/res/values-hu/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"finn"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"horvát"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"cseh"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"QWERTY kiosztás (cseh)"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"észt"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"magyar"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"izlandi"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"azeri"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"lengyel"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"belarusz"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"mongol"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"grúz"</string> </resources> diff --git a/packages/InputDevices/res/values-hy/strings.xml b/packages/InputDevices/res/values-hy/strings.xml index add8e60b1432..fff9fbc5bfd8 100644 --- a/packages/InputDevices/res/values-hy/strings.xml +++ b/packages/InputDevices/res/values-hy/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Ֆիններեն"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Խորվաթերեն"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"Չեխերեն"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"QWERTY – չեխական ոճ"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Էստոներեն"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Հունգարերեն"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Իսլանդերեն"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"ադրբեջաներեն"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"լեհերեն"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"բելառուսերեն"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Մոնղոլերեն"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"վրացերեն"</string> </resources> diff --git a/packages/InputDevices/res/values-in/strings.xml b/packages/InputDevices/res/values-in/strings.xml index 3a5b44d9ca27..04a6dfa38bdd 100644 --- a/packages/InputDevices/res/values-in/strings.xml +++ b/packages/InputDevices/res/values-in/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Finlandia"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Kroasia"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"Ceko"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Gaya QWERTY Ceko"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Estonia"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Hungaria"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Islandia"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"Azerbaijan"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"Polandia"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Belarusia"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Mongolia"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Georgia"</string> </resources> diff --git a/packages/InputDevices/res/values-is/strings.xml b/packages/InputDevices/res/values-is/strings.xml index 4d2c0735d5f1..a60332a3f979 100644 --- a/packages/InputDevices/res/values-is/strings.xml +++ b/packages/InputDevices/res/values-is/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Finnskt"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Króatískt"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"Tékkneskt"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Tékkneskt QWERTY-útlit"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Eistneskt"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Ungverskt"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Íslenskt"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"aserska"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"Pólska"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"hvítrússneska"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"mongólska"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"georgíska"</string> </resources> diff --git a/packages/InputDevices/res/values-it/strings.xml b/packages/InputDevices/res/values-it/strings.xml index 8397a15d59a5..ac137e41b945 100644 --- a/packages/InputDevices/res/values-it/strings.xml +++ b/packages/InputDevices/res/values-it/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Finlandese"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Croato"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"Ceco"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Stile QWERTY ceco"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Estone"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Ungherese"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Islandese"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"Azero"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"Polacco"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Bielorusso"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Mongolo"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Georgiano"</string> </resources> diff --git a/packages/InputDevices/res/values-iw/strings.xml b/packages/InputDevices/res/values-iw/strings.xml index 56b170f04492..544dde22c2cb 100644 --- a/packages/InputDevices/res/values-iw/strings.xml +++ b/packages/InputDevices/res/values-iw/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"פינית"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"קרואטית"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"צ\'כית"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"סגנון מקלדת QWERTY בצ\'כית"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"אסטונית"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"הונגרית"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"איסלנדית"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"אזרית"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"פולנית"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"בלארוסית"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"מונגולית"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"גיאורגית"</string> </resources> diff --git a/packages/InputDevices/res/values-ja/strings.xml b/packages/InputDevices/res/values-ja/strings.xml index 190d8f2a5e32..717cbb985c74 100644 --- a/packages/InputDevices/res/values-ja/strings.xml +++ b/packages/InputDevices/res/values-ja/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"フィンランド語"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"クロアチア語"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"チェコ語"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"QWERTY スタイル(チェコ語)"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"エストニア語"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"ハンガリー語"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"アイスランド語"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"アゼルバイジャン語"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"ポーランド語"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"ベラルーシ語"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"モンゴル語"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"ジョージア語"</string> </resources> diff --git a/packages/InputDevices/res/values-ka/strings.xml b/packages/InputDevices/res/values-ka/strings.xml index a6135752706c..ee42b35440b3 100644 --- a/packages/InputDevices/res/values-ka/strings.xml +++ b/packages/InputDevices/res/values-ka/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"ფინური"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"ხორვატიული"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"ჩეხური"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"ჩეხური QWERTY სტილი"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"ესტონური"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"უნგრული"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"ისლანდიური"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"აზერბაიჯანული"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"პოლონური"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"ბელორუსული"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"მონღოლური"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"ქართული"</string> </resources> diff --git a/packages/InputDevices/res/values-kk/strings.xml b/packages/InputDevices/res/values-kk/strings.xml index fa0c37eb6136..6ebb403f4db9 100644 --- a/packages/InputDevices/res/values-kk/strings.xml +++ b/packages/InputDevices/res/values-kk/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Фин"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Хорват"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"Чех"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Чех (QWERTY)"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Эстон"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Мадияр"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Исланд"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"әзiрбайжан"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"Поляк"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Белорус"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Моңғол"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Грузин"</string> </resources> diff --git a/packages/InputDevices/res/values-km/strings.xml b/packages/InputDevices/res/values-km/strings.xml index c877465fdde0..a2c3262559c9 100644 --- a/packages/InputDevices/res/values-km/strings.xml +++ b/packages/InputDevices/res/values-km/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"ហ្វាំងឡង់"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"ក្រូអាត"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"ឆេក"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"រចនាប័ទ្ម Czech QWERTY"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"អេស្តូនី"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"ហុងគ្រី"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"អ៊ីស្លង់"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"អាហ្សឺបៃហ្សង់"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"ប៉ូឡូញ"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"បេឡារុស"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"មុងហ្គោលី"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"ហ្សកហ្ស៊ី"</string> </resources> diff --git a/packages/InputDevices/res/values-kn/strings.xml b/packages/InputDevices/res/values-kn/strings.xml index 365b77c506ea..6cdee0b13759 100644 --- a/packages/InputDevices/res/values-kn/strings.xml +++ b/packages/InputDevices/res/values-kn/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"ಫಿನ್ನಿಷ್"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"ಕ್ರೊಯೇಶಿಯನ್"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"ಜೆಕ್"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"ಝೆಕ್ QWERTY ಶೈಲಿ"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"ಎಸ್ಟೋನಿಯನ್"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"ಹಂಗೇರಿಯನ್"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"ಐಸ್ಲ್ಯಾಂಡಿಕ್"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"ಅಜೆರ್ಬೈಜಾನಿ"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"ಪೋಲಿಶ್"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"ಬೆಲರೂಸಿಯನ್"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"ಮಂಗೋಲಿಯನ್"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"ಜಾರ್ಜಿಯನ್"</string> </resources> diff --git a/packages/InputDevices/res/values-ko/strings.xml b/packages/InputDevices/res/values-ko/strings.xml index 42608979a546..8cd839de5130 100644 --- a/packages/InputDevices/res/values-ko/strings.xml +++ b/packages/InputDevices/res/values-ko/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"핀란드어"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"크로아티아어"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"체코어"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"체코어 QWERTY 키보드"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"에스토니아어"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"헝가리어"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"아이슬란드어"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"아제르바이잔어"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"폴란드어"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"벨라루스어"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"몽골어"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"조지아어"</string> </resources> diff --git a/packages/InputDevices/res/values-ky/strings.xml b/packages/InputDevices/res/values-ky/strings.xml index e898148b1195..60a997afb1dc 100644 --- a/packages/InputDevices/res/values-ky/strings.xml +++ b/packages/InputDevices/res/values-ky/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Фин"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Хорват"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"Чех"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Чехиялык QWERTY стили"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Эстон"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Венгр"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Исландия"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"Азербайжанча"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"Полякча"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Беларусча"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Монголчо"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Грузинче"</string> </resources> diff --git a/packages/InputDevices/res/values-lo/strings.xml b/packages/InputDevices/res/values-lo/strings.xml index d3e1e0a34840..26e7ad471bad 100644 --- a/packages/InputDevices/res/values-lo/strings.xml +++ b/packages/InputDevices/res/values-lo/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"ຟິນນິຊ"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"ໂຄຣເອທຽນ"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"ເຊກ"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"ຮູບແບບ QWERTY ເຊກ"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"ເອສໂຕນຽນ"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"ຮັງກາຣຽນ"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"ໄອສແລນດິກ"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"ອາເຊີໄບຈານີ"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"ໂພລິຊ"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"ເບລາຣັສຊຽນ"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"ມອງໂກລຽນ"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"ຈໍຈຽນ"</string> </resources> diff --git a/packages/InputDevices/res/values-lt/strings.xml b/packages/InputDevices/res/values-lt/strings.xml index 18ed8a4d3100..d0b855d10822 100644 --- a/packages/InputDevices/res/values-lt/strings.xml +++ b/packages/InputDevices/res/values-lt/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Suomių k."</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Kroatų k."</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"Čekų k."</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Čekų QWERTY stilius"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Estų k."</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Vengrų k."</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Islandų k."</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"Azerbaidžaniečių"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"Lenkų"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Baltarusių k."</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Mongolų"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Gruzinų"</string> </resources> diff --git a/packages/InputDevices/res/values-lv/strings.xml b/packages/InputDevices/res/values-lv/strings.xml index d7995c8b0532..beff9b579bff 100644 --- a/packages/InputDevices/res/values-lv/strings.xml +++ b/packages/InputDevices/res/values-lv/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Somu"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Horvātu"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"Čehu"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Čehu (QWERTY)"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Igauņu"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Ungāru"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Īslandiešu"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"Azerbaidžāņu"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"Poļu valoda"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Baltkrievu"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Mongoļu"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Gruzīnu"</string> </resources> diff --git a/packages/InputDevices/res/values-mk/strings.xml b/packages/InputDevices/res/values-mk/strings.xml index 508859efe178..ce5e8f22f8ef 100644 --- a/packages/InputDevices/res/values-mk/strings.xml +++ b/packages/InputDevices/res/values-mk/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Фински"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Хрватски"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"Чешки"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Чешка QWERTY-тастатура"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Естонски"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Унгарски"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Исландски"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"азербејџански"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"полски"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"белоруски"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"монголски"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"грузиски"</string> </resources> diff --git a/packages/InputDevices/res/values-ml/strings.xml b/packages/InputDevices/res/values-ml/strings.xml index f7617ac3c0f2..aafab0c17f5d 100644 --- a/packages/InputDevices/res/values-ml/strings.xml +++ b/packages/InputDevices/res/values-ml/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"ഫിന്നിഷ്"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"ക്രൊയേഷ്യൻ"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"ചെക്ക്"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"ചെക്ക് QWERTY ശെെലി"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"എസ്റ്റോണിയൻ"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"ഹംഗേറിയൻ"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"ഐസ്ലാന്ഡിക്"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"അസര്ബൈജാനി"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"പോളിഷ്"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"ബെലാറുഷ്യൻ"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"മംഗോളിയൻ"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"ജോര്ജ്ജിയൻ"</string> </resources> diff --git a/packages/InputDevices/res/values-mn/strings.xml b/packages/InputDevices/res/values-mn/strings.xml index aafc126e96be..e9ff61940342 100644 --- a/packages/InputDevices/res/values-mn/strings.xml +++ b/packages/InputDevices/res/values-mn/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Финлянд"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Хорват"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"Чех"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Чех хэлний QWERTY загвар"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Эстон"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Унгар"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Исланд"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"Азербайжан"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"Польш"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Беларусь хэл"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Монгол"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Гүрж"</string> </resources> diff --git a/packages/InputDevices/res/values-mr/strings.xml b/packages/InputDevices/res/values-mr/strings.xml index 65d457236e4e..711366a542d3 100644 --- a/packages/InputDevices/res/values-mr/strings.xml +++ b/packages/InputDevices/res/values-mr/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"फिन्निश"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"क्रोएशियन"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"झेक"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Czech QWERTY शैली"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"एस्टोनियन"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"हंगेरियन"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"आइसलँडिक"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"अझरबैजानी"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"पोलिश"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"बेलारुशियन"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"मंगोलियन"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"जॉर्जियन"</string> </resources> diff --git a/packages/InputDevices/res/values-ms/strings.xml b/packages/InputDevices/res/values-ms/strings.xml index 9090379d34c8..86241b39f5dc 100644 --- a/packages/InputDevices/res/values-ms/strings.xml +++ b/packages/InputDevices/res/values-ms/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Bahasa Finland"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Bahasa Croatia"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"Bahasa Czech"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Gaya QWERTY Czech"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Bahasa Estonia"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Bahasa Hungary"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Bahasa Iceland"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"Bahasa Azerbaijan"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"Bahasa Poland"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Bahasa Belarus"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Bahasa Mongolia"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Bahasa Georgia"</string> </resources> diff --git a/packages/InputDevices/res/values-my/strings.xml b/packages/InputDevices/res/values-my/strings.xml index 889ac1a47eea..57748dbfa4e1 100644 --- a/packages/InputDevices/res/values-my/strings.xml +++ b/packages/InputDevices/res/values-my/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"ဖင်လန်"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"ခရိုအေးရှန်း"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"ချက်"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"\'ချက် QWERTY\' ပုံစံ"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"အက်စ်စတိုးနီးယန်း"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"ဟန်ဂေရီယန်း"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"အိုက်စလန်"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"အဇာဘိုင်ဂျန်"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"ပိုလန်"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"ဘီလာရုဇ်"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"မွန်ဂိုလီးယား"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"ဂျော်ဂျီယာ"</string> </resources> diff --git a/packages/InputDevices/res/values-nb/strings.xml b/packages/InputDevices/res/values-nb/strings.xml index b130bde54f10..6059b4c8a822 100644 --- a/packages/InputDevices/res/values-nb/strings.xml +++ b/packages/InputDevices/res/values-nb/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Finsk"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Kroatisk"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"Tsjekkisk"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Tsjekkisk QWERTY-stil"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Estisk"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Ungarsk"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Islandsk"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"Aserbajdsjansk"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"Polsk"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Hviterussisk"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Mongolsk"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Georgisk"</string> </resources> diff --git a/packages/InputDevices/res/values-ne/strings.xml b/packages/InputDevices/res/values-ne/strings.xml index 96905ec34b3b..1b58fe8597f6 100644 --- a/packages/InputDevices/res/values-ne/strings.xml +++ b/packages/InputDevices/res/values-ne/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"फिनिश"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"क्रोशीयाली"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"चेक"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"चेक भाषामा QWERTY शैली"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"एस्तोनीयाली"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"हंगेरियन"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"आइसल्याण्डिक"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"अजरबैजानी"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"पोलिस"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"बेलारुसियाली"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"मङ्गोलियाली"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"जर्जियाली"</string> </resources> diff --git a/packages/InputDevices/res/values-nl/strings.xml b/packages/InputDevices/res/values-nl/strings.xml index b8e158869157..750ce140e690 100644 --- a/packages/InputDevices/res/values-nl/strings.xml +++ b/packages/InputDevices/res/values-nl/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Fins"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Kroatisch"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"Tsjechisch"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Tsjechisch - QWERTY-toetsenbord"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Estlands"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Hongaars"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"IJslands"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"Azerbeidzjaans"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"Pools"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Wit-Russisch"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Mongools"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Georgisch"</string> </resources> diff --git a/packages/InputDevices/res/values-or/strings.xml b/packages/InputDevices/res/values-or/strings.xml index fcb9cfaa4279..2378dce7db6f 100644 --- a/packages/InputDevices/res/values-or/strings.xml +++ b/packages/InputDevices/res/values-or/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"ଫିନ୍ନିଶ୍"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"କ୍ରୋଆଶିଆନ୍"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"ଚେକ୍"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"ଚେକ୍ QWERTY ଷ୍ଟାଇଲ୍"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"ଇଷ୍ଟୋନିଆନ୍"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"ହଙ୍ଗେରିଆନ୍"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"ଆଇସଲାଣ୍ଡିକ୍"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"ଆଜେର୍ବୈଜାନି"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"ପଲିଶ୍"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"ବେଲାରୁସିଆନ୍"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"ମଙ୍ଗୋଲିଆନ୍"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"ଜର୍ଜିଆନ୍"</string> </resources> diff --git a/packages/InputDevices/res/values-pa/strings.xml b/packages/InputDevices/res/values-pa/strings.xml index 891682f56e3f..fa46d8fca017 100644 --- a/packages/InputDevices/res/values-pa/strings.xml +++ b/packages/InputDevices/res/values-pa/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"ਫਿਨਿਸ਼"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"ਕਰੋਆਟੀਆਈ"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"ਚੈਕ"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"ਚੈੱਕ QWERTY ਸਟਾਈਲ"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"ਇਸਟੋਨੀਅਨ"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"ਹੰਗੇਰੀਅਨ"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"ਆਈਸਲੈਂਡੀ"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"ਅਜ਼ੇਰਬੈਜਾਨੀ"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"ਪੋਲਿਸ਼"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"ਬੇਲਾਰੂਸੀ"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"ਮੰਗੋਲੀਆਈ"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"ਜਾਰਜੀਆਈ"</string> </resources> diff --git a/packages/InputDevices/res/values-pl/strings.xml b/packages/InputDevices/res/values-pl/strings.xml index ef141d798f43..c3751197b7d2 100644 --- a/packages/InputDevices/res/values-pl/strings.xml +++ b/packages/InputDevices/res/values-pl/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Fiński"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Chorwacki"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"Czeski"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Styl czeskiej klawiatury QWERTY"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Estoński"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Węgierski"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Islandzki"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"Azerski"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"Polski"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Białoruski"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Mongolski"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Gruziński"</string> </resources> diff --git a/packages/InputDevices/res/values-pt-rBR/strings.xml b/packages/InputDevices/res/values-pt-rBR/strings.xml index d5932a1e4b8a..d6687c811a5b 100644 --- a/packages/InputDevices/res/values-pt-rBR/strings.xml +++ b/packages/InputDevices/res/values-pt-rBR/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Finlandês"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Croata"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"Tcheco"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Estilo QWERTY tcheco"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Estoniano"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Húngaro"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Islandês"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"Azerbaijano"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"Polonês"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Bielorrusso"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Mongol"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Georgiano"</string> </resources> diff --git a/packages/InputDevices/res/values-pt-rPT/strings.xml b/packages/InputDevices/res/values-pt-rPT/strings.xml index 2d3c562e2743..4f8a43279565 100644 --- a/packages/InputDevices/res/values-pt-rPT/strings.xml +++ b/packages/InputDevices/res/values-pt-rPT/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Finlandês"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Croata"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"Checo"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Estilo QWERTY checo"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Estónio"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Húngaro"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Islandês"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"Azeri"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"Polaco"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Bielorrusso"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Mongol"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Georgiano"</string> </resources> diff --git a/packages/InputDevices/res/values-pt/strings.xml b/packages/InputDevices/res/values-pt/strings.xml index d5932a1e4b8a..d6687c811a5b 100644 --- a/packages/InputDevices/res/values-pt/strings.xml +++ b/packages/InputDevices/res/values-pt/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Finlandês"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Croata"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"Tcheco"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Estilo QWERTY tcheco"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Estoniano"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Húngaro"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Islandês"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"Azerbaijano"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"Polonês"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Bielorrusso"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Mongol"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Georgiano"</string> </resources> diff --git a/packages/InputDevices/res/values-ro/strings.xml b/packages/InputDevices/res/values-ro/strings.xml index 00cda6b99d00..1b38bdddd1a9 100644 --- a/packages/InputDevices/res/values-ro/strings.xml +++ b/packages/InputDevices/res/values-ro/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Finlandeză"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Croată"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"Cehă"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Stil QWERTY cehă"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Estoniană"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Maghiară"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Islandeză"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"Azeră"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"Poloneză"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Belarusă"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Mongolă"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Georgiană"</string> </resources> diff --git a/packages/InputDevices/res/values-ru/strings.xml b/packages/InputDevices/res/values-ru/strings.xml index 91828a2f8d9c..cd37762511d4 100644 --- a/packages/InputDevices/res/values-ru/strings.xml +++ b/packages/InputDevices/res/values-ru/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"финский"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"хорватский"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"чешский"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"чешский (QWERTY)"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"эстонский"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"венгерский"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"исландский"</string> @@ -42,7 +43,9 @@ <string name="keyboard_layout_spanish_latin" msgid="5690539836069535697">"испанский (Латинская Америка)"</string> <string name="keyboard_layout_latvian" msgid="4405417142306250595">"латышский"</string> <string name="keyboard_layout_persian" msgid="3920643161015888527">"Персидский"</string> - <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"Азербайджанский"</string> + <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"азербайджанский"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"польский"</string> - <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Белорусский"</string> + <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"белорусский"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"монгольский"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"грузинский"</string> </resources> diff --git a/packages/InputDevices/res/values-si/strings.xml b/packages/InputDevices/res/values-si/strings.xml index 5e387dc0eef4..c13661613bd5 100644 --- a/packages/InputDevices/res/values-si/strings.xml +++ b/packages/InputDevices/res/values-si/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"ෆින්ලන්ත"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"ක්රොඒෂියානු"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"චෙක්"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"චෙක් QWERTY විලාසය"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"එස්තෝනියානු"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"හංගේරියානු"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"අයිස්ලන්ත"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"අසර්බයිජාන"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"පෝලන්ත"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"බෙලරුසියානු"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"මොන්ගෝලියානු"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"ජෝර්ජියානු"</string> </resources> diff --git a/packages/InputDevices/res/values-sk/strings.xml b/packages/InputDevices/res/values-sk/strings.xml index 031862cecb9e..ee117cab71ac 100644 --- a/packages/InputDevices/res/values-sk/strings.xml +++ b/packages/InputDevices/res/values-sk/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"fínske"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"chorvátske"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"české"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Český štýl QWERTY"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"estónske"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"maďarské"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"islandské"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"Azerbajdžančina"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"Poľština"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"bieloruština"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Mongolčina"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Gruzínčina"</string> </resources> diff --git a/packages/InputDevices/res/values-sl/strings.xml b/packages/InputDevices/res/values-sl/strings.xml index 9467acd5668f..91ba472bde1e 100644 --- a/packages/InputDevices/res/values-sl/strings.xml +++ b/packages/InputDevices/res/values-sl/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"finska"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"hrvaška"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"češka"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Razpored QWERTY za češčino"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"estonska"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"madžarska"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"islandska"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"azerbajdžanščina"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"poljščina"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"beloruščina"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"mongolščina"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"gruzinščina"</string> </resources> diff --git a/packages/InputDevices/res/values-sq/strings.xml b/packages/InputDevices/res/values-sq/strings.xml index c25c94dfdcfb..3128025d6bd0 100644 --- a/packages/InputDevices/res/values-sq/strings.xml +++ b/packages/InputDevices/res/values-sq/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"finlandisht"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"kroatisht"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"çekisht"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Tastiera QWERTY çekisht"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"estonisht"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"hungarisht"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"islandisht"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"Azerbajxhanisht"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"Polonisht"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Bjellorusisht"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Mongolisht"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Gjeorgjisht"</string> </resources> diff --git a/packages/InputDevices/res/values-sr/strings.xml b/packages/InputDevices/res/values-sr/strings.xml index 30f3317dd109..ab1faed93565 100644 --- a/packages/InputDevices/res/values-sr/strings.xml +++ b/packages/InputDevices/res/values-sr/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"финска"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"хрватска"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"чешка"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Стил чешке QWERTY тастатуре"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"естонска"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"мађарска"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"исландска"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"азербејџанска"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"пољски"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"белоруски"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"монголска"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"грузијска"</string> </resources> diff --git a/packages/InputDevices/res/values-sv/strings.xml b/packages/InputDevices/res/values-sv/strings.xml index 466ba12e52fa..a4c0fcaa86de 100644 --- a/packages/InputDevices/res/values-sv/strings.xml +++ b/packages/InputDevices/res/values-sv/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Finskt"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Kroatiskt"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"Tjeckiskt"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Tjeckiskt QWERTY"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Estniskt"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Ungerskt"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Isländskt"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"azerbajdzjanska"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"Polska"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"vitryska"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"mongoliska"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"georgiska"</string> </resources> diff --git a/packages/InputDevices/res/values-sw/strings.xml b/packages/InputDevices/res/values-sw/strings.xml index c01006783687..1e5c8d7d30e1 100644 --- a/packages/InputDevices/res/values-sw/strings.xml +++ b/packages/InputDevices/res/values-sw/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Kifinlandi"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Kikroeshia"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"Kicheki"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Muundo wa QWERTY wa Kicheki"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Kiestonia"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Kihungari"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Kiaislandi"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"Kiazabaijani"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"Kipolandi"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Kibelarusi"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Kimongolia"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Kijojia"</string> </resources> diff --git a/packages/InputDevices/res/values-ta/strings.xml b/packages/InputDevices/res/values-ta/strings.xml index 6c850fb875dc..8bd7170a8206 100644 --- a/packages/InputDevices/res/values-ta/strings.xml +++ b/packages/InputDevices/res/values-ta/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"ஃபின்னிஷ்"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"குரோஷியன்"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"செக்"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"செக் QWERTY நடை"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"எஸ்தோனியன்"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"ஹங்கேரியன்"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"ஐஸ்லாண்டிக்"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"அஜர்பைஜானி"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"போலிஷ்"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"பெலரூசியன்"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"மங்கோலியன்"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"ஜார்ஜியன்"</string> </resources> diff --git a/packages/InputDevices/res/values-te/strings.xml b/packages/InputDevices/res/values-te/strings.xml index 2a38ed1dd74a..b6caafd48790 100644 --- a/packages/InputDevices/res/values-te/strings.xml +++ b/packages/InputDevices/res/values-te/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"ఫిన్నిష్"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"క్రొయేషియన్"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"చెక్"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"చెక్ QWERTY స్టయిల్"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"ఎస్టోనియన్"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"హంగేరియన్"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"ఐస్లాండిక్"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"అజర్బైజాన్"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"పోలిష్"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"బెలారష్యన్"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"మంగోలియన్"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"జార్జియన్"</string> </resources> diff --git a/packages/InputDevices/res/values-th/strings.xml b/packages/InputDevices/res/values-th/strings.xml index 10d25434cc27..1170f8620a39 100644 --- a/packages/InputDevices/res/values-th/strings.xml +++ b/packages/InputDevices/res/values-th/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"ฟินแลนด์"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"โครเอเชีย"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"เช็ก"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"แบบ Czech QWERTY"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"เอสโตเนีย"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"ฮังการี"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"ไอซ์แลนดิก"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"อาเซอร์ไบจาน"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"โปแลนด์"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"เบลารุส"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"ภาษามองโกเลีย"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"ภาษาจอร์เจีย"</string> </resources> diff --git a/packages/InputDevices/res/values-tl/strings.xml b/packages/InputDevices/res/values-tl/strings.xml index 2c197ad9ed69..97b878bde52c 100644 --- a/packages/InputDevices/res/values-tl/strings.xml +++ b/packages/InputDevices/res/values-tl/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Finnish"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Croatian"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"Czech"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Czech QWERTY style"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Estonian"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Hungarian"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Icelandic"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"Azerbaijani"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"Polish"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Belarusian"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Mongolian"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Georgian"</string> </resources> diff --git a/packages/InputDevices/res/values-tr/strings.xml b/packages/InputDevices/res/values-tr/strings.xml index c5b6d8ac29cd..7e9b5e50fbc6 100644 --- a/packages/InputDevices/res/values-tr/strings.xml +++ b/packages/InputDevices/res/values-tr/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Fince"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Hırvatça"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"Çekçe"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Çekçe QWERTY stili"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Estonca"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Macarca"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"İzlandaca"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"Azerice"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"Lehçe"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Belarusça"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Moğolca"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Gürcüce"</string> </resources> diff --git a/packages/InputDevices/res/values-uk/strings.xml b/packages/InputDevices/res/values-uk/strings.xml index c430dbd21123..db5de4cb7a83 100644 --- a/packages/InputDevices/res/values-uk/strings.xml +++ b/packages/InputDevices/res/values-uk/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"фінська"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"хорватська"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"чеська"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Чеська (QWERTY)"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"естонська"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"угорська"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"ісландська"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"азербайджанська"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"Польська"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Білоруська"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Монгольська"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Грузинська"</string> </resources> diff --git a/packages/InputDevices/res/values-ur/strings.xml b/packages/InputDevices/res/values-ur/strings.xml index 25bb2463650f..bf9e5adca553 100644 --- a/packages/InputDevices/res/values-ur/strings.xml +++ b/packages/InputDevices/res/values-ur/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"فنش"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"کروشیائی"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"چیک"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Czech QWERTY طرز"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"اسٹونیائی"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"ہنگریائی"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"آئس لینڈک"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"آزربائیجانی"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"پولش"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"بيلاروسی"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"منگؤلی"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"جارجیائی"</string> </resources> diff --git a/packages/InputDevices/res/values-uz/strings.xml b/packages/InputDevices/res/values-uz/strings.xml index a465c4752654..88e9f9f70045 100644 --- a/packages/InputDevices/res/values-uz/strings.xml +++ b/packages/InputDevices/res/values-uz/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Fincha"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Xorvatcha"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"Chexcha"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Chex QWERTY uslubi"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Estoncha"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Vengercha"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Islandcha"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"Ozarbayjon"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"Polyak"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Belarus"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Mongol"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Gruzin"</string> </resources> diff --git a/packages/InputDevices/res/values-vi/strings.xml b/packages/InputDevices/res/values-vi/strings.xml index 0380b4c76ce2..eabaa1961946 100644 --- a/packages/InputDevices/res/values-vi/strings.xml +++ b/packages/InputDevices/res/values-vi/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Tiếng Phần Lan"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Tiếng Croatia"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"Tiếng Séc"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Kiểu QWERTY tiếng Séc"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Tiếng Estonia"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Tiếng Hungary"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Tiếng Ai-xơ-len"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"Tiếng Azerbaijan"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"Tiếng Ba Lan"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Tiếng Belarus"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Tiếng Mông Cổ"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Tiếng Georgia"</string> </resources> diff --git a/packages/InputDevices/res/values-zh-rCN/strings.xml b/packages/InputDevices/res/values-zh-rCN/strings.xml index 26be03b876a1..3eb4b2c94a97 100644 --- a/packages/InputDevices/res/values-zh-rCN/strings.xml +++ b/packages/InputDevices/res/values-zh-rCN/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"芬兰语"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"克罗地亚语"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"捷克语"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"捷克语 QWERTY 样式"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"爱沙尼亚语"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"匈牙利语"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"冰岛语"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"阿塞拜疆语"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"波兰语"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"白俄罗斯语"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"蒙古语"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"格鲁吉亚语"</string> </resources> diff --git a/packages/InputDevices/res/values-zh-rHK/strings.xml b/packages/InputDevices/res/values-zh-rHK/strings.xml index 181bf02b2d87..37cd533ca9b9 100644 --- a/packages/InputDevices/res/values-zh-rHK/strings.xml +++ b/packages/InputDevices/res/values-zh-rHK/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"芬蘭文"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"克羅地亞文"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"捷克文"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"捷克文 QWERTY 樣式"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"愛沙尼亞文"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"匈牙利文"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"冰島文"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"亞塞拜疆文"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"波蘭文"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"白俄羅斯文"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"蒙古文"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"格魯吉亞文"</string> </resources> diff --git a/packages/InputDevices/res/values-zh-rTW/strings.xml b/packages/InputDevices/res/values-zh-rTW/strings.xml index 23adc99d4c25..8d2de40b2d86 100644 --- a/packages/InputDevices/res/values-zh-rTW/strings.xml +++ b/packages/InputDevices/res/values-zh-rTW/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"芬蘭文"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"克羅埃西亞文"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"捷克文"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"捷克文 QWERTY 鍵盤"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"愛沙尼亞文"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"匈牙利文"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"冰島文"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"亞塞拜然文"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"波蘭文"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"白俄羅斯文"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"蒙古文"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"喬治亞文"</string> </resources> diff --git a/packages/InputDevices/res/values-zu/strings.xml b/packages/InputDevices/res/values-zu/strings.xml index 24ac82f14654..ddb688ad92e9 100644 --- a/packages/InputDevices/res/values-zu/strings.xml +++ b/packages/InputDevices/res/values-zu/strings.xml @@ -26,6 +26,7 @@ <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Isi-Finnish"</string> <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Isi-Croatian"</string> <string name="keyboard_layout_czech" msgid="1349256901452975343">"Isi-Czech"</string> + <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Isitayela se-Czech QWERTY"</string> <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Isi-Estonian"</string> <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Isi-Hungarian"</string> <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Isi-Icelandic"</string> @@ -45,4 +46,6 @@ <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"Isi-Azebhayijani"</string> <string name="keyboard_layout_polish" msgid="1121588624094925325">"Isi-Polish"</string> <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Isi-Belarusian"</string> + <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"isi-Mongolian"</string> + <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Okwesi-Georgian"</string> </resources> diff --git a/packages/PackageInstaller/res/values-es/strings.xml b/packages/PackageInstaller/res/values-es/strings.xml index 1049c3ca6b93..fa738734c598 100644 --- a/packages/PackageInstaller/res/values-es/strings.xml +++ b/packages/PackageInstaller/res/values-es/strings.xml @@ -56,8 +56,8 @@ <string name="uninstall_application_text" msgid="3816830743706143980">"¿Quieres desinstalar esta aplicación?"</string> <string name="uninstall_application_text_all_users" msgid="575491774380227119">"¿Quieres desinstalar esta aplicación para "<b>"todos"</b>" los usuarios? La aplicación y sus datos se borrarán de "<b>"todos"</b>" los usuarios del dispositivo."</string> <string name="uninstall_application_text_user" msgid="498072714173920526">"¿Quieres desinstalar esta aplicación para el usuario <xliff:g id="USERNAME">%1$s</xliff:g>?"</string> - <string name="uninstall_update_text" msgid="863648314632448705">"¿Quieres sustituir esta aplicación con la versión de fábrica? Ten en cuenta que se borrarán todos los datos."</string> - <string name="uninstall_update_text_multiuser" msgid="8992883151333057227">"¿Quieres sustituir esta aplicación con la versión de fábrica? Ten en cuenta que se borrarán todos los datos. Esto afecta a todos los usuarios del dispositivo, incluidos los que tienen perfiles de trabajo."</string> + <string name="uninstall_update_text" msgid="863648314632448705">"¿Quieres reemplazar esta aplicación con la versión de fábrica? Ten en cuenta que se borrarán todos los datos."</string> + <string name="uninstall_update_text_multiuser" msgid="8992883151333057227">"¿Quieres reemplazar esta aplicación con la versión de fábrica? Ten en cuenta que se borrarán todos los datos. Esto afecta a todos los usuarios del dispositivo, incluidos los que tienen perfiles de trabajo."</string> <string name="uninstall_keep_data" msgid="7002379587465487550">"Mantener <xliff:g id="SIZE">%1$s</xliff:g> de datos de aplicaciones."</string> <string name="uninstalling_notification_channel" msgid="840153394325714653">"Desinstalaciones en curso"</string> <string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Desinstalaciones fallidas"</string> diff --git a/packages/PackageInstaller/res/values-ne/strings.xml b/packages/PackageInstaller/res/values-ne/strings.xml index 60934b1e8ddb..495a05b941d6 100644 --- a/packages/PackageInstaller/res/values-ne/strings.xml +++ b/packages/PackageInstaller/res/values-ne/strings.xml @@ -30,11 +30,11 @@ <string name="install_failed_blocked" msgid="8512284352994752094">"यो प्याकेज स्थापना गर्ने क्रममा अवरोध गरियो।"</string> <string name="install_failed_conflict" msgid="3493184212162521426">"प्याकेजका रूपमा स्थापना नगरिएको एप विद्यमान प्याकेजसँग मेल खाँदैन।"</string> <string name="install_failed_incompatible" product="tablet" msgid="6019021440094927928">"एपका रूपमा स्थापना नगरिएको एप तपाईंको ट्याब्लेटसँग मिल्दो छैन।"</string> - <string name="install_failed_incompatible" product="tv" msgid="2890001324362291683">"यो एप तपाईंको TV सँग मिल्दो छैन।"</string> + <string name="install_failed_incompatible" product="tv" msgid="2890001324362291683">"यो एप तपाईंको टिभी सँग मिल्दो छैन।"</string> <string name="install_failed_incompatible" product="default" msgid="7254630419511645826">"एपका रूपमा स्थापना नगरिएको एप तपाईंको फोनसँग मिल्दो छैन।"</string> <string name="install_failed_invalid_apk" msgid="8581007676422623930">"प्याकेजका रूपमा स्थापना नगरिएको एप अमान्य जस्तो देखिन्छ।"</string> <string name="install_failed_msg" product="tablet" msgid="6298387264270562442">"तपाईंको ट्याब्लेटमा <xliff:g id="APP_NAME">%1$s</xliff:g> स्थापना गर्न सकिएन।"</string> - <string name="install_failed_msg" product="tv" msgid="1920009940048975221">"तपाईंको TV मा <xliff:g id="APP_NAME">%1$s</xliff:g> स्थापना गर्न सकिएन।"</string> + <string name="install_failed_msg" product="tv" msgid="1920009940048975221">"तपाईंको टिभी मा <xliff:g id="APP_NAME">%1$s</xliff:g> स्थापना गर्न सकिएन।"</string> <string name="install_failed_msg" product="default" msgid="6484461562647915707">"तपाईंको फोनमा <xliff:g id="APP_NAME">%1$s</xliff:g> स्थापना गर्न सकिएन।"</string> <string name="launch" msgid="3952550563999890101">"खोल्नुहोस्"</string> <string name="unknown_apps_admin_dlg_text" msgid="4456572224020176095">"तपाईंका प्रशासकले अज्ञात स्रोतहरूबाट प्राप्त अनुप्रयोगहरूलाई स्थापना गर्ने अनुमति दिनुहुन्न"</string> @@ -81,11 +81,11 @@ <string name="message_staging" msgid="8032722385658438567">"एप स्थापना गर्न तयारी गर्दै…"</string> <string name="app_name_unknown" msgid="6881210203354323926">"अज्ञात"</string> <string name="untrusted_external_source_warning" product="tablet" msgid="6539403649459942547">"तपाईंको सुरक्षाका लागि, तपाईंको ट्याब्लेटलाई यो स्रोतबाट प्राप्त हुने अज्ञात एपहरू स्थापना गर्ने अनुमति छैन।"</string> - <string name="untrusted_external_source_warning" product="tv" msgid="1206648674551321364">"तपाईंको सुरक्षाका लागि, तपाईंको TV लाई यस स्रोतबाट प्राप्त हुने अज्ञात एपहरू स्थापना गर्ने अनुमति छैन।"</string> + <string name="untrusted_external_source_warning" product="tv" msgid="1206648674551321364">"तपाईंको सुरक्षाका लागि, तपाईंको टिभी लाई यस स्रोतबाट प्राप्त हुने अज्ञात एपहरू स्थापना गर्ने अनुमति छैन।"</string> <string name="untrusted_external_source_warning" product="default" msgid="7279739265754475165">"तपाईंको सुरक्षाका लागि, तपाईंको फोनलाई यो स्रोतबाट प्राप्त हुने अज्ञात एपहरू स्थापना गर्ने अनुमति छैन।"</string> <string name="anonymous_source_warning" product="default" msgid="2784902545920822500">"तपाईंको फोन तथा व्यक्तिगत डेटा अज्ञात एपहरूबाट हुने आक्रमणको चपेटामा पर्ने बढी जोखिममा हुन्छन्। यो एप स्थापना गरेर तपाईं यसको प्रयोगबाट तपाईंको फोनमा हुन सक्ने क्षति वा डेटाको नोक्सानीका लागि स्वयं जिम्मेवार हुने कुरामा सहमत हुनुहुन्छ।"</string> <string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"तपाईंको ट्याब्लेट तथा व्यक्तिगत डेटा अज्ञात एपहरूबाट हुने आक्रमणको चपेटामा पर्ने बढी जोखिममा हुन्छन्। यो एप स्थापना गरेर तपाईं यसको प्रयोगबाट तपाईंको ट्याब्लेटमा हुन सक्ने क्षति वा डेटाको नोक्सानीका लागि स्वयं जिम्मेवार हुने कुरामा सहमत हुनुहुन्छ।"</string> - <string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"तपाईंको TV तथा व्यक्तिगत डेटा अज्ञात एपहरूबाट हुने आक्रमणको चपेटामा पर्ने बढी जोखिममा हुन्छन्। यो एप स्थापना गरेर तपाईं यसको प्रयोगबाट तपाईंको TV मा हुन सक्ने क्षति वा डेटाको नोक्सानीका लागि स्वयं जिम्मेवार हुने कुरामा सहमत हुनुहुन्छ।"</string> + <string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"तपाईंको टिभी तथा व्यक्तिगत डेटा अज्ञात एपहरूबाट हुने आक्रमणको चपेटामा पर्ने बढी जोखिममा हुन्छन्। यो एप स्थापना गरेर तपाईं यसको प्रयोगबाट तपाईंको टिभी मा हुन सक्ने क्षति वा डेटाको नोक्सानीका लागि स्वयं जिम्मेवार हुने कुरामा सहमत हुनुहुन्छ।"</string> <string name="anonymous_source_continue" msgid="4375745439457209366">"जारी राख्नुहोस्"</string> <string name="external_sources_settings" msgid="4046964413071713807">"सेटिङहरू"</string> <string name="wear_app_channel" msgid="1960809674709107850">"वेयर एपहरूको स्थापना/स्थापना रद्द गर्दै"</string> diff --git a/packages/PackageInstaller/res/values-nl/strings.xml b/packages/PackageInstaller/res/values-nl/strings.xml index 108c86fe8369..d3a958922d1c 100644 --- a/packages/PackageInstaller/res/values-nl/strings.xml +++ b/packages/PackageInstaller/res/values-nl/strings.xml @@ -18,7 +18,7 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_name" msgid="7488448184431507488">"Pakket-installatie"</string> <string name="install" msgid="711829760615509273">"Installeren"</string> - <string name="done" msgid="6632441120016885253">"Gereed"</string> + <string name="done" msgid="6632441120016885253">"Klaar"</string> <string name="cancel" msgid="1018267193425558088">"Annuleren"</string> <string name="installing" msgid="4921993079741206516">"Installeren…"</string> <string name="installing_app" msgid="1165095864863849422">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> installeren…"</string> diff --git a/packages/PackageInstaller/res/values-or/strings.xml b/packages/PackageInstaller/res/values-or/strings.xml index b9908d299a49..f3b97a98ccf4 100644 --- a/packages/PackageInstaller/res/values-or/strings.xml +++ b/packages/PackageInstaller/res/values-or/strings.xml @@ -19,7 +19,7 @@ <string name="app_name" msgid="7488448184431507488">"ପ୍ୟାକେଜ୍ ଇନଷ୍ଟଲର୍"</string> <string name="install" msgid="711829760615509273">"ଇନଷ୍ଟଲ୍ କରନ୍ତୁ"</string> <string name="done" msgid="6632441120016885253">"ହୋଇଗଲା"</string> - <string name="cancel" msgid="1018267193425558088">"କ୍ୟାନ୍ସଲ୍ କରନ୍ତୁ"</string> + <string name="cancel" msgid="1018267193425558088">"ବାତିଲ୍ କରନ୍ତୁ"</string> <string name="installing" msgid="4921993079741206516">"ଇନଷ୍ଟଲ୍ କରାଯାଉଛି…"</string> <string name="installing_app" msgid="1165095864863849422">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> ଇନଷ୍ଟଲ୍ କରାଯାଉଛି…"</string> <string name="install_done" msgid="5987363587661783896">"ଆପ୍ ଇନଷ୍ଟଲ୍ ହୋଇଗଲା।"</string> diff --git a/packages/PrintSpooler/res/values-ca/strings.xml b/packages/PrintSpooler/res/values-ca/strings.xml index 98687b40af16..a346cb2c1b2d 100644 --- a/packages/PrintSpooler/res/values-ca/strings.xml +++ b/packages/PrintSpooler/res/values-ca/strings.xml @@ -16,7 +16,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="app_label" msgid="4469836075319831821">"Gest. cues impr."</string> + <string name="app_label" msgid="4469836075319831821">"Gestor de cues d\'impressió"</string> <string name="more_options_button" msgid="2243228396432556771">"Més opcions"</string> <string name="label_destination" msgid="9132510997381599275">"Destinació"</string> <string name="label_copies" msgid="3634531042822968308">"Còpies"</string> diff --git a/packages/SettingsLib/HelpUtils/res/values-en-rAU/strings.xml b/packages/SettingsLib/HelpUtils/res/values-en-rAU/strings.xml index 759da1d0b021..150020cb17c5 100644 --- a/packages/SettingsLib/HelpUtils/res/values-en-rAU/strings.xml +++ b/packages/SettingsLib/HelpUtils/res/values-en-rAU/strings.xml @@ -17,5 +17,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="help_feedback_label" msgid="7106780063063027882">"Help & feedback"</string> + <string name="help_feedback_label" msgid="7106780063063027882">"Help and feedback"</string> </resources> diff --git a/packages/SettingsLib/HelpUtils/res/values-en-rCA/strings.xml b/packages/SettingsLib/HelpUtils/res/values-en-rCA/strings.xml index 759da1d0b021..150020cb17c5 100644 --- a/packages/SettingsLib/HelpUtils/res/values-en-rCA/strings.xml +++ b/packages/SettingsLib/HelpUtils/res/values-en-rCA/strings.xml @@ -17,5 +17,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="help_feedback_label" msgid="7106780063063027882">"Help & feedback"</string> + <string name="help_feedback_label" msgid="7106780063063027882">"Help and feedback"</string> </resources> diff --git a/packages/SettingsLib/HelpUtils/res/values-en-rIN/strings.xml b/packages/SettingsLib/HelpUtils/res/values-en-rIN/strings.xml index 759da1d0b021..150020cb17c5 100644 --- a/packages/SettingsLib/HelpUtils/res/values-en-rIN/strings.xml +++ b/packages/SettingsLib/HelpUtils/res/values-en-rIN/strings.xml @@ -17,5 +17,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="help_feedback_label" msgid="7106780063063027882">"Help & feedback"</string> + <string name="help_feedback_label" msgid="7106780063063027882">"Help and feedback"</string> </resources> diff --git a/packages/SettingsLib/HelpUtils/res/values-te/strings.xml b/packages/SettingsLib/HelpUtils/res/values-te/strings.xml index ea66717b1e87..82c8613b5c8c 100644 --- a/packages/SettingsLib/HelpUtils/res/values-te/strings.xml +++ b/packages/SettingsLib/HelpUtils/res/values-te/strings.xml @@ -17,5 +17,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="help_feedback_label" msgid="7106780063063027882">"సహాయం & అభిప్రాయం"</string> + <string name="help_feedback_label" msgid="7106780063063027882">"సహాయం & ఫీడ్బ్యాక్"</string> </resources> diff --git a/packages/SettingsLib/RestrictedLockUtils/res/values-da/strings.xml b/packages/SettingsLib/RestrictedLockUtils/res/values-da/strings.xml index 3a0bc2d2eb77..7f10edf158b6 100644 --- a/packages/SettingsLib/RestrictedLockUtils/res/values-da/strings.xml +++ b/packages/SettingsLib/RestrictedLockUtils/res/values-da/strings.xml @@ -18,5 +18,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="enabled_by_admin" msgid="6630472777476410137">"Aktiveret af administratoren"</string> - <string name="disabled_by_admin" msgid="4023569940620832713">"Deaktiveret af administratoren"</string> + <string name="disabled_by_admin" msgid="4023569940620832713">"Deaktiveret af administrator"</string> </resources> diff --git a/packages/SettingsLib/RestrictedLockUtils/res/values-eu/strings.xml b/packages/SettingsLib/RestrictedLockUtils/res/values-eu/strings.xml index aaf607f6f3ce..2a881247c3af 100644 --- a/packages/SettingsLib/RestrictedLockUtils/res/values-eu/strings.xml +++ b/packages/SettingsLib/RestrictedLockUtils/res/values-eu/strings.xml @@ -18,5 +18,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="enabled_by_admin" msgid="6630472777476410137">"Administratzaileak gaitu egin du"</string> - <string name="disabled_by_admin" msgid="4023569940620832713">"Administratzaileak desgaitu egin du"</string> + <string name="disabled_by_admin" msgid="4023569940620832713">"Administratzaileak desgaitu du"</string> </resources> diff --git a/packages/SettingsLib/RestrictedLockUtils/res/values-fa/strings.xml b/packages/SettingsLib/RestrictedLockUtils/res/values-fa/strings.xml index aaf9116bc9d5..9c39f98aab17 100644 --- a/packages/SettingsLib/RestrictedLockUtils/res/values-fa/strings.xml +++ b/packages/SettingsLib/RestrictedLockUtils/res/values-fa/strings.xml @@ -17,6 +17,6 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="enabled_by_admin" msgid="6630472777476410137">"فعالشده توسط سرپرست"</string> - <string name="disabled_by_admin" msgid="4023569940620832713">"غیرفعالشده توسط سرپرست"</string> + <string name="enabled_by_admin" msgid="6630472777476410137">"توسط سرپرست فعال شده"</string> + <string name="disabled_by_admin" msgid="4023569940620832713">"توسط سرپرست غیرفعال شده"</string> </resources> diff --git a/packages/SettingsLib/RestrictedLockUtils/res/values-or/strings.xml b/packages/SettingsLib/RestrictedLockUtils/res/values-or/strings.xml index 1d23c31f493d..4ce6460f8b89 100644 --- a/packages/SettingsLib/RestrictedLockUtils/res/values-or/strings.xml +++ b/packages/SettingsLib/RestrictedLockUtils/res/values-or/strings.xml @@ -18,5 +18,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="enabled_by_admin" msgid="6630472777476410137">"ଆଡମିନଙ୍କ ଦ୍ୱାରା ସକ୍ଷମ କରାଯାଇଛି"</string> - <string name="disabled_by_admin" msgid="4023569940620832713">"ବ୍ୟବସ୍ଥାପକଙ୍କ ଦ୍ଵାରା ଅକ୍ଷମ କରାଯାଇଛି"</string> + <string name="disabled_by_admin" msgid="4023569940620832713">"ଆଡମିନଙ୍କ ଦ୍ଵାରା ଅକ୍ଷମ କରାଯାଇଛି"</string> </resources> diff --git a/packages/SettingsLib/RestrictedLockUtils/res/values-pt-rPT/strings.xml b/packages/SettingsLib/RestrictedLockUtils/res/values-pt-rPT/strings.xml index e57d1cc11a20..908e2fbbff5b 100644 --- a/packages/SettingsLib/RestrictedLockUtils/res/values-pt-rPT/strings.xml +++ b/packages/SettingsLib/RestrictedLockUtils/res/values-pt-rPT/strings.xml @@ -18,5 +18,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="enabled_by_admin" msgid="6630472777476410137">"Ativado pelo administrador"</string> - <string name="disabled_by_admin" msgid="4023569940620832713">"Desativada pelo administrador"</string> + <string name="disabled_by_admin" msgid="4023569940620832713">"Desativado pelo administrador"</string> </resources> diff --git a/packages/SettingsLib/RestrictedLockUtils/res/values-te/strings.xml b/packages/SettingsLib/RestrictedLockUtils/res/values-te/strings.xml index 2da347c4454f..8f17dc5ec1e8 100644 --- a/packages/SettingsLib/RestrictedLockUtils/res/values-te/strings.xml +++ b/packages/SettingsLib/RestrictedLockUtils/res/values-te/strings.xml @@ -17,6 +17,6 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="enabled_by_admin" msgid="6630472777476410137">"నిర్వాహకులు ప్రారంభించారు"</string> - <string name="disabled_by_admin" msgid="4023569940620832713">"నిర్వాహకులు నిలిపివేసారు"</string> + <string name="enabled_by_admin" msgid="6630472777476410137">"అడ్మిన్ ఎనేబుల్ చేశారు"</string> + <string name="disabled_by_admin" msgid="4023569940620832713">"అడ్మిన్ డిజేబుల్ చేశారు"</string> </resources> diff --git a/packages/SettingsLib/RestrictedLockUtils/res/values-vi/strings.xml b/packages/SettingsLib/RestrictedLockUtils/res/values-vi/strings.xml index f664bb444bc1..2c37652c850e 100644 --- a/packages/SettingsLib/RestrictedLockUtils/res/values-vi/strings.xml +++ b/packages/SettingsLib/RestrictedLockUtils/res/values-vi/strings.xml @@ -18,5 +18,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="enabled_by_admin" msgid="6630472777476410137">"Do quản trị viên bật"</string> - <string name="disabled_by_admin" msgid="4023569940620832713">"Bị quản trị viên tắt"</string> + <string name="disabled_by_admin" msgid="4023569940620832713">"Đã bị quản trị viên vô hiệu hóa"</string> </resources> diff --git a/packages/SettingsLib/SearchWidget/res/values-el/strings.xml b/packages/SettingsLib/SearchWidget/res/values-el/strings.xml index 6f5ab78b304b..d50436a29ac1 100644 --- a/packages/SettingsLib/SearchWidget/res/values-el/strings.xml +++ b/packages/SettingsLib/SearchWidget/res/values-el/strings.xml @@ -17,5 +17,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="search_menu" msgid="1914043873178389845">"Ρυθμίσεις αναζήτησης"</string> + <string name="search_menu" msgid="1914043873178389845">"Αναζήτηση στις ρυθμίσεις"</string> </resources> diff --git a/packages/SettingsLib/SearchWidget/res/values-fa/strings.xml b/packages/SettingsLib/SearchWidget/res/values-fa/strings.xml index fa5f9bdfe07b..2c9aaa5e9f95 100644 --- a/packages/SettingsLib/SearchWidget/res/values-fa/strings.xml +++ b/packages/SettingsLib/SearchWidget/res/values-fa/strings.xml @@ -17,5 +17,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="search_menu" msgid="1914043873178389845">"جستجوی تنظیمات"</string> + <string name="search_menu" msgid="1914043873178389845">"تنظیمات جستجو"</string> </resources> diff --git a/packages/SettingsLib/SearchWidget/res/values-hr/strings.xml b/packages/SettingsLib/SearchWidget/res/values-hr/strings.xml index 9d83396689bd..34cb8e0fda38 100644 --- a/packages/SettingsLib/SearchWidget/res/values-hr/strings.xml +++ b/packages/SettingsLib/SearchWidget/res/values-hr/strings.xml @@ -17,5 +17,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="search_menu" msgid="1914043873178389845">"Pretraži postavke"</string> + <string name="search_menu" msgid="1914043873178389845">"Pretražite postavke"</string> </resources> diff --git a/packages/SettingsLib/SearchWidget/res/values-hy/strings.xml b/packages/SettingsLib/SearchWidget/res/values-hy/strings.xml index 8fa5a84acd79..b68b792acc32 100644 --- a/packages/SettingsLib/SearchWidget/res/values-hy/strings.xml +++ b/packages/SettingsLib/SearchWidget/res/values-hy/strings.xml @@ -17,5 +17,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="search_menu" msgid="1914043873178389845">"Որոնման կարգավորումներ"</string> + <string name="search_menu" msgid="1914043873178389845">"Որոնեք կարգավորումներ"</string> </resources> diff --git a/packages/SettingsLib/SearchWidget/res/values-in/strings.xml b/packages/SettingsLib/SearchWidget/res/values-in/strings.xml index edf51cc601ac..ccf11d26273c 100644 --- a/packages/SettingsLib/SearchWidget/res/values-in/strings.xml +++ b/packages/SettingsLib/SearchWidget/res/values-in/strings.xml @@ -17,5 +17,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="search_menu" msgid="1914043873178389845">"Setelan penelusuran"</string> + <string name="search_menu" msgid="1914043873178389845">"Telusuri setelan"</string> </resources> diff --git a/packages/SettingsLib/SearchWidget/res/values-is/strings.xml b/packages/SettingsLib/SearchWidget/res/values-is/strings.xml index 7ab103b476f3..3378c84d7e08 100644 --- a/packages/SettingsLib/SearchWidget/res/values-is/strings.xml +++ b/packages/SettingsLib/SearchWidget/res/values-is/strings.xml @@ -17,5 +17,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="search_menu" msgid="1914043873178389845">"Leitarstillingar"</string> + <string name="search_menu" msgid="1914043873178389845">"Leita í stillingum"</string> </resources> diff --git a/packages/SettingsLib/SearchWidget/res/values-pt-rPT/strings.xml b/packages/SettingsLib/SearchWidget/res/values-pt-rPT/strings.xml index 85a8d7342827..5fe116e86f94 100644 --- a/packages/SettingsLib/SearchWidget/res/values-pt-rPT/strings.xml +++ b/packages/SettingsLib/SearchWidget/res/values-pt-rPT/strings.xml @@ -17,5 +17,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="search_menu" msgid="1914043873178389845">"Pesquisa de definições"</string> + <string name="search_menu" msgid="1914043873178389845">"Pesquisar nas definições"</string> </resources> diff --git a/packages/SettingsLib/SearchWidget/res/values-sq/strings.xml b/packages/SettingsLib/SearchWidget/res/values-sq/strings.xml index a5313210a6f9..354941d39e12 100644 --- a/packages/SettingsLib/SearchWidget/res/values-sq/strings.xml +++ b/packages/SettingsLib/SearchWidget/res/values-sq/strings.xml @@ -17,5 +17,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="search_menu" msgid="1914043873178389845">"Cilësimet e kërkimit"</string> + <string name="search_menu" msgid="1914043873178389845">"Kërko te cilësimet"</string> </resources> diff --git a/packages/SettingsLib/SearchWidget/res/values-tl/strings.xml b/packages/SettingsLib/SearchWidget/res/values-tl/strings.xml index 111cf5a15dba..14b7b2f62eee 100644 --- a/packages/SettingsLib/SearchWidget/res/values-tl/strings.xml +++ b/packages/SettingsLib/SearchWidget/res/values-tl/strings.xml @@ -17,5 +17,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="search_menu" msgid="1914043873178389845">"Mga setting ng paghahanap"</string> + <string name="search_menu" msgid="1914043873178389845">"Maghanap sa mga setting"</string> </resources> diff --git a/packages/SettingsLib/SearchWidget/res/values-uk/strings.xml b/packages/SettingsLib/SearchWidget/res/values-uk/strings.xml index dfd66b28aa7a..560ac1359e5a 100644 --- a/packages/SettingsLib/SearchWidget/res/values-uk/strings.xml +++ b/packages/SettingsLib/SearchWidget/res/values-uk/strings.xml @@ -17,5 +17,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="search_menu" msgid="1914043873178389845">"Налаштування пошуку"</string> + <string name="search_menu" msgid="1914043873178389845">"Пошук налаштувань"</string> </resources> diff --git a/packages/SettingsLib/SearchWidget/res/values-vi/strings.xml b/packages/SettingsLib/SearchWidget/res/values-vi/strings.xml index cb1a75a616f5..90daf11c712d 100644 --- a/packages/SettingsLib/SearchWidget/res/values-vi/strings.xml +++ b/packages/SettingsLib/SearchWidget/res/values-vi/strings.xml @@ -17,5 +17,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="search_menu" msgid="1914043873178389845">"Tìm kiếm trong các mục cài đặt"</string> + <string name="search_menu" msgid="1914043873178389845">"Tìm trong thông tin cài đặt"</string> </resources> diff --git a/packages/SettingsLib/Tile/src/com/android/settingslib/drawer/Tile.java b/packages/SettingsLib/Tile/src/com/android/settingslib/drawer/Tile.java index 1e4c7cac4404..52d2b3c919d9 100644 --- a/packages/SettingsLib/Tile/src/com/android/settingslib/drawer/Tile.java +++ b/packages/SettingsLib/Tile/src/com/android/settingslib/drawer/Tile.java @@ -376,8 +376,12 @@ public abstract class Tile implements Parcelable { * Check whether tile only has primary profile. */ public boolean isPrimaryProfileOnly() { - String profile = mMetaData != null - ? mMetaData.getString(META_DATA_KEY_PROFILE) : PROFILE_ALL; + return isPrimaryProfileOnly(mMetaData); + } + + static boolean isPrimaryProfileOnly(Bundle metaData) { + String profile = metaData != null + ? metaData.getString(META_DATA_KEY_PROFILE) : PROFILE_ALL; profile = (profile != null ? profile : PROFILE_ALL); return TextUtils.equals(profile, PROFILE_PRIMARY); } diff --git a/packages/SettingsLib/Tile/src/com/android/settingslib/drawer/TileUtils.java b/packages/SettingsLib/Tile/src/com/android/settingslib/drawer/TileUtils.java index ace50f30663d..49f6bd8c3334 100644 --- a/packages/SettingsLib/Tile/src/com/android/settingslib/drawer/TileUtils.java +++ b/packages/SettingsLib/Tile/src/com/android/settingslib/drawer/TileUtils.java @@ -339,6 +339,16 @@ public class TileUtils { private static void loadTile(UserHandle user, Map<Pair<String, String>, Tile> addedCache, String defaultCategory, List<Tile> outTiles, Intent intent, Bundle metaData, ComponentInfo componentInfo) { + // Skip loading tile if the component is tagged primary_profile_only but not running on + // the current user. + if (user.getIdentifier() != ActivityManager.getCurrentUser() + && Tile.isPrimaryProfileOnly(componentInfo.metaData)) { + Log.w(LOG_TAG, "Found " + componentInfo.name + " for intent " + + intent + " is primary profile only, skip loading tile for uid " + + user.getIdentifier()); + return; + } + String categoryKey = defaultCategory; // Load category if ((metaData == null || !metaData.containsKey(EXTRA_CATEGORY_KEY)) diff --git a/packages/SettingsLib/res/values-ar/strings.xml b/packages/SettingsLib/res/values-ar/strings.xml index a640da4deb4d..08e92242a363 100644 --- a/packages/SettingsLib/res/values-ar/strings.xml +++ b/packages/SettingsLib/res/values-ar/strings.xml @@ -25,7 +25,7 @@ <string name="wifi_remembered" msgid="3266709779723179188">"تم الحفظ"</string> <string name="wifi_disconnected" msgid="7054450256284661757">"غير متصلة"</string> <string name="wifi_disabled_generic" msgid="2651916945380294607">"غير مفعّلة"</string> - <string name="wifi_disabled_network_failure" msgid="2660396183242399585">"تعذّرت تهيئة عنوان IP"</string> + <string name="wifi_disabled_network_failure" msgid="2660396183242399585">"تعذّر إعداد عنوان IP"</string> <string name="wifi_disabled_by_recommendation_provider" msgid="1302938248432705534">"الجهاز غير متصل بسبب انخفاض جودة الشبكة"</string> <string name="wifi_disabled_wifi_failure" msgid="8819554899148331100">"تعذّر اتصال WiFi"</string> <string name="wifi_disabled_password_failure" msgid="6892387079613226738">"حدثت مشكلة في المصادقة"</string> @@ -153,7 +153,7 @@ <string name="unknown" msgid="3544487229740637809">"غير معروف"</string> <string name="running_process_item_user_label" msgid="3988506293099805796">"المستخدم: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> <string name="launch_defaults_some" msgid="3631650616557252926">"تم ضبط بعض الإعدادات التلقائية"</string> - <string name="launch_defaults_none" msgid="8049374306261262709">"لم يتم تعيين إعدادات تلقائية"</string> + <string name="launch_defaults_none" msgid="8049374306261262709">"لم يتم ضبط إعدادات تلقائية"</string> <string name="tts_settings" msgid="8130616705989351312">"إعدادات تحويل النص إلى كلام"</string> <string name="tts_settings_title" msgid="7602210956640483039">"تحويل النص إلى كلام"</string> <string name="tts_default_rate_title" msgid="3964187817364304022">"معدل سرعة الكلام"</string> @@ -245,7 +245,7 @@ <string name="confirm_enable_oem_unlock_title" msgid="8249318129774367535">"هل تريد السماح بإلغاء قفل المصنّع الأصلي للجهاز؟"</string> <string name="confirm_enable_oem_unlock_text" msgid="854131050791011970">"تحذير: لن تعمل ميزات الحماية على هذا الجهاز أثناء تفعيل هذا الإعداد."</string> <string name="mock_location_app" msgid="6269380172542248304">"اختيار تطبيق الموقع الزائف"</string> - <string name="mock_location_app_not_set" msgid="6972032787262831155">"لم يتم تعيين تطبيق موقع زائف"</string> + <string name="mock_location_app_not_set" msgid="6972032787262831155">"لم يتم ضبط تطبيق موقع زائف"</string> <string name="mock_location_app_set" msgid="4706722469342913843">"تطبيق الموقع الزائف: <xliff:g id="APP_NAME">%1$s</xliff:g>"</string> <string name="debug_networking_category" msgid="6829757985772659599">"الشبكات"</string> <string name="wifi_display_certification" msgid="1805579519992520381">"شهادة عرض شاشة لاسلكي"</string> @@ -293,8 +293,8 @@ <string name="dev_logpersist_clear_warning_message" msgid="6447590867594287413">"عندما نتوقف عن رصد أي أخطاء باستخدام المسجِّل الدائم مرة أخرى، يتعين علينا محو بيانات المسجِّل الموجودة على جهازك."</string> <string name="select_logpersist_title" msgid="447071974007104196">"تخزين بيانات المسجِّل باستمرار على الجهاز"</string> <string name="select_logpersist_dialog_title" msgid="7745193591195485594">"تحديد مخازن السجلات المؤقتة المراد تخزينها باستمرار على الجهاز"</string> - <string name="select_usb_configuration_title" msgid="6339801314922294586">"حدد تهيئة USB"</string> - <string name="select_usb_configuration_dialog_title" msgid="3579567144722589237">"حدد تهيئة USB"</string> + <string name="select_usb_configuration_title" msgid="6339801314922294586">"حدد إعداد USB"</string> + <string name="select_usb_configuration_dialog_title" msgid="3579567144722589237">"حدد إعداد USB"</string> <string name="allow_mock_location" msgid="2102650981552527884">"السماح بمواقع وهمية"</string> <string name="allow_mock_location_summary" msgid="179780881081354579">"السماح بمواقع وهمية"</string> <string name="debug_view_attributes" msgid="3539609843984208216">"تفعيل فحص سمة العرض"</string> @@ -319,7 +319,7 @@ <string name="hdcp_checking_dialog_title" msgid="7691060297616217781">"تعيين سلوك التحقق من HDCP"</string> <string name="debug_debugging_category" msgid="535341063709248842">"تصحيح الأخطاء"</string> <string name="debug_app" msgid="8903350241392391766">"اختيار التطبيق لتصحيحه"</string> - <string name="debug_app_not_set" msgid="1934083001283807188">"لم يتم تعيين تطبيق لتصحيحه"</string> + <string name="debug_app_not_set" msgid="1934083001283807188">"لم يتم ضبط تطبيق لتصحيحه"</string> <string name="debug_app_set" msgid="6599535090477753651">"تطبيق التصحيح: <xliff:g id="APP_NAME">%1$s</xliff:g>"</string> <string name="select_application" msgid="2543228890535466325">"اختيار تطبيق"</string> <string name="no_application" msgid="9038334538870247690">"لا شيء"</string> @@ -382,9 +382,9 @@ <string name="local_backup_password_title" msgid="4631017948933578709">"كلمة مرور احتياطية للكمبيوتر"</string> <string name="local_backup_password_summary_none" msgid="7646898032616361714">"النُسخ الاحتياطية الكاملة لسطح المكتب غير محمية في الوقت الحالي"</string> <string name="local_backup_password_summary_change" msgid="1707357670383995567">"انقر لتغيير كلمة مرور النسخ الاحتياطية الكاملة لسطح المكتب أو إزالتها."</string> - <string name="local_backup_password_toast_success" msgid="4891666204428091604">"تم تعيين كلمة مرور احتياطية جديدة"</string> + <string name="local_backup_password_toast_success" msgid="4891666204428091604">"تم ضبط كلمة مرور احتياطية جديدة"</string> <string name="local_backup_password_toast_confirmation_mismatch" msgid="2994718182129097733">"كلمة المرور الجديدة وتأكيدها لا يتطابقان"</string> - <string name="local_backup_password_toast_validation_failure" msgid="714669442363647122">"تعذّر تعيين كلمة مرور احتياطية"</string> + <string name="local_backup_password_toast_validation_failure" msgid="714669442363647122">"تعذّر ضبط كلمة مرور احتياطية"</string> <string name="loading_injected_setting_summary" msgid="8394446285689070348">"جارٍ التحميل…"</string> <string-array name="color_mode_names"> <item msgid="3836559907767149216">"نابض بالحياة (تلقائي)"</item> diff --git a/packages/SettingsLib/res/values-be/strings.xml b/packages/SettingsLib/res/values-be/strings.xml index 01d7682416fa..7a83b3bed2af 100644 --- a/packages/SettingsLib/res/values-be/strings.xml +++ b/packages/SettingsLib/res/values-be/strings.xml @@ -212,7 +212,7 @@ <string name="adb_wireless_settings" msgid="2295017847215680229">"Адладка па Wi-Fi"</string> <string name="adb_wireless_list_empty_off" msgid="1713707973837255490">"Каб праглядаць і выкарыстоўваць даступныя прылады, уключыце адладку па Wi-Fi"</string> <string name="adb_pair_method_qrcode_title" msgid="6982904096137468634">"Спалучыць прыладу з дапамогай QR-кода"</string> - <string name="adb_pair_method_qrcode_summary" msgid="7130694277228970888">"Спалучаць новыя прылады з дапамогай сканера QR-кода"</string> + <string name="adb_pair_method_qrcode_summary" msgid="7130694277228970888">"Спалучаць новыя прылады з дапамогай сканера QR-кодаў"</string> <string name="adb_pair_method_code_title" msgid="1122590300445142904">"Спалучыць прыладу з дапамогай кода спалучэння"</string> <string name="adb_pair_method_code_summary" msgid="6370414511333685185">"Спалучаць новыя прылады з дапамогай шасцізначнага кода"</string> <string name="adb_paired_devices_title" msgid="5268997341526217362">"Спалучаныя прылады"</string> diff --git a/packages/SettingsLib/res/values-bn/arrays.xml b/packages/SettingsLib/res/values-bn/arrays.xml index a131a3b1ad91..b19cde4f2778 100644 --- a/packages/SettingsLib/res/values-bn/arrays.xml +++ b/packages/SettingsLib/res/values-bn/arrays.xml @@ -40,7 +40,7 @@ <item msgid="8339720953594087771">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> এর সাথে কানেক্ট হচ্ছে…"</item> <item msgid="3028983857109369308">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> দিয়ে যাচাইকরণ করা হচ্ছে..."</item> <item msgid="4287401332778341890">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> থেকে আইপি অ্যাড্রেস জানা হচ্ছে…"</item> - <item msgid="1043944043827424501">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> তে কানেক্ট হয়েছে"</item> + <item msgid="1043944043827424501">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g>-এ কানেক্ট হয়েছে"</item> <item msgid="7445993821842009653">"স্থগিত করা হয়েছে"</item> <item msgid="1175040558087735707">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> থেকে ডিসকানেক্ট হচ্ছে…"</item> <item msgid="699832486578171722">"ডিসকানেক্ট করা হয়েছে"</item> diff --git a/packages/SettingsLib/res/values-bn/strings.xml b/packages/SettingsLib/res/values-bn/strings.xml index 2db23f73e683..dbec19bc40f6 100644 --- a/packages/SettingsLib/res/values-bn/strings.xml +++ b/packages/SettingsLib/res/values-bn/strings.xml @@ -488,8 +488,8 @@ <string name="status_unavailable" msgid="5279036186589861608">"অনুপলভ্য"</string> <string name="wifi_status_mac_randomized" msgid="466382542497832189">"MAC র্যান্ডমাইজ করা হয়েছে"</string> <plurals name="wifi_tether_connected_summary" formatted="false" msgid="6317236306047306139"> - <item quantity="one">%1$dটি ডিভাইস কানেক্ট</item> - <item quantity="other">%1$dটি ডিভাইস কানেক্ট</item> + <item quantity="one">%1$dটি ডিভাইস কানেক্ট রয়েছে</item> + <item quantity="other">%1$dটি ডিভাইস কানেক্ট রয়েছে</item> </plurals> <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"আরও বেশি।"</string> <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"আরও কম।"</string> diff --git a/packages/SettingsLib/res/values-bs/arrays.xml b/packages/SettingsLib/res/values-bs/arrays.xml index 6595c226a171..dc33bb0ed000 100644 --- a/packages/SettingsLib/res/values-bs/arrays.xml +++ b/packages/SettingsLib/res/values-bs/arrays.xml @@ -187,7 +187,7 @@ <item msgid="97587758561106269">"Isključeno"</item> <item msgid="7126170197336963369">"Međuspremnici svih zapisnika"</item> <item msgid="7167543126036181392">"Međuspremnici svih zapisnika osim radija"</item> - <item msgid="5135340178556563979">"samo međuspremnik zapisnika kernela"</item> + <item msgid="5135340178556563979">"samo međumemorija zapisnika kernela"</item> </string-array> <string-array name="window_animation_scale_entries"> <item msgid="2675263395797191850">"Animacija isključena"</item> diff --git a/packages/SettingsLib/res/values-es-rUS/strings.xml b/packages/SettingsLib/res/values-es-rUS/strings.xml index c27973f8bc86..287a1aca2fbd 100644 --- a/packages/SettingsLib/res/values-es-rUS/strings.xml +++ b/packages/SettingsLib/res/values-es-rUS/strings.xml @@ -22,7 +22,7 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="wifi_fail_to_scan" msgid="2333336097603822490">"No se pueden buscar las redes."</string> <string name="wifi_security_none" msgid="7392696451280611452">"Ninguna"</string> - <string name="wifi_remembered" msgid="3266709779723179188">"Guardada"</string> + <string name="wifi_remembered" msgid="3266709779723179188">"Guardado"</string> <string name="wifi_disconnected" msgid="7054450256284661757">"Desconectado"</string> <string name="wifi_disabled_generic" msgid="2651916945380294607">"Inhabilitada"</string> <string name="wifi_disabled_network_failure" msgid="2660396183242399585">"Error de configuración IP"</string> diff --git a/packages/SettingsLib/res/values-eu/strings.xml b/packages/SettingsLib/res/values-eu/strings.xml index 0042321a3654..eaf14f0bfb53 100644 --- a/packages/SettingsLib/res/values-eu/strings.xml +++ b/packages/SettingsLib/res/values-eu/strings.xml @@ -401,7 +401,7 @@ <string name="inactive_app_active_summary" msgid="8047630990208722344">"Aktibo. Aldatzeko, sakatu hau."</string> <string name="standby_bucket_summary" msgid="5128193447550429600">"Egonean moduko aplikazioaren egoera: <xliff:g id="BUCKET"> %s</xliff:g>"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"Abian diren zerbitzuak"</string> - <string name="runningservices_settings_summary" msgid="1046080643262665743">"Ikusi eta kontrolatu unean abian diren zerbitzuak"</string> + <string name="runningservices_settings_summary" msgid="1046080643262665743">"Ikusi eta kontrolatu une honetan abian diren zerbitzuak"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"WebView inplementazioa"</string> <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Ezarri WebView inplementazioa"</string> <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Jada ez dago erabilgarri aukera hori. Saiatu berriro."</string> diff --git a/packages/SettingsLib/res/values-fa/strings.xml b/packages/SettingsLib/res/values-fa/strings.xml index 04583d5872e0..77a6ce254b5a 100644 --- a/packages/SettingsLib/res/values-fa/strings.xml +++ b/packages/SettingsLib/res/values-fa/strings.xml @@ -211,8 +211,8 @@ <string name="adb_wireless_error" msgid="721958772149779856">"خطا"</string> <string name="adb_wireless_settings" msgid="2295017847215680229">"اشکالزدایی بیسیم"</string> <string name="adb_wireless_list_empty_off" msgid="1713707973837255490">"برای مشاهده و استفاده از دستگاههای در دسترس، اشکالزدایی بیسیم را روشن کنید"</string> - <string name="adb_pair_method_qrcode_title" msgid="6982904096137468634">"مرتبط کردن دستگاه با کد QR"</string> - <string name="adb_pair_method_qrcode_summary" msgid="7130694277228970888">"دستگاههای جدید را بااستفاده از اسکنر کد QR مرتبط کنید"</string> + <string name="adb_pair_method_qrcode_title" msgid="6982904096137468634">"مرتبط کردن دستگاه با رمزینه پاسخسریع"</string> + <string name="adb_pair_method_qrcode_summary" msgid="7130694277228970888">"دستگاههای جدید را بااستفاده از اسکنر رمزینه پاسخسریع مرتبط کنید"</string> <string name="adb_pair_method_code_title" msgid="1122590300445142904">"مرتبط کردن دستگاه با کد مرتبطسازی"</string> <string name="adb_pair_method_code_summary" msgid="6370414511333685185">"دستگاههای جدید را با استفاده از کد شش رقمی مرتبط کنید"</string> <string name="adb_paired_devices_title" msgid="5268997341526217362">"دستگاههای مرتبطشده"</string> @@ -226,12 +226,12 @@ <string name="adb_pairing_device_dialog_pairing_code_label" msgid="3639239786669722731">"کد مرتبطسازی Wi‑Fi"</string> <string name="adb_pairing_device_dialog_failed_title" msgid="3426758947882091735">"مرتبطسازی ناموفق"</string> <string name="adb_pairing_device_dialog_failed_msg" msgid="6611097519661997148">"مطمئن شوید که دستگاه به همان شبکه متصل باشد."</string> - <string name="adb_wireless_qrcode_summary" msgid="8051414549011801917">"دستگاه را ازطریق Wi‑Fi و با اسکن کردن کد QR مرتبط کنید"</string> + <string name="adb_wireless_qrcode_summary" msgid="8051414549011801917">"دستگاه را ازطریق Wi‑Fi و با اسکن کردن رمزینه پاسخسریع مرتبط کنید"</string> <string name="adb_wireless_verifying_qrcode_text" msgid="6123192424916029207">"مرتبطسازی دستگاه…"</string> - <string name="adb_qrcode_pairing_device_failed_msg" msgid="6936292092592914132">"مرتبط کردن دستگاه انجام نشد. یا کد QR اشتباه بوده است، یا دستگاه به همان شبکه متصل نیست."</string> + <string name="adb_qrcode_pairing_device_failed_msg" msgid="6936292092592914132">"مرتبط کردن دستگاه انجام نشد. یا رمزینه پاسخسریع اشتباه بوده است، یا دستگاه به همان شبکه متصل نیست."</string> <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"نشانی IP و درگاه"</string> - <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"اسکن کد QR"</string> - <string name="adb_wireless_qrcode_pairing_description" msgid="6014121407143607851">"دستگاه را ازطریق Wi‑Fi و با اسکن کردن کد QR مرتبط کنید"</string> + <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"اسکن رمزینه پاسخسریع"</string> + <string name="adb_wireless_qrcode_pairing_description" msgid="6014121407143607851">"دستگاه را ازطریق Wi‑Fi و با اسکن کردن رمزینه پاسخسریع مرتبط کنید"</string> <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"لطفاً به شبکه Wi-Fi متصل شوید"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"ADB (پل اشکالزدایی Android)، اشکالزدایی کردن، برنامهنویس"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"میانبر گزارش مشکل"</string> diff --git a/packages/SettingsLib/res/values-gl/strings.xml b/packages/SettingsLib/res/values-gl/strings.xml index 3e8b1c1b9cde..f9d57c453f69 100644 --- a/packages/SettingsLib/res/values-gl/strings.xml +++ b/packages/SettingsLib/res/values-gl/strings.xml @@ -37,7 +37,7 @@ <string name="wifi_no_internet" msgid="1774198889176926299">"Sen acceso a Internet"</string> <string name="saved_network" msgid="7143698034077223645">"Gardada por <xliff:g id="NAME">%1$s</xliff:g>"</string> <string name="connected_via_network_scorer" msgid="7665725527352893558">"Conectouse automaticamente a través de %1$s"</string> - <string name="connected_via_network_scorer_default" msgid="7973529709744526285">"Conectada automaticamente a través dun provedor de valoración de rede"</string> + <string name="connected_via_network_scorer_default" msgid="7973529709744526285">"Conectada automaticamente a través dun provedor de valoración de redes"</string> <string name="connected_via_passpoint" msgid="7735442932429075684">"Conectado a través de %1$s"</string> <string name="connected_via_app" msgid="3532267661404276584">"Wifi conectada a través de <xliff:g id="NAME">%1$s</xliff:g>"</string> <string name="available_via_passpoint" msgid="1716000261192603682">"Dispoñible a través de %1$s"</string> diff --git a/packages/SettingsLib/res/values-gu/strings.xml b/packages/SettingsLib/res/values-gu/strings.xml index aa1f9605b07d..0ce52f88f062 100644 --- a/packages/SettingsLib/res/values-gu/strings.xml +++ b/packages/SettingsLib/res/values-gu/strings.xml @@ -488,8 +488,8 @@ <string name="status_unavailable" msgid="5279036186589861608">"અનુપલબ્ધ"</string> <string name="wifi_status_mac_randomized" msgid="466382542497832189">"MACને રેન્ડમ કરેલ છે"</string> <plurals name="wifi_tether_connected_summary" formatted="false" msgid="6317236306047306139"> - <item quantity="one">%1$d ઉપકરણ કનેક્ટ કર્યું</item> - <item quantity="other">%1$d ઉપકરણો કનેક્ટ કર્યા</item> + <item quantity="one">%1$d ડિવાઇસ કનેક્ટ કર્યું</item> + <item quantity="other">%1$d ડિવાઇસ કનેક્ટ કર્યા</item> </plurals> <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"વધુ સમય."</string> <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"ઓછો સમય."</string> diff --git a/packages/SettingsLib/res/values-hi/strings.xml b/packages/SettingsLib/res/values-hi/strings.xml index 9b6a27ae8620..f2de28e0372c 100644 --- a/packages/SettingsLib/res/values-hi/strings.xml +++ b/packages/SettingsLib/res/values-hi/strings.xml @@ -488,7 +488,7 @@ <string name="status_unavailable" msgid="5279036186589861608">"मौजूद नहीं है"</string> <string name="wifi_status_mac_randomized" msgid="466382542497832189">"एमएसी पता रैंडम पर सेट है"</string> <plurals name="wifi_tether_connected_summary" formatted="false" msgid="6317236306047306139"> - <item quantity="one">%1$d डिवाइस जुड़े हैं</item> + <item quantity="one">%1$d डिवाइस जुड़ा है</item> <item quantity="other">%1$d डिवाइस जुड़े हैं</item> </plurals> <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"ज़्यादा समय."</string> diff --git a/packages/SettingsLib/res/values-hu/strings.xml b/packages/SettingsLib/res/values-hu/strings.xml index d16ff03b0903..5fbf3ac3b750 100644 --- a/packages/SettingsLib/res/values-hu/strings.xml +++ b/packages/SettingsLib/res/values-hu/strings.xml @@ -145,7 +145,7 @@ <string name="data_usage_ota" msgid="7984667793701597001">"Rendszerfrissítések"</string> <string name="tether_settings_title_usb" msgid="3728686573430917722">"USB-megosztás"</string> <string name="tether_settings_title_wifi" msgid="4803402057533895526">"Hordozható hotspot"</string> - <string name="tether_settings_title_bluetooth" msgid="916519902721399656">"Bluetooth megosztása"</string> + <string name="tether_settings_title_bluetooth" msgid="916519902721399656">"Bluetooth-megosztás"</string> <string name="tether_settings_title_usb_bluetooth" msgid="1727111807207577322">"Megosztás"</string> <string name="tether_settings_title_all" msgid="8910259483383010470">"Megosztás és hotspot"</string> <string name="managed_user_title" msgid="449081789742645723">"Összes munkaalkalmazás"</string> diff --git a/packages/SettingsLib/res/values-hy/arrays.xml b/packages/SettingsLib/res/values-hy/arrays.xml index a2de6dfc7387..141ce3990800 100644 --- a/packages/SettingsLib/res/values-hy/arrays.xml +++ b/packages/SettingsLib/res/values-hy/arrays.xml @@ -55,7 +55,7 @@ </string-array> <string-array name="hdcp_checking_summaries"> <item msgid="4045840870658484038">"Երբեք չօգտագործել HDCP ստուգումը"</item> - <item msgid="8254225038262324761">"Օգտագործել HDCP-ը` միայն DRM-ի բովանդակությունը ստուգելու համար"</item> + <item msgid="8254225038262324761">"Օգտագործել HDCP-ը՝ միայն DRM-ի բովանդակությունը ստուգելու համար"</item> <item msgid="6421717003037072581">"Միշտ օգտագործել HDCP ստուգումը"</item> </string-array> <string-array name="bt_hci_snoop_log_entries"> diff --git a/packages/SettingsLib/res/values-hy/strings.xml b/packages/SettingsLib/res/values-hy/strings.xml index a1dbafc3c31e..3d25ff85ef05 100644 --- a/packages/SettingsLib/res/values-hy/strings.xml +++ b/packages/SettingsLib/res/values-hy/strings.xml @@ -57,7 +57,7 @@ <string name="osu_sign_up_complete" msgid="7640183358878916847">"Գրանցումն ավարտված է: Միացում…"</string> <string name="speed_label_very_slow" msgid="8526005255731597666">"Շատ դանդաղ"</string> <string name="speed_label_slow" msgid="6069917670665664161">"Դանդաղ"</string> - <string name="speed_label_okay" msgid="1253594383880810424">"Հաստատել"</string> + <string name="speed_label_okay" msgid="1253594383880810424">"Լավ"</string> <string name="speed_label_medium" msgid="9078405312828606976">"Միջին"</string> <string name="speed_label_fast" msgid="2677719134596044051">"Արագ"</string> <string name="speed_label_very_fast" msgid="8215718029533182439">"Շատ արագ"</string> @@ -344,7 +344,7 @@ <string name="show_hw_layers_updates_summary" msgid="5850955890493054618">"Թարմացվելիս ընդգծել սարքաշարի ծածկույթները կանաչ գույնով"</string> <string name="debug_hw_overdraw" msgid="8944851091008756796">"Վրիպազերծել GPU գերազանցումները"</string> <string name="disable_overlays" msgid="4206590799671557143">"Կասեցնել HW վրադրումները"</string> - <string name="disable_overlays_summary" msgid="1954852414363338166">"Միշտ օգտագործել GPU-ն` էկրանի կազմման համար"</string> + <string name="disable_overlays_summary" msgid="1954852414363338166">"Միշտ օգտագործել GPU-ն՝ էկրանի կազմման համար"</string> <string name="simulate_color_space" msgid="1206503300335835151">"Նմանակել գունատարածքը"</string> <string name="enable_opengl_traces_title" msgid="4638773318659125196">"Ակտիվացնել OpenGL հետքերը"</string> <string name="usb_audio_disable_routing" msgid="3367656923544254975">"Անջատել USB աուդիո երթուղումը"</string> @@ -494,7 +494,7 @@ <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"Ավելացնել ժամանակը:"</string> <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"Պակասեցնել ժամանակը:"</string> <string name="cancel" msgid="5665114069455378395">"Չեղարկել"</string> - <string name="okay" msgid="949938843324579502">"Հաստատել"</string> + <string name="okay" msgid="949938843324579502">"Եղավ"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"Միացնել"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"Միացրեք «Չանհանգստացնել» ռեժիմը"</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"Երբեք"</string> diff --git a/packages/SettingsLib/res/values-in/arrays.xml b/packages/SettingsLib/res/values-in/arrays.xml index c0af2707dd4f..5cdd954d3e6e 100644 --- a/packages/SettingsLib/res/values-in/arrays.xml +++ b/packages/SettingsLib/res/values-in/arrays.xml @@ -40,7 +40,7 @@ <item msgid="8339720953594087771">"Menyambung ke <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item> <item msgid="3028983857109369308">"Mengautentikasi dengan <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item> <item msgid="4287401332778341890">"Mendapatkan alamat IP dari <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item> - <item msgid="1043944043827424501">"Tersambung ke <xliff:g id="NETWORK_NAME">%1$s</xliff:g>"</item> + <item msgid="1043944043827424501">"Terhubung ke <xliff:g id="NETWORK_NAME">%1$s</xliff:g>"</item> <item msgid="7445993821842009653">"Ditangguhkan"</item> <item msgid="1175040558087735707">"Diputus dari <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item> <item msgid="699832486578171722">"Sambungan terputus"</item> diff --git a/packages/SettingsLib/res/values-in/strings.xml b/packages/SettingsLib/res/values-in/strings.xml index 3c3552702484..c68a438e8c08 100644 --- a/packages/SettingsLib/res/values-in/strings.xml +++ b/packages/SettingsLib/res/values-in/strings.xml @@ -156,7 +156,7 @@ <string name="launch_defaults_none" msgid="8049374306261262709">"Tidak ada setelan default"</string> <string name="tts_settings" msgid="8130616705989351312">"Setelan text-to-speech"</string> <string name="tts_settings_title" msgid="7602210956640483039">"Keluaran text-to-speech"</string> - <string name="tts_default_rate_title" msgid="3964187817364304022">"Laju bicara"</string> + <string name="tts_default_rate_title" msgid="3964187817364304022">"Kecepatan ucapan"</string> <string name="tts_default_rate_summary" msgid="3781937042151716987">"Kecepatan teks diucapkan"</string> <string name="tts_default_pitch_title" msgid="6988592215554485479">"Tinggi nada"</string> <string name="tts_default_pitch_summary" msgid="9132719475281551884">"Memengaruhi nada ucapan yang disintesis"</string> diff --git a/packages/SettingsLib/res/values-it/arrays.xml b/packages/SettingsLib/res/values-it/arrays.xml index de38625afcde..30186831b113 100644 --- a/packages/SettingsLib/res/values-it/arrays.xml +++ b/packages/SettingsLib/res/values-it/arrays.xml @@ -22,13 +22,13 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string-array name="wifi_status"> <item msgid="1596683495752107015"></item> - <item msgid="3288373008277313483">"Scansione in corso..."</item> - <item msgid="6050951078202663628">"Connessione..."</item> - <item msgid="8356618438494652335">"Autenticazione..."</item> - <item msgid="2837871868181677206">"Acquisizione indirizzo IP..."</item> + <item msgid="3288373008277313483">"Scansione in corso…"</item> + <item msgid="6050951078202663628">"Connessione…"</item> + <item msgid="8356618438494652335">"Autenticazione…"</item> + <item msgid="2837871868181677206">"Acquisizione indirizzo IP…"</item> <item msgid="4613015005934755724">"Connessa"</item> <item msgid="3763530049995655072">"Sospesa"</item> - <item msgid="7852381437933824454">"Disconnessione..."</item> + <item msgid="7852381437933824454">"Disconnessione…"</item> <item msgid="5046795712175415059">"Disconnessa"</item> <item msgid="2473654476624070462">"Operazione non riuscita"</item> <item msgid="9146847076036105115">"Bloccato"</item> @@ -36,13 +36,13 @@ </string-array> <string-array name="wifi_status_with_ssid"> <item msgid="5969842512724979061"></item> - <item msgid="1818677602615822316">"Scansione in corso..."</item> - <item msgid="8339720953594087771">"Connessione a <xliff:g id="NETWORK_NAME">%1$s</xliff:g>..."</item> - <item msgid="3028983857109369308">"Autenticazione con <xliff:g id="NETWORK_NAME">%1$s</xliff:g>..."</item> - <item msgid="4287401332778341890">"Acquisizione indirizzo IP da <xliff:g id="NETWORK_NAME">%1$s</xliff:g>..."</item> + <item msgid="1818677602615822316">"Scansione in corso…"</item> + <item msgid="8339720953594087771">"Connessione a <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item> + <item msgid="3028983857109369308">"Autenticazione con <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item> + <item msgid="4287401332778341890">"Acquisizione indirizzo IP da <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item> <item msgid="1043944043827424501">"Connessa a <xliff:g id="NETWORK_NAME">%1$s</xliff:g>"</item> <item msgid="7445993821842009653">"Sospesa"</item> - <item msgid="1175040558087735707">"Disconnessione da <xliff:g id="NETWORK_NAME">%1$s</xliff:g>..."</item> + <item msgid="1175040558087735707">"Disconnessione da <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item> <item msgid="699832486578171722">"Disconnessa"</item> <item msgid="522383512264986901">"Operazione non riuscita"</item> <item msgid="3602596701217484364">"Bloccato"</item> diff --git a/packages/SettingsLib/res/values-ja/arrays.xml b/packages/SettingsLib/res/values-ja/arrays.xml index 9f8a8e5c4a32..91c2fa20f59a 100644 --- a/packages/SettingsLib/res/values-ja/arrays.xml +++ b/packages/SettingsLib/res/values-ja/arrays.xml @@ -40,7 +40,7 @@ <item msgid="8339720953594087771">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g>に接続中..."</item> <item msgid="3028983857109369308">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g>による認証中..."</item> <item msgid="4287401332778341890">"IPアドレスを<xliff:g id="NETWORK_NAME">%1$s</xliff:g>から取得中..."</item> - <item msgid="1043944043827424501">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g>に接続しました"</item> + <item msgid="1043944043827424501">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> に接続済み"</item> <item msgid="7445993821842009653">"保留中"</item> <item msgid="1175040558087735707">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g>から切断中..."</item> <item msgid="699832486578171722">"切断されました"</item> diff --git a/packages/SettingsLib/res/values-ko/strings.xml b/packages/SettingsLib/res/values-ko/strings.xml index 5d82eae2fcba..6d24511291d5 100644 --- a/packages/SettingsLib/res/values-ko/strings.xml +++ b/packages/SettingsLib/res/values-ko/strings.xml @@ -539,7 +539,7 @@ <string name="user_setup_button_setup_now" msgid="1708269547187760639">"지금 설정"</string> <string name="user_setup_button_setup_later" msgid="8712980133555493516">"나중에"</string> <string name="user_add_user_type_title" msgid="551279664052914497">"추가"</string> - <string name="user_new_user_name" msgid="60979820612818840">"새 사용자"</string> + <string name="user_new_user_name" msgid="60979820612818840">"신규 사용자"</string> <string name="user_new_profile_name" msgid="2405500423304678841">"새 프로필"</string> <string name="user_info_settings_title" msgid="6351390762733279907">"사용자 정보"</string> <string name="profile_info_settings_title" msgid="105699672534365099">"프로필 정보"</string> diff --git a/packages/SettingsLib/res/values-ky/strings.xml b/packages/SettingsLib/res/values-ky/strings.xml index 2702392c108f..15322dd98ec4 100644 --- a/packages/SettingsLib/res/values-ky/strings.xml +++ b/packages/SettingsLib/res/values-ky/strings.xml @@ -397,8 +397,8 @@ <item msgid="1282170165150762976">"Санарип мазмун үчүн оптималдаштырылган түстөр"</item> </string-array> <string name="inactive_apps_title" msgid="5372523625297212320">"Көшүү режиминдеги колдонмолор"</string> - <string name="inactive_app_inactive_summary" msgid="3161222402614236260">"Иштеген жок. Которуштуруу үчүн таптап коюңуз."</string> - <string name="inactive_app_active_summary" msgid="8047630990208722344">"Иштеп турат. Которуштуруу үчүн таптап коюңуз."</string> + <string name="inactive_app_inactive_summary" msgid="3161222402614236260">"Иштеген жок. Күйгүзүү үчүн басып коюңуз."</string> + <string name="inactive_app_active_summary" msgid="8047630990208722344">"Иштеп турат. Өчүрүү үчүн басып коюңуз."</string> <string name="standby_bucket_summary" msgid="5128193447550429600">"Көшүү режиминдеги колдонмонун абалы:<xliff:g id="BUCKET"> %s</xliff:g>"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"Иштеп жаткан кызматтар"</string> <string name="runningservices_settings_summary" msgid="1046080643262665743">"Учурда иштеп жаткан кызматтарды көрүп, көзөмөлдөп турасыз"</string> diff --git a/packages/SettingsLib/res/values-mk/strings.xml b/packages/SettingsLib/res/values-mk/strings.xml index 34299d801946..c4c72012adf1 100644 --- a/packages/SettingsLib/res/values-mk/strings.xml +++ b/packages/SettingsLib/res/values-mk/strings.xml @@ -204,10 +204,10 @@ <string name="tethering_settings_not_available" msgid="266821736434699780">"Поставките за спојување не се достапни за овој корисник"</string> <string name="apn_settings_not_available" msgid="1147111671403342300">"Поставките за името на пристапната точка не се достапни за овој корисник"</string> <string name="enable_adb" msgid="8072776357237289039">"Отстранување грешки на USB"</string> - <string name="enable_adb_summary" msgid="3711526030096574316">"Режим на отстранување грешки кога е поврзано USB"</string> + <string name="enable_adb_summary" msgid="3711526030096574316">"Режим за отстранување грешки кога е поврзано USB"</string> <string name="clear_adb_keys" msgid="3010148733140369917">"Отповикај овластувања за отстранување грешки од USB"</string> <string name="enable_adb_wireless" msgid="6973226350963971018">"Безжично отстранување грешки"</string> - <string name="enable_adb_wireless_summary" msgid="7344391423657093011">"Режим на отстранување грешки кога е поврзано Wi‑Fi"</string> + <string name="enable_adb_wireless_summary" msgid="7344391423657093011">"Режим за отстранување грешки кога е поврзано Wi‑Fi"</string> <string name="adb_wireless_error" msgid="721958772149779856">"Грешка"</string> <string name="adb_wireless_settings" msgid="2295017847215680229">"Безжично отстранување грешки"</string> <string name="adb_wireless_list_empty_off" msgid="1713707973837255490">"За да ги гледате и користите достапните уреди, вклучете го безжичното отстранување грешки"</string> diff --git a/packages/SettingsLib/res/values-mn/strings.xml b/packages/SettingsLib/res/values-mn/strings.xml index 08cf5f9fd5a9..8407db6d3a08 100644 --- a/packages/SettingsLib/res/values-mn/strings.xml +++ b/packages/SettingsLib/res/values-mn/strings.xml @@ -211,8 +211,8 @@ <string name="adb_wireless_error" msgid="721958772149779856">"Алдаа"</string> <string name="adb_wireless_settings" msgid="2295017847215680229">"Wireless debugging"</string> <string name="adb_wireless_list_empty_off" msgid="1713707973837255490">"Боломжтой төхөөрөмжүүдийг харах болох ашиглахын тулд wireless debugging-г асаана уу"</string> - <string name="adb_pair_method_qrcode_title" msgid="6982904096137468634">"Хурдан хариу үйлдлийн кодоор төхөөрөмжийг хослуул"</string> - <string name="adb_pair_method_qrcode_summary" msgid="7130694277228970888">"Хурдан хариу үйлдлийн кодын сканнер ашиглан шинэ төхөөрөмжүүдийг хослуулна уу"</string> + <string name="adb_pair_method_qrcode_title" msgid="6982904096137468634">"QR кодоор төхөөрөмжийг хослуул"</string> + <string name="adb_pair_method_qrcode_summary" msgid="7130694277228970888">"QR кодын сканнер ашиглан шинэ төхөөрөмжүүдийг хослуулна уу"</string> <string name="adb_pair_method_code_title" msgid="1122590300445142904">"Хослуулах кодоор төхөөрөмжийг хослуулна уу"</string> <string name="adb_pair_method_code_summary" msgid="6370414511333685185">"Зургаан оронтой кодыг ашиглан шинэ төхөөрөмжүүдийг хослуулна уу"</string> <string name="adb_paired_devices_title" msgid="5268997341526217362">"Хослуулсан төхөөрөмжүүд"</string> @@ -226,12 +226,12 @@ <string name="adb_pairing_device_dialog_pairing_code_label" msgid="3639239786669722731">"Wi‑Fi хослуулах код"</string> <string name="adb_pairing_device_dialog_failed_title" msgid="3426758947882091735">"Хослуулалт амжилтгүй боллоо"</string> <string name="adb_pairing_device_dialog_failed_msg" msgid="6611097519661997148">"Төхөөрөмжийг ижил сүлжээнд холбосон эсэхийг шалгана уу."</string> - <string name="adb_wireless_qrcode_summary" msgid="8051414549011801917">"Хурдан хариу үйлдлийн кодыг скан хийж Wi-Fi-р төхөөрөмжийг хослуулна уу"</string> + <string name="adb_wireless_qrcode_summary" msgid="8051414549011801917">"QR кодыг скан хийж Wi-Fi-р төхөөрөмжийг хослуулна уу"</string> <string name="adb_wireless_verifying_qrcode_text" msgid="6123192424916029207">"Төхөөрөмжийг хослуулж байна…"</string> - <string name="adb_qrcode_pairing_device_failed_msg" msgid="6936292092592914132">"Төхөөрөмжийг хослуулж чадсангүй. Хурдан хариу үйлдлийн код буруу эсвэл төхөөрөмжийг ижил сүлжээнд холбоогүй байна."</string> + <string name="adb_qrcode_pairing_device_failed_msg" msgid="6936292092592914132">"Төхөөрөмжийг хослуулж чадсангүй. QR код буруу эсвэл төхөөрөмжийг ижил сүлжээнд холбоогүй байна."</string> <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"IP хаяг ба порт"</string> - <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"Хурдан хариу үйлдлийн кодыг скан хийх"</string> - <string name="adb_wireless_qrcode_pairing_description" msgid="6014121407143607851">"Хурдан хариу үйлдлийн кодыг скан хийж Wi-Fi-р төхөөрөмжийг хослуулна уу"</string> + <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"QR кодыг скан хийх"</string> + <string name="adb_wireless_qrcode_pairing_description" msgid="6014121407143607851">"QR кодыг скан хийж Wi-Fi-р төхөөрөмжийг хослуулна уу"</string> <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"Wi-Fi сүлжээнд холбогдоно уу"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, дебаг хийх, dev"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"Алдаа мэдээлэх товчлол"</string> diff --git a/packages/SettingsLib/res/values-ne/arrays.xml b/packages/SettingsLib/res/values-ne/arrays.xml index 2895a02cbae4..fb002c2c2f03 100644 --- a/packages/SettingsLib/res/values-ne/arrays.xml +++ b/packages/SettingsLib/res/values-ne/arrays.xml @@ -238,7 +238,7 @@ </string-array> <string-array name="show_non_rect_clip_entries"> <item msgid="2482978351289846212">"बन्द"</item> - <item msgid="3405519300199774027">"गैर आयातकार क्षेत्र नीलो रङमा कोर्नुहोस्"</item> + <item msgid="3405519300199774027">"गैर आयातकार क्षेत्र निलो रङमा कोर्नुहोस्"</item> <item msgid="1212561935004167943">"हाइलाइट परीक्षण चित्र कोर्ने आदेशहरू हरियोमा"</item> </string-array> <string-array name="track_frame_time_entries"> diff --git a/packages/SettingsLib/res/values-ne/strings.xml b/packages/SettingsLib/res/values-ne/strings.xml index 4a2c1719aeb7..32ea5a9abfb0 100644 --- a/packages/SettingsLib/res/values-ne/strings.xml +++ b/packages/SettingsLib/res/values-ne/strings.xml @@ -143,9 +143,9 @@ <string name="data_usage_uninstalled_apps" msgid="1933665711856171491">"हटाइएका एपहरू"</string> <string name="data_usage_uninstalled_apps_users" msgid="5533981546921913295">"एपहरू र प्रयोगकर्ताहरू हटाइयो।"</string> <string name="data_usage_ota" msgid="7984667793701597001">"प्रणालीसम्बन्धी अद्यावधिकहरू"</string> - <string name="tether_settings_title_usb" msgid="3728686573430917722">"USB टेथर गर्दै"</string> + <string name="tether_settings_title_usb" msgid="3728686573430917722">"USB टेदर गर्दै"</string> <string name="tether_settings_title_wifi" msgid="4803402057533895526">"पोर्टेबल हटस्पट"</string> - <string name="tether_settings_title_bluetooth" msgid="916519902721399656">"ब्लुटुथ टेथर गर्दै"</string> + <string name="tether_settings_title_bluetooth" msgid="916519902721399656">"ब्लुटुथ टेदर गर्दै"</string> <string name="tether_settings_title_usb_bluetooth" msgid="1727111807207577322">"टेदर गर्दै"</string> <string name="tether_settings_title_all" msgid="8910259483383010470">"टेदर गर्ने र पोर्टेबल हटस्पट"</string> <string name="managed_user_title" msgid="449081789742645723">"कार्य प्रोफाइलका सबै एपहरू"</string> diff --git a/packages/SettingsLib/res/values-sw/strings.xml b/packages/SettingsLib/res/values-sw/strings.xml index 5c80627003cd..85275c1afbec 100644 --- a/packages/SettingsLib/res/values-sw/strings.xml +++ b/packages/SettingsLib/res/values-sw/strings.xml @@ -143,11 +143,11 @@ <string name="data_usage_uninstalled_apps" msgid="1933665711856171491">"Programu zilizoondolewa"</string> <string name="data_usage_uninstalled_apps_users" msgid="5533981546921913295">"Watumiaji na programu ziilizoondolewa"</string> <string name="data_usage_ota" msgid="7984667793701597001">"Masasisho ya mfumo"</string> - <string name="tether_settings_title_usb" msgid="3728686573430917722">"Shiriki intaneti kwa USB"</string> + <string name="tether_settings_title_usb" msgid="3728686573430917722">"Sambaza mtandao kwa USB"</string> <string name="tether_settings_title_wifi" msgid="4803402057533895526">"Intaneti ya kusambazwa"</string> - <string name="tether_settings_title_bluetooth" msgid="916519902721399656">"Shiriki intaneti kwa Bluetooth"</string> - <string name="tether_settings_title_usb_bluetooth" msgid="1727111807207577322">"Inazuia"</string> - <string name="tether_settings_title_all" msgid="8910259483383010470">"Kushiriki na kusambaza intaneti"</string> + <string name="tether_settings_title_bluetooth" msgid="916519902721399656">"Sambaza mtandao kwa Bluetooth"</string> + <string name="tether_settings_title_usb_bluetooth" msgid="1727111807207577322">"Kusambaza mtandao"</string> + <string name="tether_settings_title_all" msgid="8910259483383010470">"Kushiriki na kusambaza mtandao"</string> <string name="managed_user_title" msgid="449081789742645723">"Programu zote za kazini"</string> <string name="user_guest" msgid="6939192779649870792">"Mgeni"</string> <string name="unknown" msgid="3544487229740637809">"Haijulikani"</string> diff --git a/packages/SettingsLib/res/values-te/strings.xml b/packages/SettingsLib/res/values-te/strings.xml index a9ec2ea95ac5..20955baa4d68 100644 --- a/packages/SettingsLib/res/values-te/strings.xml +++ b/packages/SettingsLib/res/values-te/strings.xml @@ -511,7 +511,7 @@ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"ఫోన్ స్పీకర్"</string> <string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"కనెక్ట్ చేయడంలో సమస్య ఉంది. పరికరాన్ని ఆఫ్ చేసి, ఆపై తిరిగి ఆన్ చేయండి"</string> <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"వైర్ గల ఆడియో పరికరం"</string> - <string name="help_label" msgid="3528360748637781274">"సహాయం & అభిప్రాయం"</string> + <string name="help_label" msgid="3528360748637781274">"సహాయం & ఫీడ్బ్యాక్"</string> <string name="storage_category" msgid="2287342585424631813">"నిల్వ"</string> <string name="shared_data_title" msgid="1017034836800864953">"షేర్ చేసిన డేటా"</string> <string name="shared_data_summary" msgid="5516326713822885652">"షేర్ చేసిన డేటాను చూసి, సవరించండి"</string> diff --git a/packages/SettingsLib/res/values-th/strings.xml b/packages/SettingsLib/res/values-th/strings.xml index b8343c6a82e7..8510a919445b 100644 --- a/packages/SettingsLib/res/values-th/strings.xml +++ b/packages/SettingsLib/res/values-th/strings.xml @@ -143,7 +143,7 @@ <string name="data_usage_uninstalled_apps" msgid="1933665711856171491">"แอปพลิเคชันที่นำออก"</string> <string name="data_usage_uninstalled_apps_users" msgid="5533981546921913295">"แอปพลิเคชันและผู้ใช้ที่นำออก"</string> <string name="data_usage_ota" msgid="7984667793701597001">"การอัปเดตระบบ"</string> - <string name="tether_settings_title_usb" msgid="3728686573430917722">"ปล่อยสัญญาณผ่าน USB"</string> + <string name="tether_settings_title_usb" msgid="3728686573430917722">"เชื่อมต่อเน็ตผ่าน USB"</string> <string name="tether_settings_title_wifi" msgid="4803402057533895526">"ฮอตสปอตแบบพกพาได้"</string> <string name="tether_settings_title_bluetooth" msgid="916519902721399656">"ปล่อยสัญญาณบลูทูธ"</string> <string name="tether_settings_title_usb_bluetooth" msgid="1727111807207577322">"การปล่อยสัญญาณ"</string> diff --git a/packages/SettingsLib/res/values/arrays.xml b/packages/SettingsLib/res/values/arrays.xml index d59d698efba2..c63cf06cf75c 100644 --- a/packages/SettingsLib/res/values/arrays.xml +++ b/packages/SettingsLib/res/values/arrays.xml @@ -118,17 +118,17 @@ <!-- Titles for Bluetooth AVRCP Versions --> <string-array name="bluetooth_avrcp_versions"> - <item>AVRCP 1.4 (Default)</item> + <item>AVRCP 1.5 (Default)</item> <item>AVRCP 1.3</item> - <item>AVRCP 1.5</item> + <item>AVRCP 1.4</item> <item>AVRCP 1.6</item> </string-array> <!-- Values for Bluetooth AVRCP Versions --> <string-array name="bluetooth_avrcp_version_values"> - <item>avrcp14</item> - <item>avrcp13</item> <item>avrcp15</item> + <item>avrcp13</item> + <item>avrcp14</item> <item>avrcp16</item> </string-array> diff --git a/packages/SettingsLib/res/values/strings.xml b/packages/SettingsLib/res/values/strings.xml index 8e8368f9bc62..03161d051342 100644 --- a/packages/SettingsLib/res/values/strings.xml +++ b/packages/SettingsLib/res/values/strings.xml @@ -659,9 +659,6 @@ <!-- Setting Checkbox title for enabling Bluetooth Gabeldorsche. [CHAR LIMIT=40] --> <string name="bluetooth_enable_gabeldorsche">Enable Gabeldorsche</string> - <!-- Setting Checkbox title for enabling Enhanced Connectivity [CHAR LIMIT=80] --> - <string name="enhanced_connectivity">Enhanced Connectivity</string> - <!-- UI debug setting: Select Bluetooth AVRCP Version --> <string name="bluetooth_select_avrcp_version_string">Bluetooth AVRCP Version</string> <!-- UI debug setting: Select Bluetooth AVRCP Version --> diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/TileUtilsTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/TileUtilsTest.java index f334cd332ad9..906e06e81e2b 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/TileUtilsTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/TileUtilsTest.java @@ -17,11 +17,14 @@ package com.android.settingslib.drawer; import static com.android.settingslib.drawer.TileUtils.IA_SETTINGS_ACTION; +import static com.android.settingslib.drawer.TileUtils.META_DATA_KEY_PROFILE; import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_ICON; import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_ICON_URI; import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_KEYHINT; import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_SUMMARY; import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_SUMMARY_URI; +import static com.android.settingslib.drawer.TileUtils.PROFILE_ALL; +import static com.android.settingslib.drawer.TileUtils.PROFILE_PRIMARY; import static com.google.common.truth.Truth.assertThat; @@ -189,7 +192,7 @@ public class TileUtilsTest { List<Tile> outTiles = new ArrayList<>(); List<ResolveInfo> info = new ArrayList<>(); ResolveInfo resolveInfo = newInfo(true, null /* category */, null, URI_GET_ICON, - URI_GET_SUMMARY, "my title", 0); + URI_GET_SUMMARY, "my title", 0, PROFILE_ALL); info.add(resolveInfo); when(mPackageManager.queryIntentActivitiesAsUser(any(Intent.class), anyInt(), anyInt())) @@ -211,7 +214,7 @@ public class TileUtilsTest { List<Tile> outTiles = new ArrayList<>(); List<ResolveInfo> info = new ArrayList<>(); ResolveInfo resolveInfo = newInfo(true, null /* category */, null, URI_GET_ICON, - URI_GET_SUMMARY, null, 123); + URI_GET_SUMMARY, null, 123, PROFILE_ALL); info.add(resolveInfo); when(mPackageManager.queryIntentActivitiesAsUser(any(Intent.class), anyInt(), anyInt())) @@ -235,7 +238,7 @@ public class TileUtilsTest { List<Tile> outTiles = new ArrayList<>(); List<ResolveInfo> info = new ArrayList<>(); ResolveInfo resolveInfo = newInfo(true, null /* category */, null, URI_GET_ICON, - URI_GET_SUMMARY, null, 123); + URI_GET_SUMMARY, null, 123, PROFILE_ALL); resolveInfo.activityInfo.packageName = "com.android.settings"; resolveInfo.activityInfo.applicationInfo.packageName = "com.android.settings"; info.add(resolveInfo); @@ -258,7 +261,7 @@ public class TileUtilsTest { final List<Tile> outTiles = new ArrayList<>(); final List<ResolveInfo> info = new ArrayList<>(); final ResolveInfo resolveInfo = newInfo(true, null /* category */, null, URI_GET_ICON, - URI_GET_SUMMARY, null, 123); + URI_GET_SUMMARY, null, 123, PROFILE_ALL); resolveInfo.activityInfo.packageName = "com.android.settings"; resolveInfo.activityInfo.applicationInfo.packageName = "com.android.settings"; info.add(resolveInfo); @@ -290,7 +293,7 @@ public class TileUtilsTest { List<Tile> outTiles = new ArrayList<>(); List<ResolveInfo> info = new ArrayList<>(); ResolveInfo resolveInfo = newInfo(true, null /* category */, null, URI_GET_ICON, - URI_GET_SUMMARY, null, 123); + URI_GET_SUMMARY, null, 123, PROFILE_ALL); resolveInfo.activityInfo.metaData .putBoolean(TileUtils.META_DATA_PREFERENCE_ICON_TINTABLE, true); info.add(resolveInfo); @@ -327,6 +330,26 @@ public class TileUtilsTest { assertThat(outTiles).hasSize(2); } + @Test + public void loadTilesForAction_isPrimaryProfileOnly_shouldSkipNonPrimaryUserTiles() { + Map<Pair<String, String>, Tile> addedCache = new ArrayMap<>(); + List<Tile> outTiles = new ArrayList<>(); + List<ResolveInfo> info = new ArrayList<>(); + ResolveInfo resolveInfo = newInfo(true, null /* category */, null, URI_GET_ICON, + URI_GET_SUMMARY, null, 123, PROFILE_PRIMARY); + info.add(resolveInfo); + + when(mPackageManager.queryIntentActivitiesAsUser(any(Intent.class), anyInt(), anyInt())) + .thenReturn(info); + when(mPackageManager.queryIntentContentProvidersAsUser(any(Intent.class), anyInt(), + anyInt())).thenReturn(info); + + TileUtils.loadTilesForAction(mContext, new UserHandle(10), IA_SETTINGS_ACTION, + addedCache, null /* defaultCategory */, outTiles, false /* requiresSettings */); + + assertThat(outTiles).isEmpty(); + } + public static ResolveInfo newInfo(boolean systemApp, String category) { return newInfo(systemApp, category, null); } @@ -337,14 +360,14 @@ public class TileUtilsTest { private static ResolveInfo newInfo(boolean systemApp, String category, String keyHint, String iconUri, String summaryUri) { - return newInfo(systemApp, category, keyHint, iconUri, summaryUri, null, 0); + return newInfo(systemApp, category, keyHint, iconUri, summaryUri, null, 0, PROFILE_ALL); } private static ResolveInfo newInfo(boolean systemApp, String category, String keyHint, - String iconUri, String summaryUri, String title, int titleResId) { + String iconUri, String summaryUri, String title, int titleResId, String profile) { final Bundle metaData = newMetaData(category, keyHint, iconUri, summaryUri, title, - titleResId); + titleResId, profile); final ResolveInfo info = new ResolveInfo(); info.system = systemApp; @@ -358,6 +381,7 @@ public class TileUtilsTest { info.providerInfo.packageName = "abc"; info.providerInfo.name = "456"; info.providerInfo.authority = "auth"; + info.providerInfo.metaData = metaData; ShadowTileUtils.setMetaData(metaData); info.providerInfo.applicationInfo = new ApplicationInfo(); @@ -369,7 +393,7 @@ public class TileUtilsTest { } private static Bundle newMetaData(String category, String keyHint, String iconUri, - String summaryUri, String title, int titleResId) { + String summaryUri, String title, int titleResId, String profile) { final Bundle metaData = new Bundle(); metaData.putString("com.android.settings.category", category); metaData.putInt(META_DATA_PREFERENCE_ICON, 314159); @@ -388,6 +412,9 @@ public class TileUtilsTest { } else if (title != null) { metaData.putString(TileUtils.META_DATA_PREFERENCE_TITLE, title); } + if (profile != null) { + metaData.putString(META_DATA_KEY_PROFILE, profile); + } return metaData; } diff --git a/packages/SettingsProvider/res/values-fa/strings.xml b/packages/SettingsProvider/res/values-fa/strings.xml index cc0b55728310..946e2c07c576 100644 --- a/packages/SettingsProvider/res/values-fa/strings.xml +++ b/packages/SettingsProvider/res/values-fa/strings.xml @@ -19,7 +19,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="app_label" msgid="4567566098528588863">"تنظیم محل ذخیره"</string> + <string name="app_label" msgid="4567566098528588863">"تنظیم محل فضای ذخیرهسازی"</string> <string name="wifi_softap_config_change" msgid="5688373762357941645">"تنظیمات نقطه اتصال تغییر کرده است"</string> <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"برای مشاهده جزئیات ضربه بزنید"</string> </resources> diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java index 1d25b1aafd70..7c198c88d5b6 100644 --- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java +++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java @@ -761,8 +761,8 @@ class SettingsProtoDumpUtil { Settings.Global.GLOBAL_SETTINGS_ANGLE_GL_DRIVER_SELECTION_VALUES, GlobalSettingsProto.Gpu.ANGLE_GL_DRIVER_SELECTION_VALUES); dumpSetting(s, p, - Settings.Global.GLOBAL_SETTINGS_ANGLE_WHITELIST, - GlobalSettingsProto.Gpu.ANGLE_WHITELIST); + Settings.Global.GLOBAL_SETTINGS_ANGLE_ALLOWLIST, + GlobalSettingsProto.Gpu.ANGLE_ALLOWLIST); dumpSetting(s, p, Settings.Global.GLOBAL_SETTINGS_SHOW_ANGLE_IN_USE_DIALOG_BOX, GlobalSettingsProto.Gpu.SHOW_ANGLE_IN_USE_DIALOG); @@ -785,14 +785,14 @@ class SettingsProtoDumpUtil { Settings.Global.GAME_DRIVER_OPT_OUT_APPS, GlobalSettingsProto.Gpu.GAME_DRIVER_OPT_OUT_APPS); dumpSetting(s, p, - Settings.Global.GAME_DRIVER_BLACKLIST, - GlobalSettingsProto.Gpu.GAME_DRIVER_BLACKLIST); + Settings.Global.GAME_DRIVER_DENYLIST, + GlobalSettingsProto.Gpu.GAME_DRIVER_DENYLIST); dumpSetting(s, p, - Settings.Global.GAME_DRIVER_WHITELIST, - GlobalSettingsProto.Gpu.GAME_DRIVER_WHITELIST); + Settings.Global.GAME_DRIVER_ALLOWLIST, + GlobalSettingsProto.Gpu.GAME_DRIVER_ALLOWLIST); dumpSetting(s, p, - Settings.Global.GAME_DRIVER_BLACKLISTS, - GlobalSettingsProto.Gpu.GAME_DRIVER_BLACKLISTS); + Settings.Global.GAME_DRIVER_DENYLISTS, + GlobalSettingsProto.Gpu.GAME_DRIVER_DENYLISTS); dumpSetting(s, p, Settings.Global.GAME_DRIVER_SPHAL_LIBRARIES, GlobalSettingsProto.Gpu.GAME_DRIVER_SPHAL_LIBRARIES); diff --git a/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java b/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java index b90b9c1208ae..bc1c3f908097 100644 --- a/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java +++ b/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java @@ -270,7 +270,6 @@ public class SettingsBackupTest { Settings.Global.SMART_REPLIES_IN_NOTIFICATIONS_FLAGS, Settings.Global.SMART_SUGGESTIONS_IN_NOTIFICATIONS_FLAGS, Settings.Global.ENABLE_ADB_INCREMENTAL_INSTALL_DEFAULT, - Settings.Global.ENHANCED_CONNECTIVITY_ENABLED, Settings.Global.ENHANCED_4G_MODE_ENABLED, Settings.Global.EPHEMERAL_COOKIE_MAX_SIZE_BYTES, Settings.Global.ERROR_LOGCAT_PREFIX, @@ -503,14 +502,14 @@ public class SettingsBackupTest { Settings.Global.GLOBAL_SETTINGS_ANGLE_GL_DRIVER_ALL_ANGLE, Settings.Global.GLOBAL_SETTINGS_ANGLE_GL_DRIVER_SELECTION_PKGS, Settings.Global.GLOBAL_SETTINGS_ANGLE_GL_DRIVER_SELECTION_VALUES, - Settings.Global.GLOBAL_SETTINGS_ANGLE_WHITELIST, + Settings.Global.GLOBAL_SETTINGS_ANGLE_ALLOWLIST, Settings.Global.GAME_DRIVER_ALL_APPS, Settings.Global.GAME_DRIVER_OPT_IN_APPS, Settings.Global.GAME_DRIVER_PRERELEASE_OPT_IN_APPS, Settings.Global.GAME_DRIVER_OPT_OUT_APPS, - Settings.Global.GAME_DRIVER_BLACKLISTS, - Settings.Global.GAME_DRIVER_BLACKLIST, - Settings.Global.GAME_DRIVER_WHITELIST, + Settings.Global.GAME_DRIVER_DENYLISTS, + Settings.Global.GAME_DRIVER_DENYLIST, + Settings.Global.GAME_DRIVER_ALLOWLIST, Settings.Global.GAME_DRIVER_SPHAL_LIBRARIES, Settings.Global.GLOBAL_SETTINGS_SHOW_ANGLE_IN_USE_DIALOG_BOX, Settings.Global.GPU_DEBUG_LAYER_APP, diff --git a/packages/Shell/res/values-it/strings.xml b/packages/Shell/res/values-it/strings.xml index 18ab908945ac..02531f2fb6e7 100644 --- a/packages/Shell/res/values-it/strings.xml +++ b/packages/Shell/res/values-it/strings.xml @@ -21,7 +21,7 @@ <string name="bugreport_in_progress_title" msgid="4311705936714972757">"Generazione segnalazione di bug <xliff:g id="ID">#%d</xliff:g> in corso"</string> <string name="bugreport_finished_title" msgid="4429132808670114081">"Segnalazione di bug <xliff:g id="ID">#%d</xliff:g> acquisita"</string> <string name="bugreport_updating_title" msgid="4423539949559634214">"Aggiunta di dettagli alla segnalazione di bug"</string> - <string name="bugreport_updating_wait" msgid="3322151947853929470">"Attendi..."</string> + <string name="bugreport_updating_wait" msgid="3322151947853929470">"Attendi…"</string> <string name="bugreport_finished_text" product="watch" msgid="1223616207145252689">"La segnalazione di bug comparirà a breve sul telefono"</string> <string name="bugreport_finished_text" product="tv" msgid="5758325479058638893">"Seleziona per condividere la segnalazione di bug"</string> <string name="bugreport_finished_text" product="default" msgid="8353769438382138847">"Tocca per condividere la segnalazione di bug"</string> diff --git a/packages/Shell/res/values-ky/strings.xml b/packages/Shell/res/values-ky/strings.xml index 969e9ed0654e..3567ac276e63 100644 --- a/packages/Shell/res/values-ky/strings.xml +++ b/packages/Shell/res/values-ky/strings.xml @@ -29,7 +29,7 @@ <string name="bugreport_finished_pending_screenshot_text" product="watch" msgid="1474435374470177193">"Мүчүлүштүк тууралуу билдирүүңүздү скриншотсуз бөлүшүү үчүн таптап коюңуз же скриншот даяр болгуча күтө туруңуз"</string> <string name="bugreport_finished_pending_screenshot_text" product="default" msgid="1474435374470177193">"Мүчүлүштүк тууралуу билдирүүңүздү скриншотсуз бөлүшүү үчүн таптап коюңуз же скриншот даяр болгуча күтө туруңуз"</string> <string name="bugreport_confirm" msgid="5917407234515812495">"Мүчүлүштүктөр тууралуу билдирүүлөрдө тутумдун ар кандай таржымалдарынан алынган дайындар, ошондой эле купуя маалымат камтылышы мүмкүн (мисалы, жайгашкан жер сыяктуу). Мындай билдирүүлөрдү бир гана ишеничтүү адамдар жана колдонмолор менен бөлүшүңүз."</string> - <string name="bugreport_confirm_dont_repeat" msgid="6179945398364357318">"Экинчи көрсөтүлбөсүн"</string> + <string name="bugreport_confirm_dont_repeat" msgid="6179945398364357318">"Экинчи көрүнбөсүн"</string> <string name="bugreport_storage_title" msgid="5332488144740527109">"Мүчүлүштүктөрдү кабарлоо"</string> <string name="bugreport_unreadable_text" msgid="586517851044535486">"Мүчүлүштүк тууралуу кабарлаган файл окулбай койду"</string> <string name="bugreport_add_details_to_zip_failed" msgid="1302931926486712371">"Мүчүлүштүктөр жөнүндө кабардын чоо-жайы zip файлына кошулбай койду"</string> diff --git a/packages/SimAppDialog/res/values-ky/strings.xml b/packages/SimAppDialog/res/values-ky/strings.xml index 32db4210822a..54cbb5bfe824 100644 --- a/packages/SimAppDialog/res/values-ky/strings.xml +++ b/packages/SimAppDialog/res/values-ky/strings.xml @@ -19,7 +19,7 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_name" msgid="8898068901680117589">"SIM-картанын колдонмосунун диалогу"</string> <string name="install_carrier_app_title" msgid="334729104862562585">"Мобилдик кызматты жандыруу"</string> - <string name="install_carrier_app_description" msgid="4014303558674923797">"Жаңы SIM-картаңыз талаптагыдай иштеши үчүн, <xliff:g id="ID_1">%1$s</xliff:g> колдонмосун орнотуп алышыңыз керек"</string> + <string name="install_carrier_app_description" msgid="4014303558674923797">"Жаңы SIM картаңыз талаптагыдай иштеши үчүн, <xliff:g id="ID_1">%1$s</xliff:g> колдонмосун орнотуп алышыңыз керек"</string> <string name="install_carrier_app_description_default" msgid="7356830245205847840">"Жаңы SIM картаңыз талаптагыдай иштеши үчүн, байланыш операторунун колдонмосун орнотуп алышыңыз керек"</string> <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"Азыр эмес"</string> <string name="install_carrier_app_download_action" msgid="7859229305958538064">"Колдонмону жүктөп алуу"</string> diff --git a/packages/SoundPicker/src/com/android/soundpicker/RingtonePickerActivity.java b/packages/SoundPicker/src/com/android/soundpicker/RingtonePickerActivity.java index 285730884a14..504e18a1488e 100644 --- a/packages/SoundPicker/src/com/android/soundpicker/RingtonePickerActivity.java +++ b/packages/SoundPicker/src/com/android/soundpicker/RingtonePickerActivity.java @@ -333,6 +333,9 @@ public final class RingtonePickerActivity extends AlertActivity implements @Override public void onDestroy() { + if (mHandler != null) { + mHandler.removeCallbacksAndMessages(null); + } if (mCursor != null) { mCursor.close(); mCursor = null; diff --git a/packages/SystemUI/res-keyguard/values-ar/strings.xml b/packages/SystemUI/res-keyguard/values-ar/strings.xml index 6d86a78360d8..65e3f0dbd176 100644 --- a/packages/SystemUI/res-keyguard/values-ar/strings.xml +++ b/packages/SystemUI/res-keyguard/values-ar/strings.xml @@ -112,7 +112,7 @@ <string name="kg_pin_accepted" msgid="1625501841604389716">"تم قبول الرمز"</string> <string name="keyguard_carrier_default" msgid="6359808469637388586">"لا تتوفر خدمة."</string> <string name="accessibility_ime_switch_button" msgid="9082358310194861329">"تبديل أسلوب الإدخال"</string> - <string name="airplane_mode" msgid="2528005343938497866">"وضع الطائرة"</string> + <string name="airplane_mode" msgid="2528005343938497866">"وضع الطيران"</string> <string name="kg_prompt_reason_restart_pattern" msgid="4720554342633852066">"يجب رسم النقش بعد إعادة تشغيل الجهاز"</string> <string name="kg_prompt_reason_restart_pin" msgid="1587671566498057656">"يجب إدخال رقم التعريف الشخصي بعد إعادة تشغيل الجهاز"</string> <string name="kg_prompt_reason_restart_password" msgid="8061279087240952002">"يجب إدخال كلمة المرور بعد إعادة تشغيل الجهاز"</string> diff --git a/packages/SystemUI/res-keyguard/values-az/strings.xml b/packages/SystemUI/res-keyguard/values-az/strings.xml index d63c23f4d1f6..ea07c3db4354 100644 --- a/packages/SystemUI/res-keyguard/values-az/strings.xml +++ b/packages/SystemUI/res-keyguard/values-az/strings.xml @@ -33,7 +33,7 @@ <string name="keyguard_enter_your_password" msgid="7225626204122735501">"Şifrənizi daxil edin"</string> <string name="keyguard_password_wrong_pin_code" msgid="3514267777289393046">"Yanlış PIN kod."</string> <string name="keyguard_sim_error_message_short" msgid="633630844240494070">"Yanlış Kart."</string> - <string name="keyguard_charged" msgid="5478247181205188995">"Enerji yığdı"</string> + <string name="keyguard_charged" msgid="5478247181205188995">"Enerji yığılıb"</string> <string name="keyguard_plugged_in_wireless" msgid="2537874724955057383">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Simsiz şəkildə batareya yığır"</string> <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Enerji yığır"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Sürətlə enerji yığır"</string> diff --git a/packages/SystemUI/res-keyguard/values-es/strings.xml b/packages/SystemUI/res-keyguard/values-es/strings.xml index ce323c7f65a7..0754681215cc 100644 --- a/packages/SystemUI/res-keyguard/values-es/strings.xml +++ b/packages/SystemUI/res-keyguard/values-es/strings.xml @@ -33,7 +33,7 @@ <string name="keyguard_enter_your_password" msgid="7225626204122735501">"Introduce tu contraseña"</string> <string name="keyguard_password_wrong_pin_code" msgid="3514267777289393046">"El código PIN es incorrecto."</string> <string name="keyguard_sim_error_message_short" msgid="633630844240494070">"Tarjeta no válida."</string> - <string name="keyguard_charged" msgid="5478247181205188995">"Cargada"</string> + <string name="keyguard_charged" msgid="5478247181205188995">"Cargado"</string> <string name="keyguard_plugged_in_wireless" msgid="2537874724955057383">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Cargando sin cables"</string> <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Cargando"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Cargando rápidamente"</string> diff --git a/packages/SystemUI/res-keyguard/values-gl/strings.xml b/packages/SystemUI/res-keyguard/values-gl/strings.xml index 420649eeca60..46079810aee4 100644 --- a/packages/SystemUI/res-keyguard/values-gl/strings.xml +++ b/packages/SystemUI/res-keyguard/values-gl/strings.xml @@ -33,7 +33,7 @@ <string name="keyguard_enter_your_password" msgid="7225626204122735501">"Introduce o contrasinal"</string> <string name="keyguard_password_wrong_pin_code" msgid="3514267777289393046">"Código PIN incorrecto"</string> <string name="keyguard_sim_error_message_short" msgid="633630844240494070">"A tarxeta non é válida."</string> - <string name="keyguard_charged" msgid="5478247181205188995">"Cargada"</string> + <string name="keyguard_charged" msgid="5478247181205188995">"Cargado"</string> <string name="keyguard_plugged_in_wireless" msgid="2537874724955057383">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Cargando sen fíos"</string> <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Cargando"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Cargando rapidamente"</string> diff --git a/packages/SystemUI/res-keyguard/values-in/strings.xml b/packages/SystemUI/res-keyguard/values-in/strings.xml index 875d8d51c50b..85b2a4726fa2 100644 --- a/packages/SystemUI/res-keyguard/values-in/strings.xml +++ b/packages/SystemUI/res-keyguard/values-in/strings.xml @@ -33,7 +33,7 @@ <string name="keyguard_enter_your_password" msgid="7225626204122735501">"Masukkan sandi"</string> <string name="keyguard_password_wrong_pin_code" msgid="3514267777289393046">"Kode PIN salah."</string> <string name="keyguard_sim_error_message_short" msgid="633630844240494070">"Kartu Tidak Valid"</string> - <string name="keyguard_charged" msgid="5478247181205188995">"Terisi"</string> + <string name="keyguard_charged" msgid="5478247181205188995">"Terisi penuh"</string> <string name="keyguard_plugged_in_wireless" msgid="2537874724955057383">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Mengisi daya secara nirkabel"</string> <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Mengisi daya"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Mengisi daya dengan cepat"</string> diff --git a/packages/SystemUI/res-keyguard/values-it/strings.xml b/packages/SystemUI/res-keyguard/values-it/strings.xml index 16767d1771fe..e1c9ee8b7d34 100644 --- a/packages/SystemUI/res-keyguard/values-it/strings.xml +++ b/packages/SystemUI/res-keyguard/values-it/strings.xml @@ -48,7 +48,7 @@ <string name="keyguard_permanent_disabled_sim_instructions" msgid="2490584154727897806">"La scheda SIM è stata disattivata definitivamente.\n Contatta il fornitore del tuo servizio wireless per ricevere un\'altra scheda SIM."</string> <string name="keyguard_sim_locked_message" msgid="4343544458476911044">"La SIM è bloccata."</string> <string name="keyguard_sim_puk_locked_message" msgid="6253830777745450550">"La SIM è bloccata tramite PUK."</string> - <string name="keyguard_sim_unlock_progress_dialog_message" msgid="2394023844117630429">"Sblocco SIM..."</string> + <string name="keyguard_sim_unlock_progress_dialog_message" msgid="2394023844117630429">"Sblocco SIM…"</string> <string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"Area PIN"</string> <string name="keyguard_accessibility_password" msgid="3524161948484801450">"Password del dispositivo"</string> <string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"Area PIN SIM"</string> @@ -77,7 +77,7 @@ <string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"La SIM \"<xliff:g id="CARRIER">%1$s</xliff:g>\" non è attiva al momento. Inserisci il codice PUK per continuare. Contatta l\'operatore per avere informazioni dettagliate."</string> <string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"Inserisci il codice PIN desiderato"</string> <string name="kg_enter_confirm_pin_hint" msgid="4261064020391799132">"Conferma il codice PIN desiderato"</string> - <string name="kg_sim_unlock_progress_dialog_message" msgid="4251352015304070326">"Sblocco SIM..."</string> + <string name="kg_sim_unlock_progress_dialog_message" msgid="4251352015304070326">"Sblocco SIM…"</string> <string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"Il PIN deve essere di 4-8 numeri."</string> <string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"Il codice PUK dovrebbe avere almeno otto numeri."</string> <string name="kg_invalid_puk" msgid="1774337070084931186">"Inserisci di nuovo il codice PUK corretto. Ripetuti tentativi comportano la disattivazione definitiva della scheda SIM."</string> diff --git a/packages/SystemUI/res-keyguard/values-kk/strings.xml b/packages/SystemUI/res-keyguard/values-kk/strings.xml index 96972a7577cf..62afd1e45df8 100644 --- a/packages/SystemUI/res-keyguard/values-kk/strings.xml +++ b/packages/SystemUI/res-keyguard/values-kk/strings.xml @@ -70,7 +70,7 @@ <string name="kg_pattern_instructions" msgid="5376036737065051736">"Өрнекті енгізіңіз"</string> <string name="kg_sim_pin_instructions" msgid="1942424305184242951">"SIM PIN кодын енгізіңіз."</string> <string name="kg_sim_pin_instructions_multi" msgid="3639863309953109649">"\"<xliff:g id="CARRIER">%1$s</xliff:g>\" үшін SIM PIN кодын енгізіңіз."</string> - <string name="kg_sim_lock_esim_instructions" msgid="5577169988158738030">"<xliff:g id="PREVIOUS_MSG">%1$s</xliff:g> Құрылығыны мобильдік байланыс қызметінсіз пайдалану үшін eSIM картасын өшіріңіз."</string> + <string name="kg_sim_lock_esim_instructions" msgid="5577169988158738030">"<xliff:g id="PREVIOUS_MSG">%1$s</xliff:g> Құрылғыны мобильдік байланыс қызметінсіз пайдалану үшін eSIM картасын өшіріңіз."</string> <string name="kg_pin_instructions" msgid="822353548385014361">"PIN кодын енгізіңіз"</string> <string name="kg_password_instructions" msgid="324455062831719903">"Кілтсөзді енгізіңіз"</string> <string name="kg_puk_enter_puk_hint" msgid="3005288372875367017">"SIM картасы өшірілді. Жалғастыру үшін PUK кодын енгізіңіз. Толығырақ ақпаратты оператордан алыңыз."</string> diff --git a/packages/SystemUI/res-keyguard/values-km/strings.xml b/packages/SystemUI/res-keyguard/values-km/strings.xml index 24b5c23a6732..52b7fab768c5 100644 --- a/packages/SystemUI/res-keyguard/values-km/strings.xml +++ b/packages/SystemUI/res-keyguard/values-km/strings.xml @@ -100,7 +100,7 @@ <string name="kg_pin_accepted" msgid="1625501841604389716">"កូដត្រូវបានទទួលយក!"</string> <string name="keyguard_carrier_default" msgid="6359808469637388586">"គ្មានសេវាទេ។"</string> <string name="accessibility_ime_switch_button" msgid="9082358310194861329">"ប្ដូរវិធីបញ្ចូល"</string> - <string name="airplane_mode" msgid="2528005343938497866">"មុខងារពេលជិះយន្តហោះ"</string> + <string name="airplane_mode" msgid="2528005343938497866">"ពេលជិះយន្តហោះ"</string> <string name="kg_prompt_reason_restart_pattern" msgid="4720554342633852066">"តម្រូវឲ្យប្រើលំនាំ បន្ទាប់ពីឧបករណ៍ចាប់ផ្តើមឡើងវិញ"</string> <string name="kg_prompt_reason_restart_pin" msgid="1587671566498057656">"តម្រូវឲ្យបញ្ចូលកូដ PIN បន្ទាប់ពីឧបករណ៍ចាប់ផ្តើមឡើងវិញ"</string> <string name="kg_prompt_reason_restart_password" msgid="8061279087240952002">"តម្រូវឲ្យបញ្ចូលពាក្យសម្ងាត់ បន្ទាប់ពីឧបករណ៍ចាប់ផ្តើមឡើងវិញ"</string> diff --git a/packages/SystemUI/res-keyguard/values-ko/strings.xml b/packages/SystemUI/res-keyguard/values-ko/strings.xml index 6ae5935fea1a..848490ebb9b8 100644 --- a/packages/SystemUI/res-keyguard/values-ko/strings.xml +++ b/packages/SystemUI/res-keyguard/values-ko/strings.xml @@ -62,7 +62,7 @@ <string name="kg_forgot_pattern_button_text" msgid="3304688032024541260">"패턴을 잊음"</string> <string name="kg_wrong_pattern" msgid="5907301342430102842">"잘못된 패턴"</string> <string name="kg_wrong_password" msgid="4143127991071670512">"잘못된 비밀번호"</string> - <string name="kg_wrong_pin" msgid="4160978845968732624">"잘못된 PIN"</string> + <string name="kg_wrong_pin" msgid="4160978845968732624">"PIN 오류"</string> <plurals name="kg_too_many_failed_attempts_countdown" formatted="false" msgid="991400408675793914"> <item quantity="other"><xliff:g id="NUMBER">%d</xliff:g>초 후에 다시 시도하세요.</item> <item quantity="one">1초 후에 다시 시도하세요.</item> diff --git a/packages/SystemUI/res-keyguard/values-ky/strings.xml b/packages/SystemUI/res-keyguard/values-ky/strings.xml index 9675cc9d39b2..d868788a3eca 100644 --- a/packages/SystemUI/res-keyguard/values-ky/strings.xml +++ b/packages/SystemUI/res-keyguard/values-ky/strings.xml @@ -45,7 +45,7 @@ <string name="keyguard_missing_sim_instructions" msgid="1162120926141335918">"SIM-карта салыңыз."</string> <string name="keyguard_missing_sim_instructions_long" msgid="2712623293749378570">"SIM-карта жок же ал окулбай калган. SIM-карта салыңыз."</string> <string name="keyguard_permanent_disabled_sim_message_short" msgid="5842745213110966962">"Жараксыз SIM-карта."</string> - <string name="keyguard_permanent_disabled_sim_instructions" msgid="2490584154727897806">"SIM-картаңыз биротоло өчүрүлдү.\n Башка SIM-карта алыш үчүн зымсыз кызмат көрсөтүүчүгө кайрылыңыз."</string> + <string name="keyguard_permanent_disabled_sim_instructions" msgid="2490584154727897806">"SIM картаңыз биротоло өчүрүлдү.\n Башка SIM-карта алыш үчүн зымсыз кызмат көрсөтүүчүгө кайрылыңыз."</string> <string name="keyguard_sim_locked_message" msgid="4343544458476911044">"SIM-карта кулпуланган."</string> <string name="keyguard_sim_puk_locked_message" msgid="6253830777745450550">"SIM-карта PUK-код менен кулпуланган."</string> <string name="keyguard_sim_unlock_progress_dialog_message" msgid="2394023844117630429">"SIM-карта бөгөттөн чыгарылууда…"</string> @@ -80,7 +80,7 @@ <string name="kg_sim_unlock_progress_dialog_message" msgid="4251352015304070326">"SIM-карта бөгөттөн чыгарылууда…"</string> <string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"4–8 сандан турган PIN-кодду териңиз."</string> <string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"PUK-код 8 же андан көп сандан турушу керек."</string> - <string name="kg_invalid_puk" msgid="1774337070084931186">"PUK-кодду кайрадан туура киргизиңиз. Кайталанган аракеттер SIM-картаны биротоло жараксыз кылат."</string> + <string name="kg_invalid_puk" msgid="1774337070084931186">"PUK-кодду кайрадан туура киргизиңиз. Кайталанган аракеттер SIM картаны биротоло жараксыз кылат."</string> <string name="kg_login_too_many_attempts" msgid="4519957179182578690">"Өтө көп графикалык ачкычты тартуу аракети болду"</string> <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"PIN-кодуңузду <xliff:g id="NUMBER_0">%1$d</xliff:g> жолу туура эмес тердиңиз. \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> секунддан кийин дагы аракет кылып көрүңүз."</string> <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="190984061975729494">"Сырсөзүңүздү <xliff:g id="NUMBER_0">%1$d</xliff:g> жолу туура эмес тердиңиз. \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> секунддан кийин дагы аракет кылып көрүңүз."</string> @@ -98,7 +98,7 @@ <string name="kg_password_pin_failed" msgid="5136259126330604009">"SIM-картанын PIN-кодун ачуу кыйрады!"</string> <string name="kg_password_puk_failed" msgid="6778867411556937118">"SIM-картанын PUK-кодун ачуу кыйрады!"</string> <string name="kg_pin_accepted" msgid="1625501841604389716">"Код кабыл алынды!"</string> - <string name="keyguard_carrier_default" msgid="6359808469637388586">"Байланыш жок."</string> + <string name="keyguard_carrier_default" msgid="6359808469637388586">"Интернет жок."</string> <string name="accessibility_ime_switch_button" msgid="9082358310194861329">"Киргизүү ыкмасын өзгөртүү"</string> <string name="airplane_mode" msgid="2528005343938497866">"Учак режими"</string> <string name="kg_prompt_reason_restart_pattern" msgid="4720554342633852066">"Түзмөк кайра күйгүзүлгөндөн кийин графикалык ачкычты тартуу талап кылынат"</string> diff --git a/packages/SystemUI/res-keyguard/values-ne/strings.xml b/packages/SystemUI/res-keyguard/values-ne/strings.xml index 0cec32e9a90c..ce05e38dca10 100644 --- a/packages/SystemUI/res-keyguard/values-ne/strings.xml +++ b/packages/SystemUI/res-keyguard/values-ne/strings.xml @@ -60,7 +60,7 @@ <string name="error_disable_esim_msg" msgid="2441188596467999327">"कुनै त्रुटिका कारण यो eSIM लाई असक्षम पार्न सकिएन।"</string> <string name="keyboardview_keycode_enter" msgid="6727192265631761174">"प्रविष्टि गर्नुहोस्"</string> <string name="kg_forgot_pattern_button_text" msgid="3304688032024541260">"ढाँचा बिर्सनुभयो"</string> - <string name="kg_wrong_pattern" msgid="5907301342430102842">"गलत ढाँचा"</string> + <string name="kg_wrong_pattern" msgid="5907301342430102842">"प्याटर्न मिलेन"</string> <string name="kg_wrong_password" msgid="4143127991071670512">"गलत पासवर्ड"</string> <string name="kg_wrong_pin" msgid="4160978845968732624">"गलत PIN"</string> <plurals name="kg_too_many_failed_attempts_countdown" formatted="false" msgid="991400408675793914"> diff --git a/packages/SystemUI/res-keyguard/values-pl/strings.xml b/packages/SystemUI/res-keyguard/values-pl/strings.xml index 9b6f857456d6..5094cf9983a1 100644 --- a/packages/SystemUI/res-keyguard/values-pl/strings.xml +++ b/packages/SystemUI/res-keyguard/values-pl/strings.xml @@ -54,7 +54,7 @@ <string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"Miejsce na kod PIN karty SIM"</string> <string name="keyguard_accessibility_sim_puk_area" msgid="5537294043180237374">"Miejsce na kod PUK karty SIM"</string> <string name="keyguard_accessibility_next_alarm" msgid="4492876946798984630">"Następny alarm ustawiony na: <xliff:g id="ALARM">%1$s</xliff:g>"</string> - <string name="keyboardview_keycode_delete" msgid="8489719929424895174">"Usuwanie"</string> + <string name="keyboardview_keycode_delete" msgid="8489719929424895174">"Usuń"</string> <string name="disable_carrier_button_text" msgid="7153361131709275746">"Wyłącz eSIM"</string> <string name="error_disable_esim_title" msgid="3802652622784813119">"Nie można wyłączyć karty eSIM"</string> <string name="error_disable_esim_msg" msgid="2441188596467999327">"Nie można wyłączyć karty eSIM z powodu błędu."</string> diff --git a/packages/SystemUI/res-keyguard/values-pt-rBR/strings.xml b/packages/SystemUI/res-keyguard/values-pt-rBR/strings.xml index cc0c044c445a..5bfc3dbc900d 100644 --- a/packages/SystemUI/res-keyguard/values-pt-rBR/strings.xml +++ b/packages/SystemUI/res-keyguard/values-pt-rBR/strings.xml @@ -33,7 +33,7 @@ <string name="keyguard_enter_your_password" msgid="7225626204122735501">"Digite sua senha"</string> <string name="keyguard_password_wrong_pin_code" msgid="3514267777289393046">"Código PIN incorreto."</string> <string name="keyguard_sim_error_message_short" msgid="633630844240494070">"Cartão inválido."</string> - <string name="keyguard_charged" msgid="5478247181205188995">"Carregada"</string> + <string name="keyguard_charged" msgid="5478247181205188995">"Carregado"</string> <string name="keyguard_plugged_in_wireless" msgid="2537874724955057383">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Carregando sem fio"</string> <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Carregando"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Carregando rapidamente"</string> diff --git a/packages/SystemUI/res-keyguard/values-pt/strings.xml b/packages/SystemUI/res-keyguard/values-pt/strings.xml index cc0c044c445a..5bfc3dbc900d 100644 --- a/packages/SystemUI/res-keyguard/values-pt/strings.xml +++ b/packages/SystemUI/res-keyguard/values-pt/strings.xml @@ -33,7 +33,7 @@ <string name="keyguard_enter_your_password" msgid="7225626204122735501">"Digite sua senha"</string> <string name="keyguard_password_wrong_pin_code" msgid="3514267777289393046">"Código PIN incorreto."</string> <string name="keyguard_sim_error_message_short" msgid="633630844240494070">"Cartão inválido."</string> - <string name="keyguard_charged" msgid="5478247181205188995">"Carregada"</string> + <string name="keyguard_charged" msgid="5478247181205188995">"Carregado"</string> <string name="keyguard_plugged_in_wireless" msgid="2537874724955057383">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Carregando sem fio"</string> <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Carregando"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Carregando rapidamente"</string> diff --git a/packages/SystemUI/res-keyguard/values-sl/strings.xml b/packages/SystemUI/res-keyguard/values-sl/strings.xml index a141ed7ffaa6..967255cb50e7 100644 --- a/packages/SystemUI/res-keyguard/values-sl/strings.xml +++ b/packages/SystemUI/res-keyguard/values-sl/strings.xml @@ -33,7 +33,7 @@ <string name="keyguard_enter_your_password" msgid="7225626204122735501">"Vnesite geslo"</string> <string name="keyguard_password_wrong_pin_code" msgid="3514267777289393046">"Napačna koda PIN."</string> <string name="keyguard_sim_error_message_short" msgid="633630844240494070">"Neveljavna kartica"</string> - <string name="keyguard_charged" msgid="5478247181205188995">"Akumulator napolnjen"</string> + <string name="keyguard_charged" msgid="5478247181205188995">"Baterija napolnjena"</string> <string name="keyguard_plugged_in_wireless" msgid="2537874724955057383">"<xliff:g id="PERCENTAGE">%s</xliff:g> • brezžično polnjenje"</string> <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • polnjenje"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • hitro polnjenje"</string> diff --git a/packages/SystemUI/res-keyguard/values-sq/strings.xml b/packages/SystemUI/res-keyguard/values-sq/strings.xml index 1d34e3f8e099..382a4dcafed7 100644 --- a/packages/SystemUI/res-keyguard/values-sq/strings.xml +++ b/packages/SystemUI/res-keyguard/values-sq/strings.xml @@ -33,7 +33,7 @@ <string name="keyguard_enter_your_password" msgid="7225626204122735501">"Fut fjalëkalimin"</string> <string name="keyguard_password_wrong_pin_code" msgid="3514267777289393046">"Kodi PIN është i pasaktë."</string> <string name="keyguard_sim_error_message_short" msgid="633630844240494070">"Karta e pavlefshme."</string> - <string name="keyguard_charged" msgid="5478247181205188995">"I ngarkuar"</string> + <string name="keyguard_charged" msgid="5478247181205188995">"I karikuar"</string> <string name="keyguard_plugged_in_wireless" msgid="2537874724955057383">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Po karikohet me valë"</string> <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Po karikohet"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Po karikohet me shpejtësi"</string> diff --git a/packages/SystemUI/res-keyguard/values-te/strings.xml b/packages/SystemUI/res-keyguard/values-te/strings.xml index 74386bc7a487..d44003bc5b95 100644 --- a/packages/SystemUI/res-keyguard/values-te/strings.xml +++ b/packages/SystemUI/res-keyguard/values-te/strings.xml @@ -134,7 +134,7 @@ <item quantity="other">SIM ఇప్పుడు నిలిపివేయబడింది. PUK కోడ్ను నమోదు చేయండి. SIM శాశ్వతంగా నిరుపయోగం కాకుండా ఉండటానికి మీకు <xliff:g id="_NUMBER_1">%d</xliff:g> ప్రయత్నాలు మిగిలి ఉన్నాయి. వివరాల కోసం కారియర్ను సంప్రదించండి.</item> <item quantity="one">SIM ఇప్పుడు నిలిపివేయబడింది. PUK కోడ్ను నమోదు చేయండి. SIM శాశ్వతంగా నిరుపయోగం కాకుండా ఉండటానికి మీకు <xliff:g id="_NUMBER_0">%d</xliff:g> ప్రయత్నం మిగిలి ఉంది వివరాల కోసం కారియర్ను సంప్రదించండి.</item> </plurals> - <string name="clock_title_default" msgid="6342735240617459864">"డిఫాల్ట్"</string> + <string name="clock_title_default" msgid="6342735240617459864">"ఆటోమేటిక్"</string> <string name="clock_title_bubble" msgid="2204559396790593213">"బబుల్"</string> <string name="clock_title_analog" msgid="8409262532900918273">"ఎనలాగ్"</string> </resources> diff --git a/packages/SystemUI/res-keyguard/values-th/strings.xml b/packages/SystemUI/res-keyguard/values-th/strings.xml index aa9e693db0fa..e157be4ac18e 100644 --- a/packages/SystemUI/res-keyguard/values-th/strings.xml +++ b/packages/SystemUI/res-keyguard/values-th/strings.xml @@ -135,6 +135,6 @@ <item quantity="one">ซิมถูกปิดใช้งานในขณะนี้ โปรดป้อนรหัส PUK เพื่อทำต่อ คุณพยายามได้อีก <xliff:g id="_NUMBER_0">%d</xliff:g> ครั้งก่อนที่ซิมจะไม่สามารถใช้งานได้อย่างถาวร โปรดติดต่อสอบถามรายละเอียดจากผู้ให้บริการ</item> </plurals> <string name="clock_title_default" msgid="6342735240617459864">"ค่าเริ่มต้น"</string> - <string name="clock_title_bubble" msgid="2204559396790593213">"ลูกโป่ง"</string> + <string name="clock_title_bubble" msgid="2204559396790593213">"บับเบิล"</string> <string name="clock_title_analog" msgid="8409262532900918273">"แอนะล็อก"</string> </resources> diff --git a/packages/SystemUI/res-keyguard/values-ur/strings.xml b/packages/SystemUI/res-keyguard/values-ur/strings.xml index 7b946aaf40da..0fd5e17c953e 100644 --- a/packages/SystemUI/res-keyguard/values-ur/strings.xml +++ b/packages/SystemUI/res-keyguard/values-ur/strings.xml @@ -71,7 +71,7 @@ <string name="kg_sim_pin_instructions" msgid="1942424305184242951">"SIM PIN درج کریں۔"</string> <string name="kg_sim_pin_instructions_multi" msgid="3639863309953109649">"\"<xliff:g id="CARRIER">%1$s</xliff:g>\" کیلئے SIM PIN درج کریں۔"</string> <string name="kg_sim_lock_esim_instructions" msgid="5577169988158738030">"<xliff:g id="PREVIOUS_MSG">%1$s</xliff:g> موبائل سروس کے بغیر آلہ کا استعمال کرنے کیلئے eSIM غیر فعال کریں۔"</string> - <string name="kg_pin_instructions" msgid="822353548385014361">"PIN درج کریں"</string> + <string name="kg_pin_instructions" msgid="822353548385014361">"PIN درج کریں"</string> <string name="kg_password_instructions" msgid="324455062831719903">"پاسورڈ درج کریں"</string> <string name="kg_puk_enter_puk_hint" msgid="3005288372875367017">"SIM اب غیر فعال ہوگیا ہے۔ جاری رکھنے کیلئے PUK کوڈ درج کریں۔ تفصیلات کیلئے کیریئر سے رابطہ کریں۔"</string> <string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"SIM \"<xliff:g id="CARRIER">%1$s</xliff:g>\" اب غیر فعال ہے۔ جاری رکھنے کیلئے PUK کوڈ درج کریں۔ تفصیلات کیلئے کیریئر سے رابطہ کریں۔"</string> diff --git a/packages/SystemUI/res-keyguard/values-uz/strings.xml b/packages/SystemUI/res-keyguard/values-uz/strings.xml index a6c2aa055c0b..323fea5a608e 100644 --- a/packages/SystemUI/res-keyguard/values-uz/strings.xml +++ b/packages/SystemUI/res-keyguard/values-uz/strings.xml @@ -33,7 +33,7 @@ <string name="keyguard_enter_your_password" msgid="7225626204122735501">"Parolni kiriting"</string> <string name="keyguard_password_wrong_pin_code" msgid="3514267777289393046">"PIN kodi xato."</string> <string name="keyguard_sim_error_message_short" msgid="633630844240494070">"SIM karta yaroqsiz."</string> - <string name="keyguard_charged" msgid="5478247181205188995">"Batareya quvvati to‘ldi"</string> + <string name="keyguard_charged" msgid="5478247181205188995">"Quvvat oldi"</string> <string name="keyguard_plugged_in_wireless" msgid="2537874724955057383">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Simsiz quvvatlanyapti"</string> <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Quvvat olmoqda"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Tezkor quvvat olmoqda"</string> diff --git a/packages/SystemUI/res-keyguard/values-vi/strings.xml b/packages/SystemUI/res-keyguard/values-vi/strings.xml index 31737fca5e4d..2ba5089c7ed9 100644 --- a/packages/SystemUI/res-keyguard/values-vi/strings.xml +++ b/packages/SystemUI/res-keyguard/values-vi/strings.xml @@ -60,7 +60,7 @@ <string name="error_disable_esim_msg" msgid="2441188596467999327">"Không thể tắt eSIM do lỗi."</string> <string name="keyboardview_keycode_enter" msgid="6727192265631761174">"Nhập"</string> <string name="kg_forgot_pattern_button_text" msgid="3304688032024541260">"Đã quên hình mở khóa"</string> - <string name="kg_wrong_pattern" msgid="5907301342430102842">"Hình không chính xác"</string> + <string name="kg_wrong_pattern" msgid="5907301342430102842">"Hình mở khóa không chính xác"</string> <string name="kg_wrong_password" msgid="4143127991071670512">"Mật khẩu sai"</string> <string name="kg_wrong_pin" msgid="4160978845968732624">"Mã PIN sai"</string> <plurals name="kg_too_many_failed_attempts_countdown" formatted="false" msgid="991400408675793914"> diff --git a/packages/SystemUI/res/drawable/ic_reverse_charging.xml b/packages/SystemUI/res/drawable/ic_reverse_charging.xml new file mode 100644 index 000000000000..2268d868c89e --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_reverse_charging.xml @@ -0,0 +1,24 @@ +<!-- + ~ Copyright (C) 2020 The Android Open Source Project + ~ + ~ Licensed under the Apache License, Version 2.0 (the "License"); + ~ you may not use this file except in compliance with the License. + ~ You may obtain a copy of the License at + ~ + ~ http://www.apache.org/licenses/LICENSE-2.0 + ~ + ~ Unless required by applicable law or agreed to in writing, software + ~ distributed under the License is distributed on an "AS IS" BASIS, + ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + ~ See the License for the specific language governing permissions and + ~ limitations under the License. + --> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24.0" + android:viewportHeight="24.0"> + <path + android:fillColor="?attr/chargingAnimColor" + android:pathData="M18,16.5v4.17C18,21.4,17.4,22,16.66,22H7.33C6.6,22,6,21.4,6,20.67V15V5.33C6,4.6,6.6,4,7.33,4H9.5V2h5v2h2.17 C17.4,4,18,4.6,18,5.33V7.5h-2V6H8v9v5h8v-3.5H18z M13,15.5h-2V14c0-1.65,1.35-3,3-3h4V9l3,3l-3,3v-2h-4c-0.55,0-1,0.45-1,1V15.5z"/> +</vector>
\ No newline at end of file diff --git a/packages/SystemUI/res/drawable/rounded_corner_bottom.xml b/packages/SystemUI/res/drawable/rounded_corner_bottom.xml new file mode 100644 index 000000000000..ef1a82f9798c --- /dev/null +++ b/packages/SystemUI/res/drawable/rounded_corner_bottom.xml @@ -0,0 +1,16 @@ +<!-- + Copyright (C) 2020 The Android Open Source Project + + 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. +--> +<!-- Overlay this resource to change rounded_corners_bottom --> +<inset xmlns:android="http://schemas.android.com/apk/res/android" + android:drawable="@drawable/rounded"/> diff --git a/packages/SystemUI/res/drawable/rounded_corner_top.xml b/packages/SystemUI/res/drawable/rounded_corner_top.xml new file mode 100644 index 000000000000..79348928a7a8 --- /dev/null +++ b/packages/SystemUI/res/drawable/rounded_corner_top.xml @@ -0,0 +1,16 @@ +<!-- + Copyright (C) 2020 The Android Open Source Project + + 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. +--> +<!-- Overlay this resource to change rounded_corners_top --> +<inset xmlns:android="http://schemas.android.com/apk/res/android" + android:drawable="@drawable/rounded"/> diff --git a/packages/SystemUI/res/layout/rounded_corners.xml b/packages/SystemUI/res/layout/rounded_corners.xml index 1849068d91b8..db892d78c556 100644 --- a/packages/SystemUI/res/layout/rounded_corners.xml +++ b/packages/SystemUI/res/layout/rounded_corners.xml @@ -16,6 +16,7 @@ --> <com.android.systemui.RegionInterceptingFrameLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:id="@+id/rounded_corners_default" android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView diff --git a/packages/SystemUI/res/layout/rounded_corners_bottom.xml b/packages/SystemUI/res/layout/rounded_corners_bottom.xml new file mode 100644 index 000000000000..dde1248356e0 --- /dev/null +++ b/packages/SystemUI/res/layout/rounded_corners_bottom.xml @@ -0,0 +1,36 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +** Copyright 2020, 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. +--> +<com.android.systemui.RegionInterceptingFrameLayout + xmlns:android="http://schemas.android.com/apk/res/android" + android:id="@+id/rounded_corners_bottom" + android:layout_width="match_parent" + android:layout_height="match_parent"> + <ImageView + android:id="@+id/left" + android:layout_width="12dp" + android:layout_height="12dp" + android:layout_gravity="left|bottom" + android:tint="#ff000000" + android:src="@drawable/rounded_corner_bottom"/> + <ImageView + android:id="@+id/right" + android:layout_width="12dp" + android:layout_height="12dp" + android:tint="#ff000000" + android:layout_gravity="right|bottom" + android:src="@drawable/rounded_corner_bottom"/> +</com.android.systemui.RegionInterceptingFrameLayout> diff --git a/packages/SystemUI/res/layout/rounded_corners_top.xml b/packages/SystemUI/res/layout/rounded_corners_top.xml new file mode 100644 index 000000000000..813c97d06f57 --- /dev/null +++ b/packages/SystemUI/res/layout/rounded_corners_top.xml @@ -0,0 +1,36 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +** Copyright 2020, 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. +--> +<com.android.systemui.RegionInterceptingFrameLayout + xmlns:android="http://schemas.android.com/apk/res/android" + android:id="@+id/rounded_corners_top" + android:layout_width="match_parent" + android:layout_height="match_parent"> + <ImageView + android:id="@+id/left" + android:layout_width="12dp" + android:layout_height="12dp" + android:layout_gravity="left|top" + android:tint="#ff000000" + android:src="@drawable/rounded_corner_top"/> + <ImageView + android:id="@+id/right" + android:layout_width="12dp" + android:layout_height="12dp" + android:tint="#ff000000" + android:layout_gravity="right|top" + android:src="@drawable/rounded_corner_top"/> +</com.android.systemui.RegionInterceptingFrameLayout> diff --git a/packages/SystemUI/res/layout/wireless_charging_layout.xml b/packages/SystemUI/res/layout/wireless_charging_layout.xml index 4610409f830f..730f24ff9dd2 100644 --- a/packages/SystemUI/res/layout/wireless_charging_layout.xml +++ b/packages/SystemUI/res/layout/wireless_charging_layout.xml @@ -36,14 +36,26 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" - android:orientation="vertical"> + android:orientation="horizontal"> <TextView - android:id="@+id/wireless_charging_percentage" + android:id="@+id/reverse_wireless_charging_percentage" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center" + android:visibility="gone"/> + <ImageView + android:id="@+id/reverse_wireless_charging_icon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" - android:textSize="24sp"/> + android:src="@drawable/ic_reverse_charging" + android:visibility="gone"/> + <TextView + android:id="@+id/wireless_charging_percentage" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center"/> </LinearLayout> -</FrameLayout>
\ No newline at end of file +</FrameLayout> diff --git a/packages/SystemUI/res/values-ar/strings.xml b/packages/SystemUI/res/values-ar/strings.xml index ec1e076f8f67..872bca858498 100644 --- a/packages/SystemUI/res/values-ar/strings.xml +++ b/packages/SystemUI/res/values-ar/strings.xml @@ -234,7 +234,7 @@ <string name="not_default_data_content_description" msgid="6757881730711522517">"لم يتم الضبط على استخدام البيانات"</string> <string name="cell_data_off" msgid="4886198950247099526">"غير مفعّلة"</string> <string name="accessibility_bluetooth_tether" msgid="6327291292208790599">"التوصيل عبر البلوتوث"</string> - <string name="accessibility_airplane_mode" msgid="1899529214045998505">"وضع الطائرة."</string> + <string name="accessibility_airplane_mode" msgid="1899529214045998505">"وضع الطيران."</string> <string name="accessibility_vpn_on" msgid="8037549696057288731">"الشبكة الافتراضية الخاصة (VPN) قيد التفعيل."</string> <string name="accessibility_no_sims" msgid="5711270400476534667">"ليس هناك شريحة SIM."</string> <string name="carrier_network_change_mode" msgid="5174141476991149918">"جارٍ تغيير شبكة مشغِّل شبكة الجوّال."</string> @@ -269,10 +269,10 @@ <string name="accessibility_quick_settings_wifi_changed_on" msgid="1490362586009027611">"تم تفعيل Wifi."</string> <string name="accessibility_quick_settings_mobile" msgid="1817825313718492906">"الجوّال <xliff:g id="SIGNAL">%1$s</xliff:g>. <xliff:g id="TYPE">%2$s</xliff:g>. <xliff:g id="NETWORK">%3$s</xliff:g>."</string> <string name="accessibility_quick_settings_battery" msgid="533594896310663853">"البطارية <xliff:g id="STATE">%s</xliff:g>."</string> - <string name="accessibility_quick_settings_airplane_off" msgid="1275658769368793228">"إيقاف وضع الطائرة."</string> - <string name="accessibility_quick_settings_airplane_on" msgid="8106176561295294255">"تفعيل وضع الطائرة."</string> - <string name="accessibility_quick_settings_airplane_changed_off" msgid="8880183481476943754">"تم إيقاف وضع الطائرة."</string> - <string name="accessibility_quick_settings_airplane_changed_on" msgid="6327378061894076288">"تم تفعيل وضع الطائرة."</string> + <string name="accessibility_quick_settings_airplane_off" msgid="1275658769368793228">"إيقاف وضع الطيران."</string> + <string name="accessibility_quick_settings_airplane_on" msgid="8106176561295294255">"تفعيل وضع الطيران."</string> + <string name="accessibility_quick_settings_airplane_changed_off" msgid="8880183481476943754">"تم إيقاف وضع الطيران."</string> + <string name="accessibility_quick_settings_airplane_changed_on" msgid="6327378061894076288">"تم تفعيل وضع الطيران."</string> <string name="accessibility_quick_settings_dnd_none_on" msgid="3235552940146035383">"كتم الصوت تمامًا"</string> <string name="accessibility_quick_settings_dnd_alarms_on" msgid="3375848309132140014">"المنبِّهات فقط"</string> <string name="accessibility_quick_settings_dnd" msgid="2415967452264206047">"عدم الإزعاج"</string> @@ -320,7 +320,7 @@ <string name="data_usage_disabled_dialog" msgid="7933201635215099780">"تم الوصول إلى حد البيانات الذي عيَّنته. لم يُعد بإمكانك استخدام بيانات الجوال.\n\nفي حالة الاستئناف، قد يتم تطبيق الرسوم لاستخدام البيانات."</string> <string name="data_usage_disabled_dialog_enable" msgid="2796648546086408937">"استئناف"</string> <string name="gps_notification_searching_text" msgid="231304732649348313">"جارٍ البحث عن GPS"</string> - <string name="gps_notification_found_text" msgid="3145873880174658526">"تم تعيين الموقع بواسطة GPS"</string> + <string name="gps_notification_found_text" msgid="3145873880174658526">"تم ضبط الموقع بواسطة GPS"</string> <string name="accessibility_location_active" msgid="2845747916764660369">"طلبات الموقع نشطة"</string> <string name="accessibility_sensors_off_active" msgid="2619725434618911551">"أجهزة الاستشعار غير مفعّلة"</string> <string name="accessibility_clear_all" msgid="970525598287244592">"محو جميع الإشعارات."</string> @@ -666,7 +666,7 @@ <string name="status_bar_ethernet" msgid="5690979758988647484">"إيثرنت"</string> <string name="status_bar_alarm" msgid="87160847643623352">"المنبّه"</string> <string name="status_bar_work" msgid="5238641949837091056">"الملف الشخصي للعمل"</string> - <string name="status_bar_airplane" msgid="4848702508684541009">"وضع الطائرة"</string> + <string name="status_bar_airplane" msgid="4848702508684541009">"وضع الطيران"</string> <string name="add_tile" msgid="6239678623873086686">"إضافة فئة"</string> <string name="broadcast_tile" msgid="5224010633596487481">"إرسال فئة"</string> <string name="zen_alarm_warning_indef" msgid="5252866591716504287">"لن تسمع المنبّه القادم في <xliff:g id="WHEN">%1$s</xliff:g> إلا إذا أوقفت هذا قبل الموعد"</string> @@ -699,7 +699,7 @@ <string name="tuner_full_importance_settings" msgid="1388025816553459059">"عناصر التحكم في إشعارات التشغيل"</string> <string name="tuner_full_importance_settings_on" msgid="917981436602311547">"تشغيل"</string> <string name="tuner_full_importance_settings_off" msgid="5580102038749680829">"إيقاف"</string> - <string name="power_notification_controls_description" msgid="1334963837572708952">"باستخدام عناصر التحكم في إشعار التشغيل، يمكنك تعيين مستوى الأهمية من 0 إلى 5 لإشعارات التطبيق. \n\n"<b>"المستوى 5"</b>" \n- العرض أعلى قائمة الإشعارات \n- يسمح بمقاطعة ملء الشاشة \n- الظهور الخاطف دائمًا \n\n"<b>"المستوى 4"</b>" \n- منع مقاطعة ملء الشاشة \n- الظهور الخاطف دائمًا \n\n"<b>"المستوى 3"</b>" \n- منع مقاطعة ملء الشاشة \n- عدم الظهور الخاطف أبدًا \n\n"<b>"المستوى 2"</b>" \n- منع مقاطعة ملء الشاشة \n- عدم الظهور الخاطف أبدًا \n- عدم إصدار أصوات واهتزاز \n\n"<b>"المستوى 1"</b>" \n- منع مقاطعة ملء الشاشة \n- عدم الظهور الخاطف أبدًا \n- عدم إصدار أصوات أو اهتزاز أبدًا \n- الإخفاء من شاشة القفل وشريط الحالة \n- العرض أسفل قائمة الإشعارات \n\n"<b>"المستوى 0"</b>" \n- حظر جميع الإشعارات من التطبيق"</string> + <string name="power_notification_controls_description" msgid="1334963837572708952">"باستخدام عناصر التحكم في إشعار التشغيل، يمكنك ضبط مستوى الأهمية من 0 إلى 5 لإشعارات التطبيق. \n\n"<b>"المستوى 5"</b>" \n- العرض أعلى قائمة الإشعارات \n- يسمح بمقاطعة ملء الشاشة \n- الظهور الخاطف دائمًا \n\n"<b>"المستوى 4"</b>" \n- منع مقاطعة ملء الشاشة \n- الظهور الخاطف دائمًا \n\n"<b>"المستوى 3"</b>" \n- منع مقاطعة ملء الشاشة \n- عدم الظهور الخاطف أبدًا \n\n"<b>"المستوى 2"</b>" \n- منع مقاطعة ملء الشاشة \n- عدم الظهور الخاطف أبدًا \n- عدم إصدار أصوات واهتزاز \n\n"<b>"المستوى 1"</b>" \n- منع مقاطعة ملء الشاشة \n- عدم الظهور الخاطف أبدًا \n- عدم إصدار أصوات أو اهتزاز أبدًا \n- الإخفاء من شاشة القفل وشريط الحالة \n- العرض أسفل قائمة الإشعارات \n\n"<b>"المستوى 0"</b>" \n- حظر جميع الإشعارات من التطبيق"</string> <string name="notification_header_default_channel" msgid="225454696914642444">"الإشعارات"</string> <string name="notification_channel_disabled" msgid="928065923928416337">"لن تتلقى هذه الإشعارات بعد الآن."</string> <string name="notification_channel_minimized" msgid="6892672757877552959">"سيتم تصغير هذه الإشعارات."</string> @@ -1062,7 +1062,7 @@ <string name="accessibility_control_favorite" msgid="8694362691985545985">"تمت الإضافة إلى المفضّلة"</string> <string name="accessibility_control_favorite_position" msgid="54220258048929221">"تمت الإضافة إلى المفضّلة، الموضع <xliff:g id="NUMBER">%d</xliff:g>"</string> <string name="accessibility_control_not_favorite" msgid="1291760269563092359">"تمت الإزالة من المفضّلة"</string> - <string name="accessibility_control_change_favorite" msgid="2943178027582253261">"إضافة إلى المُفضلة"</string> + <string name="accessibility_control_change_favorite" msgid="2943178027582253261">"إضافة إلى المحتوى المفضّل"</string> <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"إزالة من المفضّلة"</string> <string name="accessibility_control_move" msgid="8980344493796647792">"نقل إلى الموضع <xliff:g id="NUMBER">%d</xliff:g>"</string> <string name="controls_favorite_default_title" msgid="967742178688938137">"عناصر التحكّم"</string> diff --git a/packages/SystemUI/res/values-az/strings.xml b/packages/SystemUI/res/values-az/strings.xml index 2eecc7284d6a..c4693bef25bf 100644 --- a/packages/SystemUI/res/values-az/strings.xml +++ b/packages/SystemUI/res/values-az/strings.xml @@ -791,7 +791,7 @@ <string name="keyboard_key_page_up" msgid="173914303254199845">"Yuxarı Səhifə"</string> <string name="keyboard_key_page_down" msgid="9035902490071829731">"Aşağı Səhifə"</string> <string name="keyboard_key_forward_del" msgid="5325501825762733459">"Silin"</string> - <string name="keyboard_key_move_home" msgid="3496502501803911971">"Əsas səhifə"</string> + <string name="keyboard_key_move_home" msgid="3496502501803911971">"Home"</string> <string name="keyboard_key_move_end" msgid="99190401463834854">"Son"</string> <string name="keyboard_key_insert" msgid="4621692715704410493">"Daxil edin"</string> <string name="keyboard_key_num_lock" msgid="7209960042043090548">"Nömrələr"</string> diff --git a/packages/SystemUI/res/values-be/strings.xml b/packages/SystemUI/res/values-be/strings.xml index 41d7fa81006c..5416e030846c 100644 --- a/packages/SystemUI/res/values-be/strings.xml +++ b/packages/SystemUI/res/values-be/strings.xml @@ -722,7 +722,7 @@ <string name="notification_channel_summary_default" msgid="3282930979307248890">"У залежнасці ад налад тэлефона магчымы званок або вібрацыя"</string> <string name="notification_channel_summary_default_with_bubbles" msgid="1782419896613644568">"У залежнасці ад налад тэлефона магчымы званок або вібрацыя. Размовы ў праграме \"<xliff:g id="APP_NAME">%1$s</xliff:g>\" стандартна паяўляюцца ў выглядзе ўсплывальных апавяшчэнняў."</string> <string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Прыцягвае ўвагу да гэтага змесціва ўсплывальнай кнопкай."</string> - <string name="notification_channel_summary_priority" msgid="7952654515769021553">"Паказваецца ўверсе раздзела размоў у выглядзе ўсплывальнага апавяшчэння, а на экране блакіроўкі – у выглядзе відарыса профілю"</string> + <string name="notification_channel_summary_priority" msgid="7952654515769021553">"Паказваецца ўверсе раздзела размоў, як усплывальнае апавяшчэнне, паказвае фота профілю на экране блакіроўкі"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Налады"</string> <string name="notification_priority_title" msgid="2079708866333537093">"Прыярытэт"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> не падтрымлівае функцыі размовы"</string> diff --git a/packages/SystemUI/res/values-bg/strings.xml b/packages/SystemUI/res/values-bg/strings.xml index 7913674df7aa..afb444104a32 100644 --- a/packages/SystemUI/res/values-bg/strings.xml +++ b/packages/SystemUI/res/values-bg/strings.xml @@ -716,7 +716,7 @@ <string name="notification_channel_summary_default" msgid="3282930979307248890">"Може да звъни или да вибрира въз основа на настройките за телефона"</string> <string name="notification_channel_summary_default_with_bubbles" msgid="1782419896613644568">"Може да звъни или да вибрира въз основа на настройките за телефона. Разговорите от <xliff:g id="APP_NAME">%1$s</xliff:g> се показват като балончета по подразбиране."</string> <string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Задържа вниманието ви посредством плаващ пряк път към това съдържание."</string> - <string name="notification_channel_summary_priority" msgid="7952654515769021553">"Показва се като плаващо балонче в горната част на секцията с разговори и показва снимката на потребителския профил на заключения екран"</string> + <string name="notification_channel_summary_priority" msgid="7952654515769021553">"Показва се като плаващо балонче в горната част на секцията с разговори, показва снимката на потр. профил на заключения екран"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Настройки"</string> <string name="notification_priority_title" msgid="2079708866333537093">"Приоритет"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> не поддържа функциите за разговор"</string> diff --git a/packages/SystemUI/res/values-bs/strings.xml b/packages/SystemUI/res/values-bs/strings.xml index 34f4b9fbc3e2..5324303aae2f 100644 --- a/packages/SystemUI/res/values-bs/strings.xml +++ b/packages/SystemUI/res/values-bs/strings.xml @@ -726,7 +726,7 @@ <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"Nema nedavnih oblačića"</string> <string name="bubble_overflow_empty_subtitle" msgid="2030874469510497397">"Nedavni i odbačeni oblačići će se pojaviti ovdje"</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"Ta obavještenja se ne mogu izmijeniti."</string> - <string name="notification_multichannel_desc" msgid="7414593090056236179">"Ovdje nije moguće konfigurirati ovu grupu obavještenja"</string> + <string name="notification_multichannel_desc" msgid="7414593090056236179">"Ovu grupu obavještenja nije moguće konfigurirati ovdje"</string> <string name="notification_delegate_header" msgid="1264510071031479920">"Obavještenje preko proksi servera"</string> <string name="notification_channel_dialog_title" msgid="6856514143093200019">"Sva obavještenja aplikacije <xliff:g id="APP_NAME">%1$s</xliff:g>"</string> <string name="see_more_title" msgid="7409317011708185729">"Prikaži više"</string> diff --git a/packages/SystemUI/res/values-ca/strings.xml b/packages/SystemUI/res/values-ca/strings.xml index 76b64417c197..51bd234f24fe 100644 --- a/packages/SystemUI/res/values-ca/strings.xml +++ b/packages/SystemUI/res/values-ca/strings.xml @@ -92,10 +92,10 @@ <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"Processant gravació de pantalla"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"Notificació en curs d\'una sessió de gravació de la pantalla"</string> <string name="screenrecord_start_label" msgid="1750350278888217473">"Vols iniciar la gravació?"</string> - <string name="screenrecord_description" msgid="1123231719680353736">"Quan graves contingut, el sistema Android pot capturar qualsevol informació sensible que es mostri a la pantalla o que es reprodueixi al dispositiu. Això inclou les contrasenyes, la informació de pagament, les fotos, els missatges i l\'àudio."</string> + <string name="screenrecord_description" msgid="1123231719680353736">"Durant la gravació, el sistema Android pot capturar qualsevol informació sensible que es mostri a la pantalla o que es reprodueixi al dispositiu. Això inclou contrasenyes, informació de pagament, fotos, missatges i àudio."</string> <string name="screenrecord_audio_label" msgid="6183558856175159629">"Grava l\'àudio"</string> <string name="screenrecord_device_audio_label" msgid="9016927171280567791">"Àudio del dispositiu"</string> - <string name="screenrecord_device_audio_description" msgid="4922694220572186193">"Sons del dispositiu, com ara la música, les trucades i els sons de trucada"</string> + <string name="screenrecord_device_audio_description" msgid="4922694220572186193">"So del dispositiu, com ara música, trucades i sons de trucada"</string> <string name="screenrecord_mic_label" msgid="2111264835791332350">"Micròfon"</string> <string name="screenrecord_device_audio_and_mic_label" msgid="1831323771978646841">"Àudio del dispositiu i micròfon"</string> <string name="screenrecord_start" msgid="330991441575775004">"Inicia"</string> @@ -389,7 +389,7 @@ <string name="quick_settings_cast_no_wifi" msgid="6980194769795014875">"La Wi‑Fi no està connectada"</string> <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"Brillantor"</string> <string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="2325362583903258677">"AUTOMÀTICA"</string> - <string name="quick_settings_inversion_label" msgid="5078769633069667698">"Inverteix els colors"</string> + <string name="quick_settings_inversion_label" msgid="5078769633069667698">"Inverteix colors"</string> <string name="quick_settings_color_space_label" msgid="537528291083575559">"Mode de correcció de color"</string> <string name="quick_settings_more_settings" msgid="2878235926753776694">"Més opcions"</string> <string name="quick_settings_done" msgid="2163641301648855793">"Fet"</string> diff --git a/packages/SystemUI/res/values-cs/strings.xml b/packages/SystemUI/res/values-cs/strings.xml index d3b5a2011aa4..484c63131555 100644 --- a/packages/SystemUI/res/values-cs/strings.xml +++ b/packages/SystemUI/res/values-cs/strings.xml @@ -722,7 +722,7 @@ <string name="notification_channel_summary_default" msgid="3282930979307248890">"Může vyzvánět nebo vibrovat v závislosti na nastavení telefonu"</string> <string name="notification_channel_summary_default_with_bubbles" msgid="1782419896613644568">"Může vyzvánět nebo vibrovat v závislosti na nastavení telefonu. Konverzace z aplikace <xliff:g id="APP_NAME">%1$s</xliff:g> ve výchozím nastavení bublají."</string> <string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Přitahuje pozornost pomocí plovoucí zkratky k tomuto obsahu."</string> - <string name="notification_channel_summary_priority" msgid="7952654515769021553">"Zobrazuje se v horní části sekce konverzace a má podobu plovoucí bubliny, zobrazuje profilovou fotku na obrazovce uzamčení"</string> + <string name="notification_channel_summary_priority" msgid="7952654515769021553">"Zobrazuje se v horní části sekce konverzací a má podobu plovoucí bubliny, zobrazuje profilovou fotku na obrazovce uzamčení"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Nastavení"</string> <string name="notification_priority_title" msgid="2079708866333537093">"Priorita"</string> <string name="no_shortcut" msgid="8257177117568230126">"Aplikace <xliff:g id="APP_NAME">%1$s</xliff:g> funkce konverzace nepodporuje"</string> @@ -1026,7 +1026,7 @@ <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Pohotovostní režim"</string> <string name="priority_onboarding_title" msgid="2893070698479227616">"Konverzace byla nastavena jako prioritní"</string> <string name="priority_onboarding_behavior" msgid="5342816047020432929">"Chování prioritních konverzací:"</string> - <string name="priority_onboarding_show_at_top_text" msgid="1678400241025513541">"Zobrazovat v horní části sekce konverzace"</string> + <string name="priority_onboarding_show_at_top_text" msgid="1678400241025513541">"Zobrazovat v horní části sekce konverzací"</string> <string name="priority_onboarding_show_avatar_text" msgid="5756291381124091508">"Zobrazovat profilovou fotku na zámku obrazovky"</string> <string name="priority_onboarding_appear_as_bubble_text" msgid="4227039772250263122">"Zobrazuje se jako plovoucí bublina nad aplikacemi"</string> <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"Přerušit režim Nerušit"</string> diff --git a/packages/SystemUI/res/values-da/strings.xml b/packages/SystemUI/res/values-da/strings.xml index 59aaa5aa5034..334d896ffe4d 100644 --- a/packages/SystemUI/res/values-da/strings.xml +++ b/packages/SystemUI/res/values-da/strings.xml @@ -716,7 +716,7 @@ <string name="notification_channel_summary_default" msgid="3282930979307248890">"Kan ringe eller vibrere baseret på telefonens indstillinger"</string> <string name="notification_channel_summary_default_with_bubbles" msgid="1782419896613644568">"Kan ringe eller vibrere baseret på telefonens indstillinger. Samtaler fra <xliff:g id="APP_NAME">%1$s</xliff:g> vises som standard i bobler."</string> <string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Fastholder din opmærksomhed med en svævende genvej til indholdet."</string> - <string name="notification_channel_summary_priority" msgid="7952654515769021553">"Vises øverst i samtalesektionen, som en svævende boble og med profilbillede på låseskærmen"</string> + <string name="notification_channel_summary_priority" msgid="7952654515769021553">"Vises øverst i samtalesektionen som en svævende boble og med profilbillede på låseskærmen"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Indstillinger"</string> <string name="notification_priority_title" msgid="2079708866333537093">"Prioritet"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> understøtter ikke samtalefunktioner"</string> diff --git a/packages/SystemUI/res/values-de/strings.xml b/packages/SystemUI/res/values-de/strings.xml index edee95fa2322..f29a571dd51f 100644 --- a/packages/SystemUI/res/values-de/strings.xml +++ b/packages/SystemUI/res/values-de/strings.xml @@ -28,15 +28,15 @@ <string name="battery_low_percent_format" msgid="4276661262843170964">"<xliff:g id="PERCENTAGE">%s</xliff:g> verbleibend"</string> <string name="battery_low_percent_format_hybrid" msgid="3985614339605686167">"Noch <xliff:g id="PERCENTAGE">%1$s</xliff:g> übrig; bei deinem Nutzungsmuster hast du noch ca. <xliff:g id="TIME">%2$s</xliff:g>"</string> <string name="battery_low_percent_format_hybrid_short" msgid="5917433188456218857">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> ausstehend; noch ca. <xliff:g id="TIME">%2$s</xliff:g>"</string> - <string name="battery_low_percent_format_saver_started" msgid="4968468824040940688">"Noch <xliff:g id="PERCENTAGE">%s</xliff:g>. Der Energiesparmodus ist aktiviert."</string> + <string name="battery_low_percent_format_saver_started" msgid="4968468824040940688">"Noch <xliff:g id="PERCENTAGE">%s</xliff:g>. Der Stromsparmodus ist aktiviert."</string> <string name="invalid_charger" msgid="4370074072117767416">"Aufladen über USB nicht möglich. Verwende das mit dem Gerät gelieferte Ladegerät."</string> <string name="invalid_charger_title" msgid="938685362320735167">"Aufladen über USB nicht möglich"</string> <string name="invalid_charger_text" msgid="2339310107232691577">"Verwende das mit dem Gerät gelieferte Ladegerät"</string> <string name="battery_low_why" msgid="2056750982959359863">"Einstellungen"</string> - <string name="battery_saver_confirmation_title" msgid="1234998463717398453">"Energiesparmodus aktivieren?"</string> - <string name="battery_saver_confirmation_title_generic" msgid="2299231884234959849">"Über den Energiesparmodus"</string> + <string name="battery_saver_confirmation_title" msgid="1234998463717398453">"Stromsparmodus aktivieren?"</string> + <string name="battery_saver_confirmation_title_generic" msgid="2299231884234959849">"Über den Stromsparmodus"</string> <string name="battery_saver_confirmation_ok" msgid="5042136476802816494">"Aktivieren"</string> - <string name="battery_saver_start_action" msgid="4553256017945469937">"Energiesparmodus aktivieren"</string> + <string name="battery_saver_start_action" msgid="4553256017945469937">"Stromsparmodus aktivieren"</string> <string name="status_bar_settings_settings_button" msgid="534331565185171556">"Einstellungen"</string> <string name="status_bar_settings_wifi_button" msgid="7243072479837270946">"WLAN"</string> <string name="status_bar_settings_auto_rotation" msgid="8329080442278431708">"Bildschirm automatisch drehen"</string> @@ -421,7 +421,7 @@ <string name="quick_settings_night_secondary_label_on_at" msgid="3584738542293528235">"An um <xliff:g id="TIME">%s</xliff:g>"</string> <string name="quick_settings_secondary_label_until" msgid="1883981263191927372">"Bis <xliff:g id="TIME">%s</xliff:g>"</string> <string name="quick_settings_ui_mode_night_label" msgid="1398928270610780470">"Dunkles Design"</string> - <string name="quick_settings_dark_mode_secondary_label_battery_saver" msgid="4990712734503013251">"Energiesparmodus"</string> + <string name="quick_settings_dark_mode_secondary_label_battery_saver" msgid="4990712734503013251">"Stromsparmodus"</string> <string name="quick_settings_dark_mode_secondary_label_on_at_sunset" msgid="6017379738102015710">"An bei Sonnenuntergang"</string> <string name="quick_settings_dark_mode_secondary_label_until_sunrise" msgid="4404885070316716472">"Bis Sonnenaufgang"</string> <string name="quick_settings_dark_mode_secondary_label_on_at" msgid="5128758823486361279">"An um <xliff:g id="TIME">%s</xliff:g>"</string> @@ -499,9 +499,9 @@ <string name="user_remove_user_title" msgid="9124124694835811874">"Nutzer entfernen?"</string> <string name="user_remove_user_message" msgid="6702834122128031833">"Alle Apps und Daten dieses Nutzers werden gelöscht."</string> <string name="user_remove_user_remove" msgid="8387386066949061256">"Entfernen"</string> - <string name="battery_saver_notification_title" msgid="8419266546034372562">"Energiesparmodus ist aktiviert"</string> + <string name="battery_saver_notification_title" msgid="8419266546034372562">"Stromsparmodus ist aktiviert"</string> <string name="battery_saver_notification_text" msgid="2617841636449016951">"Reduzierung der Leistung und Hintergrunddaten"</string> - <string name="battery_saver_notification_action_text" msgid="6022091913807026887">"Energiesparmodus deaktivieren"</string> + <string name="battery_saver_notification_action_text" msgid="6022091913807026887">"Stromsparmodus deaktivieren"</string> <string name="media_projection_dialog_text" msgid="1755705274910034772">"Die App \"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>\" erhält Zugriff auf alle Informationen, die auf deinem Bildschirm sichtbar sind oder von deinem Gerät wiedergegeben werden, während du aufnimmst oder streamst. Dazu gehören beispielsweise angezeigte Passwörter und Zahlungsdetails, Fotos, Nachrichten und Audioinhalte."</string> <string name="media_projection_dialog_service_text" msgid="958000992162214611">"Der Anbieter dieser App erhält Zugriff auf alle Informationen, die auf deinem Bildschirm sichtbar sind oder von deinem Gerät wiedergegeben werden, während du aufnimmst oder streamst. Dazu gehören beispielsweise Passwörter, Zahlungsdetails, Fotos, Nachrichten und Audioinhalte."</string> <string name="media_projection_dialog_service_title" msgid="2888507074107884040">"Aufnahme oder Stream starten?"</string> @@ -767,8 +767,8 @@ <item quantity="one">%d Minute</item> </plurals> <string name="battery_panel_title" msgid="5931157246673665963">"Akkunutzung"</string> - <string name="battery_detail_charging_summary" msgid="8821202155297559706">"Der Energiesparmodus ist beim Aufladen nicht verfügbar."</string> - <string name="battery_detail_switch_title" msgid="6940976502957380405">"Energiesparmodus"</string> + <string name="battery_detail_charging_summary" msgid="8821202155297559706">"Der Stromsparmodus ist beim Aufladen nicht verfügbar."</string> + <string name="battery_detail_switch_title" msgid="6940976502957380405">"Stromsparmodus"</string> <string name="battery_detail_switch_summary" msgid="3668748557848025990">"Reduzierung der Leistung und Hintergrunddaten"</string> <string name="keyboard_key_button_template" msgid="8005673627272051429">"Taste <xliff:g id="NAME">%1$s</xliff:g>"</string> <string name="keyboard_key_home" msgid="3734400625170020657">"Pos1"</string> @@ -980,11 +980,11 @@ <string name="slice_permission_checkbox" msgid="4242888137592298523">"<xliff:g id="APP">%1$s</xliff:g> darf Teile aus jeder beliebigen App anzeigen"</string> <string name="slice_permission_allow" msgid="6340449521277951123">"Zulassen"</string> <string name="slice_permission_deny" msgid="6870256451658176895">"Ablehnen"</string> - <string name="auto_saver_title" msgid="6873691178754086596">"Tippen zum Planen des Energiesparmodus"</string> + <string name="auto_saver_title" msgid="6873691178754086596">"Tippen zum Planen des Stromsparmodus"</string> <string name="auto_saver_text" msgid="3214960308353838764">"Aktivieren, wenn der Akku wahrscheinlich nicht mehr lange hält"</string> <string name="no_auto_saver_action" msgid="7467924389609773835">"Nein danke"</string> - <string name="auto_saver_enabled_title" msgid="4294726198280286333">"Geplanter Energiesparmodus aktiviert"</string> - <string name="auto_saver_enabled_text" msgid="7889491183116752719">"Der Energiesparmodus wird bei einem Akkustand von <xliff:g id="PERCENTAGE">%d</xliff:g> %% automatisch aktiviert."</string> + <string name="auto_saver_enabled_title" msgid="4294726198280286333">"Geplanter Stromsparmodus aktiviert"</string> + <string name="auto_saver_enabled_text" msgid="7889491183116752719">"Der Stromsparmodus wird bei einem Akkustand von <xliff:g id="PERCENTAGE">%d</xliff:g> %% automatisch aktiviert."</string> <string name="open_saver_setting_action" msgid="2111461909782935190">"Einstellungen"</string> <string name="auto_saver_okay_action" msgid="7815925750741935386">"Ok"</string> <string name="heap_dump_tile_name" msgid="2464189856478823046">"Dump SysUI Heap"</string> diff --git a/packages/SystemUI/res/values-el/strings.xml b/packages/SystemUI/res/values-el/strings.xml index f6ae532fb51a..becbaa4a9b2e 100644 --- a/packages/SystemUI/res/values-el/strings.xml +++ b/packages/SystemUI/res/values-el/strings.xml @@ -716,7 +716,7 @@ <string name="notification_channel_summary_default" msgid="3282930979307248890">"Ενδέχεται να κουδουνίζει ή να δονείται βάσει των ρυθμίσεων του τηλεφώνου"</string> <string name="notification_channel_summary_default_with_bubbles" msgid="1782419896613644568">"Ενδέχεται να κουδουνίζει ή να δονείται βάσει των ρυθμίσεων του τηλεφώνου. Οι συζητήσεις από την εφαρμογή <xliff:g id="APP_NAME">%1$s</xliff:g> εμφανίζονται σε συννεφάκι από προεπιλογή."</string> <string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Κρατάει την προσοχή σας με μια κινούμενη συντόμευση προς αυτό το περιεχόμενο."</string> - <string name="notification_channel_summary_priority" msgid="7952654515769021553">"Εμφανίζεται στο επάνω μέρος της ενότητας συζητήσεων, προβάλλεται ως κινούμενο συννεφάκι, εμφανίζει τη φωτογραφία προφίλ στην οθόνη κλειδώματος"</string> + <string name="notification_channel_summary_priority" msgid="7952654515769021553">"Εμφανίζεται επάνω στις συζητήσεις, προβάλλεται ως κιν. συννεφάκι, εμφανίζει τη φωτ. προφίλ στην οθ. κλειδ."</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Ρυθμίσεις"</string> <string name="notification_priority_title" msgid="2079708866333537093">"Προτεραιότητα"</string> <string name="no_shortcut" msgid="8257177117568230126">"Η εφαρμογή <xliff:g id="APP_NAME">%1$s</xliff:g> δεν υποστηρίζει τις λειτουργίες συζήτησης"</string> diff --git a/packages/SystemUI/res/values-en-rAU/strings.xml b/packages/SystemUI/res/values-en-rAU/strings.xml index 6228a548ffe4..1581c1538202 100644 --- a/packages/SystemUI/res/values-en-rAU/strings.xml +++ b/packages/SystemUI/res/values-en-rAU/strings.xml @@ -92,7 +92,7 @@ <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"Processing screen recording"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"Ongoing notification for a screen record session"</string> <string name="screenrecord_start_label" msgid="1750350278888217473">"Start recording?"</string> - <string name="screenrecord_description" msgid="1123231719680353736">"While recording, Android System can capture any sensitive information that’s visible on your screen or played on your device. This includes passwords, payment info, photos, messages and audio."</string> + <string name="screenrecord_description" msgid="1123231719680353736">"While recording, the Android System can capture any sensitive information that’s visible on your screen or played on your device. This includes passwords, payment info, photos, messages and audio."</string> <string name="screenrecord_audio_label" msgid="6183558856175159629">"Record audio"</string> <string name="screenrecord_device_audio_label" msgid="9016927171280567791">"Device audio"</string> <string name="screenrecord_device_audio_description" msgid="4922694220572186193">"Sound from your device, like music, calls and ringtones"</string> diff --git a/packages/SystemUI/res/values-en-rCA/strings.xml b/packages/SystemUI/res/values-en-rCA/strings.xml index 94623de9d84a..937bf1776fe7 100644 --- a/packages/SystemUI/res/values-en-rCA/strings.xml +++ b/packages/SystemUI/res/values-en-rCA/strings.xml @@ -92,7 +92,7 @@ <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"Processing screen recording"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"Ongoing notification for a screen record session"</string> <string name="screenrecord_start_label" msgid="1750350278888217473">"Start recording?"</string> - <string name="screenrecord_description" msgid="1123231719680353736">"While recording, Android System can capture any sensitive information that’s visible on your screen or played on your device. This includes passwords, payment info, photos, messages and audio."</string> + <string name="screenrecord_description" msgid="1123231719680353736">"While recording, the Android System can capture any sensitive information that’s visible on your screen or played on your device. This includes passwords, payment info, photos, messages and audio."</string> <string name="screenrecord_audio_label" msgid="6183558856175159629">"Record audio"</string> <string name="screenrecord_device_audio_label" msgid="9016927171280567791">"Device audio"</string> <string name="screenrecord_device_audio_description" msgid="4922694220572186193">"Sound from your device, like music, calls and ringtones"</string> diff --git a/packages/SystemUI/res/values-en-rGB/strings.xml b/packages/SystemUI/res/values-en-rGB/strings.xml index 6228a548ffe4..1581c1538202 100644 --- a/packages/SystemUI/res/values-en-rGB/strings.xml +++ b/packages/SystemUI/res/values-en-rGB/strings.xml @@ -92,7 +92,7 @@ <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"Processing screen recording"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"Ongoing notification for a screen record session"</string> <string name="screenrecord_start_label" msgid="1750350278888217473">"Start recording?"</string> - <string name="screenrecord_description" msgid="1123231719680353736">"While recording, Android System can capture any sensitive information that’s visible on your screen or played on your device. This includes passwords, payment info, photos, messages and audio."</string> + <string name="screenrecord_description" msgid="1123231719680353736">"While recording, the Android System can capture any sensitive information that’s visible on your screen or played on your device. This includes passwords, payment info, photos, messages and audio."</string> <string name="screenrecord_audio_label" msgid="6183558856175159629">"Record audio"</string> <string name="screenrecord_device_audio_label" msgid="9016927171280567791">"Device audio"</string> <string name="screenrecord_device_audio_description" msgid="4922694220572186193">"Sound from your device, like music, calls and ringtones"</string> diff --git a/packages/SystemUI/res/values-en-rIN/strings.xml b/packages/SystemUI/res/values-en-rIN/strings.xml index 6228a548ffe4..1581c1538202 100644 --- a/packages/SystemUI/res/values-en-rIN/strings.xml +++ b/packages/SystemUI/res/values-en-rIN/strings.xml @@ -92,7 +92,7 @@ <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"Processing screen recording"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"Ongoing notification for a screen record session"</string> <string name="screenrecord_start_label" msgid="1750350278888217473">"Start recording?"</string> - <string name="screenrecord_description" msgid="1123231719680353736">"While recording, Android System can capture any sensitive information that’s visible on your screen or played on your device. This includes passwords, payment info, photos, messages and audio."</string> + <string name="screenrecord_description" msgid="1123231719680353736">"While recording, the Android System can capture any sensitive information that’s visible on your screen or played on your device. This includes passwords, payment info, photos, messages and audio."</string> <string name="screenrecord_audio_label" msgid="6183558856175159629">"Record audio"</string> <string name="screenrecord_device_audio_label" msgid="9016927171280567791">"Device audio"</string> <string name="screenrecord_device_audio_description" msgid="4922694220572186193">"Sound from your device, like music, calls and ringtones"</string> diff --git a/packages/SystemUI/res/values-es-rUS/strings.xml b/packages/SystemUI/res/values-es-rUS/strings.xml index f9f50ec0fef3..66aa3e749cf9 100644 --- a/packages/SystemUI/res/values-es-rUS/strings.xml +++ b/packages/SystemUI/res/values-es-rUS/strings.xml @@ -248,7 +248,7 @@ <string name="accessibility_remove_notification" msgid="1641455251495815527">"Eliminar notificación"</string> <string name="accessibility_gps_enabled" msgid="4061313248217660858">"GPS habilitado"</string> <string name="accessibility_gps_acquiring" msgid="896207402196024040">"Adquisición de GPS"</string> - <string name="accessibility_tty_enabled" msgid="1123180388823381118">"TeleTypewriter habilitado"</string> + <string name="accessibility_tty_enabled" msgid="1123180388823381118">"Teletipo habilitado"</string> <string name="accessibility_ringer_vibrate" msgid="6261841170896561364">"Timbre en vibración"</string> <string name="accessibility_ringer_silent" msgid="8994620163934249882">"Timbre en silencio"</string> <!-- no translation found for accessibility_casting (8708751252897282313) --> @@ -708,17 +708,17 @@ <string name="inline_silent_button_keep_alerting" msgid="6577845442184724992">"Seguir recibiendo alertas"</string> <string name="inline_turn_off_notifications" msgid="8543989584403106071">"Desactivar notificaciones"</string> <string name="inline_keep_showing_app" msgid="4393429060390649757">"¿Quieres seguir viendo las notificaciones de esta app?"</string> - <string name="notification_silence_title" msgid="8608090968400832335">"Silencio"</string> + <string name="notification_silence_title" msgid="8608090968400832335">"Silenciada"</string> <string name="notification_alert_title" msgid="3656229781017543655">"Predeterminada"</string> <string name="notification_bubble_title" msgid="8330481035191903164">"Cuadro"</string> <string name="notification_channel_summary_low" msgid="4860617986908931158">"Sin sonido ni vibración"</string> - <string name="notification_conversation_summary_low" msgid="1734433426085468009">"No suena ni vibra, y aparece en una parte inferior de la sección de conversaciones"</string> - <string name="notification_channel_summary_default" msgid="3282930979307248890">"Puede sonar o vibrar en función de la configuración del teléfono"</string> + <string name="notification_conversation_summary_low" msgid="1734433426085468009">"No suena ni vibra, y aparece en la parte inferior de la sección de conversaciones."</string> + <string name="notification_channel_summary_default" msgid="3282930979307248890">"Puede sonar o vibrar en función de la configuración del teléfono."</string> <string name="notification_channel_summary_default_with_bubbles" msgid="1782419896613644568">"Puede sonar o vibrar en función de la configuración del teléfono. Conversaciones de la burbuja de <xliff:g id="APP_NAME">%1$s</xliff:g> de forma predeterminada."</string> <string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Retiene tu atención con un acceso directo flotante a este contenido."</string> - <string name="notification_channel_summary_priority" msgid="7952654515769021553">"Aparece en la parte superior de la sección de conversaciones, en forma de burbuja flotante, y muestra la foto de perfil en la pantalla de bloqueo"</string> + <string name="notification_channel_summary_priority" msgid="7952654515769021553">"Aparece en la parte superior de la sección de conversaciones, en forma de burbuja flotante, y muestra la foto de perfil en la pantalla de bloqueo."</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Configuración"</string> - <string name="notification_priority_title" msgid="2079708866333537093">"Prioridad"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"Prioritaria"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> no admite funciones de conversación"</string> <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"No hay burbujas recientes"</string> <string name="bubble_overflow_empty_subtitle" msgid="2030874469510497397">"Las burbujas recientes y las que se descartaron aparecerán aquí"</string> diff --git a/packages/SystemUI/res/values-es/strings.xml b/packages/SystemUI/res/values-es/strings.xml index e427cce00caa..dc15bdce0373 100644 --- a/packages/SystemUI/res/values-es/strings.xml +++ b/packages/SystemUI/res/values-es/strings.xml @@ -397,7 +397,7 @@ <string name="quick_settings_connected_battery_level" msgid="1322075669498906959">"Conectado (<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de batería)"</string> <string name="quick_settings_connecting" msgid="2381969772953268809">"Conectando..."</string> <string name="quick_settings_tethering_label" msgid="5257299852322475780">"Compartir conexión"</string> - <string name="quick_settings_hotspot_label" msgid="1199196300038363424">"Zona Wi-Fi"</string> + <string name="quick_settings_hotspot_label" msgid="1199196300038363424">"Punto de acceso"</string> <string name="quick_settings_hotspot_secondary_label_transient" msgid="7585604088079160564">"Activando…"</string> <string name="quick_settings_hotspot_secondary_label_data_saver_enabled" msgid="1280433136266439372">"Ahorro de datos activado"</string> <plurals name="quick_settings_hotspot_secondary_label_num_devices" formatted="false" msgid="3142308865165871976"> @@ -662,7 +662,7 @@ <string name="alarm_template" msgid="2234991538018805736">"a las <xliff:g id="WHEN">%1$s</xliff:g>"</string> <string name="alarm_template_far" msgid="3561752195856839456">"el <xliff:g id="WHEN">%1$s</xliff:g>"</string> <string name="accessibility_quick_settings_detail" msgid="544463655956179791">"Ajustes rápidos, <xliff:g id="TITLE">%s</xliff:g>."</string> - <string name="accessibility_status_bar_hotspot" msgid="2888479317489131669">"Zona Wi-Fi"</string> + <string name="accessibility_status_bar_hotspot" msgid="2888479317489131669">"Punto de acceso"</string> <string name="accessibility_managed_profile" msgid="4703836746209377356">"Perfil de trabajo"</string> <string name="tuner_warning_title" msgid="7721976098452135267">"Diversión solo para algunos"</string> <string name="tuner_warning" msgid="1861736288458481650">"El configurador de UI del sistema te ofrece otras formas de modificar y personalizar la interfaz de usuario de Android. Estas funciones experimentales pueden cambiar, fallar o desaparecer en futuras versiones. Te recomendamos que tengas cuidado."</string> @@ -712,11 +712,11 @@ <string name="notification_alert_title" msgid="3656229781017543655">"Predeterminado"</string> <string name="notification_bubble_title" msgid="8330481035191903164">"Burbuja"</string> <string name="notification_channel_summary_low" msgid="4860617986908931158">"Sin sonido ni vibración"</string> - <string name="notification_conversation_summary_low" msgid="1734433426085468009">"Sin sonido ni vibración y se muestra más abajo en la sección de conversaciones"</string> + <string name="notification_conversation_summary_low" msgid="1734433426085468009">"Sin sonido ni vibración, y se muestra más abajo en la sección de conversaciones"</string> <string name="notification_channel_summary_default" msgid="3282930979307248890">"Es posible que suene o vibre según los ajustes del teléfono"</string> <string name="notification_channel_summary_default_with_bubbles" msgid="1782419896613644568">"Es posible que suene o vibre según los ajustes del teléfono. Las conversaciones de <xliff:g id="APP_NAME">%1$s</xliff:g> aparecen como burbujas de forma predeterminada."</string> <string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Llama tu atención con un acceso directo flotante a este contenido."</string> - <string name="notification_channel_summary_priority" msgid="7952654515769021553">"Se muestra arriba en la sección de conversaciones en forma de burbuja flotante, y la imagen de perfil aparece en la pantalla de bloqueo"</string> + <string name="notification_channel_summary_priority" msgid="7952654515769021553">"Se muestra arriba en la sección de conversaciones, como burbuja flotante, y la imagen de perfil aparece en la pantalla de bloqueo"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Ajustes"</string> <string name="notification_priority_title" msgid="2079708866333537093">"Prioridad"</string> <string name="no_shortcut" msgid="8257177117568230126">"No se pueden usar funciones de conversación con <xliff:g id="APP_NAME">%1$s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-fa/strings.xml b/packages/SystemUI/res/values-fa/strings.xml index 6dde6e8f887c..15cdb3b4b21b 100644 --- a/packages/SystemUI/res/values-fa/strings.xml +++ b/packages/SystemUI/res/values-fa/strings.xml @@ -248,7 +248,7 @@ <string name="accessibility_remove_notification" msgid="1641455251495815527">"پاک کردن اعلان"</string> <string name="accessibility_gps_enabled" msgid="4061313248217660858">"GPS فعال شد."</string> <string name="accessibility_gps_acquiring" msgid="896207402196024040">"دستیابی به GPS."</string> - <string name="accessibility_tty_enabled" msgid="1123180388823381118">"TeleTypewriter فعال شد."</string> + <string name="accessibility_tty_enabled" msgid="1123180388823381118">"تلهتایپ فعال شد."</string> <string name="accessibility_ringer_vibrate" msgid="6261841170896561364">"زنگ لرزشی."</string> <string name="accessibility_ringer_silent" msgid="8994620163934249882">"زنگ بیصدا."</string> <!-- no translation found for accessibility_casting (8708751252897282313) --> @@ -433,7 +433,7 @@ <string name="quick_settings_screen_record_start" msgid="1574725369331638985">"شروع"</string> <string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"توقف"</string> <string name="media_seamless_remote_device" msgid="177033467332920464">"دستگاه"</string> - <string name="recents_swipe_up_onboarding" msgid="2820265886420993995">"برای تغییر برنامهها، تند به بالا بکشید"</string> + <string name="recents_swipe_up_onboarding" msgid="2820265886420993995">"برای تغییر برنامهها، تند بهبالا بکشید"</string> <string name="recents_quick_scrub_onboarding" msgid="765934300283514912">"برای جابهجایی سریع میان برنامهها، به چپ بکشید"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"تغییر وضعیت نمای کلی"</string> <string name="expanded_header_battery_charged" msgid="5307907517976548448">"شارژ کامل شد"</string> @@ -452,8 +452,8 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"اعلانهای کمتر فوری در زیر"</string> <string name="notification_tap_again" msgid="4477318164947497249">"دوباره ضربه بزنید تا باز شود"</string> - <string name="keyguard_unlock" msgid="8031975796351361601">"برای باز کردن، انگشتتان را تند به بالا بکشید"</string> - <string name="keyguard_retry" msgid="886802522584053523">"برای امتحان مجدد، انگشتتان را تند به بالا بکشید"</string> + <string name="keyguard_unlock" msgid="8031975796351361601">"برای باز کردن، انگشتتان را تند بهبالا بکشید"</string> + <string name="keyguard_retry" msgid="886802522584053523">"برای امتحان مجدد، انگشتتان را تند بهبالا بکشید"</string> <string name="do_disclosure_generic" msgid="4896482821974707167">"این دستگاه به سازمان شما تعلق دارد"</string> <string name="do_disclosure_with_name" msgid="2091641464065004091">"این دستگاه به <xliff:g id="ORGANIZATION_NAME">%s</xliff:g> تعلق دارد"</string> <string name="phone_hint" msgid="6682125338461375925">"انگشتتان را از نماد تلفن تند بکشید"</string> @@ -802,7 +802,7 @@ <string name="keyboard_shortcut_group_system_back" msgid="1055709713218453863">"برگشت"</string> <string name="keyboard_shortcut_group_system_notifications" msgid="3615971650562485878">"اعلانها"</string> <string name="keyboard_shortcut_group_system_shortcuts_helper" msgid="4856808328618265589">"میانبرهای صفحهکلید"</string> - <string name="keyboard_shortcut_group_system_switch_input" msgid="952555530383268166">"تغییر طرحبندی صفحهکلید"</string> + <string name="keyboard_shortcut_group_system_switch_input" msgid="952555530383268166">"تغییر جانمایی صفحهکلید"</string> <string name="keyboard_shortcut_group_applications" msgid="7386239431100651266">"برنامهها"</string> <string name="keyboard_shortcut_group_applications_assist" msgid="771606231466098742">"دستیار"</string> <string name="keyboard_shortcut_group_applications_browser" msgid="2776211137869809251">"مرورگر"</string> @@ -979,7 +979,7 @@ <string name="slice_permission_text_2" msgid="6758906940360746983">"- میتواند در <xliff:g id="APP">%1$s</xliff:g> اقدام انجام دهد"</string> <string name="slice_permission_checkbox" msgid="4242888137592298523">"به <xliff:g id="APP">%1$s</xliff:g> اجازه داده شود تکههایی از برنامهها نشان دهد"</string> <string name="slice_permission_allow" msgid="6340449521277951123">"مجاز"</string> - <string name="slice_permission_deny" msgid="6870256451658176895">"رد کردن"</string> + <string name="slice_permission_deny" msgid="6870256451658176895">"مجاز نبودن"</string> <string name="auto_saver_title" msgid="6873691178754086596">"برای زمانبندی «بهینهسازی باتری» ضربه بزنید"</string> <string name="auto_saver_text" msgid="3214960308353838764">"وقتی باتری روبهاتمام است، بهینهسازی باتری را روشن کنید"</string> <string name="no_auto_saver_action" msgid="7467924389609773835">"نه متشکرم"</string> diff --git a/packages/SystemUI/res/values-fi/strings.xml b/packages/SystemUI/res/values-fi/strings.xml index 1fe5ba2d7208..7573d29d79cb 100644 --- a/packages/SystemUI/res/values-fi/strings.xml +++ b/packages/SystemUI/res/values-fi/strings.xml @@ -381,7 +381,7 @@ <string name="quick_settings_wifi_on_label" msgid="2489928193654318511">"Wi-Fi on käytössä"</string> <string name="quick_settings_wifi_detail_empty_text" msgid="483130889414601732">"Ei Wi-Fi-verkkoja käytettävissä"</string> <string name="quick_settings_wifi_secondary_label_transient" msgid="7501659015509357887">"Otetaan käyttöön…"</string> - <string name="quick_settings_cast_title" msgid="2279220930629235211">"Näytön suoratoisto"</string> + <string name="quick_settings_cast_title" msgid="2279220930629235211">"Näytön striimaus"</string> <string name="quick_settings_casting" msgid="1435880708719268055">"Lähetetään"</string> <string name="quick_settings_cast_device_default_name" msgid="6988469571141331700">"Nimetön laite"</string> <string name="quick_settings_cast_device_default_description" msgid="2580520859212250265">"Valmis lähetystä varten"</string> diff --git a/packages/SystemUI/res/values-fi/strings_tv.xml b/packages/SystemUI/res/values-fi/strings_tv.xml index 3a80561e702f..e22a1660db0c 100644 --- a/packages/SystemUI/res/values-fi/strings_tv.xml +++ b/packages/SystemUI/res/values-fi/strings_tv.xml @@ -24,5 +24,5 @@ <string name="pip_close" msgid="5775212044472849930">"Sulje PIP"</string> <string name="pip_fullscreen" msgid="3877997489869475181">"Koko näyttö"</string> <string name="mic_active" msgid="5766614241012047024">"Mikrofoni aktiivinen"</string> - <string name="app_accessed_mic" msgid="2754428675130470196">"%1$s käytti mikrofoniasi"</string> + <string name="app_accessed_mic" msgid="2754428675130470196">"%1$s sai pääsyn mikrofoniisi"</string> </resources> diff --git a/packages/SystemUI/res/values-gl/strings.xml b/packages/SystemUI/res/values-gl/strings.xml index bd7686f9d061..2c471209d5ac 100644 --- a/packages/SystemUI/res/values-gl/strings.xml +++ b/packages/SystemUI/res/values-gl/strings.xml @@ -248,7 +248,7 @@ <string name="accessibility_remove_notification" msgid="1641455251495815527">"Eliminar notificación."</string> <string name="accessibility_gps_enabled" msgid="4061313248217660858">"GPS activado"</string> <string name="accessibility_gps_acquiring" msgid="896207402196024040">"Obtendo GPS."</string> - <string name="accessibility_tty_enabled" msgid="1123180388823381118">"TeleTypewriter activado"</string> + <string name="accessibility_tty_enabled" msgid="1123180388823381118">"Teletipo activado"</string> <string name="accessibility_ringer_vibrate" msgid="6261841170896561364">"Timbre en vibración"</string> <string name="accessibility_ringer_silent" msgid="8994620163934249882">"Timbre silenciado"</string> <!-- no translation found for accessibility_casting (8708751252897282313) --> @@ -712,11 +712,11 @@ <string name="notification_alert_title" msgid="3656229781017543655">"Configuración predeterminada"</string> <string name="notification_bubble_title" msgid="8330481035191903164">"Burbulla"</string> <string name="notification_channel_summary_low" msgid="4860617986908931158">"Sen son nin vibración"</string> - <string name="notification_conversation_summary_low" msgid="1734433426085468009">"Non soa nin vibra, e aparece máis abaixo na sección de conversas"</string> - <string name="notification_channel_summary_default" msgid="3282930979307248890">"Podería soar ou vibrar en función da configuración do teléfono"</string> + <string name="notification_conversation_summary_low" msgid="1734433426085468009">"Sen son nin vibración, e aparecen máis abaixo na sección de conversas"</string> + <string name="notification_channel_summary_default" msgid="3282930979307248890">"Poderían soar ou vibrar en función da configuración do teléfono"</string> <string name="notification_channel_summary_default_with_bubbles" msgid="1782419896613644568">"Podería soar ou vibrar en función da configuración do teléfono. Conversas desde a burbulla da aplicación <xliff:g id="APP_NAME">%1$s</xliff:g> de forma predeterminada."</string> <string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Mantén a túa atención cun atallo flotante a este contido."</string> - <string name="notification_channel_summary_priority" msgid="7952654515769021553">"Móstrase na parte superior da sección de conversas en forma de burbulla flotante e aparece a imaxe do perfil na pantalla de bloqueo"</string> + <string name="notification_channel_summary_priority" msgid="7952654515769021553">"Móstranse na parte superior da sección de conversas en forma de burbulla flotante e aparece a imaxe do perfil na pantalla de bloqueo"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Configuración"</string> <string name="notification_priority_title" msgid="2079708866333537093">"Prioridade"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> non admite funcións de conversa"</string> @@ -786,7 +786,7 @@ <string name="keyboard_key_media_stop" msgid="1509943745250377699">"Deter"</string> <string name="keyboard_key_media_next" msgid="8502476691227914952">"Seguinte"</string> <string name="keyboard_key_media_previous" msgid="5637875709190955351">"Anterior"</string> - <string name="keyboard_key_media_rewind" msgid="3450387734224327577">"Rebobinar"</string> + <string name="keyboard_key_media_rewind" msgid="3450387734224327577">"Retroceder"</string> <string name="keyboard_key_media_fast_forward" msgid="3572444327046911822">"Avance rápido"</string> <string name="keyboard_key_page_up" msgid="173914303254199845">"Re Páx"</string> <string name="keyboard_key_page_down" msgid="9035902490071829731">"Av Páx"</string> diff --git a/packages/SystemUI/res/values-gu/strings.xml b/packages/SystemUI/res/values-gu/strings.xml index b495bb357774..d793c7249b48 100644 --- a/packages/SystemUI/res/values-gu/strings.xml +++ b/packages/SystemUI/res/values-gu/strings.xml @@ -859,7 +859,7 @@ <string name="drag_to_rearrange_tiles" msgid="2143204300089638620">"ટાઇલને ફરીથી ગોઠવવા માટે આંગળી દબાવીને ખેંચો"</string> <string name="drag_to_remove_tiles" msgid="4682194717573850385">"દૂર કરવા માટે અહીં ખેંચો"</string> <string name="drag_to_remove_disabled" msgid="933046987838658850">"તમને ઓછામાં ઓછી <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> ટાઇલની જરૂર છે"</string> - <string name="qs_edit" msgid="5583565172803472437">"સંપાદિત કરો"</string> + <string name="qs_edit" msgid="5583565172803472437">"ફેરફાર કરો"</string> <string name="tuner_time" msgid="2450785840990529997">"સમય"</string> <string-array name="clock_options"> <item msgid="3986445361435142273">"કલાક, મિનિટ અને સેકન્ડ બતાવો"</item> diff --git a/packages/SystemUI/res/values-hi/strings.xml b/packages/SystemUI/res/values-hi/strings.xml index 44c065672a6b..b48908864d7f 100644 --- a/packages/SystemUI/res/values-hi/strings.xml +++ b/packages/SystemUI/res/values-hi/strings.xml @@ -514,7 +514,7 @@ <string name="manage_notifications_history_text" msgid="57055985396576230">"इतिहास"</string> <string name="notification_section_header_incoming" msgid="850925217908095197">"नई सूचनाएं"</string> <string name="notification_section_header_gentle" msgid="6804099527336337197">"बिना आवाज़ किए मिलने वाली सूचनाएं"</string> - <string name="notification_section_header_alerting" msgid="5581175033680477651">"वाइब्रेशन या आवाज़ के साथ मिलने वाली सूचनाएं"</string> + <string name="notification_section_header_alerting" msgid="5581175033680477651">"सूचनाएं"</string> <string name="notification_section_header_conversations" msgid="821834744538345661">"बातचीत"</string> <string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"बिना आवाज़ की सभी सूचनाएं हटाएं"</string> <string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"\'परेशान न करें\' सुविधा के ज़रिए कुछ समय के लिए सूचनाएं दिखाना रोक दिया गया है"</string> @@ -714,11 +714,11 @@ <string name="notification_alert_title" msgid="3656229781017543655">"डिफ़ॉल्ट"</string> <string name="notification_bubble_title" msgid="8330481035191903164">"बबल"</string> <string name="notification_channel_summary_low" msgid="4860617986908931158">"किसी तरह की आवाज़ या वाइब्रेशन न हो"</string> - <string name="notification_conversation_summary_low" msgid="1734433426085468009">"इससे किसी तरह की आवाज़ या वाइब्रेशन नहीं होता और \'बातचीत\', सेक्शन में सबसे नीचे दिखती है"</string> + <string name="notification_conversation_summary_low" msgid="1734433426085468009">"इससे किसी तरह की आवाज़ या वाइब्रेशन नहीं होता और बातचीत, सेक्शन में सबसे नीचे दिखती है"</string> <string name="notification_channel_summary_default" msgid="3282930979307248890">"फ़ोन की सेटिंग के आधार पर, सूचना आने पर घंटी बज सकती है या वाइब्रेशन हो सकता है"</string> <string name="notification_channel_summary_default_with_bubbles" msgid="1782419896613644568">"फ़ोन की सेटिंग के आधार पर, सूचना आने पर घंटी बज सकती है या वाइब्रेशन हो सकता है. <xliff:g id="APP_NAME">%1$s</xliff:g> में होने वाली बातचीत, डिफ़ॉल्ट रूप से बबल के तौर पर दिखती है."</string> <string name="notification_channel_summary_bubble" msgid="7235935211580860537">"फ़्लोट करने वाले शॉर्टकट की मदद से इस सामग्री पर आपका ध्यान बना रहता है."</string> - <string name="notification_channel_summary_priority" msgid="7952654515769021553">"इससे बातचीत की सुविधा, सेक्शन में सबसे ऊपर और फ़्लोटिंग बबल के तौर पर दिखती है. साथ ही, लॉक स्क्रीन पर प्रोफ़ाइल फ़ोटो दिखती है"</string> + <string name="notification_channel_summary_priority" msgid="7952654515769021553">"इससे बातचीत, सेक्शन में सबसे ऊपर और फ़्लोटिंग बबल के तौर पर दिखती है. साथ ही, लॉक स्क्रीन पर प्रोफ़ाइल फ़ोटो दिखती है"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"सेटिंग"</string> <string name="notification_priority_title" msgid="2079708866333537093">"प्राथमिकता"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> पर बातचीत की सुविधाएं काम नहीं करतीं"</string> diff --git a/packages/SystemUI/res/values-hy/strings.xml b/packages/SystemUI/res/values-hy/strings.xml index 6a7d0b28db83..659100690a4c 100644 --- a/packages/SystemUI/res/values-hy/strings.xml +++ b/packages/SystemUI/res/values-hy/strings.xml @@ -248,7 +248,7 @@ <string name="accessibility_remove_notification" msgid="1641455251495815527">"Մաքրել ծանուցումը:"</string> <string name="accessibility_gps_enabled" msgid="4061313248217660858">"GPS-ը միացված է:"</string> <string name="accessibility_gps_acquiring" msgid="896207402196024040">"GPS-ի ստացում:"</string> - <string name="accessibility_tty_enabled" msgid="1123180388823381118">"Հեռամուտքագրիչը միացված է:"</string> + <string name="accessibility_tty_enabled" msgid="1123180388823381118">"Հեռատիպը միացված է:"</string> <string name="accessibility_ringer_vibrate" msgid="6261841170896561364">"Թրթռազանգ:"</string> <string name="accessibility_ringer_silent" msgid="8994620163934249882">"Զանգակը լռեցված է:"</string> <!-- no translation found for accessibility_casting (8708751252897282313) --> @@ -513,7 +513,7 @@ <string name="notification_section_header_incoming" msgid="850925217908095197">"Նոր"</string> <string name="notification_section_header_gentle" msgid="6804099527336337197">"Անձայն"</string> <string name="notification_section_header_alerting" msgid="5581175033680477651">"Ծանուցումներ"</string> - <string name="notification_section_header_conversations" msgid="821834744538345661">"Խոսակցություններ"</string> + <string name="notification_section_header_conversations" msgid="821834744538345661">"Զրույցներ"</string> <string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"Ջնջել բոլոր անձայն ծանուցումները"</string> <string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"Ծանուցումները չեն ցուցադրվի «Չանհանգստացնել» ռեժիմում"</string> <string name="media_projection_action_text" msgid="3634906766918186440">"Սկսել հիմա"</string> diff --git a/packages/SystemUI/res/values-in/strings.xml b/packages/SystemUI/res/values-in/strings.xml index 905f3920346c..e4819bf74f9a 100644 --- a/packages/SystemUI/res/values-in/strings.xml +++ b/packages/SystemUI/res/values-in/strings.xml @@ -599,7 +599,7 @@ <string name="screen_pinning_description_accessible" msgid="7386449191953535332">"Ini akan terus ditampilkan sampai Anda melepas pin. Sentuh lama tombol Ringkasan untuk melepas pin."</string> <string name="screen_pinning_description_recents_invisible_accessible" msgid="2857071808674481986">"Ini akan terus ditampilkan sampai Anda melepas pin. Sentuh lama tombol Beranda untuk melepas pin."</string> <string name="screen_pinning_exposes_personal_data" msgid="8189852022981524789">"Data pribadi dapat diakses (seperti kontak dan konten email)."</string> - <string name="screen_pinning_can_open_other_apps" msgid="7529756813231421455">"Aplikasi yang dipasangi pin dapat membuka aplikasi lain."</string> + <string name="screen_pinning_can_open_other_apps" msgid="7529756813231421455">"Aplikasi yang disematkan dapat membuka aplikasi lain."</string> <string name="screen_pinning_toast" msgid="8177286912533744328">"Untuk melepas pin aplikasi ini, sentuh & lama tombol Kembali dan Ringkasan"</string> <string name="screen_pinning_toast_recents_invisible" msgid="6850978077443052594">"Untuk melepas pin aplikasi ini, sentuh & lama tombol Kembali dan Layar utama"</string> <string name="screen_pinning_toast_gesture_nav" msgid="170699893395336705">"Untuk melepas pin aplikasi ini, geser ke atas & tahan"</string> @@ -856,7 +856,7 @@ <string name="left_icon" msgid="5036278531966897006">"Ikon kiri"</string> <string name="right_icon" msgid="1103955040645237425">"Ikon kanan"</string> <string name="drag_to_add_tiles" msgid="8933270127508303672">"Tahan dan tarik untuk menambahkan kartu"</string> - <string name="drag_to_rearrange_tiles" msgid="2143204300089638620">"Tahan dan tarik untuk mengatur ulang kartu"</string> + <string name="drag_to_rearrange_tiles" msgid="2143204300089638620">"Tahan dan tarik untuk menata ulang kartu"</string> <string name="drag_to_remove_tiles" msgid="4682194717573850385">"Tarik ke sini untuk menghapus"</string> <string name="drag_to_remove_disabled" msgid="933046987838658850">"Anda membutuhkan setidaknya <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> kartu"</string> <string name="qs_edit" msgid="5583565172803472437">"Edit"</string> diff --git a/packages/SystemUI/res/values-is/strings.xml b/packages/SystemUI/res/values-is/strings.xml index dc541c876f39..507bdc9123af 100644 --- a/packages/SystemUI/res/values-is/strings.xml +++ b/packages/SystemUI/res/values-is/strings.xml @@ -855,10 +855,10 @@ <string name="right_keycode" msgid="2480715509844798438">"Lykiltákn til hægri"</string> <string name="left_icon" msgid="5036278531966897006">"Tákn til vinstri"</string> <string name="right_icon" msgid="1103955040645237425">"Tákn til hægri"</string> - <string name="drag_to_add_tiles" msgid="8933270127508303672">"Haltu inni og dragðu til að bæta við reitum"</string> + <string name="drag_to_add_tiles" msgid="8933270127508303672">"Haltu inni og dragðu til að bæta við flísum"</string> <string name="drag_to_rearrange_tiles" msgid="2143204300089638620">"Haltu og dragðu til að endurraða flísum"</string> <string name="drag_to_remove_tiles" msgid="4682194717573850385">"Dragðu hingað til að fjarlægja"</string> - <string name="drag_to_remove_disabled" msgid="933046987838658850">"Reitirnir mega ekki vera færri en <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g>"</string> + <string name="drag_to_remove_disabled" msgid="933046987838658850">"Flísarnar mega ekki vera færri en <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g>"</string> <string name="qs_edit" msgid="5583565172803472437">"Breyta"</string> <string name="tuner_time" msgid="2450785840990529997">"Tími"</string> <string-array name="clock_options"> diff --git a/packages/SystemUI/res/values-it/strings.xml b/packages/SystemUI/res/values-it/strings.xml index 7ed5f45b5dca..5a735aef75d3 100644 --- a/packages/SystemUI/res/values-it/strings.xml +++ b/packages/SystemUI/res/values-it/strings.xml @@ -716,7 +716,7 @@ <string name="notification_channel_summary_default" msgid="3282930979307248890">"Può suonare o vibrare in base alle impostazioni del telefono"</string> <string name="notification_channel_summary_default_with_bubbles" msgid="1782419896613644568">"Può suonare o vibrare in base alle impostazioni del telefono. Conversazioni dalla bolla <xliff:g id="APP_NAME">%1$s</xliff:g> per impostazione predefinita."</string> <string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Mantiene la tua attenzione con una scorciatoia mobile a questi contenuti."</string> - <string name="notification_channel_summary_priority" msgid="7952654515769021553">"Viene mostrata in cima alla sezione delle conversazioni, appare sotto forma di bolla mobile, mostra l\'immagine del profilo nella schermata di blocco"</string> + <string name="notification_channel_summary_priority" msgid="7952654515769021553">"Appare in cima alla sezione delle conversazioni e sotto forma di bolla mobile, mostra l\'immagine del profilo nella schermata di blocco"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Impostazioni"</string> <string name="notification_priority_title" msgid="2079708866333537093">"Priorità"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> non supporta le funzionalità delle conversazioni"</string> @@ -987,7 +987,7 @@ <string name="auto_saver_enabled_text" msgid="7889491183116752719">"Il Risparmio energetico verrà attivato automaticamente quando la carica della batteria sarà inferiore a <xliff:g id="PERCENTAGE">%d</xliff:g>%%."</string> <string name="open_saver_setting_action" msgid="2111461909782935190">"Impostazioni"</string> <string name="auto_saver_okay_action" msgid="7815925750741935386">"OK"</string> - <string name="heap_dump_tile_name" msgid="2464189856478823046">"Esegui dump heap SysUI"</string> + <string name="heap_dump_tile_name" msgid="2464189856478823046">"Dump heap SysUI"</string> <string name="sensor_privacy_mode" msgid="4462866919026513692">"Sensori disattivati"</string> <string name="device_services" msgid="1549944177856658705">"Servizi del dispositivo"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"Senza titolo"</string> diff --git a/packages/SystemUI/res/values-iw/strings.xml b/packages/SystemUI/res/values-iw/strings.xml index b72bb4a48c3a..1b7e1e81cd9d 100644 --- a/packages/SystemUI/res/values-iw/strings.xml +++ b/packages/SystemUI/res/values-iw/strings.xml @@ -960,7 +960,7 @@ <string name="notification_channel_general" msgid="4384774889645929705">"הודעות כלליות"</string> <string name="notification_channel_storage" msgid="2720725707628094977">"אחסון"</string> <string name="notification_channel_hints" msgid="7703783206000346876">"טיפים"</string> - <string name="instant_apps" msgid="8337185853050247304">"אפליקציות אינסטנט"</string> + <string name="instant_apps" msgid="8337185853050247304">"אפליקציות ללא התקנה"</string> <string name="instant_apps_title" msgid="8942706782103036910">"<xliff:g id="APP">%1$s</xliff:g> פועלת"</string> <string name="instant_apps_message" msgid="6112428971833011754">"האפליקציה נפתחת בלי התקנה."</string> <string name="instant_apps_message_with_help" msgid="1816952263531203932">"האפליקציה נפתחת בלי התקנה. אפשר להקיש כדי לקבל מידע נוסף."</string> diff --git a/packages/SystemUI/res/values-ka/strings.xml b/packages/SystemUI/res/values-ka/strings.xml index 9f94f9bbf7dc..bf86881316ee 100644 --- a/packages/SystemUI/res/values-ka/strings.xml +++ b/packages/SystemUI/res/values-ka/strings.xml @@ -716,7 +716,7 @@ <string name="notification_channel_summary_default" msgid="3282930979307248890">"დარეკვა ან ვიბრაცია ტელეფონის პარამეტრების მიხედვით"</string> <string name="notification_channel_summary_default_with_bubbles" msgid="1782419896613644568">"დარეკვა ან ვიბრაცია ტელეფონის პარამეტრების მიხედვით. მიმოწერები <xliff:g id="APP_NAME">%1$s</xliff:g>-ის ბუშტიდან, ნაგულისხმევად."</string> <string name="notification_channel_summary_bubble" msgid="7235935211580860537">"იპყრობს თქვენს ყურადღებას ამ კონტენტის მოლივლივე მალსახმობით."</string> - <string name="notification_channel_summary_priority" msgid="7952654515769021553">"გამოჩნდება მიმოწერების სექციის ზედა ნაწილში მოლივლივე ბუშტის სახით, აჩვენებს პროფილის სურათს ჩაკეტილ ეკრანზე"</string> + <string name="notification_channel_summary_priority" msgid="7952654515769021553">"გამოჩნდება მიმოწერების ზედა ნაწილში ბუშტის სახით, აჩვენებს პროფილის სურათს ჩაკეტილ ეკრანზე"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"პარამეტრები"</string> <string name="notification_priority_title" msgid="2079708866333537093">"პრიორიტეტი"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g>-ს არ აქვს მიმოწერის ფუნქციების მხარდაჭერა"</string> diff --git a/packages/SystemUI/res/values-kk/strings.xml b/packages/SystemUI/res/values-kk/strings.xml index 8a395ae20a39..2232f3f0ddb2 100644 --- a/packages/SystemUI/res/values-kk/strings.xml +++ b/packages/SystemUI/res/values-kk/strings.xml @@ -28,7 +28,7 @@ <string name="battery_low_percent_format" msgid="4276661262843170964">"<xliff:g id="PERCENTAGE">%s</xliff:g> қалды"</string> <string name="battery_low_percent_format_hybrid" msgid="3985614339605686167">"Пайдалану барысына байланысты <xliff:g id="PERCENTAGE">%1$s</xliff:g> заряд, шамамен <xliff:g id="TIME">%2$s</xliff:g> қалды"</string> <string name="battery_low_percent_format_hybrid_short" msgid="5917433188456218857">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> заряд, шамамен <xliff:g id="TIME">%2$s</xliff:g> қалды"</string> - <string name="battery_low_percent_format_saver_started" msgid="4968468824040940688">"<xliff:g id="PERCENTAGE">%s</xliff:g> қалды. Battery Saver қосулы."</string> + <string name="battery_low_percent_format_saver_started" msgid="4968468824040940688">"<xliff:g id="PERCENTAGE">%s</xliff:g> қалды. Батареяны үнемдеу режимі қосулы."</string> <string name="invalid_charger" msgid="4370074072117767416">"USB арқылы зарядтау мүмкін емес. Құрылғымен бірге берілген зарядтау құралын пайдаланыңыз."</string> <string name="invalid_charger_title" msgid="938685362320735167">"USB арқылы зарядтау мүмкін емес"</string> <string name="invalid_charger_text" msgid="2339310107232691577">"Құрылғымен бірге берілген зарядтау құралын пайдаланыңыз"</string> @@ -421,7 +421,7 @@ <string name="quick_settings_night_secondary_label_on_at" msgid="3584738542293528235">"Қосылу уақыты: <xliff:g id="TIME">%s</xliff:g>"</string> <string name="quick_settings_secondary_label_until" msgid="1883981263191927372">"<xliff:g id="TIME">%s</xliff:g> дейін"</string> <string name="quick_settings_ui_mode_night_label" msgid="1398928270610780470">"Қараңғы тақырып"</string> - <string name="quick_settings_dark_mode_secondary_label_battery_saver" msgid="4990712734503013251">"Battery Saver"</string> + <string name="quick_settings_dark_mode_secondary_label_battery_saver" msgid="4990712734503013251">"Батареяны үнемдеу режимі"</string> <string name="quick_settings_dark_mode_secondary_label_on_at_sunset" msgid="6017379738102015710">"Күн батқанда қосу"</string> <string name="quick_settings_dark_mode_secondary_label_until_sunrise" msgid="4404885070316716472">"Күн шыққанға дейін"</string> <string name="quick_settings_dark_mode_secondary_label_on_at" msgid="5128758823486361279">"Қосылу уақыты: <xliff:g id="TIME">%s</xliff:g>"</string> @@ -712,13 +712,13 @@ <string name="notification_alert_title" msgid="3656229781017543655">"Әдепкі"</string> <string name="notification_bubble_title" msgid="8330481035191903164">"Көпіршік"</string> <string name="notification_channel_summary_low" msgid="4860617986908931158">"Дыбыс не діріл қолданылмайды"</string> - <string name="notification_conversation_summary_low" msgid="1734433426085468009">"Дыбыс не діріл қолданылмайды, төменде әңгімелер бөлімінде шығады"</string> + <string name="notification_conversation_summary_low" msgid="1734433426085468009">"Дыбыс не діріл қолданылмайды, әңгімелер бөлімінің төмен жағында шығады"</string> <string name="notification_channel_summary_default" msgid="3282930979307248890">"Телефон параметрлеріне байланысты шылдырлауы не дірілдеуі мүмкін"</string> <string name="notification_channel_summary_default_with_bubbles" msgid="1782419896613644568">"Телефон параметрлеріне байланысты шылдырлауы не дірілдеуі мүмкін. <xliff:g id="APP_NAME">%1$s</xliff:g> чаттары әдепкісінше қалқымалы етіп көрсетіледі."</string> <string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Осы мазмұнға бекітілген қалқымалы таңбашамен назарыңызды өзіне тартады."</string> <string name="notification_channel_summary_priority" msgid="7952654515769021553">"Әңгімелер бөлімінің жоғарғы жағында тұрады, қалқыма хабар түрінде шығады, құлыптаулы экранда профиль суретін көрсетеді"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Параметрлер"</string> - <string name="notification_priority_title" msgid="2079708866333537093">"Маңыздылығы"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"Маңызды"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> әңгімелесу функцияларын қолдамайды."</string> <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"Жақындағы қалқыма хабарлар жоқ"</string> <string name="bubble_overflow_empty_subtitle" msgid="2030874469510497397">"Соңғы және жабылған қалқыма хабарлар осы жерде көрсетіледі."</string> @@ -768,7 +768,7 @@ </plurals> <string name="battery_panel_title" msgid="5931157246673665963">"Батареяны пайдалану"</string> <string name="battery_detail_charging_summary" msgid="8821202155297559706">"Зарядтау кезінде Батарея үнемдегіш қол жетімді емес"</string> - <string name="battery_detail_switch_title" msgid="6940976502957380405">"Battery Saver"</string> + <string name="battery_detail_switch_title" msgid="6940976502957380405">"Батареяны үнемдеу режимі"</string> <string name="battery_detail_switch_summary" msgid="3668748557848025990">"Өнімділікті және фондық деректерді азайтады"</string> <string name="keyboard_key_button_template" msgid="8005673627272051429">"<xliff:g id="NAME">%1$s</xliff:g> түймесі"</string> <string name="keyboard_key_home" msgid="3734400625170020657">"Home"</string> @@ -859,7 +859,7 @@ <string name="drag_to_rearrange_tiles" msgid="2143204300089638620">"Элементтердің ретін өзгерту үшін оларды басып тұрып сүйреңіз"</string> <string name="drag_to_remove_tiles" msgid="4682194717573850385">"Керексіздерін осы жерге сүйреңіз"</string> <string name="drag_to_remove_disabled" msgid="933046987838658850">"Кемінде <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> бөлшек қажет."</string> - <string name="qs_edit" msgid="5583565172803472437">"Өңдеу"</string> + <string name="qs_edit" msgid="5583565172803472437">"Өзгерту"</string> <string name="tuner_time" msgid="2450785840990529997">"Уақыт"</string> <string-array name="clock_options"> <item msgid="3986445361435142273">"Сағаттарды, минуттарды және секундтарды көрсету"</item> diff --git a/packages/SystemUI/res/values-km/strings.xml b/packages/SystemUI/res/values-km/strings.xml index 0cb45778ed13..bdc302536e10 100644 --- a/packages/SystemUI/res/values-km/strings.xml +++ b/packages/SystemUI/res/values-km/strings.xml @@ -421,7 +421,7 @@ <string name="quick_settings_night_secondary_label_on_at" msgid="3584738542293528235">"បើកនៅម៉ោង <xliff:g id="TIME">%s</xliff:g>"</string> <string name="quick_settings_secondary_label_until" msgid="1883981263191927372">"រហូតដល់ម៉ោង <xliff:g id="TIME">%s</xliff:g>"</string> <string name="quick_settings_ui_mode_night_label" msgid="1398928270610780470">"រចនាប័ទ្មងងឹត"</string> - <string name="quick_settings_dark_mode_secondary_label_battery_saver" msgid="4990712734503013251">"កម្មវិធីសន្សំថ្ម"</string> + <string name="quick_settings_dark_mode_secondary_label_battery_saver" msgid="4990712734503013251">"មុខងារសន្សំថ្ម"</string> <string name="quick_settings_dark_mode_secondary_label_on_at_sunset" msgid="6017379738102015710">"បើកនៅពេលថ្ងៃលិច"</string> <string name="quick_settings_dark_mode_secondary_label_until_sunrise" msgid="4404885070316716472">"រហូតដល់ពេលថ្ងៃរះ"</string> <string name="quick_settings_dark_mode_secondary_label_on_at" msgid="5128758823486361279">"បើកនៅម៉ោង <xliff:g id="TIME">%s</xliff:g>"</string> @@ -768,7 +768,7 @@ </plurals> <string name="battery_panel_title" msgid="5931157246673665963">"ការប្រើប្រាស់ថ្ម"</string> <string name="battery_detail_charging_summary" msgid="8821202155297559706">"កម្មវិធីសន្សំថ្មមិនអាចប្រើបានអំឡុងពេលសាកថ្មទេ"</string> - <string name="battery_detail_switch_title" msgid="6940976502957380405">"កម្មវិធីសន្សំថ្ម"</string> + <string name="battery_detail_switch_title" msgid="6940976502957380405">"មុខងារសន្សំថ្ម"</string> <string name="battery_detail_switch_summary" msgid="3668748557848025990">"កាត់បន្ថយប្រតិបត្តិការ និងទិន្នន័យផ្ទៃខាងក្រោយ"</string> <string name="keyboard_key_button_template" msgid="8005673627272051429">"ប៊ូតុង <xliff:g id="NAME">%1$s</xliff:g>"</string> <string name="keyboard_key_home" msgid="3734400625170020657">"Home"</string> diff --git a/packages/SystemUI/res/values-kn/strings.xml b/packages/SystemUI/res/values-kn/strings.xml index 0aa53759a36c..38926cbaca86 100644 --- a/packages/SystemUI/res/values-kn/strings.xml +++ b/packages/SystemUI/res/values-kn/strings.xml @@ -389,7 +389,7 @@ <string name="quick_settings_cast_no_wifi" msgid="6980194769795014875">"ವೈ-ಫೈ ಸಂಪರ್ಕಗೊಂಡಿಲ್ಲ"</string> <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"ಪ್ರಕಾಶಮಾನ"</string> <string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="2325362583903258677">"ಸ್ವಯಂ"</string> - <string name="quick_settings_inversion_label" msgid="5078769633069667698">"ಬಣ್ಣಗಳನ್ನು ಬದಲಾಯಿಸಿ"</string> + <string name="quick_settings_inversion_label" msgid="5078769633069667698">"ಬಣ್ಣಗಳನ್ನು ಇನ್ವರ್ಟ್ ಮಾಡಿ"</string> <string name="quick_settings_color_space_label" msgid="537528291083575559">"ಬಣ್ಣ ತಿದ್ದುಪಡಿ ಮೋಡ್"</string> <string name="quick_settings_more_settings" msgid="2878235926753776694">"ಹೆಚ್ಚಿನ ಸೆಟ್ಟಿಂಗ್ಗಳು"</string> <string name="quick_settings_done" msgid="2163641301648855793">"ಮುಗಿದಿದೆ"</string> diff --git a/packages/SystemUI/res/values-ko/strings.xml b/packages/SystemUI/res/values-ko/strings.xml index 490ce15986e2..959cbbc57a02 100644 --- a/packages/SystemUI/res/values-ko/strings.xml +++ b/packages/SystemUI/res/values-ko/strings.xml @@ -373,7 +373,7 @@ <string name="quick_settings_time_label" msgid="3352680970557509303">"시간"</string> <string name="quick_settings_user_label" msgid="1253515509432672496">"나"</string> <string name="quick_settings_user_title" msgid="8673045967216204537">"사용자"</string> - <string name="quick_settings_user_new_user" msgid="3347905871336069666">"새 사용자"</string> + <string name="quick_settings_user_new_user" msgid="3347905871336069666">"신규 사용자"</string> <string name="quick_settings_wifi_label" msgid="2879507532983487244">"Wi-Fi"</string> <string name="quick_settings_wifi_not_connected" msgid="4071097522427039160">"연결되어 있지 않음"</string> <string name="quick_settings_wifi_no_network" msgid="6003178398713839313">"네트워크가 연결되지 않음"</string> @@ -475,7 +475,7 @@ <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"현재 사용자: <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_quick_contact" msgid="4504508915324898576">"프로필 표시"</string> <string name="user_add_user" msgid="4336657383006913022">"사용자 추가"</string> - <string name="user_new_user_name" msgid="2019166282704195789">"새 사용자"</string> + <string name="user_new_user_name" msgid="2019166282704195789">"신규 사용자"</string> <string name="guest_exit_guest_dialog_title" msgid="5015697561580641422">"게스트를 삭제하시겠습니까?"</string> <string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"이 세션에 있는 모든 앱과 데이터가 삭제됩니다."</string> <string name="guest_exit_guest_dialog_remove" msgid="7505817591242703757">"삭제"</string> @@ -716,7 +716,7 @@ <string name="notification_channel_summary_default" msgid="3282930979307248890">"휴대전화 설정에 따라 벨소리나 진동이 울릴 수 있음"</string> <string name="notification_channel_summary_default_with_bubbles" msgid="1782419896613644568">"휴대전화 설정에 따라 벨소리나 진동이 울릴 수 있습니다. 기본적으로 <xliff:g id="APP_NAME">%1$s</xliff:g>의 대화는 대화창으로 표시됩니다."</string> <string name="notification_channel_summary_bubble" msgid="7235935211580860537">"이 콘텐츠로 연결되는 플로팅 바로가기로 사용자의 주의를 끕니다."</string> - <string name="notification_channel_summary_priority" msgid="7952654515769021553">"대화 섹션 상단에 표시, 플로팅 대화창으로 표시, 그리고 잠금 화면에 프로필 사진이 표시됩니다."</string> + <string name="notification_channel_summary_priority" msgid="7952654515769021553">"대화 섹션 상단에 표시, 플로팅 대화창으로 표시, 그리고 잠금 화면에 프로필 사진이 표시됨"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"설정"</string> <string name="notification_priority_title" msgid="2079708866333537093">"우선순위"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> 앱은 대화 기능을 지원하지 않습니다."</string> diff --git a/packages/SystemUI/res/values-ky/strings.xml b/packages/SystemUI/res/values-ky/strings.xml index a2b3b8d7ac8d..e7c9789cd097 100644 --- a/packages/SystemUI/res/values-ky/strings.xml +++ b/packages/SystemUI/res/values-ky/strings.xml @@ -716,7 +716,7 @@ <string name="notification_channel_summary_default" msgid="3282930979307248890">"Телефондун жөндөөлөрүнө жараша шыңгырап же дирилдеши мүмкүн"</string> <string name="notification_channel_summary_default_with_bubbles" msgid="1782419896613644568">"Телефондун жөндөөлөрүнө жараша шыңгырап же дирилдеши мүмкүн. <xliff:g id="APP_NAME">%1$s</xliff:g> колдонмосундагы жазышуулар демейки жөндөө боюнча калкып чыкма билдирмелер түрүндө көрүнөт."</string> <string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Калкыма ыкчам баскыч менен көңүлүңүздү бул мазмунга буруп турат."</string> - <string name="notification_channel_summary_priority" msgid="7952654515769021553">"Жазышуу бөлүмүнүн жогорку жагында калкып чыкма билдирме түрүндө көрүнүп, профиль сүрөтү кулпуланган экрандан чагылдырылат"</string> + <string name="notification_channel_summary_priority" msgid="7952654515769021553">"Жазышуулар тизмесинин өйдө жагында калкып чыкма билдирме түрүндө көрүнүп, профиль сүрөтү кулпуланган экрандан чагылдырылат"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Жөндөөлөр"</string> <string name="notification_priority_title" msgid="2079708866333537093">"Маанилүүлүгү"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> жазышуу функцияларын колдоого албайт"</string> @@ -856,7 +856,7 @@ <string name="left_icon" msgid="5036278531966897006">"¨Солго¨ сүрөтчөсү"</string> <string name="right_icon" msgid="1103955040645237425">"¨Оңго¨ сүрөтчөсү"</string> <string name="drag_to_add_tiles" msgid="8933270127508303672">"Керектүү элементтерди сүйрөп келиңиз"</string> - <string name="drag_to_rearrange_tiles" msgid="2143204300089638620">"Элементтердин иретин өзгөртүү үчүн, кармап туруп, сүйрөңүз"</string> + <string name="drag_to_rearrange_tiles" msgid="2143204300089638620">"Элементтердин иретин өзгөртүү үчүн кармап туруп, сүйрөңүз"</string> <string name="drag_to_remove_tiles" msgid="4682194717573850385">"Алып салуу үчүн бул жерге сүйрөңүз"</string> <string name="drag_to_remove_disabled" msgid="933046987838658850">"Сизге жок дегенде <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> мозаика керек"</string> <string name="qs_edit" msgid="5583565172803472437">"Түзөтүү"</string> diff --git a/packages/SystemUI/res/values-lt/strings.xml b/packages/SystemUI/res/values-lt/strings.xml index 9357a0c15dce..24a68ab39474 100644 --- a/packages/SystemUI/res/values-lt/strings.xml +++ b/packages/SystemUI/res/values-lt/strings.xml @@ -778,7 +778,7 @@ </plurals> <string name="battery_panel_title" msgid="5931157246673665963">"Akum. energ. vartoj."</string> <string name="battery_detail_charging_summary" msgid="8821202155297559706">"Akumuliatoriaus tausojimo priemonė nepasiekiama įkraunant"</string> - <string name="battery_detail_switch_title" msgid="6940976502957380405">"Akumuliat. taus. pr."</string> + <string name="battery_detail_switch_title" msgid="6940976502957380405">"Akum. taus. pr."</string> <string name="battery_detail_switch_summary" msgid="3668748557848025990">"Sumažinamas našumas ir foninių duomenų naudojimas"</string> <string name="keyboard_key_button_template" msgid="8005673627272051429">"Mygtukas <xliff:g id="NAME">%1$s</xliff:g>"</string> <string name="keyboard_key_home" msgid="3734400625170020657">"Pagrindinis"</string> diff --git a/packages/SystemUI/res/values-lv/strings.xml b/packages/SystemUI/res/values-lv/strings.xml index 70250b2e94d4..5b53b0827e41 100644 --- a/packages/SystemUI/res/values-lv/strings.xml +++ b/packages/SystemUI/res/values-lv/strings.xml @@ -715,7 +715,7 @@ <string name="notification_alert_title" msgid="3656229781017543655">"Noklusējums"</string> <string name="notification_bubble_title" msgid="8330481035191903164">"Burbulis"</string> <string name="notification_channel_summary_low" msgid="4860617986908931158">"Nav skaņas signāla vai vibrācijas"</string> - <string name="notification_conversation_summary_low" msgid="1734433426085468009">"Nav skaņas signāla vai vibrācijas, kā arī atrodas zemāk sarunu sadaļā"</string> + <string name="notification_conversation_summary_low" msgid="1734433426085468009">"Nav skaņas signāla vai vibrācijas, kā arī atrodas tālāk sarunu sadaļā"</string> <string name="notification_channel_summary_default" msgid="3282930979307248890">"Atkarībā no tālruņa iestatījumiem var zvanīt vai vibrēt"</string> <string name="notification_channel_summary_default_with_bubbles" msgid="1782419896613644568">"Atkarībā no tālruņa iestatījumiem var zvanīt vai vibrēt. Sarunas no lietotnes <xliff:g id="APP_NAME">%1$s</xliff:g> pēc noklusējuma tiek parādītas burbulī."</string> <string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Piesaista jūsu uzmanību, rādot peldošu saīsni uz šo saturu."</string> diff --git a/packages/SystemUI/res/values-mk/strings.xml b/packages/SystemUI/res/values-mk/strings.xml index 30d1b461038f..d63f99c0c8fc 100644 --- a/packages/SystemUI/res/values-mk/strings.xml +++ b/packages/SystemUI/res/values-mk/strings.xml @@ -712,13 +712,13 @@ <string name="notification_alert_title" msgid="3656229781017543655">"Стандардно"</string> <string name="notification_bubble_title" msgid="8330481035191903164">"Балонче"</string> <string name="notification_channel_summary_low" msgid="4860617986908931158">"Без звук или вибрации"</string> - <string name="notification_conversation_summary_low" msgid="1734433426085468009">"Без звук или вибрации и се појавува под делот за разговор"</string> + <string name="notification_conversation_summary_low" msgid="1734433426085468009">"Без звук или вибрации и се појавува подолу во делот со разговори"</string> <string name="notification_channel_summary_default" msgid="3282930979307248890">"Може да ѕвони или вибрира во зависност од поставките на телефонот"</string> <string name="notification_channel_summary_default_with_bubbles" msgid="1782419896613644568">"Може да ѕвони или вибрира во зависност од поставките на телефонот Стандардно, разговорите од <xliff:g id="APP_NAME">%1$s</xliff:g> се во балончиња."</string> <string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Ви го задржува вниманието со лебдечка кратенка на содржинава."</string> <string name="notification_channel_summary_priority" msgid="7952654515769021553">"Се појавува на горниот дел од секцијата на разговорот во вид на лебдечко меурче, покажувајќи ја профилната слика на заклучениот екран"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Поставки"</string> - <string name="notification_priority_title" msgid="2079708866333537093">"Приоритет"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"Приоритетно"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> не поддржува функции за разговор"</string> <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"Нема неодамнешни балончиња"</string> <string name="bubble_overflow_empty_subtitle" msgid="2030874469510497397">"Неодамнешните и отфрлените балончиња ќе се појавуваат тука"</string> diff --git a/packages/SystemUI/res/values-ml/strings.xml b/packages/SystemUI/res/values-ml/strings.xml index 070364d14cc6..0d3f3600ed49 100644 --- a/packages/SystemUI/res/values-ml/strings.xml +++ b/packages/SystemUI/res/values-ml/strings.xml @@ -389,7 +389,7 @@ <string name="quick_settings_cast_no_wifi" msgid="6980194769795014875">"വൈഫൈ കണക്റ്റ് ചെയ്തിട്ടില്ല"</string> <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"തെളിച്ചം"</string> <string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="2325362583903258677">"യാന്ത്രികം"</string> - <string name="quick_settings_inversion_label" msgid="5078769633069667698">"നിറം മാറ്റുക"</string> + <string name="quick_settings_inversion_label" msgid="5078769633069667698">"നെഗറ്റീവ് ലുക്ക്"</string> <string name="quick_settings_color_space_label" msgid="537528291083575559">"വർണ്ണം ശരിയാക്കൽ മോഡ്"</string> <string name="quick_settings_more_settings" msgid="2878235926753776694">"കൂടുതൽ ക്രമീകരണങ്ങൾ"</string> <string name="quick_settings_done" msgid="2163641301648855793">"പൂർത്തിയാക്കി"</string> diff --git a/packages/SystemUI/res/values-mn/strings.xml b/packages/SystemUI/res/values-mn/strings.xml index f27e885b1f17..f683e280296b 100644 --- a/packages/SystemUI/res/values-mn/strings.xml +++ b/packages/SystemUI/res/values-mn/strings.xml @@ -712,7 +712,7 @@ <string name="notification_alert_title" msgid="3656229781017543655">"Өгөгдмөл"</string> <string name="notification_bubble_title" msgid="8330481035191903164">"Бөмбөлөг"</string> <string name="notification_channel_summary_low" msgid="4860617986908931158">"Дуу эсвэл чичиргээ байхгүй"</string> - <string name="notification_conversation_summary_low" msgid="1734433426085468009">"Дуу эсвэл чичиргээ байхгүй бөгөөд харицан ярианы хэсгийн доод талд харагдана"</string> + <string name="notification_conversation_summary_low" msgid="1734433426085468009">"Дуу эсвэл чичиргээ байхгүй бөгөөд харилцан ярианы хэсгийн доод талд харагдана"</string> <string name="notification_channel_summary_default" msgid="3282930979307248890">"Утасны тохиргоонд тулгуурлан хонх дуугаргах эсвэл чичирхийлж болзошгүй"</string> <string name="notification_channel_summary_default_with_bubbles" msgid="1782419896613644568">"Утасны тохиргоонд тулгуурлан хонх дуугаргах эсвэл чичирхийлж болзошгүй. <xliff:g id="APP_NAME">%1$s</xliff:g>-н харилцан яриаг өгөгдмөл тохиргооны дагуу бөмбөлөг болгоно."</string> <string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Энэ контентын хөвөн гарч ирэх товчлолтойгоор таны анхаарлыг татдаг."</string> diff --git a/packages/SystemUI/res/values-ms/strings.xml b/packages/SystemUI/res/values-ms/strings.xml index 0c29a25d7162..84da74bd6fb2 100644 --- a/packages/SystemUI/res/values-ms/strings.xml +++ b/packages/SystemUI/res/values-ms/strings.xml @@ -987,7 +987,7 @@ <string name="auto_saver_enabled_text" msgid="7889491183116752719">"Penjimat Bateri akan dihidupkan secara automatik setelah kuasa bateri kurang daripada <xliff:g id="PERCENTAGE">%d</xliff:g>%%."</string> <string name="open_saver_setting_action" msgid="2111461909782935190">"Tetapan"</string> <string name="auto_saver_okay_action" msgid="7815925750741935386">"OK"</string> - <string name="heap_dump_tile_name" msgid="2464189856478823046">"Longgok Tmbunn SysUI"</string> + <string name="heap_dump_tile_name" msgid="2464189856478823046">"DumpSys"</string> <string name="sensor_privacy_mode" msgid="4462866919026513692">"Penderia dimatikan"</string> <string name="device_services" msgid="1549944177856658705">"Perkhidmatan Peranti"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"Tiada tajuk"</string> diff --git a/packages/SystemUI/res/values-nb/strings_tv.xml b/packages/SystemUI/res/values-nb/strings_tv.xml index 22580e645ca0..9b466788d9e0 100644 --- a/packages/SystemUI/res/values-nb/strings_tv.xml +++ b/packages/SystemUI/res/values-nb/strings_tv.xml @@ -24,5 +24,5 @@ <string name="pip_close" msgid="5775212044472849930">"Lukk PIP"</string> <string name="pip_fullscreen" msgid="3877997489869475181">"Fullskjerm"</string> <string name="mic_active" msgid="5766614241012047024">"Mikrofonen er aktiv"</string> - <string name="app_accessed_mic" msgid="2754428675130470196">"%1$s brukte mikrofonen din"</string> + <string name="app_accessed_mic" msgid="2754428675130470196">"%1$s fikk tilgang til mikrofonen din"</string> </resources> diff --git a/packages/SystemUI/res/values-ne/strings.xml b/packages/SystemUI/res/values-ne/strings.xml index cf5d71557e3f..e0d20e666a05 100644 --- a/packages/SystemUI/res/values-ne/strings.xml +++ b/packages/SystemUI/res/values-ne/strings.xml @@ -43,7 +43,7 @@ <string name="status_bar_settings_mute_label" msgid="914392730086057522">"म्युट गर्नुहोस्"</string> <string name="status_bar_settings_auto_brightness_label" msgid="2151934479226017725">"स्वतः"</string> <string name="status_bar_settings_notifications" msgid="5285316949980621438">"सूचनाहरू"</string> - <string name="bluetooth_tethered" msgid="4171071193052799041">"ब्लुटुथ टेथर भयो"</string> + <string name="bluetooth_tethered" msgid="4171071193052799041">"ब्लुटुथ टेदर भयो"</string> <string name="status_bar_input_method_settings_configure_input_methods" msgid="2972273031043777851">"इनपुट विधिहरू सेटअप गर्नुहोस्"</string> <string name="status_bar_use_physical_keyboard" msgid="4849251850931213371">"वास्तविक किबोर्ड"</string> <string name="usb_device_permission_prompt" msgid="4414719028369181772">"<xliff:g id="APPLICATION">%1$s</xliff:g> लाई <xliff:g id="USB_DEVICE">%2$s</xliff:g> माथि पहुँच राख्ने अनुमति दिने हो?"</string> @@ -341,7 +341,7 @@ <string name="dessert_case" msgid="9104973640704357717">"Dessert Case"</string> <string name="start_dreams" msgid="9131802557946276718">"स्क्रिन सेभर"</string> <string name="ethernet_label" msgid="2203544727007463351">"Ethernet"</string> - <string name="quick_settings_header_onboarding_text" msgid="1918085351115504765">"थप विकल्पहरूका लागि आइकनहरूमा छोइराख्नुहोस्"</string> + <string name="quick_settings_header_onboarding_text" msgid="1918085351115504765">"थप विकल्पहरूका लागि आइकनहरूमा टच एण्ड होल्ड गर्नुहोस्"</string> <string name="quick_settings_dnd_label" msgid="7728690179108024338">"बाधा नपुऱ्याउनुहोस्"</string> <string name="quick_settings_dnd_priority_label" msgid="6251076422352664571">"प्राथमिकता मात्र"</string> <string name="quick_settings_dnd_alarms_label" msgid="1241780970469630835">"अलार्महरू मात्र"</string> @@ -593,16 +593,16 @@ <string name="volume_odi_captions_hint_disable" msgid="2518846326748183407">"असक्षम पार्नुहोस्"</string> <string name="accessibility_output_chooser" msgid="7807898688967194183">"आउटपुट यन्त्र बदल्नुहोस्"</string> <string name="screen_pinning_title" msgid="9058007390337841305">"एप पिन गरिएको छ"</string> - <string name="screen_pinning_description" msgid="8699395373875667743">"तपाईंले अनपिन नगरेसम्म यसले त्यसलाई दृश्यमा कायम राख्छ। अनपिन गर्न पछाडि र परिदृश्य बटनलाई छोइराख्नुहोस्।"</string> - <string name="screen_pinning_description_recents_invisible" msgid="4564466648700390037">"तपाईंले अनपिन नगरेसम्म यसले त्यसलाई दृश्यमा कायम राख्छ। अनपिन गर्न पछाडि र गृह नामक बटनहरूलाई छोइराख्नुहोस्।"</string> + <string name="screen_pinning_description" msgid="8699395373875667743">"तपाईंले अनपिन नगरेसम्म यसले त्यसलाई दृश्यमा कायम राख्छ। अनपिन गर्न पछाडि र परिदृश्य बटनलाई टच एण्ड होल्ड गर्नुहोस्।"</string> + <string name="screen_pinning_description_recents_invisible" msgid="4564466648700390037">"तपाईंले अनपिन नगरेसम्म यसले त्यसलाई दृश्यमा कायम राख्छ। अनपिन गर्न पछाडि र गृह नामक बटनहरूलाई टच एण्ड होल्ड गर्नुहोस्।"</string> <string name="screen_pinning_description_gestural" msgid="7246323931831232068">"तपाईंले यो एप अनपिन नगरेसम्म यो एप यहाँ देखिइरहने छ। अनपिन गर्न माथितिर स्वाइप गरी होल्ड गर्नुहोस्।"</string> - <string name="screen_pinning_description_accessible" msgid="7386449191953535332">"तपाईंले अनपिन नगरेसम्म यसले त्यसलाई दृश्यमा कायम राख्छ। अनपिन गर्न परिदृश्य बटनलाई छोइराख्नुहोस्।"</string> - <string name="screen_pinning_description_recents_invisible_accessible" msgid="2857071808674481986">"तपाईंले अनपिन नगरेसम्म यसले त्यसलाई दृश्यमा कायम राख्छ। अनपिन गर्न गृह नामक बटनलाई छोइराख्नुहोस्।"</string> + <string name="screen_pinning_description_accessible" msgid="7386449191953535332">"तपाईंले अनपिन नगरेसम्म यसले त्यसलाई दृश्यमा कायम राख्छ। अनपिन गर्न परिदृश्य बटनलाई टच एण्ड होल्ड गर्नुहोस्।"</string> + <string name="screen_pinning_description_recents_invisible_accessible" msgid="2857071808674481986">"तपाईंले अनपिन नगरेसम्म यसले त्यसलाई दृश्यमा कायम राख्छ। अनपिन गर्न गृह नामक बटनलाई टच एण्ड होल्ड गर्नुहोस्।"</string> <string name="screen_pinning_exposes_personal_data" msgid="8189852022981524789">"स्क्रिनमा व्यक्तिगत डेटा (जस्तै सम्पर्क ठेगाना र इमेलको सामग्री) देखिन सक्छ।"</string> <string name="screen_pinning_can_open_other_apps" msgid="7529756813231421455">"पिन गरिएको एपले अन्य एप खोल्न सक्छ।"</string> - <string name="screen_pinning_toast" msgid="8177286912533744328">"यो एप अनपनि गर्न पछाडि र विवरण नामक बटनहरूलाई छोइराख्नुहोस्"</string> - <string name="screen_pinning_toast_recents_invisible" msgid="6850978077443052594">"यो एप अनपनि गर्न पछाडि र होम बटनलाई छोइराख्नुहोस्"</string> - <string name="screen_pinning_toast_gesture_nav" msgid="170699893395336705">"यो एप अनपिन गर्न माथितिर स्वाइप गरी स्क्रिनमा छोइराख्नुहोस्"</string> + <string name="screen_pinning_toast" msgid="8177286912533744328">"यो एप अनपनि गर्न पछाडि र विवरण नामक बटनहरूलाई टच एण्ड होल्ड गर्नुहोस्"</string> + <string name="screen_pinning_toast_recents_invisible" msgid="6850978077443052594">"यो एप अनपनि गर्न पछाडि र होम बटनलाई टच एण्ड होल्ड गर्नुहोस्"</string> + <string name="screen_pinning_toast_gesture_nav" msgid="170699893395336705">"यो एप अनपिन गर्न माथितिर स्वाइप गरी स्क्रिनमा टच एण्ड होल्ड गर्नुहोस्"</string> <string name="screen_pinning_positive" msgid="3285785989665266984">"बुझेँ"</string> <string name="screen_pinning_negative" msgid="6882816864569211666">"धन्यवाद पर्दैन"</string> <string name="screen_pinning_start" msgid="7483998671383371313">"एप पिन गरियो"</string> diff --git a/packages/SystemUI/res/values-nl/strings.xml b/packages/SystemUI/res/values-nl/strings.xml index 20cc8501f315..a65794b839bd 100644 --- a/packages/SystemUI/res/values-nl/strings.xml +++ b/packages/SystemUI/res/values-nl/strings.xml @@ -392,7 +392,7 @@ <string name="quick_settings_inversion_label" msgid="5078769633069667698">"Kleuren omkeren"</string> <string name="quick_settings_color_space_label" msgid="537528291083575559">"Modus voor kleurcorrectie"</string> <string name="quick_settings_more_settings" msgid="2878235926753776694">"Meer instellingen"</string> - <string name="quick_settings_done" msgid="2163641301648855793">"Gereed"</string> + <string name="quick_settings_done" msgid="2163641301648855793">"Klaar"</string> <string name="quick_settings_connected" msgid="3873605509184830379">"Verbonden"</string> <string name="quick_settings_connected_battery_level" msgid="1322075669498906959">"Verbonden, batterij <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string> <string name="quick_settings_connecting" msgid="2381969772953268809">"Verbinding maken…"</string> @@ -694,7 +694,7 @@ <string name="notification_channel_silenced" msgid="1995937493874511359">"Deze meldingen worden zonder geluid weergegeven"</string> <string name="notification_channel_unsilenced" msgid="94878840742161152">"Deze meldingen stellen je op de hoogte"</string> <string name="inline_blocking_helper" msgid="2891486013649543452">"Meestal sluit je deze meldingen. \nWil je ze blijven weergeven?"</string> - <string name="inline_done_button" msgid="6043094985588909584">"Gereed"</string> + <string name="inline_done_button" msgid="6043094985588909584">"Klaar"</string> <string name="inline_ok_button" msgid="603075490581280343">"Toepassen"</string> <string name="inline_keep_showing" msgid="8736001253507073497">"Deze meldingen blijven weergeven?"</string> <string name="inline_stop_button" msgid="2453460935438696090">"Meldingen stoppen"</string> @@ -712,11 +712,11 @@ <string name="notification_alert_title" msgid="3656229781017543655">"Standaard"</string> <string name="notification_bubble_title" msgid="8330481035191903164">"Bubbel"</string> <string name="notification_channel_summary_low" msgid="4860617986908931158">"Geen geluid of trilling"</string> - <string name="notification_conversation_summary_low" msgid="1734433426085468009">"Geen geluid of trilling en wordt op een lagere positie in het gedeelte met gesprekken weergegeven"</string> + <string name="notification_conversation_summary_low" msgid="1734433426085468009">"Geen geluid of trilling en wordt lager in het gedeelte met gesprekken weergegeven"</string> <string name="notification_channel_summary_default" msgid="3282930979307248890">"Kan overgaan of trillen op basis van de telefooninstellingen"</string> <string name="notification_channel_summary_default_with_bubbles" msgid="1782419896613644568">"Kan overgaan of trillen op basis van de telefooninstellingen. Gesprekken uit <xliff:g id="APP_NAME">%1$s</xliff:g> worden standaard als bubbels weergegeven."</string> <string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Trekt de aandacht met een zwevende snelkoppeling naar deze content."</string> - <string name="notification_channel_summary_priority" msgid="7952654515769021553">"Wordt bovenaan het gedeelte met gesprekken weergegeven, verschijnt als zwevende bubbel, geeft de profielfoto weer op het vergrendelscherm"</string> + <string name="notification_channel_summary_priority" msgid="7952654515769021553">"Wordt bovenaan het gespreksgedeelte weergegeven, verschijnt als zwevende bubbel, geeft profielfoto weer op vergrendelscherm"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Instellingen"</string> <string name="notification_priority_title" msgid="2079708866333537093">"Prioriteit"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> ondersteunt geen gespreksfuncties"</string> @@ -741,7 +741,7 @@ <string name="notification_channel_switch_accessibility" msgid="8979885820432540252">"Meldingen van dit kanaal toestaan"</string> <string name="notification_more_settings" msgid="4936228656989201793">"Meer instellingen"</string> <string name="notification_app_settings" msgid="8963648463858039377">"Aanpassen"</string> - <string name="notification_done" msgid="6215117625922713976">"Gereed"</string> + <string name="notification_done" msgid="6215117625922713976">"Klaar"</string> <string name="inline_undo" msgid="9026953267645116526">"Ongedaan maken"</string> <string name="demote" msgid="6225813324237153980">"Deze melding markeren als geen gesprek"</string> <string name="notification_conversation_favorite" msgid="1905240206975921907">"Belangrijk gesprek"</string> diff --git a/packages/SystemUI/res/values-or/strings.xml b/packages/SystemUI/res/values-or/strings.xml index c269c6b5af73..9527c3fab912 100644 --- a/packages/SystemUI/res/values-or/strings.xml +++ b/packages/SystemUI/res/values-or/strings.xml @@ -716,7 +716,7 @@ <string name="notification_channel_summary_default" msgid="3282930979307248890">"ଫୋନ୍ ସେଟିଂସ୍ ଆଧାରରେ ରିଙ୍ଗ କିମ୍ବା ଭାଇବ୍ରେଟ୍ ହୋଇପାରେ"</string> <string name="notification_channel_summary_default_with_bubbles" msgid="1782419896613644568">"ଫୋନ୍ ସେଟିଂସ୍ ଆଧାରରେ ରିଙ୍ଗ କିମ୍ବା ଭାଇବ୍ରେଟ୍ ହୋଇପାରେ। <xliff:g id="APP_NAME">%1$s</xliff:g>ରୁ ବାର୍ତ୍ତାଳାପଗୁଡ଼ିକ ଡିଫଲ୍ଟ ଭାବରେ ବବଲ୍ ହୁଏ।"</string> <string name="notification_channel_summary_bubble" msgid="7235935211580860537">"ଏହି ବିଷୟବସ୍ତୁ ପାଇଁ ଏକ ଭାସମାନ ସର୍ଟକଟ୍ ସହ ଆପଣଙ୍କର ଧ୍ୟାନ ଦିଅନ୍ତୁ।"</string> - <string name="notification_channel_summary_priority" msgid="7952654515769021553">"ବାର୍ତ୍ତାଳାପ ବିଭାଗର ଶୀର୍ଷରେ ଦେଖାଏ, ଭାସମାନ ବବଲ୍ ଭାବେ ଦେଖାଯାଏ, ଲକ୍ ସ୍କ୍ରିନରେ ପ୍ରୋଫାଇଲ୍ ଛବି ଡିସପ୍ଲେ କରେ"</string> + <string name="notification_channel_summary_priority" msgid="7952654515769021553">"ବାର୍ତ୍ତାଳାପ ବିଭାଗର ଶୀର୍ଷରେ ଦେଖାଏ, ଫ୍ଲୋଟିଂ ବବଲ୍ ଭାବେ ଦେଖାଯାଏ, ଲକ୍ ସ୍କ୍ରିନରେ ପ୍ରୋଫାଇଲ୍ ଛବି ଡିସପ୍ଲେ କରେ"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"ସେଟିଂସ୍"</string> <string name="notification_priority_title" msgid="2079708866333537093">"ପ୍ରାଥମିକତା"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> ବାର୍ତ୍ତାଳାପ ଫିଚରଗୁଡ଼ିକୁ ସମର୍ଥନ କରେ ନାହିଁ"</string> @@ -855,7 +855,7 @@ <string name="right_keycode" msgid="2480715509844798438">"ଡାହାଣ କୀ\'କୋଡ୍"</string> <string name="left_icon" msgid="5036278531966897006">"ବାମ ଆଇକନ୍"</string> <string name="right_icon" msgid="1103955040645237425">"ଡାହାଣ ଆଇକନ୍"</string> - <string name="drag_to_add_tiles" msgid="8933270127508303672">"ଟାଇଲ୍ ଯୋଡ଼ିବା ପାଇଁ ଦାବିଧରି ଟାଣନ୍ତୁ"</string> + <string name="drag_to_add_tiles" msgid="8933270127508303672">"ଟାଇଲ୍ ଯୋଗ କରିବା ପାଇଁ ଦାବିଧରି ଟାଣନ୍ତୁ"</string> <string name="drag_to_rearrange_tiles" msgid="2143204300089638620">"ଟାଇଲ୍ ପୁଣି ସଜାଇବାକୁ ଦାବିଧରି ଟାଣନ୍ତୁ"</string> <string name="drag_to_remove_tiles" msgid="4682194717573850385">"ବାହାର କରିବାକୁ ଏଠାକୁ ଡ୍ରାଗ୍ କରନ୍ତୁ"</string> <string name="drag_to_remove_disabled" msgid="933046987838658850">"ଆପଣଙ୍କର ଅତିକମ୍ରେ <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g>ଟି ଟାଇଲ୍ ଆବଶ୍ୟକ"</string> diff --git a/packages/SystemUI/res/values-pl/strings_tv.xml b/packages/SystemUI/res/values-pl/strings_tv.xml index 5921aa7a9963..852ea5056460 100644 --- a/packages/SystemUI/res/values-pl/strings_tv.xml +++ b/packages/SystemUI/res/values-pl/strings_tv.xml @@ -24,5 +24,5 @@ <string name="pip_close" msgid="5775212044472849930">"Zamknij PIP"</string> <string name="pip_fullscreen" msgid="3877997489869475181">"Pełny ekran"</string> <string name="mic_active" msgid="5766614241012047024">"Mikrofon aktywny"</string> - <string name="app_accessed_mic" msgid="2754428675130470196">"Aplikacja %1$s korzystała z mikrofonu"</string> + <string name="app_accessed_mic" msgid="2754428675130470196">"Aplikacja %1$s uzyskała dostęp do mikrofonu"</string> </resources> diff --git a/packages/SystemUI/res/values-pt-rBR/strings.xml b/packages/SystemUI/res/values-pt-rBR/strings.xml index 6b16942a6c0d..aa92135056a3 100644 --- a/packages/SystemUI/res/values-pt-rBR/strings.xml +++ b/packages/SystemUI/res/values-pt-rBR/strings.xml @@ -713,12 +713,12 @@ <string name="notification_bubble_title" msgid="8330481035191903164">"Bolha"</string> <string name="notification_channel_summary_low" msgid="4860617986908931158">"Som e vibração desativados"</string> <string name="notification_conversation_summary_low" msgid="1734433426085468009">"O som e a vibração estão desativados, e o balão aparece na parte inferior da seção de conversa"</string> - <string name="notification_channel_summary_default" msgid="3282930979307248890">"Pode vibrar ou tocar com base nas configurações do smartphone"</string> + <string name="notification_channel_summary_default" msgid="3282930979307248890">"Podem vibrar ou tocar com base nas configurações do smartphone"</string> <string name="notification_channel_summary_default_with_bubbles" msgid="1782419896613644568">"Pode vibrar ou tocar com base nas configurações do smartphone. As conversas do app <xliff:g id="APP_NAME">%1$s</xliff:g> aparecem em balões por padrão."</string> <string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Mantém sua atenção com um atalho flutuante para esse conteúdo."</string> - <string name="notification_channel_summary_priority" msgid="7952654515769021553">"Aparece na parte superior de uma seção de conversa, em forma de balão, mostrando a foto do perfil na tela de bloqueio"</string> + <string name="notification_channel_summary_priority" msgid="7952654515769021553">"Aparecem na parte superior de uma seção de conversa, em forma de balões, mostrando a foto do perfil na tela de bloqueio"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Configurações"</string> - <string name="notification_priority_title" msgid="2079708866333537093">"Prioridade"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"Prioritárias"</string> <string name="no_shortcut" msgid="8257177117568230126">"O app <xliff:g id="APP_NAME">%1$s</xliff:g> não é compatível com recursos de conversa"</string> <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"Nenhum balão recente"</string> <string name="bubble_overflow_empty_subtitle" msgid="2030874469510497397">"Os balões recentes e dispensados aparecerão aqui"</string> diff --git a/packages/SystemUI/res/values-pt-rPT/strings.xml b/packages/SystemUI/res/values-pt-rPT/strings.xml index fcd12c6f28d1..8ea6d4553a17 100644 --- a/packages/SystemUI/res/values-pt-rPT/strings.xml +++ b/packages/SystemUI/res/values-pt-rPT/strings.xml @@ -716,7 +716,7 @@ <string name="notification_channel_summary_default" msgid="3282930979307248890">"Pode tocar ou vibrar com base nas definições do telemóvel."</string> <string name="notification_channel_summary_default_with_bubbles" msgid="1782419896613644568">"Pode tocar ou vibrar com base nas definições do telemóvel. As conversas da app <xliff:g id="APP_NAME">%1$s</xliff:g> aparecem como um balão por predefinição."</string> <string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Mantém a sua atenção com um atalho flutuante para este conteúdo."</string> - <string name="notification_channel_summary_priority" msgid="7952654515769021553">"Aparece na parte superior da secção de conversas, surge como um balão flutuante e apresenta a imagem do perfil no ecrã de bloqueio."</string> + <string name="notification_channel_summary_priority" msgid="7952654515769021553">"Aparece no topo da secção de conversas, surge como balão flutuante e apresenta a imagem do perfil no ecrã de bloqueio."</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Definições"</string> <string name="notification_priority_title" msgid="2079708866333537093">"Prioridade"</string> <string name="no_shortcut" msgid="8257177117568230126">"A app <xliff:g id="APP_NAME">%1$s</xliff:g> não suporta funcionalidades de conversa."</string> @@ -855,7 +855,7 @@ <string name="right_keycode" msgid="2480715509844798438">"Código de tecla direito"</string> <string name="left_icon" msgid="5036278531966897006">"Ícone esquerdo"</string> <string name="right_icon" msgid="1103955040645237425">"Ícone direito"</string> - <string name="drag_to_add_tiles" msgid="8933270127508303672">"Toque sem soltar e arraste para adicionar mosaicos."</string> + <string name="drag_to_add_tiles" msgid="8933270127508303672">"Tocar sem soltar e arrastar para adicionar mosaicos"</string> <string name="drag_to_rearrange_tiles" msgid="2143204300089638620">"Tocar sem soltar e arrastar para reorganizar os mosaicos"</string> <string name="drag_to_remove_tiles" msgid="4682194717573850385">"Arrastar para aqui para remover"</string> <string name="drag_to_remove_disabled" msgid="933046987838658850">"Necessita de, pelo menos, <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> cartões"</string> diff --git a/packages/SystemUI/res/values-pt/strings.xml b/packages/SystemUI/res/values-pt/strings.xml index 6b16942a6c0d..aa92135056a3 100644 --- a/packages/SystemUI/res/values-pt/strings.xml +++ b/packages/SystemUI/res/values-pt/strings.xml @@ -713,12 +713,12 @@ <string name="notification_bubble_title" msgid="8330481035191903164">"Bolha"</string> <string name="notification_channel_summary_low" msgid="4860617986908931158">"Som e vibração desativados"</string> <string name="notification_conversation_summary_low" msgid="1734433426085468009">"O som e a vibração estão desativados, e o balão aparece na parte inferior da seção de conversa"</string> - <string name="notification_channel_summary_default" msgid="3282930979307248890">"Pode vibrar ou tocar com base nas configurações do smartphone"</string> + <string name="notification_channel_summary_default" msgid="3282930979307248890">"Podem vibrar ou tocar com base nas configurações do smartphone"</string> <string name="notification_channel_summary_default_with_bubbles" msgid="1782419896613644568">"Pode vibrar ou tocar com base nas configurações do smartphone. As conversas do app <xliff:g id="APP_NAME">%1$s</xliff:g> aparecem em balões por padrão."</string> <string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Mantém sua atenção com um atalho flutuante para esse conteúdo."</string> - <string name="notification_channel_summary_priority" msgid="7952654515769021553">"Aparece na parte superior de uma seção de conversa, em forma de balão, mostrando a foto do perfil na tela de bloqueio"</string> + <string name="notification_channel_summary_priority" msgid="7952654515769021553">"Aparecem na parte superior de uma seção de conversa, em forma de balões, mostrando a foto do perfil na tela de bloqueio"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Configurações"</string> - <string name="notification_priority_title" msgid="2079708866333537093">"Prioridade"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"Prioritárias"</string> <string name="no_shortcut" msgid="8257177117568230126">"O app <xliff:g id="APP_NAME">%1$s</xliff:g> não é compatível com recursos de conversa"</string> <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"Nenhum balão recente"</string> <string name="bubble_overflow_empty_subtitle" msgid="2030874469510497397">"Os balões recentes e dispensados aparecerão aqui"</string> diff --git a/packages/SystemUI/res/values-ru/strings.xml b/packages/SystemUI/res/values-ru/strings.xml index 0a345004aa9d..d2e888668c69 100644 --- a/packages/SystemUI/res/values-ru/strings.xml +++ b/packages/SystemUI/res/values-ru/strings.xml @@ -722,7 +722,7 @@ <string name="notification_channel_summary_default" msgid="3282930979307248890">"Звонок или вибрация в зависимости от настроек телефона"</string> <string name="notification_channel_summary_default_with_bubbles" msgid="1782419896613644568">"Звонок или вибрация в зависимости от настроек телефона. Разговоры из приложения \"<xliff:g id="APP_NAME">%1$s</xliff:g>\" по умолчанию появляются в виде всплывающего чата."</string> <string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Привлекает ваше внимание к контенту с помощью плавающего ярлыка"</string> - <string name="notification_channel_summary_priority" msgid="7952654515769021553">"Появляется в верхней части списка разговоров и как всплывающий чат, а также показывает фото профиля на заблокированном экране"</string> + <string name="notification_channel_summary_priority" msgid="7952654515769021553">"Появляется в верхней части списка разговоров и как всплывающий чат, фото профиля показывается на заблок. экране"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Настройки"</string> <string name="notification_priority_title" msgid="2079708866333537093">"Приоритет"</string> <string name="no_shortcut" msgid="8257177117568230126">"Приложение \"<xliff:g id="APP_NAME">%1$s</xliff:g>\" не поддерживает функции разговоров."</string> diff --git a/packages/SystemUI/res/values-sl/strings.xml b/packages/SystemUI/res/values-sl/strings.xml index 2d01f930af15..e1f6fc7bdd14 100644 --- a/packages/SystemUI/res/values-sl/strings.xml +++ b/packages/SystemUI/res/values-sl/strings.xml @@ -95,7 +95,7 @@ <string name="screenrecord_description" msgid="1123231719680353736">"Med snemanjem lahko sistem Android zajame morebitne občutljive podatke, ki so prikazani na zaslonu ali se predvajajo v napravi. To vključuje gesla, podatke za plačilo, fotografije, sporočila in zvok."</string> <string name="screenrecord_audio_label" msgid="6183558856175159629">"Snemanje zvoka"</string> <string name="screenrecord_device_audio_label" msgid="9016927171280567791">"Zvok v napravi"</string> - <string name="screenrecord_device_audio_description" msgid="4922694220572186193">"Zvok v napravi, kot so glasba, klici in toni zvonjenja"</string> + <string name="screenrecord_device_audio_description" msgid="4922694220572186193">"Zvoki v napravi, kot so glasba, klici in toni zvonjenja"</string> <string name="screenrecord_mic_label" msgid="2111264835791332350">"Mikrofon"</string> <string name="screenrecord_device_audio_and_mic_label" msgid="1831323771978646841">"Zvok v napravi in mikrofon"</string> <string name="screenrecord_start" msgid="330991441575775004">"Začni"</string> diff --git a/packages/SystemUI/res/values-sq/strings.xml b/packages/SystemUI/res/values-sq/strings.xml index 65c592168bd1..1f4b7cd0788d 100644 --- a/packages/SystemUI/res/values-sq/strings.xml +++ b/packages/SystemUI/res/values-sq/strings.xml @@ -248,7 +248,7 @@ <string name="accessibility_remove_notification" msgid="1641455251495815527">"Pastro njoftimin."</string> <string name="accessibility_gps_enabled" msgid="4061313248217660858">"GPS-ja është e aktivizuar."</string> <string name="accessibility_gps_acquiring" msgid="896207402196024040">"Po siguron GPS-në."</string> - <string name="accessibility_tty_enabled" msgid="1123180388823381118">"Teleprinteri është i aktivizuar."</string> + <string name="accessibility_tty_enabled" msgid="1123180388823381118">"Teletajpi është i aktivizuar."</string> <string name="accessibility_ringer_vibrate" msgid="6261841170896561364">"Zile me dridhje."</string> <string name="accessibility_ringer_silent" msgid="8994620163934249882">"Zilja është heshtur."</string> <!-- no translation found for accessibility_casting (8708751252897282313) --> @@ -482,7 +482,7 @@ <string name="guest_wipe_session_title" msgid="7147965814683990944">"Mirë se erdhe, i ftuar!"</string> <string name="guest_wipe_session_message" msgid="3393823610257065457">"Dëshiron ta vazhdosh sesionin tënd?"</string> <string name="guest_wipe_session_wipe" msgid="8056836584445473309">"Fillo nga e para"</string> - <string name="guest_wipe_session_dontwipe" msgid="3211052048269304205">"Po, vazhdo!"</string> + <string name="guest_wipe_session_dontwipe" msgid="3211052048269304205">"Po, vazhdo"</string> <string name="guest_notification_title" msgid="4434456703930764167">"Përdorues vizitor"</string> <string name="guest_notification_text" msgid="4202692942089571351">"Për të fshirë aplikacionet dhe të dhënat, hiqe përdoruesin vizitor"</string> <string name="guest_notification_remove_action" msgid="4153019027696868099">"HIQ VIZITORIN"</string> diff --git a/packages/SystemUI/res/values-sv/strings_tv.xml b/packages/SystemUI/res/values-sv/strings_tv.xml index 64d61621b001..cf40057a005a 100644 --- a/packages/SystemUI/res/values-sv/strings_tv.xml +++ b/packages/SystemUI/res/values-sv/strings_tv.xml @@ -24,5 +24,5 @@ <string name="pip_close" msgid="5775212044472849930">"Stäng PIP"</string> <string name="pip_fullscreen" msgid="3877997489869475181">"Helskärm"</string> <string name="mic_active" msgid="5766614241012047024">"Mikrofonen är aktiv"</string> - <string name="app_accessed_mic" msgid="2754428675130470196">"%1$s har använt mikrofonen"</string> + <string name="app_accessed_mic" msgid="2754428675130470196">"%1$s har fått åtkomst till mikrofonen"</string> </resources> diff --git a/packages/SystemUI/res/values-te/strings.xml b/packages/SystemUI/res/values-te/strings.xml index 490c9de8cec6..f972a687b40f 100644 --- a/packages/SystemUI/res/values-te/strings.xml +++ b/packages/SystemUI/res/values-te/strings.xml @@ -695,7 +695,7 @@ <string name="notification_channel_unsilenced" msgid="94878840742161152">"ఈ నోటిఫికేషన్లు మిమ్మల్ని హెచ్చరిస్తాయి"</string> <string name="inline_blocking_helper" msgid="2891486013649543452">"మీరు సాధారణంగా ఈ నోటిఫికేషన్లను విస్మరిస్తారు. \nవాటి ప్రదర్శనను కొనసాగించాలా?"</string> <string name="inline_done_button" msgid="6043094985588909584">"పూర్తయింది"</string> - <string name="inline_ok_button" msgid="603075490581280343">"అప్లై చేయి"</string> + <string name="inline_ok_button" msgid="603075490581280343">"అప్లయి చేయి"</string> <string name="inline_keep_showing" msgid="8736001253507073497">"ఈ నోటిఫికేషన్లను చూపిస్తూ ఉండాలా?"</string> <string name="inline_stop_button" msgid="2453460935438696090">"నోటిఫికేషన్లను ఆపివేయి"</string> <string name="inline_deliver_silently_button" msgid="2714314213321223286">"నిశ్శబ్దంగా బట్వాడా చేయండి"</string> diff --git a/packages/SystemUI/res/values-th/strings.xml b/packages/SystemUI/res/values-th/strings.xml index 71679bedd209..a1c740ef8e8c 100644 --- a/packages/SystemUI/res/values-th/strings.xml +++ b/packages/SystemUI/res/values-th/strings.xml @@ -92,7 +92,7 @@ <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"กำลังประมวลผลการอัดหน้าจอ"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"การแจ้งเตือนต่อเนื่องสำหรับเซสชันการบันทึกหน้าจอ"</string> <string name="screenrecord_start_label" msgid="1750350278888217473">"เริ่มบันทึกเลยไหม"</string> - <string name="screenrecord_description" msgid="1123231719680353736">"ขณะบันทึก ระบบ Android อาจบันทึกข้อมูลที่ละเอียดอ่อนที่ปรากฏบนหน้าจอหรือเล่นในอุปกรณ์ได้ ซึ่งรวมถึงรหัสผ่าน ข้อมูลการชำระเงิน รูปภาพ ข้อความ และเสียง"</string> + <string name="screenrecord_description" msgid="1123231719680353736">"ขณะบันทึก ระบบ Android อาจบันทึกข้อมูลที่ละเอียดอ่อนซึ่งปรากฏบนหน้าจอหรือเล่นในอุปกรณ์ได้ ซึ่งรวมถึงรหัสผ่าน ข้อมูลการชำระเงิน รูปภาพ ข้อความ และเสียง"</string> <string name="screenrecord_audio_label" msgid="6183558856175159629">"บันทึกเสียง"</string> <string name="screenrecord_device_audio_label" msgid="9016927171280567791">"เสียงจากอุปกรณ์"</string> <string name="screenrecord_device_audio_description" msgid="4922694220572186193">"เสียงจากอุปกรณ์ เช่น เพลง การโทร และเสียงเรียกเข้า"</string> @@ -339,7 +339,7 @@ <string name="accessibility_rotation_lock_on_landscape_changed" msgid="5785739044300729592">"ขณะนี้หน้าจอล็อกอยู่ในแนวนอน"</string> <string name="accessibility_rotation_lock_on_portrait_changed" msgid="5580170829728987989">"ขณะนี้หน้าจอล็อกอยู่ในแนวตั้ง"</string> <string name="dessert_case" msgid="9104973640704357717">"ชั้นแสดงของหวาน"</string> - <string name="start_dreams" msgid="9131802557946276718">"โปรแกรมรักษาหน้าจอ"</string> + <string name="start_dreams" msgid="9131802557946276718">"โปรแกรมรักษาจอภาพ"</string> <string name="ethernet_label" msgid="2203544727007463351">"อีเทอร์เน็ต"</string> <string name="quick_settings_header_onboarding_text" msgid="1918085351115504765">"แตะไอคอนค้างไว้เพื่อดูตัวเลือกอื่นๆ"</string> <string name="quick_settings_dnd_label" msgid="7728690179108024338">"ห้ามรบกวน"</string> @@ -511,7 +511,7 @@ <string name="manage_notifications_text" msgid="6885645344647733116">"จัดการ"</string> <string name="manage_notifications_history_text" msgid="57055985396576230">"ประวัติ"</string> <string name="notification_section_header_incoming" msgid="850925217908095197">"ใหม่"</string> - <string name="notification_section_header_gentle" msgid="6804099527336337197">"เงียบ"</string> + <string name="notification_section_header_gentle" msgid="6804099527336337197">"ปิดเสียง"</string> <string name="notification_section_header_alerting" msgid="5581175033680477651">"การแจ้งเตือน"</string> <string name="notification_section_header_conversations" msgid="821834744538345661">"การสนทนา"</string> <string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"ล้างการแจ้งเตือนแบบไม่มีเสียงทั้งหมด"</string> @@ -708,7 +708,7 @@ <string name="inline_silent_button_keep_alerting" msgid="6577845442184724992">"แจ้งเตือนต่อไป"</string> <string name="inline_turn_off_notifications" msgid="8543989584403106071">"ปิดการแจ้งเตือน"</string> <string name="inline_keep_showing_app" msgid="4393429060390649757">"แสดงการแจ้งเตือนจากแอปนี้ต่อไปไหม"</string> - <string name="notification_silence_title" msgid="8608090968400832335">"เงียบ"</string> + <string name="notification_silence_title" msgid="8608090968400832335">"ปิดเสียง"</string> <string name="notification_alert_title" msgid="3656229781017543655">"ค่าเริ่มต้น"</string> <string name="notification_bubble_title" msgid="8330481035191903164">"บับเบิล"</string> <string name="notification_channel_summary_low" msgid="4860617986908931158">"ไม่มีเสียงหรือการสั่น"</string> @@ -856,7 +856,7 @@ <string name="left_icon" msgid="5036278531966897006">"ไอคอนทางซ้าย"</string> <string name="right_icon" msgid="1103955040645237425">"ไอคอนทางขวา"</string> <string name="drag_to_add_tiles" msgid="8933270127508303672">"กดค้างแล้วลากเพื่อเพิ่มการ์ด"</string> - <string name="drag_to_rearrange_tiles" msgid="2143204300089638620">"กดการ์ดค้างไว้แล้วลากเพื่อจัดเรียงใหม่"</string> + <string name="drag_to_rearrange_tiles" msgid="2143204300089638620">"กดค้างแล้วลากเพื่อจัดเรียงการ์ดใหม่"</string> <string name="drag_to_remove_tiles" msgid="4682194717573850385">"ลากมาที่นี่เพื่อนำออก"</string> <string name="drag_to_remove_disabled" msgid="933046987838658850">"คุณต้องมีการ์ดอย่างน้อย <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> รายการ"</string> <string name="qs_edit" msgid="5583565172803472437">"แก้ไข"</string> diff --git a/packages/SystemUI/res/values-zh-rHK/strings.xml b/packages/SystemUI/res/values-zh-rHK/strings.xml index dc59e7818749..e1d398de89ce 100644 --- a/packages/SystemUI/res/values-zh-rHK/strings.xml +++ b/packages/SystemUI/res/values-zh-rHK/strings.xml @@ -716,7 +716,7 @@ <string name="notification_channel_summary_default" msgid="3282930979307248890">"可能會根據手機設定發出鈴聲或震動"</string> <string name="notification_channel_summary_default_with_bubbles" msgid="1782419896613644568">"可能會根據手機設定發出鈴聲或震動。「<xliff:g id="APP_NAME">%1$s</xliff:g>」的對話會預設以對話氣泡顯示。"</string> <string name="notification_channel_summary_bubble" msgid="7235935211580860537">"為此內容建立浮動捷徑以保持注意力。"</string> - <string name="notification_channel_summary_priority" msgid="7952654515769021553">"在對話部分的頂部以浮動對話氣泡顯示,並在上鎖畫面顯示個人檔案相片"</string> + <string name="notification_channel_summary_priority" msgid="7952654515769021553">"以浮動對話泡顯示在對話部分的頂部,並在上鎖畫面顯示個人檔案相片"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"設定"</string> <string name="notification_priority_title" msgid="2079708866333537093">"重要"</string> <string name="no_shortcut" msgid="8257177117568230126">"「<xliff:g id="APP_NAME">%1$s</xliff:g>」不支援對話功能"</string> @@ -987,7 +987,7 @@ <string name="auto_saver_enabled_text" msgid="7889491183116752719">"省電模式將會在電量低於 <xliff:g id="PERCENTAGE">%d</xliff:g>%% 時自動開啟。"</string> <string name="open_saver_setting_action" msgid="2111461909782935190">"設定"</string> <string name="auto_saver_okay_action" msgid="7815925750741935386">"知道了"</string> - <string name="heap_dump_tile_name" msgid="2464189856478823046">"轉儲 SysUI 堆"</string> + <string name="heap_dump_tile_name" msgid="2464189856478823046">"Dump SysUI Heap"</string> <string name="sensor_privacy_mode" msgid="4462866919026513692">"感應器已關閉"</string> <string name="device_services" msgid="1549944177856658705">"裝置服務"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"無標題"</string> diff --git a/packages/SystemUI/res/values-zh-rHK/strings_tv.xml b/packages/SystemUI/res/values-zh-rHK/strings_tv.xml index 3cf2b43ed1ff..1cd63144b904 100644 --- a/packages/SystemUI/res/values-zh-rHK/strings_tv.xml +++ b/packages/SystemUI/res/values-zh-rHK/strings_tv.xml @@ -24,5 +24,5 @@ <string name="pip_close" msgid="5775212044472849930">"關閉 PIP"</string> <string name="pip_fullscreen" msgid="3877997489869475181">"全螢幕"</string> <string name="mic_active" msgid="5766614241012047024">"麥克風已啟用"</string> - <string name="app_accessed_mic" msgid="2754428675130470196">"%1$s 曾存取您的麥克風"</string> + <string name="app_accessed_mic" msgid="2754428675130470196">"「%1$s」已存取您的麥克風"</string> </resources> diff --git a/packages/SystemUI/res/values-zh-rTW/strings.xml b/packages/SystemUI/res/values-zh-rTW/strings.xml index 90afc22e547d..7ecb7d231d35 100644 --- a/packages/SystemUI/res/values-zh-rTW/strings.xml +++ b/packages/SystemUI/res/values-zh-rTW/strings.xml @@ -712,7 +712,7 @@ <string name="notification_alert_title" msgid="3656229781017543655">"預設"</string> <string name="notification_bubble_title" msgid="8330481035191903164">"泡泡"</string> <string name="notification_channel_summary_low" msgid="4860617986908931158">"不震動或發出聲音"</string> - <string name="notification_conversation_summary_low" msgid="1734433426085468009">"不震動或發出聲音,並顯示在對話部分的下方"</string> + <string name="notification_conversation_summary_low" msgid="1734433426085468009">"不震動或發出聲音,並調整排序到其他對話下方"</string> <string name="notification_channel_summary_default" msgid="3282930979307248890">"根據手機的設定響鈴或震動"</string> <string name="notification_channel_summary_default_with_bubbles" msgid="1782419896613644568">"可能會根據手機的設定響鈴或震動。根據預設,來自「<xliff:g id="APP_NAME">%1$s</xliff:g>」的對話會以對話框形式顯示。"</string> <string name="notification_channel_summary_bubble" msgid="7235935211580860537">"利用浮動式捷徑快速存取這項內容。"</string> @@ -987,7 +987,7 @@ <string name="auto_saver_enabled_text" msgid="7889491183116752719">"省電模式會在電量低於 <xliff:g id="PERCENTAGE">%d</xliff:g>%% 時自動開啟。"</string> <string name="open_saver_setting_action" msgid="2111461909782935190">"設定"</string> <string name="auto_saver_okay_action" msgid="7815925750741935386">"我知道了"</string> - <string name="heap_dump_tile_name" msgid="2464189856478823046">"傾印 SysUI 記憶體快照"</string> + <string name="heap_dump_tile_name" msgid="2464189856478823046">"Dump SysUI Heap"</string> <string name="sensor_privacy_mode" msgid="4462866919026513692">"已關閉感應器"</string> <string name="device_services" msgid="1549944177856658705">"裝置服務"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"無標題"</string> diff --git a/packages/SystemUI/res/values/config.xml b/packages/SystemUI/res/values/config.xml index 848cdb1e831c..01abc77aea38 100644 --- a/packages/SystemUI/res/values/config.xml +++ b/packages/SystemUI/res/values/config.xml @@ -209,6 +209,26 @@ far break points. A sensor value less than this is considered "near". --> <item name="proximity_sensor_threshold" translatable="false" format="float" type="dimen"></item> + <!-- If using proximity_sensor_type, specifies a threshold value to distinguish near and + far break points. A sensor value more than this is considered "far". If not set, + proximity_sensor_threshold is used. This allows one to implement a latching mechanism for + noisy sensors. --> + <item name="proximity_sensor_threshold_latch" translatable="false" format="float" type="dimen"></item> + + <!-- Override value to use for proximity sensor as confirmation for proximity_sensor_type. --> + <string name="proximity_sensor_secondary_type" translatable="false"></string> + + <!-- If using proximity_sensor_secondary_type, specifies a threshold value to distinguish + near and far break points. A sensor value less than this is considered "near". --> + <item name="proximity_sensor_secondary_threshold" translatable="false" format="float" + type="dimen"></item> + + <!-- If using proximity_sensor_secondary_type, specifies a threshold value to distinguish near and + far break points. A sensor value more than this is considered "far". If not set, + proximity_sensor_secondary_threshold is used. This allows one to implement a latching + mechanism for noisy sensors. --> + <item name="proximity_sensor_secondary_threshold_latch" translatable="false" format="float" type="dimen"></item> + <!-- Doze: pulse parameter - how long does it take to fade in? --> <integer name="doze_pulse_duration_in">130</integer> @@ -308,6 +328,10 @@ <item>com.android.systemui.toast.ToastUI</item> </string-array> + <!-- QS tile shape store width. negative implies fill configuration instead of stroke--> + <dimen name="config_qsTileStrokeWidthActive">-1dp</dimen> + <dimen name="config_qsTileStrokeWidthInactive">-1dp</dimen> + <!-- SystemUI vender service, used in config_systemUIServiceComponents. --> <string name="config_systemUIVendorServiceComponent" translatable="false">com.android.systemui.VendorServices</string> @@ -507,6 +531,8 @@ <!-- Defines the blacklist for system icons. That is to say, the icons in the status bar that are part of the blacklist are never displayed. Each item in the blacklist must be a string defined in core/res/res/config.xml to properly blacklist the icon. + + TODO: See if we can rename this config variable. --> <string-array name="config_statusBarIconBlackList" translatable="false"> <item>@*android:string/status_bar_rotate</item> diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/system/SyncRtSurfaceTransactionApplierCompat.java b/packages/SystemUI/shared/src/com/android/systemui/shared/system/SyncRtSurfaceTransactionApplierCompat.java index 82e6251a4484..2985a61dec9e 100644 --- a/packages/SystemUI/shared/src/com/android/systemui/shared/system/SyncRtSurfaceTransactionApplierCompat.java +++ b/packages/SystemUI/shared/src/com/android/systemui/shared/system/SyncRtSurfaceTransactionApplierCompat.java @@ -46,6 +46,7 @@ public class SyncRtSurfaceTransactionApplierCompat { public static final int FLAG_CORNER_RADIUS = 1 << 4; public static final int FLAG_BACKGROUND_BLUR_RADIUS = 1 << 5; public static final int FLAG_VISIBILITY = 1 << 6; + public static final int FLAG_RELATIVE_LAYER = 1 << 7; private static final int MSG_UPDATE_SEQUENCE_NUMBER = 0; @@ -192,6 +193,8 @@ public class SyncRtSurfaceTransactionApplierCompat { Matrix matrix; Rect windowCrop; int layer; + SurfaceControl relativeTo; + int relativeLayer; boolean visible; /** @@ -249,6 +252,18 @@ public class SyncRtSurfaceTransactionApplierCompat { } /** + * @param relativeTo The surface that's set relative layer to. + * @param relativeLayer The relative layer. + * @return this Builder + */ + public Builder withRelativeLayerTo(SurfaceControl relativeTo, int relativeLayer) { + this.relativeTo = relativeTo; + this.relativeLayer = relativeLayer; + flags |= FLAG_RELATIVE_LAYER; + return this; + } + + /** * @param radius the Radius for rounded corners to apply to the surface. * @return this Builder */ @@ -283,7 +298,7 @@ public class SyncRtSurfaceTransactionApplierCompat { */ public SurfaceParams build() { return new SurfaceParams(surface, flags, alpha, matrix, windowCrop, layer, - cornerRadius, backgroundBlurRadius, visible); + relativeTo, relativeLayer, cornerRadius, backgroundBlurRadius, visible); } } @@ -297,21 +312,25 @@ public class SyncRtSurfaceTransactionApplierCompat { * @param windowCrop Crop to apply, only applied if not {@code null} */ public SurfaceParams(SurfaceControlCompat surface, float alpha, Matrix matrix, - Rect windowCrop, int layer, float cornerRadius) { + Rect windowCrop, int layer, SurfaceControl relativeTo, int relativeLayer, + float cornerRadius) { this(surface.mSurfaceControl, FLAG_ALL & ~(FLAG_VISIBILITY | FLAG_BACKGROUND_BLUR_RADIUS), alpha, - matrix, windowCrop, layer, cornerRadius, 0 /* backgroundBlurRadius */, true); + matrix, windowCrop, layer, relativeTo, relativeLayer, cornerRadius, + 0 /* backgroundBlurRadius */, true); } private SurfaceParams(SurfaceControl surface, int flags, float alpha, Matrix matrix, - Rect windowCrop, int layer, float cornerRadius, int backgroundBlurRadius, - boolean visible) { + Rect windowCrop, int layer, SurfaceControl relativeTo, int relativeLayer, + float cornerRadius, int backgroundBlurRadius, boolean visible) { this.flags = flags; this.surface = surface; this.alpha = alpha; this.matrix = new Matrix(matrix); this.windowCrop = windowCrop != null ? new Rect(windowCrop) : null; this.layer = layer; + this.relativeTo = relativeTo; + this.relativeLayer = relativeLayer; this.cornerRadius = cornerRadius; this.backgroundBlurRadius = backgroundBlurRadius; this.visible = visible; @@ -327,6 +346,8 @@ public class SyncRtSurfaceTransactionApplierCompat { public final Matrix matrix; public final Rect windowCrop; public final int layer; + public final SurfaceControl relativeTo; + public final int relativeLayer; public final boolean visible; public void applyTo(SurfaceControl.Transaction t) { @@ -355,6 +376,9 @@ public class SyncRtSurfaceTransactionApplierCompat { t.hide(surface); } } + if ((flags & FLAG_RELATIVE_LAYER) != 0) { + t.setRelativeLayer(surface, relativeTo, relativeLayer); + } } } } diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/system/TransactionCompat.java b/packages/SystemUI/shared/src/com/android/systemui/shared/system/TransactionCompat.java index b966f9356849..255fffdb3291 100644 --- a/packages/SystemUI/shared/src/com/android/systemui/shared/system/TransactionCompat.java +++ b/packages/SystemUI/shared/src/com/android/systemui/shared/system/TransactionCompat.java @@ -114,6 +114,11 @@ public class TransactionCompat { t.deferTransactionUntil(surfaceControl, barrier, frameNumber); } + public static void setRelativeLayer(Transaction t, SurfaceControl surfaceControl, + SurfaceControl relativeTo, int z) { + t.setRelativeLayer(surfaceControl, relativeTo, z); + } + @Deprecated public static void setEarlyWakeup(Transaction t) { } diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/system/WallpaperEngineCompat.java b/packages/SystemUI/shared/src/com/android/systemui/shared/system/WallpaperEngineCompat.java new file mode 100644 index 000000000000..4d968f1763ca --- /dev/null +++ b/packages/SystemUI/shared/src/com/android/systemui/shared/system/WallpaperEngineCompat.java @@ -0,0 +1,45 @@ +/* + * Copyright (C) 2020 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.android.systemui.shared.system; + +import android.graphics.Rect; +import android.service.wallpaper.IWallpaperEngine; +import android.util.Log; + +/** + * @see IWallpaperEngine + */ +public class WallpaperEngineCompat { + + private static final String TAG = "WallpaperEngineCompat"; + + private final IWallpaperEngine mWrappedEngine; + + public WallpaperEngineCompat(IWallpaperEngine wrappedEngine) { + mWrappedEngine = wrappedEngine; + } + + /** + * @see IWallpaperEngine#scalePreview(Rect) + */ + public void scalePreview(Rect scaleToRect) { + try { + mWrappedEngine.scalePreview(scaleToRect); + } catch (Exception e) { + Log.i(TAG, "Couldn't call scalePreview method on WallpaperEngine", e); + } + } +} diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/system/WallpaperManagerCompat.java b/packages/SystemUI/shared/src/com/android/systemui/shared/system/WallpaperManagerCompat.java index 7570c2cbfe98..1f194eca816f 100644 --- a/packages/SystemUI/shared/src/com/android/systemui/shared/system/WallpaperManagerCompat.java +++ b/packages/SystemUI/shared/src/com/android/systemui/shared/system/WallpaperManagerCompat.java @@ -18,6 +18,7 @@ package com.android.systemui.shared.system; import android.app.WallpaperManager; import android.content.Context; +import android.content.res.Resources; import android.os.IBinder; /** @@ -36,4 +37,15 @@ public class WallpaperManagerCompat { public void setWallpaperZoomOut(IBinder windowToken, float zoom) { mWallpaperManager.setWallpaperZoomOut(windowToken, zoom); } + + /** + * @return the max scale for the wallpaper when it's fully zoomed out + */ + public static float getWallpaperZoomOutMaxScale(Context context) { + return context.getResources() + .getFloat(Resources.getSystem().getIdentifier( + /* name= */ "config_wallpaperMaxScale", + /* defType= */ "dimen", + /* defPackage= */ "android")); + } }
\ No newline at end of file diff --git a/packages/SystemUI/src/com/android/systemui/BatteryMeterView.java b/packages/SystemUI/src/com/android/systemui/BatteryMeterView.java index a46ab3a9e35b..5235a451d021 100644 --- a/packages/SystemUI/src/com/android/systemui/BatteryMeterView.java +++ b/packages/SystemUI/src/com/android/systemui/BatteryMeterView.java @@ -234,7 +234,7 @@ public class BatteryMeterView extends LinearLayout implements } Dependency.get(TunerService.class) - .addTunable(this, StatusBarIconController.ICON_BLACKLIST); + .addTunable(this, StatusBarIconController.ICON_HIDE_LIST); mIsSubscribedForTunerUpdates = true; } @@ -287,8 +287,8 @@ public class BatteryMeterView extends LinearLayout implements @Override public void onTuningChanged(String key, String newValue) { - if (StatusBarIconController.ICON_BLACKLIST.equals(key)) { - ArraySet<String> icons = StatusBarIconController.getIconBlacklist( + if (StatusBarIconController.ICON_HIDE_LIST.equals(key)) { + ArraySet<String> icons = StatusBarIconController.getIconHideList( getContext(), newValue); setVisibility(icons.contains(mSlotBattery) ? View.GONE : View.VISIBLE); } diff --git a/packages/SystemUI/src/com/android/systemui/ScreenDecorations.java b/packages/SystemUI/src/com/android/systemui/ScreenDecorations.java index 7861211e802d..ad11d71eb132 100644 --- a/packages/SystemUI/src/com/android/systemui/ScreenDecorations.java +++ b/packages/SystemUI/src/com/android/systemui/ScreenDecorations.java @@ -48,10 +48,11 @@ import android.graphics.Matrix; import android.graphics.Paint; import android.graphics.Path; import android.graphics.PixelFormat; +import android.graphics.Point; import android.graphics.Rect; import android.graphics.RectF; import android.graphics.Region; -import android.graphics.drawable.VectorDrawable; +import android.graphics.drawable.Drawable; import android.hardware.display.DisplayManager; import android.os.Handler; import android.os.HandlerExecutor; @@ -61,6 +62,7 @@ import android.os.UserHandle; import android.provider.Settings.Secure; import android.util.DisplayMetrics; import android.util.Log; +import android.view.Display; import android.view.DisplayCutout; import android.view.DisplayCutout.BoundsPosition; import android.view.DisplayInfo; @@ -117,12 +119,15 @@ public class ScreenDecorations extends SystemUI implements Tunable { private DisplayManager.DisplayListener mDisplayListener; private CameraAvailabilityListener mCameraListener; + //TODO: These are piecemeal being updated to Points for now to support non-square rounded + // corners. for now it is only supposed when reading the intrinsic size from the drawables with + // mIsRoundedCornerMultipleRadius is set @VisibleForTesting - protected int mRoundedDefault; + protected Point mRoundedDefault = new Point(0, 0); @VisibleForTesting - protected int mRoundedDefaultTop; + protected Point mRoundedDefaultTop = new Point(0, 0); @VisibleForTesting - protected int mRoundedDefaultBottom; + protected Point mRoundedDefaultBottom = new Point(0, 0); @VisibleForTesting protected View[] mOverlays; @Nullable @@ -375,8 +380,7 @@ public class ScreenDecorations extends SystemUI implements Tunable { if (mOverlays[pos] != null) { return; } - mOverlays[pos] = LayoutInflater.from(mContext) - .inflate(R.layout.rounded_corners, null); + mOverlays[pos] = overlayForPosition(pos); mCutoutViews[pos] = new DisplayCutoutView(mContext, pos, this); ((ViewGroup) mOverlays[pos]).addView(mCutoutViews[pos]); @@ -405,6 +409,23 @@ public class ScreenDecorations extends SystemUI implements Tunable { new ValidatingPreDrawListener(mOverlays[pos])); } + /** + * Allow overrides for top/bottom positions + */ + private View overlayForPosition(@BoundsPosition int pos) { + switch (pos) { + case BOUNDS_POSITION_TOP: + return LayoutInflater.from(mContext) + .inflate(R.layout.rounded_corners_top, null); + case BOUNDS_POSITION_BOTTOM: + return LayoutInflater.from(mContext) + .inflate(R.layout.rounded_corners_bottom, null); + default: + return LayoutInflater.from(mContext) + .inflate(R.layout.rounded_corners, null); + } + } + private void updateView(@BoundsPosition int pos) { if (mOverlays == null || mOverlays[pos] == null) { return; @@ -590,27 +611,36 @@ public class ScreenDecorations extends SystemUI implements Tunable { } private void updateRoundedCornerRadii() { + // We should eventually move to just using the intrinsic size of the drawables since + // they should be sized to the exact pixels they want to cover. Therefore I'm purposely not + // upgrading all of the configs to contain (width, height) pairs. Instead assume that a + // device configured using the single integer config value is okay with drawing the corners + // as a square final int newRoundedDefault = mContext.getResources().getDimensionPixelSize( com.android.internal.R.dimen.rounded_corner_radius); final int newRoundedDefaultTop = mContext.getResources().getDimensionPixelSize( com.android.internal.R.dimen.rounded_corner_radius_top); final int newRoundedDefaultBottom = mContext.getResources().getDimensionPixelSize( com.android.internal.R.dimen.rounded_corner_radius_bottom); - final boolean roundedCornersChanged = mRoundedDefault != newRoundedDefault - || mRoundedDefaultBottom != newRoundedDefaultBottom - || mRoundedDefaultTop != newRoundedDefaultTop; - if (roundedCornersChanged) { + final boolean changed = mRoundedDefault.x != newRoundedDefault + || mRoundedDefaultTop.x != newRoundedDefault + || mRoundedDefaultBottom.x != newRoundedDefault; + + if (changed) { // If config_roundedCornerMultipleRadius set as true, ScreenDecorations respect the - // max(width, height) size of drawable/rounded.xml instead of rounded_corner_radius + // (width, height) size of drawable/rounded.xml instead of rounded_corner_radius if (mIsRoundedCornerMultipleRadius) { - final VectorDrawable d = (VectorDrawable) mContext.getDrawable(R.drawable.rounded); - mRoundedDefault = Math.max(d.getIntrinsicWidth(), d.getIntrinsicHeight()); - mRoundedDefaultTop = mRoundedDefaultBottom = mRoundedDefault; + Drawable d = mContext.getDrawable(R.drawable.rounded); + mRoundedDefault.set(d.getIntrinsicWidth(), d.getIntrinsicHeight()); + d = mContext.getDrawable(R.drawable.rounded_corner_top); + mRoundedDefaultTop.set(d.getIntrinsicWidth(), d.getIntrinsicHeight()); + d = mContext.getDrawable(R.drawable.rounded_corner_bottom); + mRoundedDefaultBottom.set(d.getIntrinsicWidth(), d.getIntrinsicHeight()); } else { - mRoundedDefault = newRoundedDefault; - mRoundedDefaultTop = newRoundedDefaultTop; - mRoundedDefaultBottom = newRoundedDefaultBottom; + mRoundedDefault.set(newRoundedDefault, newRoundedDefault); + mRoundedDefaultTop.set(newRoundedDefaultTop, newRoundedDefaultTop); + mRoundedDefaultBottom.set(newRoundedDefaultBottom, newRoundedDefaultBottom); } onTuningChanged(SIZE, null); } @@ -625,7 +655,7 @@ public class ScreenDecorations extends SystemUI implements Tunable { if (shouldShowRoundedCorner(pos)) { final int gravity = getRoundedCornerGravity(pos, id == R.id.left); ((FrameLayout.LayoutParams) rounded.getLayoutParams()).gravity = gravity; - rounded.setRotation(getRoundedCornerRotation(gravity)); + setRoundedCornerOrientation(rounded, gravity); rounded.setVisibility(View.VISIBLE); } } @@ -646,23 +676,38 @@ public class ScreenDecorations extends SystemUI implements Tunable { } } - private int getRoundedCornerRotation(int gravity) { + /** + * Configures the rounded corner drawable's view matrix based on the gravity. + * + * The gravity describes which corner to configure for, and the drawable we are rotating is + * assumed to be oriented for the top-left corner of the device regardless of the target corner. + * Therefore we need to rotate 180 degrees to get a bottom-left corner, and mirror in the x- or + * y-axis for the top-right and bottom-left corners. + */ + private void setRoundedCornerOrientation(View corner, int gravity) { + corner.setRotation(0); + corner.setScaleX(1); + corner.setScaleY(1); switch (gravity) { case Gravity.TOP | Gravity.LEFT: - return 0; + return; case Gravity.TOP | Gravity.RIGHT: - return 90; + corner.setScaleX(-1); // flip X axis + return; case Gravity.BOTTOM | Gravity.LEFT: - return 270; + corner.setScaleY(-1); // flip Y axis + return; case Gravity.BOTTOM | Gravity.RIGHT: - return 180; + corner.setRotation(180); + return; default: throw new IllegalArgumentException("Unsupported gravity: " + gravity); } } - private boolean hasRoundedCorners() { - return mRoundedDefault > 0 || mRoundedDefaultBottom > 0 || mRoundedDefaultTop > 0 + return mRoundedDefault.x > 0 + || mRoundedDefaultBottom.x > 0 + || mRoundedDefaultTop.x > 0 || mIsRoundedCornerMultipleRadius; } @@ -712,12 +757,13 @@ public class ScreenDecorations extends SystemUI implements Tunable { mHandler.post(() -> { if (mOverlays == null) return; if (SIZE.equals(key)) { - int size = mRoundedDefault; - int sizeTop = mRoundedDefaultTop; - int sizeBottom = mRoundedDefaultBottom; + Point size = mRoundedDefault; + Point sizeTop = mRoundedDefaultTop; + Point sizeBottom = mRoundedDefaultBottom; if (newValue != null) { try { - size = (int) (Integer.parseInt(newValue) * mDensity); + int s = (int) (Integer.parseInt(newValue) * mDensity); + size = new Point(s, s); } catch (Exception e) { } } @@ -726,14 +772,17 @@ public class ScreenDecorations extends SystemUI implements Tunable { }); } - private void updateRoundedCornerSize(int sizeDefault, int sizeTop, int sizeBottom) { + private void updateRoundedCornerSize( + Point sizeDefault, + Point sizeTop, + Point sizeBottom) { if (mOverlays == null) { return; } - if (sizeTop == 0) { + if (sizeTop.x == 0) { sizeTop = sizeDefault; } - if (sizeBottom == 0) { + if (sizeBottom.x == 0) { sizeBottom = sizeDefault; } @@ -760,10 +809,10 @@ public class ScreenDecorations extends SystemUI implements Tunable { } @VisibleForTesting - protected void setSize(View view, int pixelSize) { + protected void setSize(View view, Point pixelSize) { LayoutParams params = view.getLayoutParams(); - params.width = pixelSize; - params.height = pixelSize; + params.width = pixelSize.x; + params.height = pixelSize.y; view.setLayoutParams(params); } @@ -772,6 +821,7 @@ public class ScreenDecorations extends SystemUI implements Tunable { private static final float HIDDEN_CAMERA_PROTECTION_SCALE = 0.5f; + private Display.Mode mDisplayMode = null; private final DisplayInfo mInfo = new DisplayInfo(); private final Paint mPaint = new Paint(); private final List<Rect> mBounds = new ArrayList(); @@ -856,11 +906,33 @@ public class ScreenDecorations extends SystemUI implements Tunable { @Override public void onDisplayChanged(int displayId) { + Display.Mode oldMode = mDisplayMode; + mDisplayMode = getDisplay().getMode(); + + // Display mode hasn't meaningfully changed, we can ignore it + if (!modeChanged(oldMode, mDisplayMode)) { + return; + } + if (displayId == getDisplay().getDisplayId()) { update(); } } + private boolean modeChanged(Display.Mode oldMode, Display.Mode newMode) { + if (oldMode == null) { + return true; + } + + boolean changed = false; + changed |= oldMode.getPhysicalHeight() != newMode.getPhysicalHeight(); + changed |= oldMode.getPhysicalWidth() != newMode.getPhysicalWidth(); + // We purposely ignore refresh rate and id changes here, because we don't need to + // invalidate for those, and they can trigger the refresh rate to increase + + return changed; + } + public void setRotation(int rotation) { mRotation = rotation; update(); diff --git a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleController.java b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleController.java index 6f103b020814..e252195da136 100644 --- a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleController.java +++ b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleController.java @@ -207,12 +207,6 @@ public class BubbleController implements ConfigurationController.ConfigurationLi /** Whether or not the BubbleStackView has been added to the WindowManager. */ private boolean mAddedToWindowManager = false; - /** - * Value from {@link NotificationShadeWindowController#getForceHasTopUi()} when we forced top UI - * due to expansion. We'll restore this value when the stack collapses. - */ - private boolean mHadTopUi = false; - // Listens to user switch so bubbles can be saved and restored. private final NotificationLockscreenUserManager mNotifUserManager; @@ -1303,7 +1297,7 @@ public class BubbleController implements ConfigurationController.ConfigurationLi // Collapsing? Do this first before remaining steps. if (update.expandedChanged && !update.expanded) { mStackView.setExpanded(false); - mNotificationShadeWindowController.setForceHasTopUi(mHadTopUi); + mNotificationShadeWindowController.setRequestTopUi(false, TAG); } // Do removals, if any. @@ -1393,8 +1387,7 @@ public class BubbleController implements ConfigurationController.ConfigurationLi if (update.expandedChanged && update.expanded) { if (mStackView != null) { mStackView.setExpanded(true); - mHadTopUi = mNotificationShadeWindowController.getForceHasTopUi(); - mNotificationShadeWindowController.setForceHasTopUi(true); + mNotificationShadeWindowController.setRequestTopUi(true, TAG); } } diff --git a/packages/SystemUI/src/com/android/systemui/charging/WirelessChargingAnimation.java b/packages/SystemUI/src/com/android/systemui/charging/WirelessChargingAnimation.java index d5b54f94d938..2569f7c107cb 100644 --- a/packages/SystemUI/src/com/android/systemui/charging/WirelessChargingAnimation.java +++ b/packages/SystemUI/src/com/android/systemui/charging/WirelessChargingAnimation.java @@ -54,25 +54,28 @@ public class WirelessChargingAnimation { * before calling {@link #show} - can be done through {@link #makeWirelessChargingAnimation}. * @hide */ - public WirelessChargingAnimation(@NonNull Context context, @Nullable Looper looper, int - batteryLevel, Callback callback, boolean isDozing) { + public WirelessChargingAnimation(@NonNull Context context, @Nullable Looper looper, + int transmittingBatteryLevel, int batteryLevel, Callback callback, boolean isDozing) { mCurrentWirelessChargingView = new WirelessChargingView(context, looper, - batteryLevel, callback, isDozing); + transmittingBatteryLevel, batteryLevel, callback, isDozing); } /** * Creates a wireless charging animation object populated with next view. + * * @hide */ public static WirelessChargingAnimation makeWirelessChargingAnimation(@NonNull Context context, - @Nullable Looper looper, int batteryLevel, Callback callback, boolean isDozing) { - return new WirelessChargingAnimation(context, looper, batteryLevel, callback, isDozing); + @Nullable Looper looper, int transmittingBatteryLevel, int batteryLevel, + Callback callback, boolean isDozing) { + return new WirelessChargingAnimation(context, looper, transmittingBatteryLevel, + batteryLevel, callback, isDozing); } /** * Show the view for the specified duration. */ - public void show() { + public void show(long delay) { if (mCurrentWirelessChargingView == null || mCurrentWirelessChargingView.mNextView == null) { throw new RuntimeException("setView must have been called"); @@ -83,8 +86,8 @@ public class WirelessChargingAnimation { } mPreviousWirelessChargingView = mCurrentWirelessChargingView; - mCurrentWirelessChargingView.show(); - mCurrentWirelessChargingView.hide(DURATION); + mCurrentWirelessChargingView.show(delay); + mCurrentWirelessChargingView.hide(delay + DURATION); } private static class WirelessChargingView { @@ -100,10 +103,12 @@ public class WirelessChargingAnimation { private WindowManager mWM; private Callback mCallback; - public WirelessChargingView(Context context, @Nullable Looper looper, int batteryLevel, - Callback callback, boolean isDozing) { + public WirelessChargingView(Context context, @Nullable Looper looper, + int transmittingBatteryLevel, int batteryLevel, Callback callback, + boolean isDozing) { mCallback = callback; - mNextView = new WirelessChargingLayout(context, batteryLevel, isDozing); + mNextView = new WirelessChargingLayout(context, transmittingBatteryLevel, batteryLevel, + isDozing); mGravity = Gravity.CENTER_HORIZONTAL | Gravity.CENTER; final WindowManager.LayoutParams params = mParams; @@ -149,9 +154,9 @@ public class WirelessChargingAnimation { }; } - public void show() { + public void show(long delay) { if (DEBUG) Slog.d(TAG, "SHOW: " + this); - mHandler.obtainMessage(SHOW).sendToTarget(); + mHandler.sendMessageDelayed(Message.obtain(mHandler, SHOW), delay); } public void hide(long duration) { diff --git a/packages/SystemUI/src/com/android/systemui/charging/WirelessChargingLayout.java b/packages/SystemUI/src/com/android/systemui/charging/WirelessChargingLayout.java index ec150873d56e..e8407f01516b 100644 --- a/packages/SystemUI/src/com/android/systemui/charging/WirelessChargingLayout.java +++ b/packages/SystemUI/src/com/android/systemui/charging/WirelessChargingLayout.java @@ -22,6 +22,7 @@ import android.animation.ValueAnimator; import android.content.Context; import android.graphics.drawable.Animatable; import android.util.AttributeSet; +import android.util.TypedValue; import android.view.ContextThemeWrapper; import android.view.animation.PathInterpolator; import android.widget.FrameLayout; @@ -37,16 +38,17 @@ import java.text.NumberFormat; * @hide */ public class WirelessChargingLayout extends FrameLayout { - private final static int UNKNOWN_BATTERY_LEVEL = -1; + public final static int UNKNOWN_BATTERY_LEVEL = -1; public WirelessChargingLayout(Context context) { super(context); init(context, null, false); } - public WirelessChargingLayout(Context context, int batteryLevel, boolean isDozing) { + public WirelessChargingLayout(Context context, int transmittingBatteryLevel, int batteryLevel, + boolean isDozing) { super(context); - init(context, null, batteryLevel, isDozing); + init(context, null, transmittingBatteryLevel, batteryLevel, isDozing); } public WirelessChargingLayout(Context context, AttributeSet attrs) { @@ -55,11 +57,13 @@ public class WirelessChargingLayout extends FrameLayout { } private void init(Context c, AttributeSet attrs, boolean isDozing) { - init(c, attrs, -1, false); + init(c, attrs, -1, -1, false); } - private void init(Context context, AttributeSet attrs, int batteryLevel, boolean isDozing) { - final int mBatteryLevel = batteryLevel; + private void init(Context context, AttributeSet attrs, int transmittingBatteryLevel, + int batteryLevel, boolean isDozing) { + final boolean showTransmittingBatteryLevel = + (transmittingBatteryLevel != UNKNOWN_BATTERY_LEVEL); // set style based on background int style = R.style.ChargingAnim_WallpaperBackground; @@ -74,39 +78,40 @@ public class WirelessChargingLayout extends FrameLayout { final Animatable chargingAnimation = (Animatable) chargingView.getDrawable(); // amount of battery: - final TextView mPercentage = findViewById(R.id.wireless_charging_percentage); + final TextView percentage = findViewById(R.id.wireless_charging_percentage); if (batteryLevel != UNKNOWN_BATTERY_LEVEL) { - mPercentage.setText(NumberFormat.getPercentInstance().format(mBatteryLevel / 100f)); - mPercentage.setAlpha(0); + percentage.setText(NumberFormat.getPercentInstance().format(batteryLevel / 100f)); + percentage.setAlpha(0); } - final long chargingAnimationFadeStartOffset = (long) context.getResources().getInteger( + final long chargingAnimationFadeStartOffset = context.getResources().getInteger( R.integer.wireless_charging_fade_offset); - final long chargingAnimationFadeDuration = (long) context.getResources().getInteger( + final long chargingAnimationFadeDuration = context.getResources().getInteger( R.integer.wireless_charging_fade_duration); final float batteryLevelTextSizeStart = context.getResources().getFloat( R.dimen.wireless_charging_anim_battery_level_text_size_start); final float batteryLevelTextSizeEnd = context.getResources().getFloat( - R.dimen.wireless_charging_anim_battery_level_text_size_end); + R.dimen.wireless_charging_anim_battery_level_text_size_end) * ( + showTransmittingBatteryLevel ? 0.75f : 1.0f); // Animation Scale: battery percentage text scales from 0% to 100% - ValueAnimator textSizeAnimator = ObjectAnimator.ofFloat(mPercentage, "textSize", + ValueAnimator textSizeAnimator = ObjectAnimator.ofFloat(percentage, "textSize", batteryLevelTextSizeStart, batteryLevelTextSizeEnd); textSizeAnimator.setInterpolator(new PathInterpolator(0, 0, 0, 1)); - textSizeAnimator.setDuration((long) context.getResources().getInteger( + textSizeAnimator.setDuration(context.getResources().getInteger( R.integer.wireless_charging_battery_level_text_scale_animation_duration)); // Animation Opacity: battery percentage text transitions from 0 to 1 opacity - ValueAnimator textOpacityAnimator = ObjectAnimator.ofFloat(mPercentage, "alpha", 0, 1); + ValueAnimator textOpacityAnimator = ObjectAnimator.ofFloat(percentage, "alpha", 0, 1); textOpacityAnimator.setInterpolator(Interpolators.LINEAR); - textOpacityAnimator.setDuration((long) context.getResources().getInteger( + textOpacityAnimator.setDuration(context.getResources().getInteger( R.integer.wireless_charging_battery_level_text_opacity_duration)); - textOpacityAnimator.setStartDelay((long) context.getResources().getInteger( + textOpacityAnimator.setStartDelay(context.getResources().getInteger( R.integer.wireless_charging_anim_opacity_offset)); // Animation Opacity: battery percentage text fades from 1 to 0 opacity - ValueAnimator textFadeAnimator = ObjectAnimator.ofFloat(mPercentage, "alpha", 1, 0); + ValueAnimator textFadeAnimator = ObjectAnimator.ofFloat(percentage, "alpha", 1, 0); textFadeAnimator.setDuration(chargingAnimationFadeDuration); textFadeAnimator.setInterpolator(Interpolators.LINEAR); textFadeAnimator.setStartDelay(chargingAnimationFadeStartOffset); @@ -114,7 +119,80 @@ public class WirelessChargingLayout extends FrameLayout { // play all animations together AnimatorSet animatorSet = new AnimatorSet(); animatorSet.playTogether(textSizeAnimator, textOpacityAnimator, textFadeAnimator); + + if (!showTransmittingBatteryLevel) { + chargingAnimation.start(); + animatorSet.start(); + return; + } + + // amount of transmitting battery: + final TextView transmittingPercentage = findViewById( + R.id.reverse_wireless_charging_percentage); + transmittingPercentage.setVisibility(VISIBLE); + transmittingPercentage.setText( + NumberFormat.getPercentInstance().format(transmittingBatteryLevel / 100f)); + transmittingPercentage.setAlpha(0); + + // Animation Scale: transmitting battery percentage text scales from 0% to 100% + ValueAnimator textSizeAnimatorTransmitting = ObjectAnimator.ofFloat(transmittingPercentage, + "textSize", batteryLevelTextSizeStart, batteryLevelTextSizeEnd); + textSizeAnimatorTransmitting.setInterpolator(new PathInterpolator(0, 0, 0, 1)); + textSizeAnimatorTransmitting.setDuration(context.getResources().getInteger( + R.integer.wireless_charging_battery_level_text_scale_animation_duration)); + + // Animation Opacity: transmitting battery percentage text transitions from 0 to 1 opacity + ValueAnimator textOpacityAnimatorTransmitting = ObjectAnimator.ofFloat( + transmittingPercentage, "alpha", 0, 1); + textOpacityAnimatorTransmitting.setInterpolator(Interpolators.LINEAR); + textOpacityAnimatorTransmitting.setDuration(context.getResources().getInteger( + R.integer.wireless_charging_battery_level_text_opacity_duration)); + textOpacityAnimatorTransmitting.setStartDelay( + context.getResources().getInteger(R.integer.wireless_charging_anim_opacity_offset)); + + // Animation Opacity: transmitting battery percentage text fades from 1 to 0 opacity + ValueAnimator textFadeAnimatorTransmitting = ObjectAnimator.ofFloat(transmittingPercentage, + "alpha", 1, 0); + textFadeAnimatorTransmitting.setDuration(chargingAnimationFadeDuration); + textFadeAnimatorTransmitting.setInterpolator(Interpolators.LINEAR); + textFadeAnimatorTransmitting.setStartDelay(chargingAnimationFadeStartOffset); + + // play all animations together + AnimatorSet animatorSetTransmitting = new AnimatorSet(); + animatorSetTransmitting.playTogether(textSizeAnimatorTransmitting, + textOpacityAnimatorTransmitting, textFadeAnimatorTransmitting); + + // transmitting battery icon + final ImageView chargingViewIcon = findViewById(R.id.reverse_wireless_charging_icon); + chargingViewIcon.setVisibility(VISIBLE); + final int padding = Math.round( + TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, batteryLevelTextSizeEnd, + getResources().getDisplayMetrics())); + chargingViewIcon.setPadding(padding, 0, padding, 0); + + // Animation Opacity: transmitting battery icon transitions from 0 to 1 opacity + ValueAnimator textOpacityAnimatorIcon = ObjectAnimator.ofFloat(chargingViewIcon, "alpha", 0, + 1); + textOpacityAnimatorIcon.setInterpolator(Interpolators.LINEAR); + textOpacityAnimatorIcon.setDuration(context.getResources().getInteger( + R.integer.wireless_charging_battery_level_text_opacity_duration)); + textOpacityAnimatorIcon.setStartDelay( + context.getResources().getInteger(R.integer.wireless_charging_anim_opacity_offset)); + + // Animation Opacity: transmitting battery icon fades from 1 to 0 opacity + ValueAnimator textFadeAnimatorIcon = ObjectAnimator.ofFloat(chargingViewIcon, "alpha", 1, + 0); + textFadeAnimatorIcon.setDuration(chargingAnimationFadeDuration); + textFadeAnimatorIcon.setInterpolator(Interpolators.LINEAR); + textFadeAnimatorIcon.setStartDelay(chargingAnimationFadeStartOffset); + + // play all animations together + AnimatorSet animatorSetIcon = new AnimatorSet(); + animatorSetIcon.playTogether(textOpacityAnimatorIcon, textFadeAnimatorIcon); + chargingAnimation.start(); animatorSet.start(); + animatorSetTransmitting.start(); + animatorSetIcon.start(); } } diff --git a/packages/SystemUI/src/com/android/systemui/classifier/FalsingManagerProxy.java b/packages/SystemUI/src/com/android/systemui/classifier/FalsingManagerProxy.java index ef2ef4570fca..f35322bd2a77 100644 --- a/packages/SystemUI/src/com/android/systemui/classifier/FalsingManagerProxy.java +++ b/packages/SystemUI/src/com/android/systemui/classifier/FalsingManagerProxy.java @@ -22,7 +22,6 @@ import android.content.Context; import android.hardware.SensorManager; import android.net.Uri; import android.provider.DeviceConfig; -import android.util.DisplayMetrics; import android.view.MotionEvent; import androidx.annotation.NonNull; @@ -62,7 +61,7 @@ public class FalsingManagerProxy implements FalsingManager, Dumpable { private static final String PROXIMITY_SENSOR_TAG = "FalsingManager"; private final ProximitySensor mProximitySensor; - private final DisplayMetrics mDisplayMetrics; + private final FalsingDataProvider mFalsingDataProvider; private FalsingManager mInternalFalsingManager; private DeviceConfig.OnPropertiesChangedListener mDeviceConfigListener; private final DeviceConfigProxy mDeviceConfig; @@ -74,20 +73,21 @@ public class FalsingManagerProxy implements FalsingManager, Dumpable { @Inject FalsingManagerProxy(Context context, PluginManager pluginManager, @Main Executor executor, - DisplayMetrics displayMetrics, ProximitySensor proximitySensor, + ProximitySensor proximitySensor, DeviceConfigProxy deviceConfig, DockManager dockManager, KeyguardUpdateMonitor keyguardUpdateMonitor, DumpManager dumpManager, @UiBackground Executor uiBgExecutor, - StatusBarStateController statusBarStateController) { - mDisplayMetrics = displayMetrics; + StatusBarStateController statusBarStateController, + FalsingDataProvider falsingDataProvider) { mProximitySensor = proximitySensor; mDockManager = dockManager; mKeyguardUpdateMonitor = keyguardUpdateMonitor; mUiBgExecutor = uiBgExecutor; mStatusBarStateController = statusBarStateController; + mFalsingDataProvider = falsingDataProvider; mProximitySensor.setTag(PROXIMITY_SENSOR_TAG); - mProximitySensor.setSensorDelay(SensorManager.SENSOR_DELAY_GAME); + mProximitySensor.setDelay(SensorManager.SENSOR_DELAY_GAME); mDeviceConfig = deviceConfig; mDeviceConfigListener = properties -> onDeviceConfigPropertiesChanged(context, properties.getNamespace()); @@ -143,7 +143,7 @@ public class FalsingManagerProxy implements FalsingManager, Dumpable { mInternalFalsingManager = new FalsingManagerImpl(context, mUiBgExecutor); } else { mInternalFalsingManager = new BrightLineFalsingManager( - new FalsingDataProvider(mDisplayMetrics), + mFalsingDataProvider, mKeyguardUpdateMonitor, mProximitySensor, mDeviceConfig, diff --git a/packages/SystemUI/src/com/android/systemui/classifier/brightline/BrightLineFalsingManager.java b/packages/SystemUI/src/com/android/systemui/classifier/brightline/BrightLineFalsingManager.java index 62254a64dfcc..a50f9ce9713b 100644 --- a/packages/SystemUI/src/com/android/systemui/classifier/brightline/BrightLineFalsingManager.java +++ b/packages/SystemUI/src/com/android/systemui/classifier/brightline/BrightLineFalsingManager.java @@ -37,6 +37,7 @@ import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.statusbar.StatusBarState; import com.android.systemui.util.DeviceConfigProxy; import com.android.systemui.util.sensors.ProximitySensor; +import com.android.systemui.util.sensors.ThresholdSensor; import java.io.PrintWriter; import java.util.ArrayDeque; @@ -76,7 +77,7 @@ public class BrightLineFalsingManager implements FalsingManager { private final List<FalsingClassifier> mClassifiers; - private ProximitySensor.ProximitySensorListener mSensorEventListener = this::onProximityEvent; + private ThresholdSensor.Listener mSensorEventListener = this::onProximityEvent; private final KeyguardUpdateMonitorCallback mKeyguardUpdateCallback = new KeyguardUpdateMonitorCallback() { @@ -131,7 +132,9 @@ public class BrightLineFalsingManager implements FalsingManager { } private void registerSensors() { - mProximitySensor.register(mSensorEventListener); + if (!mDataProvider.isWirelessCharging()) { + mProximitySensor.register(mSensorEventListener); + } } private void unregisterSensors() { @@ -240,7 +243,7 @@ public class BrightLineFalsingManager implements FalsingManager { mClassifiers.forEach((classifier) -> classifier.onTouchEvent(motionEvent)); } - private void onProximityEvent(ProximitySensor.ProximityEvent proximityEvent) { + private void onProximityEvent(ThresholdSensor.ThresholdSensorEvent proximityEvent) { // TODO: some of these classifiers might allow us to abort early, meaning we don't have to // make these calls. mClassifiers.forEach((classifier) -> classifier.onProximityEvent(proximityEvent)); diff --git a/packages/SystemUI/src/com/android/systemui/classifier/brightline/FalsingClassifier.java b/packages/SystemUI/src/com/android/systemui/classifier/brightline/FalsingClassifier.java index cf088213644e..85e95a66bfe3 100644 --- a/packages/SystemUI/src/com/android/systemui/classifier/brightline/FalsingClassifier.java +++ b/packages/SystemUI/src/com/android/systemui/classifier/brightline/FalsingClassifier.java @@ -96,7 +96,7 @@ abstract class FalsingClassifier { /** * Called when a ProximityEvent occurs (change in near/far). */ - void onProximityEvent(ProximitySensor.ProximityEvent proximityEvent) {}; + void onProximityEvent(ProximitySensor.ThresholdSensorEvent proximityEvent) {}; /** * The phone screen has turned on and we need to begin falsing detection. diff --git a/packages/SystemUI/src/com/android/systemui/classifier/brightline/FalsingDataProvider.java b/packages/SystemUI/src/com/android/systemui/classifier/brightline/FalsingDataProvider.java index 5494c644c22c..ea46441c8fbe 100644 --- a/packages/SystemUI/src/com/android/systemui/classifier/brightline/FalsingDataProvider.java +++ b/packages/SystemUI/src/com/android/systemui/classifier/brightline/FalsingDataProvider.java @@ -22,10 +22,13 @@ import android.view.MotionEvent.PointerCoords; import android.view.MotionEvent.PointerProperties; import com.android.systemui.classifier.Classifier; +import com.android.systemui.statusbar.policy.BatteryController; import java.util.ArrayList; import java.util.List; +import javax.inject.Inject; + /** * Acts as a cache and utility class for FalsingClassifiers. */ @@ -36,6 +39,7 @@ public class FalsingDataProvider { private final int mWidthPixels; private final int mHeightPixels; + private final BatteryController mBatteryController; private final float mXdpi; private final float mYdpi; @@ -50,11 +54,13 @@ public class FalsingDataProvider { private MotionEvent mFirstRecentMotionEvent; private MotionEvent mLastMotionEvent; - public FalsingDataProvider(DisplayMetrics displayMetrics) { + @Inject + public FalsingDataProvider(DisplayMetrics displayMetrics, BatteryController batteryController) { mXdpi = displayMetrics.xdpi; mYdpi = displayMetrics.ydpi; mWidthPixels = displayMetrics.widthPixels; mHeightPixels = displayMetrics.heightPixels; + mBatteryController = batteryController; FalsingClassifier.logInfo("xdpi, ydpi: " + getXdpi() + ", " + getYdpi()); FalsingClassifier.logInfo("width, height: " + getWidthPixels() + ", " + getHeightPixels()); @@ -177,6 +183,11 @@ public class FalsingDataProvider { return mLastMotionEvent.getY() < mFirstRecentMotionEvent.getY(); } + /** Returns true if phone is being charged without a cable. */ + boolean isWirelessCharging() { + return mBatteryController.isWirelessCharging(); + } + private void recalculateData() { if (!mDirty) { return; diff --git a/packages/SystemUI/src/com/android/systemui/classifier/brightline/ProximityClassifier.java b/packages/SystemUI/src/com/android/systemui/classifier/brightline/ProximityClassifier.java index 749914e1b625..b128678af5db 100644 --- a/packages/SystemUI/src/com/android/systemui/classifier/brightline/ProximityClassifier.java +++ b/packages/SystemUI/src/com/android/systemui/classifier/brightline/ProximityClassifier.java @@ -101,8 +101,8 @@ class ProximityClassifier extends FalsingClassifier { @Override public void onProximityEvent( - ProximitySensor.ProximityEvent proximityEvent) { - boolean near = proximityEvent.getNear(); + ProximitySensor.ThresholdSensorEvent proximityEvent) { + boolean near = proximityEvent.getBelow(); long timestampNs = proximityEvent.getTimestampNs(); logDebug("Sensor is: " + near + " at time " + timestampNs); update(near, timestampNs); diff --git a/packages/SystemUI/src/com/android/systemui/dagger/SystemServicesModule.java b/packages/SystemUI/src/com/android/systemui/dagger/SystemServicesModule.java index 5697fc0d577f..f683a639af10 100644 --- a/packages/SystemUI/src/com/android/systemui/dagger/SystemServicesModule.java +++ b/packages/SystemUI/src/com/android/systemui/dagger/SystemServicesModule.java @@ -37,6 +37,7 @@ import android.content.pm.LauncherApps; import android.content.pm.PackageManager; import android.content.pm.ShortcutManager; import android.content.res.Resources; +import android.hardware.SensorManager; import android.hardware.SensorPrivacyManager; import android.hardware.display.DisplayManager; import android.media.AudioManager; @@ -254,6 +255,12 @@ public class SystemServicesModule { return context.getResources(); } + @Provides + @Singleton + static SensorManager providesSensorManager(Context context) { + return context.getSystemService(SensorManager.class); + } + @Singleton @Provides static SensorPrivacyManager provideSensorPrivacyManager(Context context) { diff --git a/packages/SystemUI/src/com/android/systemui/dagger/SystemUIDefaultModule.java b/packages/SystemUI/src/com/android/systemui/dagger/SystemUIDefaultModule.java index 3bb953ab9da3..aeba64a59a7a 100644 --- a/packages/SystemUI/src/com/android/systemui/dagger/SystemUIDefaultModule.java +++ b/packages/SystemUI/src/com/android/systemui/dagger/SystemUIDefaultModule.java @@ -36,6 +36,7 @@ import com.android.systemui.plugins.qs.QSFactory; import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.power.EnhancedEstimates; import com.android.systemui.power.EnhancedEstimatesImpl; +import com.android.systemui.qs.dagger.QSModule; import com.android.systemui.qs.tileimpl.QSFactoryImpl; import com.android.systemui.recents.Recents; import com.android.systemui.recents.RecentsImplementation; @@ -70,7 +71,7 @@ import dagger.Provides; * A dagger module for injecting default implementations of components of System UI that may be * overridden by the System UI implementation. */ -@Module(includes = {DividerModule.class}) +@Module(includes = {DividerModule.class, QSModule.class}) public abstract class SystemUIDefaultModule { @Singleton diff --git a/packages/SystemUI/src/com/android/systemui/dagger/SystemUIModule.java b/packages/SystemUI/src/com/android/systemui/dagger/SystemUIModule.java index 90cd13fd1330..cb45926d3f24 100644 --- a/packages/SystemUI/src/com/android/systemui/dagger/SystemUIModule.java +++ b/packages/SystemUI/src/com/android/systemui/dagger/SystemUIModule.java @@ -43,6 +43,7 @@ import com.android.systemui.statusbar.phone.dagger.StatusBarComponent; import com.android.systemui.statusbar.policy.HeadsUpManager; import com.android.systemui.util.concurrency.ConcurrencyModule; import com.android.systemui.util.sensors.AsyncSensorManager; +import com.android.systemui.util.sensors.SensorModule; import com.android.systemui.util.time.SystemClock; import com.android.systemui.util.time.SystemClockImpl; @@ -62,7 +63,8 @@ import dagger.Provides; ConcurrencyModule.class, LogModule.class, PeopleHubModule.class, - SettingsModule.class + SensorModule.class, + SettingsModule.class, }, subcomponents = {StatusBarComponent.class, NotificationRowComponent.class, diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeMachine.java b/packages/SystemUI/src/com/android/systemui/doze/DozeMachine.java index 490890f263aa..ae7d82ac4a5e 100644 --- a/packages/SystemUI/src/com/android/systemui/doze/DozeMachine.java +++ b/packages/SystemUI/src/com/android/systemui/doze/DozeMachine.java @@ -199,6 +199,12 @@ public class DozeMachine { requestState(State.DOZE_REQUEST_PULSE, pulseReason); } + void onScreenState(int state) { + for (Part part : mParts) { + part.onScreenState(state); + } + } + private void requestState(State requestedState, int pulseReason) { Assert.isMainThread(); if (DEBUG) { @@ -423,6 +429,9 @@ public class DozeMachine { /** Give the Part a chance to clean itself up. */ default void destroy() {} + + /** Alerts that the screenstate is being changed. */ + default void onScreenState(int state) {} } /** A wrapper interface for {@link android.service.dreams.DreamService} */ diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeScreenBrightness.java b/packages/SystemUI/src/com/android/systemui/doze/DozeScreenBrightness.java index f6fccc00bf99..64cfb4bcd058 100644 --- a/packages/SystemUI/src/com/android/systemui/doze/DozeScreenBrightness.java +++ b/packages/SystemUI/src/com/android/systemui/doze/DozeScreenBrightness.java @@ -29,6 +29,7 @@ import android.os.SystemProperties; import android.os.Trace; import android.os.UserHandle; import android.provider.Settings; +import android.view.Display; import com.android.internal.annotations.VisibleForTesting; import com.android.systemui.broadcast.BroadcastDispatcher; @@ -68,6 +69,7 @@ public class DozeScreenBrightness extends BroadcastReceiver implements DozeMachi * --ei brightness_bucket 1} */ private int mDebugBrightnessBucket = -1; + private DozeMachine.State mState; @VisibleForTesting public DozeScreenBrightness(Context context, DozeMachine.Service service, @@ -107,17 +109,10 @@ public class DozeScreenBrightness extends BroadcastReceiver implements DozeMachi @Override public void transitionTo(DozeMachine.State oldState, DozeMachine.State newState) { + mState = newState; switch (newState) { case INITIALIZED: - resetBrightnessToDefault(); - break; - case DOZE_AOD: - case DOZE_REQUEST_PULSE: - case DOZE_AOD_DOCKED: - setLightSensorEnabled(true); - break; case DOZE: - setLightSensorEnabled(false); resetBrightnessToDefault(); break; case FINISH: @@ -130,6 +125,18 @@ public class DozeScreenBrightness extends BroadcastReceiver implements DozeMachi } } + @Override + public void onScreenState(int state) { + if (!mScreenOff + && (mState == DozeMachine.State.DOZE_AOD + || mState == DozeMachine.State.DOZE_AOD_DOCKED) + && (state == Display.STATE_DOZE || state == Display.STATE_DOZE_SUSPEND)) { + setLightSensorEnabled(true); + } else { + setLightSensorEnabled(false); + } + } + private void onDestroy() { setLightSensorEnabled(false); if (mDebuggable) { diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeSensors.java b/packages/SystemUI/src/com/android/systemui/doze/DozeSensors.java index 78f8f673cab9..aebf41b884c4 100644 --- a/packages/SystemUI/src/com/android/systemui/doze/DozeSensors.java +++ b/packages/SystemUI/src/com/android/systemui/doze/DozeSensors.java @@ -37,6 +37,7 @@ import android.os.UserHandle; import android.provider.Settings; import android.text.TextUtils; import android.util.Log; +import android.view.Display; import androidx.annotation.VisibleForTesting; @@ -66,7 +67,6 @@ public class DozeSensors { private final AlarmManager mAlarmManager; private final AsyncSensorManager mSensorManager; private final ContentResolver mResolver; - private final TriggerSensor mPickupSensor; private final DozeParameters mDozeParameters; private final AmbientDisplayConfiguration mConfig; private final WakeLock mWakeLock; @@ -80,7 +80,6 @@ public class DozeSensors { private long mDebounceFrom; private boolean mSettingRegistered; private boolean mListening; - private boolean mPaused; @VisibleForTesting public enum DozeSensorsUiEvent implements UiEventLogger.UiEventEnum { @@ -122,7 +121,7 @@ public class DozeSensors { dozeParameters.getPulseOnSigMotion(), DozeLog.PULSE_REASON_SENSOR_SIGMOTION, false /* touchCoords */, false /* touchscreen */, dozeLog), - mPickupSensor = new TriggerSensor( + new TriggerSensor( mSensorManager.getDefaultSensor(Sensor.TYPE_PICK_UP_GESTURE), Settings.Secure.DOZE_PICK_UP_GESTURE, true /* settingDef */, @@ -179,7 +178,7 @@ public class DozeSensors { mProximitySensor.register( proximityEvent -> { if (proximityEvent != null) { - mProxCallback.accept(!proximityEvent.getNear()); + mProxCallback.accept(!proximityEvent.getBelow()); } }); } @@ -232,18 +231,6 @@ public class DozeSensors { } /** - * Unregister sensors, when listening, unless they are prox gated. - * @see #setListening(boolean) - */ - public void setPaused(boolean paused) { - if (mPaused == paused) { - return; - } - mPaused = paused; - updateListening(); - } - - /** * Registers/unregisters sensors based on internal state. */ public void updateListening() { @@ -280,6 +267,13 @@ public class DozeSensors { } } + void onScreenState(int state) { + mProximitySensor.setSecondarySafe( + state == Display.STATE_DOZE + || state == Display.STATE_DOZE_SUSPEND + || state == Display.STATE_OFF); + } + public void setProxListening(boolean listen) { if (mProximitySensor.isRegistered() && listen) { mProximitySensor.alertListeners(); @@ -304,10 +298,6 @@ public class DozeSensors { } }; - public void setDisableSensorsInterferingWithProximity(boolean disable) { - mPickupSensor.setDisabled(disable); - } - /** Ignore the setting value of only the sensors that require the touchscreen. */ public void ignoreTouchScreenSensorsSettingInterferingWithDocking(boolean ignore) { for (TriggerSensor sensor : mSensors) { diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeService.java b/packages/SystemUI/src/com/android/systemui/doze/DozeService.java index 529b016aaca6..d2bebb7b27d1 100644 --- a/packages/SystemUI/src/com/android/systemui/doze/DozeService.java +++ b/packages/SystemUI/src/com/android/systemui/doze/DozeService.java @@ -130,4 +130,10 @@ public class DozeService extends DreamService mDozeMachine.requestState(DozeMachine.State.DOZE); } } + + @Override + public void setDozeScreenState(int state) { + super.setDozeScreenState(state); + mDozeMachine.onScreenState(state); + } } diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeTriggers.java b/packages/SystemUI/src/com/android/systemui/doze/DozeTriggers.java index 82639ba4375e..cbf8f578744c 100644 --- a/packages/SystemUI/src/com/android/systemui/doze/DozeTriggers.java +++ b/packages/SystemUI/src/com/android/systemui/doze/DozeTriggers.java @@ -30,6 +30,7 @@ import android.os.SystemClock; import android.os.UserHandle; import android.text.format.Formatter; import android.util.Log; +import android.view.Display; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.logging.MetricsLogger; @@ -92,6 +93,9 @@ public class DozeTriggers implements DozeMachine.Part { private boolean mPulsePending; private final MetricsLogger mMetricsLogger = Dependency.get(MetricsLogger.class); + private boolean mWantProx; + private boolean mWantSensors; + private boolean mWantTouchScreenSensors; @VisibleForTesting public enum DozingUpdateUiEvent implements UiEventLogger.UiEventEnum { @@ -382,24 +386,25 @@ public class DozeTriggers implements DozeMachine.Part { break; case DOZE: case DOZE_AOD: - mDozeSensors.setProxListening(newState != DozeMachine.State.DOZE); - mDozeSensors.setListening(true); - mDozeSensors.setPaused(false); + mWantProx = newState != DozeMachine.State.DOZE; + mWantSensors = true; + mWantTouchScreenSensors = true; if (newState == DozeMachine.State.DOZE_AOD && !sWakeDisplaySensorState) { onWakeScreen(false, newState); } break; case DOZE_AOD_PAUSED: case DOZE_AOD_PAUSING: - mDozeSensors.setProxListening(true); - mDozeSensors.setPaused(true); + mWantProx = true; break; case DOZE_PULSING: case DOZE_PULSING_BRIGHT: + mWantProx = true; + mWantTouchScreenSensors = false; + break; case DOZE_AOD_DOCKED: - mDozeSensors.setTouchscreenSensorsListening(false); - mDozeSensors.setProxListening(true); - mDozeSensors.setPaused(false); + mWantProx = false; + mWantTouchScreenSensors = false; break; case DOZE_PULSE_DONE: mDozeSensors.requestTemporaryDisable(); @@ -413,11 +418,28 @@ public class DozeTriggers implements DozeMachine.Part { mDockManager.removeListener(mDockEventListener); mDozeSensors.setListening(false); mDozeSensors.setProxListening(false); + mWantSensors = false; + mWantProx = false; + mWantTouchScreenSensors = false; break; default: } } + @Override + public void onScreenState(int state) { + mDozeSensors.onScreenState(state); + if (state == Display.STATE_DOZE || state == Display.STATE_DOZE_SUSPEND + || state == Display.STATE_OFF) { + mDozeSensors.setProxListening(mWantProx); + mDozeSensors.setListening(mWantSensors); + mDozeSensors.setTouchscreenSensorsListening(mWantTouchScreenSensors); + } else { + mDozeSensors.setProxListening(false); + mDozeSensors.setListening(mWantSensors); + } + } + private void checkTriggersAtInit() { if (mUiModeManager.getCurrentModeType() == Configuration.UI_MODE_TYPE_CAR || mDozeHost.isBlockingDoze() diff --git a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java index b2e91643bed2..ef51abb1404d 100644 --- a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java +++ b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java @@ -2129,7 +2129,6 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener, private boolean mShowing; private float mScrimAlpha; private ResetOrientationData mResetOrientationData; - private boolean mHadTopUi; private final NotificationShadeWindowController mNotificationShadeWindowController; private final NotificationShadeDepthController mDepthController; private final SysUiState mSysUiState; @@ -2397,8 +2396,7 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener, public void show() { super.show(); mShowing = true; - mHadTopUi = mNotificationShadeWindowController.getForceHasTopUi(); - mNotificationShadeWindowController.setForceHasTopUi(true); + mNotificationShadeWindowController.setRequestTopUi(true, TAG); mSysUiState.setFlag(SYSUI_STATE_GLOBAL_ACTIONS_SHOWING, true) .commitUpdate(mContext.getDisplayId()); @@ -2499,7 +2497,7 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener, dismissOverflow(true); dismissPowerOptions(true); if (mControlsUiController != null) mControlsUiController.hide(); - mNotificationShadeWindowController.setForceHasTopUi(mHadTopUi); + mNotificationShadeWindowController.setRequestTopUi(false, TAG); mDepthController.updateGlobalDialogVisibility(0, null /* view */); mSysUiState.setFlag(SYSUI_STATE_GLOBAL_ACTIONS_SHOWING, false) .commitUpdate(mContext.getDisplayId()); diff --git a/packages/SystemUI/src/com/android/systemui/qs/AutoAddTracker.java b/packages/SystemUI/src/com/android/systemui/qs/AutoAddTracker.java index 0a84f5ee1bb9..38b20ee45946 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/AutoAddTracker.java +++ b/packages/SystemUI/src/com/android/systemui/qs/AutoAddTracker.java @@ -57,12 +57,18 @@ public class AutoAddTracker implements UserAwareController { mContext = context; mUserId = userId; mAutoAdded = new ArraySet<>(getAdded()); + } + + /** + * Init method must be called after construction to start listening + */ + public void initialize() { // TODO: remove migration code and shared preferences keys after P release if (mUserId == UserHandle.USER_SYSTEM) { for (String[] convertPref : CONVERT_PREFS) { - if (Prefs.getBoolean(context, convertPref[0], false)) { + if (Prefs.getBoolean(mContext, convertPref[0], false)) { setTileAdded(convertPref[1]); - Prefs.remove(context, convertPref[0]); + Prefs.remove(mContext, convertPref[0]); } } } diff --git a/packages/SystemUI/src/com/android/systemui/qs/dagger/QSModule.java b/packages/SystemUI/src/com/android/systemui/qs/dagger/QSModule.java new file mode 100644 index 000000000000..8740581240b5 --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/qs/dagger/QSModule.java @@ -0,0 +1,59 @@ +/* + * Copyright (C) 2020 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.qs.dagger; + +import android.content.Context; +import android.hardware.display.NightDisplayListener; +import android.os.Handler; + +import com.android.systemui.dagger.qualifiers.Background; +import com.android.systemui.qs.AutoAddTracker; +import com.android.systemui.qs.QSTileHost; +import com.android.systemui.statusbar.phone.AutoTileManager; +import com.android.systemui.statusbar.phone.ManagedProfileController; +import com.android.systemui.statusbar.policy.CastController; +import com.android.systemui.statusbar.policy.DataSaverController; +import com.android.systemui.statusbar.policy.HotspotController; + +import dagger.Module; +import dagger.Provides; + +/** + * Module for QS dependencies + */ +// TODO: Add other QS classes +@Module +public interface QSModule { + + @Provides + static AutoTileManager provideAutoTileManager( + Context context, + AutoAddTracker.Builder autoAddTrackerBuilder, + QSTileHost host, + @Background Handler handler, + HotspotController hotspotController, + DataSaverController dataSaverController, + ManagedProfileController managedProfileController, + NightDisplayListener nightDisplayListener, + CastController castController) { + AutoTileManager manager = new AutoTileManager(context, autoAddTrackerBuilder, + host, handler, hotspotController, dataSaverController, managedProfileController, + nightDisplayListener, castController); + manager.init(); + return manager; + } +} diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationEntryManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationEntryManager.java index 9abc66056452..d04389d6cbe8 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationEntryManager.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationEntryManager.java @@ -36,6 +36,7 @@ import android.util.Log; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.statusbar.NotificationVisibility; import com.android.systemui.Dumpable; +import com.android.systemui.bubbles.BubbleController; import com.android.systemui.statusbar.FeatureFlags; import com.android.systemui.statusbar.NotificationLifetimeExtender; import com.android.systemui.statusbar.NotificationListener; @@ -189,6 +190,8 @@ public class NotificationEntryManager implements } } + private final Lazy<BubbleController> mBubbleControllerLazy; + /** * Injected constructor. See {@link NotificationsModule}. */ @@ -201,6 +204,7 @@ public class NotificationEntryManager implements Lazy<NotificationRowBinder> notificationRowBinderLazy, Lazy<NotificationRemoteInputManager> notificationRemoteInputManagerLazy, LeakDetector leakDetector, + Lazy<BubbleController> bubbleController, ForegroundServiceDismissalFeatureController fgsFeatureController) { mLogger = logger; mGroupManager = groupManager; @@ -211,6 +215,7 @@ public class NotificationEntryManager implements mRemoteInputManagerLazy = notificationRemoteInputManagerLazy; mLeakDetector = leakDetector; mFgsFeatureController = fgsFeatureController; + mBubbleControllerLazy = bubbleController; } /** Once called, the NEM will start processing notification events from system server. */ @@ -920,8 +925,20 @@ public class NotificationEntryManager implements /** * @return {@code true} if there is at least one notification that should be visible right now */ - public boolean hasActiveNotifications() { - return mReadOnlyNotifications.size() != 0; + public boolean hasVisibleNotifications() { + if (mReadOnlyNotifications.size() == 0) { + return false; + } + + // Filter out suppressed notifications, which are active notifications backing a bubble + // but are not present in the shade + for (NotificationEntry e : mSortedAndFiltered) { + if (!mBubbleControllerLazy.get().isBubbleNotificationSuppressedFromShade(e)) { + return true; + } + } + + return false; } @Override diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/dagger/NotificationsModule.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/dagger/NotificationsModule.java index df1de63b65a0..c37e93d4fcc5 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/dagger/NotificationsModule.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/dagger/NotificationsModule.java @@ -87,6 +87,7 @@ public interface NotificationsModule { Lazy<NotificationRowBinder> notificationRowBinderLazy, Lazy<NotificationRemoteInputManager> notificationRemoteInputManagerLazy, LeakDetector leakDetector, + Lazy<BubbleController> bubbleController, ForegroundServiceDismissalFeatureController fgsFeatureController) { return new NotificationEntryManager( logger, @@ -97,6 +98,7 @@ public interface NotificationsModule { notificationRowBinderLazy, notificationRemoteInputManagerLazy, leakDetector, + bubbleController, fgsFeatureController); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java index b9d31a93f408..a4a58194a46b 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java @@ -6580,7 +6580,7 @@ public class NotificationStackScrollLayout extends ViewGroup implements ScrollAd if (mFeatureFlags.isNewNotifPipelineRenderingEnabled()) { return !mNotifPipeline.getShadeList().isEmpty(); } else { - return mEntryManager.hasActiveNotifications(); + return mEntryManager.hasVisibleNotifications(); } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/AutoTileManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/AutoTileManager.java index 825919f17661..db9956a4074f 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/AutoTileManager.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/AutoTileManager.java @@ -40,8 +40,6 @@ import com.android.systemui.util.UserAwareController; import java.util.ArrayList; import java.util.Objects; -import javax.inject.Inject; - /** * Manages which tiles should be automatically added to QS. */ @@ -57,6 +55,7 @@ public class AutoTileManager implements UserAwareController { static final String SETTING_SEPARATOR = ":"; private UserHandle mCurrentUser; + private boolean mInitialized; private final Context mContext; private final QSTileHost mHost; @@ -69,7 +68,6 @@ public class AutoTileManager implements UserAwareController { private final CastController mCastController; private final ArrayList<AutoAddSetting> mAutoAddSettingList = new ArrayList<>(); - @Inject public AutoTileManager(Context context, AutoAddTracker.Builder autoAddTrackerBuilder, QSTileHost host, @Background Handler handler, @@ -88,9 +86,20 @@ public class AutoTileManager implements UserAwareController { mManagedProfileController = managedProfileController; mNightDisplayListener = nightDisplayListener; mCastController = castController; + } + /** + * Init method must be called after construction to start listening + */ + public void init() { + if (mInitialized) { + Log.w(TAG, "Trying to re-initialize"); + return; + } + mAutoTracker.initialize(); populateSettingsList(); startControllersAndSettingsListeners(); + mInitialized = true; } protected void startControllersAndSettingsListeners() { @@ -168,8 +177,14 @@ public class AutoTileManager implements UserAwareController { } } + /* + * This will be sent off the main thread if needed + */ @Override public void changeUser(UserHandle newUser) { + if (!mInitialized) { + throw new IllegalStateException("AutoTileManager not initialized"); + } if (!Thread.currentThread().equals(mHandler.getLooper().getThread())) { mHandler.post(() -> changeUser(newUser)); return; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/BiometricUnlockController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/BiometricUnlockController.java index 303a0831b52f..0e76c904f8cd 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/BiometricUnlockController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/BiometricUnlockController.java @@ -152,6 +152,7 @@ public class BiometricUnlockController extends KeyguardUpdateMonitorCallback imp private final Context mContext; private final int mWakeUpDelay; private int mMode; + private BiometricSourceType mBiometricType; private KeyguardViewController mKeyguardViewController; private DozeScrimController mDozeScrimController; private KeyguardViewMediator mKeyguardViewMediator; @@ -340,6 +341,7 @@ public class BiometricUnlockController extends KeyguardUpdateMonitorCallback imp Trace.endSection(); return; } + mBiometricType = biometricSourceType; mMetricsLogger.write(new LogMaker(MetricsEvent.BIOMETRIC_AUTH) .setType(MetricsEvent.TYPE_SUCCESS).setSubtype(toSubtype(biometricSourceType))); Optional.ofNullable(BiometricUiEvent.SUCCESS_EVENT_BY_SOURCE_TYPE.get(biometricSourceType)) @@ -615,6 +617,7 @@ public class BiometricUnlockController extends KeyguardUpdateMonitorCallback imp private void resetMode() { mMode = MODE_NONE; + mBiometricType = null; mNotificationShadeWindowController.setForceDozeBrightness(false); if (mStatusBar.getNavigationBarView() != null) { mStatusBar.getNavigationBarView().setWakeAndUnlocking(false); @@ -680,8 +683,8 @@ public class BiometricUnlockController extends KeyguardUpdateMonitorCallback imp /** * Successful authentication with fingerprint, face, or iris when the lockscreen fades away */ - public boolean isUnlockFading() { - return mMode == MODE_UNLOCK_FADING; + public BiometricSourceType getBiometricType() { + return mBiometricType; } /** diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/LightsOutNotifController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LightsOutNotifController.java index 8e192c5bf17d..c758670fc457 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/LightsOutNotifController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LightsOutNotifController.java @@ -97,7 +97,7 @@ public class LightsOutNotifController { } private boolean hasActiveNotifications() { - return mEntryManager.hasActiveNotifications(); + return mEntryManager.hasVisibleNotifications(); } @VisibleForTesting diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/LockscreenLockIconController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LockscreenLockIconController.java index 5d3910b4c415..7a8dc32741bf 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/LockscreenLockIconController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LockscreenLockIconController.java @@ -83,6 +83,7 @@ public class LockscreenLockIconController { private boolean mWakeAndUnlockRunning; private boolean mShowingLaunchAffordance; private boolean mBouncerShowingScrimmed; + private boolean mFingerprintUnlock; private int mStatusBarState = StatusBarState.SHADE; private LockIcon mLockIcon; @@ -389,14 +390,19 @@ public class LockscreenLockIconController { /** * We need to hide the lock whenever there's a fingerprint unlock, otherwise you'll see the * icon on top of the black front scrim. + * We also want to halt padlock the animation when we're in face bypass mode or dismissing the + * keyguard with fingerprint. * @param wakeAndUnlock are we wake and unlocking * @param isUnlock are we currently unlocking */ - public void onBiometricAuthModeChanged(boolean wakeAndUnlock, boolean isUnlock) { + public void onBiometricAuthModeChanged(boolean wakeAndUnlock, boolean isUnlock, + BiometricSourceType type) { if (wakeAndUnlock) { mWakeAndUnlockRunning = true; } - if (isUnlock && mKeyguardBypassController.getBypassEnabled() && canBlockUpdates()) { + mFingerprintUnlock = type == BiometricSourceType.FINGERPRINT; + if (isUnlock && (mFingerprintUnlock || mKeyguardBypassController.getBypassEnabled()) + && canBlockUpdates()) { // We don't want the icon to change while we are unlocking mBlockUpdates = true; } @@ -513,10 +519,13 @@ public class LockscreenLockIconController { && (!mStatusBarStateController.isPulsing() || mDocked); boolean invisible = onAodNotPulsingOrDocked || mWakeAndUnlockRunning || mShowingLaunchAffordance; - if (mKeyguardBypassController.getBypassEnabled() && !mBouncerShowingScrimmed) { + boolean fingerprintOrBypass = mFingerprintUnlock + || mKeyguardBypassController.getBypassEnabled(); + if (fingerprintOrBypass && !mBouncerShowingScrimmed) { if ((mHeadsUpManagerPhone.isHeadsUpGoingAway() || mHeadsUpManagerPhone.hasPinnedHeadsUp() - || mStatusBarState == StatusBarState.KEYGUARD) + || mStatusBarState == StatusBarState.KEYGUARD + || mStatusBarState == StatusBarState.SHADE) && !mNotificationWakeUpCoordinator.getNotificationsFullyHidden()) { invisible = true; } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java index 375af6b099c2..64202d221b2d 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java @@ -3003,7 +3003,7 @@ public class NotificationPanelViewController extends PanelViewController { private void updateShowEmptyShadeView() { boolean showEmptyShadeView = - mBarState != StatusBarState.KEYGUARD && !mEntryManager.hasActiveNotifications(); + mBarState != StatusBarState.KEYGUARD && !mEntryManager.hasVisibleNotifications(); showEmptyShadeView(showEmptyShadeView); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationShadeWindowController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationShadeWindowController.java index 5164440c1463..bc73be19ab59 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationShadeWindowController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationShadeWindowController.java @@ -61,6 +61,8 @@ import java.lang.ref.WeakReference; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; import java.util.function.Consumer; import javax.inject.Inject; @@ -432,7 +434,7 @@ public class NotificationShadeWindowController implements Callback, Dumpable, } private void applyHasTopUi(State state) { - mHasTopUiChanged = state.mForceHasTopUi || isExpanded(state); + mHasTopUiChanged = !state.mComponentsForcingTopUi.isEmpty() || isExpanded(state); } private void applyNotTouchable(State state) { @@ -635,12 +637,17 @@ public class NotificationShadeWindowController implements Callback, Dumpable, apply(mCurrentState); } - public boolean getForceHasTopUi() { - return mCurrentState.mForceHasTopUi; - } - - public void setForceHasTopUi(boolean forceHasTopUi) { - mCurrentState.mForceHasTopUi = forceHasTopUi; + /** + * SystemUI may need top-ui to avoid jank when performing animations. After the + * animation is performed, the component should remove itself from the list of features that + * are forcing SystemUI to be top-ui. + */ + public void setRequestTopUi(boolean requestTopUi, String componentTag) { + if (requestTopUi) { + mCurrentState.mComponentsForcingTopUi.add(componentTag); + } else { + mCurrentState.mComponentsForcingTopUi.remove(componentTag); + } apply(mCurrentState); } @@ -663,7 +670,7 @@ public class NotificationShadeWindowController implements Callback, Dumpable, boolean mBackdropShowing; boolean mWallpaperSupportsAmbientMode; boolean mNotTouchable; - boolean mForceHasTopUi; + Set<String> mComponentsForcingTopUi = new HashSet<>(); /** * The {@link StatusBar} state from the status bar. diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java index 60fc17d9474a..686b87127239 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java @@ -348,10 +348,8 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, OnCo } if (mKeyguardUpdateMonitor.needsSlowUnlockTransition() && mState == ScrimState.UNLOCKED) { - // In case the user isn't unlocked, make sure to delay a bit because the system is hosed - // with too many things at this case, in order to not skip the initial frames. - mScrimInFront.postOnAnimationDelayed(this::scheduleUpdate, 16); mAnimationDelay = StatusBar.FADE_KEYGUARD_START_DELAY; + scheduleUpdate(); } else if ((!mDozeParameters.getAlwaysOn() && oldState == ScrimState.AOD) || (mState == ScrimState.AOD && !mDozeParameters.getDisplayNeedsBlanking())) { // Scheduling a frame isn't enough when: diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java index a5cc1a83fc85..f125b7d10035 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java @@ -29,7 +29,10 @@ import static android.view.InsetsState.containsType; import static android.view.WindowInsetsController.APPEARANCE_LOW_PROFILE_BARS; import static android.view.WindowInsetsController.APPEARANCE_OPAQUE_STATUS_BARS; +import static androidx.lifecycle.Lifecycle.State.RESUMED; + import static com.android.systemui.Dependency.TIME_TICK_HANDLER_NAME; +import static com.android.systemui.charging.WirelessChargingLayout.UNKNOWN_BATTERY_LEVEL; import static com.android.systemui.keyguard.WakefulnessLifecycle.WAKEFULNESS_ASLEEP; import static com.android.systemui.keyguard.WakefulnessLifecycle.WAKEFULNESS_AWAKE; import static com.android.systemui.keyguard.WakefulnessLifecycle.WAKEFULNESS_WAKING; @@ -45,6 +48,7 @@ import static com.android.systemui.statusbar.phone.BarTransitions.MODE_TRANSPARE import static com.android.systemui.statusbar.phone.BarTransitions.MODE_WARNING; import static com.android.systemui.statusbar.phone.BarTransitions.TransitionMode; +import android.annotation.NonNull; import android.annotation.Nullable; import android.app.ActivityManager; import android.app.ActivityOptions; @@ -114,6 +118,10 @@ import android.view.WindowManagerGlobal; import android.view.accessibility.AccessibilityManager; import android.widget.DateTimeView; +import androidx.lifecycle.Lifecycle; +import androidx.lifecycle.LifecycleOwner; +import androidx.lifecycle.LifecycleRegistry; + import com.android.internal.annotations.VisibleForTesting; import com.android.internal.colorextraction.ColorExtractor; import com.android.internal.logging.MetricsLogger; @@ -205,7 +213,6 @@ import com.android.systemui.statusbar.notification.stack.NotificationListContain import com.android.systemui.statusbar.phone.dagger.StatusBarComponent; import com.android.systemui.statusbar.phone.dagger.StatusBarPhoneModule; import com.android.systemui.statusbar.policy.BatteryController; -import com.android.systemui.statusbar.policy.BatteryController.BatteryStateChangeCallback; import com.android.systemui.statusbar.policy.BrightnessMirrorController; import com.android.systemui.statusbar.policy.ConfigurationController; import com.android.systemui.statusbar.policy.ConfigurationController.ConfigurationListener; @@ -237,7 +244,8 @@ public class StatusBar extends SystemUI implements DemoMode, ActivityStarter, KeyguardStateController.Callback, OnHeadsUpChangedListener, CommandQueue.Callbacks, ColorExtractor.OnColorsChangedListener, ConfigurationListener, - StatusBarStateController.StateListener, ActivityLaunchAnimator.Callback { + StatusBarStateController.StateListener, ActivityLaunchAnimator.Callback, + LifecycleOwner, BatteryController.BatteryStateChangeCallback { public static final boolean MULTIUSER_DEBUG = false; protected static final int MSG_HIDE_RECENT_APPS = 1020; @@ -586,7 +594,8 @@ public class StatusBar extends SystemUI implements DemoMode, private KeyguardUserSwitcher mKeyguardUserSwitcher; private final UserSwitcherController mUserSwitcherController; private final NetworkController mNetworkController; - private final BatteryController mBatteryController; + private final LifecycleRegistry mLifecycle = new LifecycleRegistry(this); + protected final BatteryController mBatteryController; protected boolean mPanelExpanded; private UiModeManager mUiModeManager; protected boolean mIsKeyguard; @@ -935,6 +944,9 @@ public class StatusBar extends SystemUI implements DemoMode, mConfigurationController.addCallback(this); + mBatteryController.observe(mLifecycle, this); + mLifecycle.setCurrentState(RESUMED); + // set the initial view visibility int disabledFlags1 = result.mDisabledFlags1; int disabledFlags2 = result.mDisabledFlags2; @@ -1101,22 +1113,6 @@ public class StatusBar extends SystemUI implements DemoMode, mAmbientIndicationContainer = mNotificationShadeWindowView.findViewById( R.id.ambient_indication_container); - // TODO: Find better place for this callback. - mBatteryController.addCallback(new BatteryStateChangeCallback() { - @Override - public void onPowerSaveChanged(boolean isPowerSave) { - mHandler.post(mCheckBarModes); - if (mDozeServiceHost != null) { - mDozeServiceHost.firePowerSaveChanged(isPowerSave); - } - } - - @Override - public void onBatteryLevelChanged(int level, boolean pluggedIn, boolean charging) { - // noop - } - }); - mAutoHideController.setStatusBar(new AutoHideUiElement() { @Override public void synchronizeState() { @@ -1267,6 +1263,25 @@ public class StatusBar extends SystemUI implements DemoMode, ThreadedRenderer.overrideProperty("ambientRatio", String.valueOf(1.5f)); } + @NonNull + @Override + public Lifecycle getLifecycle() { + return mLifecycle; + } + + @Override + public void onPowerSaveChanged(boolean isPowerSave) { + mHandler.post(mCheckBarModes); + if (mDozeServiceHost != null) { + mDozeServiceHost.firePowerSaveChanged(isPowerSave); + } + } + + @Override + public void onBatteryLevelChanged(int level, boolean pluggedIn, boolean charging) { + // noop + } + @VisibleForTesting protected void registerBroadcastReceiver() { IntentFilter filter = new IntentFilter(); @@ -2369,24 +2384,43 @@ public class StatusBar extends SystemUI implements DemoMode, @Override public void showWirelessChargingAnimation(int batteryLevel) { + showChargingAnimation(batteryLevel, UNKNOWN_BATTERY_LEVEL, 0); + } + + protected void showChargingAnimation(int batteryLevel, int transmittingBatteryLevel, + long animationDelay) { if (mDozing || mKeyguardManager.isKeyguardLocked()) { // on ambient or lockscreen, hide notification panel WirelessChargingAnimation.makeWirelessChargingAnimation(mContext, null, - batteryLevel, new WirelessChargingAnimation.Callback() { + transmittingBatteryLevel, batteryLevel, + new WirelessChargingAnimation.Callback() { @Override public void onAnimationStarting() { + mNotificationShadeWindowController.setRequestTopUi(true, TAG); CrossFadeHelper.fadeOut(mNotificationPanelViewController.getView(), 1); } @Override public void onAnimationEnded() { CrossFadeHelper.fadeIn(mNotificationPanelViewController.getView()); + mNotificationShadeWindowController.setRequestTopUi(false, TAG); } - }, mDozing).show(); + }, mDozing).show(animationDelay); } else { // workspace WirelessChargingAnimation.makeWirelessChargingAnimation(mContext, null, - batteryLevel, null, false).show(); + transmittingBatteryLevel, batteryLevel, + new WirelessChargingAnimation.Callback() { + @Override + public void onAnimationStarting() { + mNotificationShadeWindowController.setRequestTopUi(true, TAG); + } + + @Override + public void onAnimationEnded() { + mNotificationShadeWindowController.setRequestTopUi(false, TAG); + } + }, false).show(animationDelay); } } @@ -3947,7 +3981,8 @@ public class StatusBar extends SystemUI implements DemoMode, updateScrimController(); mLockscreenLockIconController.onBiometricAuthModeChanged( mBiometricUnlockController.isWakeAndUnlock(), - mBiometricUnlockController.isBiometricUnlock()); + mBiometricUnlockController.isBiometricUnlock(), + mBiometricUnlockController.getBiometricType()); } @VisibleForTesting diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconController.java index 93df14f18fda..0364186a83a2 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconController.java @@ -83,15 +83,16 @@ public interface StatusBarIconController { public void removeIcon(String slot, int tag); public void removeAllIconsForSlot(String slot); - public static final String ICON_BLACKLIST = "icon_blacklist"; + // TODO: See if we can rename this tunable name. + String ICON_HIDE_LIST = "icon_blacklist"; - /** Reads the default blacklist from config value unless blacklistStr is provided. */ - static ArraySet<String> getIconBlacklist(Context context, String blackListStr) { + /** Reads the default hide list from config value unless hideListStr is provided. */ + static ArraySet<String> getIconHideList(Context context, String hideListStr) { ArraySet<String> ret = new ArraySet<>(); - String[] blacklist = blackListStr == null + String[] hideList = hideListStr == null ? context.getResources().getStringArray(R.array.config_statusBarIconBlackList) - : blackListStr.split(","); - for (String slot : blacklist) { + : hideListStr.split(","); + for (String slot : hideList) { if (!TextUtils.isEmpty(slot)) { ret.add(slot); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconControllerImpl.java index d0e806769f14..21e1d319cffa 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconControllerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconControllerImpl.java @@ -59,7 +59,7 @@ public class StatusBarIconControllerImpl extends StatusBarIconList implements Tu private static final String TAG = "StatusBarIconController"; private final ArrayList<IconManager> mIconGroups = new ArrayList<>(); - private final ArraySet<String> mIconBlacklist = new ArraySet<>(); + private final ArraySet<String> mIconHideList = new ArraySet<>(); // Points to light or dark context depending on the... context? private Context mContext; @@ -79,7 +79,7 @@ public class StatusBarIconControllerImpl extends StatusBarIconList implements Tu loadDimens(); commandQueue.addCallback(this); - Dependency.get(TunerService.class).addTunable(this, ICON_BLACKLIST); + Dependency.get(TunerService.class).addTunable(this, ICON_HIDE_LIST); } @Override @@ -89,12 +89,12 @@ public class StatusBarIconControllerImpl extends StatusBarIconList implements Tu for (int i = 0; i < allSlots.size(); i++) { Slot slot = allSlots.get(i); List<StatusBarIconHolder> holders = slot.getHolderListInViewOrder(); - boolean blocked = mIconBlacklist.contains(slot.getName()); + boolean hidden = mIconHideList.contains(slot.getName()); for (StatusBarIconHolder holder : holders) { int tag = holder.getTag(); int viewIndex = getViewIndex(getSlotIndex(slot.getName()), holder.getTag()); - group.onIconAdded(viewIndex, slot.getName(), blocked, holder); + group.onIconAdded(viewIndex, slot.getName(), hidden, holder); } } } @@ -107,11 +107,11 @@ public class StatusBarIconControllerImpl extends StatusBarIconList implements Tu @Override public void onTuningChanged(String key, String newValue) { - if (!ICON_BLACKLIST.equals(key)) { + if (!ICON_HIDE_LIST.equals(key)) { return; } - mIconBlacklist.clear(); - mIconBlacklist.addAll(StatusBarIconController.getIconBlacklist(mContext, newValue)); + mIconHideList.clear(); + mIconHideList.addAll(StatusBarIconController.getIconHideList(mContext, newValue)); ArrayList<Slot> currentSlots = getSlots(); ArrayMap<Slot, List<StatusBarIconHolder>> slotsToReAdd = new ArrayMap<>(); @@ -142,9 +142,9 @@ public class StatusBarIconControllerImpl extends StatusBarIconList implements Tu private void addSystemIcon(int index, StatusBarIconHolder holder) { String slot = getSlotName(index); int viewIndex = getViewIndex(index, holder.getTag()); - boolean blocked = mIconBlacklist.contains(slot); + boolean hidden = mIconHideList.contains(slot); - mIconGroups.forEach(l -> l.onIconAdded(viewIndex, slot, blocked, holder)); + mIconGroups.forEach(l -> l.onIconAdded(viewIndex, slot, hidden, holder)); } @Override diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarNotificationPresenter.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarNotificationPresenter.java index 45f0c49a4fd4..8e933a281b3b 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarNotificationPresenter.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarNotificationPresenter.java @@ -330,7 +330,7 @@ public class StatusBarNotificationPresenter implements NotificationPresenter, } public boolean hasActiveNotifications() { - return mEntryManager.hasActiveNotifications(); + return mEntryManager.hasVisibleNotifications(); } @Override diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarSignalPolicy.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarSignalPolicy.java index 690d57345db6..7eefaf28517e 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarSignalPolicy.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarSignalPolicy.java @@ -52,12 +52,12 @@ public class StatusBarSignalPolicy implements NetworkControllerImpl.SignalCallba private final SecurityController mSecurityController; private final Handler mHandler = Handler.getMain(); - private boolean mBlockAirplane; - private boolean mBlockMobile; - private boolean mBlockWifi; - private boolean mBlockEthernet; + private boolean mHideAirplane; + private boolean mHideMobile; + private boolean mHideWifi; + private boolean mHideEthernet; private boolean mActivityEnabled; - private boolean mForceBlockWifi; + private boolean mForceHideWifi; // Track as little state as possible, and only for padding purposes private boolean mIsAirplaneMode = false; @@ -80,7 +80,7 @@ public class StatusBarSignalPolicy implements NetworkControllerImpl.SignalCallba mNetworkController = Dependency.get(NetworkController.class); mSecurityController = Dependency.get(SecurityController.class); - Dependency.get(TunerService.class).addTunable(this, StatusBarIconController.ICON_BLACKLIST); + Dependency.get(TunerService.class).addTunable(this, StatusBarIconController.ICON_HIDE_LIST); mNetworkController.addCallback(this); mSecurityController.addCallback(this); } @@ -114,21 +114,21 @@ public class StatusBarSignalPolicy implements NetworkControllerImpl.SignalCallba @Override public void onTuningChanged(String key, String newValue) { - if (!StatusBarIconController.ICON_BLACKLIST.equals(key)) { + if (!StatusBarIconController.ICON_HIDE_LIST.equals(key)) { return; } - ArraySet<String> blockList = StatusBarIconController.getIconBlacklist(mContext, newValue); - boolean blockAirplane = blockList.contains(mSlotAirplane); - boolean blockMobile = blockList.contains(mSlotMobile); - boolean blockWifi = blockList.contains(mSlotWifi); - boolean blockEthernet = blockList.contains(mSlotEthernet); - - if (blockAirplane != mBlockAirplane || blockMobile != mBlockMobile - || blockEthernet != mBlockEthernet || blockWifi != mBlockWifi) { - mBlockAirplane = blockAirplane; - mBlockMobile = blockMobile; - mBlockEthernet = blockEthernet; - mBlockWifi = blockWifi || mForceBlockWifi; + ArraySet<String> hideList = StatusBarIconController.getIconHideList(mContext, newValue); + boolean hideAirplane = hideList.contains(mSlotAirplane); + boolean hideMobile = hideList.contains(mSlotMobile); + boolean hideWifi = hideList.contains(mSlotWifi); + boolean hideEthernet = hideList.contains(mSlotEthernet); + + if (hideAirplane != mHideAirplane || hideMobile != mHideMobile + || hideEthernet != mHideEthernet || hideWifi != mHideWifi) { + mHideAirplane = hideAirplane; + mHideMobile = hideMobile; + mHideEthernet = hideEthernet; + mHideWifi = hideWifi || mForceHideWifi; // Re-register to get new callbacks. mNetworkController.removeCallback(this); mNetworkController.addCallback(this); @@ -140,7 +140,7 @@ public class StatusBarSignalPolicy implements NetworkControllerImpl.SignalCallba boolean activityIn, boolean activityOut, String description, boolean isTransient, String statusLabel) { - boolean visible = statusIcon.visible && !mBlockWifi; + boolean visible = statusIcon.visible && !mHideWifi; boolean in = activityIn && mActivityEnabled && visible; boolean out = activityOut && mActivityEnabled && visible; @@ -189,7 +189,7 @@ public class StatusBarSignalPolicy implements NetworkControllerImpl.SignalCallba // Visibility of the data type indicator changed boolean typeChanged = statusType != state.typeId && (statusType == 0 || state.typeId == 0); - state.visible = statusIcon.visible && !mBlockMobile; + state.visible = statusIcon.visible && !mHideMobile; state.strengthId = statusIcon.icon; state.typeId = statusType; state.contentDescription = statusIcon.contentDescription; @@ -270,7 +270,7 @@ public class StatusBarSignalPolicy implements NetworkControllerImpl.SignalCallba @Override public void setEthernetIndicators(IconState state) { - boolean visible = state.visible && !mBlockEthernet; + boolean visible = state.visible && !mHideEthernet; int resId = state.icon; String description = state.contentDescription; @@ -284,7 +284,7 @@ public class StatusBarSignalPolicy implements NetworkControllerImpl.SignalCallba @Override public void setIsAirplaneMode(IconState icon) { - mIsAirplaneMode = icon.visible && !mBlockAirplane; + mIsAirplaneMode = icon.visible && !mHideAirplane; int resId = icon.icon; String description = icon.contentDescription; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryController.java index b9168e3c2223..673549ab589f 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryController.java @@ -58,6 +58,11 @@ public interface BatteryController extends DemoMode, Dumpable, default void init() { } /** + * Returns {@code true} if the device is currently in wireless charging mode. + */ + default boolean isWirelessCharging() { return false; } + + /** * Returns {@code true} if reverse is supported. */ default boolean isReverseSupported() { return false; } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/Clock.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/Clock.java index c4c0d3fdff42..d43dd232e7c5 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/Clock.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/Clock.java @@ -190,7 +190,7 @@ public class Clock extends TextView implements DemoMode, Tunable, CommandQueue.C mBroadcastDispatcher.registerReceiverWithHandler(mIntentReceiver, filter, Dependency.get(Dependency.TIME_TICK_HANDLER), UserHandle.ALL); Dependency.get(TunerService.class).addTunable(this, CLOCK_SECONDS, - StatusBarIconController.ICON_BLACKLIST); + StatusBarIconController.ICON_HIDE_LIST); mCommandQueue.addCallback(this); if (mShowDark) { Dependency.get(DarkIconDispatcher.class).addDarkReceiver(this); @@ -296,8 +296,8 @@ public class Clock extends TextView implements DemoMode, Tunable, CommandQueue.C if (CLOCK_SECONDS.equals(key)) { mShowSeconds = TunerService.parseIntegerSwitch(newValue, false); updateShowSeconds(); - } else { - setClockVisibleByUser(!StatusBarIconController.getIconBlacklist(getContext(), newValue) + } else if (StatusBarIconController.ICON_HIDE_LIST.equals(key)) { + setClockVisibleByUser(!StatusBarIconController.getIconHideList(getContext(), newValue) .contains("clock")); updateClockVisibility(); } diff --git a/packages/SystemUI/src/com/android/systemui/tuner/BatteryPreference.java b/packages/SystemUI/src/com/android/systemui/tuner/BatteryPreference.java index 66372c311325..b71aafdf6b96 100644 --- a/packages/SystemUI/src/com/android/systemui/tuner/BatteryPreference.java +++ b/packages/SystemUI/src/com/android/systemui/tuner/BatteryPreference.java @@ -38,7 +38,7 @@ public class BatteryPreference extends DropDownPreference implements TunerServic private final String mBattery; private boolean mBatteryEnabled; private boolean mHasPercentage; - private ArraySet<String> mBlacklist; + private ArraySet<String> mHideList; private boolean mHasSetValue; public BatteryPreference(Context context, AttributeSet attrs) { @@ -52,7 +52,7 @@ public class BatteryPreference extends DropDownPreference implements TunerServic super.onAttached(); mHasPercentage = Settings.System.getInt(getContext().getContentResolver(), SHOW_BATTERY_PERCENT, 0) != 0; - Dependency.get(TunerService.class).addTunable(this, StatusBarIconController.ICON_BLACKLIST); + Dependency.get(TunerService.class).addTunable(this, StatusBarIconController.ICON_HIDE_LIST); } @Override @@ -63,9 +63,9 @@ public class BatteryPreference extends DropDownPreference implements TunerServic @Override public void onTuningChanged(String key, String newValue) { - if (StatusBarIconController.ICON_BLACKLIST.equals(key)) { - mBlacklist = StatusBarIconController.getIconBlacklist(getContext(), newValue); - mBatteryEnabled = !mBlacklist.contains(mBattery); + if (StatusBarIconController.ICON_HIDE_LIST.equals(key)) { + mHideList = StatusBarIconController.getIconHideList(getContext(), newValue); + mBatteryEnabled = !mHideList.contains(mBattery); } if (!mHasSetValue) { // Because of the complicated tri-state it can end up looping and setting state back to @@ -88,12 +88,12 @@ public class BatteryPreference extends DropDownPreference implements TunerServic MetricsLogger.action(getContext(), MetricsEvent.TUNER_BATTERY_PERCENTAGE, v); Settings.System.putInt(getContext().getContentResolver(), SHOW_BATTERY_PERCENT, v ? 1 : 0); if (DISABLED.equals(value)) { - mBlacklist.add(mBattery); + mHideList.add(mBattery); } else { - mBlacklist.remove(mBattery); + mHideList.remove(mBattery); } - Dependency.get(TunerService.class).setValue(StatusBarIconController.ICON_BLACKLIST, - TextUtils.join(",", mBlacklist)); + Dependency.get(TunerService.class).setValue(StatusBarIconController.ICON_HIDE_LIST, + TextUtils.join(",", mHideList)); return true; } } diff --git a/packages/SystemUI/src/com/android/systemui/tuner/ClockPreference.java b/packages/SystemUI/src/com/android/systemui/tuner/ClockPreference.java index f7d0c9fb9d86..c92d7bbfe0b7 100644 --- a/packages/SystemUI/src/com/android/systemui/tuner/ClockPreference.java +++ b/packages/SystemUI/src/com/android/systemui/tuner/ClockPreference.java @@ -33,7 +33,7 @@ public class ClockPreference extends DropDownPreference implements TunerService. private final String mClock; private boolean mClockEnabled; private boolean mHasSeconds; - private ArraySet<String> mBlacklist; + private ArraySet<String> mHideList; private boolean mHasSetValue; private boolean mReceivedSeconds; private boolean mReceivedClock; @@ -47,7 +47,7 @@ public class ClockPreference extends DropDownPreference implements TunerService. @Override public void onAttached() { super.onAttached(); - Dependency.get(TunerService.class).addTunable(this, StatusBarIconController.ICON_BLACKLIST, + Dependency.get(TunerService.class).addTunable(this, StatusBarIconController.ICON_HIDE_LIST, Clock.CLOCK_SECONDS); } @@ -59,10 +59,10 @@ public class ClockPreference extends DropDownPreference implements TunerService. @Override public void onTuningChanged(String key, String newValue) { - if (StatusBarIconController.ICON_BLACKLIST.equals(key)) { + if (StatusBarIconController.ICON_HIDE_LIST.equals(key)) { mReceivedClock = true; - mBlacklist = StatusBarIconController.getIconBlacklist(getContext(), newValue); - mClockEnabled = !mBlacklist.contains(mClock); + mHideList = StatusBarIconController.getIconHideList(getContext(), newValue); + mClockEnabled = !mHideList.contains(mClock); } else if (Clock.CLOCK_SECONDS.equals(key)) { mReceivedSeconds = true; mHasSeconds = newValue != null && Integer.parseInt(newValue) != 0; @@ -87,12 +87,12 @@ public class ClockPreference extends DropDownPreference implements TunerService. Dependency.get(TunerService.class).setValue(Clock.CLOCK_SECONDS, SECONDS.equals(value) ? 1 : 0); if (DISABLED.equals(value)) { - mBlacklist.add(mClock); + mHideList.add(mClock); } else { - mBlacklist.remove(mClock); + mHideList.remove(mClock); } - Dependency.get(TunerService.class).setValue(StatusBarIconController.ICON_BLACKLIST, - TextUtils.join(",", mBlacklist)); + Dependency.get(TunerService.class).setValue(StatusBarIconController.ICON_HIDE_LIST, + TextUtils.join(",", mHideList)); return true; } } diff --git a/packages/SystemUI/src/com/android/systemui/tuner/StatusBarSwitch.java b/packages/SystemUI/src/com/android/systemui/tuner/StatusBarSwitch.java index de8ccfa848e3..cc0050b64d60 100644 --- a/packages/SystemUI/src/com/android/systemui/tuner/StatusBarSwitch.java +++ b/packages/SystemUI/src/com/android/systemui/tuner/StatusBarSwitch.java @@ -34,7 +34,7 @@ import java.util.Set; public class StatusBarSwitch extends SwitchPreference implements Tunable { - private Set<String> mBlacklist; + private Set<String> mHideList; public StatusBarSwitch(Context context, AttributeSet attrs) { super(context, attrs); @@ -43,7 +43,7 @@ public class StatusBarSwitch extends SwitchPreference implements Tunable { @Override public void onAttached() { super.onAttached(); - Dependency.get(TunerService.class).addTunable(this, StatusBarIconController.ICON_BLACKLIST); + Dependency.get(TunerService.class).addTunable(this, StatusBarIconController.ICON_HIDE_LIST); } @Override @@ -54,35 +54,35 @@ public class StatusBarSwitch extends SwitchPreference implements Tunable { @Override public void onTuningChanged(String key, String newValue) { - if (!StatusBarIconController.ICON_BLACKLIST.equals(key)) { + if (!StatusBarIconController.ICON_HIDE_LIST.equals(key)) { return; } - mBlacklist = StatusBarIconController.getIconBlacklist(getContext(), newValue); - setChecked(!mBlacklist.contains(getKey())); + mHideList = StatusBarIconController.getIconHideList(getContext(), newValue); + setChecked(!mHideList.contains(getKey())); } @Override protected boolean persistBoolean(boolean value) { if (!value) { - // If not enabled add to blacklist. - if (!mBlacklist.contains(getKey())) { + // If not enabled add to hideList. + if (!mHideList.contains(getKey())) { MetricsLogger.action(getContext(), MetricsEvent.TUNER_STATUS_BAR_DISABLE, getKey()); - mBlacklist.add(getKey()); - setList(mBlacklist); + mHideList.add(getKey()); + setList(mHideList); } } else { - if (mBlacklist.remove(getKey())) { + if (mHideList.remove(getKey())) { MetricsLogger.action(getContext(), MetricsEvent.TUNER_STATUS_BAR_ENABLE, getKey()); - setList(mBlacklist); + setList(mHideList); } } return true; } - private void setList(Set<String> blacklist) { + private void setList(Set<String> hideList) { ContentResolver contentResolver = getContext().getContentResolver(); - Settings.Secure.putStringForUser(contentResolver, StatusBarIconController.ICON_BLACKLIST, - TextUtils.join(",", blacklist), ActivityManager.getCurrentUser()); + Settings.Secure.putStringForUser(contentResolver, StatusBarIconController.ICON_HIDE_LIST, + TextUtils.join(",", hideList), ActivityManager.getCurrentUser()); } } diff --git a/packages/SystemUI/src/com/android/systemui/tuner/TunerServiceImpl.java b/packages/SystemUI/src/com/android/systemui/tuner/TunerServiceImpl.java index 9ad2aa257aa0..644f7582f146 100644 --- a/packages/SystemUI/src/com/android/systemui/tuner/TunerServiceImpl.java +++ b/packages/SystemUI/src/com/android/systemui/tuner/TunerServiceImpl.java @@ -60,7 +60,7 @@ public class TunerServiceImpl extends TunerService { // Things that use the tunable infrastructure but are now real user settings and // shouldn't be reset with tuner settings. - private static final String[] RESET_BLACKLIST = new String[] { + private static final String[] RESET_EXCEPTION_LIST = new String[] { QSTileHost.TILES_SETTING, Settings.Secure.DOZE_ALWAYS_ON, Settings.Secure.MEDIA_CONTROLS_RESUME @@ -116,17 +116,17 @@ public class TunerServiceImpl extends TunerService { private void upgradeTuner(int oldVersion, int newVersion, Handler mainHandler) { if (oldVersion < 1) { - String blacklistStr = getValue(StatusBarIconController.ICON_BLACKLIST); - if (blacklistStr != null) { - ArraySet<String> iconBlacklist = - StatusBarIconController.getIconBlacklist(mContext, blacklistStr); + String hideListStr = getValue(StatusBarIconController.ICON_HIDE_LIST); + if (hideListStr != null) { + ArraySet<String> iconHideList = + StatusBarIconController.getIconHideList(mContext, hideListStr); - iconBlacklist.add("rotate"); - iconBlacklist.add("headset"); + iconHideList.add("rotate"); + iconHideList.add("headset"); Settings.Secure.putStringForUser(mContentResolver, - StatusBarIconController.ICON_BLACKLIST, - TextUtils.join(",", iconBlacklist), mCurrentUser); + StatusBarIconController.ICON_HIDE_LIST, + TextUtils.join(",", iconHideList), mCurrentUser); } } if (oldVersion < 2) { @@ -251,7 +251,7 @@ public class TunerServiceImpl extends TunerService { mContext.sendBroadcast(intent); for (String key : mTunableLookup.keySet()) { - if (ArrayUtils.contains(RESET_BLACKLIST, key)) { + if (ArrayUtils.contains(RESET_EXCEPTION_LIST, key)) { continue; } Settings.Secure.putStringForUser(mContentResolver, key, null, user); diff --git a/packages/SystemUI/src/com/android/systemui/usb/UsbDebuggingActivity.java b/packages/SystemUI/src/com/android/systemui/usb/UsbDebuggingActivity.java index 7561af770298..b1241b160d70 100644 --- a/packages/SystemUI/src/com/android/systemui/usb/UsbDebuggingActivity.java +++ b/packages/SystemUI/src/com/android/systemui/usb/UsbDebuggingActivity.java @@ -70,6 +70,8 @@ public class UsbDebuggingActivity extends AlertActivity if (SystemProperties.getInt("service.adb.tcp.port", 0) == 0) { mDisconnectedReceiver = new UsbDisconnectedReceiver(this); + IntentFilter filter = new IntentFilter(UsbManager.ACTION_USB_STATE); + mBroadcastDispatcher.registerReceiver(mDisconnectedReceiver, filter); } Intent intent = getIntent(); @@ -119,6 +121,7 @@ public class UsbDebuggingActivity extends AlertActivity } boolean connected = intent.getBooleanExtra(UsbManager.USB_CONNECTED, false); if (!connected) { + Log.d(TAG, "USB disconnected, notifying service"); notifyService(false); mActivity.finish(); } @@ -126,29 +129,20 @@ public class UsbDebuggingActivity extends AlertActivity } @Override - public void onStart() { - super.onStart(); - if (mDisconnectedReceiver != null) { - IntentFilter filter = new IntentFilter(UsbManager.ACTION_USB_STATE); - mBroadcastDispatcher.registerReceiver(mDisconnectedReceiver, filter); - } - } - - @Override - protected void onStop() { + protected void onDestroy() { if (mDisconnectedReceiver != null) { mBroadcastDispatcher.unregisterReceiver(mDisconnectedReceiver); } - super.onStop(); - } - - @Override - protected void onDestroy() { - // If the ADB service has not yet been notified due to this dialog being closed in some - // other way then notify the service to deny the connection to ensure system_server sends - // a response to adbd. - if (!mServiceNotified) { - notifyService(false); + // Only notify the service if the activity is finishing; if onDestroy has been called due to + // a configuration change then allow the user to still authorize the connection the next + // time the activity is in the foreground. + if (isFinishing()) { + // If the ADB service has not yet been notified due to this dialog being closed in some + // other way then notify the service to deny the connection to ensure system_server + // sends a response to adbd. + if (!mServiceNotified) { + notifyService(false); + } } super.onDestroy(); } diff --git a/packages/SystemUI/src/com/android/systemui/util/sensors/PrimaryProxSensor.java b/packages/SystemUI/src/com/android/systemui/util/sensors/PrimaryProxSensor.java new file mode 100644 index 000000000000..96c76c1a15d0 --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/util/sensors/PrimaryProxSensor.java @@ -0,0 +1,30 @@ +/* + * Copyright (C) 2020 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.util.sensors; + +import static java.lang.annotation.RetentionPolicy.RUNTIME; + +import java.lang.annotation.Documented; +import java.lang.annotation.Retention; + +import javax.inject.Qualifier; + +@Qualifier +@Documented +@Retention(RUNTIME) +@interface PrimaryProxSensor { +} diff --git a/packages/SystemUI/src/com/android/systemui/util/sensors/ProximitySensor.java b/packages/SystemUI/src/com/android/systemui/util/sensors/ProximitySensor.java index 52d46476df83..06806d0e6ab6 100644 --- a/packages/SystemUI/src/com/android/systemui/util/sensors/ProximitySensor.java +++ b/packages/SystemUI/src/com/android/systemui/util/sensors/ProximitySensor.java @@ -16,94 +16,128 @@ package com.android.systemui.util.sensors; -import android.content.res.Resources; -import android.hardware.Sensor; -import android.hardware.SensorEvent; -import android.hardware.SensorEventListener; import android.hardware.SensorManager; import android.util.Log; import com.android.internal.annotations.VisibleForTesting; -import com.android.systemui.R; import com.android.systemui.dagger.qualifiers.Main; +import com.android.systemui.util.Assert; import com.android.systemui.util.concurrency.DelayableExecutor; import java.util.ArrayList; import java.util.List; -import java.util.Locale; import java.util.concurrent.atomic.AtomicBoolean; import java.util.function.Consumer; import javax.inject.Inject; /** - * Simple wrapper around SensorManager customized for the Proximity sensor. + * Wrapper around SensorManager customized for the Proximity sensor. + * + * The ProximitySensor supports the concept of a primary and a + * secondary hardware sensor. The primary sensor is used for a first + * pass check if the phone covered. When triggered, it then checks + * the secondary sensor for confirmation (if there is one). It does + * not send a proximity event until the secondary sensor confirms (or + * rejects) the reading. The secondary sensor is, in fact, the source + * of truth. + * + * This is necessary as sometimes keeping the secondary sensor on for + * extends periods is undesirable. It may, however, result in increased + * latency for proximity readings. + * + * Phones should configure this via a config.xml overlay. If no + * proximity sensor is set (primary or secondary) we fall back to the + * default Sensor.TYPE_PROXIMITY. If proximity_sensor_type is set in + * config.xml, that will be used as the primary sensor. If + * proximity_sensor_secondary_type is set, that will function as the + * secondary sensor. If no secondary is set, only the primary will be + * used. */ -public class ProximitySensor { +public class ProximitySensor implements ThresholdSensor { private static final String TAG = "ProxSensor"; private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG); + private static final long SECONDARY_PING_INTERVAL_MS = 5000; - private final Sensor mSensor; - private final AsyncSensorManager mSensorManager; - private final float mThreshold; - private List<ProximitySensorListener> mListeners = new ArrayList<>(); + private final ThresholdSensor mPrimaryThresholdSensor; + private final ThresholdSensor mSecondaryThresholdSensor; + private final DelayableExecutor mDelayableExecutor; + private final List<ThresholdSensor.Listener> mListeners = new ArrayList<>(); private String mTag = null; - @VisibleForTesting ProximityEvent mLastEvent; - private int mSensorDelay = SensorManager.SENSOR_DELAY_NORMAL; @VisibleForTesting protected boolean mPaused; + private ThresholdSensorEvent mLastPrimaryEvent; + @VisibleForTesting + ThresholdSensorEvent mLastEvent; private boolean mRegistered; private final AtomicBoolean mAlerting = new AtomicBoolean(); + private Runnable mCancelSecondaryRunnable; + private boolean mInitializedListeners = false; + private boolean mSecondarySafe = false; - private SensorEventListener mSensorEventListener = new SensorEventListener() { + private ThresholdSensor.Listener mPrimaryEventListener = new ThresholdSensor.Listener() { @Override - public synchronized void onSensorChanged(SensorEvent event) { - onSensorEvent(event); - } - - @Override - public void onAccuracyChanged(Sensor sensor, int accuracy) { + public void onThresholdCrossed(ThresholdSensorEvent event) { + onPrimarySensorEvent(event); } }; - @Inject - public ProximitySensor(@Main Resources resources, - AsyncSensorManager sensorManager) { - mSensorManager = sensorManager; - - Sensor sensor = findCustomProxSensor(resources); - float threshold = 0; - if (sensor != null) { - try { - threshold = getCustomProxThreshold(resources); - } catch (IllegalStateException e) { - Log.e(TAG, "Can not load custom proximity sensor.", e); - sensor = null; + private ThresholdSensor.Listener mSecondaryEventListener = new ThresholdSensor.Listener() { + @Override + public void onThresholdCrossed(ThresholdSensorEvent event) { + // If we no longer have a "below" signal and the secondary sensor is not + // considered "safe", then we need to turn it off. + if (!mSecondarySafe + && (mLastPrimaryEvent == null + || !mLastPrimaryEvent.getBelow() + || !event.getBelow())) { + mSecondaryThresholdSensor.pause(); + if (mLastPrimaryEvent == null || !mLastPrimaryEvent.getBelow()) { + // Only check the secondary as long as the primary thinks we're near. + mCancelSecondaryRunnable = null; + return; + } else { + // Check this sensor again in a moment. + mCancelSecondaryRunnable = mDelayableExecutor.executeDelayed( + mSecondaryThresholdSensor::resume, SECONDARY_PING_INTERVAL_MS); + } } - } - if (sensor == null) { - sensor = sensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY); - if (sensor != null) { - threshold = sensor.getMaximumRange(); + logDebug("Secondary sensor event: " + event.getBelow() + "."); + + if (!mPaused) { + onSensorEvent(event); } } + }; - mThreshold = threshold; - - mSensor = sensor; + @Inject + public ProximitySensor(@PrimaryProxSensor ThresholdSensor primary, + @SecondaryProxSensor ThresholdSensor secondary, + @Main DelayableExecutor delayableExecutor) { + mPrimaryThresholdSensor = primary; + mSecondaryThresholdSensor = secondary; + mDelayableExecutor = delayableExecutor; } + @Override public void setTag(String tag) { mTag = tag; + mPrimaryThresholdSensor.setTag(tag + ":primary"); + mSecondaryThresholdSensor.setTag(tag + ":secondary"); } - public void setSensorDelay(int sensorDelay) { - mSensorDelay = sensorDelay; + @Override + public void setDelay(int delay) { + Assert.isMainThread(); + mPrimaryThresholdSensor.setDelay(delay); + mSecondaryThresholdSensor.setDelay(delay); } /** * Unregister with the {@link SensorManager} without unsetting listeners on this object. */ + @Override public void pause() { + Assert.isMainThread(); mPaused = true; unregisterInternal(); } @@ -111,39 +145,20 @@ public class ProximitySensor { /** * Register with the {@link SensorManager}. No-op if no listeners are registered on this object. */ + @Override public void resume() { + Assert.isMainThread(); mPaused = false; registerInternal(); } - /** - * Returns a brightness sensor that can be used for proximity purposes. - */ - private Sensor findCustomProxSensor(Resources resources) { - String sensorType = resources.getString(R.string.proximity_sensor_type); - if (sensorType.isEmpty()) { - return null; - } - - List<Sensor> sensorList = mSensorManager.getSensorList(Sensor.TYPE_ALL); - Sensor sensor = null; - for (Sensor s : sensorList) { - if (sensorType.equals(s.getStringType())) { - sensor = s; - break; - } - } - - return sensor; - } /** - * Returns a threshold value that can be used along with {@link #findCustomProxSensor} + * Sets that it is safe to leave the secondary sensor on indefinitely. */ - private float getCustomProxThreshold(Resources resources) { - try { - return resources.getFloat(R.dimen.proximity_sensor_threshold); - } catch (Resources.NotFoundException e) { - throw new IllegalStateException("R.dimen.proximity_sensor_threshold must be set."); + public void setSecondarySafe(boolean safe) { + mSecondarySafe = safe; + if (!mSecondarySafe) { + mSecondaryThresholdSensor.pause(); } } @@ -157,38 +172,46 @@ public class ProximitySensor { /** * Returns {@code false} if a Proximity sensor is not available. */ - public boolean getSensorAvailable() { - return mSensor != null; + @Override + public boolean isLoaded() { + return mPrimaryThresholdSensor.isLoaded(); } /** * Add a listener. * * Registers itself with the {@link SensorManager} if this is the first listener - * added. If a cool down is currently running, the sensor will be registered when it is over. + * added. If the ProximitySensor is paused, it will be registered when resumed. */ - public boolean register(ProximitySensorListener listener) { - if (!getSensorAvailable()) { - return false; + @Override + public void register(ThresholdSensor.Listener listener) { + Assert.isMainThread(); + if (!isLoaded()) { + return; } if (mListeners.contains(listener)) { - Log.d(TAG, "ProxListener registered multiple times: " + listener); + logDebug("ProxListener registered multiple times: " + listener); } else { mListeners.add(listener); } registerInternal(); - - return true; } protected void registerInternal() { + Assert.isMainThread(); if (mRegistered || mPaused || mListeners.isEmpty()) { return; } + if (!mInitializedListeners) { + mPrimaryThresholdSensor.register(mPrimaryEventListener); + mSecondaryThresholdSensor.pause(); + mSecondaryThresholdSensor.register(mSecondaryEventListener); + mInitializedListeners = true; + } logDebug("Registering sensor listener"); + mPrimaryThresholdSensor.resume(); mRegistered = true; - mSensorManager.registerListener(mSensorEventListener, mSensor, mSensorDelay); } /** @@ -197,7 +220,9 @@ public class ProximitySensor { * If all listeners are removed from an instance of this class, * it will unregister itself with the SensorManager. */ - public void unregister(ProximitySensorListener listener) { + @Override + public void unregister(ThresholdSensor.Listener listener) { + Assert.isMainThread(); mListeners.remove(listener); if (mListeners.size() == 0) { unregisterInternal(); @@ -205,40 +230,85 @@ public class ProximitySensor { } protected void unregisterInternal() { + Assert.isMainThread(); if (!mRegistered) { return; } logDebug("unregistering sensor listener"); - mSensorManager.unregisterListener(mSensorEventListener); + mPrimaryThresholdSensor.pause(); + mSecondaryThresholdSensor.pause(); + if (mCancelSecondaryRunnable != null) { + mCancelSecondaryRunnable.run(); + mCancelSecondaryRunnable = null; + } + mLastPrimaryEvent = null; // Forget what we know. + mLastEvent = null; mRegistered = false; } public Boolean isNear() { - return getSensorAvailable() && mLastEvent != null ? mLastEvent.getNear() : null; + return isLoaded() && mLastEvent != null ? mLastEvent.getBelow() : null; } /** Update all listeners with the last value this class received from the sensor. */ public void alertListeners() { + Assert.isMainThread(); if (mAlerting.getAndSet(true)) { return; } + if (mLastEvent != null) { + ThresholdSensorEvent lastEvent = mLastEvent; // Listeners can null out mLastEvent. + List<ThresholdSensor.Listener> listeners = new ArrayList<>(mListeners); + listeners.forEach(proximitySensorListener -> + proximitySensorListener.onThresholdCrossed(lastEvent)); + } - List<ProximitySensorListener> listeners = new ArrayList<>(mListeners); - listeners.forEach(proximitySensorListener -> - proximitySensorListener.onSensorEvent(mLastEvent)); mAlerting.set(false); } - private void onSensorEvent(SensorEvent event) { - boolean near = event.values[0] < mThreshold; - mLastEvent = new ProximityEvent(near, event.timestamp); + private void onPrimarySensorEvent(ThresholdSensorEvent event) { + Assert.isMainThread(); + if (mLastPrimaryEvent != null && event.getBelow() == mLastPrimaryEvent.getBelow()) { + return; + } + + mLastPrimaryEvent = event; + + if (event.getBelow() && mSecondaryThresholdSensor.isLoaded()) { + logDebug("Primary sensor is near. Checking secondary."); + if (mCancelSecondaryRunnable == null) { + mSecondaryThresholdSensor.resume(); + } + } else { + if (!mSecondaryThresholdSensor.isLoaded()) { + logDebug("Primary sensor event: " + event.getBelow() + ". No secondary."); + } else { + logDebug("Primary sensor event: " + event.getBelow() + "."); + } + onSensorEvent(event); + } + } + + private void onSensorEvent(ThresholdSensorEvent event) { + Assert.isMainThread(); + if (mLastEvent != null && event.getBelow() == mLastEvent.getBelow()) { + return; + } + + if (!mSecondarySafe && !event.getBelow()) { + mSecondaryThresholdSensor.pause(); + } + + mLastEvent = event; alertListeners(); } @Override public String toString() { - return String.format("{registered=%s, paused=%s, near=%s, sensor=%s}", - isRegistered(), mPaused, isNear(), mSensor); + return String.format("{registered=%s, paused=%s, near=%s, primarySensor=%s, " + + "secondarySensor=%s}", + isRegistered(), mPaused, isNear(), mPrimaryThresholdSensor, + mSecondaryThresholdSensor); } /** @@ -249,7 +319,7 @@ public class ProximitySensor { private final ProximitySensor mSensor; private final DelayableExecutor mDelayableExecutor; private List<Consumer<Boolean>> mCallbacks = new ArrayList<>(); - private final ProximitySensor.ProximitySensorListener mListener; + private final ThresholdSensor.Listener mListener; private final AtomicBoolean mRegistered = new AtomicBoolean(); @Inject @@ -268,14 +338,14 @@ public class ProximitySensor { @Override public void run() { unregister(); - mSensor.alertListeners(); + onProximityEvent(null); } /** * Query the proximity sensor, timing out if no result. */ public void check(long timeoutMs, Consumer<Boolean> callback) { - if (!mSensor.getSensorAvailable()) { + if (!mSensor.isLoaded()) { callback.accept(null); } mCallbacks.add(callback); @@ -290,54 +360,17 @@ public class ProximitySensor { mRegistered.set(false); } - private void onProximityEvent(ProximityEvent proximityEvent) { + private void onProximityEvent(ThresholdSensorEvent proximityEvent) { mCallbacks.forEach( booleanConsumer -> booleanConsumer.accept( - proximityEvent == null ? null : proximityEvent.getNear())); + proximityEvent == null ? null : proximityEvent.getBelow())); mCallbacks.clear(); unregister(); mRegistered.set(false); } } - /** Implement to be notified of ProximityEvents. */ - public interface ProximitySensorListener { - /** Called when the ProximitySensor changes. */ - void onSensorEvent(ProximityEvent proximityEvent); - } - - /** - * Returned when the near/far state of a {@link ProximitySensor} changes. - */ - public static class ProximityEvent { - private final boolean mNear; - private final long mTimestampNs; - - public ProximityEvent(boolean near, long timestampNs) { - mNear = near; - mTimestampNs = timestampNs; - } - - public boolean getNear() { - return mNear; - } - - public long getTimestampNs() { - return mTimestampNs; - } - - public long getTimestampMs() { - return mTimestampNs / 1000000; - } - - @Override - public String toString() { - return String.format((Locale) null, "{near=%s, timestamp_ns=%d}", mNear, mTimestampNs); - } - - } - private void logDebug(String msg) { if (DEBUG) { Log.d(TAG, (mTag != null ? "[" + mTag + "] " : "") + msg); diff --git a/packages/SystemUI/src/com/android/systemui/util/sensors/SecondaryProxSensor.java b/packages/SystemUI/src/com/android/systemui/util/sensors/SecondaryProxSensor.java new file mode 100644 index 000000000000..89fc0eabf607 --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/util/sensors/SecondaryProxSensor.java @@ -0,0 +1,30 @@ +/* + * Copyright (C) 2020 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.util.sensors; + +import static java.lang.annotation.RetentionPolicy.RUNTIME; + +import java.lang.annotation.Documented; +import java.lang.annotation.Retention; + +import javax.inject.Qualifier; + +@Qualifier +@Documented +@Retention(RUNTIME) +@interface SecondaryProxSensor { +} diff --git a/packages/SystemUI/src/com/android/systemui/util/sensors/SensorModule.java b/packages/SystemUI/src/com/android/systemui/util/sensors/SensorModule.java new file mode 100644 index 000000000000..7f3756244629 --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/util/sensors/SensorModule.java @@ -0,0 +1,66 @@ +/* + * Copyright (C) 2020 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.util.sensors; + +import android.hardware.Sensor; +import android.hardware.SensorManager; + +import com.android.systemui.R; + +import dagger.Module; +import dagger.Provides; + +/** + * Dagger module for Sensor related classes. + */ +@Module +public class SensorModule { + @Provides + @PrimaryProxSensor + static ThresholdSensor providePrimaryProxSensor(SensorManager sensorManager, + ThresholdSensorImpl.Builder thresholdSensorBuilder) { + try { + return thresholdSensorBuilder + .setSensorDelay(SensorManager.SENSOR_DELAY_NORMAL) + .setSensorResourceId(R.string.proximity_sensor_type) + .setThresholdResourceId(R.dimen.proximity_sensor_threshold) + .setThresholdLatchResourceId(R.dimen.proximity_sensor_threshold_latch) + .build(); + } catch (IllegalStateException e) { + Sensor defaultSensor = sensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY); + return thresholdSensorBuilder + .setSensor(defaultSensor) + .setThresholdValue(defaultSensor != null ? defaultSensor.getMaximumRange() : 0) + .build(); + } + } + + @Provides + @SecondaryProxSensor + static ThresholdSensor provideSecondaryProxSensor( + ThresholdSensorImpl.Builder thresholdSensorBuilder) { + try { + return thresholdSensorBuilder + .setSensorResourceId(R.string.proximity_sensor_secondary_type) + .setThresholdResourceId(R.dimen.proximity_sensor_secondary_threshold) + .setThresholdLatchResourceId(R.dimen.proximity_sensor_secondary_threshold_latch) + .build(); + } catch (IllegalStateException e) { + return thresholdSensorBuilder.setSensor(null).setThresholdValue(0).build(); + } + } +} diff --git a/packages/SystemUI/src/com/android/systemui/util/sensors/ThresholdSensor.java b/packages/SystemUI/src/com/android/systemui/util/sensors/ThresholdSensor.java new file mode 100644 index 000000000000..363a734a6ae5 --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/util/sensors/ThresholdSensor.java @@ -0,0 +1,118 @@ +/* + * Copyright (C) 2020 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.util.sensors; + +import java.util.Locale; + +/** + * A wrapper class for sensors that have a boolean state - above/below. + */ +public interface ThresholdSensor { + /** + * Optional label to use for logging. + * + * This should be set to something meaningful by owner of the instance. + */ + void setTag(String tag); + + /** + * Change the delay used when registering the sensor. + * + * If the sensor is already registered, this should cause it to re-register with the new + * delay. + */ + void setDelay(int delay); + + /** + * True if this sensor successfully loads and can be listened to. + */ + boolean isLoaded(); + + /** + * Registers with the sensor and calls the supplied callback on value change. + * + * If this instance is paused, the listener will be recorded, but no registration with + * the underlying physical sensor will occur until {@link #resume()} is called. + * + * @see #unregister(Listener) + */ + void register(Listener listener); + + /** + * Unregisters from the physical sensor without removing any supplied listeners. + * + * No events will be sent to listeners as long as this sensor is paused. + * + * @see #resume() + * @see #unregister(Listener) + */ + void pause(); + + /** + * Resumes listening to the physical sensor after previously pausing. + * + * @see #pause() + */ + void resume(); + + /** + * Unregister a listener with the sensor. + * + * @see #register(Listener) + */ + void unregister(Listener listener); + + /** + * Interface for listening to events on {@link ThresholdSensor} + */ + interface Listener { + /** + * Called whenever the threshold for the registered sensor is crossed. + */ + void onThresholdCrossed(ThresholdSensorEvent event); + } + + /** + * Returned when the below/above state of a {@link ThresholdSensor} changes. + */ + class ThresholdSensorEvent { + private final boolean mBelow; + private final long mTimestampNs; + + public ThresholdSensorEvent(boolean below, long timestampNs) { + mBelow = below; + mTimestampNs = timestampNs; + } + + public boolean getBelow() { + return mBelow; + } + + public long getTimestampNs() { + return mTimestampNs; + } + + public long getTimestampMs() { + return mTimestampNs / 1000000; + } + + @Override + public String toString() { + return String.format((Locale) null, "{near=%s, timestamp_ns=%d}", mBelow, mTimestampNs); + } + } +} diff --git a/packages/SystemUI/src/com/android/systemui/util/sensors/ThresholdSensorImpl.java b/packages/SystemUI/src/com/android/systemui/util/sensors/ThresholdSensorImpl.java new file mode 100644 index 000000000000..aa50292edbf7 --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/util/sensors/ThresholdSensorImpl.java @@ -0,0 +1,325 @@ +/* + * Copyright (C) 2020 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.util.sensors; + +import android.content.res.Resources; +import android.hardware.Sensor; +import android.hardware.SensorEvent; +import android.hardware.SensorEventListener; +import android.hardware.SensorManager; +import android.util.Log; + +import com.android.internal.annotations.VisibleForTesting; +import com.android.systemui.dagger.qualifiers.Main; +import com.android.systemui.util.Assert; + +import java.util.ArrayList; +import java.util.List; + +import javax.inject.Inject; + +class ThresholdSensorImpl implements ThresholdSensor { + private static final String TAG = "ThresholdSensor"; + private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG); + + private final AsyncSensorManager mSensorManager; + private final Sensor mSensor; + private final float mThreshold; + private boolean mRegistered; + private boolean mPaused; + private List<Listener> mListeners = new ArrayList<>(); + private Boolean mLastBelow; + private String mTag; + private final float mThresholdLatch; + private int mSensorDelay; + + private SensorEventListener mSensorEventListener = new SensorEventListener() { + @Override + public void onSensorChanged(SensorEvent event) { + boolean below = event.values[0] < mThreshold; + boolean above = event.values[0] >= mThresholdLatch; + logDebug("Sensor value: " + event.values[0]); + onSensorEvent(below, above, event.timestamp); + } + + @Override + public void onAccuracyChanged(Sensor sensor, int accuracy) { + } + }; + + private ThresholdSensorImpl(AsyncSensorManager sensorManager, + Sensor sensor, float threshold, float thresholdLatch, int sensorDelay) { + mSensorManager = sensorManager; + mSensor = sensor; + mThreshold = threshold; + mThresholdLatch = thresholdLatch; + mSensorDelay = sensorDelay; + } + + @Override + public void setTag(String tag) { + mTag = tag; + } + + @Override + public void setDelay(int delay) { + if (delay == mSensorDelay) { + return; + } + + mSensorDelay = delay; + if (isLoaded()) { + unregisterInternal(); + registerInternal(); + } + } + + @Override + public boolean isLoaded() { + return mSensor != null; + } + + @VisibleForTesting + boolean isRegistered() { + return mRegistered; + } + + /** + * Registers the listener with the sensor. + * + * Multiple listeners are not supported at this time. + * + * Returns true if the listener was successfully registered. False otherwise. + */ + @Override + public void register(Listener listener) { + Assert.isMainThread(); + if (!mListeners.contains(listener)) { + mListeners.add(listener); + } + registerInternal(); + } + + @Override + public void unregister(Listener listener) { + Assert.isMainThread(); + mListeners.remove(listener); + unregisterInternal(); + } + + /** + * Unregister with the {@link SensorManager} without unsetting listeners on this object. + */ + @Override + public void pause() { + Assert.isMainThread(); + mPaused = true; + unregisterInternal(); + } + + /** + * Register with the {@link SensorManager}. No-op if no listeners are registered on this object. + */ + @Override + public void resume() { + Assert.isMainThread(); + mPaused = false; + registerInternal(); + } + + private void alertListenersInternal(boolean below, long timestampNs) { + List<Listener> listeners = new ArrayList<>(mListeners); + listeners.forEach(listener -> + listener.onThresholdCrossed(new ThresholdSensorEvent(below, timestampNs))); + } + + private void registerInternal() { + Assert.isMainThread(); + if (mRegistered || mPaused || mListeners.isEmpty()) { + return; + } + logDebug("Registering sensor listener"); + mSensorManager.registerListener(mSensorEventListener, mSensor, mSensorDelay); + mRegistered = true; + } + + private void unregisterInternal() { + Assert.isMainThread(); + if (!mRegistered) { + return; + } + logDebug("Unregister sensor listener"); + mSensorManager.unregisterListener(mSensorEventListener); + mRegistered = false; + mLastBelow = null; // Forget what we know. + } + + /** + * Call when the sensor reports a new value. + * + * Separate below-threshold and above-thresholds are specified. this allows latching behavior, + * where a different threshold can be specified for triggering the sensor depending on if it's + * going from above to below or below to above. To outside listeners of this class, the class + * still appears entirely binary. + */ + private void onSensorEvent(boolean belowThreshold, boolean aboveThreshold, long timestampNs) { + Assert.isMainThread(); + if (!mRegistered) { + return; + } + if (mLastBelow != null) { + // If we last reported below and are not yet above, change nothing. + if (mLastBelow && !aboveThreshold) { + return; + } + // If we last reported above and are not yet below, change nothing. + if (!mLastBelow && !belowThreshold) { + return; + } + } + mLastBelow = belowThreshold; + logDebug("Alerting below: " + belowThreshold); + alertListenersInternal(belowThreshold, timestampNs); + } + + + @Override + public String toString() { + return String.format("{registered=%s, paused=%s, threshold=%s, sensor=%s}", + isLoaded(), mRegistered, mPaused, mThreshold, mSensor); + } + + private void logDebug(String msg) { + if (DEBUG) { + Log.d(TAG, (mTag != null ? "[" + mTag + "] " : "") + msg); + } + } + + static class Builder { + private final Resources mResources; + private final AsyncSensorManager mSensorManager; + private int mSensorDelay = SensorManager.SENSOR_DELAY_NORMAL;; + private float mThresholdValue; + private float mThresholdLatchValue; + private Sensor mSensor; + private boolean mSensorSet; + private boolean mThresholdSet; + private boolean mThresholdLatchValueSet; + + @Inject + Builder(@Main Resources resources, AsyncSensorManager sensorManager) { + mResources = resources; + mSensorManager = sensorManager; + } + + + Builder setSensorDelay(int sensorDelay) { + mSensorDelay = sensorDelay; + return this; + } + + Builder setSensorResourceId(int sensorResourceId) { + setSensorType(mResources.getString(sensorResourceId)); + return this; + } + + Builder setThresholdResourceId(int thresholdResourceId) { + try { + setThresholdValue(mResources.getFloat(thresholdResourceId)); + } catch (Resources.NotFoundException e) { + // no-op + } + return this; + } + + Builder setThresholdLatchResourceId(int thresholdLatchResourceId) { + try { + setThresholdLatchValue(mResources.getFloat(thresholdLatchResourceId)); + } catch (Resources.NotFoundException e) { + // no-op + } + return this; + } + + Builder setSensorType(String sensorType) { + Sensor sensor = findSensorByType(sensorType); + if (sensor != null) { + setSensor(sensor); + } + return this; + } + + Builder setThresholdValue(float thresholdValue) { + mThresholdValue = thresholdValue; + mThresholdSet = true; + if (!mThresholdLatchValueSet) { + mThresholdLatchValue = mThresholdValue; + } + return this; + } + + Builder setThresholdLatchValue(float thresholdLatchValue) { + mThresholdLatchValue = thresholdLatchValue; + mThresholdLatchValueSet = true; + return this; + } + + Builder setSensor(Sensor sensor) { + mSensor = sensor; + mSensorSet = true; + return this; + } + + /** + * Creates a {@link ThresholdSensor} backed by a {@link ThresholdSensorImpl}. + */ + public ThresholdSensor build() { + if (!mSensorSet) { + throw new IllegalStateException("A sensor was not successfully set."); + } + + if (!mThresholdSet) { + throw new IllegalStateException("A threshold was not successfully set."); + } + + if (mThresholdValue > mThresholdLatchValue) { + throw new IllegalStateException( + "Threshold must be less than or equal to Threshold Latch"); + } + + return new ThresholdSensorImpl( + mSensorManager, mSensor, mThresholdValue, mThresholdLatchValue, mSensorDelay); + } + + private Sensor findSensorByType(String sensorType) { + if (sensorType.isEmpty()) { + return null; + } + + List<Sensor> sensorList = mSensorManager.getSensorList(Sensor.TYPE_ALL); + Sensor sensor = null; + for (Sensor s : sensorList) { + if (sensorType.equals(s.getStringType())) { + sensor = s; + break; + } + } + + return sensor; + } + } +} diff --git a/packages/SystemUI/tests/src/com/android/systemui/ScreenDecorationsTest.java b/packages/SystemUI/tests/src/com/android/systemui/ScreenDecorationsTest.java index b9ddff3a59ea..d107f646bb6b 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/ScreenDecorationsTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/ScreenDecorationsTest.java @@ -44,6 +44,7 @@ import static org.mockito.Mockito.when; import android.content.res.Configuration; import android.graphics.Insets; +import android.graphics.Point; import android.graphics.Rect; import android.graphics.drawable.VectorDrawable; import android.hardware.display.DisplayManager; @@ -193,6 +194,7 @@ public class ScreenDecorationsTest extends SysuiTestCase { @Test public void testRoundingRadius_NoCutout() { final int testRadius = 1; + final Point testRadiusPoint = new Point(1, 1); mContext.getOrCreateTestableResources().addOverride( com.android.internal.R.bool.config_fillMainBuiltInDisplayCutout, false); mContext.getOrCreateTestableResources().addOverride( @@ -209,9 +211,9 @@ public class ScreenDecorationsTest extends SysuiTestCase { mScreenDecorations.start(); // Size of corner view should same as rounded_corner_radius{_top|_bottom} - assertThat(mScreenDecorations.mRoundedDefault).isEqualTo(testRadius); - assertThat(mScreenDecorations.mRoundedDefaultTop).isEqualTo(testRadius); - assertThat(mScreenDecorations.mRoundedDefaultBottom).isEqualTo(testRadius); + assertThat(mScreenDecorations.mRoundedDefault).isEqualTo(testRadiusPoint); + assertThat(mScreenDecorations.mRoundedDefaultTop).isEqualTo(testRadiusPoint); + assertThat(mScreenDecorations.mRoundedDefaultBottom).isEqualTo(testRadiusPoint); } @Test @@ -237,14 +239,18 @@ public class ScreenDecorationsTest extends SysuiTestCase { mScreenDecorations.mOverlays[BOUNDS_POSITION_TOP].findViewById(R.id.left); View rightRoundedCorner = mScreenDecorations.mOverlays[BOUNDS_POSITION_TOP].findViewById(R.id.right); - verify(mScreenDecorations, atLeastOnce()).setSize(leftRoundedCorner, testTopRadius); - verify(mScreenDecorations, atLeastOnce()).setSize(rightRoundedCorner, testTopRadius); + verify(mScreenDecorations, atLeastOnce()) + .setSize(leftRoundedCorner, new Point(testTopRadius, testTopRadius)); + verify(mScreenDecorations, atLeastOnce()) + .setSize(rightRoundedCorner, new Point(testTopRadius, testTopRadius)); leftRoundedCorner = mScreenDecorations.mOverlays[BOUNDS_POSITION_BOTTOM].findViewById(R.id.left); rightRoundedCorner = mScreenDecorations.mOverlays[BOUNDS_POSITION_BOTTOM].findViewById(R.id.right); - verify(mScreenDecorations, atLeastOnce()).setSize(leftRoundedCorner, testBottomRadius); - verify(mScreenDecorations, atLeastOnce()).setSize(rightRoundedCorner, testBottomRadius); + verify(mScreenDecorations, atLeastOnce()) + .setSize(leftRoundedCorner, new Point(testBottomRadius, testBottomRadius)); + verify(mScreenDecorations, atLeastOnce()) + .setSize(rightRoundedCorner, new Point(testBottomRadius, testBottomRadius)); } @Test @@ -276,20 +282,24 @@ public class ScreenDecorationsTest extends SysuiTestCase { mScreenDecorations.mOverlays[BOUNDS_POSITION_LEFT].findViewById(R.id.left); View rightRoundedCorner = mScreenDecorations.mOverlays[BOUNDS_POSITION_LEFT].findViewById(R.id.right); - verify(mScreenDecorations, atLeastOnce()).setSize(leftRoundedCorner, testTopRadius); - verify(mScreenDecorations, atLeastOnce()).setSize(rightRoundedCorner, testBottomRadius); + verify(mScreenDecorations, atLeastOnce()) + .setSize(leftRoundedCorner, new Point(testTopRadius, testTopRadius)); + verify(mScreenDecorations, atLeastOnce()) + .setSize(rightRoundedCorner, new Point(testBottomRadius, testBottomRadius)); leftRoundedCorner = mScreenDecorations.mOverlays[BOUNDS_POSITION_RIGHT].findViewById(R.id.left); rightRoundedCorner = mScreenDecorations.mOverlays[BOUNDS_POSITION_RIGHT].findViewById(R.id.right); - verify(mScreenDecorations, atLeastOnce()).setSize(leftRoundedCorner, testTopRadius); - verify(mScreenDecorations, atLeastOnce()).setSize(rightRoundedCorner, testBottomRadius); + verify(mScreenDecorations, atLeastOnce()) + .setSize(leftRoundedCorner, new Point(testTopRadius, testTopRadius)); + verify(mScreenDecorations, atLeastOnce()) + .setSize(rightRoundedCorner, new Point(testBottomRadius, testBottomRadius)); } @Test public void testRoundingMultipleRadius_NoCutout() { final VectorDrawable d = (VectorDrawable) mContext.getDrawable(R.drawable.rounded); - final int multipleRadiusSize = Math.max(d.getIntrinsicWidth(), d.getIntrinsicHeight()); + final Point multipleRadiusSize = new Point(d.getIntrinsicWidth(), d.getIntrinsicHeight()); mContext.getOrCreateTestableResources().addOverride( com.android.internal.R.bool.config_fillMainBuiltInDisplayCutout, false); @@ -600,14 +610,15 @@ public class ScreenDecorationsTest extends SysuiTestCase { .addOverride(R.bool.config_roundedCornerMultipleRadius, false); mScreenDecorations.start(); - assertEquals(mScreenDecorations.mRoundedDefault, 20); + assertEquals(mScreenDecorations.mRoundedDefault, new Point(20, 20)); mContext.getOrCreateTestableResources().addOverride( com.android.internal.R.dimen.rounded_corner_radius, 5); mScreenDecorations.onConfigurationChanged(null); - assertEquals(mScreenDecorations.mRoundedDefault, 5); + assertEquals(mScreenDecorations.mRoundedDefault, new Point(5, 5)); } + @Test public void testBoundingRectsToRegion() throws Exception { Rect rect = new Rect(1, 2, 3, 4); diff --git a/packages/SystemUI/tests/src/com/android/systemui/SysuiTestCase.java b/packages/SystemUI/tests/src/com/android/systemui/SysuiTestCase.java index dd3a7858fd1f..b6cc2ee03f38 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/SysuiTestCase.java +++ b/packages/SystemUI/tests/src/com/android/systemui/SysuiTestCase.java @@ -140,6 +140,10 @@ public abstract class SysuiTestCase { return null; } + protected FakeBroadcastDispatcher getFakeBroadcastDispatcher() { + return mFakeBroadcastDispatcher; + } + public SysuiTestableContext getContext() { return mContext; } diff --git a/packages/SystemUI/tests/src/com/android/systemui/classifier/FalsingManagerProxyTest.java b/packages/SystemUI/tests/src/com/android/systemui/classifier/FalsingManagerProxyTest.java index ae7387996322..c3c9ecc23d59 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/classifier/FalsingManagerProxyTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/classifier/FalsingManagerProxyTest.java @@ -29,8 +29,8 @@ import androidx.test.filters.SmallTest; import com.android.internal.logging.testing.UiEventLoggerFake; import com.android.keyguard.KeyguardUpdateMonitor; -import com.android.systemui.SysuiTestCase; import com.android.systemui.classifier.brightline.BrightLineFalsingManager; +import com.android.systemui.classifier.brightline.FalsingDataProvider; import com.android.systemui.dock.DockManager; import com.android.systemui.dock.DockManagerFake; import com.android.systemui.dump.DumpManager; @@ -42,6 +42,8 @@ import com.android.systemui.util.DeviceConfigProxyFake; import com.android.systemui.util.concurrency.FakeExecutor; import com.android.systemui.util.sensors.ProximitySensor; import com.android.systemui.util.time.FakeSystemClock; +import com.android.systemui.utils.leaks.FakeBatteryController; +import com.android.systemui.utils.leaks.LeakCheckedTest; import org.junit.After; import org.junit.Before; @@ -52,7 +54,7 @@ import org.mockito.MockitoAnnotations; @SmallTest @RunWith(AndroidTestingRunner.class) -public class FalsingManagerProxyTest extends SysuiTestCase { +public class FalsingManagerProxyTest extends LeakCheckedTest { @Mock(stubOnly = true) PluginManager mPluginManager; @Mock(stubOnly = true) @@ -62,7 +64,7 @@ public class FalsingManagerProxyTest extends SysuiTestCase { @Mock DumpManager mDumpManager; private FalsingManagerProxy mProxy; private DeviceConfigProxy mDeviceConfig; - private DisplayMetrics mDisplayMetrics = new DisplayMetrics(); + private FalsingDataProvider mFalsingDataProvider; private FakeExecutor mExecutor = new FakeExecutor(new FakeSystemClock()); private FakeExecutor mUiBgExecutor = new FakeExecutor(new FakeSystemClock()); private DockManager mDockManager = new DockManagerFake(); @@ -75,6 +77,8 @@ public class FalsingManagerProxyTest extends SysuiTestCase { mDeviceConfig = new DeviceConfigProxyFake(); mDeviceConfig.setProperty(DeviceConfig.NAMESPACE_SYSTEMUI, BRIGHTLINE_FALSING_MANAGER_ENABLED, "false", false); + mFalsingDataProvider = new FalsingDataProvider( + new DisplayMetrics(), new FakeBatteryController(getLeakCheck())); } @After @@ -86,9 +90,9 @@ public class FalsingManagerProxyTest extends SysuiTestCase { @Test public void test_brightLineFalsingManagerDisabled() { - mProxy = new FalsingManagerProxy(getContext(), mPluginManager, mExecutor, mDisplayMetrics, + mProxy = new FalsingManagerProxy(getContext(), mPluginManager, mExecutor, mProximitySensor, mDeviceConfig, mDockManager, mKeyguardUpdateMonitor, - mDumpManager, mUiBgExecutor, mStatusBarStateController); + mDumpManager, mUiBgExecutor, mStatusBarStateController, mFalsingDataProvider); assertThat(mProxy.getInternalFalsingManager(), instanceOf(FalsingManagerImpl.class)); } @@ -97,17 +101,17 @@ public class FalsingManagerProxyTest extends SysuiTestCase { mDeviceConfig.setProperty(DeviceConfig.NAMESPACE_SYSTEMUI, BRIGHTLINE_FALSING_MANAGER_ENABLED, "true", false); mExecutor.runAllReady(); - mProxy = new FalsingManagerProxy(getContext(), mPluginManager, mExecutor, mDisplayMetrics, + mProxy = new FalsingManagerProxy(getContext(), mPluginManager, mExecutor, mProximitySensor, mDeviceConfig, mDockManager, mKeyguardUpdateMonitor, - mDumpManager, mUiBgExecutor, mStatusBarStateController); + mDumpManager, mUiBgExecutor, mStatusBarStateController, mFalsingDataProvider); assertThat(mProxy.getInternalFalsingManager(), instanceOf(BrightLineFalsingManager.class)); } @Test public void test_brightLineFalsingManagerToggled() throws InterruptedException { - mProxy = new FalsingManagerProxy(getContext(), mPluginManager, mExecutor, mDisplayMetrics, + mProxy = new FalsingManagerProxy(getContext(), mPluginManager, mExecutor, mProximitySensor, mDeviceConfig, mDockManager, mKeyguardUpdateMonitor, - mDumpManager, mUiBgExecutor, mStatusBarStateController); + mDumpManager, mUiBgExecutor, mStatusBarStateController, mFalsingDataProvider); assertThat(mProxy.getInternalFalsingManager(), instanceOf(FalsingManagerImpl.class)); mDeviceConfig.setProperty(DeviceConfig.NAMESPACE_SYSTEMUI, diff --git a/packages/SystemUI/tests/src/com/android/systemui/classifier/brightline/BrightLineFalsingManagerTest.java b/packages/SystemUI/tests/src/com/android/systemui/classifier/brightline/BrightLineFalsingManagerTest.java index b9cb499420ee..061664b4f6d4 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/classifier/brightline/BrightLineFalsingManagerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/classifier/brightline/BrightLineFalsingManagerTest.java @@ -17,6 +17,7 @@ package com.android.systemui.classifier.brightline; import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.never; import static org.mockito.Mockito.reset; import static org.mockito.Mockito.verify; @@ -27,7 +28,6 @@ import android.util.DisplayMetrics; import com.android.internal.logging.testing.UiEventLoggerFake; import com.android.keyguard.KeyguardUpdateMonitor; -import com.android.systemui.SysuiTestCase; import com.android.systemui.dock.DockManager; import com.android.systemui.dock.DockManagerFake; import com.android.systemui.statusbar.StatusBarState; @@ -36,6 +36,9 @@ import com.android.systemui.statusbar.SysuiStatusBarStateController; import com.android.systemui.util.DeviceConfigProxy; import com.android.systemui.util.DeviceConfigProxyFake; import com.android.systemui.util.sensors.ProximitySensor; +import com.android.systemui.util.sensors.ThresholdSensor; +import com.android.systemui.utils.leaks.FakeBatteryController; +import com.android.systemui.utils.leaks.LeakCheckedTest; import org.junit.Before; import org.junit.Test; @@ -46,7 +49,7 @@ import org.mockito.MockitoAnnotations; @SmallTest @RunWith(AndroidTestingRunner.class) @TestableLooper.RunWithLooper -public class BrightLineFalsingManagerTest extends SysuiTestCase { +public class BrightLineFalsingManagerTest extends LeakCheckedTest { @Mock @@ -54,23 +57,26 @@ public class BrightLineFalsingManagerTest extends SysuiTestCase { @Mock private ProximitySensor mProximitySensor; private SysuiStatusBarStateController mStatusBarStateController; + private FalsingDataProvider mFalsingDataProvider; + private FakeBatteryController mFakeBatteryController; private BrightLineFalsingManager mFalsingManager; @Before public void setup() { MockitoAnnotations.initMocks(this); + mFakeBatteryController = new FakeBatteryController(getLeakCheck()); DisplayMetrics dm = new DisplayMetrics(); dm.xdpi = 100; dm.ydpi = 100; dm.widthPixels = 100; dm.heightPixels = 100; - FalsingDataProvider falsingDataProvider = new FalsingDataProvider(dm); + mFalsingDataProvider = new FalsingDataProvider(dm, mFakeBatteryController); DeviceConfigProxy deviceConfigProxy = new DeviceConfigProxyFake(); DockManager dockManager = new DockManagerFake(); mStatusBarStateController = new StatusBarStateControllerImpl(new UiEventLoggerFake()); mStatusBarStateController.setState(StatusBarState.KEYGUARD); - mFalsingManager = new BrightLineFalsingManager(falsingDataProvider, + mFalsingManager = new BrightLineFalsingManager(mFalsingDataProvider, mKeyguardUpdateMonitor, mProximitySensor, deviceConfigProxy, dockManager, mStatusBarStateController); } @@ -78,7 +84,14 @@ public class BrightLineFalsingManagerTest extends SysuiTestCase { @Test public void testRegisterSensor() { mFalsingManager.onScreenTurningOn(); - verify(mProximitySensor).register(any(ProximitySensor.ProximitySensorListener.class)); + verify(mProximitySensor).register(any(ThresholdSensor.Listener.class)); + } + + @Test + public void testNoProximityWhenWirelessCharging() { + mFakeBatteryController.setWirelessCharging(true); + mFalsingManager.onScreenTurningOn(); + verify(mProximitySensor, never()).register(any(ThresholdSensor.Listener.class)); } @Test @@ -86,7 +99,7 @@ public class BrightLineFalsingManagerTest extends SysuiTestCase { mFalsingManager.onScreenTurningOn(); reset(mProximitySensor); mFalsingManager.onScreenOff(); - verify(mProximitySensor).unregister(any(ProximitySensor.ProximitySensorListener.class)); + verify(mProximitySensor).unregister(any(ThresholdSensor.Listener.class)); } @Test @@ -94,9 +107,9 @@ public class BrightLineFalsingManagerTest extends SysuiTestCase { mFalsingManager.onScreenTurningOn(); reset(mProximitySensor); mFalsingManager.setQsExpanded(true); - verify(mProximitySensor).unregister(any(ProximitySensor.ProximitySensorListener.class)); + verify(mProximitySensor).unregister(any(ThresholdSensor.Listener.class)); mFalsingManager.setQsExpanded(false); - verify(mProximitySensor).register(any(ProximitySensor.ProximitySensorListener.class)); + verify(mProximitySensor).register(any(ThresholdSensor.Listener.class)); } @Test @@ -104,9 +117,9 @@ public class BrightLineFalsingManagerTest extends SysuiTestCase { mFalsingManager.onScreenTurningOn(); reset(mProximitySensor); mFalsingManager.onBouncerShown(); - verify(mProximitySensor).unregister(any(ProximitySensor.ProximitySensorListener.class)); + verify(mProximitySensor).unregister(any(ThresholdSensor.Listener.class)); mFalsingManager.onBouncerHidden(); - verify(mProximitySensor).register(any(ProximitySensor.ProximitySensorListener.class)); + verify(mProximitySensor).register(any(ThresholdSensor.Listener.class)); } @Test @@ -114,6 +127,6 @@ public class BrightLineFalsingManagerTest extends SysuiTestCase { mFalsingManager.onScreenTurningOn(); reset(mProximitySensor); mStatusBarStateController.setState(StatusBarState.SHADE); - verify(mProximitySensor).unregister(any(ProximitySensor.ProximitySensorListener.class)); + verify(mProximitySensor).unregister(any(ThresholdSensor.Listener.class)); } } diff --git a/packages/SystemUI/tests/src/com/android/systemui/classifier/brightline/ClassifierTest.java b/packages/SystemUI/tests/src/com/android/systemui/classifier/brightline/ClassifierTest.java index 3ba5d1ac79ea..a4d198a14541 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/classifier/brightline/ClassifierTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/classifier/brightline/ClassifierTest.java @@ -21,29 +21,30 @@ import static com.android.systemui.classifier.Classifier.UNLOCK; import android.util.DisplayMetrics; import android.view.MotionEvent; -import com.android.systemui.SysuiTestCase; +import com.android.systemui.utils.leaks.FakeBatteryController; +import com.android.systemui.utils.leaks.LeakCheckedTest; import org.junit.After; -import org.junit.Before; import java.util.ArrayList; import java.util.List; -public class ClassifierTest extends SysuiTestCase { +public class ClassifierTest extends LeakCheckedTest { private FalsingDataProvider mDataProvider; private List<MotionEvent> mMotionEvents = new ArrayList<>(); private float mOffsetX = 0; private float mOffsetY = 0; + private FakeBatteryController mFakeBatteryController; - @Before public void setup() { DisplayMetrics displayMetrics = new DisplayMetrics(); displayMetrics.xdpi = 100; displayMetrics.ydpi = 100; displayMetrics.widthPixels = 1000; displayMetrics.heightPixels = 1000; - mDataProvider = new FalsingDataProvider(displayMetrics); + mFakeBatteryController = new FakeBatteryController(getLeakCheck()); + mDataProvider = new FalsingDataProvider(displayMetrics, mFakeBatteryController); mDataProvider.setInteractionType(UNLOCK); } @@ -56,6 +57,10 @@ public class ClassifierTest extends SysuiTestCase { return mDataProvider; } + FakeBatteryController getFakeBatteryController() { + return mFakeBatteryController; + } + void setOffsetX(float offsetX) { mOffsetX = offsetX; } diff --git a/packages/SystemUI/tests/src/com/android/systemui/classifier/brightline/FalsingDataProviderTest.java b/packages/SystemUI/tests/src/com/android/systemui/classifier/brightline/FalsingDataProviderTest.java index 448c2f7b33ad..f13bc7379436 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/classifier/brightline/FalsingDataProviderTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/classifier/brightline/FalsingDataProviderTest.java @@ -26,6 +26,8 @@ import android.view.MotionEvent; import androidx.test.filters.SmallTest; +import com.android.systemui.utils.leaks.FakeBatteryController; + import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -37,17 +39,19 @@ import java.util.List; @RunWith(AndroidTestingRunner.class) public class FalsingDataProviderTest extends ClassifierTest { + private FakeBatteryController mFakeBatteryController; private FalsingDataProvider mDataProvider; @Before public void setup() { super.setup(); + mFakeBatteryController = new FakeBatteryController(getLeakCheck()); DisplayMetrics displayMetrics = new DisplayMetrics(); displayMetrics.xdpi = 100; displayMetrics.ydpi = 100; displayMetrics.widthPixels = 1000; displayMetrics.heightPixels = 1000; - mDataProvider = new FalsingDataProvider(displayMetrics); + mDataProvider = new FalsingDataProvider(displayMetrics, mFakeBatteryController); } @After @@ -246,4 +250,12 @@ public class FalsingDataProviderTest extends ClassifierTest { assertThat(mDataProvider.isUp(), is(false)); mDataProvider.onSessionEnd(); } + + @Test + public void test_isWirelessCharging() { + assertThat(mDataProvider.isWirelessCharging(), is(false)); + + mFakeBatteryController.setWirelessCharging(true); + assertThat(mDataProvider.isWirelessCharging(), is(true)); + } } diff --git a/packages/SystemUI/tests/src/com/android/systemui/classifier/brightline/ProximityClassifierTest.java b/packages/SystemUI/tests/src/com/android/systemui/classifier/brightline/ProximityClassifierTest.java index 5b32a39403cd..3cebf0d6af57 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/classifier/brightline/ProximityClassifierTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/classifier/brightline/ProximityClassifierTest.java @@ -136,7 +136,8 @@ public class ProximityClassifierTest extends ClassifierTest { motionEvent.recycle(); } - private ProximitySensor.ProximityEvent createSensorEvent(boolean covered, long timestampMs) { - return new ProximitySensor.ProximityEvent(covered, timestampMs * NS_PER_MS); + private ProximitySensor.ThresholdSensorEvent createSensorEvent( + boolean covered, long timestampMs) { + return new ProximitySensor.ThresholdSensorEvent(covered, timestampMs * NS_PER_MS); } } diff --git a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeScreenBrightnessTest.java b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeScreenBrightnessTest.java index f535351f0f13..3ef60274cd76 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeScreenBrightnessTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeScreenBrightnessTest.java @@ -18,7 +18,6 @@ package com.android.systemui.doze; import static com.android.systemui.doze.DozeMachine.State.DOZE; import static com.android.systemui.doze.DozeMachine.State.DOZE_AOD; -import static com.android.systemui.doze.DozeMachine.State.DOZE_AOD_DOCKED; import static com.android.systemui.doze.DozeMachine.State.DOZE_AOD_PAUSED; import static com.android.systemui.doze.DozeMachine.State.DOZE_AOD_PAUSING; import static com.android.systemui.doze.DozeMachine.State.DOZE_PULSE_DONE; @@ -41,6 +40,7 @@ import android.content.Intent; import android.os.PowerManager; import android.os.UserHandle; import android.provider.Settings; +import android.view.Display; import androidx.test.filters.SmallTest; import androidx.test.runner.AndroidJUnit4; @@ -89,6 +89,8 @@ public class DozeScreenBrightnessTest extends SysuiTestCase { mSensor.getSensor(), mBroadcastDispatcher, mDozeHost, null /* handler */, DEFAULT_BRIGHTNESS, SENSOR_TO_BRIGHTNESS, SENSOR_TO_OPACITY, true /* debuggable */); + + mScreen.onScreenState(Display.STATE_ON); } @Test @@ -100,9 +102,10 @@ public class DozeScreenBrightnessTest extends SysuiTestCase { } @Test - public void testAod_usesLightSensor() throws Exception { + public void testAod_usesLightSensor() { mScreen.transitionTo(UNINITIALIZED, INITIALIZED); mScreen.transitionTo(INITIALIZED, DOZE_AOD); + mScreen.onScreenState(Display.STATE_DOZE); mSensor.sendSensorEvent(3); @@ -134,24 +137,10 @@ public class DozeScreenBrightnessTest extends SysuiTestCase { } @Test - public void testPausingAod_doesntPauseLightSensor() throws Exception { - mScreen.transitionTo(UNINITIALIZED, INITIALIZED); - mScreen.transitionTo(INITIALIZED, DOZE_AOD); - - mSensor.sendSensorEvent(1); - - mScreen.transitionTo(DOZE_AOD, DOZE_AOD_PAUSING); - mScreen.transitionTo(DOZE_AOD_PAUSING, DOZE_AOD_PAUSED); - - mSensor.sendSensorEvent(2); - - assertEquals(2, mServiceFake.screenBrightness); - } - - @Test public void testPausingAod_doesNotResetBrightness() throws Exception { mScreen.transitionTo(UNINITIALIZED, INITIALIZED); mScreen.transitionTo(INITIALIZED, DOZE_AOD); + mScreen.onScreenState(Display.STATE_DOZE); mSensor.sendSensorEvent(1); @@ -162,17 +151,6 @@ public class DozeScreenBrightnessTest extends SysuiTestCase { } @Test - public void testPulsing_usesLightSensor() throws Exception { - mScreen.transitionTo(UNINITIALIZED, INITIALIZED); - mScreen.transitionTo(INITIALIZED, DOZE); - mScreen.transitionTo(DOZE, DOZE_REQUEST_PULSE); - - mSensor.sendSensorEvent(1); - - assertEquals(1, mServiceFake.screenBrightness); - } - - @Test public void testPulsing_withoutLightSensor_setsAoDDimmingScrimTransparent() throws Exception { mScreen = new DozeScreenBrightness(mContext, mServiceFake, mSensorManager, null /* sensor */, mBroadcastDispatcher, mDozeHost, null /* handler */, @@ -188,16 +166,6 @@ public class DozeScreenBrightnessTest extends SysuiTestCase { } @Test - public void testDockedAod_usesLightSensor() { - mScreen.transitionTo(UNINITIALIZED, INITIALIZED); - mScreen.transitionTo(INITIALIZED, DOZE_AOD_DOCKED); - - mSensor.sendSensorEvent(3); - - assertEquals(3, mServiceFake.screenBrightness); - } - - @Test public void testDozingAfterPulsing_pausesLightSensor() throws Exception { mScreen.transitionTo(UNINITIALIZED, INITIALIZED); mScreen.transitionTo(INITIALIZED, DOZE); @@ -205,6 +173,7 @@ public class DozeScreenBrightnessTest extends SysuiTestCase { mScreen.transitionTo(DOZE_REQUEST_PULSE, DOZE_PULSING); mScreen.transitionTo(DOZE_PULSING, DOZE_PULSE_DONE); mScreen.transitionTo(DOZE_PULSE_DONE, DOZE); + mScreen.onScreenState(Display.STATE_DOZE); mSensor.sendSensorEvent(1); @@ -239,6 +208,7 @@ public class DozeScreenBrightnessTest extends SysuiTestCase { public void testNonPositiveBrightness_keepsPreviousBrightnessAndScrim() throws Exception { mScreen.transitionTo(UNINITIALIZED, INITIALIZED); mScreen.transitionTo(INITIALIZED, DOZE_AOD); + mScreen.onScreenState(Display.STATE_DOZE); mSensor.sendSensorEvent(1); mSensor.sendSensorEvent(0); @@ -248,9 +218,10 @@ public class DozeScreenBrightnessTest extends SysuiTestCase { } @Test - public void pausingAod_unblanksAfterSensor() throws Exception { + public void pausingAod_unblanksAfterSensor() { mScreen.transitionTo(UNINITIALIZED, INITIALIZED); mScreen.transitionTo(INITIALIZED, DOZE_AOD); + mScreen.onScreenState(Display.STATE_DOZE); mSensor.sendSensorEvent(2); @@ -261,6 +232,7 @@ public class DozeScreenBrightnessTest extends SysuiTestCase { reset(mDozeHost); mScreen.transitionTo(DOZE_AOD_PAUSED, DOZE_AOD); + mScreen.onScreenState(Display.STATE_DOZE); mSensor.sendSensorEvent(2); verify(mDozeHost).setAodDimmingScrim(eq(0f)); } @@ -269,6 +241,7 @@ public class DozeScreenBrightnessTest extends SysuiTestCase { public void pausingAod_unblanksIfSensorWasAlwaysReady() throws Exception { mScreen.transitionTo(UNINITIALIZED, INITIALIZED); mScreen.transitionTo(INITIALIZED, DOZE_AOD); + mScreen.onScreenState(Display.STATE_DOZE); mSensor.sendSensorEvent(2); mScreen.transitionTo(DOZE_AOD, DOZE_AOD_PAUSING); diff --git a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeSensorsTest.java b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeSensorsTest.java index a5675360a57e..ebd2c3afe646 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeSensorsTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeSensorsTest.java @@ -23,7 +23,6 @@ import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyFloat; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.Mockito.clearInvocations; import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; @@ -144,21 +143,6 @@ public class DozeSensorsTest extends SysuiTestCase { } @Test - public void testSetPaused_doesntPause_sensors() { - verify(mSensorManager, never()).registerListener(any(), any(Sensor.class), anyInt()); - mDozeSensors.setListening(true); - verify(mTriggerSensor).setListening(eq(true)); - - clearInvocations(mTriggerSensor); - mDozeSensors.setPaused(true); - verify(mTriggerSensor).setListening(eq(true)); - - clearInvocations(mTriggerSensor); - mDozeSensors.setListening(false); - verify(mTriggerSensor).setListening(eq(false)); - } - - @Test public void testDestroy() { mDozeSensors.destroy(); diff --git a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeTriggersTest.java b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeTriggersTest.java index 1cdc02fdd01a..655f933d28fe 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeTriggersTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeTriggersTest.java @@ -34,6 +34,7 @@ import android.os.Handler; import android.testing.AndroidTestingRunner; import android.testing.TestableLooper; import android.testing.TestableLooper.RunWithLooper; +import android.view.Display; import androidx.test.filters.SmallTest; @@ -41,10 +42,13 @@ import com.android.systemui.SysuiTestCase; import com.android.systemui.broadcast.BroadcastDispatcher; import com.android.systemui.dock.DockManager; import com.android.systemui.statusbar.phone.DozeParameters; +import com.android.systemui.util.concurrency.FakeExecutor; import com.android.systemui.util.sensors.AsyncSensorManager; import com.android.systemui.util.sensors.FakeProximitySensor; import com.android.systemui.util.sensors.FakeSensorManager; +import com.android.systemui.util.sensors.FakeThresholdSensor; import com.android.systemui.util.sensors.ProximitySensor; +import com.android.systemui.util.time.FakeSystemClock; import com.android.systemui.util.wakelock.WakeLock; import com.android.systemui.util.wakelock.WakeLockFake; @@ -72,10 +76,12 @@ public class DozeTriggersTest extends SysuiTestCase { private DockManager mDockManager; @Mock private ProximitySensor.ProximityCheck mProximityCheck; + private DozeTriggers mTriggers; private FakeSensorManager mSensors; private Sensor mTapSensor; private FakeProximitySensor mProximitySensor; + private FakeExecutor mExecutor = new FakeExecutor(new FakeSystemClock()); @Before public void setUp() throws Exception { @@ -87,7 +93,10 @@ public class DozeTriggersTest extends SysuiTestCase { WakeLock wakeLock = new WakeLockFake(); AsyncSensorManager asyncSensorManager = new AsyncSensorManager(mSensors, null, new Handler()); - mProximitySensor = new FakeProximitySensor(getContext().getResources(), asyncSensorManager); + + FakeThresholdSensor thresholdSensor = new FakeThresholdSensor(); + thresholdSensor.setLoaded(true); + mProximitySensor = new FakeProximitySensor(thresholdSensor, null, mExecutor); mTriggers = new DozeTriggers(mContext, mMachine, mHost, mAlarmManager, config, parameters, asyncSensorManager, wakeLock, true, mDockManager, mProximitySensor, @@ -105,16 +114,17 @@ public class DozeTriggersTest extends SysuiTestCase { mTriggers.transitionTo(DozeMachine.State.INITIALIZED, DozeMachine.State.DOZE); clearInvocations(mMachine); - mProximitySensor.setLastEvent(new ProximitySensor.ProximityEvent(true, 1)); + mProximitySensor.setLastEvent(new ProximitySensor.ThresholdSensorEvent(true, 1)); captor.getValue().onNotificationAlerted(null /* pulseSuppressedListener */); mProximitySensor.alertListeners(); verify(mMachine, never()).requestState(any()); verify(mMachine, never()).requestPulse(anyInt()); - mProximitySensor.setLastEvent(new ProximitySensor.ProximityEvent(false, 2)); - captor.getValue().onNotificationAlerted(null /* pulseSuppressedListener */); + mProximitySensor.setLastEvent(new ProximitySensor.ThresholdSensorEvent(false, 2)); mProximitySensor.alertListeners(); + waitForSensorManager(); + captor.getValue().onNotificationAlerted(null /* pulseSuppressedListener */); verify(mMachine).requestPulse(anyInt()); } @@ -124,6 +134,7 @@ public class DozeTriggersTest extends SysuiTestCase { when(mMachine.getState()).thenReturn(DozeMachine.State.DOZE); mTriggers.transitionTo(DozeMachine.State.INITIALIZED, DozeMachine.State.DOZE); + mTriggers.onScreenState(Display.STATE_OFF); waitForSensorManager(); verify(mSensors).requestTriggerSensor(any(), eq(mTapSensor)); @@ -132,6 +143,7 @@ public class DozeTriggersTest extends SysuiTestCase { DozeMachine.State.DOZE_REQUEST_PULSE); mTriggers.transitionTo(DozeMachine.State.DOZE_REQUEST_PULSE, DozeMachine.State.DOZE_PULSING); + mTriggers.onScreenState(Display.STATE_DOZE); waitForSensorManager(); verify(mSensors).cancelTriggerSensor(any(), eq(mTapSensor)); @@ -144,10 +156,12 @@ public class DozeTriggersTest extends SysuiTestCase { @Test public void transitionToDockedAod_disablesTouchSensors() { mTriggers.transitionTo(DozeMachine.State.INITIALIZED, DozeMachine.State.DOZE); + mTriggers.onScreenState(Display.STATE_OFF); waitForSensorManager(); verify(mSensors).requestTriggerSensor(any(), eq(mTapSensor)); mTriggers.transitionTo(DozeMachine.State.DOZE, DozeMachine.State.DOZE_AOD_DOCKED); + mTriggers.onScreenState(Display.STATE_DOZE); waitForSensorManager(); verify(mSensors).cancelTriggerSensor(any(), eq(mTapSensor)); diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/AutoAddTrackerTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/AutoAddTrackerTest.java index 61f5a7bdd3b7..de7abf866f6a 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/qs/AutoAddTrackerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/qs/AutoAddTrackerTest.java @@ -55,6 +55,7 @@ public class AutoAddTrackerTest extends SysuiTestCase { Prefs.putBoolean(mContext, Key.QS_DATA_SAVER_ADDED, true); Prefs.putBoolean(mContext, Key.QS_WORK_ADDED, true); mAutoTracker = new AutoAddTracker(mContext, USER); + mAutoTracker.initialize(); assertTrue(mAutoTracker.isAdded(SAVER)); assertTrue(mAutoTracker.isAdded(WORK)); @@ -72,6 +73,7 @@ public class AutoAddTrackerTest extends SysuiTestCase { @Test public void testChangeFromBackup() { mAutoTracker = new AutoAddTracker(mContext, USER); + mAutoTracker.initialize(); assertFalse(mAutoTracker.isAdded(SAVER)); @@ -86,6 +88,7 @@ public class AutoAddTrackerTest extends SysuiTestCase { @Test public void testSetAdded() { mAutoTracker = new AutoAddTracker(mContext, USER); + mAutoTracker.initialize(); assertFalse(mAutoTracker.isAdded(SAVER)); mAutoTracker.setTileAdded(SAVER); @@ -98,6 +101,7 @@ public class AutoAddTrackerTest extends SysuiTestCase { @Test public void testPersist() { mAutoTracker = new AutoAddTracker(mContext, USER); + mAutoTracker.initialize(); assertFalse(mAutoTracker.isAdded(SAVER)); mAutoTracker.setTileAdded(SAVER); @@ -113,6 +117,7 @@ public class AutoAddTrackerTest extends SysuiTestCase { @Test public void testIndependentUsers() { mAutoTracker = new AutoAddTracker(mContext, USER); + mAutoTracker.initialize(); mAutoTracker.setTileAdded(SAVER); mAutoTracker = new AutoAddTracker(mContext, USER + 1); @@ -122,6 +127,7 @@ public class AutoAddTrackerTest extends SysuiTestCase { @Test public void testChangeUser() { mAutoTracker = new AutoAddTracker(mContext, USER); + mAutoTracker.initialize(); mAutoTracker.setTileAdded(SAVER); mAutoTracker = new AutoAddTracker(mContext, USER + 1); diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/NotificationEntryManagerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/NotificationEntryManagerTest.java index a5a5f81bdffe..90423c18216a 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/NotificationEntryManagerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/NotificationEntryManagerTest.java @@ -61,6 +61,7 @@ import com.android.internal.statusbar.NotificationVisibility; import com.android.systemui.Dependency; import com.android.systemui.R; import com.android.systemui.SysuiTestCase; +import com.android.systemui.bubbles.BubbleController; import com.android.systemui.statusbar.FeatureFlags; import com.android.systemui.statusbar.NotificationLifetimeExtender; import com.android.systemui.statusbar.NotificationMediaManager; @@ -98,6 +99,8 @@ import java.util.Collection; import java.util.List; import java.util.Set; +import dagger.Lazy; + /** * Unit tests for {@link NotificationEntryManager}. This test will not test any interactions with * inflation. Instead, for functional inflation tests, see @@ -126,6 +129,7 @@ public class NotificationEntryManagerTest extends SysuiTestCase { @Mock private LeakDetector mLeakDetector; @Mock private NotificationMediaManager mNotificationMediaManager; @Mock private NotificationRowBinder mNotificationRowBinder; + @Mock private Lazy<BubbleController> mBubbleControllerLazy; private int mId; private NotificationEntry mEntry; @@ -200,6 +204,7 @@ public class NotificationEntryManagerTest extends SysuiTestCase { () -> mNotificationRowBinder, () -> mRemoteInputManager, mLeakDetector, + mBubbleControllerLazy, mock(ForegroundServiceDismissalFeatureController.class) ); mEntryManager.setUpWithPresenter(mPresenter); diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationEntryManagerInflationTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationEntryManagerInflationTest.java index bedbec6aadce..787b7b7e7b26 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationEntryManagerInflationTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationEntryManagerInflationTest.java @@ -43,6 +43,7 @@ import androidx.test.filters.SmallTest; import com.android.internal.util.NotificationMessagingUtil; import com.android.systemui.R; import com.android.systemui.SysuiTestCase; +import com.android.systemui.bubbles.BubbleController; import com.android.systemui.plugins.FalsingManager; import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.shared.plugins.PluginManager; @@ -95,6 +96,8 @@ import org.mockito.stubbing.Answer; import java.util.concurrent.CountDownLatch; +import dagger.Lazy; + /** * Functional tests for notification inflation from {@link NotificationEntryManager}. */ @@ -136,6 +139,8 @@ public class NotificationEntryManagerInflationTest extends SysuiTestCase { @Mock private NotificationRowComponent.Builder mNotificationRowComponentBuilder; @Mock private PeopleNotificationIdentifier mPeopleNotificationIdentifier; + @Mock private Lazy<BubbleController> mBubbleControllerLazy; + private StatusBarNotification mSbn; private NotificationListenerService.RankingMap mRankingMap; private NotificationEntryManager mEntryManager; @@ -183,6 +188,7 @@ public class NotificationEntryManagerInflationTest extends SysuiTestCase { () -> mRowBinder, () -> mRemoteInputManager, mLeakDetector, + mBubbleControllerLazy, mock(ForegroundServiceDismissalFeatureController.class) ); diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutTest.java index b286f9486e13..2ae4caeca963 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutTest.java @@ -52,6 +52,7 @@ import com.android.internal.logging.testing.UiEventLoggerFake; import com.android.systemui.ExpandHelper; import com.android.systemui.R; import com.android.systemui.SysuiTestCase; +import com.android.systemui.bubbles.BubbleController; import com.android.systemui.classifier.FalsingManagerFake; import com.android.systemui.media.KeyguardMediaController; import com.android.systemui.plugins.statusbar.NotificationMenuRowPlugin; @@ -109,6 +110,8 @@ import org.mockito.junit.MockitoRule; import java.util.ArrayList; import java.util.List; +import dagger.Lazy; + /** * Tests for {@link NotificationStackScrollLayout}. */ @@ -140,6 +143,7 @@ public class NotificationStackScrollLayoutTest extends SysuiTestCase { @Mock private NotificationSection mNotificationSection; @Mock private NotificationLockscreenUserManager mLockscreenUserManager; @Mock private FeatureFlags mFeatureFlags; + @Mock private Lazy<BubbleController> mBubbleControllerLazy; private UserChangedListener mUserChangedListener; private NotificationEntryManager mEntryManager; private int mOriginalInterruptionModelSetting; @@ -190,6 +194,7 @@ public class NotificationStackScrollLayoutTest extends SysuiTestCase { () -> mock(NotificationRowBinder.class), () -> mRemoteInputManager, mock(LeakDetector.class), + mBubbleControllerLazy, mock(ForegroundServiceDismissalFeatureController.class) ); mEntryManager.setUpWithPresenter(mock(NotificationPresenter.class)); diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/AutoTileManagerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/AutoTileManagerTest.java index 0a959d11d7db..3ebb77a60e15 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/AutoTileManagerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/AutoTileManagerTest.java @@ -18,7 +18,9 @@ package com.android.systemui.statusbar.phone; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.ArgumentMatchers.anyInt; @@ -27,6 +29,7 @@ import static org.mockito.ArgumentMatchers.isNull; import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.inOrder; +import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; @@ -54,7 +57,6 @@ import com.android.systemui.SysuiTestCase; import com.android.systemui.qs.AutoAddTracker; import com.android.systemui.qs.QSTileHost; import com.android.systemui.qs.SecureSetting; -import com.android.systemui.statusbar.phone.AutoTileManagerTest.MyContextWrapper; import com.android.systemui.statusbar.policy.CastController; import com.android.systemui.statusbar.policy.CastController.CastDevice; import com.android.systemui.statusbar.policy.DataSaverController; @@ -110,13 +112,15 @@ public class AutoTileManagerTest extends SysuiTestCase { TEST_SETTING_COMPONENT + SEPARATOR + TEST_CUSTOM_SPEC } ); + mContext.getOrCreateTestableResources().addOverride( + com.android.internal.R.bool.config_nightDisplayAvailable, true); when(mAutoAddTrackerBuilder.build()).thenReturn(mAutoAddTracker); when(mQsTileHost.getUserContext()).thenReturn(mUserContext); when(mUserContext.getUser()).thenReturn(UserHandle.of(USER)); - mAutoTileManager = createAutoTileManager(new - MyContextWrapper(mContext)); + mAutoTileManager = createAutoTileManager(new MyContextWrapper(mContext)); + mAutoTileManager.init(); } @After @@ -124,17 +128,66 @@ public class AutoTileManagerTest extends SysuiTestCase { mAutoTileManager.destroy(); } - private AutoTileManager createAutoTileManager(Context context) { - return new AutoTileManager(context, mAutoAddTrackerBuilder, mQsTileHost, + private AutoTileManager createAutoTileManager( + Context context, + AutoAddTracker.Builder autoAddTrackerBuilder, + HotspotController hotspotController, + DataSaverController dataSaverController, + ManagedProfileController managedProfileController, + NightDisplayListener nightDisplayListener, + CastController castController) { + return new AutoTileManager(context, autoAddTrackerBuilder, mQsTileHost, Handler.createAsync(TestableLooper.get(this).getLooper()), - mHotspotController, - mDataSaverController, - mManagedProfileController, - mNightDisplayListener, + hotspotController, + dataSaverController, + managedProfileController, + nightDisplayListener, + castController); + } + + private AutoTileManager createAutoTileManager(Context context) { + return createAutoTileManager(context, mAutoAddTrackerBuilder, mHotspotController, + mDataSaverController, mManagedProfileController, mNightDisplayListener, mCastController); } @Test + public void testCreatedAutoTileManagerIsNotInitialized() { + AutoAddTracker.Builder builder = mock(AutoAddTracker.Builder.class, Answers.RETURNS_SELF); + AutoAddTracker tracker = mock(AutoAddTracker.class); + when(builder.build()).thenReturn(tracker); + HotspotController hC = mock(HotspotController.class); + DataSaverController dSC = mock(DataSaverController.class); + ManagedProfileController mPC = mock(ManagedProfileController.class); + NightDisplayListener nDS = mock(NightDisplayListener.class); + CastController cC = mock(CastController.class); + + AutoTileManager manager = + createAutoTileManager(mock(Context.class), builder, hC, dSC, mPC, nDS, cC); + + verify(tracker, never()).initialize(); + verify(hC, never()).addCallback(any()); + verify(dSC, never()).addCallback(any()); + verify(mPC, never()).addCallback(any()); + verify(nDS, never()).setCallback(any()); + verify(cC, never()).addCallback(any()); + assertNull(manager.getSecureSettingForKey(TEST_SETTING)); + assertNull(manager.getSecureSettingForKey(TEST_SETTING_COMPONENT)); + } + + @Test + public void testChangeUserWhenNotInitializedThrows() { + AutoTileManager manager = createAutoTileManager(mock(Context.class)); + + try { + manager.changeUser(UserHandle.of(USER + 1)); + fail(); + } catch (Exception e) { + // This should throw and take this path + } + } + + @Test public void testChangeUserCallbacksStoppedAndStarted() throws Exception { TestableLooper.get(this).runWithLooper(() -> mAutoTileManager.changeUser(UserHandle.of(USER + 1)) diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/BiometricsUnlockControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/BiometricsUnlockControllerTest.java index a927c8011b8f..64907eef2dd0 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/BiometricsUnlockControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/BiometricsUnlockControllerTest.java @@ -136,6 +136,8 @@ public class BiometricsUnlockControllerTest extends SysuiTestCase { anyFloat()); assertThat(mBiometricUnlockController.getMode()) .isEqualTo(BiometricUnlockController.MODE_SHOW_BOUNCER); + assertThat(mBiometricUnlockController.getBiometricType()) + .isEqualTo(BiometricSourceType.FINGERPRINT); } @Test @@ -268,6 +270,8 @@ public class BiometricsUnlockControllerTest extends SysuiTestCase { verify(mStatusBarKeyguardViewManager).notifyKeyguardAuthenticated(eq(false)); assertThat(mBiometricUnlockController.getMode()) .isEqualTo(BiometricUnlockController.MODE_DISMISS_BOUNCER); + assertThat(mBiometricUnlockController.getBiometricType()) + .isEqualTo(BiometricSourceType.FACE); } @Test diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/LightsOutNotifControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/LightsOutNotifControllerTest.java index dbb451277535..9d81a90e7af1 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/LightsOutNotifControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/LightsOutNotifControllerTest.java @@ -130,7 +130,7 @@ public class LightsOutNotifControllerTest extends SysuiTestCase { @Test public void testLightsOut_withNotifs_onSystemBarAppearanceChanged() { // GIVEN active visible notifications - when(mEntryManager.hasActiveNotifications()).thenReturn(true); + when(mEntryManager.hasVisibleNotifications()).thenReturn(true); // WHEN lights out mCallbacks.onSystemBarAppearanceChanged( @@ -147,7 +147,7 @@ public class LightsOutNotifControllerTest extends SysuiTestCase { @Test public void testLightsOut_withoutNotifs_onSystemBarAppearanceChanged() { // GIVEN no active visible notifications - when(mEntryManager.hasActiveNotifications()).thenReturn(false); + when(mEntryManager.hasVisibleNotifications()).thenReturn(false); // WHEN lights out mCallbacks.onSystemBarAppearanceChanged( @@ -164,7 +164,7 @@ public class LightsOutNotifControllerTest extends SysuiTestCase { @Test public void testLightsOn_afterLightsOut_onSystemBarAppearanceChanged() { // GIVEN active visible notifications - when(mEntryManager.hasActiveNotifications()).thenReturn(true); + when(mEntryManager.hasVisibleNotifications()).thenReturn(true); // WHEN lights on mCallbacks.onSystemBarAppearanceChanged( @@ -181,13 +181,13 @@ public class LightsOutNotifControllerTest extends SysuiTestCase { @Test public void testEntryAdded() { // GIVEN no visible notifications and lights out - when(mEntryManager.hasActiveNotifications()).thenReturn(false); + when(mEntryManager.hasVisibleNotifications()).thenReturn(false); mLightsOutNotifController.mAppearance = LIGHTS_OUT; mLightsOutNotifController.updateLightsOutView(); assertIsShowingDot(false); // WHEN an active notification is added - when(mEntryManager.hasActiveNotifications()).thenReturn(true); + when(mEntryManager.hasVisibleNotifications()).thenReturn(true); assertTrue(mLightsOutNotifController.shouldShowDot()); mEntryListener.onNotificationAdded(mock(NotificationEntry.class)); @@ -198,13 +198,13 @@ public class LightsOutNotifControllerTest extends SysuiTestCase { @Test public void testEntryRemoved() { // GIVEN a visible notification and lights out - when(mEntryManager.hasActiveNotifications()).thenReturn(true); + when(mEntryManager.hasVisibleNotifications()).thenReturn(true); mLightsOutNotifController.mAppearance = LIGHTS_OUT; mLightsOutNotifController.updateLightsOutView(); assertIsShowingDot(true); // WHEN all active notifications are removed - when(mEntryManager.hasActiveNotifications()).thenReturn(false); + when(mEntryManager.hasVisibleNotifications()).thenReturn(false); assertFalse(mLightsOutNotifController.shouldShowDot()); mEntryListener.onEntryRemoved( mock(NotificationEntry.class), null, false, REASON_CANCEL_ALL); @@ -216,13 +216,13 @@ public class LightsOutNotifControllerTest extends SysuiTestCase { @Test public void testEntryUpdated() { // GIVEN no visible notifications and lights out - when(mEntryManager.hasActiveNotifications()).thenReturn(false); + when(mEntryManager.hasVisibleNotifications()).thenReturn(false); mLightsOutNotifController.mAppearance = LIGHTS_OUT; mLightsOutNotifController.updateLightsOutView(); assertIsShowingDot(false); // WHEN an active notification is added - when(mEntryManager.hasActiveNotifications()).thenReturn(true); + when(mEntryManager.hasVisibleNotifications()).thenReturn(true); assertTrue(mLightsOutNotifController.shouldShowDot()); mEntryListener.onPostEntryUpdated(mock(NotificationEntry.class)); diff --git a/packages/SystemUI/tests/src/com/android/systemui/util/sensors/FakeProximitySensor.java b/packages/SystemUI/tests/src/com/android/systemui/util/sensors/FakeProximitySensor.java index bd697fe394b5..9bb4c4b08481 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/util/sensors/FakeProximitySensor.java +++ b/packages/SystemUI/tests/src/com/android/systemui/util/sensors/FakeProximitySensor.java @@ -16,14 +16,16 @@ package com.android.systemui.util.sensors; -import android.content.res.Resources; +import com.android.systemui.util.concurrency.DelayableExecutor; public class FakeProximitySensor extends ProximitySensor { private boolean mAvailable; private boolean mRegistered; - public FakeProximitySensor(Resources resources, AsyncSensorManager sensorManager) { - super(resources, sensorManager); + public FakeProximitySensor(ThresholdSensor primary, ThresholdSensor secondary, + DelayableExecutor delayableExecutor) { + super(primary, secondary == null ? new FakeThresholdSensor() : secondary, + delayableExecutor); mAvailable = true; } @@ -31,7 +33,7 @@ public class FakeProximitySensor extends ProximitySensor { mAvailable = available; } - public void setLastEvent(ProximityEvent event) { + public void setLastEvent(ThresholdSensorEvent event) { mLastEvent = event; } @@ -41,7 +43,7 @@ public class FakeProximitySensor extends ProximitySensor { } @Override - public boolean getSensorAvailable() { + public boolean isLoaded() { return mAvailable; } diff --git a/packages/SystemUI/tests/src/com/android/systemui/util/sensors/FakeThresholdSensor.java b/packages/SystemUI/tests/src/com/android/systemui/util/sensors/FakeThresholdSensor.java new file mode 100644 index 000000000000..d9f978944cde --- /dev/null +++ b/packages/SystemUI/tests/src/com/android/systemui/util/sensors/FakeThresholdSensor.java @@ -0,0 +1,81 @@ +/* + * Copyright (C) 2020 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.util.sensors; + +import java.util.ArrayList; +import java.util.List; + +public class FakeThresholdSensor implements ThresholdSensor { + private boolean mIsLoaded; + private boolean mPaused; + private List<Listener> mListeners = new ArrayList<>(); + + public FakeThresholdSensor() { + } + + public void setTag(String tag) { + } + + @Override + public void setDelay(int delay) { + } + + @Override + public boolean isLoaded() { + return mIsLoaded; + } + + @Override + public void pause() { + mPaused = true; + } + + @Override + public void resume() { + mPaused = false; + } + + @Override + public void register(ThresholdSensor.Listener listener) { + mListeners.add(listener); + } + + @Override + public void unregister(ThresholdSensor.Listener listener) { + mListeners.remove(listener); + } + + public void setLoaded(boolean loaded) { + mIsLoaded = loaded; + } + + void triggerEvent(boolean below, long timestampNs) { + if (!mPaused) { + for (Listener listener : mListeners) { + listener.onThresholdCrossed(new ThresholdSensorEvent(below, timestampNs)); + } + } + } + + boolean isPaused() { + return mPaused; + } + + int getNumListeners() { + return mListeners.size(); + } +} diff --git a/packages/SystemUI/tests/src/com/android/systemui/util/sensors/ProximityCheckTest.java b/packages/SystemUI/tests/src/com/android/systemui/util/sensors/ProximityCheckTest.java index dae6b284ff15..c5a197eef2d4 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/util/sensors/ProximityCheckTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/util/sensors/ProximityCheckTest.java @@ -16,17 +16,18 @@ package com.android.systemui.util.sensors; +import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; -import android.os.Handler; import android.testing.AndroidTestingRunner; import android.testing.TestableLooper; import androidx.test.filters.SmallTest; import com.android.systemui.SysuiTestCase; +import com.android.systemui.util.Assert; import com.android.systemui.util.concurrency.FakeExecutor; import com.android.systemui.util.time.FakeSystemClock; @@ -50,9 +51,10 @@ public class ProximityCheckTest extends SysuiTestCase { @Before public void setUp() throws Exception { - AsyncSensorManager asyncSensorManager = - new AsyncSensorManager(new FakeSensorManager(mContext), null, new Handler()); - mFakeProximitySensor = new FakeProximitySensor(mContext.getResources(), asyncSensorManager); + Assert.setTestableLooper(TestableLooper.get(this).getLooper()); + FakeThresholdSensor thresholdSensor = new FakeThresholdSensor(); + thresholdSensor.setLoaded(true); + mFakeProximitySensor = new FakeProximitySensor(thresholdSensor, null, mFakeExecutor); mProximityCheck = new ProximitySensor.ProximityCheck(mFakeProximitySensor, mFakeExecutor); } @@ -63,7 +65,7 @@ public class ProximityCheckTest extends SysuiTestCase { assertNull(mTestableCallback.mLastResult); - mFakeProximitySensor.setLastEvent(new ProximitySensor.ProximityEvent(true, 0)); + mFakeProximitySensor.setLastEvent(new ProximitySensor.ThresholdSensorEvent(true, 0)); mFakeProximitySensor.alertListeners(); assertTrue(mTestableCallback.mLastResult); @@ -79,13 +81,15 @@ public class ProximityCheckTest extends SysuiTestCase { mFakeExecutor.runAllReady(); assertFalse(mFakeProximitySensor.isRegistered()); + assertEquals(1, mTestableCallback.mNumCalls); + assertNull(mTestableCallback.mLastResult); } @Test public void testProxDoesntCancelOthers() { assertFalse(mFakeProximitySensor.isRegistered()); // We don't need our "other" listener to do anything. Just ensure our sensor is registered. - ProximitySensor.ProximitySensorListener emptyListener = event -> { }; + ThresholdSensor.Listener emptyListener = event -> { }; mFakeProximitySensor.register(emptyListener); assertTrue(mFakeProximitySensor.isRegistered()); @@ -94,7 +98,7 @@ public class ProximityCheckTest extends SysuiTestCase { assertNull(mTestableCallback.mLastResult); - mFakeProximitySensor.setLastEvent(new ProximitySensor.ProximityEvent(true, 0)); + mFakeProximitySensor.setLastEvent(new ProximitySensor.ThresholdSensorEvent(true, 0)); mFakeProximitySensor.alertListeners(); assertTrue(mTestableCallback.mLastResult); @@ -109,9 +113,12 @@ public class ProximityCheckTest extends SysuiTestCase { private static class TestableCallback implements Consumer<Boolean> { Boolean mLastResult; + int mNumCalls = 0; + @Override public void accept(Boolean result) { mLastResult = result; + mNumCalls++; } } } diff --git a/packages/SystemUI/tests/src/com/android/systemui/util/sensors/ProximitySensorDualTest.java b/packages/SystemUI/tests/src/com/android/systemui/util/sensors/ProximitySensorDualTest.java new file mode 100644 index 000000000000..bae1d98aa310 --- /dev/null +++ b/packages/SystemUI/tests/src/com/android/systemui/util/sensors/ProximitySensorDualTest.java @@ -0,0 +1,364 @@ +/* + * Copyright (C) 2020 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.util.sensors; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; + +import android.testing.AndroidTestingRunner; +import android.testing.TestableLooper; + +import androidx.test.filters.SmallTest; + +import com.android.systemui.SysuiTestCase; +import com.android.systemui.util.concurrency.FakeExecutor; +import com.android.systemui.util.time.FakeSystemClock; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.MockitoAnnotations; + +@SmallTest +@RunWith(AndroidTestingRunner.class) +@TestableLooper.RunWithLooper +public class ProximitySensorDualTest extends SysuiTestCase { + private ProximitySensor mProximitySensor; + private FakeExecutor mFakeExecutor = new FakeExecutor(new FakeSystemClock()); + private FakeThresholdSensor mThresholdSensorPrimary; + private FakeThresholdSensor mThresholdSensorSecondary; + + @Before + public void setUp() throws Exception { + MockitoAnnotations.initMocks(this); + allowTestableLooperAsMainThread(); + mThresholdSensorPrimary = new FakeThresholdSensor(); + mThresholdSensorPrimary.setLoaded(true); + mThresholdSensorSecondary = new FakeThresholdSensor(); + mThresholdSensorSecondary.setLoaded(true); + + mProximitySensor = new ProximitySensor( + mThresholdSensorPrimary, mThresholdSensorSecondary, mFakeExecutor); + } + + @Test + public void testSingleListener() { + TestableListener listener = new TestableListener(); + + assertFalse(mProximitySensor.isRegistered()); + mProximitySensor.register(listener); + assertTrue(mProximitySensor.isRegistered()); + assertFalse(mThresholdSensorPrimary.isPaused()); + assertTrue(mThresholdSensorSecondary.isPaused()); + assertNull(listener.mLastEvent); + assertEquals(0, listener.mCallCount); + + // Trigger second sensor. Nothing should happen yet. + mThresholdSensorSecondary.triggerEvent(true, 0); + assertFalse(mThresholdSensorPrimary.isPaused()); + assertTrue(mThresholdSensorSecondary.isPaused()); + assertNull(listener.mLastEvent); + assertEquals(0, listener.mCallCount); + + // Trigger first sensor. Our second sensor is now registered. + mThresholdSensorPrimary.triggerEvent(true, 0); + assertFalse(mThresholdSensorPrimary.isPaused()); + assertFalse(mThresholdSensorSecondary.isPaused()); + assertNull(listener.mLastEvent); + assertEquals(0, listener.mCallCount); + + // Trigger second sensor. + mThresholdSensorSecondary.triggerEvent(true, 0); + assertFalse(mThresholdSensorPrimary.isPaused()); + assertFalse(mThresholdSensorSecondary.isPaused()); + assertTrue(listener.mLastEvent.getBelow()); + assertEquals(1, listener.mCallCount); + + mProximitySensor.unregister(listener); + } + + @Test + public void testSecondaryPausing() { + TestableListener listener = new TestableListener(); + + assertFalse(mProximitySensor.isRegistered()); + mProximitySensor.register(listener); + assertTrue(mProximitySensor.isRegistered()); + assertNull(listener.mLastEvent); + assertEquals(0, listener.mCallCount); + + // Trigger first sensor. Our second sensor is now registered. + mThresholdSensorPrimary.triggerEvent(true, 0); + assertNull(listener.mLastEvent); + assertEquals(0, listener.mCallCount); + + // Trigger second sensor. Second sensor remains registered. + mThresholdSensorSecondary.triggerEvent(true, 0); + assertTrue(listener.mLastEvent.getBelow()); + assertEquals(1, listener.mCallCount); + assertFalse(mThresholdSensorSecondary.isPaused()); + + // Triggering above should pause. + mThresholdSensorSecondary.triggerEvent(false, 0); + assertFalse(listener.mLastEvent.getBelow()); + assertEquals(2, listener.mCallCount); + assertTrue(mThresholdSensorSecondary.isPaused()); + + // Advance time. Second sensor should resume. + mFakeExecutor.advanceClockToNext(); + mFakeExecutor.runNextReady(); + assertFalse(mThresholdSensorSecondary.isPaused()); + + mProximitySensor.unregister(listener); + } + + @Test + public void testUnregister() { + TestableListener listener = new TestableListener(); + + assertFalse(mProximitySensor.isRegistered()); + mProximitySensor.register(listener); + assertTrue(mProximitySensor.isRegistered()); + assertFalse(mThresholdSensorPrimary.isPaused()); + assertTrue(mThresholdSensorSecondary.isPaused()); + assertNull(listener.mLastEvent); + + mThresholdSensorPrimary.triggerEvent(true, 0); + mThresholdSensorSecondary.triggerEvent(true, 0); + assertFalse(mThresholdSensorPrimary.isPaused()); + assertFalse(mThresholdSensorSecondary.isPaused()); + assertTrue(listener.mLastEvent.getBelow()); + assertEquals(1, listener.mCallCount); + + mProximitySensor.unregister(listener); + assertTrue(mThresholdSensorPrimary.isPaused()); + assertTrue(mThresholdSensorSecondary.isPaused()); + assertFalse(mProximitySensor.isRegistered()); + } + + @Test + public void testUnregisterDuringCallback() { + ThresholdSensor.Listener listenerA = event -> mProximitySensor.pause(); + TestableListener listenerB = new TestableListener(); + + assertFalse(mProximitySensor.isRegistered()); + mProximitySensor.register(listenerA); + mProximitySensor.register(listenerB); + assertTrue(mProximitySensor.isRegistered()); + assertFalse(mThresholdSensorPrimary.isPaused()); + assertTrue(mThresholdSensorSecondary.isPaused()); + assertNull(listenerB.mLastEvent); + + // listenerA will pause the proximity sensor, unregistering it. + mThresholdSensorPrimary.triggerEvent(true, 0); + mThresholdSensorSecondary.triggerEvent(true, 0); + assertTrue(listenerB.mLastEvent.getBelow()); + assertEquals(1, listenerB.mCallCount); + + + // A second call to trigger it should be ignored. + mThresholdSensorSecondary.triggerEvent(false, 0); + assertTrue(listenerB.mLastEvent.getBelow()); + assertEquals(1, listenerB.mCallCount); + } + + @Test + public void testPauseAndResume() { + TestableListener listener = new TestableListener(); + + assertFalse(mProximitySensor.isRegistered()); + mProximitySensor.register(listener); + assertTrue(mProximitySensor.isRegistered()); + assertNull(listener.mLastEvent); + + mThresholdSensorPrimary.triggerEvent(true, 0); + mThresholdSensorSecondary.triggerEvent(true, 0); + assertFalse(mThresholdSensorPrimary.isPaused()); + assertFalse(mThresholdSensorSecondary.isPaused()); + assertTrue(listener.mLastEvent.getBelow()); + assertEquals(1, listener.mCallCount); + + mProximitySensor.pause(); + assertFalse(mProximitySensor.isRegistered()); + assertTrue(mThresholdSensorPrimary.isPaused()); + assertTrue(mThresholdSensorSecondary.isPaused()); + + // More events do nothing when paused. + mThresholdSensorSecondary.triggerEvent(false, 1); + assertTrue(listener.mLastEvent.getBelow()); + assertEquals(1, listener.mCallCount); + + mProximitySensor.resume(); + assertTrue(mProximitySensor.isRegistered()); + // Still matches our previous call + assertTrue(listener.mLastEvent.getBelow()); + assertEquals(1, listener.mCallCount); + + // Need to trigger the primary sensor before the secondary re-registers itself. + mThresholdSensorPrimary.triggerEvent(true, 3); + mThresholdSensorSecondary.triggerEvent(false, 3); + assertFalse(mThresholdSensorPrimary.isPaused()); + assertTrue(mThresholdSensorSecondary.isPaused()); + assertFalse(listener.mLastEvent.getBelow()); + assertEquals(2, listener.mCallCount); + + mProximitySensor.unregister(listener); + assertFalse(mProximitySensor.isRegistered()); + } + + @Test + public void testPrimarySecondaryDisagreement() { + TestableListener listener = new TestableListener(); + + mProximitySensor.register(listener); + assertFalse(mThresholdSensorPrimary.isPaused()); + assertTrue(mThresholdSensorSecondary.isPaused()); + assertNull(listener.mLastEvent); + assertEquals(0, listener.mCallCount); + + // Trigger our sensors with different values. Secondary overrides primary. + mThresholdSensorPrimary.triggerEvent(true, 0); + assertNull(listener.mLastEvent); + assertEquals(0, listener.mCallCount); + mThresholdSensorSecondary.triggerEvent(false, 0); + assertFalse(listener.mLastEvent.getBelow()); + assertEquals(1, listener.mCallCount); + + mThresholdSensorSecondary.resume(); + mThresholdSensorSecondary.triggerEvent(true, 0); + assertTrue(listener.mLastEvent.getBelow()); + assertEquals(2, listener.mCallCount); + + mThresholdSensorSecondary.resume(); + mThresholdSensorSecondary.triggerEvent(false, 0); + assertFalse(listener.mLastEvent.getBelow()); + assertEquals(3, listener.mCallCount); + + mProximitySensor.unregister(listener); + } + + @Test + public void testPrimaryCancelsSecondary() { + TestableListener listener = new TestableListener(); + + mProximitySensor.register(listener); + assertFalse(mThresholdSensorPrimary.isPaused()); + assertTrue(mThresholdSensorSecondary.isPaused()); + assertNull(listener.mLastEvent); + assertEquals(0, listener.mCallCount); + + mThresholdSensorPrimary.triggerEvent(true, 0); + assertNull(listener.mLastEvent); + assertEquals(0, listener.mCallCount); + mThresholdSensorSecondary.triggerEvent(true, 0); + assertTrue(listener.mLastEvent.getBelow()); + assertEquals(1, listener.mCallCount); + + // When the primary reports false, the secondary is no longer needed. We get an immediate + // report. + mThresholdSensorPrimary.triggerEvent(false, 1); + assertFalse(listener.mLastEvent.getBelow()); + assertEquals(2, listener.mCallCount); + + // The secondary is now ignored. No more work is scheduled. + mFakeExecutor.advanceClockToNext(); + mFakeExecutor.runNextReady(); + mThresholdSensorSecondary.triggerEvent(true, 0); + assertFalse(listener.mLastEvent.getBelow()); + assertEquals(2, listener.mCallCount); + assertEquals(0, mFakeExecutor.numPending()); + + mProximitySensor.unregister(listener); + } + + @Test + public void testSecondaryCancelsSecondary() { + TestableListener listener = new TestableListener(); + ThresholdSensor.Listener cancelingListener = new ThresholdSensor.Listener() { + @Override + public void onThresholdCrossed(ThresholdSensor.ThresholdSensorEvent event) { + mProximitySensor.pause(); + } + }; + + mProximitySensor.register(listener); + mProximitySensor.register(cancelingListener); + assertNull(listener.mLastEvent); + assertEquals(0, listener.mCallCount); + + mThresholdSensorPrimary.triggerEvent(true, 0); + assertNull(listener.mLastEvent); + assertEquals(0, listener.mCallCount); + mThresholdSensorSecondary.triggerEvent(true, 0); + assertTrue(listener.mLastEvent.getBelow()); + assertEquals(1, listener.mCallCount); + + // The proximity sensor should now be canceled. Advancing the clock should do nothing. + assertEquals(0, mFakeExecutor.numPending()); + mThresholdSensorSecondary.triggerEvent(false, 1); + assertTrue(listener.mLastEvent.getBelow()); + assertEquals(1, listener.mCallCount); + + mProximitySensor.unregister(listener); + } + + @Test + public void testSecondarySafe() { + mProximitySensor.setSecondarySafe(true); + + TestableListener listener = new TestableListener(); + + mProximitySensor.register(listener); + assertFalse(mThresholdSensorPrimary.isPaused()); + assertTrue(mThresholdSensorSecondary.isPaused()); + assertNull(listener.mLastEvent); + assertEquals(0, listener.mCallCount); + + mThresholdSensorPrimary.triggerEvent(true, 0); + assertNull(listener.mLastEvent); + assertEquals(0, listener.mCallCount); + mThresholdSensorSecondary.triggerEvent(true, 0); + assertTrue(listener.mLastEvent.getBelow()); + assertEquals(1, listener.mCallCount); + + // The secondary sensor should now remain resumed indefinitely. + assertFalse(mThresholdSensorSecondary.isPaused()); + mThresholdSensorPrimary.triggerEvent(false, 1); + assertFalse(listener.mLastEvent.getBelow()); + assertEquals(2, listener.mCallCount); + + // The secondary is still running, and not polling with the executor. + assertFalse(mThresholdSensorSecondary.isPaused()); + assertEquals(0, mFakeExecutor.numPending()); + + mProximitySensor.unregister(listener); + } + + private static class TestableListener implements ThresholdSensor.Listener { + ThresholdSensor.ThresholdSensorEvent mLastEvent; + int mCallCount = 0; + + @Override + public void onThresholdCrossed(ThresholdSensor.ThresholdSensorEvent proximityEvent) { + mLastEvent = proximityEvent; + mCallCount++; + } + }; + +} diff --git a/packages/SystemUI/tests/src/com/android/systemui/util/sensors/ProximitySensorTest.java b/packages/SystemUI/tests/src/com/android/systemui/util/sensors/ProximitySensorTest.java deleted file mode 100644 index 914790b53a82..000000000000 --- a/packages/SystemUI/tests/src/com/android/systemui/util/sensors/ProximitySensorTest.java +++ /dev/null @@ -1,262 +0,0 @@ -/* - * Copyright (C) 2019 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.systemui.util.sensors; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNull; -import static org.junit.Assert.assertTrue; - -import android.os.Handler; -import android.testing.AndroidTestingRunner; -import android.testing.TestableLooper; - -import androidx.test.filters.SmallTest; - -import com.android.systemui.SysuiTestCase; - -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; - -@SmallTest -@RunWith(AndroidTestingRunner.class) -@TestableLooper.RunWithLooper -public class ProximitySensorTest extends SysuiTestCase { - - private ProximitySensor mProximitySensor; - private FakeSensorManager.FakeProximitySensor mFakeProximitySensor; - - @Before - public void setUp() throws Exception { - FakeSensorManager sensorManager = new FakeSensorManager(getContext()); - AsyncSensorManager asyncSensorManager = new AsyncSensorManager( - sensorManager, null, new Handler()); - mFakeProximitySensor = sensorManager.getFakeProximitySensor(); - mProximitySensor = new ProximitySensor(getContext().getResources(), asyncSensorManager); - } - - @Test - public void testSingleListener() { - TestableListener listener = new TestableListener(); - - assertFalse(mProximitySensor.isRegistered()); - mProximitySensor.register(listener); - waitForSensorManager(); - assertTrue(mProximitySensor.isRegistered()); - assertNull(listener.mLastEvent); - - mFakeProximitySensor.sendProximityResult(true); - assertFalse(listener.mLastEvent.getNear()); - assertEquals(listener.mCallCount, 1); - mFakeProximitySensor.sendProximityResult(false); - assertTrue(listener.mLastEvent.getNear()); - assertEquals(listener.mCallCount, 2); - - mProximitySensor.unregister(listener); - waitForSensorManager(); - } - - @Test - public void testMultiListener() { - TestableListener listenerA = new TestableListener(); - TestableListener listenerB = new TestableListener(); - - assertFalse(mProximitySensor.isRegistered()); - - mProximitySensor.register(listenerA); - waitForSensorManager(); - assertTrue(mProximitySensor.isRegistered()); - mProximitySensor.register(listenerB); - waitForSensorManager(); - assertTrue(mProximitySensor.isRegistered()); - assertNull(listenerA.mLastEvent); - assertNull(listenerB.mLastEvent); - - mFakeProximitySensor.sendProximityResult(true); - assertFalse(listenerA.mLastEvent.getNear()); - assertFalse(listenerB.mLastEvent.getNear()); - assertEquals(listenerA.mCallCount, 1); - assertEquals(listenerB.mCallCount, 1); - mFakeProximitySensor.sendProximityResult(false); - assertTrue(listenerA.mLastEvent.getNear()); - assertTrue(listenerB.mLastEvent.getNear()); - assertEquals(listenerA.mCallCount, 2); - assertEquals(listenerB.mCallCount, 2); - - mProximitySensor.unregister(listenerA); - mProximitySensor.unregister(listenerB); - waitForSensorManager(); - } - - @Test - public void testDuplicateListener() { - TestableListener listenerA = new TestableListener(); - - assertFalse(mProximitySensor.isRegistered()); - - mProximitySensor.register(listenerA); - waitForSensorManager(); - assertTrue(mProximitySensor.isRegistered()); - mProximitySensor.register(listenerA); - waitForSensorManager(); - assertTrue(mProximitySensor.isRegistered()); - assertNull(listenerA.mLastEvent); - - mFakeProximitySensor.sendProximityResult(true); - assertFalse(listenerA.mLastEvent.getNear()); - assertEquals(listenerA.mCallCount, 1); - mFakeProximitySensor.sendProximityResult(false); - assertTrue(listenerA.mLastEvent.getNear()); - assertEquals(listenerA.mCallCount, 2); - - mProximitySensor.unregister(listenerA); - waitForSensorManager(); - } - @Test - public void testUnregister() { - TestableListener listener = new TestableListener(); - - assertFalse(mProximitySensor.isRegistered()); - mProximitySensor.register(listener); - waitForSensorManager(); - assertTrue(mProximitySensor.isRegistered()); - assertNull(listener.mLastEvent); - - mFakeProximitySensor.sendProximityResult(true); - assertFalse(listener.mLastEvent.getNear()); - assertEquals(listener.mCallCount, 1); - - mProximitySensor.unregister(listener); - waitForSensorManager(); - assertFalse(mProximitySensor.isRegistered()); - } - - @Test - public void testPauseAndResume() { - TestableListener listener = new TestableListener(); - - assertFalse(mProximitySensor.isRegistered()); - mProximitySensor.register(listener); - waitForSensorManager(); - assertTrue(mProximitySensor.isRegistered()); - assertNull(listener.mLastEvent); - - mFakeProximitySensor.sendProximityResult(true); - assertFalse(listener.mLastEvent.getNear()); - assertEquals(listener.mCallCount, 1); - - mProximitySensor.pause(); - waitForSensorManager(); - assertFalse(mProximitySensor.isRegistered()); - - // More events do nothing when paused. - mFakeProximitySensor.sendProximityResult(true); - assertFalse(listener.mLastEvent.getNear()); - assertEquals(listener.mCallCount, 1); - mFakeProximitySensor.sendProximityResult(false); - assertFalse(listener.mLastEvent.getNear()); - assertEquals(listener.mCallCount, 1); - - mProximitySensor.resume(); - waitForSensorManager(); - assertTrue(mProximitySensor.isRegistered()); - // Still matches our previous call - assertFalse(listener.mLastEvent.getNear()); - assertEquals(listener.mCallCount, 1); - - mFakeProximitySensor.sendProximityResult(true); - assertFalse(listener.mLastEvent.getNear()); - assertEquals(listener.mCallCount, 2); - - mProximitySensor.unregister(listener); - waitForSensorManager(); - assertFalse(mProximitySensor.isRegistered()); - } - - @Test - public void testAlertListeners() { - TestableListener listenerA = new TestableListener(); - TestableListener listenerB = new TestableListener(); - - assertFalse(mProximitySensor.isRegistered()); - - mProximitySensor.register(listenerA); - mProximitySensor.register(listenerB); - waitForSensorManager(); - assertTrue(mProximitySensor.isRegistered()); - assertNull(listenerA.mLastEvent); - assertNull(listenerB.mLastEvent); - - mProximitySensor.alertListeners(); - assertNull(listenerA.mLastEvent); - assertEquals(listenerA.mCallCount, 1); - assertNull(listenerB.mLastEvent); - assertEquals(listenerB.mCallCount, 1); - - mFakeProximitySensor.sendProximityResult(false); - assertTrue(listenerA.mLastEvent.getNear()); - assertEquals(listenerA.mCallCount, 2); - assertTrue(listenerB.mLastEvent.getNear()); - assertEquals(listenerB.mCallCount, 2); - - mProximitySensor.unregister(listenerA); - mProximitySensor.unregister(listenerB); - waitForSensorManager(); - } - - @Test - public void testPreventRecursiveAlert() { - TestableListener listenerA = new TestableListener() { - @Override - public void onSensorEvent(ProximitySensor.ProximityEvent proximityEvent) { - super.onSensorEvent(proximityEvent); - if (mCallCount < 2) { - mProximitySensor.alertListeners(); - } - } - }; - - mProximitySensor.register(listenerA); - - mProximitySensor.alertListeners(); - - assertEquals(1, listenerA.mCallCount); - } - - - class TestableListener implements ProximitySensor.ProximitySensorListener { - ProximitySensor.ProximityEvent mLastEvent; - int mCallCount = 0; - - @Override - public void onSensorEvent(ProximitySensor.ProximityEvent proximityEvent) { - mLastEvent = proximityEvent; - mCallCount++; - } - - void reset() { - mLastEvent = null; - mCallCount = 0; - } - }; - - private void waitForSensorManager() { - TestableLooper.get(this).processAllMessages(); - } - -} diff --git a/packages/SystemUI/tests/src/com/android/systemui/util/sensors/ThresholdSensorImplTest.java b/packages/SystemUI/tests/src/com/android/systemui/util/sensors/ThresholdSensorImplTest.java new file mode 100644 index 000000000000..8ba7d62ba843 --- /dev/null +++ b/packages/SystemUI/tests/src/com/android/systemui/util/sensors/ThresholdSensorImplTest.java @@ -0,0 +1,313 @@ +/* + * Copyright (C) 2020 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.util.sensors; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import android.os.Handler; +import android.test.suitebuilder.annotation.SmallTest; +import android.testing.AndroidTestingRunner; +import android.testing.TestableLooper; + +import com.android.systemui.SysuiTestCase; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; + +@SmallTest +@RunWith(AndroidTestingRunner.class) +@TestableLooper.RunWithLooper +public class ThresholdSensorImplTest extends SysuiTestCase { + + private ThresholdSensorImpl mThresholdSensor; + private FakeSensorManager mSensorManager; + private AsyncSensorManager mAsyncSensorManager; + private FakeSensorManager.FakeProximitySensor mFakeProximitySensor; + + @Before + public void setUp() throws Exception { + allowTestableLooperAsMainThread(); + mSensorManager = new FakeSensorManager(getContext()); + + mAsyncSensorManager = new AsyncSensorManager( + mSensorManager, null, new Handler()); + + mFakeProximitySensor = mSensorManager.getFakeProximitySensor(); + ThresholdSensorImpl.Builder thresholdSensorBuilder = new ThresholdSensorImpl.Builder( + null, mAsyncSensorManager); + mThresholdSensor = (ThresholdSensorImpl) thresholdSensorBuilder + .setSensor(mFakeProximitySensor.getSensor()) + .setThresholdValue(mFakeProximitySensor.getSensor().getMaximumRange()) + .build(); + } + + @Test + public void testSingleListener() { + TestableListener listener = new TestableListener(); + + assertFalse(mThresholdSensor.isRegistered()); + mThresholdSensor.register(listener); + waitForSensorManager(); + assertTrue(mThresholdSensor.isRegistered()); + assertEquals(0, listener.mCallCount); + + mFakeProximitySensor.sendProximityResult(true); + assertFalse(listener.mBelow); + assertEquals(1, listener.mCallCount); + mFakeProximitySensor.sendProximityResult(false); + assertTrue(listener.mBelow); + assertEquals(2, listener.mCallCount); + + mThresholdSensor.unregister(listener); + waitForSensorManager(); + } + + @Test + public void testMultiListener() { + TestableListener listenerA = new TestableListener(); + TestableListener listenerB = new TestableListener(); + + assertFalse(mThresholdSensor.isRegistered()); + + mThresholdSensor.register(listenerA); + waitForSensorManager(); + assertTrue(mThresholdSensor.isRegistered()); + mThresholdSensor.register(listenerB); + waitForSensorManager(); + assertTrue(mThresholdSensor.isRegistered()); + assertEquals(0, listenerA.mCallCount); + assertEquals(0, listenerB.mCallCount); + + + mFakeProximitySensor.sendProximityResult(true); + assertFalse(listenerA.mBelow); + assertFalse(listenerB.mBelow); + assertEquals(1, listenerA.mCallCount); + assertEquals(1, listenerB.mCallCount); + mFakeProximitySensor.sendProximityResult(false); + assertTrue(listenerA.mBelow); + assertTrue(listenerB.mBelow); + assertEquals(2, listenerA.mCallCount); + assertEquals(2, listenerB.mCallCount); + + mThresholdSensor.unregister(listenerA); + mThresholdSensor.unregister(listenerB); + waitForSensorManager(); + } + + @Test + public void testDuplicateListener() { + TestableListener listenerA = new TestableListener(); + + assertFalse(mThresholdSensor.isRegistered()); + + mThresholdSensor.register(listenerA); + waitForSensorManager(); + assertTrue(mThresholdSensor.isRegistered()); + mThresholdSensor.register(listenerA); + waitForSensorManager(); + assertTrue(mThresholdSensor.isRegistered()); + assertEquals(0, listenerA.mCallCount); + + mFakeProximitySensor.sendProximityResult(true); + assertFalse(listenerA.mBelow); + assertEquals(1, listenerA.mCallCount); + mFakeProximitySensor.sendProximityResult(false); + assertTrue(listenerA.mBelow); + assertEquals(2, listenerA.mCallCount); + + mThresholdSensor.unregister(listenerA); + waitForSensorManager(); + } + @Test + public void testUnregister() { + TestableListener listener = new TestableListener(); + + assertFalse(mThresholdSensor.isRegistered()); + mThresholdSensor.register(listener); + waitForSensorManager(); + assertTrue(mThresholdSensor.isRegistered()); + assertEquals(0, listener.mCallCount); + + mFakeProximitySensor.sendProximityResult(true); + assertFalse(listener.mBelow); + assertEquals(1, listener.mCallCount); + + mThresholdSensor.unregister(listener); + waitForSensorManager(); + assertFalse(mThresholdSensor.isRegistered()); + } + + @Test + public void testPauseAndResume() { + TestableListener listener = new TestableListener(); + + assertFalse(mThresholdSensor.isRegistered()); + mThresholdSensor.register(listener); + waitForSensorManager(); + assertTrue(mThresholdSensor.isRegistered()); + assertEquals(0, listener.mCallCount); + + mFakeProximitySensor.sendProximityResult(true); + assertFalse(listener.mBelow); + assertEquals(1, listener.mCallCount); + + mThresholdSensor.pause(); + waitForSensorManager(); + assertFalse(mThresholdSensor.isRegistered()); + + // More events do nothing when paused. + mFakeProximitySensor.sendProximityResult(true); + assertFalse(listener.mBelow); + assertEquals(1, listener.mCallCount); + mFakeProximitySensor.sendProximityResult(false); + assertFalse(listener.mBelow); + assertEquals(1, listener.mCallCount); + + mThresholdSensor.resume(); + waitForSensorManager(); + assertTrue(mThresholdSensor.isRegistered()); + // Still matches our previous call + assertFalse(listener.mBelow); + assertEquals(1, listener.mCallCount); + + mFakeProximitySensor.sendProximityResult(false); + assertTrue(listener.mBelow); + assertEquals(2, listener.mCallCount); + + mThresholdSensor.unregister(listener); + waitForSensorManager(); + assertFalse(mThresholdSensor.isRegistered()); + } + + @Test + public void testAlertListeners() { + TestableListener listenerA = new TestableListener(); + TestableListener listenerB = new TestableListener(); + + assertFalse(mThresholdSensor.isRegistered()); + + mThresholdSensor.register(listenerA); + mThresholdSensor.register(listenerB); + waitForSensorManager(); + assertTrue(mThresholdSensor.isRegistered()); + assertEquals(0, listenerA.mCallCount); + assertEquals(0, listenerB.mCallCount); + + mFakeProximitySensor.sendProximityResult(true); + assertFalse(listenerA.mBelow); + assertEquals(1, listenerA.mCallCount); + assertFalse(listenerB.mBelow); + assertEquals(1, listenerB.mCallCount); + + mFakeProximitySensor.sendProximityResult(false); + assertTrue(listenerA.mBelow); + assertEquals(2, listenerA.mCallCount); + assertTrue(listenerB.mBelow); + assertEquals(2, listenerB.mCallCount); + + mThresholdSensor.unregister(listenerA); + mThresholdSensor.unregister(listenerB); + waitForSensorManager(); + } + + @Test + public void testHysteresis() { + float lowValue = 10f; + float highValue = 100f; + FakeSensorManager.FakeGenericSensor sensor = mSensorManager.getFakeLightSensor(); + ThresholdSensorImpl.Builder thresholdSensorBuilder = new ThresholdSensorImpl.Builder( + null, mAsyncSensorManager); + ThresholdSensorImpl thresholdSensor = (ThresholdSensorImpl) thresholdSensorBuilder + .setSensor(sensor.getSensor()) + .setThresholdValue(lowValue) + .setThresholdLatchValue(highValue) + .build(); + + TestableListener listener = new TestableListener(); + + assertFalse(thresholdSensor.isRegistered()); + thresholdSensor.register(listener); + waitForSensorManager(); + assertTrue(thresholdSensor.isRegistered()); + assertEquals(0, listener.mCallCount); + + sensor.sendSensorEvent(lowValue - 1); + + assertTrue(listener.mBelow); + assertEquals(1, listener.mCallCount); + + sensor.sendSensorEvent(lowValue + 1); + + assertTrue(listener.mBelow); + assertEquals(1, listener.mCallCount); + + sensor.sendSensorEvent(highValue); + + assertFalse(listener.mBelow); + assertEquals(2, listener.mCallCount); + + sensor.sendSensorEvent(highValue - 1); + + assertFalse(listener.mBelow); + assertEquals(2, listener.mCallCount); + + + sensor.sendSensorEvent(lowValue - 1); + + assertTrue(listener.mBelow); + assertEquals(3, listener.mCallCount); + } + + @Test + public void testAlertAfterPause() { + TestableListener listener = new TestableListener(); + + mThresholdSensor.register(listener); + waitForSensorManager(); + mFakeProximitySensor.sendProximityResult(false); + assertTrue(listener.mBelow); + assertEquals(1, listener.mCallCount); + + mThresholdSensor.pause(); + + mFakeProximitySensor.sendProximityResult(false); + assertTrue(listener.mBelow); + assertEquals(1, listener.mCallCount); + } + + static class TestableListener implements ThresholdSensor.Listener { + boolean mBelow; + long mTimestampNs; + int mCallCount; + + @Override + public void onThresholdCrossed(ThresholdSensor.ThresholdSensorEvent event) { + mBelow = event.getBelow(); + mTimestampNs = event.getTimestampNs(); + mCallCount++; + } + } + + private void waitForSensorManager() { + TestableLooper.get(this).processAllMessages(); + } + +} diff --git a/packages/SystemUI/tests/src/com/android/systemui/utils/leaks/FakeBatteryController.java b/packages/SystemUI/tests/src/com/android/systemui/utils/leaks/FakeBatteryController.java index 8ec4cb8b927b..50c1e73f6aac 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/utils/leaks/FakeBatteryController.java +++ b/packages/SystemUI/tests/src/com/android/systemui/utils/leaks/FakeBatteryController.java @@ -25,6 +25,8 @@ import java.io.PrintWriter; public class FakeBatteryController extends BaseLeakChecker<BatteryStateChangeCallback> implements BatteryController { + private boolean mWirelessCharging; + public FakeBatteryController(LeakCheck test) { super(test, "battery"); } @@ -58,4 +60,13 @@ public class FakeBatteryController extends BaseLeakChecker<BatteryStateChangeCal public boolean isAodPowerSave() { return false; } + + @Override + public boolean isWirelessCharging() { + return mWirelessCharging; + } + + public void setWirelessCharging(boolean wirelessCharging) { + mWirelessCharging = wirelessCharging; + } } diff --git a/packages/Tethering/res/values-mcc310-mnc004-ne/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-ne/strings.xml deleted file mode 100644 index d074f1569933..000000000000 --- a/packages/Tethering/res/values-mcc310-mnc004-ne/strings.xml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- Copyright (C) 2020 The Android Open Source Project - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="no_upstream_notification_title" msgid="5030042590486713460">"टेदरिङमार्फत इन्टरनेट कनेक्सन प्राप्त हुन सकेन"</string> - <string name="no_upstream_notification_message" msgid="3843613362272973447">"यन्त्रहरू कनेक्ट गर्न सकिएन"</string> - <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"टेदरिङ निष्क्रिय पार्नुहोस्"</string> - <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"हटस्पट वा टेदरिङ सक्रिय छ"</string> - <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"रोमिङ सेवा प्रयोग गर्दा अतिरिक्त शुल्क लाग्न सक्छ"</string> -</resources> diff --git a/packages/Tethering/res/values-mcc310-mnc004-zh-rTW/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-zh-rTW/strings.xml deleted file mode 100644 index 528a1e52925c..000000000000 --- a/packages/Tethering/res/values-mcc310-mnc004-zh-rTW/strings.xml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- Copyright (C) 2020 The Android Open Source Project - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="no_upstream_notification_title" msgid="5030042590486713460">"無法透過網路共用連上網際網路"</string> - <string name="no_upstream_notification_message" msgid="3843613362272973447">"裝置無法連線"</string> - <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"關閉網路共用"</string> - <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"無線基地台或網路共用已開啟"</string> - <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"使用漫遊服務可能須支付額外費用"</string> -</resources> diff --git a/packages/Tethering/res/values-mcc311-mnc480-ne/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-ne/strings.xml deleted file mode 100644 index 1503244f5000..000000000000 --- a/packages/Tethering/res/values-mcc311-mnc480-ne/strings.xml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- Copyright (C) 2020 The Android Open Source Project - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="no_upstream_notification_title" msgid="611650570559011140">"टेदरिङमार्फत इन्टरनेट कनेक्सन प्राप्त हुन सकेन"</string> - <string name="no_upstream_notification_message" msgid="6508394877641864863">"यन्त्रहरू कनेक्ट गर्न सकिएन"</string> - <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"टेदरिङ निष्क्रिय पार्नुहोस्"</string> - <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"हटस्पट वा टेदरिङ सक्रिय छ"</string> - <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"रोमिङ सेवा प्रयोग गर्दा अतिरिक्त शुल्क लाग्न सक्छ"</string> -</resources> diff --git a/packages/Tethering/res/values-mcc311-mnc480-zh-rTW/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-zh-rTW/strings.xml deleted file mode 100644 index cd653df1dac6..000000000000 --- a/packages/Tethering/res/values-mcc311-mnc480-zh-rTW/strings.xml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- Copyright (C) 2020 The Android Open Source Project - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="no_upstream_notification_title" msgid="611650570559011140">"無法透過網路共用連上網際網路"</string> - <string name="no_upstream_notification_message" msgid="6508394877641864863">"裝置無法連線"</string> - <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"關閉網路共用"</string> - <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"無線基地台或網路共用已開啟"</string> - <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"使用漫遊服務可能須支付額外費用"</string> -</resources> diff --git a/packages/Tethering/res/values-zh-rTW/strings.xml b/packages/Tethering/res/values-zh-rTW/strings.xml index 50a50bf7a996..9a117bbca43f 100644 --- a/packages/Tethering/res/values-zh-rTW/strings.xml +++ b/packages/Tethering/res/values-zh-rTW/strings.xml @@ -1,29 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> -<!-- Copyright (C) 2020 The Android Open Source Project - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - --> - <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="tethered_notification_title" msgid="6426563586025792944">"網路共用或無線基地台已啟用"</string> - <string name="tethered_notification_message" msgid="64800879503420696">"輕觸即可進行設定。"</string> - <string name="disable_tether_notification_title" msgid="3004509127903564191">"網路共用已停用"</string> - <string name="disable_tether_notification_message" msgid="6717523799293901476">"詳情請洽你的管理員"</string> - <string name="notification_channel_tethering_status" msgid="2663463891530932727">"無線基地台與網路共用狀態"</string> - <string name="no_upstream_notification_title" msgid="1204601824631788482"></string> - <string name="no_upstream_notification_message" msgid="8586582938243032621"></string> - <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string> - <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string> - <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string> + <string name="tethered_notification_title" msgid="3146694234398202601">"網路共用或無線基地台已啟用"</string> + <string name="tethered_notification_message" msgid="2113628520792055377">"輕觸即可進行設定。"</string> + <string name="disable_tether_notification_title" msgid="7526977944111313195">"數據連線已停用"</string> + <string name="disable_tether_notification_message" msgid="2913366428516852495">"詳情請洽你的管理員"</string> </resources> diff --git a/packages/overlays/AccentColorAmethystOverlay/Android.mk b/packages/overlays/AccentColorAmethystOverlay/Android.mk new file mode 100644 index 000000000000..cd10ca3accda --- /dev/null +++ b/packages/overlays/AccentColorAmethystOverlay/Android.mk @@ -0,0 +1,29 @@ +# +# Copyright (C) 2020, The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +LOCAL_PATH:= $(call my-dir) +include $(CLEAR_VARS) + +LOCAL_RRO_THEME := AccentColorAmethyst + +LOCAL_PRODUCT_MODULE := true + +LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res + +LOCAL_PACKAGE_NAME := AccentColorAmethystOverlay +LOCAL_SDK_VERSION := current + +include $(BUILD_RRO_PACKAGE) diff --git a/packages/overlays/AccentColorAmethystOverlay/AndroidManifest.xml b/packages/overlays/AccentColorAmethystOverlay/AndroidManifest.xml new file mode 100644 index 000000000000..e5a882677057 --- /dev/null +++ b/packages/overlays/AccentColorAmethystOverlay/AndroidManifest.xml @@ -0,0 +1,26 @@ +<!-- +/** + * Copyright (C) 2020, The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +--> +<manifest xmlns:android="http://schemas.android.com/apk/res/android" + package="com.android.theme.color.amethyst" + android:versionCode="1" + android:versionName="1.0"> + <overlay android:targetPackage="android" android:category="android.theme.customization.accent_color" android:priority="1"/> + + <application android:label="@string/accent_color_overlay" android:hasCode="false"/> +</manifest> + diff --git a/packages/overlays/AccentColorAmethystOverlay/res/values/colors_device_defaults.xml b/packages/overlays/AccentColorAmethystOverlay/res/values/colors_device_defaults.xml new file mode 100644 index 000000000000..e17aebcb3ada --- /dev/null +++ b/packages/overlays/AccentColorAmethystOverlay/res/values/colors_device_defaults.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/** + * Copyright (C) 2020, 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> + <color name="accent_device_default_light">#A03EFF</color> + <color name="accent_device_default_dark">#BD78FF</color> +</resources> + diff --git a/packages/overlays/AccentColorAmethystOverlay/res/values/strings.xml b/packages/overlays/AccentColorAmethystOverlay/res/values/strings.xml new file mode 100644 index 000000000000..ecfa2a87c23e --- /dev/null +++ b/packages/overlays/AccentColorAmethystOverlay/res/values/strings.xml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/** + * Copyright (C) 2020, The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Black accent color name application label. [CHAR LIMIT=50] --> + <string name="accent_color_overlay" translatable="false">Amethyst</string> +</resources> + + diff --git a/packages/overlays/AccentColorAquamarineOverlay/Android.mk b/packages/overlays/AccentColorAquamarineOverlay/Android.mk new file mode 100644 index 000000000000..09ae45019c97 --- /dev/null +++ b/packages/overlays/AccentColorAquamarineOverlay/Android.mk @@ -0,0 +1,29 @@ +# +# Copyright (C) 2020, The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +LOCAL_PATH:= $(call my-dir) +include $(CLEAR_VARS) + +LOCAL_RRO_THEME := AccentColorAquamarine + +LOCAL_PRODUCT_MODULE := true + +LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res + +LOCAL_PACKAGE_NAME := AccentColorAquamarineOverlay +LOCAL_SDK_VERSION := current + +include $(BUILD_RRO_PACKAGE) diff --git a/packages/overlays/AccentColorAquamarineOverlay/AndroidManifest.xml b/packages/overlays/AccentColorAquamarineOverlay/AndroidManifest.xml new file mode 100644 index 000000000000..27e2470bf36d --- /dev/null +++ b/packages/overlays/AccentColorAquamarineOverlay/AndroidManifest.xml @@ -0,0 +1,26 @@ +<!-- +/** + * Copyright (C) 2020, The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +--> +<manifest xmlns:android="http://schemas.android.com/apk/res/android" + package="com.android.theme.color.aquamarine" + android:versionCode="1" + android:versionName="1.0"> + <overlay android:targetPackage="android" android:category="android.theme.customization.accent_color" android:priority="1"/> + + <application android:label="@string/accent_color_overlay" android:hasCode="false"/> +</manifest> + diff --git a/packages/overlays/AccentColorAquamarineOverlay/res/values/colors_device_defaults.xml b/packages/overlays/AccentColorAquamarineOverlay/res/values/colors_device_defaults.xml new file mode 100644 index 000000000000..2e69b5dfc614 --- /dev/null +++ b/packages/overlays/AccentColorAquamarineOverlay/res/values/colors_device_defaults.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/** + * Copyright (C) 2020, 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> + <color name="accent_device_default_light">#23847D</color> + <color name="accent_device_default_dark">#1AFFCB</color> +</resources> + diff --git a/packages/overlays/AccentColorAquamarineOverlay/res/values/strings.xml b/packages/overlays/AccentColorAquamarineOverlay/res/values/strings.xml new file mode 100644 index 000000000000..918ba5024259 --- /dev/null +++ b/packages/overlays/AccentColorAquamarineOverlay/res/values/strings.xml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/** + * Copyright (C) 2020, The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Black accent color name application label. [CHAR LIMIT=50] --> + <string name="accent_color_overlay" translatable="false">Aquamarine</string> +</resources> + + diff --git a/packages/overlays/AccentColorCarbonOverlay/Android.mk b/packages/overlays/AccentColorCarbonOverlay/Android.mk new file mode 100644 index 000000000000..5641e8eba55c --- /dev/null +++ b/packages/overlays/AccentColorCarbonOverlay/Android.mk @@ -0,0 +1,29 @@ +# +# Copyright 2018, The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +LOCAL_PATH:= $(call my-dir) +include $(CLEAR_VARS) + +LOCAL_RRO_THEME := AccentColorCarbon + +LOCAL_PRODUCT_MODULE := true + +LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res + +LOCAL_PACKAGE_NAME := AccentColorCarbonOverlay +LOCAL_SDK_VERSION := current + +include $(BUILD_RRO_PACKAGE) diff --git a/packages/overlays/AccentColorCarbonOverlay/AndroidManifest.xml b/packages/overlays/AccentColorCarbonOverlay/AndroidManifest.xml new file mode 100644 index 000000000000..d7779f598013 --- /dev/null +++ b/packages/overlays/AccentColorCarbonOverlay/AndroidManifest.xml @@ -0,0 +1,23 @@ +<!-- + ~ Copyright (C) 2020 The Android Open Source Project + ~ + ~ Licensed under the Apache License, Version 2.0 (the "License"); + ~ you may not use this file except in compliance with the License. + ~ You may obtain a copy of the License at + ~ + ~ http://www.apache.org/licenses/LICENSE-2.0 + ~ + ~ Unless required by applicable law or agreed to in writing, software + ~ distributed under the License is distributed on an "AS IS" BASIS, + ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + ~ See the License for the specific language governing permissions and + ~ limitations under the License. + --> +<manifest xmlns:android="http://schemas.android.com/apk/res/android" + package="com.android.theme.color.carbon" + android:versionCode="1" + android:versionName="1.0"> + <overlay android:targetPackage="android" android:category="android.theme.customization.accent_color" android:priority="1"/> + + <application android:label="@string/accent_color_overlay_name" android:hasCode="false"/> +</manifest> diff --git a/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-eu/strings.xml b/packages/overlays/AccentColorCarbonOverlay/res/values/colors_device_defaults.xml index 93ef2c8e2109..1fef36346c46 100644 --- a/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-eu/strings.xml +++ b/packages/overlays/AccentColorCarbonOverlay/res/values/colors_device_defaults.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<!-- +<!-- ~ Copyright (C) 2020 The Android Open Source Project ~ ~ Licensed under the Apache License, Version 2.0 (the "License"); @@ -13,9 +13,8 @@ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ~ See the License for the specific language governing permissions and ~ limitations under the License. - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="display_cutout_emulation_overlay" msgid="3523556473422419323">"Ur-jauzi moduko mozketa"</string> + --> +<resources> + <color name="accent_device_default_light">#434E58</color> + <color name="accent_device_default_dark">#3DDCFF</color> </resources> diff --git a/packages/overlays/AccentColorCarbonOverlay/res/values/strings.xml b/packages/overlays/AccentColorCarbonOverlay/res/values/strings.xml new file mode 100644 index 000000000000..dcd53e89760e --- /dev/null +++ b/packages/overlays/AccentColorCarbonOverlay/res/values/strings.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + ~ Copyright (C) 2020 The Android Open Source Project + ~ + ~ Licensed under the Apache License, Version 2.0 (the "License"); + ~ you may not use this file except in compliance with the License. + ~ You may obtain a copy of the License at + ~ + ~ http://www.apache.org/licenses/LICENSE-2.0 + ~ + ~ Unless required by applicable law or agreed to in writing, software + ~ distributed under the License is distributed on an "AS IS" BASIS, + ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + ~ See the License for the specific language governing permissions and + ~ limitations under the License. + --> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Black accent color name application label. [CHAR LIMIT=50] --> + <string name="accent_color_overlay_name" translatable="false">Carbon</string> +</resources> + diff --git a/packages/overlays/AccentColorPaletteOverlay/Android.mk b/packages/overlays/AccentColorPaletteOverlay/Android.mk new file mode 100644 index 000000000000..e207f61ce3db --- /dev/null +++ b/packages/overlays/AccentColorPaletteOverlay/Android.mk @@ -0,0 +1,29 @@ +# +# Copyright 2018, The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +LOCAL_PATH:= $(call my-dir) +include $(CLEAR_VARS) + +LOCAL_RRO_THEME := AccentColorPalette + +LOCAL_PRODUCT_MODULE := true + +LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res + +LOCAL_PACKAGE_NAME := AccentColorPaletteOverlay +LOCAL_SDK_VERSION := current + +include $(BUILD_RRO_PACKAGE) diff --git a/packages/overlays/AccentColorPaletteOverlay/AndroidManifest.xml b/packages/overlays/AccentColorPaletteOverlay/AndroidManifest.xml new file mode 100644 index 000000000000..dd089deda9b6 --- /dev/null +++ b/packages/overlays/AccentColorPaletteOverlay/AndroidManifest.xml @@ -0,0 +1,23 @@ +<!-- + ~ Copyright (C) 2020 The Android Open Source Project + ~ + ~ Licensed under the Apache License, Version 2.0 (the "License"); + ~ you may not use this file except in compliance with the License. + ~ You may obtain a copy of the License at + ~ + ~ http://www.apache.org/licenses/LICENSE-2.0 + ~ + ~ Unless required by applicable law or agreed to in writing, software + ~ distributed under the License is distributed on an "AS IS" BASIS, + ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + ~ See the License for the specific language governing permissions and + ~ limitations under the License. + --> +<manifest xmlns:android="http://schemas.android.com/apk/res/android" + package="com.android.theme.color.palette" + android:versionCode="1" + android:versionName="1.0"> + <overlay android:targetPackage="android" android:category="android.theme.customization.accent_color" android:priority="1"/> + + <application android:label="@string/accent_color_overlay" android:hasCode="false"/> +</manifest> diff --git a/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-kk/strings.xml b/packages/overlays/AccentColorPaletteOverlay/res/values/colors_device_defaults.xml index bb0dfe98759c..cea0539aeaff 100644 --- a/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-kk/strings.xml +++ b/packages/overlays/AccentColorPaletteOverlay/res/values/colors_device_defaults.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<!-- +<!-- ~ Copyright (C) 2020 The Android Open Source Project ~ ~ Licensed under the Apache License, Version 2.0 (the "License"); @@ -13,9 +13,8 @@ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ~ See the License for the specific language governing permissions and ~ limitations under the License. - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="display_cutout_emulation_overlay" msgid="3523556473422419323">"Сарқырама ойығы"</string> + --> +<resources> + <color name="accent_device_default_light">#c01668</color> + <color name="accent_device_default_dark">#ffb6d9</color> </resources> diff --git a/packages/overlays/AccentColorPaletteOverlay/res/values/strings.xml b/packages/overlays/AccentColorPaletteOverlay/res/values/strings.xml new file mode 100644 index 000000000000..ed267b034e5b --- /dev/null +++ b/packages/overlays/AccentColorPaletteOverlay/res/values/strings.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + ~ Copyright (C) 2020 The Android Open Source Project + ~ + ~ Licensed under the Apache License, Version 2.0 (the "License"); + ~ you may not use this file except in compliance with the License. + ~ You may obtain a copy of the License at + ~ + ~ http://www.apache.org/licenses/LICENSE-2.0 + ~ + ~ Unless required by applicable law or agreed to in writing, software + ~ distributed under the License is distributed on an "AS IS" BASIS, + ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + ~ See the License for the specific language governing permissions and + ~ limitations under the License. + --> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Black accent color name application label. [CHAR LIMIT=50] --> + <string name="accent_color_overlay" translatable="false">Palette</string> +</resources> + diff --git a/packages/overlays/AccentColorSandOverlay/Android.mk b/packages/overlays/AccentColorSandOverlay/Android.mk new file mode 100644 index 000000000000..c37455af81df --- /dev/null +++ b/packages/overlays/AccentColorSandOverlay/Android.mk @@ -0,0 +1,29 @@ +# +# Copyright 2018, The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +LOCAL_PATH:= $(call my-dir) +include $(CLEAR_VARS) + +LOCAL_RRO_THEME := AccentColorSand + +LOCAL_PRODUCT_MODULE := true + +LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res + +LOCAL_PACKAGE_NAME := AccentColorSandOverlay +LOCAL_SDK_VERSION := current + +include $(BUILD_RRO_PACKAGE) diff --git a/packages/overlays/AccentColorSandOverlay/AndroidManifest.xml b/packages/overlays/AccentColorSandOverlay/AndroidManifest.xml new file mode 100644 index 000000000000..c323cc907633 --- /dev/null +++ b/packages/overlays/AccentColorSandOverlay/AndroidManifest.xml @@ -0,0 +1,23 @@ +<!-- + ~ Copyright (C) 2020 The Android Open Source Project + ~ + ~ Licensed under the Apache License, Version 2.0 (the "License"); + ~ you may not use this file except in compliance with the License. + ~ You may obtain a copy of the License at + ~ + ~ http://www.apache.org/licenses/LICENSE-2.0 + ~ + ~ Unless required by applicable law or agreed to in writing, software + ~ distributed under the License is distributed on an "AS IS" BASIS, + ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + ~ See the License for the specific language governing permissions and + ~ limitations under the License. + --> +<manifest xmlns:android="http://schemas.android.com/apk/res/android" + package="com.android.theme.color.sand" + android:versionCode="1" + android:versionName="1.0"> + <overlay android:targetPackage="android" android:category="android.theme.customization.accent_color" android:priority="1"/> + + <application android:label="@string/accent_color_overlay" android:hasCode="false"/> +</manifest> diff --git a/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-gu/strings.xml b/packages/overlays/AccentColorSandOverlay/res/values/colors_device_defaults.xml index 03672fe85a35..7fb514ee3240 100644 --- a/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-gu/strings.xml +++ b/packages/overlays/AccentColorSandOverlay/res/values/colors_device_defaults.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<!-- +<!-- ~ Copyright (C) 2020 The Android Open Source Project ~ ~ Licensed under the Apache License, Version 2.0 (the "License"); @@ -13,9 +13,8 @@ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ~ See the License for the specific language governing permissions and ~ limitations under the License. - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="display_cutout_emulation_overlay" msgid="3523556473422419323">"વૉટરફૉલ કટઆઉટ"</string> + --> +<resources> + <color name="accent_device_default_light">#795548</color> + <color name="accent_device_default_dark">#c8ac94</color> </resources> diff --git a/packages/overlays/AccentColorSandOverlay/res/values/strings.xml b/packages/overlays/AccentColorSandOverlay/res/values/strings.xml new file mode 100644 index 000000000000..20a26cb176a1 --- /dev/null +++ b/packages/overlays/AccentColorSandOverlay/res/values/strings.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + ~ Copyright (C) 2020 The Android Open Source Project + ~ + ~ Licensed under the Apache License, Version 2.0 (the "License"); + ~ you may not use this file except in compliance with the License. + ~ You may obtain a copy of the License at + ~ + ~ http://www.apache.org/licenses/LICENSE-2.0 + ~ + ~ Unless required by applicable law or agreed to in writing, software + ~ distributed under the License is distributed on an "AS IS" BASIS, + ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + ~ See the License for the specific language governing permissions and + ~ limitations under the License. + --> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Black accent color name application label. [CHAR LIMIT=50] --> + <string name="accent_color_overlay" translatable="false">Sand</string> +</resources> + diff --git a/packages/overlays/AccentColorTangerineOverlay/Android.mk b/packages/overlays/AccentColorTangerineOverlay/Android.mk new file mode 100644 index 000000000000..0d676bba076d --- /dev/null +++ b/packages/overlays/AccentColorTangerineOverlay/Android.mk @@ -0,0 +1,29 @@ +# +# Copyright (C) 2020, The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +LOCAL_PATH:= $(call my-dir) +include $(CLEAR_VARS) + +LOCAL_RRO_THEME := AccentColorTangerine + +LOCAL_PRODUCT_MODULE := true + +LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res + +LOCAL_PACKAGE_NAME := AccentColorTangerineOverlay +LOCAL_SDK_VERSION := current + +include $(BUILD_RRO_PACKAGE) diff --git a/packages/overlays/AccentColorTangerineOverlay/AndroidManifest.xml b/packages/overlays/AccentColorTangerineOverlay/AndroidManifest.xml new file mode 100644 index 000000000000..024d4cdf5873 --- /dev/null +++ b/packages/overlays/AccentColorTangerineOverlay/AndroidManifest.xml @@ -0,0 +1,25 @@ +<!-- +/** + * Copyright (C) 2020, The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +--> +<manifest xmlns:android="http://schemas.android.com/apk/res/android" + package="com.android.theme.color.tangerine" + android:versionCode="1" + android:versionName="1.0"> + <overlay android:targetPackage="android" android:category="android.theme.customization.accent_color" android:priority="1"/> + + <application android:label="@string/accent_color_overlay" android:hasCode="false"/> +</manifest> diff --git a/packages/overlays/AccentColorTangerineOverlay/res/values/colors_device_defaults.xml b/packages/overlays/AccentColorTangerineOverlay/res/values/colors_device_defaults.xml new file mode 100644 index 000000000000..ee663cf13cb1 --- /dev/null +++ b/packages/overlays/AccentColorTangerineOverlay/res/values/colors_device_defaults.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/** + * Copyright (C) 2020, 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> + <color name="accent_device_default_light">#C85125</color> + <color name="accent_device_default_dark">#F19D7D</color> +</resources> + diff --git a/packages/overlays/AccentColorTangerineOverlay/res/values/strings.xml b/packages/overlays/AccentColorTangerineOverlay/res/values/strings.xml new file mode 100644 index 000000000000..4e8d8e6d539a --- /dev/null +++ b/packages/overlays/AccentColorTangerineOverlay/res/values/strings.xml @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/** + * Copyright (C) 2020, The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Black accent color name application label. [CHAR LIMIT=50] --> + <string name="accent_color_overlay" translatable="false">Tangerine</string> +</resources> + + + diff --git a/packages/overlays/Android.mk b/packages/overlays/Android.mk index 50e1030fda30..ab41e0f61bc8 100644 --- a/packages/overlays/Android.mk +++ b/packages/overlays/Android.mk @@ -24,9 +24,15 @@ LOCAL_REQUIRED_MODULES := \ AccentColorSpaceOverlay \ AccentColorGreenOverlay \ AccentColorPurpleOverlay \ + AccentColorPaletteOverlay \ + AccentColorCarbonOverlay \ + AccentColorSandOverlay \ + AccentColorAmethystOverlay \ + AccentColorAquamarineOverlay \ + AccentColorTangerineOverlay \ DisplayCutoutEmulationCornerOverlay \ DisplayCutoutEmulationDoubleOverlay \ - DisplayCutoutEmulationHoleOverlay \ + DisplayCutoutEmulationHoleOverlay \ DisplayCutoutEmulationTallOverlay \ DisplayCutoutEmulationWaterfallOverlay \ FontNotoSerifSourceOverlay \ diff --git a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_screenrecord.xml b/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_screenrecord.xml new file mode 100644 index 000000000000..a875a23c3a17 --- /dev/null +++ b/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_screenrecord.xml @@ -0,0 +1,18 @@ +<!-- + Copyright (C) 2020 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<vector android:height="24dp" android:tint="?android:attr/colorControlNormal" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android"> + <path android:fillColor="@android:color/white" android:pathData="M4.13,17.62c-0.25,0-0.5-0.13-0.64-0.35c-1.98-3.2-1.98-7.33,0-10.53c0.22-0.35,0.68-0.46,1.03-0.24 c0.35,0.22,0.46,0.68,0.24,1.03c-1.68,2.72-1.68,6.23,0,8.95c0.22,0.35,0.11,0.81-0.24,1.03C4.4,17.58,4.27,17.62,4.13,17.62z M17.51,4.53c0.22-0.35,0.11-0.81-0.24-1.03c-3.2-1.98-7.33-1.98-10.53,0C6.39,3.71,6.28,4.17,6.49,4.53 c0.22,0.35,0.68,0.46,1.03,0.24c2.72-1.68,6.23-1.68,8.95,0c0.12,0.08,0.26,0.11,0.39,0.11C17.12,4.88,17.36,4.76,17.51,4.53z M17.26,20.51c0.35-0.22,0.46-0.68,0.24-1.03c-0.22-0.35-0.68-0.46-1.03-0.24c-2.72,1.68-6.23,1.68-8.95,0 c-0.35-0.22-0.81-0.11-1.03,0.24c-0.22,0.35-0.11,0.81,0.24,1.03c1.6,0.99,3.43,1.49,5.26,1.49S15.66,21.5,17.26,20.51z M20.51,17.26c1.98-3.2,1.98-7.33,0-10.53c-0.22-0.35-0.68-0.46-1.03-0.24c-0.35,0.22-0.46,0.68-0.24,1.03 c1.68,2.72,1.68,6.23,0,8.95c-0.22,0.35-0.11,0.81,0.24,1.03c0.12,0.08,0.26,0.11,0.39,0.11C20.12,17.62,20.36,17.49,20.51,17.26z M16,12c0-2.21-1.79-4-4-4c-2.21,0-4,1.79-4,4c0,2.21,1.79,4,4,4C14.21,16,16,14.21,16,12z"/> +</vector>
\ No newline at end of file diff --git a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_screenrecord.xml b/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_screenrecord.xml new file mode 100644 index 000000000000..1a7c63c08894 --- /dev/null +++ b/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_screenrecord.xml @@ -0,0 +1,18 @@ +<!-- + Copyright (C) 2020 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<vector android:height="24dp" android:tint="?android:attr/colorControlNormal" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android"> + <path android:fillColor="@android:color/white" android:pathData="M12,16c-2.21,0-4-1.79-4-4c0-2.21,1.79-4,4-4c2.21,0,4,1.79,4,4C16,14.21,14.21,16,12,16z M4.7,17.36 c0.48-0.28,0.64-0.89,0.37-1.37c-1.39-2.41-1.42-5.41-0.08-7.84c0.27-0.48,0.09-1.09-0.39-1.36C4.11,6.52,3.5,6.7,3.23,7.18 c-1.67,3.04-1.64,6.8,0.1,9.81c0.19,0.32,0.52,0.5,0.87,0.5C4.37,17.49,4.54,17.45,4.7,17.36z M8.01,5.06 c2.4-1.39,5.41-1.42,7.84-0.08c0.48,0.27,1.09,0.09,1.36-0.39c0.27-0.48,0.09-1.09-0.39-1.36c-3.04-1.67-6.8-1.64-9.81,0.1 C6.53,3.61,6.37,4.22,6.64,4.7c0.19,0.32,0.52,0.5,0.87,0.5C7.68,5.2,7.85,5.16,8.01,5.06z M20.77,16.82 c1.67-3.04,1.64-6.8-0.1-9.81c-0.28-0.48-0.89-0.64-1.37-0.37c-0.48,0.28-0.64,0.89-0.37,1.37c1.39,2.41,1.42,5.41,0.08,7.84 c-0.27,0.48-0.09,1.09,0.39,1.36c0.15,0.08,0.32,0.12,0.48,0.12C20.24,17.33,20.58,17.15,20.77,16.82z M16.99,20.67 c0.48-0.28,0.64-0.89,0.37-1.37c-0.28-0.48-0.89-0.64-1.37-0.37c-2.41,1.39-5.41,1.42-7.84,0.08c-0.48-0.27-1.09-0.09-1.36,0.39 c-0.27,0.48-0.09,1.09,0.39,1.36C8.67,21.59,10.34,22,12,22C13.73,22,15.46,21.55,16.99,20.67z"/> +</vector>
\ No newline at end of file diff --git a/packages/overlays/IconPackKaiAndroidOverlay/Android.mk b/packages/overlays/IconPackKaiAndroidOverlay/Android.mk new file mode 100644 index 000000000000..11bd8b8a3f2c --- /dev/null +++ b/packages/overlays/IconPackKaiAndroidOverlay/Android.mk @@ -0,0 +1,28 @@ +# +# Copyright (C) 2020, The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +LOCAL_PATH:= $(call my-dir) +include $(CLEAR_VARS) + +LOCAL_RRO_THEME := IconPackKaiAndroid + +LOCAL_PRODUCT_MODULE := true + +LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res + +LOCAL_PACKAGE_NAME := IconPackKaiAndroidOverlay +LOCAL_SDK_VERSION := current + +include $(BUILD_RRO_PACKAGE) diff --git a/packages/overlays/IconPackKaiAndroidOverlay/AndroidManifest.xml b/packages/overlays/IconPackKaiAndroidOverlay/AndroidManifest.xml new file mode 100644 index 000000000000..f722d21af515 --- /dev/null +++ b/packages/overlays/IconPackKaiAndroidOverlay/AndroidManifest.xml @@ -0,0 +1,22 @@ +<!-- + ~ Copyright (C) 2020 The Android Open Source Project + ~ + ~ Licensed under the Apache License, Version 2.0 (the "License"); + ~ you may not use this file except in compliance with the License. + ~ You may obtain a copy of the License at + ~ + ~ http://www.apache.org/licenses/LICENSE-2.0 + ~ + ~ Unless required by applicable law or agreed to in writing, software + ~ distributed under the License is distributed on an "AS IS" BASIS, + ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + ~ See the License for the specific language governing permissions and + ~ limitations under the License. + --> +<manifest xmlns:android="http://schemas.android.com/apk/res/android" + package="com.android.theme.icon_pack.kai.android" + android:versionCode="1" + android:versionName="1.0"> + <overlay android:targetPackage="android" android:category="android.theme.customization.icon_pack.android" android:priority="1"/> + <application android:label="Kai" android:hasCode="false"/> +</manifest> diff --git a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_audio_alarm.xml b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_audio_alarm.xml new file mode 100644 index 000000000000..683e2b60a52c --- /dev/null +++ b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_audio_alarm.xml @@ -0,0 +1,34 @@ +<!-- + Copyright (C) 2020 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:tint="?android:attr/colorControlNormal" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:fillColor="@android:color/white" + android:pathData="M12,4.01c-6.86,0 -9,4.44 -9,8.99c0,4.59 2.12,8.99 9,8.99c6.86,0 9,-4.44 9,-8.99C21,8.41 18.88,4.01 12,4.01zM12,20.49C11.44,20.5 4.5,21.06 4.5,13c0,-2.3 0.59,-7.49 7.5,-7.49c0.56,-0.01 7.5,-0.56 7.5,7.49C19.5,21.02 12.53,20.49 12,20.49z"/> + <path + android:fillColor="@android:color/white" + android:pathData="M2.0575,5.6559l4.6068,-3.8442l0.961,1.1517l-4.6068,3.8442z"/> + <path + android:fillColor="@android:color/white" + android:pathData="M16.3786,2.9637l0.961,-1.1517l4.6068,3.8442l-0.961,1.1517z"/> + <path + android:fillColor="@android:color/white" + android:pathData="M12.5,8H11v4.88c0,0.4 0.16,0.78 0.44,1.06l3.1,3.1l1.06,-1.06l-3.1,-3.1V8z"/> +</vector> diff --git a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_bluetooth_transient_animation.xml b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_bluetooth_transient_animation.xml new file mode 100644 index 000000000000..3fd9f795d04e --- /dev/null +++ b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_bluetooth_transient_animation.xml @@ -0,0 +1,225 @@ +<!-- +/** + * Copyright (C) 2020, The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +--> +<animated-vector xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:aapt="http://schemas.android.com/aapt"> + <aapt:attr name="android:drawable"> + <vector + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <group android:name="_R_G"> + <group android:name="_R_G_L_0_G"> + <path + android:name="_R_G_L_0_G_D_0_P_0" + android:fillAlpha="1" + android:fillColor="#000000" + android:fillType="nonZero" + android:pathData=" M5 13.5 C4.93,13.5 3.5,13.59 3.5,12 C3.5,10.41 4.95,10.5 5,10.5 C5.07,10.5 6.5,10.41 6.5,12 C6.5,13.59 5.05,13.5 5,13.5c " /> + <path + android:name="_R_G_L_0_G_D_1_P_0" + android:fillAlpha="1" + android:fillColor="#000000" + android:fillType="nonZero" + android:pathData=" M19 13.5 C18.93,13.5 17.5,13.59 17.5,12 C17.5,10.41 18.95,10.5 19,10.5 C19.07,10.5 20.5,10.41 20.5,12 C20.5,13.59 19.05,13.5 19,13.5c " /> + <path + android:name="_R_G_L_0_G_D_2_P_0" + android:pathData=" M6.06 17.94 C6.06,17.94 16.32,7.68 16.32,7.68 C16.42,7.58 16.42,7.42 16.32,7.32 C16.32,7.32 12.18,3.18 12.18,3.18 C12.02,3.02 11.75,3.13 11.75,3.35 C11.75,3.35 11.75,12.25 11.75,12.25 " + android:strokeWidth="1.5" + android:strokeAlpha="1" + android:strokeColor="#000000" /> + <path + android:name="_R_G_L_0_G_D_3_P_0" + android:pathData=" M11.75 11.69 C11.75,11.69 11.75,20.59 11.75,20.59 C11.75,20.81 12.02,20.92 12.18,20.77 C12.18,20.77 16.32,16.62 16.32,16.62 C16.42,16.52 16.42,16.36 16.32,16.27 C16.32,16.27 6.06,6 6.06,6 " + android:strokeWidth="1.5" + android:strokeAlpha="1" + android:strokeColor="#000000" /> + </group> + </group> + <group android:name="time_group" /> + </vector> + </aapt:attr> + <target android:name="_R_G_L_0_G_D_0_P_0"> + <aapt:attr name="android:animation"> + <set android:ordering="together"> + <objectAnimator + android:duration="17" + android:propertyName="fillAlpha" + android:startOffset="0" + android:valueFrom="1" + android:valueTo="0.5" + android:valueType="floatType"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + <objectAnimator + android:duration="233" + android:propertyName="fillAlpha" + android:startOffset="17" + android:valueFrom="0.5" + android:valueTo="0.5" + android:valueType="floatType"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + <objectAnimator + android:duration="17" + android:propertyName="fillAlpha" + android:startOffset="250" + android:valueFrom="0.5" + android:valueTo="1" + android:valueType="floatType"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + <objectAnimator + android:duration="233" + android:propertyName="fillAlpha" + android:startOffset="267" + android:valueFrom="1" + android:valueTo="1" + android:valueType="floatType"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + <objectAnimator + android:duration="17" + android:propertyName="fillAlpha" + android:startOffset="500" + android:valueFrom="1" + android:valueTo="0.5" + android:valueType="floatType"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + <objectAnimator + android:duration="233" + android:propertyName="fillAlpha" + android:startOffset="517" + android:valueFrom="0.5" + android:valueTo="0.5" + android:valueType="floatType"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + <objectAnimator + android:duration="17" + android:propertyName="fillAlpha" + android:startOffset="750" + android:valueFrom="0.5" + android:valueTo="1" + android:valueType="floatType"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + </set> + </aapt:attr> + </target> + <target android:name="_R_G_L_0_G_D_1_P_0"> + <aapt:attr name="android:animation"> + <set android:ordering="together"> + <objectAnimator + android:duration="250" + android:propertyName="fillAlpha" + android:startOffset="0" + android:valueFrom="1" + android:valueTo="1" + android:valueType="floatType"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + <objectAnimator + android:duration="17" + android:propertyName="fillAlpha" + android:startOffset="250" + android:valueFrom="1" + android:valueTo="0.5" + android:valueType="floatType"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + <objectAnimator + android:duration="233" + android:propertyName="fillAlpha" + android:startOffset="267" + android:valueFrom="0.5" + android:valueTo="0.5" + android:valueType="floatType"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + <objectAnimator + android:duration="17" + android:propertyName="fillAlpha" + android:startOffset="500" + android:valueFrom="0.5" + android:valueTo="1" + android:valueType="floatType"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + <objectAnimator + android:duration="233" + android:propertyName="fillAlpha" + android:startOffset="517" + android:valueFrom="1" + android:valueTo="1" + android:valueType="floatType"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + <objectAnimator + android:duration="17" + android:propertyName="fillAlpha" + android:startOffset="750" + android:valueFrom="1" + android:valueTo="0.5" + android:valueType="floatType"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + </set> + </aapt:attr> + </target> + <target android:name="time_group"> + <aapt:attr name="android:animation"> + <set android:ordering="together"> + <objectAnimator + android:duration="1017" + android:propertyName="translateX" + android:startOffset="0" + android:valueFrom="0" + android:valueTo="1" + android:valueType="floatType" /> + </set> + </aapt:attr> + </target> +</animated-vector>
\ No newline at end of file diff --git a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_hotspot_transient_animation.xml b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_hotspot_transient_animation.xml new file mode 100644 index 000000000000..1978993d7875 --- /dev/null +++ b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_hotspot_transient_animation.xml @@ -0,0 +1,203 @@ +<!-- +/** + * Copyright (C) 2020, The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +--> +<animated-vector xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:aapt="http://schemas.android.com/aapt"> + <aapt:attr name="android:drawable"> + <vector + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <group android:name="_R_G"> + <group android:name="_R_G_L_0_G"> + <path + android:name="_R_G_L_0_G_D_0_P_0" + android:fillAlpha="1" + android:fillColor="#000000" + android:fillType="nonZero" + android:pathData=" M12.01 11.09 C9.98,11.09 10.1,12.92 10.1,13 C10.1,13.07 9.98,14.91 12.01,14.91 C14.03,14.91 13.92,13.08 13.92,13 C13.92,12.93 14.03,11.09 12.01,11.09c " /> + <path + android:name="_R_G_L_0_G_D_1_P_0" + android:pathData=" M8.46 16.55 C8.31,16.39 4.7,13.21 8.46,9.45 C12.22,5.69 15.43,9.33 15.55,9.45 C15.71,9.61 19.31,12.79 15.55,16.55 " + android:strokeWidth="1.5" + android:strokeAlpha="1" + android:strokeColor="#000000" /> + <path + android:name="_R_G_L_0_G_D_2_P_0" + android:pathData=" M5.76 19.25 C5.48,18.97 -0.86,13.37 5.76,6.75 C12.39,0.11 18.04,6.54 18.25,6.75 C18.53,7.03 24.87,12.63 18.25,19.26 " + android:strokeWidth="1.5" + android:strokeAlpha="1" + android:strokeColor="#000000" /> + </group> + </group> + <group android:name="time_group" /> + </vector> + </aapt:attr> + <target android:name="_R_G_L_0_G_D_0_P_0"> + <aapt:attr name="android:animation"> + <set android:ordering="together"> + <objectAnimator + android:duration="17" + android:propertyName="fillAlpha" + android:startOffset="0" + android:valueFrom="1" + android:valueTo="0.5" + android:valueType="floatType"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + <objectAnimator + android:duration="583" + android:propertyName="fillAlpha" + android:startOffset="17" + android:valueFrom="0.5" + android:valueTo="0.5" + android:valueType="floatType"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + <objectAnimator + android:duration="17" + android:propertyName="fillAlpha" + android:startOffset="600" + android:valueFrom="0.5" + android:valueTo="1" + android:valueType="floatType"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + </set> + </aapt:attr> + </target> + <target android:name="_R_G_L_0_G_D_1_P_0"> + <aapt:attr name="android:animation"> + <set android:ordering="together"> + <objectAnimator + android:duration="200" + android:propertyName="strokeAlpha" + android:startOffset="0" + android:valueFrom="1" + android:valueTo="1" + android:valueType="floatType"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + <objectAnimator + android:duration="17" + android:propertyName="strokeAlpha" + android:startOffset="200" + android:valueFrom="1" + android:valueTo="0.5" + android:valueType="floatType"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + <objectAnimator + android:duration="583" + android:propertyName="strokeAlpha" + android:startOffset="217" + android:valueFrom="0.5" + android:valueTo="0.5" + android:valueType="floatType"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + <objectAnimator + android:duration="17" + android:propertyName="strokeAlpha" + android:startOffset="800" + android:valueFrom="0.5" + android:valueTo="1" + android:valueType="floatType"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + </set> + </aapt:attr> + </target> + <target android:name="_R_G_L_0_G_D_2_P_0"> + <aapt:attr name="android:animation"> + <set android:ordering="together"> + <objectAnimator + android:duration="400" + android:propertyName="strokeAlpha" + android:startOffset="0" + android:valueFrom="1" + android:valueTo="1" + android:valueType="floatType"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + <objectAnimator + android:duration="17" + android:propertyName="strokeAlpha" + android:startOffset="400" + android:valueFrom="1" + android:valueTo="0.5" + android:valueType="floatType"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + <objectAnimator + android:duration="600" + android:propertyName="strokeAlpha" + android:startOffset="417" + android:valueFrom="0.5" + android:valueTo="0.5" + android:valueType="floatType"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + <objectAnimator + android:duration="17" + android:propertyName="strokeAlpha" + android:startOffset="1017" + android:valueFrom="0.5" + android:valueTo="1" + android:valueType="floatType"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + </set> + </aapt:attr> + </target> + <target android:name="time_group"> + <aapt:attr name="android:animation"> + <set android:ordering="together"> + <objectAnimator + android:duration="1250" + android:propertyName="translateX" + android:startOffset="0" + android:valueFrom="0" + android:valueTo="1" + android:valueType="floatType" /> + </set> + </aapt:attr> + </target> +</animated-vector>
\ No newline at end of file diff --git a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_screenshot.xml b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_screenshot.xml new file mode 100644 index 000000000000..4184a1ec06fb --- /dev/null +++ b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_screenshot.xml @@ -0,0 +1,30 @@ +<!-- + Copyright (C) 2020 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:fillColor="#FF000000" + android:pathData="M16.75,1h-9.5C6.01,1 5,2.01 5,3.25v17.5C5,21.99 6.01,23 7.25,23h9.5c1.24,0 2.25,-1.01 2.25,-2.25V3.25C19,2.01 17.99,1 16.75,1zM7.25,2.5h9.5c0.41,0 0.75,0.34 0.75,0.75v1h-11v-1C6.5,2.84 6.84,2.5 7.25,2.5zM17.5,5.75v12.5h-11V5.75H17.5zM16.75,21.5h-9.5c-0.41,0 -0.75,-0.34 -0.75,-0.75v-1h11v1C17.5,21.16 17.16,21.5 16.75,21.5z"/> + <path + android:fillColor="#FF000000" + android:pathData="M9.5,11V8.5H12V7H8.75C8.34,7 8,7.34 8,7.75V11H9.5z"/> + <path + android:fillColor="#FF000000" + android:pathData="M12,17h3.25c0.41,0 0.75,-0.34 0.75,-0.75V13h-1.5v2.5H12V17z"/> +</vector> diff --git a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_signal_wifi_transient_animation.xml b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_signal_wifi_transient_animation.xml new file mode 100644 index 000000000000..4a06d8392c18 --- /dev/null +++ b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_signal_wifi_transient_animation.xml @@ -0,0 +1,182 @@ +<!-- +/** + * Copyright (C) 2020, The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +--> +<animated-vector xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:aapt="http://schemas.android.com/aapt"> + <aapt:attr name="android:drawable"> + <vector + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <group android:name="_R_G"> + <group android:name="_R_G_L_0_G"> + <path + android:name="_R_G_L_0_G_D_0_P_0" + android:pathData=" M13.82 18.52 C13.29,18.05 11.85,17.07 10.19,18.53 " + android:strokeWidth="1.5" + android:strokeAlpha="0.3" + android:strokeColor="#000000" /> + <path + android:name="_R_G_L_0_G_D_1_P_0" + android:pathData=" M16.84 14.8 C15.45,13.55 11.6,10.89 7.17,14.81 " + android:strokeWidth="1.5" + android:strokeAlpha="0.3" + android:strokeColor="#000000" /> + <path + android:name="_R_G_L_0_G_D_2_P_0" + android:pathData=" M19.87 11.08 C17.6,9.05 11.36,4.73 4.15,11.09 " + android:strokeWidth="1.5" + android:strokeAlpha="0.3" + android:strokeColor="#000000" /> + <path + android:name="_R_G_L_0_G_D_3_P_0" + android:pathData=" M22.89 7.36 C19.75,4.55 11.11,-1.44 1.12,7.38 " + android:strokeWidth="1.5" + android:strokeAlpha="0.3" + android:strokeColor="#000000" /> + </group> + </group> + <group android:name="time_group" /> + </vector> + </aapt:attr> + <target android:name="_R_G_L_0_G_D_0_P_0"> + <aapt:attr name="android:animation"> + <set android:ordering="together"> + <objectAnimator + android:duration="150" + android:propertyName="strokeAlpha" + android:startOffset="0" + android:valueFrom="0.3" + android:valueTo="0.3" + android:valueType="floatType"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + <objectAnimator + android:duration="17" + android:propertyName="strokeAlpha" + android:startOffset="150" + android:valueFrom="0.3" + android:valueTo="1" + android:valueType="floatType"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + </set> + </aapt:attr> + </target> + <target android:name="_R_G_L_0_G_D_1_P_0"> + <aapt:attr name="android:animation"> + <set android:ordering="together"> + <objectAnimator + android:duration="317" + android:propertyName="strokeAlpha" + android:startOffset="0" + android:valueFrom="0.3" + android:valueTo="0.3" + android:valueType="floatType"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + <objectAnimator + android:duration="17" + android:propertyName="strokeAlpha" + android:startOffset="317" + android:valueFrom="0.3" + android:valueTo="1" + android:valueType="floatType"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + </set> + </aapt:attr> + </target> + <target android:name="_R_G_L_0_G_D_2_P_0"> + <aapt:attr name="android:animation"> + <set android:ordering="together"> + <objectAnimator + android:duration="483" + android:propertyName="strokeAlpha" + android:startOffset="0" + android:valueFrom="0.3" + android:valueTo="0.3" + android:valueType="floatType"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + <objectAnimator + android:duration="17" + android:propertyName="strokeAlpha" + android:startOffset="483" + android:valueFrom="0.3" + android:valueTo="1" + android:valueType="floatType"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + </set> + </aapt:attr> + </target> + <target android:name="_R_G_L_0_G_D_3_P_0"> + <aapt:attr name="android:animation"> + <set android:ordering="together"> + <objectAnimator + android:duration="650" + android:propertyName="strokeAlpha" + android:startOffset="0" + android:valueFrom="0.3" + android:valueTo="0.3" + android:valueType="floatType"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + <objectAnimator + android:duration="17" + android:propertyName="strokeAlpha" + android:startOffset="650" + android:valueFrom="0.3" + android:valueTo="1" + android:valueType="floatType"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + </set> + </aapt:attr> + </target> + <target android:name="time_group"> + <aapt:attr name="android:animation"> + <set android:ordering="together"> + <objectAnimator + android:duration="850" + android:propertyName="translateX" + android:startOffset="0" + android:valueFrom="0" + android:valueTo="1" + android:valueType="floatType" /> + </set> + </aapt:attr> + </target> +</animated-vector>
\ No newline at end of file diff --git a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_work_apps_off.xml b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_work_apps_off.xml new file mode 100644 index 000000000000..845545d78a1b --- /dev/null +++ b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_work_apps_off.xml @@ -0,0 +1,19 @@ +<!-- + Copyright (C) 2020 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<vector android:height="32dp" android:viewportHeight="24" android:viewportWidth="24" android:width="32dp" xmlns:android="http://schemas.android.com/apk/res/android"> + <path android:fillColor="@android:color/white" android:pathData="M19.5,19.5l-6-6L12,12L7.5,7.5L6,6L2.81,2.81L1.75,3.87l2.17,2.17C2.83,6.2,2,7.12,2,8.25v10.5C2,19.99,3.01,21,4.25,21 h14.63l1.25,1.25l1.06-1.06l-0.44-0.44L19.5,19.5z M4.25,19.5c-0.41,0-0.75-0.34-0.75-0.75V8.25c0-0.41,0.34-0.75,0.75-0.75h1.13 l5.27,5.27c-0.09,0.19-0.15,0.42-0.15,0.73c0,1.59,1.43,1.5,1.5,1.5c0.02,0,0.38,0.02,0.74-0.14l4.64,4.64H4.25z"/> + <path android:fillColor="@android:color/white" android:pathData="M9.62,7.5h10.13c0.41,0,0.75,0.34,0.75,0.75v10.13l1.28,1.28c0.13-0.28,0.22-0.58,0.22-0.91V8.25C22,7.01,20.99,6,19.75,6 H16c0,0,0,0,0,0c0-2.05-0.95-4-4-4C9.01,2,8.04,3.9,8.01,5.89L9.62,7.5z M12,3.5c0.54-0.01,2.5-0.11,2.5,2.5c0,0,0,0,0,0h-5 c0,0,0,0,0,0C9.5,3.39,11.45,3.48,12,3.5z"/> +</vector>
\ No newline at end of file diff --git a/packages/overlays/IconPackKaiLauncherOverlay/res/drawable/ic_screenshot.xml b/packages/overlays/IconPackKaiLauncherOverlay/res/drawable/ic_screenshot.xml new file mode 100644 index 000000000000..4184a1ec06fb --- /dev/null +++ b/packages/overlays/IconPackKaiLauncherOverlay/res/drawable/ic_screenshot.xml @@ -0,0 +1,30 @@ +<!-- + Copyright (C) 2020 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:fillColor="#FF000000" + android:pathData="M16.75,1h-9.5C6.01,1 5,2.01 5,3.25v17.5C5,21.99 6.01,23 7.25,23h9.5c1.24,0 2.25,-1.01 2.25,-2.25V3.25C19,2.01 17.99,1 16.75,1zM7.25,2.5h9.5c0.41,0 0.75,0.34 0.75,0.75v1h-11v-1C6.5,2.84 6.84,2.5 7.25,2.5zM17.5,5.75v12.5h-11V5.75H17.5zM16.75,21.5h-9.5c-0.41,0 -0.75,-0.34 -0.75,-0.75v-1h11v1C17.5,21.16 17.16,21.5 16.75,21.5z"/> + <path + android:fillColor="#FF000000" + android:pathData="M9.5,11V8.5H12V7H8.75C8.34,7 8,7.34 8,7.75V11H9.5z"/> + <path + android:fillColor="#FF000000" + android:pathData="M12,17h3.25c0.41,0 0.75,-0.34 0.75,-0.75V13h-1.5v2.5H12V17z"/> +</vector> diff --git a/packages/overlays/IconPackKaiLauncherOverlay/res/drawable/ic_select.xml b/packages/overlays/IconPackKaiLauncherOverlay/res/drawable/ic_select.xml new file mode 100644 index 000000000000..f949a0cbd859 --- /dev/null +++ b/packages/overlays/IconPackKaiLauncherOverlay/res/drawable/ic_select.xml @@ -0,0 +1,24 @@ +<!-- + Copyright (C) 2020 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:fillColor="@android:color/white" + android:pathData="M15.38,12.5h-1.25V8.12C14.13,6.95 13.18,6 12,6S9.88,6.95 9.88,8.12v7.9L7.91,15.5c-0.39,-0.1 -1.23,-0.36 -2.56,0.97c-0.29,0.29 -0.29,0.75 -0.01,1.05l3.79,3.98c0,0 0,0 0,0.01c1.37,1.41 3.28,1.51 4.04,1.49h2.2c2.12,0.06 5.25,-1.01 5.25,-5.25C20.63,13.19 17.11,12.46 15.38,12.5zM15.38,21.5h-2.25c-0.44,0.01 -1.93,-0.02 -2.92,-1.03l-3.27,-3.43c0.17,-0.1 0.38,-0.13 0.58,-0.08l2.91,0.78c0.47,0.12 0.94,-0.23 0.94,-0.72v-8.9c0,-0.34 0.28,-0.62 0.62,-0.62s0.62,0.28 0.62,0.62v5.12c0,0.41 0.33,0.75 0.75,0.75h2.05c1.26,-0.03 3.7,0.37 3.7,3.75C19.13,21.14 16.66,21.53 15.38,21.5zM3,8.25c0.41,0 0.75,0.34 0.75,0.75S3.41,9.75 3,9.75S2.25,9.41 2.25,9S2.59,8.25 3,8.25zM6,8.25c0.41,0 0.75,0.34 0.75,0.75S6.41,9.75 6,9.75C5.59,9.75 5.25,9.41 5.25,9S5.59,8.25 6,8.25zM18,8.25c0.41,0 0.75,0.34 0.75,0.75S18.41,9.75 18,9.75S17.25,9.41 17.25,9S17.59,8.25 18,8.25zM21,8.25c0.41,0 0.75,0.34 0.75,0.75S21.41,9.75 21,9.75S20.25,9.41 20.25,9S20.59,8.25 21,8.25zM12,2.25c0.41,0 0.75,0.34 0.75,0.75S12.41,3.75 12,3.75S11.25,3.41 11.25,3S11.59,2.25 12,2.25zM15,2.25c0.41,0 0.75,0.34 0.75,0.75S15.41,3.75 15,3.75S14.25,3.41 14.25,3S14.59,2.25 15,2.25zM3,2.25c0.41,0 0.75,0.34 0.75,0.75S3.41,3.75 3,3.75S2.25,3.41 2.25,3S2.59,2.25 3,2.25zM6,2.25c0.41,0 0.75,0.34 0.75,0.75S6.41,3.75 6,3.75C5.59,3.75 5.25,3.41 5.25,3S5.59,2.25 6,2.25zM9,2.25c0.41,0 0.75,0.34 0.75,0.75S9.41,3.75 9,3.75S8.25,3.41 8.25,3S8.59,2.25 9,2.25zM18,2.25c0.41,0 0.75,0.34 0.75,0.75S18.41,3.75 18,3.75S17.25,3.41 17.25,3S17.59,2.25 18,2.25zM21,2.25c0.41,0 0.75,0.34 0.75,0.75S21.41,3.75 21,3.75S20.25,3.41 20.25,3S20.59,2.25 21,2.25zM3,5.25c0.41,0 0.75,0.34 0.75,0.75c0,0.41 -0.34,0.75 -0.75,0.75S2.25,6.41 2.25,6C2.25,5.59 2.59,5.25 3,5.25zM21,5.25c0.41,0 0.75,0.34 0.75,0.75c0,0.41 -0.34,0.75 -0.75,0.75S20.25,6.41 20.25,6C20.25,5.59 20.59,5.25 21,5.25z"/> +</vector> diff --git a/packages/overlays/IconPackKaiLauncherOverlay/res/drawable/ic_share.xml b/packages/overlays/IconPackKaiLauncherOverlay/res/drawable/ic_share.xml new file mode 100644 index 000000000000..af0e60c24cba --- /dev/null +++ b/packages/overlays/IconPackKaiLauncherOverlay/res/drawable/ic_share.xml @@ -0,0 +1,31 @@ +<!-- + Copyright (C) 2020 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<vector android:height="24dp" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android"> + <path android:fillAlpha="0.24" android:fillColor="#3C00FF" android:pathData="M0,0v24h24V0H0z M22,22H2V2h20V22z" android:strokeAlpha="0.24" android:strokeWidth="1"/> + <path android:fillColor="#0081FF" android:pathData="M18,2.1c1.05,0,1.9,0.85,1.9,1.9v16c0,1.05-0.85,1.9-1.9,1.9H6c-1.05,0-1.9-0.85-1.9-1.9V4 c0-1.05,0.85-1.9,1.9-1.9H18 M18,2H6C4.9,2,4,2.9,4,4v16c0,1.1,0.9,2,2,2h12c1.1,0,2-0.9,2-2V4C20,2.9,19.1,2,18,2L18,2z"/> + <path android:fillColor="#0081FF" android:pathData="M20,4.1c1.05,0,1.9,0.85,1.9,1.9v12c0,1.05-0.85,1.9-1.9,1.9H4c-1.05,0-1.9-0.85-1.9-1.9V6 c0-1.05,0.85-1.9,1.9-1.9H20 M20,4H4C2.9,4,2,4.9,2,6v12c0,1.1,0.9,2,2,2h16c1.1,0,2-0.9,2-2V6C22,4.9,21.1,4,20,4L20,4z"/> + <path android:fillColor="#0081FF" android:pathData="M19,3.1c1.05,0,1.9,0.85,1.9,1.9v14c0,1.05-0.85,1.9-1.9,1.9H5c-1.05,0-1.9-0.85-1.9-1.9V5 c0-1.05,0.85-1.9,1.9-1.9H19 M19,3H5C3.9,3,3,3.9,3,5v14c0,1.1,0.9,2,2,2h14c1.1,0,2-0.9,2-2V5C21,3.9,20.1,3,19,3L19,3z"/> + <path android:fillColor="#0081FF" android:pathData="M12,6.1c3.25,0,5.9,2.65,5.9,5.9s-2.65,5.9-5.9,5.9S6.1,15.25,6.1,12S8.75,6.1,12,6.1 M12,6 c-3.31,0-6,2.69-6,6s2.69,6,6,6c3.31,0,6-2.69,6-6S15.31,6,12,6L12,6z"/> + <path android:fillColor="#0081FF" android:pathData="M21.9,2.1v19.8H2.1V2.1H21.9 M22,2H2v20h20V2L22,2z"/> + <path android:fillColor="#0081FF" android:pathData="M12,2.1c5.46,0,9.9,4.44,9.9,9.9s-4.44,9.9-9.9,9.9S2.1,17.46,2.1,12S6.54,2.1,12,2.1 M12,2 C6.48,2,2,6.48,2,12s4.48,10,10,10s10-4.48,10-10S17.52,2,12,2L12,2z"/> + <path android:pathData="M 2 2 L 22 22" android:strokeColor="#0081FF" android:strokeMiterLimit="10" android:strokeWidth="0.1"/> + <path android:pathData="M 22 2 L 2 22" android:strokeColor="#0081FF" android:strokeMiterLimit="10" android:strokeWidth="0.1"/> + <path android:fillColor="@android:color/white" android:pathData="M17.88,3.5l0.06,0l0.04,0H18l0.04,0l0.02,0l0.06,0c1.38,0,1.38,1.01,1.38,1.5s0,1.5-1.38,1.5l-0.06,0l-0.04,0H18l-0.04,0 l-0.02,0l-0.06,0C16.5,6.5,16.5,5.49,16.5,5S16.5,3.5,17.88,3.5 M17.88,2C17.33,2,15,2.15,15,5c0,2.85,2.31,3,2.88,3 c0.06,0,0.11,0,0.12,0c0.01,0,0.05,0,0.12,0C18.67,8,21,7.85,21,5c0-2.85-2.31-3-2.88-3C18.06,2,18.01,2,18,2 C17.99,2,17.95,2,17.88,2L17.88,2z"/> + <path android:fillColor="@android:color/white" android:pathData="M17.88,17.5l0.06,0l0.04,0H18l0.04,0l0.02,0l0.06,0c1.38,0,1.38,1.01,1.38,1.5s0,1.5-1.38,1.5l-0.06,0l-0.04,0H18l-0.04,0 l-0.02,0l-0.06,0c-1.38,0-1.38-1.01-1.38-1.5S16.5,17.5,17.88,17.5 M17.88,16C17.33,16,15,16.15,15,19c0,2.85,2.31,3,2.88,3 c0.06,0,0.11,0,0.12,0c0.01,0,0.05,0,0.12,0c0.56,0,2.88-0.15,2.88-3c0-2.85-2.31-3-2.88-3c-0.06,0-0.11,0-0.12,0 C17.99,16,17.95,16,17.88,16L17.88,16z"/> + <path android:fillColor="@android:color/white" android:pathData="M5.88,10.5l0.06,0l0.04,0H6l0.04,0l0.02,0l0.06,0c1.38,0,1.38,1.01,1.38,1.5s0,1.5-1.38,1.5l-0.06,0l-0.04,0H6l-0.04,0 l-0.02,0l-0.06,0C4.5,13.5,4.5,12.49,4.5,12S4.5,10.5,5.88,10.5 M5.88,9C5.33,9,3,9.15,3,12c0,2.85,2.31,3,2.88,3 c0.06,0,0.11,0,0.12,0c0.01,0,0.05,0,0.12,0C6.67,15,9,14.85,9,12c0-2.85-2.31-3-2.88-3C6.06,9,6.01,9,6,9C5.99,9,5.95,9,5.88,9 L5.88,9z"/> + <path android:pathData="M 16.01 6.16 L 8 10.83" android:strokeColor="#000000" android:strokeMiterLimit="10" android:strokeWidth="1.5"/> + <path android:pathData="M 16.06 17.87 L 8.19 13.28" android:strokeColor="#000000" android:strokeMiterLimit="10" android:strokeWidth="1.5"/> +</vector>
\ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_accessibility_generic.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_accessibility_generic.xml new file mode 100644 index 000000000000..900a3a6cb082 --- /dev/null +++ b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_accessibility_generic.xml @@ -0,0 +1,22 @@ +<!-- + Copyright (C) 2020 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<vector android:height="24dp" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android"> + <path android:fillColor="@android:color/white" android:pathData="M 8 22 C 8.55228474983 22 9 22.4477152502 9 23 C 9 23.5522847498 8.55228474983 24 8 24 C 7.44771525017 24 7 23.5522847498 7 23 C 7 22.4477152502 7.44771525017 22 8 22 Z"/> + <path android:fillColor="@android:color/white" android:pathData="M 12 22 C 12.5522847498 22 13 22.4477152502 13 23 C 13 23.5522847498 12.5522847498 24 12 24 C 11.4477152502 24 11 23.5522847498 11 23 C 11 22.4477152502 11.4477152502 22 12 22 Z"/> + <path android:fillColor="@android:color/white" android:pathData="M 16 22 C 16.5522847498 22 17 22.4477152502 17 23 C 17 23.5522847498 16.5522847498 24 16 24 C 15.4477152502 24 15 23.5522847498 15 23 C 15 22.4477152502 15.4477152502 22 16 22 Z"/> + <path android:fillColor="@android:color/white" android:pathData="M 12 0 C 13.1045694997 0 14 0.895430500338 14 2 C 14 3.10456949966 13.1045694997 4 12 4 C 10.8954305003 4 10 3.10456949966 10 2 C 10 0.895430500338 10.8954305003 0 12 0 Z"/> + <path android:fillColor="@android:color/white" android:pathData="M15,20V7c2-0.17,4.14-0.5,6-1l-0.5-2c-2.61,0.7-5.67,1-8.5,1S6.11,4.7,3.5,4L3,6c1.86,0.5,4,0.83,6,1v13h2v-6h2v6H15z"/> +</vector>
\ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_restore.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_restore.xml new file mode 100644 index 000000000000..c3ab52f4ce59 --- /dev/null +++ b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_restore.xml @@ -0,0 +1,19 @@ +<!-- + Copyright (C) 2020 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<vector android:height="24dp" android:tint="?android:attr/colorControlNormal" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android"> + <path android:fillColor="@android:color/white" android:pathData="M12.98,3C10.03,2.93,4,4.16,4,12v0.19L1.78,9.97l-1.06,1.06l3.5,3.5c0.29,0.29,0.77,0.29,1.06,0l3.5-3.5L7.72,9.97 L5.5,12.19V12c0-6.75,4.97-7.5,7.5-7.5c6.79,0,7.5,4.95,7.5,7.5c0,7.92-6.98,7.5-7.5,7.5c-2.13,0-4.19-0.46-5.67-2.01l-1.08,1.04 c2.24,2.34,5.41,2.5,6.76,2.48c3.65,0.1,9-1.66,9-9C22,4.09,15.94,2.93,12.98,3z"/> + <path android:fillColor="@android:color/white" android:pathData="M12.25,7v5c0,0.2,0.08,0.39,0.22,0.53l3.5,3.5l1.06-1.06l-3.28-3.28V7H12.25z"/> +</vector>
\ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_force_stop.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_force_stop.xml new file mode 100644 index 000000000000..e663f5065bca --- /dev/null +++ b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_force_stop.xml @@ -0,0 +1,20 @@ +<!-- + Copyright (C) 2020 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<vector android:height="24dp" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android"> + <path android:fillColor="@android:color/white" android:pathData="M22.4,19.87L12.65,3.12c-0.27-0.46-1.03-0.46-1.3,0L1.6,19.87C1.31,20.37,1.67,21,2.25,21h19.5 C22.33,21,22.69,20.37,22.4,19.87z M3.55,19.5L12,4.99l8.45,14.51H3.55z"/> + <path android:fillColor="@android:color/white" android:pathData="M 11.25 10 H 12.75 V 15 H 11.25 V 10 Z"/> + <path android:fillColor="@android:color/white" android:pathData="M 12 16.5 C 12.4142135624 16.5 12.75 16.8357864376 12.75 17.25 C 12.75 17.6642135624 12.4142135624 18 12 18 C 11.5857864376 18 11.25 17.6642135624 11.25 17.25 C 11.25 16.8357864376 11.5857864376 16.5 12 16.5 Z"/> +</vector>
\ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_gestures.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_gestures.xml new file mode 100644 index 000000000000..45bbcb180ecb --- /dev/null +++ b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_gestures.xml @@ -0,0 +1,19 @@ +<!-- + Copyright (C) 2020 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<vector android:height="24dp" android:tint="?android:attr/colorControlNormal" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android"> + <path android:fillColor="@android:color/white" android:pathData="M17.5,18.25h-11V5.75h11V7H19V3.25C19,2.01,17.99,1,16.75,1h-9.5C6.01,1,5,2.01,5,3.25v17.5C5,21.99,6.01,23,7.25,23h9.5 c1.24,0,2.25-1.01,2.25-2.25V17h-1.5V18.25z M7.25,2.5h9.5c0.41,0,0.75,0.34,0.75,0.75v1h-11v-1C6.5,2.84,6.84,2.5,7.25,2.5z M16.75,21.5h-9.5c-0.41,0-0.75-0.34-0.75-0.75v-1h11v1C17.5,21.16,17.16,21.5,16.75,21.5z"/> + <path android:fillColor="@android:color/white" android:pathData="M21.33,11.33l-1.78-0.89l-0.89-1.78c-0.25-0.51-1.09-0.51-1.34,0l-0.89,1.78l-1.78,0.89c-0.25,0.13-0.42,0.39-0.42,0.67 s0.16,0.54,0.42,0.67l1.78,0.89l0.89,1.78c0.13,0.25,0.39,0.41,0.67,0.41s0.54-0.16,0.67-0.41l0.89-1.78l1.78-0.89 c0.25-0.13,0.42-0.39,0.42-0.67S21.59,11.46,21.33,11.33z"/> +</vector>
\ No newline at end of file diff --git a/packages/overlays/IconPackKaiSystemUIOverlay/Android.mk b/packages/overlays/IconPackKaiSystemUIOverlay/Android.mk new file mode 100644 index 000000000000..5e55f7d8d3af --- /dev/null +++ b/packages/overlays/IconPackKaiSystemUIOverlay/Android.mk @@ -0,0 +1,29 @@ +# +# Copyright (C) 2020, The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +LOCAL_PATH:= $(call my-dir) +include $(CLEAR_VARS) + +LOCAL_RRO_THEME := IconPackKaiSystemUI + +LOCAL_PRODUCT_MODULE := true + +LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res + +LOCAL_PACKAGE_NAME := IconPackKaiSystemUIOverlay +LOCAL_SDK_VERSION := current + +include $(BUILD_RRO_PACKAGE) diff --git a/packages/overlays/IconPackKaiSystemUIOverlay/res/anim/lock_lock.xml b/packages/overlays/IconPackKaiSystemUIOverlay/res/anim/lock_lock.xml new file mode 100644 index 000000000000..fbe5f098c395 --- /dev/null +++ b/packages/overlays/IconPackKaiSystemUIOverlay/res/anim/lock_lock.xml @@ -0,0 +1,318 @@ +<!-- +/** + * Copyright (C) 2020, The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +--> +<animated-vector xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:aapt="http://schemas.android.com/aapt"> + <aapt:attr name="android:drawable"> + <vector + android:width="24dp" + android:height="32dp" + android:viewportWidth="24" + android:viewportHeight="32"> + <group android:name="_R_G"> + <group + android:name="_R_G_L_2_G_T_1" + android:translateX="12" + android:translateY="19.001"> + <group + android:name="_R_G_L_2_G" + android:translateX="-12" + android:translateY="-15.001"> + <path + android:name="_R_G_L_2_G_D_0_P_0" + android:pathData=" M17.75 21.25 C17.75,21.25 6.25,21.25 6.25,21.25 C5.42,21.25 4.75,20.58 4.75,19.75 C4.75,19.75 4.75,10.25 4.75,10.25 C4.75,9.42 5.42,8.75 6.25,8.75 C6.25,8.75 17.75,8.75 17.75,8.75 C18.58,8.75 19.25,9.42 19.25,10.25 C19.25,10.25 19.25,19.75 19.25,19.75 C19.25,20.58 18.58,21.25 17.75,21.25c " + android:strokeWidth="1.5" + android:strokeAlpha="1" + android:strokeColor="#000000" /> + </group> + </group> + <group + android:name="_R_G_L_1_G_N_4_T_1" + android:translateX="12" + android:translateY="19.001"> + <group + android:name="_R_G_L_1_G_N_4_T_0" + android:translateX="-12" + android:translateY="-15.001"> + <group + android:name="_R_G_L_1_G" + android:pivotX="11.903" + android:pivotY="14.897" + android:scaleX="1" + android:scaleY="1"> + <path + android:name="_R_G_L_1_G_D_0_P_0" + android:pathData=" M12 17 C11.91,17 10,17.12 10,15 C10,12.88 11.93,13 12,13 C12.09,13 14,12.88 14,15 C14,17.12 12.07,17 12,17c " + android:strokeWidth="1.5" + android:strokeAlpha="1" + android:strokeColor="#000000" /> + </group> + </group> + </group> + <group + android:name="_R_G_L_0_G_N_4_T_1" + android:translateX="12" + android:translateY="19.001"> + <group + android:name="_R_G_L_0_G_N_4_T_0" + android:translateX="-12" + android:translateY="-15.001"> + <group android:name="_R_G_L_0_G"> + <path + android:name="_R_G_L_0_G_D_0_P_0" + android:pathData=" M22.13 5.86 C22.13,5.86 22.13,5.62 22.13,5.62 C22.13,1.31 18.12,1.83 18.25,1.83 C18.42,1.83 14.75,1.64 14.75,5.62 C14.75,5.62 14.75,8.99 14.75,8.99 " + android:strokeWidth="1.5" + android:strokeAlpha="1" + android:strokeColor="#000000" /> + </group> + </group> + </group> + </group> + <group android:name="time_group" /> + </vector> + </aapt:attr> + <target android:name="_R_G_L_2_G_T_1"> + <aapt:attr name="android:animation"> + <set android:ordering="together"> + <objectAnimator + android:duration="400" + android:propertyName="translateY" + android:startOffset="0" + android:valueFrom="19.001" + android:valueTo="19.001" + android:valueType="floatType"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0 0.667,1 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + <objectAnimator + android:duration="67" + android:propertyName="translateY" + android:startOffset="400" + android:valueFrom="19.001" + android:valueTo="20.5" + android:valueType="floatType"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + <objectAnimator + android:duration="83" + android:propertyName="translateY" + android:startOffset="467" + android:valueFrom="20.5" + android:valueTo="19.001" + android:valueType="floatType"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + </set> + </aapt:attr> + </target> + <target android:name="_R_G_L_1_G"> + <aapt:attr name="android:animation"> + <set android:ordering="together"> + <objectAnimator + android:duration="450" + android:propertyName="scaleX" + android:startOffset="0" + android:valueFrom="1" + android:valueTo="1" + android:valueType="floatType"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + <objectAnimator + android:duration="450" + android:propertyName="scaleY" + android:startOffset="0" + android:valueFrom="1" + android:valueTo="1" + android:valueType="floatType"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + <objectAnimator + android:duration="67" + android:propertyName="scaleX" + android:startOffset="450" + android:valueFrom="1" + android:valueTo="1.1" + android:valueType="floatType"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + <objectAnimator + android:duration="67" + android:propertyName="scaleY" + android:startOffset="450" + android:valueFrom="1" + android:valueTo="1.1" + android:valueType="floatType"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + <objectAnimator + android:duration="183" + android:propertyName="scaleX" + android:startOffset="517" + android:valueFrom="1.1" + android:valueTo="1" + android:valueType="floatType"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + <objectAnimator + android:duration="183" + android:propertyName="scaleY" + android:startOffset="517" + android:valueFrom="1.1" + android:valueTo="1" + android:valueType="floatType"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + </set> + </aapt:attr> + </target> + <target android:name="_R_G_L_1_G_N_4_T_1"> + <aapt:attr name="android:animation"> + <set android:ordering="together"> + <objectAnimator + android:duration="400" + android:propertyName="translateY" + android:startOffset="0" + android:valueFrom="19.001" + android:valueTo="19.001" + android:valueType="floatType"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0 0.667,1 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + <objectAnimator + android:duration="67" + android:propertyName="translateY" + android:startOffset="400" + android:valueFrom="19.001" + android:valueTo="20.5" + android:valueType="floatType"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + <objectAnimator + android:duration="83" + android:propertyName="translateY" + android:startOffset="467" + android:valueFrom="20.5" + android:valueTo="19.001" + android:valueType="floatType"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + </set> + </aapt:attr> + </target> + <target android:name="_R_G_L_0_G_D_0_P_0"> + <aapt:attr name="android:animation"> + <set android:ordering="together"> + <objectAnimator + android:duration="317" + android:propertyName="pathData" + android:startOffset="0" + android:valueFrom="M22.13 5.86 C22.13,5.86 22.13,5.62 22.13,5.62 C22.13,1.31 18.12,1.83 18.25,1.83 C18.42,1.83 14.75,1.64 14.75,5.62 C14.75,5.62 14.75,8.99 14.75,8.99 " + android:valueTo="M8.25 3.59 C8.25,3.59 8.25,2.75 8.25,2.75 C8.25,-1.23 11.87,-1 12,-1 C12.17,-1 15.75,-1.23 15.75,2.75 C15.75,2.75 15.75,9 15.75,9 " + android:valueType="pathType"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + <objectAnimator + android:duration="133" + android:propertyName="pathData" + android:startOffset="317" + android:valueFrom="M8.25 3.59 C8.25,3.59 8.25,2.75 8.25,2.75 C8.25,-1.23 11.87,-1 12,-1 C12.17,-1 15.75,-1.23 15.75,2.75 C15.75,2.75 15.75,9 15.75,9 " + android:valueTo="M8.25 8.75 C8.25,8.75 8.25,5.62 8.25,5.62 C8.25,1.64 11.87,1.88 12,1.88 C12.17,1.88 15.75,1.65 15.75,5.62 C15.75,5.62 15.75,9 15.75,9 " + android:valueType="pathType"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + </set> + </aapt:attr> + </target> + <target android:name="_R_G_L_0_G_N_4_T_1"> + <aapt:attr name="android:animation"> + <set android:ordering="together"> + <objectAnimator + android:duration="400" + android:propertyName="translateY" + android:startOffset="0" + android:valueFrom="19.001" + android:valueTo="19.001" + android:valueType="floatType"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0 0.667,1 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + <objectAnimator + android:duration="67" + android:propertyName="translateY" + android:startOffset="400" + android:valueFrom="19.001" + android:valueTo="20.5" + android:valueType="floatType"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + <objectAnimator + android:duration="83" + android:propertyName="translateY" + android:startOffset="467" + android:valueFrom="20.5" + android:valueTo="19.001" + android:valueType="floatType"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + </set> + </aapt:attr> + </target> + <target android:name="time_group"> + <aapt:attr name="android:animation"> + <set android:ordering="together"> + <objectAnimator + android:duration="733" + android:propertyName="translateX" + android:startOffset="0" + android:valueFrom="0" + android:valueTo="1" + android:valueType="floatType" /> + </set> + </aapt:attr> + </target> +</animated-vector>
\ No newline at end of file diff --git a/packages/overlays/IconPackKaiSystemUIOverlay/res/anim/lock_scanning.xml b/packages/overlays/IconPackKaiSystemUIOverlay/res/anim/lock_scanning.xml new file mode 100644 index 000000000000..e27284d108fb --- /dev/null +++ b/packages/overlays/IconPackKaiSystemUIOverlay/res/anim/lock_scanning.xml @@ -0,0 +1,18 @@ +<!-- +/** + * Copyright (C) 2020, The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +--> +<animated-vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:aapt="http://schemas.android.com/aapt"><aapt:attr name="android:drawable"><vector android:height="32dp" android:width="24dp" android:viewportHeight="32" android:viewportWidth="24"><group android:name="_R_G"><group android:name="_R_G_L_2_G" android:translateY="4" android:pivotX="12" android:pivotY="12" android:scaleX="1" android:scaleY="1"><path android:name="_R_G_L_2_G_D_0_P_0" android:strokeColor="#000000" android:strokeLineCap="round" android:strokeLineJoin="round" android:strokeWidth="1.5" android:strokeAlpha="1" android:pathData=" M17.75 21.25 C17.75,21.25 6.25,21.25 6.25,21.25 C5.42,21.25 4.75,20.58 4.75,19.75 C4.75,19.75 4.75,10.25 4.75,10.25 C4.75,9.42 5.42,8.75 6.25,8.75 C6.25,8.75 17.75,8.75 17.75,8.75 C18.58,8.75 19.25,9.42 19.25,10.25 C19.25,10.25 19.25,19.75 19.25,19.75 C19.25,20.58 18.58,21.25 17.75,21.25c "/></group><group android:name="_R_G_L_1_G_N_3_T_0" android:translateY="4" android:pivotX="12" android:pivotY="12" android:scaleX="1" android:scaleY="1"><group android:name="_R_G_L_1_G" android:pivotX="11.903" android:pivotY="14.897" android:scaleX="1" android:scaleY="1"><path android:name="_R_G_L_1_G_D_0_P_0" android:strokeColor="#000000" android:strokeLineCap="round" android:strokeLineJoin="round" android:strokeWidth="1.5" android:strokeAlpha="1" android:pathData=" M12 17 C11.91,17 10,17.12 10,15 C10,12.88 11.93,13 12,13 C12.09,13 14,12.88 14,15 C14,17.12 12.07,17 12,17c "/></group></group><group android:name="_R_G_L_0_G_N_3_T_0" android:translateY="4" android:pivotX="12" android:pivotY="12" android:scaleX="1" android:scaleY="1"><group android:name="_R_G_L_0_G_T_1" android:translateX="12" android:translateY="12"><group android:name="_R_G_L_0_G" android:translateX="-12" android:translateY="-12"><path android:name="_R_G_L_0_G_D_0_P_0" android:strokeColor="#000000" android:strokeLineCap="round" android:strokeLineJoin="round" android:strokeWidth="1.5" android:strokeAlpha="1" android:pathData=" M8.25 8.75 C8.25,8.75 8.25,5.62 8.25,5.62 C8.25,1.64 11.87,1.88 12,1.88 C12.17,1.88 15.75,1.65 15.75,5.62 C15.75,5.62 15.75,9 15.75,9 "/></group></group></group></group><group android:name="time_group"/></vector></aapt:attr><target android:name="_R_G_L_2_G"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="scaleX" android:duration="83" android:startOffset="0" android:valueFrom="1" android:valueTo="0.96" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleY" android:duration="83" android:startOffset="0" android:valueFrom="1" android:valueTo="0.96" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleX" android:duration="183" android:startOffset="83" android:valueFrom="0.96" android:valueTo="1.28" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleY" android:duration="183" android:startOffset="83" android:valueFrom="0.96" android:valueTo="1.28" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleX" android:duration="250" android:startOffset="267" android:valueFrom="1.28" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleY" android:duration="250" android:startOffset="267" android:valueFrom="1.28" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="_R_G_L_1_G"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="scaleX" android:duration="67" android:startOffset="0" android:valueFrom="1" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleY" android:duration="67" android:startOffset="0" android:valueFrom="1" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleX" android:duration="117" android:startOffset="67" android:valueFrom="1" android:valueTo="0.6" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleY" android:duration="117" android:startOffset="67" android:valueFrom="1" android:valueTo="0.6" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleX" android:duration="333" android:startOffset="183" android:valueFrom="0.6" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleY" android:duration="333" android:startOffset="183" android:valueFrom="0.6" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="_R_G_L_1_G_N_3_T_0"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="scaleX" android:duration="83" android:startOffset="0" android:valueFrom="1" android:valueTo="0.96" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleY" android:duration="83" android:startOffset="0" android:valueFrom="1" android:valueTo="0.96" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleX" android:duration="183" android:startOffset="83" android:valueFrom="0.96" android:valueTo="1.28" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleY" android:duration="183" android:startOffset="83" android:valueFrom="0.96" android:valueTo="1.28" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleX" android:duration="250" android:startOffset="267" android:valueFrom="1.28" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleY" android:duration="250" android:startOffset="267" android:valueFrom="1.28" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="_R_G_L_0_G_D_0_P_0"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="pathData" android:duration="150" android:startOffset="0" android:valueFrom="M8.25 8.75 C8.25,8.75 8.25,5.62 8.25,5.62 C8.25,1.64 11.87,1.88 12,1.88 C12.17,1.88 15.75,1.65 15.75,5.62 C15.75,5.62 15.75,9 15.75,9 " android:valueTo="M8.25 5.82 C8.25,5.82 8.25,5.62 8.25,5.62 C8.25,1.64 11.87,1.88 12,1.88 C12.17,1.88 15.75,1.65 15.75,5.62 C15.75,5.62 15.76,6.07 15.76,6.07 " android:valueType="pathType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="pathData" android:duration="117" android:startOffset="150" android:valueFrom="M8.25 5.82 C8.25,5.82 8.25,5.62 8.25,5.62 C8.25,1.64 11.87,1.88 12,1.88 C12.17,1.88 15.75,1.65 15.75,5.62 C15.75,5.62 15.76,6.07 15.76,6.07 " android:valueTo="M8.25 8.75 C8.25,8.75 8.25,5.62 8.25,5.62 C8.25,1.64 11.87,1.88 12,1.88 C12.17,1.88 15.75,1.65 15.75,5.62 C15.75,5.62 15.75,9 15.75,9 " android:valueType="pathType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="_R_G_L_0_G_T_1"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="translateXY" android:duration="150" android:startOffset="0" android:propertyXName="translateX" android:propertyYName="translateY" android:pathData="M 12,12C 12,12.42409592866898 12,14.545 12,14.545"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="translateXY" android:duration="117" android:startOffset="150" android:propertyXName="translateX" android:propertyYName="translateY" android:pathData="M 12,14.545C 12,14.545 12,12.42409592866898 12,12"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="_R_G_L_0_G_N_3_T_0"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="scaleX" android:duration="83" android:startOffset="0" android:valueFrom="1" android:valueTo="0.96" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleY" android:duration="83" android:startOffset="0" android:valueFrom="1" android:valueTo="0.96" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleX" android:duration="183" android:startOffset="83" android:valueFrom="0.96" android:valueTo="1.28" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleY" android:duration="183" android:startOffset="83" android:valueFrom="0.96" android:valueTo="1.28" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleX" android:duration="250" android:startOffset="267" android:valueFrom="1.28" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleY" android:duration="250" android:startOffset="267" android:valueFrom="1.28" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="time_group"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="translateX" android:duration="717" android:startOffset="0" android:valueFrom="0" android:valueTo="1" android:valueType="floatType"/></set></aapt:attr></target></animated-vector>
\ No newline at end of file diff --git a/packages/overlays/IconPackKaiSystemUIOverlay/res/anim/lock_to_error.xml b/packages/overlays/IconPackKaiSystemUIOverlay/res/anim/lock_to_error.xml new file mode 100644 index 000000000000..ad9daba1b5a1 --- /dev/null +++ b/packages/overlays/IconPackKaiSystemUIOverlay/res/anim/lock_to_error.xml @@ -0,0 +1,18 @@ +<!-- +/** + * Copyright (C) 2020, The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +--> +<animated-vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:aapt="http://schemas.android.com/aapt"><aapt:attr name="android:drawable"><vector android:height="24dp" android:width="24dp" android:viewportHeight="24" android:viewportWidth="24"><group android:name="_R_G"><group android:name="_R_G_L_2_G" android:pivotX="12" android:pivotY="15.001" android:rotation="0"><path android:name="_R_G_L_2_G_D_0_P_0" android:strokeColor="#000000" android:strokeLineCap="round" android:strokeLineJoin="round" android:strokeWidth="1.5" android:strokeAlpha="1" android:pathData=" M17.75 21.25 C17.75,21.25 6.25,21.25 6.25,21.25 C5.42,21.25 4.75,20.58 4.75,19.75 C4.75,19.75 4.75,10.25 4.75,10.25 C4.75,9.42 5.42,8.75 6.25,8.75 C6.25,8.75 17.75,8.75 17.75,8.75 C18.58,8.75 19.25,9.42 19.25,10.25 C19.25,10.25 19.25,19.75 19.25,19.75 C19.25,20.58 18.58,21.25 17.75,21.25c "/></group><group android:name="_R_G_L_1_G_N_3_T_0" android:pivotX="12" android:pivotY="15.001" android:rotation="0"><group android:name="_R_G_L_1_G"><path android:name="_R_G_L_1_G_D_0_P_0" android:strokeColor="#000000" android:strokeLineCap="round" android:strokeLineJoin="round" android:strokeWidth="1.5" android:strokeAlpha="1" android:pathData=" M12 17 C11.91,17 10,17.12 10,15 C10,12.88 11.93,13 12,13 C12.09,13 14,12.88 14,15 C14,17.12 12.07,17 12,17c "/></group></group><group android:name="_R_G_L_0_G_N_3_T_0" android:pivotX="12" android:pivotY="15.001" android:rotation="0"><group android:name="_R_G_L_0_G"><path android:name="_R_G_L_0_G_D_0_P_0" android:strokeColor="#000000" android:strokeLineCap="round" android:strokeLineJoin="round" android:strokeWidth="1.5" android:strokeAlpha="1" android:pathData=" M8.25 8.75 C8.25,8.75 8.25,5.62 8.25,5.62 C8.25,1.64 11.87,1.88 12,1.88 C12.17,1.88 15.75,1.65 15.75,5.62 C15.75,5.62 15.75,9 15.75,9 "/></group></group></group><group android:name="time_group"/></vector></aapt:attr><target android:name="_R_G_L_2_G"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="rotation" android:duration="117" android:startOffset="0" android:valueFrom="0" android:valueTo="-10" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.465,0 0.558,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="rotation" android:duration="100" android:startOffset="117" android:valueFrom="-10" android:valueTo="10" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.51,0 0.531,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="rotation" android:duration="100" android:startOffset="217" android:valueFrom="10" android:valueTo="-5" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.469,0 0.599,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="rotation" android:duration="167" android:startOffset="317" android:valueFrom="-5" android:valueTo="0" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.384,0 0.565,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="_R_G_L_1_G_N_3_T_0"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="rotation" android:duration="117" android:startOffset="0" android:valueFrom="0" android:valueTo="-10" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.465,0 0.558,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="rotation" android:duration="100" android:startOffset="117" android:valueFrom="-10" android:valueTo="10" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.51,0 0.531,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="rotation" android:duration="100" android:startOffset="217" android:valueFrom="10" android:valueTo="-5" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.469,0 0.599,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="rotation" android:duration="167" android:startOffset="317" android:valueFrom="-5" android:valueTo="0" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.384,0 0.565,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="_R_G_L_0_G_N_3_T_0"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="rotation" android:duration="117" android:startOffset="0" android:valueFrom="0" android:valueTo="-10" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.465,0 0.558,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="rotation" android:duration="100" android:startOffset="117" android:valueFrom="-10" android:valueTo="10" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.51,0 0.531,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="rotation" android:duration="100" android:startOffset="217" android:valueFrom="10" android:valueTo="-5" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.469,0 0.599,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="rotation" android:duration="167" android:startOffset="317" android:valueFrom="-5" android:valueTo="0" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.384,0 0.565,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="time_group"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="translateX" android:duration="717" android:startOffset="0" android:valueFrom="0" android:valueTo="1" android:valueType="floatType"/></set></aapt:attr></target></animated-vector>
\ No newline at end of file diff --git a/packages/overlays/IconPackKaiSystemUIOverlay/res/anim/lock_unlock.xml b/packages/overlays/IconPackKaiSystemUIOverlay/res/anim/lock_unlock.xml new file mode 100644 index 000000000000..abca59b3b67a --- /dev/null +++ b/packages/overlays/IconPackKaiSystemUIOverlay/res/anim/lock_unlock.xml @@ -0,0 +1,296 @@ +<!-- +/** + * Copyright (C) 2020, The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +--> +<animated-vector xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:aapt="http://schemas.android.com/aapt"> + <aapt:attr name="android:drawable"> + <vector + android:width="24dp" + android:height="32dp" + android:viewportWidth="24" + android:viewportHeight="32"> + <group android:name="_R_G"> + <group + android:name="_R_G_L_2_G_T_1" + android:translateX="12" + android:translateY="19.001"> + <group + android:name="_R_G_L_2_G" + android:translateX="-12" + android:translateY="-15.001"> + <path + android:name="_R_G_L_2_G_D_0_P_0" + android:pathData=" M17.75 21.25 C17.75,21.25 6.25,21.25 6.25,21.25 C5.42,21.25 4.75,20.58 4.75,19.75 C4.75,19.75 4.75,10.25 4.75,10.25 C4.75,9.42 5.42,8.75 6.25,8.75 C6.25,8.75 17.75,8.75 17.75,8.75 C18.58,8.75 19.25,9.42 19.25,10.25 C19.25,10.25 19.25,19.75 19.25,19.75 C19.25,20.58 18.58,21.25 17.75,21.25c " + android:strokeWidth="1.5" + android:strokeAlpha="1" + android:strokeColor="#000000" /> + </group> + </group> + <group + android:name="_R_G_L_1_G_N_4_T_1" + android:translateX="12" + android:translateY="19.001"> + <group + android:name="_R_G_L_1_G_N_4_T_0" + android:translateX="-12" + android:translateY="-15.001"> + <group + android:name="_R_G_L_1_G" + android:pivotX="11.903" + android:pivotY="14.897" + android:scaleX="1" + android:scaleY="1"> + <path + android:name="_R_G_L_1_G_D_0_P_0" + android:pathData=" M12 17 C11.91,17 10,17.12 10,15 C10,12.88 11.93,13 12,13 C12.09,13 14,12.88 14,15 C14,17.12 12.07,17 12,17c " + android:strokeWidth="1.5" + android:strokeAlpha="1" + android:strokeColor="#000000" /> + </group> + </group> + </group> + <group + android:name="_R_G_L_0_G_N_4_T_1" + android:translateX="12" + android:translateY="19.001"> + <group + android:name="_R_G_L_0_G_N_4_T_0" + android:translateX="-12" + android:translateY="-15.001"> + <group android:name="_R_G_L_0_G"> + <path + android:name="_R_G_L_0_G_D_0_P_0" + android:pathData=" M8.25 8.75 C8.25,8.75 8.25,5.62 8.25,5.62 C8.25,1.64 11.87,1.88 12,1.88 C12.17,1.88 15.75,1.65 15.75,5.62 C15.75,5.62 15.75,9 15.75,9 " + android:strokeWidth="1.5" + android:strokeAlpha="1" + android:strokeColor="#000000" /> + </group> + </group> + </group> + </group> + <group android:name="time_group" /> + </vector> + </aapt:attr> + <target android:name="_R_G_L_2_G_T_1"> + <aapt:attr name="android:animation"> + <set android:ordering="together"> + <objectAnimator + android:duration="133" + android:propertyName="translateY" + android:startOffset="0" + android:valueFrom="19.001" + android:valueTo="17.5" + android:valueType="floatType"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + <objectAnimator + android:duration="133" + android:propertyName="translateY" + android:startOffset="133" + android:valueFrom="17.5" + android:valueTo="20" + android:valueType="floatType"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + <objectAnimator + android:duration="100" + android:propertyName="translateY" + android:startOffset="267" + android:valueFrom="20" + android:valueTo="19.001" + android:valueType="floatType"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + </set> + </aapt:attr> + </target> + <target android:name="_R_G_L_1_G"> + <aapt:attr name="android:animation"> + <set android:ordering="together"> + <objectAnimator + android:duration="100" + android:propertyName="scaleX" + android:startOffset="0" + android:valueFrom="1" + android:valueTo="0.8200000000000001" + android:valueType="floatType"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.418,0 0.565,1 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + <objectAnimator + android:duration="100" + android:propertyName="scaleY" + android:startOffset="0" + android:valueFrom="1" + android:valueTo="0.8200000000000001" + android:valueType="floatType"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.418,0 0.565,1 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + <objectAnimator + android:duration="283" + android:propertyName="scaleX" + android:startOffset="100" + android:valueFrom="0.8200000000000001" + android:valueTo="1" + android:valueType="floatType"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.535,1 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + <objectAnimator + android:duration="283" + android:propertyName="scaleY" + android:startOffset="100" + android:valueFrom="0.8200000000000001" + android:valueTo="1" + android:valueType="floatType"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.535,1 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + </set> + </aapt:attr> + </target> + <target android:name="_R_G_L_1_G_N_4_T_1"> + <aapt:attr name="android:animation"> + <set android:ordering="together"> + <objectAnimator + android:duration="133" + android:propertyName="translateY" + android:startOffset="0" + android:valueFrom="19.001" + android:valueTo="17.5" + android:valueType="floatType"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + <objectAnimator + android:duration="133" + android:propertyName="translateY" + android:startOffset="133" + android:valueFrom="17.5" + android:valueTo="20" + android:valueType="floatType"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + <objectAnimator + android:duration="100" + android:propertyName="translateY" + android:startOffset="267" + android:valueFrom="20" + android:valueTo="19.001" + android:valueType="floatType"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + </set> + </aapt:attr> + </target> + <target android:name="_R_G_L_0_G_D_0_P_0"> + <aapt:attr name="android:animation"> + <set android:ordering="together"> + <objectAnimator + android:duration="67" + android:propertyName="pathData" + android:startOffset="0" + android:valueFrom="M8.25 8.75 C8.25,8.75 8.25,5.62 8.25,5.62 C8.25,1.64 11.87,1.88 12,1.88 C12.17,1.88 15.75,1.65 15.75,5.62 C15.75,5.62 15.75,9 15.75,9 " + android:valueTo="M8.25 3.59 C8.25,3.59 8.25,2.75 8.25,2.75 C8.25,-1.23 11.87,-1 12,-1 C12.17,-1 15.75,-1.23 15.75,2.75 C15.75,2.75 15.75,9 15.75,9 " + android:valueType="pathType"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + <objectAnimator + android:duration="333" + android:propertyName="pathData" + android:startOffset="67" + android:valueFrom="M8.25 3.59 C8.25,3.59 8.25,2.75 8.25,2.75 C8.25,-1.23 11.87,-1 12,-1 C12.17,-1 15.75,-1.23 15.75,2.75 C15.75,2.75 15.75,9 15.75,9 " + android:valueTo="M22.13 5.86 C22.13,5.86 22.13,5.62 22.13,5.62 C22.13,1.31 18.12,1.83 18.25,1.83 C18.42,1.83 14.75,1.64 14.75,5.62 C14.75,5.62 14.75,8.99 14.75,8.99 " + android:valueType="pathType"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + </set> + </aapt:attr> + </target> + <target android:name="_R_G_L_0_G_N_4_T_1"> + <aapt:attr name="android:animation"> + <set android:ordering="together"> + <objectAnimator + android:duration="133" + android:propertyName="translateY" + android:startOffset="0" + android:valueFrom="19.001" + android:valueTo="17.5" + android:valueType="floatType"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + <objectAnimator + android:duration="133" + android:propertyName="translateY" + android:startOffset="133" + android:valueFrom="17.5" + android:valueTo="20" + android:valueType="floatType"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + <objectAnimator + android:duration="100" + android:propertyName="translateY" + android:startOffset="267" + android:valueFrom="20" + android:valueTo="19.001" + android:valueType="floatType"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + </set> + </aapt:attr> + </target> + <target android:name="time_group"> + <aapt:attr name="android:animation"> + <set android:ordering="together"> + <objectAnimator + android:duration="733" + android:propertyName="translateX" + android:startOffset="0" + android:valueFrom="0" + android:valueTo="1" + android:valueType="floatType" /> + </set> + </aapt:attr> + </target> +</animated-vector>
\ No newline at end of file diff --git a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_brightness_thumb.xml b/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_brightness_thumb.xml new file mode 100644 index 000000000000..372059eab1da --- /dev/null +++ b/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_brightness_thumb.xml @@ -0,0 +1,20 @@ +<!-- + Copyright (C) 2020 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<vector android:height="24dp" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android"> + <path android:fillColor="?android:attr/colorBackgroundFloating" android:pathData="M18.72,9.53C18.58,9.39,18.5,9.2,18.5,9V5.5H15c-0.2,0-0.39-0.08-0.53-0.22L12,2.81L9.53,5.28 C9.39,5.42,9.2,5.5,9,5.5H5.5V9c0,0.2-0.08,0.39-0.22,0.53L2.81,12l2.47,2.47C5.42,14.61,5.5,14.8,5.5,15v3.5H9 c0.2,0,0.39,0.08,0.53,0.22L12,21.19l2.47-2.47c0.14-0.14,0.33-0.22,0.53-0.22h3.5V15c0-0.2,0.08-0.39,0.22-0.53L21.19,12 L18.72,9.53z M12,17c-2.76,0-5-2.24-5-5s2.24-5,5-5s5,2.24,5,5S14.76,17,12,17z"/> + <path android:fillColor="?android:attr/colorControlActivated" android:pathData="M22.78,11.47L20,8.69V4.75C20,4.34,19.66,4,19.25,4h-3.94l-2.78-2.78c-0.29-0.29-0.77-0.29-1.06,0L8.69,4H4.75 C4.34,4,4,4.34,4,4.75v3.94l-2.78,2.78c-0.29,0.29-0.29,0.77,0,1.06L4,15.31v3.94C4,19.66,4.34,20,4.75,20h3.94l2.78,2.78 C11.62,22.93,11.81,23,12,23s0.38-0.07,0.53-0.22L15.31,20h3.94c0.41,0,0.75-0.34,0.75-0.75v-3.94l2.78-2.78 C23.07,12.24,23.07,11.76,22.78,11.47z M18.72,14.47C18.58,14.61,18.5,14.8,18.5,15v3.5H15c-0.2,0-0.39,0.08-0.53,0.22L12,21.19 l-2.47-2.47C9.39,18.58,9.2,18.5,9,18.5H5.5V15c0-0.2-0.08-0.39-0.22-0.53L2.81,12l2.47-2.47C5.42,9.39,5.5,9.2,5.5,9V5.5H9 c0.2,0,0.39-0.08,0.53-0.22L12,2.81l2.47,2.47C14.61,5.42,14.8,5.5,15,5.5h3.5V9c0,0.2,0.08,0.39,0.22,0.53L21.19,12L18.72,14.47z"/> + <path android:fillColor="?android:attr/colorControlActivated" android:pathData="M 12 7 C 14.7614237492 7 17 9.23857625085 17 12 C 17 14.7614237492 14.7614237492 17 12 17 C 9.23857625085 17 7 14.7614237492 7 12 C 7 9.23857625085 9.23857625085 7 12 7 Z"/> +</vector>
\ No newline at end of file diff --git a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_screenrecord.xml b/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_screenrecord.xml new file mode 100644 index 000000000000..a379f9a2cfb9 --- /dev/null +++ b/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_screenrecord.xml @@ -0,0 +1,18 @@ +<!-- + Copyright (C) 2020 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<vector android:height="24dp" android:tint="?android:attr/colorControlNormal" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android"> + <path android:fillColor="@android:color/white" android:pathData="M12,16c-2.21,0-4-1.79-4-4c0-2.21,1.79-4,4-4c2.21,0,4,1.79,4,4C16,14.21,14.21,16,12,16z M6.64,4.87 C8.47,3.65,10.66,3.47,12,3.5c1.35-0.03,3.54,0.15,5.36,1.37l1.08-1.08C16.92,2.68,14.83,2,12,2C9.18,2,7.1,2.69,5.57,3.8 L6.64,4.87z M3.5,12c0-2.4,0.55-4.11,1.38-5.36L3.8,5.57C2.52,7.37,2,9.66,2,12c0,2.34,0.51,4.64,1.79,6.44l1.08-1.08 C4.05,16.11,3.5,14.4,3.5,12z M20.5,12c0,2.4-0.55,4.11-1.38,5.36l1.07,1.07c1.28-1.8,1.8-4.09,1.8-6.43 c0-2.34-0.51-4.64-1.79-6.44l-1.08,1.08C19.95,7.88,20.5,9.6,20.5,12z M17.36,19.13c-1.82,1.22-4.02,1.4-5.36,1.37 c-1.35,0.03-3.54-0.15-5.36-1.37l-1.08,1.08C7.08,21.32,9.17,22,12,22c2.82,0,4.9-0.69,6.43-1.8L17.36,19.13z"/> +</vector>
\ No newline at end of file diff --git a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_screenshot.xml b/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_screenshot.xml new file mode 100644 index 000000000000..4184a1ec06fb --- /dev/null +++ b/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_screenshot.xml @@ -0,0 +1,30 @@ +<!-- + Copyright (C) 2020 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:fillColor="#FF000000" + android:pathData="M16.75,1h-9.5C6.01,1 5,2.01 5,3.25v17.5C5,21.99 6.01,23 7.25,23h9.5c1.24,0 2.25,-1.01 2.25,-2.25V3.25C19,2.01 17.99,1 16.75,1zM7.25,2.5h9.5c0.41,0 0.75,0.34 0.75,0.75v1h-11v-1C6.5,2.84 6.84,2.5 7.25,2.5zM17.5,5.75v12.5h-11V5.75H17.5zM16.75,21.5h-9.5c-0.41,0 -0.75,-0.34 -0.75,-0.75v-1h11v1C17.5,21.16 17.16,21.5 16.75,21.5z"/> + <path + android:fillColor="#FF000000" + android:pathData="M9.5,11V8.5H12V7H8.75C8.34,7 8,7.34 8,7.75V11H9.5z"/> + <path + android:fillColor="#FF000000" + android:pathData="M12,17h3.25c0.41,0 0.75,-0.34 0.75,-0.75V13h-1.5v2.5H12V17z"/> +</vector> diff --git a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_volume_collapse_animation.xml b/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_volume_collapse_animation.xml new file mode 100644 index 000000000000..e5486dd98055 --- /dev/null +++ b/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_volume_collapse_animation.xml @@ -0,0 +1,69 @@ +<!-- +/** + * Copyright (C) 2020, The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +--> +<animated-vector xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:aapt="http://schemas.android.com/aapt"> + <aapt:attr name="android:drawable"> + <vector + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <group android:name="_R_G"> + <group android:name="_R_G_L_0_G"> + <path + android:name="_R_G_L_0_G_D_0_P_0" + android:pathData=" M4.54 15.47 C4.54,15.47 12.01,8 12.01,8 C12.01,8 19.48,15.47 19.48,15.47 " + android:strokeWidth="1.5" + android:strokeAlpha="1" + android:strokeColor="#000000" /> + </group> + </group> + <group android:name="time_group" /> + </vector> + </aapt:attr> + <target android:name="_R_G_L_0_G_D_0_P_0"> + <aapt:attr name="android:animation"> + <set android:ordering="together"> + <objectAnimator + android:duration="250" + android:propertyName="pathData" + android:startOffset="0" + android:valueFrom="M4.54 15.47 C4.54,15.47 12.01,8 12.01,8 C12.01,8 19.48,15.47 19.48,15.47 " + android:valueTo="M4.53 8.44 C4.53,8.44 11.98,16 11.98,16 C11.98,16 19.48,8.44 19.48,8.44 " + android:valueType="pathType"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.4,0 0.2,1 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + </set> + </aapt:attr> + </target> + <target android:name="time_group"> + <aapt:attr name="android:animation"> + <set android:ordering="together"> + <objectAnimator + android:duration="267" + android:propertyName="translateX" + android:startOffset="0" + android:valueFrom="0" + android:valueTo="1" + android:valueType="floatType" /> + </set> + </aapt:attr> + </target> +</animated-vector>
\ No newline at end of file diff --git a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_volume_expand_animation.xml b/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_volume_expand_animation.xml new file mode 100644 index 000000000000..e9dc04f68219 --- /dev/null +++ b/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_volume_expand_animation.xml @@ -0,0 +1,69 @@ +<!-- +/** + * Copyright (C) 2020, The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +--> +<animated-vector xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:aapt="http://schemas.android.com/aapt"> + <aapt:attr name="android:drawable"> + <vector + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <group android:name="_R_G"> + <group android:name="_R_G_L_0_G"> + <path + android:name="_R_G_L_0_G_D_0_P_0" + android:pathData=" M4.53 8.44 C4.53,8.44 11.98,16 11.98,16 C11.98,16 19.48,8.44 19.48,8.44 " + android:strokeWidth="1.5" + android:strokeAlpha="1" + android:strokeColor="#000000" /> + </group> + </group> + <group android:name="time_group" /> + </vector> + </aapt:attr> + <target android:name="_R_G_L_0_G_D_0_P_0"> + <aapt:attr name="android:animation"> + <set android:ordering="together"> + <objectAnimator + android:duration="250" + android:propertyName="pathData" + android:startOffset="0" + android:valueFrom="M4.53 8.44 C4.53,8.44 11.98,16 11.98,16 C11.98,16 19.48,8.44 19.48,8.44 " + android:valueTo="M4.54 15.47 C4.54,15.47 12.01,8 12.01,8 C12.01,8 19.48,15.47 19.48,15.47 " + android:valueType="pathType"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.4,0 0.2,1 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + </set> + </aapt:attr> + </target> + <target android:name="time_group"> + <aapt:attr name="android:animation"> + <set android:ordering="together"> + <objectAnimator + android:duration="267" + android:propertyName="translateX" + android:startOffset="0" + android:valueFrom="0" + android:valueTo="1" + android:valueType="floatType" /> + </set> + </aapt:attr> + </target> +</animated-vector>
\ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_screenrecord.xml b/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_screenrecord.xml new file mode 100644 index 000000000000..a875a23c3a17 --- /dev/null +++ b/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_screenrecord.xml @@ -0,0 +1,18 @@ +<!-- + Copyright (C) 2020 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<vector android:height="24dp" android:tint="?android:attr/colorControlNormal" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android"> + <path android:fillColor="@android:color/white" android:pathData="M4.13,17.62c-0.25,0-0.5-0.13-0.64-0.35c-1.98-3.2-1.98-7.33,0-10.53c0.22-0.35,0.68-0.46,1.03-0.24 c0.35,0.22,0.46,0.68,0.24,1.03c-1.68,2.72-1.68,6.23,0,8.95c0.22,0.35,0.11,0.81-0.24,1.03C4.4,17.58,4.27,17.62,4.13,17.62z M17.51,4.53c0.22-0.35,0.11-0.81-0.24-1.03c-3.2-1.98-7.33-1.98-10.53,0C6.39,3.71,6.28,4.17,6.49,4.53 c0.22,0.35,0.68,0.46,1.03,0.24c2.72-1.68,6.23-1.68,8.95,0c0.12,0.08,0.26,0.11,0.39,0.11C17.12,4.88,17.36,4.76,17.51,4.53z M17.26,20.51c0.35-0.22,0.46-0.68,0.24-1.03c-0.22-0.35-0.68-0.46-1.03-0.24c-2.72,1.68-6.23,1.68-8.95,0 c-0.35-0.22-0.81-0.11-1.03,0.24c-0.22,0.35-0.11,0.81,0.24,1.03c1.6,0.99,3.43,1.49,5.26,1.49S15.66,21.5,17.26,20.51z M20.51,17.26c1.98-3.2,1.98-7.33,0-10.53c-0.22-0.35-0.68-0.46-1.03-0.24c-0.35,0.22-0.46,0.68-0.24,1.03 c1.68,2.72,1.68,6.23,0,8.95c-0.22,0.35-0.11,0.81,0.24,1.03c0.12,0.08,0.26,0.11,0.39,0.11C20.12,17.62,20.36,17.49,20.51,17.26z M16,12c0-2.21-1.79-4-4-4c-2.21,0-4,1.79-4,4c0,2.21,1.79,4,4,4C14.21,16,16,14.21,16,12z"/> +</vector>
\ No newline at end of file diff --git a/packages/overlays/IconPackSamAndroidOverlay/Android.mk b/packages/overlays/IconPackSamAndroidOverlay/Android.mk new file mode 100644 index 000000000000..3a65af10af09 --- /dev/null +++ b/packages/overlays/IconPackSamAndroidOverlay/Android.mk @@ -0,0 +1,28 @@ +# +# Copyright (C) 2020, The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +LOCAL_PATH:= $(call my-dir) +include $(CLEAR_VARS) + +LOCAL_RRO_THEME := IconPackSamAndroid + +LOCAL_PRODUCT_MODULE := true + +LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res + +LOCAL_PACKAGE_NAME := IconPackSamAndroidOverlay +LOCAL_SDK_VERSION := current + +include $(BUILD_RRO_PACKAGE) diff --git a/packages/overlays/IconPackSamAndroidOverlay/AndroidManifest.xml b/packages/overlays/IconPackSamAndroidOverlay/AndroidManifest.xml new file mode 100644 index 000000000000..7c5a8a256448 --- /dev/null +++ b/packages/overlays/IconPackSamAndroidOverlay/AndroidManifest.xml @@ -0,0 +1,22 @@ +<!-- + ~ Copyright (C) 2020 The Android Open Source Project + ~ + ~ Licensed under the Apache License, Version 2.0 (the "License"); + ~ you may not use this file except in compliance with the License. + ~ You may obtain a copy of the License at + ~ + ~ http://www.apache.org/licenses/LICENSE-2.0 + ~ + ~ Unless required by applicable law or agreed to in writing, software + ~ distributed under the License is distributed on an "AS IS" BASIS, + ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + ~ See the License for the specific language governing permissions and + ~ limitations under the License. + --> +<manifest xmlns:android="http://schemas.android.com/apk/res/android" + package="com.android.theme.icon_pack.sam.android" + android:versionCode="1" + android:versionName="1.0"> + <overlay android:targetPackage="android" android:category="android.theme.customization.icon_pack.android" android:priority="1"/> + <application android:label="Sam" android:hasCode="false"/> +</manifest> diff --git a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_audio_alarm.xml b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_audio_alarm.xml new file mode 100644 index 000000000000..bc271b806c42 --- /dev/null +++ b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_audio_alarm.xml @@ -0,0 +1,31 @@ +<!-- + Copyright (C) 2020 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:tint="?android:attr/colorControlNormal" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:fillColor="@android:color/white" + android:pathData="M21.18,5.01l-3.07,-2.56c-0.42,-0.35 -1.05,-0.3 -1.41,0.13v0C16.34,3 16.4,3.63 16.82,3.99l3.07,2.56c0.42,0.35 1.05,0.3 1.41,-0.13C21.66,6 21.6,5.37 21.18,5.01z"/> + <path + android:fillColor="@android:color/white" + android:pathData="M4.1,6.55l3.07,-2.56C7.6,3.63 7.66,3 7.3,2.58l0,0C6.95,2.15 6.32,2.1 5.9,2.45L2.82,5.01C2.4,5.37 2.34,6 2.7,6.42l0,0C3.05,6.85 3.68,6.9 4.1,6.55z"/> + <path + android:fillColor="@android:color/white" + android:pathData="M12,4c-4.97,0 -9,4.03 -9,9c0,4.97 4.03,9 9,9s9,-4.03 9,-9C21,8.03 16.97,4 12,4zM15.5,16.5L15.5,16.5c-0.39,0.39 -1.03,0.39 -1.42,0L11.58,14C11.21,13.62 11,13.11 11,12.58V9c0,-0.55 0.45,-1 1,-1s1,0.45 1,1v3.59l2.5,2.49C15.89,15.47 15.89,16.11 15.5,16.5z"/> +</vector> diff --git a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_bluetooth_transient_animation.xml b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_bluetooth_transient_animation.xml new file mode 100644 index 000000000000..c2e4fdfac881 --- /dev/null +++ b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_bluetooth_transient_animation.xml @@ -0,0 +1,18 @@ +<!-- +/** + * Copyright (C) 2020, The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +--> +<animated-vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:aapt="http://schemas.android.com/aapt"><aapt:attr name="android:drawable"><vector android:height="24dp" android:width="24dp" android:viewportHeight="24" android:viewportWidth="24"><group android:name="_R_G"><group android:name="_R_G_L_0_G"><path android:name="_R_G_L_0_G_D_0_P_0" android:fillColor="#000000" android:fillAlpha="1" android:fillType="nonZero" android:pathData=" M6.51 12 C6.51,11.17 5.83,10.5 5.01,10.5 C4.18,10.5 3.51,11.17 3.51,12 C3.51,12.83 4.18,13.5 5.01,13.5 C5.83,13.5 6.51,12.83 6.51,12c "/><path android:name="_R_G_L_0_G_D_1_P_0" android:fillColor="#000000" android:fillAlpha="1" android:fillType="nonZero" android:pathData=" M19.01 10.5 C18.18,10.5 17.51,11.17 17.51,12 C17.51,12.83 18.18,13.5 19.01,13.5 C19.83,13.5 20.51,12.83 20.51,12 C20.51,11.17 19.83,10.5 19.01,10.5c "/><path android:name="_R_G_L_0_G_D_2_P_0" android:strokeColor="#000000" android:strokeLineCap="round" android:strokeLineJoin="round" android:strokeWidth="2" android:strokeAlpha="1" android:pathData=" M17.01 7.5 C17.01,5.02 14.99,3 12.51,3 C12.51,3 12.01,3 12.01,3 C11.45,3 11.01,3.45 11.01,4 C11.01,4 11.01,12 11.01,12 C11.01,12 12.51,12 12.51,12 C14.99,12 17.01,9.99 17.01,7.5c "/><path android:name="_R_G_L_0_G_D_3_P_0" android:strokeColor="#000000" android:strokeLineCap="round" android:strokeLineJoin="round" android:strokeWidth="2" android:strokeAlpha="1" android:pathData=" M17.01 16.5 C17.01,14.02 14.99,12 12.51,12 C12.51,12 11.01,12 11.01,12 C11.01,12 11.01,20 11.01,20 C11.01,20.55 11.45,21 12.01,21 C12.01,21 12.51,21 12.51,21 C14.99,21 17.01,18.99 17.01,16.5c "/><path android:name="_R_G_L_0_G_D_4_P_0" android:strokeColor="#000000" android:strokeLineCap="round" android:strokeLineJoin="round" android:strokeWidth="2" android:strokeAlpha="1" android:pathData=" M5.44 6 C5.44,6 11.44,12 11.44,12 "/><path android:name="_R_G_L_0_G_D_5_P_0" android:strokeColor="#000000" android:strokeLineCap="round" android:strokeLineJoin="round" android:strokeWidth="2" android:strokeAlpha="1" android:pathData=" M5.44 18 C5.44,18 11.44,12 11.44,12 "/></group></group><group android:name="time_group"/></vector></aapt:attr><target android:name="_R_G_L_0_G_D_0_P_0"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="fillAlpha" android:duration="17" android:startOffset="0" android:valueFrom="1" android:valueTo="0.5" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="fillAlpha" android:duration="233" android:startOffset="17" android:valueFrom="0.5" android:valueTo="0.5" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="fillAlpha" android:duration="17" android:startOffset="250" android:valueFrom="0.5" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="fillAlpha" android:duration="233" android:startOffset="267" android:valueFrom="1" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="fillAlpha" android:duration="17" android:startOffset="500" android:valueFrom="1" android:valueTo="0.5" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="fillAlpha" android:duration="233" android:startOffset="517" android:valueFrom="0.5" android:valueTo="0.5" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="fillAlpha" android:duration="17" android:startOffset="750" android:valueFrom="0.5" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="_R_G_L_0_G_D_1_P_0"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="fillAlpha" android:duration="250" android:startOffset="0" android:valueFrom="1" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="fillAlpha" android:duration="17" android:startOffset="250" android:valueFrom="1" android:valueTo="0.5" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="fillAlpha" android:duration="233" android:startOffset="267" android:valueFrom="0.5" android:valueTo="0.5" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="fillAlpha" android:duration="17" android:startOffset="500" android:valueFrom="0.5" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="fillAlpha" android:duration="233" android:startOffset="517" android:valueFrom="1" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="fillAlpha" android:duration="17" android:startOffset="750" android:valueFrom="1" android:valueTo="0.5" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="time_group"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="translateX" android:duration="1017" android:startOffset="0" android:valueFrom="0" android:valueTo="1" android:valueType="floatType"/></set></aapt:attr></target></animated-vector>
\ No newline at end of file diff --git a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_hotspot_transient_animation.xml b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_hotspot_transient_animation.xml new file mode 100644 index 000000000000..59b519cb7ca8 --- /dev/null +++ b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_hotspot_transient_animation.xml @@ -0,0 +1,18 @@ +<!-- +/** + * Copyright (C) 2020, The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +--> +<animated-vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:aapt="http://schemas.android.com/aapt"><aapt:attr name="android:drawable"><vector android:height="24dp" android:width="24dp" android:viewportHeight="24" android:viewportWidth="24"><group android:name="_R_G"><group android:name="_R_G_L_0_G"><path android:name="_R_G_L_0_G_D_0_P_0" android:fillColor="#000000" android:fillAlpha="1" android:fillType="nonZero" android:pathData=" M12 11 C10.9,11 10,11.9 10,13 C10,13.55 10.23,14.05 10.59,14.41 C10.95,14.77 11.45,15 12,15 C12.55,15 13.05,14.77 13.41,14.41 C13.77,14.05 14,13.55 14,13 C14,11.9 13.1,11 12,11c "/><path android:name="_R_G_L_0_G_D_1_P_0" android:strokeColor="#000000" android:strokeLineCap="round" android:strokeLineJoin="round" android:strokeWidth="2" android:strokeAlpha="1" android:pathData=" M7.82 15.74 C7.3,14.96 7,14.01 7,13 C7,10.24 9.24,8 12,8 C14.76,8 17,10.24 17,13 C17,14.02 16.7,14.96 16.18,15.75 "/><path android:name="_R_G_L_0_G_D_2_P_0" android:strokeColor="#000000" android:strokeLineCap="round" android:strokeLineJoin="round" android:strokeWidth="2" android:strokeAlpha="1" android:pathData=" M4.88 18.5 C3.7,16.98 3,15.07 3,13 C3,8.03 7.03,4 12,4 C16.97,4 21,8.03 21,13 C21,15.07 20.3,16.98 19.12,18.5 "/></group></group><group android:name="time_group"/></vector></aapt:attr><target android:name="_R_G_L_0_G_D_0_P_0"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="fillAlpha" android:duration="17" android:startOffset="0" android:valueFrom="1" android:valueTo="0.5" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="fillAlpha" android:duration="583" android:startOffset="17" android:valueFrom="0.5" android:valueTo="0.5" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="fillAlpha" android:duration="17" android:startOffset="600" android:valueFrom="0.5" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="_R_G_L_0_G_D_1_P_0"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="strokeAlpha" android:duration="200" android:startOffset="0" android:valueFrom="1" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="strokeAlpha" android:duration="17" android:startOffset="200" android:valueFrom="1" android:valueTo="0.5" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="strokeAlpha" android:duration="583" android:startOffset="217" android:valueFrom="0.5" android:valueTo="0.5" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="strokeAlpha" android:duration="17" android:startOffset="800" android:valueFrom="0.5" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="_R_G_L_0_G_D_2_P_0"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="strokeAlpha" android:duration="400" android:startOffset="0" android:valueFrom="1" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="strokeAlpha" android:duration="17" android:startOffset="400" android:valueFrom="1" android:valueTo="0.5" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="strokeAlpha" android:duration="583" android:startOffset="417" android:valueFrom="0.5" android:valueTo="0.5" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="strokeAlpha" android:duration="17" android:startOffset="1000" android:valueFrom="0.5" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="time_group"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="translateX" android:duration="1250" android:startOffset="0" android:valueFrom="0" android:valueTo="1" android:valueType="floatType"/></set></aapt:attr></target></animated-vector>
\ No newline at end of file diff --git a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_screenshot.xml b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_screenshot.xml new file mode 100644 index 000000000000..b5d4555a22f9 --- /dev/null +++ b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_screenshot.xml @@ -0,0 +1,30 @@ +<!-- + Copyright (C) 2020 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:fillColor="#FF000000" + android:pathData="M8.75,11c0.41,0 0.75,-0.34 0.75,-0.75V8.5h1.75C11.66,8.5 12,8.16 12,7.75C12,7.34 11.66,7 11.25,7H9C8.45,7 8,7.45 8,8v2.25C8,10.66 8.34,11 8.75,11z"/> + <path + android:fillColor="#FF000000" + android:pathData="M12.75,17H15c0.55,0 1,-0.45 1,-1v-2.25c0,-0.41 -0.34,-0.75 -0.75,-0.75s-0.75,0.34 -0.75,0.75v1.75h-1.75c-0.41,0 -0.75,0.34 -0.75,0.75C12,16.66 12.34,17 12.75,17z"/> + <path + android:fillColor="#FF000000" + android:pathData="M16,1H8C6.34,1 5,2.34 5,4v16c0,1.65 1.35,3 3,3h8c1.65,0 3,-1.35 3,-3V4C19,2.34 17.66,1 16,1zM17,18H7V6h10V18z"/> +</vector> diff --git a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_signal_wifi_transient_animation.xml b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_signal_wifi_transient_animation.xml new file mode 100644 index 000000000000..b3b0f5177f6a --- /dev/null +++ b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_signal_wifi_transient_animation.xml @@ -0,0 +1,18 @@ +<!-- +/** + * Copyright (C) 2020, The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +--> +<animated-vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:aapt="http://schemas.android.com/aapt"><aapt:attr name="android:drawable"><vector android:height="24dp" android:width="24dp" android:viewportHeight="24" android:viewportWidth="24"><group android:name="_R_G"><group android:name="_R_G_L_4_G"><path android:name="_R_G_L_4_G_D_0_P_0" android:strokeColor="#000000" android:strokeLineCap="round" android:strokeLineJoin="round" android:strokeWidth="2" android:strokeAlpha="1" android:pathData=" M12 4 C8.62,4 5.2,5.18 2.77,7.16 C1.89,7.87 1.73,9.16 2.47,10.03 C2.47,10.03 10.47,19.29 10.47,19.29 C11.27,20.24 12.73,20.24 13.53,19.29 C13.53,19.29 21.54,10.03 21.54,10.03 C22.27,9.16 22.11,7.87 21.23,7.16 C18.8,5.18 15.38,4 12,4c "/></group><group android:name="_R_G_L_3_G"><path android:name="_R_G_L_3_G_D_0_P_0" android:fillColor="#000000" android:fillAlpha="0" android:fillType="nonZero" android:pathData=" M12.01 13 C9.91,13 7.91,13.9 6.61,15.4 C6.61,15.4 9.69,19.16 9.69,19.16 C10.89,20.63 13.13,20.63 14.33,19.16 C14.33,19.16 17.41,15.4 17.41,15.4 C16.11,13.9 14.11,13 12.01,13c "/></group><group android:name="_R_G_L_2_G"><path android:name="_R_G_L_2_G_D_0_P_0" android:fillColor="#000000" android:fillAlpha="0" android:fillType="nonZero" android:pathData=" M12.01 10 C9.21,10 6.51,11.2 4.81,13.2 C4.81,13.2 9.69,19.16 9.69,19.16 C10.89,20.63 13.13,20.63 14.33,19.16 C14.33,19.16 19.21,13.2 19.21,13.2 C17.51,11.2 14.81,10 12.01,10c "/></group><group android:name="_R_G_L_1_G"><path android:name="_R_G_L_1_G_D_0_P_0" android:fillColor="#000000" android:fillAlpha="0" android:fillType="nonZero" android:pathData=" M12 7 C8.5,7 5.2,8.5 3,11 C3,11 9.68,19.16 9.68,19.16 C10.88,20.63 13.12,20.63 14.32,19.16 C14.32,19.16 21,11 21,11 C18.8,8.5 15.5,7 12,7c "/></group><group android:name="_R_G_L_0_G"><path android:name="_R_G_L_0_G_D_0_P_0" android:fillColor="#000000" android:fillAlpha="0" android:fillType="nonZero" android:pathData=" M12.01 4 C8.63,4 5.21,5.18 2.78,7.16 C1.89,7.87 1.74,9.16 2.47,10.03 C2.47,10.03 10.48,19.29 10.48,19.29 C11.28,20.24 12.74,20.24 13.54,19.29 C13.54,19.29 21.54,10.03 21.54,10.03 C22.27,9.16 22.12,7.87 21.24,7.16 C18.81,5.18 15.39,4 12.01,4c "/></group></group><group android:name="time_group"/></vector></aapt:attr><target android:name="_R_G_L_3_G_D_0_P_0"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="fillAlpha" android:duration="150" android:startOffset="0" android:valueFrom="0" android:valueTo="0" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="fillAlpha" android:duration="17" android:startOffset="150" android:valueFrom="0" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="_R_G_L_2_G_D_0_P_0"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="fillAlpha" android:duration="317" android:startOffset="0" android:valueFrom="0" android:valueTo="0" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="fillAlpha" android:duration="17" android:startOffset="317" android:valueFrom="0" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="_R_G_L_1_G_D_0_P_0"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="fillAlpha" android:duration="483" android:startOffset="0" android:valueFrom="0" android:valueTo="0" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="fillAlpha" android:duration="17" android:startOffset="483" android:valueFrom="0" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="_R_G_L_0_G_D_0_P_0"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="fillAlpha" android:duration="650" android:startOffset="0" android:valueFrom="0" android:valueTo="0" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="fillAlpha" android:duration="17" android:startOffset="650" android:valueFrom="0" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="time_group"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="translateX" android:duration="850" android:startOffset="0" android:valueFrom="0" android:valueTo="1" android:valueType="floatType"/></set></aapt:attr></target></animated-vector>
\ No newline at end of file diff --git a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_work_apps_off.xml b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_work_apps_off.xml new file mode 100644 index 000000000000..0e534e00f89f --- /dev/null +++ b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_work_apps_off.xml @@ -0,0 +1,19 @@ +<!-- + Copyright (C) 2020 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<vector android:height="32dp" android:viewportHeight="24" android:viewportWidth="24" android:width="32dp" xmlns:android="http://schemas.android.com/apk/res/android"> + <path android:fillColor="@android:color/white" android:pathData="M21.81,18.98C21.92,18.67,22,18.35,22,18V9c0-1.66-1.34-3-3-3h-3c0-2.21-1.79-4-4-4c-1.95,0-3.57,1.4-3.92,3.24 L21.81,18.98z M12,4c1.1,0,2,0.9,2,2h-4C10,4.9,10.9,4,12,4z"/> + <path android:fillColor="@android:color/white" android:pathData="M20.56,20.55l-17-17c0,0,0,0,0,0L3.45,3.44c-0.39-0.39-1.02-0.39-1.41,0s-0.39,1.02,0,1.41l1.53,1.53 C2.64,6.89,2,7.87,2,9v9c0,1.66,1.34,3,3,3h13.18l0.96,0.96c0.2,0.2,0.45,0.29,0.71,0.29s0.51-0.1,0.71-0.29 C20.94,21.57,20.94,20.94,20.56,20.55C20.56,20.55,20.56,20.55,20.56,20.55z M12,15c-0.83,0-1.5-0.67-1.5-1.5 c0-0.06,0.01-0.11,0.02-0.16l1.65,1.65C12.11,14.99,12.06,15,12,15z"/> +</vector>
\ No newline at end of file diff --git a/packages/overlays/IconPackSamLauncherOverlay/res/drawable/ic_screenshot.xml b/packages/overlays/IconPackSamLauncherOverlay/res/drawable/ic_screenshot.xml new file mode 100644 index 000000000000..b5d4555a22f9 --- /dev/null +++ b/packages/overlays/IconPackSamLauncherOverlay/res/drawable/ic_screenshot.xml @@ -0,0 +1,30 @@ +<!-- + Copyright (C) 2020 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:fillColor="#FF000000" + android:pathData="M8.75,11c0.41,0 0.75,-0.34 0.75,-0.75V8.5h1.75C11.66,8.5 12,8.16 12,7.75C12,7.34 11.66,7 11.25,7H9C8.45,7 8,7.45 8,8v2.25C8,10.66 8.34,11 8.75,11z"/> + <path + android:fillColor="#FF000000" + android:pathData="M12.75,17H15c0.55,0 1,-0.45 1,-1v-2.25c0,-0.41 -0.34,-0.75 -0.75,-0.75s-0.75,0.34 -0.75,0.75v1.75h-1.75c-0.41,0 -0.75,0.34 -0.75,0.75C12,16.66 12.34,17 12.75,17z"/> + <path + android:fillColor="#FF000000" + android:pathData="M16,1H8C6.34,1 5,2.34 5,4v16c0,1.65 1.35,3 3,3h8c1.65,0 3,-1.35 3,-3V4C19,2.34 17.66,1 16,1zM17,18H7V6h10V18z"/> +</vector> diff --git a/packages/overlays/IconPackSamLauncherOverlay/res/drawable/ic_select.xml b/packages/overlays/IconPackSamLauncherOverlay/res/drawable/ic_select.xml new file mode 100644 index 000000000000..86a15e6958f4 --- /dev/null +++ b/packages/overlays/IconPackSamLauncherOverlay/res/drawable/ic_select.xml @@ -0,0 +1,24 @@ +<!-- + Copyright (C) 2020 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:fillColor="@android:color/white" + android:pathData="M18.45,14.43l-3.23,-1.61c-0.42,-0.21 -0.88,-0.32 -1.34,-0.32H13.5v-5C13.5,6.67 12.83,6 12,6s-1.5,0.67 -1.5,1.5v9.12c0,0.32 -0.29,0.55 -0.6,0.49l-2.84,-0.6c-0.37,-0.08 -0.76,0.04 -1.03,0.31C5.6,17.26 5.6,17.96 6.04,18.4l3.71,3.71c0.56,0.57 1.33,0.89 2.12,0.89h4.82c1.49,0 2.76,-1.1 2.97,-2.58l0.41,-2.89C20.26,16.26 19.6,15.01 18.45,14.43zM3,8.25c0.41,0 0.75,0.34 0.75,0.75S3.41,9.75 3,9.75S2.25,9.41 2.25,9S2.59,8.25 3,8.25zM6,8.25c0.41,0 0.75,0.34 0.75,0.75S6.41,9.75 6,9.75C5.59,9.75 5.25,9.41 5.25,9S5.59,8.25 6,8.25zM18,8.25c0.41,0 0.75,0.34 0.75,0.75S18.41,9.75 18,9.75S17.25,9.41 17.25,9S17.59,8.25 18,8.25zM21,8.25c0.41,0 0.75,0.34 0.75,0.75S21.41,9.75 21,9.75S20.25,9.41 20.25,9S20.59,8.25 21,8.25zM12,2.25c0.41,0 0.75,0.34 0.75,0.75S12.41,3.75 12,3.75S11.25,3.41 11.25,3S11.59,2.25 12,2.25zM15,2.25c0.41,0 0.75,0.34 0.75,0.75S15.41,3.75 15,3.75S14.25,3.41 14.25,3S14.59,2.25 15,2.25zM3,2.25c0.41,0 0.75,0.34 0.75,0.75S3.41,3.75 3,3.75S2.25,3.41 2.25,3S2.59,2.25 3,2.25zM6,2.25c0.41,0 0.75,0.34 0.75,0.75S6.41,3.75 6,3.75C5.59,3.75 5.25,3.41 5.25,3S5.59,2.25 6,2.25zM9,2.25c0.41,0 0.75,0.34 0.75,0.75S9.41,3.75 9,3.75S8.25,3.41 8.25,3S8.59,2.25 9,2.25zM18,2.25c0.41,0 0.75,0.34 0.75,0.75S18.41,3.75 18,3.75S17.25,3.41 17.25,3S17.59,2.25 18,2.25zM21,2.25c0.41,0 0.75,0.34 0.75,0.75S21.41,3.75 21,3.75S20.25,3.41 20.25,3S20.59,2.25 21,2.25zM3,5.25c0.41,0 0.75,0.34 0.75,0.75c0,0.41 -0.34,0.75 -0.75,0.75S2.25,6.41 2.25,6C2.25,5.59 2.59,5.25 3,5.25zM21,5.25c0.41,0 0.75,0.34 0.75,0.75c0,0.41 -0.34,0.75 -0.75,0.75S20.25,6.41 20.25,6C20.25,5.59 20.59,5.25 21,5.25z"/> +</vector> diff --git a/packages/overlays/IconPackSamLauncherOverlay/res/drawable/ic_share.xml b/packages/overlays/IconPackSamLauncherOverlay/res/drawable/ic_share.xml new file mode 100644 index 000000000000..4aaa6593ecf2 --- /dev/null +++ b/packages/overlays/IconPackSamLauncherOverlay/res/drawable/ic_share.xml @@ -0,0 +1,31 @@ +<!-- + Copyright (C) 2020 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<vector android:height="24dp" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android"> + <path android:fillAlpha="0.24" android:fillColor="#3C00FF" android:pathData="M0,0v24h24V0H0z M22,22H2V2h20V22z" android:strokeAlpha="0.24" android:strokeWidth="1"/> + <path android:fillColor="#0081FF" android:pathData="M18,2.1c1.05,0,1.9,0.85,1.9,1.9v16c0,1.05-0.85,1.9-1.9,1.9H6c-1.05,0-1.9-0.85-1.9-1.9V4 c0-1.05,0.85-1.9,1.9-1.9H18 M18,2H6C4.9,2,4,2.9,4,4v16c0,1.1,0.9,2,2,2h12c1.1,0,2-0.9,2-2V4C20,2.9,19.1,2,18,2L18,2z"/> + <path android:fillColor="#0081FF" android:pathData="M20,4.1c1.05,0,1.9,0.85,1.9,1.9v12c0,1.05-0.85,1.9-1.9,1.9H4c-1.05,0-1.9-0.85-1.9-1.9V6 c0-1.05,0.85-1.9,1.9-1.9H20 M20,4H4C2.9,4,2,4.9,2,6v12c0,1.1,0.9,2,2,2h16c1.1,0,2-0.9,2-2V6C22,4.9,21.1,4,20,4L20,4z"/> + <path android:fillColor="#0081FF" android:pathData="M19,3.1c1.05,0,1.9,0.85,1.9,1.9v14c0,1.05-0.85,1.9-1.9,1.9H5c-1.05,0-1.9-0.85-1.9-1.9V5 c0-1.05,0.85-1.9,1.9-1.9H19 M19,3H5C3.9,3,3,3.9,3,5v14c0,1.1,0.9,2,2,2h14c1.1,0,2-0.9,2-2V5C21,3.9,20.1,3,19,3L19,3z"/> + <path android:fillColor="#0081FF" android:pathData="M12,6.1c3.25,0,5.9,2.65,5.9,5.9s-2.65,5.9-5.9,5.9S6.1,15.25,6.1,12S8.75,6.1,12,6.1 M12,6 c-3.31,0-6,2.69-6,6s2.69,6,6,6c3.31,0,6-2.69,6-6S15.31,6,12,6L12,6z"/> + <path android:fillColor="#0081FF" android:pathData="M21.9,2.1v19.8H2.1V2.1H21.9 M22,2H2v20h20V2L22,2z"/> + <path android:fillColor="#0081FF" android:pathData="M12,2.1c5.46,0,9.9,4.44,9.9,9.9s-4.44,9.9-9.9,9.9S2.1,17.46,2.1,12S6.54,2.1,12,2.1 M12,2 C6.48,2,2,6.48,2,12s4.48,10,10,10s10-4.48,10-10S17.52,2,12,2L12,2z"/> + <path android:pathData="M 2 2 L 22 22" android:strokeColor="#0081FF" android:strokeMiterLimit="10" android:strokeWidth="0.1"/> + <path android:pathData="M 22 2 L 2 22" android:strokeColor="#0081FF" android:strokeMiterLimit="10" android:strokeWidth="0.1"/> + <path android:pathData="M 18 5 L 6 12" android:strokeColor="#000000" android:strokeMiterLimit="10" android:strokeWidth="2"/> + <path android:pathData="M 18 19 L 6 12" android:strokeColor="#000000" android:strokeMiterLimit="10" android:strokeWidth="2"/> + <path android:fillColor="@android:color/white" android:pathData="M 18 2 C 19.6568542495 2 21 3.34314575051 21 5 C 21 6.65685424949 19.6568542495 8 18 8 C 16.3431457505 8 15 6.65685424949 15 5 C 15 3.34314575051 16.3431457505 2 18 2 Z"/> + <path android:fillColor="@android:color/white" android:pathData="M 18 16 C 19.6568542495 16 21 17.3431457505 21 19 C 21 20.6568542495 19.6568542495 22 18 22 C 16.3431457505 22 15 20.6568542495 15 19 C 15 17.3431457505 16.3431457505 16 18 16 Z"/> + <path android:fillColor="@android:color/white" android:pathData="M 6 9 C 7.65685424949 9 9 10.3431457505 9 12 C 9 13.6568542495 7.65685424949 15 6 15 C 4.34314575051 15 3 13.6568542495 3 12 C 3 10.3431457505 4.34314575051 9 6 9 Z"/> +</vector>
\ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_accessibility_generic.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_accessibility_generic.xml new file mode 100644 index 000000000000..3be42b3c88ab --- /dev/null +++ b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_accessibility_generic.xml @@ -0,0 +1,22 @@ +<!-- + Copyright (C) 2020 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<vector android:height="24dp" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android"> + <path android:fillColor="@android:color/white" android:pathData="M20.75,4.99c-0.14-0.55-0.69-0.87-1.24-0.75C17.13,4.77,14.48,5,12,5S6.87,4.77,4.49,4.24c-0.55-0.12-1.1,0.2-1.24,0.75 c-0.14,0.56,0.2,1.13,0.75,1.26C5.61,6.61,7.35,6.86,9,7v12c0,0.55,0.45,1,1,1s1-0.45,1-1v-4c0-0.55,0.45-1,1-1s1,0.45,1,1v4 c0,0.55,0.45,1,1,1s1-0.45,1-1V7c1.65-0.14,3.39-0.39,4.99-0.75C20.55,6.12,20.89,5.55,20.75,4.99z"/> + <path android:fillColor="@android:color/white" android:pathData="M 12 0 C 13.1045694997 0 14 0.895430500338 14 2 C 14 3.10456949966 13.1045694997 4 12 4 C 10.8954305003 4 10 3.10456949966 10 2 C 10 0.895430500338 10.8954305003 0 12 0 Z"/> + <path android:fillColor="@android:color/white" android:pathData="M 8 22 C 8.55228474983 22 9 22.4477152502 9 23 C 9 23.5522847498 8.55228474983 24 8 24 C 7.44771525017 24 7 23.5522847498 7 23 C 7 22.4477152502 7.44771525017 22 8 22 Z"/> + <path android:fillColor="@android:color/white" android:pathData="M 12 22 C 12.5522847498 22 13 22.4477152502 13 23 C 13 23.5522847498 12.5522847498 24 12 24 C 11.4477152502 24 11 23.5522847498 11 23 C 11 22.4477152502 11.4477152502 22 12 22 Z"/> + <path android:fillColor="@android:color/white" android:pathData="M 16 22 C 16.5522847498 22 17 22.4477152502 17 23 C 17 23.5522847498 16.5522847498 24 16 24 C 15.4477152502 24 15 23.5522847498 15 23 C 15 22.4477152502 15.4477152502 22 16 22 Z"/> +</vector>
\ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_restore.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_restore.xml new file mode 100644 index 000000000000..c41ec1854c98 --- /dev/null +++ b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_restore.xml @@ -0,0 +1,19 @@ +<!-- + Copyright (C) 2020 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<vector android:height="24dp" android:tint="?android:attr/colorControlNormal" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android"> + <path android:fillColor="@android:color/white" android:pathData="M13,3c-4.76,0-8.64,3.69-8.97,8.37l-1.12-1.12c-0.39-0.39-1.02-0.39-1.41,0c-0.39,0.39-0.39,1.02,0,1.41l2.08,2.09 c0.78,0.78,2.05,0.78,2.83,0l2.09-2.09c0.39-0.39,0.39-1.02,0-1.41l0,0c-0.39-0.39-1.02-0.39-1.41,0L6.04,11.3 c0.36-3.64,3.5-6.46,7.28-6.29c3.63,0.16,6.63,3.25,6.68,6.88c0.06,3.92-3.09,7.11-7,7.11c-1.61,0-3.1-0.55-4.28-1.47 c-0.4-0.31-0.96-0.28-1.32,0.08c-0.42,0.42-0.39,1.13,0.08,1.5c1.71,1.33,3.91,2.06,6.29,1.87c4.2-0.35,7.67-3.7,8.16-7.88 C22.58,7.63,18.33,3,13,3z M4.69,12.03L4.66,12h0.05C4.7,12.01,4.7,12.02,4.69,12.03z"/> + <path android:fillColor="@android:color/white" android:pathData="M13,7c-0.55,0-1,0.45-1,1v3.58c0,0.53,0.21,1.04,0.58,1.41l2.5,2.51c0.39,0.39,1.02,0.39,1.42,0l0,0 c0.39-0.39,0.39-1.02,0-1.42L14,11.59V8C14,7.45,13.55,7,13,7z"/> +</vector>
\ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_force_stop.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_force_stop.xml new file mode 100644 index 000000000000..f3dd2a1046d8 --- /dev/null +++ b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_force_stop.xml @@ -0,0 +1,20 @@ +<!-- + Copyright (C) 2020 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<vector android:height="24dp" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android"> + <path android:fillColor="@android:color/white" android:pathData="M21.26,18L13.73,4.99c-0.77-1.33-2.69-1.33-3.46,0L2.74,18c-0.77,1.33,0.19,3,1.73,3h15.06C21.07,21,22.03,19.33,21.26,18 z M4.47,19L12,5.99L19.53,19H4.47z"/> + <path android:fillColor="@android:color/white" android:pathData="M11,11v3c0,0.55,0.45,1,1,1c0.55,0,1-0.45,1-1v-3c0-0.55-0.45-1-1-1C11.45,10,11,10.45,11,11z"/> + <path android:fillColor="@android:color/white" android:pathData="M 12 16 C 12.5522847498 16 13 16.4477152502 13 17 C 13 17.5522847498 12.5522847498 18 12 18 C 11.4477152502 18 11 17.5522847498 11 17 C 11 16.4477152502 11.4477152502 16 12 16 Z"/> +</vector>
\ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_gestures.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_gestures.xml new file mode 100644 index 000000000000..f992127b8b05 --- /dev/null +++ b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_gestures.xml @@ -0,0 +1,20 @@ +<!-- + Copyright (C) 2020 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<vector android:height="24dp" android:tint="?android:attr/colorControlNormal" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android"> + <path android:fillColor="@android:color/white" android:pathData="M18,17c-0.55,0-1,0.45-1,1H7V6h10c0,0.55,0.45,1,1,1s1-0.45,1-1V4c0-1.66-1.34-3-3-3H8C6.34,1,5,2.34,5,4v16 c0,1.65,1.35,3,3,3h8c1.65,0,3-1.35,3-3v-2C19,17.45,18.55,17,18,17z"/> + <path android:fillColor="@android:color/white" android:pathData="M21.8,8.68l-0.49-0.23c-0.34-0.16-0.61-0.43-0.77-0.77L20.32,7.2c-0.13-0.27-0.51-0.27-0.63,0l-0.23,0.49 c-0.16,0.34-0.43,0.61-0.77,0.77L18.2,8.68c-0.27,0.13-0.27,0.51,0,0.63l0.49,0.23c0.34,0.16,0.61,0.43,0.77,0.77l0.23,0.49 c0.13,0.27,0.51,0.27,0.63,0l0.23-0.49c0.16-0.34,0.43-0.61,0.77-0.77l0.49-0.23C22.07,9.19,22.07,8.81,21.8,8.68z"/> + <path android:fillColor="@android:color/white" android:pathData="M19.7,12.53l-0.95-0.45c-0.36-0.17-0.65-0.46-0.82-0.82l-0.45-0.95c-0.19-0.4-0.76-0.4-0.95,0l-0.45,0.95 c-0.17,0.36-0.46,0.65-0.82,0.82l-0.95,0.45c-0.4,0.19-0.4,0.76,0,0.95l0.95,0.45c0.36,0.17,0.65,0.46,0.82,0.82l0.45,0.95 c0.19,0.4,0.76,0.4,0.95,0l0.45-0.95c0.17-0.36,0.46-0.65,0.82-0.82l0.95-0.45C20.1,13.29,20.1,12.71,19.7,12.53z"/> +</vector>
\ No newline at end of file diff --git a/packages/overlays/IconPackSamSystemUIOverlay/Android.mk b/packages/overlays/IconPackSamSystemUIOverlay/Android.mk new file mode 100644 index 000000000000..9f65a4c1c275 --- /dev/null +++ b/packages/overlays/IconPackSamSystemUIOverlay/Android.mk @@ -0,0 +1,29 @@ +# +# Copyright (C) 2020, The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +LOCAL_PATH:= $(call my-dir) +include $(CLEAR_VARS) + +LOCAL_RRO_THEME := IconPackSamSystemUI + +LOCAL_PRODUCT_MODULE := true + +LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res + +LOCAL_PACKAGE_NAME := IconPackSamSystemUIOverlay +LOCAL_SDK_VERSION := current + +include $(BUILD_RRO_PACKAGE) diff --git a/packages/overlays/IconPackSamSystemUIOverlay/res/anim/lock_lock.xml b/packages/overlays/IconPackSamSystemUIOverlay/res/anim/lock_lock.xml new file mode 100644 index 000000000000..8d9d015262ed --- /dev/null +++ b/packages/overlays/IconPackSamSystemUIOverlay/res/anim/lock_lock.xml @@ -0,0 +1,18 @@ +<!-- +/** + * Copyright (C) 2020, The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +--> +<animated-vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:aapt="http://schemas.android.com/aapt"><aapt:attr name="android:drawable"><vector android:height="32dp" android:width="24dp" android:viewportHeight="32" android:viewportWidth="24"><group android:name="_R_G"><group android:name="_R_G_L_1_G_T_1" android:translateX="12.006" android:translateY="19.001"><group android:name="_R_G_L_1_G" android:translateX="-12.006" android:translateY="-15"><path android:name="_R_G_L_1_G_D_0_P_0" android:fillColor="#000000" android:fillAlpha="1" android:fillType="nonZero" android:pathData=" M17.01 8 C17.01,8 7.01,8 7.01,8 C5.36,8 4.01,9.35 4.01,11 C4.01,11 4.01,19 4.01,19 C4.01,20.65 5.36,22 7.01,22 C7.01,22 17.01,22 17.01,22 C18.66,22 20.01,20.65 20.01,19 C20.01,19 20.01,11 20.01,11 C20.01,9.35 18.66,8 17.01,8c M12.01 17 C10.9,17 10.01,16.1 10.01,15 C10.01,13.9 10.9,13 12.01,13 C13.11,13 14.01,13.9 14.01,15 C14.01,16.1 13.11,17 12.01,17c "/></group></group><group android:name="_R_G_L_0_G_N_3_T_1" android:translateX="12.006" android:translateY="19.001"><group android:name="_R_G_L_0_G_N_3_T_0" android:translateX="-12.006" android:translateY="-15"><group android:name="_R_G_L_0_G"><path android:name="_R_G_L_0_G_D_0_P_0" android:strokeColor="#000000" android:strokeLineCap="round" android:strokeLineJoin="round" android:strokeWidth="2" android:strokeAlpha="1" android:pathData=" M14.95 10 C14.95,10 14.95,5.28 14.95,5.28 C14.95,3.35 16.47,1.94 18.39,1.97 C20.41,2.01 21.85,3.13 21.85,5.06 C21.85,5.06 21.85,5.06 21.85,5.06 "/></group></group></group></group><group android:name="time_group"/></vector></aapt:attr><target android:name="_R_G_L_1_G_D_0_P_0"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="pathData" android:duration="450" android:startOffset="0" android:valueFrom=" M17.01 8 C17.01,8 7.01,8 7.01,8 C5.36,8 4.01,9.35 4.01,11 C4.01,11 4.01,19 4.01,19 C4.01,20.65 5.36,22 7.01,22 C7.01,22 17.01,22 17.01,22 C18.66,22 20.01,20.65 20.01,19 C20.01,19 20.01,11 20.01,11 C20.01,9.35 18.66,8 17.01,8c M12.01 17 C10.9,17 10.01,16.1 10.01,15 C10.01,13.9 10.9,13 12.01,13 C13.11,13 14.01,13.9 14.01,15 C14.01,16.1 13.11,17 12.01,17c " android:valueTo=" M17.01 8 C17.01,8 7.01,8 7.01,8 C5.36,8 4.01,9.35 4.01,11 C4.01,11 4.01,19 4.01,19 C4.01,20.65 5.36,22 7.01,22 C7.01,22 17.01,22 17.01,22 C18.66,22 20.01,20.65 20.01,19 C20.01,19 20.01,11 20.01,11 C20.01,9.35 18.66,8 17.01,8c M12.01 17 C10.9,17 10.01,16.1 10.01,15 C10.01,13.9 10.9,13 12.01,13 C13.11,13 14.01,13.9 14.01,15 C14.01,16.1 13.11,17 12.01,17c " android:valueType="pathType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="pathData" android:duration="67" android:startOffset="450" android:valueFrom=" M17.01 8 C17.01,8 7.01,8 7.01,8 C5.36,8 4.01,9.35 4.01,11 C4.01,11 4.01,19 4.01,19 C4.01,20.65 5.36,22 7.01,22 C7.01,22 17.01,22 17.01,22 C18.66,22 20.01,20.65 20.01,19 C20.01,19 20.01,11 20.01,11 C20.01,9.35 18.66,8 17.01,8c M12.01 17 C10.9,17 10.01,16.1 10.01,15 C10.01,13.9 10.9,13 12.01,13 C13.11,13 14.01,13.9 14.01,15 C14.01,16.1 13.11,17 12.01,17c " android:valueTo=" M17.01 8 C17.01,8 7.01,8 7.01,8 C5.36,8 4.01,9.35 4.01,11 C4.01,11 4.01,19 4.01,19 C4.01,20.65 5.36,22 7.01,22 C7.01,22 17.01,22 17.01,22 C18.66,22 20.01,20.65 20.01,19 C20.01,19 20.01,11 20.01,11 C20.01,9.35 18.66,8 17.01,8c M12.01 17.37 C10.7,17.37 9.64,16.31 9.64,15 C9.64,13.69 10.7,12.63 12.01,12.63 C13.31,12.63 14.38,13.69 14.38,15 C14.38,16.31 13.31,17.37 12.01,17.37c " android:valueType="pathType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="pathData" android:duration="183" android:startOffset="517" android:valueFrom=" M17.01 8 C17.01,8 7.01,8 7.01,8 C5.36,8 4.01,9.35 4.01,11 C4.01,11 4.01,19 4.01,19 C4.01,20.65 5.36,22 7.01,22 C7.01,22 17.01,22 17.01,22 C18.66,22 20.01,20.65 20.01,19 C20.01,19 20.01,11 20.01,11 C20.01,9.35 18.66,8 17.01,8c M12.01 17.37 C10.7,17.37 9.64,16.31 9.64,15 C9.64,13.69 10.7,12.63 12.01,12.63 C13.31,12.63 14.38,13.69 14.38,15 C14.38,16.31 13.31,17.37 12.01,17.37c " android:valueTo=" M17.01 8 C17.01,8 7.01,8 7.01,8 C5.36,8 4.01,9.35 4.01,11 C4.01,11 4.01,19 4.01,19 C4.01,20.65 5.36,22 7.01,22 C7.01,22 17.01,22 17.01,22 C18.66,22 20.01,20.65 20.01,19 C20.01,19 20.01,11 20.01,11 C20.01,9.35 18.66,8 17.01,8c M12.01 17 C10.9,17 10.01,16.1 10.01,15 C10.01,13.9 10.9,13 12.01,13 C13.11,13 14.01,13.9 14.01,15 C14.01,16.1 13.11,17 12.01,17c " android:valueType="pathType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="_R_G_L_1_G_T_1"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="translateY" android:duration="400" android:startOffset="0" android:valueFrom="19.001" android:valueTo="19.001" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.167,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="translateY" android:duration="67" android:startOffset="400" android:valueFrom="19.001" android:valueTo="20.5" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="translateY" android:duration="83" android:startOffset="467" android:valueFrom="20.5" android:valueTo="19.001" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="_R_G_L_0_G_D_0_P_0"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="pathData" android:duration="317" android:startOffset="0" android:valueFrom="M14.95 10 C14.95,10 14.95,5.28 14.95,5.28 C14.95,3.35 16.47,1.94 18.39,1.97 C20.41,2.01 21.85,3.13 21.85,5.06 C21.85,5.06 21.85,5.06 21.85,5.06 " android:valueTo="M15.54 10 C15.54,10 15.54,2.5 15.54,2.5 C15.54,0.57 13.97,-1 12.04,-1 C10.11,-1 8.54,0.57 8.54,2.5 C8.54,2.5 8.54,3.38 8.54,3.38 " android:valueType="pathType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="pathData" android:duration="133" android:startOffset="317" android:valueFrom="M15.54 10 C15.54,10 15.54,2.5 15.54,2.5 C15.54,0.57 13.97,-1 12.04,-1 C10.11,-1 8.54,0.57 8.54,2.5 C8.54,2.5 8.54,3.38 8.54,3.38 " android:valueTo="M15.54 10 C15.54,10 15.54,5.5 15.54,5.5 C15.54,3.57 13.97,2 12.04,2 C10.11,2 8.54,3.57 8.54,5.5 C8.54,5.5 8.54,10 8.54,10 " android:valueType="pathType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="_R_G_L_0_G_N_3_T_1"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="translateY" android:duration="400" android:startOffset="0" android:valueFrom="19.001" android:valueTo="19.001" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.167,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="translateY" android:duration="67" android:startOffset="400" android:valueFrom="19.001" android:valueTo="20.5" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="translateY" android:duration="83" android:startOffset="467" android:valueFrom="20.5" android:valueTo="19.001" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="time_group"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="translateX" android:duration="767" android:startOffset="0" android:valueFrom="0" android:valueTo="1" android:valueType="floatType"/></set></aapt:attr></target></animated-vector>
\ No newline at end of file diff --git a/packages/overlays/IconPackSamSystemUIOverlay/res/anim/lock_scanning.xml b/packages/overlays/IconPackSamSystemUIOverlay/res/anim/lock_scanning.xml new file mode 100644 index 000000000000..27564a084ded --- /dev/null +++ b/packages/overlays/IconPackSamSystemUIOverlay/res/anim/lock_scanning.xml @@ -0,0 +1,18 @@ +<!-- +/** + * Copyright (C) 2020, The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +--> +<animated-vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:aapt="http://schemas.android.com/aapt"><aapt:attr name="android:drawable"><vector android:height="32dp" android:width="24dp" android:viewportHeight="32" android:viewportWidth="24"><group android:name="_R_G"><group android:name="_R_G_L_1_G" android:translateY="4.001000000000001" android:pivotX="12.006" android:pivotY="15" android:scaleX="1" android:scaleY="1"><path android:name="_R_G_L_1_G_D_0_P_0" android:fillColor="#000000" android:fillAlpha="1" android:fillType="nonZero" android:pathData=" M17.01 8 C17.01,8 7.01,8 7.01,8 C5.36,8 4.01,9.35 4.01,11 C4.01,11 4.01,19 4.01,19 C4.01,20.65 5.36,22 7.01,22 C7.01,22 17.01,22 17.01,22 C18.66,22 20.01,20.65 20.01,19 C20.01,19 20.01,11 20.01,11 C20.01,9.35 18.66,8 17.01,8c M12.01 17 C10.9,17 10.01,16.1 10.01,15 C10.01,13.9 10.9,13 12.01,13 C13.11,13 14.01,13.9 14.01,15 C14.01,16.1 13.11,17 12.01,17c "/></group><group android:name="_R_G_L_0_G_N_3_T_0" android:translateY="4.001000000000001" android:pivotX="12.006" android:pivotY="15" android:scaleX="1" android:scaleY="1"><group android:name="_R_G_L_0_G_T_1" android:translateX="12" android:translateY="12"><group android:name="_R_G_L_0_G" android:translateX="-12" android:translateY="-12"><path android:name="_R_G_L_0_G_D_0_P_0" android:strokeColor="#000000" android:strokeLineCap="round" android:strokeLineJoin="round" android:strokeWidth="2" android:strokeAlpha="1" android:pathData=" M15.54 10 C15.54,10 15.54,5.5 15.54,5.5 C15.54,3.57 13.97,2 12.04,2 C10.11,2 8.54,3.57 8.54,5.5 C8.54,5.5 8.54,10 8.54,10 "/></group></group></group></group><group android:name="time_group"/></vector></aapt:attr><target android:name="_R_G_L_1_G_D_0_P_0"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="pathData" android:duration="67" android:startOffset="0" android:valueFrom=" M17.01 8 C17.01,8 7.01,8 7.01,8 C5.36,8 4.01,9.35 4.01,11 C4.01,11 4.01,19 4.01,19 C4.01,20.65 5.36,22 7.01,22 C7.01,22 17.01,22 17.01,22 C18.66,22 20.01,20.65 20.01,19 C20.01,19 20.01,11 20.01,11 C20.01,9.35 18.66,8 17.01,8c M12.01 17 C10.9,17 10.01,16.1 10.01,15 C10.01,13.9 10.9,13 12.01,13 C13.11,13 14.01,13.9 14.01,15 C14.01,16.1 13.11,17 12.01,17c " android:valueTo=" M17.01 8 C17.01,8 7.01,8 7.01,8 C5.36,8 4.01,9.35 4.01,11 C4.01,11 4.01,19 4.01,19 C4.01,20.65 5.36,22 7.01,22 C7.01,22 17.01,22 17.01,22 C18.66,22 20.01,20.65 20.01,19 C20.01,19 20.01,11 20.01,11 C20.01,9.35 18.66,8 17.01,8c M12.01 17 C10.9,17 10.01,16.1 10.01,15 C10.01,13.9 10.9,13 12.01,13 C13.11,13 14.01,13.9 14.01,15 C14.01,16.1 13.11,17 12.01,17c " android:valueType="pathType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="pathData" android:duration="117" android:startOffset="67" android:valueFrom=" M17.01 8 C17.01,8 7.01,8 7.01,8 C5.36,8 4.01,9.35 4.01,11 C4.01,11 4.01,19 4.01,19 C4.01,20.65 5.36,22 7.01,22 C7.01,22 17.01,22 17.01,22 C18.66,22 20.01,20.65 20.01,19 C20.01,19 20.01,11 20.01,11 C20.01,9.35 18.66,8 17.01,8c M12.01 17 C10.9,17 10.01,16.1 10.01,15 C10.01,13.9 10.9,13 12.01,13 C13.11,13 14.01,13.9 14.01,15 C14.01,16.1 13.11,17 12.01,17c " android:valueTo=" M17.01 8 C17.01,8 7.01,8 7.01,8 C5.36,8 4.01,9.35 4.01,11 C4.01,11 4.01,19 4.01,19 C4.01,20.65 5.36,22 7.01,22 C7.01,22 17.01,22 17.01,22 C18.66,22 20.01,20.65 20.01,19 C20.01,19 20.01,11 20.01,11 C20.01,9.35 18.66,8 17.01,8c M12.01 16.32 C11.28,16.32 10.69,15.73 10.69,15 C10.69,14.27 11.28,13.69 12.01,13.69 C12.73,13.69 13.32,14.27 13.32,15 C13.32,15.73 12.73,16.32 12.01,16.32c " android:valueType="pathType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="pathData" android:duration="333" android:startOffset="183" android:valueFrom=" M17.01 8 C17.01,8 7.01,8 7.01,8 C5.36,8 4.01,9.35 4.01,11 C4.01,11 4.01,19 4.01,19 C4.01,20.65 5.36,22 7.01,22 C7.01,22 17.01,22 17.01,22 C18.66,22 20.01,20.65 20.01,19 C20.01,19 20.01,11 20.01,11 C20.01,9.35 18.66,8 17.01,8c M12.01 16.32 C11.28,16.32 10.69,15.73 10.69,15 C10.69,14.27 11.28,13.69 12.01,13.69 C12.73,13.69 13.32,14.27 13.32,15 C13.32,15.73 12.73,16.32 12.01,16.32c " android:valueTo=" M17.01 8 C17.01,8 7.01,8 7.01,8 C5.36,8 4.01,9.35 4.01,11 C4.01,11 4.01,19 4.01,19 C4.01,20.65 5.36,22 7.01,22 C7.01,22 17.01,22 17.01,22 C18.66,22 20.01,20.65 20.01,19 C20.01,19 20.01,11 20.01,11 C20.01,9.35 18.66,8 17.01,8c M12.01 17 C10.9,17 10.01,16.1 10.01,15 C10.01,13.9 10.9,13 12.01,13 C13.11,13 14.01,13.9 14.01,15 C14.01,16.1 13.11,17 12.01,17c " android:valueType="pathType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="_R_G_L_1_G"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="scaleX" android:duration="83" android:startOffset="0" android:valueFrom="1" android:valueTo="0.96" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleY" android:duration="83" android:startOffset="0" android:valueFrom="1" android:valueTo="0.96" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleX" android:duration="183" android:startOffset="83" android:valueFrom="0.96" android:valueTo="1.28" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleY" android:duration="183" android:startOffset="83" android:valueFrom="0.96" android:valueTo="1.28" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleX" android:duration="250" android:startOffset="267" android:valueFrom="1.28" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleY" android:duration="250" android:startOffset="267" android:valueFrom="1.28" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="_R_G_L_0_G_D_0_P_0"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="pathData" android:duration="150" android:startOffset="0" android:valueFrom="M15.54 10 C15.54,10 15.54,5.5 15.54,5.5 C15.54,3.57 13.97,2 12.04,2 C10.11,2 8.54,3.57 8.54,5.5 C8.54,5.5 8.54,10 8.54,10 " android:valueTo="M15.55 7.75 C15.55,7.75 15.54,5.5 15.54,5.5 C15.54,3.57 13.97,2 12.04,2 C10.11,2 8.54,3.57 8.54,5.5 C8.54,5.5 8.55,7.75 8.55,7.75 " android:valueType="pathType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="pathData" android:duration="117" android:startOffset="150" android:valueFrom="M15.55 7.75 C15.55,7.75 15.54,5.5 15.54,5.5 C15.54,3.57 13.97,2 12.04,2 C10.11,2 8.54,3.57 8.54,5.5 C8.54,5.5 8.55,7.75 8.55,7.75 " android:valueTo="M15.54 10 C15.54,10 15.54,5.5 15.54,5.5 C15.54,3.57 13.97,2 12.04,2 C10.11,2 8.54,3.57 8.54,5.5 C8.54,5.5 8.54,10 8.54,10 " android:valueType="pathType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="_R_G_L_0_G_T_1"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="translateXY" android:duration="150" android:startOffset="0" android:propertyXName="translateX" android:propertyYName="translateY" android:pathData="M 12,12C 12,12.41666665673256 12,14.5 12,14.5"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="translateXY" android:duration="117" android:startOffset="150" android:propertyXName="translateX" android:propertyYName="translateY" android:pathData="M 12,14.5C 12,14.5 12,12.41666665673256 12,12"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="_R_G_L_0_G_N_3_T_0"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="scaleX" android:duration="83" android:startOffset="0" android:valueFrom="1" android:valueTo="0.96" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleY" android:duration="83" android:startOffset="0" android:valueFrom="1" android:valueTo="0.96" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleX" android:duration="183" android:startOffset="83" android:valueFrom="0.96" android:valueTo="1.28" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleY" android:duration="183" android:startOffset="83" android:valueFrom="0.96" android:valueTo="1.28" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleX" android:duration="250" android:startOffset="267" android:valueFrom="1.28" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleY" android:duration="250" android:startOffset="267" android:valueFrom="1.28" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="time_group"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="translateX" android:duration="767" android:startOffset="0" android:valueFrom="0" android:valueTo="1" android:valueType="floatType"/></set></aapt:attr></target></animated-vector>
\ No newline at end of file diff --git a/packages/overlays/IconPackSamSystemUIOverlay/res/anim/lock_to_error.xml b/packages/overlays/IconPackSamSystemUIOverlay/res/anim/lock_to_error.xml new file mode 100644 index 000000000000..e3c48aa40150 --- /dev/null +++ b/packages/overlays/IconPackSamSystemUIOverlay/res/anim/lock_to_error.xml @@ -0,0 +1,18 @@ +<!-- +/** + * Copyright (C) 2020, The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +--> +<animated-vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:aapt="http://schemas.android.com/aapt"><aapt:attr name="android:drawable"><vector android:height="24dp" android:width="24dp" android:viewportHeight="24" android:viewportWidth="24"><group android:name="_R_G"><group android:name="_R_G_L_1_G" android:translateY="0.0009999999999994458" android:pivotX="12.006" android:pivotY="15" android:rotation="0"><path android:name="_R_G_L_1_G_D_0_P_0" android:fillColor="#000000" android:fillAlpha="1" android:fillType="nonZero" android:pathData=" M17.01 8 C17.01,8 7.01,8 7.01,8 C5.36,8 4.01,9.35 4.01,11 C4.01,11 4.01,19 4.01,19 C4.01,20.65 5.36,22 7.01,22 C7.01,22 17.01,22 17.01,22 C18.66,22 20.01,20.65 20.01,19 C20.01,19 20.01,11 20.01,11 C20.01,9.35 18.66,8 17.01,8c M12.01 17 C10.9,17 10.01,16.1 10.01,15 C10.01,13.9 10.9,13 12.01,13 C13.11,13 14.01,13.9 14.01,15 C14.01,16.1 13.11,17 12.01,17c "/></group><group android:name="_R_G_L_0_G_N_3_T_0" android:translateY="0.0009999999999994458" android:pivotX="12.006" android:pivotY="15" android:rotation="0"><group android:name="_R_G_L_0_G"><path android:name="_R_G_L_0_G_D_0_P_0" android:strokeColor="#000000" android:strokeLineCap="round" android:strokeLineJoin="round" android:strokeWidth="2" android:strokeAlpha="1" android:pathData=" M15.54 10 C15.54,10 15.54,5.5 15.54,5.5 C15.54,3.57 13.97,2 12.04,2 C10.11,2 8.54,3.57 8.54,5.5 C8.54,5.5 8.54,10 8.54,10 "/></group></group></group><group android:name="time_group"/></vector></aapt:attr><target android:name="_R_G_L_1_G"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="rotation" android:duration="117" android:startOffset="0" android:valueFrom="0" android:valueTo="-10" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.465,0 0.558,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="rotation" android:duration="100" android:startOffset="117" android:valueFrom="-10" android:valueTo="10" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.51,0 0.531,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="rotation" android:duration="100" android:startOffset="217" android:valueFrom="10" android:valueTo="-5" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.469,0 0.599,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="rotation" android:duration="167" android:startOffset="317" android:valueFrom="-5" android:valueTo="0" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.384,0 0.565,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="_R_G_L_0_G_N_3_T_0"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="rotation" android:duration="117" android:startOffset="0" android:valueFrom="0" android:valueTo="-10" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.465,0 0.558,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="rotation" android:duration="100" android:startOffset="117" android:valueFrom="-10" android:valueTo="10" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.51,0 0.531,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="rotation" android:duration="100" android:startOffset="217" android:valueFrom="10" android:valueTo="-5" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.469,0 0.599,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="rotation" android:duration="167" android:startOffset="317" android:valueFrom="-5" android:valueTo="0" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.384,0 0.565,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="time_group"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="translateX" android:duration="767" android:startOffset="0" android:valueFrom="0" android:valueTo="1" android:valueType="floatType"/></set></aapt:attr></target></animated-vector>
\ No newline at end of file diff --git a/packages/overlays/IconPackSamSystemUIOverlay/res/anim/lock_unlock.xml b/packages/overlays/IconPackSamSystemUIOverlay/res/anim/lock_unlock.xml new file mode 100644 index 000000000000..9b97c0497b21 --- /dev/null +++ b/packages/overlays/IconPackSamSystemUIOverlay/res/anim/lock_unlock.xml @@ -0,0 +1,18 @@ +<!-- +/** + * Copyright (C) 2020, The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +--> +<animated-vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:aapt="http://schemas.android.com/aapt"><aapt:attr name="android:drawable"><vector android:height="32dp" android:width="24dp" android:viewportHeight="32" android:viewportWidth="24"><group android:name="_R_G"><group android:name="_R_G_L_1_G_T_1" android:translateX="12.006" android:translateY="19.001"><group android:name="_R_G_L_1_G" android:translateX="-12.006" android:translateY="-15"><path android:name="_R_G_L_1_G_D_0_P_0" android:fillColor="#000000" android:fillAlpha="1" android:fillType="nonZero" android:pathData=" M17.01 8 C17.01,8 7.01,8 7.01,8 C5.36,8 4.01,9.35 4.01,11 C4.01,11 4.01,19 4.01,19 C4.01,20.65 5.36,22 7.01,22 C7.01,22 17.01,22 17.01,22 C18.66,22 20.01,20.65 20.01,19 C20.01,19 20.01,11 20.01,11 C20.01,9.35 18.66,8 17.01,8c M12.01 17 C10.9,17 10.01,16.1 10.01,15 C10.01,13.9 10.9,13 12.01,13 C13.11,13 14.01,13.9 14.01,15 C14.01,16.1 13.11,17 12.01,17c "/></group></group><group android:name="_R_G_L_0_G_N_3_T_1" android:translateX="12.006" android:translateY="19.001"><group android:name="_R_G_L_0_G_N_3_T_0" android:translateX="-12.006" android:translateY="-15"><group android:name="_R_G_L_0_G"><path android:name="_R_G_L_0_G_D_0_P_0" android:strokeColor="#000000" android:strokeLineCap="round" android:strokeLineJoin="round" android:strokeWidth="2" android:strokeAlpha="1" android:pathData=" M15.54 10 C15.54,10 15.54,5.5 15.54,5.5 C15.54,3.57 13.97,2 12.04,2 C10.11,2 8.54,3.57 8.54,5.5 C8.54,5.5 8.54,10 8.54,10 "/></group></group></group></group><group android:name="time_group"/></vector></aapt:attr><target android:name="_R_G_L_1_G_D_0_P_0"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="pathData" android:duration="100" android:startOffset="0" android:valueFrom=" M17.01 8 C17.01,8 7.01,8 7.01,8 C5.36,8 4.01,9.35 4.01,11 C4.01,11 4.01,19 4.01,19 C4.01,20.65 5.36,22 7.01,22 C7.01,22 17.01,22 17.01,22 C18.66,22 20.01,20.65 20.01,19 C20.01,19 20.01,11 20.01,11 C20.01,9.35 18.66,8 17.01,8c M12.01 17 C10.9,17 10.01,16.1 10.01,15 C10.01,13.9 10.9,13 12.01,13 C13.11,13 14.01,13.9 14.01,15 C14.01,16.1 13.11,17 12.01,17c " android:valueTo=" M17.01 8 C17.01,8 7.01,8 7.01,8 C5.36,8 4.01,9.35 4.01,11 C4.01,11 4.01,19 4.01,19 C4.01,20.65 5.36,22 7.01,22 C7.01,22 17.01,22 17.01,22 C18.66,22 20.01,20.65 20.01,19 C20.01,19 20.01,11 20.01,11 C20.01,9.35 18.66,8 17.01,8c M12.01 16.83 C11,16.83 10.18,16.01 10.18,15 C10.18,13.99 11,13.17 12.01,13.17 C13.02,13.17 13.83,13.99 13.83,15 C13.83,16.01 13.02,16.83 12.01,16.83c " android:valueType="pathType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="pathData" android:duration="283" android:startOffset="100" android:valueFrom=" M17.01 8 C17.01,8 7.01,8 7.01,8 C5.36,8 4.01,9.35 4.01,11 C4.01,11 4.01,19 4.01,19 C4.01,20.65 5.36,22 7.01,22 C7.01,22 17.01,22 17.01,22 C18.66,22 20.01,20.65 20.01,19 C20.01,19 20.01,11 20.01,11 C20.01,9.35 18.66,8 17.01,8c M12.01 16.83 C11,16.83 10.18,16.01 10.18,15 C10.18,13.99 11,13.17 12.01,13.17 C13.02,13.17 13.83,13.99 13.83,15 C13.83,16.01 13.02,16.83 12.01,16.83c " android:valueTo=" M17.01 8 C17.01,8 7.01,8 7.01,8 C5.36,8 4.01,9.35 4.01,11 C4.01,11 4.01,19 4.01,19 C4.01,20.65 5.36,22 7.01,22 C7.01,22 17.01,22 17.01,22 C18.66,22 20.01,20.65 20.01,19 C20.01,19 20.01,11 20.01,11 C20.01,9.35 18.66,8 17.01,8c M12.01 17 C10.9,17 10.01,16.1 10.01,15 C10.01,13.9 10.9,13 12.01,13 C13.11,13 14.01,13.9 14.01,15 C14.01,16.1 13.11,17 12.01,17c " android:valueType="pathType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="_R_G_L_1_G_T_1"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="translateY" android:duration="133" android:startOffset="0" android:valueFrom="19.001" android:valueTo="17.5" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="translateY" android:duration="133" android:startOffset="133" android:valueFrom="17.5" android:valueTo="20" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="translateY" android:duration="100" android:startOffset="267" android:valueFrom="20" android:valueTo="19.001" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="_R_G_L_0_G_D_0_P_0"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="pathData" android:duration="67" android:startOffset="0" android:valueFrom="M15.54 10 C15.54,10 15.54,5.5 15.54,5.5 C15.54,3.57 13.97,2 12.04,2 C10.11,2 8.54,3.57 8.54,5.5 C8.54,5.5 8.54,10 8.54,10 " android:valueTo="M15.54 10 C15.54,10 15.54,2.5 15.54,2.5 C15.54,0.57 13.97,-1 12.04,-1 C10.11,-1 8.54,0.57 8.54,2.5 C8.54,2.5 8.54,3.38 8.54,3.38 " android:valueType="pathType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="pathData" android:duration="333" android:startOffset="67" android:valueFrom="M15.54 10 C15.54,10 15.54,2.5 15.54,2.5 C15.54,0.57 13.97,-1 12.04,-1 C10.11,-1 8.54,0.57 8.54,2.5 C8.54,2.5 8.54,3.38 8.54,3.38 " android:valueTo="M14.95 10 C14.95,10 14.95,5.28 14.95,5.28 C14.95,3.35 16.47,1.94 18.39,1.97 C20.41,2.01 21.85,3.13 21.85,5.06 C21.85,5.06 21.85,5.06 21.85,5.06 " android:valueType="pathType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="_R_G_L_0_G_N_3_T_1"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="translateY" android:duration="133" android:startOffset="0" android:valueFrom="19.001" android:valueTo="17.5" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="translateY" android:duration="133" android:startOffset="133" android:valueFrom="17.5" android:valueTo="20" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="translateY" android:duration="100" android:startOffset="267" android:valueFrom="20" android:valueTo="19.001" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="time_group"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="translateX" android:duration="767" android:startOffset="0" android:valueFrom="0" android:valueTo="1" android:valueType="floatType"/></set></aapt:attr></target></animated-vector>
\ No newline at end of file diff --git a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_brightness_thumb.xml b/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_brightness_thumb.xml new file mode 100644 index 000000000000..681fd3aeb110 --- /dev/null +++ b/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_brightness_thumb.xml @@ -0,0 +1,20 @@ +<!-- + Copyright (C) 2020 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<vector android:height="24dp" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android"> + <path android:fillColor="?android:attr/colorBackgroundFloating" android:pathData="M19.77,11.3l-1.48-1.48C18.11,9.63,18,9.38,18,9.11V7c0-0.55-0.45-1-1-1h-2.11c-0.26,0-0.51-0.11-0.7-0.29 l-1.48-1.48c-0.39-0.39-1.02-0.39-1.41,0L9.82,5.71C9.63,5.89,9.38,6,9.11,6H7C6.45,6,6,6.45,6,7v2.11c0,0.26-0.1,0.52-0.29,0.71 L4.23,11.3c-0.39,0.39-0.39,1.02,0,1.41l1.48,1.48C5.89,14.38,6,14.63,6,14.9V17c0,0.55,0.45,1,1,1h2.11c0.26,0,0.52,0.1,0.7,0.29 l1.48,1.48c0.39,0.39,1.02,0.39,1.41,0l1.48-1.48c0.19-0.18,0.44-0.29,0.71-0.29H17c0.55,0,1-0.45,1-1v-2.11 c0-0.26,0.11-0.52,0.29-0.7l1.48-1.48C20.16,12.32,20.16,11.68,19.77,11.3z M12,17c-2.76,0-5-2.24-5-5s2.24-5,5-5s5,2.24,5,5 S14.76,17,12,17z"/> + <path android:fillColor="?android:attr/colorControlActivated" android:pathData="M 12 7 C 14.7614237492 7 17 9.23857625085 17 12 C 17 14.7614237492 14.7614237492 17 12 17 C 9.23857625085 17 7 14.7614237492 7 12 C 7 9.23857625085 9.23857625085 7 12 7 Z"/> + <path android:fillColor="?android:attr/colorControlActivated" android:pathData="M21.19,9.88l-0.9-0.9C20.1,8.8,20,8.54,20,8.28V7c0-1.66-1.34-3-3-3h-1.28c-0.27,0-0.52-0.11-0.71-0.29l-0.9-0.9 c-1.17-1.17-3.07-1.17-4.24,0l-0.9,0.9C8.79,3.89,8.54,4,8.28,4H7C5.34,4,4,5.34,4,7v1.28c0,0.26-0.11,0.52-0.29,0.7l-0.9,0.9 c-1.17,1.17-1.17,3.07,0,4.24l0.9,0.9C3.89,15.2,4,15.46,4,15.72V17c0,1.66,1.34,3,3,3h1.28c0.27,0,0.52,0.11,0.71,0.29l0.9,0.9 c1.17,1.17,3.07,1.17,4.24,0l0.9-0.9C15.2,20.11,15.46,20,15.72,20H17c1.66,0,3-1.34,3-3v-1.28c0-0.27,0.11-0.52,0.29-0.71 l0.9-0.9C22.36,12.95,22.36,11.05,21.19,9.88z M19.77,12.71l-1.48,1.48c-0.18,0.18-0.29,0.44-0.29,0.7V17c0,0.55-0.45,1-1,1h-2.11 c-0.27,0-0.52,0.11-0.71,0.29l-1.48,1.48c-0.39,0.39-1.02,0.39-1.41,0l-1.48-1.48C9.63,18.1,9.37,18,9.11,18H7c-0.55,0-1-0.45-1-1 v-2.1c0-0.27-0.11-0.52-0.29-0.71l-1.48-1.48c-0.39-0.39-0.39-1.02,0-1.41l1.48-1.48C5.9,9.63,6,9.37,6,9.11V7c0-0.55,0.45-1,1-1 h2.11c0.27,0,0.52-0.11,0.71-0.29l1.48-1.48c0.39-0.39,1.02-0.39,1.41,0l1.48,1.48C14.38,5.89,14.63,6,14.89,6H17 c0.55,0,1,0.45,1,1v2.11c0,0.27,0.11,0.52,0.29,0.71l1.48,1.48C20.16,11.68,20.16,12.32,19.77,12.71z"/> +</vector>
\ No newline at end of file diff --git a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_screenrecord.xml b/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_screenrecord.xml new file mode 100644 index 000000000000..1a7c63c08894 --- /dev/null +++ b/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_screenrecord.xml @@ -0,0 +1,18 @@ +<!-- + Copyright (C) 2020 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<vector android:height="24dp" android:tint="?android:attr/colorControlNormal" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android"> + <path android:fillColor="@android:color/white" android:pathData="M12,16c-2.21,0-4-1.79-4-4c0-2.21,1.79-4,4-4c2.21,0,4,1.79,4,4C16,14.21,14.21,16,12,16z M4.7,17.36 c0.48-0.28,0.64-0.89,0.37-1.37c-1.39-2.41-1.42-5.41-0.08-7.84c0.27-0.48,0.09-1.09-0.39-1.36C4.11,6.52,3.5,6.7,3.23,7.18 c-1.67,3.04-1.64,6.8,0.1,9.81c0.19,0.32,0.52,0.5,0.87,0.5C4.37,17.49,4.54,17.45,4.7,17.36z M8.01,5.06 c2.4-1.39,5.41-1.42,7.84-0.08c0.48,0.27,1.09,0.09,1.36-0.39c0.27-0.48,0.09-1.09-0.39-1.36c-3.04-1.67-6.8-1.64-9.81,0.1 C6.53,3.61,6.37,4.22,6.64,4.7c0.19,0.32,0.52,0.5,0.87,0.5C7.68,5.2,7.85,5.16,8.01,5.06z M20.77,16.82 c1.67-3.04,1.64-6.8-0.1-9.81c-0.28-0.48-0.89-0.64-1.37-0.37c-0.48,0.28-0.64,0.89-0.37,1.37c1.39,2.41,1.42,5.41,0.08,7.84 c-0.27,0.48-0.09,1.09,0.39,1.36c0.15,0.08,0.32,0.12,0.48,0.12C20.24,17.33,20.58,17.15,20.77,16.82z M16.99,20.67 c0.48-0.28,0.64-0.89,0.37-1.37c-0.28-0.48-0.89-0.64-1.37-0.37c-2.41,1.39-5.41,1.42-7.84,0.08c-0.48-0.27-1.09-0.09-1.36,0.39 c-0.27,0.48-0.09,1.09,0.39,1.36C8.67,21.59,10.34,22,12,22C13.73,22,15.46,21.55,16.99,20.67z"/> +</vector>
\ No newline at end of file diff --git a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_screenshot.xml b/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_screenshot.xml new file mode 100644 index 000000000000..b5d4555a22f9 --- /dev/null +++ b/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_screenshot.xml @@ -0,0 +1,30 @@ +<!-- + Copyright (C) 2020 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:fillColor="#FF000000" + android:pathData="M8.75,11c0.41,0 0.75,-0.34 0.75,-0.75V8.5h1.75C11.66,8.5 12,8.16 12,7.75C12,7.34 11.66,7 11.25,7H9C8.45,7 8,7.45 8,8v2.25C8,10.66 8.34,11 8.75,11z"/> + <path + android:fillColor="#FF000000" + android:pathData="M12.75,17H15c0.55,0 1,-0.45 1,-1v-2.25c0,-0.41 -0.34,-0.75 -0.75,-0.75s-0.75,0.34 -0.75,0.75v1.75h-1.75c-0.41,0 -0.75,0.34 -0.75,0.75C12,16.66 12.34,17 12.75,17z"/> + <path + android:fillColor="#FF000000" + android:pathData="M16,1H8C6.34,1 5,2.34 5,4v16c0,1.65 1.35,3 3,3h8c1.65,0 3,-1.35 3,-3V4C19,2.34 17.66,1 16,1zM17,18H7V6h10V18z"/> +</vector> diff --git a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_volume_collapse_animation.xml b/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_volume_collapse_animation.xml new file mode 100644 index 000000000000..86ddf7a475c6 --- /dev/null +++ b/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_volume_collapse_animation.xml @@ -0,0 +1,18 @@ +<!-- +/** + * Copyright (C) 2020, The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +--> +<animated-vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:aapt="http://schemas.android.com/aapt"><aapt:attr name="android:drawable"><vector android:height="24dp" android:width="24dp" android:viewportHeight="24" android:viewportWidth="24"><group android:name="_R_G"><group android:name="_R_G_L_0_G_T_1" android:translateX="12" android:translateY="11.1"><group android:name="_R_G_L_0_G" android:translateX="-12" android:translateY="-12"><path android:name="_R_G_L_0_G_D_0_P_0" android:strokeColor="#000000" android:strokeLineCap="round" android:strokeLineJoin="round" android:strokeWidth="2" android:strokeAlpha="1" android:pathData=" M5.27 9.97 C5.27,9.97 10.59,15.27 10.59,15.27 C11.31,16.03 12.66,16.03 13.42,15.27 C13.42,15.27 18.7,9.97 18.7,9.97 "/></group></group></group><group android:name="time_group"/></vector></aapt:attr><target android:name="_R_G_L_0_G_D_0_P_0"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="pathData" android:duration="250" android:startOffset="0" android:valueFrom="M5.27 9.97 C5.27,9.97 10.59,15.27 10.59,15.27 C11.31,16.03 12.66,16.03 13.42,15.27 C13.42,15.27 18.7,9.97 18.7,9.97 " android:valueTo="M5.28 14.94 C5.28,14.94 10.59,9.64 10.59,9.64 C11.37,8.86 12.63,8.86 13.41,9.64 C13.41,9.64 18.72,14.94 18.72,14.94 " android:valueType="pathType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.4,0 0.2,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="_R_G_L_0_G_T_1"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="translateY" android:duration="250" android:startOffset="0" android:valueFrom="11.1" android:valueTo="12" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.4,0 0.2,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="time_group"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="translateX" android:duration="267" android:startOffset="0" android:valueFrom="0" android:valueTo="1" android:valueType="floatType"/></set></aapt:attr></target></animated-vector>
\ No newline at end of file diff --git a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_volume_expand_animation.xml b/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_volume_expand_animation.xml new file mode 100644 index 000000000000..8a7766a9211d --- /dev/null +++ b/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_volume_expand_animation.xml @@ -0,0 +1,18 @@ +<!-- +/** + * Copyright (C) 2020, The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +--> +<animated-vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:aapt="http://schemas.android.com/aapt"><aapt:attr name="android:drawable"><vector android:height="24dp" android:width="24dp" android:viewportHeight="24" android:viewportWidth="24"><group android:name="_R_G"><group android:name="_R_G_L_0_G_T_1" android:translateX="12" android:translateY="12"><group android:name="_R_G_L_0_G" android:translateX="-12" android:translateY="-12"><path android:name="_R_G_L_0_G_D_0_P_0" android:strokeColor="#000000" android:strokeLineCap="round" android:strokeLineJoin="round" android:strokeWidth="2" android:strokeAlpha="1" android:pathData=" M5.28 14.94 C5.28,14.94 10.59,9.64 10.59,9.64 C11.37,8.86 12.63,8.86 13.41,9.64 C13.41,9.64 18.72,14.94 18.72,14.94 "/></group></group></group><group android:name="time_group"/></vector></aapt:attr><target android:name="_R_G_L_0_G_D_0_P_0"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="pathData" android:duration="250" android:startOffset="0" android:valueFrom="M5.28 14.94 C5.28,14.94 10.59,9.64 10.59,9.64 C11.37,8.86 12.63,8.86 13.41,9.64 C13.41,9.64 18.72,14.94 18.72,14.94 " android:valueTo="M5.27 9.97 C5.27,9.97 10.59,15.27 10.59,15.27 C11.31,16.03 12.66,16.03 13.42,15.27 C13.42,15.27 18.7,9.97 18.7,9.97 " android:valueType="pathType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.4,0 0.2,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="_R_G_L_0_G_T_1"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="translateY" android:duration="250" android:startOffset="0" android:valueFrom="12" android:valueTo="11.1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.4,0 0.2,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="time_group"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="translateX" android:duration="267" android:startOffset="0" android:valueFrom="0" android:valueTo="1" android:valueType="floatType"/></set></aapt:attr></target></animated-vector>
\ No newline at end of file diff --git a/packages/overlays/IconPackVictorAndroidOverlay/Android.mk b/packages/overlays/IconPackVictorAndroidOverlay/Android.mk new file mode 100644 index 000000000000..9c900dacc78b --- /dev/null +++ b/packages/overlays/IconPackVictorAndroidOverlay/Android.mk @@ -0,0 +1,28 @@ +# +# Copyright (C) 2020, The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +LOCAL_PATH:= $(call my-dir) +include $(CLEAR_VARS) + +LOCAL_RRO_THEME := IconPackVictorAndroid + +LOCAL_PRODUCT_MODULE := true + +LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res + +LOCAL_PACKAGE_NAME := IconPackVictorAndroidOverlay +LOCAL_SDK_VERSION := current + +include $(BUILD_RRO_PACKAGE) diff --git a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_audio_alarm.xml b/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_audio_alarm.xml new file mode 100644 index 000000000000..46be78160af7 --- /dev/null +++ b/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_audio_alarm.xml @@ -0,0 +1,34 @@ +<!-- + Copyright (C) 2020 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:tint="?android:attr/colorControlNormal" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:fillColor="@android:color/white" + android:pathData="M12.5,8l-1.5,0l0,5.5l3.54,3.54l1.06,-1.07l-3.1,-3.09z"/> + <path + android:fillColor="@android:color/white" + android:pathData="M2.0575,5.6557l4.6068,-3.8442l0.961,1.1517l-4.6068,3.8442z"/> + <path + android:fillColor="@android:color/white" + android:pathData="M16.3786,2.9637l0.961,-1.1517l4.6068,3.8442l-0.961,1.1517z"/> + <path + android:fillColor="@android:color/white" + android:pathData="M12,4c-4.97,0 -9,4.03 -9,9s4.03,9 9,9s9,-4.03 9,-9S16.97,4 12,4zM12,20.5c-4.14,0 -7.5,-3.36 -7.5,-7.5S7.86,5.5 12,5.5s7.5,3.36 7.5,7.5S16.14,20.5 12,20.5z"/> +</vector> diff --git a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_qs_dnd.xml b/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_qs_dnd.xml new file mode 100644 index 000000000000..ef71006b7502 --- /dev/null +++ b/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_qs_dnd.xml @@ -0,0 +1,19 @@ +<!-- + Copyright (C) 2020 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<vector android:height="17dp" android:viewportHeight="24" android:viewportWidth="24" android:width="17dp" xmlns:android="http://schemas.android.com/apk/res/android"> + <path android:fillColor="@android:color/white" android:pathData="M 7 11.25 H 17 V 12.75 H 7 V 11.25 Z"/> + <path android:fillColor="@android:color/white" android:pathData="M12,2C6.48,2,2,6.48,2,12s4.48,10,10,10s10-4.48,10-10S17.52,2,12,2z M12,20.5c-4.69,0-8.5-3.81-8.5-8.5S7.31,3.5,12,3.5 c4.69,0,8.5,3.81,8.5,8.5S16.69,20.5,12,20.5z"/> +</vector>
\ No newline at end of file diff --git a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_screenshot.xml b/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_screenshot.xml new file mode 100644 index 000000000000..cbd22c6bfeed --- /dev/null +++ b/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_screenshot.xml @@ -0,0 +1,30 @@ +<!-- + Copyright (C) 2020 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:fillColor="#FF000000" + android:pathData="M17.59,1H6.41L5,2.41v19.17L6.41,23h11.17L19,21.59V2.41L17.59,1zM17.5,2.5v1.75h-11V2.5H17.5zM17.5,5.75v12.5h-11V5.75H17.5zM6.5,21.5v-1.75h11v1.75H6.5z"/> + <path + android:fillColor="#FF000000" + android:pathData="M9.5,11l0,-2.5l2.5,0l0,-1.5l-4,0l0,4z"/> + <path + android:fillColor="#FF000000" + android:pathData="M12,17l4,0l0,-4l-1.5,0l0,2.5l-2.5,0z"/> +</vector> diff --git a/packages/overlays/IconPackVictorLauncherOverlay/res/drawable/ic_screenshot.xml b/packages/overlays/IconPackVictorLauncherOverlay/res/drawable/ic_screenshot.xml new file mode 100644 index 000000000000..cbd22c6bfeed --- /dev/null +++ b/packages/overlays/IconPackVictorLauncherOverlay/res/drawable/ic_screenshot.xml @@ -0,0 +1,30 @@ +<!-- + Copyright (C) 2020 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:fillColor="#FF000000" + android:pathData="M17.59,1H6.41L5,2.41v19.17L6.41,23h11.17L19,21.59V2.41L17.59,1zM17.5,2.5v1.75h-11V2.5H17.5zM17.5,5.75v12.5h-11V5.75H17.5zM6.5,21.5v-1.75h11v1.75H6.5z"/> + <path + android:fillColor="#FF000000" + android:pathData="M9.5,11l0,-2.5l2.5,0l0,-1.5l-4,0l0,4z"/> + <path + android:fillColor="#FF000000" + android:pathData="M12,17l4,0l0,-4l-1.5,0l0,2.5l-2.5,0z"/> +</vector> diff --git a/packages/overlays/IconPackVictorLauncherOverlay/res/drawable/ic_select.xml b/packages/overlays/IconPackVictorLauncherOverlay/res/drawable/ic_select.xml new file mode 100644 index 000000000000..05597dd66107 --- /dev/null +++ b/packages/overlays/IconPackVictorLauncherOverlay/res/drawable/ic_select.xml @@ -0,0 +1,24 @@ +<!-- + Copyright (C) 2020 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:fillColor="@android:color/white" + android:pathData="M20.25,2.25h1.5v1.5h-1.5V2.25zM18.75,3.75h-1.5v-1.5h1.5V3.75zM15.75,3.75h-1.5v-1.5h1.5V3.75zM12.75,3.75h-1.5v-1.5h1.5V3.75zM9.75,3.75h-1.5v-1.5h1.5V3.75zM6.75,3.75h-1.5v-1.5h1.5V3.75zM2.25,2.25h1.5v1.5h-1.5V2.25zM2.25,5.25h1.5v1.5h-1.5V5.25zM2.25,8.25h1.5v1.5h-1.5V8.25zM18.75,9.75h-1.5v-1.5h1.5V9.75zM6.75,9.75h-1.5v-1.5h1.5V9.75zM20.25,8.25h1.5v1.5h-1.5V8.25zM20.25,5.25h1.5v1.5h-1.5V5.25zM16.07,12.5h-1.94V8.12C14.13,6.95 13.18,6 12,6S9.88,6.95 9.88,8.12v7.9l-3.22,-0.86l-1.82,1.82L10.56,23h8.6l1.57,-7.96L16.07,12.5zM17.92,21.5H11.2l-4.27,-4.49l0.18,-0.18l4.28,1.14V8.12c0,-0.34 0.28,-0.62 0.62,-0.62s0.62,0.28 0.62,0.62V14h3.06l3.35,1.83L17.92,21.5z"/> +</vector> diff --git a/packages/overlays/IconPackVictorLauncherOverlay/res/drawable/ic_share.xml b/packages/overlays/IconPackVictorLauncherOverlay/res/drawable/ic_share.xml new file mode 100644 index 000000000000..2ddb128f5499 --- /dev/null +++ b/packages/overlays/IconPackVictorLauncherOverlay/res/drawable/ic_share.xml @@ -0,0 +1,31 @@ +<!-- + Copyright (C) 2020 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<vector android:height="24dp" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android"> + <path android:fillAlpha="0.24" android:fillColor="#3C00FF" android:pathData="M0,0v24h24V0H0z M22,22H2V2h20V22z" android:strokeAlpha="0.24" android:strokeWidth="1"/> + <path android:fillColor="#0081FF" android:pathData="M18,2.1c1.05,0,1.9,0.85,1.9,1.9v16c0,1.05-0.85,1.9-1.9,1.9H6c-1.05,0-1.9-0.85-1.9-1.9V4 c0-1.05,0.85-1.9,1.9-1.9H18 M18,2H6C4.9,2,4,2.9,4,4v16c0,1.1,0.9,2,2,2h12c1.1,0,2-0.9,2-2V4C20,2.9,19.1,2,18,2L18,2z"/> + <path android:fillColor="#0081FF" android:pathData="M20,4.1c1.05,0,1.9,0.85,1.9,1.9v12c0,1.05-0.85,1.9-1.9,1.9H4c-1.05,0-1.9-0.85-1.9-1.9V6 c0-1.05,0.85-1.9,1.9-1.9H20 M20,4H4C2.9,4,2,4.9,2,6v12c0,1.1,0.9,2,2,2h16c1.1,0,2-0.9,2-2V6C22,4.9,21.1,4,20,4L20,4z"/> + <path android:fillColor="#0081FF" android:pathData="M19,3.1c1.05,0,1.9,0.85,1.9,1.9v14c0,1.05-0.85,1.9-1.9,1.9H5c-1.05,0-1.9-0.85-1.9-1.9V5 c0-1.05,0.85-1.9,1.9-1.9H19 M19,3H5C3.9,3,3,3.9,3,5v14c0,1.1,0.9,2,2,2h14c1.1,0,2-0.9,2-2V5C21,3.9,20.1,3,19,3L19,3z"/> + <path android:fillColor="#0081FF" android:pathData="M12,6.1c3.25,0,5.9,2.65,5.9,5.9s-2.65,5.9-5.9,5.9S6.1,15.25,6.1,12S8.75,6.1,12,6.1 M12,6 c-3.31,0-6,2.69-6,6s2.69,6,6,6c3.31,0,6-2.69,6-6S15.31,6,12,6L12,6z"/> + <path android:fillColor="#0081FF" android:pathData="M21.9,2.1v19.8H2.1V2.1H21.9 M22,2H2v20h20V2L22,2z"/> + <path android:fillColor="#0081FF" android:pathData="M12,2.1c5.46,0,9.9,4.44,9.9,9.9s-4.44,9.9-9.9,9.9S2.1,17.46,2.1,12S6.54,2.1,12,2.1 M12,2 C6.48,2,2,6.48,2,12s4.48,10,10,10s10-4.48,10-10S17.52,2,12,2L12,2z"/> + <path android:pathData="M 2 2 L 22 22" android:strokeColor="#0081FF" android:strokeMiterLimit="10" android:strokeWidth="0.1"/> + <path android:pathData="M 22 2 L 2 22" android:strokeColor="#0081FF" android:strokeMiterLimit="10" android:strokeWidth="0.1"/> + <path android:fillColor="@android:color/white" android:pathData="M18,3.5c0.83,0,1.5,0.67,1.5,1.5S18.83,6.5,18,6.5S16.5,5.83,16.5,5S17.17,3.5,18,3.5 M18,2c-1.66,0-3,1.34-3,3 s1.34,3,3,3s3-1.34,3-3S19.66,2,18,2L18,2z"/> + <path android:fillColor="@android:color/white" android:pathData="M18,17.5c0.83,0,1.5,0.67,1.5,1.5s-0.67,1.5-1.5,1.5s-1.5-0.67-1.5-1.5S17.17,17.5,18,17.5 M18,16c-1.66,0-3,1.34-3,3 s1.34,3,3,3s3-1.34,3-3S19.66,16,18,16L18,16z"/> + <path android:fillColor="@android:color/white" android:pathData="M6,10.5c0.83,0,1.5,0.67,1.5,1.5S6.83,13.5,6,13.5S4.5,12.83,4.5,12S5.17,10.5,6,10.5 M6,9c-1.66,0-3,1.34-3,3s1.34,3,3,3 s3-1.34,3-3S7.66,9,6,9L6,9z"/> + <path android:pathData="M 16.01 6.16 L 8 10.83" android:strokeColor="#000000" android:strokeMiterLimit="10" android:strokeWidth="1.5"/> + <path android:pathData="M 16.06 17.87 L 8.19 13.28" android:strokeColor="#000000" android:strokeMiterLimit="10" android:strokeWidth="1.5"/> +</vector>
\ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_accessibility_generic.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_accessibility_generic.xml new file mode 100644 index 000000000000..7f80c7d18df8 --- /dev/null +++ b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_accessibility_generic.xml @@ -0,0 +1,19 @@ +<!-- + Copyright (C) 2020 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<vector android:height="24dp" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android"> + <path android:fillColor="@android:color/white" android:pathData="M20.5,4c-2.61,0.7-5.67,1-8.5,1S6.11,4.7,3.5,4L3,6c1.86,0.5,4,0.83,6,1v13h2v-6h2v6h2V7c2-0.17,4.14-0.5,6-1L20.5,4z M12,4c1.1,0,2-0.9,2-2c0-1.1-0.9-2-2-2s-2,0.9-2,2C10,3.1,10.9,4,12,4"/> + <path android:fillColor="@android:color/white" android:pathData="M7,24h2v-2H7V24z M11,24h2v-2h-2V24z M15,24h2v-2h-2V24z"/> +</vector>
\ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_do_not_disturb_on_24dp.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_do_not_disturb_on_24dp.xml new file mode 100644 index 000000000000..3a6836b2c03c --- /dev/null +++ b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_do_not_disturb_on_24dp.xml @@ -0,0 +1,19 @@ +<!-- + Copyright (C) 2020 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<vector android:height="24dp" android:tint="?android:attr/colorControlNormal" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android"> + <path android:fillColor="@android:color/white" android:pathData="M 7 11.25 H 17 V 12.75 H 7 V 11.25 Z"/> + <path android:fillColor="@android:color/white" android:pathData="M12,2C6.48,2,2,6.48,2,12s4.48,10,10,10s10-4.48,10-10S17.52,2,12,2z M12,20.5c-4.69,0-8.5-3.81-8.5-8.5S7.31,3.5,12,3.5 c4.69,0,8.5,3.81,8.5,8.5S16.69,20.5,12,20.5z"/> +</vector>
\ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_restore.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_restore.xml new file mode 100644 index 000000000000..c41ec1854c98 --- /dev/null +++ b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_restore.xml @@ -0,0 +1,19 @@ +<!-- + Copyright (C) 2020 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<vector android:height="24dp" android:tint="?android:attr/colorControlNormal" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android"> + <path android:fillColor="@android:color/white" android:pathData="M13,3c-4.76,0-8.64,3.69-8.97,8.37l-1.12-1.12c-0.39-0.39-1.02-0.39-1.41,0c-0.39,0.39-0.39,1.02,0,1.41l2.08,2.09 c0.78,0.78,2.05,0.78,2.83,0l2.09-2.09c0.39-0.39,0.39-1.02,0-1.41l0,0c-0.39-0.39-1.02-0.39-1.41,0L6.04,11.3 c0.36-3.64,3.5-6.46,7.28-6.29c3.63,0.16,6.63,3.25,6.68,6.88c0.06,3.92-3.09,7.11-7,7.11c-1.61,0-3.1-0.55-4.28-1.47 c-0.4-0.31-0.96-0.28-1.32,0.08c-0.42,0.42-0.39,1.13,0.08,1.5c1.71,1.33,3.91,2.06,6.29,1.87c4.2-0.35,7.67-3.7,8.16-7.88 C22.58,7.63,18.33,3,13,3z M4.69,12.03L4.66,12h0.05C4.7,12.01,4.7,12.02,4.69,12.03z"/> + <path android:fillColor="@android:color/white" android:pathData="M13,7c-0.55,0-1,0.45-1,1v3.58c0,0.53,0.21,1.04,0.58,1.41l2.5,2.51c0.39,0.39,1.02,0.39,1.42,0l0,0 c0.39-0.39,0.39-1.02,0-1.42L14,11.59V8C14,7.45,13.55,7,13,7z"/> +</vector>
\ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_force_stop.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_force_stop.xml new file mode 100644 index 000000000000..ad873c2b8be1 --- /dev/null +++ b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_force_stop.xml @@ -0,0 +1,20 @@ +<!-- + Copyright (C) 2020 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<vector android:height="24dp" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android"> + <path android:fillColor="@android:color/white" android:pathData="M12.65,3.12h-1.3L1.6,19.87L2.25,21h19.5l0.65-1.13L12.65,3.12z M3.55,19.5L12,4.99l8.45,14.51H3.55z"/> + <path android:fillColor="@android:color/white" android:pathData="M 11.25 10 H 12.75 V 15 H 11.25 V 10 Z"/> + <path android:fillColor="@android:color/white" android:pathData="M 11.25 16.5 H 12.75 V 18 H 11.25 V 16.5 Z"/> +</vector>
\ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_gestures.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_gestures.xml new file mode 100644 index 000000000000..45a3b24f729d --- /dev/null +++ b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_gestures.xml @@ -0,0 +1,20 @@ +<!-- + Copyright (C) 2020 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<vector android:height="24dp" android:tint="?android:attr/colorControlNormal" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android"> + <path android:fillColor="@android:color/white" android:pathData="M17.5,18.25h-11V5.75h11V7H19V2.41L17.59,1H6.41L5,2.41v19.17L6.41,23h11.17L19,21.59V17h-1.5V18.25z M17.5,2.5v1.75h-11 V2.5H17.5z M6.5,21.5v-1.75h11v1.75H6.5z"/> + <path android:fillColor="@android:color/white" android:pathData="M 17.41 10 L 16.59 10 L 15.99 11.99 L 14 12.59 L 14 13.41 L 15.99 14.01 L 16.59 16 L 17.41 16 L 18.01 14.01 L 20 13.41 L 20 12.59 L 18.01 11.99 Z"/> + <path android:fillColor="@android:color/white" android:pathData="M 20.78 8.22 L 20.23 7 L 19.77 7 L 19.22 8.22 L 18 8.77 L 18 9.23 L 19.22 9.78 L 19.77 11 L 20.23 11 L 20.78 9.78 L 22 9.23 L 22 8.77 Z"/> +</vector>
\ No newline at end of file diff --git a/packages/overlays/IconPackVictorSystemUIOverlay/Android.mk b/packages/overlays/IconPackVictorSystemUIOverlay/Android.mk new file mode 100644 index 000000000000..bd16eedd2990 --- /dev/null +++ b/packages/overlays/IconPackVictorSystemUIOverlay/Android.mk @@ -0,0 +1,29 @@ +# +# Copyright (C) 2020, The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +LOCAL_PATH:= $(call my-dir) +include $(CLEAR_VARS) + +LOCAL_RRO_THEME := IconPackVictorSystemUI + +LOCAL_PRODUCT_MODULE := true + +LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res + +LOCAL_PACKAGE_NAME := IconPackVictorSystemUIOverlay +LOCAL_SDK_VERSION := current + +include $(BUILD_RRO_PACKAGE) diff --git a/packages/overlays/IconPackVictorSystemUIOverlay/res/anim/lock_lock.xml b/packages/overlays/IconPackVictorSystemUIOverlay/res/anim/lock_lock.xml new file mode 100644 index 000000000000..2c2239fbeff0 --- /dev/null +++ b/packages/overlays/IconPackVictorSystemUIOverlay/res/anim/lock_lock.xml @@ -0,0 +1,18 @@ +<!-- +/** + * Copyright (C) 2020, The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +--> +<animated-vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:aapt="http://schemas.android.com/aapt"><aapt:attr name="android:drawable"><vector android:height="32dp" android:width="24dp" android:viewportHeight="32" android:viewportWidth="24"><group android:name="_R_G"><group android:name="_R_G_L_2_G_N_1_T_0" android:translateX="12" android:translateY="16"><group android:name="_R_G_L_2_G_T_1" android:translateY="3.001"><group android:name="_R_G_L_2_G" android:translateX="-12" android:translateY="-15"><path android:name="_R_G_L_2_G_D_0_P_0" android:fillColor="#000000" android:fillAlpha="1" android:fillType="nonZero" android:pathData=" M5.5 8 C5.5,8 4,9.5 4,9.5 C4,9.5 4,20.5 4,20.5 C4,20.5 5.5,22 5.5,22 C5.5,22 18.5,22 18.5,22 C18.5,22 20,20.5 20,20.5 C20,20.5 20,9.5 20,9.5 C20,9.5 18.5,8 18.5,8 C18.5,8 5.5,8 5.5,8c M18.5 20.5 C18.5,20.5 5.5,20.5 5.5,20.5 C5.5,20.5 5.5,9.5 5.5,9.5 C5.5,9.5 18.5,9.5 18.5,9.5 C18.5,9.5 18.5,20.5 18.5,20.5c "/></group></group></group><group android:name="_R_G_L_1_G_N_5_N_1_T_0" android:translateX="12" android:translateY="16"><group android:name="_R_G_L_1_G_N_5_T_1" android:translateY="3.001"><group android:name="_R_G_L_1_G_N_5_T_0" android:translateX="-12" android:translateY="-15"><group android:name="_R_G_L_1_G" android:pivotX="12" android:pivotY="15" android:scaleX="1" android:scaleY="1"><path android:name="_R_G_L_1_G_D_0_P_0" android:fillColor="#000000" android:fillAlpha="1" android:fillType="nonZero" android:pathData=" M12 17 C13.1,17 14,16.1 14,15 C14,13.9 13.1,13 12,13 C10.9,13 10,13.9 10,15 C10,16.1 10.9,17 12,17c "/></group></group></group></group><group android:name="_R_G_L_0_G_N_5_N_1_T_0" android:translateX="12" android:translateY="16"><group android:name="_R_G_L_0_G_N_5_T_1" android:translateY="3.001"><group android:name="_R_G_L_0_G_N_5_T_0" android:translateX="-12" android:translateY="-15"><group android:name="_R_G_L_0_G" android:translateY="-0.0009999999999994458"><path android:name="_R_G_L_0_G_D_0_P_0" android:fillColor="#000000" android:fillAlpha="1" android:fillType="nonZero" android:pathData=" M21.06 3.52 C21.06,3.52 15.99,3.53 15.99,3.53 C15.99,3.53 16,8 16,8 C16,8 14.5,8 14.5,8 C14.5,8 14.5,3.53 14.5,3.53 C14.5,3.53 15.98,2.02 15.98,2.02 C15.98,2.02 20.94,2.01 20.94,2.01 C20.94,2.01 22.44,3.54 22.44,3.54 C22.44,3.54 22.44,6.15 22.44,6.15 C22.44,6.15 21.04,6.16 21.04,6.16 C21.04,6.16 21.06,3.52 21.06,3.52c "/></group></group></group></group></group><group android:name="time_group"/></vector></aapt:attr><target android:name="_R_G_L_2_G_T_1"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="translateY" android:duration="400" android:startOffset="0" android:valueFrom="3.001" android:valueTo="3.001" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="translateY" android:duration="67" android:startOffset="400" android:valueFrom="3.001" android:valueTo="4.5" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="translateY" android:duration="83" android:startOffset="467" android:valueFrom="4.5" android:valueTo="3.001" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="_R_G_L_1_G"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="scaleX" android:duration="450" android:startOffset="0" android:valueFrom="1" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleY" android:duration="450" android:startOffset="0" android:valueFrom="1" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleX" android:duration="67" android:startOffset="450" android:valueFrom="1" android:valueTo="1.1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleY" android:duration="67" android:startOffset="450" android:valueFrom="1" android:valueTo="1.1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleX" android:duration="183" android:startOffset="517" android:valueFrom="1.1" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleY" android:duration="183" android:startOffset="517" android:valueFrom="1.1" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="_R_G_L_1_G_N_5_T_1"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="translateY" android:duration="400" android:startOffset="0" android:valueFrom="3.001" android:valueTo="3.001" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="translateY" android:duration="67" android:startOffset="400" android:valueFrom="3.001" android:valueTo="4.5" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="translateY" android:duration="83" android:startOffset="467" android:valueFrom="4.5" android:valueTo="3.001" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="_R_G_L_0_G_D_0_P_0"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="pathData" android:duration="100" android:startOffset="0" android:valueFrom="M21.06 3.52 C21.06,3.52 15.99,3.53 15.99,3.53 C15.99,3.53 16,8 16,8 C16,8 14.5,8 14.5,8 C14.5,8 14.5,3.53 14.5,3.53 C14.5,3.53 15.98,2.02 15.98,2.02 C15.98,2.02 20.94,2.01 20.94,2.01 C20.94,2.01 22.44,3.54 22.44,3.54 C22.44,3.54 22.44,6.15 22.44,6.15 C22.44,6.15 21.04,6.16 21.04,6.16 C21.04,6.16 21.06,3.52 21.06,3.52c " android:valueTo="M16.25 3.52 C16.25,3.52 15.99,3.53 15.99,3.53 C15.99,3.53 16,8 16,8 C16,8 14.5,8 14.5,8 C14.5,8 14.5,3.53 14.5,3.53 C14.5,3.53 15.68,2 15.68,2 C15.68,2 16.51,2 16.51,2 C16.51,2 17.58,3.53 17.58,3.53 C17.58,3.53 17.62,6.15 17.62,6.15 C17.62,6.15 16.26,6.16 16.26,6.16 C16.26,6.16 16.25,3.52 16.25,3.52c " android:valueType="pathType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.833,0.833 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="pathData" android:duration="17" android:startOffset="100" android:valueFrom="M16.25 3.52 C16.25,3.52 15.99,3.53 15.99,3.53 C15.99,3.53 16,8 16,8 C16,8 14.5,8 14.5,8 C14.5,8 14.5,3.53 14.5,3.53 C14.5,3.53 15.68,2 15.68,2 C15.68,2 16.51,2 16.51,2 C16.51,2 17.58,3.53 17.58,3.53 C17.58,3.53 17.62,6.15 17.62,6.15 C17.62,6.15 16.26,6.16 16.26,6.16 C16.26,6.16 16.25,3.52 16.25,3.52c " android:valueTo="M15.98 3.51 C15.98,3.51 14.5,3.53 14.5,3.53 C14.5,3.53 14.5,8 14.5,8 C14.5,8 16,8 16,8 C16,8 16,3.53 16,3.53 C16,3.53 15.98,2.02 15.98,2.02 C15.98,2.02 14.5,2.01 14.5,2.01 C14.5,2.01 14.48,3.51 14.48,3.51 C14.48,3.51 14.48,6.17 14.48,6.17 C14.48,6.17 15.98,6.17 15.98,6.17 C15.98,6.17 15.98,3.51 15.98,3.51c " android:valueType="pathType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="pathData" android:duration="233" android:startOffset="117" android:valueFrom="M15.98 3.51 C15.98,3.51 14.5,3.53 14.5,3.53 C14.5,3.53 14.5,8 14.5,8 C14.5,8 16,8 16,8 C16,8 16,3.53 16,3.53 C16,3.53 15.98,2.02 15.98,2.02 C15.98,2.02 14.5,2.01 14.5,2.01 C14.5,2.01 14.48,3.51 14.48,3.51 C14.48,3.51 14.48,6.17 14.48,6.17 C14.48,6.17 15.98,6.17 15.98,6.17 C15.98,6.17 15.98,3.51 15.98,3.51c " android:valueTo="M9.5 0.95 C9.5,0.95 14.5,0.95 14.5,0.95 C14.5,0.95 14.5,8 14.5,8 C14.5,8 16,8 16,8 C16,8 16,0.95 16,0.95 C16,0.95 14.5,-0.55 14.5,-0.55 C14.5,-0.55 9.5,-0.55 9.5,-0.55 C9.5,-0.55 8,0.95 8,0.95 C8,0.95 8,5.05 8,5.05 C8,5.05 9.5,5.05 9.5,5.05 C9.5,5.05 9.5,0.95 9.5,0.95c " android:valueType="pathType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="pathData" android:duration="67" android:startOffset="350" android:valueFrom="M9.5 0.95 C9.5,0.95 14.5,0.95 14.5,0.95 C14.5,0.95 14.5,8 14.5,8 C14.5,8 16,8 16,8 C16,8 16,0.95 16,0.95 C16,0.95 14.5,-0.55 14.5,-0.55 C14.5,-0.55 9.5,-0.55 9.5,-0.55 C9.5,-0.55 8,0.95 8,0.95 C8,0.95 8,5.05 8,5.05 C8,5.05 9.5,5.05 9.5,5.05 C9.5,5.05 9.5,0.95 9.5,0.95c " android:valueTo="M9.5 3.5 C9.5,3.5 14.5,3.5 14.5,3.5 C14.5,3.5 14.5,8 14.5,8 C14.5,8 16,8 16,8 C16,8 16,3.5 16,3.5 C16,3.5 14.5,2 14.5,2 C14.5,2 9.5,2 9.5,2 C9.5,2 8,3.5 8,3.5 C8,3.5 8,8 8,8 C8,8 9.5,8 9.5,8 C9.5,8 9.5,3.5 9.5,3.5c " android:valueType="pathType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="_R_G_L_0_G_N_5_T_1"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="translateY" android:duration="400" android:startOffset="0" android:valueFrom="3.001" android:valueTo="3.001" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="translateY" android:duration="67" android:startOffset="400" android:valueFrom="3.001" android:valueTo="4.5" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="translateY" android:duration="83" android:startOffset="467" android:valueFrom="4.5" android:valueTo="3.001" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="time_group"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="translateX" android:duration="767" android:startOffset="0" android:valueFrom="0" android:valueTo="1" android:valueType="floatType"/></set></aapt:attr></target></animated-vector>
\ No newline at end of file diff --git a/packages/overlays/IconPackVictorSystemUIOverlay/res/anim/lock_scanning.xml b/packages/overlays/IconPackVictorSystemUIOverlay/res/anim/lock_scanning.xml new file mode 100644 index 000000000000..64a9f8c57845 --- /dev/null +++ b/packages/overlays/IconPackVictorSystemUIOverlay/res/anim/lock_scanning.xml @@ -0,0 +1,18 @@ +<!-- +/** + * Copyright (C) 2020, The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +--> +<animated-vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:aapt="http://schemas.android.com/aapt"><aapt:attr name="android:drawable"><vector android:height="32dp" android:width="24dp" android:viewportHeight="32" android:viewportWidth="24"><group android:name="_R_G"><group android:name="_R_G_L_2_G" android:translateY="4.001000000000001" android:pivotX="12" android:pivotY="15" android:scaleX="1" android:scaleY="1"><path android:name="_R_G_L_2_G_D_0_P_0" android:fillColor="#000000" android:fillAlpha="1" android:fillType="nonZero" android:pathData=" M5.5 8 C5.5,8 4,9.5 4,9.5 C4,9.5 4,20.5 4,20.5 C4,20.5 5.5,22 5.5,22 C5.5,22 18.5,22 18.5,22 C18.5,22 20,20.5 20,20.5 C20,20.5 20,9.5 20,9.5 C20,9.5 18.5,8 18.5,8 C18.5,8 5.5,8 5.5,8c M18.5 20.5 C18.5,20.5 5.5,20.5 5.5,20.5 C5.5,20.5 5.5,9.5 5.5,9.5 C5.5,9.5 18.5,9.5 18.5,9.5 C18.5,9.5 18.5,20.5 18.5,20.5c "/></group><group android:name="_R_G_L_1_G_N_3_T_0" android:translateY="4.001000000000001" android:pivotX="12" android:pivotY="15" android:scaleX="1" android:scaleY="1"><group android:name="_R_G_L_1_G" android:pivotX="12" android:pivotY="15" android:scaleX="1" android:scaleY="1"><path android:name="_R_G_L_1_G_D_0_P_0" android:fillColor="#000000" android:fillAlpha="1" android:fillType="nonZero" android:pathData=" M12 17 C13.1,17 14,16.1 14,15 C14,13.9 13.1,13 12,13 C10.9,13 10,13.9 10,15 C10,16.1 10.9,17 12,17c "/></group></group><group android:name="_R_G_L_0_G_N_3_T_0" android:translateY="4.001000000000001" android:pivotX="12" android:pivotY="15" android:scaleX="1" android:scaleY="1"><group android:name="_R_G_L_0_G_T_1" android:translateX="12" android:translateY="12"><group android:name="_R_G_L_0_G" android:translateX="-12" android:translateY="-12"><path android:name="_R_G_L_0_G_D_0_P_0" android:fillColor="#000000" android:fillAlpha="1" android:fillType="nonZero" android:pathData=" M9.5 3.5 C9.5,3.5 14.5,3.5 14.5,3.5 C14.5,3.5 14.5,8 14.5,8 C14.5,8 16,8 16,8 C16,8 16,3.5 16,3.5 C16,3.5 14.5,2 14.5,2 C14.5,2 9.5,2 9.5,2 C9.5,2 8,3.5 8,3.5 C8,3.5 8,8 8,8 C8,8 9.5,8 9.5,8 C9.5,8 9.5,3.5 9.5,3.5c "/></group></group></group></group><group android:name="time_group"/></vector></aapt:attr><target android:name="_R_G_L_2_G"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="scaleX" android:duration="83" android:startOffset="0" android:valueFrom="1" android:valueTo="0.96" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleY" android:duration="83" android:startOffset="0" android:valueFrom="1" android:valueTo="0.96" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleX" android:duration="183" android:startOffset="83" android:valueFrom="0.96" android:valueTo="1.28" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleY" android:duration="183" android:startOffset="83" android:valueFrom="0.96" android:valueTo="1.28" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleX" android:duration="250" android:startOffset="267" android:valueFrom="1.28" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleY" android:duration="250" android:startOffset="267" android:valueFrom="1.28" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="_R_G_L_1_G"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="scaleX" android:duration="67" android:startOffset="0" android:valueFrom="1" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleY" android:duration="67" android:startOffset="0" android:valueFrom="1" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleX" android:duration="117" android:startOffset="67" android:valueFrom="1" android:valueTo="0.6" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleY" android:duration="117" android:startOffset="67" android:valueFrom="1" android:valueTo="0.6" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleX" android:duration="333" android:startOffset="183" android:valueFrom="0.6" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleY" android:duration="333" android:startOffset="183" android:valueFrom="0.6" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="_R_G_L_1_G_N_3_T_0"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="scaleX" android:duration="83" android:startOffset="0" android:valueFrom="1" android:valueTo="0.96" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleY" android:duration="83" android:startOffset="0" android:valueFrom="1" android:valueTo="0.96" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleX" android:duration="183" android:startOffset="83" android:valueFrom="0.96" android:valueTo="1.28" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleY" android:duration="183" android:startOffset="83" android:valueFrom="0.96" android:valueTo="1.28" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleX" android:duration="250" android:startOffset="267" android:valueFrom="1.28" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleY" android:duration="250" android:startOffset="267" android:valueFrom="1.28" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="_R_G_L_0_G_D_0_P_0"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="pathData" android:duration="150" android:startOffset="0" android:valueFrom="M9.5 3.5 C9.5,3.5 14.5,3.5 14.5,3.5 C14.5,3.5 14.5,8 14.5,8 C14.5,8 16,8 16,8 C16,8 16,3.5 16,3.5 C16,3.5 14.5,2 14.5,2 C14.5,2 9.5,2 9.5,2 C9.5,2 8,3.5 8,3.5 C8,3.5 8,8 8,8 C8,8 9.5,8 9.5,8 C9.5,8 9.5,3.5 9.5,3.5c " android:valueTo="M9.5 3.5 C9.5,3.5 14.5,3.5 14.5,3.5 C14.5,3.5 14.51,6.34 14.51,6.34 C14.51,6.34 16.01,6.34 16.01,6.34 C16.01,6.34 16,3.5 16,3.5 C16,3.5 14.5,2 14.5,2 C14.5,2 9.5,2 9.5,2 C9.5,2 8,3.5 8,3.5 C8,3.5 8.01,6.34 8.01,6.34 C8.01,6.34 9.51,6.34 9.51,6.34 C9.51,6.34 9.5,3.5 9.5,3.5c " android:valueType="pathType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="pathData" android:duration="117" android:startOffset="150" android:valueFrom="M9.5 3.5 C9.5,3.5 14.5,3.5 14.5,3.5 C14.5,3.5 14.51,6.34 14.51,6.34 C14.51,6.34 16.01,6.34 16.01,6.34 C16.01,6.34 16,3.5 16,3.5 C16,3.5 14.5,2 14.5,2 C14.5,2 9.5,2 9.5,2 C9.5,2 8,3.5 8,3.5 C8,3.5 8.01,6.34 8.01,6.34 C8.01,6.34 9.51,6.34 9.51,6.34 C9.51,6.34 9.5,3.5 9.5,3.5c " android:valueTo="M9.5 3.5 C9.5,3.5 14.5,3.5 14.5,3.5 C14.5,3.5 14.5,8 14.5,8 C14.5,8 16,8 16,8 C16,8 16,3.5 16,3.5 C16,3.5 14.5,2 14.5,2 C14.5,2 9.5,2 9.5,2 C9.5,2 8,3.5 8,3.5 C8,3.5 8,8 8,8 C8,8 9.5,8 9.5,8 C9.5,8 9.5,3.5 9.5,3.5c " android:valueType="pathType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="_R_G_L_0_G_T_1"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="translateXY" android:duration="150" android:startOffset="0" android:propertyXName="translateX" android:propertyYName="translateY" android:pathData="M 12,12C 12,12.42409592866898 12,14.545 12,14.545"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="translateXY" android:duration="117" android:startOffset="150" android:propertyXName="translateX" android:propertyYName="translateY" android:pathData="M 12,14.545C 12,14.545 12,12.42409592866898 12,12"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="_R_G_L_0_G_N_3_T_0"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="scaleX" android:duration="83" android:startOffset="0" android:valueFrom="1" android:valueTo="0.96" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleY" android:duration="83" android:startOffset="0" android:valueFrom="1" android:valueTo="0.96" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleX" android:duration="183" android:startOffset="83" android:valueFrom="0.96" android:valueTo="1.28" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleY" android:duration="183" android:startOffset="83" android:valueFrom="0.96" android:valueTo="1.28" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleX" android:duration="250" android:startOffset="267" android:valueFrom="1.28" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleY" android:duration="250" android:startOffset="267" android:valueFrom="1.28" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="time_group"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="translateX" android:duration="767" android:startOffset="0" android:valueFrom="0" android:valueTo="1" android:valueType="floatType"/></set></aapt:attr></target></animated-vector>
\ No newline at end of file diff --git a/packages/overlays/IconPackVictorSystemUIOverlay/res/anim/lock_to_error.xml b/packages/overlays/IconPackVictorSystemUIOverlay/res/anim/lock_to_error.xml new file mode 100644 index 000000000000..76b1e2d26112 --- /dev/null +++ b/packages/overlays/IconPackVictorSystemUIOverlay/res/anim/lock_to_error.xml @@ -0,0 +1,18 @@ +<!-- +/** + * Copyright (C) 2020, The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +--> +<animated-vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:aapt="http://schemas.android.com/aapt"><aapt:attr name="android:drawable"><vector android:height="24dp" android:width="24dp" android:viewportHeight="24" android:viewportWidth="24"><group android:name="_R_G"><group android:name="_R_G_L_2_G" android:translateY="0.0009999999999994458" android:pivotX="12" android:pivotY="15" android:rotation="0"><path android:name="_R_G_L_2_G_D_0_P_0" android:fillColor="#000000" android:fillAlpha="1" android:fillType="nonZero" android:pathData=" M5.5 8 C5.5,8 4,9.5 4,9.5 C4,9.5 4,20.5 4,20.5 C4,20.5 5.5,22 5.5,22 C5.5,22 18.5,22 18.5,22 C18.5,22 20,20.5 20,20.5 C20,20.5 20,9.5 20,9.5 C20,9.5 18.5,8 18.5,8 C18.5,8 5.5,8 5.5,8c M18.5 20.5 C18.5,20.5 5.5,20.5 5.5,20.5 C5.5,20.5 5.5,9.5 5.5,9.5 C5.5,9.5 18.5,9.5 18.5,9.5 C18.5,9.5 18.5,20.5 18.5,20.5c "/></group><group android:name="_R_G_L_1_G_N_3_T_0" android:translateY="0.0009999999999994458" android:pivotX="12" android:pivotY="15" android:rotation="0"><group android:name="_R_G_L_1_G"><path android:name="_R_G_L_1_G_D_0_P_0" android:fillColor="#000000" android:fillAlpha="1" android:fillType="nonZero" android:pathData=" M12 17 C13.1,17 14,16.1 14,15 C14,13.9 13.1,13 12,13 C10.9,13 10,13.9 10,15 C10,16.1 10.9,17 12,17c "/></group></group><group android:name="_R_G_L_0_G_N_3_T_0" android:translateY="0.0009999999999994458" android:pivotX="12" android:pivotY="15" android:rotation="0"><group android:name="_R_G_L_0_G" android:translateY="-0.0009999999999994458"><path android:name="_R_G_L_0_G_D_0_P_0" android:fillColor="#000000" android:fillAlpha="1" android:fillType="nonZero" android:pathData=" M9.5 3.5 C9.5,3.5 14.5,3.5 14.5,3.5 C14.5,3.5 14.5,8 14.5,8 C14.5,8 16,8 16,8 C16,8 16,3.5 16,3.5 C16,3.5 14.5,2 14.5,2 C14.5,2 9.5,2 9.5,2 C9.5,2 8,3.5 8,3.5 C8,3.5 8,8 8,8 C8,8 9.5,8 9.5,8 C9.5,8 9.5,3.5 9.5,3.5c "/></group></group></group><group android:name="time_group"/></vector></aapt:attr><target android:name="_R_G_L_2_G"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="rotation" android:duration="117" android:startOffset="0" android:valueFrom="0" android:valueTo="-10" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.465,0 0.558,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="rotation" android:duration="100" android:startOffset="117" android:valueFrom="-10" android:valueTo="10" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.51,0 0.531,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="rotation" android:duration="100" android:startOffset="217" android:valueFrom="10" android:valueTo="-5" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.469,0 0.599,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="rotation" android:duration="167" android:startOffset="317" android:valueFrom="-5" android:valueTo="0" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.384,0 0.565,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="_R_G_L_1_G_N_3_T_0"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="rotation" android:duration="117" android:startOffset="0" android:valueFrom="0" android:valueTo="-10" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.465,0 0.558,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="rotation" android:duration="100" android:startOffset="117" android:valueFrom="-10" android:valueTo="10" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.51,0 0.531,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="rotation" android:duration="100" android:startOffset="217" android:valueFrom="10" android:valueTo="-5" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.469,0 0.599,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="rotation" android:duration="167" android:startOffset="317" android:valueFrom="-5" android:valueTo="0" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.384,0 0.565,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="_R_G_L_0_G_N_3_T_0"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="rotation" android:duration="117" android:startOffset="0" android:valueFrom="0" android:valueTo="-10" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.465,0 0.558,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="rotation" android:duration="100" android:startOffset="117" android:valueFrom="-10" android:valueTo="10" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.51,0 0.531,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="rotation" android:duration="100" android:startOffset="217" android:valueFrom="10" android:valueTo="-5" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.469,0 0.599,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="rotation" android:duration="167" android:startOffset="317" android:valueFrom="-5" android:valueTo="0" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.384,0 0.565,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="time_group"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="translateX" android:duration="767" android:startOffset="0" android:valueFrom="0" android:valueTo="1" android:valueType="floatType"/></set></aapt:attr></target></animated-vector>
\ No newline at end of file diff --git a/packages/overlays/IconPackVictorSystemUIOverlay/res/anim/lock_unlock.xml b/packages/overlays/IconPackVictorSystemUIOverlay/res/anim/lock_unlock.xml new file mode 100644 index 000000000000..2d0e4bdaa017 --- /dev/null +++ b/packages/overlays/IconPackVictorSystemUIOverlay/res/anim/lock_unlock.xml @@ -0,0 +1,18 @@ +<!-- +/** + * Copyright (C) 2020, The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +--> +<animated-vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:aapt="http://schemas.android.com/aapt"><aapt:attr name="android:drawable"><vector android:height="32dp" android:width="24dp" android:viewportHeight="32" android:viewportWidth="24"><group android:name="_R_G"><group android:name="_R_G_L_2_G_N_1_T_0" android:translateX="12" android:translateY="16"><group android:name="_R_G_L_2_G_T_1" android:translateY="3.001"><group android:name="_R_G_L_2_G" android:translateX="-12" android:translateY="-15"><path android:name="_R_G_L_2_G_D_0_P_0" android:fillColor="#000000" android:fillAlpha="1" android:fillType="nonZero" android:pathData=" M5.5 8 C5.5,8 4,9.5 4,9.5 C4,9.5 4,20.5 4,20.5 C4,20.5 5.5,22 5.5,22 C5.5,22 18.5,22 18.5,22 C18.5,22 20,20.5 20,20.5 C20,20.5 20,9.5 20,9.5 C20,9.5 18.5,8 18.5,8 C18.5,8 5.5,8 5.5,8c M18.5 20.5 C18.5,20.5 5.5,20.5 5.5,20.5 C5.5,20.5 5.5,9.5 5.5,9.5 C5.5,9.5 18.5,9.5 18.5,9.5 C18.5,9.5 18.5,20.5 18.5,20.5c "/></group></group></group><group android:name="_R_G_L_1_G_N_8_N_1_T_0" android:translateX="12" android:translateY="16"><group android:name="_R_G_L_1_G_N_8_T_1" android:translateY="3.001"><group android:name="_R_G_L_1_G_N_8_T_0" android:translateX="-12" android:translateY="-15"><group android:name="_R_G_L_1_G" android:pivotX="12" android:pivotY="15" android:scaleX="1" android:scaleY="1"><path android:name="_R_G_L_1_G_D_0_P_0" android:fillColor="#000000" android:fillAlpha="1" android:fillType="nonZero" android:pathData=" M12 17 C13.1,17 14,16.1 14,15 C14,13.9 13.1,13 12,13 C10.9,13 10,13.9 10,15 C10,16.1 10.9,17 12,17c "/></group></group></group></group><group android:name="_R_G_L_0_G_N_8_N_1_T_0" android:translateX="12" android:translateY="16"><group android:name="_R_G_L_0_G_N_8_T_1" android:translateY="3.001"><group android:name="_R_G_L_0_G_N_8_T_0" android:translateX="-12" android:translateY="-15"><group android:name="_R_G_L_0_G" android:translateY="-0.0009999999999994458"><path android:name="_R_G_L_0_G_D_0_P_0" android:fillColor="#000000" android:fillAlpha="1" android:fillType="nonZero" android:pathData=" M9.5 3.5 C9.5,3.5 14.5,3.5 14.5,3.5 C14.5,3.5 14.5,8 14.5,8 C14.5,8 16,8 16,8 C16,8 16,3.5 16,3.5 C16,3.5 14.5,2 14.5,2 C14.5,2 9.5,2 9.5,2 C9.5,2 8,3.5 8,3.5 C8,3.5 8,8 8,8 C8,8 9.5,8 9.5,8 C9.5,8 9.5,3.5 9.5,3.5c "/></group></group></group></group></group><group android:name="time_group"/></vector></aapt:attr><target android:name="_R_G_L_2_G_T_1"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="translateY" android:duration="133" android:startOffset="0" android:valueFrom="3.001" android:valueTo="1.5" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="translateY" android:duration="133" android:startOffset="133" android:valueFrom="1.5" android:valueTo="4" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="translateY" android:duration="100" android:startOffset="267" android:valueFrom="4" android:valueTo="3.001" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="_R_G_L_1_G"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="scaleX" android:duration="100" android:startOffset="0" android:valueFrom="1" android:valueTo="0.8200000000000001" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleY" android:duration="100" android:startOffset="0" android:valueFrom="1" android:valueTo="0.8200000000000001" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleX" android:duration="283" android:startOffset="100" android:valueFrom="0.8200000000000001" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleY" android:duration="283" android:startOffset="100" android:valueFrom="0.8200000000000001" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="_R_G_L_1_G_N_8_T_1"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="translateY" android:duration="133" android:startOffset="0" android:valueFrom="3.001" android:valueTo="1.5" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="translateY" android:duration="133" android:startOffset="133" android:valueFrom="1.5" android:valueTo="4" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="translateY" android:duration="100" android:startOffset="267" android:valueFrom="4" android:valueTo="3.001" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="_R_G_L_0_G_D_0_P_0"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="pathData" android:duration="67" android:startOffset="0" android:valueFrom="M9.5 3.5 C9.5,3.5 14.5,3.5 14.5,3.5 C14.5,3.5 14.5,8 14.5,8 C14.5,8 16,8 16,8 C16,8 16,3.5 16,3.5 C16,3.5 14.5,2 14.5,2 C14.5,2 9.5,2 9.5,2 C9.5,2 8,3.5 8,3.5 C8,3.5 8,8 8,8 C8,8 9.5,8 9.5,8 C9.5,8 9.5,3.5 9.5,3.5c " android:valueTo="M9.5 0.95 C9.5,0.95 14.5,0.95 14.5,0.95 C14.5,0.95 14.5,8 14.5,8 C14.5,8 16,8 16,8 C16,8 16,0.95 16,0.95 C16,0.95 14.5,-0.55 14.5,-0.55 C14.5,-0.55 9.5,-0.55 9.5,-0.55 C9.5,-0.55 8,0.95 8,0.95 C8,0.95 8,5.05 8,5.05 C8,5.05 9.5,5.05 9.5,5.05 C9.5,5.05 9.5,0.95 9.5,0.95c " android:valueType="pathType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="pathData" android:duration="117" android:startOffset="67" android:valueFrom="M9.5 0.95 C9.5,0.95 14.5,0.95 14.5,0.95 C14.5,0.95 14.5,8 14.5,8 C14.5,8 16,8 16,8 C16,8 16,0.95 16,0.95 C16,0.95 14.5,-0.55 14.5,-0.55 C14.5,-0.55 9.5,-0.55 9.5,-0.55 C9.5,-0.55 8,0.95 8,0.95 C8,0.95 8,5.05 8,5.05 C8,5.05 9.5,5.05 9.5,5.05 C9.5,5.05 9.5,0.95 9.5,0.95c " android:valueTo="M15.98 3.51 C15.98,3.51 14.5,3.53 14.5,3.53 C14.5,3.53 14.5,8 14.5,8 C14.5,8 16,8 16,8 C16,8 16,3.53 16,3.53 C16,3.53 15.98,2.02 15.98,2.02 C15.98,2.02 14.5,2.01 14.5,2.01 C14.5,2.01 14.48,3.51 14.48,3.51 C14.48,3.51 14.48,6.17 14.48,6.17 C14.48,6.17 15.98,6.17 15.98,6.17 C15.98,6.17 15.98,3.51 15.98,3.51c " android:valueType="pathType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="pathData" android:duration="17" android:startOffset="183" android:valueFrom="M15.98 3.51 C15.98,3.51 14.5,3.53 14.5,3.53 C14.5,3.53 14.5,8 14.5,8 C14.5,8 16,8 16,8 C16,8 16,3.53 16,3.53 C16,3.53 15.98,2.02 15.98,2.02 C15.98,2.02 14.5,2.01 14.5,2.01 C14.5,2.01 14.48,3.51 14.48,3.51 C14.48,3.51 14.48,6.17 14.48,6.17 C14.48,6.17 15.98,6.17 15.98,6.17 C15.98,6.17 15.98,3.51 15.98,3.51c " android:valueTo="M16.25 3.52 C16.25,3.52 15.99,3.53 15.99,3.53 C15.99,3.53 16,8 16,8 C16,8 14.5,8 14.5,8 C14.5,8 14.5,3.53 14.5,3.53 C14.5,3.53 15.68,2 15.68,2 C15.68,2 16.51,2 16.51,2 C16.51,2 17.58,3.53 17.58,3.53 C17.58,3.53 17.62,6.15 17.62,6.15 C17.62,6.15 16.26,6.16 16.26,6.16 C16.26,6.16 16.25,3.52 16.25,3.52c " android:valueType="pathType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="pathData" android:duration="183" android:startOffset="200" android:valueFrom="M16.25 3.52 C16.25,3.52 15.99,3.53 15.99,3.53 C15.99,3.53 16,8 16,8 C16,8 14.5,8 14.5,8 C14.5,8 14.5,3.53 14.5,3.53 C14.5,3.53 15.68,2 15.68,2 C15.68,2 16.51,2 16.51,2 C16.51,2 17.58,3.53 17.58,3.53 C17.58,3.53 17.62,6.15 17.62,6.15 C17.62,6.15 16.26,6.16 16.26,6.16 C16.26,6.16 16.25,3.52 16.25,3.52c " android:valueTo="M21.06 3.52 C21.06,3.52 15.99,3.53 15.99,3.53 C15.99,3.53 16,8 16,8 C16,8 14.5,8 14.5,8 C14.5,8 14.5,3.53 14.5,3.53 C14.5,3.53 15.98,2.02 15.98,2.02 C15.98,2.02 20.94,2.01 20.94,2.01 C20.94,2.01 22.44,3.54 22.44,3.54 C22.44,3.54 22.44,6.15 22.44,6.15 C22.44,6.15 21.04,6.16 21.04,6.16 C21.04,6.16 21.06,3.52 21.06,3.52c " android:valueType="pathType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="_R_G_L_0_G_N_8_T_1"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="translateY" android:duration="133" android:startOffset="0" android:valueFrom="3.001" android:valueTo="1.5" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="translateY" android:duration="133" android:startOffset="133" android:valueFrom="1.5" android:valueTo="4" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="translateY" android:duration="100" android:startOffset="267" android:valueFrom="4" android:valueTo="3.001" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="time_group"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="translateX" android:duration="767" android:startOffset="0" android:valueFrom="0" android:valueTo="1" android:valueType="floatType"/></set></aapt:attr></target></animated-vector>
\ No newline at end of file diff --git a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_brightness_thumb.xml b/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_brightness_thumb.xml new file mode 100644 index 000000000000..4121433c4e95 --- /dev/null +++ b/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_brightness_thumb.xml @@ -0,0 +1,20 @@ +<!-- + Copyright (C) 2020 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<vector android:height="24dp" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android"> + <path android:fillColor="?android:attr/colorBackgroundFloating" android:pathData="M18.5,9.31V5.5h-3.81L12,2.81L9.31,5.5H5.5v3.81L2.81,12l2.69,2.69v3.81h3.81L12,21.19l2.69-2.69h3.81 v-3.81L21.19,12L18.5,9.31z M12,17c-2.76,0-5-2.24-5-5s2.24-5,5-5s5,2.24,5,5S14.76,17,12,17z"/> + <path android:fillColor="?android:attr/colorControlActivated" android:pathData="M20,8.69V4.71L19.29,4h-3.98L12.5,1.19h-1L8.69,4H4.71L4,4.71v3.98L1.19,11.5v1L4,15.31v3.98L4.71,20h3.98l2.81,2.81h1 L15.31,20h3.98L20,19.29v-3.98l2.81-2.81v-1L20,8.69z M18.5,14.69v3.81h-3.81L12,21.19L9.31,18.5H5.5v-3.81L2.81,12L5.5,9.31V5.5 h3.81L12,2.81l2.69,2.69h3.81v3.81L21.19,12L18.5,14.69z"/> + <path android:fillColor="?android:attr/colorControlActivated" android:pathData="M 12 7 C 14.7614237492 7 17 9.23857625085 17 12 C 17 14.7614237492 14.7614237492 17 12 17 C 9.23857625085 17 7 14.7614237492 7 12 C 7 9.23857625085 9.23857625085 7 12 7 Z"/> +</vector>
\ No newline at end of file diff --git a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_screenrecord.xml b/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_screenrecord.xml new file mode 100644 index 000000000000..653dfe51f474 --- /dev/null +++ b/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_screenrecord.xml @@ -0,0 +1,18 @@ +<!-- + Copyright (C) 2020 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<vector android:height="24dp" android:tint="?android:attr/colorControlNormal" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android"> + <path android:fillColor="@android:color/white" android:pathData="M12,16c-2.21,0-4-1.79-4-4c0-2.21,1.79-4,4-4c2.21,0,4,1.79,4,4C16,14.21,14.21,16,12,16z M6.94,5.18 C8.36,4.13,10.1,3.5,11.99,3.5c1.9,0,3.64,0.63,5.06,1.69l1.07-1.07C16.42,2.8,14.3,2,11.99,2C9.68,2,7.57,2.79,5.88,4.11 L6.94,5.18z M20.48,11.99c0,1.89-0.63,3.63-1.68,5.05l1.07,1.07c1.31-1.69,2.11-3.81,2.11-6.11c0-2.3-0.79-4.41-2.1-6.1l-1.07,1.07 C19.86,8.37,20.48,10.1,20.48,11.99z M3.5,11.99c0-1.89,0.63-3.63,1.68-5.05L4.11,5.88C2.79,7.57,2,9.68,2,11.99 c0,2.31,0.8,4.43,2.12,6.12l1.07-1.07C4.13,15.63,3.5,13.89,3.5,11.99z M17.04,18.8c-1.41,1.05-3.15,1.68-5.05,1.68 c-1.89,0-3.62-0.62-5.03-1.67l-1.07,1.07c1.69,1.31,3.8,2.1,6.1,2.1c2.31,0,4.42-0.79,6.11-2.11L17.04,18.8z"/> +</vector>
\ No newline at end of file diff --git a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_screenshot.xml b/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_screenshot.xml new file mode 100644 index 000000000000..cbd22c6bfeed --- /dev/null +++ b/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_screenshot.xml @@ -0,0 +1,30 @@ +<!-- + Copyright (C) 2020 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:fillColor="#FF000000" + android:pathData="M17.59,1H6.41L5,2.41v19.17L6.41,23h11.17L19,21.59V2.41L17.59,1zM17.5,2.5v1.75h-11V2.5H17.5zM17.5,5.75v12.5h-11V5.75H17.5zM6.5,21.5v-1.75h11v1.75H6.5z"/> + <path + android:fillColor="#FF000000" + android:pathData="M9.5,11l0,-2.5l2.5,0l0,-1.5l-4,0l0,4z"/> + <path + android:fillColor="#FF000000" + android:pathData="M12,17l4,0l0,-4l-1.5,0l0,2.5l-2.5,0z"/> +</vector> diff --git a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_volume_collapse_animation.xml b/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_volume_collapse_animation.xml new file mode 100644 index 000000000000..e7f7a25c074d --- /dev/null +++ b/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_volume_collapse_animation.xml @@ -0,0 +1,18 @@ +<!-- +/** + * Copyright (C) 2020, The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +--> +<animated-vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:aapt="http://schemas.android.com/aapt"><aapt:attr name="android:drawable"><vector android:height="24dp" android:width="24dp" android:viewportHeight="24" android:viewportWidth="24"><group android:name="_R_G"><group android:name="_R_G_L_0_G"><path android:name="_R_G_L_0_G_D_0_P_0" android:fillColor="#000000" android:fillAlpha="1" android:fillType="nonZero" android:pathData=" M12.01 14.87 C12.01,14.87 12,14.85 12,14.85 C12,14.85 5.05,7.94 5.05,7.94 C5.05,7.94 3.98,9.03 3.98,9.03 C3.98,9.03 10.98,15.99 10.98,15.99 C10.98,15.99 12.03,16 12.03,16 C12.03,16 13.05,16 13.05,16 C13.05,16 19.98,9.01 19.98,9.01 C19.98,9.01 18.94,7.97 18.94,7.97 C18.94,7.97 12.01,14.87 12.01,14.87c "/></group></group><group android:name="time_group"/></vector></aapt:attr><target android:name="_R_G_L_0_G_D_0_P_0"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="pathData" android:duration="250" android:startOffset="0" android:valueFrom="M12.01 14.87 C12.01,14.87 12,14.85 12,14.85 C12,14.85 5.05,7.94 5.05,7.94 C5.05,7.94 3.98,9.03 3.98,9.03 C3.98,9.03 10.98,15.99 10.98,15.99 C10.98,15.99 12.03,16 12.03,16 C12.03,16 13.05,16 13.05,16 C13.05,16 19.98,9.01 19.98,9.01 C19.98,9.01 18.94,7.97 18.94,7.97 C18.94,7.97 12.01,14.87 12.01,14.87c " android:valueTo="M13 8 C13,8 11,8 11,8 C11,8 4,15 4,15 C4,15 5.06,16.06 5.06,16.06 C5.06,16.06 11.76,9.36 11.76,9.36 C11.76,9.36 12,9.12 12,9.12 C12,9.12 12.25,9.37 12.25,9.37 C12.25,9.37 18.94,16.06 18.94,16.06 C18.94,16.06 20,15 20,15 C20,15 13,8 13,8c " android:valueType="pathType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.4,0 0.2,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="time_group"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="translateX" android:duration="267" android:startOffset="0" android:valueFrom="0" android:valueTo="1" android:valueType="floatType"/></set></aapt:attr></target></animated-vector>
\ No newline at end of file diff --git a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_volume_expand_animation.xml b/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_volume_expand_animation.xml new file mode 100644 index 000000000000..deaaf82556dd --- /dev/null +++ b/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_volume_expand_animation.xml @@ -0,0 +1,18 @@ +<!-- +/** + * Copyright (C) 2020, The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +--> +<animated-vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:aapt="http://schemas.android.com/aapt"><aapt:attr name="android:drawable"><vector android:height="24dp" android:width="24dp" android:viewportHeight="24" android:viewportWidth="24"><group android:name="_R_G"><group android:name="_R_G_L_0_G"><path android:name="_R_G_L_0_G_D_0_P_0" android:fillColor="#000000" android:fillAlpha="1" android:fillType="nonZero" android:pathData=" M13 8 C13,8 11,8 11,8 C11,8 4,15 4,15 C4,15 5.06,16.06 5.06,16.06 C5.06,16.06 11.76,9.36 11.76,9.36 C11.76,9.36 12,9.12 12,9.12 C12,9.12 12.25,9.37 12.25,9.37 C12.25,9.37 18.94,16.06 18.94,16.06 C18.94,16.06 20,15 20,15 C20,15 13,8 13,8c "/></group></group><group android:name="time_group"/></vector></aapt:attr><target android:name="_R_G_L_0_G_D_0_P_0"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="pathData" android:duration="250" android:startOffset="0" android:valueFrom="M13 8 C13,8 11,8 11,8 C11,8 4,15 4,15 C4,15 5.06,16.06 5.06,16.06 C5.06,16.06 11.76,9.36 11.76,9.36 C11.76,9.36 12,9.12 12,9.12 C12,9.12 12.25,9.37 12.25,9.37 C12.25,9.37 18.94,16.06 18.94,16.06 C18.94,16.06 20,15 20,15 C20,15 13,8 13,8c " android:valueTo="M12.01 14.87 C12.01,14.87 12,14.85 12,14.85 C12,14.85 5.05,7.94 5.05,7.94 C5.05,7.94 3.98,9.03 3.98,9.03 C3.98,9.03 10.98,15.99 10.98,15.99 C10.98,15.99 12.03,16 12.03,16 C12.03,16 13.05,16 13.05,16 C13.05,16 19.98,9.01 19.98,9.01 C19.98,9.01 18.94,7.97 18.94,7.97 C18.94,7.97 12.01,14.87 12.01,14.87c " android:valueType="pathType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.4,0 0.2,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="time_group"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="translateX" android:duration="267" android:startOffset="0" android:valueFrom="0" android:valueTo="1" android:valueType="floatType"/></set></aapt:attr></target></animated-vector>
\ No newline at end of file diff --git a/packages/overlays/IconShapeHeartOverlay/AndroidManifest.xml b/packages/overlays/IconShapeHeartOverlay/AndroidManifest.xml index 82bff7d53d95..8fb19df33178 100644 --- a/packages/overlays/IconShapeHeartOverlay/AndroidManifest.xml +++ b/packages/overlays/IconShapeHeartOverlay/AndroidManifest.xml @@ -21,6 +21,7 @@ android:versionName="1.0"> <overlay android:targetPackage="android" + android:targetName="IconShapeCustomization" android:category="android.theme.customization.adaptive_icon_shape" android:priority="1"/> diff --git a/packages/overlays/IconShapePebbleOverlay/AndroidManifest.xml b/packages/overlays/IconShapePebbleOverlay/AndroidManifest.xml index d719a97e28f2..6842dde36264 100644 --- a/packages/overlays/IconShapePebbleOverlay/AndroidManifest.xml +++ b/packages/overlays/IconShapePebbleOverlay/AndroidManifest.xml @@ -21,6 +21,7 @@ android:versionName="1.0"> <overlay android:targetPackage="android" + android:targetName="IconShapeCustomization" android:category="android.theme.customization.adaptive_icon_shape" android:priority="1"/> diff --git a/services/core/java/com/android/server/am/ActivityManagerConstants.java b/services/core/java/com/android/server/am/ActivityManagerConstants.java index 135ac9a7846e..7be843f17863 100644 --- a/services/core/java/com/android/server/am/ActivityManagerConstants.java +++ b/services/core/java/com/android/server/am/ActivityManagerConstants.java @@ -19,6 +19,7 @@ package com.android.server.am; import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_POWER_QUICK; import android.app.ActivityThread; +import android.content.ComponentName; import android.content.ContentResolver; import android.content.Context; import android.database.ContentObserver; @@ -336,6 +337,11 @@ final class ActivityManagerConstants extends ContentObserver { */ public int PENDINGINTENT_WARNING_THRESHOLD = DEFAULT_PENDINGINTENT_WARNING_THRESHOLD; + /** + * Component names of the services which will keep critical code path of the host warm + */ + public final ArraySet<ComponentName> KEEP_WARMING_SERVICES = new ArraySet<ComponentName>(); + private List<String> mDefaultImperceptibleKillExemptPackages; private List<Integer> mDefaultImperceptibleKillExemptProcStates; @@ -442,6 +448,10 @@ final class ActivityManagerConstants extends ContentObserver { .boxed().collect(Collectors.toList()); IMPERCEPTIBLE_KILL_EXEMPT_PACKAGES.addAll(mDefaultImperceptibleKillExemptPackages); IMPERCEPTIBLE_KILL_EXEMPT_PROC_STATES.addAll(mDefaultImperceptibleKillExemptProcStates); + KEEP_WARMING_SERVICES.addAll(Arrays.stream( + context.getResources().getStringArray( + com.android.internal.R.array.config_keep_warming_services)) + .map(ComponentName::unflattenFromString).collect(Collectors.toSet())); } public void start(ContentResolver resolver) { diff --git a/services/core/java/com/android/server/am/CoreSettingsObserver.java b/services/core/java/com/android/server/am/CoreSettingsObserver.java index 8527ae971352..2661dd62ce21 100644 --- a/services/core/java/com/android/server/am/CoreSettingsObserver.java +++ b/services/core/java/com/android/server/am/CoreSettingsObserver.java @@ -92,7 +92,7 @@ final class CoreSettingsObserver extends ContentObserver { sGlobalSettingToTypeMap.put( Settings.Global.GLOBAL_SETTINGS_ANGLE_GL_DRIVER_SELECTION_VALUES, String.class); sGlobalSettingToTypeMap.put( - Settings.Global.GLOBAL_SETTINGS_ANGLE_WHITELIST, String.class); + Settings.Global.GLOBAL_SETTINGS_ANGLE_ALLOWLIST, String.class); sGlobalSettingToTypeMap.put( Settings.Global.GLOBAL_SETTINGS_SHOW_ANGLE_IN_USE_DIALOG_BOX, String.class); sGlobalSettingToTypeMap.put(Settings.Global.ENABLE_GPU_DEBUG_LAYERS, int.class); @@ -105,9 +105,9 @@ final class CoreSettingsObserver extends ContentObserver { sGlobalSettingToTypeMap.put( Settings.Global.GAME_DRIVER_PRERELEASE_OPT_IN_APPS, String.class); sGlobalSettingToTypeMap.put(Settings.Global.GAME_DRIVER_OPT_OUT_APPS, String.class); - sGlobalSettingToTypeMap.put(Settings.Global.GAME_DRIVER_BLACKLIST, String.class); - sGlobalSettingToTypeMap.put(Settings.Global.GAME_DRIVER_WHITELIST, String.class); - sGlobalSettingToTypeMap.put(Settings.Global.GAME_DRIVER_BLACKLISTS, String.class); + sGlobalSettingToTypeMap.put(Settings.Global.GAME_DRIVER_DENYLIST, String.class); + sGlobalSettingToTypeMap.put(Settings.Global.GAME_DRIVER_ALLOWLIST, String.class); + sGlobalSettingToTypeMap.put(Settings.Global.GAME_DRIVER_DENYLISTS, String.class); sGlobalSettingToTypeMap.put(Settings.Global.GAME_DRIVER_SPHAL_LIBRARIES, String.class); // add other global settings here... diff --git a/services/core/java/com/android/server/am/OomAdjuster.java b/services/core/java/com/android/server/am/OomAdjuster.java index 14ba4afe497a..a2e8216a011a 100644 --- a/services/core/java/com/android/server/am/OomAdjuster.java +++ b/services/core/java/com/android/server/am/OomAdjuster.java @@ -76,7 +76,11 @@ import android.app.ApplicationExitInfo; import android.app.usage.UsageEvents; import android.compat.annotation.ChangeId; import android.compat.annotation.EnabledAfter; +import android.content.BroadcastReceiver; +import android.content.ComponentName; import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; import android.content.pm.ServiceInfo; import android.os.Debug; import android.os.Handler; @@ -265,6 +269,43 @@ public final class OomAdjuster { void initSettings() { mCachedAppOptimizer.init(); + if (mService.mConstants.KEEP_WARMING_SERVICES.size() > 0) { + final IntentFilter filter = new IntentFilter(Intent.ACTION_USER_SWITCHED); + mService.mContext.registerReceiverForAllUsers(new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + synchronized (mService) { + handleUserSwitchedLocked(); + } + } + }, filter, null, mService.mHandler); + } + } + + /** + * Update the keep-warming service flags upon user switches + */ + @VisibleForTesting + @GuardedBy("mService") + void handleUserSwitchedLocked() { + final ArraySet<ComponentName> warmServices = mService.mConstants.KEEP_WARMING_SERVICES; + final ArrayList<ProcessRecord> processes = mProcessList.mLruProcesses; + for (int i = processes.size() - 1; i >= 0; i--) { + final ProcessRecord app = processes.get(i); + boolean includeWarmPkg = false; + for (int j = warmServices.size() - 1; j >= 0; j--) { + if (app.pkgList.containsKey(warmServices.valueAt(j).getPackageName())) { + includeWarmPkg = true; + break; + } + } + if (!includeWarmPkg) { + continue; + } + for (int j = app.numberOfRunningServices() - 1; j >= 0; j--) { + app.getRunningServiceAt(j).updateKeepWarmLocked(); + } + } } /** @@ -1470,7 +1511,7 @@ public final class OomAdjuster { "Raise procstate to started service: " + app); } } - if (app.hasShownUi && !app.getCachedIsHomeProcess()) { + if (!s.mKeepWarming && app.hasShownUi && !app.getCachedIsHomeProcess()) { // If this process has shown some UI, let it immediately // go to the LRU list because it may be pretty heavy with // UI stuff. We'll tag it with a label just to help @@ -1479,7 +1520,8 @@ public final class OomAdjuster { app.adjType = "cch-started-ui-services"; } } else { - if (now < (s.lastActivity + mConstants.MAX_SERVICE_INACTIVITY)) { + if (s.mKeepWarming + || now < (s.lastActivity + mConstants.MAX_SERVICE_INACTIVITY)) { // This service has seen some activity within // recent memory, so we will keep its process ahead // of the background processes. diff --git a/services/core/java/com/android/server/am/ProcessList.java b/services/core/java/com/android/server/am/ProcessList.java index 5a0ea7586301..88b0c3be5464 100644 --- a/services/core/java/com/android/server/am/ProcessList.java +++ b/services/core/java/com/android/server/am/ProcessList.java @@ -2940,25 +2940,26 @@ public final class ProcessList { if ((expecting == null) || (old == expecting)) { mProcessNames.remove(name, uid); } - if (old != null && old.uidRecord != null) { - old.uidRecord.numProcs--; - old.uidRecord.procRecords.remove(old); - if (old.uidRecord.numProcs == 0) { + final ProcessRecord record = expecting != null ? expecting : old; + if (record != null && record.uidRecord != null) { + final UidRecord uidRecord = record.uidRecord; + uidRecord.numProcs--; + uidRecord.procRecords.remove(record); + if (uidRecord.numProcs == 0) { // No more processes using this uid, tell clients it is gone. if (DEBUG_UID_OBSERVERS) Slog.i(TAG_UID_OBSERVERS, - "No more processes in " + old.uidRecord); - mService.enqueueUidChangeLocked(old.uidRecord, -1, UidRecord.CHANGE_GONE); + "No more processes in " + uidRecord); + mService.enqueueUidChangeLocked(uidRecord, -1, UidRecord.CHANGE_GONE); EventLogTags.writeAmUidStopped(uid); mActiveUids.remove(uid); mService.noteUidProcessState(uid, ActivityManager.PROCESS_STATE_NONEXISTENT, ActivityManager.PROCESS_CAPABILITY_NONE); } - old.uidRecord = null; + record.uidRecord = null; } mIsolatedProcesses.remove(uid); mGlobalIsolatedUids.freeIsolatedUidLocked(uid); // Remove the (expected) ProcessRecord from the app zygote - final ProcessRecord record = expecting != null ? expecting : old; if (record != null && record.appZygote) { removeProcessFromAppZygoteLocked(record); } diff --git a/services/core/java/com/android/server/am/ServiceRecord.java b/services/core/java/com/android/server/am/ServiceRecord.java index 9c96e6e02566..fc17ddedb39f 100644 --- a/services/core/java/com/android/server/am/ServiceRecord.java +++ b/services/core/java/com/android/server/am/ServiceRecord.java @@ -40,6 +40,7 @@ import android.util.TimeUtils; import android.util.proto.ProtoOutputStream; import android.util.proto.ProtoUtils; +import com.android.internal.annotations.GuardedBy; import com.android.internal.app.procstats.ServiceState; import com.android.internal.os.BatteryStatsImpl; import com.android.server.LocalServices; @@ -146,6 +147,8 @@ final class ServiceRecord extends Binder implements ComponentName.WithComponentN private int lastStartId; // identifier of most recent start request. + boolean mKeepWarming; // Whether or not it'll keep critical code path of the host warm + static class StartItem { final ServiceRecord sr; final boolean taskRemoved; @@ -514,6 +517,7 @@ final class ServiceRecord extends Binder implements ComponentName.WithComponentN lastActivity = SystemClock.uptimeMillis(); userId = UserHandle.getUserId(appInfo.uid); createdFromFg = callerIsFg; + updateKeepWarmLocked(); } public ServiceState getTracker() { @@ -732,6 +736,14 @@ final class ServiceRecord extends Binder implements ComponentName.WithComponentN } } + @GuardedBy("ams") + void updateKeepWarmLocked() { + mKeepWarming = ams.mConstants.KEEP_WARMING_SERVICES.contains(name) + && (ams.mUserController.getCurrentUserId() == userId + || ams.isSingleton(processName, appInfo, instanceName.getClassName(), + serviceInfo.flags)); + } + public AppBindRecord retrieveAppBindingLocked(Intent intent, ProcessRecord app) { Intent.FilterComparison filter = new Intent.FilterComparison(intent); diff --git a/services/core/java/com/android/server/display/DisplayManagerService.java b/services/core/java/com/android/server/display/DisplayManagerService.java index 1058000e0b68..24661d69a78e 100644 --- a/services/core/java/com/android/server/display/DisplayManagerService.java +++ b/services/core/java/com/android/server/display/DisplayManagerService.java @@ -2548,8 +2548,7 @@ public final class DisplayManagerService extends SystemService { public boolean requestPowerState(DisplayPowerRequest request, boolean waitForNegativeProximity) { synchronized (mSyncRoot) { - return mDisplayPowerController.requestPowerState(request, - waitForNegativeProximity); + return mDisplayPowerController.requestPowerState(request, waitForNegativeProximity); } } @@ -2677,6 +2676,10 @@ public final class DisplayManagerService extends SystemService { return getDisplayedContentSampleInternal(displayId, maxFrames, timestamp); } + @Override + public void ignoreProximitySensorUntilChanged() { + mDisplayPowerController.ignoreProximitySensorUntilChanged(); + } } class DesiredDisplayModeSpecsObserver diff --git a/services/core/java/com/android/server/display/DisplayPowerController.java b/services/core/java/com/android/server/display/DisplayPowerController.java index 9411c5629457..7c0f4197363b 100644 --- a/services/core/java/com/android/server/display/DisplayPowerController.java +++ b/services/core/java/com/android/server/display/DisplayPowerController.java @@ -117,6 +117,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call private static final int MSG_CONFIGURE_BRIGHTNESS = 5; private static final int MSG_SET_TEMPORARY_BRIGHTNESS = 6; private static final int MSG_SET_TEMPORARY_AUTO_BRIGHTNESS_ADJUSTMENT = 7; + private static final int MSG_IGNORE_PROXIMITY = 8; private static final int PROXIMITY_UNKNOWN = -1; private static final int PROXIMITY_NEGATIVE = 0; @@ -263,6 +264,11 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call // go to sleep by the user. While true, the screen remains off. private boolean mWaitingForNegativeProximity; + // True if the device should not take into account the proximity sensor + // until either the proximity sensor state changes, or there is no longer a + // request to listen to proximity sensor. + private boolean mIgnoreProximityUntilChanged; + // The actual proximity sensor threshold value. private float mProximityThreshold; @@ -760,8 +766,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call if (mPowerRequest == null) { mPowerRequest = new DisplayPowerRequest(mPendingRequestLocked); - mWaitingForNegativeProximity = mPendingWaitForNegativeProximityLocked; - mPendingWaitForNegativeProximityLocked = false; + updatePendingProximityRequestsLocked(); mPendingRequestChangedLocked = false; mustInitialize = true; // Assume we're on and bright until told otherwise, since that's the state we turn @@ -770,8 +775,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call } else if (mPendingRequestChangedLocked) { previousPolicy = mPowerRequest.policy; mPowerRequest.copyFrom(mPendingRequestLocked); - mWaitingForNegativeProximity |= mPendingWaitForNegativeProximityLocked; - mPendingWaitForNegativeProximityLocked = false; + updatePendingProximityRequestsLocked(); mPendingRequestChangedLocked = false; mDisplayReadyLocked = false; } else { @@ -822,9 +826,16 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call // Apply the proximity sensor. if (mProximitySensor != null) { if (mPowerRequest.useProximitySensor && state != Display.STATE_OFF) { + // At this point the policy says that the screen should be on, but we've been + // asked to listen to the prox sensor to adjust the display state, so lets make + // sure the sensor is on. setProximitySensorEnabled(true); if (!mScreenOffBecauseOfProximity - && mProximity == PROXIMITY_POSITIVE) { + && mProximity == PROXIMITY_POSITIVE + && !mIgnoreProximityUntilChanged) { + // Prox sensor already reporting "near" so we should turn off the screen. + // Also checked that we aren't currently set to ignore the proximity sensor + // temporarily. mScreenOffBecauseOfProximity = true; sendOnProximityPositiveWithWakelock(); } @@ -832,18 +843,28 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call && mScreenOffBecauseOfProximity && mProximity == PROXIMITY_POSITIVE && state != Display.STATE_OFF) { + // The policy says that we should have the screen on, but it's off due to the prox + // and we've been asked to wait until the screen is far from the user to turn it + // back on. Let keep the prox sensor on so we can tell when it's far again. setProximitySensorEnabled(true); } else { + // We haven't been asked to use the prox sensor and we're not waiting on the screen + // to turn back on...so lets shut down the prox sensor. setProximitySensorEnabled(false); mWaitingForNegativeProximity = false; } + if (mScreenOffBecauseOfProximity - && mProximity != PROXIMITY_POSITIVE) { + && (mProximity != PROXIMITY_POSITIVE || mIgnoreProximityUntilChanged)) { + // The screen *was* off due to prox being near, but now it's "far" so lets turn + // the screen back on. Also turn it back on if we've been asked to ignore the + // prox sensor temporarily. mScreenOffBecauseOfProximity = false; sendOnProximityNegativeWithWakelock(); } } else { mWaitingForNegativeProximity = false; + mIgnoreProximityUntilChanged = false; } if (mScreenOffBecauseOfProximity) { state = Display.STATE_OFF; @@ -1181,6 +1202,14 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call sendUpdatePowerState(); } + /** + * Ignores the proximity sensor until the sensor state changes, but only if the sensor is + * currently enabled and forcing the screen to be dark. + */ + public void ignoreProximitySensorUntilChanged() { + mHandler.sendEmptyMessage(MSG_IGNORE_PROXIMITY); + } + public void setBrightnessConfiguration(BrightnessConfiguration c) { Message msg = mHandler.obtainMessage(MSG_CONFIGURE_BRIGHTNESS, c); msg.sendToTarget(); @@ -1529,6 +1558,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call // Register the listener. // Proximity sensor state already cleared initially. mProximitySensorEnabled = true; + mIgnoreProximityUntilChanged = false; mSensorManager.registerListener(mProximitySensorListener, mProximitySensor, SensorManager.SENSOR_DELAY_NORMAL, mHandler); } @@ -1538,6 +1568,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call // Clear the proximity sensor state for next time. mProximitySensorEnabled = false; mProximity = PROXIMITY_UNKNOWN; + mIgnoreProximityUntilChanged = false; mPendingProximity = PROXIMITY_UNKNOWN; mHandler.removeMessages(MSG_PROXIMITY_SENSOR_DEBOUNCED); mSensorManager.unregisterListener(mProximitySensorListener); @@ -1580,6 +1611,11 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call && mPendingProximityDebounceTime >= 0) { final long now = SystemClock.uptimeMillis(); if (mPendingProximityDebounceTime <= now) { + if (mProximity != mPendingProximity) { + // if the status of the sensor changed, stop ignoring. + mIgnoreProximityUntilChanged = false; + Slog.i(TAG, "No longer ignoring proximity [" + mPendingProximity + "]"); + } // Sensor reading accepted. Apply the change then release the wake lock. mProximity = mPendingProximity; updatePowerState(); @@ -1723,6 +1759,27 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call } } + private void updatePendingProximityRequestsLocked() { + mWaitingForNegativeProximity |= mPendingWaitForNegativeProximityLocked; + mPendingWaitForNegativeProximityLocked = false; + + if (mIgnoreProximityUntilChanged) { + // Also, lets stop waiting for negative proximity if we're ignoring it. + mWaitingForNegativeProximity = false; + } + } + + private void ignoreProximitySensorUntilChangedInternal() { + if (!mIgnoreProximityUntilChanged + && mPowerRequest.useProximitySensor + && mProximity == PROXIMITY_POSITIVE) { + // Only ignore if it is still reporting positive (near) + mIgnoreProximityUntilChanged = true; + Slog.i(TAG, "Ignoring proximity"); + updatePowerState(); + } + } + private final Runnable mOnStateChangedRunnable = new Runnable() { @Override public void run() { @@ -1961,6 +2018,10 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call mTemporaryAutoBrightnessAdjustment = Float.intBitsToFloat(msg.arg1); updatePowerState(); break; + + case MSG_IGNORE_PROXIMITY: + ignoreProximitySensorUntilChangedInternal(); + break; } } } diff --git a/services/core/java/com/android/server/gpu/GpuService.java b/services/core/java/com/android/server/gpu/GpuService.java index 8a3c963f4805..c0617ca95f9f 100644 --- a/services/core/java/com/android/server/gpu/GpuService.java +++ b/services/core/java/com/android/server/gpu/GpuService.java @@ -29,8 +29,6 @@ import android.content.IntentFilter; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.database.ContentObserver; -import android.gamedriver.GameDriverProto.Blacklist; -import android.gamedriver.GameDriverProto.Blacklists; import android.net.Uri; import android.os.Build; import android.os.Handler; @@ -40,6 +38,8 @@ import android.provider.DeviceConfig; import android.provider.DeviceConfig.Properties; import android.provider.Settings; import android.text.TextUtils; +import android.updatabledriver.UpdatableDriverProto.Denylist; +import android.updatabledriver.UpdatableDriverProto.Denylists; import android.util.Base64; import android.util.Slog; @@ -65,7 +65,7 @@ public class GpuService extends SystemService { private static final String PROD_DRIVER_PROPERTY = "ro.gfx.driver.0"; private static final String DEV_DRIVER_PROPERTY = "ro.gfx.driver.1"; - private static final String GAME_DRIVER_WHITELIST_FILENAME = "whitelist.txt"; + private static final String GAME_DRIVER_ALLOWLIST_FILENAME = "allowlist.txt"; private static final int BASE64_FLAGS = Base64.NO_PADDING | Base64.NO_WRAP; private final Context mContext; @@ -81,7 +81,7 @@ public class GpuService extends SystemService { private SettingsObserver mSettingsObserver; private DeviceConfigListener mDeviceConfigListener; @GuardedBy("mLock") - private Blacklists mBlacklists; + private Denylists mDenylists; public GpuService(Context context) { super(context); @@ -118,19 +118,19 @@ public class GpuService extends SystemService { mSettingsObserver = new SettingsObserver(); mDeviceConfigListener = new DeviceConfigListener(); fetchGameDriverPackageProperties(); - processBlacklists(); - setBlacklist(); + processDenylists(); + setDenylist(); fetchDeveloperDriverPackageProperties(); } } private final class SettingsObserver extends ContentObserver { - private final Uri mGameDriverBlackUri = - Settings.Global.getUriFor(Settings.Global.GAME_DRIVER_BLACKLISTS); + private final Uri mGameDriverDenylistsUri = + Settings.Global.getUriFor(Settings.Global.GAME_DRIVER_DENYLISTS); SettingsObserver() { super(new Handler()); - mContentResolver.registerContentObserver(mGameDriverBlackUri, false, this, + mContentResolver.registerContentObserver(mGameDriverDenylistsUri, false, this, UserHandle.USER_ALL); } @@ -140,9 +140,9 @@ public class GpuService extends SystemService { return; } - if (mGameDriverBlackUri.equals(uri)) { - processBlacklists(); - setBlacklist(); + if (mGameDriverDenylistsUri.equals(uri)) { + processDenylists(); + setDenylist(); } } } @@ -157,10 +157,10 @@ public class GpuService extends SystemService { @Override public void onPropertiesChanged(Properties properties) { synchronized (mDeviceConfigLock) { - if (properties.getKeyset().contains(Settings.Global.GAME_DRIVER_BLACKLISTS)) { - parseBlacklists( - properties.getString(Settings.Global.GAME_DRIVER_BLACKLISTS, "")); - setBlacklist(); + if (properties.getKeyset().contains(Settings.Global.GAME_DRIVER_DENYLISTS)) { + parseDenylists( + properties.getString(Settings.Global.GAME_DRIVER_DENYLISTS, "")); + setDenylist(); } } } @@ -187,7 +187,7 @@ public class GpuService extends SystemService { case ACTION_PACKAGE_REMOVED: if (isProdDriver) { fetchGameDriverPackageProperties(); - setBlacklist(); + setDenylist(); } else if (isDevDriver) { fetchDeveloperDriverPackageProperties(); } @@ -239,17 +239,17 @@ public class GpuService extends SystemService { return; } - // Reset the whitelist. + // Reset the allowlist. Settings.Global.putString(mContentResolver, - Settings.Global.GAME_DRIVER_WHITELIST, ""); + Settings.Global.GAME_DRIVER_ALLOWLIST, ""); mGameDriverVersionCode = driverInfo.longVersionCode; try { final Context driverContext = mContext.createPackageContext(mProdDriverPackageName, Context.CONTEXT_RESTRICTED); - assetToSettingsGlobal(mContext, driverContext, GAME_DRIVER_WHITELIST_FILENAME, - Settings.Global.GAME_DRIVER_WHITELIST, ","); + assetToSettingsGlobal(mContext, driverContext, GAME_DRIVER_ALLOWLIST_FILENAME, + Settings.Global.GAME_DRIVER_ALLOWLIST, ","); } catch (PackageManager.NameNotFoundException e) { if (DEBUG) { Slog.w(TAG, "driver package '" + mProdDriverPackageName + "' not installed"); @@ -257,48 +257,48 @@ public class GpuService extends SystemService { } } - private void processBlacklists() { + private void processDenylists() { String base64String = DeviceConfig.getProperty(DeviceConfig.NAMESPACE_GAME_DRIVER, - Settings.Global.GAME_DRIVER_BLACKLISTS); + Settings.Global.GAME_DRIVER_DENYLISTS); if (base64String == null) { base64String = Settings.Global.getString(mContentResolver, - Settings.Global.GAME_DRIVER_BLACKLISTS); + Settings.Global.GAME_DRIVER_DENYLISTS); } - parseBlacklists(base64String != null ? base64String : ""); + parseDenylists(base64String != null ? base64String : ""); } - private void parseBlacklists(String base64String) { + private void parseDenylists(String base64String) { synchronized (mLock) { - // Reset all blacklists - mBlacklists = null; + // Reset all denylists + mDenylists = null; try { - mBlacklists = Blacklists.parseFrom(Base64.decode(base64String, BASE64_FLAGS)); + mDenylists = Denylists.parseFrom(Base64.decode(base64String, BASE64_FLAGS)); } catch (IllegalArgumentException e) { if (DEBUG) { - Slog.w(TAG, "Can't parse blacklist, skip and continue..."); + Slog.w(TAG, "Can't parse denylist, skip and continue..."); } } catch (InvalidProtocolBufferException e) { if (DEBUG) { - Slog.w(TAG, "Can't parse blacklist, skip and continue..."); + Slog.w(TAG, "Can't parse denylist, skip and continue..."); } } } } - private void setBlacklist() { + private void setDenylist() { Settings.Global.putString(mContentResolver, - Settings.Global.GAME_DRIVER_BLACKLIST, ""); + Settings.Global.GAME_DRIVER_DENYLIST, ""); synchronized (mLock) { - if (mBlacklists == null) { + if (mDenylists == null) { return; } - List<Blacklist> blacklists = mBlacklists.getBlacklistsList(); - for (Blacklist blacklist : blacklists) { - if (blacklist.getVersionCode() == mGameDriverVersionCode) { + List<Denylist> denylists = mDenylists.getDenylistsList(); + for (Denylist denylist : denylists) { + if (denylist.getVersionCode() == mGameDriverVersionCode) { Settings.Global.putString(mContentResolver, - Settings.Global.GAME_DRIVER_BLACKLIST, - String.join(",", blacklist.getPackageNamesList())); + Settings.Global.GAME_DRIVER_DENYLIST, + String.join(",", denylist.getPackageNamesList())); return; } } diff --git a/services/core/java/com/android/server/location/gnss/GnssNetworkConnectivityHandler.java b/services/core/java/com/android/server/location/gnss/GnssNetworkConnectivityHandler.java index 531aef6aeb0f..6f3756cfaea9 100644 --- a/services/core/java/com/android/server/location/gnss/GnssNetworkConnectivityHandler.java +++ b/services/core/java/com/android/server/location/gnss/GnssNetworkConnectivityHandler.java @@ -86,7 +86,7 @@ class GnssNetworkConnectivityHandler { // Default time limit in milliseconds for the ConnectivityManager to find a suitable // network with SUPL connectivity or report an error. - private static final int SUPL_NETWORK_REQUEST_TIMEOUT_MILLIS = 10 * 1000; + private static final int SUPL_NETWORK_REQUEST_TIMEOUT_MILLIS = 20 * 1000; private static final int HASH_MAP_INITIAL_CAPACITY_TO_TRACK_CONNECTED_NETWORKS = 5; diff --git a/services/core/java/com/android/server/notification/PreferencesHelper.java b/services/core/java/com/android/server/notification/PreferencesHelper.java index c3cb42f95cc6..bc78d66037fe 100644 --- a/services/core/java/com/android/server/notification/PreferencesHelper.java +++ b/services/core/java/com/android/server/notification/PreferencesHelper.java @@ -75,7 +75,6 @@ import java.io.PrintWriter; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; -import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Objects; @@ -174,8 +173,6 @@ public class PreferencesHelper implements RankingConfig { private boolean mAllowInvalidShortcuts = false; - private Map<String, List<String>> mOemLockedApps = new HashMap(); - public PreferencesHelper(Context context, PackageManager pm, RankingHandler rankingHandler, ZenModeHelper zenHelper, NotificationChannelLogger notificationChannelLogger, AppOpsManager appOpsManager, @@ -317,12 +314,6 @@ public class PreferencesHelper implements RankingConfig { } channel.setImportanceLockedByCriticalDeviceFunction( r.defaultAppLockedImportance); - channel.setImportanceLockedByOEM(r.oemLockedImportance); - if (!channel.isImportanceLockedByOEM()) { - if (r.oemLockedChannels.contains(channel.getId())) { - channel.setImportanceLockedByOEM(true); - } - } boolean isInvalidShortcutChannel = channel.getConversationId() != null && channel.getConversationId().contains( @@ -405,14 +396,6 @@ public class PreferencesHelper implements RankingConfig { r.visibility = visibility; r.showBadge = showBadge; r.bubblePreference = bubblePreference; - if (mOemLockedApps.containsKey(r.pkg)) { - List<String> channels = mOemLockedApps.get(r.pkg); - if (channels == null || channels.isEmpty()) { - r.oemLockedImportance = true; - } else { - r.oemLockedChannels = channels; - } - } try { createDefaultChannelIfNeededLocked(r); @@ -1166,10 +1149,8 @@ public class PreferencesHelper implements RankingConfig { String channelId = appSplit.length == 2 ? appSplit[1] : null; synchronized (mPackagePreferences) { - boolean foundApp = false; for (PackagePreferences r : mPackagePreferences.values()) { if (r.pkg.equals(appName)) { - foundApp = true; if (channelId == null) { // lock all channels for the app r.oemLockedImportance = true; @@ -1187,14 +1168,6 @@ public class PreferencesHelper implements RankingConfig { } } } - if (!foundApp) { - List<String> channels = - mOemLockedApps.getOrDefault(appName, new ArrayList<>()); - if (channelId != null) { - channels.add(channelId); - } - mOemLockedApps.put(appName, channels); - } } } } diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java index 0890b9212d2c..a4ed4e316ac3 100644 --- a/services/core/java/com/android/server/policy/PhoneWindowManager.java +++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java @@ -934,6 +934,8 @@ public class PhoneWindowManager implements WindowManagerPolicy { } } + final boolean handledByPowerManager = mPowerManagerInternal.interceptPowerKeyDown(event); + GestureLauncherService gestureService = LocalServices.getService( GestureLauncherService.class); boolean gesturedServiceIntercepted = false; @@ -953,7 +955,8 @@ public class PhoneWindowManager implements WindowManagerPolicy { // If the power key has still not yet been handled, then detect short // press, long press, or multi press and decide what to do. mPowerKeyHandled = hungUp || mScreenshotChordVolumeDownKeyTriggered - || mA11yShortcutChordVolumeUpKeyTriggered || gesturedServiceIntercepted; + || mA11yShortcutChordVolumeUpKeyTriggered || gesturedServiceIntercepted + || handledByPowerManager; if (!mPowerKeyHandled) { if (interactive) { // When interactive, we're already awake. diff --git a/services/core/java/com/android/server/power/AttentionDetector.java b/services/core/java/com/android/server/power/AttentionDetector.java index b69c45070487..cbdfc56d6aa4 100644 --- a/services/core/java/com/android/server/power/AttentionDetector.java +++ b/services/core/java/com/android/server/power/AttentionDetector.java @@ -75,6 +75,12 @@ public class AttentionDetector { /** Default value in absence of {@link DeviceConfig} override. */ static final long DEFAULT_POST_DIM_CHECK_DURATION_MILLIS = 0; + /** + * DeviceConfig flag name, describes the limit of how long the device can remain unlocked due to + * attention checking. + */ + static final String KEY_MAX_EXTENSION_MILLIS = "max_extension_millis"; + private Context mContext; private boolean mIsSettingEnabled; @@ -85,11 +91,11 @@ public class AttentionDetector { private final Runnable mOnUserAttention; /** - * The maximum time, in millis, that the phone can stay unlocked because of attention events, - * triggered by any user. + * The default value for the maximum time, in millis, that the phone can stay unlocked because + * of attention events, triggered by any user. */ @VisibleForTesting - protected long mMaximumExtensionMillis; + protected long mDefaultMaximumExtensionMillis; private final Object mLock; @@ -162,7 +168,7 @@ public class AttentionDetector { mContentResolver = context.getContentResolver(); mAttentionManager = LocalServices.getService(AttentionManagerInternal.class); mWindowManager = LocalServices.getService(WindowManagerInternal.class); - mMaximumExtensionMillis = context.getResources().getInteger( + mDefaultMaximumExtensionMillis = context.getResources().getInteger( com.android.internal.R.integer.config_attentionMaximumExtension); try { @@ -196,7 +202,7 @@ public class AttentionDetector { final long now = SystemClock.uptimeMillis(); final long whenToCheck = nextScreenDimming - getPreDimCheckDurationMillis(); - final long whenToStopExtending = mLastUserActivityTime + mMaximumExtensionMillis; + final long whenToStopExtending = mLastUserActivityTime + getMaxExtensionMillis(); if (now < whenToCheck) { if (DEBUG) { Slog.d(TAG, "Do not check for attention yet, wait " + (whenToCheck - now)); @@ -309,7 +315,7 @@ public class AttentionDetector { public void dump(PrintWriter pw) { pw.println("AttentionDetector:"); pw.println(" mIsSettingEnabled=" + mIsSettingEnabled); - pw.println(" mMaximumExtensionMillis=" + mMaximumExtensionMillis); + pw.println(" mMaxExtensionMillis=" + getMaxExtensionMillis()); pw.println(" preDimCheckDurationMillis=" + getPreDimCheckDurationMillis()); pw.println(" postDimCheckDurationMillis=" + mLastPostDimTimeout); pw.println(" mLastUserActivityTime(excludingAttention)=" + mLastUserActivityTime); @@ -348,6 +354,21 @@ public class AttentionDetector { return mLastPostDimTimeout; } + /** How long the device can remain unlocked due to attention checking. */ + @VisibleForTesting + protected long getMaxExtensionMillis() { + final long millis = DeviceConfig.getLong(NAMESPACE_ATTENTION_MANAGER_SERVICE, + KEY_MAX_EXTENSION_MILLIS, + mDefaultMaximumExtensionMillis); + + if (millis < 0 || millis > 60 * 60 * 1000) { // 1 hour + Slog.w(TAG, "Bad flag value supplied for: " + KEY_MAX_EXTENSION_MILLIS); + return mDefaultMaximumExtensionMillis; + } + + return millis; + } + @VisibleForTesting final class AttentionCallbackInternalImpl extends AttentionCallbackInternal { private final int mId; diff --git a/services/core/java/com/android/server/power/PowerManagerService.java b/services/core/java/com/android/server/power/PowerManagerService.java index 691ae233ad22..1d949dc548da 100644 --- a/services/core/java/com/android/server/power/PowerManagerService.java +++ b/services/core/java/com/android/server/power/PowerManagerService.java @@ -85,6 +85,7 @@ import android.util.SparseArray; import android.util.TimeUtils; import android.util.proto.ProtoOutputStream; import android.view.Display; +import android.view.KeyEvent; import com.android.internal.BrightnessSynchronizer; import com.android.internal.annotations.VisibleForTesting; @@ -5425,6 +5426,29 @@ public final class PowerManagerService extends SystemService } } + /** + * If the user presses power while the proximity sensor is enabled and keeping + * the screen off, then turn the screen back on by telling display manager to + * ignore the proximity sensor. We don't turn off the proximity sensor because + * we still want it to be reenabled if it's state changes. + * + * @return True if the proximity sensor was successfully ignored and we should + * consume the key event. + */ + private boolean interceptPowerKeyDownInternal(KeyEvent event) { + synchronized (mLock) { + // DisplayPowerController only reports proximity positive (near) if it's + // positive and the proximity wasn't already being ignored. So it reliably + // also tells us that we're not already ignoring the proximity sensor. + if (mDisplayPowerRequest.useProximitySensor && mProximityPositive) { + mDisplayManagerInternal.ignoreProximitySensorUntilChanged(); + return true; + } + } + + return false; + } + @VisibleForTesting final class LocalService extends PowerManagerInternal { @Override @@ -5561,5 +5585,10 @@ public final class PowerManagerService extends SystemService public WakeData getLastWakeup() { return getLastWakeupInternal(); } + + @Override + public boolean interceptPowerKeyDown(KeyEvent event) { + return interceptPowerKeyDownInternal(event); + } } } diff --git a/services/core/java/com/android/server/trust/TrustManagerService.java b/services/core/java/com/android/server/trust/TrustManagerService.java index 2394bafc09de..fd3c1f97df8b 100644 --- a/services/core/java/com/android/server/trust/TrustManagerService.java +++ b/services/core/java/com/android/server/trust/TrustManagerService.java @@ -1469,7 +1469,7 @@ public class TrustManagerService extends SystemService { if (userId > 0) { return userId; } else { - Slog.wtf(TAG, "EXTRA_USER_HANDLE missing or invalid, value=" + userId); + Log.w(TAG, "EXTRA_USER_HANDLE missing or invalid, value=" + userId); return -100; } } diff --git a/services/tests/mockingservicestests/src/com/android/server/am/MockingOomAdjusterTests.java b/services/tests/mockingservicestests/src/com/android/server/am/MockingOomAdjusterTests.java index fde40aa77a0e..2a267c413c31 100644 --- a/services/tests/mockingservicestests/src/com/android/server/am/MockingOomAdjusterTests.java +++ b/services/tests/mockingservicestests/src/com/android/server/am/MockingOomAdjusterTests.java @@ -84,6 +84,7 @@ import android.os.Build; import android.os.IBinder; import android.os.PowerManagerInternal; import android.os.SystemClock; +import android.os.UserHandle; import android.platform.test.annotations.Presubmit; import android.util.ArrayMap; import android.util.ArraySet; @@ -130,6 +131,7 @@ public class MockingOomAdjusterTests { private static final int MOCKAPP5_UID = MOCKAPP_UID + 4; private static final String MOCKAPP5_PROCESSNAME = "test #5"; private static final String MOCKAPP5_PACKAGENAME = "com.android.test.test5"; + private static final int MOCKAPP2_UID_OTHER = MOCKAPP2_UID + UserHandle.PER_USER_RANGE; private static Context sContext; private static PackageManagerInternal sPackageManagerInternal; private static ActivityManagerService sService; @@ -168,6 +170,8 @@ public class MockingOomAdjusterTests { mock(SparseArray.class)); setFieldValue(ActivityManagerService.class, sService, "mOomAdjProfiler", mock(OomAdjProfiler.class)); + setFieldValue(ActivityManagerService.class, sService, "mUserController", + mock(UserController.class)); doReturn(new ActivityManagerService.ProcessChangeItem()).when(sService) .enqueueProcessChangeItemLocked(anyInt(), anyInt()); sService.mOomAdjuster = new OomAdjuster(sService, sService.mProcessList, @@ -1621,6 +1625,117 @@ public class MockingOomAdjusterTests { assertEquals(SERVICE_ADJ, app.setAdj); } + @SuppressWarnings("GuardedBy") + @Test + public void testUpdateOomAdj_DoAll_Service_KeepWarmingList() { + final ProcessRecord app = spy(makeDefaultProcessRecord(MOCKAPP_PID, MOCKAPP_UID, + MOCKAPP_PROCESSNAME, MOCKAPP_PACKAGENAME, false)); + final ProcessRecord app2 = spy(makeDefaultProcessRecord(MOCKAPP2_PID, MOCKAPP2_UID_OTHER, + MOCKAPP2_PROCESSNAME, MOCKAPP2_PACKAGENAME, false)); + final int userOwner = 0; + final int userOther = 1; + final int cachedAdj1 = CACHED_APP_MIN_ADJ + ProcessList.CACHED_APP_IMPORTANCE_LEVELS; + final int cachedAdj2 = cachedAdj1 + ProcessList.CACHED_APP_IMPORTANCE_LEVELS * 2; + doReturn(userOwner).when(sService.mUserController).getCurrentUserId(); + + final ArrayList<ProcessRecord> lru = sService.mProcessList.mLruProcesses; + lru.clear(); + lru.add(app2); + lru.add(app); + + final ComponentName cn = ComponentName.unflattenFromString( + MOCKAPP_PACKAGENAME + "/.TestService"); + final ComponentName cn2 = ComponentName.unflattenFromString( + MOCKAPP2_PACKAGENAME + "/.TestService"); + final long now = SystemClock.uptimeMillis(); + + sService.mConstants.KEEP_WARMING_SERVICES.clear(); + final ServiceInfo si = mock(ServiceInfo.class); + si.applicationInfo = mock(ApplicationInfo.class); + ServiceRecord s = spy(new ServiceRecord(sService, null, cn, cn, null, 0, null, + si, false, null)); + doReturn(new ArrayMap<IBinder, ArrayList<ConnectionRecord>>()).when(s).getConnections(); + s.startRequested = true; + s.lastActivity = now; + + app.setCached(false); + app.startService(s); + app.hasShownUi = true; + + final ServiceInfo si2 = mock(ServiceInfo.class); + si2.applicationInfo = mock(ApplicationInfo.class); + si2.applicationInfo.uid = MOCKAPP2_UID_OTHER; + ServiceRecord s2 = spy(new ServiceRecord(sService, null, cn2, cn2, null, 0, null, + si2, false, null)); + doReturn(new ArrayMap<IBinder, ArrayList<ConnectionRecord>>()).when(s2).getConnections(); + s2.startRequested = true; + s2.lastActivity = now - sService.mConstants.MAX_SERVICE_INACTIVITY - 1; + + app2.setCached(false); + app2.startService(s2); + app2.hasShownUi = false; + + sService.mWakefulness = PowerManagerInternal.WAKEFULNESS_AWAKE; + sService.mOomAdjuster.updateOomAdjLocked(OomAdjuster.OOM_ADJ_REASON_NONE); + + assertProcStates(app, true, PROCESS_STATE_SERVICE, cachedAdj1, "cch-started-ui-services"); + assertProcStates(app2, true, PROCESS_STATE_SERVICE, cachedAdj2, "cch-started-services"); + + app.setProcState = PROCESS_STATE_NONEXISTENT; + app.adjType = null; + app.setAdj = UNKNOWN_ADJ; + app.hasShownUi = false; + sService.mOomAdjuster.updateOomAdjLocked(OomAdjuster.OOM_ADJ_REASON_NONE); + + assertProcStates(app, false, PROCESS_STATE_SERVICE, SERVICE_ADJ, "started-services"); + + app.setCached(false); + app.setProcState = PROCESS_STATE_NONEXISTENT; + app.adjType = null; + app.setAdj = UNKNOWN_ADJ; + s.lastActivity = now - sService.mConstants.MAX_SERVICE_INACTIVITY - 1; + sService.mOomAdjuster.updateOomAdjLocked(OomAdjuster.OOM_ADJ_REASON_NONE); + + assertProcStates(app, true, PROCESS_STATE_SERVICE, cachedAdj1, "cch-started-services"); + + app.stopService(s); + app.setProcState = PROCESS_STATE_NONEXISTENT; + app.adjType = null; + app.setAdj = UNKNOWN_ADJ; + app.hasShownUi = true; + sService.mConstants.KEEP_WARMING_SERVICES.add(cn); + sService.mConstants.KEEP_WARMING_SERVICES.add(cn2); + s = spy(new ServiceRecord(sService, null, cn, cn, null, 0, null, + si, false, null)); + doReturn(new ArrayMap<IBinder, ArrayList<ConnectionRecord>>()).when(s).getConnections(); + s.startRequested = true; + s.lastActivity = now; + + app.startService(s); + sService.mOomAdjuster.updateOomAdjLocked(OomAdjuster.OOM_ADJ_REASON_NONE); + + assertProcStates(app, false, PROCESS_STATE_SERVICE, SERVICE_ADJ, "started-services"); + assertProcStates(app2, true, PROCESS_STATE_SERVICE, cachedAdj1, "cch-started-services"); + + app.setCached(true); + app.setProcState = PROCESS_STATE_NONEXISTENT; + app.adjType = null; + app.setAdj = UNKNOWN_ADJ; + app.hasShownUi = false; + s.lastActivity = now - sService.mConstants.MAX_SERVICE_INACTIVITY - 1; + sService.mOomAdjuster.updateOomAdjLocked(OomAdjuster.OOM_ADJ_REASON_NONE); + + assertProcStates(app, false, PROCESS_STATE_SERVICE, SERVICE_ADJ, "started-services"); + assertProcStates(app2, true, PROCESS_STATE_SERVICE, cachedAdj1, "cch-started-services"); + + doReturn(userOther).when(sService.mUserController).getCurrentUserId(); + sService.mOomAdjuster.handleUserSwitchedLocked(); + + sService.mOomAdjuster.updateOomAdjLocked(OomAdjuster.OOM_ADJ_REASON_NONE); + assertProcStates(app, true, PROCESS_STATE_SERVICE, cachedAdj1, "cch-started-services"); + assertProcStates(app2, false, PROCESS_STATE_SERVICE, SERVICE_ADJ, "started-services"); + } + private ProcessRecord makeDefaultProcessRecord(int pid, int uid, String processName, String packageName, boolean hasShownUi) { long now = SystemClock.uptimeMillis(); @@ -1747,4 +1862,12 @@ public class MockingOomAdjusterTests { assertEquals(expectedAdj, app.setAdj); assertEquals(expectedSchedGroup, app.setSchedGroup); } + + private void assertProcStates(ProcessRecord app, boolean expectedCached, + int expectedProcState, int expectedAdj, String expectedAdjType) { + assertEquals(expectedCached, app.isCached()); + assertEquals(expectedProcState, app.setProcState); + assertEquals(expectedAdj, app.setAdj); + assertEquals(expectedAdjType, app.adjType); + } } diff --git a/services/tests/servicestests/src/com/android/server/power/AttentionDetectorTest.java b/services/tests/servicestests/src/com/android/server/power/AttentionDetectorTest.java index e7e8aca86364..4381bfdb0b56 100644 --- a/services/tests/servicestests/src/com/android/server/power/AttentionDetectorTest.java +++ b/services/tests/servicestests/src/com/android/server/power/AttentionDetectorTest.java @@ -21,6 +21,7 @@ import static android.provider.DeviceConfig.NAMESPACE_ATTENTION_MANAGER_SERVICE; import static com.android.server.power.AttentionDetector.DEFAULT_POST_DIM_CHECK_DURATION_MILLIS; import static com.android.server.power.AttentionDetector.DEFAULT_PRE_DIM_CHECK_DURATION_MILLIS; +import static com.android.server.power.AttentionDetector.KEY_MAX_EXTENSION_MILLIS; import static com.android.server.power.AttentionDetector.KEY_POST_DIM_CHECK_DURATION_MILLIS; import static com.android.server.power.AttentionDetector.KEY_PRE_DIM_CHECK_DURATION_MILLIS; @@ -87,6 +88,7 @@ public class AttentionDetectorTest extends AndroidTestCase { when(mWindowManagerInternal.isKeyguardShowingAndNotOccluded()).thenReturn(false); mAttentionDetector = new TestableAttentionDetector(); mRealAttentionDetector = new AttentionDetector(mOnUserAttention, new Object()); + mRealAttentionDetector.mDefaultMaximumExtensionMillis = 900_000L; mAttentionDetector.onWakefulnessChangeStarted(PowerManagerInternal.WAKEFULNESS_AWAKE); mAttentionDetector.setAttentionServiceSupported(true); mNextDimming = SystemClock.uptimeMillis() + 3000L; @@ -98,6 +100,10 @@ public class AttentionDetectorTest extends AndroidTestCase { Settings.Secure.putIntForUser(getContext().getContentResolver(), Settings.Secure.ADAPTIVE_SLEEP, 1, UserHandle.USER_CURRENT); mAttentionDetector.updateEnabledFromSettings(getContext()); + + DeviceConfig.setProperty(NAMESPACE_ATTENTION_MANAGER_SERVICE, + KEY_MAX_EXTENSION_MILLIS, + Long.toString(10_000L), false); } @After @@ -111,6 +117,9 @@ public class AttentionDetectorTest extends AndroidTestCase { DeviceConfig.setProperty(NAMESPACE_ATTENTION_MANAGER_SERVICE, KEY_POST_DIM_CHECK_DURATION_MILLIS, Long.toString(DEFAULT_POST_DIM_CHECK_DURATION_MILLIS), false); + DeviceConfig.setProperty(NAMESPACE_ATTENTION_MANAGER_SERVICE, + KEY_MAX_EXTENSION_MILLIS, + Long.toString(mRealAttentionDetector.mDefaultMaximumExtensionMillis), false); } @Test @@ -393,6 +402,42 @@ public class AttentionDetectorTest extends AndroidTestCase { DEFAULT_POST_DIM_CHECK_DURATION_MILLIS); } + @Test + public void testGetMaxExtensionMillis_handlesGoodFlagValue() { + DeviceConfig.setProperty(NAMESPACE_ATTENTION_MANAGER_SERVICE, + KEY_MAX_EXTENSION_MILLIS, "123", false); + assertThat(mRealAttentionDetector.getMaxExtensionMillis()).isEqualTo(123); + } + + @Test + public void testGetMaxExtensionMillis_rejectsNegativeValue() { + DeviceConfig.setProperty(NAMESPACE_ATTENTION_MANAGER_SERVICE, + KEY_MAX_EXTENSION_MILLIS, "-50", false); + assertThat(mRealAttentionDetector.getMaxExtensionMillis()).isEqualTo( + mRealAttentionDetector.mDefaultMaximumExtensionMillis); + } + + @Test + public void testGetMaxExtensionMillis_rejectsTooBigValue() { + DeviceConfig.setProperty(NAMESPACE_ATTENTION_MANAGER_SERVICE, + KEY_MAX_EXTENSION_MILLIS, "9900000", false); + assertThat(mRealAttentionDetector.getMaxExtensionMillis()).isEqualTo( + mRealAttentionDetector.mDefaultMaximumExtensionMillis); + } + + @Test + public void testGetMaxExtensionMillis_handlesBadFlagValue() { + DeviceConfig.setProperty(NAMESPACE_ATTENTION_MANAGER_SERVICE, + KEY_MAX_EXTENSION_MILLIS, "20000k", false); + assertThat(mRealAttentionDetector.getMaxExtensionMillis()).isEqualTo( + mRealAttentionDetector.mDefaultMaximumExtensionMillis); + + DeviceConfig.setProperty(NAMESPACE_ATTENTION_MANAGER_SERVICE, + KEY_MAX_EXTENSION_MILLIS, "0.25", false); + assertThat(mRealAttentionDetector.getMaxExtensionMillis()).isEqualTo( + mRealAttentionDetector.mDefaultMaximumExtensionMillis); + } + private long registerAttention() { mPreDimCheckDuration = 4000L; mAttentionDetector.onUserActivity(SystemClock.uptimeMillis(), @@ -409,7 +454,6 @@ public class AttentionDetectorTest extends AndroidTestCase { mWindowManager = mWindowManagerInternal; mPackageManager = AttentionDetectorTest.this.mPackageManager; mContentResolver = getContext().getContentResolver(); - mMaximumExtensionMillis = 10000L; } void setAttentionServiceSupported(boolean supported) { diff --git a/services/tests/uiservicestests/src/com/android/server/notification/PreferencesHelperTest.java b/services/tests/uiservicestests/src/com/android/server/notification/PreferencesHelperTest.java index a118e0df1338..4dc8ad9d0a98 100644 --- a/services/tests/uiservicestests/src/com/android/server/notification/PreferencesHelperTest.java +++ b/services/tests/uiservicestests/src/com/android/server/notification/PreferencesHelperTest.java @@ -2670,96 +2670,6 @@ public class PreferencesHelperTest extends UiServiceTestCase { } @Test - public void testLockChannelsForOEM_onlyGivenPkg_appDoesNotExistYet() { - mHelper.lockChannelsForOEM(new String[] {PKG_O}); - - NotificationChannel a = new NotificationChannel("a", "a", IMPORTANCE_HIGH); - NotificationChannel b = new NotificationChannel("b", "b", IMPORTANCE_LOW); - mHelper.createNotificationChannel(PKG_O, 3, a, true, false); - mHelper.createNotificationChannel(PKG_N_MR1, 30, b, false, false); - - assertTrue(mHelper.getNotificationChannel(PKG_O, 3, a.getId(), false) - .isImportanceLockedByOEM()); - assertFalse(mHelper.getNotificationChannel(PKG_N_MR1, 30, b.getId(), false) - .isImportanceLockedByOEM()); - } - - @Test - public void testLockChannelsForOEM_channelSpecific_appDoesNotExistYet() { - mHelper.lockChannelsForOEM(new String[] {PKG_O + ":b", PKG_O + ":c"}); - - NotificationChannel a = new NotificationChannel("a", "a", IMPORTANCE_HIGH); - NotificationChannel b = new NotificationChannel("b", "b", IMPORTANCE_LOW); - NotificationChannel c = new NotificationChannel("c", "c", IMPORTANCE_DEFAULT); - // different uids, same package - mHelper.createNotificationChannel(PKG_O, 3, a, true, false); - mHelper.createNotificationChannel(PKG_O, 3, b, false, false); - mHelper.createNotificationChannel(PKG_O, 30, c, true, true); - - assertFalse(mHelper.getNotificationChannel(PKG_O, 3, a.getId(), false) - .isImportanceLockedByOEM()); - assertTrue(mHelper.getNotificationChannel(PKG_O, 3, b.getId(), false) - .isImportanceLockedByOEM()); - assertTrue(mHelper.getNotificationChannel(PKG_O, 30, c.getId(), false) - .isImportanceLockedByOEM()); - } - - @Test - public void testLockChannelsForOEM_onlyGivenPkg_appDoesNotExistYet_restoreData() - throws Exception { - mHelper.lockChannelsForOEM(new String[] {PKG_O}); - - final String xml = "<ranking version=\"1\">\n" - + "<package name=\"" + PKG_O + "\" uid=\"" + UID_O + "\" >\n" - + "<channel id=\"a\" name=\"a\" importance=\"3\"/>" - + "<channel id=\"b\" name=\"b\" importance=\"3\"/>" - + "</package>" - + "<package name=\"" + PKG_N_MR1 + "\" uid=\"" + UID_N_MR1 + "\" >\n" - + "<channel id=\"a\" name=\"a\" importance=\"3\"/>" - + "<channel id=\"b\" name=\"b\" importance=\"3\"/>" - + "</package>" - + "</ranking>"; - XmlPullParser parser = Xml.newPullParser(); - parser.setInput(new BufferedInputStream(new ByteArrayInputStream(xml.getBytes())), - null); - parser.nextTag(); - mHelper.readXml(parser, false, UserHandle.USER_ALL); - - assertTrue(mHelper.getNotificationChannel(PKG_O, UID_O, "a", false) - .isImportanceLockedByOEM()); - assertFalse(mHelper.getNotificationChannel(PKG_N_MR1, UID_N_MR1, "b", false) - .isImportanceLockedByOEM()); - } - - @Test - public void testLockChannelsForOEM_channelSpecific_appDoesNotExistYet_restoreData() - throws Exception { - mHelper.lockChannelsForOEM(new String[] {PKG_O + ":b", PKG_O + ":c"}); - - final String xml = "<ranking version=\"1\">\n" - + "<package name=\"" + PKG_O + "\" uid=\"" + 3 + "\" >\n" - + "<channel id=\"a\" name=\"a\" importance=\"3\"/>" - + "<channel id=\"b\" name=\"b\" importance=\"3\"/>" - + "</package>" - + "<package name=\"" + PKG_O + "\" uid=\"" + 30 + "\" >\n" - + "<channel id=\"c\" name=\"c\" importance=\"3\"/>" - + "</package>" - + "</ranking>"; - XmlPullParser parser = Xml.newPullParser(); - parser.setInput(new BufferedInputStream(new ByteArrayInputStream(xml.getBytes())), - null); - parser.nextTag(); - mHelper.readXml(parser, false, UserHandle.USER_ALL); - - assertFalse(mHelper.getNotificationChannel(PKG_O, 3, "a", false) - .isImportanceLockedByOEM()); - assertTrue(mHelper.getNotificationChannel(PKG_O, 3, "b", false) - .isImportanceLockedByOEM()); - assertTrue(mHelper.getNotificationChannel(PKG_O, 30, "c", false) - .isImportanceLockedByOEM()); - } - - @Test public void testLockChannelsForOEM_channelSpecific_clearData() { NotificationChannel a = new NotificationChannel("a", "a", IMPORTANCE_HIGH); mHelper.getImportance(PKG_O, UID_O); diff --git a/startop/iorap/src/com/google/android/startop/iorap/EventSequenceValidator.java b/startop/iorap/src/com/google/android/startop/iorap/EventSequenceValidator.java index 67e1b440e28a..9b7a62b3a1df 100644 --- a/startop/iorap/src/com/google/android/startop/iorap/EventSequenceValidator.java +++ b/startop/iorap/src/com/google/android/startop/iorap/EventSequenceValidator.java @@ -96,7 +96,8 @@ import java.io.PrintWriter; */ public class EventSequenceValidator implements ActivityMetricsLaunchObserver { static final String TAG = "EventSequenceValidator"; - + /** $> adb shell 'setprop log.tag.EventSequenceValidator VERBOSE' */ + public static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG); private State state = State.INIT; private long accIntentStartedEvents = 0; @@ -255,9 +256,11 @@ public class EventSequenceValidator implements ActivityMetricsLaunchObserver { } private void logWarningWithStackTrace(String log) { - StringWriter sw = new StringWriter(); - PrintWriter pw = new PrintWriter(sw); - new Throwable("EventSequenceValidator#getStackTrace").printStackTrace(pw); - Log.d(TAG, String.format("%s\n%s", log, sw)); + if (DEBUG) { + StringWriter sw = new StringWriter(); + PrintWriter pw = new PrintWriter(sw); + new Throwable("EventSequenceValidator#getStackTrace").printStackTrace(pw); + Log.wtf(TAG, String.format("%s\n%s", log, sw)); + } } } |